@ks89/angular-modal-gallery 8.0.1 → 9.1.0-beta.1
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/CHANGELOG.md +58 -0
- package/CONTRIBUTING.md +3 -3
- package/README.md +22 -26
- package/{esm2015/ks89-angular-modal-gallery.js → esm2020/ks89-angular-modal-gallery.mjs} +0 -0
- package/{esm2015/lib/components/accessibility-default.js → esm2020/lib/components/accessibility-default.mjs} +0 -0
- package/{esm2015/lib/components/accessible.component.js → esm2020/lib/components/accessible.component.mjs} +6 -6
- package/esm2020/lib/components/carousel/carousel-previews/carousel-previews.component.mjs +462 -0
- package/esm2020/lib/components/carousel/carousel.component.mjs +747 -0
- package/{esm2015/lib/components/components.js → esm2020/lib/components/components.mjs} +0 -0
- package/esm2020/lib/components/current-image/current-image.component.mjs +616 -0
- package/esm2020/lib/components/current-image/loading-spinner/loading-spinner.component.mjs +80 -0
- package/esm2020/lib/components/dots/dots.component.mjs +127 -0
- package/{esm2015/lib/components/modal-gallery/modal-gallery-ref.js → esm2020/lib/components/modal-gallery/modal-gallery-ref.mjs} +0 -0
- package/esm2020/lib/components/modal-gallery/modal-gallery.component.mjs +524 -0
- package/esm2020/lib/components/modal-gallery/modal-gallery.service.mjs +187 -0
- package/{esm2015/lib/components/modal-gallery/modal-gallery.tokens.js → esm2020/lib/components/modal-gallery/modal-gallery.tokens.mjs} +0 -0
- package/esm2020/lib/components/plain-gallery/plain-gallery.component.mjs +249 -0
- package/esm2020/lib/components/previews/previews.component.mjs +337 -0
- package/{esm2015/lib/components/upper-buttons/upper-buttons-default.js → esm2020/lib/components/upper-buttons/upper-buttons-default.mjs} +0 -0
- package/esm2020/lib/components/upper-buttons/upper-buttons.component.mjs +249 -0
- package/{esm2015/lib/directives/a-tag-bg-image.directive.js → esm2020/lib/directives/a-tag-bg-image.directive.mjs} +3 -3
- package/{esm2015/lib/directives/click-outside.directive.js → esm2020/lib/directives/click-outside.directive.mjs} +3 -3
- package/{esm2015/lib/directives/description.directive.js → esm2020/lib/directives/description.directive.mjs} +3 -3
- package/{esm2015/lib/directives/direction.directive.js → esm2020/lib/directives/direction.directive.mjs} +3 -3
- package/{esm2015/lib/directives/directives.js → esm2020/lib/directives/directives.mjs} +0 -0
- package/{esm2015/lib/directives/fallback-image.directive.js → esm2020/lib/directives/fallback-image.directive.mjs} +3 -3
- package/{esm2015/lib/directives/keyboard-navigation.directive.js → esm2020/lib/directives/keyboard-navigation.directive.mjs} +5 -5
- package/{esm2015/lib/directives/margin.directive.js → esm2020/lib/directives/margin.directive.mjs} +3 -3
- package/{esm2015/lib/directives/max-size.directive.js → esm2020/lib/directives/max-size.directive.mjs} +3 -3
- package/{esm2015/lib/directives/size.directive.js → esm2020/lib/directives/size.directive.mjs} +3 -3
- package/{esm2015/lib/directives/wrap.directive.js → esm2020/lib/directives/wrap.directive.mjs} +3 -3
- package/{esm2015/lib/modal-gallery.module.js → esm2020/lib/modal-gallery.module.mjs} +7 -7
- package/{esm2015/lib/model/accessibility.interface.js → esm2020/lib/model/accessibility.interface.mjs} +0 -0
- package/{esm2015/lib/model/action.enum.js → esm2020/lib/model/action.enum.mjs} +0 -0
- package/{esm2015/lib/model/buttons-config.interface.js → esm2020/lib/model/buttons-config.interface.mjs} +0 -0
- package/{esm2015/lib/model/carousel-config.interface.js → esm2020/lib/model/carousel-config.interface.mjs} +1 -1
- package/{esm2015/lib/model/carousel-image-config.interface.js → esm2020/lib/model/carousel-image-config.interface.mjs} +0 -0
- package/{esm2015/lib/model/carousel-preview-config.interface.js → esm2020/lib/model/carousel-preview-config.interface.mjs} +0 -0
- package/{esm2015/lib/model/current-image-config.interface.js → esm2020/lib/model/current-image-config.interface.mjs} +0 -0
- package/{esm2015/lib/model/description.interface.js → esm2020/lib/model/description.interface.mjs} +0 -0
- package/{esm2015/lib/model/dots-config.interface.js → esm2020/lib/model/dots-config.interface.mjs} +0 -0
- package/{esm2015/lib/model/image-internal.class.js → esm2020/lib/model/image-internal.class.mjs} +0 -0
- package/{esm2015/lib/model/image.class.js → esm2020/lib/model/image.class.mjs} +0 -0
- package/{esm2015/lib/model/interaction-event.interface.js → esm2020/lib/model/interaction-event.interface.mjs} +0 -0
- package/{esm2015/lib/model/keyboard-config.interface.js → esm2020/lib/model/keyboard-config.interface.mjs} +1 -1
- package/{esm2015/lib/model/keyboard-service-config.interface.js → esm2020/lib/model/keyboard-service-config.interface.mjs} +0 -0
- package/esm2020/lib/model/keyboard.enum.mjs +35 -0
- package/{esm2015/lib/model/lib-config.interface.js → esm2020/lib/model/lib-config.interface.mjs} +1 -1
- package/{esm2015/lib/model/loading-config.interface.js → esm2020/lib/model/loading-config.interface.mjs} +0 -0
- package/{esm2015/lib/model/max-size.interface.js → esm2020/lib/model/max-size.interface.mjs} +0 -0
- package/{esm2015/lib/model/modal-gallery-config.interface.js → esm2020/lib/model/modal-gallery-config.interface.mjs} +1 -1
- package/esm2020/lib/model/plain-gallery-config.interface.mjs +55 -0
- package/{esm2015/lib/model/play-config.interface.js → esm2020/lib/model/play-config.interface.mjs} +0 -0
- package/{esm2015/lib/model/preview-config.interface.js → esm2020/lib/model/preview-config.interface.mjs} +0 -0
- package/{esm2015/lib/model/size.interface.js → esm2020/lib/model/size.interface.mjs} +0 -0
- package/{esm2015/lib/model/slide-config.interface.js → esm2020/lib/model/slide-config.interface.mjs} +0 -0
- package/esm2020/lib/services/config.service.mjs +396 -0
- package/{esm2015/lib/services/id-validator.service.js → esm2020/lib/services/id-validator.service.mjs} +3 -3
- package/{esm2015/lib/services/keyboard.service.js → esm2020/lib/services/keyboard.service.mjs} +3 -3
- package/{esm2015/lib/utils/image.util.js → esm2020/lib/utils/image.util.mjs} +0 -0
- package/esm2020/lib/utils/user-input.util.mjs +104 -0
- package/esm2020/public-api.mjs +42 -0
- package/fesm2015/ks89-angular-modal-gallery.mjs +5788 -0
- package/fesm2015/ks89-angular-modal-gallery.mjs.map +1 -0
- package/{fesm2015/ks89-angular-modal-gallery.js → fesm2020/ks89-angular-modal-gallery.mjs} +270 -432
- package/fesm2020/ks89-angular-modal-gallery.mjs.map +1 -0
- package/lib/components/accessible.component.d.ts +2 -2
- package/lib/components/carousel/carousel-previews/carousel-previews.component.d.ts +0 -7
- package/lib/components/carousel/carousel.component.d.ts +25 -67
- package/lib/components/current-image/current-image.component.d.ts +3 -3
- package/lib/components/modal-gallery/modal-gallery.component.d.ts +8 -21
- package/lib/components/modal-gallery/modal-gallery.service.d.ts +1 -0
- package/lib/components/plain-gallery/plain-gallery.component.d.ts +6 -10
- package/lib/components/previews/previews.component.d.ts +9 -2
- package/lib/directives/keyboard-navigation.directive.d.ts +1 -1
- package/lib/model/carousel-config.interface.d.ts +0 -1
- package/lib/model/keyboard-config.interface.d.ts +4 -4
- package/lib/model/keyboard.enum.d.ts +11 -8
- package/lib/model/lib-config.interface.d.ts +20 -7
- package/lib/model/modal-gallery-config.interface.d.ts +10 -2
- package/lib/model/plain-gallery-config.interface.d.ts +1 -9
- package/lib/utils/user-input.util.d.ts +35 -26
- package/package.json +27 -14
- package/public-api.d.ts +2 -2
- package/bundles/ks89-angular-modal-gallery.umd.js +0 -6221
- package/bundles/ks89-angular-modal-gallery.umd.js.map +0 -1
- package/esm2015/lib/components/carousel/carousel-previews/carousel-previews.component.js +0 -480
- package/esm2015/lib/components/carousel/carousel.component.js +0 -800
- package/esm2015/lib/components/current-image/current-image.component.js +0 -621
- package/esm2015/lib/components/current-image/loading-spinner/loading-spinner.component.js +0 -93
- package/esm2015/lib/components/dots/dots.component.js +0 -132
- package/esm2015/lib/components/modal-gallery/modal-gallery.component.js +0 -576
- package/esm2015/lib/components/modal-gallery/modal-gallery.service.js +0 -186
- package/esm2015/lib/components/plain-gallery/plain-gallery.component.js +0 -259
- package/esm2015/lib/components/previews/previews.component.js +0 -337
- package/esm2015/lib/components/upper-buttons/upper-buttons.component.js +0 -254
- package/esm2015/lib/model/keyboard.enum.js +0 -35
- package/esm2015/lib/model/plain-gallery-config.interface.js +0 -64
- package/esm2015/lib/services/config.service.js +0 -395
- package/esm2015/lib/utils/user-input.util.js +0 -95
- package/esm2015/public-api.js +0 -42
- package/fesm2015/ks89-angular-modal-gallery.js.map +0 -1
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
The MIT License (MIT)
|
|
3
|
-
|
|
4
|
-
Copyright (C) 2017-2021 Stefano Cappa (Ks89)
|
|
5
|
-
|
|
6
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
7
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
8
|
-
in the Software without restriction, including without limitation the rights
|
|
9
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
10
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
11
|
-
furnished to do so, subject to the following conditions:
|
|
12
|
-
|
|
13
|
-
The above copyright notice and this permission notice shall be included in all
|
|
14
|
-
copies or substantial portions of the Software.
|
|
15
|
-
|
|
16
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
17
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
18
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL THE
|
|
19
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
20
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
21
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
22
|
-
SOFTWARE.
|
|
23
|
-
*/
|
|
24
|
-
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
|
|
25
|
-
import { LoadingType } from '../../../model/loading-config.interface';
|
|
26
|
-
import * as i0 from "@angular/core";
|
|
27
|
-
import * as i1 from "@angular/common";
|
|
28
|
-
/**
|
|
29
|
-
* Component with the loading spinner
|
|
30
|
-
*/
|
|
31
|
-
export class LoadingSpinnerComponent {
|
|
32
|
-
constructor() {
|
|
33
|
-
/**
|
|
34
|
-
* Enum of type `LoadingType` to choose the standard loading spinner.
|
|
35
|
-
* Declared here to be used inside the template.
|
|
36
|
-
*/
|
|
37
|
-
this.loadingStandard = LoadingType.STANDARD;
|
|
38
|
-
/**
|
|
39
|
-
* Enum of type `LoadingType` to choose the bars loading spinner.
|
|
40
|
-
* Declared here to be used inside the template.
|
|
41
|
-
*/
|
|
42
|
-
this.loadingBars = LoadingType.BARS;
|
|
43
|
-
/**
|
|
44
|
-
* Enum of type `LoadingType` to choose the circular loading spinner.
|
|
45
|
-
* Declared here to be used inside the template.
|
|
46
|
-
*/
|
|
47
|
-
this.loadingCircular = LoadingType.CIRCULAR;
|
|
48
|
-
/**
|
|
49
|
-
* Enum of type `LoadingType` to choose the dots loading spinner.
|
|
50
|
-
* Declared here to be used inside the template.
|
|
51
|
-
*/
|
|
52
|
-
this.loadingDots = LoadingType.DOTS;
|
|
53
|
-
/**
|
|
54
|
-
* Enum of type `LoadingType` to choose the cube flipping loading spinner.
|
|
55
|
-
* Declared here to be used inside the template.
|
|
56
|
-
*/
|
|
57
|
-
this.loadingCubeFlipping = LoadingType.CUBE_FLIPPING;
|
|
58
|
-
/**
|
|
59
|
-
* Enum of type `LoadingType` to choose the circles loading spinner.
|
|
60
|
-
* Declared here to be used inside the template.
|
|
61
|
-
*/
|
|
62
|
-
this.loadingCircles = LoadingType.CIRCLES;
|
|
63
|
-
/**
|
|
64
|
-
* Enum of type `LoadingType` to choose the explosing squares loading spinner.
|
|
65
|
-
* Declared here to be used inside the template.
|
|
66
|
-
*/
|
|
67
|
-
this.loadingExplosingSquares = LoadingType.EXPLOSING_SQUARES;
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
LoadingSpinnerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.1", ngImport: i0, type: LoadingSpinnerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
71
|
-
LoadingSpinnerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.1", type: LoadingSpinnerComponent, selector: "ks-loading-spinner", inputs: { loadingConfig: "loadingConfig", accessibilityConfig: "accessibilityConfig" }, ngImport: i0, template: "<div [attr.aria-label]=\"accessibilityConfig?.loadingSpinnerAriaLabel\"\n [title]=\"accessibilityConfig?.loadingSpinnerTitle\">\n\n <ng-container [ngSwitch]=\"loadingConfig?.type\">\n <ng-container *ngSwitchCase=\"loadingStandard\">\n <div class=\"cssload-loader\">\n <div class=\"cssload-inner cssload-one\"></div>\n <div class=\"cssload-inner cssload-two\"></div>\n <div class=\"cssload-inner cssload-three\"></div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"loadingBars\">\n <div class=\"loader-bars\">\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"loadingCircular\">\n <div class=\"loader-circular\">\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"loadingDots\">\n <div class=\"loader-dots\">\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"loadingCubeFlipping\">\n <div class=\"cube-wrapper\">\n <div class=\"cube-folding\">\n <span class=\"leaf1\"></span>\n <span class=\"leaf2\"></span>\n <span class=\"leaf3\"></span>\n <span class=\"leaf4\"></span>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"loadingCircles\">\n <div id=\"preloader\">\n <div id=\"loader\"></div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"loadingExplosingSquares\">\n <div class=\"loader\">\n <span></span>\n <span></span>\n <span></span>\n <span></span>\n </div>\n </ng-container>\n </ng-container>\n</div>\n", styles: [".cssload-loader{top:0;bottom:0;right:0;left:0;margin:auto;width:64px;height:64px;perspective:800px}.cssload-inner,.cssload-loader{position:absolute;border-radius:50%;-o-border-radius:50%;-ms-border-radius:50%;-webkit-border-radius:50%;-moz-border-radius:50%}.cssload-inner{width:100%;height:100%;box-sizing:border-box;-o-box-sizing:border-box;-ms-box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.cssload-inner.cssload-one{left:0;top:0;animation:cssload-rotate-one .6s linear infinite;-o-animation:cssload-rotate-one .6s linear infinite;-ms-animation:cssload-rotate-one .6s linear infinite;-webkit-animation:cssload-rotate-one .6s linear infinite;-moz-animation:cssload-rotate-one .6s linear infinite;border-bottom:3px solid #fffffffc}.cssload-inner.cssload-two{right:0;top:0;animation:cssload-rotate-two .6s linear infinite;-o-animation:cssload-rotate-two .6s linear infinite;-ms-animation:cssload-rotate-two .6s linear infinite;-webkit-animation:cssload-rotate-two .6s linear infinite;-moz-animation:cssload-rotate-two .6s linear infinite;border-right:3px solid #fff}.cssload-inner.cssload-three{right:0;bottom:0;animation:cssload-rotate-three .6s linear infinite;-o-animation:cssload-rotate-three .6s linear infinite;-ms-animation:cssload-rotate-three .6s linear infinite;-webkit-animation:cssload-rotate-three .6s linear infinite;-moz-animation:cssload-rotate-three .6s linear infinite;border-top:3px solid #fff}@keyframes cssload-rotate-one{0%{transform:rotateX(35deg) rotateY(-45deg) rotate(0deg)}to{transform:rotateX(35deg) rotateY(-45deg) rotate(1turn)}}@keyframes cssload-rotate-two{0%{transform:rotateX(50deg) rotateY(10deg) rotate(0deg)}to{transform:rotateX(50deg) rotateY(10deg) rotate(1turn)}}@keyframes cssload-rotate-three{0%{transform:rotateX(35deg) rotateY(55deg) rotate(0deg)}to{transform:rotateX(35deg) rotateY(55deg) rotate(1turn)}}", ".loader-dots{position:absolute;top:0;bottom:0;right:0;left:0;color:#fefcff;font-size:10px;margin:auto;width:1em;height:1em;border-radius:50%;text-indent:-9999em;animation:load4 1.3s linear infinite;transform:translateZ(0)}@keyframes load4{0%,to{box-shadow:0 -3em 0 .2em,2em -2em 0 0,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 0}12.5%{box-shadow:0 -3em 0 0,2em -2em 0 .2em,3em 0 0 0,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}25%{box-shadow:0 -3em 0 -.5em,2em -2em 0 0,3em 0 0 .2em,2em 2em 0 0,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}37.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 0,2em 2em 0 .2em,0 3em 0 0,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}50%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 0,0 3em 0 .2em,-2em 2em 0 0,-3em 0 0 -1em,-2em -2em 0 -1em}62.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 0,-2em 2em 0 .2em,-3em 0 0 0,-2em -2em 0 -1em}75%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 0,-3em 0 0 .2em,-2em -2em 0 0}87.5%{box-shadow:0 -3em 0 0,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 0,-3em 0 0 0,-2em -2em 0 .2em}}", ".loader-bars,.loader-bars:after,.loader-bars:before{background:#fefcff;animation:load1 1s ease-in-out infinite;width:1em;height:4em}.loader-bars{position:absolute;top:0;bottom:0;right:0;left:0;color:#fefcff;text-indent:-9999em;margin:auto;font-size:11px;transform:translateZ(0);animation-delay:-.16s}.loader-bars:after,.loader-bars:before{position:absolute;top:0;content:\"\"}.loader-bars:before{left:-1.5em;animation-delay:-.32s}.loader-bars:after{left:1.5em}@keyframes load1{0%,80%,to{box-shadow:0 0;height:4em}40%{box-shadow:0 -2em;height:5em}}", ".loader-circular,.loader-circular:after{border-radius:50%;width:10em;height:10em}.loader-circular{position:absolute;top:0;bottom:0;right:0;left:0;margin:auto;font-size:10px;text-indent:-9999em;border:1.1em solid #fff3;border-left-color:#fff;transform:translateZ(0);animation:load8 1.1s linear infinite}@keyframes load8{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}", ".cube-folding{width:50px;height:50px;display:inline-block;transform:rotate(45deg);font-size:0}.cube-folding span{position:relative;width:25px;height:25px;transform:scale(1.1);display:inline-block}.cube-folding span:before{content:\"\";background-color:#fff;position:absolute;left:0;top:0;display:block;width:25px;height:25px;transform-origin:100% 100%;animation:folding 2.5s linear infinite both}.cube-folding .leaf2{transform:rotate(90deg) scale(1.1)}.cube-folding .leaf2:before{animation-delay:.3s;background-color:#f2f2f2}.cube-folding .leaf3{transform:rotate(270deg) scale(1.1)}.cube-folding .leaf3:before{animation-delay:.9s;background-color:#f2f2f2}.cube-folding .leaf4{transform:rotate(180deg) scale(1.1)}.cube-folding .leaf4:before{animation-delay:.6s;background-color:#e6e6e6}@keyframes folding{0%,10%{transform:perspective(140px) rotateX(-180deg);opacity:0}25%,75%{transform:perspective(140px) rotateX(0deg);opacity:1}90%,to{transform:perspective(140px) rotateY(180deg);opacity:0}}.cube-wrapper{position:fixed;left:50%;top:50%;margin-top:-50px;margin-left:-50px;width:100px;height:100px;text-align:center}@keyframes text{to{top:35px}}@keyframes shadow{to{bottom:-18px;width:100px}}", "#preloader{position:fixed;top:0;left:0;width:100%;height:100%}#loader{display:block;position:relative;left:50%;top:50%;width:100px;height:100px;margin:-75px 0 0 -75px;border-radius:50%;border:3px solid #0000;border-top-color:#b4b4b4;animation:spin 2s linear infinite}#loader:before{content:\"\";position:absolute;top:5px;left:5px;right:5px;bottom:5px;border-radius:50%;border:3px solid #0000;border-top-color:#d9d9d9;animation:spin 3s linear infinite}#loader:after{content:\"\";position:absolute;top:15px;left:15px;right:15px;bottom:15px;border-radius:50%;border:3px solid #0000;border-top-color:#fff;animation:spin 1.5s linear infinite}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}", "@keyframes loader{0%,10%,to{width:60px;height:60px}65%{width:150px;height:150px}}@keyframes loaderBlock{0%,30%{transform:rotate(0)}55%{background-color:#b4b4b4}to{transform:rotate(90deg)}}@keyframes loaderBlockInverse{0%,20%{transform:rotate(0)}55%{background-color:#d9d9d9}to{transform:rotate(-90deg)}}.loader{position:absolute;top:50%;left:50%;width:60px;height:60px;transform:translate(-50%,-50%) rotate(45deg) translateZ(0);animation:loader 1.2s ease-in-out infinite}.loader span{position:absolute;display:block;width:40px;height:40px;background-color:#fff;animation:loaderBlock 1.2s ease-in-out infinite both}.loader span:first-child{top:0;left:0}.loader span:nth-child(2){top:0;right:0}.loader span:nth-child(2),.loader span:nth-child(3){animation:loaderBlockInverse 1.2s ease-in-out infinite both}.loader span:nth-child(3){bottom:0;left:0}.loader span:nth-child(4){bottom:0;right:0}"], directives: [{ type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
72
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.1", ngImport: i0, type: LoadingSpinnerComponent, decorators: [{
|
|
73
|
-
type: Component,
|
|
74
|
-
args: [{
|
|
75
|
-
selector: 'ks-loading-spinner',
|
|
76
|
-
styleUrls: [
|
|
77
|
-
'style-loading-spinner-standard.css',
|
|
78
|
-
'style-loading-spinner-dots.css',
|
|
79
|
-
'style-loading-spinner-bars.css',
|
|
80
|
-
'style-loading-spinner-circular.css',
|
|
81
|
-
'style-loading-spinner-cube-flipping.css',
|
|
82
|
-
'style-loading-spinner-circles.css',
|
|
83
|
-
'style-loading-spinner-explosing-squares.scss'
|
|
84
|
-
],
|
|
85
|
-
templateUrl: 'loading-spinner.html',
|
|
86
|
-
changeDetection: ChangeDetectionStrategy.OnPush
|
|
87
|
-
}]
|
|
88
|
-
}], propDecorators: { loadingConfig: [{
|
|
89
|
-
type: Input
|
|
90
|
-
}], accessibilityConfig: [{
|
|
91
|
-
type: Input
|
|
92
|
-
}] } });
|
|
93
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGluZy1zcGlubmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tzODkvYW5ndWxhci1tb2RhbC1nYWxsZXJ5L3NyYy9saWIvY29tcG9uZW50cy9jdXJyZW50LWltYWdlL2xvYWRpbmctc3Bpbm5lci9sb2FkaW5nLXNwaW5uZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3M4OS9hbmd1bGFyLW1vZGFsLWdhbGxlcnkvc3JjL2xpYi9jb21wb25lbnRzL2N1cnJlbnQtaW1hZ2UvbG9hZGluZy1zcGlubmVyL2xvYWRpbmctc3Bpbm5lci5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBRUgsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHMUUsT0FBTyxFQUFpQixXQUFXLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQzs7O0FBRXJGOztHQUVHO0FBZUgsTUFBTSxPQUFPLHVCQUF1QjtJQWRwQztRQTRCRTs7O1dBR0c7UUFDSCxvQkFBZSxHQUFnQixXQUFXLENBQUMsUUFBUSxDQUFDO1FBQ3BEOzs7V0FHRztRQUNILGdCQUFXLEdBQWdCLFdBQVcsQ0FBQyxJQUFJLENBQUM7UUFDNUM7OztXQUdHO1FBQ0gsb0JBQWUsR0FBZ0IsV0FBVyxDQUFDLFFBQVEsQ0FBQztRQUNwRDs7O1dBR0c7UUFDSCxnQkFBVyxHQUFnQixXQUFXLENBQUMsSUFBSSxDQUFDO1FBQzVDOzs7V0FHRztRQUNILHdCQUFtQixHQUFnQixXQUFXLENBQUMsYUFBYSxDQUFDO1FBQzdEOzs7V0FHRztRQUNILG1CQUFjLEdBQWdCLFdBQVcsQ0FBQyxPQUFPLENBQUM7UUFDbEQ7OztXQUdHO1FBQ0gsNEJBQXVCLEdBQWdCLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQztLQUN0RTs7b0hBakRZLHVCQUF1Qjt3R0FBdkIsdUJBQXVCLGtKQzlDcEMsb2tEQWdEQTsyRkRGYSx1QkFBdUI7a0JBZG5DLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG9CQUFvQjtvQkFDOUIsU0FBUyxFQUFFO3dCQUNULG9DQUFvQzt3QkFDcEMsZ0NBQWdDO3dCQUNoQyxnQ0FBZ0M7d0JBQ2hDLG9DQUFvQzt3QkFDcEMseUNBQXlDO3dCQUN6QyxtQ0FBbUM7d0JBQ25DLDhDQUE4QztxQkFDL0M7b0JBQ0QsV0FBVyxFQUFFLHNCQUFzQjtvQkFDbkMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2hEOzhCQU9DLGFBQWE7c0JBRFosS0FBSztnQkFPTixtQkFBbUI7c0JBRGxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuIFRoZSBNSVQgTGljZW5zZSAoTUlUKVxuXG4gQ29weXJpZ2h0IChDKSAyMDE3LTIwMjEgU3RlZmFubyBDYXBwYSAoS3M4OSlcblxuIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuXG4gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4gY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cblxuIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OIElORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiBTT0ZUV0FSRS5cbiAqL1xuXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBBY2Nlc3NpYmlsaXR5Q29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWwvYWNjZXNzaWJpbGl0eS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTG9hZGluZ0NvbmZpZywgTG9hZGluZ1R5cGUgfSBmcm9tICcuLi8uLi8uLi9tb2RlbC9sb2FkaW5nLWNvbmZpZy5pbnRlcmZhY2UnO1xuXG4vKipcbiAqIENvbXBvbmVudCB3aXRoIHRoZSBsb2FkaW5nIHNwaW5uZXJcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAna3MtbG9hZGluZy1zcGlubmVyJyxcbiAgc3R5bGVVcmxzOiBbXG4gICAgJ3N0eWxlLWxvYWRpbmctc3Bpbm5lci1zdGFuZGFyZC5jc3MnLFxuICAgICdzdHlsZS1sb2FkaW5nLXNwaW5uZXItZG90cy5jc3MnLFxuICAgICdzdHlsZS1sb2FkaW5nLXNwaW5uZXItYmFycy5jc3MnLFxuICAgICdzdHlsZS1sb2FkaW5nLXNwaW5uZXItY2lyY3VsYXIuY3NzJyxcbiAgICAnc3R5bGUtbG9hZGluZy1zcGlubmVyLWN1YmUtZmxpcHBpbmcuY3NzJyxcbiAgICAnc3R5bGUtbG9hZGluZy1zcGlubmVyLWNpcmNsZXMuY3NzJyxcbiAgICAnc3R5bGUtbG9hZGluZy1zcGlubmVyLWV4cGxvc2luZy1zcXVhcmVzLnNjc3MnXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnbG9hZGluZy1zcGlubmVyLmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBMb2FkaW5nU3Bpbm5lckNvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBPYmplY3Qgb2YgdHlwZSBgTG9hZGluZ0NvbmZpZ2AgZXhwb3NlZCB0byB0aGUgdGVtcGxhdGUuXG4gICAqIEl0IGNvbnRhaW5zIGEgZmllbGQgdG8gY2hvb3NlIGEgbG9hZGluZyBzcGlubmVyLlxuICAgKi9cbiAgQElucHV0KClcbiAgbG9hZGluZ0NvbmZpZzogTG9hZGluZ0NvbmZpZyB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIE9iamVjdCBvZiB0eXBlIGBBY2Nlc3NpYmlsaXR5Q29uZmlnYCB0byBpbml0IGN1c3RvbSBhY2Nlc3NpYmlsaXR5IGZlYXR1cmVzLlxuICAgKiBGb3IgaW5zdGFuY2UsIGl0IGNvbnRhaW5zIHRpdGxlcywgYWx0IHRleHRzLCBhcmlhLWxhYmVscyBhbmQgc28gb24uXG4gICAqL1xuICBASW5wdXQoKVxuICBhY2Nlc3NpYmlsaXR5Q29uZmlnOiBBY2Nlc3NpYmlsaXR5Q29uZmlnIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBFbnVtIG9mIHR5cGUgYExvYWRpbmdUeXBlYCB0byBjaG9vc2UgdGhlIHN0YW5kYXJkIGxvYWRpbmcgc3Bpbm5lci5cbiAgICogRGVjbGFyZWQgaGVyZSB0byBiZSB1c2VkIGluc2lkZSB0aGUgdGVtcGxhdGUuXG4gICAqL1xuICBsb2FkaW5nU3RhbmRhcmQ6IExvYWRpbmdUeXBlID0gTG9hZGluZ1R5cGUuU1RBTkRBUkQ7XG4gIC8qKlxuICAgKiBFbnVtIG9mIHR5cGUgYExvYWRpbmdUeXBlYCB0byBjaG9vc2UgdGhlIGJhcnMgbG9hZGluZyBzcGlubmVyLlxuICAgKiBEZWNsYXJlZCBoZXJlIHRvIGJlIHVzZWQgaW5zaWRlIHRoZSB0ZW1wbGF0ZS5cbiAgICovXG4gIGxvYWRpbmdCYXJzOiBMb2FkaW5nVHlwZSA9IExvYWRpbmdUeXBlLkJBUlM7XG4gIC8qKlxuICAgKiBFbnVtIG9mIHR5cGUgYExvYWRpbmdUeXBlYCB0byBjaG9vc2UgdGhlIGNpcmN1bGFyIGxvYWRpbmcgc3Bpbm5lci5cbiAgICogRGVjbGFyZWQgaGVyZSB0byBiZSB1c2VkIGluc2lkZSB0aGUgdGVtcGxhdGUuXG4gICAqL1xuICBsb2FkaW5nQ2lyY3VsYXI6IExvYWRpbmdUeXBlID0gTG9hZGluZ1R5cGUuQ0lSQ1VMQVI7XG4gIC8qKlxuICAgKiBFbnVtIG9mIHR5cGUgYExvYWRpbmdUeXBlYCB0byBjaG9vc2UgdGhlIGRvdHMgbG9hZGluZyBzcGlubmVyLlxuICAgKiBEZWNsYXJlZCBoZXJlIHRvIGJlIHVzZWQgaW5zaWRlIHRoZSB0ZW1wbGF0ZS5cbiAgICovXG4gIGxvYWRpbmdEb3RzOiBMb2FkaW5nVHlwZSA9IExvYWRpbmdUeXBlLkRPVFM7XG4gIC8qKlxuICAgKiBFbnVtIG9mIHR5cGUgYExvYWRpbmdUeXBlYCB0byBjaG9vc2UgdGhlIGN1YmUgZmxpcHBpbmcgbG9hZGluZyBzcGlubmVyLlxuICAgKiBEZWNsYXJlZCBoZXJlIHRvIGJlIHVzZWQgaW5zaWRlIHRoZSB0ZW1wbGF0ZS5cbiAgICovXG4gIGxvYWRpbmdDdWJlRmxpcHBpbmc6IExvYWRpbmdUeXBlID0gTG9hZGluZ1R5cGUuQ1VCRV9GTElQUElORztcbiAgLyoqXG4gICAqIEVudW0gb2YgdHlwZSBgTG9hZGluZ1R5cGVgIHRvIGNob29zZSB0aGUgY2lyY2xlcyBsb2FkaW5nIHNwaW5uZXIuXG4gICAqIERlY2xhcmVkIGhlcmUgdG8gYmUgdXNlZCBpbnNpZGUgdGhlIHRlbXBsYXRlLlxuICAgKi9cbiAgbG9hZGluZ0NpcmNsZXM6IExvYWRpbmdUeXBlID0gTG9hZGluZ1R5cGUuQ0lSQ0xFUztcbiAgLyoqXG4gICAqIEVudW0gb2YgdHlwZSBgTG9hZGluZ1R5cGVgIHRvIGNob29zZSB0aGUgZXhwbG9zaW5nIHNxdWFyZXMgbG9hZGluZyBzcGlubmVyLlxuICAgKiBEZWNsYXJlZCBoZXJlIHRvIGJlIHVzZWQgaW5zaWRlIHRoZSB0ZW1wbGF0ZS5cbiAgICovXG4gIGxvYWRpbmdFeHBsb3NpbmdTcXVhcmVzOiBMb2FkaW5nVHlwZSA9IExvYWRpbmdUeXBlLkVYUExPU0lOR19TUVVBUkVTO1xufVxuIiwiPGRpdiBbYXR0ci5hcmlhLWxhYmVsXT1cImFjY2Vzc2liaWxpdHlDb25maWc/LmxvYWRpbmdTcGlubmVyQXJpYUxhYmVsXCJcbiAgICAgW3RpdGxlXT1cImFjY2Vzc2liaWxpdHlDb25maWc/LmxvYWRpbmdTcGlubmVyVGl0bGVcIj5cblxuICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJsb2FkaW5nQ29uZmlnPy50eXBlXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwibG9hZGluZ1N0YW5kYXJkXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3NzbG9hZC1sb2FkZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNzc2xvYWQtaW5uZXIgY3NzbG9hZC1vbmVcIj48L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNzc2xvYWQtaW5uZXIgY3NzbG9hZC10d29cIj48L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNzc2xvYWQtaW5uZXIgY3NzbG9hZC10aHJlZVwiPjwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwibG9hZGluZ0JhcnNcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJsb2FkZXItYmFyc1wiPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwibG9hZGluZ0NpcmN1bGFyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibG9hZGVyLWNpcmN1bGFyXCI+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJsb2FkaW5nRG90c1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImxvYWRlci1kb3RzXCI+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJsb2FkaW5nQ3ViZUZsaXBwaW5nXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3ViZS13cmFwcGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjdWJlLWZvbGRpbmdcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImxlYWYxXCI+PC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGVhZjJcIj48L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJsZWFmM1wiPjwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImxlYWY0XCI+PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cImxvYWRpbmdDaXJjbGVzXCI+XG4gICAgICA8ZGl2IGlkPVwicHJlbG9hZGVyXCI+XG4gICAgICAgIDxkaXYgaWQ9XCJsb2FkZXJcIj48L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cImxvYWRpbmdFeHBsb3NpbmdTcXVhcmVzXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibG9hZGVyXCI+XG4gICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuIl19
|
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
The MIT License (MIT)
|
|
3
|
-
|
|
4
|
-
Copyright (C) 2017-2021 Stefano Cappa (Ks89)
|
|
5
|
-
|
|
6
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
7
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
8
|
-
in the Software without restriction, including without limitation the rights
|
|
9
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
10
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
11
|
-
furnished to do so, subject to the following conditions:
|
|
12
|
-
|
|
13
|
-
The above copyright notice and this permission notice shall be included in all
|
|
14
|
-
copies or substantial portions of the Software.
|
|
15
|
-
|
|
16
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
17
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
18
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL THE
|
|
19
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
20
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
21
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
22
|
-
SOFTWARE.
|
|
23
|
-
*/
|
|
24
|
-
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
|
|
25
|
-
import { AccessibleComponent } from '../accessible.component';
|
|
26
|
-
import { NEXT } from '../../utils/user-input.util';
|
|
27
|
-
import { getIndex } from '../../utils/image.util';
|
|
28
|
-
import * as i0 from "@angular/core";
|
|
29
|
-
import * as i1 from "../../services/config.service";
|
|
30
|
-
import * as i2 from "@angular/common";
|
|
31
|
-
/**
|
|
32
|
-
* Component with clickable dots (small circles) to navigate between images inside the modal gallery.
|
|
33
|
-
*/
|
|
34
|
-
export class DotsComponent extends AccessibleComponent {
|
|
35
|
-
constructor(configService) {
|
|
36
|
-
super();
|
|
37
|
-
this.configService = configService;
|
|
38
|
-
/**
|
|
39
|
-
* Output to emit clicks on dots. The payload contains a number that represent
|
|
40
|
-
* the index of the clicked dot.
|
|
41
|
-
*/
|
|
42
|
-
this.clickDot = new EventEmitter();
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Method ´ngOnInit´ to build `configDots` applying a default value.
|
|
46
|
-
* This is an Angular's lifecycle hook, so its called automatically by Angular itself.
|
|
47
|
-
* In particular, it's called only one time!!!
|
|
48
|
-
*/
|
|
49
|
-
ngOnInit() {
|
|
50
|
-
if (this.id === null || this.id === undefined) {
|
|
51
|
-
throw new Error('Internal library error - id must be defined');
|
|
52
|
-
}
|
|
53
|
-
const libConfig = this.configService.getConfig(this.id);
|
|
54
|
-
if (!libConfig) {
|
|
55
|
-
throw new Error('Internal library error - libConfig must be defined');
|
|
56
|
-
}
|
|
57
|
-
this.accessibilityConfig = libConfig.accessibilityConfig;
|
|
58
|
-
this.configDots = Object.assign({}, this.dotsConfig);
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Method ´ngOnChanges´ to change `configDots` if the input dotsConfig is changed.
|
|
62
|
-
* This is an Angular's lifecycle hook, so its called automatically by Angular itself.
|
|
63
|
-
*/
|
|
64
|
-
ngOnChanges(changes) {
|
|
65
|
-
const dotsConfigChanges = changes.dotsConfig;
|
|
66
|
-
if (dotsConfigChanges && dotsConfigChanges.currentValue !== dotsConfigChanges.previousValue) {
|
|
67
|
-
this.configDots = dotsConfigChanges.currentValue;
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Method to check if an image is active (i.e. the current image).
|
|
72
|
-
* It checks currentImage and images to prevent errors.
|
|
73
|
-
* @param number index of the image to check if it's active or not
|
|
74
|
-
* @returns boolean true if is active (and input params are valid), false otherwise
|
|
75
|
-
*/
|
|
76
|
-
isActive(index) {
|
|
77
|
-
if (!this.currentImage || !this.images || this.images.length === 0) {
|
|
78
|
-
return false;
|
|
79
|
-
}
|
|
80
|
-
let imageIndex;
|
|
81
|
-
try {
|
|
82
|
-
imageIndex = getIndex(this.currentImage, this.images);
|
|
83
|
-
}
|
|
84
|
-
catch (err) {
|
|
85
|
-
console.error(`Internal error while trying to show the active 'dot'`, err);
|
|
86
|
-
return false;
|
|
87
|
-
}
|
|
88
|
-
return index === imageIndex;
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* Method called by events from keyboard and mouse.
|
|
92
|
-
* @param number index of the dot
|
|
93
|
-
* @param KeyboardEvent | MouseEvent event payload
|
|
94
|
-
*/
|
|
95
|
-
onDotEvent(index, event) {
|
|
96
|
-
const result = super.handleImageEvent(event);
|
|
97
|
-
if (result === NEXT) {
|
|
98
|
-
this.clickDot.emit(index);
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* Method used in the template to track ids in ngFor.
|
|
103
|
-
* @param number index of the array
|
|
104
|
-
* @param Image item of the array
|
|
105
|
-
* @returns number the id of the item
|
|
106
|
-
*/
|
|
107
|
-
trackById(index, item) {
|
|
108
|
-
return item.id;
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
DotsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.1", ngImport: i0, type: DotsComponent, deps: [{ token: i1.ConfigService }], target: i0.ɵɵFactoryTarget.Component });
|
|
112
|
-
DotsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.1", type: DotsComponent, selector: "ks-dots", inputs: { id: "id", currentImage: "currentImage", images: "images", dotsConfig: "dotsConfig" }, outputs: { clickDot: "clickDot" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<nav class=\"dots-container\" [attr.aria-label]=\"accessibilityConfig?.dotsContainerAriaLabel\"\n [title]=\"accessibilityConfig?.dotsContainerTitle\">\n <ng-container *ngIf=\"!dotsConfig || dotsConfig?.visible\">\n <div class=\"inside dot\"\n *ngFor=\"let img of images; trackBy: trackById; let index = index\"\n [ngClass]=\"{'active': isActive(index)}\"\n [attr.aria-label]=\"accessibilityConfig?.dotAriaLabel + ' ' + (index + 1)\"\n [tabIndex]=\"0\" role=\"navigation\"\n (click)=\"onDotEvent(index, $event)\" (keyup)=\"onDotEvent(index, $event)\"></div>\n </ng-container>\n</nav>\n", styles: [".dots-container{display:flex;flex-direction:row;justify-content:center;margin-bottom:30px}.dots-container>.dot{background:#fff;border-radius:5px;height:10px;margin-left:4px;margin-right:4px;width:10px;cursor:pointer;opacity:.5}.dots-container>.dot:hover{opacity:.9;transition:all .5s ease;transition-property:opacity}.dots-container>.dot.active{cursor:pointer;opacity:.9}@keyframes fadein-semi-visible05{0%{opacity:0}to{opacity:.5}}@keyframes fadein-semi-visible09{0%{opacity:0}to{opacity:.9}}"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
113
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.1", ngImport: i0, type: DotsComponent, decorators: [{
|
|
114
|
-
type: Component,
|
|
115
|
-
args: [{
|
|
116
|
-
selector: 'ks-dots',
|
|
117
|
-
styleUrls: ['dots.scss'],
|
|
118
|
-
templateUrl: 'dots.html',
|
|
119
|
-
changeDetection: ChangeDetectionStrategy.OnPush
|
|
120
|
-
}]
|
|
121
|
-
}], ctorParameters: function () { return [{ type: i1.ConfigService }]; }, propDecorators: { id: [{
|
|
122
|
-
type: Input
|
|
123
|
-
}], currentImage: [{
|
|
124
|
-
type: Input
|
|
125
|
-
}], images: [{
|
|
126
|
-
type: Input
|
|
127
|
-
}], dotsConfig: [{
|
|
128
|
-
type: Input
|
|
129
|
-
}], clickDot: [{
|
|
130
|
-
type: Output
|
|
131
|
-
}] } });
|
|
132
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG90cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rczg5L2FuZ3VsYXItbW9kYWwtZ2FsbGVyeS9zcmMvbGliL2NvbXBvbmVudHMvZG90cy9kb3RzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tzODkvYW5ndWxhci1tb2RhbC1nYWxsZXJ5L3NyYy9saWIvY29tcG9uZW50cy9kb3RzL2RvdHMuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUVILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUErQixNQUFNLGVBQWUsQ0FBQztBQUVoSixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQU85RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7O0FBSWxEOztHQUVHO0FBT0gsTUFBTSxPQUFPLGFBQWMsU0FBUSxtQkFBbUI7SUEwQ3BELFlBQW9CLGFBQTRCO1FBQzlDLEtBQUssRUFBRSxDQUFDO1FBRFUsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFqQmhEOzs7V0FHRztRQUVILGFBQVEsR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztJQWM1RCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxFQUFFLEtBQUssU0FBUyxFQUFFO1lBQzdDLE1BQU0sSUFBSSxLQUFLLENBQUMsNkNBQTZDLENBQUMsQ0FBQztTQUNoRTtRQUNELE1BQU0sU0FBUyxHQUEwQixJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDL0UsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMsb0RBQW9ELENBQUMsQ0FBQztTQUN2RTtRQUNELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxTQUFTLENBQUMsbUJBQW1CLENBQUM7UUFDekQsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVEOzs7T0FHRztJQUNILFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxNQUFNLGlCQUFpQixHQUFpQixPQUFPLENBQUMsVUFBVSxDQUFDO1FBQzNELElBQUksaUJBQWlCLElBQUksaUJBQWlCLENBQUMsWUFBWSxLQUFLLGlCQUFpQixDQUFDLGFBQWEsRUFBRTtZQUMzRixJQUFJLENBQUMsVUFBVSxHQUFHLGlCQUFpQixDQUFDLFlBQVksQ0FBQztTQUNsRDtJQUNILENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFFBQVEsQ0FBQyxLQUFhO1FBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDbEUsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUNELElBQUksVUFBa0IsQ0FBQztRQUN2QixJQUFJO1lBQ0YsVUFBVSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUN2RDtRQUFDLE9BQU8sR0FBRyxFQUFFO1lBQ1osT0FBTyxDQUFDLEtBQUssQ0FBQyxzREFBc0QsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUMzRSxPQUFPLEtBQUssQ0FBQztTQUNkO1FBQ0QsT0FBTyxLQUFLLEtBQUssVUFBVSxDQUFDO0lBQzlCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsVUFBVSxDQUFDLEtBQWEsRUFBRSxLQUFpQztRQUN6RCxNQUFNLE1BQU0sR0FBVyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckQsSUFBSSxNQUFNLEtBQUssSUFBSSxFQUFFO1lBQ25CLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzNCO0lBQ0gsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsU0FBUyxDQUFDLEtBQWEsRUFBRSxJQUFXO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQztJQUNqQixDQUFDOzswR0FsSFUsYUFBYTs4RkFBYixhQUFhLDhOQy9DMUIsMm5CQVdBOzJGRG9DYSxhQUFhO2tCQU56QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxTQUFTO29CQUNuQixTQUFTLEVBQUUsQ0FBQyxXQUFXLENBQUM7b0JBQ3hCLFdBQVcsRUFBRSxXQUFXO29CQUN4QixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDaEQ7b0dBT0MsRUFBRTtzQkFERCxLQUFLO2dCQU1OLFlBQVk7c0JBRFgsS0FBSztnQkFPTixNQUFNO3NCQURMLEtBQUs7Z0JBT04sVUFBVTtzQkFEVCxLQUFLO2dCQVFOLFFBQVE7c0JBRFAsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gVGhlIE1JVCBMaWNlbnNlIChNSVQpXG5cbiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMSBTdGVmYW5vIENhcHBhIChLczg5KVxuXG4gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG5cbiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuXG4gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT04gSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuIFNPRlRXQVJFLlxuICovXG5cbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZSwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBBY2Nlc3NpYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vYWNjZXNzaWJsZS5jb21wb25lbnQnO1xuXG5pbXBvcnQgeyBBY2Nlc3NpYmlsaXR5Q29uZmlnIH0gZnJvbSAnLi4vLi4vbW9kZWwvYWNjZXNzaWJpbGl0eS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSW1hZ2UgfSBmcm9tICcuLi8uLi9tb2RlbC9pbWFnZS5jbGFzcyc7XG5pbXBvcnQgeyBJbnRlcm5hbExpYkltYWdlIH0gZnJvbSAnLi4vLi4vbW9kZWwvaW1hZ2UtaW50ZXJuYWwuY2xhc3MnO1xuaW1wb3J0IHsgRG90c0NvbmZpZyB9IGZyb20gJy4uLy4uL21vZGVsL2RvdHMtY29uZmlnLmludGVyZmFjZSc7XG5cbmltcG9ydCB7IE5FWFQgfSBmcm9tICcuLi8uLi91dGlscy91c2VyLWlucHV0LnV0aWwnO1xuaW1wb3J0IHsgZ2V0SW5kZXggfSBmcm9tICcuLi8uLi91dGlscy9pbWFnZS51dGlsJztcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBMaWJDb25maWcgfSBmcm9tICcuLi8uLi9tb2RlbC9saWItY29uZmlnLmludGVyZmFjZSc7XG5cbi8qKlxuICogQ29tcG9uZW50IHdpdGggY2xpY2thYmxlIGRvdHMgKHNtYWxsIGNpcmNsZXMpIHRvIG5hdmlnYXRlIGJldHdlZW4gaW1hZ2VzIGluc2lkZSB0aGUgbW9kYWwgZ2FsbGVyeS5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAna3MtZG90cycsXG4gIHN0eWxlVXJsczogWydkb3RzLnNjc3MnXSxcbiAgdGVtcGxhdGVVcmw6ICdkb3RzLmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBEb3RzQ29tcG9uZW50IGV4dGVuZHMgQWNjZXNzaWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgLyoqXG4gICAqIFVuaXF1ZSBpZCAoPj0wKSBvZiB0aGUgY3VycmVudCBpbnN0YW5jZSBvZiB0aGlzIGxpYnJhcnkuIFRoaXMgaXMgcmVxdWlyZWQgd2hlbiB5b3UgYXJlIHVzaW5nXG4gICAqIHRoZSBzZXJ2aWNlIHRvIGNhbGwgbW9kYWwgZ2FsbGVyeS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGlkOiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBPYmplY3Qgb2YgdHlwZSBgSW50ZXJuYWxMaWJJbWFnZWAgdGhhdCByZXByZXNlbnQgdGhlIHZpc2libGUgaW1hZ2UuXG4gICAqL1xuICBASW5wdXQoKVxuICBjdXJyZW50SW1hZ2U6IEludGVybmFsTGliSW1hZ2UgfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBBcnJheSBvZiBgSW50ZXJuYWxMaWJJbWFnZWAgdGhhdCByZXByZXNlbnQgdGhlIG1vZGVsIG9mIHRoaXMgbGlicmFyeSB3aXRoIGFsbCBpbWFnZXMsXG4gICAqIHRodW1icyBhbmQgc28gb24uXG4gICAqL1xuICBASW5wdXQoKVxuICBpbWFnZXM6IEludGVybmFsTGliSW1hZ2VbXSB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIE9iamVjdCBvZiB0eXBlIGBEb3RzQ29uZmlnYCB0byBpbml0IERvdHNDb21wb25lbnQncyBmZWF0dXJlcy5cbiAgICogRm9yIGluc3RhbmNlLCBpdCBjb250YWlucyBhIHBhcmFtIHRvIHNob3cvaGlkZSB0aGlzIGNvbXBvbmVudC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGRvdHNDb25maWc6IERvdHNDb25maWcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIE91dHB1dCB0byBlbWl0IGNsaWNrcyBvbiBkb3RzLiBUaGUgcGF5bG9hZCBjb250YWlucyBhIG51bWJlciB0aGF0IHJlcHJlc2VudFxuICAgKiB0aGUgaW5kZXggb2YgdGhlIGNsaWNrZWQgZG90LlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIGNsaWNrRG90OiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gIC8qKlxuICAgKiBPYmplY3Qgb2YgdHlwZSBgRG90c0NvbmZpZ2AgdXNlZCBpbiB0ZW1wbGF0ZS5cbiAgICovXG4gIGNvbmZpZ0RvdHM6IERvdHNDb25maWcgfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBPYmplY3Qgb2YgdHlwZSBgQWNjZXNzaWJpbGl0eUNvbmZpZ2AgdG8gaW5pdCBjdXN0b20gYWNjZXNzaWJpbGl0eSBmZWF0dXJlcy5cbiAgICogRm9yIGluc3RhbmNlLCBpdCBjb250YWlucyB0aXRsZXMsIGFsdCB0ZXh0cywgYXJpYS1sYWJlbHMgYW5kIHNvIG9uLlxuICAgKi9cbiAgYWNjZXNzaWJpbGl0eUNvbmZpZzogQWNjZXNzaWJpbGl0eUNvbmZpZyB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCDCtG5nT25Jbml0wrQgdG8gYnVpbGQgYGNvbmZpZ0RvdHNgIGFwcGx5aW5nIGEgZGVmYXVsdCB2YWx1ZS5cbiAgICogVGhpcyBpcyBhbiBBbmd1bGFyJ3MgbGlmZWN5Y2xlIGhvb2ssIHNvIGl0cyBjYWxsZWQgYXV0b21hdGljYWxseSBieSBBbmd1bGFyIGl0c2VsZi5cbiAgICogSW4gcGFydGljdWxhciwgaXQncyBjYWxsZWQgb25seSBvbmUgdGltZSEhIVxuICAgKi9cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaWQgPT09IG51bGwgfHwgdGhpcy5pZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludGVybmFsIGxpYnJhcnkgZXJyb3IgLSBpZCBtdXN0IGJlIGRlZmluZWQnKTtcbiAgICB9XG4gICAgY29uc3QgbGliQ29uZmlnOiBMaWJDb25maWcgfCB1bmRlZmluZWQgPSB0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKHRoaXMuaWQpO1xuICAgIGlmICghbGliQ29uZmlnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludGVybmFsIGxpYnJhcnkgZXJyb3IgLSBsaWJDb25maWcgbXVzdCBiZSBkZWZpbmVkJyk7XG4gICAgfVxuICAgIHRoaXMuYWNjZXNzaWJpbGl0eUNvbmZpZyA9IGxpYkNvbmZpZy5hY2Nlc3NpYmlsaXR5Q29uZmlnO1xuICAgIHRoaXMuY29uZmlnRG90cyA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuZG90c0NvbmZpZyk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIMK0bmdPbkNoYW5nZXPCtCB0byBjaGFuZ2UgYGNvbmZpZ0RvdHNgIGlmIHRoZSBpbnB1dCBkb3RzQ29uZmlnIGlzIGNoYW5nZWQuXG4gICAqIFRoaXMgaXMgYW4gQW5ndWxhcidzIGxpZmVjeWNsZSBob29rLCBzbyBpdHMgY2FsbGVkIGF1dG9tYXRpY2FsbHkgYnkgQW5ndWxhciBpdHNlbGYuXG4gICAqL1xuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgY29uc3QgZG90c0NvbmZpZ0NoYW5nZXM6IFNpbXBsZUNoYW5nZSA9IGNoYW5nZXMuZG90c0NvbmZpZztcbiAgICBpZiAoZG90c0NvbmZpZ0NoYW5nZXMgJiYgZG90c0NvbmZpZ0NoYW5nZXMuY3VycmVudFZhbHVlICE9PSBkb3RzQ29uZmlnQ2hhbmdlcy5wcmV2aW91c1ZhbHVlKSB7XG4gICAgICB0aGlzLmNvbmZpZ0RvdHMgPSBkb3RzQ29uZmlnQ2hhbmdlcy5jdXJyZW50VmFsdWU7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB0byBjaGVjayBpZiBhbiBpbWFnZSBpcyBhY3RpdmUgKGkuZS4gdGhlIGN1cnJlbnQgaW1hZ2UpLlxuICAgKiBJdCBjaGVja3MgY3VycmVudEltYWdlIGFuZCBpbWFnZXMgdG8gcHJldmVudCBlcnJvcnMuXG4gICAqIEBwYXJhbSBudW1iZXIgaW5kZXggb2YgdGhlIGltYWdlIHRvIGNoZWNrIGlmIGl0J3MgYWN0aXZlIG9yIG5vdFxuICAgKiBAcmV0dXJucyBib29sZWFuIHRydWUgaWYgaXMgYWN0aXZlIChhbmQgaW5wdXQgcGFyYW1zIGFyZSB2YWxpZCksIGZhbHNlIG90aGVyd2lzZVxuICAgKi9cbiAgaXNBY3RpdmUoaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5jdXJyZW50SW1hZ2UgfHwgIXRoaXMuaW1hZ2VzIHx8IHRoaXMuaW1hZ2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBsZXQgaW1hZ2VJbmRleDogbnVtYmVyO1xuICAgIHRyeSB7XG4gICAgICBpbWFnZUluZGV4ID0gZ2V0SW5kZXgodGhpcy5jdXJyZW50SW1hZ2UsIHRoaXMuaW1hZ2VzKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYEludGVybmFsIGVycm9yIHdoaWxlIHRyeWluZyB0byBzaG93IHRoZSBhY3RpdmUgJ2RvdCdgLCBlcnIpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gaW5kZXggPT09IGltYWdlSW5kZXg7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIGNhbGxlZCBieSBldmVudHMgZnJvbSBrZXlib2FyZCBhbmQgbW91c2UuXG4gICAqIEBwYXJhbSBudW1iZXIgaW5kZXggb2YgdGhlIGRvdFxuICAgKiBAcGFyYW0gS2V5Ym9hcmRFdmVudCB8IE1vdXNlRXZlbnQgZXZlbnQgcGF5bG9hZFxuICAgKi9cbiAgb25Eb3RFdmVudChpbmRleDogbnVtYmVyLCBldmVudDogS2V5Ym9hcmRFdmVudCB8IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCByZXN1bHQ6IG51bWJlciA9IHN1cGVyLmhhbmRsZUltYWdlRXZlbnQoZXZlbnQpO1xuICAgIGlmIChyZXN1bHQgPT09IE5FWFQpIHtcbiAgICAgIHRoaXMuY2xpY2tEb3QuZW1pdChpbmRleCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB1c2VkIGluIHRoZSB0ZW1wbGF0ZSB0byB0cmFjayBpZHMgaW4gbmdGb3IuXG4gICAqIEBwYXJhbSBudW1iZXIgaW5kZXggb2YgdGhlIGFycmF5XG4gICAqIEBwYXJhbSBJbWFnZSBpdGVtIG9mIHRoZSBhcnJheVxuICAgKiBAcmV0dXJucyBudW1iZXIgdGhlIGlkIG9mIHRoZSBpdGVtXG4gICAqL1xuICB0cmFja0J5SWQoaW5kZXg6IG51bWJlciwgaXRlbTogSW1hZ2UpOiBudW1iZXIge1xuICAgIHJldHVybiBpdGVtLmlkO1xuICB9XG59XG4iLCI8bmF2IGNsYXNzPVwiZG90cy1jb250YWluZXJcIiBbYXR0ci5hcmlhLWxhYmVsXT1cImFjY2Vzc2liaWxpdHlDb25maWc/LmRvdHNDb250YWluZXJBcmlhTGFiZWxcIlxuICAgICBbdGl0bGVdPVwiYWNjZXNzaWJpbGl0eUNvbmZpZz8uZG90c0NvbnRhaW5lclRpdGxlXCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZG90c0NvbmZpZyB8fCBkb3RzQ29uZmlnPy52aXNpYmxlXCI+XG4gICAgPGRpdiBjbGFzcz1cImluc2lkZSBkb3RcIlxuICAgICAgICAgKm5nRm9yPVwibGV0IGltZyBvZiBpbWFnZXM7IHRyYWNrQnk6IHRyYWNrQnlJZDsgbGV0IGluZGV4ID0gaW5kZXhcIlxuICAgICAgICAgW25nQ2xhc3NdPVwieydhY3RpdmUnOiBpc0FjdGl2ZShpbmRleCl9XCJcbiAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYWNjZXNzaWJpbGl0eUNvbmZpZz8uZG90QXJpYUxhYmVsICsgJyAnICsgKGluZGV4ICsgMSlcIlxuICAgICAgICAgW3RhYkluZGV4XT1cIjBcIiByb2xlPVwibmF2aWdhdGlvblwiXG4gICAgICAgICAoY2xpY2spPVwib25Eb3RFdmVudChpbmRleCwgJGV2ZW50KVwiIChrZXl1cCk9XCJvbkRvdEV2ZW50KGluZGV4LCAkZXZlbnQpXCI+PC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uYXY+XG4iXX0=
|