@casus-campus/ngx-gallery 0.5.1 → 0.7.2

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 (93) hide show
  1. package/README.md +4 -1
  2. package/casus-campus-ngx-gallery.d.ts +1 -1
  3. package/esm2020/casus-campus-ngx-gallery.mjs +5 -0
  4. package/esm2020/lib/cc-custom-options.mjs +141 -0
  5. package/esm2020/lib/image/ngx-gallery-image-svg.component.mjs +142 -0
  6. package/{esm2015/lib/models/ngx-gallery-action.model.js → esm2020/lib/models/ngx-gallery-action.model.mjs} +0 -0
  7. package/{esm2015/lib/models/ngx-gallery-animation.model.js → esm2020/lib/models/ngx-gallery-animation.model.mjs} +0 -0
  8. package/{esm2015/lib/models/ngx-gallery-image-size.model.js → esm2020/lib/models/ngx-gallery-image-size.model.mjs} +0 -0
  9. package/{esm2015/lib/models/ngx-gallery-image.model.js → esm2020/lib/models/ngx-gallery-image.model.mjs} +0 -0
  10. package/{esm2015/lib/models/ngx-gallery-layout.model.js → esm2020/lib/models/ngx-gallery-layout.model.mjs} +0 -0
  11. package/{esm2015/lib/models/ngx-gallery-options.model.js → esm2020/lib/models/ngx-gallery-options.model.mjs} +0 -0
  12. package/{esm2015/lib/models/ngx-gallery-order.model.js → esm2020/lib/models/ngx-gallery-order.model.mjs} +0 -0
  13. package/{esm2015/lib/models/ngx-gallery-ordered-image.model.js → esm2020/lib/models/ngx-gallery-ordered-image.model.mjs} +0 -0
  14. package/esm2020/lib/ngx-gallery-action/ngx-gallery-action.component.mjs +47 -0
  15. package/esm2020/lib/ngx-gallery-arrows/ngx-gallery-arrows.component.mjs +67 -0
  16. package/esm2020/lib/ngx-gallery-bullets/ngx-gallery-bullets.component.mjs +38 -0
  17. package/{esm2015/lib/ngx-gallery-helper.service.js → esm2020/lib/ngx-gallery-helper.service.mjs} +9 -10
  18. package/esm2020/lib/ngx-gallery-image/ngx-gallery-image.component.mjs +265 -0
  19. package/esm2020/lib/ngx-gallery-preview/ngx-gallery-preview.component.mjs +565 -0
  20. package/esm2020/lib/ngx-gallery-thumbnails/ngx-gallery-thumbnails.component.mjs +288 -0
  21. package/esm2020/lib/ngx-gallery-video/ngx-gallery-video.component.mjs +68 -0
  22. package/esm2020/lib/ngx-gallery.component.mjs +560 -0
  23. package/esm2020/lib/ngx-gallery.module.mjs +78 -0
  24. package/{esm2015/lib/svg/arrow.model.js → esm2020/lib/svg/arrow.model.mjs} +0 -0
  25. package/{esm2015/lib/svg/icon.model.js → esm2020/lib/svg/icon.model.mjs} +0 -0
  26. package/esm2020/lib/svg/ngx-gallery-svg-arrow.component.mjs +22 -0
  27. package/esm2020/lib/svg/ngx-gallery-svg-icon.component.mjs +49 -0
  28. package/esm2020/lib/svg/ngx-gallery-svg-polygon.component.mjs +34 -0
  29. package/esm2020/lib/svg/ngx-gallery-svg-text.component.mjs +25 -0
  30. package/{esm2015/lib/svg/point.model.js → esm2020/lib/svg/point.model.mjs} +0 -0
  31. package/{esm2015/lib/svg/polygon.model.js → esm2020/lib/svg/polygon.model.mjs} +0 -0
  32. package/esm2020/lib/utils/cc-media.service.mjs +185 -0
  33. package/esm2020/lib/utils/custom-hammer-config.service.mjs +18 -0
  34. package/esm2020/lib/utils/logging.service.mjs +21 -0
  35. package/{esm2015/lib/utils/media-dimension.interface.js → esm2020/lib/utils/media-dimension.interface.mjs} +0 -0
  36. package/{esm2015/lib/utils/ngx-gallery-dimensions.interface.js → esm2020/lib/utils/ngx-gallery-dimensions.interface.mjs} +0 -0
  37. package/esm2020/lib/utils/ngx-preview-loader.component.mjs +240 -0
  38. package/esm2020/lib/utils/utils-script.component.mjs +34 -0
  39. package/{esm2015/lib/utils/videourl.model.js → esm2020/lib/utils/videourl.model.mjs} +0 -0
  40. package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
  41. package/fesm2015/casus-campus-ngx-gallery.mjs +3052 -0
  42. package/fesm2015/casus-campus-ngx-gallery.mjs.map +1 -0
  43. package/fesm2020/casus-campus-ngx-gallery.mjs +3059 -0
  44. package/fesm2020/casus-campus-ngx-gallery.mjs.map +1 -0
  45. package/lib/image/ngx-gallery-image-svg.component.d.ts +3 -0
  46. package/lib/ngx-gallery-action/ngx-gallery-action.component.d.ts +3 -0
  47. package/lib/ngx-gallery-arrows/ngx-gallery-arrows.component.d.ts +3 -0
  48. package/lib/ngx-gallery-bullets/ngx-gallery-bullets.component.d.ts +3 -0
  49. package/lib/ngx-gallery-helper.service.d.ts +3 -0
  50. package/lib/ngx-gallery-image/ngx-gallery-image.component.d.ts +3 -0
  51. package/lib/ngx-gallery-preview/ngx-gallery-preview.component.d.ts +3 -0
  52. package/lib/ngx-gallery-thumbnails/ngx-gallery-thumbnails.component.d.ts +3 -0
  53. package/lib/ngx-gallery-video/ngx-gallery-video.component.d.ts +3 -0
  54. package/lib/ngx-gallery.component.d.ts +3 -0
  55. package/lib/ngx-gallery.module.d.ts +21 -0
  56. package/lib/svg/ngx-gallery-svg-arrow.component.d.ts +3 -0
  57. package/lib/svg/ngx-gallery-svg-icon.component.d.ts +3 -0
  58. package/lib/svg/ngx-gallery-svg-polygon.component.d.ts +3 -0
  59. package/lib/svg/ngx-gallery-svg-text.component.d.ts +3 -0
  60. package/lib/utils/cc-media.service.d.ts +3 -0
  61. package/lib/utils/custom-hammer-config.service.d.ts +3 -0
  62. package/lib/utils/logging.service.d.ts +3 -0
  63. package/lib/utils/ngx-preview-loader.component.d.ts +3 -0
  64. package/lib/utils/utils-script.component.d.ts +3 -0
  65. package/package.json +25 -13
  66. package/bundles/casus-campus-ngx-gallery.umd.js +0 -3232
  67. package/bundles/casus-campus-ngx-gallery.umd.js.map +0 -1
  68. package/bundles/casus-campus-ngx-gallery.umd.min.js +0 -2
  69. package/bundles/casus-campus-ngx-gallery.umd.min.js.map +0 -1
  70. package/casus-campus-ngx-gallery.metadata.json +0 -1
  71. package/esm2015/casus-campus-ngx-gallery.js +0 -6
  72. package/esm2015/lib/cc-custom-options.js +0 -141
  73. package/esm2015/lib/image/ngx-gallery-image-svg.component.js +0 -130
  74. package/esm2015/lib/ngx-gallery-action/ngx-gallery-action.component.js +0 -35
  75. package/esm2015/lib/ngx-gallery-arrows/ngx-gallery-arrows.component.js +0 -46
  76. package/esm2015/lib/ngx-gallery-bullets/ngx-gallery-bullets.component.js +0 -31
  77. package/esm2015/lib/ngx-gallery-image/ngx-gallery-image.component.js +0 -225
  78. package/esm2015/lib/ngx-gallery-preview/ngx-gallery-preview.component.js +0 -513
  79. package/esm2015/lib/ngx-gallery-thumbnails/ngx-gallery-thumbnails.component.js +0 -265
  80. package/esm2015/lib/ngx-gallery-video/ngx-gallery-video.component.js +0 -63
  81. package/esm2015/lib/ngx-gallery.component.js +0 -540
  82. package/esm2015/lib/ngx-gallery.module.js +0 -54
  83. package/esm2015/lib/svg/ngx-gallery-svg-arrow.component.js +0 -24
  84. package/esm2015/lib/svg/ngx-gallery-svg-icon.component.js +0 -51
  85. package/esm2015/lib/svg/ngx-gallery-svg-polygon.component.js +0 -37
  86. package/esm2015/lib/svg/ngx-gallery-svg-text.component.js +0 -28
  87. package/esm2015/lib/utils/cc-media.service.js +0 -177
  88. package/esm2015/lib/utils/custom-hammer-config.service.js +0 -15
  89. package/esm2015/lib/utils/logging.service.js +0 -19
  90. package/esm2015/lib/utils/ngx-preview-loader.component.js +0 -187
  91. package/esm2015/lib/utils/utils-script.component.js +0 -32
  92. package/fesm2015/casus-campus-ngx-gallery.js +0 -2857
  93. package/fesm2015/casus-campus-ngx-gallery.js.map +0 -1
package/README.md CHANGED
@@ -40,8 +40,11 @@ Angular image gallery plugin
40
40
  - commit changes
41
41
  - when finished: merge into develop with `git checkout develop && git merge feature/f-1`
42
42
 
43
- ### Publish library
43
+ ### Publish library to NPM
44
44
 
45
+ Publishing the library is only needed, if the `develop` branch has some changes that are not already in the `production` branch. The latest `production` commit reflects the latest published version on NPM.
46
+
47
+ Perform following steps to publish a new version to NPM:
45
48
  - make sure that `develop` branch is checked out (`git checkout develop`)
46
49
  - make sure that the tests succeed (`ng test @casus-campus/ngx-gallery`)
