@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).
224 lines • 23.7 kB
JavaScript
import { Component, inject, Input } from '@angular/core';
import { downloadDetail, LangService, } from '../../shared';
import * as i0 from "@angular/core";
// Ne peut pas être déplacé dans 'shared' à cause de la dépendance sur DsfrBadge et DsfrTag
export const DEFAULT_HEADING_LEVEL = 'H3';
export class BasePanelComponent {
constructor() {
/**
* Permet de positionner des badges (jusqu'à 4 badges maxi) en haut du composant, optionnel.
*
* @see DsfrBadge
*/
this.badges = [];
/**
* Permet d'avoir un fond gris ou transparent.
*/
this.customBackground = 'default';
/**
* Permet d'afficher une ombre ou ne pas mettre de bordure.
*/
this.customBorder = 'default';
/**
* Permet de désactiver le composant.
*/
this.disabled = false;
/**
* Equivalent à l'attribut html natif 'download'.
* - true : la fenêtre de téléchargement s'affiche directement,
* - false : le fichier est ouvert avant d'être téléchargé,
* - string : nouveau nom de fichier proposé au téléchargement.
*/
this.downloadDirect = true;
/**
* Si 'true' (défaut) : le détail du téléchargement est automatiquement renseigné par le script DSFR.
*/
this.downloadAssessFile = true;
/**
* Permet de désactiver le lien étendu de la carte.
*/
this.enlargeLink = true;
/**
* Le niveau de titre devant être utilisé (tag `h4` par défaut).
* Cette balise ne produit pas de style, mais de la structure.
*/
this.headingLevel = DEFAULT_HEADING_LEVEL;
/**
* Passe le composant en mode horizontal.
*/
this.horizontal = false;
/**
* Dimension du composant, 'MD' par défaut ('SM, 'MD' uniquement pour la tuile).
*/
this.panelSize = 'MD';
/**
* Permet d'avoir un bouton à la place d'un lien.
*
* @since 1.12
*/
this.enlargeButton = false;
this._download = false;
this._tags = [];
this.langService = inject(LangService);
}
get downloadSizeUnit() {
return this._downloadSizeUnit || this.langService.lang ? 'octets' : 'bytes';
}
/* get linkTarget(): DsfrLinkTarget {
return this._linkTarget;
}*/
get tags() {
return this._tags;
}
get itemLink() {
const label = this.heading ? this.heading : '';
const itemLink = { label: label, ariaLabel: this.ariaLabel }; // ariaLabel (since 1.7)
if (this.link) {
itemLink.link = this.link;
}
else if (this.route) {
itemLink.route = this.route;
}
return itemLink;
}
get download() {
return this._download;
}
get detailBottom() {
return !this.download ? this._detailBottom : this.downloadDetail;
}
/**
* Dimension du composant, 'MD' par défaut ('SM, 'MD' uniquement pour la tuile).
*
* @deprecated since(1.15.0) utiliser 'panelSize' à la place
*/
get size() {
return this.panelSize;
}
/**
* Dans le cas d'un téléchargement sans l'option 'downloadAssessFile',
* on crée le détail à l'aide des propriétés 'downloadSizeBytes', 'downloadMimeType'.
* @internal
*/
get downloadDetail() {
return downloadDetail(this.downloadMimeType, this.downloadSizeBytes, this.downloadSizeUnit);
}
/**
* Dimension du composant, 'MD' par défaut ('SM, 'MD' uniquement pour la tuile).
*
* @deprecated since(1.15.0) utiliser 'panelSize' à la place
*/
set size(value) {
this.panelSize = value;
}
/**
* Transforme le composant classique en composant de téléchargement.
*/
set download(download) {
this._download = download;
if (this._download)
this.enlargeLink = true;
}
/** Zone de détail se trouvant visuellement sous la description et à côté de l’icône, optionnel.
* Pour la tuile, on peut passer un slot de sélecteur "detail".
* En cas de téléchargement le détail est remplacé par les informations du fichier calculées selon downloadAssessFile.
*/
set detailBottom(value) {
this._detailBottom = value;
}
/**
* Force l'unité par défaut qui dépend de la langue du site, en octets (ko, Mo, ...) pour 'fr', en 'bytes' (KB, MB...) pour les autres langues.
*/
set downloadSizeUnit(value) {
this._downloadSizeUnit = value;
}
/**
* Permet de positionner des tags en haut de la carte (cliquables ou non), optionnel.
* voir DsfrTag
*/
set tags(tags) {
this._tags = tags;
// Vérifie si un tag est cliquable pour désactiver enlargeLink.
if (tags?.find((tag) => tag.link))
this.enlargeLink = false;
}
/**
* Activation du router Angular.
* Provoque un bug accessibilité sur la navigation au clavier (ajout d'un tabindex=0)
*
* @deprecated (since 1.11.5) utiliser `routePath` à la place.
*/
set routerLink(value) {
if (value)
this.routePath = value;
}
/** @internal */
hasLink() {
return !!(this.link || this.route || this.routePath);
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BasePanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BasePanelComponent, selector: "ng-component", inputs: { ariaLabel: "ariaLabel", badges: "badges", customBackground: "customBackground", customBorder: "customBorder", description: "description", disabled: "disabled", downloadDirect: "downloadDirect", downloadAssessFile: "downloadAssessFile", downloadLangCode: "downloadLangCode", downloadMimeType: "downloadMimeType", downloadSizeBytes: "downloadSizeBytes", enlargeLink: "enlargeLink", heading: "heading", headingLevel: "headingLevel", horizontal: "horizontal", link: "link", route: "route", routePath: "routePath", routerLinkActive: "routerLinkActive", routerLinkExtras: "routerLinkExtras", panelSize: "panelSize", enlargeButton: "enlargeButton", linkTarget: "linkTarget", size: "size", download: "download", detailBottom: "detailBottom", downloadSizeUnit: "downloadSizeUnit", tags: "tags", routerLink: "routerLink" }, ngImport: i0, template: '', isInline: true }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BasePanelComponent, decorators: [{
type: Component,
args: [{ template: '' }]
}], ctorParameters: () => [], propDecorators: { ariaLabel: [{
type: Input
}], badges: [{
type: Input
}], customBackground: [{
type: Input
}], customBorder: [{
type: Input
}], description: [{
type: Input
}], disabled: [{
type: Input
}], downloadDirect: [{
type: Input
}], downloadAssessFile: [{
type: Input
}], downloadLangCode: [{
type: Input
}], downloadMimeType: [{
type: Input
}], downloadSizeBytes: [{
type: Input
}], enlargeLink: [{
type: Input
}], heading: [{
type: Input
}], headingLevel: [{
type: Input
}], horizontal: [{
type: Input
}], link: [{
type: Input
}], route: [{
type: Input
}], routePath: [{
type: Input
}], routerLinkActive: [{
type: Input
}], routerLinkExtras: [{
type: Input
}], panelSize: [{
type: Input
}], enlargeButton: [{
type: Input
}], linkTarget: [{
type: Input
}], size: [{
type: Input
}], download: [{
type: Input
}], detailBottom: [{
type: Input
}], downloadSizeUnit: [{
type: Input
}], tags: [{
type: Input
}], routerLink: [{
type: Input
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1wYW5lbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZHNmci1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9jYXJkL2Jhc2UtcGFuZWwuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6RCxPQUFPLEVBQ0wsY0FBYyxFQU9kLFdBQVcsR0FDWixNQUFNLGNBQWMsQ0FBQzs7QUFJdEIsMkZBQTJGO0FBRTNGLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFxQixJQUFJLENBQUM7QUFHNUQsTUFBTSxPQUFnQixrQkFBa0I7SUF3SXRDO1FBaElBOzs7O1dBSUc7UUFDTSxXQUFNLEdBQWdCLEVBQUUsQ0FBQztRQUVsQzs7V0FFRztRQUNNLHFCQUFnQixHQUF3QixTQUFTLENBQUM7UUFFM0Q7O1dBRUc7UUFDTSxpQkFBWSxHQUFvQixTQUFTLENBQUM7UUFPbkQ7O1dBRUc7UUFDTSxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRTFCOzs7OztXQUtHO1FBQ00sbUJBQWMsR0FBcUIsSUFBSSxDQUFDO1FBRWpEOztXQUVHO1FBQ00sdUJBQWtCLEdBQUcsSUFBSSxDQUFDO1FBa0JuQzs7V0FFRztRQUNNLGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FBUzVCOzs7V0FHRztRQUNNLGlCQUFZLEdBQVcscUJBQXFCLENBQUM7UUFFdEQ7O1dBRUc7UUFDTSxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBNEI1Qjs7V0FFRztRQUNNLGNBQVMsR0FBYSxJQUFJLENBQUM7UUFFcEM7Ozs7V0FJRztRQUNNLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBT3ZCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFFbEIsVUFBSyxHQUFjLEVBQUUsQ0FBQztRQUV0QixnQkFBVyxHQUFHLE1BQU0s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bmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmF2aWdhdGlvbkV4dHJhcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1xuICBkb3dubG9hZERldGFpbCxcbiAgRHNmckZpbGVTaXplVW5pdCxcbiAgRHNmckhlYWRpbmdMZXZlbCxcbiAgRHNmckxpbmssXG4gIERzZnJMaW5rVGFyZ2V0LFxuICBEc2ZyTmF2aWdhdGlvbixcbiAgRHNmclNpemUsXG4gIExhbmdTZXJ2aWNlLFxufSBmcm9tICcuLi8uLi9zaGFyZWQnO1xuaW1wb3J0IHsgRHNmckJhZGdlIH0gZnJvbSAnLi4vYmFkZ2UnO1xuaW1wb3J0IHsgRHNmclRhZyB9IGZyb20gJy4uL3RhZyc7XG5pbXBvcnQgeyBEc2ZyUGFuZWxCYWNrZ3JvdW5kLCBEc2ZyUGFuZWxCb3JkZXIgfSBmcm9tICcuL2Jhc2UtcGFuZWwubW9kZWwnO1xuLy8gTmUgcGV1dCBwYXMgw6p0cmUgZMOpcGxhY8OpIGRhbnMgJ3NoYXJlZCcgw6AgY2F1c2UgZGUgbGEgZMOpcGVuZGFuY2Ugc3VyIERzZnJCYWRnZSBldCBEc2ZyVGFnXG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0hFQURJTkdfTEVWRUw6IERzZnJIZWFkaW5nTGV2ZWwgPSAnSDMnO1xuXG5AQ29tcG9uZW50KHsgdGVtcGxhdGU6ICcnIH0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZVBhbmVsQ29tcG9uZW50IGltcGxlbWVudHMgRHNmck5hdmlnYXRpb24ge1xuICAvKipcbiAgICogTGEgcHJvcHJpw6l0w6kgYXJpYUxhYmVsIGTDqWZpbml0IHVuZSB2YWxldXIgZGUgY2hhw65uZSBxdWkgw6l0aXF1ZXR0ZSB1biDDqWzDqW1lbnQgaW50ZXJhY3RpZi5cbiAgICpcbiAgICogQHNpbmNlIDEuN1xuICAgKi9cbiAgQElucHV0KCkgYXJpYUxhYmVsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQZXJtZXQgZGUgcG9zaXRpb25uZXIgZGVzIGJhZGdlcyAoanVzcXUnw6AgNCBiYWRnZXMgbWF4aSkgZW4gaGF1dCBkdSBjb21wb3NhbnQsIG9wdGlvbm5lbC5cbiAgICpcbiAgICogQHNlZSBEc2ZyQmFkZ2VcbiAgICovXG4gIEBJbnB1dCgpIGJhZGdlczogRHNmckJhZGdlW10gPSBbXTtcblxuICAvKipcbiAgICogUGVybWV0IGQnYXZvaXIgdW4gZm9uZCBncmlzIG91IHRyYW5zcGFyZW50LlxuICAgKi9cbiAgQElucHV0KCkgY3VzdG9tQmFja2dyb3VuZDogRHNmclBhbmVsQmFja2dyb3VuZCA9ICdkZWZhdWx0JztcblxuICAvKipcbiAgICogUGVybWV0IGQnYWZmaWNoZXIgdW5lIG9tYnJlIG91IG5lIHBhcyBtZXR0cmUgZGUgYm9yZHVyZS5cbiAgICovXG4gIEBJbnB1dCgpIGN1c3RvbUJvcmRlcjogRHNmclBhbmVsQm9yZGVyID0gJ2RlZmF1bHQnO1xuXG4gIC8qKlxuICAgKiBVbmUgZGVzY3JpcHRpb24gb3B0aW9ubmVsbGUgcGxlaW4gdGV4dGUuXG4gICAqL1xuICBASW5wdXQoKSBkZXNjcmlwdGlvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQZXJtZXQgZGUgZMOpc2FjdGl2ZXIgbGUgY29tcG9zYW50LlxuICAgKi9cbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogRXF1aXZhbGVudCDDoCBsJ2F0dHJpYnV0IGh0bWwgbmF0aWYgJ2Rvd25sb2FkJy5cbiAgICogLSB0cnVlIDogbGEgZmVuw6p0cmUgZGUgdMOpbMOpY2hhcmdlbWVudCBzJ2FmZmljaGUgZGlyZWN0ZW1lbnQsXG4gICAqIC0gZmFsc2UgOiBsZSBmaWNoaWVyIGVzdCBvdXZlcnQgYXZhbnQgZCfDqnRyZSB0w6lsw6ljaGFyZ8OpLFxuICAgKiAtIHN0cmluZyA6IG5vdXZlYXUgbm9tIGRlIGZpY2hpZXIgcHJvcG9zw6kgYXUgdMOpbMOpY2hhcmdlbWVudC5cbiAgICovXG4gIEBJbnB1dCgpIGRvd25sb2FkRGlyZWN0OiBib29sZWFuIHwgc3RyaW5nID0gdHJ1ZTtcblxuICAvKipcbiAgICogU2kgJ3RydWUnIChkw6lmYXV0KSA6IGxlIGTDqXRhaWwgZHUgdMOpbMOpY2hhcmdlbWVudCBlc3QgYXV0b21hdGlxdWVtZW50IHJlbnNlaWduw6kgcGFyIGxlIHNjcmlwdCBEU0ZSLlxuICAgKi9cbiAgQElucHV0KCkgZG93bmxvYWRBc3Nlc3NGaWxlID0gdHJ1ZTtcblxuICAvKipcbiAgICogT2JsaWdhdG9pcmUsIGRhbnMgbGUgY2FzIGQndW4gdMOpbMOpY2hhcmdlbWVudCBzaSBsZSBkb2N1bWVudCBuJ2VzdCBwYXMgZHUgbcOqbWUgbGFuZ2FnZSBxdWUgbGEgcGFnZSBjb3VyYW50ZS5cbiAgICogRXggOiBkb3dubG9hZExhbmdDb2RlPVwiZW5cIi5cbiAgICovXG4gIEBJbnB1dCgpIGRvd25sb2FkTGFuZ0NvZGU6IHN0cmluZztcblxuICAvKipcbiAgICogRm9ybWF0IGR1IGZpY2hpZXIsIMOgIHJlbnNlaWduZXIgc2kgZG93bmxvYWRBc3Nlc3NGaWxlIGVzdCBmYXV4LlxuICAgKi9cbiAgQElucHV0KCkgZG93bmxvYWRNaW1lVHlwZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQb2lkcyBkdSBmaWNoaWVyIGVuIG9jdGV0cywgw6AgcmVuc2VpZ25lciBzaSBkb3dubG9hZEFzc2Vzc0ZpbGUgZXN0IGZhdXguXG4gICAqICovXG4gIEBJbnB1dCgpIGRvd25sb2FkU2l6ZUJ5dGVzOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFBlcm1ldCBkZSBkw6lzYWN0aXZlciBsZSBsaWVuIMOpdGVuZHUgZGUgbGEgY2FydGUuXG4gICAqL1xuICBASW5wdXQoKSBlbmxhcmdlTGluayA9IHRydWU7XG5cbiAgLyoqXG4gICAqIFRpdHJlIGR1IGNvbXBvc2FudC5cbiAgICogTGUgZmFpdCBkZSB2YWxvcmlzZXIgY2V0dGUgcHJvcHJpw6l0w6kgZXN0IHByaW9yaXRhaXJlIHN1ciBsZSBuZy1jb250ZW50IFtoZWFkaW5nXS5cbiAgICogQXR0ZW50aW9uIGZvbmN0aW9ubmVsbGVtZW50IGxhIHByw6lzZW5jZSBkJ3VuIHRpdHJlIGVzdCBvYmxpZ2F0b2lyZS5cbiAgICovXG4gIEBJbnB1dCgpIGhlYWRpbmc6IHN0cmluZztcblxuICAvKipcbiAgICogTGUgbml2ZWF1IGRlIHRpdHJlIGRldmFudCDDqnRyZSB1dGlsaXPDqSAodGFnIGBoNGAgcGFyIGTDqWZhdXQpLlxuICAgKiBDZXR0ZSBiYWxpc2UgbmUgcHJvZHVpdCBwYXMgZGUgc3R5bGUsIG1haXMgZGUgbGEgc3RydWN0dXJlLlxuICAgKi9cbiAgQElucHV0KCkgaGVhZGluZ0xldmVsOiBzdHJpbmcgPSBERUZBVUxUX0hFQURJTkdfTEVWRUw7XG5cbiAgLyoqXG4gICAqIFBhc3NlIGxlIGNvbXBvc2FudCBlbiBtb2RlIGhvcml6b250YWwuXG4gICAqL1xuICBASW5wdXQoKSBob3Jpem9udGFsID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFBlcm1ldCBkZSBwb3NpdGlvbm5lciB1biBsaWVuIGRlIHR5cGUgaHJlZi5cbiAgICogU2VydCBhdXNzaSBkZSBsaWVuIGRlIHTDqWzDqWNoYXJnZW1lbnQuXG4gICAqL1xuICBASW5wdXQoKSBsaW5rOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFBlcm1ldCBkZSBwb3NpdGlvbm5lciB1bmUgcm91dGUgQW5ndWxhciBxdWkgc2VyYSByw6ljdXDDqXLDqWUgdmlhICdvdXRwdXQgdGlsZVNlbGVjdC5cbiAgICovXG4gIEBJbnB1dCgpIHJvdXRlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFBhdGggYW5ndWxhciBnw6lyw6kgZW4gdGFudCBxdWUgZGlyZWN0aXZlIHJvdXRlckxpbmsuIFByaW9yaXRhaXJlIGV0IGV4Y2x1c2lmIGF2ZWMgbGluayBldCByb3V0ZS5cbiAgICovXG4gIEBJbnB1dCgpIHJvdXRlUGF0aDogc3RyaW5nIHwgc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIENsYXNzZSBDU1MgdXRpbGlzw6llIHBvdXIgbGEgZGlyZWN0aXZlIHJvdXRlckxpbmsgYWN0aXZlLlxuICAgKi9cbiAgQElucHV0KCkgcm91dGVyTGlua0FjdGl2ZTogc3RyaW5nIHwgc3RyaW5nW10gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFJvdXRlckxpbmsgOiB2YWxldXJzIGFkZGl0aW9ubmVsbGVzIGRlIG5hdmlnYXRpb24gcG91ciBsZSByb3V0ZXJMaW5rIChxdWVyeVBhcmFtcywgc3RhdGUsIGV0Yy4pXG4gICAqL1xuICBASW5wdXQoKSByb3V0ZXJMaW5rRXh0cmFzOiBOYXZpZ2F0aW9uRXh0cmFzO1xuXG4gIC8qKlxuICAgKiBEaW1lbnNpb24gZHUgY29tcG9zYW50LCAnTUQnIHBhciBkw6lmYXV0ICgnU00sICdNRCcgdW5pcXVlbWVudCBwb3VyIGxhIHR1aWxlKS5cbiAgICovXG4gIEBJbnB1dCgpIHBhbmVsU2l6ZTogRHNmclNpemUgPSAnTUQnO1xuXG4gIC8qKlxuICAgKiBQZXJtZXQgZCdhdm9pciB1biBib3V0b24gw6AgbGEgcGxhY2UgZCd1biBsaWVuLlxuICAgKlxuICAgKiBAc2luY2UgMS4xMlxuICAgKi9cbiAgQElucHV0KCkgZW5sYXJnZUJ1dHRvbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBBdHRyaWJ1dCB0YXJnZXQgZHUgbGllbi5cbiAgICovXG4gIEBJbnB1dCgpIGxpbmtUYXJnZXQ6IERzZnJMaW5rVGFyZ2V0O1xuXG4gIHByaXZhdGUgX2Rvd25sb2FkID0gZmFsc2U7XG4gIHByaXZhdGUgX2Rvd25sb2FkU2l6ZVVuaXQ6IERzZnJGaWxlU2l6ZVVuaXQ7XG4gIHByaXZhdGUgX3RhZ3M6IERzZnJUYWdbXSA9IFtdO1xuICBwcml2YXRlIF9kZXRhaWxCb3R0b206IHN0cmluZztcbiAgcHJpdmF0ZSBsYW5nU2VydmljZSA9IGluamVjdChMYW5nU2VydmljZSk7XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKCkge31cblxuICBnZXQgZG93bmxvYWRTaXplVW5pdCgpOiBEc2ZyRmlsZVNpemVVbml0IHtcbiAgICByZXR1cm4gdGhpcy5fZG93bmxvYWRTaXplVW5pdCB8fCB0aGlzLmxhbmdTZXJ2aWNlLmxhbmcgPyAnb2N0ZXRzJyA6ICdieXRlcyc7XG4gIH1cblxuICAvKiAgZ2V0IGxpbmtUYXJnZXQoKTogRHNmckxpbmtUYXJnZXQge1xuICAgIHJldHVybiB0aGlzLl9saW5rVGFyZ2V0O1xuICB9Ki9cblxuICBnZXQgdGFncygpOiBEc2ZyVGFnW10ge1xuICAgIHJldHVybiB0aGlzLl90YWdzO1xuICB9XG5cbiAgZ2V0IGl0ZW1MaW5rKCk6IERzZnJMaW5rIHtcbiAgICBjb25zdCBsYWJlbCA9IHRoaXMuaGVhZGluZyA/IHRoaXMuaGVhZGluZyA6ICcnO1xuICAgIGNvbnN0IGl0ZW1MaW5rOiBEc2ZyTGluayA9IHsgbGFiZWw6IGxhYmVsLCBhcmlhTGFiZWw6IHRoaXMuYXJpYUxhYmVsIH07IC8vIGFyaWFMYWJlbCAoc2luY2UgMS43KVxuICAgIGlmICh0aGlzLmxpbmspIHtcbiAgICAgIGl0ZW1MaW5rLmxpbmsgPSB0aGlzLmxpbms7XG4gICAgfSBlbHNlIGlmICh0aGlzLnJvdXRlKSB7XG4gICAgICBpdGVtTGluay5yb3V0ZSA9IHRoaXMucm91dGU7XG4gICAgfVxuICAgIHJldHVybiBpdGVtTGluaztcbiAgfVxuXG4gIGdldCBkb3dubG9hZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZG93bmxvYWQ7XG4gIH1cblxuICBnZXQgZGV0YWlsQm90dG9tKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICF0aGlzLmRvd25sb2FkID8gdGhpcy5fZGV0YWlsQm90dG9tIDogdGhpcy5kb3dubG9hZERldGFpbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaW1lbnNpb24gZHUgY29tcG9zYW50LCAnTUQnIHBhciBkw6lmYXV0ICgnU00sICdNRCcgdW5pcXVlbWVudCBwb3VyIGxhIHR1aWxlKS5cbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgc2luY2UoMS4xNS4wKSB1dGlsaXNlciAncGFuZWxTaXplJyDDoCBsYSBwbGFjZVxuICAgKi9cbiAgZ2V0IHNpemUoKTogRHNmclNpemUge1xuICAgIHJldHVybiB0aGlzLnBhbmVsU2l6ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEYW5zIGxlIGNhcyBkJ3VuIHTDqWzDqWNoYXJnZW1lbnQgc2FucyBsJ29wdGlvbiAnZG93bmxvYWRBc3Nlc3NGaWxlJyxcbiAgICogb24gY3LDqWUgbGUgZMOpdGFpbCDDoCBsJ2FpZGUgZGVzIHByb3ByacOpdMOpcyAnZG93bmxvYWRTaXplQnl0ZXMnLCAnZG93bmxvYWRNaW1lVHlwZScuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJvdGVjdGVkIGdldCBkb3dubG9hZERldGFpbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBkb3dubG9hZERldGFpbCh0aGlzLmRvd25sb2FkTWltZVR5cGUsIHRoaXMuZG93bmxvYWRTaXplQnl0ZXMsIHRoaXMuZG93bmxvYWRTaXplVW5pdCk7XG4gIH1cblxuICAvKipcbiAgICogRGltZW5zaW9uIGR1IGNvbXBvc2FudCwgJ01EJyBwYXIgZMOpZmF1dCAoJ1NNLCAnTUQnIHVuaXF1ZW1lbnQgcG91ciBsYSB0dWlsZSkuXG4gICAqXG4gICAqIEBkZXByZWNhdGVkIHNpbmNlKDEuMTUuMCkgdXRpbGlzZXIgJ3BhbmVsU2l6ZScgw6AgbGEgcGxhY2VcbiAgICovXG4gIEBJbnB1dCgpIHNldCBzaXplKHZhbHVlOiBEc2ZyU2l6ZSkge1xuICAgIHRoaXMucGFuZWxTaXplID0gdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogVHJhbnNmb3JtZSBsZSBjb21wb3NhbnQgY2xhc3NpcXVlIGVuIGNvbXBvc2FudCBkZSB0w6lsw6ljaGFyZ2VtZW50LlxuICAgKi9cbiAgQElucHV0KCkgc2V0IGRvd25sb2FkKGRvd25sb2FkOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZG93bmxvYWQgPSBkb3dubG9hZDtcbiAgICBpZiAodGhpcy5fZG93bmxvYWQpIHRoaXMuZW5sYXJnZUxpbmsgPSB0cnVlO1xuICB9XG5cbiAgLyoqIFpvbmUgZGUgZMOpdGFpbCBzZSB0cm91dmFudCB2aXN1ZWxsZW1lbnQgc291cyBsYSBkZXNjcmlwdGlvbiBldCDDoCBjw7R0w6kgZGUgbOKAmWljw7RuZSwgb3B0aW9ubmVsLlxuICAgKiBQb3VyIGxhIHR1aWxlLCBvbiBwZXV0IHBhc3NlciB1biBzbG90IGRlIHPDqWxlY3RldXIgXCJkZXRhaWxcIi5cbiAgICogRW4gY2FzIGRlIHTDqWzDqWNoYXJnZW1lbnQgbGUgZMOpdGFpbCBlc3QgcmVtcGxhY8OpIHBhciBsZXMgaW5mb3JtYXRpb25zIGR1IGZpY2hpZXIgY2FsY3Vsw6llcyBzZWxvbiBkb3dubG9hZEFzc2Vzc0ZpbGUuXG4gICAqL1xuICBASW5wdXQoKSBzZXQgZGV0YWlsQm90dG9tKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9kZXRhaWxCb3R0b20gPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3JjZSBsJ3VuaXTDqSBwYXIgZMOpZmF1dCBxdWkgZMOpcGVuZCBkZSBsYSBsYW5ndWUgZHUgc2l0ZSwgZW4gb2N0ZXRzIChrbywgTW8sIC4uLikgcG91ciAnZnInLCBlbiAnYnl0ZXMnIChLQiwgTUIuLi4pIHBvdXIgbGVzIGF1dHJlcyBsYW5ndWVzLlxuICAgKi9cbiAgQElucHV0KCkgc2V0IGRvd25sb2FkU2l6ZVVuaXQodmFsdWU6IERzZnJGaWxlU2l6ZVVuaXQpIHtcbiAgICB0aGlzLl9kb3dubG9hZFNpemVVbml0ID0gdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogUGVybWV0IGRlIHBvc2l0aW9ubmVyIGRlcyB0YWdzIGVuIGhhdXQgZGUgbGEgY2FydGUgKGNsaXF1YWJsZXMgb3Ugbm9uKSwgb3B0aW9ubmVsLlxuICAgKiB2b2lyIERzZnJUYWdcbiAgICovXG4gIEBJbnB1dCgpIHNldCB0YWdzKHRhZ3M6IERzZnJUYWdbXSkge1xuICAgIHRoaXMuX3RhZ3MgPSB0YWdzO1xuXG4gICAgLy8gVsOpcmlmaWUgc2kgdW4gdGFnIGVzdCBjbGlxdWFibGUgcG91ciBkw6lzYWN0aXZlciBlbmxhcmdlTGluay5cbiAgICBpZiAodGFncz8uZmluZCgodGFnKSA9PiB0YWcubGluaykpIHRoaXMuZW5sYXJnZUxpbmsgPSBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBY3RpdmF0aW9uIGR1IHJvdXRlciBBbmd1bGFyLlxuICAgKiBQcm92b3F1ZSB1biBidWcgYWNjZXNzaWJpbGl0w6kgc3VyIGxhIG5hdmlnYXRpb24gYXUgY2xhdmllciAoYWpvdXQgZCd1biB0YWJpbmRleD0wKVxuICAgKlxuICAgKiBAZGVwcmVjYXRlZCAoc2luY2UgMS4xMS41KSB1dGlsaXNlciBgcm91dGVQYXRoYCDDoCBsYSBwbGFjZS5cbiAgICovXG4gIEBJbnB1dCgpIHNldCByb3V0ZXJMaW5rKHZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSB8IHVuZGVmaW5lZCkge1xuICAgIGlmICh2YWx1ZSkgdGhpcy5yb3V0ZVBhdGggPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgaGFzTGluaygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISEodGhpcy5saW5rIHx8IHRoaXMucm91dGUgfHwgdGhpcy5yb3V0ZVBhdGgpO1xuICB9XG59XG4iXX0=