@sapphire-ion/framework 1.0.3 → 1.0.5
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.
- package/esm2022/lib/components/default/default-table/th-filter/th-filter.component.mjs +1 -1
- package/esm2022/lib/components/default/default-view/default-view.component.mjs +1 -1
- package/esm2022/lib/components/filter/filter.component.mjs +2 -2
- package/esm2022/lib/components/inputs/input-bool/input-bool.component.mjs +6 -6
- package/esm2022/lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.component.mjs +6 -6
- package/esm2022/lib/components/inputs/input-date/input-date.component.mjs +6 -6
- package/esm2022/lib/components/inputs/input-decimal/input-decimal.component.mjs +6 -6
- package/esm2022/lib/components/inputs/input-file/input-file.component.mjs +6 -6
- package/esm2022/lib/components/inputs/input-select/input-select.component.mjs +6 -6
- package/esm2022/lib/components/inputs/input-select/input.select.configuration.mjs +1 -1
- package/esm2022/lib/components/inputs/input-string/input-string.component.mjs +6 -6
- package/esm2022/lib/components/inputs/input-textarea/input-textarea.component.mjs +6 -6
- package/esm2022/lib/components/inputs/inputs.module.mjs +33 -33
- package/esm2022/lib/components/login/login-admin/login-admin.component.mjs +1 -1
- package/fesm2022/sapphire-ion-framework.mjs +69 -69
- package/fesm2022/sapphire-ion-framework.mjs.map +1 -1
- package/lib/components/inputs/input-bool/input-bool.component.d.ts +3 -3
- package/lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.component.d.ts +3 -3
- package/lib/components/inputs/input-date/input-date.component.d.ts +3 -3
- package/lib/components/inputs/input-decimal/input-decimal.component.d.ts +3 -3
- package/lib/components/inputs/input-file/input-file.component.d.ts +3 -3
- package/lib/components/inputs/input-select/input-select.component.d.ts +3 -3
- package/lib/components/inputs/input-select/input.select.configuration.d.ts +2 -2
- package/lib/components/inputs/input-string/input-string.component.d.ts +3 -3
- package/lib/components/inputs/input-textarea/input-textarea.component.d.ts +3 -3
- package/lib/components/inputs/inputs.module.d.ts +1 -1
- package/package.json +1 -1
|
@@ -13,7 +13,7 @@ import * as i2 from "@angular/common";
|
|
|
13
13
|
import * as i3 from "@angular/forms";
|
|
14
14
|
import * as i4 from "@maskito/angular";
|
|
15
15
|
import * as i5 from "../../popover/sion-popover/sion-popover.component";
|
|
16
|
-
export class
|
|
16
|
+
export class InputDateComponent extends CustomInput {
|
|
17
17
|
focus(event) {
|
|
18
18
|
if (this.input && event.target == this.inputContainer.nativeElement) {
|
|
19
19
|
this.input.nativeElement.focus();
|
|
@@ -92,12 +92,12 @@ export class NewInputDateComponent extends CustomInput {
|
|
|
92
92
|
ChangeDate(v) {
|
|
93
93
|
this.SetValue(v.toString(), true);
|
|
94
94
|
}
|
|
95
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type:
|
|
96
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: NewInputDateComponent, selector: "input-date, input-date-time, input-time", inputs: { configuration: { classPropertyName: "configuration", publicName: "configuration", isSignal: true, isRequired: false, transformFunction: null } }, providers: [...InputProviderFactory.GetProviders(NewInputDateComponent)], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }, { propertyName: "inputContainer", first: true, predicate: ["inputContainer"], descendants: true }, { propertyName: "datetime", first: true, predicate: IonDatetime, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div \r\n #inputContainer\r\n class=\"input-container\" \r\n (click)=\"focus($event)\"\r\n [class.required]=\"required()\" \r\n [class.submitted]=\"submitted()\" \r\n [class.invalid]=\"invalid\" \r\n [class.disabled]=\"disabled() || loading()\"\r\n [class.loading]=\"loading()\"\r\n>\r\n <div class=\"input-label\"> \r\n <span class=\"truncate\">\r\n {{label()}} \r\n </span>\r\n </div>\r\n \r\n <input #input\r\n [ngModel]=\"dtValue\" \r\n (ngModelChange)=\"SetValue($event)\"\r\n [maskito]=\"options\"\r\n [disabled]=\"disabled() || loading()\"\r\n />\r\n \r\n <ion-button tabindex=\"-1\" class=\"absolute right-1 bottom-1\" (click)=\"Present(modal, popover, $event)\" color=\"medium\" size=\"small\" fill=\"clear\" style=\"--border-radius: .5rem\">\r\n <ion-icon [name]=\"presentation == 'time' ? 'time' : 'calendar'\" slot=\"icon-only\"></ion-icon>\r\n </ion-button>\r\n\r\n <div class=\"loading-container\" [class.loading]=\"loading()\">\r\n <ion-spinner></ion-spinner>\r\n </div>\r\n</div>\r\n\r\n<sion-popover\r\n [anchor]=\"inputContainer\"\r\n #popover \r\n [class.time]=\"presentation == 'time'\" \r\n [class.date]=\"presentation == 'date'\" \r\n [class.datetime]=\"presentation == 'date-time'\"\r\n>\r\n <ng-container *ngTemplateOutlet=\"datetimeTemplate; context: { $implicit: popover }\"></ng-container>\r\n</sion-popover>\r\n\r\n<ion-modal \r\n #modal\r\n [class.time]=\"presentation == 'time'\" \r\n [class.date]=\"presentation == 'date'\" \r\n [class.datetime]=\"presentation == 'date-time'\"\r\n>\r\n <ng-template>\r\n <ng-container *ngTemplateOutlet=\"datetimeTemplate; context: { $implicit: modal }\"></ng-container>\r\n </ng-template>\r\n</ion-modal>\r\n\r\n\r\n<ng-template #datetimeTemplate let-parent>\r\n <div class=\"flex items-center justify-center bg-[--ion-color-light] rounded-xl\" tabindex=\"-1\">\r\n @if(presentation.includes('date')) {\r\n <ion-datetime tabindex=\"-1\" [ngModel]=\"value()\" class=\"date\" presentation=\"date\" (ionChange)=\"ChangeDate($event.target.value);\"></ion-datetime>\r\n }\r\n @if(presentation == 'date-time') {\r\n <div class=\"flex flex-col items-center justify-center py-12 h-[21rem]\">\r\n <div class=\"h-full border-r-2 border-primary mask-y/30\"></div>\r\n </div>\r\n }\r\n @if(presentation.includes('time')) {\r\n <div class=\"h-[21rem] flex flex-col items-center justify-center gap-2\">\r\n <ion-icon class=\"text-2xl\" name=\"alarm\"></ion-icon>\r\n <ion-datetime tabindex=\"-1\" [ngModel]=\"value()\" class=\"time\" presentation=\"time\" hourCycle=\"h24\" (ionChange)=\"ChangeDate($event.target.value)\"></ion-datetime>\r\n </div>\r\n }\r\n </div>\r\n</ng-template>", styles: [".input-container{position:relative!important}.input-container input{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}ion-popover{--height: auto}ion-popover.time{--width: 8rem}ion-popover.date{--width: 21.5rem}ion-popover.datetime{--width: 29rem}ion-modal{--height: auto}ion-modal.time{--width: 8rem}ion-modal.date{--width: 21.5rem}ion-modal.datetime{--width: 29rem}ion-datetime{--wheel-highlight-background: var(--ion-color-primary) !important}ion-datetime.date{width:21.5rem}ion-datetime.time{width:8rem}\n", "@property --input-color{syntax: \"<color>\"; initial-value: transparent; inherits: false;}.input-container{position:relative;--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));cursor:text;border-radius:.75rem;padding:.25rem .75rem;--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);transition:--input-color .2s ease-in-out,box-shadow .2s ease-in-out,opacity .2s ease-in-out,filter .2s ease-in-out;--color: var(--ion-color-dark);--input-color: var(--input-background, var(--ion-color-step-250));--shadow: 0 3px 4px -1px rgb(0 0 0 / .1);--inset-shadow: var(--input-color) 0px 1.75px 1px 0px inset;--focused-shadow: 0 0 1px 2px color-mix(in srgb, var(--ion-color-medium) 35%, transparent);box-shadow:var(--inset-shadow),var(--shadow);will-change:box-shadow,filter opacity;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;background:radial-gradient(ellipse at 0px top,hsl(from var(--input-color) h s l/.5),hsl(from var(--input-color) h s l/.4)),hsl(from var(--ion-color-light) h s l/.8)}.input-container:hover{--tw-brightness: brightness(.9);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container:focus-within,.input-container:focus,.input-container.manual-focus{box-shadow:var(--inset-shadow),var(--shadow),var(--focused-shadow);--tw-brightness: brightness(.9);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container .input-label{pointer-events:none;display:flex;height:1rem;width:100%;min-width:0px;max-width:100%;align-items:center;justify-content:flex-start;gap:.25rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.75rem;line-height:1rem;color:var(--color)}.input-container input,.input-container textarea{height:1.5rem;width:100%;border-radius:.375rem;background-color:transparent;font-size:.875rem;line-height:1.25rem;color:var(--ion-color-dark);outline:2px solid transparent;outline-offset:2px}.input-container.loading{cursor:wait!important}.input-container.required .input-label:after{content:\"*\";color:var(--ion-color-danger);vertical-align:bottom}.input-container.submitted.invalid{--input-color: color-mix(in srgb, var(--ion-color-danger) 50%, transparent)}.input-container.disabled{cursor:not-allowed;opacity:.5;--tw-brightness: brightness(1);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container.disabled *{pointer-events:none}.loading-container{position:absolute;pointer-events:none;width:100%;height:100%;top:0;left:0;display:flex;justify-content:end;align-items:center;padding-right:.5rem;will-change:opacity;transition:opacity .2s ease-in-out;overflow:hidden;opacity:0;z-index:10}.loading-container ion-spinner{will-change:transform;transition:transform .2s ease-in-out;transform:translateY(-100%)}.loading-container.loading{opacity:1}.loading-container.loading ion-spinner{transform:translateY(0)}ion-modal::part(content){border-radius:.75rem;border:1px solid var(--ion-color-step-250)}\n"], dependencies: [{ kind: "component", type: i1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i1.IonDatetime, selector: "ion-datetime", inputs: ["cancelText", "clearText", "color", "dayValues", "disabled", "doneText", "firstDayOfWeek", "formatOptions", "highlightedDates", "hourCycle", "hourValues", "isDateEnabled", "locale", "max", "min", "minuteValues", "mode", "monthValues", "multiple", "name", "preferWheel", "presentation", "readonly", "showClearButton", "showDefaultButtons", "showDefaultTimeLabel", "showDefaultTitle", "size", "titleSelectedDatesFormatter", "value", "yearValues"] }, { kind: "component", type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i1.IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: i1.IonModal, selector: "ion-modal" }, { kind: "directive", type: i1.SelectValueAccessor, selector: "ion-select, ion-radio-group, ion-segment, ion-datetime" }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.MaskitoDirective, selector: "[maskito]", inputs: ["maskito", "maskitoElement"] }, { kind: "component", type: i5.SIonPopoverComponent, selector: "sion-popover", inputs: ["fill", "arrow", "flip", "placement", "height", "width", "anchor"], outputs: ["onWillPresent", "onDidPresent", "onWillDismiss", "onDidDismiss", "isVisibleChange"] }] }); }
|
|
95
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InputDateComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
96
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: InputDateComponent, selector: "input-date, input-date-time, input-time", inputs: { configuration: { classPropertyName: "configuration", publicName: "configuration", isSignal: true, isRequired: false, transformFunction: null } }, providers: [...InputProviderFactory.GetProviders(InputDateComponent)], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }, { propertyName: "inputContainer", first: true, predicate: ["inputContainer"], descendants: true }, { propertyName: "datetime", first: true, predicate: IonDatetime, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div \r\n #inputContainer\r\n class=\"input-container\" \r\n (click)=\"focus($event)\"\r\n [class.required]=\"required()\" \r\n [class.submitted]=\"submitted()\" \r\n [class.invalid]=\"invalid\" \r\n [class.disabled]=\"disabled() || loading()\"\r\n [class.loading]=\"loading()\"\r\n>\r\n <div class=\"input-label\"> \r\n <span class=\"truncate\">\r\n {{label()}} \r\n </span>\r\n </div>\r\n \r\n <input #input\r\n [ngModel]=\"dtValue\" \r\n (ngModelChange)=\"SetValue($event)\"\r\n [maskito]=\"options\"\r\n [disabled]=\"disabled() || loading()\"\r\n />\r\n \r\n <ion-button tabindex=\"-1\" class=\"absolute right-1 bottom-1\" (click)=\"Present(modal, popover, $event)\" color=\"medium\" size=\"small\" fill=\"clear\" style=\"--border-radius: .5rem\">\r\n <ion-icon [name]=\"presentation == 'time' ? 'time' : 'calendar'\" slot=\"icon-only\"></ion-icon>\r\n </ion-button>\r\n\r\n <div class=\"loading-container\" [class.loading]=\"loading()\">\r\n <ion-spinner></ion-spinner>\r\n </div>\r\n</div>\r\n\r\n<sion-popover\r\n [anchor]=\"inputContainer\"\r\n #popover \r\n [class.time]=\"presentation == 'time'\" \r\n [class.date]=\"presentation == 'date'\" \r\n [class.datetime]=\"presentation == 'date-time'\"\r\n>\r\n <ng-container *ngTemplateOutlet=\"datetimeTemplate; context: { $implicit: popover }\"></ng-container>\r\n</sion-popover>\r\n\r\n<ion-modal \r\n #modal\r\n [class.time]=\"presentation == 'time'\" \r\n [class.date]=\"presentation == 'date'\" \r\n [class.datetime]=\"presentation == 'date-time'\"\r\n>\r\n <ng-template>\r\n <ng-container *ngTemplateOutlet=\"datetimeTemplate; context: { $implicit: modal }\"></ng-container>\r\n </ng-template>\r\n</ion-modal>\r\n\r\n\r\n<ng-template #datetimeTemplate let-parent>\r\n <div class=\"flex items-center justify-center bg-[--ion-color-light] rounded-xl\" tabindex=\"-1\">\r\n @if(presentation.includes('date')) {\r\n <ion-datetime tabindex=\"-1\" [ngModel]=\"value()\" class=\"date\" presentation=\"date\" (ionChange)=\"ChangeDate($event.target.value);\"></ion-datetime>\r\n }\r\n @if(presentation == 'date-time') {\r\n <div class=\"flex flex-col items-center justify-center py-12 h-[21rem]\">\r\n <div class=\"h-full border-r-2 border-primary mask-y/30\"></div>\r\n </div>\r\n }\r\n @if(presentation.includes('time')) {\r\n <div class=\"h-[21rem] flex flex-col items-center justify-center gap-2\">\r\n <ion-icon class=\"text-2xl\" name=\"alarm\"></ion-icon>\r\n <ion-datetime tabindex=\"-1\" [ngModel]=\"value()\" class=\"time\" presentation=\"time\" hourCycle=\"h24\" (ionChange)=\"ChangeDate($event.target.value)\"></ion-datetime>\r\n </div>\r\n }\r\n </div>\r\n</ng-template>", styles: [".input-container{position:relative!important}.input-container input{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}ion-popover{--height: auto}ion-popover.time{--width: 8rem}ion-popover.date{--width: 21.5rem}ion-popover.datetime{--width: 29rem}ion-modal{--height: auto}ion-modal.time{--width: 8rem}ion-modal.date{--width: 21.5rem}ion-modal.datetime{--width: 29rem}ion-datetime{--wheel-highlight-background: var(--ion-color-primary) !important}ion-datetime.date{width:21.5rem}ion-datetime.time{width:8rem}\n", "@property --input-color{syntax: \"<color>\"; initial-value: transparent; inherits: false;}.input-container{position:relative;--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));cursor:text;border-radius:.75rem;padding:.25rem .75rem;--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);transition:--input-color .2s ease-in-out,box-shadow .2s ease-in-out,opacity .2s ease-in-out,filter .2s ease-in-out;--color: var(--ion-color-dark);--input-color: var(--input-background, var(--ion-color-step-250));--shadow: 0 3px 4px -1px rgb(0 0 0 / .1);--inset-shadow: var(--input-color) 0px 1.75px 1px 0px inset;--focused-shadow: 0 0 1px 2px color-mix(in srgb, var(--ion-color-medium) 35%, transparent);box-shadow:var(--inset-shadow),var(--shadow);will-change:box-shadow,filter opacity;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;background:radial-gradient(ellipse at 0px top,hsl(from var(--input-color) h s l/.5),hsl(from var(--input-color) h s l/.4)),hsl(from var(--ion-color-light) h s l/.8)}.input-container:hover{--tw-brightness: brightness(.9);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container:focus-within,.input-container:focus,.input-container.manual-focus{box-shadow:var(--inset-shadow),var(--shadow),var(--focused-shadow);--tw-brightness: brightness(.9);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container .input-label{pointer-events:none;display:flex;height:1rem;width:100%;min-width:0px;max-width:100%;align-items:center;justify-content:flex-start;gap:.25rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.75rem;line-height:1rem;color:var(--color)}.input-container input,.input-container textarea{height:1.5rem;width:100%;border-radius:.375rem;background-color:transparent;font-size:.875rem;line-height:1.25rem;color:var(--ion-color-dark);outline:2px solid transparent;outline-offset:2px}.input-container.loading{cursor:wait!important}.input-container.required .input-label:after{content:\"*\";color:var(--ion-color-danger);vertical-align:bottom}.input-container.submitted.invalid{--input-color: color-mix(in srgb, var(--ion-color-danger) 50%, transparent)}.input-container.disabled{cursor:not-allowed;opacity:.5;--tw-brightness: brightness(1);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container.disabled *{pointer-events:none}.loading-container{position:absolute;pointer-events:none;width:100%;height:100%;top:0;left:0;display:flex;justify-content:end;align-items:center;padding-right:.5rem;will-change:opacity;transition:opacity .2s ease-in-out;overflow:hidden;opacity:0;z-index:10}.loading-container ion-spinner{will-change:transform;transition:transform .2s ease-in-out;transform:translateY(-100%)}.loading-container.loading{opacity:1}.loading-container.loading ion-spinner{transform:translateY(0)}ion-modal::part(content){border-radius:.75rem;border:1px solid var(--ion-color-step-250)}\n"], dependencies: [{ kind: "component", type: i1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i1.IonDatetime, selector: "ion-datetime", inputs: ["cancelText", "clearText", "color", "dayValues", "disabled", "doneText", "firstDayOfWeek", "formatOptions", "highlightedDates", "hourCycle", "hourValues", "isDateEnabled", "locale", "max", "min", "minuteValues", "mode", "monthValues", "multiple", "name", "preferWheel", "presentation", "readonly", "showClearButton", "showDefaultButtons", "showDefaultTimeLabel", "showDefaultTitle", "size", "titleSelectedDatesFormatter", "value", "yearValues"] }, { kind: "component", type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i1.IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: i1.IonModal, selector: "ion-modal" }, { kind: "directive", type: i1.SelectValueAccessor, selector: "ion-select, ion-radio-group, ion-segment, ion-datetime" }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.MaskitoDirective, selector: "[maskito]", inputs: ["maskito", "maskitoElement"] }, { kind: "component", type: i5.SIonPopoverComponent, selector: "sion-popover", inputs: ["fill", "arrow", "flip", "placement", "height", "width", "anchor"], outputs: ["onWillPresent", "onDidPresent", "onWillDismiss", "onDidDismiss", "isVisibleChange"] }] }); }
|
|
97
97
|
}
|
|
98
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type:
|
|
98
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InputDateComponent, decorators: [{
|
|
99
99
|
type: Component,
|
|
100
|
-
args: [{ selector: 'input-date, input-date-time, input-time', providers: [...InputProviderFactory.GetProviders(
|
|
100
|
+
args: [{ selector: 'input-date, input-date-time, input-time', providers: [...InputProviderFactory.GetProviders(InputDateComponent)], template: "<div \r\n #inputContainer\r\n class=\"input-container\" \r\n (click)=\"focus($event)\"\r\n [class.required]=\"required()\" \r\n [class.submitted]=\"submitted()\" \r\n [class.invalid]=\"invalid\" \r\n [class.disabled]=\"disabled() || loading()\"\r\n [class.loading]=\"loading()\"\r\n>\r\n <div class=\"input-label\"> \r\n <span class=\"truncate\">\r\n {{label()}} \r\n </span>\r\n </div>\r\n \r\n <input #input\r\n [ngModel]=\"dtValue\" \r\n (ngModelChange)=\"SetValue($event)\"\r\n [maskito]=\"options\"\r\n [disabled]=\"disabled() || loading()\"\r\n />\r\n \r\n <ion-button tabindex=\"-1\" class=\"absolute right-1 bottom-1\" (click)=\"Present(modal, popover, $event)\" color=\"medium\" size=\"small\" fill=\"clear\" style=\"--border-radius: .5rem\">\r\n <ion-icon [name]=\"presentation == 'time' ? 'time' : 'calendar'\" slot=\"icon-only\"></ion-icon>\r\n </ion-button>\r\n\r\n <div class=\"loading-container\" [class.loading]=\"loading()\">\r\n <ion-spinner></ion-spinner>\r\n </div>\r\n</div>\r\n\r\n<sion-popover\r\n [anchor]=\"inputContainer\"\r\n #popover \r\n [class.time]=\"presentation == 'time'\" \r\n [class.date]=\"presentation == 'date'\" \r\n [class.datetime]=\"presentation == 'date-time'\"\r\n>\r\n <ng-container *ngTemplateOutlet=\"datetimeTemplate; context: { $implicit: popover }\"></ng-container>\r\n</sion-popover>\r\n\r\n<ion-modal \r\n #modal\r\n [class.time]=\"presentation == 'time'\" \r\n [class.date]=\"presentation == 'date'\" \r\n [class.datetime]=\"presentation == 'date-time'\"\r\n>\r\n <ng-template>\r\n <ng-container *ngTemplateOutlet=\"datetimeTemplate; context: { $implicit: modal }\"></ng-container>\r\n </ng-template>\r\n</ion-modal>\r\n\r\n\r\n<ng-template #datetimeTemplate let-parent>\r\n <div class=\"flex items-center justify-center bg-[--ion-color-light] rounded-xl\" tabindex=\"-1\">\r\n @if(presentation.includes('date')) {\r\n <ion-datetime tabindex=\"-1\" [ngModel]=\"value()\" class=\"date\" presentation=\"date\" (ionChange)=\"ChangeDate($event.target.value);\"></ion-datetime>\r\n }\r\n @if(presentation == 'date-time') {\r\n <div class=\"flex flex-col items-center justify-center py-12 h-[21rem]\">\r\n <div class=\"h-full border-r-2 border-primary mask-y/30\"></div>\r\n </div>\r\n }\r\n @if(presentation.includes('time')) {\r\n <div class=\"h-[21rem] flex flex-col items-center justify-center gap-2\">\r\n <ion-icon class=\"text-2xl\" name=\"alarm\"></ion-icon>\r\n <ion-datetime tabindex=\"-1\" [ngModel]=\"value()\" class=\"time\" presentation=\"time\" hourCycle=\"h24\" (ionChange)=\"ChangeDate($event.target.value)\"></ion-datetime>\r\n </div>\r\n }\r\n </div>\r\n</ng-template>", styles: [".input-container{position:relative!important}.input-container input{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}ion-popover{--height: auto}ion-popover.time{--width: 8rem}ion-popover.date{--width: 21.5rem}ion-popover.datetime{--width: 29rem}ion-modal{--height: auto}ion-modal.time{--width: 8rem}ion-modal.date{--width: 21.5rem}ion-modal.datetime{--width: 29rem}ion-datetime{--wheel-highlight-background: var(--ion-color-primary) !important}ion-datetime.date{width:21.5rem}ion-datetime.time{width:8rem}\n", "@property --input-color{syntax: \"<color>\"; initial-value: transparent; inherits: false;}.input-container{position:relative;--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));cursor:text;border-radius:.75rem;padding:.25rem .75rem;--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);transition:--input-color .2s ease-in-out,box-shadow .2s ease-in-out,opacity .2s ease-in-out,filter .2s ease-in-out;--color: var(--ion-color-dark);--input-color: var(--input-background, var(--ion-color-step-250));--shadow: 0 3px 4px -1px rgb(0 0 0 / .1);--inset-shadow: var(--input-color) 0px 1.75px 1px 0px inset;--focused-shadow: 0 0 1px 2px color-mix(in srgb, var(--ion-color-medium) 35%, transparent);box-shadow:var(--inset-shadow),var(--shadow);will-change:box-shadow,filter opacity;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;background:radial-gradient(ellipse at 0px top,hsl(from var(--input-color) h s l/.5),hsl(from var(--input-color) h s l/.4)),hsl(from var(--ion-color-light) h s l/.8)}.input-container:hover{--tw-brightness: brightness(.9);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container:focus-within,.input-container:focus,.input-container.manual-focus{box-shadow:var(--inset-shadow),var(--shadow),var(--focused-shadow);--tw-brightness: brightness(.9);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container .input-label{pointer-events:none;display:flex;height:1rem;width:100%;min-width:0px;max-width:100%;align-items:center;justify-content:flex-start;gap:.25rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.75rem;line-height:1rem;color:var(--color)}.input-container input,.input-container textarea{height:1.5rem;width:100%;border-radius:.375rem;background-color:transparent;font-size:.875rem;line-height:1.25rem;color:var(--ion-color-dark);outline:2px solid transparent;outline-offset:2px}.input-container.loading{cursor:wait!important}.input-container.required .input-label:after{content:\"*\";color:var(--ion-color-danger);vertical-align:bottom}.input-container.submitted.invalid{--input-color: color-mix(in srgb, var(--ion-color-danger) 50%, transparent)}.input-container.disabled{cursor:not-allowed;opacity:.5;--tw-brightness: brightness(1);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container.disabled *{pointer-events:none}.loading-container{position:absolute;pointer-events:none;width:100%;height:100%;top:0;left:0;display:flex;justify-content:end;align-items:center;padding-right:.5rem;will-change:opacity;transition:opacity .2s ease-in-out;overflow:hidden;opacity:0;z-index:10}.loading-container ion-spinner{will-change:transform;transition:transform .2s ease-in-out;transform:translateY(-100%)}.loading-container.loading{opacity:1}.loading-container.loading ion-spinner{transform:translateY(0)}ion-modal::part(content){border-radius:.75rem;border:1px solid var(--ion-color-step-250)}\n"] }]
|
|
101
101
|
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { input: [{
|
|
102
102
|
type: ViewChild,
|
|
103
103
|
args: ['input']
|
|
@@ -108,4 +108,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
108
108
|
type: ViewChild,
|
|
109
109
|
args: [IonDatetime]
|
|
110
110
|
}] } });
|
|
111
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXRzL2lucHV0LWRhdGUvaW5wdXQtZGF0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXRzL2lucHV0LWRhdGUvaW5wdXQtZGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQXVCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RixPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDL0QsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzNELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUUzRCxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFFNUIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxXQUFXLEVBQXdCLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7QUFTbkUsTUFBTSxPQUFPLHFCQUFzQixTQUFRLFdBQW1CO0lBS25ELEtBQUssQ0FBQyxLQUFpQjtRQUM5QixJQUFHLElBQUksQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7UUFBQyxDQUFDO0lBQzNHLENBQUM7SUFNRCxZQUNXLFVB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QUFyQixxQkFBcUIsOE5BRnJCLENBQUMsR0FBRyxvQkFBb0IsQ0FBQyxZQUFZLENBQUMscUJBQXFCLENBQUMsQ0FBQyx3UEF5RTdELFdBQVcsdUVDMUZ4Qiw2c0ZBdUVjOzs0RkRwREQscUJBQXFCO2tCQU5qQyxTQUFTOytCQUNFLHlDQUF5QyxhQUd4QyxDQUFDLEdBQUcsb0JBQW9CLENBQUMsWUFBWSx1QkFBdUIsQ0FBQzsrRUFLcEQsS0FBSztzQkFBeEIsU0FBUzt1QkFBQyxPQUFPO2dCQUNXLGNBQWM7c0JBQTFDLFNBQVM7dUJBQUMsZ0JBQWdCO2dCQW1FSCxRQUFRO3NCQUEvQixTQUFTO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIGlucHV0LCBJbnB1dFNpZ25hbCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgbWFza2l0b0RhdGVUaW1lT3B0aW9uc0dlbmVyYXRvciB9IGZyb20gJ0BtYXNraXRvL2tpdCc7XHJcbmltcG9ydCB7IG1hc2tpdG9EYXRlT3B0aW9uc0dlbmVyYXRvciB9IGZyb20gJ0BtYXNraXRvL2tpdCc7XHJcbmltcG9ydCB7IG1hc2tpdG9UaW1lT3B0aW9uc0dlbmVyYXRvciB9IGZyb20gJ0BtYXNraXRvL2tpdCc7XHJcbmltcG9ydCB7IE1hc2tpdG9PcHRpb25zIH0gZnJvbSAnQG1hc2tpdG8vY29yZSc7XHJcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcclxuXHJcbmltcG9ydCB7IElucHV0RGF0ZUNvbmZpZ3VyYXRpb24gfSBmcm9tICcuL2lucHV0LWRhdGUuY29uZmlndXJhdGlvbic7XHJcbmltcG9ydCB7IElucHV0UHJvdmlkZXJGYWN0b3J5IH0gZnJvbSAnLi4vaW5wdXQtcHJvdmlkZXItZmFjdG9yeSc7XHJcbmltcG9ydCB7IEN1c3RvbUlucHV0IH0gZnJvbSAnLi4vY3VzdG9tLWlucHV0JztcclxuaW1wb3J0IHsgSW9uRGF0ZXRpbWUsIElvbk1vZGFsLCBJb25Qb3BvdmVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xyXG5pbXBvcnQgeyBTSW9uUG9wb3ZlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3BvcG92ZXIvc2lvbi1wb3BvdmVyL3Npb24tcG9wb3Zlci5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdpbnB1dC1kYXRlLCBpbnB1dC1kYXRlLXRpbWUsIGlucHV0LXRpbWUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC1kYXRlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9pbnB1dC1kYXRlLmNvbXBvbmVudC5zY3NzJywgJy4uL2lucHV0cy5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbLi4uSW5wdXRQcm92aWRlckZhY3RvcnkuR2V0UHJvdmlkZXJzKE5ld0lucHV0RGF0ZUNvbXBvbmVudCldLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmV3SW5wdXREYXRlQ29tcG9uZW50IGV4dGVuZHMgQ3VzdG9tSW5wdXQ8c3RyaW5nPiB7XHJcblxyXG4gIGNvbmZpZ3VyYXRpb246IElucHV0U2lnbmFsPElucHV0RGF0ZUNvbmZpZ3VyYXRpb24+ID0gaW5wdXQ8SW5wdXREYXRlQ29uZmlndXJhdGlvbj4obmV3IElucHV0RGF0ZUNvbmZpZ3VyYXRpb24oKSk7XHJcbiAgQFZpZXdDaGlsZCgnaW5wdXQnKSBpbnB1dDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcclxuICBAVmlld0NoaWxkKCdpbnB1dENvbnRhaW5lcicpIGlucHV0Q29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuICBvdmVycmlkZSBmb2N1cyhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgaWYodGhpcy5pbnB1dCAmJiBldmVudC50YXJnZXQgPT0gdGhpcy5pbnB1dENvbnRhaW5lci5uYXRpdmVFbGVtZW50KSB7IHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpOyB9ICAgICAgXHJcbiAgfVxyXG4gIFxyXG4gIG9wdGlvbnM6IE1hc2tpdG9PcHRpb25zO1xyXG4gIGR0VmFsdWU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIG1vbWVudEZvcm1hdDogbW9tZW50Lk1vbWVudEZvcm1hdFNwZWNpZmljYXRpb247XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgb3ZlcnJpZGUgZWxlbWVudFJlZjogRWxlbWVudFJlZlxyXG4gICkgeyBcclxuICAgIHN1cGVyKCk7IFxyXG4gICAgdGhpcy5wcmVzZW50YXRpb24gPSAodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpIGFzIHN0cmluZykucmVwbGFjZSgnaW5wdXQtJywgJycpO1xyXG5cclxuICAgIGlmKHRoaXMucHJlc2VudGF0aW9uID09IFwiZGF0ZS10aW1lXCIpeyBcclxuICAgICAgdGhpcy5tb21lbnRGb3JtYXQgPSAnREQvTU0vWVlZWSBISDptbSc7XHJcbiAgICAgIHRoaXMub3B0aW9ucyA9IG1hc2tpdG9EYXRlVGltZU9wdGlvbnNHZW5lcmF0b3Ioe1xyXG4gICAgICAgIGRhdGVNb2RlOiAnZGQvbW0veXl5eScsXHJcbiAgICAgICAgdGltZU1vZGU6ICdISDpNTScsXHJcbiAgICAgICAgZGF0ZVNlcGFyYXRvcjogJy8nLFxyXG4gICAgICAgIGRhdGVUaW1lU2VwYXJhdG9yOiAnICcsXHJcbiAgICAgICAgdGltZVN0ZXA6IDEsXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlXHJcbiAgICBpZih0aGlzLnByZXNlbnRhdGlvbiA9PSBcImRhdGVcIikgeyBcclxuICAgICAgdGhpcy5tb21lbnRGb3JtYXQgPSAnREQvTU0vWVlZWSc7XHJcbiAgICAgIHRoaXMub3B0aW9ucyA9IG1hc2tpdG9EYXRlT3B0aW9uc0dlbmVyYXRvcih7IG1vZGU6ICdkZC9tbS95eXl5Jywgc2VwYXJhdG9yOiAnLyd9KTtcclxuICAgIH0gZWxzZVxyXG4gICAgaWYodGhpcy5wcmVzZW50YXRpb24gPT0gXCJ0aW1lXCIpIHtcclxuICAgICAgdGhpcy5tb21lbnRGb3JtYXQgPSAnSEg6bW0nOyBcclxuICAgICAgdGhpcy5vcHRpb25zID0gbWFza2l0b1RpbWVPcHRpb25zR2VuZXJhdG9yKHtcclxuICAgICAgICBtb2RlOiAnSEg6TU0nLFxyXG4gICAgICAgIHN0ZXA6IDEsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICBwdWJsaWMgcHJlc2VudGF0aW9uOiBcImRhdGUtdGltZVwiIHwgXCJkYXRlXCIgfCBcInRpbWVcIiB8IHN0cmluZyA9IFwiZGF0ZS10aW1lXCJcclxuXHJcbiAgb3ZlcnJpZGUgU2V0VmFsdWUodmFsdWU6IHN0cmluZywgZnJvbURhdGVUaW1lOiBib29sZWFuID0gZmFsc2UpOiB2b2lkIHtcclxuICAgIGlmKGZyb21EYXRlVGltZSl7XHJcbiAgICAgIHRoaXMuZHRWYWx1ZSA9IG1vbWVudCh2YWx1ZSwgbW9tZW50LklTT184NjAxLCB0cnVlKS5mb3JtYXQodGhpcy5tb21lbnRGb3JtYXQudG9TdHJpbmcoKSk7XHJcbiAgICAgIHRoaXMudmFsdWUuc2V0KHZhbHVlKTtcclxuICAgICAgdGhpcy5ydW5WYWxpZGF0aW9uKCk7XHJcbiAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMudmFsdWUoKSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoJ1onLCAnJyk7XHJcbiAgICBpZihbJ2RhdGUtdGltZScsICdkYXRlJ10uaW5jbHVkZXModGhpcy5wcmVzZW50YXRpb24pKXtcclxuICAgICAgY29uc3QgZGF0ZSA9IG1vbWVudCh2YWx1ZSwgdGhpcy5tb21lbnRGb3JtYXQsIHRydWUpLnV0YyhmYWxzZSk7XHJcbiAgICAgIGlmKGRhdGUuaXNWYWxpZCgpIHx8ICF2YWx1ZSl7XHJcbiAgICAgICAgaWYodmFsdWUpe1xyXG4gICAgICAgICAgdGhpcy52YWx1ZS5zZXQoZGF0ZS5mb3JtYXQoKS5yZXBsYWNlKCdaJywgJycpKTtcclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgIHRoaXMudmFsdWUuc2V0KG51bGwpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnJ1blZhbGlkYXRpb24oKTtcclxuICAgICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLnZhbHVlKCkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmKHZhbHVlLmxlbmd0aCA9PSA1KXtcclxuICAgICAgdGhpcy52YWx1ZS5zZXQodmFsdWUpO1xyXG4gICAgICB0aGlzLnJ1blZhbGlkYXRpb24oKTtcclxuICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy52YWx1ZSgpKTtcclxuICAgIH1cclxuICB9XHJcbiAgQFZpZXdDaGlsZChJb25EYXRldGltZSkgZGF0ZXRpbWU6IElvbkRhdGV0aW1lO1xyXG4gIFxyXG4gIG92ZXJyaWRlIHdyaXRlVmFsdWUob2JqOiBzdHJpbmcpOiB2b2lkIHwgUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLnZhbHVlLnNldChvYmopO1xyXG4gICAgdGhpcy5kdFZhbHVlID0gbW9tZW50KHRoaXMudmFsdWUoKSwgbW9tZW50LklTT184NjAxLCB0cnVlKS5mb3JtYXQodGhpcy5tb21lbnRGb3JtYXQudG9TdHJpbmcoKSk7XHJcbiAgICB0aGlzLnJ1blZhbGlkYXRpb24oKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIFByZXNlbnQobW9kYWw6IElvbk1vZGFsLCBwb3BvdmVyOiBTSW9uUG9wb3ZlckNvbXBvbmVudCwgZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGlmICh3aW5kb3cuaW5uZXJXaWR0aCA+IHdpbmRvdy5pbm5lckhlaWdodCkge1xyXG4gICAgICByZXR1cm4gcG9wb3Zlci5wcmVzZW50KGV2ZW50KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBtb2RhbC5wcmVzZW50KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBDaGFuZ2VEYXRlKHY6IHN0cmluZyB8IHN0cmluZ1tdKSB7XHJcbiAgICB0aGlzLlNldFZhbHVlKHYudG9TdHJpbmcoKSwgdHJ1ZSk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgXHJcbiAgI2lucHV0Q29udGFpbmVyXHJcbiAgY2xhc3M9XCJpbnB1dC1jb250YWluZXJcIiBcclxuICAoY2xpY2spPVwiZm9jdXMoJGV2ZW50KVwiXHJcbiAgW2NsYXNzLnJlcXVpcmVkXT1cInJlcXVpcmVkKClcIiBcclxuICBbY2xhc3Muc3VibWl0dGVkXT1cInN1Ym1pdHRlZCgpXCIgXHJcbiAgW2NsYXNzLmludmFsaWRdPVwiaW52YWxpZFwiIFxyXG4gIFtjbGFzcy5kaXNhYmxlZF09XCJkaXNhYmxlZCgpIHx8IGxvYWRpbmcoKVwiXHJcbiAgW2NsYXNzLmxvYWRpbmddPVwibG9hZGluZygpXCJcclxuPlxyXG4gIDxkaXYgY2xhc3M9XCJpbnB1dC1sYWJlbFwiPiBcclxuICAgIDxzcGFuIGNsYXNzPVwidHJ1bmNhdGVcIj5cclxuICAgICAge3tsYWJlbCgpfX0gXHJcbiAgICA8L3NwYW4+XHJcbiAgPC9kaXY+XHJcbiAgXHJcbiAgPGlucHV0ICNpbnB1dFxyXG4gICAgW25nTW9kZWxdPVwiZHRWYWx1ZVwiIFxyXG4gICAgKG5nTW9kZWxDaGFuZ2UpPVwiU2V0VmFsdWUoJGV2ZW50KVwiXHJcbiAgICBbbWFza2l0b109XCJvcHRpb25zXCJcclxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCgpIHx8IGxvYWRpbmcoKVwiXHJcbiAgLz5cclxuICBcclxuICA8aW9uLWJ1dHRvbiB0YWJpbmRleD1cIi0xXCIgY2xhc3M9XCJhYnNvbHV0ZSByaWdodC0xIGJvdHRvbS0xXCIgKGNsaWNrKT1cIlByZXNlbnQobW9kYWwsIHBvcG92ZXIsICRldmVudClcIiBjb2xvcj1cIm1lZGl1bVwiIHNpemU9XCJzbWFsbFwiIGZpbGw9XCJjbGVhclwiIHN0eWxlPVwiLS1ib3JkZXItcmFkaXVzOiAuNXJlbVwiPlxyXG4gICAgPGlvbi1pY29uIFtuYW1lXT1cInByZXNlbnRhdGlvbiA9PSAndGltZScgPyAndGltZScgOiAnY2FsZW5kYXInXCIgc2xvdD1cImljb24tb25seVwiPjwvaW9uLWljb24+XHJcbiAgPC9pb24tYnV0dG9uPlxyXG5cclxuICA8ZGl2IGNsYXNzPVwibG9hZGluZy1jb250YWluZXJcIiBbY2xhc3MubG9hZGluZ109XCJsb2FkaW5nKClcIj5cclxuICAgIDxpb24tc3Bpbm5lcj48L2lvbi1zcGlubmVyPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxzaW9uLXBvcG92ZXJcclxuICBbYW5jaG9yXT1cImlucHV0Q29udGFpbmVyXCJcclxuICAjcG9wb3ZlciBcclxuICBbY2xhc3MudGltZV09XCJwcmVzZW50YXRpb24gPT0gJ3RpbWUnXCIgXHJcbiAgW2NsYXNzLmRhdGVdPVwicHJlc2VudGF0aW9uID09ICdkYXRlJ1wiIFxyXG4gIFtjbGFzcy5kYXRldGltZV09XCJwcmVzZW50YXRpb24gPT0gJ2RhdGUtdGltZSdcIlxyXG4+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRhdGV0aW1lVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBwb3BvdmVyIH1cIj48L25nLWNvbnRhaW5lcj5cclxuPC9zaW9uLXBvcG92ZXI+XHJcblxyXG48aW9uLW1vZGFsIFxyXG4gICNtb2RhbFxyXG4gIFtjbGFzcy50aW1lXT1cInByZXNlbnRhdGlvbiA9PSAndGltZSdcIiBcclxuICBbY2xhc3MuZGF0ZV09XCJwcmVzZW50YXRpb24gPT0gJ2RhdGUnXCIgXHJcbiAgW2NsYXNzLmRhdGV0aW1lXT1cInByZXNlbnRhdGlvbiA9PSAnZGF0ZS10aW1lJ1wiXHJcbj5cclxuICA8bmctdGVtcGxhdGU+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGF0ZXRpbWVUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IG1vZGFsIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG48L2lvbi1tb2RhbD5cclxuXHJcblxyXG48bmctdGVtcGxhdGUgI2RhdGV0aW1lVGVtcGxhdGUgbGV0LXBhcmVudD5cclxuICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYmctWy0taW9uLWNvbG9yLWxpZ2h0XSByb3VuZGVkLXhsXCIgdGFiaW5kZXg9XCItMVwiPlxyXG4gICAgQGlmKHByZXNlbnRhdGlvbi5pbmNsdWRlcygnZGF0ZScpKSB7XHJcbiAgICAgIDxpb24tZGF0ZXRpbWUgdGFiaW5kZXg9XCItMVwiIFtuZ01vZGVsXT1cInZhbHVlKClcIiBjbGFzcz1cImRhdGVcIiBwcmVzZW50YXRpb249XCJkYXRlXCIgKGlvbkNoYW5nZSk9XCJDaGFuZ2VEYXRlKCRldmVudC50YXJnZXQudmFsdWUpO1wiPjwvaW9uLWRhdGV0aW1lPlxyXG4gICAgfVxyXG4gICAgQGlmKHByZXNlbnRhdGlvbiA9PSAnZGF0ZS10aW1lJykge1xyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcHktMTIgaC1bMjFyZW1dXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImgtZnVsbCBib3JkZXItci0yIGJvcmRlci1wcmltYXJ5IG1hc2steS8zMFwiPjwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIH1cclxuICAgIEBpZihwcmVzZW50YXRpb24uaW5jbHVkZXMoJ3RpbWUnKSkge1xyXG4gICAgICA8ZGl2IGNsYXNzPVwiaC1bMjFyZW1dIGZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGdhcC0yXCI+XHJcbiAgICAgICAgPGlvbi1pY29uIGNsYXNzPVwidGV4dC0yeGxcIiBuYW1lPVwiYWxhcm1cIj48L2lvbi1pY29uPlxyXG4gICAgICAgIDxpb24tZGF0ZXRpbWUgdGFiaW5kZXg9XCItMVwiIFtuZ01vZGVsXT1cInZhbHVlKClcIiBjbGFzcz1cInRpbWVcIiBwcmVzZW50YXRpb249XCJ0aW1lXCIgaG91ckN5Y2xlPVwiaDI0XCIgKGlvbkNoYW5nZSk9XCJDaGFuZ2VEYXRlKCRldmVudC50YXJnZXQudmFsdWUpXCI+PC9pb24tZGF0ZXRpbWU+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgfVxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPiJdfQ==
|
|
111
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXRzL2lucHV0LWRhdGUvaW5wdXQtZGF0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXRzL2lucHV0LWRhdGUvaW5wdXQtZGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQXVCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RixPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDL0QsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzNELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUUzRCxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFFNUIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxXQUFXLEVBQXdCLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7QUFTbkUsTUFBTSxPQUFPLGtCQUFtQixTQUFRLFdBQW1CO0lBS2hELEtBQUssQ0FBQyxLQUFpQjtRQUM5QixJQUFHLElBQUksQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7UUFBQyxDQUFDO0lBQzNHLENBQUM7SUFNRCxZQUNXLFVB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QUFsQixrQkFBa0IsOE5BRmxCLENBQUMsR0FBRyxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQUMsQ0FBQyx3UEF5RTFELFdBQVcsdUVDMUZ4Qiw2c0ZBdUVjOzs0RkRwREQsa0JBQWtCO2tCQU45QixTQUFTOytCQUNFLHlDQUF5QyxhQUd4QyxDQUFDLEdBQUcsb0JBQW9CLENBQUMsWUFBWSxvQkFBb0IsQ0FBQzsrRUFLakQsS0FBSztzQkFBeEIsU0FBUzt1QkFBQyxPQUFPO2dCQUNXLGNBQWM7c0JBQTFDLFNBQVM7dUJBQUMsZ0JBQWdCO2dCQW1FSCxRQUFRO3NCQUEvQixTQUFTO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIGlucHV0LCBJbnB1dFNpZ25hbCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgbWFza2l0b0RhdGVUaW1lT3B0aW9uc0dlbmVyYXRvciB9IGZyb20gJ0BtYXNraXRvL2tpdCc7XHJcbmltcG9ydCB7IG1hc2tpdG9EYXRlT3B0aW9uc0dlbmVyYXRvciB9IGZyb20gJ0BtYXNraXRvL2tpdCc7XHJcbmltcG9ydCB7IG1hc2tpdG9UaW1lT3B0aW9uc0dlbmVyYXRvciB9IGZyb20gJ0BtYXNraXRvL2tpdCc7XHJcbmltcG9ydCB7IE1hc2tpdG9PcHRpb25zIH0gZnJvbSAnQG1hc2tpdG8vY29yZSc7XHJcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcclxuXHJcbmltcG9ydCB7IElucHV0RGF0ZUNvbmZpZ3VyYXRpb24gfSBmcm9tICcuL2lucHV0LWRhdGUuY29uZmlndXJhdGlvbic7XHJcbmltcG9ydCB7IElucHV0UHJvdmlkZXJGYWN0b3J5IH0gZnJvbSAnLi4vaW5wdXQtcHJvdmlkZXItZmFjdG9yeSc7XHJcbmltcG9ydCB7IEN1c3RvbUlucHV0IH0gZnJvbSAnLi4vY3VzdG9tLWlucHV0JztcclxuaW1wb3J0IHsgSW9uRGF0ZXRpbWUsIElvbk1vZGFsLCBJb25Qb3BvdmVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xyXG5pbXBvcnQgeyBTSW9uUG9wb3ZlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3BvcG92ZXIvc2lvbi1wb3BvdmVyL3Npb24tcG9wb3Zlci5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdpbnB1dC1kYXRlLCBpbnB1dC1kYXRlLXRpbWUsIGlucHV0LXRpbWUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC1kYXRlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9pbnB1dC1kYXRlLmNvbXBvbmVudC5zY3NzJywgJy4uL2lucHV0cy5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbLi4uSW5wdXRQcm92aWRlckZhY3RvcnkuR2V0UHJvdmlkZXJzKElucHV0RGF0ZUNvbXBvbmVudCldLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW5wdXREYXRlQ29tcG9uZW50IGV4dGVuZHMgQ3VzdG9tSW5wdXQ8c3RyaW5nPiB7XHJcblxyXG4gIGNvbmZpZ3VyYXRpb246IElucHV0U2lnbmFsPElucHV0RGF0ZUNvbmZpZ3VyYXRpb24+ID0gaW5wdXQ8SW5wdXREYXRlQ29uZmlndXJhdGlvbj4obmV3IElucHV0RGF0ZUNvbmZpZ3VyYXRpb24oKSk7XHJcbiAgQFZpZXdDaGlsZCgnaW5wdXQnKSBpbnB1dDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcclxuICBAVmlld0NoaWxkKCdpbnB1dENvbnRhaW5lcicpIGlucHV0Q29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuICBvdmVycmlkZSBmb2N1cyhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgaWYodGhpcy5pbnB1dCAmJiBldmVudC50YXJnZXQgPT0gdGhpcy5pbnB1dENvbnRhaW5lci5uYXRpdmVFbGVtZW50KSB7IHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpOyB9ICAgICAgXHJcbiAgfVxyXG4gIFxyXG4gIG9wdGlvbnM6IE1hc2tpdG9PcHRpb25zO1xyXG4gIGR0VmFsdWU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIG1vbWVudEZvcm1hdDogbW9tZW50Lk1vbWVudEZvcm1hdFNwZWNpZmljYXRpb247XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgb3ZlcnJpZGUgZWxlbWVudFJlZjogRWxlbWVudFJlZlxyXG4gICkgeyBcclxuICAgIHN1cGVyKCk7IFxyXG4gICAgdGhpcy5wcmVzZW50YXRpb24gPSAodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpIGFzIHN0cmluZykucmVwbGFjZSgnaW5wdXQtJywgJycpO1xyXG5cclxuICAgIGlmKHRoaXMucHJlc2VudGF0aW9uID09IFwiZGF0ZS10aW1lXCIpeyBcclxuICAgICAgdGhpcy5tb21lbnRGb3JtYXQgPSAnREQvTU0vWVlZWSBISDptbSc7XHJcbiAgICAgIHRoaXMub3B0aW9ucyA9IG1hc2tpdG9EYXRlVGltZU9wdGlvbnNHZW5lcmF0b3Ioe1xyXG4gICAgICAgIGRhdGVNb2RlOiAnZGQvbW0veXl5eScsXHJcbiAgICAgICAgdGltZU1vZGU6ICdISDpNTScsXHJcbiAgICAgICAgZGF0ZVNlcGFyYXRvcjogJy8nLFxyXG4gICAgICAgIGRhdGVUaW1lU2VwYXJhdG9yOiAnICcsXHJcbiAgICAgICAgdGltZVN0ZXA6IDEsXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlXHJcbiAgICBpZih0aGlzLnByZXNlbnRhdGlvbiA9PSBcImRhdGVcIikgeyBcclxuICAgICAgdGhpcy5tb21lbnRGb3JtYXQgPSAnREQvTU0vWVlZWSc7XHJcbiAgICAgIHRoaXMub3B0aW9ucyA9IG1hc2tpdG9EYXRlT3B0aW9uc0dlbmVyYXRvcih7IG1vZGU6ICdkZC9tbS95eXl5Jywgc2VwYXJhdG9yOiAnLyd9KTtcclxuICAgIH0gZWxzZVxyXG4gICAgaWYodGhpcy5wcmVzZW50YXRpb24gPT0gXCJ0aW1lXCIpIHtcclxuICAgICAgdGhpcy5tb21lbnRGb3JtYXQgPSAnSEg6bW0nOyBcclxuICAgICAgdGhpcy5vcHRpb25zID0gbWFza2l0b1RpbWVPcHRpb25zR2VuZXJhdG9yKHtcclxuICAgICAgICBtb2RlOiAnSEg6TU0nLFxyXG4gICAgICAgIHN0ZXA6IDEsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICBwdWJsaWMgcHJlc2VudGF0aW9uOiBcImRhdGUtdGltZVwiIHwgXCJkYXRlXCIgfCBcInRpbWVcIiB8IHN0cmluZyA9IFwiZGF0ZS10aW1lXCJcclxuXHJcbiAgb3ZlcnJpZGUgU2V0VmFsdWUodmFsdWU6IHN0cmluZywgZnJvbURhdGVUaW1lOiBib29sZWFuID0gZmFsc2UpOiB2b2lkIHtcclxuICAgIGlmKGZyb21EYXRlVGltZSl7XHJcbiAgICAgIHRoaXMuZHRWYWx1ZSA9IG1vbWVudCh2YWx1ZSwgbW9tZW50LklTT184NjAxLCB0cnVlKS5mb3JtYXQodGhpcy5tb21lbnRGb3JtYXQudG9TdHJpbmcoKSk7XHJcbiAgICAgIHRoaXMudmFsdWUuc2V0KHZhbHVlKTtcclxuICAgICAgdGhpcy5ydW5WYWxpZGF0aW9uKCk7XHJcbiAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMudmFsdWUoKSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoJ1onLCAnJyk7XHJcbiAgICBpZihbJ2RhdGUtdGltZScsICdkYXRlJ10uaW5jbHVkZXModGhpcy5wcmVzZW50YXRpb24pKXtcclxuICAgICAgY29uc3QgZGF0ZSA9IG1vbWVudCh2YWx1ZSwgdGhpcy5tb21lbnRGb3JtYXQsIHRydWUpLnV0YyhmYWxzZSk7XHJcbiAgICAgIGlmKGRhdGUuaXNWYWxpZCgpIHx8ICF2YWx1ZSl7XHJcbiAgICAgICAgaWYodmFsdWUpe1xyXG4gICAgICAgICAgdGhpcy52YWx1ZS5zZXQoZGF0ZS5mb3JtYXQoKS5yZXBsYWNlKCdaJywgJycpKTtcclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgIHRoaXMudmFsdWUuc2V0KG51bGwpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnJ1blZhbGlkYXRpb24oKTtcclxuICAgICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLnZhbHVlKCkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmKHZhbHVlLmxlbmd0aCA9PSA1KXtcclxuICAgICAgdGhpcy52YWx1ZS5zZXQodmFsdWUpO1xyXG4gICAgICB0aGlzLnJ1blZhbGlkYXRpb24oKTtcclxuICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy52YWx1ZSgpKTtcclxuICAgIH1cclxuICB9XHJcbiAgQFZpZXdDaGlsZChJb25EYXRldGltZSkgZGF0ZXRpbWU6IElvbkRhdGV0aW1lO1xyXG4gIFxyXG4gIG92ZXJyaWRlIHdyaXRlVmFsdWUob2JqOiBzdHJpbmcpOiB2b2lkIHwgUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLnZhbHVlLnNldChvYmopO1xyXG4gICAgdGhpcy5kdFZhbHVlID0gbW9tZW50KHRoaXMudmFsdWUoKSwgbW9tZW50LklTT184NjAxLCB0cnVlKS5mb3JtYXQodGhpcy5tb21lbnRGb3JtYXQudG9TdHJpbmcoKSk7XHJcbiAgICB0aGlzLnJ1blZhbGlkYXRpb24oKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIFByZXNlbnQobW9kYWw6IElvbk1vZGFsLCBwb3BvdmVyOiBTSW9uUG9wb3ZlckNvbXBvbmVudCwgZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGlmICh3aW5kb3cuaW5uZXJXaWR0aCA+IHdpbmRvdy5pbm5lckhlaWdodCkge1xyXG4gICAgICByZXR1cm4gcG9wb3Zlci5wcmVzZW50KGV2ZW50KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBtb2RhbC5wcmVzZW50KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBDaGFuZ2VEYXRlKHY6IHN0cmluZyB8IHN0cmluZ1tdKSB7XHJcbiAgICB0aGlzLlNldFZhbHVlKHYudG9TdHJpbmcoKSwgdHJ1ZSk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgXHJcbiAgI2lucHV0Q29udGFpbmVyXHJcbiAgY2xhc3M9XCJpbnB1dC1jb250YWluZXJcIiBcclxuICAoY2xpY2spPVwiZm9jdXMoJGV2ZW50KVwiXHJcbiAgW2NsYXNzLnJlcXVpcmVkXT1cInJlcXVpcmVkKClcIiBcclxuICBbY2xhc3Muc3VibWl0dGVkXT1cInN1Ym1pdHRlZCgpXCIgXHJcbiAgW2NsYXNzLmludmFsaWRdPVwiaW52YWxpZFwiIFxyXG4gIFtjbGFzcy5kaXNhYmxlZF09XCJkaXNhYmxlZCgpIHx8IGxvYWRpbmcoKVwiXHJcbiAgW2NsYXNzLmxvYWRpbmddPVwibG9hZGluZygpXCJcclxuPlxyXG4gIDxkaXYgY2xhc3M9XCJpbnB1dC1sYWJlbFwiPiBcclxuICAgIDxzcGFuIGNsYXNzPVwidHJ1bmNhdGVcIj5cclxuICAgICAge3tsYWJlbCgpfX0gXHJcbiAgICA8L3NwYW4+XHJcbiAgPC9kaXY+XHJcbiAgXHJcbiAgPGlucHV0ICNpbnB1dFxyXG4gICAgW25nTW9kZWxdPVwiZHRWYWx1ZVwiIFxyXG4gICAgKG5nTW9kZWxDaGFuZ2UpPVwiU2V0VmFsdWUoJGV2ZW50KVwiXHJcbiAgICBbbWFza2l0b109XCJvcHRpb25zXCJcclxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCgpIHx8IGxvYWRpbmcoKVwiXHJcbiAgLz5cclxuICBcclxuICA8aW9uLWJ1dHRvbiB0YWJpbmRleD1cIi0xXCIgY2xhc3M9XCJhYnNvbHV0ZSByaWdodC0xIGJvdHRvbS0xXCIgKGNsaWNrKT1cIlByZXNlbnQobW9kYWwsIHBvcG92ZXIsICRldmVudClcIiBjb2xvcj1cIm1lZGl1bVwiIHNpemU9XCJzbWFsbFwiIGZpbGw9XCJjbGVhclwiIHN0eWxlPVwiLS1ib3JkZXItcmFkaXVzOiAuNXJlbVwiPlxyXG4gICAgPGlvbi1pY29uIFtuYW1lXT1cInByZXNlbnRhdGlvbiA9PSAndGltZScgPyAndGltZScgOiAnY2FsZW5kYXInXCIgc2xvdD1cImljb24tb25seVwiPjwvaW9uLWljb24+XHJcbiAgPC9pb24tYnV0dG9uPlxyXG5cclxuICA8ZGl2IGNsYXNzPVwibG9hZGluZy1jb250YWluZXJcIiBbY2xhc3MubG9hZGluZ109XCJsb2FkaW5nKClcIj5cclxuICAgIDxpb24tc3Bpbm5lcj48L2lvbi1zcGlubmVyPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxzaW9uLXBvcG92ZXJcclxuICBbYW5jaG9yXT1cImlucHV0Q29udGFpbmVyXCJcclxuICAjcG9wb3ZlciBcclxuICBbY2xhc3MudGltZV09XCJwcmVzZW50YXRpb24gPT0gJ3RpbWUnXCIgXHJcbiAgW2NsYXNzLmRhdGVdPVwicHJlc2VudGF0aW9uID09ICdkYXRlJ1wiIFxyXG4gIFtjbGFzcy5kYXRldGltZV09XCJwcmVzZW50YXRpb24gPT0gJ2RhdGUtdGltZSdcIlxyXG4+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRhdGV0aW1lVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBwb3BvdmVyIH1cIj48L25nLWNvbnRhaW5lcj5cclxuPC9zaW9uLXBvcG92ZXI+XHJcblxyXG48aW9uLW1vZGFsIFxyXG4gICNtb2RhbFxyXG4gIFtjbGFzcy50aW1lXT1cInByZXNlbnRhdGlvbiA9PSAndGltZSdcIiBcclxuICBbY2xhc3MuZGF0ZV09XCJwcmVzZW50YXRpb24gPT0gJ2RhdGUnXCIgXHJcbiAgW2NsYXNzLmRhdGV0aW1lXT1cInByZXNlbnRhdGlvbiA9PSAnZGF0ZS10aW1lJ1wiXHJcbj5cclxuICA8bmctdGVtcGxhdGU+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGF0ZXRpbWVUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IG1vZGFsIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG48L2lvbi1tb2RhbD5cclxuXHJcblxyXG48bmctdGVtcGxhdGUgI2RhdGV0aW1lVGVtcGxhdGUgbGV0LXBhcmVudD5cclxuICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYmctWy0taW9uLWNvbG9yLWxpZ2h0XSByb3VuZGVkLXhsXCIgdGFiaW5kZXg9XCItMVwiPlxyXG4gICAgQGlmKHByZXNlbnRhdGlvbi5pbmNsdWRlcygnZGF0ZScpKSB7XHJcbiAgICAgIDxpb24tZGF0ZXRpbWUgdGFiaW5kZXg9XCItMVwiIFtuZ01vZGVsXT1cInZhbHVlKClcIiBjbGFzcz1cImRhdGVcIiBwcmVzZW50YXRpb249XCJkYXRlXCIgKGlvbkNoYW5nZSk9XCJDaGFuZ2VEYXRlKCRldmVudC50YXJnZXQudmFsdWUpO1wiPjwvaW9uLWRhdGV0aW1lPlxyXG4gICAgfVxyXG4gICAgQGlmKHByZXNlbnRhdGlvbiA9PSAnZGF0ZS10aW1lJykge1xyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcHktMTIgaC1bMjFyZW1dXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImgtZnVsbCBib3JkZXItci0yIGJvcmRlci1wcmltYXJ5IG1hc2steS8zMFwiPjwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIH1cclxuICAgIEBpZihwcmVzZW50YXRpb24uaW5jbHVkZXMoJ3RpbWUnKSkge1xyXG4gICAgICA8ZGl2IGNsYXNzPVwiaC1bMjFyZW1dIGZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGdhcC0yXCI+XHJcbiAgICAgICAgPGlvbi1pY29uIGNsYXNzPVwidGV4dC0yeGxcIiBuYW1lPVwiYWxhcm1cIj48L2lvbi1pY29uPlxyXG4gICAgICAgIDxpb24tZGF0ZXRpbWUgdGFiaW5kZXg9XCItMVwiIFtuZ01vZGVsXT1cInZhbHVlKClcIiBjbGFzcz1cInRpbWVcIiBwcmVzZW50YXRpb249XCJ0aW1lXCIgaG91ckN5Y2xlPVwiaDI0XCIgKGlvbkNoYW5nZSk9XCJDaGFuZ2VEYXRlKCRldmVudC50YXJnZXQudmFsdWUpXCI+PC9pb24tZGF0ZXRpbWU+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgfVxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPiJdfQ==
|
|
@@ -7,7 +7,7 @@ import { Timeout } from '../../../services/utils.service';
|
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
8
|
import * as i1 from "@ionic/angular";
|
|
9
9
|
import * as i2 from "@angular/common";
|
|
10
|
-
export class
|
|
10
|
+
export class InputDecimalComponent extends CustomInput {
|
|
11
11
|
focus(event) {
|
|
12
12
|
if (this.input && event.target == this.inputContainer.nativeElement) {
|
|
13
13
|
this.input.nativeElement.focus();
|
|
@@ -208,12 +208,12 @@ export class NewInputDecimalComponent extends CustomInput {
|
|
|
208
208
|
return;
|
|
209
209
|
}
|
|
210
210
|
}
|
|
211
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type:
|
|
212
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type:
|
|
211
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InputDecimalComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
212
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: InputDecimalComponent, selector: "input-decimal, input-number, input-currency, input-percentage", inputs: { configuration: { classPropertyName: "configuration", publicName: "configuration", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { configuration: "configurationChange" }, host: { listeners: { "paste": "onPaste($event)" } }, providers: [...InputProviderFactory.GetProviders(InputDecimalComponent)], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }, { propertyName: "inputContainer", first: true, predicate: ["inputContainer"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div \r\n #inputContainer\r\n class=\"input-container\" \r\n (click)=\"focus($event)\"\r\n [class.required]=\"required()\" \r\n [class.submitted]=\"submitted()\" \r\n [class.invalid]=\"invalid\" \r\n [class.disabled]=\"disabled() || loading()\"\r\n [class.loading]=\"loading()\"\r\n>\r\n <div class=\"input-label\"> \r\n <span class=\"truncate\">\r\n {{label()}} \r\n </span>\r\n </div>\r\n\r\n <div class=\"decimal-input-container text-dark\">\r\n <span *ngIf=\"configuration().prefix\" slot=\"start\">{{configuration().prefix}}</span>\r\n <input #input\r\n inputmode=\"numeric\"\r\n [value]=\"valueString\" \r\n (keydown)=\"onKeyDown($event)\"\r\n [disabled]=\"disabled() || loading()\"\r\n />\r\n <span *ngIf=\"configuration().sufix\" slot=\"end\" >{{configuration().sufix}}</span>\r\n </div>\r\n <div class=\"loading-container\" [class.loading]=\"loading()\">\r\n <ion-spinner></ion-spinner>\r\n </div>\r\n</div>", styles: ["input{text-align:right;width:100%}.decimal-input-container{display:flex;width:100%;align-items:center;justify-content:center;gap:.25rem}.decimal-input-container span{flex-shrink:0}\n", "@property --input-color{syntax: \"<color>\"; initial-value: transparent; inherits: false;}.input-container{position:relative;--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));cursor:text;border-radius:.75rem;padding:.25rem .75rem;--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);transition:--input-color .2s ease-in-out,box-shadow .2s ease-in-out,opacity .2s ease-in-out,filter .2s ease-in-out;--color: var(--ion-color-dark);--input-color: var(--input-background, var(--ion-color-step-250));--shadow: 0 3px 4px -1px rgb(0 0 0 / .1);--inset-shadow: var(--input-color) 0px 1.75px 1px 0px inset;--focused-shadow: 0 0 1px 2px color-mix(in srgb, var(--ion-color-medium) 35%, transparent);box-shadow:var(--inset-shadow),var(--shadow);will-change:box-shadow,filter opacity;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;background:radial-gradient(ellipse at 0px top,hsl(from var(--input-color) h s l/.5),hsl(from var(--input-color) h s l/.4)),hsl(from var(--ion-color-light) h s l/.8)}.input-container:hover{--tw-brightness: brightness(.9);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container:focus-within,.input-container:focus,.input-container.manual-focus{box-shadow:var(--inset-shadow),var(--shadow),var(--focused-shadow);--tw-brightness: brightness(.9);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container .input-label{pointer-events:none;display:flex;height:1rem;width:100%;min-width:0px;max-width:100%;align-items:center;justify-content:flex-start;gap:.25rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.75rem;line-height:1rem;color:var(--color)}.input-container input,.input-container textarea{height:1.5rem;width:100%;border-radius:.375rem;background-color:transparent;font-size:.875rem;line-height:1.25rem;color:var(--ion-color-dark);outline:2px solid transparent;outline-offset:2px}.input-container.loading{cursor:wait!important}.input-container.required .input-label:after{content:\"*\";color:var(--ion-color-danger);vertical-align:bottom}.input-container.submitted.invalid{--input-color: color-mix(in srgb, var(--ion-color-danger) 50%, transparent)}.input-container.disabled{cursor:not-allowed;opacity:.5;--tw-brightness: brightness(1);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container.disabled *{pointer-events:none}.loading-container{position:absolute;pointer-events:none;width:100%;height:100%;top:0;left:0;display:flex;justify-content:end;align-items:center;padding-right:.5rem;will-change:opacity;transition:opacity .2s ease-in-out;overflow:hidden;opacity:0;z-index:10}.loading-container ion-spinner{will-change:transform;transition:transform .2s ease-in-out;transform:translateY(-100%)}.loading-container.loading{opacity:1}.loading-container.loading ion-spinner{transform:translateY(0)}ion-modal::part(content){border-radius:.75rem;border:1px solid var(--ion-color-step-250)}\n"], dependencies: [{ kind: "component", type: i1.IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
|
|
213
213
|
}
|
|
214
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type:
|
|
214
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InputDecimalComponent, decorators: [{
|
|
215
215
|
type: Component,
|
|
216
|
-
args: [{ selector: 'input-decimal, input-number, input-currency, input-percentage', providers: [...InputProviderFactory.GetProviders(
|
|
216
|
+
args: [{ selector: 'input-decimal, input-number, input-currency, input-percentage', providers: [...InputProviderFactory.GetProviders(InputDecimalComponent)], template: "<div \r\n #inputContainer\r\n class=\"input-container\" \r\n (click)=\"focus($event)\"\r\n [class.required]=\"required()\" \r\n [class.submitted]=\"submitted()\" \r\n [class.invalid]=\"invalid\" \r\n [class.disabled]=\"disabled() || loading()\"\r\n [class.loading]=\"loading()\"\r\n>\r\n <div class=\"input-label\"> \r\n <span class=\"truncate\">\r\n {{label()}} \r\n </span>\r\n </div>\r\n\r\n <div class=\"decimal-input-container text-dark\">\r\n <span *ngIf=\"configuration().prefix\" slot=\"start\">{{configuration().prefix}}</span>\r\n <input #input\r\n inputmode=\"numeric\"\r\n [value]=\"valueString\" \r\n (keydown)=\"onKeyDown($event)\"\r\n [disabled]=\"disabled() || loading()\"\r\n />\r\n <span *ngIf=\"configuration().sufix\" slot=\"end\" >{{configuration().sufix}}</span>\r\n </div>\r\n <div class=\"loading-container\" [class.loading]=\"loading()\">\r\n <ion-spinner></ion-spinner>\r\n </div>\r\n</div>", styles: ["input{text-align:right;width:100%}.decimal-input-container{display:flex;width:100%;align-items:center;justify-content:center;gap:.25rem}.decimal-input-container span{flex-shrink:0}\n", "@property --input-color{syntax: \"<color>\"; initial-value: transparent; inherits: false;}.input-container{position:relative;--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));cursor:text;border-radius:.75rem;padding:.25rem .75rem;--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);transition:--input-color .2s ease-in-out,box-shadow .2s ease-in-out,opacity .2s ease-in-out,filter .2s ease-in-out;--color: var(--ion-color-dark);--input-color: var(--input-background, var(--ion-color-step-250));--shadow: 0 3px 4px -1px rgb(0 0 0 / .1);--inset-shadow: var(--input-color) 0px 1.75px 1px 0px inset;--focused-shadow: 0 0 1px 2px color-mix(in srgb, var(--ion-color-medium) 35%, transparent);box-shadow:var(--inset-shadow),var(--shadow);will-change:box-shadow,filter opacity;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;background:radial-gradient(ellipse at 0px top,hsl(from var(--input-color) h s l/.5),hsl(from var(--input-color) h s l/.4)),hsl(from var(--ion-color-light) h s l/.8)}.input-container:hover{--tw-brightness: brightness(.9);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container:focus-within,.input-container:focus,.input-container.manual-focus{box-shadow:var(--inset-shadow),var(--shadow),var(--focused-shadow);--tw-brightness: brightness(.9);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container .input-label{pointer-events:none;display:flex;height:1rem;width:100%;min-width:0px;max-width:100%;align-items:center;justify-content:flex-start;gap:.25rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.75rem;line-height:1rem;color:var(--color)}.input-container input,.input-container textarea{height:1.5rem;width:100%;border-radius:.375rem;background-color:transparent;font-size:.875rem;line-height:1.25rem;color:var(--ion-color-dark);outline:2px solid transparent;outline-offset:2px}.input-container.loading{cursor:wait!important}.input-container.required .input-label:after{content:\"*\";color:var(--ion-color-danger);vertical-align:bottom}.input-container.submitted.invalid{--input-color: color-mix(in srgb, var(--ion-color-danger) 50%, transparent)}.input-container.disabled{cursor:not-allowed;opacity:.5;--tw-brightness: brightness(1);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container.disabled *{pointer-events:none}.loading-container{position:absolute;pointer-events:none;width:100%;height:100%;top:0;left:0;display:flex;justify-content:end;align-items:center;padding-right:.5rem;will-change:opacity;transition:opacity .2s ease-in-out;overflow:hidden;opacity:0;z-index:10}.loading-container ion-spinner{will-change:transform;transition:transform .2s ease-in-out;transform:translateY(-100%)}.loading-container.loading{opacity:1}.loading-container.loading ion-spinner{transform:translateY(0)}ion-modal::part(content){border-radius:.75rem;border:1px solid var(--ion-color-step-250)}\n"] }]
|
|
217
217
|
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { input: [{
|
|
218
218
|
type: ViewChild,
|
|
219
219
|
args: ['input']
|
|
@@ -234,4 +234,4 @@ const Sanitize = ((v) => {
|
|
|
234
234
|
const lstNumbers = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"];
|
|
235
235
|
const lstIgnoreNotPrevent = ["Tab", "CapsLock", "Shift", "Control", "Alt", "ArrowRight", "ArrowUp", "ArrowDown", "ArrowLeft"];
|
|
236
236
|
const lstEspecialCases = ["Backspace", "Delete"];
|
|
237
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZGVjaW1hbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXRzL2lucHV0LWRlY2ltYWwvaW5wdXQtZGVjaW1hbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXRzL2lucHV0LWRlY2ltYWwvaW5wdXQtZGVjaW1hbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBdUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUseUJBQXlCLEVBQUUsd0JBQXdCLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM5SixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7O0FBUTFELE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxXQUFtQjtJQVF0RCxLQUFLLENBQUMsS0FBaUI7UUFDOUIsSUFBRyxJQUFJLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNuRSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxJQUFJ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bzlCQTZCTTs7NEZEaEJPLHdCQUF3QjtrQkFOcEMsU0FBUzsrQkFDRSwrREFBK0QsYUFHOUQsQ0FBQyxHQUFHLG9CQUFvQixDQUFDLFlBQVksMEJBQTBCLENBQUM7K0VBUXZELEtBQUs7c0JBQXhCLFNBQVM7dUJBQUMsT0FBTztnQkFDVyxjQUFjO3NCQUExQyxTQUFTO3VCQUFDLGdCQUFnQjtnQkFzQzNCLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7O0FBZ0xuQyxNQUFNLGVBQWUsR0FBRyxvQkFBb0IsQ0FBQTtBQUU1QyxNQUFNLGdCQUFnQixHQUFZLEdBQUcsQ0FBQztBQUN0QyxNQUFNLGlCQUFpQixHQUFXLEdBQUcsQ0FBQztBQUV0QyxNQUFNLFFBQVEsR0FBYSxDQUFDLENBQUMsQ0FBUyxFQUFVLEVBQUU7SUFDaEQsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsQ0FBQztTQUNqQyxPQUFPLENBQUksZ0JBQWdCLEVBQUcsRUFBRSxDQUFDLENBQUE7QUFDcEMsQ0FBQyxDQUFDLENBQUM7QUFFWCxNQUFNLFVBQVUsR0FBWSxDQUFFLEdBQUcsRUFBQyxHQUFHLEVBQUMsR0FBRyxFQUFDLEdBQUcsRUFBQyxHQUFHLEVBQUMsR0FBRyxFQUFDLEdBQUcsRUFBQyxHQUFHLEVBQUMsR0FBRyxFQUFDLEdBQUcsQ0FBRSxDQUFDO0FBQ3hFLE1BQU0sbUJBQW1CLEdBQUcsQ0FBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBQy9ILE1BQU0sZ0JBQWdCLEdBQU0sQ0FBRSxXQUFXLEVBQUUsUUFBUSxDQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIG1vZGVsLCBNb2RlbFNpZ25hbCwgU2lnbmFsLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgZm9ybWF0TnVtYmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgSW5wdXRDdXJyZW5jeUNvbmZpZ3VyYXRpb24sIElucHV0RGVjaW1hbENvbmZpZ3VyYXRpb24sIElucHV0TnVtYmVyQ29uZmlndXJhdGlvbiwgSW5wdXRQZXJjZW50YWdlQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vaW5wdXQtZGVjaW1hbC5jb25maWd1cmF0aW9uJztcclxuaW1wb3J0IHsgSW5wdXRQcm92aWRlckZhY3RvcnkgfSBmcm9tICcuLi9pbnB1dC1wcm92aWRlci1mYWN0b3J5JztcclxuaW1wb3J0IHsgQ3VzdG9tSW5wdXQgfSBmcm9tICcuLi9jdXN0b20taW5wdXQnO1xyXG5pbXBvcnQgeyBUaW1lb3V0IH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdXRpbHMuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2lucHV0LWRlY2ltYWwsIGlucHV0LW51bWJlciwgaW5wdXQtY3VycmVuY3ksIGlucHV0LXBlcmNlbnRhZ2UnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC1kZWNpbWFsLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9pbnB1dC1kZWNpbWFsLmNvbXBvbmVudC5zY3NzJywgJy4uL2lucHV0cy5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbLi4uSW5wdXRQcm92aWRlckZhY3RvcnkuR2V0UHJvdmlkZXJzKE5ld0lucHV0RGVjaW1hbENvbXBvbmVudCldLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmV3SW5wdXREZWNpbWFsQ29tcG9uZW50IGV4dGVuZHMgQ3VzdG9tSW5wdXQ8bnVtYmVyPiB7XHJcblxyXG4gIGNvbmZpZ3VyYXRpb246IE1vZGVsU2lnbmFsPElucHV0RGVjaW1hbENvbmZpZ3VyYXRpb24+ID0gbW9kZWw8SW5wdXREZWNpbWFsQ29uZmlndXJhdGlvbj4oKTtcclxuICBkaWdpdHNJbmZvOiBTaWduYWw8c3RyaW5nPiA9IGNvbXB1dGVkKCgpID0+IGAxLiR7dGhpcy5jb25maWd1cmF0aW9uKCkucHJlY2lzaW9ufS0ke3RoaXMuY29uZmlndXJhdGlvbigpLnByZWNpc2lvbn1gKTtcclxuICBkaXZpZGVyOiBTaWduYWw8bnVtYmVyPiA9IGNvbXB1dGVkKCgpID0+IE1hdGgucG93KDEwLCB0aGlzLmNvbmZpZ3VyYXRpb24oKS5wcmVjaXNpb24pKTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnaW5wdXQnKSBpbnB1dDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcclxuICBAVmlld0NoaWxkKCdpbnB1dENvbnRhaW5lcicpIGlucHV0Q29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuICBvdmVycmlkZSBmb2N1cyhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgaWYodGhpcy5pbnB1dCAmJiBldmVudC50YXJnZXQgPT0gdGhpcy5pbnB1dENvbnRhaW5lci5uYXRpdmVFbGVtZW50KSB7IFxyXG4gICAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTsgXHJcbiAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZSh0aGlzLnZhbHVlU3RyaW5nLmxlbmd0aCwgdGhpcy52YWx1ZVN0cmluZy5sZW5ndGgpOyBcclxuICAgIH0gICAgICBcclxuICB9XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBvdmVycmlkZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmXHJcbiAgKSB7IFxyXG4gICAgc3VwZXIoKTsgXHJcbiAgICB0aGlzLnZhbHVlLnNldCgwKTtcclxuICAgIGNvbnN0IHNlbGVjdG9yOiBzdHJpbmcgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkuc3BsaXQoJy0nKS5hdCgtMSk7XHJcbiAgICBpZihzZWxlY3RvciA9PSBcIm51bWJlclwiICAgICAmJiAhdGhpcy5jb25maWd1cmF0aW9uKCkpeyB0aGlzLmNvbmZpZ3VyYXRpb24uc2V0KG5ldyBJbnB1dE51bWJlckNvbmZpZ3VyYXRpb24oKSk7ICAgICB9IGVsc2VcclxuICAgIGlmKHNlbGVjdG9yID09IFwiZGVjaW1hbFwiICAgICYmICF0aGlzLmNvbmZpZ3VyYXRpb24oKSl7IHRoaXMuY29uZmlndXJhdGlvbi5zZXQobmV3IElucHV0RGVjaW1hbENvbmZpZ3VyYXRpb24oKSk7ICAgIH0gZWxzZVxyXG4gICAgaWYoc2VsZWN0b3IgPT0gXCJjdXJyZW5jeVwiICAgJiYgIXRoaXMuY29uZmlndXJhdGlvbigpKXsgdGhpcy5jb25maWd1cmF0aW9uLnNldChuZXcgSW5wdXRDdXJyZW5jeUNvbmZpZ3VyYXRpb24oKSk7ICAgfSBlbHNlXHJcbiAgICBpZihzZWxlY3RvciA9PSBcInBlcmNlbnRhZ2VcIiAmJiAhdGhpcy5jb25maWd1cmF0aW9uKCkpeyB0aGlzLmNvbmZpZ3VyYXRpb24uc2V0KG5ldyBJbnB1dFBlcmNlbnRhZ2VDb25maWd1cmF0aW9uKCkpOyB9XHJcbiAgICB0aGlzLlNldFZhbHVlU3RyaW5nKCk7IFxyXG4gIH1cclxuICBcclxuICBvdmVycmlkZSB3cml0ZVZhbHVlKG9iajogbnVtYmVyKTogdm9pZCB8IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy52YWx1ZS5zZXQob2JqKTtcclxuICAgIHRoaXMuU2V0VmFsdWVTdHJpbmcoKTtcclxuICAgIHRoaXMucnVuVmFsaWRhdGlvbigpO1xyXG4gIH1cclxuICBvdmVycmlkZSBTZXRWYWx1ZShvYmo6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy52YWx1ZS5zZXQob2JqKTtcclxuICAgIHRoaXMuU2V0VmFsdWVTdHJpbmcoKTtcclxuICAgIHRoaXMucnVuVmFsaWRhdGlvbigpO1xyXG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2Uob2JqKTsgXHJcbiAgfVxyXG4gIFNldFZhbHVlU3RyaW5nKCk6IHZvaWQge1xyXG4gICAgdGhpcy52YWx1ZVN0cmluZyA9IGZvcm1hdE51bWJlcih0aGlzLnZhbHVlKCksIFwicHQtQlJcIiwgdGhpcy5kaWdpdHNJbmZvKCkpO1xyXG4gIH1cclxuICBcclxuICB2YWx1ZVN0cmluZzogc3RyaW5nO1xyXG5cclxuICBASG9zdExpc3RlbmVyKCdwYXN0ZScsIFsnJGV2ZW50J10pXHJcbiAgb25QYXN0ZShldmVudDogQ2xpcGJvYXJkRXZlbnQpOiB2b2lkIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBcclxuICAgIGxldCBjbGlwYm9hcmREYXRhID0gZXZlbnQuY2xpcGJvYXJkRGF0YSB8fCB3aW5kb3dbJ2NsaXBib2FyZERhdGEnXTtcclxuICAgIGxldCBwYXN0ZWRUZXh0ICAgID0gY2xpcGJvYXJkRGF0YS5nZXREYXRhKCd0ZXh0Jyk7XHJcblxyXG4gICAgY29uc3QgcyA9IHBhc3RlZFRleHQucmVwbGFjZUFsbCgnLicsICcnKS5yZXBsYWNlQWxsKCcsJywgJy4nKTtcclxuICAgIGNvbnN0IG4gPSBOdW1iZXIocyk7XHJcblxyXG4gICAgaWYoTnVtYmVyKHMpICYmIGlzRmluaXRlKG4pKXsgXHJcbiAgICAgIHRoaXMuU2V0VmFsdWUobik7XHJcbiAgICB9XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgb25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogUHJvbWlzZTx2b2lkPntcclxuICAgIGNvbnN0IHZhbHVlOiBzdHJpbmcgPSB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWU7XHJcblxyXG4gICAgY29uc3Qgc2VsZWN0aW9uU3RhcnQ6IG51bWJlciA9IHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydDtcclxuICAgIGNvbnN0IHNlbGVjdGlvbkVuZCAgOiBudW1iZXIgPSB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uRW5kO1xyXG5cclxuICAgIGNvbnN0IGF0TGVmdCAgPSB2YWx1ZS5zbGljZSgwLCBzZWxlY3Rpb25TdGFydCk7IFxyXG4gICAgY29uc3QgYXRSaWdodCA9IHZhbHVlLnNsaWNlKHNlbGVjdGlvbkVuZCwgdmFsdWUubGVuZ3RoKTsgXHJcbiAgICBpZihbXCItXCJdLmluY2x1ZGVzKGV2ZW50LmtleSkpeyBcclxuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuSGFuZGxlTmVnYXRpdmUoZXZlbnQsIHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQsIHZhbHVlLCBhdExlZnQsIGF0UmlnaHQpO1xyXG4gICAgfWVsc2VcclxuICAgIGlmKGxzdE51bWJlcnMuaW5jbHVkZXMoZXZlbnQua2V5KSl7IFxyXG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5IYW5kbGVOdW1iZXIoZXZlbnQsIHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQsIHZhbHVlLCBhdExlZnQsIGF0UmlnaHQpOyBcclxuICAgIH1lbHNlXHJcbiAgICBpZihsc3RFc3BlY2lhbENhc2VzLmluY2x1ZGVzKGV2ZW50LmtleSkpeyBcclxuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuSGFuZGxlRXNwZWNpYWwoZXZlbnQsIHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQsIHZhbHVlLCBhdExlZnQsIGF0UmlnaHQpOyBcclxuICAgIH1lbHNlXHJcbiAgICBpZihbXCJBXCIsIFwiYVwiXS5pbmNsdWRlcyhldmVudC5rZXkpICYmIGV2ZW50LmN0cmxLZXkpeyBcclxuICAgICAgcmV0dXJuOyBcclxuICAgIH1lbHNlXHJcbiAgICBpZihbXCJDXCIsIFwiY1wiXS5pbmNsdWRlcyhldmVudC5rZXkpICYmIGV2ZW50LmN0cmxLZXkpeyBcclxuICAgICAgcmV0dXJuOyBcclxuICAgIH1lbHNlXHJcbiAgICBpZihbXCJWXCIsIFwidlwiXS5pbmNsdWRlcyhldmVudC5rZXkpICYmIGV2ZW50LmN0cmxLZXkpeyBcclxuICAgICAgcmV0dXJuOyBcclxuICAgIH1lbHNlXHJcbiAgICBpZihsc3RJZ25vcmVOb3RQcmV2ZW50LmluY2x1ZGVzKGV2ZW50LmtleSkpeyBcclxuICAgICAgcmV0dXJuOyBcclxuICAgIH1lbHNle1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgSGFuZGxlTmVnYXRpdmUoZXZlbnQ6IEtleWJvYXJkRXZlbnQsIHNlbGVjdGlvblN0YXJ0OiBudW1iZXIsIHNlbGVjdGlvbkVuZDogbnVtYmVyLCB2YWx1ZTogc3RyaW5nLCBhdExlZnQ6IHN0cmluZywgYXRSaWdodDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPntcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblxyXG4gICAgbGV0IGZvY3VzRW5kID0gKHNlbGVjdGlvblN0YXJ0ID09IDAgJiYgc2VsZWN0aW9uRW5kID09IHRoaXMudmFsdWVTdHJpbmcubGVuZ3RoKTtcclxuICAgIC8qKiBbIFJlbW92ZSBkZWNpbWFsU2VwYXJhdG9yICYgdGhvdXNhbmRTZXBhcmF0b3IgXSAqL1xyXG4gICAgbGV0IGY7XHJcbiAgICBpZighYXRMZWZ0LmluY2x1ZGVzKCctJykpe1xyXG4gICAgICBmID0gZXZlbnQua2V5ICsgYXRMZWZ0ICsgYXRSaWdodDtcclxuICAgIH1lbHNle1xyXG4gICAgICBmID0gKGF0TGVmdCArIGF0UmlnaHQpLnJlcGxhY2UoJy0nLCAnJylcclxuICAgIH1cclxuXHJcbiAgICBpZihmID09IFwiLVwiKXsgXHJcbiAgICAgIGlmKHZhbHVlLmluY2x1ZGVzKCctJykpe1xyXG4gICAgICAgIGYgPSB2YWx1ZS5yZXBsYWNlKCctJywgJycpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2V7XHJcbiAgICAgICAgZiA9IGAtJHt2YWx1ZX1gO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgQ3VycmVudFZhbHVlOiBudW1iZXIgPSB0aGlzLlNhbml0aXplVmFsdWUoZik7XHJcbiAgICBpZihDdXJyZW50VmFsdWUgPT0gdGhpcy52YWx1ZSgpKXsgcmV0dXJuOyB9XHJcbiAgICBcclxuICAgIC8vWyBIYW5kbGUgU2V0IEN1cnNvciBQb3NpdGlvbl1cclxuICAgIHRoaXMuU2V0VmFsdWUoQ3VycmVudFZhbHVlKTtcclxuICAgIGNvbnN0IG5ld1BvcyA9IHNlbGVjdGlvblN0YXJ0ICsgMSArIHRoaXMudmFsdWVTdHJpbmcuc3BsaXQoJy4nKS5sZW5ndGggLSB2YWx1ZS5zcGxpdCgnLicpLmxlbmd0aDtcclxuICAgIFxyXG4gICAgLy9Ib3JyaXZlbCwgbWFzIG5hbyB0ZW0gdW1hIGFsdGVybmF0aXZhIGJvYSwgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNTExMDg4L3VzZS1qYXZhc2NyaXB0LXRvLXBsYWNlLWN1cnNvci1hdC1lbmQtb2YtdGV4dC1pbi10ZXh0LWlucHV0LWVsZW1lbnRcclxuICAgIGF3YWl0IFRpbWVvdXQoMCk7XHJcbiAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2UobmV3UG9zLCBuZXdQb3MpOyBcclxuICAgIGlmKGZvY3VzRW5kKXtcclxuICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKHRoaXMudmFsdWVTdHJpbmcubGVuZ3RoLCB0aGlzLnZhbHVlU3RyaW5nLmxlbmd0aCk7IFxyXG4gICAgfVxyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgSGFuZGxlTnVtYmVyKGV2ZW50OiBLZXlib2FyZEV2ZW50LCBzZWxlY3Rpb25TdGFydDogbnVtYmVyLCBzZWxlY3Rpb25FbmQ6IG51bWJlciwgdmFsdWU6IHN0cmluZywgYXRMZWZ0OiBzdHJpbmcsIGF0UmlnaHQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIFxyXG4gICAgbGV0IGZvY3VzRW5kID0gKHNlbGVjdGlvblN0YXJ0ID09IDAgJiYgc2VsZWN0aW9uRW5kID09IHRoaXMudmFsdWVTdHJpbmcubGVuZ3RoKTtcclxuICAgIC8qKiBbIFJlbW92ZSBkZWNpbWFsU2VwYXJhdG9yICYgdGhvdXNhbmRTZXBhcmF0b3IgXSAqL1xyXG4gICAgY29uc3QgZiA9IGF0TGVmdCArIGV2ZW50LmtleSArIGF0UmlnaHQ7XHJcbiAgICBjb25zdCBDdXJyZW50VmFsdWU6IG51bWJlciA9IHRoaXMuU2FuaXRpemVWYWx1ZShmKTtcclxuICAgIGlmKEN1cnJlbnRWYWx1ZSA9PSB0aGlzLnZhbHVlKCkpeyByZXR1cm47IH1cclxuICAgIGlmKEN1cnJlbnRWYWx1ZSA+IGRlY2ltYWxNYXhWYWx1ZSl7IHJldHVybjsgfVxyXG4gICAgXHJcbiAgICAvL1sgSGFuZGxlIFNldCBDdXJzb3IgUG9zaXRpb25dXHJcbiAgICB0aGlzLlNldFZhbHVlKEN1cnJlbnRWYWx1ZSk7XHJcbiAgICBjb25zdCBuZXdQb3NpdGlvbiA9IHNlbGVjdGlvblN0YXJ0ICsgMSArIHRoaXMudmFsdWVTdHJpbmcuc3BsaXQoJy4nKS5sZW5ndGggLSB2YWx1ZS5zcGxpdCgnLicpLmxlbmd0aDtcclxuICAgIFxyXG4gICAgLy9Ib3JyaXZlbCwgbWFzIG5hbyBzZW0gdW1hIGFsdGVybmF0aXZhIGJvYSwgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNTExMDg4L3VzZS1qYXZhc2NyaXB0LXRvLXBsYWNlLWN1cnNvci1hdC1lbmQtb2YtdGV4dC1pbi10ZXh0LWlucHV0LWVsZW1lbnRcclxuICAgIGF3YWl0IFRpbWVvdXQoMCk7XHJcbiAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2UobmV3UG9zaXRpb24sIG5ld1Bvc2l0aW9uKTsgXHJcbiAgICBpZihmb2N1c0VuZCl7XHJcbiAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZSh0aGlzLnZhbHVlU3RyaW5nLmxlbmd0aCwgdGhpcy52YWx1ZVN0cmluZy5sZW5ndGgpOyBcclxuICAgIH1cclxuICAgIHJldHVybjtcclxuICB9XHJcblxyXG4gIFNhbml0aXplVmFsdWUoZjogc3RyaW5nKTogbnVtYmVye1xyXG4gICAgdmFyIEN1cnJlbnRWYWx1ZTogbnVtYmVyID0gTnVtYmVyKFNhbml0aXplKGYpKSAvIHRoaXMuZGl2aWRlcigpO1xyXG4gICAgaWYoQ3VycmVudFZhbHVlID49IGRlY2ltYWxNYXhWYWx1ZSl7IFxyXG4gICAgICByZXR1cm4gdGhpcy52YWx1ZSgpOyBcclxuICAgIH1cclxuICAgIHJldHVybiBDdXJyZW50VmFsdWU7XHJcbiAgfVxyXG5cclxuICBhc3luYyBIYW5kbGVFc3BlY2lhbChldmVudDogS2V5Ym9hcmRFdmVudCwgc2VsZWN0aW9uU3RhcnQ6IG51bWJlciwgc2VsZWN0aW9uRW5kOiBudW1iZXIsIHZhbHVlOiBzdHJpbmcsIGF0TGVmdDogc3RyaW5nLCBhdFJpZ2h0OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBpZihzZWxlY3Rpb25TdGFydCA9PSBzZWxlY3Rpb25FbmQpe1xyXG4gICAgICBpZihldmVudC5rZXkgPT0gXCJCYWNrc3BhY2VcIil7XHJcbiAgICAgICAgaWYoc2VsZWN0aW9uU3RhcnQgPT0gIHNlbGVjdGlvbkVuZCAmJiBzZWxlY3Rpb25TdGFydCA9PSAwKXsgXHJcbiAgICAgICAgICByZXR1cm47IFxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgcHJldmlvdXNDaGFyOiBzdHJpbmcgPSBhdExlZnQuYXQoLTEpO1xyXG4gICAgICAgIGNvbnN0IGlzTnVtYmVyID0gbHN0TnVtYmVycy5pbmNsdWRlcyhwcmV2aW91c0NoYXIpO1xyXG4gICAgICAgIGNvbnN0IGYgPSBhdExlZnQuc2xpY2UoMCwgYXRMZWZ0Lmxlbmd0aCAtIChpc051bWJlciA/IDEgOiAyKSkgKyBhdFJpZ2h0O1xyXG4gICAgICAgIGNvbnN0IEN1cnJlbnRWYWx1ZSA9IHRoaXMuU2FuaXRpemVWYWx1ZShmKTtcclxuICAgICAgICBcclxuICAgICAgICAvL1sgSGFuZGxlIFNldCBDdXJzb3IgUG9zaXRpb25dXHJcbiAgICAgICAgdGhpcy5TZXRWYWx1ZShDdXJyZW50VmFsdWUpO1xyXG4gICAgICAgIGF3YWl0IFRpbWVvdXQoMCk7XHJcbiAgICAgICAgbGV0IHBvcyA9IGlzTnVtYmVyID8gc2VsZWN0aW9uU3RhcnQgLSAxIDogc2VsZWN0aW9uU3RhcnQgLSAyO1xyXG5cclxuICAgICAgICBpZiAoc2VsZWN0aW9uRW5kID09IHRoaXMudmFsdWVTdHJpbmcubGVuZ3RoKSB7XHJcbiAgICAgICAgICBwb3MrKztcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKHBvcywgcG9zKTsgXHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9ZWxzZVxyXG4gICAgICBpZihldmVudC5rZXkgPT0gXCJEZWxldGVcIil7XHJcbiAgICAgICAgY29uc3QgbmV4dENoYXI6IHN0cmluZyA9ICBhdFJpZ2h0WzBdO1xyXG4gICAgICAgIGNvbnN0IGlzTnVtYmVyID0gbHN0TnVtYmVycy5pbmNsdWRlcyhuZXh0Q2hhcik7XHJcbiAgICAgICAgY29uc3QgZiA9IGF0TGVmdCArIGF0UmlnaHQuc2xpY2UoaXNOdW1iZXIgPyAxIDogMik7XHJcbiAgICAgICAgY29uc3QgQ3VycmVudFZhbHVlID0gIHRoaXMuU2FuaXRpemVWYWx1ZShmKTtcclxuICAgICAgICBcclxuICAgICAgICAvL1sgSGFuZGxlIFNldCBDdXJzb3IgUG9zaXRpb25dXHJcbiAgICAgICAgdGhpcy5TZXRWYWx1ZShDdXJyZW50VmFsdWUpO1xyXG4gICAgICAgIHZhciBwb3M6IG51bWJlciA9IHNlbGVjdGlvblN0YXJ0O1xyXG4gICAgICAgIGlmKHBvcyA8PSAtMSl7IHBvcyA9IDA7IH1cclxuICAgICAgICBpZihDdXJyZW50VmFsdWUgPCAxKXtcclxuICAgICAgICAgIHBvcysrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZighaXNOdW1iZXIpe1xyXG4gICAgICAgICAgcG9zKys7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBhd2FpdCBUaW1lb3V0KDApO1xyXG4gICAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZShwb3MsIHBvcyk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9ZWxzZXtcclxuICAgICAgY29uc3QgZiA9IGF0TGVmdCArIGF0UmlnaHQ7XHJcbiAgICAgIGNvbnN0IEN1cnJlbnRWYWx1ZSA9IHRoaXMuU2FuaXRpemVWYWx1ZShmKTtcclxuICAgICAgdGhpcy5TZXRWYWx1ZShDdXJyZW50VmFsdWUpO1xyXG4gICAgICBcclxuICAgICAgYXdhaXQgVGltZW91dCgwKTtcclxuICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKHRoaXMudmFsdWVTdHJpbmcubGVuZ3RoLCB0aGlzLnZhbHVlU3RyaW5nLmxlbmd0aCk7IFxyXG5cclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuXHJcbmNvbnN0IGRlY2ltYWxNYXhWYWx1ZSA9IDlfMDAwXzAwMF8wMDBfMDAwLjAwXHJcblxyXG5jb25zdCBkZWNpbWFsU2VwYXJhdG9yIDogc3RyaW5nID0gXCIsXCI7XHJcbmNvbnN0IHRob3VzYW5kU2VwYXJhdG9yOiBzdHJpbmcgPSBcIi5cIjtcclxuXHJcbmNvbnN0IFNhbml0aXplOiBGdW5jdGlvbiA9ICgodjogc3RyaW5nKTogc3RyaW5nID0+IHsgXHJcbiAgcmV0dXJuIHYucmVwbGFjZUFsbCh0aG91c2FuZFNlcGFyYXRvciwgJycpXHJcbiAgICAgICAgICAucmVwbGFjZSAgIChkZWNpbWFsU2VwYXJhdG9yICwgJycpIFxyXG4gICAgICAgIH0pO1xyXG5cclxuY29uc3QgbHN0TnVtYmVycyAgICAgICAgICA9IFsgXCIwXCIsXCIxXCIsXCIyXCIsXCIzXCIsXCI0XCIsXCI1XCIsXCI2XCIsXCI3XCIsXCI4XCIsXCI5XCIgXTtcclxuY29uc3QgbHN0SWdub3JlTm90UHJldmVudCA9IFsgXCJUYWJcIiwgXCJDYXBzTG9ja1wiLCBcIlNoaWZ0XCIsIFwiQ29udHJvbFwiLCBcIkFsdFwiLCBcIkFycm93UmlnaHRcIiwgXCJBcnJvd1VwXCIsIFwiQXJyb3dEb3duXCIsIFwiQXJyb3dMZWZ0XCJdO1xyXG5jb25zdCBsc3RFc3BlY2lhbENhc2VzICAgID0gWyBcIkJhY2tzcGFjZVwiLCBcIkRlbGV0ZVwiIF07IiwiPGRpdiBcclxuICAjaW5wdXRDb250YWluZXJcclxuICBjbGFzcz1cImlucHV0LWNvbnRhaW5lclwiIFxyXG4gIChjbGljayk9XCJmb2N1cygkZXZlbnQpXCJcclxuICBbY2xhc3MucmVxdWlyZWRdPVwicmVxdWlyZWQoKVwiIFxyXG4gIFtjbGFzcy5zdWJtaXR0ZWRdPVwic3VibWl0dGVkKClcIiBcclxuICBbY2xhc3MuaW52YWxpZF09XCJpbnZhbGlkXCIgXHJcbiAgW2NsYXNzLmRpc2FibGVkXT1cImRpc2FibGVkKCkgfHwgbG9hZGluZygpXCJcclxuICBbY2xhc3MubG9hZGluZ109XCJsb2FkaW5nKClcIlxyXG4+XHJcbiAgPGRpdiBjbGFzcz1cImlucHV0LWxhYmVsXCI+IFxyXG4gICAgPHNwYW4gY2xhc3M9XCJ0cnVuY2F0ZVwiPlxyXG4gICAgICB7e2xhYmVsKCl9fSBcclxuICAgIDwvc3Bhbj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImRlY2ltYWwtaW5wdXQtY29udGFpbmVyIHRleHQtZGFya1wiPlxyXG4gICAgPHNwYW4gKm5nSWY9XCJjb25maWd1cmF0aW9uKCkucHJlZml4XCIgc2xvdD1cInN0YXJ0XCI+e3tjb25maWd1cmF0aW9uKCkucHJlZml4fX08L3NwYW4+XHJcbiAgICA8aW5wdXQgI2lucHV0XHJcbiAgICAgIGlucHV0bW9kZT1cIm51bWVyaWNcIlxyXG4gICAgICBbdmFsdWVdPVwidmFsdWVTdHJpbmdcIiBcclxuICAgICAgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudClcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQoKSB8fCBsb2FkaW5nKClcIlxyXG4gICAgLz5cclxuICAgIDxzcGFuICpuZ0lmPVwiY29uZmlndXJhdGlvbigpLnN1Zml4XCIgIHNsb3Q9XCJlbmRcIiAgPnt7Y29uZmlndXJhdGlvbigpLnN1Zml4fX08L3NwYW4+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cImxvYWRpbmctY29udGFpbmVyXCIgW2NsYXNzLmxvYWRpbmddPVwibG9hZGluZygpXCI+XHJcbiAgICA8aW9uLXNwaW5uZXI+PC9pb24tc3Bpbm5lcj5cclxuICA8L2Rpdj5cclxuPC9kaXY+Il19
|
|
237
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZGVjaW1hbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXRzL2lucHV0LWRlY2ltYWwvaW5wdXQtZGVjaW1hbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXRzL2lucHV0LWRlY2ltYWwvaW5wdXQtZGVjaW1hbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBdUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUseUJBQXlCLEVBQUUsd0JBQXdCLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM5SixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7O0FBUTFELE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxXQUFtQjtJQVFuRCxLQUFLLENBQUMsS0FBaUI7UUFDOUIsSUFBRyxJQUFJLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNuRSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxJQUFJ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bzlCQTZCTTs7NEZEaEJPLHFCQUFxQjtrQkFOakMsU0FBUzsrQkFDRSwrREFBK0QsYUFHOUQsQ0FBQyxHQUFHLG9CQUFvQixDQUFDLFlBQVksdUJBQXVCLENBQUM7K0VBUXBELEtBQUs7c0JBQXhCLFNBQVM7dUJBQUMsT0FBTztnQkFDVyxjQUFjO3NCQUExQyxTQUFTO3VCQUFDLGdCQUFnQjtnQkFzQzNCLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7O0FBZ0xuQyxNQUFNLGVBQWUsR0FBRyxvQkFBb0IsQ0FBQTtBQUU1QyxNQUFNLGdCQUFnQixHQUFZLEdBQUcsQ0FBQztBQUN0QyxNQUFNLGlCQUFpQixHQUFXLEdBQUcsQ0FBQztBQUV0QyxNQUFNLFFBQVEsR0FBYSxDQUFDLENBQUMsQ0FBUyxFQUFVLEVBQUU7SUFDaEQsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsQ0FBQztTQUNqQyxPQUFPLENBQUksZ0JBQWdCLEVBQUcsRUFBRSxDQUFDLENBQUE7QUFDcEMsQ0FBQyxDQUFDLENBQUM7QUFFWCxNQUFNLFVBQVUsR0FBWSxDQUFFLEdBQUcsRUFBQyxHQUFHLEVBQUMsR0FBRyxFQUFDLEdBQUcsRUFBQyxHQUFHLEVBQUMsR0FBRyxFQUFDLEdBQUcsRUFBQyxHQUFHLEVBQUMsR0FBRyxFQUFDLEdBQUcsQ0FBRSxDQUFDO0FBQ3hFLE1BQU0sbUJBQW1CLEdBQUcsQ0FBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBQy9ILE1BQU0sZ0JBQWdCLEdBQU0sQ0FBRSxXQUFXLEVBQUUsUUFBUSxDQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIG1vZGVsLCBNb2RlbFNpZ25hbCwgU2lnbmFsLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgZm9ybWF0TnVtYmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgSW5wdXRDdXJyZW5jeUNvbmZpZ3VyYXRpb24sIElucHV0RGVjaW1hbENvbmZpZ3VyYXRpb24sIElucHV0TnVtYmVyQ29uZmlndXJhdGlvbiwgSW5wdXRQZXJjZW50YWdlQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vaW5wdXQtZGVjaW1hbC5jb25maWd1cmF0aW9uJztcclxuaW1wb3J0IHsgSW5wdXRQcm92aWRlckZhY3RvcnkgfSBmcm9tICcuLi9pbnB1dC1wcm92aWRlci1mYWN0b3J5JztcclxuaW1wb3J0IHsgQ3VzdG9tSW5wdXQgfSBmcm9tICcuLi9jdXN0b20taW5wdXQnO1xyXG5pbXBvcnQgeyBUaW1lb3V0IH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdXRpbHMuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2lucHV0LWRlY2ltYWwsIGlucHV0LW51bWJlciwgaW5wdXQtY3VycmVuY3ksIGlucHV0LXBlcmNlbnRhZ2UnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC1kZWNpbWFsLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9pbnB1dC1kZWNpbWFsLmNvbXBvbmVudC5zY3NzJywgJy4uL2lucHV0cy5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbLi4uSW5wdXRQcm92aWRlckZhY3RvcnkuR2V0UHJvdmlkZXJzKElucHV0RGVjaW1hbENvbXBvbmVudCldLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW5wdXREZWNpbWFsQ29tcG9uZW50IGV4dGVuZHMgQ3VzdG9tSW5wdXQ8bnVtYmVyPiB7XHJcblxyXG4gIGNvbmZpZ3VyYXRpb246IE1vZGVsU2lnbmFsPElucHV0RGVjaW1hbENvbmZpZ3VyYXRpb24+ID0gbW9kZWw8SW5wdXREZWNpbWFsQ29uZmlndXJhdGlvbj4oKTtcclxuICBkaWdpdHNJbmZvOiBTaWduYWw8c3RyaW5nPiA9IGNvbXB1dGVkKCgpID0+IGAxLiR7dGhpcy5jb25maWd1cmF0aW9uKCkucHJlY2lzaW9ufS0ke3RoaXMuY29uZmlndXJhdGlvbigpLnByZWNpc2lvbn1gKTtcclxuICBkaXZpZGVyOiBTaWduYWw8bnVtYmVyPiA9IGNvbXB1dGVkKCgpID0+IE1hdGgucG93KDEwLCB0aGlzLmNvbmZpZ3VyYXRpb24oKS5wcmVjaXNpb24pKTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnaW5wdXQnKSBpbnB1dDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcclxuICBAVmlld0NoaWxkKCdpbnB1dENvbnRhaW5lcicpIGlucHV0Q29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuICBvdmVycmlkZSBmb2N1cyhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgaWYodGhpcy5pbnB1dCAmJiBldmVudC50YXJnZXQgPT0gdGhpcy5pbnB1dENvbnRhaW5lci5uYXRpdmVFbGVtZW50KSB7IFxyXG4gICAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTsgXHJcbiAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZSh0aGlzLnZhbHVlU3RyaW5nLmxlbmd0aCwgdGhpcy52YWx1ZVN0cmluZy5sZW5ndGgpOyBcclxuICAgIH0gICAgICBcclxuICB9XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBvdmVycmlkZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmXHJcbiAgKSB7IFxyXG4gICAgc3VwZXIoKTsgXHJcbiAgICB0aGlzLnZhbHVlLnNldCgwKTtcclxuICAgIGNvbnN0IHNlbGVjdG9yOiBzdHJpbmcgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkuc3BsaXQoJy0nKS5hdCgtMSk7XHJcbiAgICBpZihzZWxlY3RvciA9PSBcIm51bWJlclwiICAgICAmJiAhdGhpcy5jb25maWd1cmF0aW9uKCkpeyB0aGlzLmNvbmZpZ3VyYXRpb24uc2V0KG5ldyBJbnB1dE51bWJlckNvbmZpZ3VyYXRpb24oKSk7ICAgICB9IGVsc2VcclxuICAgIGlmKHNlbGVjdG9yID09IFwiZGVjaW1hbFwiICAgICYmICF0aGlzLmNvbmZpZ3VyYXRpb24oKSl7IHRoaXMuY29uZmlndXJhdGlvbi5zZXQobmV3IElucHV0RGVjaW1hbENvbmZpZ3VyYXRpb24oKSk7ICAgIH0gZWxzZVxyXG4gICAgaWYoc2VsZWN0b3IgPT0gXCJjdXJyZW5jeVwiICAgJiYgIXRoaXMuY29uZmlndXJhdGlvbigpKXsgdGhpcy5jb25maWd1cmF0aW9uLnNldChuZXcgSW5wdXRDdXJyZW5jeUNvbmZpZ3VyYXRpb24oKSk7ICAgfSBlbHNlXHJcbiAgICBpZihzZWxlY3RvciA9PSBcInBlcmNlbnRhZ2VcIiAmJiAhdGhpcy5jb25maWd1cmF0aW9uKCkpeyB0aGlzLmNvbmZpZ3VyYXRpb24uc2V0KG5ldyBJbnB1dFBlcmNlbnRhZ2VDb25maWd1cmF0aW9uKCkpOyB9XHJcbiAgICB0aGlzLlNldFZhbHVlU3RyaW5nKCk7IFxyXG4gIH1cclxuICBcclxuICBvdmVycmlkZSB3cml0ZVZhbHVlKG9iajogbnVtYmVyKTogdm9pZCB8IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy52YWx1ZS5zZXQob2JqKTtcclxuICAgIHRoaXMuU2V0VmFsdWVTdHJpbmcoKTtcclxuICAgIHRoaXMucnVuVmFsaWRhdGlvbigpO1xyXG4gIH1cclxuICBvdmVycmlkZSBTZXRWYWx1ZShvYmo6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy52YWx1ZS5zZXQob2JqKTtcclxuICAgIHRoaXMuU2V0VmFsdWVTdHJpbmcoKTtcclxuICAgIHRoaXMucnVuVmFsaWRhdGlvbigpO1xyXG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2Uob2JqKTsgXHJcbiAgfVxyXG4gIFNldFZhbHVlU3RyaW5nKCk6IHZvaWQge1xyXG4gICAgdGhpcy52YWx1ZVN0cmluZyA9IGZvcm1hdE51bWJlcih0aGlzLnZhbHVlKCksIFwicHQtQlJcIiwgdGhpcy5kaWdpdHNJbmZvKCkpO1xyXG4gIH1cclxuICBcclxuICB2YWx1ZVN0cmluZzogc3RyaW5nO1xyXG5cclxuICBASG9zdExpc3RlbmVyKCdwYXN0ZScsIFsnJGV2ZW50J10pXHJcbiAgb25QYXN0ZShldmVudDogQ2xpcGJvYXJkRXZlbnQpOiB2b2lkIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBcclxuICAgIGxldCBjbGlwYm9hcmREYXRhID0gZXZlbnQuY2xpcGJvYXJkRGF0YSB8fCB3aW5kb3dbJ2NsaXBib2FyZERhdGEnXTtcclxuICAgIGxldCBwYXN0ZWRUZXh0ICAgID0gY2xpcGJvYXJkRGF0YS5nZXREYXRhKCd0ZXh0Jyk7XHJcblxyXG4gICAgY29uc3QgcyA9IHBhc3RlZFRleHQucmVwbGFjZUFsbCgnLicsICcnKS5yZXBsYWNlQWxsKCcsJywgJy4nKTtcclxuICAgIGNvbnN0IG4gPSBOdW1iZXIocyk7XHJcblxyXG4gICAgaWYoTnVtYmVyKHMpICYmIGlzRmluaXRlKG4pKXsgXHJcbiAgICAgIHRoaXMuU2V0VmFsdWUobik7XHJcbiAgICB9XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgb25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogUHJvbWlzZTx2b2lkPntcclxuICAgIGNvbnN0IHZhbHVlOiBzdHJpbmcgPSB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWU7XHJcblxyXG4gICAgY29uc3Qgc2VsZWN0aW9uU3RhcnQ6IG51bWJlciA9IHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydDtcclxuICAgIGNvbnN0IHNlbGVjdGlvbkVuZCAgOiBudW1iZXIgPSB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uRW5kO1xyXG5cclxuICAgIGNvbnN0IGF0TGVmdCAgPSB2YWx1ZS5zbGljZSgwLCBzZWxlY3Rpb25TdGFydCk7IFxyXG4gICAgY29uc3QgYXRSaWdodCA9IHZhbHVlLnNsaWNlKHNlbGVjdGlvbkVuZCwgdmFsdWUubGVuZ3RoKTsgXHJcbiAgICBpZihbXCItXCJdLmluY2x1ZGVzKGV2ZW50LmtleSkpeyBcclxuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuSGFuZGxlTmVnYXRpdmUoZXZlbnQsIHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQsIHZhbHVlLCBhdExlZnQsIGF0UmlnaHQpO1xyXG4gICAgfWVsc2VcclxuICAgIGlmKGxzdE51bWJlcnMuaW5jbHVkZXMoZXZlbnQua2V5KSl7IFxyXG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5IYW5kbGVOdW1iZXIoZXZlbnQsIHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQsIHZhbHVlLCBhdExlZnQsIGF0UmlnaHQpOyBcclxuICAgIH1lbHNlXHJcbiAgICBpZihsc3RFc3BlY2lhbENhc2VzLmluY2x1ZGVzKGV2ZW50LmtleSkpeyBcclxuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuSGFuZGxlRXNwZWNpYWwoZXZlbnQsIHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQsIHZhbHVlLCBhdExlZnQsIGF0UmlnaHQpOyBcclxuICAgIH1lbHNlXHJcbiAgICBpZihbXCJBXCIsIFwiYVwiXS5pbmNsdWRlcyhldmVudC5rZXkpICYmIGV2ZW50LmN0cmxLZXkpeyBcclxuICAgICAgcmV0dXJuOyBcclxuICAgIH1lbHNlXHJcbiAgICBpZihbXCJDXCIsIFwiY1wiXS5pbmNsdWRlcyhldmVudC5rZXkpICYmIGV2ZW50LmN0cmxLZXkpeyBcclxuICAgICAgcmV0dXJuOyBcclxuICAgIH1lbHNlXHJcbiAgICBpZihbXCJWXCIsIFwidlwiXS5pbmNsdWRlcyhldmVudC5rZXkpICYmIGV2ZW50LmN0cmxLZXkpeyBcclxuICAgICAgcmV0dXJuOyBcclxuICAgIH1lbHNlXHJcbiAgICBpZihsc3RJZ25vcmVOb3RQcmV2ZW50LmluY2x1ZGVzKGV2ZW50LmtleSkpeyBcclxuICAgICAgcmV0dXJuOyBcclxuICAgIH1lbHNle1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgSGFuZGxlTmVnYXRpdmUoZXZlbnQ6IEtleWJvYXJkRXZlbnQsIHNlbGVjdGlvblN0YXJ0OiBudW1iZXIsIHNlbGVjdGlvbkVuZDogbnVtYmVyLCB2YWx1ZTogc3RyaW5nLCBhdExlZnQ6IHN0cmluZywgYXRSaWdodDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPntcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblxyXG4gICAgbGV0IGZvY3VzRW5kID0gKHNlbGVjdGlvblN0YXJ0ID09IDAgJiYgc2VsZWN0aW9uRW5kID09IHRoaXMudmFsdWVTdHJpbmcubGVuZ3RoKTtcclxuICAgIC8qKiBbIFJlbW92ZSBkZWNpbWFsU2VwYXJhdG9yICYgdGhvdXNhbmRTZXBhcmF0b3IgXSAqL1xyXG4gICAgbGV0IGY7XHJcbiAgICBpZighYXRMZWZ0LmluY2x1ZGVzKCctJykpe1xyXG4gICAgICBmID0gZXZlbnQua2V5ICsgYXRMZWZ0ICsgYXRSaWdodDtcclxuICAgIH1lbHNle1xyXG4gICAgICBmID0gKGF0TGVmdCArIGF0UmlnaHQpLnJlcGxhY2UoJy0nLCAnJylcclxuICAgIH1cclxuXHJcbiAgICBpZihmID09IFwiLVwiKXsgXHJcbiAgICAgIGlmKHZhbHVlLmluY2x1ZGVzKCctJykpe1xyXG4gICAgICAgIGYgPSB2YWx1ZS5yZXBsYWNlKCctJywgJycpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2V7XHJcbiAgICAgICAgZiA9IGAtJHt2YWx1ZX1gO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgQ3VycmVudFZhbHVlOiBudW1iZXIgPSB0aGlzLlNhbml0aXplVmFsdWUoZik7XHJcbiAgICBpZihDdXJyZW50VmFsdWUgPT0gdGhpcy52YWx1ZSgpKXsgcmV0dXJuOyB9XHJcbiAgICBcclxuICAgIC8vWyBIYW5kbGUgU2V0IEN1cnNvciBQb3NpdGlvbl1cclxuICAgIHRoaXMuU2V0VmFsdWUoQ3VycmVudFZhbHVlKTtcclxuICAgIGNvbnN0IG5ld1BvcyA9IHNlbGVjdGlvblN0YXJ0ICsgMSArIHRoaXMudmFsdWVTdHJpbmcuc3BsaXQoJy4nKS5sZW5ndGggLSB2YWx1ZS5zcGxpdCgnLicpLmxlbmd0aDtcclxuICAgIFxyXG4gICAgLy9Ib3JyaXZlbCwgbWFzIG5hbyB0ZW0gdW1hIGFsdGVybmF0aXZhIGJvYSwgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNTExMDg4L3VzZS1qYXZhc2NyaXB0LXRvLXBsYWNlLWN1cnNvci1hdC1lbmQtb2YtdGV4dC1pbi10ZXh0LWlucHV0LWVsZW1lbnRcclxuICAgIGF3YWl0IFRpbWVvdXQoMCk7XHJcbiAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2UobmV3UG9zLCBuZXdQb3MpOyBcclxuICAgIGlmKGZvY3VzRW5kKXtcclxuICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKHRoaXMudmFsdWVTdHJpbmcubGVuZ3RoLCB0aGlzLnZhbHVlU3RyaW5nLmxlbmd0aCk7IFxyXG4gICAgfVxyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgSGFuZGxlTnVtYmVyKGV2ZW50OiBLZXlib2FyZEV2ZW50LCBzZWxlY3Rpb25TdGFydDogbnVtYmVyLCBzZWxlY3Rpb25FbmQ6IG51bWJlciwgdmFsdWU6IHN0cmluZywgYXRMZWZ0OiBzdHJpbmcsIGF0UmlnaHQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIFxyXG4gICAgbGV0IGZvY3VzRW5kID0gKHNlbGVjdGlvblN0YXJ0ID09IDAgJiYgc2VsZWN0aW9uRW5kID09IHRoaXMudmFsdWVTdHJpbmcubGVuZ3RoKTtcclxuICAgIC8qKiBbIFJlbW92ZSBkZWNpbWFsU2VwYXJhdG9yICYgdGhvdXNhbmRTZXBhcmF0b3IgXSAqL1xyXG4gICAgY29uc3QgZiA9IGF0TGVmdCArIGV2ZW50LmtleSArIGF0UmlnaHQ7XHJcbiAgICBjb25zdCBDdXJyZW50VmFsdWU6IG51bWJlciA9IHRoaXMuU2FuaXRpemVWYWx1ZShmKTtcclxuICAgIGlmKEN1cnJlbnRWYWx1ZSA9PSB0aGlzLnZhbHVlKCkpeyByZXR1cm47IH1cclxuICAgIGlmKEN1cnJlbnRWYWx1ZSA+IGRlY2ltYWxNYXhWYWx1ZSl7IHJldHVybjsgfVxyXG4gICAgXHJcbiAgICAvL1sgSGFuZGxlIFNldCBDdXJzb3IgUG9zaXRpb25dXHJcbiAgICB0aGlzLlNldFZhbHVlKEN1cnJlbnRWYWx1ZSk7XHJcbiAgICBjb25zdCBuZXdQb3NpdGlvbiA9IHNlbGVjdGlvblN0YXJ0ICsgMSArIHRoaXMudmFsdWVTdHJpbmcuc3BsaXQoJy4nKS5sZW5ndGggLSB2YWx1ZS5zcGxpdCgnLicpLmxlbmd0aDtcclxuICAgIFxyXG4gICAgLy9Ib3JyaXZlbCwgbWFzIG5hbyBzZW0gdW1hIGFsdGVybmF0aXZhIGJvYSwgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNTExMDg4L3VzZS1qYXZhc2NyaXB0LXRvLXBsYWNlLWN1cnNvci1hdC1lbmQtb2YtdGV4dC1pbi10ZXh0LWlucHV0LWVsZW1lbnRcclxuICAgIGF3YWl0IFRpbWVvdXQoMCk7XHJcbiAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2UobmV3UG9zaXRpb24sIG5ld1Bvc2l0aW9uKTsgXHJcbiAgICBpZihmb2N1c0VuZCl7XHJcbiAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZSh0aGlzLnZhbHVlU3RyaW5nLmxlbmd0aCwgdGhpcy52YWx1ZVN0cmluZy5sZW5ndGgpOyBcclxuICAgIH1cclxuICAgIHJldHVybjtcclxuICB9XHJcblxyXG4gIFNhbml0aXplVmFsdWUoZjogc3RyaW5nKTogbnVtYmVye1xyXG4gICAgdmFyIEN1cnJlbnRWYWx1ZTogbnVtYmVyID0gTnVtYmVyKFNhbml0aXplKGYpKSAvIHRoaXMuZGl2aWRlcigpO1xyXG4gICAgaWYoQ3VycmVudFZhbHVlID49IGRlY2ltYWxNYXhWYWx1ZSl7IFxyXG4gICAgICByZXR1cm4gdGhpcy52YWx1ZSgpOyBcclxuICAgIH1cclxuICAgIHJldHVybiBDdXJyZW50VmFsdWU7XHJcbiAgfVxyXG5cclxuICBhc3luYyBIYW5kbGVFc3BlY2lhbChldmVudDogS2V5Ym9hcmRFdmVudCwgc2VsZWN0aW9uU3RhcnQ6IG51bWJlciwgc2VsZWN0aW9uRW5kOiBudW1iZXIsIHZhbHVlOiBzdHJpbmcsIGF0TGVmdDogc3RyaW5nLCBhdFJpZ2h0OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBpZihzZWxlY3Rpb25TdGFydCA9PSBzZWxlY3Rpb25FbmQpe1xyXG4gICAgICBpZihldmVudC5rZXkgPT0gXCJCYWNrc3BhY2VcIil7XHJcbiAgICAgICAgaWYoc2VsZWN0aW9uU3RhcnQgPT0gIHNlbGVjdGlvbkVuZCAmJiBzZWxlY3Rpb25TdGFydCA9PSAwKXsgXHJcbiAgICAgICAgICByZXR1cm47IFxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgcHJldmlvdXNDaGFyOiBzdHJpbmcgPSBhdExlZnQuYXQoLTEpO1xyXG4gICAgICAgIGNvbnN0IGlzTnVtYmVyID0gbHN0TnVtYmVycy5pbmNsdWRlcyhwcmV2aW91c0NoYXIpO1xyXG4gICAgICAgIGNvbnN0IGYgPSBhdExlZnQuc2xpY2UoMCwgYXRMZWZ0Lmxlbmd0aCAtIChpc051bWJlciA/IDEgOiAyKSkgKyBhdFJpZ2h0O1xyXG4gICAgICAgIGNvbnN0IEN1cnJlbnRWYWx1ZSA9IHRoaXMuU2FuaXRpemVWYWx1ZShmKTtcclxuICAgICAgICBcclxuICAgICAgICAvL1sgSGFuZGxlIFNldCBDdXJzb3IgUG9zaXRpb25dXHJcbiAgICAgICAgdGhpcy5TZXRWYWx1ZShDdXJyZW50VmFsdWUpO1xyXG4gICAgICAgIGF3YWl0IFRpbWVvdXQoMCk7XHJcbiAgICAgICAgbGV0IHBvcyA9IGlzTnVtYmVyID8gc2VsZWN0aW9uU3RhcnQgLSAxIDogc2VsZWN0aW9uU3RhcnQgLSAyO1xyXG5cclxuICAgICAgICBpZiAoc2VsZWN0aW9uRW5kID09IHRoaXMudmFsdWVTdHJpbmcubGVuZ3RoKSB7XHJcbiAgICAgICAgICBwb3MrKztcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKHBvcywgcG9zKTsgXHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9ZWxzZVxyXG4gICAgICBpZihldmVudC5rZXkgPT0gXCJEZWxldGVcIil7XHJcbiAgICAgICAgY29uc3QgbmV4dENoYXI6IHN0cmluZyA9ICBhdFJpZ2h0WzBdO1xyXG4gICAgICAgIGNvbnN0IGlzTnVtYmVyID0gbHN0TnVtYmVycy5pbmNsdWRlcyhuZXh0Q2hhcik7XHJcbiAgICAgICAgY29uc3QgZiA9IGF0TGVmdCArIGF0UmlnaHQuc2xpY2UoaXNOdW1iZXIgPyAxIDogMik7XHJcbiAgICAgICAgY29uc3QgQ3VycmVudFZhbHVlID0gIHRoaXMuU2FuaXRpemVWYWx1ZShmKTtcclxuICAgICAgICBcclxuICAgICAgICAvL1sgSGFuZGxlIFNldCBDdXJzb3IgUG9zaXRpb25dXHJcbiAgICAgICAgdGhpcy5TZXRWYWx1ZShDdXJyZW50VmFsdWUpO1xyXG4gICAgICAgIHZhciBwb3M6IG51bWJlciA9IHNlbGVjdGlvblN0YXJ0O1xyXG4gICAgICAgIGlmKHBvcyA8PSAtMSl7IHBvcyA9IDA7IH1cclxuICAgICAgICBpZihDdXJyZW50VmFsdWUgPCAxKXtcclxuICAgICAgICAgIHBvcysrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZighaXNOdW1iZXIpe1xyXG4gICAgICAgICAgcG9zKys7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBhd2FpdCBUaW1lb3V0KDApO1xyXG4gICAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZShwb3MsIHBvcyk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9ZWxzZXtcclxuICAgICAgY29uc3QgZiA9IGF0TGVmdCArIGF0UmlnaHQ7XHJcbiAgICAgIGNvbnN0IEN1cnJlbnRWYWx1ZSA9IHRoaXMuU2FuaXRpemVWYWx1ZShmKTtcclxuICAgICAgdGhpcy5TZXRWYWx1ZShDdXJyZW50VmFsdWUpO1xyXG4gICAgICBcclxuICAgICAgYXdhaXQgVGltZW91dCgwKTtcclxuICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKHRoaXMudmFsdWVTdHJpbmcubGVuZ3RoLCB0aGlzLnZhbHVlU3RyaW5nLmxlbmd0aCk7IFxyXG5cclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuXHJcbmNvbnN0IGRlY2ltYWxNYXhWYWx1ZSA9IDlfMDAwXzAwMF8wMDBfMDAwLjAwXHJcblxyXG5jb25zdCBkZWNpbWFsU2VwYXJhdG9yIDogc3RyaW5nID0gXCIsXCI7XHJcbmNvbnN0IHRob3VzYW5kU2VwYXJhdG9yOiBzdHJpbmcgPSBcIi5cIjtcclxuXHJcbmNvbnN0IFNhbml0aXplOiBGdW5jdGlvbiA9ICgodjogc3RyaW5nKTogc3RyaW5nID0+IHsgXHJcbiAgcmV0dXJuIHYucmVwbGFjZUFsbCh0aG91c2FuZFNlcGFyYXRvciwgJycpXHJcbiAgICAgICAgICAucmVwbGFjZSAgIChkZWNpbWFsU2VwYXJhdG9yICwgJycpIFxyXG4gICAgICAgIH0pO1xyXG5cclxuY29uc3QgbHN0TnVtYmVycyAgICAgICAgICA9IFsgXCIwXCIsXCIxXCIsXCIyXCIsXCIzXCIsXCI0XCIsXCI1XCIsXCI2XCIsXCI3XCIsXCI4XCIsXCI5XCIgXTtcclxuY29uc3QgbHN0SWdub3JlTm90UHJldmVudCA9IFsgXCJUYWJcIiwgXCJDYXBzTG9ja1wiLCBcIlNoaWZ0XCIsIFwiQ29udHJvbFwiLCBcIkFsdFwiLCBcIkFycm93UmlnaHRcIiwgXCJBcnJvd1VwXCIsIFwiQXJyb3dEb3duXCIsIFwiQXJyb3dMZWZ0XCJdO1xyXG5jb25zdCBsc3RFc3BlY2lhbENhc2VzICAgID0gWyBcIkJhY2tzcGFjZVwiLCBcIkRlbGV0ZVwiIF07IiwiPGRpdiBcclxuICAjaW5wdXRDb250YWluZXJcclxuICBjbGFzcz1cImlucHV0LWNvbnRhaW5lclwiIFxyXG4gIChjbGljayk9XCJmb2N1cygkZXZlbnQpXCJcclxuICBbY2xhc3MucmVxdWlyZWRdPVwicmVxdWlyZWQoKVwiIFxyXG4gIFtjbGFzcy5zdWJtaXR0ZWRdPVwic3VibWl0dGVkKClcIiBcclxuICBbY2xhc3MuaW52YWxpZF09XCJpbnZhbGlkXCIgXHJcbiAgW2NsYXNzLmRpc2FibGVkXT1cImRpc2FibGVkKCkgfHwgbG9hZGluZygpXCJcclxuICBbY2xhc3MubG9hZGluZ109XCJsb2FkaW5nKClcIlxyXG4+XHJcbiAgPGRpdiBjbGFzcz1cImlucHV0LWxhYmVsXCI+IFxyXG4gICAgPHNwYW4gY2xhc3M9XCJ0cnVuY2F0ZVwiPlxyXG4gICAgICB7e2xhYmVsKCl9fSBcclxuICAgIDwvc3Bhbj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImRlY2ltYWwtaW5wdXQtY29udGFpbmVyIHRleHQtZGFya1wiPlxyXG4gICAgPHNwYW4gKm5nSWY9XCJjb25maWd1cmF0aW9uKCkucHJlZml4XCIgc2xvdD1cInN0YXJ0XCI+e3tjb25maWd1cmF0aW9uKCkucHJlZml4fX08L3NwYW4+XHJcbiAgICA8aW5wdXQgI2lucHV0XHJcbiAgICAgIGlucHV0bW9kZT1cIm51bWVyaWNcIlxyXG4gICAgICBbdmFsdWVdPVwidmFsdWVTdHJpbmdcIiBcclxuICAgICAgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudClcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQoKSB8fCBsb2FkaW5nKClcIlxyXG4gICAgLz5cclxuICAgIDxzcGFuICpuZ0lmPVwiY29uZmlndXJhdGlvbigpLnN1Zml4XCIgIHNsb3Q9XCJlbmRcIiAgPnt7Y29uZmlndXJhdGlvbigpLnN1Zml4fX08L3NwYW4+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cImxvYWRpbmctY29udGFpbmVyXCIgW2NsYXNzLmxvYWRpbmddPVwibG9hZGluZygpXCI+XHJcbiAgICA8aW9uLXNwaW5uZXI+PC9pb24tc3Bpbm5lcj5cclxuICA8L2Rpdj5cclxuPC9kaXY+Il19
|
|
@@ -9,7 +9,7 @@ import * as i1 from "../../../services/utils.service";
|
|
|
9
9
|
import * as i2 from "../../../services/web/storage.service";
|
|
10
10
|
import * as i3 from "@ionic/angular";
|
|
11
11
|
import * as i4 from "../../image/image.component";
|
|
12
|
-
export class
|
|
12
|
+
export class InputFileComponent extends CustomInput {
|
|
13
13
|
focus(event) {
|
|
14
14
|
this.Upload();
|
|
15
15
|
this.inputContainer.nativeElement.focus();
|
|
@@ -64,12 +64,12 @@ export class NewInputFileComponent extends CustomInput {
|
|
|
64
64
|
Download() {
|
|
65
65
|
this.storageService.StartDownload(this.value());
|
|
66
66
|
}
|
|
67
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type:
|
|
68
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type:
|
|
67
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InputFileComponent, deps: [{ token: i1.UtilsService }, { token: i2.StorageService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
68
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: InputFileComponent, selector: "input-file", inputs: { configuration: { classPropertyName: "configuration", publicName: "configuration", isSignal: true, isRequired: false, transformFunction: null } }, providers: [...InputProviderFactory.GetProviders(InputFileComponent)], viewQueries: [{ propertyName: "inputContainer", first: true, predicate: ["inputContainer"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div \r\n #inputContainer\r\n class=\"input-container\" \r\n (click)=\"focus($event)\"\r\n [class.required]=\"required()\" \r\n [class.submitted]=\"submitted()\" \r\n [class.invalid]=\"invalid\" \r\n [class.disabled]=\"disabled() || loading()\"\r\n [class.loading]=\"loading()\"\r\n>\r\n <div class=\"input-label\"> \r\n <span class=\"truncate\">\r\n {{label()}} \r\n </span>\r\n </div>\r\n <div tabindex=\"0\" class=\"file-label-container text-dark\" [title]=\"valueString\" (click)=\"Upload()\">\r\n <ion-icon class=\"shrink-0\" color=\"dark\" name=\"document\"></ion-icon> \r\n <span class=\"shrink truncate\">\r\n {{valueString}}\r\n </span>\r\n\r\n <ion-button [class.available]=\"value()\" color=\"medium\" class=\"ellipsis-button ml-auto shrink-0\" fill=\"clear\" style=\"--border-radius: .5rem\" size=\"small\" (click)=\"popover.present($event); $event.stopPropagation()\">\r\n <ion-icon name=\"ellipsis-vertical\" slot=\"icon-only\"></ion-icon>\r\n </ion-button>\r\n <ion-popover #popover>\r\n <ng-template>\r\n <ion-content>\r\n <div class=\"size-full flex flex-col\">\r\n @if(value()){\r\n <ion-button color=\"danger\"size=\"small\" style=\"--border-radius: 0rem\" (click)=\"Clear($event); popover.dismiss()\">\r\n <ion-icon color=\"dark\" name=\"trash\" slot=\"icon-only\"></ion-icon>\r\n Limpar\r\n </ion-button>\r\n }\r\n @if(isString){\r\n <ion-button color=\"secondary\" size=\"small\" style=\"--border-radius: 0rem\" (click)=\"Download()\">\r\n <ion-icon color=\"dark\" name=\"download\" slot=\"start\"></ion-icon>\r\n Download\r\n </ion-button>\r\n @if(storageService.GetProgress(this.value().toString())){\r\n <ion-progress-bar [value]=\"storageService.GetProgress(this.value().toString())\"></ion-progress-bar>\r\n }\r\n @if(isImage){\r\n <image fill=\"clear\" [src]=\"value().toString()\"></image>\r\n }\r\n }\r\n @else if(isImage){\r\n <ion-img [src]=\"objectURL\" class=\"w-full h-32\"></ion-img>\r\n }\r\n </div>\r\n </ion-content>\r\n </ng-template>\r\n </ion-popover>\r\n </div>\r\n\r\n <div class=\"loading-container\" [class.loading]=\"loading()\">\r\n <ion-spinner></ion-spinner>\r\n </div>\r\n</div>", styles: [".file-label-container{position:relative;display:flex;height:1.5rem;width:100%;align-items:center;justify-content:flex-start;gap:.25rem}.input-container{padding-right:.25rem!important}.ellipsis-button{opacity:0;pointer-events:none;will-change:opacity;transition:opacity .2s ease-in-out}.ellipsis-button.available{pointer-events:auto;opacity:1}\n", "@property --input-color{syntax: \"<color>\"; initial-value: transparent; inherits: false;}.input-container{position:relative;--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));cursor:text;border-radius:.75rem;padding:.25rem .75rem;--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);transition:--input-color .2s ease-in-out,box-shadow .2s ease-in-out,opacity .2s ease-in-out,filter .2s ease-in-out;--color: var(--ion-color-dark);--input-color: var(--input-background, var(--ion-color-step-250));--shadow: 0 3px 4px -1px rgb(0 0 0 / .1);--inset-shadow: var(--input-color) 0px 1.75px 1px 0px inset;--focused-shadow: 0 0 1px 2px color-mix(in srgb, var(--ion-color-medium) 35%, transparent);box-shadow:var(--inset-shadow),var(--shadow);will-change:box-shadow,filter opacity;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;background:radial-gradient(ellipse at 0px top,hsl(from var(--input-color) h s l/.5),hsl(from var(--input-color) h s l/.4)),hsl(from var(--ion-color-light) h s l/.8)}.input-container:hover{--tw-brightness: brightness(.9);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container:focus-within,.input-container:focus,.input-container.manual-focus{box-shadow:var(--inset-shadow),var(--shadow),var(--focused-shadow);--tw-brightness: brightness(.9);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container .input-label{pointer-events:none;display:flex;height:1rem;width:100%;min-width:0px;max-width:100%;align-items:center;justify-content:flex-start;gap:.25rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.75rem;line-height:1rem;color:var(--color)}.input-container input,.input-container textarea{height:1.5rem;width:100%;border-radius:.375rem;background-color:transparent;font-size:.875rem;line-height:1.25rem;color:var(--ion-color-dark);outline:2px solid transparent;outline-offset:2px}.input-container.loading{cursor:wait!important}.input-container.required .input-label:after{content:\"*\";color:var(--ion-color-danger);vertical-align:bottom}.input-container.submitted.invalid{--input-color: color-mix(in srgb, var(--ion-color-danger) 50%, transparent)}.input-container.disabled{cursor:not-allowed;opacity:.5;--tw-brightness: brightness(1);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container.disabled *{pointer-events:none}.loading-container{position:absolute;pointer-events:none;width:100%;height:100%;top:0;left:0;display:flex;justify-content:end;align-items:center;padding-right:.5rem;will-change:opacity;transition:opacity .2s ease-in-out;overflow:hidden;opacity:0;z-index:10}.loading-container ion-spinner{will-change:transform;transition:transform .2s ease-in-out;transform:translateY(-100%)}.loading-container.loading{opacity:1}.loading-container.loading ion-spinner{transform:translateY(0)}ion-modal::part(content){border-radius:.75rem;border:1px solid var(--ion-color-step-250)}\n"], dependencies: [{ kind: "component", type: i3.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i3.IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i3.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i3.IonImg, selector: "ion-img", inputs: ["alt", "src"] }, { kind: "component", type: i3.IonProgressBar, selector: "ion-progress-bar", inputs: ["buffer", "color", "mode", "reversed", "type", "value"] }, { kind: "component", type: i3.IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: i3.IonPopover, selector: "ion-popover" }, { kind: "component", type: i4.ImageComponent, selector: "image", inputs: ["fill", "object", "src"] }] }); }
|
|
69
69
|
}
|
|
70
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type:
|
|
70
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InputFileComponent, decorators: [{
|
|
71
71
|
type: Component,
|
|
72
|
-
args: [{ selector: 'input-file', providers: [...InputProviderFactory.GetProviders(
|
|
72
|
+
args: [{ selector: 'input-file', providers: [...InputProviderFactory.GetProviders(InputFileComponent)], template: "<div \r\n #inputContainer\r\n class=\"input-container\" \r\n (click)=\"focus($event)\"\r\n [class.required]=\"required()\" \r\n [class.submitted]=\"submitted()\" \r\n [class.invalid]=\"invalid\" \r\n [class.disabled]=\"disabled() || loading()\"\r\n [class.loading]=\"loading()\"\r\n>\r\n <div class=\"input-label\"> \r\n <span class=\"truncate\">\r\n {{label()}} \r\n </span>\r\n </div>\r\n <div tabindex=\"0\" class=\"file-label-container text-dark\" [title]=\"valueString\" (click)=\"Upload()\">\r\n <ion-icon class=\"shrink-0\" color=\"dark\" name=\"document\"></ion-icon> \r\n <span class=\"shrink truncate\">\r\n {{valueString}}\r\n </span>\r\n\r\n <ion-button [class.available]=\"value()\" color=\"medium\" class=\"ellipsis-button ml-auto shrink-0\" fill=\"clear\" style=\"--border-radius: .5rem\" size=\"small\" (click)=\"popover.present($event); $event.stopPropagation()\">\r\n <ion-icon name=\"ellipsis-vertical\" slot=\"icon-only\"></ion-icon>\r\n </ion-button>\r\n <ion-popover #popover>\r\n <ng-template>\r\n <ion-content>\r\n <div class=\"size-full flex flex-col\">\r\n @if(value()){\r\n <ion-button color=\"danger\"size=\"small\" style=\"--border-radius: 0rem\" (click)=\"Clear($event); popover.dismiss()\">\r\n <ion-icon color=\"dark\" name=\"trash\" slot=\"icon-only\"></ion-icon>\r\n Limpar\r\n </ion-button>\r\n }\r\n @if(isString){\r\n <ion-button color=\"secondary\" size=\"small\" style=\"--border-radius: 0rem\" (click)=\"Download()\">\r\n <ion-icon color=\"dark\" name=\"download\" slot=\"start\"></ion-icon>\r\n Download\r\n </ion-button>\r\n @if(storageService.GetProgress(this.value().toString())){\r\n <ion-progress-bar [value]=\"storageService.GetProgress(this.value().toString())\"></ion-progress-bar>\r\n }\r\n @if(isImage){\r\n <image fill=\"clear\" [src]=\"value().toString()\"></image>\r\n }\r\n }\r\n @else if(isImage){\r\n <ion-img [src]=\"objectURL\" class=\"w-full h-32\"></ion-img>\r\n }\r\n </div>\r\n </ion-content>\r\n </ng-template>\r\n </ion-popover>\r\n </div>\r\n\r\n <div class=\"loading-container\" [class.loading]=\"loading()\">\r\n <ion-spinner></ion-spinner>\r\n </div>\r\n</div>", styles: [".file-label-container{position:relative;display:flex;height:1.5rem;width:100%;align-items:center;justify-content:flex-start;gap:.25rem}.input-container{padding-right:.25rem!important}.ellipsis-button{opacity:0;pointer-events:none;will-change:opacity;transition:opacity .2s ease-in-out}.ellipsis-button.available{pointer-events:auto;opacity:1}\n", "@property --input-color{syntax: \"<color>\"; initial-value: transparent; inherits: false;}.input-container{position:relative;--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));cursor:text;border-radius:.75rem;padding:.25rem .75rem;--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);transition:--input-color .2s ease-in-out,box-shadow .2s ease-in-out,opacity .2s ease-in-out,filter .2s ease-in-out;--color: var(--ion-color-dark);--input-color: var(--input-background, var(--ion-color-step-250));--shadow: 0 3px 4px -1px rgb(0 0 0 / .1);--inset-shadow: var(--input-color) 0px 1.75px 1px 0px inset;--focused-shadow: 0 0 1px 2px color-mix(in srgb, var(--ion-color-medium) 35%, transparent);box-shadow:var(--inset-shadow),var(--shadow);will-change:box-shadow,filter opacity;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;background:radial-gradient(ellipse at 0px top,hsl(from var(--input-color) h s l/.5),hsl(from var(--input-color) h s l/.4)),hsl(from var(--ion-color-light) h s l/.8)}.input-container:hover{--tw-brightness: brightness(.9);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container:focus-within,.input-container:focus,.input-container.manual-focus{box-shadow:var(--inset-shadow),var(--shadow),var(--focused-shadow);--tw-brightness: brightness(.9);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container .input-label{pointer-events:none;display:flex;height:1rem;width:100%;min-width:0px;max-width:100%;align-items:center;justify-content:flex-start;gap:.25rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.75rem;line-height:1rem;color:var(--color)}.input-container input,.input-container textarea{height:1.5rem;width:100%;border-radius:.375rem;background-color:transparent;font-size:.875rem;line-height:1.25rem;color:var(--ion-color-dark);outline:2px solid transparent;outline-offset:2px}.input-container.loading{cursor:wait!important}.input-container.required .input-label:after{content:\"*\";color:var(--ion-color-danger);vertical-align:bottom}.input-container.submitted.invalid{--input-color: color-mix(in srgb, var(--ion-color-danger) 50%, transparent)}.input-container.disabled{cursor:not-allowed;opacity:.5;--tw-brightness: brightness(1);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.input-container.disabled *{pointer-events:none}.loading-container{position:absolute;pointer-events:none;width:100%;height:100%;top:0;left:0;display:flex;justify-content:end;align-items:center;padding-right:.5rem;will-change:opacity;transition:opacity .2s ease-in-out;overflow:hidden;opacity:0;z-index:10}.loading-container ion-spinner{will-change:transform;transition:transform .2s ease-in-out;transform:translateY(-100%)}.loading-container.loading{opacity:1}.loading-container.loading ion-spinner{transform:translateY(0)}ion-modal::part(content){border-radius:.75rem;border:1px solid var(--ion-color-step-250)}\n"] }]
|
|
73
73
|
}], ctorParameters: () => [{ type: i1.UtilsService }, { type: i2.StorageService }], propDecorators: { inputContainer: [{
|
|
74
74
|
type: ViewChild,
|
|
75
75
|
args: ['inputContainer']
|
|
@@ -90,4 +90,4 @@ export const lstImage = [
|
|
|
90
90
|
'jfif',
|
|
91
91
|
'avif',
|
|
92
92
|
];
|
|
93
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZmlsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXRzL2lucHV0LWZpbGUvaW5wdXQtZmlsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXRzL2lucHV0LWZpbGUvaW5wdXQtZmlsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQXVCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7Ozs7O0FBU3ZFLE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxXQUEwQjtJQUsxRCxLQUFLLENBQUMsS0FBaUI7UUFDOUIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVELFlBQ1UsWUFBMEIsRUFDM0IsY0FBOEI7UUFDbkMsS0FBSyxFQUFFLENBQUM7UUFGRixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMzQixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFWdkMsa0JBQWEsR0FBd0MsS0FBSyxDQUF5QixJQUFJLHNCQUFzQixFQUFFLENBQUMsQ0FBQztRQWFqSCxnQkFBVyxHQUFXLEVBQUUsQ0FBQztRQUN6QixhQUFR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QUFRLEdBQWE7SUFDaEMsS0FBSztJQUNMLEtBQUs7SUFDTCxNQUFNO0lBQ04sS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxNQUFNO0lBQ04sS0FBSztJQUNMLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07Q0FDUCxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBpbnB1dCwgSW5wdXRTaWduYWwsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEN1c3RvbUlucHV0IH0gZnJvbSAnLi4vY3VzdG9tLWlucHV0JztcclxuaW1wb3J0IHsgSW5wdXRGaWxlQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vaW5wdXQtZmlsZS5jb25maWd1cmF0aW9uJztcclxuaW1wb3J0IHsgSW5wdXRQcm92aWRlckZhY3RvcnkgfSBmcm9tICcuLi9pbnB1dC1wcm92aWRlci1mYWN0b3J5JztcclxuaW1wb3J0IHsgVXRpbHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdXRpbHMuc2VydmljZSc7XHJcbmltcG9ydCB7IFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvd2ViL3N0b3JhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IElvbkltZyB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaW5wdXQtZmlsZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LWZpbGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2lucHV0LWZpbGUuY29tcG9uZW50LnNjc3MnLCAnLi4vaW5wdXRzLnNjc3MnXSxcclxuICBwcm92aWRlcnM6IFsuLi5JbnB1dFByb3ZpZGVyRmFjdG9yeS5HZXRQcm92aWRlcnMoTmV3SW5wdXRGaWxlQ29tcG9uZW50KV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZXdJbnB1dEZpbGVDb21wb25lbnQgZXh0ZW5kcyBDdXN0b21JbnB1dDxGaWxlIHwgc3RyaW5nPiB7XHJcblxyXG4gIGNvbmZpZ3VyYXRpb246IElucHV0U2lnbmFsPElucHV0RmlsZUNvbmZpZ3VyYXRpb24+ID0gaW5wdXQ8SW5wdXRGaWxlQ29uZmlndXJhdGlvbj4obmV3IElucHV0RmlsZUNvbmZpZ3VyYXRpb24oKSk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2lucHV0Q29udGFpbmVyJykgaW5wdXRDb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG4gIG92ZXJyaWRlIGZvY3VzKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLlVwbG9hZCgpO1xyXG4gICAgdGhpcy5pbnB1dENvbnRhaW5lci5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgdXRpbHNTZXJ2aWNlOiBVdGlsc1NlcnZpY2UsXHJcbiAgICBwdWJsaWMgc3RvcmFnZVNlcnZpY2U6IFN0b3JhZ2VTZXJ2aWNlXHJcbiAgKSB7IHN1cGVyKCk7IH1cclxuXHJcbiAgdmFsdWVTdHJpbmc6IHN0cmluZyA9IFwiXCI7XHJcbiAgaXNTdHJpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc0ltYWdlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgb2JqZWN0VVJMOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuXHJcblxyXG4gIG92ZXJyaWRlIHdyaXRlVmFsdWUob2JqOiBGaWxlIHwgc3RyaW5nKTogdm9pZCB8IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy52YWx1ZS5zZXQob2JqKTtcclxuICAgIHRoaXMuU2V0VmFsdWVTdHJpbmcoKTtcclxuICAgIHRoaXMucnVuVmFsaWRhdGlvbigpO1xyXG4gIH1cclxuICBvdmVycmlkZSBTZXRWYWx1ZSh2YWx1ZTogRmlsZSB8IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy52YWx1ZS5zZXQodmFsdWUpO1xyXG4gICAgdGhpcy5TZXRWYWx1ZVN0cmluZygpO1xyXG4gICAgdGhpcy5ydW5WYWxpZGF0aW9uKCk7XHJcbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLnZhbHVlKCkpO1xyXG4gIH1cclxuICBcclxuICBTZXRWYWx1ZVN0cmluZygpOiB2b2lkIHtcclxuICAgIHRoaXMub2JqZWN0VVJMID0gbnVsbDtcclxuICAgIHRoaXMuaXNTdHJpbmcgPSB0eXBlb2YgdGhpcy52YWx1ZSgpID09IFwic3RyaW5nXCI7XHJcbiAgICBpZighdGhpcy52YWx1ZSgpKSB7IHRoaXMudmFsdWVTdHJpbmcgPSBcIi4uLlwiOyByZXR1cm47IH1cclxuICAgIHRoaXMudmFsdWVTdHJpbmcgPSB0eXBlb2YgdGhpcy52YWx1ZSgpID09IFwic3RyaW5nXCIgPyAgU3RvcmFnZVNlcnZpY2UuU2FuaXRpemVGaWxlTmFtZSh0aGlzLnZhbHVlKCkudG9TdHJpbmcoKSkgOiAodGhpcy52YWx1ZSgpIGFzIEZpbGUpLm5hbWU7XHJcbiAgICBcclxuICAgIHRoaXMuaXNJbWFnZSA9IGxzdEltYWdlLmluY2x1ZGVzKHRoaXMudmFsdWVTdHJpbmcuc3BsaXQoJy4nKS5hdCgtMSkudG9Mb3dlckNhc2UoKSk7XHJcbiAgICBpZih0aGlzLmlzSW1hZ2UgJiYgIXRoaXMuaXNTdHJpbmcpe1xyXG4gICAgICB0aGlzLm9iamVjdFVSTCA9IFVSTC5jcmVhdGVPYmplY3RVUkwodGhpcy52YWx1ZSgpIGFzIEZpbGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgVXBsb2FkKCk6IFByb21pc2U8dm9pZD57XHJcbiAgICB0cnl7XHJcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMudXRpbHNTZXJ2aWNlLlNlbGVjdEZpbGUodGhpcy5jb25maWd1cmF0aW9uKCkpO1xyXG4gICAgICBpZihyZXMpeyB0aGlzLlNldFZhbHVlKHJlcyk7IH1cclxuICAgIH1jYXRjaHt9XHJcbiAgfVxyXG5cclxuICBDbGVhcihldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLlNldFZhbHVlKG51bGwpO1xyXG4gIH1cclxuXHJcbiAgRG93bmxvYWQoKTogdm9pZHtcclxuICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UuU3RhcnREb3dubG9hZCh0aGlzLnZhbHVlKCkgYXMgc3RyaW5nKTtcclxuICB9XHJcbn1cclxuZXhwb3J0IGNvbnN0IGxzdEltYWdlOiBzdHJpbmdbXSA9IFtcclxuICAnanBlJyxcclxuICAnanBnJyxcclxuICAnanBlZycsXHJcbiAgJ2dpZicsXHJcbiAgJ3BuZycsXHJcbiAgJ2JtcCcsXHJcbiAgJ2ljbycsXHJcbiAgJ3N2ZycsXHJcbiAgJ3N2Z3onLFxyXG4gICd0aWYnLFxyXG4gICd0aWZmJyxcclxuICAnd2VicCcsXHJcbiAgJ2pmaWYnLFxyXG4gICdhdmlmJyxcclxuXSAiLCI8ZGl2IFxyXG4gICNpbnB1dENvbnRhaW5lclxyXG4gIGNsYXNzPVwiaW5wdXQtY29udGFpbmVyXCIgXHJcbiAgKGNsaWNrKT1cImZvY3VzKCRldmVudClcIlxyXG4gIFtjbGFzcy5yZXF1aXJlZF09XCJyZXF1aXJlZCgpXCIgXHJcbiAgW2NsYXNzLnN1Ym1pdHRlZF09XCJzdWJtaXR0ZWQoKVwiIFxyXG4gIFtjbGFzcy5pbnZhbGlkXT1cImludmFsaWRcIiBcclxuICBbY2xhc3MuZGlzYWJsZWRdPVwiZGlzYWJsZWQoKSB8fCBsb2FkaW5nKClcIlxyXG4gIFtjbGFzcy5sb2FkaW5nXT1cImxvYWRpbmcoKVwiXHJcbj5cclxuICA8ZGl2IGNsYXNzPVwiaW5wdXQtbGFiZWxcIj4gXHJcbiAgICA8c3BhbiBjbGFzcz1cInRydW5jYXRlXCI+XHJcbiAgICAgIHt7bGFiZWwoKX19IFxyXG4gICAgPC9zcGFuPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgdGFiaW5kZXg9XCIwXCIgY2xhc3M9XCJmaWxlLWxhYmVsLWNvbnRhaW5lciB0ZXh0LWRhcmtcIiBbdGl0bGVdPVwidmFsdWVTdHJpbmdcIiAoY2xpY2spPVwiVXBsb2FkKClcIj5cclxuICAgIDxpb24taWNvbiBjbGFzcz1cInNocmluay0wXCIgY29sb3I9XCJkYXJrXCIgbmFtZT1cImRvY3VtZW50XCI+PC9pb24taWNvbj4gXHJcbiAgICA8c3BhbiBjbGFzcz1cInNocmluayB0cnVuY2F0ZVwiPlxyXG4gICAgICB7e3ZhbHVlU3RyaW5nfX1cclxuICAgIDwvc3Bhbj5cclxuXHJcbiAgICA8aW9uLWJ1dHRvbiBbY2xhc3MuYXZhaWxhYmxlXT1cInZhbHVlKClcIiBjb2xvcj1cIm1lZGl1bVwiIGNsYXNzPVwiZWxsaXBzaXMtYnV0dG9uIG1sLWF1dG8gc2hyaW5rLTBcIiBmaWxsPVwiY2xlYXJcIiBzdHlsZT1cIi0tYm9yZGVyLXJhZGl1czogLjVyZW1cIiBzaXplPVwic21hbGxcIiAoY2xpY2spPVwicG9wb3Zlci5wcmVzZW50KCRldmVudCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxyXG4gICAgICA8aW9uLWljb24gbmFtZT1cImVsbGlwc2lzLXZlcnRpY2FsXCIgc2xvdD1cImljb24tb25seVwiPjwvaW9uLWljb24+XHJcbiAgICA8L2lvbi1idXR0b24+XHJcbiAgICA8aW9uLXBvcG92ZXIgI3BvcG92ZXI+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZT5cclxuICAgICAgICA8aW9uLWNvbnRlbnQ+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2l6ZS1mdWxsIGZsZXggZmxleC1jb2xcIj5cclxuICAgICAgICAgICAgQGlmKHZhbHVlKCkpe1xyXG4gICAgICAgICAgICAgIDxpb24tYnV0dG9uIGNvbG9yPVwiZGFuZ2VyXCJzaXplPVwic21hbGxcIiAgc3R5bGU9XCItLWJvcmRlci1yYWRpdXM6IDByZW1cIiAoY2xpY2spPVwiQ2xlYXIoJGV2ZW50KTsgcG9wb3Zlci5kaXNtaXNzKClcIj5cclxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBjb2xvcj1cImRhcmtcIiBuYW1lPVwidHJhc2hcIiBzbG90PVwiaWNvbi1vbmx5XCI+PC9pb24taWNvbj5cclxuICAgICAgICAgICAgICAgIExpbXBhclxyXG4gICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBAaWYoaXNTdHJpbmcpe1xyXG4gICAgICAgICAgICAgIDxpb24tYnV0dG9uIGNvbG9yPVwic2Vjb25kYXJ5XCIgc2l6ZT1cInNtYWxsXCIgc3R5bGU9XCItLWJvcmRlci1yYWRpdXM6IDByZW1cIiAoY2xpY2spPVwiRG93bmxvYWQoKVwiPlxyXG4gICAgICAgICAgICAgICAgPGlvbi1pY29uIGNvbG9yPVwiZGFya1wiIG5hbWU9XCJkb3dubG9hZFwiIHNsb3Q9XCJzdGFydFwiPjwvaW9uLWljb24+XHJcbiAgICAgICAgICAgICAgICBEb3dubG9hZFxyXG4gICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgICAgICBAaWYoc3RvcmFnZVNlcnZpY2UuR2V0UHJvZ3Jlc3ModGhpcy52YWx1ZSgpLnRvU3RyaW5nKCkpKXtcclxuICAgICAgICAgICAgICAgIDxpb24tcHJvZ3Jlc3MtYmFyIFt2YWx1ZV09XCJzdG9yYWdlU2VydmljZS5HZXRQcm9ncmVzcyh0aGlzLnZhbHVlKCkudG9TdHJpbmcoKSlcIj48L2lvbi1wcm9ncmVzcy1iYXI+XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIEBpZihpc0ltYWdlKXtcclxuICAgICAgICAgICAgICAgIDxpbWFnZSBmaWxsPVwiY2xlYXJcIiBbc3JjXT1cInZhbHVlKCkudG9TdHJpbmcoKVwiPjwvaW1hZ2U+XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIEBlbHNlIGlmKGlzSW1hZ2Upe1xyXG4gICAgICAgICAgICAgIDxpb24taW1nIFtzcmNdPVwib2JqZWN0VVJMXCIgY2xhc3M9XCJ3LWZ1bGwgaC0zMlwiPjwvaW9uLWltZz5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9pb24tY29udGVudD5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvaW9uLXBvcG92ZXI+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJsb2FkaW5nLWNvbnRhaW5lclwiIFtjbGFzcy5sb2FkaW5nXT1cImxvYWRpbmcoKVwiPlxyXG4gICAgPGlvbi1zcGlubmVyPjwvaW9uLXNwaW5uZXI+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZmlsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXRzL2lucHV0LWZpbGUvaW5wdXQtZmlsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXRzL2lucHV0LWZpbGUvaW5wdXQtZmlsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQXVCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7Ozs7O0FBU3ZFLE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxXQUEwQjtJQUt2RCxLQUFLLENBQUMsS0FBaUI7UUFDOUIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVELFlBQ1UsWUFBMEIsRUFDM0IsY0FBOEI7UUFDbkMsS0FBSyxFQUFFLENBQUM7UUFGRixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMzQixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFWdkMsa0JBQWEsR0FBd0MsS0FBSyxDQUF5QixJQUFJLHNCQUFzQixFQUFFLENBQUMsQ0FBQztRQWFqSCxnQkFBVyxHQUFXLEVBQUUsQ0FBQztRQUN6QixhQUFR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QUFRLEdBQWE7SUFDaEMsS0FBSztJQUNMLEtBQUs7SUFDTCxNQUFNO0lBQ04sS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxNQUFNO0lBQ04sS0FBSztJQUNMLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07Q0FDUCxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBpbnB1dCwgSW5wdXRTaWduYWwsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEN1c3RvbUlucHV0IH0gZnJvbSAnLi4vY3VzdG9tLWlucHV0JztcclxuaW1wb3J0IHsgSW5wdXRGaWxlQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vaW5wdXQtZmlsZS5jb25maWd1cmF0aW9uJztcclxuaW1wb3J0IHsgSW5wdXRQcm92aWRlckZhY3RvcnkgfSBmcm9tICcuLi9pbnB1dC1wcm92aWRlci1mYWN0b3J5JztcclxuaW1wb3J0IHsgVXRpbHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdXRpbHMuc2VydmljZSc7XHJcbmltcG9ydCB7IFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvd2ViL3N0b3JhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IElvbkltZyB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaW5wdXQtZmlsZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LWZpbGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2lucHV0LWZpbGUuY29tcG9uZW50LnNjc3MnLCAnLi4vaW5wdXRzLnNjc3MnXSxcclxuICBwcm92aWRlcnM6IFsuLi5JbnB1dFByb3ZpZGVyRmFjdG9yeS5HZXRQcm92aWRlcnMoSW5wdXRGaWxlQ29tcG9uZW50KV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbnB1dEZpbGVDb21wb25lbnQgZXh0ZW5kcyBDdXN0b21JbnB1dDxGaWxlIHwgc3RyaW5nPiB7XHJcblxyXG4gIGNvbmZpZ3VyYXRpb246IElucHV0U2lnbmFsPElucHV0RmlsZUNvbmZpZ3VyYXRpb24+ID0gaW5wdXQ8SW5wdXRGaWxlQ29uZmlndXJhdGlvbj4obmV3IElucHV0RmlsZUNvbmZpZ3VyYXRpb24oKSk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2lucHV0Q29udGFpbmVyJykgaW5wdXRDb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG4gIG92ZXJyaWRlIGZvY3VzKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLlVwbG9hZCgpO1xyXG4gICAgdGhpcy5pbnB1dENvbnRhaW5lci5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgdXRpbHNTZXJ2aWNlOiBVdGlsc1NlcnZpY2UsXHJcbiAgICBwdWJsaWMgc3RvcmFnZVNlcnZpY2U6IFN0b3JhZ2VTZXJ2aWNlXHJcbiAgKSB7IHN1cGVyKCk7IH1cclxuXHJcbiAgdmFsdWVTdHJpbmc6IHN0cmluZyA9IFwiXCI7XHJcbiAgaXNTdHJpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc0ltYWdlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgb2JqZWN0VVJMOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuXHJcblxyXG4gIG92ZXJyaWRlIHdyaXRlVmFsdWUob2JqOiBGaWxlIHwgc3RyaW5nKTogdm9pZCB8IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy52YWx1ZS5zZXQob2JqKTtcclxuICAgIHRoaXMuU2V0VmFsdWVTdHJpbmcoKTtcclxuICAgIHRoaXMucnVuVmFsaWRhdGlvbigpO1xyXG4gIH1cclxuICBvdmVycmlkZSBTZXRWYWx1ZSh2YWx1ZTogRmlsZSB8IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy52YWx1ZS5zZXQodmFsdWUpO1xyXG4gICAgdGhpcy5TZXRWYWx1ZVN0cmluZygpO1xyXG4gICAgdGhpcy5ydW5WYWxpZGF0aW9uKCk7XHJcbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLnZhbHVlKCkpO1xyXG4gIH1cclxuICBcclxuICBTZXRWYWx1ZVN0cmluZygpOiB2b2lkIHtcclxuICAgIHRoaXMub2JqZWN0VVJMID0gbnVsbDtcclxuICAgIHRoaXMuaXNTdHJpbmcgPSB0eXBlb2YgdGhpcy52YWx1ZSgpID09IFwic3RyaW5nXCI7XHJcbiAgICBpZighdGhpcy52YWx1ZSgpKSB7IHRoaXMudmFsdWVTdHJpbmcgPSBcIi4uLlwiOyByZXR1cm47IH1cclxuICAgIHRoaXMudmFsdWVTdHJpbmcgPSB0eXBlb2YgdGhpcy52YWx1ZSgpID09IFwic3RyaW5nXCIgPyAgU3RvcmFnZVNlcnZpY2UuU2FuaXRpemVGaWxlTmFtZSh0aGlzLnZhbHVlKCkudG9TdHJpbmcoKSkgOiAodGhpcy52YWx1ZSgpIGFzIEZpbGUpLm5hbWU7XHJcbiAgICBcclxuICAgIHRoaXMuaXNJbWFnZSA9IGxzdEltYWdlLmluY2x1ZGVzKHRoaXMudmFsdWVTdHJpbmcuc3BsaXQoJy4nKS5hdCgtMSkudG9Mb3dlckNhc2UoKSk7XHJcbiAgICBpZih0aGlzLmlzSW1hZ2UgJiYgIXRoaXMuaXNTdHJpbmcpe1xyXG4gICAgICB0aGlzLm9iamVjdFVSTCA9IFVSTC5jcmVhdGVPYmplY3RVUkwodGhpcy52YWx1ZSgpIGFzIEZpbGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgVXBsb2FkKCk6IFByb21pc2U8dm9pZD57XHJcbiAgICB0cnl7XHJcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMudXRpbHNTZXJ2aWNlLlNlbGVjdEZpbGUodGhpcy5jb25maWd1cmF0aW9uKCkpO1xyXG4gICAgICBpZihyZXMpeyB0aGlzLlNldFZhbHVlKHJlcyk7IH1cclxuICAgIH1jYXRjaHt9XHJcbiAgfVxyXG5cclxuICBDbGVhcihldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLlNldFZhbHVlKG51bGwpO1xyXG4gIH1cclxuXHJcbiAgRG93bmxvYWQoKTogdm9pZHtcclxuICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UuU3RhcnREb3dubG9hZCh0aGlzLnZhbHVlKCkgYXMgc3RyaW5nKTtcclxuICB9XHJcbn1cclxuZXhwb3J0IGNvbnN0IGxzdEltYWdlOiBzdHJpbmdbXSA9IFtcclxuICAnanBlJyxcclxuICAnanBnJyxcclxuICAnanBlZycsXHJcbiAgJ2dpZicsXHJcbiAgJ3BuZycsXHJcbiAgJ2JtcCcsXHJcbiAgJ2ljbycsXHJcbiAgJ3N2ZycsXHJcbiAgJ3N2Z3onLFxyXG4gICd0aWYnLFxyXG4gICd0aWZmJyxcclxuICAnd2VicCcsXHJcbiAgJ2pmaWYnLFxyXG4gICdhdmlmJyxcclxuXSAiLCI8ZGl2IFxyXG4gICNpbnB1dENvbnRhaW5lclxyXG4gIGNsYXNzPVwiaW5wdXQtY29udGFpbmVyXCIgXHJcbiAgKGNsaWNrKT1cImZvY3VzKCRldmVudClcIlxyXG4gIFtjbGFzcy5yZXF1aXJlZF09XCJyZXF1aXJlZCgpXCIgXHJcbiAgW2NsYXNzLnN1Ym1pdHRlZF09XCJzdWJtaXR0ZWQoKVwiIFxyXG4gIFtjbGFzcy5pbnZhbGlkXT1cImludmFsaWRcIiBcclxuICBbY2xhc3MuZGlzYWJsZWRdPVwiZGlzYWJsZWQoKSB8fCBsb2FkaW5nKClcIlxyXG4gIFtjbGFzcy5sb2FkaW5nXT1cImxvYWRpbmcoKVwiXHJcbj5cclxuICA8ZGl2IGNsYXNzPVwiaW5wdXQtbGFiZWxcIj4gXHJcbiAgICA8c3BhbiBjbGFzcz1cInRydW5jYXRlXCI+XHJcbiAgICAgIHt7bGFiZWwoKX19IFxyXG4gICAgPC9zcGFuPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgdGFiaW5kZXg9XCIwXCIgY2xhc3M9XCJmaWxlLWxhYmVsLWNvbnRhaW5lciB0ZXh0LWRhcmtcIiBbdGl0bGVdPVwidmFsdWVTdHJpbmdcIiAoY2xpY2spPVwiVXBsb2FkKClcIj5cclxuICAgIDxpb24taWNvbiBjbGFzcz1cInNocmluay0wXCIgY29sb3I9XCJkYXJrXCIgbmFtZT1cImRvY3VtZW50XCI+PC9pb24taWNvbj4gXHJcbiAgICA8c3BhbiBjbGFzcz1cInNocmluayB0cnVuY2F0ZVwiPlxyXG4gICAgICB7e3ZhbHVlU3RyaW5nfX1cclxuICAgIDwvc3Bhbj5cclxuXHJcbiAgICA8aW9uLWJ1dHRvbiBbY2xhc3MuYXZhaWxhYmxlXT1cInZhbHVlKClcIiBjb2xvcj1cIm1lZGl1bVwiIGNsYXNzPVwiZWxsaXBzaXMtYnV0dG9uIG1sLWF1dG8gc2hyaW5rLTBcIiBmaWxsPVwiY2xlYXJcIiBzdHlsZT1cIi0tYm9yZGVyLXJhZGl1czogLjVyZW1cIiBzaXplPVwic21hbGxcIiAoY2xpY2spPVwicG9wb3Zlci5wcmVzZW50KCRldmVudCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxyXG4gICAgICA8aW9uLWljb24gbmFtZT1cImVsbGlwc2lzLXZlcnRpY2FsXCIgc2xvdD1cImljb24tb25seVwiPjwvaW9uLWljb24+XHJcbiAgICA8L2lvbi1idXR0b24+XHJcbiAgICA8aW9uLXBvcG92ZXIgI3BvcG92ZXI+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZT5cclxuICAgICAgICA8aW9uLWNvbnRlbnQ+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2l6ZS1mdWxsIGZsZXggZmxleC1jb2xcIj5cclxuICAgICAgICAgICAgQGlmKHZhbHVlKCkpe1xyXG4gICAgICAgICAgICAgIDxpb24tYnV0dG9uIGNvbG9yPVwiZGFuZ2VyXCJzaXplPVwic21hbGxcIiAgc3R5bGU9XCItLWJvcmRlci1yYWRpdXM6IDByZW1cIiAoY2xpY2spPVwiQ2xlYXIoJGV2ZW50KTsgcG9wb3Zlci5kaXNtaXNzKClcIj5cclxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBjb2xvcj1cImRhcmtcIiBuYW1lPVwidHJhc2hcIiBzbG90PVwiaWNvbi1vbmx5XCI+PC9pb24taWNvbj5cclxuICAgICAgICAgICAgICAgIExpbXBhclxyXG4gICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBAaWYoaXNTdHJpbmcpe1xyXG4gICAgICAgICAgICAgIDxpb24tYnV0dG9uIGNvbG9yPVwic2Vjb25kYXJ5XCIgc2l6ZT1cInNtYWxsXCIgc3R5bGU9XCItLWJvcmRlci1yYWRpdXM6IDByZW1cIiAoY2xpY2spPVwiRG93bmxvYWQoKVwiPlxyXG4gICAgICAgICAgICAgICAgPGlvbi1pY29uIGNvbG9yPVwiZGFya1wiIG5hbWU9XCJkb3dubG9hZFwiIHNsb3Q9XCJzdGFydFwiPjwvaW9uLWljb24+XHJcbiAgICAgICAgICAgICAgICBEb3dubG9hZFxyXG4gICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgICAgICBAaWYoc3RvcmFnZVNlcnZpY2UuR2V0UHJvZ3Jlc3ModGhpcy52YWx1ZSgpLnRvU3RyaW5nKCkpKXtcclxuICAgICAgICAgICAgICAgIDxpb24tcHJvZ3Jlc3MtYmFyIFt2YWx1ZV09XCJzdG9yYWdlU2VydmljZS5HZXRQcm9ncmVzcyh0aGlzLnZhbHVlKCkudG9TdHJpbmcoKSlcIj48L2lvbi1wcm9ncmVzcy1iYXI+XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIEBpZihpc0ltYWdlKXtcclxuICAgICAgICAgICAgICAgIDxpbWFnZSBmaWxsPVwiY2xlYXJcIiBbc3JjXT1cInZhbHVlKCkudG9TdHJpbmcoKVwiPjwvaW1hZ2U+XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIEBlbHNlIGlmKGlzSW1hZ2Upe1xyXG4gICAgICAgICAgICAgIDxpb24taW1nIFtzcmNdPVwib2JqZWN0VVJMXCIgY2xhc3M9XCJ3LWZ1bGwgaC0zMlwiPjwvaW9uLWltZz5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9pb24tY29udGVudD5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvaW9uLXBvcG92ZXI+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJsb2FkaW5nLWNvbnRhaW5lclwiIFtjbGFzcy5sb2FkaW5nXT1cImxvYWRpbmcoKVwiPlxyXG4gICAgPGlvbi1zcGlubmVyPjwvaW9uLXNwaW5uZXI+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
|