@udilhan/ngx-photo-gallery 1.5.8 → 1.5.10

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.
@@ -21,6 +21,7 @@ export class PhotoGalleryGroupDirective {
21
21
  this.lightboxService = lightboxService;
22
22
  this.onPhotoGalleryInit = new EventEmitter();
23
23
  this.onPhotoGalleryDestroy = new EventEmitter();
24
+ this.gallery = null;
24
25
  this.galleryItems = {};
25
26
  this.galleryItemIds = new Set();
26
27
  this.galleryImages = [];
@@ -107,19 +108,24 @@ export class PhotoGalleryGroupDirective {
107
108
  };
108
109
  const photoSwipe = this.lightboxService.getLightboxElement();
109
110
  this.gallery = new PhotoSwipe(photoSwipe, PhotoSwipeUI_Default, this.galleryImages, options);
110
- this.gallery.listen('afterChange', () => {
111
- // on arrête toutes les vidéos existantes quand on change de slide
112
- this.pauseAllVideosExcept(null);
111
+ this.gallery.listen('beforeChange', () => {
112
+ console.log("EVENT: 'beforeChange'");
113
+ this.pauseAllVideos();
114
+ });
115
+ this.gallery.listen('initialZoomInEnd', () => {
116
+ // au début, joue la vidéo si c’est une vidéo
117
+ console.log("EVENT: 'initialZoomInEnd'");
118
+ this.playCurrentSlideVideo();
113
119
  });
114
- this.gallery.listen('slideChangeComplete', () => {
115
- // quand la transition est totalement terminée, on peut jouer la vidéo active
116
- const currItem = this.gallery.currItem;
117
- this.playActiveVideo(currItem);
120
+ this.gallery.listen('afterChange', () => {
121
+ // on met un petit délai pour s’assurer que le DOM est prêt
122
+ console.log("EVENT: afterChange");
123
+ setTimeout(() => {
124
+ this.playCurrentSlideVideo();
125
+ }, 200);
118
126
  });
119
127
  this.gallery.listen('destroy', () => {
120
- this.pauseAllVideosExcept(null);
121
- this.lightboxService.destroy();
122
- this.onPhotoGalleryDestroy.emit();
128
+ this.pauseAllVideos();
123
129
  });
124
130
  this.gallery.listen('gettingData', (_, slide) => {
125
131
  if (slide.doGetSlideDimensions && !this.isVideo(slide.src)) {
@@ -149,26 +155,49 @@ export class PhotoGalleryGroupDirective {
149
155
  this.gallery.invalidateCurrItems();
150
156
  this.gallery.updateSize(true);
151
157
  }
152
- pauseAllVideosExcept(activeItem) {
153
- const allVideos = document.querySelectorAll('.pswp__video-wrapper video');
154
- allVideos.forEach(video => {
155
- const isActive = activeItem && video.src.includes(activeItem.src);
156
- if (!isActive) {
157
- video.pause();
158
- video.currentTime = 0;
158
+ pauseAllVideos() {
159
+ const vids = document.querySelectorAll('.pswp__video-wrapper video');
160
+ vids.forEach(v => {
161
+ try {
162
+ v.pause();
163
+ v.currentTime = 0;
159
164
  }
165
+ catch (_) { }
160
166
  });
161
167
  }
162
- playActiveVideo(activeItem) {
163
- if (!activeItem)
168
+ playCurrentSlideVideo() {
169
+ if (!this.gallery)
164
170
  return;
165
- // cherche la vidéo visible dans le conteneur actif de PhotoSwipe
166
- const activeContainer = document.querySelector('.pswp__item.pswp__item--current');
167
- if (!activeContainer)
171
+ const currentIndex = this.gallery.getCurrentIndex(); // index du slide visible
172
+ const currentItem = this.gallery.currItem;
173
+ if (!currentItem)
168
174
  return;
169
- const video = activeContainer.querySelector('video');
170
- if (video) {
171
- video.play().catch(() => { });
175
+ // 🧠 Cast correct : container est un HTMLElement
176
+ const container = this.gallery.container;
177
+ if (!container)
178
+ return;
179
+ // 🧠 Cast des enfants en tableau de HTMLElements
180
+ const slideEls = Array.from(container.children);
181
+ const total = this.gallery.items.length;
182
+ const moduloIndex = currentIndex % 3; // PhotoSwipe recycle 3 conteneurs
183
+ // Sélection du slide actif
184
+ const activeSlide = slideEls[moduloIndex];
185
+ if (!activeSlide)
186
+ return;
187
+ // Pause toutes les autres vidéos
188
+ slideEls.forEach(slide => {
189
+ const video = slide.querySelector('video');
190
+ if (video) {
191
+ if (slide === activeSlide)
192
+ return;
193
+ video.pause();
194
+ video.currentTime = 0;
195
+ }
196
+ });
197
+ // Lecture de la vidéo active (si présente)
198
+ const activeVideo = activeSlide.querySelector('video');
199
+ if (activeVideo) {
200
+ activeVideo.play().catch(() => { });
172
201
  }
173
202
  }
174
203
  }
@@ -197,4 +226,4 @@ function loadImage(path) {
197
226
  image.src = path;
198
227
  });
199
228
  }
200
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvdG8tZ2FsbGVyeS1ncm91cC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvZGlyZWN0aXZlcy9waG90by1nYWxsZXJ5LWdyb3VwLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRixPQUFPLFVBQVUsTUFBTSxZQUFZLENBQUM7QUFDcEMsT0FBTyxvQkFBb0IsTUFBTSx1Q0FBdUMsQ0FBQzs7OztBQU16RSxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUc7SUFDN0IsT0FBTyxFQUFFLEtBQUs7SUFDZCxPQUFPLEVBQUUsSUFBSTtJQUNiLFNBQVMsRUFBRSxLQUFLO0lBQ2hCLFlBQVksRUFBRSxLQUFLO0lBQ25CLE1BQU0sRUFBRSxJQUFJO0lBQ1osT0FBTyxFQUFFLEtBQUs7SUFDZCxTQUFTLEVBQUUsSUFBSTtJQUNmLE9BQU8sRUFBRSxLQUFLO0lBQ2QsV0FBVyxFQUFFLElBQUk7Q0FDbEIsQ0FBQztBQUtGLE1BQU0sT0FBTywwQkFBMEI7SUFXckMsWUFDc0Isa0JBQXNDLEVBQ2xELGVBQWdDO1FBRHBCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDbEQsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBWGhDLHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDeEMsMEJBQXFCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUk3QyxpQkFBWSxHQUFtQyxFQUFFLENBQUM7UUFDbEQsbUJBQWMsR0FBZ0IsSUFBSSxHQUFHLEVBQVUsQ0FBQztRQUNoRCxrQkFBYSxHQUFtQixFQUFFLENBQUM7UUFNekMsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLEdBQUcsZUFBZSxFQUFFLEdBQUcsSUFB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SyxDQUFDLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQyxDQUFDO1NBQzlCO0lBQ0gsQ0FBQzs7d0hBL0xVLDBCQUEwQjs0R0FBMUIsMEJBQTBCOzRGQUExQiwwQkFBMEI7a0JBSHRDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHFCQUFxQjtpQkFDaEM7OzBCQWFJLFFBQVE7MEVBWGlCLE9BQU87c0JBQWxDLEtBQUs7dUJBQUMsbUJBQW1CO2dCQUNoQixrQkFBa0I7c0JBQTNCLE1BQU07Z0JBQ0cscUJBQXFCO3NCQUE5QixNQUFNOztBQStMVCxTQUFTLFNBQVMsQ0FBQyxJQUFZO0lBQzdCLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7UUFDckMsTUFBTSxLQUFLLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUMxQixLQUFLLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQyxLQUFLLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakMsS0FBSyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUM7SUFDbkIsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBPdXRwdXQsIElucHV0LCBFdmVudEVtaXR0ZXIsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgUGhvdG9Td2lwZSBmcm9tICdwaG90b3N3aXBlJztcbmltcG9ydCBQaG90b1N3aXBlVUlfRGVmYXVsdCBmcm9tICdwaG90b3N3aXBlL2Rpc3QvcGhvdG9zd2lwZS11aS1kZWZhdWx0JztcblxuaW1wb3J0IHsgUGhvdG9HYWxsZXJ5Q29uZmlnIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9jb25maWcnO1xuaW1wb3J0IHsgR2FsbGVyeUltYWdlLCBHYWxsZXJ5SXRlbSwgR2FsbGVyeU9wdGlvbnMgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3Bob3Rvc3dpcGUnO1xuaW1wb3J0IHsgTGlnaHRib3hTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvbGlnaHRib3guc2VydmljZSc7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX09QVElPTlMgPSB7XG4gIGhpc3Rvcnk6IGZhbHNlLFxuICBjbG9zZUVsOiB0cnVlLFxuICBjYXB0aW9uRWw6IGZhbHNlLFxuICBmdWxsc2NyZWVuRWw6IGZhbHNlLFxuICB6b29tRWw6IHRydWUsXG4gIHNoYXJlRWw6IGZhbHNlLFxuICBjb3VudGVyRWw6IHRydWUsXG4gIGFycm93RWw6IGZhbHNlLFxuICBwcmVsb2FkZXJFbDogdHJ1ZSxcbn07XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1twaG90b0dhbGxlcnlHcm91cF0nLFxufSlcbmV4cG9ydCBjbGFzcyBQaG90b0dhbGxlcnlHcm91cERpcmVjdGl2ZSB7XG4gIEBJbnB1dCgncGhvdG9HYWxsZXJ5R3JvdXAnKSBvcHRpb25zOiBHYWxsZXJ5T3B0aW9ucztcbiAgQE91dHB1dCgpIG9uUGhvdG9HYWxsZXJ5SW5pdCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uUGhvdG9HYWxsZXJ5RGVzdHJveSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBwcml2YXRlIGRlZmF1bHRPcHRpb25zOiBHYWxsZXJ5T3B0aW9ucztcbiAgcHJpdmF0ZSBnYWxsZXJ5OiBhbnk7XG4gIHByaXZhdGUgZ2FsbGVyeUl0ZW1zOiB7IFtrZXk6IHN0cmluZ106IEdhbGxlcnlJdGVtIH0gPSB7fTtcbiAgcHJpdmF0ZSBnYWxsZXJ5SXRlbUlkczogU2V0PHN0cmluZz4gPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgcHJpdmF0ZSBnYWxsZXJ5SW1hZ2VzOiBHYWxsZXJ5SW1hZ2VbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgcGhvdG9HYWxsZXJ5Q29uZmlnOiBQaG90b0dhbGxlcnlDb25maWcsXG4gICAgcHJpdmF0ZSBsaWdodGJveFNlcnZpY2U6IExpZ2h0Ym94U2VydmljZVxuICApIHtcbiAgICB0aGlzLmRlZmF1bHRPcHRpb25zID0geyAuLi5ERUZBVUxUX09QVElPTlMsIC4uLnRoaXMucGhvdG9HYWxsZXJ5Q29uZmlnPy5kZWZhdWx0T3B0aW9ucyB9O1xuICB9XG5cbiAgcHJpdmF0ZSBpc1ZpZGVvKHVybDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHVybD8uaW5jbHVkZXMoJy92aWRlb3MvJyk7XG4gIH1cblxuICByZWdpc3RlckdhbGxlcnlJdGVtKGl0ZW06IHsgaWQ6IHN0cmluZzsgZWxlbWVudDogSFRNTEVsZW1lbnQ7IGltYWdlVXJsOiBzdHJpbmc7IGNhcHRpb24/OiBzdHJpbmcgfSk6IHZvaWQge1xuICAgIGNvbnN0IGltYWdlOiBHYWxsZXJ5SW1hZ2UgPSB7XG4gICAgICBpZDogaXRlbS5pZCxcbiAgICAgIHNyYzogaXRlbS5pbWFnZVVybCxcbiAgICAgIC4uLihpdGVtLmNhcHRpb24gPyB7IHRpdGxlOiBpdGVtLmNhcHRpb24gfSA6IHt9KSxcbiAgICAgIHc6IDAsXG4gICAgICBoOiAwLFxuICAgICAgZG9HZXRTbGlkZURpbWVuc2lvbnM6IHRydWUsXG4gICAgfTtcbiAgICB0aGlzLmdhbGxlcnlJdGVtc1tpdGVtLmlkXSA9IHtcbiAgICAgIGlkOiBpdGVtLmlkLFxuICAgICAgZWxlbWVudDogaXRlbS5lbGVtZW50LFxuICAgICAgaW1hZ2UsXG4gICAgfTtcblxuICAgIHRoaXMuZ2FsbGVyeUl0ZW1JZHMuYWRkKGl0ZW0uaWQpO1xuICB9XG5cbiAgdW5yZWdpc3RlckdhbGxlcnlJdGVtKGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmdhbGxlcnlJdGVtSWRzLmRlbGV0ZShpZCk7XG4gIH1cblxuICBhc3luYyBvcGVuUGhvdG9Td2lwZShpZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5saWdodGJveFNlcnZpY2UuY3JlYXRlKCk7XG5cbiAgICBjb25zdCB0YXJnZXRJdGVtID0gdGhpcy5nYWxsZXJ5SXRlbXNbaWRdLmltYWdlO1xuXG4gICAgaWYgKHRhcmdldEl0ZW0uZG9HZXRTbGlkZURpbWVuc2lvbnMgJiYgIXRoaXMuaXNWaWRlbyh0YXJnZXRJdGVtLnNyYykpIHtcbiAgICAgIGNvbnN0IHRhcmdldEltYWdlID0gYXdhaXQgbG9hZEltYWdlKHRhcmdldEl0ZW0uc3JjKTtcbiAgICAgIHRhcmdldEl0ZW0udyA9IHRhcmdldEltYWdlLm5hdHVyYWxXaWR0aDtcbiAgICAgIHRhcmdldEl0ZW0uaCA9IHRhcmdldEltYWdlLm5hdHVyYWxIZWlnaHQ7XG4gICAgICBkZWxldGUgdGFyZ2V0SXRlbS5kb0dldFNsaWRlRGltZW5zaW9ucztcbiAgICB9XG5cbiAgICAvLyBDcsOpZSBsYSBsaXN0ZSBjb21wbMOodGUgZGVzIG3DqWRpYXNcbiAgICB0aGlzLmdhbGxlcnlJbWFnZXMgPSAoWy4uLnRoaXMuZ2FsbGVyeUl0ZW1JZHNdLm1hcCgoa2V5KSA9PiB7XG4gICAgICBjb25zdCBtZWRpYSA9IHRoaXMuZ2FsbGVyeUl0ZW1zW2tleV0uaW1hZ2U7XG5cbiAgICAgIGlmICh0aGlzLmlzVmlkZW8obWVkaWEuc3JjKSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGlkOiBtZWRpYS5pZCxcbiAgICAgICAgICBodG1sOiBgXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInBzd3BfX3ZpZGVvLXdyYXBwZXJcIj5cbiAgICAgICAgICAgIDx2aWRlb1xuICAgICAgICAgICAgICBzcmM9XCIke21lZGlhLnNyY31cIlxuICAgICAgICAgICAgICBjb250cm9sc1xuICAgICAgICAgICAgICBwcmVsb2FkPVwibWV0YWRhdGFcIlxuICAgICAgICAgICAgICBzdHlsZT1cIm1heC13aWR0aDogMTAwJTsgbWF4LWhlaWdodDogMTAwJTsgYm9yZGVyLXJhZGl1czogOHB4O1wiXG4gICAgICAgICAgICA+PC92aWRlbz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgYCxcbiAgICAgICAgICB0aXRsZTogbWVkaWEudGl0bGUgfHwgJycsXG4gICAgICAgICAgdzogMTkyMCxcbiAgICAgICAgICBoOiAxMDgwLFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbWVkaWE7XG4gICAgfSkpIGFzIGFueVtdO1xuXG4gICAgY29uc3QgaWR4ID0gdGhpcy5nYWxsZXJ5SW1hZ2VzLmZpbmRJbmRleCgoaW1hZ2UpID0+IGltYWdlLmlkID09PSBpZCk7XG4gICAgY29uc3Qgb3B0aW9uczogR2FsbGVyeU9wdGlvbnMgPSB7IC4uLnRoaXMuZGVmYXVsdE9wdGlvbnMsIC4uLnRoaXMub3B0aW9ucyB9O1xuICAgIG9wdGlvbnMuaW5kZXggPSBpZHg7XG5cbiAgICBvcHRpb25zLmdldFRodW1iQm91bmRzRm4gPSAoaW1hZ2VJbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICBjb25zdCBrZXkgPSB0aGlzLmdhbGxlcnlJbWFnZXNbaW1hZ2VJbmRleF0uaWQ7XG4gICAgICBjb25zdCB0aHVtYm5haWwgPSB0aGlzLmdhbGxlcnlJdGVtc1trZXldLmVsZW1lbnQ7XG4gICAgICBjb25zdCBvcmlnaW4gPSB0aGlzLmdhbGxlcnlJdGVtc1trZXldLmltYWdlO1xuICAgICAgY29uc3QgcGFnZVlTY3JvbGwgPSB3aW5kb3cucGFnZVlPZmZzZXQgfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcDtcbiAgICAgIGNvbnN0IHJlY3QgPSB0aHVtYm5haWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgIGNvbnN0IHRodW1ibmFpbFJhdGUgPSByZWN0LmhlaWdodCAvIHJlY3Qud2lkdGg7XG4gICAgICBjb25zdCBvcmlnaW5SYXRlID0gb3JpZ2luLmggLyBvcmlnaW4udztcbiAgICAgIGxldCB4OiBudW1iZXIsIHk6IG51bWJlciwgdzogbnVtYmVyO1xuXG4gICAgICBpZiAodGh1bWJuYWlsUmF0ZSA+IG9yaWdpblJhdGUpIHtcbiAgICAgICAgeSA9IHJlY3QudG9wICsgcGFnZVlTY3JvbGw7XG4gICAgICAgIHcgPSAob3JpZ2luLncgKiByZWN0LmhlaWdodCkgLyBvcmlnaW4uaDtcbiAgICAgICAgeCA9IHJlY3QubGVmdCAtICh3IC0gcmVjdC53aWR0aCkgLyAyO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgaW1hZ2VIZWlnaHQgPSAob3JpZ2luLmggKiByZWN0LndpZHRoKSAvIG9yaWdpbi53O1xuICAgICAgICB4ID0gcmVjdC5sZWZ0O1xuICAgICAgICB3ID0gcmVjdC53aWR0aDtcbiAgICAgICAgeSA9IHJlY3QudG9wICsgcGFnZVlTY3JvbGwgLSAoaW1hZ2VIZWlnaHQgLSByZWN0LmhlaWdodCkgLyAyO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4geyB4LCB5LCB3IH07XG4gICAgfTtcblxuICAgIGNvbnN0IHBob3RvU3dpcGUgPSB0aGlzLmxpZ2h0Ym94U2VydmljZS5nZXRMaWdodGJveEVsZW1lbnQoKTtcblxuICAgIHRoaXMuZ2FsbGVyeSA9IG5ldyBQaG90b1N3aXBlKHBob3RvU3dpcGUsIFBob3RvU3dpcGVVSV9EZWZhdWx0LCB0aGlzLmdhbGxlcnlJbWFnZXMsIG9wdGlvbnMpO1xuXG4gICAgdGhpcy5nYWxsZXJ5Lmxpc3RlbignYWZ0ZXJDaGFuZ2UnLCAoKSA9PiB7XG4gICAgICAvLyBvbiBhcnLDqnRlIHRvdXRlcyBsZXMgdmlkw6lvcyBleGlzdGFudGVzIHF1YW5kIG9uIGNoYW5nZSBkZSBzbGlkZVxuICAgICAgdGhpcy5wYXVzZUFsbFZpZGVvc0V4Y2VwdChudWxsKTtcbiAgICB9KTtcblxuICAgIHRoaXMuZ2FsbGVyeS5saXN0ZW4oJ3NsaWRlQ2hhbmdlQ29tcGxldGUnLCAoKSA9PiB7XG4gICAgICAvLyBxdWFuZCBsYSB0cmFuc2l0aW9uIGVzdCB0b3RhbGVtZW50IHRlcm1pbsOpZSwgb24gcGV1dCBqb3VlciBsYSB2aWTDqW8gYWN0aXZlXG4gICAgICBjb25zdCBjdXJySXRlbSA9IHRoaXMuZ2FsbGVyeS5jdXJySXRlbTtcbiAgICAgIHRoaXMucGxheUFjdGl2ZVZpZGVvKGN1cnJJdGVtKTtcbiAgICB9KTtcblxuICAgIHRoaXMuZ2FsbGVyeS5saXN0ZW4oJ2Rlc3Ryb3knLCAoKSA9PiB7XG4gICAgICB0aGlzLnBhdXNlQWxsVmlkZW9zRXhjZXB0KG51bGwpO1xuICAgICAgdGhpcy5saWdodGJveFNlcnZpY2UuZGVzdHJveSgpO1xuICAgICAgdGhpcy5vblBob3RvR2FsbGVyeURlc3Ryb3kuZW1pdCgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5nYWxsZXJ5Lmxpc3RlbignZ2V0dGluZ0RhdGEnLCAoXywgc2xpZGU6IGFueSkgPT4ge1xuICAgICAgaWYgKHNsaWRlLmRvR2V0U2xpZGVEaW1lbnNpb25zICYmICF0aGlzLmlzVmlkZW8oc2xpZGUuc3JjKSkge1xuICAgICAgICBzZXRUaW1lb3V0KGFzeW5jICgpID0+IGF3YWl0IHRoaXMuZ2V0U2xpZGVEaW1lbnNpb25zKHNsaWRlKSwgMzAwKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuZ2FsbGVyeS5saXN0ZW4oJ2ltYWdlTG9hZENvbXBsZXRlJywgYXN5bmMgKF8sIHNsaWRlOiBhbnkpID0+IHtcbiAgICAgIGlmIChzbGlkZS5kb0dldFNsaWRlRGltZW5zaW9ucyAmJiAhdGhpcy5pc1ZpZGVvKHNsaWRlLnNyYykpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5nZXRTbGlkZURpbWVuc2lvbnMoc2xpZGUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5nYWxsZXJ5Lmxpc3RlbignZGVzdHJveScsICgpID0+IHtcbiAgICAgIHRoaXMubGlnaHRib3hTZXJ2aWNlLmRlc3Ryb3koKTtcbiAgICAgIHRoaXMub25QaG90b0dhbGxlcnlEZXN0cm95LmVtaXQoKTtcbiAgICB9KTtcblxuICAgIHRoaXMub25QaG90b0dhbGxlcnlJbml0LmVtaXQoKTtcbiAgICB0aGlzLmdhbGxlcnkuaW5pdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRTbGlkZURpbWVuc2lvbnMoc2xpZGU6IEdhbGxlcnlJbWFnZSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghc2xpZGUuZG9HZXRTbGlkZURpbWVuc2lvbnMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBpbWFnZTogSFRNTEltYWdlRWxlbWVudCA9IGF3YWl0IGxvYWRJbWFnZShzbGlkZS5zcmMpLmNhdGNoKCgpID0+IG51bGwpO1xuXG4gICAgc2xpZGUuZG9HZXRTbGlkZURpbWVuc2lvbnMgPSBmYWxzZTtcblxuICAgIHNsaWRlLncgPSBpbWFnZS5uYXR1cmFsV2lkdGg7XG4gICAgc2xpZGUuaCA9IGltYWdlLm5hdHVyYWxIZWlnaHQ7XG5cbiAgICB0aGlzLmdhbGxlcnkuaW52YWxpZGF0ZUN1cnJJdGVtcygpO1xuICAgIHRoaXMuZ2FsbGVyeS51cGRhdGVTaXplKHRydWUpO1xuICB9XG4gIHByaXZhdGUgcGF1c2VBbGxWaWRlb3NFeGNlcHQoYWN0aXZlSXRlbTogYW55KSB7XG4gICAgY29uc3QgYWxsVmlkZW9zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbDxIVE1MVmlkZW9FbGVtZW50PignLnBzd3BfX3ZpZGVvLXdyYXBwZXIgdmlkZW8nKTtcblxuICAgIGFsbFZpZGVvcy5mb3JFYWNoKHZpZGVvID0+IHtcbiAgICAgIGNvbnN0IGlzQWN0aXZlID0gYWN0aXZlSXRlbSAmJiB2aWRlby5zcmMuaW5jbHVkZXMoYWN0aXZlSXRlbS5zcmMpO1xuICAgICAgaWYgKCFpc0FjdGl2ZSkge1xuICAgICAgICB2aWRlby5wYXVzZSgpO1xuICAgICAgICB2aWRlby5jdXJyZW50VGltZSA9IDA7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHBsYXlBY3RpdmVWaWRlbyhhY3RpdmVJdGVtOiBhbnkpIHtcbiAgICBpZiAoIWFjdGl2ZUl0ZW0pIHJldHVybjtcblxuICAgIC8vIGNoZXJjaGUgbGEgdmlkw6lvIHZpc2libGUgZGFucyBsZSBjb250ZW5ldXIgYWN0aWYgZGUgUGhvdG9Td2lwZVxuICAgIGNvbnN0IGFjdGl2ZUNvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5wc3dwX19pdGVtLnBzd3BfX2l0ZW0tLWN1cnJlbnQnKTtcbiAgICBpZiAoIWFjdGl2ZUNvbnRhaW5lcikgcmV0dXJuO1xuXG4gICAgY29uc3QgdmlkZW8gPSBhY3RpdmVDb250YWluZXIucXVlcnlTZWxlY3RvcjxIVE1MVmlkZW9FbGVtZW50PigndmlkZW8nKTtcbiAgICBpZiAodmlkZW8pIHtcbiAgICAgIHZpZGVvLnBsYXkoKS5jYXRjaCgoKSA9PiB7fSk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGxvYWRJbWFnZShwYXRoOiBzdHJpbmcpOiBQcm9taXNlPEhUTUxJbWFnZUVsZW1lbnQ+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBpbWFnZSA9IG5ldyBJbWFnZSgpO1xuICAgIGltYWdlLm9ubG9hZCA9ICgpID0+IHJlc29sdmUoaW1hZ2UpO1xuICAgIGltYWdlLm9uZXJyb3IgPSAoZSkgPT4gcmVqZWN0KGUpO1xuICAgIGltYWdlLnNyYyA9IHBhdGg7XG4gIH0pO1xufVxuXG4iXX0=
229
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvdG8tZ2FsbGVyeS1ncm91cC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvZGlyZWN0aXZlcy9waG90by1nYWxsZXJ5LWdyb3VwLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRixPQUFPLFVBQVUsTUFBTSxZQUFZLENBQUM7QUFDcEMsT0FBTyxvQkFBb0IsTUFBTSx1Q0FBdUMsQ0FBQzs7OztBQU16RSxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUc7SUFDN0IsT0FBTyxFQUFFLEtBQUs7SUFDZCxPQUFPLEVBQUUsSUFBSTtJQUNiLFNBQVMsRUFBRSxLQUFLO0lBQ2hCLFlBQVksRUFBRSxLQUFLO0lBQ25CLE1BQU0sRUFBRSxJQUFJO0lBQ1osT0FBTyxFQUFFLEtBQUs7SUFDZCxTQUFTLEVBQUUsSUFBSTtJQUNmLE9BQU8sRUFBRSxLQUFLO0lBQ2QsV0FBVyxFQUFFLElBQUk7Q0FDbEIsQ0FBQztBQUtGLE1BQU0sT0FBTywwQkFBMEI7SUFXckMsWUFDc0Isa0JBQXNDLEVBQ2xELGVBQWdDO1FBRHBCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDbEQsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBWGhDLHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDeEMsMEJBQXFCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUc3QyxZQUFPLEdBQTJCLElBQUksQ0FBQztRQUN2QyxpQkFBWSxHQUFtQyxFQUFFLENBQUM7UUFDbEQsbUJBQWMsR0FBZ0IsSUFBSSxHQUFHLEVBQVUsQ0FBQztRQUNoRCxrQkFBYSxHQUFtQixFQUFFLENBQUM7UUFNekMsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLEdBQUcsZUFBZSxFQUFFLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLGNBQWMsRUFBRSxDQUFDO0lBQzNGLENBQUM7SUFFTyxPQUFPLENBQUMsR0FBVztRQUN6QixPQUFPLEdBQUcsRUFBRSxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELG1CQUFtQixDQUFDLElBQThFO1FBQ2hHLE1BQU0sS0FBSyxHQUFpQjtZQUMxQixFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDWCxHQUFHLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDbEIsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2hELENBQUMsRUFBRSxDQUFDO1lBQ0osQ0FBQyxFQUFFLENBQUM7WUFDSixvQkFBb0IsRUFBRSxJQUFJO1NBQzNCLENBQUM7UUFDRixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRztZQUMzQixFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDWCxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDckIsS0FBSztTQUNOLENBQUM7UUFFRixJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELHFCQUFxQixDQUFDLEVBQVU7UUFDOUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELEtBQUssQ0FBQyxjQUFjLENBQUMsRUFBVTtRQUM3QixJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBRTlCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDO1FBRS9DLElBQUksVUFBVSxDQUFDLG9CQUFvQixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDcEUsTUFBTSxXQUFXLEdBQUcsTUFBTSxTQUFTLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3BELFVBQVUsQ0FBQyxDQUFDLEdBQUcsV0FBVyxDQUFDLFlBQVksQ0FBQztZQUN4QyxVQUFVLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxhQUFhLENBQUM7WUFDekMsT0FBTyxVQUFVLENBQUMsb0JBQW9CLENBQUM7U0FDeEM7UUFFRCxvQ0FBb0M7UUFDcEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDekQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUM7WUFFM0MsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDM0IsT0FBTztvQkFDTCxFQUFFLEVBQUUsS0FBSyxDQUFDLEVBQUU7b0JBQ1osSUFBSSxFQUFFOzs7cUJBR0ssS0FBSyxDQUFDLEdBQUc7Ozs7OztTQU1yQjtvQkFDQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUssSUFBSSxFQUFFO29CQUN4QixDQUFDLEVBQUUsSUFBSTtvQkFDUCxDQUFDLEVBQUUsSUFBSTtpQkFDUixDQUFDO2FBQ0g7WUFFRCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUMsQ0FBQyxDQUFVLENBQUM7UUFFYixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUNyRSxNQUFNLE9BQU8sR0FBbUIsRUFBRSxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDNUUsT0FBTyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUM7UUFFcEIsT0FBTyxDQUFDLGdCQUFnQixHQUFHLENBQUMsVUFBa0IsRUFBRSxFQUFFO1lBQ2hELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzlDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDO1lBQ2pELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDO1lBQzVDLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLElBQUksUUFBUSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUM7WUFDN0UsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFFL0MsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQy9DLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQVMsRUFBRSxDQUFTLEVBQUUsQ0FBUyxDQUFDO1lBRXBDLElBQUksYUFBYSxHQUFHLFVBQVUsRUFBRTtnQkFDOUIsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsV0FBVyxDQUFDO2dCQUMzQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDO2dCQUN4QyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ3RDO2lCQUFNO2dCQUNMLE1BQU0sV0FBVyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQztnQkFDdkQsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7Z0JBQ2QsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7Z0JBQ2YsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsV0FBVyxHQUFHLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDOUQ7WUFFRCxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUNyQixDQUFDLENBQUM7UUFFRixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFFN0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLFVBQVUsQ0FBQyxVQUFVLEVBQUUsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUU3RixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsR0FBRyxFQUFFO1lBQ3ZDLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLENBQUMsQ0FBQztZQUNyQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxHQUFHLEVBQUU7WUFDM0MsNkNBQTZDO1lBQzdDLE9BQU8sQ0FBQyxHQUFHLENBQUMsMkJBQTJCLENBQUMsQ0FBQztZQUN6QyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUMvQixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxHQUFHLEVBQUU7WUFDdEMsMkRBQTJEO1lBQzNELE9BQU8sQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsQ0FBQztZQUNsQyxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNkLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQy9CLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNWLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRTtZQUNsQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLEVBQUUsS0FBVSxFQUFFLEVBQUU7WUFDbkQsSUFBSSxLQUFLLENBQUMsb0JBQW9CLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDMUQsVUFBVSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7YUFDbkU7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLG1CQUFtQixFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsS0FBVSxFQUFFLEVBQUU7WUFDL0QsSUFBSSxLQUFLLENBQUMsb0JBQW9CLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDMUQsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDdEM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUU7WUFDbEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDcEMsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRU8sS0FBSyxDQUFDLGtCQUFrQixDQUFDLEtBQW1CO1FBQ2xELElBQUksQ0FBQyxLQUFLLENBQUMsb0JBQW9CLEVBQUU7WUFDL0IsT0FBTztTQUNSO1FBRUQsTUFBTSxLQUFLLEdBQXFCLE1BQU0sU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFN0UsS0FBSyxDQUFDLG9CQUFvQixHQUFHLEtBQUssQ0FBQztRQUVuQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUM7UUFDN0IsS0FBSyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDO1FBRTlCLElBQUksQ0FBQyxPQUFPLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUNuQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBQ08sY0FBYztRQUNwQixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsZ0JBQWdCLENBQW1CLDRCQUE0QixDQUFDLENBQUM7UUFDdkYsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNmLElBQUk7Z0JBQ0YsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNWLENBQUMsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO2FBQ25CO1lBQUMsT0FBTSxDQUFDLEVBQUMsR0FBRTtRQUNkLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLHFCQUFxQjtRQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPO1FBRTFCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQyx5QkFBeUI7UUFDOUUsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUM7UUFDMUMsSUFBSSxDQUFDLFdBQVc7WUFBRSxPQUFPO1FBRXpCLGlEQUFpRDtRQUNqRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQXdCLENBQUM7UUFDeEQsSUFBSSxDQUFDLFNBQVM7WUFBRSxPQUFPO1FBRXZCLGlEQUFpRDtRQUNqRCxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQWtCLENBQUM7UUFDakUsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQ3hDLE1BQU0sV0FBVyxHQUFHLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQyxrQ0FBa0M7UUFFeEUsMkJBQTJCO1FBQzNCLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsV0FBVztZQUFFLE9BQU87UUFFekIsaUNBQWlDO1FBQ2pDLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDdkIsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBbUIsT0FBTyxDQUFDLENBQUM7WUFDN0QsSUFBSSxLQUFLLEVBQUU7Z0JBQ1QsSUFBSSxLQUFLLEtBQUssV0FBVztvQkFBRSxPQUFPO2dCQUNsQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ2QsS0FBSyxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7YUFDdkI7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILDJDQUEyQztRQUMzQyxNQUFNLFdBQVcsR0FBRyxXQUFXLENBQUMsYUFBYSxDQUFtQixPQUFPLENBQUMsQ0FBQztRQUN6RSxJQUFJLFdBQVcsRUFBRTtZQUNmLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDLENBQUM7U0FDcEM7SUFDSCxDQUFDOzt3SEEzTlUsMEJBQTBCOzRHQUExQiwwQkFBMEI7NEZBQTFCLDBCQUEwQjtrQkFIdEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUscUJBQXFCO2lCQUNoQzs7MEJBYUksUUFBUTswRUFYaUIsT0FBTztzQkFBbEMsS0FBSzt1QkFBQyxtQkFBbUI7Z0JBQ2hCLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFDRyxxQkFBcUI7c0JBQTlCLE1BQU07O0FBMk5ULFNBQVMsU0FBUyxDQUFDLElBQVk7SUFDN0IsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUNyQyxNQUFNLEtBQUssR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQzFCLEtBQUssQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLEtBQUssQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqQyxLQUFLLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQztJQUNuQixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIE91dHB1dCwgSW5wdXQsIEV2ZW50RW1pdHRlciwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCBQaG90b1N3aXBlIGZyb20gJ3Bob3Rvc3dpcGUnO1xuaW1wb3J0IFBob3RvU3dpcGVVSV9EZWZhdWx0IGZyb20gJ3Bob3Rvc3dpcGUvZGlzdC9waG90b3N3aXBlLXVpLWRlZmF1bHQnO1xuXG5pbXBvcnQgeyBQaG90b0dhbGxlcnlDb25maWcgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2NvbmZpZyc7XG5pbXBvcnQgeyBHYWxsZXJ5SW1hZ2UsIEdhbGxlcnlJdGVtLCBHYWxsZXJ5T3B0aW9ucyB9IGZyb20gJy4uL2ludGVyZmFjZXMvcGhvdG9zd2lwZSc7XG5pbXBvcnQgeyBMaWdodGJveFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9saWdodGJveC5zZXJ2aWNlJztcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfT1BUSU9OUyA9IHtcbiAgaGlzdG9yeTogZmFsc2UsXG4gIGNsb3NlRWw6IHRydWUsXG4gIGNhcHRpb25FbDogZmFsc2UsXG4gIGZ1bGxzY3JlZW5FbDogZmFsc2UsXG4gIHpvb21FbDogdHJ1ZSxcbiAgc2hhcmVFbDogZmFsc2UsXG4gIGNvdW50ZXJFbDogdHJ1ZSxcbiAgYXJyb3dFbDogZmFsc2UsXG4gIHByZWxvYWRlckVsOiB0cnVlLFxufTtcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3Bob3RvR2FsbGVyeUdyb3VwXScsXG59KVxuZXhwb3J0IGNsYXNzIFBob3RvR2FsbGVyeUdyb3VwRGlyZWN0aXZlIHtcbiAgQElucHV0KCdwaG90b0dhbGxlcnlHcm91cCcpIG9wdGlvbnM6IEdhbGxlcnlPcHRpb25zO1xuICBAT3V0cHV0KCkgb25QaG90b0dhbGxlcnlJbml0ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25QaG90b0dhbGxlcnlEZXN0cm95ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHByaXZhdGUgZGVmYXVsdE9wdGlvbnM6IEdhbGxlcnlPcHRpb25zO1xuICBwcml2YXRlIGdhbGxlcnk6IFBob3RvU3dpcGU8YW55PiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGdhbGxlcnlJdGVtczogeyBba2V5OiBzdHJpbmddOiBHYWxsZXJ5SXRlbSB9ID0ge307XG4gIHByaXZhdGUgZ2FsbGVyeUl0ZW1JZHM6IFNldDxzdHJpbmc+ID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gIHByaXZhdGUgZ2FsbGVyeUltYWdlczogR2FsbGVyeUltYWdlW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHBob3RvR2FsbGVyeUNvbmZpZzogUGhvdG9HYWxsZXJ5Q29uZmlnLFxuICAgIHByaXZhdGUgbGlnaHRib3hTZXJ2aWNlOiBMaWdodGJveFNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5kZWZhdWx0T3B0aW9ucyA9IHsgLi4uREVGQVVMVF9PUFRJT05TLCAuLi50aGlzLnBob3RvR2FsbGVyeUNvbmZpZz8uZGVmYXVsdE9wdGlvbnMgfTtcbiAgfVxuXG4gIHByaXZhdGUgaXNWaWRlbyh1cmw6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB1cmw/LmluY2x1ZGVzKCcvdmlkZW9zLycpO1xuICB9XG5cbiAgcmVnaXN0ZXJHYWxsZXJ5SXRlbShpdGVtOiB7IGlkOiBzdHJpbmc7IGVsZW1lbnQ6IEhUTUxFbGVtZW50OyBpbWFnZVVybDogc3RyaW5nOyBjYXB0aW9uPzogc3RyaW5nIH0pOiB2b2lkIHtcbiAgICBjb25zdCBpbWFnZTogR2FsbGVyeUltYWdlID0ge1xuICAgICAgaWQ6IGl0ZW0uaWQsXG4gICAgICBzcmM6IGl0ZW0uaW1hZ2VVcmwsXG4gICAgICAuLi4oaXRlbS5jYXB0aW9uID8geyB0aXRsZTogaXRlbS5jYXB0aW9uIH0gOiB7fSksXG4gICAgICB3OiAwLFxuICAgICAgaDogMCxcbiAgICAgIGRvR2V0U2xpZGVEaW1lbnNpb25zOiB0cnVlLFxuICAgIH07XG4gICAgdGhpcy5nYWxsZXJ5SXRlbXNbaXRlbS5pZF0gPSB7XG4gICAgICBpZDogaXRlbS5pZCxcbiAgICAgIGVsZW1lbnQ6IGl0ZW0uZWxlbWVudCxcbiAgICAgIGltYWdlLFxuICAgIH07XG5cbiAgICB0aGlzLmdhbGxlcnlJdGVtSWRzLmFkZChpdGVtLmlkKTtcbiAgfVxuXG4gIHVucmVnaXN0ZXJHYWxsZXJ5SXRlbShpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5nYWxsZXJ5SXRlbUlkcy5kZWxldGUoaWQpO1xuICB9XG5cbiAgYXN5bmMgb3BlblBob3RvU3dpcGUoaWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMubGlnaHRib3hTZXJ2aWNlLmNyZWF0ZSgpO1xuXG4gICAgY29uc3QgdGFyZ2V0SXRlbSA9IHRoaXMuZ2FsbGVyeUl0ZW1zW2lkXS5pbWFnZTtcblxuICAgIGlmICh0YXJnZXRJdGVtLmRvR2V0U2xpZGVEaW1lbnNpb25zICYmICF0aGlzLmlzVmlkZW8odGFyZ2V0SXRlbS5zcmMpKSB7XG4gICAgICBjb25zdCB0YXJnZXRJbWFnZSA9IGF3YWl0IGxvYWRJbWFnZSh0YXJnZXRJdGVtLnNyYyk7XG4gICAgICB0YXJnZXRJdGVtLncgPSB0YXJnZXRJbWFnZS5uYXR1cmFsV2lkdGg7XG4gICAgICB0YXJnZXRJdGVtLmggPSB0YXJnZXRJbWFnZS5uYXR1cmFsSGVpZ2h0O1xuICAgICAgZGVsZXRlIHRhcmdldEl0ZW0uZG9HZXRTbGlkZURpbWVuc2lvbnM7XG4gICAgfVxuXG4gICAgLy8gQ3LDqWUgbGEgbGlzdGUgY29tcGzDqHRlIGRlcyBtw6lkaWFzXG4gICAgdGhpcy5nYWxsZXJ5SW1hZ2VzID0gKFsuLi50aGlzLmdhbGxlcnlJdGVtSWRzXS5tYXAoKGtleSkgPT4ge1xuICAgICAgY29uc3QgbWVkaWEgPSB0aGlzLmdhbGxlcnlJdGVtc1trZXldLmltYWdlO1xuXG4gICAgICBpZiAodGhpcy5pc1ZpZGVvKG1lZGlhLnNyYykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBpZDogbWVkaWEuaWQsXG4gICAgICAgICAgaHRtbDogYFxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwc3dwX192aWRlby13cmFwcGVyXCI+XG4gICAgICAgICAgICA8dmlkZW9cbiAgICAgICAgICAgICAgc3JjPVwiJHttZWRpYS5zcmN9XCJcbiAgICAgICAgICAgICAgY29udHJvbHNcbiAgICAgICAgICAgICAgcHJlbG9hZD1cIm1ldGFkYXRhXCJcbiAgICAgICAgICAgICAgc3R5bGU9XCJtYXgtd2lkdGg6IDEwMCU7IG1heC1oZWlnaHQ6IDEwMCU7IGJvcmRlci1yYWRpdXM6IDhweDtcIlxuICAgICAgICAgICAgPjwvdmlkZW8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIGAsXG4gICAgICAgICAgdGl0bGU6IG1lZGlhLnRpdGxlIHx8ICcnLFxuICAgICAgICAgIHc6IDE5MjAsXG4gICAgICAgICAgaDogMTA4MCxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG1lZGlhO1xuICAgIH0pKSBhcyBhbnlbXTtcblxuICAgIGNvbnN0IGlkeCA9IHRoaXMuZ2FsbGVyeUltYWdlcy5maW5kSW5kZXgoKGltYWdlKSA9PiBpbWFnZS5pZCA9PT0gaWQpO1xuICAgIGNvbnN0IG9wdGlvbnM6IEdhbGxlcnlPcHRpb25zID0geyAuLi50aGlzLmRlZmF1bHRPcHRpb25zLCAuLi50aGlzLm9wdGlvbnMgfTtcbiAgICBvcHRpb25zLmluZGV4ID0gaWR4O1xuXG4gICAgb3B0aW9ucy5nZXRUaHVtYkJvdW5kc0ZuID0gKGltYWdlSW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgY29uc3Qga2V5ID0gdGhpcy5nYWxsZXJ5SW1hZ2VzW2ltYWdlSW5kZXhdLmlkO1xuICAgICAgY29uc3QgdGh1bWJuYWlsID0gdGhpcy5nYWxsZXJ5SXRlbXNba2V5XS5lbGVtZW50O1xuICAgICAgY29uc3Qgb3JpZ2luID0gdGhpcy5nYWxsZXJ5SXRlbXNba2V5XS5pbWFnZTtcbiAgICAgIGNvbnN0IHBhZ2VZU2Nyb2xsID0gd2luZG93LnBhZ2VZT2Zmc2V0IHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3A7XG4gICAgICBjb25zdCByZWN0ID0gdGh1bWJuYWlsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICBjb25zdCB0aHVtYm5haWxSYXRlID0gcmVjdC5oZWlnaHQgLyByZWN0LndpZHRoO1xuICAgICAgY29uc3Qgb3JpZ2luUmF0ZSA9IG9yaWdpbi5oIC8gb3JpZ2luLnc7XG4gICAgICBsZXQgeDogbnVtYmVyLCB5OiBudW1iZXIsIHc6IG51bWJlcjtcblxuICAgICAgaWYgKHRodW1ibmFpbFJhdGUgPiBvcmlnaW5SYXRlKSB7XG4gICAgICAgIHkgPSByZWN0LnRvcCArIHBhZ2VZU2Nyb2xsO1xuICAgICAgICB3ID0gKG9yaWdpbi53ICogcmVjdC5oZWlnaHQpIC8gb3JpZ2luLmg7XG4gICAgICAgIHggPSByZWN0LmxlZnQgLSAodyAtIHJlY3Qud2lkdGgpIC8gMjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGltYWdlSGVpZ2h0ID0gKG9yaWdpbi5oICogcmVjdC53aWR0aCkgLyBvcmlnaW4udztcbiAgICAgICAgeCA9IHJlY3QubGVmdDtcbiAgICAgICAgdyA9IHJlY3Qud2lkdGg7XG4gICAgICAgIHkgPSByZWN0LnRvcCArIHBhZ2VZU2Nyb2xsIC0gKGltYWdlSGVpZ2h0IC0gcmVjdC5oZWlnaHQpIC8gMjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHsgeCwgeSwgdyB9O1xuICAgIH07XG5cbiAgICBjb25zdCBwaG90b1N3aXBlID0gdGhpcy5saWdodGJveFNlcnZpY2UuZ2V0TGlnaHRib3hFbGVtZW50KCk7XG5cbiAgICB0aGlzLmdhbGxlcnkgPSBuZXcgUGhvdG9Td2lwZShwaG90b1N3aXBlLCBQaG90b1N3aXBlVUlfRGVmYXVsdCwgdGhpcy5nYWxsZXJ5SW1hZ2VzLCBvcHRpb25zKTtcblxuICAgIHRoaXMuZ2FsbGVyeS5saXN0ZW4oJ2JlZm9yZUNoYW5nZScsICgpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKFwiRVZFTlQ6ICdiZWZvcmVDaGFuZ2UnXCIpO1xuICAgICAgdGhpcy5wYXVzZUFsbFZpZGVvcygpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5nYWxsZXJ5Lmxpc3RlbignaW5pdGlhbFpvb21JbkVuZCcsICgpID0+IHtcbiAgICAgIC8vIGF1IGTDqWJ1dCwgam91ZSBsYSB2aWTDqW8gc2kgY+KAmWVzdCB1bmUgdmlkw6lvXG4gICAgICBjb25zb2xlLmxvZyhcIkVWRU5UOiAnaW5pdGlhbFpvb21JbkVuZCdcIik7XG4gICAgICB0aGlzLnBsYXlDdXJyZW50U2xpZGVWaWRlbygpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5nYWxsZXJ5Lmxpc3RlbignYWZ0ZXJDaGFuZ2UnLCAoKSA9PiB7XG4gICAgICAvLyBvbiBtZXQgdW4gcGV0aXQgZMOpbGFpIHBvdXIgc+KAmWFzc3VyZXIgcXVlIGxlIERPTSBlc3QgcHLDqnRcbiAgICAgIGNvbnNvbGUubG9nKFwiRVZFTlQ6IGFmdGVyQ2hhbmdlXCIpO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMucGxheUN1cnJlbnRTbGlkZVZpZGVvKCk7XG4gICAgICB9LCAyMDApO1xuICAgIH0pO1xuXG4gICAgdGhpcy5nYWxsZXJ5Lmxpc3RlbignZGVzdHJveScsICgpID0+IHtcbiAgICAgIHRoaXMucGF1c2VBbGxWaWRlb3MoKTtcbiAgICB9KTtcblxuICAgIHRoaXMuZ2FsbGVyeS5saXN0ZW4oJ2dldHRpbmdEYXRhJywgKF8sIHNsaWRlOiBhbnkpID0+IHtcbiAgICAgIGlmIChzbGlkZS5kb0dldFNsaWRlRGltZW5zaW9ucyAmJiAhdGhpcy5pc1ZpZGVvKHNsaWRlLnNyYykpIHtcbiAgICAgICAgc2V0VGltZW91dChhc3luYyAoKSA9PiBhd2FpdCB0aGlzLmdldFNsaWRlRGltZW5zaW9ucyhzbGlkZSksIDMwMCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmdhbGxlcnkubGlzdGVuKCdpbWFnZUxvYWRDb21wbGV0ZScsIGFzeW5jIChfLCBzbGlkZTogYW55KSA9PiB7XG4gICAgICBpZiAoc2xpZGUuZG9HZXRTbGlkZURpbWVuc2lvbnMgJiYgIXRoaXMuaXNWaWRlbyhzbGlkZS5zcmMpKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuZ2V0U2xpZGVEaW1lbnNpb25zKHNsaWRlKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuZ2FsbGVyeS5saXN0ZW4oJ2Rlc3Ryb3knLCAoKSA9PiB7XG4gICAgICB0aGlzLmxpZ2h0Ym94U2VydmljZS5kZXN0cm95KCk7XG4gICAgICB0aGlzLm9uUGhvdG9HYWxsZXJ5RGVzdHJveS5lbWl0KCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLm9uUGhvdG9HYWxsZXJ5SW5pdC5lbWl0KCk7XG4gICAgdGhpcy5nYWxsZXJ5LmluaXQoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0U2xpZGVEaW1lbnNpb25zKHNsaWRlOiBHYWxsZXJ5SW1hZ2UpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXNsaWRlLmRvR2V0U2xpZGVEaW1lbnNpb25zKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaW1hZ2U6IEhUTUxJbWFnZUVsZW1lbnQgPSBhd2FpdCBsb2FkSW1hZ2Uoc2xpZGUuc3JjKS5jYXRjaCgoKSA9PiBudWxsKTtcblxuICAgIHNsaWRlLmRvR2V0U2xpZGVEaW1lbnNpb25zID0gZmFsc2U7XG5cbiAgICBzbGlkZS53ID0gaW1hZ2UubmF0dXJhbFdpZHRoO1xuICAgIHNsaWRlLmggPSBpbWFnZS5uYXR1cmFsSGVpZ2h0O1xuXG4gICAgdGhpcy5nYWxsZXJ5LmludmFsaWRhdGVDdXJySXRlbXMoKTtcbiAgICB0aGlzLmdhbGxlcnkudXBkYXRlU2l6ZSh0cnVlKTtcbiAgfVxuICBwcml2YXRlIHBhdXNlQWxsVmlkZW9zKCkge1xuICAgIGNvbnN0IHZpZHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsPEhUTUxWaWRlb0VsZW1lbnQ+KCcucHN3cF9fdmlkZW8td3JhcHBlciB2aWRlbycpO1xuICAgIHZpZHMuZm9yRWFjaCh2ID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHYucGF1c2UoKTtcbiAgICAgICAgdi5jdXJyZW50VGltZSA9IDA7XG4gICAgICB9IGNhdGNoKF8pe31cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcGxheUN1cnJlbnRTbGlkZVZpZGVvKCkge1xuICAgIGlmICghdGhpcy5nYWxsZXJ5KSByZXR1cm47XG5cbiAgICBjb25zdCBjdXJyZW50SW5kZXggPSB0aGlzLmdhbGxlcnkuZ2V0Q3VycmVudEluZGV4KCk7IC8vIGluZGV4IGR1IHNsaWRlIHZpc2libGVcbiAgICBjb25zdCBjdXJyZW50SXRlbSA9IHRoaXMuZ2FsbGVyeS5jdXJySXRlbTtcbiAgICBpZiAoIWN1cnJlbnRJdGVtKSByZXR1cm47XG5cbiAgICAvLyDwn6egIENhc3QgY29ycmVjdCA6IGNvbnRhaW5lciBlc3QgdW4gSFRNTEVsZW1lbnRcbiAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLmdhbGxlcnkuY29udGFpbmVyIGFzIEhUTUxFbGVtZW50O1xuICAgIGlmICghY29udGFpbmVyKSByZXR1cm47XG5cbiAgICAvLyDwn6egIENhc3QgZGVzIGVuZmFudHMgZW4gdGFibGVhdSBkZSBIVE1MRWxlbWVudHNcbiAgICBjb25zdCBzbGlkZUVscyA9IEFycmF5LmZyb20oY29udGFpbmVyLmNoaWxkcmVuKSBhcyBIVE1MRWxlbWVudFtdO1xuICAgIGNvbnN0IHRvdGFsID0gdGhpcy5nYWxsZXJ5Lml0ZW1zLmxlbmd0aDtcbiAgICBjb25zdCBtb2R1bG9JbmRleCA9IGN1cnJlbnRJbmRleCAlIDM7IC8vIFBob3RvU3dpcGUgcmVjeWNsZSAzIGNvbnRlbmV1cnNcblxuICAgIC8vIFPDqWxlY3Rpb24gZHUgc2xpZGUgYWN0aWZcbiAgICBjb25zdCBhY3RpdmVTbGlkZSA9IHNsaWRlRWxzW21vZHVsb0luZGV4XTtcbiAgICBpZiAoIWFjdGl2ZVNsaWRlKSByZXR1cm47XG5cbiAgICAvLyBQYXVzZSB0b3V0ZXMgbGVzIGF1dHJlcyB2aWTDqW9zXG4gICAgc2xpZGVFbHMuZm9yRWFjaChzbGlkZSA9PiB7XG4gICAgICBjb25zdCB2aWRlbyA9IHNsaWRlLnF1ZXJ5U2VsZWN0b3I8SFRNTFZpZGVvRWxlbWVudD4oJ3ZpZGVvJyk7XG4gICAgICBpZiAodmlkZW8pIHtcbiAgICAgICAgaWYgKHNsaWRlID09PSBhY3RpdmVTbGlkZSkgcmV0dXJuO1xuICAgICAgICB2aWRlby5wYXVzZSgpO1xuICAgICAgICB2aWRlby5jdXJyZW50VGltZSA9IDA7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBMZWN0dXJlIGRlIGxhIHZpZMOpbyBhY3RpdmUgKHNpIHByw6lzZW50ZSlcbiAgICBjb25zdCBhY3RpdmVWaWRlbyA9IGFjdGl2ZVNsaWRlLnF1ZXJ5U2VsZWN0b3I8SFRNTFZpZGVvRWxlbWVudD4oJ3ZpZGVvJyk7XG4gICAgaWYgKGFjdGl2ZVZpZGVvKSB7XG4gICAgICBhY3RpdmVWaWRlby5wbGF5KCkuY2F0Y2goKCkgPT4ge30pO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBsb2FkSW1hZ2UocGF0aDogc3RyaW5nKTogUHJvbWlzZTxIVE1MSW1hZ2VFbGVtZW50PiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgaW1hZ2UgPSBuZXcgSW1hZ2UoKTtcbiAgICBpbWFnZS5vbmxvYWQgPSAoKSA9PiByZXNvbHZlKGltYWdlKTtcbiAgICBpbWFnZS5vbmVycm9yID0gKGUpID0+IHJlamVjdChlKTtcbiAgICBpbWFnZS5zcmMgPSBwYXRoO1xuICB9KTtcbn1cblxuIl19
@@ -73,6 +73,7 @@ class PhotoGalleryGroupDirective {
73
73
  this.lightboxService = lightboxService;
74
74
  this.onPhotoGalleryInit = new EventEmitter();
75
75
  this.onPhotoGalleryDestroy = new EventEmitter();
76
+ this.gallery = null;
76
77
  this.galleryItems = {};
77
78
  this.galleryItemIds = new Set();
78
79
  this.galleryImages = [];
@@ -153,19 +154,24 @@ class PhotoGalleryGroupDirective {
153
154
  };
154
155
  const photoSwipe = this.lightboxService.getLightboxElement();
155
156
  this.gallery = new PhotoSwipe(photoSwipe, PhotoSwipeUI_Default, this.galleryImages, options);
156
- this.gallery.listen('afterChange', () => {
157
- // on arrête toutes les vidéos existantes quand on change de slide
158
- this.pauseAllVideosExcept(null);
157
+ this.gallery.listen('beforeChange', () => {
158
+ console.log("EVENT: 'beforeChange'");
159
+ this.pauseAllVideos();
160
+ });
161
+ this.gallery.listen('initialZoomInEnd', () => {
162
+ // au début, joue la vidéo si c’est une vidéo
163
+ console.log("EVENT: 'initialZoomInEnd'");
164
+ this.playCurrentSlideVideo();
159
165
  });
160
- this.gallery.listen('slideChangeComplete', () => {
161
- // quand la transition est totalement terminée, on peut jouer la vidéo active
162
- const currItem = this.gallery.currItem;
163
- this.playActiveVideo(currItem);
166
+ this.gallery.listen('afterChange', () => {
167
+ // on met un petit délai pour s’assurer que le DOM est prêt
168
+ console.log("EVENT: afterChange");
169
+ setTimeout(() => {
170
+ this.playCurrentSlideVideo();
171
+ }, 200);
164
172
  });
165
173
  this.gallery.listen('destroy', () => {
166
- this.pauseAllVideosExcept(null);
167
- this.lightboxService.destroy();
168
- this.onPhotoGalleryDestroy.emit();
174
+ this.pauseAllVideos();
169
175
  });
170
176
  this.gallery.listen('gettingData', (_, slide) => {
171
177
  if (slide.doGetSlideDimensions && !this.isVideo(slide.src)) {
@@ -198,26 +204,49 @@ class PhotoGalleryGroupDirective {
198
204
  this.gallery.updateSize(true);
199
205
  });
200
206
  }
201
- pauseAllVideosExcept(activeItem) {
202
- const allVideos = document.querySelectorAll('.pswp__video-wrapper video');
203
- allVideos.forEach(video => {
204
- const isActive = activeItem && video.src.includes(activeItem.src);
205
- if (!isActive) {
206
- video.pause();
207
- video.currentTime = 0;
207
+ pauseAllVideos() {
208
+ const vids = document.querySelectorAll('.pswp__video-wrapper video');
209
+ vids.forEach(v => {
210
+ try {
211
+ v.pause();
212
+ v.currentTime = 0;
208
213
  }
214
+ catch (_) { }
209
215
  });
210
216
  }
211
- playActiveVideo(activeItem) {
212
- if (!activeItem)
217
+ playCurrentSlideVideo() {
218
+ if (!this.gallery)
213
219
  return;
214
- // cherche la vidéo visible dans le conteneur actif de PhotoSwipe
215
- const activeContainer = document.querySelector('.pswp__item.pswp__item--current');
216
- if (!activeContainer)
220
+ const currentIndex = this.gallery.getCurrentIndex(); // index du slide visible
221
+ const currentItem = this.gallery.currItem;
222
+ if (!currentItem)
217
223
  return;
218
- const video = activeContainer.querySelector('video');
219
- if (video) {
220
- video.play().catch(() => { });
224
+ // 🧠 Cast correct : container est un HTMLElement
225
+ const container = this.gallery.container;
226
+ if (!container)
227
+ return;
228
+ // 🧠 Cast des enfants en tableau de HTMLElements
229
+ const slideEls = Array.from(container.children);
230
+ const total = this.gallery.items.length;
231
+ const moduloIndex = currentIndex % 3; // PhotoSwipe recycle 3 conteneurs
232
+ // Sélection du slide actif
233
+ const activeSlide = slideEls[moduloIndex];
234
+ if (!activeSlide)
235
+ return;
236
+ // Pause toutes les autres vidéos
237
+ slideEls.forEach(slide => {
238
+ const video = slide.querySelector('video');
239
+ if (video) {
240
+ if (slide === activeSlide)
241
+ return;
242
+ video.pause();
243
+ video.currentTime = 0;
244
+ }
245
+ });
246
+ // Lecture de la vidéo active (si présente)
247
+ const activeVideo = activeSlide.querySelector('video');
248
+ if (activeVideo) {
249
+ activeVideo.play().catch(() => { });
221
250
  }
222
251
  }
223
252
  }
@@ -1 +1 @@
1
- {"version":3,"file":"twogate-ngx-photo-gallery.mjs","sources":["../../../projects/core/src/lib/components/lightbox/lightbox.component.ts","../../../projects/core/src/lib/components/lightbox/lightbox.component.html","../../../projects/core/src/lib/interfaces/config.ts","../../../projects/core/src/lib/services/lightbox.service.ts","../../../projects/core/src/lib/directives/photo-gallery-group.directive.ts","../../../projects/core/src/lib/directives/photo-gallery.directive.ts","../../../projects/core/src/lib/photo-gallery.module.ts","../../../projects/core/src/public-api.ts","../../../projects/core/src/twogate-ngx-photo-gallery.ts"],"sourcesContent":["import { Component, ViewChild, ElementRef, ChangeDetectionStrategy } from '@angular/core';\n\n@Component({\n selector: 'photo-gallery-lightbox',\n templateUrl: './lightbox.component.html',\n styleUrls: ['./lightbox.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LightboxComponent {\n @ViewChild('Lightbox', { static: true }) element: ElementRef;\n\n constructor() {}\n}\n","<div class=\"lightbox-wrapper\">\n <!-- Root element of PhotoSwipe. Must have class pswp. -->\n <div class=\"pswp\" #Lightbox tabindex=\"-1\" role=\"dialog\" aria-hidden=\"true\">\n <!-- Background of PhotoSwipe.\n It's a separate element, as animating opacity is faster than rgba(). -->\n <div class=\"pswp__bg\"></div>\n <!-- Slides wrapper with overflow:hidden. -->\n <div class=\"pswp__scroll-wrap\">\n <!-- Container that holds slides. PhotoSwipe keeps only 3 slides in DOM to save memory. -->\n <!-- don't modify these 3 pswp__item elements, data is added later on. -->\n <div class=\"pswp__container\">\n <div class=\"pswp__item\"></div>\n <div class=\"pswp__item\"></div>\n <div class=\"pswp__item\"></div>\n </div>\n <!-- Default (PhotoSwipeUI_Default) interface on top of sliding area. Can be changed. -->\n <div class=\"pswp__ui pswp__ui--hidden\">\n <div class=\"pswp__top-bar\">\n <!-- Controls are self-explanatory. Order can be changed. -->\n <div class=\"pswp__counter\"></div>\n <button class=\"pswp__button pswp__button--close\" title=\"Close (Esc)\"></button>\n <button class=\"pswp__button pswp__button--share\" title=\"Share\"></button>\n <button class=\"pswp__button pswp__button--fs\" title=\"Toggle fullscreen\"></button>\n <button class=\"pswp__button pswp__button--zoom\" title=\"Zoom in/out\"></button>\n <!-- Preloader demo http://codepen.io/dimsemenov/pen/yyBWoR -->\n <!-- element will get class pswp__preloader--active when preloader is running -->\n <div class=\"pswp__preloader\">\n <div class=\"pswp__preloader__icn\">\n <div class=\"pswp__preloader__cut\">\n <div class=\"pswp__preloader__donut\"></div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"pswp__share-modal pswp__share-modal--hidden pswp__single-tap\">\n <div class=\"pswp__share-tooltip\"></div>\n </div>\n <button class=\"pswp__button pswp__button--arrow--left\" title=\"Previous (arrow left)\"></button>\n <button class=\"pswp__button pswp__button--arrow--right\" title=\"Next (arrow right)\"></button>\n <div class=\"pswp__caption\">\n <div class=\"pswp__caption__center\"></div>\n </div>\n </div>\n </div>\n </div>\n</div>\n","import { GalleryOptions } from './photoswipe';\n\nexport abstract class PhotoGalleryConfig {\n defaultOptions?: GalleryOptions;\n}\n","import { Injectable, ComponentRef, ElementRef, ApplicationRef, createComponent } from '@angular/core';\n\nimport { LightboxComponent } from '../components/lightbox/lightbox.component';\n\n@Injectable({ providedIn: 'root' })\nexport class LightboxService {\n private lightbox: ComponentRef<LightboxComponent> | null;\n private lightboxElement: ElementRef | null;\n\n constructor(private applicationRef: ApplicationRef) {\n this.lightbox = null;\n this.lightboxElement = null;\n }\n\n create() {\n this.lightbox = createComponent(\n LightboxComponent,\n { environmentInjector: this.applicationRef.injector }\n );\n document.body.appendChild(this.lightbox.location.nativeElement);\n this.applicationRef.attachView(this.lightbox.hostView);\n\n this.lightboxElement = this.lightbox.instance.element;\n }\n\n destroy() {\n if (this.lightbox) {\n this.applicationRef.detachView(this.lightbox.hostView);\n this.lightbox = null;\n this.lightboxElement = null;\n }\n }\n\n /**\n * Returns the lightbox element.\n * This method is called after the lightbox is created.\n * @returns HTMLElement\n */\n getLightboxElement(): HTMLElement {\n return this.lightboxElement.nativeElement as HTMLElement;\n }\n}\n","import { Directive, Output, Input, EventEmitter, Optional } from '@angular/core';\nimport PhotoSwipe from 'photoswipe';\nimport PhotoSwipeUI_Default from 'photoswipe/dist/photoswipe-ui-default';\n\nimport { PhotoGalleryConfig } from '../interfaces/config';\nimport { GalleryImage, GalleryItem, GalleryOptions } from '../interfaces/photoswipe';\nimport { LightboxService } from '../services/lightbox.service';\n\nexport const DEFAULT_OPTIONS = {\n history: false,\n closeEl: true,\n captionEl: false,\n fullscreenEl: false,\n zoomEl: true,\n shareEl: false,\n counterEl: true,\n arrowEl: false,\n preloaderEl: true,\n};\n\n@Directive({\n selector: '[photoGalleryGroup]',\n})\nexport class PhotoGalleryGroupDirective {\n @Input('photoGalleryGroup') options: GalleryOptions;\n @Output() onPhotoGalleryInit = new EventEmitter();\n @Output() onPhotoGalleryDestroy = new EventEmitter();\n\n private defaultOptions: GalleryOptions;\n private gallery: any;\n private galleryItems: { [key: string]: GalleryItem } = {};\n private galleryItemIds: Set<string> = new Set<string>();\n private galleryImages: GalleryImage[] = [];\n\n constructor(\n @Optional() private photoGalleryConfig: PhotoGalleryConfig,\n private lightboxService: LightboxService\n ) {\n this.defaultOptions = { ...DEFAULT_OPTIONS, ...this.photoGalleryConfig?.defaultOptions };\n }\n\n private isVideo(url: string): boolean {\n return url?.includes('/videos/');\n }\n\n registerGalleryItem(item: { id: string; element: HTMLElement; imageUrl: string; caption?: string }): void {\n const image: GalleryImage = {\n id: item.id,\n src: item.imageUrl,\n ...(item.caption ? { title: item.caption } : {}),\n w: 0,\n h: 0,\n doGetSlideDimensions: true,\n };\n this.galleryItems[item.id] = {\n id: item.id,\n element: item.element,\n image,\n };\n\n this.galleryItemIds.add(item.id);\n }\n\n unregisterGalleryItem(id: string): void {\n this.galleryItemIds.delete(id);\n }\n\n async openPhotoSwipe(id: string): Promise<void> {\n this.lightboxService.create();\n\n const targetItem = this.galleryItems[id].image;\n\n if (targetItem.doGetSlideDimensions && !this.isVideo(targetItem.src)) {\n const targetImage = await loadImage(targetItem.src);\n targetItem.w = targetImage.naturalWidth;\n targetItem.h = targetImage.naturalHeight;\n delete targetItem.doGetSlideDimensions;\n }\n\n // Crée la liste complète des médias\n this.galleryImages = ([...this.galleryItemIds].map((key) => {\n const media = this.galleryItems[key].image;\n\n if (this.isVideo(media.src)) {\n return {\n id: media.id,\n html: `\n <div class=\"pswp__video-wrapper\">\n <video\n src=\"${media.src}\"\n controls\n preload=\"metadata\"\n style=\"max-width: 100%; max-height: 100%; border-radius: 8px;\"\n ></video>\n </div>\n `,\n title: media.title || '',\n w: 1920,\n h: 1080,\n };\n }\n\n return media;\n })) as any[];\n\n const idx = this.galleryImages.findIndex((image) => image.id === id);\n const options: GalleryOptions = { ...this.defaultOptions, ...this.options };\n options.index = idx;\n\n options.getThumbBoundsFn = (imageIndex: number) => {\n const key = this.galleryImages[imageIndex].id;\n const thumbnail = this.galleryItems[key].element;\n const origin = this.galleryItems[key].image;\n const pageYScroll = window.pageYOffset || document.documentElement.scrollTop;\n const rect = thumbnail.getBoundingClientRect();\n\n const thumbnailRate = rect.height / rect.width;\n const originRate = origin.h / origin.w;\n let x: number, y: number, w: number;\n\n if (thumbnailRate > originRate) {\n y = rect.top + pageYScroll;\n w = (origin.w * rect.height) / origin.h;\n x = rect.left - (w - rect.width) / 2;\n } else {\n const imageHeight = (origin.h * rect.width) / origin.w;\n x = rect.left;\n w = rect.width;\n y = rect.top + pageYScroll - (imageHeight - rect.height) / 2;\n }\n\n return { x, y, w };\n };\n\n const photoSwipe = this.lightboxService.getLightboxElement();\n\n this.gallery = new PhotoSwipe(photoSwipe, PhotoSwipeUI_Default, this.galleryImages, options);\n\n this.gallery.listen('afterChange', () => {\n // on arrête toutes les vidéos existantes quand on change de slide\n this.pauseAllVideosExcept(null);\n });\n\n this.gallery.listen('slideChangeComplete', () => {\n // quand la transition est totalement terminée, on peut jouer la vidéo active\n const currItem = this.gallery.currItem;\n this.playActiveVideo(currItem);\n });\n\n this.gallery.listen('destroy', () => {\n this.pauseAllVideosExcept(null);\n this.lightboxService.destroy();\n this.onPhotoGalleryDestroy.emit();\n });\n\n this.gallery.listen('gettingData', (_, slide: any) => {\n if (slide.doGetSlideDimensions && !this.isVideo(slide.src)) {\n setTimeout(async () => await this.getSlideDimensions(slide), 300);\n }\n });\n\n this.gallery.listen('imageLoadComplete', async (_, slide: any) => {\n if (slide.doGetSlideDimensions && !this.isVideo(slide.src)) {\n await this.getSlideDimensions(slide);\n }\n });\n\n this.gallery.listen('destroy', () => {\n this.lightboxService.destroy();\n this.onPhotoGalleryDestroy.emit();\n });\n\n this.onPhotoGalleryInit.emit();\n this.gallery.init();\n }\n\n private async getSlideDimensions(slide: GalleryImage): Promise<void> {\n if (!slide.doGetSlideDimensions) {\n return;\n }\n\n const image: HTMLImageElement = await loadImage(slide.src).catch(() => null);\n\n slide.doGetSlideDimensions = false;\n\n slide.w = image.naturalWidth;\n slide.h = image.naturalHeight;\n\n this.gallery.invalidateCurrItems();\n this.gallery.updateSize(true);\n }\n private pauseAllVideosExcept(activeItem: any) {\n const allVideos = document.querySelectorAll<HTMLVideoElement>('.pswp__video-wrapper video');\n\n allVideos.forEach(video => {\n const isActive = activeItem && video.src.includes(activeItem.src);\n if (!isActive) {\n video.pause();\n video.currentTime = 0;\n }\n });\n }\n\n private playActiveVideo(activeItem: any) {\n if (!activeItem) return;\n\n // cherche la vidéo visible dans le conteneur actif de PhotoSwipe\n const activeContainer = document.querySelector('.pswp__item.pswp__item--current');\n if (!activeContainer) return;\n\n const video = activeContainer.querySelector<HTMLVideoElement>('video');\n if (video) {\n video.play().catch(() => {});\n }\n }\n}\n\nfunction loadImage(path: string): Promise<HTMLImageElement> {\n return new Promise((resolve, reject) => {\n const image = new Image();\n image.onload = () => resolve(image);\n image.onerror = (e) => reject(e);\n image.src = path;\n });\n}\n\n","import { Directive, HostListener, Input, ElementRef, AfterContentInit, OnDestroy } from '@angular/core';\n\nimport { PhotoGalleryGroupDirective } from './photo-gallery-group.directive';\n\n@Directive({\n selector: '[photoGallery]',\n})\nexport class PhotoGalleryDirective implements AfterContentInit, OnDestroy {\n @Input('photoGallery') imageUrl: string;\n @Input() photoGalleryTrackBy: string;\n @Input() photoGalleryCaption: string;\n id: string;\n\n constructor(private el: ElementRef, private photoGalleryGroup: PhotoGalleryGroupDirective) {}\n\n @HostListener('click')\n async openPhotoSwipe(): Promise<void> {\n await this.photoGalleryGroup.openPhotoSwipe(this.id);\n }\n\n ngAfterContentInit(): void {\n this.id = this.photoGalleryTrackBy || this.imageUrl;\n this.photoGalleryGroup.registerGalleryItem({\n id: this.id,\n element: this.el.nativeElement as HTMLElement,\n imageUrl: this.imageUrl,\n caption: this.photoGalleryCaption,\n });\n }\n\n ngOnDestroy(): void {\n this.photoGalleryGroup.unregisterGalleryItem(this.id);\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { LightboxComponent } from './components/lightbox/lightbox.component';\nimport { PhotoGalleryGroupDirective } from './directives/photo-gallery-group.directive';\nimport { PhotoGalleryDirective } from './directives/photo-gallery.directive';\nimport { PhotoGalleryConfig } from './interfaces/config';\n\n@NgModule({\n declarations: [LightboxComponent, PhotoGalleryDirective, PhotoGalleryGroupDirective],\n providers: [],\n imports: [],\n exports: [PhotoGalleryDirective, PhotoGalleryGroupDirective],\n})\nexport class PhotoGalleryModule {\n static forRoot(config: PhotoGalleryConfig): ModuleWithProviders<PhotoGalleryModule> {\n return {\n ngModule: PhotoGalleryModule,\n providers: [\n {\n provide: PhotoGalleryConfig,\n useValue: config,\n },\n ],\n };\n }\n}\n","/*\n * Public API Surface of core\n */\n\nexport * from './lib/photo-gallery.module';\n\nexport * from './lib/directives/photo-gallery-group.directive';\nexport * from './lib/directives/photo-gallery.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.PhotoGalleryConfig","i2.LightboxService","i1.PhotoGalleryGroupDirective"],"mappings":"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"}
1
+ {"version":3,"file":"twogate-ngx-photo-gallery.mjs","sources":["../../../projects/core/src/lib/components/lightbox/lightbox.component.ts","../../../projects/core/src/lib/components/lightbox/lightbox.component.html","../../../projects/core/src/lib/interfaces/config.ts","../../../projects/core/src/lib/services/lightbox.service.ts","../../../projects/core/src/lib/directives/photo-gallery-group.directive.ts","../../../projects/core/src/lib/directives/photo-gallery.directive.ts","../../../projects/core/src/lib/photo-gallery.module.ts","../../../projects/core/src/public-api.ts","../../../projects/core/src/twogate-ngx-photo-gallery.ts"],"sourcesContent":["import { Component, ViewChild, ElementRef, ChangeDetectionStrategy } from '@angular/core';\n\n@Component({\n selector: 'photo-gallery-lightbox',\n templateUrl: './lightbox.component.html',\n styleUrls: ['./lightbox.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LightboxComponent {\n @ViewChild('Lightbox', { static: true }) element: ElementRef;\n\n constructor() {}\n}\n","<div class=\"lightbox-wrapper\">\n <!-- Root element of PhotoSwipe. Must have class pswp. -->\n <div class=\"pswp\" #Lightbox tabindex=\"-1\" role=\"dialog\" aria-hidden=\"true\">\n <!-- Background of PhotoSwipe.\n It's a separate element, as animating opacity is faster than rgba(). -->\n <div class=\"pswp__bg\"></div>\n <!-- Slides wrapper with overflow:hidden. -->\n <div class=\"pswp__scroll-wrap\">\n <!-- Container that holds slides. PhotoSwipe keeps only 3 slides in DOM to save memory. -->\n <!-- don't modify these 3 pswp__item elements, data is added later on. -->\n <div class=\"pswp__container\">\n <div class=\"pswp__item\"></div>\n <div class=\"pswp__item\"></div>\n <div class=\"pswp__item\"></div>\n </div>\n <!-- Default (PhotoSwipeUI_Default) interface on top of sliding area. Can be changed. -->\n <div class=\"pswp__ui pswp__ui--hidden\">\n <div class=\"pswp__top-bar\">\n <!-- Controls are self-explanatory. Order can be changed. -->\n <div class=\"pswp__counter\"></div>\n <button class=\"pswp__button pswp__button--close\" title=\"Close (Esc)\"></button>\n <button class=\"pswp__button pswp__button--share\" title=\"Share\"></button>\n <button class=\"pswp__button pswp__button--fs\" title=\"Toggle fullscreen\"></button>\n <button class=\"pswp__button pswp__button--zoom\" title=\"Zoom in/out\"></button>\n <!-- Preloader demo http://codepen.io/dimsemenov/pen/yyBWoR -->\n <!-- element will get class pswp__preloader--active when preloader is running -->\n <div class=\"pswp__preloader\">\n <div class=\"pswp__preloader__icn\">\n <div class=\"pswp__preloader__cut\">\n <div class=\"pswp__preloader__donut\"></div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"pswp__share-modal pswp__share-modal--hidden pswp__single-tap\">\n <div class=\"pswp__share-tooltip\"></div>\n </div>\n <button class=\"pswp__button pswp__button--arrow--left\" title=\"Previous (arrow left)\"></button>\n <button class=\"pswp__button pswp__button--arrow--right\" title=\"Next (arrow right)\"></button>\n <div class=\"pswp__caption\">\n <div class=\"pswp__caption__center\"></div>\n </div>\n </div>\n </div>\n </div>\n</div>\n","import { GalleryOptions } from './photoswipe';\n\nexport abstract class PhotoGalleryConfig {\n defaultOptions?: GalleryOptions;\n}\n","import { Injectable, ComponentRef, ElementRef, ApplicationRef, createComponent } from '@angular/core';\n\nimport { LightboxComponent } from '../components/lightbox/lightbox.component';\n\n@Injectable({ providedIn: 'root' })\nexport class LightboxService {\n private lightbox: ComponentRef<LightboxComponent> | null;\n private lightboxElement: ElementRef | null;\n\n constructor(private applicationRef: ApplicationRef) {\n this.lightbox = null;\n this.lightboxElement = null;\n }\n\n create() {\n this.lightbox = createComponent(\n LightboxComponent,\n { environmentInjector: this.applicationRef.injector }\n );\n document.body.appendChild(this.lightbox.location.nativeElement);\n this.applicationRef.attachView(this.lightbox.hostView);\n\n this.lightboxElement = this.lightbox.instance.element;\n }\n\n destroy() {\n if (this.lightbox) {\n this.applicationRef.detachView(this.lightbox.hostView);\n this.lightbox = null;\n this.lightboxElement = null;\n }\n }\n\n /**\n * Returns the lightbox element.\n * This method is called after the lightbox is created.\n * @returns HTMLElement\n */\n getLightboxElement(): HTMLElement {\n return this.lightboxElement.nativeElement as HTMLElement;\n }\n}\n","import { Directive, Output, Input, EventEmitter, Optional } from '@angular/core';\nimport PhotoSwipe from 'photoswipe';\nimport PhotoSwipeUI_Default from 'photoswipe/dist/photoswipe-ui-default';\n\nimport { PhotoGalleryConfig } from '../interfaces/config';\nimport { GalleryImage, GalleryItem, GalleryOptions } from '../interfaces/photoswipe';\nimport { LightboxService } from '../services/lightbox.service';\n\nexport const DEFAULT_OPTIONS = {\n history: false,\n closeEl: true,\n captionEl: false,\n fullscreenEl: false,\n zoomEl: true,\n shareEl: false,\n counterEl: true,\n arrowEl: false,\n preloaderEl: true,\n};\n\n@Directive({\n selector: '[photoGalleryGroup]',\n})\nexport class PhotoGalleryGroupDirective {\n @Input('photoGalleryGroup') options: GalleryOptions;\n @Output() onPhotoGalleryInit = new EventEmitter();\n @Output() onPhotoGalleryDestroy = new EventEmitter();\n\n private defaultOptions: GalleryOptions;\n private gallery: PhotoSwipe<any> | null = null;\n private galleryItems: { [key: string]: GalleryItem } = {};\n private galleryItemIds: Set<string> = new Set<string>();\n private galleryImages: GalleryImage[] = [];\n\n constructor(\n @Optional() private photoGalleryConfig: PhotoGalleryConfig,\n private lightboxService: LightboxService\n ) {\n this.defaultOptions = { ...DEFAULT_OPTIONS, ...this.photoGalleryConfig?.defaultOptions };\n }\n\n private isVideo(url: string): boolean {\n return url?.includes('/videos/');\n }\n\n registerGalleryItem(item: { id: string; element: HTMLElement; imageUrl: string; caption?: string }): void {\n const image: GalleryImage = {\n id: item.id,\n src: item.imageUrl,\n ...(item.caption ? { title: item.caption } : {}),\n w: 0,\n h: 0,\n doGetSlideDimensions: true,\n };\n this.galleryItems[item.id] = {\n id: item.id,\n element: item.element,\n image,\n };\n\n this.galleryItemIds.add(item.id);\n }\n\n unregisterGalleryItem(id: string): void {\n this.galleryItemIds.delete(id);\n }\n\n async openPhotoSwipe(id: string): Promise<void> {\n this.lightboxService.create();\n\n const targetItem = this.galleryItems[id].image;\n\n if (targetItem.doGetSlideDimensions && !this.isVideo(targetItem.src)) {\n const targetImage = await loadImage(targetItem.src);\n targetItem.w = targetImage.naturalWidth;\n targetItem.h = targetImage.naturalHeight;\n delete targetItem.doGetSlideDimensions;\n }\n\n // Crée la liste complète des médias\n this.galleryImages = ([...this.galleryItemIds].map((key) => {\n const media = this.galleryItems[key].image;\n\n if (this.isVideo(media.src)) {\n return {\n id: media.id,\n html: `\n <div class=\"pswp__video-wrapper\">\n <video\n src=\"${media.src}\"\n controls\n preload=\"metadata\"\n style=\"max-width: 100%; max-height: 100%; border-radius: 8px;\"\n ></video>\n </div>\n `,\n title: media.title || '',\n w: 1920,\n h: 1080,\n };\n }\n\n return media;\n })) as any[];\n\n const idx = this.galleryImages.findIndex((image) => image.id === id);\n const options: GalleryOptions = { ...this.defaultOptions, ...this.options };\n options.index = idx;\n\n options.getThumbBoundsFn = (imageIndex: number) => {\n const key = this.galleryImages[imageIndex].id;\n const thumbnail = this.galleryItems[key].element;\n const origin = this.galleryItems[key].image;\n const pageYScroll = window.pageYOffset || document.documentElement.scrollTop;\n const rect = thumbnail.getBoundingClientRect();\n\n const thumbnailRate = rect.height / rect.width;\n const originRate = origin.h / origin.w;\n let x: number, y: number, w: number;\n\n if (thumbnailRate > originRate) {\n y = rect.top + pageYScroll;\n w = (origin.w * rect.height) / origin.h;\n x = rect.left - (w - rect.width) / 2;\n } else {\n const imageHeight = (origin.h * rect.width) / origin.w;\n x = rect.left;\n w = rect.width;\n y = rect.top + pageYScroll - (imageHeight - rect.height) / 2;\n }\n\n return { x, y, w };\n };\n\n const photoSwipe = this.lightboxService.getLightboxElement();\n\n this.gallery = new PhotoSwipe(photoSwipe, PhotoSwipeUI_Default, this.galleryImages, options);\n\n this.gallery.listen('beforeChange', () => {\n console.log(\"EVENT: 'beforeChange'\");\n this.pauseAllVideos();\n });\n\n this.gallery.listen('initialZoomInEnd', () => {\n // au début, joue la vidéo si c’est une vidéo\n console.log(\"EVENT: 'initialZoomInEnd'\");\n this.playCurrentSlideVideo();\n });\n\n this.gallery.listen('afterChange', () => {\n // on met un petit délai pour s’assurer que le DOM est prêt\n console.log(\"EVENT: afterChange\");\n setTimeout(() => {\n this.playCurrentSlideVideo();\n }, 200);\n });\n\n this.gallery.listen('destroy', () => {\n this.pauseAllVideos();\n });\n\n this.gallery.listen('gettingData', (_, slide: any) => {\n if (slide.doGetSlideDimensions && !this.isVideo(slide.src)) {\n setTimeout(async () => await this.getSlideDimensions(slide), 300);\n }\n });\n\n this.gallery.listen('imageLoadComplete', async (_, slide: any) => {\n if (slide.doGetSlideDimensions && !this.isVideo(slide.src)) {\n await this.getSlideDimensions(slide);\n }\n });\n\n this.gallery.listen('destroy', () => {\n this.lightboxService.destroy();\n this.onPhotoGalleryDestroy.emit();\n });\n\n this.onPhotoGalleryInit.emit();\n this.gallery.init();\n }\n\n private async getSlideDimensions(slide: GalleryImage): Promise<void> {\n if (!slide.doGetSlideDimensions) {\n return;\n }\n\n const image: HTMLImageElement = await loadImage(slide.src).catch(() => null);\n\n slide.doGetSlideDimensions = false;\n\n slide.w = image.naturalWidth;\n slide.h = image.naturalHeight;\n\n this.gallery.invalidateCurrItems();\n this.gallery.updateSize(true);\n }\n private pauseAllVideos() {\n const vids = document.querySelectorAll<HTMLVideoElement>('.pswp__video-wrapper video');\n vids.forEach(v => {\n try {\n v.pause();\n v.currentTime = 0;\n } catch(_){}\n });\n }\n\n private playCurrentSlideVideo() {\n if (!this.gallery) return;\n\n const currentIndex = this.gallery.getCurrentIndex(); // index du slide visible\n const currentItem = this.gallery.currItem;\n if (!currentItem) return;\n\n // 🧠 Cast correct : container est un HTMLElement\n const container = this.gallery.container as HTMLElement;\n if (!container) return;\n\n // 🧠 Cast des enfants en tableau de HTMLElements\n const slideEls = Array.from(container.children) as HTMLElement[];\n const total = this.gallery.items.length;\n const moduloIndex = currentIndex % 3; // PhotoSwipe recycle 3 conteneurs\n\n // Sélection du slide actif\n const activeSlide = slideEls[moduloIndex];\n if (!activeSlide) return;\n\n // Pause toutes les autres vidéos\n slideEls.forEach(slide => {\n const video = slide.querySelector<HTMLVideoElement>('video');\n if (video) {\n if (slide === activeSlide) return;\n video.pause();\n video.currentTime = 0;\n }\n });\n\n // Lecture de la vidéo active (si présente)\n const activeVideo = activeSlide.querySelector<HTMLVideoElement>('video');\n if (activeVideo) {\n activeVideo.play().catch(() => {});\n }\n }\n}\n\nfunction loadImage(path: string): Promise<HTMLImageElement> {\n return new Promise((resolve, reject) => {\n const image = new Image();\n image.onload = () => resolve(image);\n image.onerror = (e) => reject(e);\n image.src = path;\n });\n}\n\n","import { Directive, HostListener, Input, ElementRef, AfterContentInit, OnDestroy } from '@angular/core';\n\nimport { PhotoGalleryGroupDirective } from './photo-gallery-group.directive';\n\n@Directive({\n selector: '[photoGallery]',\n})\nexport class PhotoGalleryDirective implements AfterContentInit, OnDestroy {\n @Input('photoGallery') imageUrl: string;\n @Input() photoGalleryTrackBy: string;\n @Input() photoGalleryCaption: string;\n id: string;\n\n constructor(private el: ElementRef, private photoGalleryGroup: PhotoGalleryGroupDirective) {}\n\n @HostListener('click')\n async openPhotoSwipe(): Promise<void> {\n await this.photoGalleryGroup.openPhotoSwipe(this.id);\n }\n\n ngAfterContentInit(): void {\n this.id = this.photoGalleryTrackBy || this.imageUrl;\n this.photoGalleryGroup.registerGalleryItem({\n id: this.id,\n element: this.el.nativeElement as HTMLElement,\n imageUrl: this.imageUrl,\n caption: this.photoGalleryCaption,\n });\n }\n\n ngOnDestroy(): void {\n this.photoGalleryGroup.unregisterGalleryItem(this.id);\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { LightboxComponent } from './components/lightbox/lightbox.component';\nimport { PhotoGalleryGroupDirective } from './directives/photo-gallery-group.directive';\nimport { PhotoGalleryDirective } from './directives/photo-gallery.directive';\nimport { PhotoGalleryConfig } from './interfaces/config';\n\n@NgModule({\n declarations: [LightboxComponent, PhotoGalleryDirective, PhotoGalleryGroupDirective],\n providers: [],\n imports: [],\n exports: [PhotoGalleryDirective, PhotoGalleryGroupDirective],\n})\nexport class PhotoGalleryModule {\n static forRoot(config: PhotoGalleryConfig): ModuleWithProviders<PhotoGalleryModule> {\n return {\n ngModule: PhotoGalleryModule,\n providers: [\n {\n provide: PhotoGalleryConfig,\n useValue: config,\n },\n ],\n };\n }\n}\n","/*\n * Public API Surface of core\n */\n\nexport * from './lib/photo-gallery.module';\n\nexport * from './lib/directives/photo-gallery-group.directive';\nexport * from './lib/directives/photo-gallery.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.PhotoGalleryConfig","i2.LightboxService","i1.PhotoGalleryGroupDirective"],"mappings":"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"}
@@ -71,6 +71,7 @@ class PhotoGalleryGroupDirective {
71
71
  this.lightboxService = lightboxService;
72
72
  this.onPhotoGalleryInit = new EventEmitter();
73
73
  this.onPhotoGalleryDestroy = new EventEmitter();
74
+ this.gallery = null;
74
75
  this.galleryItems = {};
75
76
  this.galleryItemIds = new Set();
76
77
  this.galleryImages = [];
@@ -157,19 +158,24 @@ class PhotoGalleryGroupDirective {
157
158
  };
158
159
  const photoSwipe = this.lightboxService.getLightboxElement();
159
160
  this.gallery = new PhotoSwipe(photoSwipe, PhotoSwipeUI_Default, this.galleryImages, options);
160
- this.gallery.listen('afterChange', () => {
161
- // on arrête toutes les vidéos existantes quand on change de slide
162
- this.pauseAllVideosExcept(null);
161
+ this.gallery.listen('beforeChange', () => {
162
+ console.log("EVENT: 'beforeChange'");
163
+ this.pauseAllVideos();
164
+ });
165
+ this.gallery.listen('initialZoomInEnd', () => {
166
+ // au début, joue la vidéo si c’est une vidéo
167
+ console.log("EVENT: 'initialZoomInEnd'");
168
+ this.playCurrentSlideVideo();
163
169
  });
164
- this.gallery.listen('slideChangeComplete', () => {
165
- // quand la transition est totalement terminée, on peut jouer la vidéo active
166
- const currItem = this.gallery.currItem;
167
- this.playActiveVideo(currItem);
170
+ this.gallery.listen('afterChange', () => {
171
+ // on met un petit délai pour s’assurer que le DOM est prêt
172
+ console.log("EVENT: afterChange");
173
+ setTimeout(() => {
174
+ this.playCurrentSlideVideo();
175
+ }, 200);
168
176
  });
169
177
  this.gallery.listen('destroy', () => {
170
- this.pauseAllVideosExcept(null);
171
- this.lightboxService.destroy();
172
- this.onPhotoGalleryDestroy.emit();
178
+ this.pauseAllVideos();
173
179
  });
174
180
  this.gallery.listen('gettingData', (_, slide) => {
175
181
  if (slide.doGetSlideDimensions && !this.isVideo(slide.src)) {
@@ -199,26 +205,49 @@ class PhotoGalleryGroupDirective {
199
205
  this.gallery.invalidateCurrItems();
200
206
  this.gallery.updateSize(true);
201
207
  }
202
- pauseAllVideosExcept(activeItem) {
203
- const allVideos = document.querySelectorAll('.pswp__video-wrapper video');
204
- allVideos.forEach(video => {
205
- const isActive = activeItem && video.src.includes(activeItem.src);
206
- if (!isActive) {
207
- video.pause();
208
- video.currentTime = 0;
208
+ pauseAllVideos() {
209
+ const vids = document.querySelectorAll('.pswp__video-wrapper video');
210
+ vids.forEach(v => {
211
+ try {
212
+ v.pause();
213
+ v.currentTime = 0;
209
214
  }
215
+ catch (_) { }
210
216
  });
211
217
  }
212
- playActiveVideo(activeItem) {
213
- if (!activeItem)
218
+ playCurrentSlideVideo() {
219
+ if (!this.gallery)
214
220
  return;
215
- // cherche la vidéo visible dans le conteneur actif de PhotoSwipe
216
- const activeContainer = document.querySelector('.pswp__item.pswp__item--current');
217
- if (!activeContainer)
221
+ const currentIndex = this.gallery.getCurrentIndex(); // index du slide visible
222
+ const currentItem = this.gallery.currItem;
223
+ if (!currentItem)
218
224
  return;
219
- const video = activeContainer.querySelector('video');
220
- if (video) {
221
- video.play().catch(() => { });
225
+ // 🧠 Cast correct : container est un HTMLElement
226
+ const container = this.gallery.container;
227
+ if (!container)
228
+ return;
229
+ // 🧠 Cast des enfants en tableau de HTMLElements
230
+ const slideEls = Array.from(container.children);
231
+ const total = this.gallery.items.length;
232
+ const moduloIndex = currentIndex % 3; // PhotoSwipe recycle 3 conteneurs
233
+ // Sélection du slide actif
234
+ const activeSlide = slideEls[moduloIndex];
235
+ if (!activeSlide)
236
+ return;
237
+ // Pause toutes les autres vidéos
238
+ slideEls.forEach(slide => {
239
+ const video = slide.querySelector('video');
240
+ if (video) {
241
+ if (slide === activeSlide)
242
+ return;
243
+ video.pause();
244
+ video.currentTime = 0;
245
+ }
246
+ });
247
+ // Lecture de la vidéo active (si présente)
248
+ const activeVideo = activeSlide.querySelector('video');
249
+ if (activeVideo) {
250
+ activeVideo.play().catch(() => { });
222
251
  }
223
252
  }
224
253
  }
@@ -1 +1 @@
1
- {"version":3,"file":"twogate-ngx-photo-gallery.mjs","sources":["../../../projects/core/src/lib/components/lightbox/lightbox.component.ts","../../../projects/core/src/lib/components/lightbox/lightbox.component.html","../../../projects/core/src/lib/interfaces/config.ts","../../../projects/core/src/lib/services/lightbox.service.ts","../../../projects/core/src/lib/directives/photo-gallery-group.directive.ts","../../../projects/core/src/lib/directives/photo-gallery.directive.ts","../../../projects/core/src/lib/photo-gallery.module.ts","../../../projects/core/src/public-api.ts","../../../projects/core/src/twogate-ngx-photo-gallery.ts"],"sourcesContent":["import { Component, ViewChild, ElementRef, ChangeDetectionStrategy } from '@angular/core';\n\n@Component({\n selector: 'photo-gallery-lightbox',\n templateUrl: './lightbox.component.html',\n styleUrls: ['./lightbox.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LightboxComponent {\n @ViewChild('Lightbox', { static: true }) element: ElementRef;\n\n constructor() {}\n}\n","<div class=\"lightbox-wrapper\">\n <!-- Root element of PhotoSwipe. Must have class pswp. -->\n <div class=\"pswp\" #Lightbox tabindex=\"-1\" role=\"dialog\" aria-hidden=\"true\">\n <!-- Background of PhotoSwipe.\n It's a separate element, as animating opacity is faster than rgba(). -->\n <div class=\"pswp__bg\"></div>\n <!-- Slides wrapper with overflow:hidden. -->\n <div class=\"pswp__scroll-wrap\">\n <!-- Container that holds slides. PhotoSwipe keeps only 3 slides in DOM to save memory. -->\n <!-- don't modify these 3 pswp__item elements, data is added later on. -->\n <div class=\"pswp__container\">\n <div class=\"pswp__item\"></div>\n <div class=\"pswp__item\"></div>\n <div class=\"pswp__item\"></div>\n </div>\n <!-- Default (PhotoSwipeUI_Default) interface on top of sliding area. Can be changed. -->\n <div class=\"pswp__ui pswp__ui--hidden\">\n <div class=\"pswp__top-bar\">\n <!-- Controls are self-explanatory. Order can be changed. -->\n <div class=\"pswp__counter\"></div>\n <button class=\"pswp__button pswp__button--close\" title=\"Close (Esc)\"></button>\n <button class=\"pswp__button pswp__button--share\" title=\"Share\"></button>\n <button class=\"pswp__button pswp__button--fs\" title=\"Toggle fullscreen\"></button>\n <button class=\"pswp__button pswp__button--zoom\" title=\"Zoom in/out\"></button>\n <!-- Preloader demo http://codepen.io/dimsemenov/pen/yyBWoR -->\n <!-- element will get class pswp__preloader--active when preloader is running -->\n <div class=\"pswp__preloader\">\n <div class=\"pswp__preloader__icn\">\n <div class=\"pswp__preloader__cut\">\n <div class=\"pswp__preloader__donut\"></div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"pswp__share-modal pswp__share-modal--hidden pswp__single-tap\">\n <div class=\"pswp__share-tooltip\"></div>\n </div>\n <button class=\"pswp__button pswp__button--arrow--left\" title=\"Previous (arrow left)\"></button>\n <button class=\"pswp__button pswp__button--arrow--right\" title=\"Next (arrow right)\"></button>\n <div class=\"pswp__caption\">\n <div class=\"pswp__caption__center\"></div>\n </div>\n </div>\n </div>\n </div>\n</div>\n","import { GalleryOptions } from './photoswipe';\n\nexport abstract class PhotoGalleryConfig {\n defaultOptions?: GalleryOptions;\n}\n","import { Injectable, ComponentRef, ElementRef, ApplicationRef, createComponent } from '@angular/core';\n\nimport { LightboxComponent } from '../components/lightbox/lightbox.component';\n\n@Injectable({ providedIn: 'root' })\nexport class LightboxService {\n private lightbox: ComponentRef<LightboxComponent> | null;\n private lightboxElement: ElementRef | null;\n\n constructor(private applicationRef: ApplicationRef) {\n this.lightbox = null;\n this.lightboxElement = null;\n }\n\n create() {\n this.lightbox = createComponent(\n LightboxComponent,\n { environmentInjector: this.applicationRef.injector }\n );\n document.body.appendChild(this.lightbox.location.nativeElement);\n this.applicationRef.attachView(this.lightbox.hostView);\n\n this.lightboxElement = this.lightbox.instance.element;\n }\n\n destroy() {\n if (this.lightbox) {\n this.applicationRef.detachView(this.lightbox.hostView);\n this.lightbox = null;\n this.lightboxElement = null;\n }\n }\n\n /**\n * Returns the lightbox element.\n * This method is called after the lightbox is created.\n * @returns HTMLElement\n */\n getLightboxElement(): HTMLElement {\n return this.lightboxElement.nativeElement as HTMLElement;\n }\n}\n","import { Directive, Output, Input, EventEmitter, Optional } from '@angular/core';\nimport PhotoSwipe from 'photoswipe';\nimport PhotoSwipeUI_Default from 'photoswipe/dist/photoswipe-ui-default';\n\nimport { PhotoGalleryConfig } from '../interfaces/config';\nimport { GalleryImage, GalleryItem, GalleryOptions } from '../interfaces/photoswipe';\nimport { LightboxService } from '../services/lightbox.service';\n\nexport const DEFAULT_OPTIONS = {\n history: false,\n closeEl: true,\n captionEl: false,\n fullscreenEl: false,\n zoomEl: true,\n shareEl: false,\n counterEl: true,\n arrowEl: false,\n preloaderEl: true,\n};\n\n@Directive({\n selector: '[photoGalleryGroup]',\n})\nexport class PhotoGalleryGroupDirective {\n @Input('photoGalleryGroup') options: GalleryOptions;\n @Output() onPhotoGalleryInit = new EventEmitter();\n @Output() onPhotoGalleryDestroy = new EventEmitter();\n\n private defaultOptions: GalleryOptions;\n private gallery: any;\n private galleryItems: { [key: string]: GalleryItem } = {};\n private galleryItemIds: Set<string> = new Set<string>();\n private galleryImages: GalleryImage[] = [];\n\n constructor(\n @Optional() private photoGalleryConfig: PhotoGalleryConfig,\n private lightboxService: LightboxService\n ) {\n this.defaultOptions = { ...DEFAULT_OPTIONS, ...this.photoGalleryConfig?.defaultOptions };\n }\n\n private isVideo(url: string): boolean {\n return url?.includes('/videos/');\n }\n\n registerGalleryItem(item: { id: string; element: HTMLElement; imageUrl: string; caption?: string }): void {\n const image: GalleryImage = {\n id: item.id,\n src: item.imageUrl,\n ...(item.caption ? { title: item.caption } : {}),\n w: 0,\n h: 0,\n doGetSlideDimensions: true,\n };\n this.galleryItems[item.id] = {\n id: item.id,\n element: item.element,\n image,\n };\n\n this.galleryItemIds.add(item.id);\n }\n\n unregisterGalleryItem(id: string): void {\n this.galleryItemIds.delete(id);\n }\n\n async openPhotoSwipe(id: string): Promise<void> {\n this.lightboxService.create();\n\n const targetItem = this.galleryItems[id].image;\n\n if (targetItem.doGetSlideDimensions && !this.isVideo(targetItem.src)) {\n const targetImage = await loadImage(targetItem.src);\n targetItem.w = targetImage.naturalWidth;\n targetItem.h = targetImage.naturalHeight;\n delete targetItem.doGetSlideDimensions;\n }\n\n // Crée la liste complète des médias\n this.galleryImages = ([...this.galleryItemIds].map((key) => {\n const media = this.galleryItems[key].image;\n\n if (this.isVideo(media.src)) {\n return {\n id: media.id,\n html: `\n <div class=\"pswp__video-wrapper\">\n <video\n src=\"${media.src}\"\n controls\n preload=\"metadata\"\n style=\"max-width: 100%; max-height: 100%; border-radius: 8px;\"\n ></video>\n </div>\n `,\n title: media.title || '',\n w: 1920,\n h: 1080,\n };\n }\n\n return media;\n })) as any[];\n\n const idx = this.galleryImages.findIndex((image) => image.id === id);\n const options: GalleryOptions = { ...this.defaultOptions, ...this.options };\n options.index = idx;\n\n options.getThumbBoundsFn = (imageIndex: number) => {\n const key = this.galleryImages[imageIndex].id;\n const thumbnail = this.galleryItems[key].element;\n const origin = this.galleryItems[key].image;\n const pageYScroll = window.pageYOffset || document.documentElement.scrollTop;\n const rect = thumbnail.getBoundingClientRect();\n\n const thumbnailRate = rect.height / rect.width;\n const originRate = origin.h / origin.w;\n let x: number, y: number, w: number;\n\n if (thumbnailRate > originRate) {\n y = rect.top + pageYScroll;\n w = (origin.w * rect.height) / origin.h;\n x = rect.left - (w - rect.width) / 2;\n } else {\n const imageHeight = (origin.h * rect.width) / origin.w;\n x = rect.left;\n w = rect.width;\n y = rect.top + pageYScroll - (imageHeight - rect.height) / 2;\n }\n\n return { x, y, w };\n };\n\n const photoSwipe = this.lightboxService.getLightboxElement();\n\n this.gallery = new PhotoSwipe(photoSwipe, PhotoSwipeUI_Default, this.galleryImages, options);\n\n this.gallery.listen('afterChange', () => {\n // on arrête toutes les vidéos existantes quand on change de slide\n this.pauseAllVideosExcept(null);\n });\n\n this.gallery.listen('slideChangeComplete', () => {\n // quand la transition est totalement terminée, on peut jouer la vidéo active\n const currItem = this.gallery.currItem;\n this.playActiveVideo(currItem);\n });\n\n this.gallery.listen('destroy', () => {\n this.pauseAllVideosExcept(null);\n this.lightboxService.destroy();\n this.onPhotoGalleryDestroy.emit();\n });\n\n this.gallery.listen('gettingData', (_, slide: any) => {\n if (slide.doGetSlideDimensions && !this.isVideo(slide.src)) {\n setTimeout(async () => await this.getSlideDimensions(slide), 300);\n }\n });\n\n this.gallery.listen('imageLoadComplete', async (_, slide: any) => {\n if (slide.doGetSlideDimensions && !this.isVideo(slide.src)) {\n await this.getSlideDimensions(slide);\n }\n });\n\n this.gallery.listen('destroy', () => {\n this.lightboxService.destroy();\n this.onPhotoGalleryDestroy.emit();\n });\n\n this.onPhotoGalleryInit.emit();\n this.gallery.init();\n }\n\n private async getSlideDimensions(slide: GalleryImage): Promise<void> {\n if (!slide.doGetSlideDimensions) {\n return;\n }\n\n const image: HTMLImageElement = await loadImage(slide.src).catch(() => null);\n\n slide.doGetSlideDimensions = false;\n\n slide.w = image.naturalWidth;\n slide.h = image.naturalHeight;\n\n this.gallery.invalidateCurrItems();\n this.gallery.updateSize(true);\n }\n private pauseAllVideosExcept(activeItem: any) {\n const allVideos = document.querySelectorAll<HTMLVideoElement>('.pswp__video-wrapper video');\n\n allVideos.forEach(video => {\n const isActive = activeItem && video.src.includes(activeItem.src);\n if (!isActive) {\n video.pause();\n video.currentTime = 0;\n }\n });\n }\n\n private playActiveVideo(activeItem: any) {\n if (!activeItem) return;\n\n // cherche la vidéo visible dans le conteneur actif de PhotoSwipe\n const activeContainer = document.querySelector('.pswp__item.pswp__item--current');\n if (!activeContainer) return;\n\n const video = activeContainer.querySelector<HTMLVideoElement>('video');\n if (video) {\n video.play().catch(() => {});\n }\n }\n}\n\nfunction loadImage(path: string): Promise<HTMLImageElement> {\n return new Promise((resolve, reject) => {\n const image = new Image();\n image.onload = () => resolve(image);\n image.onerror = (e) => reject(e);\n image.src = path;\n });\n}\n\n","import { Directive, HostListener, Input, ElementRef, AfterContentInit, OnDestroy } from '@angular/core';\n\nimport { PhotoGalleryGroupDirective } from './photo-gallery-group.directive';\n\n@Directive({\n selector: '[photoGallery]',\n})\nexport class PhotoGalleryDirective implements AfterContentInit, OnDestroy {\n @Input('photoGallery') imageUrl: string;\n @Input() photoGalleryTrackBy: string;\n @Input() photoGalleryCaption: string;\n id: string;\n\n constructor(private el: ElementRef, private photoGalleryGroup: PhotoGalleryGroupDirective) {}\n\n @HostListener('click')\n async openPhotoSwipe(): Promise<void> {\n await this.photoGalleryGroup.openPhotoSwipe(this.id);\n }\n\n ngAfterContentInit(): void {\n this.id = this.photoGalleryTrackBy || this.imageUrl;\n this.photoGalleryGroup.registerGalleryItem({\n id: this.id,\n element: this.el.nativeElement as HTMLElement,\n imageUrl: this.imageUrl,\n caption: this.photoGalleryCaption,\n });\n }\n\n ngOnDestroy(): void {\n this.photoGalleryGroup.unregisterGalleryItem(this.id);\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { LightboxComponent } from './components/lightbox/lightbox.component';\nimport { PhotoGalleryGroupDirective } from './directives/photo-gallery-group.directive';\nimport { PhotoGalleryDirective } from './directives/photo-gallery.directive';\nimport { PhotoGalleryConfig } from './interfaces/config';\n\n@NgModule({\n declarations: [LightboxComponent, PhotoGalleryDirective, PhotoGalleryGroupDirective],\n providers: [],\n imports: [],\n exports: [PhotoGalleryDirective, PhotoGalleryGroupDirective],\n})\nexport class PhotoGalleryModule {\n static forRoot(config: PhotoGalleryConfig): ModuleWithProviders<PhotoGalleryModule> {\n return {\n ngModule: PhotoGalleryModule,\n providers: [\n {\n provide: PhotoGalleryConfig,\n useValue: config,\n },\n ],\n };\n }\n}\n","/*\n * Public API Surface of core\n */\n\nexport * from './lib/photo-gallery.module';\n\nexport * from './lib/directives/photo-gallery-group.directive';\nexport * from './lib/directives/photo-gallery.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.PhotoGalleryConfig","i2.LightboxService","i1.PhotoGalleryGroupDirective"],"mappings":"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"}
1
+ {"version":3,"file":"twogate-ngx-photo-gallery.mjs","sources":["../../../projects/core/src/lib/components/lightbox/lightbox.component.ts","../../../projects/core/src/lib/components/lightbox/lightbox.component.html","../../../projects/core/src/lib/interfaces/config.ts","../../../projects/core/src/lib/services/lightbox.service.ts","../../../projects/core/src/lib/directives/photo-gallery-group.directive.ts","../../../projects/core/src/lib/directives/photo-gallery.directive.ts","../../../projects/core/src/lib/photo-gallery.module.ts","../../../projects/core/src/public-api.ts","../../../projects/core/src/twogate-ngx-photo-gallery.ts"],"sourcesContent":["import { Component, ViewChild, ElementRef, ChangeDetectionStrategy } from '@angular/core';\n\n@Component({\n selector: 'photo-gallery-lightbox',\n templateUrl: './lightbox.component.html',\n styleUrls: ['./lightbox.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LightboxComponent {\n @ViewChild('Lightbox', { static: true }) element: ElementRef;\n\n constructor() {}\n}\n","<div class=\"lightbox-wrapper\">\n <!-- Root element of PhotoSwipe. Must have class pswp. -->\n <div class=\"pswp\" #Lightbox tabindex=\"-1\" role=\"dialog\" aria-hidden=\"true\">\n <!-- Background of PhotoSwipe.\n It's a separate element, as animating opacity is faster than rgba(). -->\n <div class=\"pswp__bg\"></div>\n <!-- Slides wrapper with overflow:hidden. -->\n <div class=\"pswp__scroll-wrap\">\n <!-- Container that holds slides. PhotoSwipe keeps only 3 slides in DOM to save memory. -->\n <!-- don't modify these 3 pswp__item elements, data is added later on. -->\n <div class=\"pswp__container\">\n <div class=\"pswp__item\"></div>\n <div class=\"pswp__item\"></div>\n <div class=\"pswp__item\"></div>\n </div>\n <!-- Default (PhotoSwipeUI_Default) interface on top of sliding area. Can be changed. -->\n <div class=\"pswp__ui pswp__ui--hidden\">\n <div class=\"pswp__top-bar\">\n <!-- Controls are self-explanatory. Order can be changed. -->\n <div class=\"pswp__counter\"></div>\n <button class=\"pswp__button pswp__button--close\" title=\"Close (Esc)\"></button>\n <button class=\"pswp__button pswp__button--share\" title=\"Share\"></button>\n <button class=\"pswp__button pswp__button--fs\" title=\"Toggle fullscreen\"></button>\n <button class=\"pswp__button pswp__button--zoom\" title=\"Zoom in/out\"></button>\n <!-- Preloader demo http://codepen.io/dimsemenov/pen/yyBWoR -->\n <!-- element will get class pswp__preloader--active when preloader is running -->\n <div class=\"pswp__preloader\">\n <div class=\"pswp__preloader__icn\">\n <div class=\"pswp__preloader__cut\">\n <div class=\"pswp__preloader__donut\"></div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"pswp__share-modal pswp__share-modal--hidden pswp__single-tap\">\n <div class=\"pswp__share-tooltip\"></div>\n </div>\n <button class=\"pswp__button pswp__button--arrow--left\" title=\"Previous (arrow left)\"></button>\n <button class=\"pswp__button pswp__button--arrow--right\" title=\"Next (arrow right)\"></button>\n <div class=\"pswp__caption\">\n <div class=\"pswp__caption__center\"></div>\n </div>\n </div>\n </div>\n </div>\n</div>\n","import { GalleryOptions } from './photoswipe';\n\nexport abstract class PhotoGalleryConfig {\n defaultOptions?: GalleryOptions;\n}\n","import { Injectable, ComponentRef, ElementRef, ApplicationRef, createComponent } from '@angular/core';\n\nimport { LightboxComponent } from '../components/lightbox/lightbox.component';\n\n@Injectable({ providedIn: 'root' })\nexport class LightboxService {\n private lightbox: ComponentRef<LightboxComponent> | null;\n private lightboxElement: ElementRef | null;\n\n constructor(private applicationRef: ApplicationRef) {\n this.lightbox = null;\n this.lightboxElement = null;\n }\n\n create() {\n this.lightbox = createComponent(\n LightboxComponent,\n { environmentInjector: this.applicationRef.injector }\n );\n document.body.appendChild(this.lightbox.location.nativeElement);\n this.applicationRef.attachView(this.lightbox.hostView);\n\n this.lightboxElement = this.lightbox.instance.element;\n }\n\n destroy() {\n if (this.lightbox) {\n this.applicationRef.detachView(this.lightbox.hostView);\n this.lightbox = null;\n this.lightboxElement = null;\n }\n }\n\n /**\n * Returns the lightbox element.\n * This method is called after the lightbox is created.\n * @returns HTMLElement\n */\n getLightboxElement(): HTMLElement {\n return this.lightboxElement.nativeElement as HTMLElement;\n }\n}\n","import { Directive, Output, Input, EventEmitter, Optional } from '@angular/core';\nimport PhotoSwipe from 'photoswipe';\nimport PhotoSwipeUI_Default from 'photoswipe/dist/photoswipe-ui-default';\n\nimport { PhotoGalleryConfig } from '../interfaces/config';\nimport { GalleryImage, GalleryItem, GalleryOptions } from '../interfaces/photoswipe';\nimport { LightboxService } from '../services/lightbox.service';\n\nexport const DEFAULT_OPTIONS = {\n history: false,\n closeEl: true,\n captionEl: false,\n fullscreenEl: false,\n zoomEl: true,\n shareEl: false,\n counterEl: true,\n arrowEl: false,\n preloaderEl: true,\n};\n\n@Directive({\n selector: '[photoGalleryGroup]',\n})\nexport class PhotoGalleryGroupDirective {\n @Input('photoGalleryGroup') options: GalleryOptions;\n @Output() onPhotoGalleryInit = new EventEmitter();\n @Output() onPhotoGalleryDestroy = new EventEmitter();\n\n private defaultOptions: GalleryOptions;\n private gallery: PhotoSwipe<any> | null = null;\n private galleryItems: { [key: string]: GalleryItem } = {};\n private galleryItemIds: Set<string> = new Set<string>();\n private galleryImages: GalleryImage[] = [];\n\n constructor(\n @Optional() private photoGalleryConfig: PhotoGalleryConfig,\n private lightboxService: LightboxService\n ) {\n this.defaultOptions = { ...DEFAULT_OPTIONS, ...this.photoGalleryConfig?.defaultOptions };\n }\n\n private isVideo(url: string): boolean {\n return url?.includes('/videos/');\n }\n\n registerGalleryItem(item: { id: string; element: HTMLElement; imageUrl: string; caption?: string }): void {\n const image: GalleryImage = {\n id: item.id,\n src: item.imageUrl,\n ...(item.caption ? { title: item.caption } : {}),\n w: 0,\n h: 0,\n doGetSlideDimensions: true,\n };\n this.galleryItems[item.id] = {\n id: item.id,\n element: item.element,\n image,\n };\n\n this.galleryItemIds.add(item.id);\n }\n\n unregisterGalleryItem(id: string): void {\n this.galleryItemIds.delete(id);\n }\n\n async openPhotoSwipe(id: string): Promise<void> {\n this.lightboxService.create();\n\n const targetItem = this.galleryItems[id].image;\n\n if (targetItem.doGetSlideDimensions && !this.isVideo(targetItem.src)) {\n const targetImage = await loadImage(targetItem.src);\n targetItem.w = targetImage.naturalWidth;\n targetItem.h = targetImage.naturalHeight;\n delete targetItem.doGetSlideDimensions;\n }\n\n // Crée la liste complète des médias\n this.galleryImages = ([...this.galleryItemIds].map((key) => {\n const media = this.galleryItems[key].image;\n\n if (this.isVideo(media.src)) {\n return {\n id: media.id,\n html: `\n <div class=\"pswp__video-wrapper\">\n <video\n src=\"${media.src}\"\n controls\n preload=\"metadata\"\n style=\"max-width: 100%; max-height: 100%; border-radius: 8px;\"\n ></video>\n </div>\n `,\n title: media.title || '',\n w: 1920,\n h: 1080,\n };\n }\n\n return media;\n })) as any[];\n\n const idx = this.galleryImages.findIndex((image) => image.id === id);\n const options: GalleryOptions = { ...this.defaultOptions, ...this.options };\n options.index = idx;\n\n options.getThumbBoundsFn = (imageIndex: number) => {\n const key = this.galleryImages[imageIndex].id;\n const thumbnail = this.galleryItems[key].element;\n const origin = this.galleryItems[key].image;\n const pageYScroll = window.pageYOffset || document.documentElement.scrollTop;\n const rect = thumbnail.getBoundingClientRect();\n\n const thumbnailRate = rect.height / rect.width;\n const originRate = origin.h / origin.w;\n let x: number, y: number, w: number;\n\n if (thumbnailRate > originRate) {\n y = rect.top + pageYScroll;\n w = (origin.w * rect.height) / origin.h;\n x = rect.left - (w - rect.width) / 2;\n } else {\n const imageHeight = (origin.h * rect.width) / origin.w;\n x = rect.left;\n w = rect.width;\n y = rect.top + pageYScroll - (imageHeight - rect.height) / 2;\n }\n\n return { x, y, w };\n };\n\n const photoSwipe = this.lightboxService.getLightboxElement();\n\n this.gallery = new PhotoSwipe(photoSwipe, PhotoSwipeUI_Default, this.galleryImages, options);\n\n this.gallery.listen('beforeChange', () => {\n console.log(\"EVENT: 'beforeChange'\");\n this.pauseAllVideos();\n });\n\n this.gallery.listen('initialZoomInEnd', () => {\n // au début, joue la vidéo si c’est une vidéo\n console.log(\"EVENT: 'initialZoomInEnd'\");\n this.playCurrentSlideVideo();\n });\n\n this.gallery.listen('afterChange', () => {\n // on met un petit délai pour s’assurer que le DOM est prêt\n console.log(\"EVENT: afterChange\");\n setTimeout(() => {\n this.playCurrentSlideVideo();\n }, 200);\n });\n\n this.gallery.listen('destroy', () => {\n this.pauseAllVideos();\n });\n\n this.gallery.listen('gettingData', (_, slide: any) => {\n if (slide.doGetSlideDimensions && !this.isVideo(slide.src)) {\n setTimeout(async () => await this.getSlideDimensions(slide), 300);\n }\n });\n\n this.gallery.listen('imageLoadComplete', async (_, slide: any) => {\n if (slide.doGetSlideDimensions && !this.isVideo(slide.src)) {\n await this.getSlideDimensions(slide);\n }\n });\n\n this.gallery.listen('destroy', () => {\n this.lightboxService.destroy();\n this.onPhotoGalleryDestroy.emit();\n });\n\n this.onPhotoGalleryInit.emit();\n this.gallery.init();\n }\n\n private async getSlideDimensions(slide: GalleryImage): Promise<void> {\n if (!slide.doGetSlideDimensions) {\n return;\n }\n\n const image: HTMLImageElement = await loadImage(slide.src).catch(() => null);\n\n slide.doGetSlideDimensions = false;\n\n slide.w = image.naturalWidth;\n slide.h = image.naturalHeight;\n\n this.gallery.invalidateCurrItems();\n this.gallery.updateSize(true);\n }\n private pauseAllVideos() {\n const vids = document.querySelectorAll<HTMLVideoElement>('.pswp__video-wrapper video');\n vids.forEach(v => {\n try {\n v.pause();\n v.currentTime = 0;\n } catch(_){}\n });\n }\n\n private playCurrentSlideVideo() {\n if (!this.gallery) return;\n\n const currentIndex = this.gallery.getCurrentIndex(); // index du slide visible\n const currentItem = this.gallery.currItem;\n if (!currentItem) return;\n\n // 🧠 Cast correct : container est un HTMLElement\n const container = this.gallery.container as HTMLElement;\n if (!container) return;\n\n // 🧠 Cast des enfants en tableau de HTMLElements\n const slideEls = Array.from(container.children) as HTMLElement[];\n const total = this.gallery.items.length;\n const moduloIndex = currentIndex % 3; // PhotoSwipe recycle 3 conteneurs\n\n // Sélection du slide actif\n const activeSlide = slideEls[moduloIndex];\n if (!activeSlide) return;\n\n // Pause toutes les autres vidéos\n slideEls.forEach(slide => {\n const video = slide.querySelector<HTMLVideoElement>('video');\n if (video) {\n if (slide === activeSlide) return;\n video.pause();\n video.currentTime = 0;\n }\n });\n\n // Lecture de la vidéo active (si présente)\n const activeVideo = activeSlide.querySelector<HTMLVideoElement>('video');\n if (activeVideo) {\n activeVideo.play().catch(() => {});\n }\n }\n}\n\nfunction loadImage(path: string): Promise<HTMLImageElement> {\n return new Promise((resolve, reject) => {\n const image = new Image();\n image.onload = () => resolve(image);\n image.onerror = (e) => reject(e);\n image.src = path;\n });\n}\n\n","import { Directive, HostListener, Input, ElementRef, AfterContentInit, OnDestroy } from '@angular/core';\n\nimport { PhotoGalleryGroupDirective } from './photo-gallery-group.directive';\n\n@Directive({\n selector: '[photoGallery]',\n})\nexport class PhotoGalleryDirective implements AfterContentInit, OnDestroy {\n @Input('photoGallery') imageUrl: string;\n @Input() photoGalleryTrackBy: string;\n @Input() photoGalleryCaption: string;\n id: string;\n\n constructor(private el: ElementRef, private photoGalleryGroup: PhotoGalleryGroupDirective) {}\n\n @HostListener('click')\n async openPhotoSwipe(): Promise<void> {\n await this.photoGalleryGroup.openPhotoSwipe(this.id);\n }\n\n ngAfterContentInit(): void {\n this.id = this.photoGalleryTrackBy || this.imageUrl;\n this.photoGalleryGroup.registerGalleryItem({\n id: this.id,\n element: this.el.nativeElement as HTMLElement,\n imageUrl: this.imageUrl,\n caption: this.photoGalleryCaption,\n });\n }\n\n ngOnDestroy(): void {\n this.photoGalleryGroup.unregisterGalleryItem(this.id);\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { LightboxComponent } from './components/lightbox/lightbox.component';\nimport { PhotoGalleryGroupDirective } from './directives/photo-gallery-group.directive';\nimport { PhotoGalleryDirective } from './directives/photo-gallery.directive';\nimport { PhotoGalleryConfig } from './interfaces/config';\n\n@NgModule({\n declarations: [LightboxComponent, PhotoGalleryDirective, PhotoGalleryGroupDirective],\n providers: [],\n imports: [],\n exports: [PhotoGalleryDirective, PhotoGalleryGroupDirective],\n})\nexport class PhotoGalleryModule {\n static forRoot(config: PhotoGalleryConfig): ModuleWithProviders<PhotoGalleryModule> {\n return {\n ngModule: PhotoGalleryModule,\n providers: [\n {\n provide: PhotoGalleryConfig,\n useValue: config,\n },\n ],\n };\n }\n}\n","/*\n * Public API Surface of core\n */\n\nexport * from './lib/photo-gallery.module';\n\nexport * from './lib/directives/photo-gallery-group.directive';\nexport * from './lib/directives/photo-gallery.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.PhotoGalleryConfig","i2.LightboxService","i1.PhotoGalleryGroupDirective"],"mappings":"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"}
@@ -36,8 +36,8 @@ export declare class PhotoGalleryGroupDirective {
36
36
  unregisterGalleryItem(id: string): void;
37
37
  openPhotoSwipe(id: string): Promise<void>;
38
38
  private getSlideDimensions;
39
- private pauseAllVideosExcept;
40
- private playActiveVideo;
39
+ private pauseAllVideos;
40
+ private playCurrentSlideVideo;
41
41
  static ɵfac: i0.ɵɵFactoryDeclaration<PhotoGalleryGroupDirective, [{ optional: true; }, null]>;
42
42
  static ɵdir: i0.ɵɵDirectiveDeclaration<PhotoGalleryGroupDirective, "[photoGalleryGroup]", never, { "options": "photoGalleryGroup"; }, { "onPhotoGalleryInit": "onPhotoGalleryInit"; "onPhotoGalleryDestroy": "onPhotoGalleryDestroy"; }, never, never, false, never>;
43
43
  }
@@ -1 +1 @@
1
- {"version":3,"file":"photo-gallery-group.directive.d.ts","sourceRoot":"","sources":["../../../../projects/core/src/lib/directives/photo-gallery-group.directive.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAY,MAAM,eAAe,CAAC;AAIjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAA6B,cAAc,EAAE,MAAM,0BAA0B,CAAC;AACrF,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;;AAE/D,eAAO,MAAM,eAAe;;;;;;;;;;CAU3B,CAAC;AAEF,qBAGa,0BAA0B;IAYvB,OAAO,CAAC,kBAAkB;IACtC,OAAO,CAAC,eAAe;IAZG,OAAO,EAAE,cAAc,CAAC;IAC1C,kBAAkB,oBAAsB;IACxC,qBAAqB,oBAAsB;IAErD,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,OAAO,CAAM;IACrB,OAAO,CAAC,YAAY,CAAsC;IAC1D,OAAO,CAAC,cAAc,CAAkC;IACxD,OAAO,CAAC,aAAa,CAAsB;gBAGrB,kBAAkB,EAAE,kBAAkB,EAClD,eAAe,EAAE,eAAe;IAK1C,OAAO,CAAC,OAAO;IAIf,mBAAmB,CAAC,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,WAAW,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAkBzG,qBAAqB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAIjC,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YA6GjC,kBAAkB;IAehC,OAAO,CAAC,oBAAoB;IAY5B,OAAO,CAAC,eAAe;yCApLZ,0BAA0B;2CAA1B,0BAA0B;CAgMtC"}
1
+ {"version":3,"file":"photo-gallery-group.directive.d.ts","sourceRoot":"","sources":["../../../../projects/core/src/lib/directives/photo-gallery-group.directive.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAY,MAAM,eAAe,CAAC;AAIjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAA6B,cAAc,EAAE,MAAM,0BAA0B,CAAC;AACrF,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;;AAE/D,eAAO,MAAM,eAAe;;;;;;;;;;CAU3B,CAAC;AAEF,qBAGa,0BAA0B;IAYvB,OAAO,CAAC,kBAAkB;IACtC,OAAO,CAAC,eAAe;IAZG,OAAO,EAAE,cAAc,CAAC;IAC1C,kBAAkB,oBAAsB;IACxC,qBAAqB,oBAAsB;IAErD,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,OAAO,CAAgC;IAC/C,OAAO,CAAC,YAAY,CAAsC;IAC1D,OAAO,CAAC,cAAc,CAAkC;IACxD,OAAO,CAAC,aAAa,CAAsB;gBAGrB,kBAAkB,EAAE,kBAAkB,EAClD,eAAe,EAAE,eAAe;IAK1C,OAAO,CAAC,OAAO;IAIf,mBAAmB,CAAC,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,WAAW,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAkBzG,qBAAqB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAIjC,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAmHjC,kBAAkB;IAehC,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,qBAAqB;yCAxLlB,0BAA0B;2CAA1B,0BAA0B;CA4NtC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@udilhan/ngx-photo-gallery",
3
- "version": "1.5.8",
3
+ "version": "1.5.10",
4
4
  "license": "MIT",
5
5
  "repository": "https://github.com/UDilhan/ngx-photo-gallery",
6
6
  "keywords": [