47
50
  - increase version in `./projects/ngx-gallery/package.json` (following [SemVer](https://semver.org/))
@@ -1,5 +1,5 @@
1
1
  /**
2
2
  * Generated bundle index. Do not edit.
3
3
  */
4
+ /// <amd-module name="@casus-campus/ngx-gallery" />
4
5
  export * from './public-api';
5
- export { CustomHammerConfig as ɵa } from './lib/utils/custom-hammer-config.service';
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzdXMtY2FtcHVzLW5neC1nYWxsZXJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvbmd4LWdhbGxlcnkvc3JjL2Nhc3VzLWNhbXB1cy1uZ3gtZ2FsbGVyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
@@ -0,0 +1,141 @@
1
+ import { NgxGalleryImageSize } from './models/ngx-gallery-image-size.model';
2
+ export class CcCustomOptions {
3
+ constructor(initialOptions, initialNumberOfMedia) {
4
+ this.dimensions = {
5
+ box: { width: 0, height: 0 },
6
+ image: { width: 0, height: 0 },
7
+ thumbnail: { width: 0, height: 0 },
8
+ };
9
+ this.boxPadding = 10;
10
+ this.boxBorder = 3;
11
+ this.galleryLayout = {
12
+ border: this.boxBorder + 'px grey solid',
13
+ padding: this.boxPadding + 'px',
14
+ // TODO: move into css as it is not dynamic
15
+ 'background-color': '#D8D8D8',
16
+ };
17
+ this.defaultOptionsLargeScreen = {
18
+ width: '400px',
19
+ imageSize: NgxGalleryImageSize.Contain,
20
+ imagePercent: 88.6,
21
+ imageDescription: true,
22
+ imageInfinityMove: false,
23
+ imageArrows: false,
24
+ ccpImageAsLink: true,
25
+ image: true,
26
+ lazyLoading: true,
27
+ thumbnailsAsLinks: true,
28
+ ccpPreviewImageAsLink: true,
29
+ previewDescription: true,
30
+ previewZoom: true,
31
+ previewAutoPlay: false,
32
+ imageAutoPlay: false,
33
+ thumbnailsColumns: 3,
34
+ thumbnailsMoveSize: 3,
35
+ thumbnailSize: NgxGalleryImageSize.Contain
36
+ };
37
+ this.defaultOptionsSmallScreen = {
38
+ breakpoint: 1100,
39
+ thumbnailsColumns: 2,
40
+ thumbnailsMoveSize: 2,
41
+ image: false, // small screens - do not show image
42
+ };
43
+ this.numberOfMedia = initialNumberOfMedia;
44
+ this.originalOptions = initialOptions;
45
+ this.options = this.prepareOptions();
46
+ }
47
+ setOriginalOptions(originalOptions) {
48
+ this.originalOptions = originalOptions;
49
+ this.options = this.prepareOptions();
50
+ }
51
+ setNumberOfMedia(numberOfMedia) {
52
+ this.numberOfMedia = numberOfMedia;
53
+ this.options = this.prepareOptions();
54
+ }
55
+ getOptions() {
56
+ return this.options;
57
+ }
58
+ prepareOptions() {
59
+ const optionsForLargeScreens = this.getOptionsForNonSmallScreens(this.originalOptions.find(option => !option.breakpoint) || {});
60
+ const optionsForSmallScreens = this.getOptionsForSmallScreens(this.originalOptions.find(option => !!option.breakpoint) || {});
61
+ return [
62
+ optionsForLargeScreens,
63
+ optionsForSmallScreens,
64
+ ];
65
+ }
66
+ getOptionsForNonSmallScreens(options) {
67
+ const optionsForLargeScreens = { ...this.defaultOptionsLargeScreen, ...options };
68
+ // calc dimensions
69
+ const boxWidth = parseFloat(optionsForLargeScreens.width);
70
+ this.calcDimensions(boxWidth, optionsForLargeScreens.thumbnailsColumns);
71
+ const customOptions = {
72
+ width: this.dimensions.box.width + 'px',
73
+ height: this.dimensions.box.height + 'px',
74
+ ccpBoxLayout: this.galleryLayout,
75
+ ccpImageWidth: this.dimensions.image.width,
76
+ ccpImageHeight: this.dimensions.image.height,
77
+ thumbnails: this.numberOfMedia > 1,
78
+ thumbnailsPercent: this.getThumbnailsPercent(optionsForLargeScreens.thumbnailsColumns),
79
+ thumbnailMargin: this.getThumbnailMargin(),
80
+ };
81
+ return { ...customOptions, ...optionsForLargeScreens };
82
+ }
83
+ getOptionsForSmallScreens(options) {
84
+ const optionsForSmallScreens = { ...this.defaultOptionsSmallScreen, ...options };
85
+ const boxForSmallScreen = this.calcBoxForSmallScreens(optionsForSmallScreens.thumbnailsColumns);
86
+ const customOptions = {
87
+ width: boxForSmallScreen.width + 'px',
88
+ height: boxForSmallScreen.height + 'px',
89
+ image: this.numberOfMedia <= 1,
90
+ };
91
+ return { ...optionsForSmallScreens, ...customOptions };
92
+ }
93
+ calcDimensions(boxWidth, thumbnailColumns) {
94
+ const boxAdjustment = 2 * this.boxPadding + 2 * this.boxBorder;
95
+ const showThumbnails = this.numberOfMedia > 1;
96
+ const box = {
97
+ width: boxWidth,
98
+ height: boxWidth,
99
+ };
100
+ const image = {
101
+ width: box.width - boxAdjustment,
102
+ height: box.height - boxAdjustment,
103
+ };
104
+ const thumbnail = {
105
+ width: 0,
106
+ height: 0,
107
+ };
108
+ if (showThumbnails) {
109
+ thumbnail.width = Math.round((image.width - (thumbnailColumns - 1) * this.boxPadding) / thumbnailColumns);
110
+ thumbnail.height = thumbnail.width;
111
+ box.height = image.height + thumbnail.height + boxAdjustment + this.boxPadding;
112
+ }
113
+ this.dimensions = {
114
+ box,
115
+ image,
116
+ thumbnail,
117
+ };
118
+ }
119
+ calcBoxForSmallScreens(thumbnailColumnsSmallScreen) {
120
+ const showThumbnails = this.numberOfMedia > 1;
121
+ if (showThumbnails) {
122
+ return {
123
+ height: this.dimensions.thumbnail.height + 2 * this.boxPadding + this.boxBorder,
124
+ width: this.dimensions.thumbnail.width * thumbnailColumnsSmallScreen
125
+ + (1 + thumbnailColumnsSmallScreen) * this.boxPadding
126
+ + 2 * this.boxBorder,
127
+ };
128
+ }
129
+ return {
130
+ width: this.dimensions.image.width,
131
+ height: this.dimensions.image.height,
132
+ };
133
+ }
134
+ getThumbnailsPercent(thumbnailsColumns) {
135
+ return Math.round((100 - this.boxPadding) / thumbnailsColumns);
136
+ }
137
+ getThumbnailMargin() {
138
+ return this.boxPadding;
139
+ }
140
+ }
141
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2MtY3VzdG9tLW9wdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZ2FsbGVyeS9zcmMvbGliL2NjLWN1c3RvbS1vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBSTVFLE1BQU0sT0FBTyxlQUFlO0lBaUQxQixZQUFZLGNBQW1DLEVBQUUsb0JBQTRCO1FBL0M3RSxlQUFVLEdBQXlCO1lBQ2pDLEdBQUcsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRTtZQUM1QixLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUU7WUFDOUIsU0FBUyxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFO1NBQ25DLENBQUM7UUFNTSxlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLGNBQVMsR0FBRyxDQUFDLENBQUM7UUFDZCxrQkFBYSxHQUFHO1lBQ3RCLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxHQUFHLGVBQWU7WUFDeEMsT0FBTyxFQUFFLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSTtZQUMvQiwyQ0FBMkM7WUFDM0Msa0JBQWtCLEVBQUUsU0FBUztTQUM5QixDQUFDO1FBRU0sOEJBQXlCLEdBQXNCO1lBQ3JELEtBQUssRUFBRSxPQUFPO1lBQ2QsU0FBUyxFQUFFLG1CQUFtQixDQUFDLE9BQU87WUFDdEMsWUFBWSxFQUFFLElBQUk7WUFDbEIsZ0JBQWdCLEVBQUUsSUFBSTtZQUN0QixpQkFBaUIsRUFBRSxLQUFLO1lBQ3hCLFdBQVcsRUFBRSxLQUFLO1lBQ2xCLGNBQWMsRUFBRSxJQUFJO1lBQ3BCLEtBQUssRUFBRSxJQUFJO1lBQ1gsV0FBVyxFQUFFLElBQUk7WUFDakIsaUJBQWlCLEVBQUUs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LENBQUMsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLGlCQUFpQixDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVPLGtCQUFrQjtRQUN4QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmd4R2FsbGVyeUltYWdlU2l6ZSB9IGZyb20gJy4vbW9kZWxzL25neC1nYWxsZXJ5LWltYWdlLXNpemUubW9kZWwnO1xuaW1wb3J0IHsgTmd4R2FsbGVyeU9wdGlvbnMgfSBmcm9tICcuL21vZGVscy9uZ3gtZ2FsbGVyeS1vcHRpb25zLm1vZGVsJztcbmltcG9ydCB7IE5neEdhbGxlcnlEaW1lbnNpb25zIH0gZnJvbSAnLi91dGlscy9uZ3gtZ2FsbGVyeS1kaW1lbnNpb25zLmludGVyZmFjZSc7XG5cbmV4cG9ydCBjbGFzcyBDY0N1c3RvbU9wdGlvbnMge1xuXG4gIGRpbWVuc2lvbnM6IE5neEdhbGxlcnlEaW1lbnNpb25zID0ge1xuICAgIGJveDogeyB3aWR0aDogMCwgaGVpZ2h0OiAwIH0sXG4gICAgaW1hZ2U6IHsgd2lkdGg6IDAsIGhlaWdodDogMCB9LFxuICAgIHRodW1ibmFpbDogeyB3aWR0aDogMCwgaGVpZ2h0OiAwIH0sXG4gIH07XG5cbiAgcHJpdmF0ZSBvcmlnaW5hbE9wdGlvbnM6IE5neEdhbGxlcnlPcHRpb25zW107XG4gIHByaXZhdGUgb3B0aW9uczogTmd4R2FsbGVyeU9wdGlvbnNbXTtcbiAgcHJpdmF0ZSBudW1iZXJPZk1lZGlhOiBudW1iZXI7XG5cbiAgcHJpdmF0ZSBib3hQYWRkaW5nID0gMTA7XG4gIHByaXZhdGUgYm94Qm9yZGVyID0gMztcbiAgcHJpdmF0ZSBnYWxsZXJ5TGF5b3V0ID0ge1xuICAgIGJvcmRlcjogdGhpcy5ib3hCb3JkZXIgKyAncHggZ3JleSBzb2xpZCcsXG4gICAgcGFkZGluZzogdGhpcy5ib3hQYWRkaW5nICsgJ3B4JyxcbiAgICAvLyBUT0RPOiBtb3ZlIGludG8gY3NzIGFzIGl0IGlzIG5vdCBkeW5hbWljXG4gICAgJ2JhY2tncm91bmQtY29sb3InOiAnI0Q4RDhEOCcsXG4gIH07XG5cbiAgcHJpdmF0ZSBkZWZhdWx0T3B0aW9uc0xhcmdlU2NyZWVuOiBOZ3hHYWxsZXJ5T3B0aW9ucyA9IHtcbiAgICB3aWR0aDogJzQwMHB4JywgIC8vIG9yaWdpbmFsbHkgNDAwXG4gICAgaW1hZ2VTaXplOiBOZ3hHYWxsZXJ5SW1hZ2VTaXplLkNvbnRhaW4sXG4gICAgaW1hZ2VQZXJjZW50OiA4OC42LCAvLyBiZWZvcmU6IDgwXG4gICAgaW1hZ2VEZXNjcmlwdGlvbjogdHJ1ZSxcbiAgICBpbWFnZUluZmluaXR5TW92ZTogZmFsc2UsXG4gICAgaW1hZ2VBcnJvd3M6IGZhbHNlLFxuICAgIGNjcEltYWdlQXNMaW5rOiB0cnVlLFxuICAgIGltYWdlOiB0cnVlLFxuICAgIGxhenlMb2FkaW5nOiB0cnVlLFxuICAgIHRodW1ibmFpbHNBc0xpbmtzOiB0cnVlLFxuICAgIGNjcFByZXZpZXdJbWFnZUFzTGluazogdHJ1ZSxcbiAgICBwcmV2aWV3RGVzY3JpcHRpb246IHRydWUsXG4gICAgcHJldmlld1pvb206IHRydWUsXG4gICAgcHJldmlld0F1dG9QbGF5OiBmYWxzZSwgLy8gc2V0dGluZyB0byB0cnVlIG5lZWRzIGNvZGluZyBpbiBwcmV2aWV3IGNvbXBvbmVudCFcbiAgICBpbWFnZUF1dG9QbGF5OiBmYWxzZSwgLy8gcGFyYW1ldGVyIHNldCBieSBhdXRob3IgZHluYW1pY2FsbHkgVE9ET1xuICAgIHRodW1ibmFpbHNDb2x1bW5zOiAzLFxuICAgIHRodW1ibmFpbHNNb3ZlU2l6ZTogMyxcbiAgICB0aHVtYm5haWxTaXplOiBOZ3hHYWxsZXJ5SW1hZ2VTaXplLkNvbnRhaW5cbiAgfTtcblxuICBwcml2YXRlIGRlZmF1bHRPcHRpb25zU21hbGxTY3JlZW46IE5neEdhbGxlcnlPcHRpb25zID0ge1xuICAgIGJyZWFrcG9pbnQ6IDExMDAsXG4gICAgdGh1bWJuYWlsc0NvbHVtbnM6IDIsXG4gICAgdGh1bWJuYWlsc01vdmVTaXplOiAyLFxuICAgIGltYWdlOiBmYWxzZSwgLy8gc21hbGwgc2NyZWVucyAtIGRvIG5vdCBzaG93IGltYWdlXG4gIH07XG5cbiAgY29uc3RydWN0b3IoaW5pdGlhbE9wdGlvbnM6IE5neEdhbGxlcnlPcHRpb25zW10sIGluaXRpYWxOdW1iZXJPZk1lZGlhOiBudW1iZXIpIHtcbiAgICB0aGlzLm51bWJlck9mTWVkaWEgPSBpbml0aWFsTnVtYmVyT2ZNZWRpYTtcbiAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucyA9IGluaXRpYWxPcHRpb25zO1xuICAgIHRoaXMub3B0aW9ucyA9IHRoaXMucHJlcGFyZU9wdGlvbnMoKTtcbiAgfVxuXG4gIHNldE9yaWdpbmFsT3B0aW9ucyhvcmlnaW5hbE9wdGlvbnM6IE5neEdhbGxlcnlPcHRpb25zW10pIHtcbiAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucyA9IG9yaWdpbmFsT3B0aW9ucztcbiAgICB0aGlzLm9wdGlvbnMgPSB0aGlzLnByZXBhcmVPcHRpb25zKCk7XG4gIH1cblxuICBzZXROdW1iZXJPZk1lZGlhKG51bWJlck9mTWVkaWE6IG51bWJlcikge1xuICAgIHRoaXMubnVtYmVyT2ZNZWRpYSA9IG51bWJlck9mTWVkaWE7XG4gICAgdGhpcy5vcHRpb25zID0gdGhpcy5wcmVwYXJlT3B0aW9ucygpO1xuICB9XG5cbiAgZ2V0T3B0aW9ucygpOiBOZ3hHYWxsZXJ5T3B0aW9uc1tdIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zO1xuICB9XG5cbiAgcHJpdmF0ZSBwcmVwYXJlT3B0aW9ucygpOiBOZ3hHYWxsZXJ5T3B0aW9uc1tdIHtcbiAgICBjb25zdCBvcHRpb25zRm9yTGFyZ2VTY3JlZW5zID0gdGhpcy5nZXRPcHRpb25zRm9yTm9uU21hbGxTY3JlZW5zKHRoaXMub3JpZ2luYWxPcHRpb25zLmZpbmQob3B0aW9uID0+ICFvcHRpb24uYnJlYWtwb2ludCkgfHwge30pO1xuICAgIGNvbnN0IG9wdGlvbnNGb3JTbWFsbFNjcmVlbnMgPSB0aGlzLmdldE9wdGlvbnNGb3JTbWFsbFNjcmVlbnModGhpcy5vcmlnaW5hbE9wdGlvbnMuZmluZChvcHRpb24gPT4gISFvcHRpb24uYnJlYWtwb2ludCkgfHwge30pO1xuXG4gICAgcmV0dXJuIFtcbiAgICAgIG9wdGlvbnNGb3JMYXJnZVNjcmVlbnMsXG4gICAgICBvcHRpb25zRm9yU21hbGxTY3JlZW5zLFxuICAgIF07XG4gIH1cblxuICBwcml2YXRlIGdldE9wdGlvbnNGb3JOb25TbWFsbFNjcmVlbnMob3B0aW9uczogTmd4R2FsbGVyeU9wdGlvbnMpOiBOZ3hHYWxsZXJ5T3B0aW9ucyB7XG4gICAgY29uc3Qgb3B0aW9uc0ZvckxhcmdlU2NyZWVuczogTmd4R2FsbGVyeU9wdGlvbnMgPSB7IC4uLnRoaXMuZGVmYXVsdE9wdGlvbnNMYXJnZVNjcmVlbiwgLi4ub3B0aW9ucyB9O1xuXG4gICAgLy8gY2FsYyBkaW1lbnNpb25zXG4gICAgY29uc3QgYm94V2lkdGggPSBwYXJzZUZsb2F0KG9wdGlvbnNGb3JMYXJnZVNjcmVlbnMud2lkdGgpO1xuICAgIHRoaXMuY2FsY0RpbWVuc2lvbnMoYm94V2lkdGgsIG9wdGlvbnNGb3JMYXJnZVNjcmVlbnMudGh1bWJuYWlsc0NvbHVtbnMpO1xuXG4gICAgY29uc3QgY3VzdG9tT3B0aW9ucyA9IHtcbiAgICAgIHdpZHRoOiB0aGlzLmRpbWVuc2lvbnMuYm94LndpZHRoICsgJ3B4JyxcbiAgICAgIGhlaWdodDogdGhpcy5kaW1lbnNpb25zLmJveC5oZWlnaHQgKyAncHgnLFxuICAgICAgY2NwQm94TGF5b3V0OiB0aGlzLmdhbGxlcnlMYXlvdXQsXG4gICAgICBjY3BJbWFnZVdpZHRoOiB0aGlzLmRpbWVuc2lvbnMuaW1hZ2Uud2lkdGgsXG4gICAgICBjY3BJbWFnZUhlaWdodDogdGhpcy5kaW1lbnNpb25zLmltYWdlLmhlaWdodCxcbiAgICAgIHRodW1ibmFpbHM6IHRoaXMubnVtYmVyT2ZNZWRpYSA+IDEsXG4gICAgICB0aHVtYm5haWxzUGVyY2VudDogdGhpcy5nZXRUaHVtYm5haWxzUGVyY2VudChvcHRpb25zRm9yTGFyZ2VTY3JlZW5zLnRodW1ibmFpbHNDb2x1bW5zKSxcbiAgICAgIHRodW1ibmFpbE1hcmdpbjogdGhpcy5nZXRUaHVtYm5haWxNYXJnaW4oKSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHsgLi4uY3VzdG9tT3B0aW9ucywgLi4ub3B0aW9uc0ZvckxhcmdlU2NyZWVucyB9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRPcHRpb25zRm9yU21hbGxTY3JlZW5zKG9wdGlvbnM6IE5neEdhbGxlcnlPcHRpb25zKTogTmd4R2FsbGVyeU9wdGlvbnMge1xuICAgIGNvbnN0IG9wdGlvbnNGb3JTbWFsbFNjcmVlbnM6IE5neEdhbGxlcnlPcHRpb25zID0geyAuLi50aGlzLmRlZmF1bHRPcHRpb25zU21hbGxTY3JlZW4sIC4uLm9wdGlvbnMgfTtcblxuICAgIGNvbnN0IGJveEZvclNtYWxsU2NyZWVuID0gdGhpcy5jYWxjQm94Rm9yU21hbGxTY3JlZW5zKG9wdGlvbnNGb3JTbWFsbFNjcmVlbnMudGh1bWJuYWlsc0NvbHVtbnMpO1xuICAgIGNvbnN0IGN1c3RvbU9wdGlvbnMgPSB7XG4gICAgICB3aWR0aDogYm94Rm9yU21hbGxTY3JlZW4ud2lkdGggKyAncHgnLFxuICAgICAgaGVpZ2h0OiBib3hGb3JTbWFsbFNjcmVlbi5oZWlnaHQgKyAncHgnLFxuICAgICAgaW1hZ2U6IHRoaXMubnVtYmVyT2ZNZWRpYSA8PSAxLFxuICAgIH07XG5cbiAgICByZXR1cm4geyAuLi5vcHRpb25zRm9yU21hbGxTY3JlZW5zLCAuLi5jdXN0b21PcHRpb25zIH07XG4gIH1cblxuICBwcml2YXRlIGNhbGNEaW1lbnNpb25zKGJveFdpZHRoOiBudW1iZXIsIHRodW1ibmFpbENvbHVtbnM6IG51bWJlcikge1xuICAgIGNvbnN0IGJveEFkanVzdG1lbnQgPSAyICogdGhpcy5ib3hQYWRkaW5nICsgMiAqIHRoaXMuYm94Qm9yZGVyO1xuICAgIGNvbnN0IHNob3dUaHVtYm5haWxzID0gdGhpcy5udW1iZXJPZk1lZGlhID4gMTtcblxuICAgIGNvbnN0IGJveCA9IHtcbiAgICAgIHdpZHRoOiBib3hXaWR0aCxcbiAgICAgIGhlaWdodDogYm94V2lkdGgsXG4gICAgfTtcblxuICAgIGNvbnN0IGltYWdlID0ge1xuICAgICAgd2lkdGg6IGJveC53aWR0aCAtIGJveEFkanVzdG1lbnQsXG4gICAgICBoZWlnaHQ6IGJveC5oZWlnaHQgLSBib3hBZGp1c3RtZW50LFxuICAgIH07XG5cbiAgICBjb25zdCB0aHVtYm5haWwgPSB7XG4gICAgICB3aWR0aDogMCxcbiAgICAgIGhlaWdodDogMCxcbiAgICB9O1xuXG4gICAgaWYgKHNob3dUaHVtYm5haWxzKSB7XG4gICAgICB0aHVtYm5haWwud2lkdGggPSBNYXRoLnJvdW5kKChpbWFnZS53aWR0aCAtICh0aHVtYm5haWxDb2x1bW5zIC0gMSkgKiB0aGlzLmJveFBhZGRpbmcpIC8gdGh1bWJuYWlsQ29sdW1ucyk7XG4gICAgICB0aHVtYm5haWwuaGVpZ2h0ID0gdGh1bWJuYWlsLndpZHRoO1xuXG4gICAgICBib3guaGVpZ2h0ID0gaW1hZ2UuaGVpZ2h0ICsgdGh1bWJuYWlsLmhlaWdodCArIGJveEFkanVzdG1lbnQgKyB0aGlzLmJveFBhZGRpbmc7XG4gICAgfVxuXG4gICAgdGhpcy5kaW1lbnNpb25zID0ge1xuICAgICAgYm94LFxuICAgICAgaW1hZ2UsXG4gICAgICB0aHVtYm5haWwsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgY2FsY0JveEZvclNtYWxsU2NyZWVucyh0aHVtYm5haWxDb2x1bW5zU21hbGxTY3JlZW46IG51bWJlcikge1xuICAgIGNvbnN0IHNob3dUaHVtYm5haWxzID0gdGhpcy5udW1iZXJPZk1lZGlhID4gMTtcblxuICAgIGlmIChzaG93VGh1bWJuYWlscykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaGVpZ2h0OiB0aGlzLmRpbWVuc2lvbnMudGh1bWJuYWlsLmhlaWdodCArIDIgKiB0aGlzLmJveFBhZGRpbmcgKyB0aGlzLmJveEJvcmRlciwgLy8gbm90IDIgKiB0aGlzLkJveEJvcmRlcj9cbiAgICAgICAgd2lkdGg6IHRoaXMuZGltZW5zaW9ucy50aHVtYm5haWwud2lkdGggKiB0aHVtYm5haWxDb2x1bW5zU21hbGxTY3JlZW5cbiAgICAgICAgICArICgxICsgdGh1bWJuYWlsQ29sdW1uc1NtYWxsU2NyZWVuKSAqIHRoaXMuYm94UGFkZGluZ1xuICAgICAgICAgICsgMiAqIHRoaXMuYm94Qm9yZGVyLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgd2lkdGg6IHRoaXMuZGltZW5zaW9ucy5pbWFnZS53aWR0aCxcbiAgICAgIGhlaWdodDogdGhpcy5kaW1lbnNpb25zLmltYWdlLmhlaWdodCxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUaHVtYm5haWxzUGVyY2VudCh0aHVtYm5haWxzQ29sdW1uczogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTWF0aC5yb3VuZCgoMTAwIC0gdGhpcy5ib3hQYWRkaW5nKSAvIHRodW1ibmFpbHNDb2x1bW5zKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VGh1bWJuYWlsTWFyZ2luKCkge1xuICAgIHJldHVybiB0aGlzLmJveFBhZGRpbmc7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,142 @@
1
+ import { ChangeDetectorRef, Component, ElementRef, Input, ViewChild, } from '@angular/core';
2
+ import { MediumAddOnType, MediumUrlType, } from '@casus-campus/cc-support';
3
+ import { Arrow } from '../svg/arrow.model';
4
+ import { Icon } from '../svg/icon.model';
5
+ import { Point } from '../svg/point.model';
6
+ import { Polygon } from '../svg/polygon.model';
7
+ import { CcMediaService } from '../utils/cc-media.service';
8
+ import { LogService } from '../utils/logging.service';
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "../utils/logging.service";
11
+ import * as i2 from "../utils/cc-media.service";
12
+ import * as i3 from "../svg/ngx-gallery-svg-arrow.component";
13
+ import * as i4 from "../svg/ngx-gallery-svg-polygon.component";
14
+ import * as i5 from "../svg/ngx-gallery-svg-icon.component";
15
+ import * as i6 from "../svg/ngx-gallery-svg-text.component";
16
+ import * as i7 from "@angular/common";
17
+ export class NgxGalleryImageSvgComponent {
18
+ constructor(logService, ccMediaService, cdRef) {
19
+ this.logService = logService;
20
+ this.ccMediaService = ccMediaService;
21
+ this.cdRef = cdRef;
22
+ this.svgArrows = [];
23
+ this.svgPolygons = [];
24
+ this.svgIcons = [];
25
+ this.svgTexts = [];
26
+ this.scaleFactor = 1;
27
+ }
28
+ ngOnInit() {
29
+ this.logService.log('NgxGallerySvgComponent.ngOnInit', 'ngOnInit');
30
+ this.handleAddOns();
31
+ }
32
+ ngAfterViewInit() {
33
+ this.scaleFactor = this.calcScaleFactor();
34
+ this.cdRef.detectChanges();
35
+ }
36
+ ngOnChanges(changes) {
37
+ this.logService.log('NgxGallerySvgComponent.onChange', 'ngOnChanges');
38
+ if (changes.zoomValue && !changes.zoomValue.isFirstChange()) {
39
+ this.scaleFactor = this.calcScaleFactor();
40
+ }
41
+ }
42
+ handleAddOns() {
43
+ this.svgArrows = this.addOns
44
+ .filter(addOn => addOn.type === MediumAddOnType.Arrow)
45
+ .map(addOn => this.mapToArrow(addOn))
46
+ .filter(element => !!element);
47
+ this.svgIcons = this.addOns
48
+ .filter(addOn => addOn.type === MediumAddOnType.IconHyperlink)
49
+ .map(addOn => this.mapToIcon(addOn))
50
+ .filter(element => !!element);
51
+ this.svgPolygons = this.addOns
52
+ .filter(addOn => addOn.type === MediumAddOnType.HotSpot)
53
+ .map(addOn => this.mapToPolygon(addOn))
54
+ .filter(element => !!element);
55
+ this.svgTexts = this.addOns
56
+ .filter(addOn => addOn.type === MediumAddOnType.Text)
57
+ .map(addOn => this.mapToText(addOn))
58
+ .filter(element => !!element);
59
+ }
60
+ mapToArrow(arrow) {
61
+ return new Arrow(new Point(arrow.src.left, arrow.src.top, ''), new Point(arrow.dst.left, arrow.dst.top, ''), arrow.color);
62
+ }
63
+ mockExternalHyperlinkMedium(iconHyperlink) {
64
+ const url = iconHyperlink.externalUrl;
65
+ if (!url) {
66
+ return;
67
+ }
68
+ const schemeMatch = /^[a-zA-Z]+/.exec(url);
69
+ const mimeType = 'url/' + (schemeMatch && schemeMatch[0] || 'relative');
70
+ return {
71
+ name: url,
72
+ description: url,
73
+ height: 0,
74
+ width: 0,
75
+ mimeType,
76
+ urls: [{
77
+ url,
78
+ type: MediumUrlType.External,
79
+ mimeType,
80
+ }]
81
+ };
82
+ }
83
+ mapToIcon(iconHyperlink) {
84
+ const target = iconHyperlink.medium || this.mockExternalHyperlinkMedium(iconHyperlink);
85
+ if (!target) {
86
+ console.error('Found iconHyperlink without target or external url', iconHyperlink);
87
+ return;
88
+ }
89
+ const placeholderPath = this.ccMediaService.getMimeTypePlaceholderPath(target.mimeType);
90
+ return new Icon(placeholderPath, target, target.description, new Point(iconHyperlink.rect.left, iconHyperlink.rect.top, ''), iconHyperlink.rect.width, iconHyperlink.rect.height, iconHyperlink.color);
91
+ }
92
+ mapToPolygon(hotSpot) {
93
+ const points = hotSpot.polygon
94
+ .map(point => new Point(point.left, point.top, ''));
95
+ return new Polygon((hotSpot.medium && hotSpot.medium.data) || '', points, hotSpot.medium, hotSpot.color);
96
+ }
97
+ mapToText(text) {
98
+ return new Point(text.position.left, text.position.top, text.text, text.color);
99
+ }
100
+ // Returns multiplicator for elements that should keep the same dimensions
101
+ calcScaleFactor() {
102
+ const originalWidth = parseFloat(this.viewBox.split(' ')[2]);
103
+ const currentWidth = this.svgElement.nativeElement.clientWidth * parseFloat(this.zoomValue);
104
+ const widthScaleFactor = originalWidth / currentWidth;
105
+ const originalHeight = parseFloat(this.viewBox.split(' ')[3]);
106
+ const currentHeigth = this.svgElement.nativeElement.clientHeight * parseFloat(this.zoomValue);
107
+ const heightScaleFactor = originalHeight / currentHeigth;
108
+ return Math.max(widthScaleFactor, heightScaleFactor);
109
+ }
110
+ }
111
+ NgxGalleryImageSvgComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: NgxGalleryImageSvgComponent, deps: [{ token: i1.LogService }, { token: i2.CcMediaService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
112
+ NgxGalleryImageSvgComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: NgxGalleryImageSvgComponent, selector: "cc-imagesvg", inputs: { width: "width", height: "height", viewBox: "viewBox", posLeft: "posLeft", posTop: "posTop", zoomValue: "zoomValue", animation: "animation", addOns: "addOns", classGrab: "classGrab", styleTransform: "styleTransform", preview: "preview" }, viewQueries: [{ propertyName: "svgElement", first: true, predicate: ["svgElement"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" preserveAspectRatio=\"xMidYMid meet\"\n [attr.width]=\"width\" [attr.height]=\"height\" [attr.viewBox]=\"viewBox\" class=\"ngx-gallery-center\"\n [class.animation]=\"animation\" [class.ngx-gallery-preview-svg]=\"preview\" [class.ngx-gallery-image-svg]=\"!preview\"\n [class.ngx-gallery-grab]=\"classGrab\" [style.transform]=\"styleTransform\" [style.left]=\"posLeft\" [style.top]=\"posTop\"\n (click)=\"$event.stopPropagation()\" #svgElement>\n <svg:g *ngIf=\"!!svgArrows.length\" svg-arrow [svgArrows]=\"svgArrows\"></svg:g>\n <svg:g *ngIf=\"!!svgPolygons.length\" svg-polygon [svgPolygons]=\"svgPolygons\"></svg:g>\n <svg:g *ngIf=\"!!svgIcons.length\" svg-icon [svgIcons]=\"svgIcons\" [scaleFactor]=\"scaleFactor\"></svg:g>\n <svg:g *ngIf=\"!!svgTexts.length\" svg-text [svgTexts]=\"svgTexts\"></svg:g>\n</svg>\n", styles: [".ngx-gallery-center{position:absolute;left:0;right:0;bottom:0;margin:auto;top:0}.ngx-gallery-image-svg{margin:0}.ngx-gallery-preview-svg{opacity:1;max-width:90%;max-height:90%;-webkit-user-select:none;user-select:none;transition:transform .5s}.ngx-gallery-preview-svg.animation{transition:opacity .5s linear,transform .5s}.ngx-gallery-preview-svg.ngx-gallery-active{opacity:1}.ngx-gallery-preview-svg.ngx-gallery-grab{cursor:grab;cursor:-webkit-grab}\n"], components: [{ type: i3.NgxGallerySvgArrowComponent, selector: "[svg-arrow]", inputs: ["svgArrows"] }, { type: i4.NgxGallerySvgPolygonComponent, selector: "[svg-polygon]", inputs: ["svgPolygons"] }, { type: i5.NgxGallerySvgIconComponent, selector: "[svg-icon]", inputs: ["svgIcons", "scaleFactor"] }, { type: i6.NgxGallerySvgTextComponent, selector: "[svg-text]", inputs: ["svgTexts"] }], directives: [{ type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
113
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: NgxGalleryImageSvgComponent, decorators: [{
114
+ type: Component,
115
+ args: [{ selector: 'cc-imagesvg', template: "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" preserveAspectRatio=\"xMidYMid meet\"\n [attr.width]=\"width\" [attr.height]=\"height\" [attr.viewBox]=\"viewBox\" class=\"ngx-gallery-center\"\n [class.animation]=\"animation\" [class.ngx-gallery-preview-svg]=\"preview\" [class.ngx-gallery-image-svg]=\"!preview\"\n [class.ngx-gallery-grab]=\"classGrab\" [style.transform]=\"styleTransform\" [style.left]=\"posLeft\" [style.top]=\"posTop\"\n (click)=\"$event.stopPropagation()\" #svgElement>\n <svg:g *ngIf=\"!!svgArrows.length\" svg-arrow [svgArrows]=\"svgArrows\"></svg:g>\n <svg:g *ngIf=\"!!svgPolygons.length\" svg-polygon [svgPolygons]=\"svgPolygons\"></svg:g>\n <svg:g *ngIf=\"!!svgIcons.length\" svg-icon [svgIcons]=\"svgIcons\" [scaleFactor]=\"scaleFactor\"></svg:g>\n <svg:g *ngIf=\"!!svgTexts.length\" svg-text [svgTexts]=\"svgTexts\"></svg:g>\n</svg>\n", styles: [".ngx-gallery-center{position:absolute;left:0;right:0;bottom:0;margin:auto;top:0}.ngx-gallery-image-svg{margin:0}.ngx-gallery-preview-svg{opacity:1;max-width:90%;max-height:90%;-webkit-user-select:none;user-select:none;transition:transform .5s}.ngx-gallery-preview-svg.animation{transition:opacity .5s linear,transform .5s}.ngx-gallery-preview-svg.ngx-gallery-active{opacity:1}.ngx-gallery-preview-svg.ngx-gallery-grab{cursor:grab;cursor:-webkit-grab}\n"] }]
116
+ }], ctorParameters: function () { return [{ type: i1.LogService }, { type: i2.CcMediaService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { width: [{
117
+ type: Input
118
+ }], height: [{
119
+ type: Input
120
+ }], viewBox: [{
121
+ type: Input
122
+ }], posLeft: [{
123
+ type: Input
124
+ }], posTop: [{
125
+ type: Input
126
+ }], zoomValue: [{
127
+ type: Input
128
+ }], animation: [{
129
+ type: Input
130
+ }], addOns: [{
131
+ type: Input
132
+ }], classGrab: [{
133
+ type: Input
134
+ }], styleTransform: [{
135
+ type: Input
136
+ }], preview: [{
137
+ type: Input
138
+ }], svgElement: [{
139
+ type: ViewChild,
140
+ args: ['svgElement', { static: true }]
141
+ }] } });
142
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWdhbGxlcnktaW1hZ2Utc3ZnLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1nYWxsZXJ5L3NyYy9saWIvaW1hZ2Uvbmd4LWdhbGxlcnktaW1hZ2Utc3ZnLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1nYWxsZXJ5L3NyYy9saWIvaW1hZ2Uvbmd4LWdhbGxlcnktaW1hZ2Utc3ZnLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBSUwsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFPTCxlQUFlLEVBQ2YsYUFBYSxHQUNkLE1BQU0sMEJBQTBCLENBQUM7QUFFbEMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7OztBQVN0RCxNQUFNLE9BQU8sMkJBQTJCO0lBdUJ0QyxZQUFvQixVQUFzQixFQUFVLGNBQThCLEVBQVUsS0FBd0I7UUFBaEcsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUFVLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUFVLFVBQUssR0FBTCxLQUFLLENBQW1CO1FBVHBILGNBQVMsR0FBWSxFQUFFLENBQUM7UUFDeEIsZ0JBQVcsR0FBYyxFQUFFLENBQUM7UUFDNUIsYUFBUSxHQUFXLEVB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QUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFlBQVksR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzlGLE1BQU0saUJBQWlCLEdBQUcsY0FBYyxHQUFHLGFBQWEsQ0FBQztRQUV6RCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztJQUN2RCxDQUFDOzt3SEE5SVUsMkJBQTJCOzRHQUEzQiwyQkFBMkIsd2JDcEN4QywrNEJBVUE7MkZEMEJhLDJCQUEyQjtrQkFQdkMsU0FBUzsrQkFFRSxhQUFhOzhKQU9kLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQVNxQyxVQUFVO3NCQUFwRCxTQUFTO3VCQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBJTWVkaXVtLFxuICBJTWVkaXVtQWRkT24sXG4gIElNZWRpdW1BZGRPbkFycm93LFxuICBJTWVkaXVtQWRkT25Ib3RTcG90LFxuICBJTWVkaXVtQWRkT25JY29uSHlwZXJsaW5rLFxuICBJTWVkaXVtQWRkT25UZXh0LFxuICBNZWRpdW1BZGRPblR5cGUsXG4gIE1lZGl1bVVybFR5cGUsXG59IGZyb20gJ0BjYXN1cy1jYW1wdXMvY2Mtc3VwcG9ydCc7XG5cbmltcG9ydCB7IEFycm93IH0gZnJvbSAnLi4vc3ZnL2Fycm93Lm1vZGVsJztcbmltcG9ydCB7IEljb24gfSBmcm9tICcuLi9zdmcvaWNvbi5tb2RlbCc7XG5pbXBvcnQgeyBQb2ludCB9IGZyb20gJy4uL3N2Zy9wb2ludC5tb2RlbCc7XG5pbXBvcnQgeyBQb2x5Z29uIH0gZnJvbSAnLi4vc3ZnL3BvbHlnb24ubW9kZWwnO1xuaW1wb3J0IHsgQ2NNZWRpYVNlcnZpY2UgfSBmcm9tICcuLi91dGlscy9jYy1tZWRpYS5zZXJ2aWNlJztcbmltcG9ydCB7IExvZ1NlcnZpY2UgfSBmcm9tICcuLi91dGlscy9sb2dnaW5nLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvciAqL1xuICBzZWxlY3RvcjogJ2NjLWltYWdlc3ZnJyxcbiAgdGVtcGxhdGVVcmw6ICcuL25neC1nYWxsZXJ5LWltYWdlLXN2Zy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL25neC1nYWxsZXJ5LWltYWdlLXN2Zy5jb21wb25lbnQuc2NzcyddLFxufSlcblxuZXhwb3J0IGNsYXNzIE5neEdhbGxlcnlJbWFnZVN2Z0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IHtcblxuICBASW5wdXQoKSB3aWR0aDogbnVtYmVyO1xuICBASW5wdXQoKSBoZWlnaHQ6IG51bWJlcjtcbiAgQElucHV0KCkgdmlld0JveDogc3RyaW5nO1xuICBASW5wdXQoKSBwb3NMZWZ0OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHBvc1RvcDogc3RyaW5nO1xuICBASW5wdXQoKSB6b29tVmFsdWU6IHN0cmluZztcbiAgQElucHV0KCkgYW5pbWF0aW9uOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGFkZE9uczogSU1lZGl1bUFkZE9uW107XG4gIEBJbnB1dCgpIGNsYXNzR3JhYjogYm9vbGVhbjtcbiAgQElucHV0KCkgc3R5bGVUcmFuc2Zvcm06IHN0cmluZztcbiAgQElucHV0KCkgcHJldmlldzogYm9vbGVhbjtcblxuICBzdmdBcnJvd3M6IEFycm93W10gPSBbXTtcbiAgc3ZnUG9seWdvbnM6IFBvbHlnb25bXSA9IFtdO1xuICBzdmdJY29uczogSWNvbltdID0gW107XG4gIHN2Z1RleHRzOiBQb2ludFtdID0gW107XG5cbiAgc2NhbGVGYWN0b3IgPSAxO1xuXG4gIEBWaWV3Q2hpbGQoJ3N2Z0VsZW1lbnQnLCB7IHN0YXRpYzogdHJ1ZSB9KSBzdmdFbGVtZW50OiBFbGVtZW50UmVmO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbG9nU2VydmljZTogTG9nU2VydmljZSwgcHJpdmF0ZSBjY01lZGlhU2VydmljZTogQ2NNZWRpYVNlcnZpY2UsIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7IH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmxvZ1NlcnZpY2UubG9nKCdOZ3hHYWxsZXJ5U3ZnQ29tcG9uZW50Lm5nT25Jbml0JywgJ25nT25Jbml0Jyk7XG4gICAgdGhpcy5oYW5kbGVBZGRPbnMoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLnNjYWxlRmFjdG9yID0gdGhpcy5jYWxjU2NhbGVGYWN0b3IoKTtcbiAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICB0aGlzLmxvZ1NlcnZpY2UubG9nKCdOZ3hHYWxsZXJ5U3ZnQ29tcG9uZW50Lm9uQ2hhbmdlJywgJ25nT25DaGFuZ2VzJyk7XG4gICAgaWYgKGNoYW5nZXMuem9vbVZhbHVlICYmICFjaGFuZ2VzLnpvb21WYWx1ZS5pc0ZpcnN0Q2hhbmdlKCkpIHtcbiAgICAgIHRoaXMuc2NhbGVGYWN0b3IgPSB0aGlzLmNhbGNTY2FsZUZhY3RvcigpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlQWRkT25zKCk6IHZvaWQge1xuICAgIHRoaXMuc3ZnQXJyb3dzID0gdGhpcy5hZGRPbnNcbiAgICAgIC5maWx0ZXIoYWRkT24gPT4gYWRkT24udHlwZSA9PT0gTWVkaXVtQWRkT25UeXBlLkFycm93KVxuICAgICAgLm1hcChhZGRPbiA9PiB0aGlzLm1hcFRvQXJyb3coYWRkT24gYXMgSU1lZGl1bUFkZE9uQXJyb3cpKVxuICAgICAgLmZpbHRlcihlbGVtZW50ID0+ICEhZWxlbWVudCk7XG4gICAgdGhpcy5zdmdJY29ucyA9IHRoaXMuYWRkT25zXG4gICAgICAuZmlsdGVyKGFkZE9uID0+IGFkZE9uLnR5cGUgPT09IE1lZGl1bUFkZE9uVHlwZS5JY29uSHlwZXJsaW5rKVxuICAgICAgLm1hcChhZGRPbiA9PiB0aGlzLm1hcFRvSWNvbihhZGRPbiBhcyBJTWVkaXVtQWRkT25JY29uSHlwZXJsaW5rKSlcbiAgICAgIC5maWx0ZXIoZWxlbWVudCA9PiAhIWVsZW1lbnQpO1xuICAgIHRoaXMuc3ZnUG9seWdvbnMgPSB0aGlzLmFkZE9uc1xuICAgICAgLmZpbHRlcihhZGRPbiA9PiBhZGRPbi50eXBlID09PSBNZWRpdW1BZGRPblR5cGUuSG90U3BvdClcbiAgICAgIC5tYXAoYWRkT24gPT4gdGhpcy5tYXBUb1BvbHlnb24oYWRkT24gYXMgSU1lZGl1bUFkZE9uSG90U3BvdCkpXG4gICAgICAuZmlsdGVyKGVsZW1lbnQgPT4gISFlbGVtZW50KTtcbiAgICB0aGlzLnN2Z1RleHRzID0gdGhpcy5hZGRPbnNcbiAgICAgIC5maWx0ZXIoYWRkT24gPT4gYWRkT24udHlwZSA9PT0gTWVkaXVtQWRkT25UeXBlLlRleHQpXG4gICAgICAubWFwKGFkZE9uID0+IHRoaXMubWFwVG9UZXh0KGFkZE9uIGFzIElNZWRpdW1BZGRPblRleHQpKVxuICAgICAgLmZpbHRlcihlbGVtZW50ID0+ICEhZWxlbWVudCk7XG4gIH1cblxuICBwcml2YXRlIG1hcFRvQXJyb3coYXJyb3c6IElNZWRpdW1BZGRPbkFycm93KTogQXJyb3cge1xuICAgIHJldHVybiBuZXcgQXJyb3coXG4gICAgICBuZXcgUG9pbnQoYXJyb3cuc3JjLmxlZnQsIGFycm93LnNyYy50b3AsICcnKSxcbiAgICAgIG5ldyBQb2ludChhcnJvdy5kc3QubGVmdCwgYXJyb3cuZHN0LnRvcCwgJycpLFxuICAgICAgYXJyb3cuY29sb3JcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBtb2NrRXh0ZXJuYWxIeXBlcmxpbmtNZWRpdW0oaWNvbkh5cGVybGluazogSU1lZGl1bUFkZE9uSWNvbkh5cGVybGluayk6IElNZWRpdW0ge1xuICAgIGNvbnN0IHVybCA9IGljb25IeXBlcmxpbmsuZXh0ZXJuYWxVcmw7XG4gICAgaWYgKCF1cmwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgc2NoZW1lTWF0Y2ggPSAvXlthLXpBLVpdKy8uZXhlYyh1cmwpO1xuICAgIGNvbnN0IG1pbWVUeXBlID0gJ3VybC8nICsgKHNjaGVtZU1hdGNoICYmIHNjaGVtZU1hdGNoWzBdIHx8ICdyZWxhdGl2ZScpO1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiB1cmwsXG4gICAgICBkZXNjcmlwdGlvbjogdXJsLFxuICAgICAgaGVpZ2h0OiAwLFxuICAgICAgd2lkdGg6IDAsXG4gICAgICBtaW1lVHlwZSxcbiAgICAgIHVybHM6IFt7XG4gICAgICAgIHVybCxcbiAgICAgICAgdHlwZTogTWVkaXVtVXJsVHlwZS5FeHRlcm5hbCxcbiAgICAgICAgbWltZVR5cGUsXG4gICAgICB9XVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIG1hcFRvSWNvbihpY29uSHlwZXJsaW5rOiBJTWVkaXVtQWRkT25JY29uSHlwZXJsaW5rKTogSWNvbiB7XG4gICAgY29uc3QgdGFyZ2V0ID0gaWNvbkh5cGVybGluay5tZWRpdW0gfHwgdGhpcy5tb2NrRXh0ZXJuYWxIeXBlcmxpbmtNZWRpdW0oaWNvbkh5cGVybGluayk7XG4gICAgaWYgKCF0YXJnZXQpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZvdW5kIGljb25IeXBlcmxpbmsgd2l0aG91dCB0YXJnZXQgb3IgZXh0ZXJuYWwgdXJsJywgaWNvbkh5cGVybGluayk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcGxhY2Vob2xkZXJQYXRoID0gdGhpcy5jY01lZGlhU2VydmljZS5nZXRNaW1lVHlwZVBsYWNlaG9sZGVyUGF0aCh0YXJnZXQubWltZVR5cGUpO1xuICAgIHJldHVybiBuZXcgSWNvbihcbiAgICAgIHBsYWNlaG9sZGVyUGF0aCxcbiAgICAgIHRhcmdldCxcbiAgICAgIHRhcmdldC5kZXNjcmlwdGlvbixcbiAgICAgIG5ldyBQb2ludChpY29uSHlwZXJsaW5rLnJlY3QubGVmdCwgaWNvbkh5cGVybGluay5yZWN0LnRvcCwgJycpLFxuICAgICAgaWNvbkh5cGVybGluay5yZWN0LndpZHRoLFxuICAgICAgaWNvbkh5cGVybGluay5yZWN0LmhlaWdodCxcbiAgICAgIGljb25IeXBlcmxpbmsuY29sb3JcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXBUb1BvbHlnb24oaG90U3BvdDogSU1lZGl1bUFkZE9uSG90U3BvdCk6IFBvbHlnb24ge1xuICAgIGNvbnN0IHBvaW50cyA9IGhvdFNwb3QucG9seWdvblxuICAgICAgLm1hcChwb2ludCA9PiBuZXcgUG9pbnQocG9pbnQubGVmdCwgcG9pbnQudG9wLCAnJykpO1xuICAgIHJldHVybiBuZXcgUG9seWdvbihcbiAgICAgIChob3RTcG90Lm1lZGl1bSAmJiBob3RTcG90Lm1lZGl1bS5kYXRhKSB8fCAnJyxcbiAgICAgIHBvaW50cyxcbiAgICAgIGhvdFNwb3QubWVkaXVtLFxuICAgICAgaG90U3BvdC5jb2xvclxuICAgICk7XG5cbiAgfVxuXG4gIHByaXZhdGUgbWFwVG9UZXh0KHRleHQ6IElNZWRpdW1BZGRPblRleHQpOiBQb2ludCB7XG4gICAgcmV0dXJuIG5ldyBQb2ludChcbiAgICAgIHRleHQucG9zaXRpb24ubGVmdCxcbiAgICAgIHRleHQucG9zaXRpb24udG9wLFxuICAgICAgdGV4dC50ZXh0LFxuICAgICAgdGV4dC5jb2xvclxuICAgICk7XG4gIH1cblxuICAvLyBSZXR1cm5zIG11bHRpcGxpY2F0b3IgZm9yIGVsZW1lbnRzIHRoYXQgc2hvdWxkIGtlZXAgdGhlIHNhbWUgZGltZW5zaW9uc1xuICBwcml2YXRlIGNhbGNTY2FsZUZhY3RvcigpOiBudW1iZXIge1xuXG4gICAgY29uc3Qgb3JpZ2luYWxXaWR0aCA9IHBhcnNlRmxvYXQodGhpcy52aWV3Qm94LnNwbGl0KCcgJylbMl0pO1xuICAgIGNvbnN0IGN1cnJlbnRXaWR0aCA9IHRoaXMuc3ZnRWxlbWVudC5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoICogcGFyc2VGbG9hdCh0aGlzLnpvb21WYWx1ZSk7XG4gICAgY29uc3Qgd2lkdGhTY2FsZUZhY3RvciA9IG9yaWdpbmFsV2lkdGggLyBjdXJyZW50V2lkdGg7XG5cbiAgICBjb25zdCBvcmlnaW5hbEhlaWdodCA9IHBhcnNlRmxvYXQodGhpcy52aWV3Qm94LnNwbGl0KCcgJylbM10pO1xuICAgIGNvbnN0IGN1cnJlbnRIZWlndGggPSB0aGlzLnN2Z0VsZW1lbnQubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQgKiBwYXJzZUZsb2F0KHRoaXMuem9vbVZhbHVlKTtcbiAgICBjb25zdCBoZWlnaHRTY2FsZUZhY3RvciA9IG9yaWdpbmFsSGVpZ2h0IC8gY3VycmVudEhlaWd0aDtcblxuICAgIHJldHVybiBNYXRoLm1heCh3aWR0aFNjYWxlRmFjdG9yLCBoZWlnaHRTY2FsZUZhY3Rvcik7XG4gIH1cbn1cbiIsIjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHhtbG5zOnhsaW5rPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiIHByZXNlcnZlQXNwZWN0UmF0aW89XCJ4TWlkWU1pZCBtZWV0XCJcbiAgW2F0dHIud2lkdGhdPVwid2lkdGhcIiBbYXR0ci5oZWlnaHRdPVwiaGVpZ2h0XCIgW2F0dHIudmlld0JveF09XCJ2aWV3Qm94XCIgY2xhc3M9XCJuZ3gtZ2FsbGVyeS1jZW50ZXJcIlxuICBbY2xhc3MuYW5pbWF0aW9uXT1cImFuaW1hdGlvblwiIFtjbGFzcy5uZ3gtZ2FsbGVyeS1wcmV2aWV3LXN2Z109XCJwcmV2aWV3XCIgW2NsYXNzLm5neC1nYWxsZXJ5LWltYWdlLXN2Z109XCIhcHJldmlld1wiXG4gIFtjbGFzcy5uZ3gtZ2FsbGVyeS1ncmFiXT1cImNsYXNzR3JhYlwiIFtzdHlsZS50cmFuc2Zvcm1dPVwic3R5bGVUcmFuc2Zvcm1cIiBbc3R5bGUubGVmdF09XCJwb3NMZWZ0XCIgW3N0eWxlLnRvcF09XCJwb3NUb3BcIlxuICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCIgI3N2Z0VsZW1lbnQ+XG4gIDxzdmc6ZyAqbmdJZj1cIiEhc3ZnQXJyb3dzLmxlbmd0aFwiIHN2Zy1hcnJvdyBbc3ZnQXJyb3dzXT1cInN2Z0Fycm93c1wiPjwvc3ZnOmc+XG4gIDxzdmc6ZyAqbmdJZj1cIiEhc3ZnUG9seWdvbnMubGVuZ3RoXCIgc3ZnLXBvbHlnb24gW3N2Z1BvbHlnb25zXT1cInN2Z1BvbHlnb25zXCI+PC9zdmc6Zz5cbiAgPHN2ZzpnICpuZ0lmPVwiISFzdmdJY29ucy5sZW5ndGhcIiBzdmctaWNvbiBbc3ZnSWNvbnNdPVwic3ZnSWNvbnNcIiBbc2NhbGVGYWN0b3JdPVwic2NhbGVGYWN0b3JcIj48L3N2ZzpnPlxuICA8c3ZnOmcgKm5nSWY9XCIhIXN2Z1RleHRzLmxlbmd0aFwiIHN2Zy10ZXh0IFtzdmdUZXh0c109XCJzdmdUZXh0c1wiPjwvc3ZnOmc+XG48L3N2Zz5cbiJdfQ==
@@ -0,0 +1,47 @@
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class NgxGalleryActionComponent {
4
+ constructor() {
5
+ this.disabled = false;
6
+ this.titleText = '';
7
+ this.onClick = new EventEmitter();
8
+ }
9
+ handleClick(event) {
10
+ if (!this.disabled) {
11
+ this.onClick.emit(event);
12
+ }
13
+ event.stopPropagation();
14
+ event.preventDefault();
15
+ }
16
+ }
17
+ NgxGalleryActionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: NgxGalleryActionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
18
+ NgxGalleryActionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: NgxGalleryActionComponent, selector: "ngx-gallery-action", inputs: { icon: "icon", disabled: "disabled", titleText: "titleText" }, outputs: { onClick: "onClick" }, ngImport: i0, template: `
19
+ <div class="ngx-gallery-icon" [class.ngx-gallery-icon-disabled]="disabled"
20
+ aria-hidden="true"
21
+ title="{{ titleText }}"
22
+ (click)="handleClick($event)">
23
+ <i class="ngx-gallery-icon-content {{ icon }}"></i>
24
+ </div>`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: NgxGalleryActionComponent, decorators: [{
26
+ type: Component,
27
+ args: [{
28
+ selector: 'ngx-gallery-action',
29
+ template: `
30
+ <div class="ngx-gallery-icon" [class.ngx-gallery-icon-disabled]="disabled"
31
+ aria-hidden="true"
32
+ title="{{ titleText }}"
33
+ (click)="handleClick($event)">
34
+ <i class="ngx-gallery-icon-content {{ icon }}"></i>
35
+ </div>`,
36
+ changeDetection: ChangeDetectionStrategy.OnPush
37
+ }]
38
+ }], propDecorators: { icon: [{
39
+ type: Input
40
+ }], disabled: [{
41
+ type: Input
42
+ }], titleText: [{
43
+ type: Input
44
+ }], onClick: [{
45
+ type: Output
46
+ }] } });
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWdhbGxlcnktYWN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1nYWxsZXJ5L3NyYy9saWIvbmd4LWdhbGxlcnktYWN0aW9uL25neC1nYWxsZXJ5LWFjdGlvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFhaEcsTUFBTSxPQUFPLHlCQUF5QjtJQVh0QztRQWFXLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsY0FBUyxHQUFHLEVBQUUsQ0FBQztRQUVkLFlBQU8sR0FBd0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztLQVU3RDtJQVJDLFdBQVcsQ0FBQyxLQUFZO1FBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzFCO1FBRUQsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN6QixDQUFDOztzSEFkVSx5QkFBeUI7MEdBQXpCLHlCQUF5QixtS0FUMUI7Ozs7OztXQU1EOzJGQUdFLHlCQUF5QjtrQkFYckMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsb0JBQW9CO29CQUM5QixRQUFRLEVBQUU7Ozs7OztXQU1EO29CQUNULGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNoRDs4QkFFVSxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVJLE9BQU87c0JBQWhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmd4LWdhbGxlcnktYWN0aW9uJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwibmd4LWdhbGxlcnktaWNvblwiIFtjbGFzcy5uZ3gtZ2FsbGVyeS1pY29uLWRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICB0aXRsZT1cInt7IHRpdGxlVGV4dCB9fVwiXG4gICAgICAoY2xpY2spPVwiaGFuZGxlQ2xpY2soJGV2ZW50KVwiPlxuICAgICAgICA8aSBjbGFzcz1cIm5neC1nYWxsZXJ5LWljb24tY29udGVudCB7eyBpY29uIH19XCI+PC9pPlxuICAgIDwvZGl2PmAsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIE5neEdhbGxlcnlBY3Rpb25Db21wb25lbnQge1xuICBASW5wdXQoKSBpY29uOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIHRpdGxlVGV4dCA9ICcnO1xuXG4gIEBPdXRwdXQoKSBvbkNsaWNrOiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIGhhbmRsZUNsaWNrKGV2ZW50OiBFdmVudCkge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5vbkNsaWNrLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,67 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class NgxGalleryArrowsComponent {
4
+ constructor() {
5
+ this.onPrevClick = new EventEmitter();
6
+ this.onNextClick = new EventEmitter();
7
+ }
8
+ handlePrevClick() {
9
+ this.onPrevClick.emit();
10
+ }
11
+ handleNextClick() {
12
+ this.onNextClick.emit();
13
+ }
14
+ }
15
+ NgxGalleryArrowsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: NgxGalleryArrowsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
16
+ NgxGalleryArrowsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: NgxGalleryArrowsComponent, selector: "ngx-gallery-arrows", inputs: { prevDisabled: "prevDisabled", nextDisabled: "nextDisabled", arrowPrevIcon: "arrowPrevIcon", arrowNextIcon: "arrowNextIcon" }, outputs: { onPrevClick: "onPrevClick", onNextClick: "onNextClick" }, ngImport: i0, template: `
17
+ <div class="ngx-gallery-arrow-wrapper ngx-gallery-arrow-left">
18
+ <div class="ngx-gallery-icon ngx-gallery-arrow"
19
+ aria-hidden="true"
20
+ (click)="handlePrevClick()"
21
+ [class.ngx-gallery-disabled]="prevDisabled">
22
+ <i class="ngx-gallery-icon-content {{arrowPrevIcon}}"></i>
23
+ </div>
24
+ </div>
25
+ <div class="ngx-gallery-arrow-wrapper ngx-gallery-arrow-right">
26
+ <div class="ngx-gallery-icon ngx-gallery-arrow"
27
+ aria-hidden="true"
28
+ (click)="handleNextClick()"
29
+ [class.ngx-gallery-disabled]="nextDisabled">
30
+ <i class="ngx-gallery-icon-content {{arrowNextIcon}}"></i>
31
+ </div>
32
+ </div>
33
+ `, isInline: true, styles: [".ngx-gallery-arrow-wrapper{position:absolute;height:100%;width:1px;display:table;z-index:2000;table-layout:fixed}.ngx-gallery-arrow-left{left:0px}.ngx-gallery-arrow-right{right:0px}.ngx-gallery-arrow{top:50%;transform:translateY(-50%);background:#ffffff8c;cursor:pointer}.ngx-gallery-arrow.ngx-gallery-disabled{opacity:.6;cursor:default}.ngx-gallery-arrow-left .ngx-gallery-arrow{left:10px}.ngx-gallery-arrow-right .ngx-gallery-arrow{right:10px}\n"] });
34
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: NgxGalleryArrowsComponent, decorators: [{
35
+ type: Component,
36
+ args: [{ selector: 'ngx-gallery-arrows', template: `
37
+ <div class="ngx-gallery-arrow-wrapper ngx-gallery-arrow-left">
38
+ <div class="ngx-gallery-icon ngx-gallery-arrow"
39
+ aria-hidden="true"
40
+ (click)="handlePrevClick()"
41
+ [class.ngx-gallery-disabled]="prevDisabled">
42
+ <i class="ngx-gallery-icon-content {{arrowPrevIcon}}"></i>
43
+ </div>
44
+ </div>
45
+ <div class="ngx-gallery-arrow-wrapper ngx-gallery-arrow-right">
46
+ <div class="ngx-gallery-icon ngx-gallery-arrow"
47
+ aria-hidden="true"
48
+ (click)="handleNextClick()"
49
+ [class.ngx-gallery-disabled]="nextDisabled">
50
+ <i class="ngx-gallery-icon-content {{arrowNextIcon}}"></i>
51
+ </div>
52
+ </div>
53
+ `, styles: [".ngx-gallery-arrow-wrapper{position:absolute;height:100%;width:1px;display:table;z-index:2000;table-layout:fixed}.ngx-gallery-arrow-left{left:0px}.ngx-gallery-arrow-right{right:0px}.ngx-gallery-arrow{top:50%;transform:translateY(-50%);background:#ffffff8c;cursor:pointer}.ngx-gallery-arrow.ngx-gallery-disabled{opacity:.6;cursor:default}.ngx-gallery-arrow-left .ngx-gallery-arrow{left:10px}.ngx-gallery-arrow-right .ngx-gallery-arrow{right:10px}\n"] }]
54
+ }], propDecorators: { prevDisabled: [{
55
+ type: Input
56
+ }], nextDisabled: [{
57
+ type: Input
58
+ }], arrowPrevIcon: [{
59
+ type: Input
60
+ }], arrowNextIcon: [{
61
+ type: Input
62
+ }], onPrevClick: [{
63
+ type: Output
64
+ }], onNextClick: [{
65
+ type: Output
66
+ }] } });
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWdhbGxlcnktYXJyb3dzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1nYWxsZXJ5L3NyYy9saWIvbmd4LWdhbGxlcnktYXJyb3dzL25neC1nYWxsZXJ5LWFycm93cy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUF3QnZFLE1BQU0sT0FBTyx5QkFBeUI7SUF0QnRDO1FBNEJZLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNqQyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7S0FTNUM7SUFQQyxlQUFlO1FBQ2IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDMUIsQ0FBQzs7c0hBZlUseUJBQXlCOzBHQUF6Qix5QkFBeUIsdVFBcEIxQjs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FpQlA7MkZBR1EseUJBQXlCO2tCQXRCckMsU0FBUzsrQkFDRSxvQkFBb0IsWUFDcEI7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBaUJQOzhCQUlNLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRUksV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmd4LWdhbGxlcnktYXJyb3dzJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwibmd4LWdhbGxlcnktYXJyb3ctd3JhcHBlciBuZ3gtZ2FsbGVyeS1hcnJvdy1sZWZ0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibmd4LWdhbGxlcnktaWNvbiBuZ3gtZ2FsbGVyeS1hcnJvd1wiXG4gICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgIChjbGljayk9XCJoYW5kbGVQcmV2Q2xpY2soKVwiXG4gICAgICAgIFtjbGFzcy5uZ3gtZ2FsbGVyeS1kaXNhYmxlZF09XCJwcmV2RGlzYWJsZWRcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJuZ3gtZ2FsbGVyeS1pY29uLWNvbnRlbnQge3thcnJvd1ByZXZJY29ufX1cIj48L2k+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibmd4LWdhbGxlcnktYXJyb3ctd3JhcHBlciBuZ3gtZ2FsbGVyeS1hcnJvdy1yaWdodFwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm5neC1nYWxsZXJ5LWljb24gbmd4LWdhbGxlcnktYXJyb3dcIlxuICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAoY2xpY2spPVwiaGFuZGxlTmV4dENsaWNrKClcIlxuICAgICAgICBbY2xhc3Mubmd4LWdhbGxlcnktZGlzYWJsZWRdPVwibmV4dERpc2FibGVkXCI+XG4gICAgICAgIDxpIGNsYXNzPVwibmd4LWdhbGxlcnktaWNvbi1jb250ZW50IHt7YXJyb3dOZXh0SWNvbn19XCI+PC9pPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgYCxcbiAgc3R5bGVVcmxzOiBbJy4vbmd4LWdhbGxlcnktYXJyb3dzLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgTmd4R2FsbGVyeUFycm93c0NvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHByZXZEaXNhYmxlZDogYm9vbGVhbjtcbiAgQElucHV0KCkgbmV4dERpc2FibGVkOiBib29sZWFuO1xuICBASW5wdXQoKSBhcnJvd1ByZXZJY29uOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGFycm93TmV4dEljb246IHN0cmluZztcblxuICBAT3V0cHV0KCkgb25QcmV2Q2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvbk5leHRDbGljayA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBoYW5kbGVQcmV2Q2xpY2soKTogdm9pZCB7XG4gICAgdGhpcy5vblByZXZDbGljay5lbWl0KCk7XG4gIH1cblxuICBoYW5kbGVOZXh0Q2xpY2soKTogdm9pZCB7XG4gICAgdGhpcy5vbk5leHRDbGljay5lbWl0KCk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,38 @@
1
+ import { Component, Input, Output, EventEmitter, } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ export class NgxGalleryBulletsComponent {
5
+ constructor() {
6
+ this.active = 0;
7
+ this.onChange = new EventEmitter();
8
+ }
9
+ getBullets() {
10
+ return Array(this.count);
11
+ }
12
+ handleChange(event, index) {
13
+ this.onChange.emit(index);
14
+ }
15
+ }
16
+ NgxGalleryBulletsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: NgxGalleryBulletsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
17
+ NgxGalleryBulletsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: NgxGalleryBulletsComponent, selector: "ngx-gallery-bullets", inputs: { count: "count", active: "active" }, outputs: { onChange: "onChange" }, ngImport: i0, template: `
18
+ <div class="ngx-gallery-bullet"
19
+ *ngFor="let bullet of getBullets(); let i = index;" (click)="handleChange($event, i)"
20
+ [ngClass]="{ 'ngx-gallery-active': i === active }">
21
+ </div>
22
+ `, isInline: true, styles: [":host{position:absolute;z-index:2000;display:inline-flex;left:50%;transform:translate(-50%);bottom:0px;padding:10px}.ngx-gallery-bullet{width:10px;height:10px;border-radius:50%;cursor:pointer;background:white}.ngx-gallery-bullet:not(:first-child){margin-left:5px}.ngx-gallery-bullet:hover,.ngx-gallery-bullet.ngx-gallery-active{background:black}\n"], directives: [{ type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: NgxGalleryBulletsComponent, decorators: [{
24
+ type: Component,
25
+ args: [{ selector: 'ngx-gallery-bullets', template: `
26
+ <div class="ngx-gallery-bullet"
27
+ *ngFor="let bullet of getBullets(); let i = index;" (click)="handleChange($event, i)"
28
+ [ngClass]="{ 'ngx-gallery-active': i === active }">
29
+ </div>
30
+ `, styles: [":host{position:absolute;z-index:2000;display:inline-flex;left:50%;transform:translate(-50%);bottom:0px;padding:10px}.ngx-gallery-bullet{width:10px;height:10px;border-radius:50%;cursor:pointer;background:white}.ngx-gallery-bullet:not(:first-child){margin-left:5px}.ngx-gallery-bullet:hover,.ngx-gallery-bullet.ngx-gallery-active{background:black}\n"] }]
31
+ }], propDecorators: { count: [{
32
+ type: Input
33
+ }], active: [{
34
+ type: Input
35
+ }], onChange: [{
36
+ type: Output
37
+ }] } });
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWdhbGxlcnktYnVsbGV0cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZ2FsbGVyeS9zcmMvbGliL25neC1nYWxsZXJ5LWJ1bGxldHMvbmd4LWdhbGxlcnktYnVsbGV0cy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksR0FBRyxNQUFNLGVBQWUsQ0FBQzs7O0FBWXhFLE1BQU0sT0FBTywwQkFBMEI7SUFWdkM7UUFZVyxXQUFNLEdBQUcsQ0FBQyxDQUFDO1FBRVYsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7S0FTekM7SUFQQyxVQUFVO1FBQ1IsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBWSxFQUFFLEtBQWE7UUFDdEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUIsQ0FBQzs7dUhBWlUsMEJBQTBCOzJHQUExQiwwQkFBMEIsNElBUjNCOzs7OztHQUtUOzJGQUdVLDBCQUEwQjtrQkFWdEMsU0FBUzsrQkFDRSxxQkFBcUIsWUFDckI7Ozs7O0dBS1Q7OEJBSVEsS0FBSztzQkFBYixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFFSSxRQUFRO3NCQUFqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25neC1nYWxsZXJ5LWJ1bGxldHMnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJuZ3gtZ2FsbGVyeS1idWxsZXRcIlxuICAgICAgKm5nRm9yPVwibGV0IGJ1bGxldCBvZiBnZXRCdWxsZXRzKCk7IGxldCBpID0gaW5kZXg7XCIgKGNsaWNrKT1cImhhbmRsZUNoYW5nZSgkZXZlbnQsIGkpXCJcbiAgICAgIFtuZ0NsYXNzXT1cInsgJ25neC1nYWxsZXJ5LWFjdGl2ZSc6IGkgPT09IGFjdGl2ZSB9XCI+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL25neC1nYWxsZXJ5LWJ1bGxldHMuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBOZ3hHYWxsZXJ5QnVsbGV0c0NvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGNvdW50OiBudW1iZXI7XG4gIEBJbnB1dCgpIGFjdGl2ZSA9IDA7XG5cbiAgQE91dHB1dCgpIG9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIGdldEJ1bGxldHMoKTogbnVtYmVyW10ge1xuICAgIHJldHVybiBBcnJheSh0aGlzLmNvdW50KTtcbiAgfVxuXG4gIGhhbmRsZUNoYW5nZShldmVudDogRXZlbnQsIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlLmVtaXQoaW5kZXgpO1xuICB9XG59XG4iXX0=
@@ -42,13 +42,12 @@ export class NgxGalleryHelperService {
42
42
  this.swipeHandlers.delete(id);
43
43
  }
44
44
  }
45
- NgxGalleryHelperService.ɵprov = i0.ɵɵdefineInjectable({ factory: function NgxGalleryHelperService_Factory() { return new NgxGalleryHelperService(i0.ɵɵinject(i0.Renderer2)); }, token: NgxGalleryHelperService, providedIn: "root" });
46
- NgxGalleryHelperService.decorators = [
47
- { type: Injectable, args: [{
48
- providedIn: 'root'
49
- },] }
50
- ];
51
- NgxGalleryHelperService.ctorParameters = () => [
52
- { type: Renderer2 }
53
- ];
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWdhbGxlcnktaGVscGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZ2FsbGVyeS9zcmMvbGliL25neC1nYWxsZXJ5LWhlbHBlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUtsRSxNQUFNLE9BQU8sdUJBQXVCO0lBSWxDLFlBQW9CLFFBQW1CO1FBQW5CLGFBQVEsR0FBUixRQUFRLENBQVc7UUFGL0Isa0JBQWEsR0FBZ0MsSUFBSSxHQUFHLEVBQTBCLENBQUM7SUFFNUMsQ0FBQztJQUU1QyxXQUFXLENBQ1QsTUFBZSxFQUNmLE9BQW1CLEVBQ25CLEVBQVUsRUFDVixXQUF1QixFQUN2QixXQUF1QjtRQUd2QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFM0Msc0VBQXNFO1FBQ3RFLElBQUk7WUFDRixJQUFJLE1BQU0sSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDdkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFO29CQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLFdBQVcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztvQkFDN0UsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7aUJBQy9FLENBQUMsQ0FBQzthQUNKO2lCQUFNLElBQUksQ0FBQyxNQUFNLElBQUksUUFBUSxFQUFFO2dCQUM5QixRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO2dCQUNyQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDOUI7U0FDRjtRQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUc7SUFDakIsQ0FBQztJQUVELGdCQUFnQixDQUFDLFFBQWdCO1FBQy9CLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDYixPQUFPO1NBQ1I7UUFDRCxPQUFPLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUN2RCxDQUFDO0lBRU8sV0FBVyxDQUFDLEdBQVc7UUFDN0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUU7WUFDaEIsT0FBTyxHQUFHLENBQUM7U0FDWjtRQUNELE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDO2FBQzVDLE9BQU8sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVPLGdCQUFnQixDQUFDLEVBQVU7UUFDakMsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRU8sbUJBQW1CLENBQUMsRUFBVTtRQUNwQyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNoQyxDQUFDOzs7O1lBdERGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7O1lBSmdDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50UmVmLCBJbmplY3RhYmxlLCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgTmd4R2FsbGVyeUhlbHBlclNlcnZpY2Uge1xuXG4gIHByaXZhdGUgc3dpcGVIYW5kbGVyczogTWFwPHN0cmluZywgKCgpID0+IHZvaWQpW10+ID0gbmV3IE1hcDxzdHJpbmcsICgoKSA9PiB2b2lkKVtdPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMikgeyB9XG5cbiAgbWFuYWdlU3dpcGUoXG4gICAgc3RhdHVzOiBib29sZWFuLFxuICAgIGVsZW1lbnQ6IEVsZW1lbnRSZWYsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBuZXh0SGFuZGxlcjogKCkgPT4gdm9pZCxcbiAgICBwcmV2SGFuZGxlcjogKCkgPT4gdm9pZFxuICApOiB2b2lkIHtcblxuICAgIGNvbnN0IGhhbmRsZXJzID0gdGhpcy5nZXRTd2lwZUhhbmRsZXJzKGlkKTtcblxuICAgIC8vIHN3aXBlbGVmdCBhbmQgc3dpcGVyaWdodCBhcmUgYXZhaWxhYmxlIG9ubHkgaWYgaGFtbWVyanMgaXMgaW5jbHVkZWRcbiAgICB0cnkge1xuICAgICAgaWYgKHN0YXR1cyAmJiAhaGFuZGxlcnMpIHtcbiAgICAgICAgdGhpcy5zd2lwZUhhbmRsZXJzLnNldChpZCwgW1xuICAgICAgICAgIHRoaXMucmVuZGVyZXIubGlzdGVuKGVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ3N3aXBlbGVmdCcsICgpID0+IG5leHRIYW5kbGVyKCkpLFxuICAgICAgICAgIHRoaXMucmVuZGVyZXIubGlzdGVuKGVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ3N3aXBlcmlnaHQnLCAoKSA9PiBwcmV2SGFuZGxlcigpKVxuICAgICAgICBdKTtcbiAgICAgIH0gZWxzZSBpZiAoIXN0YXR1cyAmJiBoYW5kbGVycykge1xuICAgICAgICBoYW5kbGVycy5tYXAoKGhhbmRsZXIpID0+IGhhbmRsZXIoKSk7XG4gICAgICAgIHRoaXMucmVtb3ZlU3dpcGVIYW5kbGVycyhpZCk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkgeyB9XG4gIH1cblxuICBnZXRCYWNrZ3JvdW5kVXJsKGltYWdlVXJsOiBzdHJpbmcpIHtcbiAgICBpZiAoIWltYWdlVXJsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHJldHVybiAndXJsKFxcJycgKyB0aGlzLnZhbGlkYXRlVXJsKGltYWdlVXJsKSArICdcXCcpJztcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVVcmwodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghdXJsLnJlcGxhY2UpIHtcbiAgICAgIHJldHVybiB1cmw7XG4gICAgfVxuICAgIHJldHVybiB1cmwucmVwbGFjZShuZXcgUmVnRXhwKCcgJywgJ2cnKSwgJyUyMCcpXG4gICAgICAucmVwbGFjZShuZXcgUmVnRXhwKCdcXCcnLCAnZycpLCAnJTI3Jyk7XG4gIH1cblxuICBwcml2YXRlIGdldFN3aXBlSGFuZGxlcnMoaWQ6IHN0cmluZyk6ICgoKSA9PiB2b2lkKVtdIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5zd2lwZUhhbmRsZXJzLmdldChpZCk7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZVN3aXBlSGFuZGxlcnMoaWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc3dpcGVIYW5kbGVycy5kZWxldGUoaWQpO1xuICB9XG59XG4iXX0=
45
+ NgxGalleryHelperService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: NgxGalleryHelperService, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Injectable });
46
+ NgxGalleryHelperService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: NgxGalleryHelperService, providedIn: 'root' });
47
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: NgxGalleryHelperService, decorators: [{
48
+ type: Injectable,
49
+ args: [{
50
+ providedIn: 'root'
51
+ }]
52
+ }], ctorParameters: function () { return [{ type: i0.Renderer2 }]; } });
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWdhbGxlcnktaGVscGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZ2FsbGVyeS9zcmMvbGliL25neC1nYWxsZXJ5LWhlbHBlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUtsRSxNQUFNLE9BQU8sdUJBQXVCO0lBSWxDLFlBQW9CLFFBQW1CO1FBQW5CLGFBQVEsR0FBUixRQUFRLENBQVc7UUFGL0Isa0JBQWEsR0FBZ0MsSUFBSSxHQUFHLEVBQTBCLENBQUM7SUFFNUMsQ0FBQztJQUU1QyxXQUFXLENBQ1QsTUFBZSxFQUNmLE9BQW1CLEVBQ25CLEVBQVUsRUFDVixXQUF1QixFQUN2QixXQUF1QjtRQUd2QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFM0Msc0VBQXNFO1FBQ3RFLElBQUk7WUFDRixJQUFJLE1BQU0sSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDdkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFO29CQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLFdBQVcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztvQkFDN0UsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7aUJBQy9FLENBQUMsQ0FBQzthQUNKO2lCQUFNLElBQUksQ0FBQyxNQUFNLElBQUksUUFBUSxFQUFFO2dCQUM5QixRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO2dCQUNyQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDOUI7U0FDRjtRQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUc7SUFDakIsQ0FBQztJQUVELGdCQUFnQixDQUFDLFFBQWdCO1FBQy9CLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDYixPQUFPO1NBQ1I7UUFDRCxPQUFPLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUN2RCxDQUFDO0lBRU8sV0FBVyxDQUFDLEdBQVc7UUFDN0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUU7WUFDaEIsT0FBTyxHQUFHLENBQUM7U0FDWjtRQUNELE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDO2FBQzVDLE9BQU8sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVPLGdCQUFnQixDQUFDLEVBQVU7UUFDakMsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRU8sbUJBQW1CLENBQUMsRUFBVTtRQUNwQyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNoQyxDQUFDOztvSEFuRFUsdUJBQXVCO3dIQUF2Qix1QkFBdUIsY0FGdEIsTUFBTTsyRkFFUCx1QkFBdUI7a0JBSG5DLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiwgSW5qZWN0YWJsZSwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIE5neEdhbGxlcnlIZWxwZXJTZXJ2aWNlIHtcblxuICBwcml2YXRlIHN3aXBlSGFuZGxlcnM6IE1hcDxzdHJpbmcsICgoKSA9PiB2b2lkKVtdPiA9IG5ldyBNYXA8c3RyaW5nLCAoKCkgPT4gdm9pZClbXT4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIpIHsgfVxuXG4gIG1hbmFnZVN3aXBlKFxuICAgIHN0YXR1czogYm9vbGVhbixcbiAgICBlbGVtZW50OiBFbGVtZW50UmVmLFxuICAgIGlkOiBzdHJpbmcsXG4gICAgbmV4dEhhbmRsZXI6ICgpID0+IHZvaWQsXG4gICAgcHJldkhhbmRsZXI6ICgpID0+IHZvaWRcbiAgKTogdm9pZCB7XG5cbiAgICBjb25zdCBoYW5kbGVycyA9IHRoaXMuZ2V0U3dpcGVIYW5kbGVycyhpZCk7XG5cbiAgICAvLyBzd2lwZWxlZnQgYW5kIHN3aXBlcmlnaHQgYXJlIGF2YWlsYWJsZSBvbmx5IGlmIGhhbW1lcmpzIGlzIGluY2x1ZGVkXG4gICAgdHJ5IHtcbiAgICAgIGlmIChzdGF0dXMgJiYgIWhhbmRsZXJzKSB7XG4gICAgICAgIHRoaXMuc3dpcGVIYW5kbGVycy5zZXQoaWQsIFtcbiAgICAgICAgICB0aGlzLnJlbmRlcmVyLmxpc3RlbihlbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdzd2lwZWxlZnQnLCAoKSA9PiBuZXh0SGFuZGxlcigpKSxcbiAgICAgICAgICB0aGlzLnJlbmRlcmVyLmxpc3RlbihlbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdzd2lwZXJpZ2h0JywgKCkgPT4gcHJldkhhbmRsZXIoKSlcbiAgICAgICAgXSk7XG4gICAgICB9IGVsc2UgaWYgKCFzdGF0dXMgJiYgaGFuZGxlcnMpIHtcbiAgICAgICAgaGFuZGxlcnMubWFwKChoYW5kbGVyKSA9PiBoYW5kbGVyKCkpO1xuICAgICAgICB0aGlzLnJlbW92ZVN3aXBlSGFuZGxlcnMoaWQpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHsgfVxuICB9XG5cbiAgZ2V0QmFja2dyb3VuZFVybChpbWFnZVVybDogc3RyaW5nKSB7XG4gICAgaWYgKCFpbWFnZVVybCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICByZXR1cm4gJ3VybChcXCcnICsgdGhpcy52YWxpZGF0ZVVybChpbWFnZVVybCkgKyAnXFwnKSc7XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlVXJsKHVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIXVybC5yZXBsYWNlKSB7XG4gICAgICByZXR1cm4gdXJsO1xuICAgIH1cbiAgICByZXR1cm4gdXJsLnJlcGxhY2UobmV3IFJlZ0V4cCgnICcsICdnJyksICclMjAnKVxuICAgICAgLnJlcGxhY2UobmV3IFJlZ0V4cCgnXFwnJywgJ2cnKSwgJyUyNycpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTd2lwZUhhbmRsZXJzKGlkOiBzdHJpbmcpOiAoKCkgPT4gdm9pZClbXSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuc3dpcGVIYW5kbGVycy5nZXQoaWQpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVTd2lwZUhhbmRsZXJzKGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnN3aXBlSGFuZGxlcnMuZGVsZXRlKGlkKTtcbiAgfVxufVxuIl19