fotoramajs 4.4.6 → 4.4.7
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.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/Gemfile +1 -0
- data/Rakefile +13 -8
- data/lib/fotoramajs/version.rb +1 -1
- data/vendor/assets/javascripts/fotorama.js +396 -34
- data/vendor/assets/stylesheets/fotorama.css.scss +15 -58
- metadata +3 -3
- data/Gemfile.lock +0 -26
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 888bdc17c3f4261ac1b4a447e43a9de92eab4f01
|
|
4
|
+
data.tar.gz: 085d95b6aa7e99c7a947dbc502fe5d441b93c85d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: ac505aadf7e0f94ea4cdf187e523eb32d62482c77882c05ef28696e06b25820fe4eacb62c48ee61c574aaebe3f4006b652c1ba2801ed0b7347f0007cb818ace1
|
|
7
|
+
data.tar.gz: 2cf48602c09c5c751c347fb3cd4e310266ed859286a97516452fe2f1c2e0d448966913118020f94966e0c10049315b2daae377508e3e7c1a703748e63989f1ff
|
data/.gitignore
CHANGED
data/Gemfile
CHANGED
data/Rakefile
CHANGED
|
@@ -67,17 +67,22 @@ task :update do
|
|
|
67
67
|
puts "Fetching tags"
|
|
68
68
|
tag = github_tags('artpolikarpov/fotorama').last
|
|
69
69
|
|
|
70
|
-
|
|
71
|
-
|
|
70
|
+
require './lib/fotoramajs/version'
|
|
71
|
+
if tag.to_s == Fotoramajs::VERSION
|
|
72
|
+
puts "No releases, since #{ Fotoramajs::VERSION }"
|
|
73
|
+
else
|
|
74
|
+
puts "Load Fotorama #{tag}"
|
|
75
|
+
fetch(tag)
|
|
72
76
|
|
|
73
|
-
|
|
74
|
-
|
|
77
|
+
puts "Convert CSS to SCSS"
|
|
78
|
+
convert
|
|
75
79
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
80
|
+
puts "Update gem version"
|
|
81
|
+
update_version(tag)
|
|
82
|
+
update_gemfile_lock
|
|
79
83
|
|
|
80
|
-
|
|
84
|
+
puts "Done"
|
|
85
|
+
end
|
|
81
86
|
end
|
|
82
87
|
|
|
83
88
|
desc 'Delete all generated files'
|
data/lib/fotoramajs/version.rb
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Fotorama 4.4.
|
|
2
|
+
* Fotorama 4.4.7 | http://fotorama.io/license/
|
|
3
3
|
*/
|
|
4
4
|
(function (window, document, location, $, undefined) {
|
|
5
5
|
"use strict";
|
|
@@ -82,7 +82,7 @@ var _fotoramaClass = 'fotorama',
|
|
|
82
82
|
captionClass = _fotoramaClass + '__caption',
|
|
83
83
|
captionWrapClass = _fotoramaClass + '__caption__wrap',
|
|
84
84
|
|
|
85
|
-
|
|
85
|
+
spinnerClass = _fotoramaClass + '__spinner';
|
|
86
86
|
var JQUERY_VERSION = $ && $.fn.jquery.split('.');
|
|
87
87
|
|
|
88
88
|
if (!JQUERY_VERSION
|
|
@@ -410,6 +410,377 @@ if (fullScreenApi.ok) {
|
|
|
410
410
|
return (this.prefix === '') ? document.cancelFullScreen() : document[this.prefix + 'CancelFullScreen']();
|
|
411
411
|
};
|
|
412
412
|
}
|
|
413
|
+
//fgnass.github.com/spin.js#v1.3.2
|
|
414
|
+
|
|
415
|
+
/**
|
|
416
|
+
* Copyright (c) 2011-2013 Felix Gnass
|
|
417
|
+
* Licensed under the MIT license
|
|
418
|
+
*/
|
|
419
|
+
|
|
420
|
+
var Spinner,
|
|
421
|
+
spinnerDefaults = {
|
|
422
|
+
lines: 12, // The number of lines to draw
|
|
423
|
+
length: 5, // The length of each line
|
|
424
|
+
width: 2, // The line thickness
|
|
425
|
+
radius: 7, // The radius of the inner circle
|
|
426
|
+
corners: 1, // Corner roundness (0..1)
|
|
427
|
+
rotate: 15, // The rotation offset
|
|
428
|
+
color: 'rgba(128, 128, 128, .75)',
|
|
429
|
+
hwaccel: true
|
|
430
|
+
};
|
|
431
|
+
|
|
432
|
+
(function(root, factory) {
|
|
433
|
+
|
|
434
|
+
/* CommonJS */
|
|
435
|
+
//if (typeof exports == 'object') module.exports = factory()
|
|
436
|
+
|
|
437
|
+
/* AMD module */
|
|
438
|
+
//else if (typeof define == 'function' && define.amd) define(factory)
|
|
439
|
+
|
|
440
|
+
/* Browser global */
|
|
441
|
+
//else root.Spinner = factory()
|
|
442
|
+
|
|
443
|
+
Spinner = factory();
|
|
444
|
+
}
|
|
445
|
+
(this, function() {
|
|
446
|
+
"use strict";
|
|
447
|
+
|
|
448
|
+
var prefixes = ['webkit', 'Moz', 'ms', 'O'] /* Vendor prefixes */
|
|
449
|
+
, animations = {} /* Animation rules keyed by their name */
|
|
450
|
+
, useCssAnimations /* Whether to use CSS animations or setTimeout */
|
|
451
|
+
|
|
452
|
+
/**
|
|
453
|
+
* Utility function to create elements. If no tag name is given,
|
|
454
|
+
* a DIV is created. Optionally properties can be passed.
|
|
455
|
+
*/
|
|
456
|
+
function createEl(tag, prop) {
|
|
457
|
+
var el = document.createElement(tag || 'div')
|
|
458
|
+
, n
|
|
459
|
+
|
|
460
|
+
for(n in prop) el[n] = prop[n]
|
|
461
|
+
return el
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
/**
|
|
465
|
+
* Appends children and returns the parent.
|
|
466
|
+
*/
|
|
467
|
+
function ins(parent /* child1, child2, ...*/) {
|
|
468
|
+
for (var i=1, n=arguments.length; i<n; i++)
|
|
469
|
+
parent.appendChild(arguments[i])
|
|
470
|
+
|
|
471
|
+
return parent
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
/**
|
|
475
|
+
* Insert a new stylesheet to hold the @keyframe or VML rules.
|
|
476
|
+
*/
|
|
477
|
+
var sheet = (function() {
|
|
478
|
+
var el = createEl('style', {type : 'text/css'})
|
|
479
|
+
ins(document.getElementsByTagName('head')[0], el)
|
|
480
|
+
return el.sheet || el.styleSheet
|
|
481
|
+
}())
|
|
482
|
+
|
|
483
|
+
/**
|
|
484
|
+
* Creates an opacity keyframe animation rule and returns its name.
|
|
485
|
+
* Since most mobile Webkits have timing issues with animation-delay,
|
|
486
|
+
* we create separate rules for each line/segment.
|
|
487
|
+
*/
|
|
488
|
+
function addAnimation(alpha, trail, i, lines) {
|
|
489
|
+
var name = ['opacity', trail, ~~(alpha*100), i, lines].join('-')
|
|
490
|
+
, start = 0.01 + i/lines * 100
|
|
491
|
+
, z = Math.max(1 - (1-alpha) / trail * (100-start), alpha)
|
|
492
|
+
, prefix = useCssAnimations.substring(0, useCssAnimations.indexOf('Animation')).toLowerCase()
|
|
493
|
+
, pre = prefix && '-' + prefix + '-' || ''
|
|
494
|
+
|
|
495
|
+
if (!animations[name]) {
|
|
496
|
+
sheet.insertRule(
|
|
497
|
+
'@' + pre + 'keyframes ' + name + '{' +
|
|
498
|
+
'0%{opacity:' + z + '}' +
|
|
499
|
+
start + '%{opacity:' + alpha + '}' +
|
|
500
|
+
(start+0.01) + '%{opacity:1}' +
|
|
501
|
+
(start+trail) % 100 + '%{opacity:' + alpha + '}' +
|
|
502
|
+
'100%{opacity:' + z + '}' +
|
|
503
|
+
'}', sheet.cssRules.length)
|
|
504
|
+
|
|
505
|
+
animations[name] = 1
|
|
506
|
+
}
|
|
507
|
+
|
|
508
|
+
return name
|
|
509
|
+
}
|
|
510
|
+
|
|
511
|
+
/**
|
|
512
|
+
* Tries various vendor prefixes and returns the first supported property.
|
|
513
|
+
*/
|
|
514
|
+
function vendor(el, prop) {
|
|
515
|
+
var s = el.style
|
|
516
|
+
, pp
|
|
517
|
+
, i
|
|
518
|
+
|
|
519
|
+
prop = prop.charAt(0).toUpperCase() + prop.slice(1)
|
|
520
|
+
for(i=0; i<prefixes.length; i++) {
|
|
521
|
+
pp = prefixes[i]+prop
|
|
522
|
+
if(s[pp] !== undefined) return pp
|
|
523
|
+
}
|
|
524
|
+
if(s[prop] !== undefined) return prop
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
/**
|
|
528
|
+
* Sets multiple style properties at once.
|
|
529
|
+
*/
|
|
530
|
+
function css(el, prop) {
|
|
531
|
+
for (var n in prop)
|
|
532
|
+
el.style[vendor(el, n)||n] = prop[n]
|
|
533
|
+
|
|
534
|
+
return el
|
|
535
|
+
}
|
|
536
|
+
|
|
537
|
+
/**
|
|
538
|
+
* Fills in default values.
|
|
539
|
+
*/
|
|
540
|
+
function merge(obj) {
|
|
541
|
+
for (var i=1; i < arguments.length; i++) {
|
|
542
|
+
var def = arguments[i]
|
|
543
|
+
for (var n in def)
|
|
544
|
+
if (obj[n] === undefined) obj[n] = def[n]
|
|
545
|
+
}
|
|
546
|
+
return obj
|
|
547
|
+
}
|
|
548
|
+
|
|
549
|
+
/**
|
|
550
|
+
* Returns the absolute page-offset of the given element.
|
|
551
|
+
*/
|
|
552
|
+
function pos(el) {
|
|
553
|
+
var o = { x:el.offsetLeft, y:el.offsetTop }
|
|
554
|
+
while((el = el.offsetParent))
|
|
555
|
+
o.x+=el.offsetLeft, o.y+=el.offsetTop
|
|
556
|
+
|
|
557
|
+
return o
|
|
558
|
+
}
|
|
559
|
+
|
|
560
|
+
/**
|
|
561
|
+
* Returns the line color from the given string or array.
|
|
562
|
+
*/
|
|
563
|
+
function getColor(color, idx) {
|
|
564
|
+
return typeof color == 'string' ? color : color[idx % color.length]
|
|
565
|
+
}
|
|
566
|
+
|
|
567
|
+
// Built-in defaults
|
|
568
|
+
|
|
569
|
+
var defaults = {
|
|
570
|
+
lines: 12, // The number of lines to draw
|
|
571
|
+
length: 7, // The length of each line
|
|
572
|
+
width: 5, // The line thickness
|
|
573
|
+
radius: 10, // The radius of the inner circle
|
|
574
|
+
rotate: 0, // Rotation offset
|
|
575
|
+
corners: 1, // Roundness (0..1)
|
|
576
|
+
color: '#000', // #rgb or #rrggbb
|
|
577
|
+
direction: 1, // 1: clockwise, -1: counterclockwise
|
|
578
|
+
speed: 1, // Rounds per second
|
|
579
|
+
trail: 100, // Afterglow percentage
|
|
580
|
+
opacity: 1/4, // Opacity of the lines
|
|
581
|
+
fps: 20, // Frames per second when using setTimeout()
|
|
582
|
+
zIndex: 2e9, // Use a high z-index by default
|
|
583
|
+
className: 'spinner', // CSS class to assign to the element
|
|
584
|
+
top: 'auto', // center vertically
|
|
585
|
+
left: 'auto', // center horizontally
|
|
586
|
+
position: 'relative' // element position
|
|
587
|
+
}
|
|
588
|
+
|
|
589
|
+
/** The constructor */
|
|
590
|
+
function Spinner(o) {
|
|
591
|
+
if (typeof this == 'undefined') return new Spinner(o)
|
|
592
|
+
this.opts = merge(o || {}, Spinner.defaults, defaults)
|
|
593
|
+
}
|
|
594
|
+
|
|
595
|
+
// Global defaults that override the built-ins:
|
|
596
|
+
Spinner.defaults = {}
|
|
597
|
+
|
|
598
|
+
merge(Spinner.prototype, {
|
|
599
|
+
|
|
600
|
+
/**
|
|
601
|
+
* Adds the spinner to the given target element. If this instance is already
|
|
602
|
+
* spinning, it is automatically removed from its previous target b calling
|
|
603
|
+
* stop() internally.
|
|
604
|
+
*/
|
|
605
|
+
spin: function(target) {
|
|
606
|
+
this.stop()
|
|
607
|
+
|
|
608
|
+
var self = this
|
|
609
|
+
, o = self.opts
|
|
610
|
+
, el = self.el = css(createEl(0, {className: o.className}), {position: o.position, width: 0, zIndex: o.zIndex})
|
|
611
|
+
, mid = o.radius+o.length+o.width
|
|
612
|
+
, ep // element position
|
|
613
|
+
, tp // target position
|
|
614
|
+
|
|
615
|
+
if (target) {
|
|
616
|
+
target.insertBefore(el, target.firstChild||null)
|
|
617
|
+
tp = pos(target)
|
|
618
|
+
ep = pos(el)
|
|
619
|
+
css(el, {
|
|
620
|
+
left: (o.left == 'auto' ? tp.x-ep.x + (target.offsetWidth >> 1) : parseInt(o.left, 10) + mid) + 'px',
|
|
621
|
+
top: (o.top == 'auto' ? tp.y-ep.y + (target.offsetHeight >> 1) : parseInt(o.top, 10) + mid) + 'px'
|
|
622
|
+
})
|
|
623
|
+
}
|
|
624
|
+
|
|
625
|
+
el.setAttribute('role', 'progressbar')
|
|
626
|
+
self.lines(el, self.opts)
|
|
627
|
+
|
|
628
|
+
if (!useCssAnimations) {
|
|
629
|
+
// No CSS animation support, use setTimeout() instead
|
|
630
|
+
var i = 0
|
|
631
|
+
, start = (o.lines - 1) * (1 - o.direction) / 2
|
|
632
|
+
, alpha
|
|
633
|
+
, fps = o.fps
|
|
634
|
+
, f = fps/o.speed
|
|
635
|
+
, ostep = (1-o.opacity) / (f*o.trail / 100)
|
|
636
|
+
, astep = f/o.lines
|
|
637
|
+
|
|
638
|
+
;(function anim() {
|
|
639
|
+
i++;
|
|
640
|
+
for (var j = 0; j < o.lines; j++) {
|
|
641
|
+
alpha = Math.max(1 - (i + (o.lines - j) * astep) % f * ostep, o.opacity)
|
|
642
|
+
|
|
643
|
+
self.opacity(el, j * o.direction + start, alpha, o)
|
|
644
|
+
}
|
|
645
|
+
self.timeout = self.el && setTimeout(anim, ~~(1000/fps))
|
|
646
|
+
})()
|
|
647
|
+
}
|
|
648
|
+
return self
|
|
649
|
+
},
|
|
650
|
+
|
|
651
|
+
/**
|
|
652
|
+
* Stops and removes the Spinner.
|
|
653
|
+
*/
|
|
654
|
+
stop: function() {
|
|
655
|
+
var el = this.el
|
|
656
|
+
if (el) {
|
|
657
|
+
clearTimeout(this.timeout)
|
|
658
|
+
if (el.parentNode) el.parentNode.removeChild(el)
|
|
659
|
+
this.el = undefined
|
|
660
|
+
}
|
|
661
|
+
return this
|
|
662
|
+
},
|
|
663
|
+
|
|
664
|
+
/**
|
|
665
|
+
* Internal method that draws the individual lines. Will be overwritten
|
|
666
|
+
* in VML fallback mode below.
|
|
667
|
+
*/
|
|
668
|
+
lines: function(el, o) {
|
|
669
|
+
var i = 0
|
|
670
|
+
, start = (o.lines - 1) * (1 - o.direction) / 2
|
|
671
|
+
, seg
|
|
672
|
+
|
|
673
|
+
function fill(color, shadow) {
|
|
674
|
+
return css(createEl(), {
|
|
675
|
+
position: 'absolute',
|
|
676
|
+
width: (o.length+o.width) + 'px',
|
|
677
|
+
height: o.width + 'px',
|
|
678
|
+
background: color,
|
|
679
|
+
boxShadow: shadow,
|
|
680
|
+
transformOrigin: 'left',
|
|
681
|
+
transform: 'rotate(' + ~~(360/o.lines*i+o.rotate) + 'deg) translate(' + o.radius+'px' +',0)',
|
|
682
|
+
borderRadius: (o.corners * o.width>>1) + 'px'
|
|
683
|
+
})
|
|
684
|
+
}
|
|
685
|
+
|
|
686
|
+
for (; i < o.lines; i++) {
|
|
687
|
+
seg = css(createEl(), {
|
|
688
|
+
position: 'absolute',
|
|
689
|
+
top: 1+~(o.width/2) + 'px',
|
|
690
|
+
transform: o.hwaccel ? 'translate3d(0,0,0)' : '',
|
|
691
|
+
opacity: o.opacity,
|
|
692
|
+
animation: useCssAnimations && addAnimation(o.opacity, o.trail, start + i * o.direction, o.lines) + ' ' + 1/o.speed + 's linear infinite'
|
|
693
|
+
})
|
|
694
|
+
|
|
695
|
+
if (o.shadow) ins(seg, css(fill('#000', '0 0 4px ' + '#000'), {top: 2+'px'}))
|
|
696
|
+
ins(el, ins(seg, fill(getColor(o.color, i), '0 0 1px rgba(0,0,0,.1)')))
|
|
697
|
+
}
|
|
698
|
+
return el
|
|
699
|
+
},
|
|
700
|
+
|
|
701
|
+
/**
|
|
702
|
+
* Internal method that adjusts the opacity of a single line.
|
|
703
|
+
* Will be overwritten in VML fallback mode below.
|
|
704
|
+
*/
|
|
705
|
+
opacity: function(el, i, val) {
|
|
706
|
+
if (i < el.childNodes.length) el.childNodes[i].style.opacity = val
|
|
707
|
+
}
|
|
708
|
+
|
|
709
|
+
})
|
|
710
|
+
|
|
711
|
+
|
|
712
|
+
function initVML() {
|
|
713
|
+
|
|
714
|
+
/* Utility function to create a VML tag */
|
|
715
|
+
function vml(tag, attr) {
|
|
716
|
+
return createEl('<' + tag + ' xmlns="urn:schemas-microsoft.com:vml" class="spin-vml">', attr)
|
|
717
|
+
}
|
|
718
|
+
|
|
719
|
+
// No CSS transforms but VML support, add a CSS rule for VML elements:
|
|
720
|
+
sheet.addRule('.spin-vml', 'behavior:url(#default#VML)')
|
|
721
|
+
|
|
722
|
+
Spinner.prototype.lines = function(el, o) {
|
|
723
|
+
var r = o.length+o.width
|
|
724
|
+
, s = 2*r
|
|
725
|
+
|
|
726
|
+
function grp() {
|
|
727
|
+
return css(
|
|
728
|
+
vml('group', {
|
|
729
|
+
coordsize: s + ' ' + s,
|
|
730
|
+
coordorigin: -r + ' ' + -r
|
|
731
|
+
}),
|
|
732
|
+
{ width: s, height: s }
|
|
733
|
+
)
|
|
734
|
+
}
|
|
735
|
+
|
|
736
|
+
var margin = -(o.width+o.length)*2 + 'px'
|
|
737
|
+
, g = css(grp(), {position: 'absolute', top: margin, left: margin})
|
|
738
|
+
, i
|
|
739
|
+
|
|
740
|
+
function seg(i, dx, filter) {
|
|
741
|
+
ins(g,
|
|
742
|
+
ins(css(grp(), {rotation: 360 / o.lines * i + 'deg', left: ~~dx}),
|
|
743
|
+
ins(css(vml('roundrect', {arcsize: o.corners}), {
|
|
744
|
+
width: r,
|
|
745
|
+
height: o.width,
|
|
746
|
+
left: o.radius,
|
|
747
|
+
top: -o.width>>1,
|
|
748
|
+
filter: filter
|
|
749
|
+
}),
|
|
750
|
+
vml('fill', {color: getColor(o.color, i), opacity: o.opacity}),
|
|
751
|
+
vml('stroke', {opacity: 0}) // transparent stroke to fix color bleeding upon opacity change
|
|
752
|
+
)
|
|
753
|
+
)
|
|
754
|
+
)
|
|
755
|
+
}
|
|
756
|
+
|
|
757
|
+
if (o.shadow)
|
|
758
|
+
for (i = 1; i <= o.lines; i++)
|
|
759
|
+
seg(i, -2, 'progid:DXImageTransform.Microsoft.Blur(pixelradius=2,makeshadow=1,shadowopacity=.3)')
|
|
760
|
+
|
|
761
|
+
for (i = 1; i <= o.lines; i++) seg(i)
|
|
762
|
+
return ins(el, g)
|
|
763
|
+
}
|
|
764
|
+
|
|
765
|
+
Spinner.prototype.opacity = function(el, i, val, o) {
|
|
766
|
+
var c = el.firstChild
|
|
767
|
+
o = o.shadow && o.lines || 0
|
|
768
|
+
if (c && i+o < c.childNodes.length) {
|
|
769
|
+
c = c.childNodes[i+o]; c = c && c.firstChild; c = c && c.firstChild
|
|
770
|
+
if (c) c.opacity = val
|
|
771
|
+
}
|
|
772
|
+
}
|
|
773
|
+
}
|
|
774
|
+
|
|
775
|
+
var probe = css(createEl('group'), {behavior: 'url(#default#VML)'})
|
|
776
|
+
|
|
777
|
+
if (!vendor(probe, 'transform') && probe.adj) initVML()
|
|
778
|
+
else useCssAnimations = vendor(probe, 'animation')
|
|
779
|
+
|
|
780
|
+
return Spinner
|
|
781
|
+
|
|
782
|
+
}));
|
|
783
|
+
|
|
413
784
|
/* Bez v1.0.10-g5ae0136
|
|
414
785
|
* http://github.com/rdallasgray/bez
|
|
415
786
|
*
|
|
@@ -1433,6 +1804,9 @@ jQuery.Fotorama = function ($fotorama, opts) {
|
|
|
1433
1804
|
$videoClose = $(div(videoCloseClass)).appendTo($stage),
|
|
1434
1805
|
videoClose = $videoClose[0],
|
|
1435
1806
|
|
|
1807
|
+
spinner,
|
|
1808
|
+
$spinner = $(div(spinnerClass)),
|
|
1809
|
+
|
|
1436
1810
|
$videoPlaying,
|
|
1437
1811
|
|
|
1438
1812
|
activeIndex = false,
|
|
@@ -1647,6 +2021,8 @@ jQuery.Fotorama = function ($fotorama, opts) {
|
|
|
1647
2021
|
$arrs.hide();
|
|
1648
2022
|
}
|
|
1649
2023
|
|
|
2024
|
+
spinner = new Spinner($.extend(spinnerDefaults, opts.spinner));
|
|
2025
|
+
|
|
1650
2026
|
arrsUpdate();
|
|
1651
2027
|
stageWheelUpdate();
|
|
1652
2028
|
|
|
@@ -1716,7 +2092,7 @@ jQuery.Fotorama = function ($fotorama, opts) {
|
|
|
1716
2092
|
o_shadows = opts.shadows && !SLOW;
|
|
1717
2093
|
classes[addOrRemove(!o_shadows)].push(wrapNoShadowsClass);
|
|
1718
2094
|
|
|
1719
|
-
|
|
2095
|
+
spinnerStop();
|
|
1720
2096
|
|
|
1721
2097
|
$wrap
|
|
1722
2098
|
.addClass(classes.add.join(' '))
|
|
@@ -1856,17 +2232,15 @@ jQuery.Fotorama = function ($fotorama, opts) {
|
|
|
1856
2232
|
function loaded () {
|
|
1857
2233
|
////console.log('loaded: ' + src);
|
|
1858
2234
|
|
|
1859
|
-
|
|
1860
|
-
height = img.height,
|
|
1861
|
-
ratio = width / height;
|
|
2235
|
+
//console.log('$.Fotorama.measures[src]', $.Fotorama.measures[src]);
|
|
1862
2236
|
|
|
1863
|
-
imgData.measures = {
|
|
1864
|
-
width: width,
|
|
1865
|
-
height: height,
|
|
1866
|
-
ratio:
|
|
2237
|
+
$.Fotorama.measures[src] = imgData.measures = $.Fotorama.measures[src] || {
|
|
2238
|
+
width: img.width,
|
|
2239
|
+
height: img.height,
|
|
2240
|
+
ratio: img.width / img.height
|
|
1867
2241
|
};
|
|
1868
2242
|
|
|
1869
|
-
setMeasures(width, height, ratio, index);
|
|
2243
|
+
setMeasures(imgData.measures.width, imgData.measures.height, imgData.measures.ratio, index);
|
|
1870
2244
|
|
|
1871
2245
|
$img
|
|
1872
2246
|
.off('load error')
|
|
@@ -1914,7 +2288,7 @@ jQuery.Fotorama = function ($fotorama, opts) {
|
|
|
1914
2288
|
if ($.Fotorama.cache[src] === 'error') {
|
|
1915
2289
|
error();
|
|
1916
2290
|
} else if ($.Fotorama.cache[src] === 'loaded') {
|
|
1917
|
-
|
|
2291
|
+
//console.log('take from cache: ' + src);
|
|
1918
2292
|
setTimeout(waitAndLoad, 0);
|
|
1919
2293
|
} else {
|
|
1920
2294
|
setTimeout(justWait, 100);
|
|
@@ -1927,36 +2301,23 @@ jQuery.Fotorama = function ($fotorama, opts) {
|
|
|
1927
2301
|
});
|
|
1928
2302
|
}
|
|
1929
2303
|
|
|
1930
|
-
|
|
1931
|
-
|
|
1932
|
-
ooooStep = function () {
|
|
1933
|
-
$oooo.attr('class', ooooClass + ' ' + ooooClass + '--' + ooooI);
|
|
1934
|
-
ooooI++;
|
|
1935
|
-
if (ooooI > 4) ooooI = 0;
|
|
1936
|
-
},
|
|
1937
|
-
ooooI;
|
|
1938
|
-
|
|
1939
|
-
function ooooStart ($el) {
|
|
1940
|
-
ooooStop(true);
|
|
1941
|
-
$oooo.appendTo($el);
|
|
1942
|
-
ooooI = 0;
|
|
1943
|
-
ooooStep();
|
|
1944
|
-
ooooInterval = setInterval(ooooStep, 200);
|
|
2304
|
+
function spinnerSpin ($el) {
|
|
2305
|
+
$spinner.append(spinner.spin().el).appendTo($el);
|
|
1945
2306
|
}
|
|
1946
2307
|
|
|
1947
|
-
function
|
|
1948
|
-
|
|
1949
|
-
|
|
2308
|
+
function spinnerStop () {
|
|
2309
|
+
$spinner.detach();
|
|
2310
|
+
spinner.stop();
|
|
1950
2311
|
}
|
|
1951
2312
|
|
|
1952
2313
|
function updateFotoramaState () {
|
|
1953
2314
|
var $frame = that.activeFrame[STAGE_FRAME_KEY];
|
|
1954
2315
|
|
|
1955
2316
|
if ($frame && !$frame.data().state) {
|
|
1956
|
-
|
|
2317
|
+
spinnerSpin($frame);
|
|
1957
2318
|
$frame.on('f:load f:error', function () {
|
|
1958
2319
|
$frame.off('f:load f:error');
|
|
1959
|
-
|
|
2320
|
+
spinnerStop();
|
|
1960
2321
|
});
|
|
1961
2322
|
}
|
|
1962
2323
|
}
|
|
@@ -2555,7 +2916,7 @@ jQuery.Fotorama = function ($fotorama, opts) {
|
|
|
2555
2916
|
|
|
2556
2917
|
if (opts.glimpse) {
|
|
2557
2918
|
// Glimpse
|
|
2558
|
-
measures.w -= Math.round((numberFromPercent(opts.glimpse) / 100 * width || numberFromMeasure(opts.glimpse)) * 2)
|
|
2919
|
+
measures.w -= Math.round((numberFromPercent(opts.glimpse) / 100 * width || numberFromMeasure(opts.glimpse) || 0) * 2);
|
|
2559
2920
|
}
|
|
2560
2921
|
|
|
2561
2922
|
$stageShaft.css({width: measures.w, marginLeft: (measures.W - measures.w) / 2});
|
|
@@ -3036,6 +3397,7 @@ function hideInstance (instance) {
|
|
|
3036
3397
|
calculateIndexes();
|
|
3037
3398
|
}
|
|
3038
3399
|
$.Fotorama.cache = {};
|
|
3400
|
+
$.Fotorama.measures = {};
|
|
3039
3401
|
$ = $ || {};
|
|
3040
3402
|
$.Fotorama = $.Fotorama || {};
|
|
3041
3403
|
$.Fotorama.jst = $.Fotorama.jst || {};
|
|
@@ -3064,7 +3426,7 @@ $.Fotorama.jst.video = function(v) {
|
|
|
3064
3426
|
var __t, __p = '', __e = _.escape, __j = Array.prototype.join;
|
|
3065
3427
|
function print() { __p += __j.call(arguments, '') }
|
|
3066
3428
|
__p += '<div class="fotorama__video"><iframe src="';
|
|
3067
|
-
print((v.type == 'youtube' ? 'http://youtube.com/embed/' + v.id +'?autoplay=1' : v.type == 'vimeo' ? 'http://player.vimeo.com/video/' + v.id + '?autoplay=1&badge=0' : v.id) + (v.s ? '&' + v.s : '')) ;
|
|
3429
|
+
print((v.type == 'youtube' ? 'http://youtube.com/embed/' + v.id +'?autoplay=1' : v.type == 'vimeo' ? 'http://player.vimeo.com/video/' + v.id + '?autoplay=1&badge=0' : v.id) + (v.s && v.type != 'custom' ? '&' + v.s : '')) ;
|
|
3068
3430
|
__p += '" frameborder="0" allowfullscreen></iframe></div>';
|
|
3069
3431
|
return __p
|
|
3070
3432
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Fotorama 4.4.
|
|
2
|
+
* Fotorama 4.4.7 | http://fotorama.io/license/
|
|
3
3
|
*/
|
|
4
4
|
.fotorama__stage__shaft,
|
|
5
5
|
.fotorama__stage__frame,
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
.fotorama__img,
|
|
47
|
-
.
|
|
47
|
+
.fotorama__spinner {
|
|
48
48
|
position: absolute !important;
|
|
49
49
|
top: 50% !important;
|
|
50
50
|
left: 50% !important;
|
|
@@ -71,9 +71,6 @@
|
|
|
71
71
|
transform: translate3d(0, 0, 0);
|
|
72
72
|
}
|
|
73
73
|
|
|
74
|
-
.fotorama__oooo,
|
|
75
|
-
.fotorama__oooo:before,
|
|
76
|
-
.fotorama__oooo:after,
|
|
77
74
|
.fotorama__wrap--css3 .fotorama__stage,
|
|
78
75
|
.fotorama__wrap--css3 .fotorama__nav,
|
|
79
76
|
.fotorama__wrap--css3 .fotorama__stage__frame,
|
|
@@ -90,7 +87,11 @@
|
|
|
90
87
|
}
|
|
91
88
|
|
|
92
89
|
.fotorama__wrap--video .fotorama__stage__shaft,
|
|
93
|
-
.fotorama__wrap--video .
|
|
90
|
+
.fotorama__wrap--video .fotorama__stage,
|
|
91
|
+
.fotorama__wrap--video .fotorama__stage__frame--video,
|
|
92
|
+
.fotorama__wrap--video .fotorama__stage__frame--video .fotorama__img,
|
|
93
|
+
.fotorama__wrap--video .fotorama__stage__frame--video .fotorama__html,
|
|
94
|
+
.fotorama__wrap--video .fotorama__stage__frame--video .fotorama__caption {
|
|
94
95
|
-webkit-transform: none !important;
|
|
95
96
|
-ms-transform: none !important;
|
|
96
97
|
transform: none !important;
|
|
@@ -278,12 +279,6 @@
|
|
|
278
279
|
display: none;
|
|
279
280
|
}
|
|
280
281
|
|
|
281
|
-
.fotorama__wrap--fade .fotorama__stage__frame.fotorama__active {
|
|
282
|
-
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
|
|
283
|
-
filter: alpha(opacity=100);
|
|
284
|
-
opacity: 1;
|
|
285
|
-
}
|
|
286
|
-
|
|
287
282
|
.fotorama__wrap--fade .fotorama__stage__frame.fotorama__active,
|
|
288
283
|
.fotorama__wrap--fade .fotorama__fade-front,
|
|
289
284
|
.fotorama__wrap--fade .fotorama__fade-rear {
|
|
@@ -308,13 +303,6 @@
|
|
|
308
303
|
display: none;
|
|
309
304
|
}
|
|
310
305
|
|
|
311
|
-
.fotorama__wrap--video .fotorama__stage__frame--video .fotorama__img,
|
|
312
|
-
.fotorama__wrap--video .fotorama__stage__frame--video .fotorama__html {
|
|
313
|
-
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
|
|
314
|
-
filter: alpha(opacity=0);
|
|
315
|
-
opacity: 0;
|
|
316
|
-
}
|
|
317
|
-
|
|
318
306
|
.fotorama__img {
|
|
319
307
|
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
|
|
320
308
|
filter: alpha(opacity=0);
|
|
@@ -472,10 +460,6 @@
|
|
|
472
460
|
border-color: rgba(51, 51, 51, 0.5);
|
|
473
461
|
}
|
|
474
462
|
|
|
475
|
-
.fotorama__wrap--video .fotorama__caption {
|
|
476
|
-
display: none;
|
|
477
|
-
}
|
|
478
|
-
|
|
479
463
|
.fotorama__wrap--rtl .fotorama__caption {
|
|
480
464
|
left: auto;
|
|
481
465
|
right: 0;
|
|
@@ -487,41 +471,6 @@
|
|
|
487
471
|
padding: 5px 10px;
|
|
488
472
|
}
|
|
489
473
|
|
|
490
|
-
.fotorama__oooo {
|
|
491
|
-
width: 6px;
|
|
492
|
-
height: 6px;
|
|
493
|
-
margin-left: -8px;
|
|
494
|
-
margin-top: -3px;
|
|
495
|
-
}
|
|
496
|
-
|
|
497
|
-
.fotorama__oooo:before,
|
|
498
|
-
.fotorama__oooo:after {
|
|
499
|
-
content: '';
|
|
500
|
-
position: absolute;
|
|
501
|
-
left: 0;
|
|
502
|
-
top: 0;
|
|
503
|
-
width: 6px;
|
|
504
|
-
height: 6px;
|
|
505
|
-
border-radius: 6px;
|
|
506
|
-
background-color: #7f7f7f;
|
|
507
|
-
background-color: rgba(127, 127, 127, 0.5);
|
|
508
|
-
}
|
|
509
|
-
|
|
510
|
-
.fotorama__oooo:before {
|
|
511
|
-
left: -10px;
|
|
512
|
-
}
|
|
513
|
-
|
|
514
|
-
.fotorama__oooo .fotorama__oooo {
|
|
515
|
-
margin-left: 17px;
|
|
516
|
-
}
|
|
517
|
-
|
|
518
|
-
.fotorama__oooo--1:before,
|
|
519
|
-
.fotorama__oooo--2:after,
|
|
520
|
-
.fotorama__oooo--3 .fotorama__oooo:before,
|
|
521
|
-
.fotorama__oooo--4 .fotorama__oooo:after {
|
|
522
|
-
background-color: #7f7f7f;
|
|
523
|
-
}
|
|
524
|
-
|
|
525
474
|
.fotorama__wrap--css3 .fotorama__stage .fotorama__img,
|
|
526
475
|
.fotorama__wrap--css3 .fotorama__html,
|
|
527
476
|
.fotorama__wrap--css3 .fotorama__caption {
|
|
@@ -533,6 +482,14 @@
|
|
|
533
482
|
transition-duration: 0.3s;
|
|
534
483
|
}
|
|
535
484
|
|
|
485
|
+
.fotorama__wrap--video .fotorama__stage__frame--video .fotorama__img,
|
|
486
|
+
.fotorama__wrap--video .fotorama__stage__frame--video .fotorama__html,
|
|
487
|
+
.fotorama__wrap--video .fotorama__stage__frame--video .fotorama__caption {
|
|
488
|
+
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
|
|
489
|
+
filter: alpha(opacity=0);
|
|
490
|
+
opacity: 0;
|
|
491
|
+
}
|
|
492
|
+
|
|
536
493
|
.fotorama__select {
|
|
537
494
|
cursor: auto;
|
|
538
495
|
}
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: fotoramajs
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 4.4.
|
|
4
|
+
version: 4.4.7
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Artem Polikarpov
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2013-
|
|
11
|
+
date: 2013-11-05 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: sprockets
|
|
@@ -34,7 +34,6 @@ extra_rdoc_files: []
|
|
|
34
34
|
files:
|
|
35
35
|
- .gitignore
|
|
36
36
|
- Gemfile
|
|
37
|
-
- Gemfile.lock
|
|
38
37
|
- MIT-LICENSE.txt
|
|
39
38
|
- README.md
|
|
40
39
|
- Rakefile
|
|
@@ -70,3 +69,4 @@ signing_key:
|
|
|
70
69
|
specification_version: 4
|
|
71
70
|
summary: Fotorama is a simple, stunning, powerful JavaScript gallery.
|
|
72
71
|
test_files: []
|
|
72
|
+
has_rdoc:
|
data/Gemfile.lock
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
PATH
|
|
2
|
-
remote: .
|
|
3
|
-
specs:
|
|
4
|
-
fotoramajs (4.4.6)
|
|
5
|
-
sprockets (>= 2)
|
|
6
|
-
|
|
7
|
-
GEM
|
|
8
|
-
remote: https://rubygems.org/
|
|
9
|
-
specs:
|
|
10
|
-
hike (1.2.3)
|
|
11
|
-
httpclient (2.3.4.1)
|
|
12
|
-
multi_json (1.8.2)
|
|
13
|
-
rack (1.5.2)
|
|
14
|
-
sprockets (2.10.0)
|
|
15
|
-
hike (~> 1.2)
|
|
16
|
-
multi_json (~> 1.0)
|
|
17
|
-
rack (~> 1.0)
|
|
18
|
-
tilt (~> 1.1, != 1.3.0)
|
|
19
|
-
tilt (1.4.1)
|
|
20
|
-
|
|
21
|
-
PLATFORMS
|
|
22
|
-
ruby
|
|
23
|
-
|
|
24
|
-
DEPENDENCIES
|
|
25
|
-
fotoramajs!
|
|
26
|
-
httpclient
|