{"version":3,"sources":["home.js"],"names":["$","Tooltip","element","options","this","type","enabled","timeout","hoverState","$element","init","DEFAULTS","animation","placement","selector","template","trigger","title","delay","html","container","prototype","getOptions","triggers","split","i","length","on","proxy","toggle","eventIn","eventOut","enter","leave","_options","extend","fixTitle","getDefaults","data","show","hide","getDelegateOptions","defaults","each","key","value","obj","self","constructor","currentTarget","clearTimeout","setTimeout","e","Event","hasContent","isDefaultPrevented","that","$tip","tip","setContent","addClass","call","autoToken","autoPlace","test","replace","detach","css","top","left","display","appendTo","insertAfter","pos","getPosition","actualWidth","offsetWidth","actualHeight","offsetHeight","$parent","parent","orgPlacement","docScroll","document","documentElement","scrollTop","body","parentWidth","window","innerWidth","outerWidth","parentHeight","innerHeight","outerHeight","parentLeft","offset","height","right","removeClass","calculatedOffset","getCalculatedOffset","applyPlacement","complete","support","transition","hasClass","one","end","emulateTransitionEnd","width","marginTop","parseInt","marginLeft","isNaN","setOffset","using","props","Math","round","delta","replaceArrow","dimension","position","arrow","getTitle","find","$e","attr","el","getBoundingClientRect","o","$arrow","validate","parentNode","enable","disable","toggleEnabled","destroy","off","removeData","old","fn","tooltip","option","$this","Constructor","noConflict","jQuery","ready"],"mappings":"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","file":"home.js","sourcesContent":["\r\n\r\n\r\n+function ($) {\r\n 'use strict';\r\n\r\n // TOOLTIP PUBLIC CLASS DEFINITION\r\n // ===============================\r\n\r\n var Tooltip = function (element, options) {\r\n this.type =\r\n this.options =\r\n this.enabled =\r\n this.timeout =\r\n this.hoverState =\r\n this.$element = null\r\n\r\n this.init('tooltip', element, options)\r\n }\r\n\r\n Tooltip.DEFAULTS = {\r\n animation: true,\r\n placement: 'top',\r\n selector: false,\r\n template: '
',\r\n trigger: 'hover focus',\r\n title: '',\r\n delay: 0,\r\n html: false,\r\n container: false\r\n }\r\n\r\n Tooltip.prototype.init = function (type, element, options) {\r\n this.enabled = true\r\n this.type = type\r\n this.$element = $(element)\r\n this.options = this.getOptions(options)\r\n\r\n var triggers = this.options.trigger.split(' ')\r\n\r\n for (var i = triggers.length; i--;) {\r\n var trigger = triggers[i]\r\n\r\n if (trigger == 'click') {\r\n this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))\r\n } else if (trigger != 'manual') {\r\n var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin'\r\n var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'\r\n\r\n this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))\r\n this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))\r\n }\r\n }\r\n\r\n this.options.selector ?\r\n (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :\r\n this.fixTitle()\r\n }\r\n\r\n Tooltip.prototype.getDefaults = function () {\r\n return Tooltip.DEFAULTS\r\n }\r\n\r\n Tooltip.prototype.getOptions = function (options) {\r\n options = $.extend({}, this.getDefaults(), this.$element.data(), options)\r\n\r\n if (options.delay && typeof options.delay == 'number') {\r\n options.delay = {\r\n show: options.delay,\r\n hide: options.delay\r\n }\r\n }\r\n\r\n return options\r\n }\r\n\r\n Tooltip.prototype.getDelegateOptions = function () {\r\n var options = {}\r\n var defaults = this.getDefaults()\r\n\r\n this._options && $.each(this._options, function (key, value) {\r\n if (defaults[key] != value) options[key] = value\r\n })\r\n\r\n return options\r\n }\r\n\r\n Tooltip.prototype.enter = function (obj) {\r\n var self = obj instanceof this.constructor ?\r\n obj : $(obj.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + this.type)\r\n\r\n clearTimeout(self.timeout)\r\n\r\n self.hoverState = 'in'\r\n\r\n if (!self.options.delay || !self.options.delay.show) return self.show()\r\n\r\n self.timeout = setTimeout(function () {\r\n if (self.hoverState == 'in') self.show()\r\n }, self.options.delay.show)\r\n }\r\n\r\n Tooltip.prototype.leave = function (obj) {\r\n var self = obj instanceof this.constructor ?\r\n obj : $(obj.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + this.type)\r\n\r\n clearTimeout(self.timeout)\r\n\r\n self.hoverState = 'out'\r\n\r\n if (!self.options.delay || !self.options.delay.hide) return self.hide()\r\n\r\n self.timeout = setTimeout(function () {\r\n if (self.hoverState == 'out') self.hide()\r\n }, self.options.delay.hide)\r\n }\r\n\r\n Tooltip.prototype.show = function () {\r\n var e = $.Event('show.bs.' + this.type)\r\n\r\n if (this.hasContent() && this.enabled) {\r\n this.$element.trigger(e)\r\n\r\n if (e.isDefaultPrevented()) return\r\n var that = this;\r\n\r\n var $tip = this.tip()\r\n\r\n this.setContent()\r\n\r\n if (this.options.animation) $tip.addClass('fade')\r\n\r\n var placement = typeof this.options.placement == 'function' ?\r\n this.options.placement.call(this, $tip[0], this.$element[0]) :\r\n this.options.placement\r\n\r\n var autoToken = /\\s?auto?\\s?/i\r\n var autoPlace = autoToken.test(placement)\r\n if (autoPlace) placement = placement.replace(autoToken, '') || 'top'\r\n\r\n $tip\r\n .detach()\r\n .css({ top: 0, left: 0, display: 'block' })\r\n .addClass(placement)\r\n\r\n this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)\r\n\r\n var pos = this.getPosition()\r\n var actualWidth = $tip[0].offsetWidth\r\n var actualHeight = $tip[0].offsetHeight\r\n\r\n if (autoPlace) {\r\n var $parent = this.$element.parent()\r\n\r\n var orgPlacement = placement\r\n var docScroll = document.documentElement.scrollTop || document.body.scrollTop\r\n var parentWidth = this.options.container == 'body' ? window.innerWidth : $parent.outerWidth()\r\n var parentHeight = this.options.container == 'body' ? window.innerHeight : $parent.outerHeight()\r\n var parentLeft = this.options.container == 'body' ? 0 : $parent.offset().left\r\n\r\n placement = placement == 'bottom' && pos.top + pos.height + actualHeight - docScroll > parentHeight ? 'top' :\r\n placement == 'top' && pos.top - docScroll - actualHeight < 0 ? 'bottom' :\r\n placement == 'right' && pos.right + actualWidth > parentWidth ? 'left' :\r\n placement == 'left' && pos.left - actualWidth < parentLeft ? 'right' :\r\n placement\r\n\r\n $tip\r\n .removeClass(orgPlacement)\r\n .addClass(placement)\r\n }\r\n\r\n var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)\r\n\r\n this.applyPlacement(calculatedOffset, placement)\r\n this.hoverState = null\r\n\r\n var complete = function() {\r\n that.$element.trigger('shown.bs.' + that.type)\r\n }\r\n\r\n $.support.transition && this.$tip.hasClass('fade') ?\r\n $tip\r\n .one($.support.transition.end, complete)\r\n .emulateTransitionEnd(150) :\r\n complete()\r\n }\r\n }\r\n\r\n Tooltip.prototype.applyPlacement = function (offset, placement) {\r\n var replace\r\n var $tip = this.tip()\r\n var width = $tip[0].offsetWidth\r\n var height = $tip[0].offsetHeight\r\n\r\n // manually read margins because getBoundingClientRect includes difference\r\n var marginTop = parseInt($tip.css('margin-top'), 10)\r\n var marginLeft = parseInt($tip.css('margin-left'), 10)\r\n\r\n // we must check for NaN for ie 8/9\r\n if (isNaN(marginTop)) marginTop = 0\r\n if (isNaN(marginLeft)) marginLeft = 0\r\n\r\n offset.top = offset.top + marginTop\r\n offset.left = offset.left + marginLeft\r\n\r\n // $.fn.offset doesn't round pixel values\r\n // so we use setOffset directly with our own function B-0\r\n $.offset.setOffset($tip[0], $.extend({\r\n using: function (props) {\r\n $tip.css({\r\n top: Math.round(props.top),\r\n left: Math.round(props.left)\r\n })\r\n }\r\n }, offset), 0)\r\n\r\n $tip.addClass('in')\r\n\r\n // check to see if placing tip in new offset caused the tip to resize itself\r\n var actualWidth = $tip[0].offsetWidth\r\n var actualHeight = $tip[0].offsetHeight\r\n\r\n if (placement == 'top' && actualHeight != height) {\r\n replace = true\r\n offset.top = offset.top + height - actualHeight\r\n }\r\n\r\n if (/bottom|top/.test(placement)) {\r\n var delta = 0\r\n\r\n if (offset.left < 0) {\r\n delta = offset.left * -2\r\n offset.left = 0\r\n\r\n $tip.offset(offset)\r\n\r\n actualWidth = $tip[0].offsetWidth\r\n actualHeight = $tip[0].offsetHeight\r\n }\r\n\r\n this.replaceArrow(delta - width + actualWidth, actualWidth, 'left')\r\n } else {\r\n this.replaceArrow(actualHeight - height, actualHeight, 'top')\r\n }\r\n\r\n if (replace) $tip.offset(offset)\r\n }\r\n\r\n Tooltip.prototype.replaceArrow = function (delta, dimension, position) {\r\n this.arrow().css(position, delta ? (50 * (1 - delta / dimension) + '%') : '')\r\n }\r\n\r\n Tooltip.prototype.setContent = function () {\r\n var $tip = this.tip()\r\n var title = this.getTitle()\r\n\r\n $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)\r\n $tip.removeClass('fade in top bottom left right')\r\n }\r\n\r\n Tooltip.prototype.hide = function () {\r\n var that = this\r\n var $tip = this.tip()\r\n var e = $.Event('hide.bs.' + this.type)\r\n\r\n function complete() {\r\n if (that.hoverState != 'in') $tip.detach()\r\n that.$element.trigger('hidden.bs.' + that.type)\r\n }\r\n\r\n this.$element.trigger(e)\r\n\r\n if (e.isDefaultPrevented()) return\r\n\r\n $tip.removeClass('in')\r\n\r\n $.support.transition && this.$tip.hasClass('fade') ?\r\n $tip\r\n .one($.support.transition.end, complete)\r\n .emulateTransitionEnd(150) :\r\n complete()\r\n\r\n this.hoverState = null\r\n\r\n return this\r\n }\r\n\r\n Tooltip.prototype.fixTitle = function () {\r\n var $e = this.$element\r\n if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') {\r\n $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')\r\n }\r\n }\r\n\r\n Tooltip.prototype.hasContent = function () {\r\n return this.getTitle()\r\n }\r\n\r\n Tooltip.prototype.getPosition = function () {\r\n var el = this.$element[0]\r\n return $.extend({}, (typeof el.getBoundingClientRect == 'function') ? el.getBoundingClientRect() : {\r\n width: el.offsetWidth,\r\n height: el.offsetHeight\r\n }, this.$element.offset())\r\n }\r\n\r\n Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {\r\n return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } :\r\n placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :\r\n placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :\r\n /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }\r\n }\r\n\r\n Tooltip.prototype.getTitle = function () {\r\n var title\r\n var $e = this.$element\r\n var o = this.options\r\n\r\n title = $e.attr('data-original-title')\r\n || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)\r\n\r\n return title\r\n }\r\n\r\n Tooltip.prototype.tip = function () {\r\n return this.$tip = this.$tip || $(this.options.template)\r\n }\r\n\r\n Tooltip.prototype.arrow = function () {\r\n return this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow')\r\n }\r\n\r\n Tooltip.prototype.validate = function () {\r\n if (!this.$element[0].parentNode) {\r\n this.hide()\r\n this.$element = null\r\n this.options = null\r\n }\r\n }\r\n\r\n Tooltip.prototype.enable = function () {\r\n this.enabled = true\r\n }\r\n\r\n Tooltip.prototype.disable = function () {\r\n this.enabled = false\r\n }\r\n\r\n Tooltip.prototype.toggleEnabled = function () {\r\n this.enabled = !this.enabled\r\n }\r\n\r\n Tooltip.prototype.toggle = function (e) {\r\n var self = e ? $(e.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + this.type) : this\r\n self.tip().hasClass('in') ? self.leave(self) : self.enter(self)\r\n }\r\n\r\n Tooltip.prototype.destroy = function () {\r\n clearTimeout(this.timeout)\r\n this.hide().$element.off('.' + this.type).removeData('bs.' + this.type)\r\n }\r\n\r\n\r\n // TOOLTIP PLUGIN DEFINITION\r\n // =========================\r\n\r\n var old = $.fn.tooltip\r\n\r\n $.fn.tooltip = function (option) {\r\n return this.each(function () {\r\n var $this = $(this)\r\n var data = $this.data('bs.tooltip')\r\n var options = typeof option == 'object' && option\r\n\r\n if (!data && option == 'destroy') return\r\n if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))\r\n if (typeof option == 'string') data[option]()\r\n })\r\n }\r\n\r\n $.fn.tooltip.Constructor = Tooltip\r\n\r\n\r\n // TOOLTIP NO CONFLICT\r\n // ===================\r\n\r\n $.fn.tooltip.noConflict = function () {\r\n $.fn.tooltip = old\r\n return this\r\n }\r\n\r\n}(jQuery);\r\n\r\n\r\n\r\n$(document).ready(function() {\r\n\r\n\r\n $(\"body\").tooltip({\r\n selector: \"[data-toggle='tooltip']\",\r\n container: \"body\"\r\n });\r\n\r\n});\r\n"],"sourceRoot":"/source/"}