UNPKG

@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
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