/**
* Galleria Twelve Theme
*
* Copyright (c) 2010 - 2019 worse is better UG
* Licensed under the MIT License.
*/
( function( window, factory ) {
if ( typeof define == 'function' && define.amd ) {
define( ['../galleria', 'jquery' ], function( Galleria, jQuery ) {
return factory( window, Galleria, jQuery );
});
} else if ( typeof module == 'object' && module.exports ) {
module.exports = factory(
window,
require('galleria'),
require('jquery')
);
} else {
factory(
window,
window.Galleria,
window.jQuery
);
}
}( window, function factory( window, Galleria, $ ) {
Galleria.addTheme({
name: 'twelve',
version: 1.60,
author: 'Galleria',
css: 'galleria.twelve.css',
// begin site script
defaults: {
transition: 'pulse',
transitionSpeed: 500,
imageCrop: true,
thumbCrop: true,
carousel: false,
// theme specific defaults:
_locale: {
show_thumbnails: 'Show thumbnails',
hide_thumbnails: 'Hide thumbnails',
play: 'Play slideshow',
pause: 'Pause slideshow',
enter_fullscreen: 'Enter fullscreen',
exit_fullscreen: 'Exit fullscreen',
popout_image: 'Popout image',
showing_image: 'Showing image %s of %s'
},
_showFullscreen: true,
_showPopout: true,
_showProgress: true,
_showTooltip: true
},
init: function(options) {
Galleria.requires( 1.6, 'This version of Twelve theme requires Galleria version 1.6 or later');
// add some elements
this.addElement('bar','fullscreen','play','popout','thumblink','s1','s2','s3','s4','progress');
this.append({
'stage' : 'progress',
'container': ['bar','tooltip'],
'bar' : ['fullscreen','play','popout','thumblink','info','s1','s2','s3','s4']
});
this.prependChild('info','counter');
// copy the scope
var gallery = this,
// cache some stuff
thumbs = this.$('thumbnails-container'),
thumb_link = this.$('thumblink'),
fs_link = this.$('fullscreen'),
play_link = this.$('play'),
pop_link = this.$('popout'),
bar = this.$('bar'),
progress = this.$('progress'),
transition = options.transition,
lang = options._locale,
// statics
OPEN = false,
FULLSCREEN = false,
PLAYING = !!options.autoplay,
CONTINUE = false,
// helper functions
scaleThumbs = function() {
thumbs.height( gallery.getStageHeight() ).width( gallery.getStageWidth() ).css('top', OPEN ? 0 : gallery.getStageHeight()+30 );
},
toggleThumbs = function(e) {
if (OPEN && CONTINUE) {
gallery.play();
} else {
CONTINUE = PLAYING;
gallery.pause();
}
Galleria.utils.animate(thumbs, { top: OPEN ? gallery.getStageHeight()+30 : 0 } , {
easing:'galleria',
duration:400,
complete: function() {
gallery.defineTooltip('thumblink', OPEN ? lang.show_thumbnails : lang.hide_thumbnails);
thumb_link[OPEN ? 'removeClass' : 'addClass']('open');
OPEN = !OPEN;
}
});
};
// scale the thumbnail container
scaleThumbs();
// bind the tooltips
if (options._showTooltip) {
gallery.bindTooltip({
'thumblink': lang.show_thumbnails,
'fullscreen': lang.enter_fullscreen,
'play': function() {
return PLAYING ? lang.pause : lang.play;
},
'popout': lang.popout_image,
'caption': function() {
var data = gallery.getData();
var str = '';
if (data) {
if (data.title && data.title.length) {
str+=''+data.title+'';
}
if (data.description && data.description.length) {
str+='
'+data.description;
}
}
return str;
},
'counter': function() {
return lang.showing_image.replace( /\%s/, gallery.getIndex() + 1 ).replace( /\%s/, gallery.getDataLength() );
}
});
}
if ( !options.showInfo ) {
this.$( 'info' ).hide();
}
// bind galleria events
this.bind( 'play', function() {
PLAYING = true;
play_link.addClass('playing');
});
this.bind( 'pause', function() {
PLAYING = false;
play_link.removeClass('playing');
progress.width(0);
});
if (options._showProgress) {
this.bind( 'progress', function(e) {
progress.width( e.percent/100 * this.getStageWidth() );
});
}
this.bind( 'loadstart', function(e) {
if (!e.cached) {
this.$('loader').show();
}
});
this.bind( 'loadfinish', function(e) {
progress.width(0);
this.$('loader').hide();
this.refreshTooltip('counter','caption');
});
this.bind( 'thumbnail', function(e) {
$(e.thumbTarget).hover(function() {
gallery.setInfo(e.thumbOrder);
gallery.setCounter(e.thumbOrder);
}, function() {
gallery.setInfo();
gallery.setCounter();
}).on('click:fast', function() {
toggleThumbs();
});
});
this.bind( 'fullscreen_enter', function(e) {
FULLSCREEN = true;
gallery.setOptions('transition', false);
fs_link.addClass('open');
bar.css('bottom',0);
this.defineTooltip('fullscreen', lang.exit_fullscreen);
if ( !Galleria.TOUCH ) {
this.addIdleState(bar, { bottom: -31 });
}
});
this.bind( 'fullscreen_exit', function(e) {
FULLSCREEN = false;
Galleria.utils.clearTimer('bar');
gallery.setOptions('transition',transition);
fs_link.removeClass('open');
bar.css('bottom',0);
this.defineTooltip('fullscreen', lang.enter_fullscreen);
if ( !Galleria.TOUCH ) {
this.removeIdleState(bar, { bottom:-31 });
}
});
this.bind( 'rescale', scaleThumbs);
if ( !Galleria.TOUCH ) {
this.addIdleState(this.get('image-nav-left'), {left:-36});
this.addIdleState(this.get('image-nav-right'), {right:-36});
}
// bind thumblink
thumb_link.on('click:fast', toggleThumbs );
if ( !options.thumbnails ) {
thumb_link.hide();
play_link.css('left', 0);
this.$('s2').hide();
this.$('info').css('left', 41);
}
// bind popup
if (options._showPopout) {
pop_link.on('click:fast', function(e) {
gallery.openLightbox();
e.preventDefault();
});
} else {
pop_link.remove();
if (options._showFullscreen) {
this.$('s4').remove();
this.$('info').css('right',40);
fs_link.css('right',0);
}
}
// bind play button
play_link.on('click:fast', function() {
//gallery.defineTooltip('play', PLAYING ? lang.play : lang.pause);
if (PLAYING) {
gallery.pause();
} else {
if (OPEN) {
thumb_link.trigger('click:fast');
}
gallery.play();
}
});
// bind fullscreen
if (options._showFullscreen) {
fs_link.on('click:fast', function(e) {
if (FULLSCREEN) {
gallery.exitFullscreen();
} else {
gallery.enterFullscreen();
}
e.preventDefault();
});
} else {
fs_link.remove();
if (options._show_popout) {
this.$('s4').remove();
this.$('info').css('right',40);
pop_link.css('right',0);
}
}
if (!options._showFullscreen && !options._showPopout) {
this.$('s3,s4').remove();
this.$('info').css('right',10);
}
if (options.autoplay) {
this.trigger( 'play' );
}
}
// end site script
});
return Galleria;
}));