@edugouvfr/ngx-dsfr
Version:
NgxDsfr est un portage Angular des éléments d'interface du Système de Design de l'État Français (DSFR).
208 lines • 22.4 kB
JavaScript
import { Component, EventEmitter, HostListener, Input, Output } from '@angular/core';
import { DefaultControlComponent, DsfrSeverityConst, newUniqueId } from '../../shared';
import { DsfrInputTypeConst } from './form-input.model';
import * as i0 from "@angular/core";
const INPUT_TYPE_TO_MODE = {
'date': '',
'datetime-local': '',
'email': 'email',
'number': 'numeric',
'password': '',
'search': 'search',
'tel': 'tel',
'text': '',
'textarea': '',
'time': '',
};
/**
* BaseInputComponent n'embarque que les propriétés d'un input Html
*/
export class BaseInputComponent extends DefaultControlComponent {
constructor() {
super(...arguments);
/**
* Une chaîne de caractères, on ou off, qui indique si la correction automatique est activée.
* [Safari uniquement](https://developer.mozilla.org/fr/docs/Web/HTML/Element/input#autocorrect).
*
* @since 1.6
*/
this.autoCorrect = true;
/**
* Indique si le champ est obligatoire ou non, faux par défaut.
*/
this.required = false;
/**
* Change la mise en page d'un input accompagné d'un bouton.
*/
this.inputWrapMode = 'addon';
/**
* Message d'information lié au composant
*/
this.message = undefined;
/**
* Émet un événement, si la propriété `pattern` est définie, à chaque changement de la valeur de l'input avec
* une valeur booléenne indiquant si le `pattern` est validé ou non.
*/
this.patternValueChange = new EventEmitter();
/**
* Id de la div affichant les messages d'erreur ou de validation.
* @internal
*/
this.messagesGroupId = newUniqueId();
this._type = DsfrInputTypeConst.TEXT;
}
get type() {
return this._type;
}
/**
* @internal
* @deprecated (since 1.12.0) use messageSeverity instead
*/
get severity() {
return this.messageSeverity;
}
/** @deprecated (since 1.11.0) use placeholder instead (all lowercase) */
get placeHolder() {
return this.placeholder;
}
/**
* Permet de récupérer le message d'erreur s'il existe.
* @deprecated (since 1.11) Utiliser `message`/`messageSeverity` à la place
*/
get error() {
return this.messageSeverity === DsfrSeverityConst.ERROR ? this.message : undefined;
}
/**
* Permet de récupérer le message de validation s'il existe
* @deprecated (since 1.11) Utiliser `message`/`messageSeverity` à la place
*/
get valid() {
return this.messageSeverity === DsfrSeverityConst.SUCCESS || this.messageSeverity === DsfrSeverityConst.VALID
? this.message
: undefined;
}
/**
* Type de l'input, 'text' par défaut.
*/
set type(value) {
this._type = value;
this.inputMode = INPUT_TYPE_TO_MODE[this._type] || undefined;
}
/**
* 👓 Correspond à l'attribut `role`, *
* @deprecated (since 1.15.1) utiliser inputRole à la place
*/
set role(value) {
if (value)
this.inputRole = value;
}
/**
* @internal
* @deprecated (since 1.12.0) utiliser messageSeverity à la place
*/
set severity(value) {
this.messageSeverity = value;
}
/**
* Positionne un message d'erreur.
*
* @deprecated (since 1.11) utiliser message+messageSeverity à la place
*/
set error(value) {
this.message = value;
this.messageSeverity = DsfrSeverityConst.ERROR;
}
/**
* Positionne un message de validation.
*
* @deprecated (since 1.11) utiliser message+messageSeverity à la place
*/
set valid(value) {
this.message = value;
this.messageSeverity = DsfrSeverityConst.VALID;
}
/** @deprecated (since 1.11.0) use placeholder instead (all lowercase) */
set placeHolder(value) {
this.placeholder = value;
}
/**
* À l'écoute de la valeur afin d'émettre un événement dans le cas où on a un pattern.
* @internal
*/
onPatternValueChange() {
if (!this.pattern)
return;
const isValid = new RegExp('^' + this.pattern + '$').test(this.value);
this.patternValueChange.emit(isValid);
}
/** @internal */
isNumber() {
return this.type === DsfrInputTypeConst.NUMBER;
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BaseInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BaseInputComponent, selector: "ng-component", inputs: { autocomplete: "autocomplete", ariaAutocomplete: "ariaAutocomplete", ariaExpanded: "ariaExpanded", ariaLabel: "ariaLabel", ariaInvalid: "ariaInvalid", inputRole: "inputRole", autoCorrect: "autoCorrect", required: "required", placeholder: "placeholder", min: "min", max: "max", minLength: "minLength", maxLength: "maxLength", spellCheck: "spellCheck", icon: "icon", pattern: "pattern", customClass: "customClass", inputWrapMode: "inputWrapMode", message: "message", messageSeverity: "messageSeverity", readonly: "readonly", type: "type", role: "role", severity: "severity", error: "error", valid: "valid", placeHolder: "placeHolder" }, outputs: { patternValueChange: "patternValueChange" }, host: { listeners: { "input": "onPatternValueChange()" } }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BaseInputComponent, decorators: [{
type: Component,
args: [{ template: '' }]
}], propDecorators: { autocomplete: [{
type: Input
}], ariaAutocomplete: [{
type: Input
}], ariaExpanded: [{
type: Input
}], ariaLabel: [{
type: Input
}], ariaInvalid: [{
type: Input
}], inputRole: [{
type: Input
}], autoCorrect: [{
type: Input
}], required: [{
type: Input
}], placeholder: [{
type: Input
}], min: [{
type: Input
}], max: [{
type: Input
}], minLength: [{
type: Input
}], maxLength: [{
type: Input
}], spellCheck: [{
type: Input
}], icon: [{
type: Input
}], pattern: [{
type: Input
}], customClass: [{
type: Input
}], inputWrapMode: [{
type: Input
}], message: [{
type: Input
}], messageSeverity: [{
type: Input
}], readonly: [{
type: Input
}], patternValueChange: [{
type: Output
}], type: [{
type: Input
}], role: [{
type: Input
}], severity: [{
type: Input
}], error: [{
type: Input
}], valid: [{
type: Input
}], placeHolder: [{
type: Input
}], onPatternValueChange: [{
type: HostListener,
args: ['input']
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZHNmci1jb21wb25lbnRzL3NyYy9saWIvZm9ybXMvZm9ybS1pbnB1dC9iYXNlLWlucHV0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRixPQUFPLEVBQUUsdUJBQXVCLEVBQWdCLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNyRyxPQUFPLEVBQWdDLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBRXRGLE1BQU0sa0JBQWtCLEdBQUc7SUFDekIsTUFBTSxFQUFFLEVBQUU7SUFDVixnQkFBZ0IsRUFBRSxFQUFFO0lBQ3BCLE9BQU8sRUFBRSxPQUFPO0lBQ2hCLFFBQVEsRUFBRSxTQUFTO0lBQ25CLFVBQVUsRUFBRSxFQUFFO0lBQ2QsUUFBUSxFQUFFLFFBQVE7SUFDbEIsS0FBSyxFQUFFLEtBQUs7SUFDWixNQUFNLEVBQUUsRUFBRTtJQUNWLFVBQVUsRUFBRSxFQUFFO0lBQ2QsTUFBTSxFQUFFLEVBQUU7Q0FDWCxDQUFDO0FBRUY7O0dBRUc7QUFFSCxNQUFNLE9BQWdCLGtCQUFtQixTQUFRLHVCQUErQjtJQURoRjs7UUFpREU7Ozs7O1dBS0c7UUFDTSxnQkFBVyxHQUFHLElBQUksQ0FBQztRQUU1Qjs7V0FFRztRQUNNLGFBQVEsR0FBRyxLQUFLLENBQUM7UUErQzFCOztXQUVHO1FBQ00sa0JBQWEsR0FBdUIsT0FBTyxDQUFDO1FBRXJEOztXQUVHO1FBQ00sWUFBTyxHQUF1QixTQUFTLENBQUM7UUFVakQ7OztXQUdHO1FBQ08sdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQVMzRDs7O1dBR0c7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UztzQkFBakIsS0FBSztnQkFPRyxXQUFXO3NCQUFuQixLQUFLO2dCQU9HLFNBQVM7c0JBQWpCLEtBQUs7Z0JBUUcsV0FBVztzQkFBbkIsS0FBSztnQkFLRyxRQUFRO3NCQUFoQixLQUFLO2dCQUtHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBS0csR0FBRztzQkFBWCxLQUFLO2dCQUtHLEdBQUc7c0JBQVgsS0FBSztnQkFLRyxTQUFTO3NCQUFqQixLQUFLO2dCQUtHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBS0csVUFBVTtzQkFBbEIsS0FBSztnQkFLRyxJQUFJO3NCQUFaLEtBQUs7Z0JBS0csT0FBTztzQkFBZixLQUFLO2dCQUtHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBS0csYUFBYTtzQkFBckIsS0FBSztnQkFLRyxPQUFPO3NCQUFmLEtBQUs7Z0JBS0csZUFBZTtzQkFBdkIsS0FBSztnQkFHRyxRQUFRO3NCQUFoQixLQUFLO2dCQU1JLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkF1RE0sSUFBSTtzQkFBaEIsS0FBSztnQkFTTyxJQUFJO3NCQUFoQixLQUFLO2dCQVFPLFFBQVE7c0JBQXBCLEtBQUs7Z0JBU08sS0FBSztzQkFBakIsS0FBSztnQkFVTyxLQUFLO3NCQUFqQixLQUFLO2dCQU1PLFdBQVc7c0JBQXZCLEtBQUs7Z0JBU04sb0JBQW9CO3NCQURuQixZQUFZO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEZWZhdWx0Q29udHJvbENvbXBvbmVudCwgRHNmclNldmVyaXR5LCBEc2ZyU2V2ZXJpdHlDb25zdCwgbmV3VW5pcXVlSWQgfSBmcm9tICcuLi8uLi9zaGFyZWQnO1xuaW1wb3J0IHsgRHNmcklucHV0TW9kZSwgRHNmcklucHV0VHlwZSwgRHNmcklucHV0VHlwZUNvbnN0IH0gZnJvbSAnLi9mb3JtLWlucHV0Lm1vZGVsJztcblxuY29uc3QgSU5QVVRfVFlQRV9UT19NT0RFID0ge1xuICAnZGF0ZSc6ICcnLFxuICAnZGF0ZXRpbWUtbG9jYWwnOiAnJyxcbiAgJ2VtYWlsJzogJ2VtYWlsJyxcbiAgJ251bWJlcic6ICdudW1lcmljJyxcbiAgJ3Bhc3N3b3JkJzogJycsXG4gICdzZWFyY2gnOiAnc2VhcmNoJyxcbiAgJ3RlbCc6ICd0ZWwnLFxuICAndGV4dCc6ICcnLFxuICAndGV4dGFyZWEnOiAnJyxcbiAgJ3RpbWUnOiAnJyxcbn07XG5cbi8qKlxuICogQmFzZUlucHV0Q29tcG9uZW50IG4nZW1iYXJxdWUgcXVlIGxlcyBwcm9wcmnDqXTDqXMgZCd1biBpbnB1dCBIdG1sXG4gKi9cbkBDb21wb25lbnQoeyB0ZW1wbGF0ZTogJycgfSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlSW5wdXRDb21wb25lbnQgZXh0ZW5kcyBEZWZhdWx0Q29udHJvbENvbXBvbmVudDxzdHJpbmc+IHtcbiAgLyoqXG4gICAqIENvcnJlc3BvbmQgw6AgbCdhdHRyaWJ1dCBgYXV0b2NvbXBsZXRlYCxcbiAgICogY2YuIFtkZWZpbml0aW9uXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BY2Nlc3NpYmlsaXR5L0FSSUEvUmVmZXJlbmNlL0F0dHJpYnV0ZXMvYXV0b2NvbXBsZXRlKSA8YnIgLz5cbiAgICogRXggOiBlbWFpbCwgbmFtZSwgZXRjLlxuICAgKi9cbiAgQElucHV0KCkgYXV0b2NvbXBsZXRlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIPCfkZMgQ29ycmVzcG9uZCDDoCBsJ2F0dHJpYnV0IGBhcmlhLWF1dG9jb21wbGV0ZWAsXG4gICAqIGNmLiBbZGVmaW5pdGlvbl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQWNjZXNzaWJpbGl0eS9BUklBL1JlZmVyZW5jZS9BdHRyaWJ1dGVzL2FyaWEtYXV0b2NvbXBsZXRlKS5cbiAgICogIEV4IDogYGFyaWFBdXRvY29tcGxldGU9XCJsaXN0XCJgLlxuICAgKiBWYWxldXIgcGFyIGTDqWZhdXQgYHVuZGVmaW5lZGAgKG4nYXBwYXJhaXQgcGFzIGNvbW1lIGF0dHJpYnV0IGRhbnMgbCdodG1sKS5cbiAgICpcbiAgICogQHNpbmNlIDEuNFxuICAgKi9cbiAgQElucHV0KCkgYXJpYUF1dG9jb21wbGV0ZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiDwn5GTIENvcnJlc3BvbmQgw6AgbCdhdHRyaWJ1dCBgYXJpYS1leHBhbmRlZGAsXG4gICAqIGNmLiBbZGVmaW5pdGlvbl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQWNjZXNzaWJpbGl0eS9BUklBL1JlZmVyZW5jZS9BdHRyaWJ1dGVzL2FyaWEtZXhwYW5kZWQpLlxuICAgKiBWYWxldXIgcGFyIGTDqWZhdXQgYHVuZGVmaW5lZGAgKG4nYXBwYXJhaXQgcGFzIGNvbW1lIGF0dHJpYnV0IGRhbnMgbCdodG1sKS5cbiAgICpcbiAgICogQHNpbmNlIDEuNFxuICAgKi9cbiAgQElucHV0KCkgYXJpYUV4cGFuZGVkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiDwn5GTIENvcnJlc3BvbmQgw6AgbCdhdHRyaWJ1dCBgYXJpYS1sYWJlbGAsXG4gICAqIGNmLiBbZGVmaW5pdGlvbl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQWNjZXNzaWJpbGl0eS9BUklBL1JlZmVyZW5jZS9BdHRyaWJ1dGVzL2FyaWEtbGFiZWwpLlxuICAgKiBWYWxldXIgcGFyIGTDqWZhdXQgYHVuZGVmaW5lZGAgKG4nYXBwYXJhaXQgcGFzIGNvbW1lIGF0dHJpYnV0IGRhbnMgbCdodG1sKS5cbiAgICovXG4gIEBJbnB1dCgpIGFyaWFMYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiDwn5GTIENvcnJlc3BvbmQgw6AgbCdhdHRyaWJ1dCBgYXJpYS1pbnZhbGlkYCxcbiAgICogY2YuIFtkZWZpbml0aW9uXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BY2Nlc3NpYmlsaXR5L0FSSUEvUmVmZXJlbmNlL0F0dHJpYnV0ZXMvYXJpYS1pbnZhbGlkKS5cbiAgICogVmFsZXVyIHBhciBkw6lmYXV0IGB1bmRlZmluZWRgIChuJ2FwcGFyYWl0IHBhcyBjb21tZSBhdHRyaWJ1dCBkYW5zIGwnaHRtbCkuXG4gICAqL1xuICBASW5wdXQoKSBhcmlhSW52YWxpZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiDwn5GTIENvcnJlc3BvbmQgw6AgbCdhdHRyaWJ1dCBgcm9sZWAsXG4gICAqIGNmLiBbZGVmaW5pdGlvbl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQWNjZXNzaWJpbGl0eS9BUklBL1JlZmVyZW5jZS9BdHRyaWJ1dGVzL3JvbGUpLlxuICAgKiBWYWxldXIgcGFyIGTDqWZhdXQgYHVuZGVmaW5lZGAgKG4nYXBwYXJhaXQgcGFzIGNvbW1lIGF0dHJpYnV0IGRhbnMgbCdodG1sKS5cbiAgICovXG4gIEBJbnB1dCgpIGlucHV0Um9sZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBVbmUgY2hhw65uZSBkZSBjYXJhY3TDqHJlcywgb24gb3Ugb2ZmLCBxdWkgaW5kaXF1ZSBzaSBsYSBjb3JyZWN0aW9uIGF1dG9tYXRpcXVlIGVzdCBhY3RpdsOpZS5cbiAgICogW1NhZmFyaSB1bmlxdWVtZW50XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9mci9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaW5wdXQjYXV0b2NvcnJlY3QpLlxuICAgKlxuICAgKiBAc2luY2UgMS42XG4gICAqL1xuICBASW5wdXQoKSBhdXRvQ29ycmVjdCA9IHRydWU7XG5cbiAgLyoqXG4gICAqIEluZGlxdWUgc2kgbGUgY2hhbXAgZXN0IG9ibGlnYXRvaXJlIG91IG5vbiwgZmF1eCBwYXIgZMOpZmF1dC5cbiAgICovXG4gIEBJbnB1dCgpIHJlcXVpcmVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFBsYWNlaG9sZGVyIGRlIGwnaW5wdXQuXG4gICAqL1xuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBdHRyaWJ1dCBtaW4gZGUgbCdpbnB1dC5cbiAgICovXG4gIEBJbnB1dCgpIG1pbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBdHRyaWJ1dCBtYXggZGUgbCdpbnB1dC5cbiAgICovXG4gIEBJbnB1dCgpIG1heDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBdHRyaWJ1dCBtaW5MZW5ndGggZGUgbCdpbnB1dC5cbiAgICovXG4gIEBJbnB1dCgpIG1pbkxlbmd0aDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBdHRyaWJ1dCBtYXhMZW5ndGggZGUgbCdpbnB1dC5cbiAgICovXG4gIEBJbnB1dCgpIG1heExlbmd0aDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBdHRyaWJ1dCBzcGVsbGNoZWNrIHBvdXIgc3VyY2hhcmdlciBsYSB2w6lyaWZpY2F0aW9uIGRlIGxhIGNvcnJlY3Rpb24gb3J0aG9ncmFwaGlxdWVcbiAgICovXG4gIEBJbnB1dCgpIHNwZWxsQ2hlY2s6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFqb3V0ZSB1biBpY29uIMOgIGRyb2l0ZSBkYW5zIGxlIGNoYW1wIGRlIHNhaXNpZS5cbiAgICovXG4gIEBJbnB1dCgpIGljb246IHN0cmluZztcblxuICAvKipcbiAgICogUGF0dGVybiBkZSBsJ2lucHV0LlxuICAgKi9cbiAgQElucHV0KCkgcGF0dGVybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBam91dCBkJ3VuIHN0eWxlIHNww6ljaWZpcXVlLCBwZXJtZXQgcGFyIGV4ZW1wbGUgZGUgbGEgbGltaXRlciBsYSBsYXJnZXVyIGQndW4gaW5wdXQuXG4gICAqL1xuICBASW5wdXQoKSBjdXN0b21DbGFzczogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDaGFuZ2UgbGEgbWlzZSBlbiBwYWdlIGQndW4gaW5wdXQgYWNjb21wYWduw6kgZCd1biBib3V0b24uXG4gICAqL1xuICBASW5wdXQoKSBpbnB1dFdyYXBNb2RlOiAnYWRkb24nIHwgJ2FjdGlvbicgPSAnYWRkb24nO1xuXG4gIC8qKlxuICAgKiBNZXNzYWdlIGQnaW5mb3JtYXRpb24gbGnDqSBhdSBjb21wb3NhbnRcbiAgICovXG4gIEBJbnB1dCgpIG1lc3NhZ2U6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogUmVwcsOpc2VudGUgbGEgc8OpdsOpcml0w6kgZHUgbWVzc2FnZS5cbiAgICovXG4gIEBJbnB1dCgpIG1lc3NhZ2VTZXZlcml0eTogRHNmclNldmVyaXR5O1xuXG4gIC8qKiBBdHRyaWJ1dCByZWFkb25seSBkZSBsJ2lucHV0ICovXG4gIEBJbnB1dCgpIHJlYWRvbmx5OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiDDiW1ldCB1biDDqXbDqW5lbWVudCwgc2kgbGEgcHJvcHJpw6l0w6kgYHBhdHRlcm5gIGVzdCBkw6lmaW5pZSwgw6AgY2hhcXVlIGNoYW5nZW1lbnQgZGUgbGEgdmFsZXVyIGRlIGwnaW5wdXQgYXZlY1xuICAgKiB1bmUgdmFsZXVyIGJvb2zDqWVubmUgaW5kaXF1YW50IHNpIGxlIGBwYXR0ZXJuYCBlc3QgdmFsaWTDqSBvdSBub24uXG4gICAqL1xuICBAT3V0cHV0KCkgcGF0dGVyblZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIC8qKlxuICAgKiBMJ2lucHV0IG1vZGUgZXN0IGluaXRpYWxpc8OpIHBhciBkw6lmYXV0IGVuIGZvbmN0aW9uIGR1IHR5cGUgZGUgbCdpbnB1dCwgJ2RlY2ltYWwnLCAndXJsJyBuZSBzb250IHBhcyB0cmFpdMOpIHBvdXJcbiAgICogbCdpbnN0YW50LlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGlucHV0TW9kZTogRHNmcklucHV0TW9kZTtcblxuICAvKipcbiAgICogSWQgZGUgbGEgZGl2IGFmZmljaGFudCBsZXMgbWVzc2FnZXMgZCdlcnJldXIgb3UgZGUgdmFsaWRhdGlvbi5cbiAgICogQGludGVybmFsXG4gICAqL1xuICByZWFkb25seSBtZXNzYWdlc0dyb3VwSWQgPSBuZXdVbmlxdWVJZCgpO1xuXG4gIHByaXZhdGUgX3R5cGU6IERzZnJJbnB1dFR5cGUgPSBEc2ZySW5wdXRUeXBlQ29uc3QuVEVYVDtcblxuICBnZXQgdHlwZSgpOiBEc2ZySW5wdXRUeXBlIHtcbiAgICByZXR1cm4gdGhpcy5fdHlwZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogQGRlcHJlY2F0ZWQgKHNpbmNlIDEuMTIuMCkgdXNlIG1lc3NhZ2VTZXZlcml0eSBpbnN0ZWFkXG4gICAqL1xuICBnZXQgc2V2ZXJpdHkoKTogRHNmclNldmVyaXR5IHtcbiAgICByZXR1cm4gdGhpcy5tZXNzYWdlU2V2ZXJpdHk7XG4gIH1cblxuICAvKiogQGRlcHJlY2F0ZWQgKHNpbmNlIDEuMTEuMCkgdXNlIHBsYWNlaG9sZGVyIGluc3RlYWQgKGFsbCBsb3dlcmNhc2UpICovXG4gIGdldCBwbGFjZUhvbGRlcigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnBsYWNlaG9sZGVyO1xuICB9XG5cbiAgLyoqXG4gICAqIFBlcm1ldCBkZSByw6ljdXDDqXJlciBsZSBtZXNzYWdlIGQnZXJyZXVyIHMnaWwgZXhpc3RlLlxuICAgKiBAZGVwcmVjYXRlZCAoc2luY2UgMS4xMSkgVXRpbGlzZXIgYG1lc3NhZ2VgL2BtZXNzYWdlU2V2ZXJpdHlgIMOgIGxhIHBsYWNlXG4gICAqL1xuICBnZXQgZXJyb3IoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5tZXNzYWdlU2V2ZXJpdHkgPT09IERzZnJTZXZlcml0eUNvbnN0LkVSUk9SID8gdGhpcy5tZXNzYWdlIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFBlcm1ldCBkZSByw6ljdXDDqXJlciBsZSBtZXNzYWdlIGRlIHZhbGlkYXRpb24gcydpbCBleGlzdGVcbiAgICogQGRlcHJlY2F0ZWQgKHNpbmNlIDEuMTEpIFV0aWxpc2VyIGBtZXNzYWdlYC9gbWVzc2FnZVNldmVyaXR5YCDDoCBsYSBwbGFjZVxuICAgKi9cbiAgZ2V0IHZhbGlkKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMubWVzc2FnZVNldmVyaXR5ID09PSBEc2ZyU2V2ZXJpdHlDb25zdC5TVUNDRVNTIHx8IHRoaXMubWVzc2FnZVNldmVyaXR5ID09PSBEc2ZyU2V2ZXJpdHlDb25zdC5WQUxJRFxuICAgICAgPyB0aGlzLm1lc3NhZ2VcbiAgICAgIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFR5cGUgZGUgbCdpbnB1dCwgJ3RleHQnIHBhciBkw6lmYXV0LlxuICAgKi9cbiAgQElucHV0KCkgc2V0IHR5cGUodmFsdWU6IERzZnJJbnB1dFR5cGUpIHtcbiAgICB0aGlzLl90eXBlID0gdmFsdWU7XG4gICAgdGhpcy5pbnB1dE1vZGUgPSA8RHNmcklucHV0TW9kZT5JTlBVVF9UWVBFX1RPX01PREVbdGhpcy5fdHlwZV0gfHwgdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIPCfkZMgQ29ycmVzcG9uZCDDoCBsJ2F0dHJpYnV0IGByb2xlYCwgICAqXG4gICAqIEBkZXByZWNhdGVkIChzaW5jZSAxLjE1LjEpIHV0aWxpc2VyIGlucHV0Um9sZSDDoCBsYSBwbGFjZVxuICAgKi9cbiAgQElucHV0KCkgc2V0IHJvbGUodmFsdWU6IHN0cmluZykge1xuICAgIGlmICh2YWx1ZSkgdGhpcy5pbnB1dFJvbGUgPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogQGRlcHJlY2F0ZWQgKHNpbmNlIDEuMTIuMCkgdXRpbGlzZXIgbWVzc2FnZVNldmVyaXR5IMOgIGxhIHBsYWNlXG4gICAqL1xuICBASW5wdXQoKSBzZXQgc2V2ZXJpdHkodmFsdWU6IERzZnJTZXZlcml0eSkge1xuICAgIHRoaXMubWVzc2FnZVNldmVyaXR5ID0gdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogUG9zaXRpb25uZSB1biBtZXNzYWdlIGQnZXJyZXVyLlxuICAgKlxuICAgKiBAZGVwcmVjYXRlZCAoc2luY2UgMS4xMSkgdXRpbGlzZXIgbWVzc2FnZSttZXNzYWdlU2V2ZXJpdHkgw6AgbGEgcGxhY2VcbiAgICovXG4gIEBJbnB1dCgpIHNldCBlcnJvcih2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5tZXNzYWdlID0gdmFsdWU7XG4gICAgdGhpcy5tZXNzYWdlU2V2ZXJpdHkgPSBEc2ZyU2V2ZXJpdHlDb25zdC5FUlJPUjtcbiAgfVxuXG4gIC8qKlxuICAgKiBQb3NpdGlvbm5lIHVuIG1lc3NhZ2UgZGUgdmFsaWRhdGlvbi5cbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgKHNpbmNlIDEuMTEpIHV0aWxpc2VyIG1lc3NhZ2UrbWVzc2FnZVNldmVyaXR5IMOgIGxhIHBsYWNlXG4gICAqL1xuICBASW5wdXQoKSBzZXQgdmFsaWQodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMubWVzc2FnZSA9IHZhbHVlO1xuICAgIHRoaXMubWVzc2FnZVNldmVyaXR5ID0gRHNmclNldmVyaXR5Q29uc3QuVkFMSUQ7XG4gIH1cblxuICAvKiogQGRlcHJlY2F0ZWQgKHNpbmNlIDEuMTEuMCkgdXNlIHBsYWNlaG9sZGVyIGluc3RlYWQgKGFsbCBsb3dlcmNhc2UpICovXG4gIEBJbnB1dCgpIHNldCBwbGFjZUhvbGRlcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5wbGFjZWhvbGRlciA9IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIMOAIGwnw6ljb3V0ZSBkZSBsYSB2YWxldXIgYWZpbiBkJ8OpbWV0dHJlIHVuIMOpdsOpbmVtZW50IGRhbnMgbGUgY2FzIG/DuSBvbiBhIHVuIHBhdHRlcm4uXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgQEhvc3RMaXN0ZW5lcignaW5wdXQnKVxuICBvblBhdHRlcm5WYWx1ZUNoYW5nZSgpIHtcbiAgICBpZiAoIXRoaXMucGF0dGVybikgcmV0dXJuO1xuICAgIGNvbnN0IGlzVmFsaWQgPSBuZXcgUmVnRXhwKCdeJyArIHRoaXMucGF0dGVybiArICckJykudGVzdCh0aGlzLnZhbHVlISk7XG4gICAgdGhpcy5wYXR0ZXJuVmFsdWVDaGFuZ2UuZW1pdChpc1ZhbGlkKTtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgaXNOdW1iZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gRHNmcklucHV0VHlwZUNvbnN0Lk5VTUJFUjtcbiAgfVxufVxuIl19