diff options
Diffstat (limited to 'docs/static/js/bootstrap-affix.js')
| -rwxr-xr-x | docs/static/js/bootstrap-affix.js | 104 | 
1 files changed, 104 insertions, 0 deletions
diff --git a/docs/static/js/bootstrap-affix.js b/docs/static/js/bootstrap-affix.js new file mode 100755 index 00000000..c49d6e9d --- /dev/null +++ b/docs/static/js/bootstrap-affix.js @@ -0,0 +1,104 @@ +/* ========================================================== + * bootstrap-affix.js v2.1.1 + * http://twitter.github.com/bootstrap/javascript.html#affix + * ========================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================== */ + + +!function ($) { + +  "use strict"; // jshint ;_; + + + /* AFFIX CLASS DEFINITION +  * ====================== */ + +  var Affix = function (element, options) { +    this.options = $.extend({}, $.fn.affix.defaults, options) +    this.$window = $(window).on('scroll.affix.data-api', $.proxy(this.checkPosition, this)) +    this.$element = $(element) +    this.checkPosition() +  } + +  Affix.prototype.checkPosition = function () { +    if (!this.$element.is(':visible')) return + +    var scrollHeight = $(document).height() +      , scrollTop = this.$window.scrollTop() +      , position = this.$element.offset() +      , offset = this.options.offset +      , offsetBottom = offset.bottom +      , offsetTop = offset.top +      , reset = 'affix affix-top affix-bottom' +      , affix + +    if (typeof offset != 'object') offsetBottom = offsetTop = offset +    if (typeof offsetTop == 'function') offsetTop = offset.top() +    if (typeof offsetBottom == 'function') offsetBottom = offset.bottom() + +    affix = this.unpin != null && (scrollTop + this.unpin <= position.top) ? +      false    : offsetBottom != null && (position.top + this.$element.height() >= scrollHeight - offsetBottom) ? +      'bottom' : offsetTop != null && scrollTop <= offsetTop ? +      'top'    : false + +    if (this.affixed === affix) return + +    this.affixed = affix +    this.unpin = affix == 'bottom' ? position.top - scrollTop : null + +    this.$element.removeClass(reset).addClass('affix' + (affix ? '-' + affix : '')) +  } + + + /* AFFIX PLUGIN DEFINITION +  * ======================= */ + +  $.fn.affix = function (option) { +    return this.each(function () { +      var $this = $(this) +        , data = $this.data('affix') +        , options = typeof option == 'object' && option +      if (!data) $this.data('affix', (data = new Affix(this, options))) +      if (typeof option == 'string') data[option]() +    }) +  } + +  $.fn.affix.Constructor = Affix + +  $.fn.affix.defaults = { +    offset: 0 +  } + + + /* AFFIX DATA-API +  * ============== */ + +  $(window).on('load', function () { +    $('[data-spy="affix"]').each(function () { +      var $spy = $(this) +        , data = $spy.data() + +      data.offset = data.offset || {} + +      data.offsetBottom && (data.offset.bottom = data.offsetBottom) +      data.offsetTop && (data.offset.top = data.offsetTop) + +      $spy.affix(data) +    }) +  }) + + +}(window.jQuery);
\ No newline at end of file  | 
