nextalys-carousel 0.0.50 → 0.0.53

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.
Files changed (35) hide show
  1. package/README.md +0 -0
  2. package/bundles/nextalys-carousel.umd.js +437 -344
  3. package/bundles/nextalys-carousel.umd.js.map +1 -1
  4. package/bundles/nextalys-carousel.umd.min.js +2 -2
  5. package/bundles/nextalys-carousel.umd.min.js.map +1 -1
  6. package/esm2015/lib/nxs-carousel/nxs-carousel-dialog.component.js +15 -19
  7. package/esm2015/lib/nxs-carousel/nxs-carousel-types.js +1 -1
  8. package/esm2015/lib/nxs-carousel/nxs-carousel.component.js +43 -71
  9. package/esm2015/lib/nxs-carousel/nxs-carousel.module.js +22 -25
  10. package/esm2015/nextalys-carousel.js +1 -1
  11. package/esm2015/public-api.js +1 -1
  12. package/fesm2015/nextalys-carousel.js +76 -106
  13. package/fesm2015/nextalys-carousel.js.map +1 -1
  14. package/lib/nxs-carousel/nxs-carousel-dialog.component.d.ts +1 -0
  15. package/lib/nxs-carousel/nxs-carousel-dialog.component.d.ts.map +1 -0
  16. package/lib/nxs-carousel/nxs-carousel-types.d.ts +1 -0
  17. package/lib/nxs-carousel/nxs-carousel-types.d.ts.map +1 -0
  18. package/lib/nxs-carousel/nxs-carousel.component.d.ts +2 -0
  19. package/lib/nxs-carousel/nxs-carousel.component.d.ts.map +1 -0
  20. package/lib/nxs-carousel/nxs-carousel.module.d.ts +1 -0
  21. package/lib/nxs-carousel/nxs-carousel.module.d.ts.map +1 -0
  22. package/nextalys-carousel.d.ts +1 -0
  23. package/nextalys-carousel.d.ts.map +1 -0
  24. package/nextalys-carousel.metadata.json +1 -1
  25. package/package.json +4 -6
  26. package/public-api.d.ts +1 -0
  27. package/public-api.d.ts.map +1 -0
  28. package/esm5/lib/nxs-carousel/nxs-carousel-dialog.component.js +0 -29
  29. package/esm5/lib/nxs-carousel/nxs-carousel-types.js +0 -8
  30. package/esm5/lib/nxs-carousel/nxs-carousel.component.js +0 -394
  31. package/esm5/lib/nxs-carousel/nxs-carousel.module.js +0 -45
  32. package/esm5/nextalys-carousel.js +0 -6
  33. package/esm5/public-api.js +0 -4
  34. package/fesm5/nextalys-carousel.js +0 -467
  35. package/fesm5/nextalys-carousel.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nextalys-carousel",
3
- "version": "0.0.50",
3
+ "version": "0.0.53",
4
4
  "peerDependencies": {
5
5
  "@angular/animations": "^9.0.0",
6
6
  "@angular/cdk": "^9.0.0",
@@ -13,16 +13,14 @@
13
13
  },
14
14
  "dependencies": {
15
15
  "swiper": "^5.3.7",
16
- "tslib": "^1.10.0"
16
+ "tslib": "^2.0.0"
17
17
  },
18
18
  "main": "bundles/nextalys-carousel.umd.js",
19
- "module": "fesm5/nextalys-carousel.js",
19
+ "module": "fesm2015/nextalys-carousel.js",
20
20
  "es2015": "fesm2015/nextalys-carousel.js",
21
- "esm5": "esm5/nextalys-carousel.js",
22
21
  "esm2015": "esm2015/nextalys-carousel.js",
23
- "fesm5": "fesm5/nextalys-carousel.js",
24
22
  "fesm2015": "fesm2015/nextalys-carousel.js",
25
23
  "typings": "nextalys-carousel.d.ts",
26
24
  "metadata": "nextalys-carousel.metadata.json",
27
25
  "sideEffects": false
28
- }
26
+ }
package/public-api.d.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  export * from './lib/nxs-carousel/nxs-carousel.component';
2
2
  export * from './lib/nxs-carousel/nxs-carousel.module';
3
3
  export * from './lib/nxs-carousel/nxs-carousel-types';
