( xb.core.object.extend( { ctor: function() { var self = this; $( document ).on( "click", function( evt ) { return self.onClick( evt ); } ); }, inEditMode: function() { return ( document.body.getAttribute( "data-simply-edit" ) !== null ); }, onClick: function( evt ) { if ( this.inEditMode() || evt.target.tagName.toLowerCase() !== "img" ) { return true; } var view = $( evt.target ).parents( ".for-photoswipe" ); if ( !view.length ) { return true; } var images = this.getImages( $( ".for-photoswipe img" ) ); if ( images.length ) { var index = 0; for ( var i = 0, il = images.length; i < il; i++ ) { if ( images[ i ].src === evt.target.src ) { index = i; break; } } this.startPhotoswipe( images, index ); evt.preventDefault(); evt.stopPropagation(); } }, getImages: function( nodes ) { var result = []; for ( var i = 0, il = nodes.length; i < il; i++ ) { // omdat de img een kans heeft niet meer te zijn wat het was ( door bv ObjectFitImages() ), // maken we tijdelijk een nieuw element om de naturalWidth en -Height uit te lezen var img = document.createElement( "img" ); img.setAttribute( "src", nodes[ i ].src ); var o = { w: img.naturalWidth, h: img.naturalHeight, src: nodes[ i ].src }; result.push( o ); } return result; }, startPhotoswipe: function( images, index ) { var options = { index: 0 }; var gallery = null; var pswpElements = $( ".pswp" ); if ( pswpElements.length ) { options.index = index; gallery = new PhotoSwipe( pswpElements[ 0 ], PhotoSwipeUI_Default, images, options ) gallery.init(); } } } ) )();