Plugin Directory

Changeset 1859215


Ignore:
Timestamp:
04/16/2018 04:41:01 PM (8 years ago)
Author:
franverona
Message:

New release (1.5): LoadGo script upgraded to 2.2.1

Location:
loadgo-for-wp/trunk/js/loadgo
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • loadgo-for-wp/trunk/js/loadgo/README.md

    r1698131 r1859215  
    7676## Changelog
    7777
    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)
    7986
    8087* Added a new method: `destroy`.
     
    118125```
    119126<!-- 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>
    121128
    122129<!-- 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>
    124131```
    125132### Development environment
  • loadgo-for-wp/trunk/js/loadgo/loadgo-nojquery.js

    r1698131 r1859215  
    11/**
    2  * @preserve LoadGo v2.2 (http://franverona.com/loadgo)
    3  * 2017 - Fran Verona
     2 * @preserve LoadGo v2.2.1 (http://franverona.com/loadgo)
     3 * 2018 - Fran Verona
    44 * Licensed under MIT (https://github.com/franverona/loadgo/blob/master/LICENSE)
    55 */
     
    99  // Rudimentary indexOf method for < IE 8 compatibility
    1010  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) {
    1313        return i;
     14      }
     15    }
    1416    return -1;
    1517  };
     
    2123    if (typeof obj1 === 'undefined') {
    2224      obj2Clone = JSON.parse(JSON.stringify(obj2));
    23       if (obj2.resize)
     25      if (obj2.resize) {
    2426        obj2Clone.resize = obj2.resize;     // Functions won't be serialized, so we need to do it manually
     27      }
    2528      result = obj2Clone;
    26     }
    27     else if (typeof obj2 === 'undefined') {
     29    } else if (typeof obj2 === 'undefined') {
    2830      obj1Clone = JSON.parse(JSON.stringify(obj1));
    29       if (obj1.resize)
     31      if (obj1.resize) {
    3032        obj1Clone.resize = obj1.resize;     // Functions won't be serialized, so we need to do it manually
     33      }
    3134      result = obj1Clone;
    32     }
    33     else {
     35    } else {
    3436      obj1Clone = JSON.parse(JSON.stringify(obj1));
    35       if (obj1.resize)
     37      if (obj1.resize) {
    3638        obj1Clone.resize = obj1.resize;     // Functions won't be serialized, so we need to do it manually
     39      }
    3740      obj1 = obj1Clone;
    3841
    3942      obj2Clone = JSON.parse(JSON.stringify(obj2));
    40       if (obj2.resize)
     43      if (obj2.resize) {
    4144        obj2Clone.resize = obj2.resize;     // Functions won't be serialized, so we need to do it manually
     45      }
    4246      obj2 = obj2Clone;
    4347
    4448      result = obj1;
    45       for (var prop in obj2)
     49      for (var prop in obj2) {
    4650        result[prop] = obj2[prop];
     51      }
    4752    }
    4853    return result;
     
    5156  // Get Loadgo properties for element
    5257  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) {
    5560        return domElements[i].properties;
     61      }
     62    }
    5663    return null;
    5764  };
     
    5966  // Get array index on domElements array
    6067  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) {
    6370        return i;
     71      }
     72    }
    6473    return -1;
    6574  };
     
    6776  // Returns true if element is valid; false otherwise
    6877  var elementIsValid = function (element) {
    69     if (typeof element === 'undefined' || element === null)
     78    if (typeof element === 'undefined' || element === null) {
    7079      return false;
    71 
    72     if (element.nodeName !== 'IMG')
     80    }
     81
     82    if (element.nodeName !== 'IMG') {
    7383      throw new Error('LoadGo only works on img elements.');
    74 
    75     if (element.length > 1)
     84    }
     85
     86    if (element.length > 1) {
    7687      throw new Error('LoadGo only works on one element at a time. Try with a valid #id.');
     88    }
    7789
    7890    return true;
     
    8395    var measure = element.style[property]
    8496    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) {
    8698        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) {
    88101        return parseFloat(element.offsetTop);
     102      }
    89103    }
    90104   
    91     if (measure.indexOf('px') !== -1)
     105    if (measure.indexOf('px') !== -1) {
    92106      return parseFloat(measure);
     107    }
    93108   
    94109    return 0;
     
    104119  // Loadgo default options
    105120  var defaultOptions = {
    106     'bgcolor':    '#FFFFFF',  //  Overlay color
    107     'opacity':    '0.5',      //  Overlay opacity
    108     'animated':   true,       //  Overlay smooth animation when setting progress
    109     'image':      null,       //  Overlay image
    110     'class':      null,       //  Overlay CSS class
    111     '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)
    114129  };
    115130
     
    122137   */
    123138  Loadgo.init = function (element, useroptions) {
    124 
    125     if (!elementIsValid(element))
    126       return;
     139   
     140    if (!elementIsValid(element)) {
     141      return;
     142    }
    127143
    128144    var domElementsIndex = getIndex(element.id);
    129145    if (domElementsIndex === -1) {
    130146      domElements.push({
    131         id:           element.id,
    132         properties:   {}
     147        id: element.id,
     148        properties: {}
    133149      });
    134150      domElementsIndex = domElements.length - 1;
    135151    }
    136     else
     152    else {
    137153      // Plugin options. We need to reset options to avoid future errors
    138154      domElements[domElementsIndex].properties = {};
     155    }
    139156
    140157    var pluginOptions = Loadgo.options(element, useroptions);
     
    145162    // Overlay classes
    146163    var overlayClasses = ['loadgo-overlay'];
    147     if (pluginOptions['class'])
     164    if (pluginOptions['class']) {
    148165      overlayClasses.push(pluginOptions['class']);
     166    }
    149167    overlay.className = overlayClasses.join(' ');
    150168
     
    157175    // Overlay width
    158176    var gbc = element.getBoundingClientRect();
    159     if (gbc.width)
     177    if (gbc.width) {
    160178      overlay.style.width = gbc.width + 'px';   // for modern browsers
    161     else
     179    }
     180    else {
    162181      overlay.style.width = element.offsetWidth;  // for oldIE
     182    }
    163183   
    164184    // Overlay height
    165     if (gbc.height)
     185    if (gbc.height) {
    166186      overlay.style.height = gbc.height + 'px';   // for modern browsers
    167     else
     187    }
     188    else {
    168189      overlay.style.height = element.offsetWidth;  // for oldIE
     190    }
    169191
    170192    // Overlay will be positioned absolute
     
    182204    // Filters
    183205    if (pluginOptions.filter) {
    184       if (pluginOptions.filter === 'blur')
     206      if (pluginOptions.filter === 'blur') {
    185207        element.style['-webkit-filter'] = pluginOptions.filter + '(10px)';
    186       else if (pluginOptions.filter === 'hue-rotate')
     208      } else if (pluginOptions.filter === 'hue-rotate') {
    187209        element.style['-webkit-filter'] =  pluginOptions.filter + '(360deg)';
    188       else if (pluginOptions.filter === 'opacity')
     210      } else if (pluginOptions.filter === 'opacity') {
    189211        element.style['-webkit-filter'] =  pluginOptions.filter + '(0)';
    190       else
     212      } else {
    191213        element.style['-webkit-filter'] =  pluginOptions.filter + '(1)';
     214      }
    192215     
    193216      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';
    199222      }
    200223    }
     
    203226    if (pluginOptions.image) {
    204227      var bgposition = '100% 0%';  // Left to right animation by default
    205       if (pluginOptions.direction === 'rl')
     228      if (pluginOptions.direction === 'rl') {
    206229        bgposition = '0% 50%';    // Right to left animation
    207       else if (pluginOptions.direction === 'bt')
     230      } else if (pluginOptions.direction === 'bt') {
    208231        bgposition = '100% 0%';   // Bottom to top animation
    209       else if (pluginOptions.direction === 'tb')
     232      } else if (pluginOptions.direction === 'tb') {
    210233        bgposition = '0% 100%';   // Top to bottom animation
     234      }
    211235
    212236      overlay.style['background-image'] = 'url("' + pluginOptions.image + '")';
     
    232256      container.className = 'loadgo-container';
    233257      container.style.position = 'relative';
    234 
    235       element.parentNode.appendChild(container);
    236 
     258      element.before(container);
    237259      container.appendChild(element);
     260
    238261      container.appendChild(overlay);
    239262
    240263      // 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');
    249272
    250273      if (pluginOptions.direction === 'lr') {
     
    277300    // Resize event
    278301    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);
    280304      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();
    282307
    283308        if (overlay) {
    284309
    285310          // Overlay width
    286           if (gbc.width)
     311          if (gbc.width) {
    287312            overlay.style.width = gbc.width + 'px';   // for modern browsers
    288           else
     313          }
     314          else {
    289315            overlay.style.width = element.offsetWidth;  // for oldIE
     316          }
    290317         
    291318          // Overlay height
    292           if (gbc.height)
     319          if (gbc.height) {
    293320            overlay.style.height = gbc.height + 'px';   // for modern browsers
    294           else
     321          }
     322          else {
    295323            overlay.style.height = element.offsetWidth;  // for oldIE
     324          }
    296325
    297326          // 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');
    306335
    307336          if (pluginOptions.direction === 'lr') {
     
    333362    };
    334363
    335     if (pluginOptions.resize)
     364    if (pluginOptions.resize) {
    336365      resizeFunction = pluginOptions.resize;
    337 
    338     if (window.addEventListener)
     366    }
     367
     368    if (window.addEventListener) {
    339369      window.addEventListener('resize', resizeFunction, false);
    340     else
     370    }
     371    else {
    341372      window.attachEvent('onresize', resizeFunction);
     373    }
    342374     
    343375  };
     
    345377  Loadgo.options = function (element, useroptions) {
    346378
    347     if (!elementIsValid(element))
    348       return;
     379    if (!elementIsValid(element)) {
     380      return;
     381    }
    349382
    350383    // Store Loadgo properties
    351384    var domElementsIndex = getIndex(element.id);
    352     if (domElementsIndex === -1)
    353       return;
     385    if (domElementsIndex === -1) {
     386      return;
     387    }
    354388
    355389    var currentOptions = domElements[domElementsIndex].properties;
    356390
    357391    // If no param is provided, then is a 'get'
    358     if (JSON.stringify(currentOptions) !== '{}')
     392    if (JSON.stringify(currentOptions) !== '{}') {
    359393      return currentOptions;
     394    }
    360395
    361396    if (typeof useroptions !== 'undefined') {
    362397      // Parse to number the 'opacity' option
    363       if (typeof useroptions.opacity !== 'undefined')
     398      if (typeof useroptions.opacity !== 'undefined') {
    364399        useroptions.opacity = parseFloat(useroptions.opacity);
    365     }
    366 
    367     if (JSON.stringify(currentOptions) === '{}')
     400      }
     401    }
     402
     403    if (JSON.stringify(currentOptions) === '{}') {
    368404      currentOptions = extend(defaultOptions, useroptions);
    369     else
     405    }
     406    else {
    370407      currentOptions = extend(currentOptions, useroptions);
     408    }
    371409
    372410    // Check for valid direction
    373411    var validDirections = ['lr', 'rl', 'bt', 'tb'];
    374     if (indexOf(validDirections, currentOptions.direction.toLowerCase()) === -1)
     412    if (indexOf(validDirections, currentOptions.direction.toLowerCase()) === -1) {
    375413      // Invalid value for "direction" option. Possible values: blur, grayscale, sepia, hue-rotate, invert, opacity. Using default value: "lr".
    376414      currentOptions.direction = 'lr';
     415    }
    377416
    378417    // Check for valid filter
    379418    if (currentOptions.filter) {
    380419      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) {
    382421        // Invalid value for "filter" option. Possible values: blur, grayscale, sepia, hue-rotate, invert, opacity. This option will be ignored.
    383422        currentOptions.filter = null;
     423      }
    384424    }
    385425
     
    398438  Loadgo.setprogress = function (element, progress) {
    399439
    400     if (!elementIsValid(element))
    401       return;
     440    if (!elementIsValid(element)) {
     441      return;
     442    }
    402443
    403444    // 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    }
    406454   
    407455    var data = getProperties(element.id);
    408456
    409457    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;
    413463
    414464      if (overlay) {
     
    432482          overlay.style.top = (h - _h) + 'px';
    433483        }
    434 
    435484      }
    436485      else {
    437         var filter = data.filter, p;
     486        var p;
     487        var filter = data.filter;
    438488        switch (filter) {
    439489          case 'blur':
     
    457507    }
    458508
    459     domElements[getIndex(element.id)].properties.progress = progress;
     509    domElements[domElementsIndex].properties.progress = progress;
    460510
    461511  };
     
    466516   */
    467517  Loadgo.getprogress = function (element) {
    468 
    469     if (!elementIsValid(element))
    470       return;
     518    if (!elementIsValid(element)) {
     519      return;
     520    }
    471521
    472522    var properties = getProperties(element.id);
     
    489539  Loadgo.loop = function (element, duration) {
    490540
    491     if (!elementIsValid(element))
    492       return;
     541    if (!elementIsValid(element)) {
     542      return;
     543    }
    493544
    494545    if (getIndex(element.id) === -1) {
     
    509560
    510561    // 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);
    512564    domElements[domIndex].properties.interval = setInterval(function(){
    513565      if (toggle) {
     
    542594  // Stops the loop interval and shows image
    543595  Loadgo.stop = function (element) {
    544 
    545     if (!elementIsValid(element))
    546       return;
     596    if (!elementIsValid(element)) {
     597      return;
     598    }
    547599
    548600    if (getIndex(element.id) === -1) {
     
    561613  Loadgo.destroy = function (element) {
    562614    var domElementsIndex = getIndex(element.id);
    563     if (domElementsIndex === -1)
     615    if (domElementsIndex === -1) {
    564616      return;   // element was never initialized
     617    }
    565618   
    566619    var opt = Loadgo.options(element);
     
    568621    element.before(container);
    569622
    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) {
    573628        container.removeChild(opt.overlay)      // Removes overlay
     629      }
     630    }
    574631   
    575632    if (parent) {
     
    577634      parent.removeChild(container);          // Removes "loadgo-container" element
    578635    }
    579 
    580636  };
    581637
  • loadgo-for-wp/trunk/js/loadgo/loadgo-nojquery.min.js

    r1698131 r1859215  
    1 /*
    2  LoadGo v2.2 (http://franverona.com/loadgo)
    3  2017 - 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{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  
    11/**
    2  * @preserve LoadGo v2.2 (http://franverona.com/loadgo)
    3  * 2017 - Fran Verona
     2 * @preserve LoadGo v2.2.1 (http://franverona.com/loadgo)
     3 * 2018 - Fran Verona
    44 * Licensed under MIT (https://github.com/franverona/loadgo/blob/master/LICENSE)
    55 */
    66
    77if (typeof jQuery === 'undefined')
    8   throw new Error('LoadGo requires jQuery. Make sure you are loading jQuery before LoadGo, or try pure Javascript version if 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($) {
    1111 
    1212  var methods = {
    13     init: function (useroptions) {
     13    init: function(useroptions) {
    1414
    1515      var $this = $(this);
    1616
    17       if ($this.length === 0)
     17      if ($this.length === 0) {
    1818        return;
    19 
    20       if (!$this.is('img'))
     19      }
     20
     21      if (!$this.is('img')) {
    2122        throw new Error('LoadGo only works on img elements.');
    22 
    23       if ($this.length > 1)
     23      }
     24
     25      if ($this.length > 1) {
    2426        throw new Error('LoadGo only works on one element at a time. Try with a valid #id.');
     27      }
    2528
    2629      // Plugin options. We need to reset options to avoid future errors
     
    2932      var pluginOptions = $this.loadgo('options', useroptions);
    3033
    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;
    3336
    3437      var overlayTemplate = '<div class="loadgo-overlay" style="background-color:%bgcolor%;opacity:%opacity%;width:%width%px;height:%height%px;position:absolute;"></div>';
     
    4346      $overlay = $(overlayWithOptions);
    4447
    45       if (pluginOptions.animated)
     48      if (pluginOptions.animated) {
     49        var overlayCSS = 'width 0.6s ease, height 0.6s ease, top 0.6s ease';
    4650        $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,
    5256        });
    53 
    54       if (pluginOptions['class'])
     57      }
     58
     59      if (pluginOptions['class']) {
    5560        $overlay.addClass(pluginOptions['class']);
     61      }
    5662
    5763      if (pluginOptions.filter) {
    58         if (pluginOptions.filter === 'blur')
     64        if (pluginOptions.filter === 'blur') {
    5965          $this.css({
    60             '-webkit-filter':     pluginOptions.filter + '(10px)'
     66            '-webkit-filter': pluginOptions.filter + '(10px)'
    6167          });
    62         else if (pluginOptions.filter === 'hue-rotate')
     68        } else if (pluginOptions.filter === 'hue-rotate') {
    6369          $this.css({
    64             '-webkit-filter':     pluginOptions.filter + '(360deg)'
     70            '-webkit-filter': pluginOptions.filter + '(360deg)'
    6571          });
    66         else if (pluginOptions.filter === 'opacity')
     72        } else if (pluginOptions.filter === 'opacity') {
    6773          $this.css({
    68             '-webkit-filter':     pluginOptions.filter + '(0)'
     74            '-webkit-filter': pluginOptions.filter + '(0)'
    6975          });
    70         else
     76        } else {
    7177          $this.css({
    72             '-webkit-filter':     pluginOptions.filter + '(1)'
     78            '-webkit-filter': pluginOptions.filter + '(1)'
    7379          });
    74 
    75         if (pluginOptions.animated)
     80        }
     81
     82        if (pluginOptions.animated)  {
    7683          $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',
    8289          });
     90        }
    8391      }
    8492
    8593      if (pluginOptions.image) {
    8694        var bgposition = '100% 0%';  // Left to right animation by default
    87         if (pluginOptions.direction === 'rl')
     95        if (pluginOptions.direction === 'rl') {
    8896          bgposition = '0% 50%';    // Right to left animation
    89         else if (pluginOptions.direction === 'bt')
     97        } else if (pluginOptions.direction === 'bt') {
    9098          bgposition = '100% 0%';   // Bottom to top animation
    91         else if (pluginOptions.direction === 'tb')
     99        } else if (pluginOptions.direction === 'tb') {
    92100          bgposition = '0% 100%';   // Top to bottom animation
     101        }
    93102
    94103        $overlay.css({
    95           'background-image':         'url("' + pluginOptions.image + '")',
    96           'background-repeat':        'no-repeat',
    97           'background-size':          'cover',
    98           'background-color':         'none',
    99           'background-position':      bgposition
     104          'background-image': 'url("' + pluginOptions.image + '")',
     105          'background-repeat': 'no-repeat',
     106          'background-size': 'cover',
     107          'background-color': 'none',
     108          'background-position': bgposition
    100109        });
    101110      }
     
    115124
    116125        // 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'));
    125134
    126135        if (pluginOptions.direction === 'lr') {
     
    147156
    148157      // Resize event
    149       if (pluginOptions.resize)
     158      if (pluginOptions.resize) {
    150159        $(window).on('resize', pluginOptions.resize);
     160      }
    151161      else {
    152162        var _this = this;
    153163        $(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');
    155167         
    156           if (typeof data === 'undefined')
     168          if (typeof data === 'undefined') {
    157169            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          };
    166182
    167183          if ($overlay) {
    168184            $overlay.css({
    169               'width':    $width + 'px',
    170               'height':   $height + 'px'
     185              'width': $width + 'px',
     186              'height': $height + 'px'
    171187            });
    172188
    173189            // 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'));
    182198
    183199            if (pluginOptions.direction === 'lr') {
     
    208224    options: function (useroptions) {
    209225
    210       var $this = $(this),
    211         currentOptions = $this.data('loadgo-options'),
    212         options = typeof useroptions !== 'undefined' ? useroptions : {},
    213         defaults = {
    214           bgcolor:    '#FFFFFF', //  Overlay color
    215           opacity:    0.5,        //  Overlay opacity
    216           animated:   true,       //  Overlay smooth animation when setting progress
    217           image:      null,       //  Overlay image
    218           class:      null,       //  Overlay CSS class
    219           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      };
    223239
    224240      // Parse to number the 'opacity' option
    225       if (typeof options.opacity !== 'undefined')
     241      if (typeof options.opacity !== 'undefined') {
    226242        options.opacity = parseFloat(options.opacity);
    227 
    228       if (JSON.stringify(currentOptions) === '{}')
     243      }
     244
     245      if (JSON.stringify(currentOptions) === '{}') {
    229246        currentOptions = $.extend({}, defaults, options);
    230       else
     247      }
     248      else {
    231249        currentOptions = $.extend({}, currentOptions, options);
     250      }
    232251
    233252      // Check for valid direction
    234253      var validDirections = ['lr', 'rl', 'bt', 'tb'];
    235       if ($.inArray(currentOptions.direction.toLowerCase(), validDirections) === -1)
     254      if ($.inArray(currentOptions.direction.toLowerCase(), validDirections) === -1) {
    236255        // Invalid value for "direction" option. Possible values: blur, grayscale, sepia, hue-rotate, invert, opacity. Using default value: "lr".
    237256        currentOptions.direction = 'lr';
     257      }
    238258
    239259      // Check for valid filter
    240260      if (currentOptions.filter) {
    241261        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) {
    243263          // Invalid value for "filter" option. Possible values: blur, grayscale, sepia, hue-rotate, invert, opacity. This option will be ignored.
    244264          currentOptions.filter = null;
     265        }
    245266      }
    246267
     
    259280
    260281      // LoadGo expects progress number between 0 (0%) and 100 (100%).
    261       if (progress < 0 || progress > 100)
     282      if (progress < 0 || progress > 100) {
    262283        return;
     284      }
    263285     
    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;
    266293
    267294      if ($overlay) {
     
    293320            p = (100 - progress) / 10;
    294321            jQuery(this).css({
    295               '-webkit-filter':     $filter + '(' + p + 'px)'
     322              '-webkit-filter': $filter + '(' + p + 'px)'
    296323            });
    297324            break;
     
    299326            p = progress * 360 / 100;
    300327            jQuery(this).css({
    301               '-webkit-filter':     $filter + '(' + p + 'deg)'
     328              '-webkit-filter': $filter + '(' + p + 'deg)'
    302329            });
    303330            break;
     
    305332            p = progress / 100;
    306333            jQuery(this).css({
    307               '-webkit-filter':     $filter + '(' + p + ')'
     334              '-webkit-filter': $filter + '(' + p + ')'
    308335            });
    309336            break;
     
    311338            p = 1 - progress / 100;
    312339            $(this).css({
    313               '-webkit-filter':     $filter + '(' + p + ')'
     340              '-webkit-filter': $filter + '(' + p + ')'
    314341            });
    315342        }
     
    322349    getprogress: function () {
    323350      var data = $(this).data('loadgo');
    324       if (typeof data === 'undefined')
     351      if (typeof data === 'undefined') {
    325352        return 0;
     353      }
    326354
    327355      return typeof data.progress !== 'undefined' ? data.progress : 0;
     
    334362    // Overlay loops back and forth
    335363    loop: function (duration) {
    336       var data = $(this).data('loadgo'), toggle = true, image = this;
    337 
     364      var data = $(this).data('loadgo');
     365     
    338366      // LoadGo requires you to stop the current loop before modifying it.
    339       if (data.interval)
     367      if (data.interval) {
    340368        return false;
     369      }
     370     
     371      var toggle = true;
     372      var image = this;
    341373
    342374      // Store interval so we can stop it later
     
    345377        if (toggle) {
    346378          data.progress += 1;
    347           if (data.progress >= 100)
     379          if (data.progress >= 100) {
    348380            toggle = false;
     381          }
    349382        }
    350383        else {
    351384          data.progress -= 1;
    352           if (data.progress <= 0)
     385          if (data.progress <= 0) {
    353386            toggle = true;
     387          }
    354388        }
    355389       
     
    357391        // Can be replaced with animated: false in the initializer
    358392        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',
    364398        });
    365399
     
    377411    // Remove all plugin properties
    378412    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') {
    382417        return;   // element was never initialized
     418      }
    383419
    384420      if (options.overlay) {
     
    398434
    399435    if (typeof methods[methodOrOptions] === 'undefined') {
    400       if (typeof methodOrOptions === 'object' || typeof methodOrOptions === 'undefined')
     436      if (typeof methodOrOptions === 'object' || typeof methodOrOptions === 'undefined') {
    401437        return methods.init.apply( this, arguments );   // Init method by default
     438      }
    402439       
    403440      throw new Error('Method ' + methodOrOptions + ' does not exist on $.loadgo');
     
    408445  }
    409446 
    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 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 if 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 */
     6if("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.