PluginProbe ʕ •ᴥ•ʔ
WooCommerce / 8.9.1
WooCommerce v8.9.1
10.8.1 10.8.0 10.8.0-rc.1 10.8.0-beta.2 10.8.0-beta.1 7.8.0-beta.1 7.8.0-beta.2 7.8.0-rc.1 7.8.0-rc.2 7.8.1 7.8.2 7.8.3 7.8.4 7.9.0 7.9.0-beta.1 7.9.0-beta.2 7.9.0-rc.2 7.9.0-rc.3 7.9.1 7.9.2 8.0.0 8.0.0-beta.1 8.0.0-beta.2 8.0.0-rc.1 8.0.0-rc.2 8.0.1 8.0.2 8.0.3 8.0.4 8.0.5 8.1.0 8.1.0-beta.1 8.1.0-rc.1 8.1.0-rc.2 8.1.1 8.1.2 8.1.3 8.1.4 8.2.0 8.2.0-beta.1 8.2.0-rc.1 8.2.0-rc.2 8.2.1 8.2.2 8.2.3 8.2.4 8.2.5 8.3.0 8.3.0-beta.1 8.3.0-rc.1 8.3.0-rc.2 8.3.1 8.3.2 8.3.3 8.3.4 8.4.0 8.4.0-beta.1 8.4.0-rc.1 8.4.1 8.4.2 8.4.3 8.5.0 8.5.0-beta.1 8.5.0-rc.1 8.5.1 8.5.2 8.5.3 8.5.4 8.5.5 8.6.0 8.6.0-beta.1 8.6.0-rc.1 8.6.1 8.6.2 8.6.3 8.6.4 8.7.0 8.7.0-beta.1 8.7.0-beta.2 8.7.0-rc.1 8.7.1 8.7.2 8.7.3 8.8.0 8.8.0-beta.1 8.8.0-rc.1 8.8.1 8.8.2 8.8.3 8.8.4 8.8.5 8.8.6 8.8.7 8.9.0 8.9.0-beta.1 8.9.0-rc.1 8.9.1 8.9.2 8.9.3 8.9.4 8.9.5 9.0.0 9.0.0-beta.1 9.0.0-beta.2 9.0.0-rc.1 9.0.1 9.0.2 9.0.3 9.0.4 9.1.0 9.1.0-beta.1 9.1.0-rc.1 9.1.1 9.1.2 9.1.3 9.1.4 9.1.5 9.1.6 9.2.0 9.2.0-beta.1 9.2.0-rc.1 9.2.1 9.2.2 9.2.3 9.2.4 9.2.5 9.3.0 9.3.0-beta.1 9.3.0-rc.1 9.3.1 9.3.2 9.3.3 9.3.4 9.3.5 9.3.6 9.4.0 9.4.0-beta.1 9.4.0-beta.2 9.4.0-rc.1 9.4.0-rc.2 9.4.0-rc.3 9.4.0-rc.4 9.4.1 9.4.2 9.4.3 9.4.4 9.4.5 9.5.0 9.5.0-beta.1 9.5.0-beta.2 9.5.0-rc.1 9.5.1 9.5.2 9.5.3 9.5.4 9.6.0 9.6.0-beta.1 9.6.0-beta.2 9.6.0-rc.1 9.6.1 9.6.2 9.6.3 9.6.4 9.7.0 9.7.0-beta.1 9.7.0-rc.1 9.7.1 9.7.2 9.7.3 9.8.0 9.8.0-beta.1 9.8.0-rc.1 9.8.1 9.8.2 9.8.3 9.8.4 9.8.5 9.8.6 9.8.7 9.9.0 9.9.0-beta.1 9.9.0-rc.1 9.9.1 9.9.2 9.9.3 9.9.4 9.9.5 9.9.6 9.9.7 3.7.3 7.1.2 3.8.0 7.2.0 3.8.0-beta.1 7.2.0-beta.1 3.8.0-rc.1 7.2.0-beta.2 3.8.0-rc.2 7.2.0-rc.1 3.8.1 7.2.0-rc.2 3.8.2 7.2.1 3.8.3 7.2.2 3.9.0 7.2.3 3.9.0-beta.1 7.2.4 3.9.0-beta.2 7.3.0 3.9.0-rc.1 7.3.0-beta.1 3.9.0-rc.2 7.3.0-beta.2 3.9.0-rc.3 7.3.0-rc.1 3.9.0-rc.4 7.3.0-rc.2 3.9.1 7.3.1 3.9.2 7.4.0 3.9.3 7.4.0-beta.1 3.9.4 7.4.0-beta.2 3.9.5 7.4.0-rc.1 4.0.0 7.4.0-rc.2 4.0.0-beta.1 7.4.1 4.0.0-rc.1 7.4.2 4.0.0-rc.2 7.5.0 4.0.1 7.5.0-beta.1 4.0.2 7.5.0-beta.2 4.0.3 7.5.0-rc.1 4.0.4 7.5.1 4.1.0 7.5.2 4.1.0-beta.1 7.6.0 4.1.0-beta.2 7.6.0-beta.1 4.1.0-rc.1 7.6.0-beta.2 4.1.0-rc.2 7.6.0-rc.1 4.1.1 7.6.0-rc.2 4.1.2 7.6.0-rc.3 4.1.3 7.6.1 4.1.4 7.6.2 4.2.0 7.7.0 4.2.0-RC.1 7.7.0-beta.1 4.2.0-RC.2 7.7.0-beta.2 4.2.0-beta.1 7.7.0-rc.1 4.2.1 7.7.1 4.2.2 7.7.2 4.2.3 7.7.3 4.2.4 7.8.0 4.2.5 4.3.0 4.3.0-beta.1 4.3.0-rc.1 4.3.0-rc.2 4.3.0-rc.3 4.3.1 4.3.2 4.3.3 4.3.4 4.3.5 4.3.6 4.4.0 4.4.0-beta.1 4.4.0-rc.1 4.4.1 4.4.2 4.4.3 4.4.4 4.5.0 4.5.0-beta.1 4.5.0-rc.1 4.5.0-rc.3 4.5.1 4.5.2 4.5.3 4.5.4 4.5.5 4.6.0 4.6.0-beta.1 4.6.0-rc.1 4.6.1 4.6.2 4.6.3 4.6.4 4.6.5 4.7.0 4.7.0-beta.1 4.7.0-beta.2 4.7.0-rc.1 4.7.1 4.7.1-beta.1 4.7.2 4.7.3 4.7.4 4.8.0 4.8.0-beta.1 4.8.0-rc.1 4.8.0-rc.2 4.8.1 4.8.2 4.8.3 4.9.0 4.9.0-beta.1 4.9.0-rc.1 4.9.0-rc.2 4.9.1 4.9.2 4.9.3 4.9.4 4.9.5 5.0.0 5.0.0-beta.1 5.0.0-beta.2 5.0.0-rc.1 5.0.0-rc.2 5.0.0-rc.3 5.0.1 5.0.2 5.0.3 5.1.0 5.1.0-beta.1 5.1.0-rc.1 trunk 5.1.1 10.0.0 5.1.2 10.0.0-rc.1 5.1.3 10.0.0-rc.2 5.2.0 10.0.1 5.2.0-beta.1 10.0.2 5.2.0-rc.1 10.0.3 5.2.0-rc.2 10.0.4 5.2.1 10.0.5 5.2.2 10.0.6 5.2.3 10.1.0 5.2.4 10.1.0-rc.1 5.2.5 10.1.0-rc.2 5.3.0 10.1.0-rc.3 5.3.0-beta.1 10.1.0-rc.4 5.3.0-rc.1 10.1.1 5.3.0-rc.2 10.1.2 5.3.1 10.1.3 5.3.2 10.1.4 5.3.3 10.2.0 5.4.0 10.2.0-beta.1 5.4.0-beta.1 10.2.0-beta.2 5.4.0-rc.1 10.2.0-rc.1 5.4.1 10.2.1 5.4.2 10.2.2 5.4.3 10.2.3 5.4.4 10.2.4 5.4.5 10.3.0 5.5.0 10.3.0-beta.1 5.5.0-beta.1 10.3.0-beta.2 5.5.0-rc.1 10.3.0-rc.1 5.5.0-rc.2 10.3.0-rc.2 5.5.1 10.3.1 5.5.2 10.3.2 5.5.3 10.3.3 5.5.4 10.3.4 5.5.5 10.3.5 5.6.0 10.3.6 5.6.0-beta.1 10.3.7 5.6.0-rc.1 10.3.8 5.6.0-rc.2 10.4.0 5.6.1 10.4.0-beta.1 5.6.2 10.4.0-beta.2 5.6.3 10.4.0-rc.1 5.7.0 10.4.1 5.7.0-beta.1 10.4.2 5.7.0-rc.1 10.4.3 5.7.1 10.4.4 5.7.2 10.5.0 5.7.3 10.5.0-beta.1 5.8.0 10.5.0-beta.2 5.8.0-beta.1 10.5.0-rc.1 5.8.0-beta.2 10.5.0-rc.2 5.8.0-rc.1 10.5.0-rc.3 5.8.1 10.5.1 5.8.2 10.5.2 5.9.0 10.5.3 5.9.0-beta.1 10.6.0 5.9.0-rc.1 10.6.0-beta.1 5.9.0-rc.2 10.6.0-beta.2 5.9.1 10.6.0-rc.1 5.9.2 10.6.1 6.0.0 10.6.2 6.0.0-beta.1 10.7.0 6.0.0-rc.1 10.7.0-beta.1 6.0.1 10.7.0-beta.2 6.0.2 10.7.0-rc.1 6.1.0 3.0.0 6.1.0-beta.1 3.0.1 6.1.0-rc.1 3.0.2 6.1.0-rc.2 3.0.3 6.1.1 3.0.4 6.1.2 3.0.5 6.1.3 3.0.6 6.2.0 3.0.7 6.2.0-beta.1 3.0.8 6.2.0-rc.1 3.0.9 6.2.0-rc.2 3.1.0 6.2.1 3.1.1 6.2.2 3.1.2 6.2.3 3.2.0 6.3.0 3.2.1 6.3.0-beta.1 3.2.2 6.3.0-rc.1 3.2.3 6.3.0-rc.2 3.2.4 6.3.1 3.2.5 6.3.2 3.2.6 6.4.0 3.3.0 6.4.0-beta.1 3.3.1 6.4.0-rc.1 3.3.2 6.4.1 3.3.2-rc.1 6.4.2 3.3.3 6.5.0 3.3.4 6.5.0-beta.1 3.3.5 6.5.0-rc.1 3.3.6 6.5.0-rc.2 3.4.0 6.5.1 3.4.0-beta.1 6.5.2 3.4.0-rc.2 6.6.0 3.4.1 6.6.0-beta.1 3.4.2 6.6.0-rc.1 3.4.3 6.6.0-rc.2 3.4.4 6.6.1 3.4.5 6.6.2 3.4.6 6.7.0 3.4.7 6.7.0-beta.1 3.4.8 6.7.0-beta.2 3.5.0 6.7.0-rc.1 3.5.0-beta.1 6.7.1 3.5.0-rc.1 6.8.0 3.5.0-rc.2 6.8.0-beta.1 3.5.1 6.8.0-beta.2 3.5.10 6.8.0-rc.1 3.5.2 6.8.1 3.5.3 6.8.2 3.5.4 6.8.3 3.5.5 6.9.0 3.5.6 6.9.0-beta.1 3.5.7 6.9.0-beta.2 3.5.8 6.9.0-rc.1 3.5.9 6.9.1 3.6.0 6.9.2 3.6.0-beta.1 6.9.3 3.6.0-rc.1 6.9.4 3.6.0-rc.2 6.9.5 3.6.0-rc.3 7.0.0 3.6.1 7.0.0-beta.1 3.6.2 7.0.0-beta.2 3.6.3 7.0.0-beta.3 3.6.4 7.0.0-rc.1 3.6.5 7.0.0-rc.2 3.6.6 7.0.1 3.6.7 7.0.2 3.7.0 7.1.0 3.7.0-beta.1 7.1.0-beta.1 3.7.0-rc.1 7.1.0-beta.2 3.7.0-rc.2 7.1.0-rc.1 3.7.1 7.1.0-rc.2 3.7.2 7.1.1
woocommerce / assets / js / zoom / jquery.zoom.js
woocommerce / assets / js / zoom Last commit date
jquery.zoom.js 5 years ago jquery.zoom.min.js 2 years ago
jquery.zoom.js
238 lines
1 /*!
2 Zoom 1.7.21
3 license: MIT
4 http://www.jacklmoore.com/zoom
5 */
6 (function ($) {
7 var defaults = {
8 url: false,
9 callback: false,
10 target: false,
11 duration: 120,
12 on: 'mouseover', // other options: grab, click, toggle
13 touch: true, // enables a touch fallback
14 onZoomIn: false,
15 onZoomOut: false,
16 magnify: 1
17 };
18
19 // Core Zoom Logic, independent of event listeners.
20 $.zoom = function(target, source, img, magnify) {
21 var targetHeight,
22 targetWidth,
23 sourceHeight,
24 sourceWidth,
25 xRatio,
26 yRatio,
27 offset,
28 $target = $(target),
29 position = $target.css('position'),
30 $source = $(source);
31
32 // The parent element needs positioning so that the zoomed element can be correctly positioned within.
33 target.style.position = /(absolute|fixed)/.test(position) ? position : 'relative';
34 target.style.overflow = 'hidden';
35 img.style.width = img.style.height = '';
36
37 $(img)
38 .addClass('zoomImg')
39 .css({
40 position: 'absolute',
41 top: 0,
42 left: 0,
43 opacity: 0,
44 width: img.width * magnify,
45 height: img.height * magnify,
46 border: 'none',
47 maxWidth: 'none',
48 maxHeight: 'none'
49 })
50 .appendTo(target);
51
52 return {
53 init: function() {
54 targetWidth = $target.outerWidth();
55 targetHeight = $target.outerHeight();
56
57 if (source === target) {
58 sourceWidth = targetWidth;
59 sourceHeight = targetHeight;
60 } else {
61 sourceWidth = $source.outerWidth();
62 sourceHeight = $source.outerHeight();
63 }
64
65 xRatio = (img.width - targetWidth) / sourceWidth;
66 yRatio = (img.height - targetHeight) / sourceHeight;
67
68 offset = $source.offset();
69 },
70 move: function (e) {
71 var left = (e.pageX - offset.left),
72 top = (e.pageY - offset.top);
73
74 top = Math.max(Math.min(top, sourceHeight), 0);
75 left = Math.max(Math.min(left, sourceWidth), 0);
76
77 img.style.left = (left * -xRatio) + 'px';
78 img.style.top = (top * -yRatio) + 'px';
79 }
80 };
81 };
82
83 $.fn.zoom = function (options) {
84 return this.each(function () {
85 var
86 settings = $.extend({}, defaults, options || {}),
87 //target will display the zoomed image
88 target = settings.target && $(settings.target)[0] || this,
89 //source will provide zoom location info (thumbnail)
90 source = this,
91 $source = $(source),
92 img = document.createElement('img'),
93 $img = $(img),
94 mousemove = 'mousemove.zoom',
95 clicked = false,
96 touched = false;
97
98 // If a url wasn't specified, look for an image element.
99 if (!settings.url) {
100 var srcElement = source.querySelector('img');
101 if (srcElement) {
102 settings.url = srcElement.getAttribute('data-src') || srcElement.currentSrc || srcElement.src;
103 settings.alt = srcElement.getAttribute('data-alt') || srcElement.alt;
104 }
105 if (!settings.url) {
106 return;
107 }
108 }
109
110 $source.one('zoom.destroy', function(position, overflow){
111 $source.off(".zoom");
112 target.style.position = position;
113 target.style.overflow = overflow;
114 img.onload = null;
115 $img.remove();
116 }.bind(this, target.style.position, target.style.overflow));
117
118 img.onload = function () {
119 var zoom = $.zoom(target, source, img, settings.magnify);
120
121 function start(e) {
122 zoom.init();
123 zoom.move(e);
124
125 // Skip the fade-in for IE8 and lower since it chokes on fading-in
126 // and changing position based on mousemovement at the same time.
127 $img.stop()
128 .fadeTo($.support.opacity ? settings.duration : 0, 1, 'function' === typeof settings.onZoomIn ? settings.onZoomIn.call(img) : false);
129 }
130
131 function stop() {
132 $img.stop()
133 .fadeTo(settings.duration, 0, 'function' === typeof settings.onZoomOut ? settings.onZoomOut.call(img) : false);
134 }
135
136 // Mouse events
137 if (settings.on === 'grab') {
138 $source
139 .on('mousedown.zoom',
140 function (e) {
141 if (e.which === 1) {
142 $(document).one('mouseup.zoom',
143 function () {
144 stop();
145
146 $(document).off(mousemove, zoom.move);
147 }
148 );
149
150 start(e);
151
152 $(document).on(mousemove, zoom.move);
153
154 e.preventDefault();
155 }
156 }
157 );
158 } else if (settings.on === 'click') {
159 $source.on('click.zoom',
160 function (e) {
161 if (clicked) {
162 // bubble the event up to the document to trigger the unbind.
163 return;
164 } else {
165 clicked = true;
166 start(e);
167 $(document).on(mousemove, zoom.move);
168 $(document).one('click.zoom',
169 function () {
170 stop();
171 clicked = false;
172 $(document).off(mousemove, zoom.move);
173 }
174 );
175 return false;
176 }
177 }
178 );
179 } else if (settings.on === 'toggle') {
180 $source.on('click.zoom',
181 function (e) {
182 if (clicked) {
183 stop();
184 } else {
185 start(e);
186 }
187 clicked = !clicked;
188 }
189 );
190 } else if (settings.on === 'mouseover') {
191 zoom.init(); // Preemptively call init because IE7 will fire the mousemove handler before the hover handler.
192
193 $source
194 .on('mouseenter.zoom', start)
195 .on('mouseleave.zoom', stop)
196 .on(mousemove, zoom.move);
197 }
198
199 // Touch fallback
200 if (settings.touch) {
201 $source
202 .on('touchstart.zoom', function (e) {
203 e.preventDefault();
204 if (touched) {
205 touched = false;
206 stop();
207 } else {
208 touched = true;
209 start( e.originalEvent.touches[0] || e.originalEvent.changedTouches[0] );
210 }
211 })
212 .on('touchmove.zoom', function (e) {
213 e.preventDefault();
214 zoom.move( e.originalEvent.touches[0] || e.originalEvent.changedTouches[0] );
215 })
216 .on('touchend.zoom', function (e) {
217 e.preventDefault();
218 if (touched) {
219 touched = false;
220 stop();
221 }
222 });
223 }
224
225 if ('function' === typeof settings.callback) {
226 settings.callback.call(img);
227 }
228 };
229
230 img.setAttribute('role', 'presentation');
231 img.alt = settings.alt || '';
232 img.src = settings.url;
233 });
234 };
235
236 $.fn.zoom.defaults = defaults;
237 }(window.jQuery));
238