Changeset 1859215
- Timestamp:
- 04/16/2018 04:41:01 PM (8 years ago)
- Location:
- loadgo-for-wp/trunk/js/loadgo
- Files:
-
- 5 edited
-
README.md (modified) (2 diffs)
-
loadgo-nojquery.js (modified) (27 diffs)
-
loadgo-nojquery.min.js (modified) (1 diff)
-
loadgo.js (modified) (18 diffs)
-
loadgo.min.js (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
loadgo-for-wp/trunk/js/loadgo/README.md
r1698131 r1859215 76 76 ## Changelog 77 77 78 **2.2** - Latest release (23-06-2017) 78 **2.2.1** - Latest release (16-04-2017) 79 80 * Code style 81 * Javascript: setProgress method now checks if element exists. 82 * Added Gruntfile. 83 * Fixed Javascript examples. 84 85 **2.2** - (23-06-2017) 79 86 80 87 * Added a new method: `destroy`. … … 118 125 ``` 119 126 <!-- If you use jQuery --> 120 <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/LoadGo/2.2 /loadgo.min.js"></script>127 <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/LoadGo/2.2.1/loadgo.min.js"></script> 121 128 122 129 <!-- If you don't use jQuery --> 123 <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/LoadGo/2.2 /loadgo-nojquery.min.js"></script>130 <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/LoadGo/2.2.1/loadgo-nojquery.min.js"></script> 124 131 ``` 125 132 ### Development environment -
loadgo-for-wp/trunk/js/loadgo/loadgo-nojquery.js
r1698131 r1859215 1 1 /** 2 * @preserve LoadGo v2.2 (http://franverona.com/loadgo)3 * 201 7- Fran Verona2 * @preserve LoadGo v2.2.1 (http://franverona.com/loadgo) 3 * 2018 - Fran Verona 4 4 * Licensed under MIT (https://github.com/franverona/loadgo/blob/master/LICENSE) 5 5 */ … … 9 9 // Rudimentary indexOf method for < IE 8 compatibility 10 10 var indexOf = function (array, element) { 11 for (var i = 0, l = array.length; i < l; i++) 12 if (array[i] === element) 11 for (var i = 0, l = array.length; i < l; i++) { 12 if (array[i] === element) { 13 13 return i; 14 } 15 } 14 16 return -1; 15 17 }; … … 21 23 if (typeof obj1 === 'undefined') { 22 24 obj2Clone = JSON.parse(JSON.stringify(obj2)); 23 if (obj2.resize) 25 if (obj2.resize) { 24 26 obj2Clone.resize = obj2.resize; // Functions won't be serialized, so we need to do it manually 27 } 25 28 result = obj2Clone; 26 } 27 else if (typeof obj2 === 'undefined') { 29 } else if (typeof obj2 === 'undefined') { 28 30 obj1Clone = JSON.parse(JSON.stringify(obj1)); 29 if (obj1.resize) 31 if (obj1.resize) { 30 32 obj1Clone.resize = obj1.resize; // Functions won't be serialized, so we need to do it manually 33 } 31 34 result = obj1Clone; 32 } 33 else { 35 } else { 34 36 obj1Clone = JSON.parse(JSON.stringify(obj1)); 35 if (obj1.resize) 37 if (obj1.resize) { 36 38 obj1Clone.resize = obj1.resize; // Functions won't be serialized, so we need to do it manually 39 } 37 40 obj1 = obj1Clone; 38 41 39 42 obj2Clone = JSON.parse(JSON.stringify(obj2)); 40 if (obj2.resize) 43 if (obj2.resize) { 41 44 obj2Clone.resize = obj2.resize; // Functions won't be serialized, so we need to do it manually 45 } 42 46 obj2 = obj2Clone; 43 47 44 48 result = obj1; 45 for (var prop in obj2) 49 for (var prop in obj2) { 46 50 result[prop] = obj2[prop]; 51 } 47 52 } 48 53 return result; … … 51 56 // Get Loadgo properties for element 52 57 var getProperties = function (elementId) { 53 for (var i = 0, l = domElements.length; i < l; i++) 54 if (domElements[i].id === elementId) 58 for (var i = 0, l = domElements.length; i < l; i++) { 59 if (domElements[i].id === elementId) { 55 60 return domElements[i].properties; 61 } 62 } 56 63 return null; 57 64 }; … … 59 66 // Get array index on domElements array 60 67 var getIndex = function (elementId) { 61 for (var i = 0, l = domElements.length; i < l; i++) 62 if (domElements[i].id === elementId) 68 for (var i = 0, l = domElements.length; i < l; i++) { 69 if (domElements[i].id === elementId) { 63 70 return i; 71 } 72 } 64 73 return -1; 65 74 }; … … 67 76 // Returns true if element is valid; false otherwise 68 77 var elementIsValid = function (element) { 69 if (typeof element === 'undefined' || element === null) 78 if (typeof element === 'undefined' || element === null) { 70 79 return false; 71 72 if (element.nodeName !== 'IMG') 80 } 81 82 if (element.nodeName !== 'IMG') { 73 83 throw new Error('LoadGo only works on img elements.'); 74 75 if (element.length > 1) 84 } 85 86 if (element.length > 1) { 76 87 throw new Error('LoadGo only works on one element at a time. Try with a valid #id.'); 88 } 77 89 78 90 return true; … … 83 95 var measure = element.style[property] 84 96 if (measure === 'auto') { 85 if (property.toLowerCase().indexOf('left') !== -1 || property.toLowerCase().indexOf('right') !== -1) 97 if (property.toLowerCase().indexOf('left') !== -1 || property.toLowerCase().indexOf('right') !== -1) { 86 98 return parseFloat(element.offsetLeft); 87 if (property.toLowerCase().indexOf('top') !== -1 || property.toLowerCase().indexOf('bottom') !== -1) 99 } 100 if (property.toLowerCase().indexOf('top') !== -1 || property.toLowerCase().indexOf('bottom') !== -1) { 88 101 return parseFloat(element.offsetTop); 102 } 89 103 } 90 104 91 if (measure.indexOf('px') !== -1) 105 if (measure.indexOf('px') !== -1) { 92 106 return parseFloat(measure); 107 } 93 108 94 109 return 0; … … 104 119 // Loadgo default options 105 120 var defaultOptions = { 106 'bgcolor': '#FFFFFF',// Overlay color107 'opacity': '0.5',// Overlay opacity108 'animated': true, // Overlay smooth animation when setting progress109 'image': null,// Overlay image110 'class': null,// Overlay CSS class111 'resize': null,// Resize functions (optional)112 'direction': 'lr',// Direction animation (optional)113 'filter': null// Image filter (optional)121 'bgcolor': '#FFFFFF', // Overlay color 122 'opacity': '0.5', // Overlay opacity 123 'animated': true, // Overlay smooth animation when setting progress 124 'image': null, // Overlay image 125 'class': null, // Overlay CSS class 126 'resize': null, // Resize functions (optional) 127 'direction': 'lr', // Direction animation (optional) 128 'filter': null // Image filter (optional) 114 129 }; 115 130 … … 122 137 */ 123 138 Loadgo.init = function (element, useroptions) { 124 125 if (!elementIsValid(element)) 126 return; 139 140 if (!elementIsValid(element)) { 141 return; 142 } 127 143 128 144 var domElementsIndex = getIndex(element.id); 129 145 if (domElementsIndex === -1) { 130 146 domElements.push({ 131 id: element.id,132 properties: {}147 id: element.id, 148 properties: {} 133 149 }); 134 150 domElementsIndex = domElements.length - 1; 135 151 } 136 else 152 else { 137 153 // Plugin options. We need to reset options to avoid future errors 138 154 domElements[domElementsIndex].properties = {}; 155 } 139 156 140 157 var pluginOptions = Loadgo.options(element, useroptions); … … 145 162 // Overlay classes 146 163 var overlayClasses = ['loadgo-overlay']; 147 if (pluginOptions['class']) 164 if (pluginOptions['class']) { 148 165 overlayClasses.push(pluginOptions['class']); 166 } 149 167 overlay.className = overlayClasses.join(' '); 150 168 … … 157 175 // Overlay width 158 176 var gbc = element.getBoundingClientRect(); 159 if (gbc.width) 177 if (gbc.width) { 160 178 overlay.style.width = gbc.width + 'px'; // for modern browsers 161 else 179 } 180 else { 162 181 overlay.style.width = element.offsetWidth; // for oldIE 182 } 163 183 164 184 // Overlay height 165 if (gbc.height) 185 if (gbc.height) { 166 186 overlay.style.height = gbc.height + 'px'; // for modern browsers 167 else 187 } 188 else { 168 189 overlay.style.height = element.offsetWidth; // for oldIE 190 } 169 191 170 192 // Overlay will be positioned absolute … … 182 204 // Filters 183 205 if (pluginOptions.filter) { 184 if (pluginOptions.filter === 'blur') 206 if (pluginOptions.filter === 'blur') { 185 207 element.style['-webkit-filter'] = pluginOptions.filter + '(10px)'; 186 else if (pluginOptions.filter === 'hue-rotate')208 } else if (pluginOptions.filter === 'hue-rotate') { 187 209 element.style['-webkit-filter'] = pluginOptions.filter + '(360deg)'; 188 else if (pluginOptions.filter === 'opacity')210 } else if (pluginOptions.filter === 'opacity') { 189 211 element.style['-webkit-filter'] = pluginOptions.filter + '(0)'; 190 else212 } else { 191 213 element.style['-webkit-filter'] = pluginOptions.filter + '(1)'; 214 } 192 215 193 216 if (pluginOptions.animated) { 194 element.style['transition'] = '0.6s filter ease';195 element.style['-webkit-transition'] = '0.6s -webkit-filter ease';196 element.style['-moz-transition'] = '0.6s -moz-filter ease';197 element.style['-ms-transition'] = '0.6s -ms-filter ease';198 element.style['-o-transition'] = '0.6s -o-filter ease';217 element.style['transition'] = '0.6s filter ease'; 218 element.style['-webkit-transition'] = '0.6s -webkit-filter ease'; 219 element.style['-moz-transition'] = '0.6s -moz-filter ease'; 220 element.style['-ms-transition'] = '0.6s -ms-filter ease'; 221 element.style['-o-transition'] = '0.6s -o-filter ease'; 199 222 } 200 223 } … … 203 226 if (pluginOptions.image) { 204 227 var bgposition = '100% 0%'; // Left to right animation by default 205 if (pluginOptions.direction === 'rl') 228 if (pluginOptions.direction === 'rl') { 206 229 bgposition = '0% 50%'; // Right to left animation 207 else if (pluginOptions.direction === 'bt')230 } else if (pluginOptions.direction === 'bt') { 208 231 bgposition = '100% 0%'; // Bottom to top animation 209 else if (pluginOptions.direction === 'tb')232 } else if (pluginOptions.direction === 'tb') { 210 233 bgposition = '0% 100%'; // Top to bottom animation 234 } 211 235 212 236 overlay.style['background-image'] = 'url("' + pluginOptions.image + '")'; … … 232 256 container.className = 'loadgo-container'; 233 257 container.style.position = 'relative'; 234 235 element.parentNode.appendChild(container); 236 258 element.before(container); 237 259 container.appendChild(element); 260 238 261 container.appendChild(overlay); 239 262 240 263 // We need to add margins and paddings to set the overlay exactly above our image 241 var pl = parseOffset(element, 'paddingLeft') ,242 pr = parseOffset(element, 'paddingRight'),243 pt = parseOffset(element, 'paddingTop'),244 pb = parseOffset(element, 'paddingBottom'),245 ml = parseOffset(element, 'marginLeft'),246 mr = parseOffset(element, 'marginRight'),247 mt = parseOffset(element, 'marginTop'),248 mb = parseOffset(element, 'marginBottom');264 var pl = parseOffset(element, 'paddingLeft'); 265 var pr = parseOffset(element, 'paddingRight'); 266 var pt = parseOffset(element, 'paddingTop'); 267 var pb = parseOffset(element, 'paddingBottom'); 268 var ml = parseOffset(element, 'marginLeft'); 269 var mr = parseOffset(element, 'marginRight'); 270 var mt = parseOffset(element, 'marginTop'); 271 var mb = parseOffset(element, 'marginBottom'); 249 272 250 273 if (pluginOptions.direction === 'lr') { … … 277 300 // Resize event 278 301 var resizeFunction = function () { 279 var data = getProperties(element.id), elementIndex = getIndex(element.id); 302 var data = getProperties(element.id) 303 var elementIndex = getIndex(element.id); 280 304 if (data !== null) { 281 var overlay = document.getElementById(data.overlay), gbc = element.getBoundingClientRect(); 305 var overlay = document.getElementById(data.overlay); 306 var gbc = element.getBoundingClientRect(); 282 307 283 308 if (overlay) { 284 309 285 310 // Overlay width 286 if (gbc.width) 311 if (gbc.width) { 287 312 overlay.style.width = gbc.width + 'px'; // for modern browsers 288 else 313 } 314 else { 289 315 overlay.style.width = element.offsetWidth; // for oldIE 316 } 290 317 291 318 // Overlay height 292 if (gbc.height) 319 if (gbc.height) { 293 320 overlay.style.height = gbc.height + 'px'; // for modern browsers 294 else 321 } 322 else { 295 323 overlay.style.height = element.offsetWidth; // for oldIE 324 } 296 325 297 326 // We need to add margins and paddings to set the overlay exactly above our image 298 var pl = parseOffset(element, 'paddingLeft') ,299 pr = parseOffset(element, 'paddingRight'),300 pt = parseOffset(element, 'paddingTop'),301 pb = parseOffset(element, 'paddingBottom'),302 ml = parseOffset(element, 'marginLeft'),303 mr = parseOffset(element, 'marginRight'),304 mt = parseOffset(element, 'marginTop'),305 mb = parseOffset(element, 'marginBottom');327 var pl = parseOffset(element, 'paddingLeft'); 328 var pr = parseOffset(element, 'paddingRight'); 329 var pt = parseOffset(element, 'paddingTop'); 330 var pb = parseOffset(element, 'paddingBottom'); 331 var ml = parseOffset(element, 'marginLeft'); 332 var mr = parseOffset(element, 'marginRight'); 333 var mt = parseOffset(element, 'marginTop'); 334 var mb = parseOffset(element, 'marginBottom'); 306 335 307 336 if (pluginOptions.direction === 'lr') { … … 333 362 }; 334 363 335 if (pluginOptions.resize) 364 if (pluginOptions.resize) { 336 365 resizeFunction = pluginOptions.resize; 337 338 if (window.addEventListener) 366 } 367 368 if (window.addEventListener) { 339 369 window.addEventListener('resize', resizeFunction, false); 340 else 370 } 371 else { 341 372 window.attachEvent('onresize', resizeFunction); 373 } 342 374 343 375 }; … … 345 377 Loadgo.options = function (element, useroptions) { 346 378 347 if (!elementIsValid(element)) 348 return; 379 if (!elementIsValid(element)) { 380 return; 381 } 349 382 350 383 // Store Loadgo properties 351 384 var domElementsIndex = getIndex(element.id); 352 if (domElementsIndex === -1) 353 return; 385 if (domElementsIndex === -1) { 386 return; 387 } 354 388 355 389 var currentOptions = domElements[domElementsIndex].properties; 356 390 357 391 // If no param is provided, then is a 'get' 358 if (JSON.stringify(currentOptions) !== '{}') 392 if (JSON.stringify(currentOptions) !== '{}') { 359 393 return currentOptions; 394 } 360 395 361 396 if (typeof useroptions !== 'undefined') { 362 397 // Parse to number the 'opacity' option 363 if (typeof useroptions.opacity !== 'undefined') 398 if (typeof useroptions.opacity !== 'undefined') { 364 399 useroptions.opacity = parseFloat(useroptions.opacity); 365 } 366 367 if (JSON.stringify(currentOptions) === '{}') 400 } 401 } 402 403 if (JSON.stringify(currentOptions) === '{}') { 368 404 currentOptions = extend(defaultOptions, useroptions); 369 else 405 } 406 else { 370 407 currentOptions = extend(currentOptions, useroptions); 408 } 371 409 372 410 // Check for valid direction 373 411 var validDirections = ['lr', 'rl', 'bt', 'tb']; 374 if (indexOf(validDirections, currentOptions.direction.toLowerCase()) === -1) 412 if (indexOf(validDirections, currentOptions.direction.toLowerCase()) === -1) { 375 413 // Invalid value for "direction" option. Possible values: blur, grayscale, sepia, hue-rotate, invert, opacity. Using default value: "lr". 376 414 currentOptions.direction = 'lr'; 415 } 377 416 378 417 // Check for valid filter 379 418 if (currentOptions.filter) { 380 419 var validFilters = ['blur', 'grayscale', 'sepia', 'hue-rotate', 'invert', 'opacity']; 381 if (indexOf(validFilters, currentOptions.filter.toLowerCase()) === -1) 420 if (indexOf(validFilters, currentOptions.filter.toLowerCase()) === -1) { 382 421 // Invalid value for "filter" option. Possible values: blur, grayscale, sepia, hue-rotate, invert, opacity. This option will be ignored. 383 422 currentOptions.filter = null; 423 } 384 424 } 385 425 … … 398 438 Loadgo.setprogress = function (element, progress) { 399 439 400 if (!elementIsValid(element)) 401 return; 440 if (!elementIsValid(element)) { 441 return; 442 } 402 443 403 444 // LoadGo expects progress number between 0 (0%) and 100 (100%). 404 if (progress < 0 || progress > 100) 405 return; 445 if (progress < 0 || progress > 100) { 446 return; 447 } 448 449 // Element exists? 450 var domElementsIndex = getIndex(element.id); 451 if (domElementsIndex === -1) { 452 return; 453 } 406 454 407 455 var data = getProperties(element.id); 408 456 409 457 if (data !== null) { 410 var _w, _h, overlay = document.getElementById(data.overlay), 411 w = data.width, 412 h = data.height; 458 var _w; 459 var _h; 460 var overlay = document.getElementById(data.overlay); 461 var w = data.width; 462 var h = data.height; 413 463 414 464 if (overlay) { … … 432 482 overlay.style.top = (h - _h) + 'px'; 433 483 } 434 435 484 } 436 485 else { 437 var filter = data.filter, p; 486 var p; 487 var filter = data.filter; 438 488 switch (filter) { 439 489 case 'blur': … … 457 507 } 458 508 459 domElements[ getIndex(element.id)].properties.progress = progress;509 domElements[domElementsIndex].properties.progress = progress; 460 510 461 511 }; … … 466 516 */ 467 517 Loadgo.getprogress = function (element) { 468 469 if (!elementIsValid(element))470 return;518 if (!elementIsValid(element)) { 519 return; 520 } 471 521 472 522 var properties = getProperties(element.id); … … 489 539 Loadgo.loop = function (element, duration) { 490 540 491 if (!elementIsValid(element)) 492 return; 541 if (!elementIsValid(element)) { 542 return; 543 } 493 544 494 545 if (getIndex(element.id) === -1) { … … 509 560 510 561 // Store interval so we can stop it later 511 var domIndex = getIndex(element.id), toggle = true; 562 var toggle = true; 563 var domIndex = getIndex(element.id); 512 564 domElements[domIndex].properties.interval = setInterval(function(){ 513 565 if (toggle) { … … 542 594 // Stops the loop interval and shows image 543 595 Loadgo.stop = function (element) { 544 545 if (!elementIsValid(element))546 return;596 if (!elementIsValid(element)) { 597 return; 598 } 547 599 548 600 if (getIndex(element.id) === -1) { … … 561 613 Loadgo.destroy = function (element) { 562 614 var domElementsIndex = getIndex(element.id); 563 if (domElementsIndex === -1) 615 if (domElementsIndex === -1) { 564 616 return; // element was never initialized 617 } 565 618 566 619 var opt = Loadgo.options(element); … … 568 621 element.before(container); 569 622 570 var container = element.parentNode, parent = container.parentNode, overlay = document.getElementById(opt.overlay); 571 if (overlay) 572 if (overlay.parentNode) 623 var container = element.parentNode; 624 var parent = container.parentNode; 625 var overlay = document.getElementById(opt.overlay); 626 if (overlay) { 627 if (overlay.parentNode) { 573 628 container.removeChild(opt.overlay) // Removes overlay 629 } 630 } 574 631 575 632 if (parent) { … … 577 634 parent.removeChild(container); // Removes "loadgo-container" element 578 635 } 579 580 636 }; 581 637 -
loadgo-for-wp/trunk/js/loadgo/loadgo-nojquery.min.js
r1698131 r1859215 1 /* 2 LoadGo v2.2(http://franverona.com/loadgo)3 2017- Fran Verona4 Licensed under MIT (https://github.com/franverona/loadgo/blob/master/LICENSE)5 */6 (function(){var e=function(e,t){for(var i=0,r=e.length;i<r;i++)if(e[i]===t)return i;return-1},t=function(e,t){var i,r,o={};if(void 0===e)r=JSON.parse(JSON.stringify(t)),t.resize&&(r.resize=t.resize),o=r;else if(void 0===t)i=JSON.parse(JSON.stringify(e)),e.resize&&(i.resize=e.resize),o=i;else {i=JSON.parse(JSON.stringify(e)),e.resize&&(i.resize=e.resize),e=i,r=JSON.parse(JSON.stringify(t)),t.resize&&(r.resize=t.resize),t=r,o=e;for(var s in t)o[s]=t[s]}return o},i=function(e){for(var t=0,i=l.length;t<i;t++)if(l[t].id===e)return l[t].properties;return null},r=function(e){for(var t=0,i=l.length;t<i;t++)if(l[t].id===e)return t;return-1},o=function(e){if(void 0===e||null===e)return!1;if("IMG"!==e.nodeName)throw new Error("LoadGo only works on img elements.");if(e.length>1)throw new Error("LoadGo only works on one element at a time. Try with a valid #id.");return!0},s=function(e,t){var i=e.style[t];if("auto"===i){if(-1!==t.toLowerCase().indexOf("left")||-1!==t.toLowerCase().indexOf("right"))return parseFloat(e.offsetLeft);if(-1!==t.toLowerCase().indexOf("top")||-1!==t.toLowerCase().indexOf("bottom"))return parseFloat(e.offsetTop)}return-1!==i.indexOf("px")?parseFloat(i):0},n=function(){return(new Date).getTime().toString()},l=[],a={bgcolor:"#FFFFFF",opacity:"0.5",animated:!0,image:null,class:null,resize:null,direction:"lr",filter:null};Loadgo=window.Loadgo||{},Loadgo.init=function(e,a){if(o(e)){var d=r(e.id);-1===d?(l.push({id:e.id,properties:{}}),d=l.length-1):l[d].properties={};var p=Loadgo.options(e,a),f=document.createElement("div");f.id="loadgo-"+n();var g=["loadgo-overlay"];p.class&&g.push(p.class),f.className=g.join(" "),f.style.backgroundColor=p.bgcolor,f.style.opacity=p.opacity;var y=e.getBoundingClientRect();if(y.width?f.style.width=y.width+"px":f.style.width=e.offsetWidth,y.height?f.style.height=y.height+"px":f.style.height=e.offsetWidth,f.style.position="absolute",p.animated&&(f.style.transition="all 0.6s ease",f.style["-webkit-transition"]="all 0.6s ease",f.style["-moz-transition"]="all 0.6s ease",f.style["-ms-transition"]="all 0.6s ease",f.style["-o-transition"]="all 0.6s ease"),p.filter&&("blur"===p.filter?e.style["-webkit-filter"]=p.filter+"(10px)":"hue-rotate"===p.filter?e.style["-webkit-filter"]=p.filter+"(360deg)":"opacity"===p.filter?e.style["-webkit-filter"]=p.filter+"(0)":e.style["-webkit-filter"]=p.filter+"(1)",p.animated&&(e.style.transition="0.6s filter ease",e.style["-webkit-transition"]="0.6s -webkit-filter ease",e.style["-moz-transition"]="0.6s -moz-filter ease",e.style["-ms-transition"]="0.6s -ms-filter ease",e.style["-o-transition"]="0.6s -o-filter ease")),p.image){var c="100% 0%";"rl"===p.direction?c="0% 50%":"bt"===p.direction?c="100% 0%":"tb"===p.direction&&(c="0% 100%"),f.style["background-image"]='url("'+p.image+'")',f.style["background-repeat"]="no-repeat",f.style["background-size"]="cover",f.style["background-color"]="transparent",f.style["background-position"]=c}var h={progress:0};if(null===p.filter){var u=document.createElement("div");u.className="loadgo-container",u.style.position="relative",e.before(u),u.appendChild(e),u.appendChild(f);var v=s(e,"paddingLeft"),m=s(e,"paddingRight"),w=s(e,"paddingTop"),b=s(e,"paddingBottom"),L=s(e,"marginLeft"),x=s(e,"marginRight"),z=s(e,"marginTop"),k=s(e,"marginBottom");"lr"===p.direction?(f.style.right=m+x+"px",f.style.top=w+z+"px"):"rl"===p.direction?(f.style.left=v+L+"px",f.style.top=w+z+"px"):"bt"===p.direction?(f.style.top=w+z+"px",f.style.left=v+L+"px"):"tb"===p.direction&&(f.style.bottom=b+k+"px",f.style.left=v+L+"px"),h.overlay=f.id,h.width=f.clientWidth,h.height=f.clientHeight}l[d].properties=t(p,h);var N=function(){var t=i(e.id),o=r(e.id);if(null!==t){var n=document.getElementById(t.overlay),a=e.getBoundingClientRect();if(n){a.width?n.style.width=a.width+"px":n.style.width=e.offsetWidth,a.height?n.style.height=a.height+"px":n.style.height=e.offsetWidth;var d=s(e,"paddingLeft"),f=s(e,"paddingRight"),g=s(e,"paddingTop"),y=s(e,"paddingBottom"),c=s(e,"marginLeft"),h=s(e,"marginRight"),u=s(e,"marginTop"),v=s(e,"marginBottom");"lr"===p.direction?(n.style.right=f+h+"px",n.style.top=g+u+"px"):"rl"===p.direction?(n.style.left=d+c+"px",n.style.top=g+u+"px"):"bt"===p.direction?(n.style.top=g+u+"px",n.style.left=d+c+"px"):"tb"===p.direction&&(n.style.bottom=y+v+"px",n.style.left=d+c+"px"),l[o].properties.width=parseFloat(n.style.width),l[o].properties.height=parseFloat(n.style.height),Loadgo.setprogress(e,t.progress)}}};p.resize&&(N=p.resize),window.addEventListener?window.addEventListener("resize",N,!1):window.attachEvent("onresize",N)}},Loadgo.options=function(i,s){if(o(i)){var n=r(i.id);if(-1!==n){var d=l[n].properties;return"{}"!==JSON.stringify(d)?d:(void 0!==s&&void 0!==s.opacity&&(s.opacity=parseFloat(s.opacity)),d="{}"===JSON.stringify(d)?t(a,s):t(d,s),-1===e(["lr","rl","bt","tb"],d.direction.toLowerCase())&&(d.direction="lr"),d.filter&&-1===e(["blur","grayscale","sepia","hue-rotate","invert","opacity"],d.filter.toLowerCase())&&(d.filter=null),l[n].properties=d,d)}}},Loadgo.setprogress=function(e,t){if(o(e)&&!(t<0||t>100)){var s=i(e.id);if(null!==s){var n,a,d=document.getElementById(s.overlay),p=s.width,f=s.height;if(d){var g=s.direction;"lr"===g?(n=p*(1-t/100),d.style.width=n+"px"):"rl"===g?(n=p*(1-t/100),d.style.width=n+"px"):"bt"===g?(a=f*(1-t/100),d.style.height=a+"px"):"tb"===g&&(a=f*(1-t/100),d.style.height=a+"px",d.style.top=f-a+"px")}else{var y;switch(s.filter){case"blur":y=(100-t)/10,e.style["-webkit-filter"]=s.filter+"("+y+"px)";break;case"hue-rotate":y=360*t/100,e.style["-webkit-filter"]=s.filter+"("+y+"deg)";break;case"opacity":y=t/100,e.style["-webkit-filter"]=s.filter+"("+y+")";break;default:y=1-t/100,e.style["-webkit-filter"]=s.filter+"("+y+")"}}}l[r(e.id)].properties.progress=t}},Loadgo.getprogress=function(e){if(o(e)){var t=i(e.id);return null!==t?t.progress:0}},Loadgo.resetprogress=function(e){Loadgo.setprogress(e,0)},Loadgo.loop=function(e,t){if(o(e))if(-1!==r(e.id)){var s=i(e.id);if(null!==s)if(s.interval)console.warn("LoadGo requires you to stop the current loop before modifying it.");else{var n=r(e.id),a=!0;l[n].properties.interval=setInterval(function(){a?(l[n].properties.progress+=1,l[n].properties.progress>=100&&(a=!1)):(l[n].properties.progress-=1,l[n].properties.progress<=0&&(a=!0));var t=document.getElementById(l[n].properties.overlay);t&&(t.style.transition="none",t.style["-webkit-transition"]="none",t.style["-moz-transition"]="none",t.style["-ms-transition"]="none",t.style["-o-transition"]="none"),Loadgo.setprogress(e,l[n].properties.progress)},t)}else console.warn("Element do not have Loadgo properties. Maybe it is uninitialized.")}else console.error('Trying to loop a non initialized element. You have to run "init" method first.')},Loadgo.stop=function(e){o(e)&&(-1!==r(e.id)?(clearInterval(l[r(e.id)].properties.interval),Loadgo.setprogress(e,100)):console.error('Trying to stop loop for a non initialized element. You have to run "init" method first.'))},Loadgo.destroy=function(e){var t=r(e.id);if(-1!==t){var i=Loadgo.options(e);l.splice(t),e.before(o);var o=e.parentNode,s=o.parentNode,n=document.getElementById(i.overlay);n&&n.parentNode&&o.removeChild(i.overlay),s&&(s.appendChild(e),s.removeChild(o))}},window.Loadgo=Loadgo}).call(this);1 /** 2 * @preserve LoadGo v2.2.1 (http://franverona.com/loadgo) 3 * 2018 - Fran Verona 4 * Licensed under MIT (https://github.com/franverona/loadgo/blob/master/LICENSE) 5 */ 6 (function(){var e=function(e,t){for(var i=0,r=e.length;i<r;i++)if(e[i]===t)return i;return-1},t=function(e,t){var i,r,o={};if(void 0===e)r=JSON.parse(JSON.stringify(t)),t.resize&&(r.resize=t.resize),o=r;else if(void 0===t)i=JSON.parse(JSON.stringify(e)),e.resize&&(i.resize=e.resize),o=i;else for(var s in i=JSON.parse(JSON.stringify(e)),e.resize&&(i.resize=e.resize),e=i,r=JSON.parse(JSON.stringify(t)),t.resize&&(r.resize=t.resize),o=e,t=r)o[s]=t[s];return o},i=function(e){for(var t=0,i=n.length;t<i;t++)if(n[t].id===e)return n[t].properties;return null},r=function(e){for(var t=0,i=n.length;t<i;t++)if(n[t].id===e)return t;return-1},o=function(e){if(void 0===e||null===e)return!1;if("IMG"!==e.nodeName)throw new Error("LoadGo only works on img elements.");if(e.length>1)throw new Error("LoadGo only works on one element at a time. Try with a valid #id.");return!0},s=function(e,t){var i=e.style[t];if("auto"===i){if(-1!==t.toLowerCase().indexOf("left")||-1!==t.toLowerCase().indexOf("right"))return parseFloat(e.offsetLeft);if(-1!==t.toLowerCase().indexOf("top")||-1!==t.toLowerCase().indexOf("bottom"))return parseFloat(e.offsetTop)}return-1!==i.indexOf("px")?parseFloat(i):0},n=[],l={bgcolor:"#FFFFFF",opacity:"0.5",animated:!0,image:null,class:null,resize:null,direction:"lr",filter:null};Loadgo=window.Loadgo||{},Loadgo.init=function(e,l){if(o(e)){var a=r(e.id);-1===a?(n.push({id:e.id,properties:{}}),a=n.length-1):n[a].properties={};var d=Loadgo.options(e,l),p=document.createElement("div");p.id="loadgo-"+(new Date).getTime().toString();var f=["loadgo-overlay"];d.class&&f.push(d.class),p.className=f.join(" "),p.style.backgroundColor=d.bgcolor,p.style.opacity=d.opacity;var g=e.getBoundingClientRect();if(g.width?p.style.width=g.width+"px":p.style.width=e.offsetWidth,g.height?p.style.height=g.height+"px":p.style.height=e.offsetWidth,p.style.position="absolute",d.animated&&(p.style.transition="all 0.6s ease",p.style["-webkit-transition"]="all 0.6s ease",p.style["-moz-transition"]="all 0.6s ease",p.style["-ms-transition"]="all 0.6s ease",p.style["-o-transition"]="all 0.6s ease"),d.filter&&("blur"===d.filter?e.style["-webkit-filter"]=d.filter+"(10px)":"hue-rotate"===d.filter?e.style["-webkit-filter"]=d.filter+"(360deg)":"opacity"===d.filter?e.style["-webkit-filter"]=d.filter+"(0)":e.style["-webkit-filter"]=d.filter+"(1)",d.animated&&(e.style.transition="0.6s filter ease",e.style["-webkit-transition"]="0.6s -webkit-filter ease",e.style["-moz-transition"]="0.6s -moz-filter ease",e.style["-ms-transition"]="0.6s -ms-filter ease",e.style["-o-transition"]="0.6s -o-filter ease")),d.image){var y="100% 0%";"rl"===d.direction?y="0% 50%":"bt"===d.direction?y="100% 0%":"tb"===d.direction&&(y="0% 100%"),p.style["background-image"]='url("'+d.image+'")',p.style["background-repeat"]="no-repeat",p.style["background-size"]="cover",p.style["background-color"]="transparent",p.style["background-position"]=y}var c={progress:0};if(null===d.filter){var h=document.createElement("div");h.className="loadgo-container",h.style.position="relative",e.before(h),h.appendChild(e),h.appendChild(p);var u=s(e,"paddingLeft"),v=s(e,"paddingRight"),m=s(e,"paddingTop"),w=s(e,"paddingBottom"),b=s(e,"marginLeft"),L=s(e,"marginRight"),x=s(e,"marginTop"),z=s(e,"marginBottom");"lr"===d.direction?(p.style.right=v+L+"px",p.style.top=m+x+"px"):"rl"===d.direction?(p.style.left=u+b+"px",p.style.top=m+x+"px"):"bt"===d.direction?(p.style.top=m+x+"px",p.style.left=u+b+"px"):"tb"===d.direction&&(p.style.bottom=w+z+"px",p.style.left=u+b+"px"),c.overlay=p.id,c.width=p.clientWidth,c.height=p.clientHeight}n[a].properties=t(d,c);var k=function(){var t=i(e.id),o=r(e.id);if(null!==t){var l=document.getElementById(t.overlay),a=e.getBoundingClientRect();if(l){a.width?l.style.width=a.width+"px":l.style.width=e.offsetWidth,a.height?l.style.height=a.height+"px":l.style.height=e.offsetWidth;var p=s(e,"paddingLeft"),f=s(e,"paddingRight"),g=s(e,"paddingTop"),y=s(e,"paddingBottom"),c=s(e,"marginLeft"),h=s(e,"marginRight"),u=s(e,"marginTop"),v=s(e,"marginBottom");"lr"===d.direction?(l.style.right=f+h+"px",l.style.top=g+u+"px"):"rl"===d.direction?(l.style.left=p+c+"px",l.style.top=g+u+"px"):"bt"===d.direction?(l.style.top=g+u+"px",l.style.left=p+c+"px"):"tb"===d.direction&&(l.style.bottom=y+v+"px",l.style.left=p+c+"px"),n[o].properties.width=parseFloat(l.style.width),n[o].properties.height=parseFloat(l.style.height),Loadgo.setprogress(e,t.progress)}}};d.resize&&(k=d.resize),window.addEventListener?window.addEventListener("resize",k,!1):window.attachEvent("onresize",k)}},Loadgo.options=function(i,s){if(o(i)){var a=r(i.id);if(-1!==a){var d=n[a].properties;if("{}"!==JSON.stringify(d))return d;void 0!==s&&void 0!==s.opacity&&(s.opacity=parseFloat(s.opacity)),d="{}"===JSON.stringify(d)?t(l,s):t(d,s);if(-1===e(["lr","rl","bt","tb"],d.direction.toLowerCase())&&(d.direction="lr"),d.filter){-1===e(["blur","grayscale","sepia","hue-rotate","invert","opacity"],d.filter.toLowerCase())&&(d.filter=null)}return n[a].properties=d,d}}},Loadgo.setprogress=function(e,t){if(o(e)&&!(t<0||t>100)){var s=r(e.id);if(-1!==s){var l=i(e.id);if(null!==l){var a,d,p=document.getElementById(l.overlay),f=l.width,g=l.height;if(p){var y=l.direction;"lr"===y?(a=f*(1-t/100),p.style.width=a+"px"):"rl"===y?(a=f*(1-t/100),p.style.width=a+"px"):"bt"===y?(d=g*(1-t/100),p.style.height=d+"px"):"tb"===y&&(d=g*(1-t/100),p.style.height=d+"px",p.style.top=g-d+"px")}else{var c;switch(l.filter){case"blur":c=(100-t)/10,e.style["-webkit-filter"]=l.filter+"("+c+"px)";break;case"hue-rotate":c=360*t/100,e.style["-webkit-filter"]=l.filter+"("+c+"deg)";break;case"opacity":c=t/100,e.style["-webkit-filter"]=l.filter+"("+c+")";break;default:c=1-t/100,e.style["-webkit-filter"]=l.filter+"("+c+")"}}}n[s].properties.progress=t}}},Loadgo.getprogress=function(e){if(o(e)){var t=i(e.id);return null!==t?t.progress:0}},Loadgo.resetprogress=function(e){Loadgo.setprogress(e,0)},Loadgo.loop=function(e,t){if(o(e))if(-1!==r(e.id)){var s=i(e.id);if(null!==s)if(s.interval)console.warn("LoadGo requires you to stop the current loop before modifying it.");else{var l=!0,a=r(e.id);n[a].properties.interval=setInterval(function(){l?(n[a].properties.progress+=1,n[a].properties.progress>=100&&(l=!1)):(n[a].properties.progress-=1,n[a].properties.progress<=0&&(l=!0));var t=document.getElementById(n[a].properties.overlay);t&&(t.style.transition="none",t.style["-webkit-transition"]="none",t.style["-moz-transition"]="none",t.style["-ms-transition"]="none",t.style["-o-transition"]="none"),Loadgo.setprogress(e,n[a].properties.progress)},t)}else console.warn("Element do not have Loadgo properties. Maybe it is uninitialized.")}else console.error('Trying to loop a non initialized element. You have to run "init" method first.')},Loadgo.stop=function(e){o(e)&&(-1!==r(e.id)?(clearInterval(n[r(e.id)].properties.interval),Loadgo.setprogress(e,100)):console.error('Trying to stop loop for a non initialized element. You have to run "init" method first.'))},Loadgo.destroy=function(e){var t=r(e.id);if(-1!==t){var i=Loadgo.options(e);n.splice(t),e.before(o);var o=e.parentNode,s=o.parentNode,l=document.getElementById(i.overlay);l&&l.parentNode&&o.removeChild(i.overlay),s&&(s.appendChild(e),s.removeChild(o))}},window.Loadgo=Loadgo}).call(this); -
loadgo-for-wp/trunk/js/loadgo/loadgo.js
r1698131 r1859215 1 1 /** 2 * @preserve LoadGo v2.2 (http://franverona.com/loadgo)3 * 201 7- Fran Verona2 * @preserve LoadGo v2.2.1 (http://franverona.com/loadgo) 3 * 2018 - Fran Verona 4 4 * Licensed under MIT (https://github.com/franverona/loadgo/blob/master/LICENSE) 5 5 */ 6 6 7 7 if (typeof jQuery === 'undefined') 8 throw new Error('LoadGo requires jQuery. Make sure you are loading jQuery before LoadGo, or try pure Javascript version i f needed.');9 10 (function ( $) {8 throw new Error('LoadGo requires jQuery. Make sure you are loading jQuery before LoadGo, or try pure Javascript version instead.'); 9 10 (function($) { 11 11 12 12 var methods = { 13 init: function (useroptions) {13 init: function(useroptions) { 14 14 15 15 var $this = $(this); 16 16 17 if ($this.length === 0) 17 if ($this.length === 0) { 18 18 return; 19 20 if (!$this.is('img')) 19 } 20 21 if (!$this.is('img')) { 21 22 throw new Error('LoadGo only works on img elements.'); 22 23 if ($this.length > 1) 23 } 24 25 if ($this.length > 1) { 24 26 throw new Error('LoadGo only works on one element at a time. Try with a valid #id.'); 27 } 25 28 26 29 // Plugin options. We need to reset options to avoid future errors … … 29 32 var pluginOptions = $this.loadgo('options', useroptions); 30 33 31 var _w = $this[0].getBoundingClientRect().width ,32 _h = $this[0].getBoundingClientRect().height;34 var _w = $this[0].getBoundingClientRect().width; 35 var _h = $this[0].getBoundingClientRect().height; 33 36 34 37 var overlayTemplate = '<div class="loadgo-overlay" style="background-color:%bgcolor%;opacity:%opacity%;width:%width%px;height:%height%px;position:absolute;"></div>'; … … 43 46 $overlay = $(overlayWithOptions); 44 47 45 if (pluginOptions.animated) 48 if (pluginOptions.animated) { 49 var overlayCSS = 'width 0.6s ease, height 0.6s ease, top 0.6s ease'; 46 50 $overlay.css({ 47 'transition': 'width 0.6s ease, height 0.6s ease, top 0.6s ease',48 '-webkit-transition': 'width 0.6s ease, height 0.6s ease, top 0.6s ease',49 '-moz-transition': 'width 0.6s ease, height 0.6s ease, top 0.6s ease',50 '-ms-transition': 'width 0.6s ease, height 0.6s ease, top 0.6s ease',51 '-o-transition': 'width 0.6s ease, height 0.6s ease, top 0.6s ease',51 'transition': overlayCSS, 52 '-webkit-transition': overlayCSS, 53 '-moz-transition': overlayCSS, 54 '-ms-transition': overlayCSS, 55 '-o-transition': overlayCSS, 52 56 }); 53 54 if (pluginOptions['class']) 57 } 58 59 if (pluginOptions['class']) { 55 60 $overlay.addClass(pluginOptions['class']); 61 } 56 62 57 63 if (pluginOptions.filter) { 58 if (pluginOptions.filter === 'blur') 64 if (pluginOptions.filter === 'blur') { 59 65 $this.css({ 60 '-webkit-filter': pluginOptions.filter + '(10px)'66 '-webkit-filter': pluginOptions.filter + '(10px)' 61 67 }); 62 else if (pluginOptions.filter === 'hue-rotate')68 } else if (pluginOptions.filter === 'hue-rotate') { 63 69 $this.css({ 64 '-webkit-filter': pluginOptions.filter + '(360deg)'70 '-webkit-filter': pluginOptions.filter + '(360deg)' 65 71 }); 66 else if (pluginOptions.filter === 'opacity')72 } else if (pluginOptions.filter === 'opacity') { 67 73 $this.css({ 68 '-webkit-filter': pluginOptions.filter + '(0)'74 '-webkit-filter': pluginOptions.filter + '(0)' 69 75 }); 70 else76 } else { 71 77 $this.css({ 72 '-webkit-filter': pluginOptions.filter + '(1)'78 '-webkit-filter': pluginOptions.filter + '(1)' 73 79 }); 74 75 if (pluginOptions.animated) 80 } 81 82 if (pluginOptions.animated) { 76 83 $this.css({ 77 'transition': '0.6s filter ease',78 '-webkit-transition': '0.6s -webkit-filter ease',79 '-moz-transition': '0.6s -moz-filter ease',80 '-ms-transition': '0.6s -ms-filter ease',81 '-o-transition': '0.6s -o-filter ease',84 'transition': '0.6s filter ease', 85 '-webkit-transition': '0.6s -webkit-filter ease', 86 '-moz-transition': '0.6s -moz-filter ease', 87 '-ms-transition': '0.6s -ms-filter ease', 88 '-o-transition': '0.6s -o-filter ease', 82 89 }); 90 } 83 91 } 84 92 85 93 if (pluginOptions.image) { 86 94 var bgposition = '100% 0%'; // Left to right animation by default 87 if (pluginOptions.direction === 'rl') 95 if (pluginOptions.direction === 'rl') { 88 96 bgposition = '0% 50%'; // Right to left animation 89 else if (pluginOptions.direction === 'bt')97 } else if (pluginOptions.direction === 'bt') { 90 98 bgposition = '100% 0%'; // Bottom to top animation 91 else if (pluginOptions.direction === 'tb')99 } else if (pluginOptions.direction === 'tb') { 92 100 bgposition = '0% 100%'; // Top to bottom animation 101 } 93 102 94 103 $overlay.css({ 95 'background-image': 'url("' + pluginOptions.image + '")',96 'background-repeat': 'no-repeat',97 'background-size': 'cover',98 'background-color': 'none',99 'background-position': bgposition104 'background-image': 'url("' + pluginOptions.image + '")', 105 'background-repeat': 'no-repeat', 106 'background-size': 'cover', 107 'background-color': 'none', 108 'background-position': bgposition 100 109 }); 101 110 } … … 115 124 116 125 // We need to add margins and paddings to set the overlay exactly above our image 117 var pl = parseFloat($this.css('padding-left')) ,118 pr = parseFloat($this.css('padding-right')),119 pt = parseFloat($this.css('padding-top')),120 pb = parseFloat($this.css('padding-bottom')),121 ml = parseFloat($this.css('margin-left')),122 mr = parseFloat($this.css('margin-right')),123 mt = parseFloat($this.css('margin-top')),124 mb = parseFloat($this.css('margin-bottom'));126 var pl = parseFloat($this.css('padding-left')); 127 var pr = parseFloat($this.css('padding-right')); 128 var pt = parseFloat($this.css('padding-top')); 129 var pb = parseFloat($this.css('padding-bottom')); 130 var ml = parseFloat($this.css('margin-left')); 131 var mr = parseFloat($this.css('margin-right')); 132 var mt = parseFloat($this.css('margin-top')); 133 var mb = parseFloat($this.css('margin-bottom')); 125 134 126 135 if (pluginOptions.direction === 'lr') { … … 147 156 148 157 // Resize event 149 if (pluginOptions.resize) 158 if (pluginOptions.resize) { 150 159 $(window).on('resize', pluginOptions.resize); 160 } 151 161 else { 152 162 var _this = this; 153 163 $(window).on('resize', function() { 154 var $element = $this, data = $element.data('loadgo'), options = $element.data('loadgo-options'); 164 var $element = $this; 165 var data = $element.data('loadgo'); 166 var options = $element.data('loadgo-options'); 155 167 156 if (typeof data === 'undefined') 168 if (typeof data === 'undefined') { 157 169 return; 158 159 var $overlay = data.overlay, progress = data.progress, 160 $width = $element.width(), $height = $element.height(), 161 storedData = { 162 progress: data.progress, 163 width: $width, 164 height: $height 165 }; 170 } 171 172 var $overlay = data.overlay; 173 var progress = data.progress; 174 var $width = $element.width(); 175 var $height = $element.height(); 176 177 storedData = { 178 progress: data.progress, 179 width: $width, 180 height: $height 181 }; 166 182 167 183 if ($overlay) { 168 184 $overlay.css({ 169 'width': $width + 'px',170 'height': $height + 'px'185 'width': $width + 'px', 186 'height': $height + 'px' 171 187 }); 172 188 173 189 // We need to add margins and paddings to set the overlay exactly above our image 174 var pl = parseFloat($element.css('padding-left')) ,175 pr = parseFloat($element.css('padding-right')),176 pt = parseFloat($element.css('padding-top')),177 pb = parseFloat($element.css('padding-bottom')),178 ml = parseFloat($element.css('margin-left')),179 mr = parseFloat($element.css('margin-right')),180 mt = parseFloat($element.css('margin-top')),181 mb = parseFloat($element.css('margin-bottom'));190 var pl = parseFloat($element.css('padding-left')); 191 var pr = parseFloat($element.css('padding-right')); 192 var pt = parseFloat($element.css('padding-top')); 193 var pb = parseFloat($element.css('padding-bottom')); 194 var ml = parseFloat($element.css('margin-left')); 195 var mr = parseFloat($element.css('margin-right')); 196 var mt = parseFloat($element.css('margin-top')); 197 var mb = parseFloat($element.css('margin-bottom')); 182 198 183 199 if (pluginOptions.direction === 'lr') { … … 208 224 options: function (useroptions) { 209 225 210 var $this = $(this) ,211 currentOptions = $this.data('loadgo-options'),212 options = typeof useroptions !== 'undefined' ? useroptions : {},213 defaults = {214 bgcolor: '#FFFFFF',// Overlay color215 opacity: 0.5,// Overlay opacity216 animated: true,// Overlay smooth animation when setting progress217 image: null,// Overlay image218 class: null,// Overlay CSS class219 resize:null, // Resize functions (optional)220 direction: 'lr',// Direction animation (optional)221 filter:null // Image filter (optional)222 };226 var $this = $(this); 227 var currentOptions = $this.data('loadgo-options'); 228 var options = typeof useroptions !== 'undefined' ? useroptions : {}; 229 var defaults = { 230 bgcolor: '#FFFFFF', // Overlay color 231 opacity: 0.5, // Overlay opacity 232 animated: true, // Overlay smooth animation when setting progress 233 image: null, // Overlay image 234 class: null, // Overlay CSS class 235 resize: null, // Resize functions (optional) 236 direction: 'lr', // Direction animation (optional) 237 filter: null // Image filter (optional) 238 }; 223 239 224 240 // Parse to number the 'opacity' option 225 if (typeof options.opacity !== 'undefined') 241 if (typeof options.opacity !== 'undefined') { 226 242 options.opacity = parseFloat(options.opacity); 227 228 if (JSON.stringify(currentOptions) === '{}') 243 } 244 245 if (JSON.stringify(currentOptions) === '{}') { 229 246 currentOptions = $.extend({}, defaults, options); 230 else 247 } 248 else { 231 249 currentOptions = $.extend({}, currentOptions, options); 250 } 232 251 233 252 // Check for valid direction 234 253 var validDirections = ['lr', 'rl', 'bt', 'tb']; 235 if ($.inArray(currentOptions.direction.toLowerCase(), validDirections) === -1) 254 if ($.inArray(currentOptions.direction.toLowerCase(), validDirections) === -1) { 236 255 // Invalid value for "direction" option. Possible values: blur, grayscale, sepia, hue-rotate, invert, opacity. Using default value: "lr". 237 256 currentOptions.direction = 'lr'; 257 } 238 258 239 259 // Check for valid filter 240 260 if (currentOptions.filter) { 241 261 var validFilters = ['blur', 'grayscale', 'sepia', 'hue-rotate', 'invert', 'opacity']; 242 if ($.inArray(currentOptions.filter.toLowerCase(), validFilters) === -1) 262 if ($.inArray(currentOptions.filter.toLowerCase(), validFilters) === -1) { 243 263 // Invalid value for "filter" option. Possible values: blur, grayscale, sepia, hue-rotate, invert, opacity. This option will be ignored. 244 264 currentOptions.filter = null; 265 } 245 266 } 246 267 … … 259 280 260 281 // LoadGo expects progress number between 0 (0%) and 100 (100%). 261 if (progress < 0 || progress > 100) 282 if (progress < 0 || progress > 100) { 262 283 return; 284 } 263 285 264 var storedData = { progress: progress }, data = $(this).data('loadgo'), pluginOptions = $(this).loadgo('options'), 265 $overlay = data.overlay, $width = data.width, $height = data.height, direction = pluginOptions.direction; 286 var storedData = { progress: progress }; 287 var data = $(this).data('loadgo'); 288 var pluginOptions = $(this).loadgo('options'); 289 var $overlay = data.overlay; 290 var $width = data.width; 291 var $height = data.height; 292 var direction = pluginOptions.direction; 266 293 267 294 if ($overlay) { … … 293 320 p = (100 - progress) / 10; 294 321 jQuery(this).css({ 295 '-webkit-filter': $filter + '(' + p + 'px)'322 '-webkit-filter': $filter + '(' + p + 'px)' 296 323 }); 297 324 break; … … 299 326 p = progress * 360 / 100; 300 327 jQuery(this).css({ 301 '-webkit-filter': $filter + '(' + p + 'deg)'328 '-webkit-filter': $filter + '(' + p + 'deg)' 302 329 }); 303 330 break; … … 305 332 p = progress / 100; 306 333 jQuery(this).css({ 307 '-webkit-filter': $filter + '(' + p + ')'334 '-webkit-filter': $filter + '(' + p + ')' 308 335 }); 309 336 break; … … 311 338 p = 1 - progress / 100; 312 339 $(this).css({ 313 '-webkit-filter': $filter + '(' + p + ')'340 '-webkit-filter': $filter + '(' + p + ')' 314 341 }); 315 342 } … … 322 349 getprogress: function () { 323 350 var data = $(this).data('loadgo'); 324 if (typeof data === 'undefined') 351 if (typeof data === 'undefined') { 325 352 return 0; 353 } 326 354 327 355 return typeof data.progress !== 'undefined' ? data.progress : 0; … … 334 362 // Overlay loops back and forth 335 363 loop: function (duration) { 336 var data = $(this).data('loadgo') , toggle = true, image = this;337 364 var data = $(this).data('loadgo'); 365 338 366 // LoadGo requires you to stop the current loop before modifying it. 339 if (data.interval) 367 if (data.interval) { 340 368 return false; 369 } 370 371 var toggle = true; 372 var image = this; 341 373 342 374 // Store interval so we can stop it later … … 345 377 if (toggle) { 346 378 data.progress += 1; 347 if (data.progress >= 100) 379 if (data.progress >= 100) { 348 380 toggle = false; 381 } 349 382 } 350 383 else { 351 384 data.progress -= 1; 352 if (data.progress <= 0) 385 if (data.progress <= 0) { 353 386 toggle = true; 387 } 354 388 } 355 389 … … 357 391 // Can be replaced with animated: false in the initializer 358 392 data.overlay.css({ 359 'transition': 'none',360 '-webkit-transition': 'none',361 '-moz-transition': 'none',362 '-ms-transition': 'none',363 '-o-transition': 'none',393 'transition': 'none', 394 '-webkit-transition': 'none', 395 '-moz-transition': 'none', 396 '-ms-transition': 'none', 397 '-o-transition': 'none', 364 398 }); 365 399 … … 377 411 // Remove all plugin properties 378 412 destroy: function () { 379 var $this = $(this), options = $this.data('loadgo'); 380 381 if (typeof options === 'undefined') 413 var $this = $(this); 414 var options = $this.data('loadgo'); 415 416 if (typeof options === 'undefined') { 382 417 return; // element was never initialized 418 } 383 419 384 420 if (options.overlay) { … … 398 434 399 435 if (typeof methods[methodOrOptions] === 'undefined') { 400 if (typeof methodOrOptions === 'object' || typeof methodOrOptions === 'undefined') 436 if (typeof methodOrOptions === 'object' || typeof methodOrOptions === 'undefined') { 401 437 return methods.init.apply( this, arguments ); // Init method by default 438 } 402 439 403 440 throw new Error('Method ' + methodOrOptions + ' does not exist on $.loadgo'); … … 408 445 } 409 446 410 }( jQuery));447 }(jQuery)); -
loadgo-for-wp/trunk/js/loadgo/loadgo.min.js
r1698131 r1859215 1 /* 2 LoadGo v2.2(http://franverona.com/loadgo)3 2017- Fran Verona4 Licensed under MIT (https://github.com/franverona/loadgo/blob/master/LICENSE)5 */6 if("undefined"==typeof jQuery)throw new Error("LoadGo requires jQuery. Make sure you are loading jQuery before LoadGo, or try pure Javascript version i f needed.");!function(e){var t={init:function(t){var o=e(this);if(0!==o.length){if(!o.is("img"))throw new Error("LoadGo only works on img elements.");if(o.length>1)throw new Error("LoadGo only works on one element at a time. Try with a valid #id.");o.data("loadgo-options",{});var i=o.loadgo("options",t),r=o[0].getBoundingClientRect().width,s=o[0].getBoundingClientRect().height,a='<div class="loadgo-overlay" style="background-color:%bgcolor%;opacity:%opacity%;width:%width%px;height:%height%px;position:absolute;"></div>'.replace("%bgcolor%",i.bgcolor).replace("%opacity%",i.opacity).replace("%width%",r).replace("%height%",s);if($overlay=e(a),i.animated&&$overlay.css({transition:"width 0.6s ease, height 0.6s ease, top 0.6s ease","-webkit-transition":"width 0.6s ease, height 0.6s ease, top 0.6s ease","-moz-transition":"width 0.6s ease, height 0.6s ease, top 0.6s ease","-ms-transition":"width 0.6s ease, height 0.6s ease, top 0.6s ease","-o-transition":"width 0.6s ease, height 0.6s ease, top 0.6s ease"}),i.class&&$overlay.addClass(i.class),i.filter&&("blur"===i.filter?o.css({"-webkit-filter":i.filter+"(10px)"}):"hue-rotate"===i.filter?o.css({"-webkit-filter":i.filter+"(360deg)"}):"opacity"===i.filter?o.css({"-webkit-filter":i.filter+"(0)"}):o.css({"-webkit-filter":i.filter+"(1)"}),i.animated&&o.css({transition:"0.6s filter ease","-webkit-transition":"0.6s -webkit-filter ease","-moz-transition":"0.6s -moz-filter ease","-ms-transition":"0.6s -ms-filter ease","-o-transition":"0.6s -o-filter ease"})),i.image){var n="100% 0%";"rl"===i.direction?n="0% 50%":"bt"===i.direction?n="100% 0%":"tb"===i.direction&&(n="0% 100%"),$overlay.css({"background-image":'url("'+i.image+'")',"background-repeat":"no-repeat","background-size":"cover","background-color":"none","background-position":n})}var l={progress:0};if(null===i.filter){o.wrapAll('<div class="loadgo-container" style="position: relative"></div>'),o.parent().prepend($overlay);var d=parseFloat(o.css("padding-left")),p=parseFloat(o.css("padding-right")),g=parseFloat(o.css("padding-top")),c=parseFloat(o.css("padding-bottom")),h=parseFloat(o.css("margin-left")),f=parseFloat(o.css("margin-right")),v=parseFloat(o.css("margin-top")),y=parseFloat(o.css("margin-bottom"));"lr"===i.direction?$overlay.css("right",p+f+"px"):"rl"===i.direction?$overlay.css("left",d+h+"px"):"bt"===i.direction?$overlay.css("top",g+v+"px"):"tb"===i.direction&&$overlay.css("bottom",c+y+"px"),l.overlay=$overlay,l.width=$overlay.width(),l.height=$overlay.height()}if(o.data("loadgo",l),i.resize)e(window).on("resize",i.resize);else{var u=this;e(window).on("resize",function(){var t=o,r=t.data("loadgo");t.data("loadgo-options");if(void 0!==r){var s=r.overlay,a=r.progress,n=t.width(),l=t.height(),d={progress:r.progress,width:n,height:l};if(s){s.css({width:n+"px",height:l+"px"});var p=parseFloat(t.css("padding-left")),g=parseFloat(t.css("padding-right")),c=parseFloat(t.css("padding-top")),h=parseFloat(t.css("padding-bottom")),f=parseFloat(t.css("margin-left")),v=parseFloat(t.css("margin-right")),y=parseFloat(t.css("margin-top")),b=parseFloat(t.css("margin-bottom"));"lr"===i.direction?s.css("right",g+v+"px"):"rl"===i.direction?s.css("left",p+f+"px"):"bt"===i.direction?s.css("top",c+y+"px"):"tb"===i.direction&&s.css("bottom",h+b+"px"),d.overlay=s}t.data("loadgo",e.extend({},r,d)),u.loadgo("setprogress",a)}})}}},options:function(t){var o=e(this),i=o.data("loadgo-options"),r=void 0!==t?t:{},s={bgcolor:"#FFFFFF",opacity:.5,animated:!0,image:null,class:null,resize:null,direction:"lr",filter:null};void 0!==r.opacity&&(r.opacity=parseFloat(r.opacity)),i="{}"===JSON.stringify(i)?e.extend({},s,r):e.extend({},i,r);var a=["lr","rl","bt","tb"];if(-1===e.inArray(i.direction.toLowerCase(),a)&&(i.direction="lr"),i.filter){var n=["blur","grayscale","sepia","hue-rotate","invert","opacity"];-1===e.inArray(i.filter.toLowerCase(),n)&&(i.filter=null)}return o.data("loadgo-options",i),i},setprogress:function(t){if(!(t<0||t>100)){var o={progress:t},i=e(this).data("loadgo"),r=e(this).loadgo("options"),s=i.overlay,a=i.width,n=i.height,l=r.direction;if(s){var d,p;"lr"===l?(d=a*(1-t/100),s[0].style.width=d+"px"):"rl"===l?(d=a*(1-t/100),s[0].style.width=d+"px"):"bt"===l?(p=n*(1-t/100),s[0].style.height=p+"px"):"tb"===l&&(p=n*(1-t/100),s[0].style.height=p+"px"),o.overlay=s}else{var g,c=r.filter;switch(c){case"blur":g=(100-t)/10,jQuery(this).css({"-webkit-filter":c+"("+g+"px)"});break;case"hue-rotate":g=360*t/100,jQuery(this).css({"-webkit-filter":c+"("+g+"deg)"});break;case"opacity":g=t/100,jQuery(this).css({"-webkit-filter":c+"("+g+")"});break;default:g=1-t/100,e(this).css({"-webkit-filter":c+"("+g+")"})}}e(this).data("loadgo",e.extend({},i,o))}},getprogress:function(){var t=e(this).data("loadgo");return void 0===t?0:void 0!==t.progress?t.progress:0},resetprogress:function(){e(this).loadgo("setprogress",0)},loop:function(t){var o=e(this).data("loadgo"),i=!0,r=this;if(o.interval)return!1;o.interval=setInterval(function(){i?(o.progress+=1,o.progress>=100&&(i=!1)):(o.progress-=1,o.progress<=0&&(i=!0)),o.overlay.css({transition:"none","-webkit-transition":"none","-moz-transition":"none","-ms-transition":"none","-o-transition":"none"}),r.loadgo("setprogress",o.progress)},t)},stop:function(){var t=e(this).data("loadgo");t.interval=clearInterval(t.interval),this.loadgo("setprogress",100)},destroy:function(){var t=e(this),o=t.data("loadgo");void 0!==o&&(o.overlay&&(o.overlay.remove(),t.insertBefore(t.parent()),t.siblings(".loadgo-container").remove()),e.removeData(t,"loadgo"),e.removeData(t,"loadgo-options"))}};e.fn.loadgo=function(e){if(void 0===t[e]){if("object"==typeof e||void 0===e)return t.init.apply(this,arguments);throw new Error("Method "+e+" does not exist on $.loadgo")}return t[e].apply(this,Array.prototype.slice.call(arguments,1))}}(jQuery);1 /** 2 * @preserve LoadGo v2.2.1 (http://franverona.com/loadgo) 3 * 2018 - Fran Verona 4 * Licensed under MIT (https://github.com/franverona/loadgo/blob/master/LICENSE) 5 */ 6 if("undefined"==typeof jQuery)throw new Error("LoadGo requires jQuery. Make sure you are loading jQuery before LoadGo, or try pure Javascript version instead.");!function($){var t={init:function(t){var e=$(this);if(0!==e.length){if(!e.is("img"))throw new Error("LoadGo only works on img elements.");if(e.length>1)throw new Error("LoadGo only works on one element at a time. Try with a valid #id.");e.data("loadgo-options",{});var o=e.loadgo("options",t),r=e[0].getBoundingClientRect().width,i=e[0].getBoundingClientRect().height,a='<div class="loadgo-overlay" style="background-color:%bgcolor%;opacity:%opacity%;width:%width%px;height:%height%px;position:absolute;"></div>'.replace("%bgcolor%",o.bgcolor).replace("%opacity%",o.opacity).replace("%width%",r).replace("%height%",i);if($overlay=$(a),o.animated){var s="width 0.6s ease, height 0.6s ease, top 0.6s ease";$overlay.css({transition:s,"-webkit-transition":s,"-moz-transition":s,"-ms-transition":s,"-o-transition":s})}if(o.class&&$overlay.addClass(o.class),o.filter&&("blur"===o.filter?e.css({"-webkit-filter":o.filter+"(10px)"}):"hue-rotate"===o.filter?e.css({"-webkit-filter":o.filter+"(360deg)"}):"opacity"===o.filter?e.css({"-webkit-filter":o.filter+"(0)"}):e.css({"-webkit-filter":o.filter+"(1)"}),o.animated&&e.css({transition:"0.6s filter ease","-webkit-transition":"0.6s -webkit-filter ease","-moz-transition":"0.6s -moz-filter ease","-ms-transition":"0.6s -ms-filter ease","-o-transition":"0.6s -o-filter ease"})),o.image){var n="100% 0%";"rl"===o.direction?n="0% 50%":"bt"===o.direction?n="100% 0%":"tb"===o.direction&&(n="0% 100%"),$overlay.css({"background-image":'url("'+o.image+'")',"background-repeat":"no-repeat","background-size":"cover","background-color":"none","background-position":n})}var l={progress:0};if(null===o.filter){e.wrapAll('<div class="loadgo-container" style="position: relative"></div>'),e.parent().prepend($overlay);var d=parseFloat(e.css("padding-left")),p=parseFloat(e.css("padding-right")),c=parseFloat(e.css("padding-top")),g=parseFloat(e.css("padding-bottom")),h=parseFloat(e.css("margin-left")),f=parseFloat(e.css("margin-right")),v=parseFloat(e.css("margin-top")),y=parseFloat(e.css("margin-bottom"));"lr"===o.direction?$overlay.css("right",p+f+"px"):"rl"===o.direction?$overlay.css("left",d+h+"px"):"bt"===o.direction?$overlay.css("top",c+v+"px"):"tb"===o.direction&&$overlay.css("bottom",g+y+"px"),l.overlay=$overlay,l.width=$overlay.width(),l.height=$overlay.height()}if(e.data("loadgo",l),o.resize)$(window).on("resize",o.resize);else{var u=this;$(window).on("resize",function(){var t=e,r=t.data("loadgo");t.data("loadgo-options");if(void 0!==r){var i=r.overlay,a=r.progress,s=t.width(),n=t.height();if(storedData={progress:r.progress,width:s,height:n},i){i.css({width:s+"px",height:n+"px"});var l=parseFloat(t.css("padding-left")),d=parseFloat(t.css("padding-right")),p=parseFloat(t.css("padding-top")),c=parseFloat(t.css("padding-bottom")),g=parseFloat(t.css("margin-left")),h=parseFloat(t.css("margin-right")),f=parseFloat(t.css("margin-top")),v=parseFloat(t.css("margin-bottom"));"lr"===o.direction?i.css("right",d+h+"px"):"rl"===o.direction?i.css("left",l+g+"px"):"bt"===o.direction?i.css("top",p+f+"px"):"tb"===o.direction&&i.css("bottom",c+v+"px"),storedData.overlay=i}t.data("loadgo",$.extend({},r,storedData)),u.loadgo("setprogress",a)}})}}},options:function(t){var e=$(this),o=e.data("loadgo-options"),r=void 0!==t?t:{};void 0!==r.opacity&&(r.opacity=parseFloat(r.opacity)),o="{}"===JSON.stringify(o)?$.extend({},{bgcolor:"#FFFFFF",opacity:.5,animated:!0,image:null,class:null,resize:null,direction:"lr",filter:null},r):$.extend({},o,r);if(-1===$.inArray(o.direction.toLowerCase(),["lr","rl","bt","tb"])&&(o.direction="lr"),o.filter){-1===$.inArray(o.filter.toLowerCase(),["blur","grayscale","sepia","hue-rotate","invert","opacity"])&&(o.filter=null)}return e.data("loadgo-options",o),o},setprogress:function(t){if(!(t<0||t>100)){var e={progress:t},o=$(this).data("loadgo"),r=$(this).loadgo("options"),i=o.overlay,a=o.width,s=o.height,n=r.direction;if(i){var l,d;"lr"===n?(l=a*(1-t/100),i[0].style.width=l+"px"):"rl"===n?(l=a*(1-t/100),i[0].style.width=l+"px"):"bt"===n?(d=s*(1-t/100),i[0].style.height=d+"px"):"tb"===n&&(d=s*(1-t/100),i[0].style.height=d+"px"),e.overlay=i}else{var p,c=r.filter;switch(c){case"blur":p=(100-t)/10,jQuery(this).css({"-webkit-filter":c+"("+p+"px)"});break;case"hue-rotate":p=360*t/100,jQuery(this).css({"-webkit-filter":c+"("+p+"deg)"});break;case"opacity":p=t/100,jQuery(this).css({"-webkit-filter":c+"("+p+")"});break;default:p=1-t/100,$(this).css({"-webkit-filter":c+"("+p+")"})}}$(this).data("loadgo",$.extend({},o,e))}},getprogress:function(){var t=$(this).data("loadgo");return void 0===t?0:void 0!==t.progress?t.progress:0},resetprogress:function(){$(this).loadgo("setprogress",0)},loop:function(t){var e=$(this).data("loadgo");if(e.interval)return!1;var o=!0,r=this;e.interval=setInterval(function(){o?(e.progress+=1,e.progress>=100&&(o=!1)):(e.progress-=1,e.progress<=0&&(o=!0)),e.overlay.css({transition:"none","-webkit-transition":"none","-moz-transition":"none","-ms-transition":"none","-o-transition":"none"}),r.loadgo("setprogress",e.progress)},t)},stop:function(){var t=$(this).data("loadgo");t.interval=clearInterval(t.interval),this.loadgo("setprogress",100)},destroy:function(){var t=$(this),e=t.data("loadgo");void 0!==e&&(e.overlay&&(e.overlay.remove(),t.insertBefore(t.parent()),t.siblings(".loadgo-container").remove()),$.removeData(t,"loadgo"),$.removeData(t,"loadgo-options"))}};$.fn.loadgo=function(e){if(void 0===t[e]){if("object"==typeof e||void 0===e)return t.init.apply(this,arguments);throw new Error("Method "+e+" does not exist on $.loadgo")}return t[e].apply(this,Array.prototype.slice.call(arguments,1))}}(jQuery);
Note: See TracChangeset
for help on using the changeset viewer.