4
+ //# sourceMappingURL=public-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public-api.d.ts","sourceRoot":"","sources":["../src/public-api.ts"],"names":[],"mappings":"AAAA,cAAc,2CAA2C,CAAC;AAC1D,cAAc,wCAAwC,CAAC;AACvD,cAAc,uCAAuC,CAAC"}
@@ -1,29 +0,0 @@
1
- import { __decorate, __metadata, __param } from "tslib";
2
- import { Component, Inject, ViewEncapsulation } from '@angular/core';
3
- import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
4
- var NxsCarouselDialogComponent = /** @class */ (function () {
5
- function NxsCarouselDialogComponent(data, dialogRef) {
6
- this.data = data;
7
- this.dialogRef = dialogRef;
8
- this.wrapperClass = 'nxs-carousel-wrapper';
9
- if (data.wrapperClass)
10
- this.wrapperClass += ' ' + data.wrapperClass;
11
- }
12
- NxsCarouselDialogComponent.ctorParameters = function () { return [
13
- { type: undefined, decorators: [{ type: Inject, args: [MAT_DIALOG_DATA,] }] },
14
- { type: MatDialogRef }
15
- ]; };
16
- NxsCarouselDialogComponent = __decorate([
17
- Component({
18
- selector: 'nxs-carousel-dialog',
19
- template: "\n <div class=\"nxs-carousel-dialog-flex-wrapper\">\n <div class=\"nxs-carousel-dialog-header\">\n <button (click)=\"dialogRef.close()\" mat-icon-button><mat-icon>close</mat-icon></button>\n </div>\n <div [class]=\"wrapperClass\">\n <nxs-carousel [options]=\"data.options\" [images]=\"data.images\"></nxs-carousel>\n </div>\n</div>\n ",
20
- encapsulation: ViewEncapsulation.None,
21
- styles: [".nxs-carousel-dialog{max-width:98vw!important;width:98vw;height:98vh}.nxs-carousel-dialog .nxs-carousel-dialog-flex-wrapper{display:flex;height:100%;flex-direction:column}.nxs-carousel-dialog .nxs-carousel-dialog-flex-wrapper .nxs-carousel-wrapper{flex:auto}.nxs-carousel-dialog .nxs-carousel-dialog-header{position:relative;display:flex;justify-content:flex-end;padding-bottom:8px}.nxs-carousel-dialog mat-dialog-container{padding:20px}.nxs-carousel-dialog .nxs-carousel-wrapper{width:100%;margin:auto;height:100%}"]
22
- }),
23
- __param(0, Inject(MAT_DIALOG_DATA)),
24
- __metadata("design:paramtypes", [Object, MatDialogRef])
25
- ], NxsCarouselDialogComponent);
26
- return NxsCarouselDialogComponent;
27
- }());
28
- export { NxsCarouselDialogComponent };
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnhzLWNhcm91c2VsLWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZXh0YWx5cy1jYXJvdXNlbC8iLCJzb3VyY2VzIjpbImxpYi9ueHMtY2Fyb3VzZWwvbnhzLWNhcm91c2VsLWRpYWxvZy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUF1QnpFO0lBRUksb0NBQ29DLElBQTJCLEVBQ3BELFNBQW1EO1FBRDFCLFNBQUksR0FBSixJQUFJLENBQXVCO1FBQ3BELGNBQVMsR0FBVCxTQUFTLENBQTBDO1FBSHZELGlCQUFZLEdBQVcsc0JBQXNCLENBQUM7UUFLakQsSUFBSSxJQUFJLENBQUMsWUFBWTtZQUNqQixJQUFJLENBQUMsWUFBWSxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQ3JELENBQUM7O2dEQUxJLE1BQU0sU0FBQyxlQUFlO2dCQUNMLFlBQVk7O0lBSnpCLDBCQUEwQjtRQWZ0QyxTQUFTLENBQUM7WUFDUCxRQUFRLEVBQUUscUJBQXFCO1lBQy9CLFFBQVEsRUFBRSw0V0FTVDtZQUVELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJOztTQUN4QyxDQUFDO1FBSU8sV0FBQSxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUE7aURBQ04sWUFBWTtPQUp6QiwwQkFBMEIsQ0FVdEM7SUFBRCxpQ0FBQztDQUFBLEFBVkQsSUFVQztTQVZZLDBCQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgTnhzQ2Fyb3VzZWxJbWFnZSwgTnhzQ2Fyb3VzZWxPcHRpb25zIH0gZnJvbSAnLi9ueHMtY2Fyb3VzZWwtdHlwZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE54c0Nhcm91c2VsRGlhbG9nRGF0YSB7XG4gICAgaW1hZ2VzOiBOeHNDYXJvdXNlbEltYWdlW107XG4gICAgb3B0aW9ucz86IE54c0Nhcm91c2VsT3B0aW9ucztcbiAgICB3cmFwcGVyQ2xhc3M/OiBzdHJpbmc7XG59XG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ254cy1jYXJvdXNlbC1kaWFsb2cnLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cIm54cy1jYXJvdXNlbC1kaWFsb2ctZmxleC13cmFwcGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cIm54cy1jYXJvdXNlbC1kaWFsb2ctaGVhZGVyXCI+XG4gICAgICAgIDxidXR0b24gKGNsaWNrKT1cImRpYWxvZ1JlZi5jbG9zZSgpXCIgbWF0LWljb24tYnV0dG9uPjxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+PC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBbY2xhc3NdPVwid3JhcHBlckNsYXNzXCI+XG4gICAgPG54cy1jYXJvdXNlbCBbb3B0aW9uc109XCJkYXRhLm9wdGlvbnNcIiBbaW1hZ2VzXT1cImRhdGEuaW1hZ2VzXCI+PC9ueHMtY2Fyb3VzZWw+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiAgICBgLFxuICAgIHN0eWxlVXJsczogWycuL254cy1jYXJvdXNlbC1kaWFsb2cuY29tcG9uZW50LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBOeHNDYXJvdXNlbERpYWxvZ0NvbXBvbmVudCB7XG4gICAgcHVibGljIHdyYXBwZXJDbGFzczogc3RyaW5nID0gJ254cy1jYXJvdXNlbC13cmFwcGVyJztcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiBOeHNDYXJvdXNlbERpYWxvZ0RhdGEsXG4gICAgICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxOeHNDYXJvdXNlbERpYWxvZ0NvbXBvbmVudD4sXG4gICAgKSB7XG4gICAgICAgIGlmIChkYXRhLndyYXBwZXJDbGFzcylcbiAgICAgICAgICAgIHRoaXMud3JhcHBlckNsYXNzICs9ICcgJyArIGRhdGEud3JhcHBlckNsYXNzO1xuICAgIH1cblxufVxuIl19
@@ -1,8 +0,0 @@
1
- var NxsCarouselModuleConfig = /** @class */ (function () {
2
- function NxsCarouselModuleConfig() {
3
- this.debug = false;
4
- }
5
- return NxsCarouselModuleConfig;
6
- }());
7
- export { NxsCarouselModuleConfig };
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnhzLWNhcm91c2VsLXR5cGVzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmV4dGFseXMtY2Fyb3VzZWwvIiwic291cmNlcyI6WyJsaWIvbnhzLWNhcm91c2VsL254cy1jYXJvdXNlbC10eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF5RUE7SUFBQTtRQUNJLFVBQUssR0FBYSxLQUFLLENBQUM7SUFDNUIsQ0FBQztJQUFELDhCQUFDO0FBQUQsQ0FBQyxBQUZELElBRUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIE54c0Nhcm91c2VsSW1hZ2Uge1xuICAgIGFsdD86IHN0cmluZztcbiAgICBzcmM6IHN0cmluZztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgU3dpcGVySW5zdGFuY2Uge1xuICAgIHJlYWxJbmRleDogbnVtYmVyO1xuICAgIGFjdGl2ZUluZGV4OiBudW1iZXI7XG4gICAgb246IChldnQ6ICdzbGlkZUNoYW5nZScgfCAnY2xpY2snLCBjYjogKGRhdGE6IGFueSkgPT4gdm9pZCkgPT4gdm9pZDtcbiAgICBkZXN0cm95OiAoZGVsZXRlSW5zdGFuY2U/OiBib29sZWFuLCBjbGVhblN0eWxlcz86IGJvb2xlYW4pID0+IHZvaWQ7XG4gICAgc2xpZGVUbzogKGluZGV4OiBudW1iZXIsIHNwZWVkPzogbnVtYmVyLCBydW5DYWxsYmFja3M/OiBib29sZWFuKSA9PiB2b2lkO1xuICAgIHNsaWRlTmV4dDogKHNwZWVkPzogbnVtYmVyLCBydW5DYWxsYmFja3M/OiBib29sZWFuKSA9PiB2b2lkO1xuICAgIHNsaWRlUHJldjogKHNwZWVkPzogbnVtYmVyLCBydW5DYWxsYmFja3M/OiBib29sZWFuKSA9PiB2b2lkO1xufVxuZXhwb3J0IGludGVyZmFjZSBOeHNDYXJvdXNlbE9wdGlvbnMge1xuICAgIHdhdGNoU2xpZGVzVmlzaWJpbGl0eT86IGJvb2xlYW47XG4gICAgd2F0Y2hTbGlkZXNQcm9ncmVzcz86IGJvb2xlYW47XG4gICAgZnJlZU1vZGU/OiBib29sZWFuO1xuICAgIGVmZmVjdD86IFwic2xpZGVcIiB8IFwiZmFkZVwiIHwgXCJjdWJlXCIgfCBcImNvdmVyZmxvd1wiIHwgXCJmbGlwXCI7XG4gICAgYXV0b3BsYXk/OiB7IGRlbGF5OiBudW1iZXI7IHN0b3BPbkxhc3RTbGlkZT86IGJvb2xlYW47IGRpc2FibGVPbkludGVyYWN0aW9uPzogYm9vbGVhbjsgcmV2ZXJzZURpcmVjdGlvbj86IGJvb2xlYW47IHdhaXRGb3JUcmFuc2l0aW9uPzogYm9vbGVhbiB9O1xuICAgIHJvdW5kTGVuZ3Rocz86IGJvb2xlYW47XG4gICAgaW5pdD86IGJvb2xlYW47XG4gICAgaW5pdGlhbFNsaWRlPzogbnVtYmVyO1xuICAgIHVwZGF0ZU9uV2luZG93UmVzaXplPzogYm9vbGVhbjtcbiAgICBkaXJlY3Rpb24/OiAnaG9yaXpvbnRhbCcgfCAndmVydGljYWwnO1xuICAgIHNsaWRlc1BlclZpZXc/OiBudW1iZXIgfCAnYXV0byc7XG4gICAgY2VudGVyZWRTbGlkZXM/OiBib29sZWFuO1xuICAgIGNlbnRlcmVkU2xpZGVzQm91bmRzPzogYm9vbGVhbjtcbiAgICBsb29wPzogYm9vbGVhbjtcbiAgICBjb3ZlcmZsb3dFZmZlY3Q/OiB7XG4gICAgICAgIHJvdGF0ZTogbnVtYmVyO1xuICAgICAgICBzdHJldGNoOiBudW1iZXI7XG4gICAgICAgIGRlcHRoPzogbnVtYmVyO1xuICAgICAgICBtb2RpZmllcj86IG51bWJlcjtcbiAgICAgICAgc2xpZGVTaGFkb3dzPzogYm9vbGVhbjtcbiAgICB9O1xuICAgIHBhZ2luYXRpb24/OiB7XG4gICAgICAgIGVsOiBzdHJpbmc7XG4gICAgICAgIGNsaWNrYWJsZTogYm9vbGVhbjtcbiAgICAgICAgdHlwZT86IFwiYnVsbGV0c1wiIHwgXCJmcmFjdGlvblwiIHwgXCJwcm9ncmVzc2JhclwiIHwgXCJjdXN0b21cIjtcbiAgICB9O1xuICAgIG5hdmlnYXRpb24/OiB7XG4gICAgICAgIG5leHRFbDogc3RyaW5nO1xuICAgICAgICBwcmV2RWw6IHN0cmluZztcbiAgICB9O1xuICAgIHNwYWNlQmV0d2Vlbj86IG51bWJlcjtcbiAgICBicmVha3BvaW50cz86IHtcbiAgICAgICAgW3NpemU6IG51bWJlcl06IHtcbiAgICAgICAgICAgIHNwYWNlQmV0d2Vlbj86IG51bWJlcjtcbiAgICAgICAgICAgIHNsaWRlc1BlclZpZXc6IG51bWJlciB8ICdhdXRvJztcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIHRodW1icz86IHsgc3dpcGVyOiBTd2lwZXJJbnN0YW5jZSB9O1xuICAgIG54c1Nob3dOYXZpZ2F0aW9uQnVsbGV0cz86IGJvb2xlYW47XG4gICAgbnhzU2hvd05hdmlnYXRpb25BcnJvd3M/OiBib29sZWFuO1xuICAgIG54c1RodW1ibmFpbHM/OiB7XG4gICAgICAgIHNob3c6IGJvb2xlYW47IG9uTWFpblNsaWRlcj86IGJvb2xlYW47IHBlcmNlbnRIZWlnaHQ/OiBudW1iZXI7IHBlclZpZXc/OiBudW1iZXI7IGJyZWFrcG9pbnRzPzoge1xuICAgICAgICAgICAgW3NpemU6IG51bWJlcl06IHtcbiAgICAgICAgICAgICAgICBzcGFjZUJldHdlZW4/OiBudW1iZXI7XG4gICAgICAgICAgICAgICAgc2xpZGVzUGVyVmlldzogbnVtYmVyIHwgJ2F1dG8nO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIG54c1Nob3dJbWFnZXNDb3VudD86IGJvb2xlYW47XG4gICAgbnhzZnVsbHNjcmVlbk9uQ2xpY2s/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIGJhY2tncm91bmQgbW9kZSA6IGNvdmVyLCBjb250YWluLCBhdXRvLCBldGMuLi5cbiAgICAgKiBkZWZhdWx0ID0+IGNvdmVyXG4gICAgICovXG4gICAgbnhzQ2Fyb3VzZWxJbWFnZUJhY2tncm91bmRTaXplPzogc3RyaW5nO1xuICAgIG54c0Nhcm91c2VsRGlhbG9nT3B0aW9ucz86IE54c0Nhcm91c2VsT3B0aW9ucztcbiAgICBueHNDYXJvdXNlbERpYWxvZ0V4aXRhYmxlPzogYm9vbGVhbjtcbiAgICBueHNDYXJvdXNlbERpYWxvZ1NpemU/OiB7IHdpZHRoOiBzdHJpbmc7IGhlaWdodDogc3RyaW5nOyB9O1xufVxuZXhwb3J0IGNsYXNzIE54c0Nhcm91c2VsTW9kdWxlQ29uZmlnIHtcbiAgICBkZWJ1Zz86IGJvb2xlYW4gPSBmYWxzZTtcbn0iXX0=
@@ -1,394 +0,0 @@
1
- import { __awaiter, __decorate, __generator, __metadata, __param, __read, __spread, __values } from "tslib";
2
- import { Component, ViewEncapsulation, Input, ViewChild, ElementRef, Output, EventEmitter, PLATFORM_ID, Inject, Optional, NgZone, SimpleChanges } from '@angular/core';
3
- import { NxsCarouselOptions, NxsCarouselImage, SwiperInstance, NxsCarouselModuleConfig } from './nxs-carousel-types';
4
- import { NxsCarouselDialogComponent } from './nxs-carousel-dialog.component';
5
- import { MatDialog } from '@angular/material/dialog';
6
- import { isPlatformBrowser } from '@angular/common';
7
- import { EventsCollector } from 'nextalys-js-helpers/dist/events';
8
- var NxsCarouselComponent = /** @class */ (function () {
9
- function NxsCarouselComponent(matDialog, zone, platformId, config) {
10
- this.matDialog = matDialog;
11
- this.zone = zone;
12
- this.platformId = platformId;
13
- this.config = config;
14
- this.mutationObserver = null;
15
- this.recreateSliderSubscribed = false;
16
- this.eventsCollector = new EventsCollector();
17
- this.options = {};
18
- this.hasHtmlContent = false;
19
- this.slidesCount = 0;
20
- this.slideChange = new EventEmitter();
21
- this.currentSlide = 0;
22
- this.slideClick = new EventEmitter();
23
- this.isBrowser = false;
24
- if (!this.config)
25
- this.config = { debug: false };
26
- this.isBrowser = isPlatformBrowser(this.platformId);
27
- this.log('constructor - isBrowser', this.isBrowser);
28
- this.options = this.setDefaultOptions(undefined, false);
29
- }
30
- Object.defineProperty(NxsCarouselComponent.prototype, "setOptions", {
31
- set: function (val) {
32
- this.options = this.setDefaultOptions(val, false);
33
- },
34
- enumerable: true,
35
- configurable: true
36
- });
37
- Object.defineProperty(NxsCarouselComponent.prototype, "setImages", {
38
- set: function (val) {
39
- this.images = val;
40
- this.initSlides();
41
- this.createSlider(true);
42
- },
43
- enumerable: true,
44
- configurable: true
45
- });
46
- NxsCarouselComponent.prototype.log = function () {
47
- var args = [];
48
- for (var _i = 0; _i < arguments.length; _i++) {
49
- args[_i] = arguments[_i];
50
- }
51
- if (!this.config.debug)
52
- return;
53
- console.log.apply(console, __spread(['[NxsCarousel]'], args));
54
- };
55
- NxsCarouselComponent.prototype.onContentChange = function (changes) {
56
- // console.log("Log: NxsCarouselComponent -> onContentChange -> changes", changes);
57
- // changes.forEach(change => console.log(change.target));
58
- };
59
- NxsCarouselComponent.prototype.initSlides = function () {
60
- var _this = this;
61
- if (!this.isBrowser) {
62
- this.log('prevent initSlides on platform server');
63
- return;
64
- }
65
- if (!this.nxsSlidesWrapper) {
66
- this.log('can not initSlides : nxsSlidesWrapper is not defined !');
67
- return;
68
- }
69
- this.log('initSlides begins');
70
- this.zone.runOutsideAngular(function () {
71
- if (!_this.hasHtmlContent && _this.images) {
72
- _this.nxsSlidesWrapper.nativeElement.innerHTML = '';
73
- for (var i = 0; i < _this.images.length; i++) {
74
- var div = document.createElement('div');
75
- div.className = 'swiper-slide';
76
- div.style.backgroundImage = 'url(' + _this.images[i].src + ')';
77
- if (_this.options.nxsCarouselImageBackgroundSize)
78
- div.style.backgroundSize = _this.options.nxsCarouselImageBackgroundSize;
79
- _this.nxsSlidesWrapper.nativeElement.appendChild(div);
80
- }
81
- _this.slidesCount = _this.images.length;
82
- if (!!_this.options.nxsThumbnails && _this.options.nxsThumbnails.show) {
83
- _this.nxsThumbnailsSlidesWrapper.nativeElement.innerHTML = '';
84
- for (var i = 0; i < _this.images.length; i++) {
85
- var div = document.createElement('div');
86
- div.className = 'swiper-slide';
87
- div.style.backgroundImage = 'url(' + _this.images[i].src + ')';
88
- _this.nxsThumbnailsSlidesWrapper.nativeElement.appendChild(div);
89
- }
90
- }
91
- _this.log('initSlides - images are defined - slides count => ', _this.slidesCount);
92
- }
93
- else if (_this.hasHtmlContent) {
94
- _this.log('initSlides - html content - slides length => ', _this.nxsSlidesWrapper.nativeElement.children.length);
95
- for (var i = 0; i < _this.nxsSlidesWrapper.nativeElement.children.length; i++) {
96
- var child = _this.nxsSlidesWrapper.nativeElement.children[i];
97
- if (!child.className)
98
- child.className = 'swiper-slide';
99
- else if (child.className.indexOf('swiper-slide') === -1) {
100
- child.className += ' swiper-slide';
101
- }
102
- }
103
- _this.slidesCount = _this.nxsSlidesWrapper.nativeElement.children.length;
104
- _this.log('initSlides - html content - slides count => ', _this.slidesCount);
105
- }
106
- });
107
- };
108
- NxsCarouselComponent.prototype.ngOnDestroy = function () {
109
- if (!this.isBrowser) {
110
- return;
111
- }
112
- this.eventsCollector.unsubscribeAll();
113
- if (this.mutationObserver)
114
- this.mutationObserver.disconnect();
115
- if (this.sliderInstance)
116
- this.sliderInstance.destroy();
117
- };
118
- NxsCarouselComponent.prototype.subscribeToSlideChanged = function () {
119
- var _this = this;
120
- if (!this.hasHtmlContent) {
121
- this.log('subscribeToSlideChanged cannot be subscribed : has no html content');
122
- return;
123
- }
124
- if (!this.nxsSlidesWrapper || !this.nxsSlidesWrapper.nativeElement) {
125
- this.log('subscribeToSlideChanged error : nxsSlidesWrapper is not defined');
126
- return;
127
- }
128
- if (typeof MutationObserver === 'undefined') {
129
- this.log('cannot use mutation observer');
130
- return;
131
- }
132
- if (this.mutationObserver)
133
- this.mutationObserver.disconnect();
134
- this.log('subscribe to mutation observer');
135
- this.mutationObserver = new MutationObserver(function (mutationsList) {
136
- var e_1, _a;
137
- // console.log("Log: NxsCarouselComponent -> subscribeToSlideChanged -> mutationsList", mutationsList);
138
- // console.log("Log: NxsCarouselComponent -> subscribeToSlideChanged -> MutationObserver");
139
- _this.log('mutation observer - html content has changed');
140
- if (mutationsList.length === 0)
141
- return;
142
- var mustUpdate = false;
143
- try {
144
- for (var mutationsList_1 = __values(mutationsList), mutationsList_1_1 = mutationsList_1.next(); !mutationsList_1_1.done; mutationsList_1_1 = mutationsList_1.next()) {
145
- var mutation = mutationsList_1_1.value;
146
- if (mutation.addedNodes.length > 0 || mutation.removedNodes.length > 0) {
147
- mustUpdate = true;
148
- break;
149
- }
150
- }
151
- }
152
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
153
- finally {
154
- try {
155
- if (mutationsList_1_1 && !mutationsList_1_1.done && (_a = mutationsList_1.return)) _a.call(mutationsList_1);
156
- }
157
- finally { if (e_1) throw e_1.error; }
158
- }
159
- if (mustUpdate) {
160
- _this.initSlides();
161
- _this.createSlider(true);
162
- }
163
- });
164
- this.mutationObserver.observe(this.nxsSlidesWrapper.nativeElement, { childList: true, attributes: false, });
165
- };
166
- NxsCarouselComponent.prototype.ngAfterViewInit = function () {
167
- this.initSlides();
168
- this.createSlider(true);
169
- };
170
- NxsCarouselComponent.prototype.getMainSliderHeight = function () {
171
- if (!this.options)
172
- return '';
173
- if (this.options.nxsThumbnails && this.options.nxsThumbnails.show) {
174
- if (this.options.nxsThumbnails.onMainSlider) {
175
- return '100%';
176
- }
177
- else if (this.options.nxsThumbnails.percentHeight) {
178
- return (100 - this.options.nxsThumbnails.percentHeight) + '%';
179
- }
180
- }
181
- return '';
182
- };
183
- NxsCarouselComponent.prototype.setDefaultOptions = function (options, forDialog) {
184
- if (!options && forDialog) {
185
- options = { nxsShowNavigationBullets: true, loop: true, nxsThumbnails: { show: true }, effect: 'slide', nxsShowNavigationArrows: true, nxsShowImagesCount: true };
186
- }
187
- else if (!options)
188
- options = { nxsShowNavigationBullets: true, loop: true, nxsThumbnails: { show: false }, effect: 'slide', nxsShowNavigationArrows: true, nxsShowImagesCount: false, nxsCarouselDialogOptions: {} };
189
- if (options.nxsCarouselDialogOptions) {
190
- if (typeof options.nxsCarouselDialogOptions.nxsThumbnails === 'undefined')
191
- options.nxsCarouselDialogOptions.nxsThumbnails = { show: false };
192
- if (typeof options.nxsCarouselDialogOptions.effect === 'undefined')
193
- options.nxsCarouselDialogOptions.effect = 'slide';
194
- if (typeof options.nxsCarouselDialogOptions.nxsShowNavigationArrows === 'undefined')
195
- options.nxsCarouselDialogOptions.nxsShowNavigationArrows = true;
196
- if (options.nxsCarouselDialogOptions.nxsThumbnails.show) {
197
- if (typeof options.nxsCarouselDialogOptions.nxsThumbnails.percentHeight === 'undefined')
198
- options.nxsCarouselDialogOptions.nxsThumbnails.percentHeight = 20;
199
- if (typeof options.nxsCarouselDialogOptions.nxsThumbnails.perView === 'undefined')
200
- options.nxsCarouselDialogOptions.nxsThumbnails.perView = 10;
201
- options.nxsCarouselDialogOptions.nxsThumbnails.breakpoints = {
202
- 640: {
203
- slidesPerView: 5,
204
- },
205
- 768: {
206
- slidesPerView: 7,
207
- },
208
- 1024: {
209
- slidesPerView: 8,
210
- },
211
- };
212
- }
213
- }
214
- if (typeof options.nxsThumbnails === 'undefined')
215
- options.nxsThumbnails = { show: false };
216
- if (options.nxsThumbnails.show && typeof options.nxsThumbnails.percentHeight === 'undefined')
217
- options.nxsThumbnails.percentHeight = 20;
218
- if (options.nxsThumbnails.show && typeof options.nxsThumbnails.perView === 'undefined')
219
- options.nxsThumbnails.perView = 10;
220
- if (forDialog)
221
- options.nxsfullscreenOnClick = false;
222
- if (options.nxsThumbnails.onMainSlider)
223
- options.nxsShowNavigationBullets = false;
224
- return options;
225
- };
226
- NxsCarouselComponent.prototype.showFullScreenCarousel = function (images, wrapperClass) {
227
- this.options.nxsCarouselDialogOptions = this.setDefaultOptions(this.options.nxsCarouselDialogOptions, true);
228
- var data = { images: images, wrapperClass: wrapperClass, options: this.options.nxsCarouselDialogOptions };
229
- this.matDialog.open(NxsCarouselDialogComponent, {
230
- data: data,
231
- panelClass: 'nxs-carousel-dialog',
232
- width: !!this.options.nxsCarouselDialogSize ? this.options.nxsCarouselDialogSize.width : undefined,
233
- height: !!this.options.nxsCarouselDialogSize ? this.options.nxsCarouselDialogSize.height : undefined,
234
- disableClose: !this.options.nxsCarouselDialogExitable,
235
- });
236
- };
237
- NxsCarouselComponent.prototype.createSlider = function (forceRecreate) {
238
- var _this = this;
239
- if (!this.isBrowser) {
240
- this.log('prevent createSlider : platform is server');
241
- return;
242
- }
243
- if (!this.nxsSliderContainer) {
244
- this.log('can not createSlider : nxsSliderContainer is not defined !');
245
- return;
246
- }
247
- this.log('createSlider', this.nxsSliderContainer.nativeElement);
248
- if (this.slidesCount === 0) {
249
- this.log('can not createSlider : slidesCount === 0');
250
- this.subscribeToSlideChanged();
251
- return;
252
- }
253
- if (this.sliderInstance && !forceRecreate) {
254
- this.log('can re create slider => slider is already created.');
255
- return;
256
- }
257
- this.zone.runOutsideAngular(function () { return __awaiter(_this, void 0, void 0, function () {
258
- var _a, Swiper, thumbnailsOptions;
259
- var _this = this;
260
- return __generator(this, function (_b) {
261
- switch (_b.label) {
262
- case 0:
263
- if (this.sliderInstance)
264
- this.sliderInstance.destroy();
265
- this.options.pagination = {
266
- el: '.nxs-carousel-pagination',
267
- clickable: true,
268
- type: 'bullets',
269
- };
270
- this.options.navigation = {
271
- nextEl: '.nxs-carousel-button-next',
272
- prevEl: '.nxs-carousel-button-prev',
273
- };
274
- if (!!this.swiperLibrary) return [3 /*break*/, 2];
275
- _a = this;
276
- return [4 /*yield*/, import("swiper")];
277
- case 1:
278
- _a.swiperLibrary = _b.sent();
279
- _b.label = 2;
280
- case 2:
281
- Swiper = this.swiperLibrary.default;
282
- if (!!this.options.nxsThumbnails && this.options.nxsThumbnails.show) {
283
- thumbnailsOptions = {
284
- slidesPerView: this.options.nxsThumbnails.perView,
285
- loop: false,
286
- freeMode: true,
287
- watchSlidesVisibility: true,
288
- watchSlidesProgress: true,
289
- breakpoints: this.options.nxsThumbnails.breakpoints,
290
- };
291
- this.thumbnailsSliderInstance = new Swiper(this.nxsThumbnailsSliderContainer.nativeElement, thumbnailsOptions);
292
- this.options.thumbs = { swiper: this.thumbnailsSliderInstance };
293
- }
294
- this.sliderInstance = new Swiper(this.nxsSliderContainer.nativeElement, this.options);
295
- this.log('sliderInstance has been created', this.sliderInstance);
296
- this.sliderInstance.on('slideChange', function () {
297
- _this.zone.run(function () {
298
- _this.currentSlide = _this.sliderInstance.realIndex;
299
- _this.log("slideChange", _this.currentSlide);
300
- _this.slideChange.next(_this.currentSlide);
301
- });
302
- });
303
- this.sliderInstance.on('click', function (evt) {
304
- var target = evt.target;
305
- if (target.className.indexOf('nxs-carousel-button') !== -1 || target.className.indexOf('swiper-pagination') !== -1)
306
- return;
307
- _this.zone.run(function () {
308
- _this.slideClick.next(evt);
309
- if (_this.options.nxsfullscreenOnClick && _this.images && _this.images.length && !_this.hasHtmlContent) {
310
- _this.showFullScreenCarousel(_this.images, 'fullscreen-carousel');
311
- }
312
- });
313
- });
314
- this.subscribeToSlideChanged();
315
- return [2 /*return*/];
316
- }
317
- });
318
- }); });
319
- };
320
- NxsCarouselComponent.prototype.goToSlide = function (index, speed) {
321
- if (!this.sliderInstance)
322
- return;
323
- this.sliderInstance.slideTo(index, speed);
324
- };
325
- NxsCarouselComponent.prototype.next = function () {
326
- if (!this.sliderInstance)
327
- return;
328
- this.sliderInstance.slideNext();
329
- };
330
- NxsCarouselComponent.prototype.previous = function () {
331
- if (!this.sliderInstance)
332
- return;
333
- this.sliderInstance.slidePrev();
334
- };
335
- NxsCarouselComponent.ctorParameters = function () { return [
336
- { type: MatDialog },
337
- { type: NgZone },
338
- { type: undefined, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] },
339
- { type: NxsCarouselModuleConfig, decorators: [{ type: Optional }] }
340
- ]; };
341
- __decorate([
342
- ViewChild('nxsSliderContainer', { static: true }),
343
- __metadata("design:type", ElementRef)
344
- ], NxsCarouselComponent.prototype, "nxsSliderContainer", void 0);
345
- __decorate([
346
- ViewChild('nxsSlidesWrapper', { static: true }),
347
- __metadata("design:type", ElementRef)
348
- ], NxsCarouselComponent.prototype, "nxsSlidesWrapper", void 0);
349
- __decorate([
350
- ViewChild('nxsThumbnailsSliderContainer', { static: true }),
351
- __metadata("design:type", ElementRef)
352
- ], NxsCarouselComponent.prototype, "nxsThumbnailsSliderContainer", void 0);
353
- __decorate([
354
- ViewChild('nxsThumbnailsSlidesWrapper', { static: true }),
355
- __metadata("design:type", ElementRef)
356
- ], NxsCarouselComponent.prototype, "nxsThumbnailsSlidesWrapper", void 0);
357
- __decorate([
358
- Input('options'),
359
- __metadata("design:type", Object),
360
- __metadata("design:paramtypes", [Object])
361
- ], NxsCarouselComponent.prototype, "setOptions", null);
362
- __decorate([
363
- Input('images'),
364
- __metadata("design:type", Array),
365
- __metadata("design:paramtypes", [Array])
366
- ], NxsCarouselComponent.prototype, "setImages", null);
367
- __decorate([
368
- Input(),
369
- __metadata("design:type", Object)
370
- ], NxsCarouselComponent.prototype, "hasHtmlContent", void 0);
371
- __decorate([
372
- Output(),
373
- __metadata("design:type", Object)
374
- ], NxsCarouselComponent.prototype, "slideChange", void 0);
375
- __decorate([
376
- Output(),
377
- __metadata("design:type", Object)
378
- ], NxsCarouselComponent.prototype, "slideClick", void 0);
379
- NxsCarouselComponent = __decorate([
380
- Component({
381
- selector: 'nxs-carousel',
382
- template: "<div #nxsSliderContainer\n \u00A0[ngClass]=\"{'swiper-container':true,'nxs-slider-with-thumbnails':!!options.nxsThumbnails && options.nxsThumbnails.show}\"\n [style.height]=\"getMainSliderHeight()\">\n <div class=\"swiper-wrapper\" #nxsSlidesWrapper>\n <ng-content>\n\n </ng-content>\n </div>\n <!-- (cdkObserveContent)=\"onContentChange($event)\" -->\n <!-- If we need pagination -->\n <div class=\"swiper-pagination nxs-carousel-pagination\"\n [style.display]=\"slidesCount>0 && options && options.nxsShowNavigationBullets ? '':'none'\"></div>\n\n <!-- If we need navigation buttons -->\n <ng-container *ngIf=\"options.nxsShowNavigationArrows\">\n <div class=\"nxs-carousel-button-prev swiper-button-prev\"></div>\n <div class=\"nxs-carousel-button-next swiper-button-next\"></div>\n </ng-container>\n\n <ng-container *ngIf=\"images && options.nxsShowImagesCount\">\n <div class=\"nxs-image-counter\">\n {{currentSlide+1}} / {{images.length}}\n </div>\n </ng-container>\n\n</div>\n\n<div #nxsThumbnailsSliderContainer\n [style.display]=\"(images && !!options.nxsThumbnails && options.nxsThumbnails.show) ?'':'none'\"\n [style.height]=\"(!!options.nxsThumbnails && options.nxsThumbnails.show && !!options.nxsThumbnails.percentHeight) ? (options.nxsThumbnails.percentHeight + '%'):''\"\n [style.top]=\"(!!options.nxsThumbnails && options.nxsThumbnails.show && !!options.nxsThumbnails.percentHeight && options.nxsThumbnails.onMainSlider) ? ('-' + (options.nxsThumbnails.percentHeight) + '%'):''\"\n [ngClass]=\"{'swiper-container':true, 'nxs-slider-thumbnails-container':true,'nxs-slider-thumbnails-on-main-slider':options.nxsThumbnails && options.nxsThumbnails.onMainSlider}\">\n <div class=\"swiper-wrapper\" #nxsThumbnailsSlidesWrapper>\n\n </div>\n\n</div>",
383
- encapsulation: ViewEncapsulation.None,
384
- styles: ["nxs-carousel{display:block;height:100%;position:relative;--swiper-navigation-color:white;--swiper-theme-color:white}nxs-carousel .swiper-container{width:100%;display:block;position:relative;height:100%}nxs-carousel .swiper-container .swiper-wrapper .swiper-slide{height:100%;position:relative;width:100%;min-height:50px;background-size:cover;background-position:center;background-repeat:no-repeat}nxs-carousel .swiper-container.nxs-slider-with-thumbnails{height:80%}nxs-carousel .swiper-container.nxs-slider-thumbnails-container{height:20%;background:0 0;padding:6px 0}nxs-carousel .swiper-container.nxs-slider-thumbnails-container .swiper-slide{cursor:pointer;border-radius:6px;margin:0 6px;border:2px solid transparent}nxs-carousel .swiper-container.nxs-slider-thumbnails-container .swiper-slide.swiper-slide-thumb-active{border:2px solid #add8e6}nxs-carousel .swiper-container.nxs-slider-thumbnails-on-main-slider{top:-20%}nxs-carousel .nxs-image-counter{position:absolute;top:0;right:0;color:#fff;padding:4px;font-weight:700;z-index:10}"]
385
- }),
386
- __param(2, Inject(PLATFORM_ID)),
387
- __param(3, Optional()),
388
- __metadata("design:paramtypes", [MatDialog,
389
- NgZone, Object, NxsCarouselModuleConfig])
390
- ], NxsCarouselComponent);
391
- return NxsCarouselComponent;
392
- }());
393
- export { NxsCarouselComponent };
394
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnhzLWNhcm91c2VsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25leHRhbHlzLWNhcm91c2VsLyIsInNvdXJjZXMiOlsibGliL254cy1jYXJvdXNlbC9ueHMtY2Fyb3VzZWwuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2SyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDckgsT0FBTyxFQUF5QiwwQkFBMEIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3BHLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFPbEU7SUEwQ0ksOEJBQ1ksU0FBb0IsRUFDcEIsSUFBWSxFQUNTLFVBQWUsRUFDeEIsTUFBZ0M7UUFINUMsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUNwQixTQUFJLEdBQUosSUFBSSxDQUFRO1FBQ1MsZUFBVSxHQUFWLFVBQVUsQ0FBSztRQUN4QixXQUFNLEdBQU4sTUFBTSxDQUEwQjtRQTdDaEQscUJBQWdCLEdBQTRCLElBQUksQ0FBQztRQUN6RCw2QkFBd0IsR0FBRyxLQUFLLENBQUM7UUFDekIsb0JBQWUsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBY2hELFlBQU8sR0FBdUIsRUFBRSxDQUFDO1FBWWpDLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLGdCQUFXLEdB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RUFBRSxDQUFDO2tDQUM5QixVQUFVO2tFQUFpQjtJQUk3QztRQURDLFNBQVMsQ0FBQyw4QkFBOEIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQztrQ0FDOUIsVUFBVTs4RUFBaUI7SUFFekQ7UUFEQyxTQUFTLENBQUMsNEJBQTRCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUM7a0NBQzlCLFVBQVU7NEVBQWlCO0lBR3ZEO1FBREMsS0FBSyxDQUFDLFNBQVMsQ0FBQzs7OzBEQUdoQjtJQUVEO1FBREMsS0FBSyxDQUFDLFFBQVEsQ0FBQzs7O3lEQUtmO0lBRUQ7UUFEQyxLQUFLLEVBQUU7O2dFQUNlO0lBTXZCO1FBREMsTUFBTSxFQUFFOzs2REFDZ0M7SUFHekM7UUFEQyxNQUFNLEVBQUU7OzREQUNtQztJQXRDbkMsb0JBQW9CO1FBTmhDLFNBQVMsQ0FBQztZQUNQLFFBQVEsRUFBRSxjQUFjO1lBQ3hCLCsxREFBNEM7WUFFNUMsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7O1NBQ3hDLENBQUM7UUE4Q08sV0FBQSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUE7UUFDbkIsV0FBQSxRQUFRLEVBQUUsQ0FBQTt5Q0FIUSxTQUFTO1lBQ2QsTUFBTSxVQUVTLHVCQUF1QjtPQTlDL0Msb0JBQW9CLENBc1VoQztJQUFELDJCQUFDO0NBQUEsQUF0VUQsSUFzVUM7U0F0VVksb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3RW5jYXBzdWxhdGlvbiwgSW5wdXQsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIFBMQVRGT1JNX0lELCBJbmplY3QsIE9wdGlvbmFsLCBOZ1pvbmUsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE54c0Nhcm91c2VsT3B0aW9ucywgTnhzQ2Fyb3VzZWxJbWFnZSwgU3dpcGVySW5zdGFuY2UsIE54c0Nhcm91c2VsTW9kdWxlQ29uZmlnIH0gZnJvbSAnLi9ueHMtY2Fyb3VzZWwtdHlwZXMnO1xuaW1wb3J0IHsgTnhzQ2Fyb3VzZWxEaWFsb2dEYXRhLCBOeHNDYXJvdXNlbERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vbnhzLWNhcm91c2VsLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEV2ZW50c0NvbGxlY3RvciB9IGZyb20gJ25leHRhbHlzLWpzLWhlbHBlcnMvZGlzdC9ldmVudHMnO1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdueHMtY2Fyb3VzZWwnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9ueHMtY2Fyb3VzZWwuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL254cy1jYXJvdXNlbC5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIE54c0Nhcm91c2VsQ29tcG9uZW50IHtcbiAgICBwcml2YXRlIG11dGF0aW9uT2JzZXJ2ZXI6IE11dGF0aW9uT2JzZXJ2ZXIgfCBudWxsID0gbnVsbDtcbiAgICByZWNyZWF0ZVNsaWRlclN1YnNjcmliZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIGV2ZW50c0NvbGxlY3RvciA9IG5ldyBFdmVudHNDb2xsZWN0b3IoKTtcbiAgICBwdWJsaWMgaW1hZ2VzOiBOeHNDYXJvdXNlbEltYWdlW107XG5cbiAgICBAVmlld0NoaWxkKCdueHNTbGlkZXJDb250YWluZXInLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIG54c1NsaWRlckNvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG5cbiAgICBAVmlld0NoaWxkKCdueHNTbGlkZXNXcmFwcGVyJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBueHNTbGlkZXNXcmFwcGVyOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcblxuICAgIC8vdGh1bWJuYWlsc1xuICAgIEBWaWV3Q2hpbGQoJ254c1RodW1ibmFpbHNTbGlkZXJDb250YWluZXInLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIG54c1RodW1ibmFpbHNTbGlkZXJDb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuICAgIEBWaWV3Q2hpbGQoJ254c1RodW1ibmFpbHNTbGlkZXNXcmFwcGVyJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBueHNUaHVtYm5haWxzU2xpZGVzV3JhcHBlcjogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG4gICAgb3B0aW9uczogTnhzQ2Fyb3VzZWxPcHRpb25zID0ge307XG4gICAgQElucHV0KCdvcHRpb25zJylcbiAgICBzZXQgc2V0T3B0aW9ucyh2YWw6IE54c0Nhcm91c2VsT3B0aW9ucykge1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSB0aGlzLnNldERlZmF1bHRPcHRpb25zKHZhbCwgZmFsc2UpO1xuICAgIH1cbiAgICBASW5wdXQoJ2ltYWdlcycpXG4gICAgc2V0IHNldEltYWdlcyh2YWw6IE54c0Nhcm91c2VsSW1hZ2VbXSkge1xuICAgICAgICB0aGlzLmltYWdlcyA9IHZhbDtcbiAgICAgICAgdGhpcy5pbml0U2xpZGVzKCk7XG4gICAgICAgIHRoaXMuY3JlYXRlU2xpZGVyKHRydWUpO1xuICAgIH1cbiAgICBASW5wdXQoKVxuICAgIGhhc0h0bWxDb250ZW50ID0gZmFsc2U7XG4gICAgc2xpZGVzQ291bnQ6IG51bWJlciA9IDA7XG4gICAgcHVibGljIHNsaWRlckluc3RhbmNlOiBTd2lwZXJJbnN0YW5jZTtcbiAgICBwdWJsaWMgdGh1bWJuYWlsc1NsaWRlckluc3RhbmNlOiBTd2lwZXJJbnN0YW5jZTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHNsaWRlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gICAgcHVibGljIGN1cnJlbnRTbGlkZSA9IDA7XG4gICAgQE91dHB1dCgpXG4gICAgc2xpZGVDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8TW91c2VFdmVudD4oKTtcbiAgICBpc0Jyb3dzZXIgPSBmYWxzZTtcbiAgICBwcml2YXRlIHN3aXBlckxpYnJhcnk6IGFueTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIG1hdERpYWxvZzogTWF0RGlhbG9nLFxuICAgICAgICBwcml2YXRlIHpvbmU6IE5nWm9uZSxcbiAgICAgICAgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBhbnksXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgY29uZmlnPzogTnhzQ2Fyb3VzZWxNb2R1bGVDb25maWcsXG4gICAgKSB7XG4gICAgICAgIGlmICghdGhpcy5jb25maWcpXG4gICAgICAgICAgICB0aGlzLmNvbmZpZyA9IHsgZGVidWc6IGZhbHNlIH07XG4gICAgICAgIHRoaXMuaXNCcm93c2VyID0gaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKTtcbiAgICAgICAgdGhpcy5sb2coJ2NvbnN0cnVjdG9yIC0gaXNCcm93c2VyJywgdGhpcy5pc0Jyb3dzZXIpO1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSB0aGlzLnNldERlZmF1bHRPcHRpb25zKHVuZGVmaW5lZCwgZmFsc2UpO1xuICAgIH1cbiAgICBwcml2YXRlIGxvZyguLi5hcmdzOiBhbnlbXSkge1xuICAgICAgICBpZiAoIXRoaXMuY29uZmlnLmRlYnVnKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zb2xlLmxvZygnW054c0Nhcm91c2VsXScsIC4uLmFyZ3MpO1xuICAgIH1cblxuICAgIG9uQ29udGVudENoYW5nZShjaGFuZ2VzOiBNdXRhdGlvblJlY29yZFtdKSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwiTG9nOiBOeHNDYXJvdXNlbENvbXBvbmVudCAtPiBvbkNvbnRlbnRDaGFuZ2UgLT4gY2hhbmdlc1wiLCBjaGFuZ2VzKTtcbiAgICAgICAgLy8gY2hhbmdlcy5mb3JFYWNoKGNoYW5nZSA9PiBjb25zb2xlLmxvZyhjaGFuZ2UudGFyZ2V0KSk7XG4gICAgfVxuICAgIGluaXRTbGlkZXMoKSB7XG4gICAgICAgIGlmICghdGhpcy5pc0Jyb3dzZXIpIHtcbiAgICAgICAgICAgIHRoaXMubG9nKCdwcmV2ZW50IGluaXRTbGlkZXMgb24gcGxhdGZvcm0gc2VydmVyJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLm54c1NsaWRlc1dyYXBwZXIpIHtcbiAgICAgICAgICAgIHRoaXMubG9nKCdjYW4gbm90IGluaXRTbGlkZXMgOiBueHNTbGlkZXNXcmFwcGVyIGlzIG5vdCBkZWZpbmVkICEnKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmxvZygnaW5pdFNsaWRlcyBiZWdpbnMnKTtcbiAgICAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgIGlmICghdGhpcy5oYXNIdG1sQ29udGVudCAmJiB0aGlzLmltYWdlcykge1xuICAgICAgICAgICAgICAgIHRoaXMubnhzU2xpZGVzV3JhcHBlci5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9ICcnO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5pbWFnZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgICAgICAgICAgICAgIGRpdi5jbGFzc05hbWUgPSAnc3dpcGVyLXNsaWRlJztcbiAgICAgICAgICAgICAgICAgICAgZGl2LnN0eWxlLmJhY2tncm91bmRJbWFnZSA9ICd1cmwoJyArIHRoaXMuaW1hZ2VzW2ldLnNyYyArICcpJztcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5ueHNDYXJvdXNlbEltYWdlQmFja2dyb3VuZFNpemUpXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXYuc3R5bGUuYmFja2dyb3VuZFNpemUgPSB0aGlzLm9wdGlvbnMubnhzQ2Fyb3VzZWxJbWFnZUJhY2tncm91bmRTaXplO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm54c1NsaWRlc1dyYXBwZXIubmF0aXZlRWxlbWVudC5hcHBlbmRDaGlsZChkaXYpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnNsaWRlc0NvdW50ID0gdGhpcy5pbWFnZXMubGVuZ3RoO1xuICAgICAgICAgICAgICAgIGlmICghIXRoaXMub3B0aW9ucy5ueHNUaHVtYm5haWxzICYmIHRoaXMub3B0aW9ucy5ueHNUaHVtYm5haWxzLnNob3cpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ueHNUaHVtYm5haWxzU2xpZGVzV3JhcHBlci5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9ICcnO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuaW1hZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpdi5jbGFzc05hbWUgPSAnc3dpcGVyLXNsaWRlJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpdi5zdHlsZS5iYWNrZ3JvdW5kSW1hZ2UgPSAndXJsKCcgKyB0aGlzLmltYWdlc1tpXS5zcmMgKyAnKSc7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm54c1RodW1ibmFpbHNTbGlkZXNXcmFwcGVyLm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQoZGl2KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmxvZygnaW5pdFNsaWRlcyAtIGltYWdlcyBhcmUgZGVmaW5lZCAtIHNsaWRlcyBjb3VudCA9PiAnLCB0aGlzLnNsaWRlc0NvdW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuaGFzSHRtbENvbnRlbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvZygnaW5pdFNsaWRlcyAtIGh0bWwgY29udGVudCAtIHNsaWRlcyBsZW5ndGggPT4gJywgdGhpcy5ueHNTbGlkZXNXcmFwcGVyLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubnhzU2xpZGVzV3JhcHBlci5uYXRpdmVFbGVtZW50LmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkID0gdGhpcy5ueHNTbGlkZXNXcmFwcGVyLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5baV07XG4gICAgICAgICAgICAgICAgICAgIGlmICghY2hpbGQuY2xhc3NOYW1lKVxuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGQuY2xhc3NOYW1lID0gJ3N3aXBlci1zbGlkZSc7XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoaWxkLmNsYXNzTmFtZS5pbmRleE9mKCdzd2lwZXItc2xpZGUnKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkLmNsYXNzTmFtZSArPSAnIHN3aXBlci1zbGlkZSc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5zbGlkZXNDb3VudCA9IHRoaXMubnhzU2xpZGVzV3JhcHBlci5uYXRpdmVFbGVtZW50LmNoaWxkcmVuLmxlbmd0aDtcbiAgICAgICAgICAgICAgICB0aGlzLmxvZygnaW5pdFNsaWRlcyAtIGh0bWwgY29udGVudCAtIHNsaWRlcyBjb3VudCA9PiAnLCB0aGlzLnNsaWRlc0NvdW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICB9XG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5pc0Jyb3dzZXIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmV2ZW50c0NvbGxlY3Rvci51bnN1YnNjcmliZUFsbCgpO1xuICAgICAgICBpZiAodGhpcy5tdXRhdGlvbk9ic2VydmVyKVxuICAgICAgICAgICAgdGhpcy5tdXRhdGlvbk9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgaWYgKHRoaXMuc2xpZGVySW5zdGFuY2UpXG4gICAgICAgICAgICB0aGlzLnNsaWRlckluc3RhbmNlLmRlc3Ryb3koKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBzdWJzY3JpYmVUb1NsaWRlQ2hhbmdlZCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmhhc0h0bWxDb250ZW50KSB7XG4gICAgICAgICAgICB0aGlzLmxvZygnc3Vic2NyaWJlVG9TbGlkZUNoYW5nZWQgY2Fubm90IGJlIHN1YnNjcmliZWQgOiBoYXMgbm8gaHRtbCBjb250ZW50Jyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLm54c1NsaWRlc1dyYXBwZXIgfHwgIXRoaXMubnhzU2xpZGVzV3JhcHBlci5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLmxvZygnc3Vic2NyaWJlVG9TbGlkZUNoYW5nZWQgZXJyb3IgOiBueHNTbGlkZXNXcmFwcGVyIGlzIG5vdCBkZWZpbmVkJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBNdXRhdGlvbk9ic2VydmVyID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgdGhpcy5sb2coJ2Nhbm5vdCB1c2UgbXV0YXRpb24gb2JzZXJ2ZXInKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm11dGF0aW9uT2JzZXJ2ZXIpXG4gICAgICAgICAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuXG4gICAgICAgIHRoaXMubG9nKCdzdWJzY3JpYmUgdG8gbXV0YXRpb24gb2JzZXJ2ZXInKTtcbiAgICAgICAgdGhpcy5tdXRhdGlvbk9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKG11dGF0aW9uc0xpc3QpID0+IHtcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiTG9nOiBOeHNDYXJvdXNlbENvbXBvbmVudCAtPiBzdWJzY3JpYmVUb1NsaWRlQ2hhbmdlZCAtPiBtdXRhdGlvbnNMaXN0XCIsIG11dGF0aW9uc0xpc3QpO1xuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJMb2c6IE54c0Nhcm91c2VsQ29tcG9uZW50IC0+IHN1YnNjcmliZVRvU2xpZGVDaGFuZ2VkIC0+IE11dGF0aW9uT2JzZXJ2ZXJcIik7XG4gICAgICAgICAgICB0aGlzLmxvZygnbXV0YXRpb24gb2JzZXJ2ZXIgLSBodG1sIGNvbnRlbnQgaGFzIGNoYW5nZWQnKTtcbiAgICAgICAgICAgIGlmIChtdXRhdGlvbnNMaXN0Lmxlbmd0aCA9PT0gMClcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBsZXQgbXVzdFVwZGF0ZSA9IGZhbHNlO1xuICAgICAgICAgICAgZm9yIChjb25zdCBtdXRhdGlvbiBvZiBtdXRhdGlvbnNMaXN0KSB7XG4gICAgICAgICAgICAgICAgaWYgKG11dGF0aW9uLmFkZGVkTm9kZXMubGVuZ3RoID4gMCB8fCBtdXRhdGlvbi5yZW1vdmVkTm9kZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBtdXN0VXBkYXRlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG11c3RVcGRhdGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRTbGlkZXMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVNsaWRlcih0cnVlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5tdXRhdGlvbk9ic2VydmVyLm9ic2VydmUodGhpcy5ueHNTbGlkZXNXcmFwcGVyLm5hdGl2ZUVsZW1lbnQsIHsgY2hpbGRMaXN0OiB0cnVlLCBhdHRyaWJ1dGVzOiBmYWxzZSwgfSk7XG4gICAgfVxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbml0U2xpZGVzKCk7XG4gICAgICAgIHRoaXMuY3JlYXRlU2xpZGVyKHRydWUpO1xuICAgIH1cbiAgICBnZXRNYWluU2xpZGVySGVpZ2h0KCkge1xuICAgICAgICBpZiAoIXRoaXMub3B0aW9ucylcbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5ueHNUaHVtYm5haWxzICYmIHRoaXMub3B0aW9ucy5ueHNUaHVtYm5haWxzLnNob3cpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMubnhzVGh1bWJuYWlscy5vbk1haW5TbGlkZXIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJzEwMCUnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5vcHRpb25zLm54c1RodW1ibmFpbHMucGVyY2VudEhlaWdodCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAoMTAwIC0gdGhpcy5vcHRpb25zLm54c1RodW1ibmFpbHMucGVyY2VudEhlaWdodCkgKyAnJSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICBwcml2YXRlIHNldERlZmF1bHRPcHRpb25zKG9wdGlvbnM6IE54c0Nhcm91c2VsT3B0aW9ucywgZm9yRGlhbG9nOiBib29sZWFuKSB7XG4gICAgICAgIGlmICghb3B0aW9ucyAmJiBmb3JEaWFsb2cpIHtcbiAgICAgICAgICAgIG9wdGlvbnMgPSB7IG54c1Nob3dOYXZpZ2F0aW9uQnVsbGV0czogdHJ1ZSwgbG9vcDogdHJ1ZSwgbnhzVGh1bWJuYWlsczogeyBzaG93OiB0cnVlIH0sIGVmZmVjdDogJ3NsaWRlJywgbnhzU2hvd05hdmlnYXRpb25BcnJvd3M6IHRydWUsIG54c1Nob3dJbWFnZXNDb3VudDogdHJ1ZSB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoIW9wdGlvbnMpXG4gICAgICAgICAgICBvcHRpb25zID0geyBueHNTaG93TmF2aWdhdGlvbkJ1bGxldHM6IHRydWUsIGxvb3A6IHRydWUsIG54c1RodW1ibmFpbHM6IHsgc2hvdzogZmFsc2UgfSwgZWZmZWN0OiAnc2xpZGUnLCBueHNTaG93TmF2aWdhdGlvbkFycm93czogdHJ1ZSwgbnhzU2hvd0ltYWdlc0NvdW50OiBmYWxzZSwgbnhzQ2Fyb3VzZWxEaWFsb2dPcHRpb25zOiB7fSB9XG4gICAgICAgIGlmIChvcHRpb25zLm54c0Nhcm91c2VsRGlhbG9nT3B0aW9ucykge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zLm54c0Nhcm91c2VsRGlhbG9nT3B0aW9ucy5ueHNUaHVtYm5haWxzID09PSAndW5kZWZpbmVkJylcbiAgICAgICAgICAgICAgICBvcHRpb25zLm54c0Nhcm91c2VsRGlhbG9nT3B0aW9ucy5ueHNUaHVtYm5haWxzID0geyBzaG93OiBmYWxzZSB9O1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zLm54c0Nhcm91c2VsRGlhbG9nT3B0aW9ucy5lZmZlY3QgPT09ICd1bmRlZmluZWQnKVxuICAgICAgICAgICAgICAgIG9wdGlvbnMubnhzQ2Fyb3VzZWxEaWFsb2dPcHRpb25zLmVmZmVjdCA9ICdzbGlkZSc7XG4gICAgICAgICAgICBpZiAodHlwZW9mIG9wdGlvbnMubnhzQ2Fyb3VzZWxEaWFsb2dPcHRpb25zLm54c1Nob3dOYXZpZ2F0aW9uQXJyb3dzID09PSAndW5kZWZpbmVkJylcbiAgICAgICAgICAgICAgICBvcHRpb25zLm54c0Nhcm91c2VsRGlhbG9nT3B0aW9ucy5ueHNTaG93TmF2aWdhdGlvbkFycm93cyA9IHRydWU7XG5cbiAgICAgICAgICAgIGlmIChvcHRpb25zLm54c0Nhcm91c2VsRGlhbG9nT3B0aW9ucy5ueHNUaHVtYm5haWxzLnNob3cpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG9wdGlvbnMubnhzQ2Fyb3VzZWxEaWFsb2dPcHRpb25zLm54c1RodW1ibmFpbHMucGVyY2VudEhlaWdodCA9PT0gJ3VuZGVmaW5lZCcpXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnMubnhzQ2Fyb3VzZWxEaWFsb2dPcHRpb25zLm54c1RodW1ibmFpbHMucGVyY2VudEhlaWdodCA9IDIwO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5ueHNDYXJvdXNlbERpYWxvZ09wdGlvbnMubnhzVGh1bWJuYWlscy5wZXJWaWV3ID09PSAndW5kZWZpbmVkJylcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5ueHNDYXJvdXNlbERpYWxvZ09wdGlvbnMubnhzVGh1bWJuYWlscy5wZXJWaWV3ID0gMTA7XG4gICAgICAgICAgICAgICAgb3B0aW9ucy5ueHNDYXJvdXNlbERpYWxvZ09wdGlvbnMubnhzVGh1bWJuYWlscy5icmVha3BvaW50cyA9IHtcbiAgICAgICAgICAgICAgICAgICAgNjQwOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzbGlkZXNQZXJWaWV3OiA1LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICA3Njg6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlc1BlclZpZXc6IDcsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIDEwMjQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlc1BlclZpZXc6IDgsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIG9wdGlvbnMubnhzVGh1bWJuYWlscyA9PT0gJ3VuZGVmaW5lZCcpXG4gICAgICAgICAgICBvcHRpb25zLm54c1RodW1ibmFpbHMgPSB7IHNob3c6IGZhbHNlIH07XG5cblxuICAgICAgICBpZiAob3B0aW9ucy5ueHNUaHVtYm5haWxzLnNob3cgJiYgdHlwZW9mIG9wdGlvbnMubnhzVGh1bWJuYWlscy5wZXJjZW50SGVpZ2h0ID09PSAndW5kZWZpbmVkJylcbiAgICAgICAgICAgIG9wdGlvbnMubnhzVGh1bWJuYWlscy5wZXJjZW50SGVpZ2h0ID0gMjA7XG5cbiAgICAgICAgaWYgKG9wdGlvbnMubnhzVGh1bWJuYWlscy5zaG93ICYmIHR5cGVvZiBvcHRpb25zLm54c1RodW1ibmFpbHMucGVyVmlldyA9PT0gJ3VuZGVmaW5lZCcpXG4gICAgICAgICAgICBvcHRpb25zLm54c1RodW1ibmFpbHMucGVyVmlldyA9IDEwO1xuXG5cbiAgICAgICAgaWYgKGZvckRpYWxvZylcbiAgICAgICAgICAgIG9wdGlvbnMubnhzZnVsbHNjcmVlbk9uQ2xpY2sgPSBmYWxzZTtcbiAgICAgICAgaWYgKG9wdGlvbnMubnhzVGh1bWJuYWlscy5vbk1haW5TbGlkZXIpXG4gICAgICAgICAgICBvcHRpb25zLm54c1Nob3dOYXZpZ2F0aW9uQnVsbGV0cyA9IGZhbHNlO1xuICAgICAgICByZXR1cm4gb3B0aW9ucztcbiAgICB9XG4gICAgcHVibGljIHNob3dGdWxsU2NyZWVuQ2Fyb3VzZWwoaW1hZ2VzOiBOeHNDYXJvdXNlbEltYWdlW10sIHdyYXBwZXJDbGFzcz86IHN0cmluZykge1xuICAgICAgICB0aGlzLm9wdGlvbnMubnhzQ2Fyb3VzZWxEaWFsb2dPcHRpb25zID0gdGhpcy5zZXREZWZhdWx0T3B0aW9ucyh0aGlzLm9wdGlvbnMubnhzQ2Fyb3VzZWxEaWFsb2dPcHRpb25zLCB0cnVlKTtcbiAgICAgICAgY29uc3QgZGF0YTogTnhzQ2Fyb3VzZWxEaWFsb2dEYXRhID0geyBpbWFnZXMsIHdyYXBwZXJDbGFzcywgb3B0aW9uczogdGhpcy5vcHRpb25zLm54c0Nhcm91c2VsRGlhbG9nT3B0aW9ucyB9O1xuICAgICAgICB0aGlzLm1hdERpYWxvZy5vcGVuKE54c0Nhcm91c2VsRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgcGFuZWxDbGFzczogJ254cy1jYXJvdXNlbC1kaWFsb2cnLFxuICAgICAgICAgICAgd2lkdGg6ICEhdGhpcy5vcHRpb25zLm54c0Nhcm91c2VsRGlhbG9nU2l6ZSA/IHRoaXMub3B0aW9ucy5ueHNDYXJvdXNlbERpYWxvZ1NpemUud2lkdGggOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBoZWlnaHQ6ICEhdGhpcy5vcHRpb25zLm54c0Nhcm91c2VsRGlhbG9nU2l6ZSA/IHRoaXMub3B0aW9ucy5ueHNDYXJvdXNlbERpYWxvZ1NpemUuaGVpZ2h0IDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgZGlzYWJsZUNsb3NlOiAhdGhpcy5vcHRpb25zLm54c0Nhcm91c2VsRGlhbG9nRXhpdGFibGUsXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBwcml2YXRlIGNyZWF0ZVNsaWRlcihmb3JjZVJlY3JlYXRlOiBib29sZWFuKSB7XG4gICAgICAgIGlmICghdGhpcy5pc0Jyb3dzZXIpIHtcbiAgICAgICAgICAgIHRoaXMubG9nKCdwcmV2ZW50IGNyZWF0ZVNsaWRlciA6IHBsYXRmb3JtIGlzIHNlcnZlcicpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5ueHNTbGlkZXJDb250YWluZXIpIHtcbiAgICAgICAgICAgIHRoaXMubG9nKCdjYW4gbm90IGNyZWF0ZVNsaWRlciA6IG54c1NsaWRlckNvbnRhaW5lciBpcyBub3QgZGVmaW5lZCAhJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5sb2coJ2NyZWF0ZVNsaWRlcicsIHRoaXMubnhzU2xpZGVyQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICBpZiAodGhpcy5zbGlkZXNDb3VudCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5sb2coJ2NhbiBub3QgY3JlYXRlU2xpZGVyIDogc2xpZGVzQ291bnQgPT09IDAnKTtcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaWJlVG9TbGlkZUNoYW5nZWQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5zbGlkZXJJbnN0YW5jZSAmJiAhZm9yY2VSZWNyZWF0ZSkge1xuICAgICAgICAgICAgdGhpcy5sb2coJ2NhbiByZSBjcmVhdGUgc2xpZGVyID0+IHNsaWRlciBpcyBhbHJlYWR5IGNyZWF0ZWQuJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLnNsaWRlckluc3RhbmNlKVxuICAgICAgICAgICAgICAgIHRoaXMuc2xpZGVySW5zdGFuY2UuZGVzdHJveSgpO1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBhZ2luYXRpb24gPSB7XG4gICAgICAgICAgICAgICAgZWw6ICcubnhzLWNhcm91c2VsLXBhZ2luYXRpb24nLFxuICAgICAgICAgICAgICAgIGNsaWNrYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICB0eXBlOiAnYnVsbGV0cycsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zLm5hdmlnYXRpb24gPSB7XG4gICAgICAgICAgICAgICAgbmV4dEVsOiAnLm54cy1jYXJvdXNlbC1idXR0b24tbmV4dCcsXG4gICAgICAgICAgICAgICAgcHJldkVsOiAnLm54cy1jYXJvdXNlbC1idXR0b24tcHJldicsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKCF0aGlzLnN3aXBlckxpYnJhcnkpXG4gICAgICAgICAgICAgICAgdGhpcy5zd2lwZXJMaWJyYXJ5ID0gYXdhaXQgaW1wb3J0KFwic3dpcGVyXCIpO1xuICAgICAgICAgICAgY29uc3QgU3dpcGVyID0gdGhpcy5zd2lwZXJMaWJyYXJ5LmRlZmF1bHQ7XG4gICAgICAgICAgICBpZiAoISF0aGlzLm9wdGlvbnMubnhzVGh1bWJuYWlscyAmJiB0aGlzLm9wdGlvbnMubnhzVGh1bWJuYWlscy5zaG93KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGh1bWJuYWlsc09wdGlvbnM6IE54c0Nhcm91c2VsT3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICAgICAgc2xpZGVzUGVyVmlldzogdGhpcy5vcHRpb25zLm54c1RodW1ibmFpbHMucGVyVmlldyxcbiAgICAgICAgICAgICAgICAgICAgbG9vcDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGZyZWVNb2RlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB3YXRjaFNsaWRlc1Zpc2liaWxpdHk6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIHdhdGNoU2xpZGVzUHJvZ3Jlc3M6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrcG9pbnRzOiB0aGlzLm9wdGlvbnMubnhzVGh1bWJuYWlscy5icmVha3BvaW50cyxcbiAgICAgICAgICAgICAgICAgICAgLy8gc3BhY2VCZXR3ZWVuOiAxMCxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHRoaXMudGh1bWJuYWlsc1NsaWRlckluc3RhbmNlID0gbmV3IFN3aXBlcih0aGlzLm54c1RodW1ibmFpbHNTbGlkZXJDb250YWluZXIubmF0aXZlRWxlbWVudCwgdGh1bWJuYWlsc09wdGlvbnMpO1xuICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy50aHVtYnMgPSB7IHN3aXBlcjogdGhpcy50aHVtYm5haWxzU2xpZGVySW5zdGFuY2UgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc2xpZGVySW5zdGFuY2UgPSBuZXcgU3dpcGVyKHRoaXMubnhzU2xpZGVyQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQsIHRoaXMub3B0aW9ucyk7XG4gICAgICAgICAgICB0aGlzLmxvZygnc2xpZGVySW5zdGFuY2UgaGFzIGJlZW4gY3JlYXRlZCcsIHRoaXMuc2xpZGVySW5zdGFuY2UpO1xuICAgICAgICAgICAgdGhpcy5zbGlkZXJJbnN0YW5jZS5vbignc2xpZGVDaGFuZ2UnLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFNsaWRlID0gdGhpcy5zbGlkZXJJbnN0YW5jZS5yZWFsSW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9nKFwic2xpZGVDaGFuZ2VcIiwgdGhpcy5jdXJyZW50U2xpZGUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNsaWRlQ2hhbmdlLm5leHQodGhpcy5jdXJyZW50U2xpZGUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLnNsaWRlckluc3RhbmNlLm9uKCdjbGljaycsIChldnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBldnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgICAgIGlmICh0YXJnZXQuY2xhc3NOYW1lLmluZGV4T2YoJ254cy1jYXJvdXNlbC1idXR0b24nKSAhPT0gLTEgfHwgdGFyZ2V0LmNsYXNzTmFtZS5pbmRleE9mKCdzd2lwZXItcGFnaW5hdGlvbicpICE9PSAtMSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNsaWRlQ2xpY2submV4dChldnQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLm54c2Z1bGxzY3JlZW5PbkNsaWNrICYmIHRoaXMuaW1hZ2VzICYmIHRoaXMuaW1hZ2VzLmxlbmd0aCAmJiAhdGhpcy5oYXNIdG1sQ29udGVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93RnVsbFNjcmVlbkNhcm91c2VsKHRoaXMuaW1hZ2VzLCAnZnVsbHNjcmVlbi1jYXJvdXNlbCcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5zdWJzY3JpYmVUb1NsaWRlQ2hhbmdlZCgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnb1RvU2xpZGUoaW5kZXg6IG51bWJlciwgc3BlZWQ/OiBudW1iZXIpIHtcbiAgICAgICAgaWYgKCF0aGlzLnNsaWRlckluc3RhbmNlKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB0aGlzLnNsaWRlckluc3RhbmNlLnNsaWRlVG8oaW5kZXgsIHNwZWVkKTtcbiAgICB9XG4gICAgbmV4dCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLnNsaWRlckluc3RhbmNlKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB0aGlzLnNsaWRlckluc3RhbmNlLnNsaWRlTmV4dCgpO1xuICAgIH1cbiAgICBwcmV2aW91cygpIHtcbiAgICAgICAgaWYgKCF0aGlzLnNsaWRlckluc3RhbmNlKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB0aGlzLnNsaWRlckluc3RhbmNlLnNsaWRlUHJldigpO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,45 +0,0 @@
1
- import { __decorate } from "tslib";
2
- import { NgModule } from '@angular/core';
3
- import { CommonModule } from '@angular/common';
4
- import { NxsCarouselDialogComponent } from './nxs-carousel-dialog.component';
5
- import { MatButtonModule } from '@angular/material/button';
6
- import { MatIconModule } from '@angular/material/icon';
7
- import { MatDialogModule } from '@angular/material/dialog';
8
- import { NxsCarouselComponent } from './nxs-carousel.component';
9
- import { NxsCarouselModuleConfig } from './nxs-carousel-types';
10
- import { ObserversModule } from '@angular/cdk/observers';
11
- var NxsCarouselModule = /** @class */ (function () {
12
- function NxsCarouselModule() {
13
- }
14
- NxsCarouselModule_1 = NxsCarouselModule;
15
- NxsCarouselModule.forRoot = function (config) {
16
- return {
17
- ngModule: NxsCarouselModule_1,
18
- providers: [
19
- { provide: NxsCarouselModuleConfig, useValue: config },
20
- ]
21
- };
22
- };
23
- var NxsCarouselModule_1;
24
- NxsCarouselModule = NxsCarouselModule_1 = __decorate([
25
- NgModule({
26
- declarations: [
27
- NxsCarouselComponent,
28
- NxsCarouselDialogComponent,
29
- ],
30
- imports: [
31
- CommonModule,
32
- MatIconModule,
33
- MatButtonModule,
34
- MatDialogModule,
35
- ObserversModule,
36
- ],
37
- exports: [
38
- NxsCarouselComponent,
39
- ],
40
- })
41
- ], NxsCarouselModule);
42
- return NxsCarouselModule;
43
- }());
44
- export { NxsCarouselModule };
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnhzLWNhcm91c2VsLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25leHRhbHlzLWNhcm91c2VsLyIsInNvdXJjZXMiOlsibGliL254cy1jYXJvdXNlbC9ueHMtY2Fyb3VzZWwubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUF1QixNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBa0J6RDtJQUFBO0lBU0EsQ0FBQzswQkFUWSxpQkFBaUI7SUFDWix5QkFBTyxHQUFyQixVQUFzQixNQUFnQztRQUNsRCxPQUFPO1lBQ0gsUUFBUSxFQUFFLG1CQUFpQjtZQUMzQixTQUFTLEVBQUU7Z0JBQ1AsRUFBRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRTthQUN6RDtTQUNKLENBQUM7SUFDTixDQUFDOztJQVJRLGlCQUFpQjtRQWhCN0IsUUFBUSxDQUFDO1lBQ04sWUFBWSxFQUFFO2dCQUNWLG9CQUFvQjtnQkFDcEIsMEJBQTBCO2FBQzdCO1lBQ0QsT0FBTyxFQUFFO2dCQUNMLFlBQVk7Z0JBQ1osYUFBYTtnQkFDYixlQUFlO2dCQUNmLGVBQWU7Z0JBQ2YsZUFBZTthQUNsQjtZQUNELE9BQU8sRUFBRTtnQkFDTCxvQkFBb0I7YUFDdkI7U0FDSixDQUFDO09BQ1csaUJBQWlCLENBUzdCO0lBQUQsd0JBQUM7Q0FBQSxBQVRELElBU0M7U0FUWSxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgTW9kdWxlV2l0aFByb3ZpZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE54c0Nhcm91c2VsRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9ueHMtY2Fyb3VzZWwtZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0RGlhbG9nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IE54c0Nhcm91c2VsQ29tcG9uZW50IH0gZnJvbSAnLi9ueHMtY2Fyb3VzZWwuY29tcG9uZW50JztcbmltcG9ydCB7IE54c0Nhcm91c2VsTW9kdWxlQ29uZmlnIH0gZnJvbSAnLi9ueHMtY2Fyb3VzZWwtdHlwZXMnO1xuaW1wb3J0IHsgT2JzZXJ2ZXJzTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL29ic2VydmVycyc7XG5cbkBOZ01vZHVsZSh7XG4gICAgZGVjbGFyYXRpb25zOiBbXG4gICAgICAgIE54c0Nhcm91c2VsQ29tcG9uZW50LFxuICAgICAgICBOeHNDYXJvdXNlbERpYWxvZ0NvbXBvbmVudCxcbiAgICBdLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBNYXRJY29uTW9kdWxlLFxuICAgICAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgICAgIE1hdERpYWxvZ01vZHVsZSxcbiAgICAgICAgT2JzZXJ2ZXJzTW9kdWxlLFxuICAgIF0sXG4gICAgZXhwb3J0czogW1xuICAgICAgICBOeHNDYXJvdXNlbENvbXBvbmVudCxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBOeHNDYXJvdXNlbE1vZHVsZSB7XG4gICAgcHVibGljIHN0YXRpYyBmb3JSb290KGNvbmZpZz86IE54c0Nhcm91c2VsTW9kdWxlQ29uZmlnKTogTW9kdWxlV2l0aFByb3ZpZGVyczxOeHNDYXJvdXNlbE1vZHVsZT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbmdNb2R1bGU6IE54c0Nhcm91c2VsTW9kdWxlLFxuICAgICAgICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgICAgICAgICAgeyBwcm92aWRlOiBOeHNDYXJvdXNlbE1vZHVsZUNvbmZpZywgdXNlVmFsdWU6IGNvbmZpZyB9LFxuICAgICAgICAgICAgXVxuICAgICAgICB9O1xuICAgIH1cbn0iXX0=
@@ -1,6 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public-api';
5
- export { NxsCarouselDialogComponent as ɵa } from './lib/nxs-carousel/nxs-carousel-dialog.component';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV4dGFseXMtY2Fyb3VzZWwuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZXh0YWx5cy1jYXJvdXNlbC8iLCJzb3VyY2VzIjpbIm5leHRhbHlzLWNhcm91c2VsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUM7QUFFN0IsT0FBTyxFQUFDLDBCQUEwQixJQUFJLEVBQUUsRUFBQyxNQUFNLGtEQUFrRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuXG5leHBvcnQge054c0Nhcm91c2VsRGlhbG9nQ29tcG9uZW50IGFzIMm1YX0gZnJvbSAnLi9saWIvbnhzLWNhcm91c2VsL254cy1jYXJvdXNlbC1kaWFsb2cuY29tcG9uZW50JzsiXX0=
@@ -1,4 +0,0 @@
1
- export * from './lib/nxs-carousel/nxs-carousel.component';
2
- export * from './lib/nxs-carousel/nxs-carousel.module';
3
- export * from './lib/nxs-carousel/nxs-carousel-types';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25leHRhbHlzLWNhcm91c2VsLyIsInNvdXJjZXMiOlsicHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyx1Q0FBdUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL254cy1jYXJvdXNlbC9ueHMtY2Fyb3VzZWwuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL254cy1jYXJvdXNlbC9ueHMtY2Fyb3VzZWwubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL254cy1jYXJvdXNlbC9ueHMtY2Fyb3VzZWwtdHlwZXMnO1xuIl19