@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.
- package/esm2020/lib/directives/photo-gallery-group.directive.mjs +55 -26
- package/fesm2015/twogate-ngx-photo-gallery.mjs +54 -25
- package/fesm2015/twogate-ngx-photo-gallery.mjs.map +1 -1
- package/fesm2020/twogate-ngx-photo-gallery.mjs +54 -25
- package/fesm2020/twogate-ngx-photo-gallery.mjs.map +1 -1
- package/lib/directives/photo-gallery-group.directive.d.ts +2 -2
- package/lib/directives/photo-gallery-group.directive.d.ts.map +1 -1
- package/package.json +1 -1
@@ -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('
|
111
|
-
|
112
|
-
this.
|
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('
|
115
|
-
//
|
116
|
-
|
117
|
-
|
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.
|
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
|
-
|
153
|
-
const
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
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
|
-
|
163
|
-
if (!
|
168
|
+
playCurrentSlideVideo() {
|
169
|
+
if (!this.gallery)
|
164
170
|
return;
|
165
|
-
|
166
|
-
const
|
167
|
-
if (!
|
171
|
+
const currentIndex = this.gallery.getCurrentIndex(); // index du slide visible
|
172
|
+
const currentItem = this.gallery.currItem;
|
173
|
+
if (!currentItem)
|
168
174
|
return;
|
169
|
-
|
170
|
-
|
171
|
-
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvdG8tZ2FsbGVyeS1ncm91cC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvZGlyZWN0aXZlcy9waG90by1nYWxsZXJ5LWdyb3VwLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRixPQUFPLFVBQVUsTUFBTSxZQUFZLENBQUM7QUFDcEMsT0FBTyxvQkFBb0IsTUFBTSx1Q0FBdUMsQ0FBQzs7OztBQU16RSxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUc7SUFDN0IsT0FBTyxFQUFFLEtBQUs7SUFDZCxPQUFPLEVBQUUsSUFBSTtJQUNiLFNBQVMsRUFBRSxLQUFLO0lBQ2hCLFlBQVksRUFBRSxLQUFLO0lBQ25CLE1BQU0sRUFBRSxJQUFJO0lBQ1osT0FBTyxFQUFFLEtBQUs7SUFDZCxTQUFTLEVBQUUsSUFBSTtJQUNmLE9BQU8sRUFBRSxLQUFLO0lBQ2QsV0FBVyxFQUFFLElBQUk7Q0FDbEIsQ0FBQztBQUtGLE1BQU0sT0FBTywwQkFBMEI7SUFXckMsWUFDc0Isa0JBQXNDLEVBQ2xELGVBQWdDO1FBRHBCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDbEQsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBWGhDLHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDeEMsMEJBQXFCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUc3QyxZQUFPLEdBQTJCLElBQUksQ0FBQztRQUN2QyxpQkFBWSxHQUFtQyxFQUFFLENBQUM7UUFDbEQsbUJBQWMsR0FBZ0IsSUFBSSxHQUFHLEVBQVUsQ0FBQztRQUNoRCxrQkFBYSxHQUFtQixFQUFFLENBQUM7UUFNekMsSUFBSSxDQUFDLGNBQWMsR0FBRyxF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cUJBQXFCO2lCQUNoQzs7MEJBYUksUUFBUTswRUFYaUIsT0FBTztzQkFBbEMsS0FBSzt1QkFBQyxtQkFBbUI7Z0JBQ2hCLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFDRyxxQkFBcUI7c0JBQTlCLE1BQU07O0FBMk5ULFNBQVMsU0FBUyxDQUFDLElBQVk7SUFDN0IsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUNyQyxNQUFNLEtBQUssR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQzFCLEtBQUssQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLEtBQUssQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqQyxLQUFLLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQztJQUNuQixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIE91dHB1dCwgSW5wdXQsIEV2ZW50RW1pdHRlciwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCBQaG90b1N3aXBlIGZyb20gJ3Bob3Rvc3dpcGUnO1xuaW1wb3J0IFBob3RvU3dpcGVVSV9EZWZhdWx0IGZyb20gJ3Bob3Rvc3dpcGUvZGlzdC9waG90b3N3aXBlLXVpLWRlZmF1bHQnO1xuXG5pbXBvcnQgeyBQaG90b0dhbGxlcnlDb25maWcgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2NvbmZpZyc7XG5pbXBvcnQgeyBHYWxsZXJ5SW1hZ2UsIEdhbGxlcnlJdGVtLCBHYWxsZXJ5T3B0aW9ucyB9IGZyb20gJy4uL2ludGVyZmFjZXMvcGhvdG9zd2lwZSc7XG5pbXBvcnQgeyBMaWdodGJveFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9saWdodGJveC5zZXJ2aWNlJztcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfT1BUSU9OUyA9IHtcbiAgaGlzdG9yeTogZmFsc2UsXG4gIGNsb3NlRWw6IHRydWUsXG4gIGNhcHRpb25FbDogZmFsc2UsXG4gIGZ1bGxzY3JlZW5FbDogZmFsc2UsXG4gIHpvb21FbDogdHJ1ZSxcbiAgc2hhcmVFbDogZmFsc2UsXG4gIGNvdW50ZXJFbDogdHJ1ZSxcbiAgYXJyb3dFbDogZmFsc2UsXG4gIHByZWxvYWRlckVsOiB0cnVlLFxufTtcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3Bob3RvR2FsbGVyeUdyb3VwXScsXG59KVxuZXhwb3J0IGNsYXNzIFBob3RvR2FsbGVyeUdyb3VwRGlyZWN0aXZlIHtcbiAgQElucHV0KCdwaG90b0dhbGxlcnlHcm91cCcpIG9wdGlvbnM6IEdhbGxlcnlPcHRpb25zO1xuICBAT3V0cHV0KCkgb25QaG90b0dhbGxlcnlJbml0ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25QaG90b0dhbGxlcnlEZXN0cm95ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHByaXZhdGUgZGVmYXVsdE9wdGlvbnM6IEdhbGxlcnlPcHRpb25zO1xuICBwcml2YXRlIGdhbGxlcnk6IFBob3RvU3dpcGU8YW55PiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGdhbGxlcnlJdGVtczogeyBba2V5OiBzdHJpbmddOiBHYWxsZXJ5SXRlbSB9ID0ge307XG4gIHByaXZhdGUgZ2FsbGVyeUl0ZW1JZHM6IFNldDxzdHJpbmc+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('
|
157
|
-
|
158
|
-
this.
|
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('
|
161
|
-
//
|
162
|
-
|
163
|
-
|
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.
|
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
|
-
|
202
|
-
const
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
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
|
-
|
212
|
-
if (!
|
217
|
+
playCurrentSlideVideo() {
|
218
|
+
if (!this.gallery)
|
213
219
|
return;
|
214
|
-
|
215
|
-
const
|
216
|
-
if (!
|
220
|
+
const currentIndex = this.gallery.getCurrentIndex(); // index du slide visible
|
221
|
+
const currentItem = this.gallery.currItem;
|
222
|
+
if (!currentItem)
|
217
223
|
return;
|
218
|
-
|
219
|
-
|
220
|
-
|
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('
|
161
|
-
|
162
|
-
this.
|
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('
|
165
|
-
//
|
166
|
-
|
167
|
-
|
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.
|
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
|
-
|
203
|
-
const
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
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
|
-
|
213
|
-
if (!
|
218
|
+
playCurrentSlideVideo() {
|
219
|
+
if (!this.gallery)
|
214
220
|
return;
|
215
|
-
|
216
|
-
const
|
217
|
-
if (!
|
221
|
+
const currentIndex = this.gallery.getCurrentIndex(); // index du slide visible
|
222
|
+
const currentItem = this.gallery.currItem;
|
223
|
+
if (!currentItem)
|
218
224
|
return;
|
219
|
-
|
220
|
-
|
221
|
-
|
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
|
40
|
-
private
|
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,
|
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"}
|