@sapphire-ion/framework 1.0.33 → 1.0.34
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/drawer/drawer.component.mjs +2 -2
- package/esm2022/lib/components/inputs/input-color/input-color.component.mjs +1 -1
- package/esm2022/lib/components/inputs/input-date/input-date.component.mjs +3 -3
- package/esm2022/lib/components/inputs/input-select/input-select.component.mjs +22 -6
- package/esm2022/lib/components/inputs/input-select/input.select.configuration.mjs +16 -1
- package/esm2022/lib/components/main-content/main-content.component.mjs +1 -1
- package/esm2022/lib/components/popover/sion-popover/sion-popover.component.mjs +118 -108
- package/esm2022/lib/components/popover/sion-popover.module.mjs +3 -6
- package/fesm2022/sapphire-ion-framework.mjs +162 -124
- package/fesm2022/sapphire-ion-framework.mjs.map +1 -1
- package/lib/components/inputs/input-select/input-select.component.d.ts +4 -1
- package/lib/components/inputs/input-select/input.select.configuration.d.ts +19 -0
- package/lib/components/popover/sion-popover/sion-popover.component.d.ts +21 -13
- package/package.json +1 -1
- package/themes/components/popover/sion-popover/sion-popover.component.scss +14 -32
|
@@ -74,7 +74,7 @@ export class MainContentComponent {
|
|
|
74
74
|
}
|
|
75
75
|
}
|
|
76
76
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MainContentComponent, deps: [{ token: i1.AuthService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
77
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: MainContentComponent, isStandalone: true, selector: "main-content", inputs: { backdrop: "backdrop", shadowColor: "shadowColor", colapsed: "colapsed", drawerComponent: "drawerComponent" }, viewQueries: [{ propertyName: "FullScreenConteiner", first: true, predicate: ["target"], descendants: true }], ngImport: i0, template: "<div class=\"size-full flex flex-col\" [ngClass]=\"{'bg-light/50': fullScreen}\" #target>\r\n <div class=\"w-full h-14 relative shrink-0\">\r\n <ion-card class=\"m-0 rounded-none size-full border-none\">\r\n <ion-card-content class=\"p-0 px-2 size-full flex\">\r\n <div class=\"w-1/2 h-full flex items-center justify-start\">\r\n @if (!fullScreen) {\r\n <ion-menu-button [routerLink]=\"['/']\" [autoHide]=\"true\"></ion-menu-button>\r\n }\r\n <ng-content select=\"[slot=start]\"></ng-content>\r\n </div>\r\n\r\n <div class=\"w-1/2 h-full flex items-center justify-end gap-2\">\r\n <ng-content select=\"[slot=end]\"></ng-content>\r\n\r\n <ion-button (click)=\"FullScreen()\" fill=\"outline\" color=\"dark\" size=\"small\" class=\"size-10 aspect-square portrait:hidden\">\r\n <ion-icon slot=\"icon-only\" name=\"expand\"></ion-icon>\r\n </ion-button>\r\n\r\n\r\n @if (!fullScreen) {\r\n <div #anchor>\r\n <ion-button (click)=\"userPopover.present($event)\" size=\"small\" class=\"size-10 aspect-square\">\r\n <span class=\"uppercase text-white\">{{Token ? Token.Nome[0] : ''}}</span>\r\n </ion-button>\r\n </div>\r\n <sion-popover #userPopover [anchor]=\"anchor\" [flip]=\"false\" width=\"13rem\">\r\n <div class=\"w-full flex flex-col overflow-hidden\">\r\n <div class=\"w-full flex p-2 gap-2 overflow-hidden\">\r\n <div class=\"size-10 shrink-0 aspect-square rounded-2xl text-sm flex items-center justify-center bg-primary\">\r\n <span class=\"uppercase text-white\">{{Token ? Token.Nome[0] : ''}}</span>\r\n </div>\r\n\r\n <div class=\"shrink-0 w-full flex flex-col justify-center items-start overflow-hidden text-sm\">\r\n <span class=\"truncate\"> {{Token ? Token.Nome : ''}} </span>\r\n <span class=\"truncate text-secondary\"> @{{Token ? Token.Apelido : ''}} </span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"w-full\">\r\n <ng-content class=\"size-full\" select=\"[slot=user-popover]\"></ng-content>\r\n </div>\r\n\r\n <div class=\"w-full p-1 !pb-0 translucid-border !border-x-0 !border-b-0\">\r\n <div class=\"rounded-xl flex gap-2 items-center justify-start default-transition py-1 px-2\">\r\n <ion-icon name=\"contrast\"></ion-icon>\r\n <ion-text> Tema </ion-text>\r\n </div>\r\n\r\n <div class=\"flex flex-col pl-4\">\r\n <ion-radio-group alignment=\"start\" [allowEmptySelection]=\"false\" [value]=\"Theme\" (ionChange)=\"SetTheme($event.detail.value)\">\r\n <ion-item class=\"bg-transparent\" lines=\"full\">\r\n <ion-icon name=\"cog\" slot=\"start\"></ion-icon>\r\n <ion-radio class=\"w-full\" [value]=\"0\">Sistema</ion-radio>\r\n </ion-item>\r\n <ion-item class=\"bg-transparent\" lines=\"full\">\r\n <ion-icon name=\"sunny\" slot=\"start\"></ion-icon>\r\n <ion-radio class=\"w-full\" [value]=\"1\">Claro</ion-radio>\r\n </ion-item>\r\n <ion-item class=\"bg-transparent\" lines=\"none\">\r\n <ion-icon name=\"moon\" slot=\"start\"></ion-icon>\r\n <ion-radio class=\"w-full\" [value]=\"2\">Escuro</ion-radio>\r\n </ion-item>\r\n </ion-radio-group>\r\n\r\n\r\n <!-- <div class=\"w-full p-1 translucid-border !border-x-0 !border-b-0 overflow-hidden\">\r\n <div class=\"rounded-xl flex gap-2 items-center justify-start cursor-pointer hover:bg-medium/30 default-transition py-1 px-2\">\r\n <ion-checkbox [checked]=\"Theme == 0\" (ionChange)=\"SetTheme(0)\" ></ion-checkbox>\r\n <ion-icon name=\"cog\"></ion-icon>\r\n <ion-text> Sistema </ion-text>\r\n </div>\r\n </div>\r\n <div class=\"w-full p-1 translucid-border !border-x-0 !border-b-0 overflow-hidden\">\r\n <div class=\"rounded-xl flex gap-2 items-center justify-start cursor-pointer hover:bg-medium/30 default-transition py-1 px-2\">\r\n <ion-checkbox [checked]=\"Theme == 1\" (ionChange)=\"SetTheme(1)\" ></ion-checkbox>\r\n <ion-icon name=\"sunny\"></ion-icon>\r\n <ion-text> Claro </ion-text>\r\n </div>\r\n </div>\r\n <div class=\"w-full p-1 translucid-border !border-x-0 !border-b-0 overflow-hidden\">\r\n <div class=\"rounded-xl flex gap-2 items-center justify-start cursor-pointer hover:bg-medium/30 default-transition py-1 px-2\">\r\n <ion-checkbox [checked]=\"Theme == 2\" (ionChange)=\"SetTheme(2)\" ></ion-checkbox>\r\n <ion-icon name=\"moon\"></ion-icon>\r\n <ion-text> Escuro </ion-text>\r\n </div>\r\n </div> -->\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"w-full p-1 translucid-border !border-x-0 !border-b-0\">\r\n <div (click)=\"authService.Loggout()\" class=\"rounded-xl flex gap-2 cursor-pointer items-center justify-start hover:bg-medium/10 default-transition py-1 px-2\">\r\n <ion-icon color=\"danger\" name=\"exit\"></ion-icon>\r\n <ion-text> Log Out </ion-text>\r\n </div>\r\n\r\n <!-- <ion-text> Log Out </ion-text>\r\n <ion-button (click)=\"authService.Loggout()\" class=\"size-8 shrink-0\" size=\"small\" fill=\"clear\" color=\"danger\">\r\n <ion-icon slot=\"icon-only\" name=\"exit-outline\"></ion-icon> \r\n </ion-button> -->\r\n </div>\r\n </div>\r\n\r\n <!-- <div class=\"size-full\">\r\n <div class=\"w-full p-1 flex items-center\">\r\n <div class=\"size-10 shrink-0 aspect-square rounded-2xl text-sm flex items-center justify-center default-transition\" style=\"background-color: var(--ion-color-primary);\">\r\n <span class=\"uppercase text-white\">{{Token ? Token.Nome[0] : ''}}</span>\r\n </div>\r\n <div class=\"grow min-w-10 p-2 justify-center items-center whitespace-nowrap text-ellipsis overflow-hidden block default-transition\" [ngClass]=\"{'opacity-0 w-0': colapsed}\">\r\n <span>{{Token ? Token.Nome : ''}}</span> <br>\r\n <ion-text color=\"secondary\" class=\"text-sm\">\r\n @{{Token ? Token.Apelido : ''}}\r\n </ion-text>\r\n </div>\r\n </div>\r\n <div class=\"w-full\">\r\n <ng-content class=\"size-full\" select=\"[slot=user-popover]\"></ng-content>\r\n </div>\r\n <div class=\"w-full p-1 px-2 translucid-border !border-x-0 !border-b-0 flex items-center justify-between\">\r\n <div class=\"hover:bg-medium/30 default-transition size-full\">\r\n <ion-button color=\"dark\" fill=\"clear\" size=\"small\" class=\"rounded-xl w-full text-left overflow-hidden\">\r\n <ion-icon slot=\"start\" name=\"contrast\"></ion-icon>\r\n <ion-label class=\"text-sm\">Tema</ion-label>\r\n </ion-button>\r\n </div>\r\n </div>\r\n <div class=\"w-full p-1 px-2 translucid-border !border-x-0 !border-b-0 flex items-center justify-between\">\r\n <ion-text> Log Out </ion-text>\r\n <ion-button (click)=\"authService.Loggout()\" class=\"size-8 shrink-0\" size=\"small\" fill=\"clear\" color=\"danger\">\r\n <ion-icon slot=\"icon-only\" name=\"exit-outline\"></ion-icon> \r\n </ion-button>\r\n </div>\r\n </div> -->\r\n </sion-popover>\r\n }\r\n </div>\r\n </ion-card-content>\r\n </ion-card>\r\n </div>\r\n <div class=\"size-full relative p-2 pt-0 bg-light\">\r\n <div class=\"size-full relative rounded-2xl content-shadow overflow-hidden {{backdrop}}\" style=\"--shadow-color: {{shadowColor}}\">\r\n <ng-content></ng-content> \r\n </div>\r\n </div>\r\n</div>", styles: ["#popover-user{--width: 17rem}.content-shadow{--shadow-color: color-mix(in srgb, var(--ion-color-primary) 15%, transparent);box-shadow:0 0 0 1px var(--shadow-color),0 6px 10px -4px var(--shadow-color)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: IonicModule }, { 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.IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i3.IonCardContent, selector: "ion-card-content", inputs: ["mode"] }, { kind: "component", type: i3.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i3.IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i3.IonMenuButton, selector: "ion-menu-button", inputs: ["autoHide", "color", "disabled", "menu", "mode", "type"] }, { kind: "component", type: i3.IonRadio, selector: "ion-radio", inputs: ["alignment", "color", "disabled", "justify", "labelPlacement", "mode", "name", "value"] }, { kind: "component", type: i3.IonRadioGroup, selector: "ion-radio-group", inputs: ["allowEmptySelection", "compareWith", "errorText", "helperText", "name", "value"] }, { kind: "component", type: i3.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "directive", type: i3.SelectValueAccessor, selector: "ion-select, ion-radio-group, ion-segment, ion-datetime" }, { kind: "directive", type: i3.RouterLinkDelegate, selector: ":not(a):not(area)[routerLink]" }, { kind: "directive", type: RouterLinkWithHref, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: SIonPopoverModule }, { kind: "component", type: i4.SIonPopoverComponent, selector: "sion-popover", inputs: ["fill", "arrow", "flip", "placement", "height", "width", "anchor"], outputs: ["onWillPresent", "onDidPresent", "onWillDismiss", "onDidDismiss", "isVisibleChange"] }] }); }
|
|
77
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: MainContentComponent, isStandalone: true, selector: "main-content", inputs: { backdrop: "backdrop", shadowColor: "shadowColor", colapsed: "colapsed", drawerComponent: "drawerComponent" }, viewQueries: [{ propertyName: "FullScreenConteiner", first: true, predicate: ["target"], descendants: true }], ngImport: i0, template: "<div class=\"size-full flex flex-col\" [ngClass]=\"{'bg-light/50': fullScreen}\" #target>\r\n <div class=\"w-full h-14 relative shrink-0\">\r\n <ion-card class=\"m-0 rounded-none size-full border-none\">\r\n <ion-card-content class=\"p-0 px-2 size-full flex\">\r\n <div class=\"w-1/2 h-full flex items-center justify-start\">\r\n @if (!fullScreen) {\r\n <ion-menu-button [routerLink]=\"['/']\" [autoHide]=\"true\"></ion-menu-button>\r\n }\r\n <ng-content select=\"[slot=start]\"></ng-content>\r\n </div>\r\n\r\n <div class=\"w-1/2 h-full flex items-center justify-end gap-2\">\r\n <ng-content select=\"[slot=end]\"></ng-content>\r\n\r\n <ion-button (click)=\"FullScreen()\" fill=\"outline\" color=\"dark\" size=\"small\" class=\"size-10 aspect-square portrait:hidden\">\r\n <ion-icon slot=\"icon-only\" name=\"expand\"></ion-icon>\r\n </ion-button>\r\n\r\n\r\n @if (!fullScreen) {\r\n <div #anchor>\r\n <ion-button (click)=\"userPopover.present($event)\" size=\"small\" class=\"size-10 aspect-square\">\r\n <span class=\"uppercase text-white\">{{Token ? Token.Nome[0] : ''}}</span>\r\n </ion-button>\r\n </div>\r\n <sion-popover #userPopover [anchor]=\"anchor\" [flip]=\"false\" width=\"13rem\">\r\n <div class=\"w-full flex flex-col overflow-hidden\">\r\n <div class=\"w-full flex p-2 gap-2 overflow-hidden\">\r\n <div class=\"size-10 shrink-0 aspect-square rounded-2xl text-sm flex items-center justify-center bg-primary\">\r\n <span class=\"uppercase text-white\">{{Token ? Token.Nome[0] : ''}}</span>\r\n </div>\r\n\r\n <div class=\"shrink-0 w-full flex flex-col justify-center items-start overflow-hidden text-sm\">\r\n <span class=\"truncate\"> {{Token ? Token.Nome : ''}} </span>\r\n <span class=\"truncate text-secondary\"> @{{Token ? Token.Apelido : ''}} </span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"w-full\">\r\n <ng-content class=\"size-full\" select=\"[slot=user-popover]\"></ng-content>\r\n </div>\r\n\r\n <div class=\"w-full p-1 !pb-0 translucid-border !border-x-0 !border-b-0\">\r\n <div class=\"rounded-xl flex gap-2 items-center justify-start default-transition py-1 px-2\">\r\n <ion-icon name=\"contrast\"></ion-icon>\r\n <ion-text> Tema </ion-text>\r\n </div>\r\n\r\n <div class=\"flex flex-col pl-4\">\r\n <ion-radio-group alignment=\"start\" [allowEmptySelection]=\"false\" [value]=\"Theme\" (ionChange)=\"SetTheme($event.detail.value)\">\r\n <ion-item class=\"bg-transparent\" lines=\"full\">\r\n <ion-icon name=\"cog\" slot=\"start\"></ion-icon>\r\n <ion-radio class=\"w-full\" [value]=\"0\">Sistema</ion-radio>\r\n </ion-item>\r\n <ion-item class=\"bg-transparent\" lines=\"full\">\r\n <ion-icon name=\"sunny\" slot=\"start\"></ion-icon>\r\n <ion-radio class=\"w-full\" [value]=\"1\">Claro</ion-radio>\r\n </ion-item>\r\n <ion-item class=\"bg-transparent\" lines=\"none\">\r\n <ion-icon name=\"moon\" slot=\"start\"></ion-icon>\r\n <ion-radio class=\"w-full\" [value]=\"2\">Escuro</ion-radio>\r\n </ion-item>\r\n </ion-radio-group>\r\n\r\n\r\n <!-- <div class=\"w-full p-1 translucid-border !border-x-0 !border-b-0 overflow-hidden\">\r\n <div class=\"rounded-xl flex gap-2 items-center justify-start cursor-pointer hover:bg-medium/30 default-transition py-1 px-2\">\r\n <ion-checkbox [checked]=\"Theme == 0\" (ionChange)=\"SetTheme(0)\" ></ion-checkbox>\r\n <ion-icon name=\"cog\"></ion-icon>\r\n <ion-text> Sistema </ion-text>\r\n </div>\r\n </div>\r\n <div class=\"w-full p-1 translucid-border !border-x-0 !border-b-0 overflow-hidden\">\r\n <div class=\"rounded-xl flex gap-2 items-center justify-start cursor-pointer hover:bg-medium/30 default-transition py-1 px-2\">\r\n <ion-checkbox [checked]=\"Theme == 1\" (ionChange)=\"SetTheme(1)\" ></ion-checkbox>\r\n <ion-icon name=\"sunny\"></ion-icon>\r\n <ion-text> Claro </ion-text>\r\n </div>\r\n </div>\r\n <div class=\"w-full p-1 translucid-border !border-x-0 !border-b-0 overflow-hidden\">\r\n <div class=\"rounded-xl flex gap-2 items-center justify-start cursor-pointer hover:bg-medium/30 default-transition py-1 px-2\">\r\n <ion-checkbox [checked]=\"Theme == 2\" (ionChange)=\"SetTheme(2)\" ></ion-checkbox>\r\n <ion-icon name=\"moon\"></ion-icon>\r\n <ion-text> Escuro </ion-text>\r\n </div>\r\n </div> -->\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"w-full p-1 translucid-border !border-x-0 !border-b-0\">\r\n <div (click)=\"authService.Loggout()\" class=\"rounded-xl flex gap-2 cursor-pointer items-center justify-start hover:bg-medium/10 default-transition py-1 px-2\">\r\n <ion-icon color=\"danger\" name=\"exit\"></ion-icon>\r\n <ion-text> Log Out </ion-text>\r\n </div>\r\n\r\n <!-- <ion-text> Log Out </ion-text>\r\n <ion-button (click)=\"authService.Loggout()\" class=\"size-8 shrink-0\" size=\"small\" fill=\"clear\" color=\"danger\">\r\n <ion-icon slot=\"icon-only\" name=\"exit-outline\"></ion-icon> \r\n </ion-button> -->\r\n </div>\r\n </div>\r\n\r\n <!-- <div class=\"size-full\">\r\n <div class=\"w-full p-1 flex items-center\">\r\n <div class=\"size-10 shrink-0 aspect-square rounded-2xl text-sm flex items-center justify-center default-transition\" style=\"background-color: var(--ion-color-primary);\">\r\n <span class=\"uppercase text-white\">{{Token ? Token.Nome[0] : ''}}</span>\r\n </div>\r\n <div class=\"grow min-w-10 p-2 justify-center items-center whitespace-nowrap text-ellipsis overflow-hidden block default-transition\" [ngClass]=\"{'opacity-0 w-0': colapsed}\">\r\n <span>{{Token ? Token.Nome : ''}}</span> <br>\r\n <ion-text color=\"secondary\" class=\"text-sm\">\r\n @{{Token ? Token.Apelido : ''}}\r\n </ion-text>\r\n </div>\r\n </div>\r\n <div class=\"w-full\">\r\n <ng-content class=\"size-full\" select=\"[slot=user-popover]\"></ng-content>\r\n </div>\r\n <div class=\"w-full p-1 px-2 translucid-border !border-x-0 !border-b-0 flex items-center justify-between\">\r\n <div class=\"hover:bg-medium/30 default-transition size-full\">\r\n <ion-button color=\"dark\" fill=\"clear\" size=\"small\" class=\"rounded-xl w-full text-left overflow-hidden\">\r\n <ion-icon slot=\"start\" name=\"contrast\"></ion-icon>\r\n <ion-label class=\"text-sm\">Tema</ion-label>\r\n </ion-button>\r\n </div>\r\n </div>\r\n <div class=\"w-full p-1 px-2 translucid-border !border-x-0 !border-b-0 flex items-center justify-between\">\r\n <ion-text> Log Out </ion-text>\r\n <ion-button (click)=\"authService.Loggout()\" class=\"size-8 shrink-0\" size=\"small\" fill=\"clear\" color=\"danger\">\r\n <ion-icon slot=\"icon-only\" name=\"exit-outline\"></ion-icon> \r\n </ion-button>\r\n </div>\r\n </div> -->\r\n </sion-popover>\r\n }\r\n </div>\r\n </ion-card-content>\r\n </ion-card>\r\n </div>\r\n <div class=\"size-full relative p-2 pt-0 bg-light\">\r\n <div class=\"size-full relative rounded-2xl content-shadow overflow-hidden {{backdrop}}\" style=\"--shadow-color: {{shadowColor}}\">\r\n <ng-content></ng-content> \r\n </div>\r\n </div>\r\n</div>", styles: ["#popover-user{--width: 17rem}.content-shadow{--shadow-color: color-mix(in srgb, var(--ion-color-primary) 15%, transparent);box-shadow:0 0 0 1px var(--shadow-color),0 6px 10px -4px var(--shadow-color)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: IonicModule }, { 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.IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i3.IonCardContent, selector: "ion-card-content", inputs: ["mode"] }, { kind: "component", type: i3.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i3.IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i3.IonMenuButton, selector: "ion-menu-button", inputs: ["autoHide", "color", "disabled", "menu", "mode", "type"] }, { kind: "component", type: i3.IonRadio, selector: "ion-radio", inputs: ["alignment", "color", "disabled", "justify", "labelPlacement", "mode", "name", "value"] }, { kind: "component", type: i3.IonRadioGroup, selector: "ion-radio-group", inputs: ["allowEmptySelection", "compareWith", "errorText", "helperText", "name", "value"] }, { kind: "component", type: i3.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "directive", type: i3.SelectValueAccessor, selector: "ion-select, ion-radio-group, ion-segment, ion-datetime" }, { kind: "directive", type: i3.RouterLinkDelegate, selector: ":not(a):not(area)[routerLink]" }, { kind: "directive", type: RouterLinkWithHref, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: SIonPopoverModule }, { kind: "component", type: i4.SIonPopoverComponent, selector: "sion-popover", inputs: ["fill", "arrow", "flip", "placement", "height", "width", "anchor"], outputs: ["onWillPresent", "onDidPresent", "onWillDismiss", "onDidDismiss"] }] }); }
|
|
78
78
|
}
|
|
79
79
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MainContentComponent, decorators: [{
|
|
80
80
|
type: Component,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Component,
|
|
1
|
+
import { Component, ElementRef, EventEmitter, Input, NgZone, Output, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';
|
|
2
2
|
import { autoUpdate, computePosition, flip, limitShift, offset, shift, arrow } from '@floating-ui/dom';
|
|
3
3
|
import { Timeout } from '../../../services/utils.service';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
@@ -18,130 +18,143 @@ export class SIonPopoverComponent {
|
|
|
18
18
|
this.onWillDismiss = new EventEmitter();
|
|
19
19
|
this.onDidDismiss = new EventEmitter();
|
|
20
20
|
this.anchor = undefined;
|
|
21
|
-
this.
|
|
22
|
-
this.isVisibleChange = new EventEmitter();
|
|
23
|
-
this.lock = false;
|
|
24
|
-
}
|
|
25
|
-
async present(event) {
|
|
26
|
-
if (this.isVisible) {
|
|
27
|
-
return;
|
|
28
|
-
}
|
|
29
|
-
await waitUntil(() => !this.lock);
|
|
30
|
-
this.lock = true;
|
|
31
|
-
this.onWillPresent.emit();
|
|
32
|
-
this.CreatePopoverInBody();
|
|
33
|
-
await Timeout(0);
|
|
34
|
-
const refEl = this.anchor ? this.anchor : event.target;
|
|
35
|
-
const popEl = this.popoverInstance;
|
|
36
|
-
const arrowEl = this.popoverInstance.querySelector('.popover-arrow');
|
|
37
|
-
const computePositionRetrun = await this.GetComputePositionReturn(refEl, popEl, arrowEl);
|
|
38
|
-
Object.assign(this.popoverInstance.style, {
|
|
39
|
-
left: `${computePositionRetrun.x}px`,
|
|
40
|
-
top: `${computePositionRetrun.y}px`,
|
|
41
|
-
width: this.width,
|
|
42
|
-
height: this.height,
|
|
43
|
-
position: 'absolute',
|
|
44
|
-
});
|
|
45
|
-
this.cleanupAutoUpdate = autoUpdate(refEl, popEl, async () => {
|
|
46
|
-
const computePositionRetrun = await this.GetComputePositionReturn(refEl, popEl, arrowEl);
|
|
47
|
-
Object.assign(popEl.style, {
|
|
48
|
-
left: `${computePositionRetrun.x}px`,
|
|
49
|
-
top: `${computePositionRetrun.y}px`,
|
|
50
|
-
});
|
|
51
|
-
if (computePositionRetrun.middlewareData.arrow) {
|
|
52
|
-
const { x: arrowX, y: arrowY } = computePositionRetrun.middlewareData.arrow;
|
|
53
|
-
const position = computePositionRetrun.placement.split('-')[0];
|
|
54
|
-
const staticSide = staticSides[position];
|
|
55
|
-
Object.assign(arrowEl.style, {
|
|
56
|
-
left: arrowX != null ? `${arrowX}px` : '',
|
|
57
|
-
top: arrowY != null ? `${arrowY}px` : '',
|
|
58
|
-
right: '',
|
|
59
|
-
bottom: '',
|
|
60
|
-
[staticSide]: `-7px`,
|
|
61
|
-
});
|
|
62
|
-
arrowEl.style.setProperty(`--rotation`, rotations[position]);
|
|
63
|
-
}
|
|
64
|
-
});
|
|
65
|
-
await Timeout(50);
|
|
66
|
-
this.isVisible = true;
|
|
67
|
-
this.popoverInstance.style.setProperty('display', 'block');
|
|
68
|
-
this.isVisibleChange.emit(this.isVisible);
|
|
69
|
-
await Timeout(200);
|
|
70
|
-
this.onDidPresent.emit();
|
|
71
|
-
this.lock = false;
|
|
72
|
-
}
|
|
73
|
-
async GetComputePositionReturn(refEl, popEl, arrowEl) {
|
|
74
|
-
return await computePosition(refEl, popEl, {
|
|
75
|
-
placement: this.placement,
|
|
76
|
-
middleware: [
|
|
77
|
-
offset(10),
|
|
78
|
-
this.flip ? flip({ crossAxis: false }) : undefined,
|
|
79
|
-
shift({ limiter: limitShift(), padding: 5 }),
|
|
80
|
-
this.arrow ? arrow({ element: arrowEl, padding: 10 }) : undefined,
|
|
81
|
-
].filter(p => p),
|
|
82
|
-
});
|
|
83
|
-
}
|
|
84
|
-
CreatePopoverInBody() {
|
|
85
|
-
// Create a container for the template
|
|
86
|
-
const embeddedView = this.popoverTemplate.createEmbeddedView({});
|
|
87
|
-
this.viewContainerRef.insert(embeddedView);
|
|
88
|
-
// Get the popover element and append to body
|
|
89
|
-
this.popoverInstance = embeddedView.rootNodes[0];
|
|
90
|
-
document.body.appendChild(this.popoverInstance);
|
|
91
|
-
this.popoverInstance.style.setProperty('display', 'none');
|
|
92
|
-
}
|
|
93
|
-
onClick(event) {
|
|
94
|
-
if (!this.popoverInstance) {
|
|
95
|
-
return;
|
|
96
|
-
}
|
|
97
|
-
if (!this.popoverInstance.contains(event.target) &&
|
|
98
|
-
!this.anchor.contains(event.target)) {
|
|
99
|
-
this.dismiss();
|
|
100
|
-
}
|
|
21
|
+
this.state = POPOVER_STATE.IDLE;
|
|
101
22
|
}
|
|
102
23
|
ngOnInit() {
|
|
24
|
+
this.CreateEmbeddedView();
|
|
25
|
+
this.CreateInstance();
|
|
103
26
|
//TODO: Use Renderer2 to add event listeners for better Angular compatibility when updating to Angular 19
|
|
104
27
|
this.ngZone.runOutsideAngular(() => {
|
|
105
28
|
this.documentClickListener = (event) => {
|
|
106
29
|
// Run back inside Angular's zone when handling the event
|
|
107
30
|
this.ngZone.run(() => {
|
|
108
|
-
this.
|
|
31
|
+
if (!this._instance) {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
if (!this._instance.contains(event.target) &&
|
|
35
|
+
!this.anchor.contains(event.target)) {
|
|
36
|
+
this.dismiss();
|
|
37
|
+
}
|
|
109
38
|
});
|
|
110
39
|
};
|
|
111
40
|
// Use the native DOM API directly with capture phase
|
|
112
41
|
document.addEventListener('click', this.documentClickListener, true);
|
|
113
42
|
});
|
|
114
43
|
}
|
|
44
|
+
CreateEmbeddedView() {
|
|
45
|
+
if (this._embeddedView) {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
this._embeddedView = this.popoverTemplate.createEmbeddedView({});
|
|
49
|
+
this.viewRef = this.viewContainerRef.insert(this._embeddedView);
|
|
50
|
+
}
|
|
51
|
+
CreateInstance() {
|
|
52
|
+
this._instance = this._embeddedView.rootNodes[0];
|
|
53
|
+
document.body.appendChild(this._instance);
|
|
54
|
+
// const style = {
|
|
55
|
+
// "solid" : ['bg-light'],
|
|
56
|
+
// "outline": ['bg-transparent'],
|
|
57
|
+
// "blur" : ['backdrop-blur-md', 'bg-light/80'],
|
|
58
|
+
// "clear" : ['!border-0 bg-transparent'],
|
|
59
|
+
// }[this.fill];
|
|
60
|
+
// style.forEach(s => {
|
|
61
|
+
// this._instance.classList.add(s);
|
|
62
|
+
// this.arrowEl?.classList.add(s);
|
|
63
|
+
// });
|
|
64
|
+
}
|
|
65
|
+
get arrowEl() {
|
|
66
|
+
return this._instance.querySelector('.popover-arrow');
|
|
67
|
+
}
|
|
68
|
+
async present(event) {
|
|
69
|
+
if (this.state != POPOVER_STATE.IDLE) {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
this.onWillPresent.emit();
|
|
73
|
+
this.state = POPOVER_STATE.PRESENTING;
|
|
74
|
+
const refEl = this.anchor ? this.anchor : event.target;
|
|
75
|
+
const arrowEl = this.arrowEl;
|
|
76
|
+
await this.update(refEl, arrowEl);
|
|
77
|
+
this._instance.classList.add('show');
|
|
78
|
+
this.cleanupAutoUpdate = autoUpdate(refEl, this._instance, async () => this.update(refEl, arrowEl));
|
|
79
|
+
this.state = POPOVER_STATE.VISIBLE;
|
|
80
|
+
this.onDidPresent.emit();
|
|
81
|
+
}
|
|
82
|
+
async update(refEl, arrowEl) {
|
|
83
|
+
const computePositionReturn = await this.GetComputePositionReturn(refEl, this._instance, arrowEl);
|
|
84
|
+
this.HandleComputePositionReturn(computePositionReturn, arrowEl);
|
|
85
|
+
}
|
|
115
86
|
async dismiss() {
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
87
|
+
if (this.state == POPOVER_STATE.IDLE) {
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
119
90
|
if (this.cleanupAutoUpdate) {
|
|
120
91
|
this.cleanupAutoUpdate();
|
|
121
92
|
this.cleanupAutoUpdate = undefined;
|
|
122
93
|
}
|
|
123
|
-
this.
|
|
124
|
-
this.
|
|
94
|
+
this.onWillDismiss.emit();
|
|
95
|
+
this.state = POPOVER_STATE.DISMISSING;
|
|
96
|
+
this._instance.classList.remove('show');
|
|
125
97
|
await Timeout(200);
|
|
126
|
-
|
|
127
|
-
document.body.removeChild(this.popoverInstance);
|
|
128
|
-
this.popoverInstance = undefined;
|
|
129
|
-
}
|
|
98
|
+
this.state = POPOVER_STATE.IDLE;
|
|
130
99
|
this.onDidDismiss.emit();
|
|
131
|
-
|
|
100
|
+
}
|
|
101
|
+
HandleComputePositionReturn(computePositionReturn, arrowEl) {
|
|
102
|
+
Object.assign(this._instance.style, {
|
|
103
|
+
left: `${computePositionReturn.x}px`,
|
|
104
|
+
top: `${computePositionReturn.y}px`,
|
|
105
|
+
width: this.width,
|
|
106
|
+
height: this.height,
|
|
107
|
+
position: 'absolute',
|
|
108
|
+
});
|
|
109
|
+
if (computePositionReturn.middlewareData.arrow) {
|
|
110
|
+
const { x: arrowX, y: arrowY } = computePositionReturn.middlewareData.arrow;
|
|
111
|
+
const position = computePositionReturn.placement.split('-')[0];
|
|
112
|
+
const staticSide = STATIC_SIDES[position];
|
|
113
|
+
Object.assign(arrowEl.style, {
|
|
114
|
+
left: arrowX != null ? `${arrowX}px` : '',
|
|
115
|
+
top: arrowY != null ? `${arrowY}px` : '',
|
|
116
|
+
right: '',
|
|
117
|
+
bottom: '',
|
|
118
|
+
[staticSide]: `-7px`,
|
|
119
|
+
});
|
|
120
|
+
arrowEl.style.setProperty(`--rotation`, ROTATIONS[position]);
|
|
121
|
+
}
|
|
132
122
|
}
|
|
133
123
|
ngOnDestroy() {
|
|
124
|
+
if (this._instance) {
|
|
125
|
+
document.body.removeChild(this._instance);
|
|
126
|
+
this._instance.remove();
|
|
127
|
+
this._instance = undefined;
|
|
128
|
+
}
|
|
129
|
+
if (this._embeddedView) {
|
|
130
|
+
this._embeddedView.destroy();
|
|
131
|
+
this._embeddedView = undefined;
|
|
132
|
+
}
|
|
134
133
|
if (this.documentClickListener) {
|
|
135
134
|
document.removeEventListener('click', this.documentClickListener, true);
|
|
136
135
|
}
|
|
137
|
-
this.
|
|
136
|
+
if (this.viewRef) {
|
|
137
|
+
this.viewRef.destroy();
|
|
138
|
+
this.viewRef = undefined;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
async GetComputePositionReturn(refEl, popEl, arrowEl) {
|
|
142
|
+
return await computePosition(refEl, popEl, {
|
|
143
|
+
placement: this.placement,
|
|
144
|
+
middleware: [
|
|
145
|
+
offset(10),
|
|
146
|
+
this.flip ? flip({ crossAxis: false }) : undefined,
|
|
147
|
+
shift({ limiter: limitShift(), padding: 5 }),
|
|
148
|
+
this.arrow ? arrow({ element: arrowEl, padding: 10 }) : undefined,
|
|
149
|
+
].filter(p => p),
|
|
150
|
+
});
|
|
138
151
|
}
|
|
139
152
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SIonPopoverComponent, deps: [{ token: i0.ViewContainerRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
140
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
153
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SIonPopoverComponent, selector: "sion-popover", inputs: { fill: "fill", arrow: "arrow", flip: "flip", placement: "placement", height: "height", width: "width", anchor: "anchor" }, outputs: { onWillPresent: "onWillPresent", onDidPresent: "onDidPresent", onWillDismiss: "onWillDismiss", onDidDismiss: "onDidDismiss" }, viewQueries: [{ propertyName: "popoverTemplate", first: true, predicate: ["popoverTemplate"], descendants: true, static: true }, { propertyName: "contentContainer", first: true, predicate: ["popoverWrapper"], descendants: true }, { propertyName: "arrowElement", first: true, predicate: ["popoverArrow"], descendants: true }], ngImport: i0, template: "<ng-template #popoverTemplate>\r\n <div #popoverWrapper \r\n class=\"popover-wrapper translucid-border\"\r\n [style.height]=\"height\"\r\n [style.width]=\"width\"\r\n [ngClass]=\"{\r\n 'bg-light' : fill == 'solid',\r\n 'bg-transparent' : fill == 'outline',\r\n 'backdrop-blur-md bg-light/80': fill == 'blur',\r\n '!border-0' : fill == 'clear',\r\n }\"\r\n > \r\n <div #popoverArrow class=\"popover-arrow size-4 translucid-border\"\r\n [ngClass]=\"{\r\n 'bg-light' : fill == 'solid',\r\n 'bg-transparent' : fill == 'outline',\r\n 'backdrop-blur-md bg-light/80': fill == 'blur',\r\n '!border-0' : fill == 'clear',\r\n }\"\r\n ></div>\r\n\r\n <ng-content #content></ng-content>\r\n </div>\r\n</ng-template>", styles: [".popover-wrapper{z-index:50;border-radius:.75rem;width:max-content;position:absolute;will-change:left,top,bottom,right,auto,opacity,filter;opacity:0;transition:opacity .15s ease-in-out,transform .15s ease-in-out,filter .15s ease-in-out;min-width:2rem;min-height:2rem;filter:grayscale(.9);transform:scale(.95)}.popover-arrow{border-radius:.125rem;position:absolute;transform:scale(1) rotate(var(--rotation))!important;clip-path:var(--clip-path-triangle, polygon(0% 0%, 0% 100%, 100% 100%))}.show{filter:grayscale(0);transform:scale(1);opacity:1}.popover-wrapper:not(.show){pointer-events:none}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
|
|
141
154
|
}
|
|
142
155
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SIonPopoverComponent, decorators: [{
|
|
143
156
|
type: Component,
|
|
144
|
-
args: [{ selector: 'sion-popover', template: "<ng-template #popoverTemplate>\r\n <div #popoverWrapper class=\"popover-wrapper translucid-border\"\r\n
|
|
157
|
+
args: [{ selector: 'sion-popover', template: "<ng-template #popoverTemplate>\r\n <div #popoverWrapper \r\n class=\"popover-wrapper translucid-border\"\r\n [style.height]=\"height\"\r\n [style.width]=\"width\"\r\n [ngClass]=\"{\r\n 'bg-light' : fill == 'solid',\r\n 'bg-transparent' : fill == 'outline',\r\n 'backdrop-blur-md bg-light/80': fill == 'blur',\r\n '!border-0' : fill == 'clear',\r\n }\"\r\n > \r\n <div #popoverArrow class=\"popover-arrow size-4 translucid-border\"\r\n [ngClass]=\"{\r\n 'bg-light' : fill == 'solid',\r\n 'bg-transparent' : fill == 'outline',\r\n 'backdrop-blur-md bg-light/80': fill == 'blur',\r\n '!border-0' : fill == 'clear',\r\n }\"\r\n ></div>\r\n\r\n <ng-content #content></ng-content>\r\n </div>\r\n</ng-template>", styles: [".popover-wrapper{z-index:50;border-radius:.75rem;width:max-content;position:absolute;will-change:left,top,bottom,right,auto,opacity,filter;opacity:0;transition:opacity .15s ease-in-out,transform .15s ease-in-out,filter .15s ease-in-out;min-width:2rem;min-height:2rem;filter:grayscale(.9);transform:scale(.95)}.popover-arrow{border-radius:.125rem;position:absolute;transform:scale(1) rotate(var(--rotation))!important;clip-path:var(--clip-path-triangle, polygon(0% 0%, 0% 100%, 100% 100%))}.show{filter:grayscale(0);transform:scale(1);opacity:1}.popover-wrapper:not(.show){pointer-events:none}\n"] }]
|
|
145
158
|
}], ctorParameters: () => [{ type: i0.ViewContainerRef }, { type: i0.NgZone }], propDecorators: { fill: [{
|
|
146
159
|
type: Input
|
|
147
160
|
}], arrow: [{
|
|
@@ -173,27 +186,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
173
186
|
}], arrowElement: [{
|
|
174
187
|
type: ViewChild,
|
|
175
188
|
args: ['popoverArrow']
|
|
176
|
-
}], contentChildren: [{
|
|
177
|
-
type: ContentChildren,
|
|
178
|
-
args: ['*', { descendants: true }]
|
|
179
|
-
}], isVisibleChange: [{
|
|
180
|
-
type: Output
|
|
181
189
|
}] } });
|
|
182
|
-
|
|
190
|
+
var POPOVER_STATE;
|
|
191
|
+
(function (POPOVER_STATE) {
|
|
192
|
+
POPOVER_STATE[POPOVER_STATE["IDLE"] = 1] = "IDLE";
|
|
193
|
+
POPOVER_STATE[POPOVER_STATE["PRESENTING"] = 2] = "PRESENTING";
|
|
194
|
+
POPOVER_STATE[POPOVER_STATE["DISMISSING"] = 3] = "DISMISSING";
|
|
195
|
+
POPOVER_STATE[POPOVER_STATE["VISIBLE"] = 4] = "VISIBLE";
|
|
196
|
+
})(POPOVER_STATE || (POPOVER_STATE = {}));
|
|
197
|
+
const STATIC_SIDES = {
|
|
183
198
|
top: "bottom",
|
|
184
199
|
right: "left",
|
|
185
200
|
bottom: "top",
|
|
186
201
|
left: "right"
|
|
187
202
|
};
|
|
188
|
-
const
|
|
203
|
+
const ROTATIONS = {
|
|
189
204
|
bottom: "135deg",
|
|
190
205
|
top: "315deg",
|
|
191
206
|
left: "225deg",
|
|
192
207
|
right: "45deg",
|
|
193
208
|
};
|
|
194
|
-
async function waitUntil(condition, interval = 50) {
|
|
195
|
-
while (!condition()) {
|
|
196
|
-
await new Promise(resolve => setTimeout(resolve, interval));
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lvbi1wb3BvdmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9wb3BvdmVyL3Npb24tcG9wb3Zlci9zaW9uLXBvcG92ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL3BvcG92ZXIvc2lvbi1wb3BvdmVyL3Npb24tcG9wb3Zlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFnQixLQUFLLEVBQUUsTUFBTSxFQUFxQixNQUFNLEVBQUUsU0FBUyxFQUFhLFdBQVcsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN00sT0FBTyxFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQXlCLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFhLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN6SSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUNBQWlDLENBQUM7OztBQVMxRCxNQUFNLE9BQU8sb0JBQW9CO0lBb0IvQixZQUNVLGdCQUFrQyxFQUNsQyxNQUFjO1FBRGQscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBcEJmLFNBQUksR0FBUyxNQUFNLENBQUM7UUFDcEIsVUFBSyxHQUFZLElBQUksQ0FBQztRQUN0QixTQUFJLEdBQWEsSUFBSSxDQUFDO1FBR3RCLGNBQVMsR0FBYyxRQUFRLENBQUM7UUFDaEMsV0FBTSxHQUFXLE1BQU0sQ0FBQztRQUN4QixVQUFLLEdBQVcsTUFBTSxDQUFDO1FBR3RCLGtCQUFhLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFDN0QsaUJBQVksR0FBdUIsSUFBSSxZQUFZLEVB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QUM7QUFDRixNQUFNLFNBQVMsR0FBRztJQUNoQixNQUFNLEVBQUUsUUFBUTtJQUNoQixHQUFHLEVBQUUsUUFBUTtJQUNiLElBQUksRUFBRSxRQUFRO0lBQ2QsS0FBSyxFQUFFLE9BQU87Q0FDZixDQUFBO0FBRUQsS0FBSyxVQUFVLFNBQVMsQ0FBQyxTQUF3QixFQUFFLFdBQW1CLEVBQUU7SUFDdEUsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7UUFDcEIsTUFBTSxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUM5RCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ29udGVudENoaWxkcmVuLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE5nWm9uZSwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgUXVlcnlMaXN0LCBSZW5kZXJlcjIsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgYXV0b1VwZGF0ZSwgY29tcHV0ZVBvc2l0aW9uLCBDb21wdXRlUG9zaXRpb25SZXR1cm4sIGZsaXAsIGxpbWl0U2hpZnQsIG9mZnNldCwgUGxhY2VtZW50LCBzaGlmdCwgYXJyb3cgfSBmcm9tICdAZmxvYXRpbmctdWkvZG9tJztcclxuaW1wb3J0IHsgVGltZW91dCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3V0aWxzLnNlcnZpY2UnO1xyXG5cclxudHlwZSBGaWxsID0gJ3NvbGlkJyB8ICdvdXRsaW5lJyB8ICdibHVyJyB8ICdjbGVhcic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3Npb24tcG9wb3ZlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3Npb24tcG9wb3Zlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc2lvbi1wb3BvdmVyLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTSW9uUG9wb3ZlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25Jbml0IHtcclxuXHJcbiAgQElucHV0KCkgZmlsbDogRmlsbCA9ICdibHVyJztcclxuICBASW5wdXQoKSBhcnJvdzogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgZmxpcCA6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuXHJcbiAgQElucHV0KCkgcGxhY2VtZW50OiBQbGFjZW1lbnQgPSAnYm90dG9tJztcclxuICBASW5wdXQoKSBoZWlnaHQ6IHN0cmluZyA9ICdhdXRvJztcclxuICBASW5wdXQoKSB3aWR0aDogc3RyaW5nID0gJ2F1dG8nO1xyXG5cclxuXHJcbiAgQE91dHB1dCgpIG9uV2lsbFByZXNlbnQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuICBAT3V0cHV0KCkgb25EaWRQcmVzZW50OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIEBPdXRwdXQoKSBvbldpbGxEaXNtaXNzOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgQE91dHB1dCgpIG9uRGlkRGlzbWlzczogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICBASW5wdXQoKSBhbmNob3I6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcclxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmVcclxuICApIHsgfVxyXG5cclxuICBAVmlld0NoaWxkKCdwb3BvdmVyVGVtcGxhdGUnLCB7IHN0YXRpYzogdHJ1ZSB9KSBwb3BvdmVyVGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBWaWV3Q2hpbGQoJ3BvcG92ZXJXcmFwcGVyJykgY29udGVudENvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcbiAgQFZpZXdDaGlsZCgncG9wb3ZlckFycm93JyAgKSBhcnJvd0VsZW1lbnQgICAgOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcclxuICBcclxuICAvLyBUcmFjayBhbGwgY29udGVudCBjaGlsZHJlbiBmb3IgY2hhbmdlIGRldGVjdGlvblxyXG4gIEBDb250ZW50Q2hpbGRyZW4oJyonLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pIGNvbnRlbnRDaGlsZHJlbiE6IFF1ZXJ5TGlzdDxhbnk+O1xyXG5cclxuICBpc1Zpc2libGUgPSBmYWxzZTtcclxuICBwcml2YXRlIGNsZWFudXBBdXRvVXBkYXRlPzogKCkgPT4gdm9pZDtcclxuICBwcml2YXRlIHBvcG92ZXJJbnN0YW5jZT86IEhUTUxFbGVtZW50O1xyXG4gIEBPdXRwdXQoKSBpc1Zpc2libGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuXHJcbiAgcHJpdmF0ZSBsb2NrOiBib29sZWFuID0gZmFsc2U7IFxyXG4gIHB1YmxpYyBhc3luYyBwcmVzZW50KGV2ZW50PzogRXZlbnQpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmKHRoaXMuaXNWaXNpYmxlKXsgcmV0dXJuOyB9XHJcbiAgICBhd2FpdCB3YWl0VW50aWwoKCkgPT4gIXRoaXMubG9jayk7XHJcbiAgICB0aGlzLmxvY2sgPSB0cnVlO1xyXG5cclxuICAgIHRoaXMub25XaWxsUHJlc2VudC5lbWl0KCk7XHJcbiAgICBcclxuICAgIHRoaXMuQ3JlYXRlUG9wb3ZlckluQm9keSgpO1xyXG4gICAgYXdhaXQgVGltZW91dCgwKTtcclxuICAgIFxyXG4gICAgY29uc3QgcmVmRWwgICA9IHRoaXMuYW5jaG9yID8gdGhpcy5hbmNob3IgOiBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBjb25zdCBwb3BFbCAgID0gdGhpcy5wb3BvdmVySW5zdGFuY2U7XHJcbiAgICBjb25zdCBhcnJvd0VsID0gdGhpcy5wb3BvdmVySW5zdGFuY2UucXVlcnlTZWxlY3RvcignLnBvcG92ZXItYXJyb3cnKSBhcyBIVE1MRWxlbWVudDtcclxuXHJcbiAgICBjb25zdCBjb21wdXRlUG9zaXRpb25SZXRydW46IENvbXB1dGVQb3NpdGlvblJldHVybiA9IGF3YWl0IHRoaXMuR2V0Q29tcHV0ZVBvc2l0aW9uUmV0dXJuKHJlZkVsLCBwb3BFbCwgYXJyb3dFbCk7XHJcbiAgICBPYmplY3QuYXNzaWduKHRoaXMucG9wb3Zlckluc3RhbmNlLnN0eWxlLCB7XHJcbiAgICAgIGxlZnQ6IGAke2NvbXB1dGVQb3NpdGlvblJldHJ1bi54fXB4YCxcclxuICAgICAgdG9wOiAgYCR7Y29tcHV0ZVBvc2l0aW9uUmV0cnVuLnl9cHhgLFxyXG4gICAgICB3aWR0aCA6IHRoaXMud2lkdGgsXHJcbiAgICAgIGhlaWdodDogdGhpcy5oZWlnaHQsXHJcbiAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5jbGVhbnVwQXV0b1VwZGF0ZSA9IGF1dG9VcGRhdGUoXHJcbiAgICAgIHJlZkVsLFxyXG4gICAgICBwb3BFbCxcclxuICAgICAgYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNvbXB1dGVQb3NpdGlvblJldHJ1bjogQ29tcHV0ZVBvc2l0aW9uUmV0dXJuID0gYXdhaXQgdGhpcy5HZXRDb21wdXRlUG9zaXRpb25SZXR1cm4ocmVmRWwsIHBvcEVsLCBhcnJvd0VsKTtcclxuXHJcbiAgICAgICAgT2JqZWN0LmFzc2lnbihwb3BFbC5zdHlsZSwge1xyXG4gICAgICAgICAgbGVmdDogYCR7Y29tcHV0ZVBvc2l0aW9uUmV0cnVuLnh9cHhgLFxyXG4gICAgICAgICAgdG9wOiAgYCR7Y29tcHV0ZVBvc2l0aW9uUmV0cnVuLnl9cHhgLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmKGNvbXB1dGVQb3NpdGlvblJldHJ1bi5taWRkbGV3YXJlRGF0YS5hcnJvdyl7XHJcbiAgICAgICAgICBjb25zdCB7IHg6IGFycm93WCwgeTogYXJyb3dZIH0gPSBjb21wdXRlUG9zaXRpb25SZXRydW4ubWlkZGxld2FyZURhdGEuYXJyb3c7XHJcblxyXG4gICAgICAgICAgY29uc3QgcG9zaXRpb24gPSBjb21wdXRlUG9zaXRpb25SZXRydW4ucGxhY2VtZW50LnNwbGl0KCctJylbMF07XHJcbiAgICAgICAgICBjb25zdCBzdGF0aWNTaWRlID0gc3RhdGljU2lkZXNbcG9zaXRpb25dO1xyXG4gICAgICAgICAgT2JqZWN0LmFzc2lnbihhcnJvd0VsLnN0eWxlLCB7XHJcbiAgICAgICAgICAgIGxlZnQ6IGFycm93WCAhPSBudWxsID8gYCR7YXJyb3dYfXB4YCA6ICcnLFxyXG4gICAgICAgICAgICB0b3AgOiBhcnJvd1kgIT0gbnVsbCA/IGAke2Fycm93WX1weGAgOiAnJyxcclxuICAgICAgICAgICAgcmlnaHQgOiAnJyxcclxuICAgICAgICAgICAgYm90dG9tOiAnJyxcclxuICAgICAgICAgICAgW3N0YXRpY1NpZGVdOiBgLTdweGAsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGFycm93RWwuc3R5bGUuc2V0UHJvcGVydHkoYC0tcm90YXRpb25gLCByb3RhdGlvbnNbcG9zaXRpb25dKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICk7XHJcblxyXG4gICAgYXdhaXQgVGltZW91dCg1MCk7XHJcbiAgICB0aGlzLmlzVmlzaWJsZSA9IHRydWU7XHJcbiAgICB0aGlzLnBvcG92ZXJJbnN0YW5jZS5zdHlsZS5zZXRQcm9wZXJ0eSgnZGlzcGxheScsICdibG9jaycpO1xyXG4gICAgdGhpcy5pc1Zpc2libGVDaGFuZ2UuZW1pdCh0aGlzLmlzVmlzaWJsZSk7XHJcbiAgICBhd2FpdCBUaW1lb3V0KDIwMCk7XHJcbiAgICB0aGlzLm9uRGlkUHJlc2VudC5lbWl0KCk7XHJcbiAgICB0aGlzLmxvY2sgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIGFzeW5jIEdldENvbXB1dGVQb3NpdGlvblJldHVybihyZWZFbDogSFRNTEVsZW1lbnQsIHBvcEVsOiBIVE1MRWxlbWVudCwgYXJyb3dFbDogSFRNTEVsZW1lbnQpOiBQcm9taXNlPENvbXB1dGVQb3NpdGlvblJldHVybj4ge1xyXG4gICAgcmV0dXJuIGF3YWl0IGNvbXB1dGVQb3NpdGlvbihyZWZFbCwgcG9wRWwsIHtcclxuICAgICAgcGxhY2VtZW50OiB0aGlzLnBsYWNlbWVudCxcclxuICAgICAgbWlkZGxld2FyZTogWyBcclxuICAgICAgICBvZmZzZXQoMTApLCBcclxuICAgICAgICB0aGlzLmZsaXAgID8gZmxpcCh7IGNyb3NzQXhpczogZmFsc2UgfSkgOiB1bmRlZmluZWQsIFxyXG4gICAgICAgIHNoaWZ0KHsgbGltaXRlcjogbGltaXRTaGlmdCgpLCBwYWRkaW5nOiA1IH0pLCBcclxuICAgICAgICB0aGlzLmFycm93ID8gYXJyb3coeyBlbGVtZW50OiBhcnJvd0VsLCBwYWRkaW5nOiAxMCB9KSA6IHVuZGVmaW5lZCxcclxuICAgICAgXS5maWx0ZXIocCA9PiBwKSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBDcmVhdGVQb3BvdmVySW5Cb2R5KCk6IHZvaWQge1xyXG4gICAgLy8gQ3JlYXRlIGEgY29udGFpbmVyIGZvciB0aGUgdGVtcGxhdGVcclxuICAgIGNvbnN0IGVtYmVkZGVkVmlldyA9IHRoaXMucG9wb3ZlclRlbXBsYXRlLmNyZWF0ZUVtYmVkZGVkVmlldyh7fSk7XHJcbiAgICB0aGlzLnZpZXdDb250YWluZXJSZWYuaW5zZXJ0KGVtYmVkZGVkVmlldyk7XHJcblxyXG4gICAgLy8gR2V0IHRoZSBwb3BvdmVyIGVsZW1lbnQgYW5kIGFwcGVuZCB0byBib2R5XHJcbiAgICB0aGlzLnBvcG92ZXJJbnN0YW5jZSA9IGVtYmVkZGVkVmlldy5yb290Tm9kZXNbMF0gYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMucG9wb3Zlckluc3RhbmNlKTtcclxuICAgIHRoaXMucG9wb3Zlckluc3RhbmNlLnN0eWxlLnNldFByb3BlcnR5KCdkaXNwbGF5JywgJ25vbmUnKTtcclxuICB9XHJcblxyXG4gIG9uQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGlmKCF0aGlzLnBvcG92ZXJJbnN0YW5jZSl7IHJldHVybjt9XHJcbiAgICBpZiAoXHJcbiAgICAgICF0aGlzLnBvcG92ZXJJbnN0YW5jZS5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSkgJiZcclxuICAgICAgIXRoaXMuYW5jaG9yLmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBOb2RlKVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuZGlzbWlzcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZG9jdW1lbnRDbGlja0xpc3RlbmVyOiAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHZvaWQ7XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAvL1RPRE86IFVzZSBSZW5kZXJlcjIgdG8gYWRkIGV2ZW50IGxpc3RlbmVycyBmb3IgYmV0dGVyIEFuZ3VsYXIgY29tcGF0aWJpbGl0eSB3aGVuIHVwZGF0aW5nIHRvIEFuZ3VsYXIgMTlcclxuICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcclxuICAgICAgdGhpcy5kb2N1bWVudENsaWNrTGlzdGVuZXIgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcclxuICAgICAgICAvLyBSdW4gYmFjayBpbnNpZGUgQW5ndWxhcidzIHpvbmUgd2hlbiBoYW5kbGluZyB0aGUgZXZlbnRcclxuICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5vbkNsaWNrKGV2ZW50KTtcclxuICAgICAgICB9KTtcclxuICAgICAgfTtcclxuICAgICAgXHJcbiAgICAgIC8vIFVzZSB0aGUgbmF0aXZlIERPTSBBUEkgZGlyZWN0bHkgd2l0aCBjYXB0dXJlIHBoYXNlXHJcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5kb2N1bWVudENsaWNrTGlzdGVuZXIsIHRydWUpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgcHVibGljIGFzeW5jIGRpc21pc3MoKTogUHJvbWlzZTx2b2lkPntcclxuICAgIGF3YWl0IHdhaXRVbnRpbCgoKSA9PiAhdGhpcy5sb2NrKTtcclxuICAgIHRoaXMubG9jayA9IHRydWU7XHJcblxyXG4gICAgdGhpcy5vbldpbGxEaXNtaXNzLmVtaXQoKTtcclxuICAgIGlmKHRoaXMuY2xlYW51cEF1dG9VcGRhdGUpe1xyXG4gICAgICB0aGlzLmNsZWFudXBBdXRvVXBkYXRlKCk7XHJcbiAgICAgIHRoaXMuY2xlYW51cEF1dG9VcGRhdGUgPSB1bmRlZmluZWQ7XHJcblxyXG4gICAgfVxyXG4gICAgdGhpcy5pc1Zpc2libGUgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNWaXNpYmxlQ2hhbmdlLmVtaXQodGhpcy5pc1Zpc2libGUpO1xyXG4gICAgYXdhaXQgVGltZW91dCgyMDApO1xyXG5cclxuICAgIGlmICh0aGlzLnBvcG92ZXJJbnN0YW5jZSkge1xyXG4gICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRoaXMucG9wb3Zlckluc3RhbmNlKTtcclxuICAgICAgdGhpcy5wb3BvdmVySW5zdGFuY2UgPSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgICB0aGlzLm9uRGlkRGlzbWlzcy5lbWl0KCk7XHJcbiAgICB0aGlzLmxvY2sgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyKSB7XHJcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5kb2N1bWVudENsaWNrTGlzdGVuZXIsIHRydWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZGlzbWlzcygpO1xyXG4gIH1cclxufVxyXG5cclxuY29uc3Qgc3RhdGljU2lkZXMgPSB7XHJcbiAgdG9wOiBcImJvdHRvbVwiLFxyXG4gIHJpZ2h0OiBcImxlZnRcIixcclxuICBib3R0b206IFwidG9wXCIsXHJcbiAgbGVmdDogXCJyaWdodFwiXHJcbn07XHJcbmNvbnN0IHJvdGF0aW9ucyA9IHtcclxuICBib3R0b206IFwiMTM1ZGVnXCIsXHJcbiAgdG9wOiBcIjMxNWRlZ1wiLFxyXG4gIGxlZnQ6IFwiMjI1ZGVnXCIsXHJcbiAgcmlnaHQ6IFwiNDVkZWdcIixcclxufVxyXG5cclxuYXN5bmMgZnVuY3Rpb24gd2FpdFVudGlsKGNvbmRpdGlvbjogKCkgPT4gYm9vbGVhbiwgaW50ZXJ2YWw6IG51bWJlciA9IDUwKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgd2hpbGUgKCFjb25kaXRpb24oKSkge1xyXG4gICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIGludGVydmFsKSk7XHJcbiAgfVxyXG59XHJcbiIsIjxuZy10ZW1wbGF0ZSAjcG9wb3ZlclRlbXBsYXRlPlxyXG4gIDxkaXYgI3BvcG92ZXJXcmFwcGVyIGNsYXNzPVwicG9wb3Zlci13cmFwcGVyIHRyYW5zbHVjaWQtYm9yZGVyXCJcclxuICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICdiZy1saWdodCcgICAgICAgIDogZmlsbCA9PSAnc29saWQnLFxyXG4gICAgICAgICdiZy10cmFuc3BhcmVudCcgIDogZmlsbCA9PSAnb3V0bGluZScsXHJcbiAgICAgICAgJ2JhY2tkcm9wLWJsdXItbWQgYmctbGlnaHQvODAnOiBmaWxsID09ICdibHVyJyxcclxuICAgICAgICAnIWJvcmRlci0wJyAgICAgICA6IGZpbGwgPT0gJ2NsZWFyJyxcclxuICAgICAgICAndmlzaWJsZS1hbmltJyAgICA6IGlzVmlzaWJsZSxcclxuICAgICAgICAnaW52aXNpYmxlLWFuaW0nICA6ICFpc1Zpc2libGUsXHJcbiAgICAgIH1cIlxyXG4gICAgW3N0eWxlLmhlaWdodF09XCJoZWlnaHRcIlxyXG4gICAgW3N0eWxlLndpZHRoXT1cIndpZHRoXCJcclxuICA+XHJcbiAgPCEtLSAnc29saWQnIHwgJ291dGxpbmUnIHwgJ2JsdXInIHwgJ2NsZWFyJyAtLT5cclxuICAgIEBpZihhcnJvdyl7XHJcbiAgICAgIDxkaXYgI3BvcG92ZXJBcnJvdyBjbGFzcz1cInBvcG92ZXItYXJyb3cgc2l6ZS00IHRyYW5zbHVjaWQtYm9yZGVyXCJcclxuICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAnYmctbGlnaHQnICAgICAgICA6IGZpbGwgPT0gJ3NvbGlkJyxcclxuICAgICAgICAgICdiZy10cmFuc3BhcmVudCcgIDogZmlsbCA9PSAnb3V0bGluZScsXHJcbiAgICAgICAgICAnYmFja2Ryb3AtYmx1ci1tZCc6IGZpbGwgPT0gJ2JsdXInLFxyXG4gICAgICAgICAgJ3Zpc2libGUtYW5pbScgICAgOiBpc1Zpc2libGUsXHJcbiAgICAgICAgICAnaW52aXNpYmxlLWFuaW0nICA6ICFpc1Zpc2libGUsXHJcbiAgICAgIH1cIlxyXG4gICAgICA+PC9kaXY+XHJcbiAgICB9XHJcbiAgICA8bmctY29udGVudCAjY29udGVudD48L25nLWNvbnRlbnQ+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+Il19
|
|
209
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lvbi1wb3BvdmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9wb3BvdmVyL3Npb24tcG9wb3Zlci9zaW9uLXBvcG92ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL3BvcG92ZXIvc2lvbi1wb3BvdmVyL3Npb24tcG9wb3Zlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBbUIsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQXFCLE1BQU0sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFXLE1BQU0sZUFBZSxDQUFDO0FBQ2xMLE9BQU8sRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUF5QixJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBYSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDekksT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7QUFTMUQsTUFBTSxPQUFPLG9CQUFvQjtJQW9CL0IsWUFDVSxnQkFBa0MsRUFDbEMsTUFBYztRQURkLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQXBCZixTQUFJLEdBQVMsTUFBTSxDQUFDO1FBQ3BCLFVBQUssR0FBWSxJQUFJLENBQUM7UUFDdEIsU0FBSSxHQUFhLElBQUksQ0FBQztRQUd0QixjQUFTLEdBQWMsUUFBUSxDQUFDO1FBQ2hDLFdBQU0sR0FBVyxNQUFNLENBQUM7UUFDeEIsVUFBSyxHQUFXLE1BQU0sQ0FBQztRQUd0QixrQkFBYSxHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBQzdELGlCQUFZLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFFNUQsa0JBQWEs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QyxFQUxJLGFBQWEsS0FBYixhQUFhLFFBS2pCO0FBQ0QsTUFBTSxZQUFZLEdBQUc7SUFDbkIsR0FBRyxFQUFFLFFBQVE7SUFDYixLQUFLLEVBQUUsTUFBTTtJQUNiLE1BQU0sRUFBRSxLQUFLO0lBQ2IsSUFBSSxFQUFFLE9BQU87Q0FDZCxDQUFDO0FBQ0YsTUFBTSxTQUFTLEdBQUc7SUFDaEIsTUFBTSxFQUFFLFFBQVE7SUFDaEIsR0FBRyxFQUFFLFFBQVE7SUFDYixJQUFJLEVBQUUsUUFBUTtJQUNkLEtBQUssRUFBRSxPQUFPO0NBQ2YsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRW1iZWRkZWRWaWV3UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBOZ1pvbmUsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQsIFZpZXdDb250YWluZXJSZWYsIFZpZXdSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgYXV0b1VwZGF0ZSwgY29tcHV0ZVBvc2l0aW9uLCBDb21wdXRlUG9zaXRpb25SZXR1cm4sIGZsaXAsIGxpbWl0U2hpZnQsIG9mZnNldCwgUGxhY2VtZW50LCBzaGlmdCwgYXJyb3cgfSBmcm9tICdAZmxvYXRpbmctdWkvZG9tJztcclxuaW1wb3J0IHsgVGltZW91dCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3V0aWxzLnNlcnZpY2UnO1xyXG5cclxudHlwZSBGaWxsID0gJ3NvbGlkJyB8ICdvdXRsaW5lJyB8ICdibHVyJyB8ICdjbGVhcic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3Npb24tcG9wb3ZlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3Npb24tcG9wb3Zlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc2lvbi1wb3BvdmVyLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTSW9uUG9wb3ZlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuXHJcbiAgQElucHV0KCkgZmlsbDogRmlsbCA9ICdibHVyJztcclxuICBASW5wdXQoKSBhcnJvdzogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgZmxpcCA6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuXHJcbiAgQElucHV0KCkgcGxhY2VtZW50OiBQbGFjZW1lbnQgPSAnYm90dG9tJztcclxuICBASW5wdXQoKSBoZWlnaHQ6IHN0cmluZyA9ICdhdXRvJztcclxuICBASW5wdXQoKSB3aWR0aDogc3RyaW5nID0gJ2F1dG8nO1xyXG5cclxuXHJcbiAgQE91dHB1dCgpIG9uV2lsbFByZXNlbnQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuICBAT3V0cHV0KCkgb25EaWRQcmVzZW50OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIEBPdXRwdXQoKSBvbldpbGxEaXNtaXNzOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgQE91dHB1dCgpIG9uRGlkRGlzbWlzczogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICBASW5wdXQoKSBhbmNob3I6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcclxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmVcclxuICApIHsgfVxyXG5cclxuXHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3BvcG92ZXJUZW1wbGF0ZScsIHsgc3RhdGljOiB0cnVlIH0pIHBvcG92ZXJUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZCgncG9wb3ZlcldyYXBwZXInKSBjb250ZW50Q29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuICBAVmlld0NoaWxkKCdwb3BvdmVyQXJyb3cnICApIGFycm93RWxlbWVudCAgICA6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuQ3JlYXRlRW1iZWRkZWRWaWV3KCk7XHJcbiAgICB0aGlzLkNyZWF0ZUluc3RhbmNlKCk7XHJcbiAgXHJcbiAgICAvL1RPRE86IFVzZSBSZW5kZXJlcjIgdG8gYWRkIGV2ZW50IGxpc3RlbmVycyBmb3IgYmV0dGVyIEFuZ3VsYXIgY29tcGF0aWJpbGl0eSB3aGVuIHVwZGF0aW5nIHRvIEFuZ3VsYXIgMTlcclxuICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcclxuICAgICAgdGhpcy5kb2N1bWVudENsaWNrTGlzdGVuZXIgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcclxuICAgICAgICAvLyBSdW4gYmFjayBpbnNpZGUgQW5ndWxhcidzIHpvbmUgd2hlbiBoYW5kbGluZyB0aGUgZXZlbnRcclxuICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICAgICAgaWYoIXRoaXMuX2luc3RhbmNlKXsgcmV0dXJuO31cclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgIXRoaXMuX2luc3RhbmNlLmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBOb2RlKSAmJlxyXG4gICAgICAgICAgICAhdGhpcy5hbmNob3IuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgdGhpcy5kaXNtaXNzKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH07XHJcbiAgICAgIFxyXG4gICAgICAvLyBVc2UgdGhlIG5hdGl2ZSBET00gQVBJIGRpcmVjdGx5IHdpdGggY2FwdHVyZSBwaGFzZVxyXG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyLCB0cnVlKTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBkb2N1bWVudENsaWNrTGlzdGVuZXI6IChldmVudDogTW91c2VFdmVudCkgPT4gdm9pZDtcclxuICB2aWV3UmVmPzogVmlld1JlZjtcclxuXHJcbiAgcHJpdmF0ZSBfZW1iZWRkZWRWaWV3PzogRW1iZWRkZWRWaWV3UmVmPGFueT4gfCB1bmRlZmluZWQ7XHJcbiAgQ3JlYXRlRW1iZWRkZWRWaWV3KCk6IHZvaWQge1xyXG4gICAgaWYodGhpcy5fZW1iZWRkZWRWaWV3KXsgcmV0dXJuOyB9XHJcbiAgICB0aGlzLl9lbWJlZGRlZFZpZXcgPSB0aGlzLnBvcG92ZXJUZW1wbGF0ZS5jcmVhdGVFbWJlZGRlZFZpZXcoe30pO1xyXG4gICAgdGhpcy52aWV3UmVmID0gdGhpcy52aWV3Q29udGFpbmVyUmVmLmluc2VydCh0aGlzLl9lbWJlZGRlZFZpZXcpO1xyXG4gIH1cclxuICBwcml2YXRlIF9pbnN0YW5jZT86IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkO1xyXG4gIENyZWF0ZUluc3RhbmNlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5faW5zdGFuY2UgPSB0aGlzLl9lbWJlZGRlZFZpZXcucm9vdE5vZGVzWzBdIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLl9pbnN0YW5jZSk7XHJcblxyXG4gICAgLy8gY29uc3Qgc3R5bGUgPSB7XHJcbiAgICAvLyAgIFwic29saWRcIiAgOiBbJ2JnLWxpZ2h0J10sXHJcbiAgICAvLyAgIFwib3V0bGluZVwiOiBbJ2JnLXRyYW5zcGFyZW50J10sXHJcbiAgICAvLyAgIFwiYmx1clwiICAgOiBbJ2JhY2tkcm9wLWJsdXItbWQnLCAnYmctbGlnaHQvODAnXSxcclxuICAgIC8vICAgXCJjbGVhclwiICA6IFsnIWJvcmRlci0wIGJnLXRyYW5zcGFyZW50J10sXHJcbiAgICAvLyB9W3RoaXMuZmlsbF07XHJcbiAgICAvLyBzdHlsZS5mb3JFYWNoKHMgPT4ge1xyXG4gICAgLy8gICB0aGlzLl9pbnN0YW5jZS5jbGFzc0xpc3QuYWRkKHMpO1xyXG4gICAgLy8gICB0aGlzLmFycm93RWw/LmNsYXNzTGlzdC5hZGQocyk7XHJcbiAgICAvLyB9KTtcclxuICB9XHJcblxyXG4gIGdldCBhcnJvd0VsKCk6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLl9pbnN0YW5jZS5xdWVyeVNlbGVjdG9yKCcucG9wb3Zlci1hcnJvdycpIGFzIEhUTUxFbGVtZW50O1xyXG4gIH1cclxuICBcclxuICBwcml2YXRlIGNsZWFudXBBdXRvVXBkYXRlPzogKCkgPT4gdm9pZDtcclxuICBwdWJsaWMgc3RhdGU6IFBPUE9WRVJfU1RBVEUgPSBQT1BPVkVSX1NUQVRFLklETEU7XHJcbiAgcHVibGljIGFzeW5jIHByZXNlbnQoZXZlbnQ/OiBFdmVudCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYodGhpcy5zdGF0ZSAhPSBQT1BPVkVSX1NUQVRFLklETEUpIHsgcmV0dXJuOyB9XHJcbiAgICB0aGlzLm9uV2lsbFByZXNlbnQuZW1pdCgpO1xyXG4gICAgXHJcbiAgICB0aGlzLnN0YXRlID0gUE9QT1ZFUl9TVEFURS5QUkVTRU5USU5HO1xyXG4gICAgY29uc3QgcmVmRWwgICA9IHRoaXMuYW5jaG9yID8gdGhpcy5hbmNob3IgOiBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBjb25zdCBhcnJvd0VsID0gdGhpcy5hcnJvd0VsO1xyXG5cclxuICAgIGF3YWl0IHRoaXMudXBkYXRlKHJlZkVsLCBhcnJvd0VsKVxyXG4gICAgdGhpcy5faW5zdGFuY2UuY2xhc3NMaXN0LmFkZCgnc2hvdycpO1xyXG4gICAgdGhpcy5jbGVhbnVwQXV0b1VwZGF0ZSA9IGF1dG9VcGRhdGUocmVmRWwsIHRoaXMuX2luc3RhbmNlLCBhc3luYyAoKSA9PiB0aGlzLnVwZGF0ZShyZWZFbCwgYXJyb3dFbCkpO1xyXG4gICAgXHJcbiAgICB0aGlzLnN0YXRlID0gUE9QT1ZFUl9TVEFURS5WSVNJQkxFO1xyXG4gICAgdGhpcy5vbkRpZFByZXNlbnQuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyB1cGRhdGUocmVmRWw6IEhUTUxFbGVtZW50LCBhcnJvd0VsOiBIVE1MRWxlbWVudCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgY29uc3QgY29tcHV0ZVBvc2l0aW9uUmV0dXJuOiBDb21wdXRlUG9zaXRpb25SZXR1cm4gPSBhd2FpdCB0aGlzLkdldENvbXB1dGVQb3NpdGlvblJldHVybihyZWZFbCwgdGhpcy5faW5zdGFuY2UsIGFycm93RWwpO1xyXG4gICAgdGhpcy5IYW5kbGVDb21wdXRlUG9zaXRpb25SZXR1cm4oY29tcHV0ZVBvc2l0aW9uUmV0dXJuLCBhcnJvd0VsKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBkaXNtaXNzKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYodGhpcy5zdGF0ZSA9PSBQT1BPVkVSX1NUQVRFLklETEUpIHsgcmV0dXJuOyB9XHJcbiAgICBpZih0aGlzLmNsZWFudXBBdXRvVXBkYXRlKSB7XHJcbiAgICAgIHRoaXMuY2xlYW51cEF1dG9VcGRhdGUoKTtcclxuICAgICAgdGhpcy5jbGVhbnVwQXV0b1VwZGF0ZSA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuICAgIHRoaXMub25XaWxsRGlzbWlzcy5lbWl0KCk7XHJcbiAgICB0aGlzLnN0YXRlID0gUE9QT1ZFUl9TVEFURS5ESVNNSVNTSU5HO1xyXG4gICAgdGhpcy5faW5zdGFuY2UuY2xhc3NMaXN0LnJlbW92ZSgnc2hvdycpO1xyXG4gICAgYXdhaXQgVGltZW91dCgyMDApO1xyXG4gICAgdGhpcy5zdGF0ZSA9IFBPUE9WRVJfU1RBVEUuSURMRTtcclxuICAgIHRoaXMub25EaWREaXNtaXNzLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIEhhbmRsZUNvbXB1dGVQb3NpdGlvblJldHVybihjb21wdXRlUG9zaXRpb25SZXR1cm46IENvbXB1dGVQb3NpdGlvblJldHVybiwgYXJyb3dFbDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcclxuICAgIE9iamVjdC5hc3NpZ24odGhpcy5faW5zdGFuY2Uuc3R5bGUsIHtcclxuICAgICAgbGVmdDogYCR7Y29tcHV0ZVBvc2l0aW9uUmV0dXJuLnh9cHhgLFxyXG4gICAgICB0b3A6ICBgJHtjb21wdXRlUG9zaXRpb25SZXR1cm4ueX1weGAsXHJcbiAgICAgIHdpZHRoIDogdGhpcy53aWR0aCxcclxuICAgICAgaGVpZ2h0OiB0aGlzLmhlaWdodCxcclxuICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXHJcbiAgICB9KTtcclxuICAgIGlmKGNvbXB1dGVQb3NpdGlvblJldHVybi5taWRkbGV3YXJlRGF0YS5hcnJvdyl7XHJcbiAgICAgIGNvbnN0IHsgeDogYXJyb3dYLCB5OiBhcnJvd1kgfSA9IGNvbXB1dGVQb3NpdGlvblJldHVybi5taWRkbGV3YXJlRGF0YS5hcnJvdztcclxuICAgICAgY29uc3QgcG9zaXRpb24gPSBjb21wdXRlUG9zaXRpb25SZXR1cm4ucGxhY2VtZW50LnNwbGl0KCctJylbMF07XHJcbiAgICAgIGNvbnN0IHN0YXRpY1NpZGUgPSBTVEFUSUNfU0lERVNbcG9zaXRpb25dO1xyXG4gICAgICBPYmplY3QuYXNzaWduKGFycm93RWwuc3R5bGUsIHtcclxuICAgICAgICBsZWZ0OiBhcnJvd1ggIT0gbnVsbCA/IGAke2Fycm93WH1weGAgOiAnJyxcclxuICAgICAgICB0b3AgOiBhcnJvd1kgIT0gbnVsbCA/IGAke2Fycm93WX1weGAgOiAnJyxcclxuICAgICAgICByaWdodCA6ICcnLFxyXG4gICAgICAgIGJvdHRvbTogJycsXHJcbiAgICAgICAgW3N0YXRpY1NpZGVdOiBgLTdweGAsXHJcbiAgICAgIH0pO1xyXG4gICAgICBhcnJvd0VsLnN0eWxlLnNldFByb3BlcnR5KGAtLXJvdGF0aW9uYCwgUk9UQVRJT05TW3Bvc2l0aW9uXSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIGlmKHRoaXMuX2luc3RhbmNlKSB7XHJcbiAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGhpcy5faW5zdGFuY2UpO1xyXG4gICAgICB0aGlzLl9pbnN0YW5jZS5yZW1vdmUoKTtcclxuICAgICAgdGhpcy5faW5zdGFuY2UgPSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgICBpZih0aGlzLl9lbWJlZGRlZFZpZXcpIHtcclxuICAgICAgdGhpcy5fZW1iZWRkZWRWaWV3LmRlc3Ryb3koKTtcclxuICAgICAgdGhpcy5fZW1iZWRkZWRWaWV3ID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmRvY3VtZW50Q2xpY2tMaXN0ZW5lcikge1xyXG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyLCB0cnVlKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnZpZXdSZWYpIHtcclxuICAgICAgdGhpcy52aWV3UmVmLmRlc3Ryb3koKTtcclxuICAgICAgdGhpcy52aWV3UmVmID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgR2V0Q29tcHV0ZVBvc2l0aW9uUmV0dXJuKHJlZkVsOiBIVE1MRWxlbWVudCwgcG9wRWw6IEhUTUxFbGVtZW50LCBhcnJvd0VsOiBIVE1MRWxlbWVudCk6IFByb21pc2U8Q29tcHV0ZVBvc2l0aW9uUmV0dXJuPiB7XHJcbiAgICByZXR1cm4gYXdhaXQgY29tcHV0ZVBvc2l0aW9uKHJlZkVsLCBwb3BFbCwge1xyXG4gICAgICBwbGFjZW1lbnQ6IHRoaXMucGxhY2VtZW50LFxyXG4gICAgICBtaWRkbGV3YXJlOiBbIFxyXG4gICAgICAgIG9mZnNldCgxMCksIFxyXG4gICAgICAgIHRoaXMuZmxpcCAgPyBmbGlwKHsgY3Jvc3NBeGlzOiBmYWxzZSB9KSA6IHVuZGVmaW5lZCwgXHJcbiAgICAgICAgc2hpZnQoeyBsaW1pdGVyOiBsaW1pdFNoaWZ0KCksIHBhZGRpbmc6IDUgfSksIFxyXG4gICAgICAgIHRoaXMuYXJyb3cgPyBhcnJvdyh7IGVsZW1lbnQ6IGFycm93RWwsIHBhZGRpbmc6IDEwIH0pIDogdW5kZWZpbmVkLFxyXG4gICAgICBdLmZpbHRlcihwID0+IHApLFxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcblxyXG5lbnVtIFBPUE9WRVJfU1RBVEV7XHJcbiAgSURMRSAgICAgICA9IDEsXHJcbiAgUFJFU0VOVElORyA9IDIsXHJcbiAgRElTTUlTU0lORyA9IDMsXHJcbiAgVklTSUJMRSAgICA9IDRcclxufVxyXG5jb25zdCBTVEFUSUNfU0lERVMgPSB7XHJcbiAgdG9wOiBcImJvdHRvbVwiLFxyXG4gIHJpZ2h0OiBcImxlZnRcIixcclxuICBib3R0b206IFwidG9wXCIsXHJcbiAgbGVmdDogXCJyaWdodFwiXHJcbn07XHJcbmNvbnN0IFJPVEFUSU9OUyA9IHtcclxuICBib3R0b206IFwiMTM1ZGVnXCIsXHJcbiAgdG9wOiBcIjMxNWRlZ1wiLFxyXG4gIGxlZnQ6IFwiMjI1ZGVnXCIsXHJcbiAgcmlnaHQ6IFwiNDVkZWdcIixcclxufVxyXG4iLCI8bmctdGVtcGxhdGUgI3BvcG92ZXJUZW1wbGF0ZT5cclxuICA8ZGl2ICNwb3BvdmVyV3JhcHBlciBcclxuICAgIGNsYXNzPVwicG9wb3Zlci13cmFwcGVyIHRyYW5zbHVjaWQtYm9yZGVyXCJcclxuICAgIFtzdHlsZS5oZWlnaHRdPVwiaGVpZ2h0XCJcclxuICAgIFtzdHlsZS53aWR0aF09XCJ3aWR0aFwiXHJcbiAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgJ2JnLWxpZ2h0JyAgICAgICAgOiBmaWxsID09ICdzb2xpZCcsXHJcbiAgICAgICAgJ2JnLXRyYW5zcGFyZW50JyAgOiBmaWxsID09ICdvdXRsaW5lJyxcclxuICAgICAgICAnYmFja2Ryb3AtYmx1ci1tZCBiZy1saWdodC84MCc6IGZpbGwgPT0gJ2JsdXInLFxyXG4gICAgICAgICchYm9yZGVyLTAnICAgICAgIDogZmlsbCA9PSAnY2xlYXInLFxyXG4gICAgICB9XCJcclxuICA+IFxyXG4gICAgPGRpdiAjcG9wb3ZlckFycm93IGNsYXNzPVwicG9wb3Zlci1hcnJvdyBzaXplLTQgdHJhbnNsdWNpZC1ib3JkZXJcIlxyXG4gICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgJ2JnLWxpZ2h0JyAgICAgICAgOiBmaWxsID09ICdzb2xpZCcsXHJcbiAgICAgICAgJ2JnLXRyYW5zcGFyZW50JyAgOiBmaWxsID09ICdvdXRsaW5lJyxcclxuICAgICAgICAnYmFja2Ryb3AtYmx1ci1tZCBiZy1saWdodC84MCc6IGZpbGwgPT0gJ2JsdXInLFxyXG4gICAgICAgICchYm9yZGVyLTAnICAgICAgIDogZmlsbCA9PSAnY2xlYXInLFxyXG4gICAgICB9XCJcclxuICAgID48L2Rpdj5cclxuXHJcbiAgICA8bmctY29udGVudCAjY29udGVudD48L25nLWNvbnRlbnQ+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+Il19
|
|
@@ -2,9 +2,6 @@ import { NgModule } from '@angular/core';
|
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
3
|
import { SIonPopoverComponent } from './sion-popover/sion-popover.component';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
|
-
const lstComponents = [
|
|
6
|
-
SIonPopoverComponent,
|
|
7
|
-
];
|
|
8
5
|
export class SIonPopoverModule {
|
|
9
6
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SIonPopoverModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
10
7
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: SIonPopoverModule, declarations: [SIonPopoverComponent], imports: [CommonModule], exports: [SIonPopoverComponent] }); }
|
|
@@ -13,11 +10,11 @@ export class SIonPopoverModule {
|
|
|
13
10
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SIonPopoverModule, decorators: [{
|
|
14
11
|
type: NgModule,
|
|
15
12
|
args: [{
|
|
16
|
-
declarations: [
|
|
17
|
-
exports: [
|
|
13
|
+
declarations: [SIonPopoverComponent],
|
|
14
|
+
exports: [SIonPopoverComponent],
|
|
18
15
|
imports: [
|
|
19
16
|
CommonModule
|
|
20
17
|
]
|
|
21
18
|
}]
|
|
22
19
|
}] });
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lvbi1wb3BvdmVyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9wb3BvdmVyL3Npb24tcG9wb3Zlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7O0FBUzdFLE1BQU0sT0FBTyxpQkFBaUI7K0dBQWpCLGlCQUFpQjtnSEFBakIsaUJBQWlCLGlCQU5aLG9CQUFvQixhQUdsQyxZQUFZLGFBRkgsb0JBQW9CO2dIQUtwQixpQkFBaUIsWUFIMUIsWUFBWTs7NEZBR0gsaUJBQWlCO2tCQVA3QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFFLG9CQUFvQixDQUFHO29CQUN2QyxPQUFPLEVBQUUsQ0FBRSxvQkFBb0IsQ0FBRTtvQkFDakMsT0FBTyxFQUFFO3dCQUNQLFlBQVk7cUJBQ2I7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBTSW9uUG9wb3ZlckNvbXBvbmVudCB9IGZyb20gJy4vc2lvbi1wb3BvdmVyL3Npb24tcG9wb3Zlci5jb21wb25lbnQnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFsgU0lvblBvcG92ZXJDb21wb25lbnQgIF0sXHJcbiAgZXhwb3J0czogWyBTSW9uUG9wb3ZlckNvbXBvbmVudCBdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFNJb25Qb3BvdmVyTW9kdWxlIHsgfVxyXG4iXX0=
|