splide-1.0.x-dev/js/src/components/splide.blazy.js

js/src/components/splide.blazy.js
/**
 * @file
 * Provides Splide extensions for Blazy.
 */

(function ($, Drupal, _ds) {

  'use strict';

  var Blazy = function (Splide, Components) {
    var root = Splide.root;
    var _blazy = Drupal.blazy || {};
    var _firstView = true;

    return {
      mount: function () {
        var me = this;

        Splide.on('mounted.spb', function (e) {
          me.preload(false);
        });

        Splide.on('move.spb', function (e) {
          me.preload(true);
        });

        Splide.on('moved.spb', function (e) {
          _firstView = false;
        });

      },

      /**
       * Blazy is not loaded on perPage > 1 with type `loop`/ infinite, reload.
       *
       * @param {bool} ahead
       *   Whether to lazyload ahead (at move/ beforeChange event), or not.
       */
      preload: function (ahead) {
        if (!_blazy.init || _firstView) {
          return;
        }

        window.setTimeout(function () {
          var blazy = '.b-lazy:not(.b-loaded)';
          var visible = '.is-visible ' + blazy;
          var el = $.find(root, blazy);
          if ($.isElm(el)) {
            var els = $.findAll(root, ahead ? blazy : visible);
            if (els.length) {
              _blazy.init.load(els);
            }
          }

          // Cleans up preloader if any named b-loader due to clones.
          var preloader = $.find(root, '.b-loaded ~ .b-loader');
          $.remove(preloader);
        }, 100);
      }
    };
  };

  _ds.extend({
    Blazy: Blazy
  });

})(dBlazy, Drupal, dSplide);

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc