function codeWrap(){
  "use strict";

  var DEFAULT_TYPE = 'promise';

  var $codes = $('[data-code-id]').get();

  var codeIds =
    $codes
      .map(function(div){
          return div.attributes["data-code-id"].value
      })
      .filter(function(item, index, inputArray){
          // Each code block has multiple versions so let's only grab one.
          return inputArray.indexOf(item) == index;
      });

  wrap();
  setAll();

  $('[data-code-tablist] [href]').on('click', function(e){
    var href = $(this).attr('href');

    setAll(href.replace('#', ''));

    setEqualHeights();

    e.preventDefault();
  });

  function wrap(){
    var codeTpl = '' +
      '<ul class="nav nav-tabs nav-code" data-code-tablist="{{codeId}}">' +
        '<li>' +
            '<a href="#async">Async functions</a>' +
        '</li>' +
        '<li class="active">' +
            '<a href="#promise">Promises</a>' +
        '</li>' +
        '<li>' +
            '<a href="#callback">Callbacks</a>' +
        '</li>' +
      '</ul>' +
      '<div class="tab-content">{{tapPanes}}</div>';
    codeIds
      .forEach(function(id){
        var $code = $("[data-code-id='" + id + "']");

        var paneHtml = $code.get().map(function(div){
          return div.outerHTML;
        }).join('');

        var codeHtml = codeTpl
                          .replace(/{{tapPanes}}/g, paneHtml)
                          .replace(/{{codeId}}/g, id);
        $code
          .first()
          .replaceWith(codeHtml);
        $code.remove();
      });
    // Remove items that are only useful for non-JS users.
    $('[data-code-hide]').addClass('hide');
  }

  function setAll(type){

    // We default to callback so no need to do anything the first time.
    var firstTime = !localStorage.getItem('codeStyle');
    if(firstTime){
      localStorage.setItem('codeStyle', DEFAULT_TYPE);
    }

    type = type || localStorage.getItem('codeStyle');
    if(typeof type === "undefined" || type === null) {
      return;
    }

    var $tablist = $('[data-code-tablist] [href="#' + type + '"]').parent();
    $('[data-code-tablist] li').removeClass('active');
    $tablist.addClass('active');

    $('.tab-pane').removeClass('active');
    $('.tab-pane[id="' + type + '"]').addClass('active');
    localStorage.setItem('codeStyle', type);
  }


  var setHeights = [];
  function setEqualHeights(){
    if(setHeights.length > 0){
      return;
    }
    codeIds
      .forEach(function(id){
        var $code = $("[data-code-id='" + id + "']");

        var paneHeight = 0;

        $code.get().forEach(function(div){
          var originalDisplay = div.style.display;
          div.style.display = 'block';
          var clientHeight = div.clientHeight;
          div.style.display = originalDisplay;
          if(clientHeight > paneHeight){
            paneHeight = clientHeight;
          }
        });
        $code.find('pre').css('height', paneHeight);
        setHeights.push(id);
      });
  }
}
function codeWrap(){
  "use strict";

  var DEFAULT_TYPE = 'promise';

  var $codes = $('[data-code-id]').get();

  var codeIds =
    $codes
      .map(function(div){
          return div.attributes["data-code-id"].value
      })
      .filter(function(item, index, inputArray){
          // Each code block has multiple versions so let's only grab one.
          return inputArray.indexOf(item) == index;
      });

  wrap();
  setAll();

  $('[data-code-tablist] [href]').on('click', function(e){
    var href = $(this).attr('href');

    setAll(href.replace('#', ''));

    setEqualHeights();

    e.preventDefault();
  });

  function wrap(){
    var codeTpl = '' +
      '<ul class="nav nav-tabs nav-code" data-code-tablist="{{codeId}}">' +
        '<li>' +
            '<a href="#async">Async functions</a>' +
        '</li>' +
        '<li class="active">' +
            '<a href="#promise">Promises</a>' +
        '</li>' +
        '<li>' +
            '<a href="#callback">Callbacks</a>' +
        '</li>' +
      '</ul>' +
      '<div class="tab-content">{{tapPanes}}</div>';
    codeIds
      .forEach(function(id){
        var $code = $("[data-code-id='" + id + "']");

        var paneHtml = $code.get().map(function(div){
          return div.outerHTML;
        }).join('');

        var codeHtml = codeTpl
                          .replace(/{{tapPanes}}/g, paneHtml)
                          .replace(/{{codeId}}/g, id);
        $code
          .first()
          .replaceWith(codeHtml);
        $code.remove();
      });
    // Remove items that are only useful for non-JS users.
    $('[data-code-hide]').addClass('hide');
  }

  function setAll(type){

    // We default to callback so no need to do anything the first time.
    var firstTime = !localStorage.getItem('codeStyle');
    if(firstTime){
      localStorage.setItem('codeStyle', DEFAULT_TYPE);
    }

    type = type || localStorage.getItem('codeStyle');
    if(typeof type === "undefined" || type === null) {
      return;
    }

    var $tablist = $('[data-code-tablist] [href="#' + type + '"]').parent();
    $('[data-code-tablist] li').removeClass('active');
    $tablist.addClass('active');

    $('.tab-pane').removeClass('active');
    $('.tab-pane[id="' + type + '"]').addClass('active');
    localStorage.setItem('codeStyle', type);
  }


  var setHeights = [];
  function setEqualHeights(){
    if(setHeights.length > 0){
      return;
    }
    codeIds
      .forEach(function(id){
        var $code = $("[data-code-id='" + id + "']");

        var paneHeight = 0;

        $code.get().forEach(function(div){
          var originalDisplay = div.style.display;
          div.style.display = 'block';
          var clientHeight = div.clientHeight;
          div.style.display = originalDisplay;
          if(clientHeight > paneHeight){
            paneHeight = clientHeight;
          }
        });
        $code.find('pre').css('height', paneHeight);
        setHeights.push(id);
      });
  }
}
function codeWrap ( ) { "use strict" ; var DEFAULT_TYPE = 'promise' ; var $codes = $ ( '[data-code-id]' ) . get ( ) ; var codeIds = $codes . map ( function ( div ) { return div . attributes [ "data-code-id" ] . value } ) . filter ( function ( item , index , inputArray ) { // Each code block has multiple versions so let's only grab one. return inputArray . indexOf ( item ) == index ; } ) ; wrap ( ) ; setAll ( ) ; $ ( '[data-code-tablist] [href]' ) . on ( 'click' , function ( e ) { var href = $ ( this ) . attr ( 'href' ) ; setAll ( href . replace ( '#' , '' ) ) ; setEqualHeights ( ) ; e . preventDefault ( ) ; } ) ; function wrap ( ) { var codeTpl = '' + '<ul class="nav nav-tabs nav-code" data-code-tablist="{{codeId}}">' + '<li>' + '<a href="#async">Async functions</a>' + '</li>' + '<li class="active">' + '<a href="#promise">Promises</a>' + '</li>' + '<li>' + '<a href="#callback">Callbacks</a>' + '</li>' + '</ul>' + '<div class="tab-content">{{tapPanes}}</div>' ; codeIds . forEach ( function ( id ) { var $code = $ ( "[data-code-id='" + id + "']" ) ; var paneHtml = $code . get ( ) . map ( function ( div ) { return div . outerHTML ; } ) . join ( '' ) ; var codeHtml = codeTpl . replace ( / {{tapPanes}} / g , paneHtml ) . replace ( / {{codeId}} / g , id ) ; $code . first ( ) . replaceWith ( codeHtml ) ; $code . remove ( ) ; } ) ; // Remove items that are only useful for non-JS users. $ ( '[data-code-hide]' ) . addClass ( 'hide' ) ; } function setAll ( type ) { // We default to callback so no need to do anything the first time. var firstTime = ! localStorage . getItem ( 'codeStyle' ) ; if ( firstTime ) { localStorage . setItem ( 'codeStyle' , DEFAULT_TYPE ) ; } type = type || localStorage . getItem ( 'codeStyle' ) ; if ( typeof type === "undefined" || type === null ) { return ; } var $tablist = $ ( '[data-code-tablist] [href="#' + type + '"]' ) . parent ( ) ; $ ( '[data-code-tablist] li' ) . removeClass ( 'active' ) ; $tablist . addClass ( 'active' ) ; $ ( '.tab-pane' ) . removeClass ( 'active' ) ; $ ( '.tab-pane[id="' + type + '"]' ) . addClass ( 'active' ) ; localStorage . setItem ( 'codeStyle' , type ) ; } var setHeights = [ ] ; function setEqualHeights ( ) { if ( setHeights . length > 0 ) { return ; } codeIds . forEach ( function ( id ) { var $code = $ ( "[data-code-id='" + id + "']" ) ; var paneHeight = 0 ; $code . get ( ) . forEach ( function ( div ) { var originalDisplay = div . style . display ; div . style . display = 'block' ; var clientHeight = div . clientHeight ; div . style . display = originalDisplay ; if ( clientHeight > paneHeight ) { paneHeight = clientHeight ; } } ) ; $code . find ( 'pre' ) . css ( 'height' , paneHeight ) ; setHeights . push ( id ) ; } ) ; } }
/* jshint jquery: true
/ * jshint jquery : true
Wrap the code block