Sha256: 1fa7c40a386844c691d36c2975559f18ac41d9f9a7806336648d0e65ad0d7f53

Contents?: true

Size: 1.61 KB

Versions: 15

Compression:

Stored size: 1.61 KB

Contents

/**
* Gumby Retina
*/
!function() {

	'use strict';

	function Retina($el) {
		this.$el = $el;
		this.imageSrc = this.$el.attr('src');
		this.retinaSrc = this.fetchRetinaImage();
		this.$retinaImg = $(new Image());

		var scope = this

		// image src not valid
		if(!this.retinaSrc) {
			return false;
		}

		// load retina image
		this.$retinaImg.attr('src', this.retinaSrc).load(function() {
			scope.retinaImageLoaded();
		});
	}

	// fetch retina src by appending '@2x' to image string before extension
	Retina.prototype.fetchRetinaImage = function() {
		var imgSrc = this.imageSrc,
			index = this.imageSrc.search(/(\.|\/)(gif|jpe?g|png)$/i);

		// image src is not valid
		if(index < 0) {
			return false;
		}

		// return retina src
		return imgSrc.substr(0, index) + '@2x' + imgSrc.substr(index, imgSrc.length);
	};

	// once retina image loaded swap original src
	Retina.prototype.retinaImageLoaded = function() {
		this.$el.attr('src', this.$retinaImg.attr('src')).trigger('gumby.onRetina');
	};

	// add initialisation
	Gumby.addInitalisation('retina', function() {

		// this module is for retina devices only
		if(!window.devicePixelRatio || window.devicePixelRatio <= 1) {
			return;
		}

		$('img[data-retina],img[gumby-retina],img[retina]').each(function() {
			var $this = $(this);
			// this element has already been initialized
			if($this.data('isRetina')) {
				return true;
			}
			// mark element as initialized
			$this.data('isRetina', true);
			new Retina($this);
		});
	});

	// register UI module
	Gumby.UIModule({
		module: 'retina',
		events: ['onRetina'],
		init: function() {
			Gumby.initialize('retina');
		}
	});
}();

Version data entries

15 entries across 15 versions & 3 rubygems

Version Path
gumby2-rails-0.0.9 vendor/assets/javascripts/ui/gumby.retina.js
gumby2-rails-0.0.8 vendor/assets/javascripts/ui/gumby.retina.js
gumby2-rails-0.0.7 vendor/assets/javascripts/ui/gumby.retina.js
gumby2-rails-0.0.6 vendor/assets/javascripts/ui/gumby.retina.js
gumby2-rails-0.0.5 vendor/assets/javascripts/ui/gumby.retina.js
gumby2-rails-0.0.4 vendor/assets/javascripts/ui/gumby.retina.js
gumby2-rails-0.0.3 vendor/assets/javascripts/ui/gumby.retina.js
gumby2-rails-0.0.2 vendor/assets/javascripts/ui/gumby.retina.js
gumby2-rails-0.0.1 vendor/assets/js/libs/ui/gumby.retina.js
gumby-0.0.5 vendor/assets/javascripts/ui/gumby.retina.js
gumby-0.0.4 vendor/assets/javascripts/ui/gumby.retina.js
gumby-0.0.3 vendor/assets/javascripts/ui/gumby.retina.js
gumby-0.0.2 vendor/assets/javascripts/ui/gumby.retina.js
gumby-0.0.1 vendor/assets/javascripts/ui/gumby.retina.js
gumby-framework-0.0.1 vendor/assets/javascripts/ui/gumby.retina.js