PageSourceSearch

https://www.pipelinepub.com/info/js/bootstrap/js/bootstrap.js

js pipelinepub.com collected 2026-10-03 21:19:16 UTC 15,148 bytes, 566 lines download raw bytes

1/* ===================================================
2 * bootstrap-transition.js v2.3.2
3 * http://getbootstrap.com/2.3.2/javascript.html#transitions
4 * ===================================================
5 * Copyright 2013 Twitter, Inc.
6 *
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
10 *
11 * http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ========================================================== */
19
20
21!function ($) {
22
23  "use strict"; // jshint ;_;
24
25
26  /* CSS TRANSITION SUPPORT (http://www.modernizr.com/)
27   * ======================================================= */
28
29  $(function () {
30
31    $.support.transition = (function () {
32
33      var transitionEnd = (function () {
34
35        var el = document.createElement('bootstrap')
36          , transEndEventNames = {
37               'WebkitTransition' : 'webkitTransitionEnd'
38            ,  'MozTransition'    : 'transitionend'
39            ,  'OTransition'      : 'oTransitionEnd otransitionend'
40            ,  'transition'       : 'transitionend'
41            }
42          , name
43
44        for (name in transEndEventNames){
45          if (el.style[name] !== undefined) {
46            return transEndEventNames[name]
47          }
48        }
49
50      }())
51
52      return transitionEnd && {
53        end: transitionEnd
54      }
55
56    })()
57
58  })
59
60}(window.jQuery);
61/* ===========================================================
62 * bootstrap-tooltip.js v2.3.2
63 * http://getbootstrap.com/2.3.2/javascript.html#tooltips
64 * Inspired by the original jQuery.tipsy by Jason Frame
65 * ===========================================================
66 * Copyright 2013 Twitter, Inc.
67 *
68 * Licensed under the Apache License, Version 2.0 (the "License");
69 * you may not use this file except in compliance with the License.
70 * You may obtain a copy of the License at
71 *
72 * http://www.apache.org/licenses/LICENSE-2.0
73 *
74 * Unless required by applicable law or agreed to in writing, software
75 * distributed under the License is distributed on an "AS IS" BASIS,
76 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
77 * See the License for the specific language governing permissions and
78 * limitations under the License.
79 * ========================================================== */
80
81
82!function ($) {
83
84  "use strict"; // jshint ;_;
85
86
87 /* TOOLTIP PUBLIC CLASS DEFINITION
88  * =============================== */
89
90  var Tooltip = function (element, options) {
91    this.init('tooltip', element, options)
92  }
93
94  Tooltip.prototype = {
95
96    constructor: Tooltip
97
98  , init: function (type, element, options) {
99      var eventIn
100        , eventOut
101        , triggers
102        , trigger
103        , i
104
105      this.type = type
106      this.$element = $(element)
107      this.options = this.getOptions(options)
108      this.enabled = true
109
110      triggers = this.options.trigger.split(' ')
111
112      for (i = triggers.length; i--;) {
113        trigger = triggers[i]
114        if (trigger == 'click') {
115          this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
116        } else if (trigger != 'manual') {
117          eventIn = trigger == 'hover' ? 'mouseenter' : 'focus'
118          eventOut = trigger == 'hover' ? 'mouseleave' : 'blur'
119          this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
120          this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
121        }
122      }
123
124      this.options.selector ?
125        (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
126        this.fixTitle()
127    }
128
129  , getOptions: function (options) {
130      options = $.extend({}, $.fn[this.type].defaults, this.$element.data(), options)
131
132      if (options.delay && typeof options.delay == 'number') {
133        options.delay = {
134          show: options.delay
135        , hide: options.delay
136        }
137      }
138
139      return options
140    }
141
142  , enter: function (e) {
143      var defaults = $.fn[this.type].defaults
144        , options = {}
145        , self
146
147      this._options && $.each(this._options, function (key, value) {
148        if (defaults[key] != value) options[key] = value
149      }, this)
150
151      self = $(e.currentTarget)[this.type](options).data(this.type)
152
153      if (!self.options.delay || !self.options.delay.show) return self.show()
154
155      clearTimeout(this.timeout)
156      self.hoverState = 'in'
157      this.timeout = setTimeout(function() {
158        if (self.hoverState == 'in') self.show()
159      }, self.options.delay.show)
160    }
161
162  , leave: function (e) {
163      var self = $(e.currentTarget)[this.type](this._options).data(this.type)
164
165      if (this.timeout) clearTimeout(this.timeout)
166      if (!self.options.delay || !self.options.delay.hide) return self.hide()
167
168      self.hoverState = 'out'
169      this.timeout = setTimeout(function() {
170        if (self.hoverState == 'out') self.hide()
171      }, self.options.delay.hide)
172    }
173
174  , show: function () {
175      var $tip
176        , pos
177        , actualWidth
178        , actualHeight
179        , placement
180        , tp
181        , e = $.Event('show')
182
183      if (this.hasContent() && this.enabled) {
184        this.$element.trigger(e)
185        if (e.isDefaultPrevented()) return
186        $tip = this.tip()
187        this.setContent()
188
189        if (this.options.animation) {
190          $tip.addClass('fade')
191        }
192
193        placement = typeof this.options.placement == 'function' ?
194          this.options.placement.call(this, $tip[0], this.$element[0]) :
195          this.options.placement
196
197        $tip
198          .detach()
199          .css({ top: 0, left: 0, display: 'block' })
200
201        this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)
202
203        pos = this.getPosition()
204
205        actualWidth = $tip[0].offsetWidth
206        actualHeight = $tip[0].offsetHeight
207
208        switch (placement) {
209          case 'bottom':
210            tp = {top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2}
211            break
212          case 'top':
213            tp = {top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2}
214            break
215          case 'left':
216            tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth}
217            break
218          case 'right':
219            tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width}
220            break
221        }
222
223        this.applyPlacement(tp, placement)
224        this.$element.trigger('shown')
225      }
226    }
227
228  , applyPlacement: function(offset, placement){
229      var $tip = this.tip()
230        , width = $tip[0].offsetWidth
231        , height = $tip[0].offsetHeight
232        , actualWidth
233        , actualHeight
234        , delta
235        , replace
236
237      $tip
238        .offset(offset)
239        .addClass(placement)
240        .addClass('in')
241
242      actualWidth = $tip[0].offsetWidth
243      actualHeight = $tip[0].offsetHeight
244
245      if (placement == 'top' && actualHeight != height) {
246        offset.top = offset.top + height - actualHeight
247        replace = true
248      }
249
250      if (placement == 'bottom' || placement == 'top') {
251        delta = 0
252
253        if (offset.left < 0){
254          delta = offset.left * -2
255          offset.left = 0
256          $tip.offset(offset)
257          actualWidth = $tip[0].offsetWidth
258          actualHeight = $tip[0].offsetHeight
259        }
260
261        this.replaceArrow(delta - width + actualWidth, actualWidth, 'left')
262      } else {
263        this.replaceArrow(actualHeight - height, actualHeight, 'top')
264      }
265
266      if (replace) $tip.offset(offset)
267    }
268
269  , replaceArrow: function(delta, dimension, position){
270      this
271        .arrow()
272        .css(position, delta ? (50 * (1 - delta / dimension) + "%") : '')
273    }
274
275  , setContent: function () {
276      var $tip = this.tip()
277        , title = this.getTitle()
278
279      $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)
280      $tip.removeClass('fade in top bottom left right')
281    }
282
283  , hide: function () {
284      var that = this
285        , $tip = this.tip()
286        , e = $.Event('hide')
287
288      this.$element.trigger(e)
289      if (e.isDefaultPrevented()) return
290
291      $tip.removeClass('in')
292
293      function removeWithAnimation() {
294        var timeout = setTimeout(function () {
295          $tip.off($.support.transition.end).detach()
296        }, 500)
297
298        $tip.one($.support.transition.end, function () {
299          clearTimeout(timeout)
300          $tip.detach()
301        })
302      }
303
304      $.support.transition && this.$tip.hasClass('fade') ?
305        removeWithAnimation() :
306        $tip.detach()
307
308      this.$element.trigger('hidden')
309
310      return this
311    }
312
313  , fixTitle: function () {
314      var $e = this.$element
315      if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') {
316        $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')
317      }
318    }
319
320  , hasContent: function () {
321      return this.getTitle()
322    }
323
324  , getPosition: function () {
325      var el = this.$element[0]
326      return $.extend({}, (typeof el.getBoundingClientRect == 'function') ? el.getBoundingClientRect() : {
327        width: el.offsetWidth
328      , height: el.offsetHeight
329      }, this.$element.offset())
330    }
331
332  , getTitle: function () {
333      var title
334        , $e = this.$element
335        , o = this.options
336
337      title = $e.attr('data-original-title')
338        || (typeof o.title == 'function' ? o.title.call($e[0]) :  o.title)
339
340      return title
341    }
342
343  , tip: function () {
344      return this.$tip = this.$tip || $(this.options.template)
345    }
346
347  , arrow: function(){
348      return this.$arrow = this.$arrow || this.tip().find(".tooltip-arrow")
349    }
350
351  , validate: function () {
352      if (!this.$element[0].parentNode) {
353        this.hide()
354        this.$element = null
355        this.options = null
356      }
357    }
358
359  , enable: function () {
360      this.enabled = true
361    }
362
363  , disable: function () {
364      this.enabled = false
365    }
366
367  , toggleEnabled: function () {
368      this.enabled = !this.enabled
369    }
370
371  , toggle: function (e) {
372      var self = e ? $(e.currentTarget)[this.type](this._options).data(this.type) : this
373      self.tip().hasClass('in') ? self.hide() : self.show()
374    }
375
376  , destroy: function () {
377      this.hide().$element.off('.' + this.type).removeData(this.type)
378    }
379
380  }
381
382
383 /* TOOLTIP PLUGIN DEFINITION
384  * ========================= */
385
386  var old = $.fn.tooltip
387
388  $.fn.tooltip = function ( option ) {
389    return this.each(function () {
390      var $this = $(this)
391        , data = $this.data('tooltip')
392        , options = typeof option == 'object' && option
393      if (!data) $this.data('tooltip', (data = new Tooltip(this, options)))
394      if (typeof option == 'string') data[option]()
395    })
396  }
397
398  $.fn.tooltip.Constructor = Tooltip
399
400  $.fn.tooltip.defaults = {
401    animation: true
402  , placement: 'top'
403  , selector: false
404  , template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'
405  , trigger: 'hover focus'
406  , title: ''
407  , delay: 0
408  , html: false
409  , container: false
410  }
411
412
413 /* TOOLTIP NO CONFLICT
414  * =================== */
415
416  $.fn.tooltip.noConflict = function () {
417    $.fn.tooltip = old
418    return this
419  }
420
421}(window.jQuery);
422
423/* ========================================================
424 * bootstrap-tab.js v2.3.2
425 * http://getbootstrap.com/2.3.2/javascript.html#tabs
426 * ========================================================
427 * Copyright 2013 Twitter, Inc.
428 *
429 * Licensed under the Apache License, Version 2.0 (the "License");
430 * you may not use this file except in compliance with the License.
431 * You may obtain a copy of the License at
432 *
433 * http://www.apache.org/licenses/LICENSE-2.0
434 *
435 * Unless required by applicable law or agreed to in writing, software
436 * distributed under the License is distributed on an "AS IS" BASIS,
437 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
438 * See the License for the specific language governing permissions and
439 * limitations under the License.
440 * ======================================================== */
441
442
443!function ($) {
444
445  "use strict"; // jshint ;_;
446
447
448 /* TAB CLASS DEFINITION
449  * ==================== */
450
451  var Tab = function (element) {
452    this.element = $(element)
453  }
454
455  Tab.prototype = {
456
457    constructor: Tab
458
459  , show: function () {
460      var $this = this.element
461        , $ul = $this.closest('ul:not(.dropdown-menu)')
462        , selector = $this.attr('data-target')
463        , previous
464        , $target
465        , e
466
467      if (!selector) {
468        selector = $this.attr('href')
469        selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
470      }
471
472      if ( $this.parent('li').hasClass('active') ) return
473
474      previous = $ul.find('.active:last a')[0]
475
476      e = $.Event('show', {
477        relatedTarget: previous
478      })
479
480      $this.trigger(e)
481
482      if (e.isDefaultPrevented()) return
483
484      $target = $(selector)
485
486      this.activate($this.parent('li'), $ul)
487      this.activate($target, $target.parent(), function () {
488        $this.trigger({
489          type: 'shown'
490        , relatedTarget: previous
491        })
492      })
493    }
494
495  , activate: function ( element, container, callback) {
496      var $active = container.find('> .active')
497        , transition = callback
498            && $.support.transition
499            && $active.hasClass('fade')
500
501      function next() {
502        $active
503          .removeClass('active')
504          .find('> .dropdown-menu > .active')
505          .removeClass('active')
506
507        element.addClass('active')
508
509        if (transition) {
510          element[0].offsetWidth // reflow for transition
511          element.addClass('in')
512        } else {
513          element.removeClass('fade')
514        }
515
516        if ( element.parent('.dropdown-menu') ) {
517          element.closest('li.dropdown').addClass('active')
518        }
519
520        callback && callback()
521      }
522
523      transition ?
524        $active.one($.support.transition.end, next) :
525        next()
526
527      $active.removeClass('in')
528    }
529  }
530
531
532 /* TAB PLUGIN DEFINITION
533  * ===================== */
534
535  var old = $.fn.tab
536
537  $.fn.tab = function ( option ) {
538    return this.each(function () {
539      var $this = $(this)
540        , data = $this.data('tab')
541      if (!data) $this.data('tab', (data = new Tab(this)))
542      if (typeof option == 'string') data[option]()
543    })
544  }
545
546  $.fn.tab.Constructor = Tab
547
548
549 /* TAB NO CONFLICT
550  * =============== */
551
552  $.fn.tab.noConflict = function () {
553    $.fn.tab = old
554    return this
555  }
556
557
558 /* TAB DATA-API
559  * ============ */
560
561  $(document).on('click.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) {
562    e.preventDefault()
563    $(this).tab('show')
564  })
565
566}(window.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.