Sha256: a52b13e9b550e5ac2c4dd138053254b6cb338f0f4fe65719744afc7f8b1cd7d7

Contents?: true

Size: 1.45 KB

Versions: 2

Compression:

Stored size: 1.45 KB

Contents

(function($, ns) {
  var initializePresenters = function(target) {
    var $target = $(target);
    var $els = $target.find('[data-presents]').add($target.filter('[data-presents]'));

    $els.each(function() {
      var $el = $(this);
      var presenters = $el.data('presents').split(' ');
      $.each(presenters, function() {
        var presenter = this;
        $el.trigger(presenter + ':present');
      });
    });
  };

  var observerStrategies = {
    mutationObserver: function() {
      var observer = new MutationObserver(function(mutations) {
        mutations.map(function(mutation) {
          var nodes = $.makeArray(mutation.addedNodes);
          return nodes;
        }).forEach(function(node) {
          initializePresenters(node);
        });
      });

      var body = document.querySelector('body');
      observer.observe(body, { childList: true, subtree: true });
    },

    mutationEvent: function() {
      $('body').on('DOMNodeInserted', function(event) {
        initializePresenters(event.target);
      });
    }
  };

  var observeNewNodes = function() {
    var observerStrategy;
    if (typeof MutationObserver !== 'undefined') {
      observerStrategy = observerStrategies.mutationObserver;
    } else {
      observerStrategy = observerStrategies.mutationEvent;
    }
    observerStrategy();
  };

  var present = function(){
    observeNewNodes();
    initializePresenters($('body'));
  };

  ns.present = present;

})(jQuery, undercase);

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
undercase-0.2.57 app/assets/javascripts/undercase/presenter.js
undercase-0.2.29 app/assets/javascripts/undercase/presenter.js