vendor: 3,905 bytes, lines 1-155
1/* ======================================================================== 2 * Bootstrap: tab.js v3.3.7 3 * http://getbootstrap.com/javascript/#tabs 4 * ======================================================================== 5 * Copyright 2011-2016 Twitter, Inc. 6 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 7 * ======================================================================== */ 8 9 10+function ($) { 11 'use strict'; 12 13 // TAB CLASS DEFINITION 14 // ==================== 15 16 var Tab = function (element) { 17 // jscs:disable requireDollarBeforejQueryAssignment 18 this.element = $(element) 19 // jscs:enable requireDollarBeforejQueryAssignment 20 } 21 22 Tab.VERSION = '3.3.7' 23 24 Tab.TRANSITION_DURATION = 150 25 26 Tab.prototype.show = function () { 27 var $this = this.element 28 var $ul = $this.closest('ul:not(.dropdown-menu)') 29 var selector = $this.data('target') 30 31 if (!selector) { 32 selector = $this.attr('href') 33 selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 34 } 35 36 if ($this.parent('li').hasClass('active')) return 37 38 var $previous = $ul.find('.active:last a') 39 var hideEvent = $.Event('hide.bs.tab', { 40 relatedTarget: $this[0] 41 }) 42 var showEvent = $.Event('show.bs.tab', { 43 relatedTarget: $previous[0] 44 }) 45 46 $previous.trigger(hideEvent) 47 $this.trigger(showEvent) 48 49 if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return 50 51 var $target = $(selector) 52 53 this.activate($this.closest('li'), $ul) 54 this.activate($target, $target.parent(), function () { 55 $previous.trigger({ 56 type: 'hidden.bs.tab', 57 relatedTarget: $this[0] 58 }) 59 $this.trigger({ 60 type: 'shown.bs.tab', 61 relatedTarget: $previous[0] 62 }) 63 }) 64 } 65 66 Tab.prototype.activate = function (element, container, callback) { 67 var $active = container.find('> .active') 68 var transition = callback 69 && $.support.transition 70 && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length) 71 72 function next() { 73 $active 74 .removeClass('active') 75 .find('> .dropdown-menu > .active') 76 .removeClass('active') 77 .end() 78 .find('[data-toggle="tab"]') 79 .attr('aria-expanded', false) 80 81 element 82 .addClass('active') 83 .find('[data-toggle="tab"]') 84 .attr('aria-expanded', true) 85 86 if (transition) { 87 element[0].offsetWidth // reflow for transition 88 element.addClass('in') 89 } else { 90 element.removeClass('fade') 91 } 92 93 if (element.parent('.dropdown-menu').length) { 94 element 95 .closest('li.dropdown') 96 .addClass('active') 97 .end() 98 .find('[data-toggle="tab"]') 99 .attr('aria-expanded', true) 100 } 101 102 callback && callback() 103 } 104 105 $active.length && transition ? 106 $active 107 .one('bsTransitionEnd', next) 108 .emulateTransitionEnd(Tab.TRANSITION_DURATION) : 109 next() 110 111 $active.removeClass('in') 112 } 113 114 115 // TAB PLUGIN DEFINITION 116 // ===================== 117 118 function Plugin(option) { 119 return this.each(function () { 120 var $this = $(this) 121 var data = $this.data('bs.tab') 122 123 if (!data) $this.data('bs.tab', (data = new Tab(this))) 124 if (typeof option == 'string') data[option]() 125 }) 126 } 127 128 var old = $.fn.tab 129 130 $.fn.tab = Plugin 131 $.fn.tab.Constructor = Tab 132 133 134 // TAB NO CONFLICT 135 // =============== 136 137 $.fn.tab.noConflict = function () { 138 $.fn.tab = old 139 return this 140 } 141 142 143 // TAB DATA-API 144 // ============ 145 146 var clickHandler = function (e) { 147 e.preventDefault() 148 Plugin.call($(this), 'show') 149 } 150 151 $(document) 152 .on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler) 153 .on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler) 154 155}(jQuery);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.