vendor: 29,460 bytes, lines 1-642
1/** 2 * jquery-bootstrap-scrolling-tabs 3 * @version v2.6.1 4 * @link https://github.com/mikejacobson/jquery-bootstrap-scrolling-tabs 5 * @author Mike Jacobson <[email protected]> 6 * @license MIT License, http://www.opensource.org/licenses/MIT 7 */ 8! function (e, t) { 9 "use strict"; 10 11 function n(e) { 12 this.stc = e 13 } 14 15 function r(e) { 16 this.stc = e 17 } 18 19 function a(e) { 20 this.stc = e 21 } 22 23 function o(t) { 24 var o = this; 25 o.$tabsContainer = t, o.instanceId = e.fn.scrollingTabs.nextInstanceId++, o.movableContainerLeftPos = 0, o.scrollArrowsVisible = !1, o.scrollToTabEdge = !1, o.disableScrollArrowsOnFullyScrolled = !1, o.reverseScroll = !1, o.widthMultiplier = 1, o.scrollMovement = new a(o), o.eventHandlers = new r(o), o.elementsHandler = new n(o) 26 } 27 28 function i(t, n, r) { 29 var a, o = n.tabs, 30 i = { 31 paneId: n.propPaneId, 32 title: n.propTitle, 33 active: n.propActive, 34 disabled: n.propDisabled, 35 content: n.propContent 36 }, 37 l = n.ignoreTabPanes, 38 c = o.length && void 0 !== o[0][i.content], 39 d = A.getNewElNavTabs(), 40 b = A.getNewElTabContent(), 41 f = l ? null : function () { 42 a.after(b) 43 }; 44 if (o.length) return o.forEach(function (e, t) { 45 var r = { 46 forceActiveTab: !0, 47 tabLiContent: n.tabsLiContent && n.tabsLiContent[t], 48 tabPostProcessor: n.tabsPostProcessors && n.tabsPostProcessors[t] 49 }; 50 A.getNewElTabLi(e, i, r).appendTo(d), !l && c && A.getNewElTabPane(e, i, r).appendTo(b) 51 }), a = s(d, n, r, f), a.appendTo(t), t.data({ 52 scrtabs: { 53 tabs: o, 54 propNames: i, 55 ignoreTabPanes: l, 56 hasTabContent: c, 57 tabsLiContent: n.tabsLiContent, 58 tabsPostProcessors: n.tabsPostProcessors, 59 scroller: a 60 } 61 }), a.find(".nav-tabs > li").each(function (t) { 62 L.storeDataOnLiEl(e(this), o, t) 63 }), t 64 } 65 66 function s(e, t, n, r) { 67 e.find('a[data-toggle="tab"]').removeData(T.DATA_KEY_BOOTSTRAP_TAB); 68 var a = A.getNewElScrollerElementWrappingNavTabsInstance(e.clone(!0), t), 69 i = new o(a), 70 s = e.data("scrtabs"); 71 return s ? s.scroller = a : e.data("scrtabs", { 72 scroller: a 73 }), e.replaceWith(a.css("visibility", "hidden")), t.tabClickHandler && "function" == typeof t.tabClickHandler && (a.hasTabClickHandler = !0, i.tabClickHandler = t.tabClickHandler), a.initTabs = function () { 74 i.initTabs(t, a, n, r) 75 }, a.scrollToActiveTab = function () { 76 i.scrollToActiveTab(t) 77 }, a.initTabs(), C(a, i), a 78 } 79 80 function l(e) { 81 var t = e.updatedTabsArray, 82 n = e.updatedTabsLiContent || [], 83 r = e.updatedTabsPostProcessors || [], 84 a = e.propNames, 85 o = e.ignoreTabPanes, 86 i = e.options, 87 s = e.$currTabLis, 88 l = e.$navTabs, 89 c = o ? null : e.$currTabContentPanesContainer, 90 d = o ? null : e.$currTabContentPanes, 91 b = !1; 92 return t.forEach(function (e, f) { 93 var C, v = s.find('a[href="#' + e[a.paneId] + '"]'), 94 u = f >= s.length; 95 v.length || (b = !0, i.tabLiContent = n[f], i.tabPostProcessor = r[f], v = A.getNewElTabLi(e, a, i), L.storeDataOnLiEl(v, t, f), u ? v.appendTo(l) : v.insertBefore(s.eq(f)), o || void 0 === e[a.content] || (C = A.getNewElTabPane(e, a, i), u ? C.appendTo(c) : C.insertBefore(d.eq(f)))) 96 }), b 97 } 98 99 function c(e) { 100 var t = e.tabLi, 101 n = e.ignoreTabPanes, 102 r = t.$li, 103 a = t.$contentPane, 104 o = t.origTabData, 105 i = t.newTabData, 106 s = e.propNames, 107 l = !1; 108 return o[s.title] !== i[s.title] && (r.find('a[role="tab"]').html(o[s.title] = i[s.title]), l = !0), o[s.disabled] !== i[s.disabled] && (i[s.disabled] ? (r.addClass("disabled"), r.find('a[role="tab"]').attr("data-toggle", "")) : (r.removeClass("disabled"), r.find('a[role="tab"]').attr("data-toggle", "tab")), o[s.disabled] = i[s.disabled], l = !0), e.options.forceActiveTab && (r[i[s.active] ? "addClass" : "removeClass"]("active"), a[i[s.active] ? "addClass" : "removeClass"]("active"), o[s.active] = i[s.active], l = !0), n || o[s.content] === i[s.content] || (a.html(o[s.content] = i[s.content]), l = !0), l 109 } 110 111 function d(e) { 112 var t, n = e.tabLi, 113 r = e.ignoreTabPanes, 114 a = n.$li; 115 return -1 === n.newIdx && (a.hasClass("active") && (t = L.getIndexOfClosestEnabledTab(e.$currTabLis, n.currDomIdx)) > -1 && (e.$currTabLis.eq(t).addClass("active"), r || e.$currTabContentPanes.eq(t).addClass("active")), a.remove(), r || n.$contentPane.remove(), !0) 116 } 117 118 function b(t) { 119 var n = t.$currTabLis, 120 r = t.updatedTabsArray, 121 a = t.propNames, 122 o = t.ignoreTabPanes, 123 i = [], 124 s = o ? null : []; 125 return !!L.didTabOrderChange(n, r, a) && (r.forEach(function (t) { 126 var r = t[a.paneId]; 127 i.push(n.find('a[role="tab"][href="#' + r + '"]').parent("li")), o || s.push(e("#" + r)) 128 }), t.$navTabs.append(i), o || t.$currTabContentPanesContainer.append(s), !0) 129 } 130 131 function f(t) { 132 var n = t.$currTabLis, 133 r = t.updatedTabsArray, 134 a = t.propNames, 135 o = !1; 136 return n.each(function (n) { 137 var i = e(this), 138 s = i.data("tab"), 139 l = L.getTabIndexByPaneId(r, a.paneId, s[a.paneId]), 140 b = l > -1 ? r[l] : null; 141 if (t.tabLi = { 142 $li: i, 143 currDomIdx: n, 144 newIdx: l, 145 $contentPane: A.getElTabPaneForLi(i), 146 origTabData: s, 147 newTabData: b 148 }, d(t)) return void(o = !0); 149 c(t) && (o = !0) 150 }), o 151 } 152 153 function C(t, n) { 154 function r(t) { 155 e(t.target).append(o.off(T.EVENTS.CLICK)) 156 } 157 158 function a(r) { 159 function a() { 160 var n = e(this), 161 r = n.parent("li"), 162 a = r.parent(".dropdown-menu"), 163 o = n.attr("href"); 164 r.hasClass("active") || (t.find("li.active").not(c).add(a.find("li.active")).removeClass("active"), c.add(r).addClass("active"), e(".tab-content .tab-pane.active").removeClass("active"), e(o).addClass("active")) 165 } 166 var i, s, l, c = e(r.target), 167 d = c.offset(), 168 b = t.find('li[role="presentation"].active'); 169 o = c.find(".dropdown-menu").attr("data-" + T.DATA_KEY_DDMENU_MODIFIED, !0), b[0] !== c[0] && o.find("li.active").removeClass("active"), o.on(T.EVENTS.CLICK, 'a[role="tab"]', a), e("body").append(o), i = o.width() + d.left, s = t.width() - (n.$slideRightArrow.outerWidth() + 1), l = d.left, i > s && (l -= i - s), o.css({ 170 display: "block", 171 top: d.top + c.outerHeight() - 2, 172 left: l 173 }) 174 } 175 var o; 176 t.on(T.EVENTS.DROPDOWN_MENU_SHOW, a).on(T.EVENTS.DROPDOWN_MENU_HIDE, r) 177 } 178 179 function v(e, t) { 180 var n = e.data().scrtabs, 181 r = n.scroller, 182 a = e.find(".scrtabs-tab-container .nav-tabs"), 183 o = e.find(".tab-content"), 184 i = !1, 185 s = { 186 options: t, 187 updatedTabsArray: n.tabs, 188 updatedTabsLiContent: n.tabsLiContent, 189 updatedTabsPostProcessors: n.tabsPostProcessors, 190 propNames: n.propNames, 191 ignoreTabPanes: n.ignoreTabPanes, 192 $navTabs: a, 193 $currTabLis: a.find("> li"), 194 $currTabContentPanesContainer: o, 195 $currTabContentPanes: o.find(".tab-pane") 196 }; 197 return l(s) && (i = !0), b(s) && (i = !0), f(s) && (i = !0), i && r.initTabs(), i 198 } 199 200 function u(t, n) { 201 t.data("scrtabs") && (!t.data("scrtabs").isWrapperOnly && v(t, n) || e("body").trigger(T.EVENTS.FORCE_REFRESH)) 202 } 203 204 function h() { 205 var t = e(this), 206 n = t.data("scrtabs"); 207 n && n.scroller.scrollToActiveTab() 208 } 209 210 function S() { 211 var n, r = e(this), 212 a = r.data("scrtabs"); 213 if (a) { 214 for ("self" === a.enableSwipingElement ? r.removeClass(T.CSS_CLASSES.ALLOW_SCROLLBAR) : "parent" === a.enableSwipingElement && r.closest(".scrtabs-tab-container").parent().removeClass(T.CSS_CLASSES.ALLOW_SCROLLBAR), a.scroller.off(T.EVENTS.DROPDOWN_MENU_SHOW).off(T.EVENTS.DROPDOWN_MENU_HIDE), a.scroller.find("[data-" + T.DATA_KEY_DDMENU_MODIFIED + "]").css({ 215 display: "", 216 left: "", 217 top: "" 218 }).off(T.EVENTS.CLICK).removeAttr("data-" + T.DATA_KEY_DDMENU_MODIFIED), a.scroller.hasTabClickHandler && r.find('a[data-toggle="tab"]').off(".scrtabs"), a.isWrapperOnly ? (n = r.parents(".scrtabs-tab-container"), n.length && n.replaceWith(r)) : (a.scroller && a.scroller.initTabs && (a.scroller.initTabs = null), r.find(".scrtabs-tab-container").add(".tab-content").remove()), r.removeData("scrtabs"); --e.fn.scrollingTabs.nextInstanceId >= 0;) e(t).off(T.EVENTS.WINDOW_RESIZE + e.fn.scrollingTabs.nextInstanceId); 219 e("body").off(T.EVENTS.FORCE_REFRESH) 220 } 221 } 222 var T = { 223 CONTINUOUS_SCROLLING_TIMEOUT_INTERVAL: 50, 224 SCROLL_OFFSET_FRACTION: 6, 225 DATA_KEY_DDMENU_MODIFIED: "scrtabsddmenumodified", 226 DATA_KEY_IS_MOUSEDOWN: "scrtabsismousedown", 227 DATA_KEY_BOOTSTRAP_TAB: "bs.tab", 228 CSS_CLASSES: { 229 BOOTSTRAP4: "scrtabs-bootstrap4", 230 RTL: "scrtabs-rtl", 231 SCROLL_ARROW_CLICK_TARGET: "scrtabs-click-target", 232 SCROLL_ARROW_DISABLE: "scrtabs-disable", 233 SCROLL_ARROW_WITH_CLICK_TARGET: "scrtabs-with-click-target" 234 }, 235 SLIDE_DIRECTION: { 236 LEFT: 1, 237 RIGHT: 2 238 }, 239 EVENTS: { 240 CLICK: "click.scrtabs", 241 DROPDOWN_MENU_HIDE: "hide.bs.dropdown.scrtabs", 242 DROPDOWN_MENU_SHOW: "show.bs.dropdown.scrtabs", 243 FORCE_REFRESH: "forcerefresh.scrtabs", 244 MOUSEDOWN: "mousedown.scrtabs", 245 MOUSEUP: "mouseup.scrtabs", 246 TABS_READY: "ready.scrtabs", 247 TOUCH_END: "touchend.scrtabs", 248 TOUCH_MOVE: "touchmove.scrtabs", 249 TOUCH_START: "touchstart.scrtabs", 250 WINDOW_RESIZE: "resize.scrtabs" 251 } 252 }; 253 ! function (t) { 254 var n = function (e, t, n) { 255 var r; 256 return function () { 257 function a() { 258 n || e.apply(o, i), r = null 259 } 260 var o = this, 261 i = arguments; 262 r ? clearTimeout(r) : n && e.apply(o, i), r = setTimeout(a, t || 100) 263 } 264 }; 265 e.fn[t] = function (e, r) { 266 var a = r || T.EVENTS.WINDOW_RESIZE; 267 return e ? this.bind(a, n(e)) : this.trigger(t) 268 } 269 }("smartresizeScrtabs"), 270 function (n) { 271 n.initElements = function (e) { 272 var t = this; 273 t.setElementReferences(e), t.setEventListeners(e) 274 }, n.listenForTouchEvents = function () { 275 var e, t, n, r = this, 276 a = r.stc, 277 o = a.scrollMovement, 278 i = T.EVENTS, 279 s = !1; 280 a.$movableContainer.on(i.TOUCH_START, function (n) { 281 s = !0, t = a.movableContainerLeftPos, e = n.originalEvent.changedTouches[0].pageX 282 }).on(i.TOUCH_END, function () { 283 s = !1 284 }).on(i.TOUCH_MOVE, function (r) { 285 if (s) { 286 var i = r.originalEvent.changedTouches[0].pageX, 287 l = i - e; 288 a.rtl && (l = -l); 289 var c; 290 n = t + l, n > 0 ? n = 0 : (c = o.getMinPos(), n < c && (n = c)), a.movableContainerLeftPos = n; 291 var d = a.rtl ? "right" : "left"; 292 a.$movableContainer.css(d, o.getMovableContainerCssLeftVal()), o.refreshScrollArrowsDisabledState() 293 } 294 }) 295 }, n.refreshAllElementSizes = function () { 296 var e, t = this, 297 n = t.stc, 298 r = n.scrollMovement, 299 a = n.scrollArrowsVisible, 300 o = { 301 didScrollToActiveTab: !1 302 }, 303 i = !1; 304 return t.setElementWidths(), t.setScrollArrowVisibility(), n.scrollArrowsVisible ? (e = r.getMinPos(), i = r.scrollToActiveTab({ 305 isOnWindowResize: !0 306 }), i || (r.refreshScrollArrowsDisabledState(), n.rtl ? n.movableContainerRightPos < e && r.incrementMovableContainerLeft(e) : n.movableContainerLeftPos < e && r.incrementMovableContainerRight(e)), o.didScrollToActiveTab = !0) : a && (n.movableContainerLeftPos = 0, r.slideMovableContainerToLeftPos()), o 307 }, n.setElementReferences = function (n) { 308 var r, a, o, i, s = this, 309 l = s.stc, 310 c = l.$tabsContainer; 311 l.isNavPills = !1, l.rtl && c.addClass(T.CSS_CLASSES.RTL), l.usingBootstrap4 && c.addClass(T.CSS_CLASSES.BOOTSTRAP4), l.$fixedContainer = c.find(".scrtabs-tabs-fixed-container"), r = l.$fixedContainer.prev(), a = l.$fixedContainer.next(), n.leftArrowContent && (o = r.find("." + T.CSS_CLASSES.SCROLL_ARROW_CLICK_TARGET)), n.rightArrowContent && (i = a.find("." + T.CSS_CLASSES.SCROLL_ARROW_CLICK_TARGET)), o && o.length ? r.addClass(T.CSS_CLASSES.SCROLL_ARROW_WITH_CLICK_TARGET) : o = r, i && i.length ? a.addClass(T.CSS_CLASSES.SCROLL_ARROW_WITH_CLICK_TARGET) : i = a, l.$movableContainer = c.find(".scrtabs-tabs-movable-container"), l.$tabsUl = c.find(".nav-tabs"), l.$tabsUl.length || (l.$tabsUl = c.find(".nav-pills"), l.$tabsUl.length && (l.isNavPills = !0)), l.$tabsLiCollection = l.$tabsUl.find("> li"), l.$slideLeftArrow = l.reverseScroll ? r : a, l.$slideLeftArrowClickTarget = l.reverseScroll ? o : i, l.$slideRightArrow = l.reverseScroll ? a : r, l.$slideRightArrowClickTarget = l.reverseScroll ? i : o, l.$scrollArrows = l.$slideLeftArrow.add(l.$slideRightArrow), l.$win = e(t) 312 }, n.setElementWidths = function () { 313 var e = this, 314 t = e.stc; 315 t.winWidth = t.$win.width(), t.scrollArrowsCombinedWidth = t.$slideLeftArrow.outerWidth() + t.$slideRightArrow.outerWidth(), e.setFixedContainerWidth(), e.setMovableContainerWidth() 316 }, n.setEventListeners = function (t) { 317 var n = this, 318 r = n.stc, 319 a = r.eventHandlers, 320 o = T.EVENTS, 321 i = o.WINDOW_RESIZE + r.instanceId; 322 t.enableSwiping && n.listenForTouchEvents(), r.$slideLeftArrowClickTarget.off(".scrtabs").on(o.MOUSEDOWN, function (e) { 323 a.handleMousedownOnSlideMovContainerLeftArrow.call(a, e) 324 }).on(o.MOUSEUP, function (e) { 325 a.handleMouseupOnSlideMovContainerLeftArrow.call(a, e) 326 }).on(o.CLICK, function (e) { 327 a.handleClickOnSlideMovContainerLeftArrow.call(a, e) 328 }), r.$slideRightArrowClickTarget.off(".scrtabs").on(o.MOUSEDOWN, function (e) { 329 a.handleMousedownOnSlideMovContainerRightArrow.call(a, e) 330 }).on(o.MOUSEUP, function (e) { 331 a.handleMouseupOnSlideMovContainerRightArrow.call(a, e) 332 }).on(o.CLICK, function (e) { 333 a.handleClickOnSlideMovContainerRightArrow.call(a, e) 334 }), r.tabClickHandler && r.$tabsLiCollection.find('a[data-toggle="tab"]').off(o.CLICK).on(o.CLICK, r.tabClickHandler), t.handleDelayedScrollbar && n.listenForDelayedScrollbar(), r.$win.off(i).smartresizeScrtabs(function (e) { 335 a.handleWindowResize.call(a, e) 336 }, i), e("body").on(T.EVENTS.FORCE_REFRESH, r.elementsHandler.refreshAllElementSizes.bind(r.elementsHandler)) 337 }, n.listenForDelayedScrollbar = function () { 338 var n = document.createElement("iframe"); 339 n.id = "scrtabs-scrollbar-resize-listener", n.style.cssText = "height: 0; background-color: transparent; margin: 0; padding: 0; overflow: hidden; border-width: 0; position: absolute; width: 100%;", n.onload = function () { 340 function r() { 341 try { 342 e(t).trigger("resize"), a = null 343 } catch (e) {} 344 } 345 var a; 346 n.contentWindow.addEventListener("resize", function () { 347 a && clearTimeout(a), a = setTimeout(r, 100) 348 }) 349 }, document.body.appendChild(n) 350 }, n.setFixedContainerWidth = function () { 351 var e = this, 352 t = e.stc, 353 n = t.$tabsContainer.get(0).getBoundingClientRect(); 354 t.fixedContainerWidth = n.width || n.right - n.left, t.fixedContainerWidth = t.fixedContainerWidth * t.widthMultiplier, t.$fixedContainer.width(t.fixedContainerWidth) 355 }, n.setFixedContainerWidthForHiddenScrollArrows = function () { 356 var e = this, 357 t = e.stc; 358 t.$fixedContainer.width(t.fixedContainerWidth) 359 }, n.setFixedContainerWidthForVisibleScrollArrows = function () { 360 var e = this, 361 t = e.stc; 362 t.$fixedContainer.width(t.fixedContainerWidth - t.scrollArrowsCombinedWidth) 363 }, n.setMovableContainerWidth = function () { 364 var t = this, 365 n = t.stc, 366 r = n.$tabsUl.find("> li"); 367 n.movableContainerWidth = 0, r.length && (r.each(function () { 368 var t = e(this), 369 r = 0; 370 n.isNavPills && (r = parseInt(t.css("margin-left"), 10) + parseInt(t.css("margin-right"), 10)), n.movableContainerWidth += t.outerWidth() + r 371 }), n.movableContainerWidth += 1, n.movableContainerWidth < n.fixedContainerWidth && (n.movableContainerWidth = n.fixedContainerWidth)), n.$movableContainer.width(n.movableContainerWidth) 372 }, n.setScrollArrowVisibility = function () { 373 var e = this, 374 t = e.stc, 375 n = t.movableContainerWidth > t.fixedContainerWidth; 376 n && !t.scrollArrowsVisible ? (t.$scrollArrows.show(), t.scrollArrowsVisible = !0) : !n && t.scrollArrowsVisible && (t.$scrollArrows.hide(), t.scrollArrowsVisible = !1), t.scrollArrowsVisible ? e.setFixedContainerWidthForVisibleScrollArrows() : e.setFixedContainerWidthForHiddenScrollArrows() 377 } 378 }(n.prototype), 379 function (e) { 380 e.handleClickOnSlideMovContainerLeftArrow = function () { 381 this.stc.scrollMovement.incrementMovableContainerLeft() 382 }, e.handleClickOnSlideMovContainerRightArrow = function () { 383 this.stc.scrollMovement.incrementMovableContainerRight() 384 }, e.handleMousedownOnSlideMovContainerLeftArrow = function () { 385 var e = this, 386 t = e.stc; 387 t.$slideLeftArrowClickTarget.data(T.DATA_KEY_IS_MOUSEDOWN, !0), t.scrollMovement.continueSlideMovableContainerLeft() 388 }, e.handleMousedownOnSlideMovContainerRightArrow = function () { 389 var e = this, 390 t = e.stc; 391 t.$slideRightArrowClickTarget.data(T.DATA_KEY_IS_MOUSEDOWN, !0), t.scrollMovement.continueSlideMovableContainerRight() 392 }, e.handleMouseupOnSlideMovContainerLeftArrow = function () { 393 this.stc.$slideLeftArrowClickTarget.data(T.DATA_KEY_IS_MOUSEDOWN, !1) 394 }, e.handleMouseupOnSlideMovContainerRightArrow = function () { 395 this.stc.$slideRightArrowClickTarget.data(T.DATA_KEY_IS_MOUSEDOWN, !1) 396 }, e.handleWindowResize = function () { 397 var e = this, 398 t = e.stc, 399 n = t.$win.width(); 400 if (n === t.winWidth) return !1; 401 t.winWidth = n, t.elementsHandler.refreshAllElementSizes() 402 } 403 }(r.prototype), 404 function (t) { 405 t.continueSlideMovableContainerLeft = function () { 406 var e = this, 407 t = e.stc; 408 setTimeout(function () { 409 t.movableContainerLeftPos <= e.getMinPos() || !t.$slideLeftArrowClickTarget.data(T.DATA_KEY_IS_MOUSEDOWN) || e.incrementMovableContainerLeft() || e.continueSlideMovableContainerLeft() 410 }, T.CONTINUOUS_SCROLLING_TIMEOUT_INTERVAL) 411 }, t.continueSlideMovableContainerRight = function () { 412 var e = this, 413 t = e.stc; 414 setTimeout(function () { 415 t.movableContainerLeftPos >= 0 || !t.$slideRightArrowClickTarget.data(T.DATA_KEY_IS_MOUSEDOWN) || e.incrementMovableContainerRight() || e.continueSlideMovableContainerRight() 416 }, T.CONTINUOUS_SCROLLING_TIMEOUT_INTERVAL) 417 }, t.decrementMovableContainerLeftPos = function (e) { 418 var t = this, 419 n = t.stc; 420 n.movableContainerLeftPos -= n.fixedContainerWidth / T.SCROLL_OFFSET_FRACTION, n.movableContainerLeftPos < e ? n.movableContainerLeftPos = e : n.scrollToTabEdge && (t.setMovableContainerLeftPosToTabEdge(T.SLIDE_DIRECTION.LEFT), n.movableContainerLeftPos < e && (n.movableContainerLeftPos = e)) 421 }, t.disableSlideLeftArrow = function () { 422 var e = this, 423 t = e.stc; 424 t.disableScrollArrowsOnFullyScrolled && t.scrollArrowsVisible && t.$slideLeftArrow.addClass(T.CSS_CLASSES.SCROLL_ARROW_DISABLE) 425 }, t.disableSlideRightArrow = function () { 426 var e = this, 427 t = e.stc; 428 t.disableScrollArrowsOnFullyScrolled && t.scrollArrowsVisible && t.$slideRightArrow.addClass(T.CSS_CLASSES.SCROLL_ARROW_DISABLE) 429 }, t.enableSlideLeftArrow = function () { 430 var e = this, 431 t = e.stc; 432 t.disableScrollArrowsOnFullyScrolled && t.scrollArrowsVisible && t.$slideLeftArrow.removeClass(T.CSS_CLASSES.SCROLL_ARROW_DISABLE) 433 }, t.enableSlideRightArrow = function () { 434 var e = this, 435 t = e.stc; 436 t.disableScrollArrowsOnFullyScrolled && t.scrollArrowsVisible && t.$slideRightArrow.removeClass(T.CSS_CLASSES.SCROLL_ARROW_DISABLE) 437 }, t.getMinPos = function () { 438 var e = this, 439 t = e.stc; 440 return t.scrollArrowsVisible ? t.fixedContainerWidth - t.movableContainerWidth - t.scrollArrowsCombinedWidth : 0 441 }, t.getMovableContainerCssLeftVal = function () { 442 var e = this, 443 t = e.stc; 444 return 0 === t.movableContainerLeftPos ? "0" : t.movableContainerLeftPos + "px" 445 }, t.incrementMovableContainerLeft = function () { 446 var e = this, 447 t = e.stc, 448 n = e.getMinPos(); 449 return e.decrementMovableContainerLeftPos(n), e.slideMovableContainerToLeftPos(), e.enableSlideRightArrow(), t.movableContainerLeftPos === n 450 }, t.incrementMovableContainerRight = function (e) { 451 var t = this, 452 n = t.stc; 453 return e ? n.movableContainerLeftPos = e : (n.movableContainerLeftPos += n.fixedContainerWidth / T.SCROLL_OFFSET_FRACTION, n.movableContainerLeftPos > 0 ? n.movableContainerLeftPos = 0 : n.scrollToTabEdge && t.setMovableContainerLeftPosToTabEdge(T.SLIDE_DIRECTION.RIGHT)), t.slideMovableContainerToLeftPos(), t.enableSlideLeftArrow(), 0 === n.movableContainerLeftPos 454 }, t.refreshScrollArrowsDisabledState = function () { 455 var e = this, 456 t = e.stc; 457 if (t.disableScrollArrowsOnFullyScrolled && t.scrollArrowsVisible) { 458 if (t.movableContainerLeftPos >= 0) return e.disableSlideRightArrow(), void e.enableSlideLeftArrow(); 459 if (t.movableContainerLeftPos <= e.getMinPos()) return e.disableSlideLeftArrow(), void e.enableSlideRightArrow(); 460 e.enableSlideLeftArrow(), e.enableSlideRightArrow() 461 } 462 }, t.scrollToActiveTab = function () { 463 var e, t, n, r, a, o, i, s, l, c = this, 464 d = c.stc; 465 if (d.scrollArrowsVisible && (d.usingBootstrap4 ? (t = d.$tabsUl.find("li > .nav-link.active"), t.length && (e = t.parent())) : e = d.$tabsUl.find("li.active"), e && e.length)) { 466 if (l = d.$slideRightArrow.outerWidth(), o = e.outerWidth(), n = e.offset().left - d.$fixedContainer.offset().left, r = n + o, a = d.fixedContainerWidth - l, d.rtl) { 467 if (d.$slideLeftArrow.outerWidth(), n < 0) return d.movableContainerLeftPos += n, c.slideMovableContainerToLeftPos(), !0; 468 if (r > a) return d.movableContainerLeftPos += r - a + 2 * l, c.slideMovableContainerToLeftPos(), !0 469 } else { 470 if (r > a) return i = r - a + l, s = d.fixedContainerWidth / 2, i += s - o / 2, d.movableContainerLeftPos -= i, c.slideMovableContainerToLeftPos(), !0; 471 if (d.$slideLeftArrow.outerWidth(), n < 0) return s = d.fixedContainerWidth / 2, d.movableContainerLeftPos += -n + s - o / 2, c.slideMovableContainerToLeftPos(), !0 472 } 473 return !1 474 } 475 }, t.setMovableContainerLeftPosToTabEdge = function (t) { 476 var n = this, 477 r = n.stc, 478 a = -r.movableContainerLeftPos, 479 o = 0; 480 r.$tabsLiCollection.each(function () { 481 var n = e(this).width(); 482 if ((o += n) > a) return r.movableContainerLeftPos = t === T.SLIDE_DIRECTION.RIGHT ? -(o - n) : -o, !1 483 }) 484 }, t.slideMovableContainerToLeftPos = function () { 485 var e, t = this, 486 n = t.stc, 487 r = t.getMinPos(); 488 n.movableContainerLeftPos > 0 ? n.movableContainerLeftPos = 0 : n.movableContainerLeftPos < r && (n.movableContainerLeftPos = r), n.movableContainerLeftPos = n.movableContainerLeftPos / 1, e = t.getMovableContainerCssLeftVal(), t.performingSlideAnim = !0; 489 var a = n.rtl ? { 490 right: e 491 } : { 492 left: e 493 }; 494 n.$movableContainer.stop().animate(a, "slow", function () { 495 var e = t.getMinPos(); 496 t.performingSlideAnim = !1, n.movableContainerLeftPos < e ? (t.decrementMovableContainerLeftPos(e), a = n.rtl ? { 497 right: t.getMovableContainerCssLeftVal() 498 } : { 499 left: t.getMovableContainerCssLeftVal() 500 }, n.$movableContainer.stop().animate(a, "fast", function () { 501 t.refreshScrollArrowsDisabledState() 502 })) : t.refreshScrollArrowsDisabledState() 503 }) 504 } 505 }(a.prototype), 506 function (t) { 507 t.initTabs = function (t, n, r, a) { 508 function o() { 509 n.find(".nav-tabs").show(), l.initElements(t), l.refreshAllElementSizes(), n.css("visibility", "visible"), a && a(), r && r() 510 } 511 var i, s = this, 512 l = s.elementsHandler; 513 t.enableRtlSupport && "rtl" === e("html").attr("dir") && (s.rtl = !0), t.scrollToTabEdge && (s.scrollToTabEdge = !0), t.disableScrollArrowsOnFullyScrolled && (s.disableScrollArrowsOnFullyScrolled = !0), t.reverseScroll && (s.reverseScroll = !0), 1 !== t.widthMultiplier && (i = Number(t.widthMultiplier), isNaN(i) || (s.widthMultiplier = i)), "4" === t.bootstrapVersion.toString().charAt(0) && (s.usingBootstrap4 = !0), setTimeout(o, 100) 514 }, t.scrollToActiveTab = function (e) { 515 this.scrollMovement.scrollToActiveTab(e) 516 } 517 }(o.prototype); 518 var A = function () { 519 function t(t) { 520 return e(t.find("a").attr("href")) 521 } 522 523 function n() { 524 return e('<ul class="nav nav-tabs" role="tablist"></ul>') 525 } 526 527 function r(t, n) { 528 var r = e('<div class="scrtabs-tab-container"></div>'), 529 a = n.leftArrowContent || '<div class="scrtabs-tab-scroll-arrow scrtabs-tab-scroll-arrow-left"><span class="' + n.cssClassLeftArrow + '"></span></div>', 530 o = e(a), 531 i = n.rightArrowContent || '<div class="scrtabs-tab-scroll-arrow scrtabs-tab-scroll-arrow-right"><span class="' + n.cssClassRightArrow + '"></span></div>', 532 s = e(i), 533 l = e('<div class="scrtabs-tabs-fixed-container"></div>'), 534 c = e('<div class="scrtabs-tabs-movable-container"></div>'); 535 return n.disableScrollArrowsOnFullyScrolled && o.add(s).addClass(T.CSS_CLASSES.SCROLL_ARROW_DISABLE), r.append(o, l.append(c.append(t)), s) 536 } 537 538 function a(t, n) { 539 return e('<a role="tab" data-toggle="tab"></a>').attr("href", "#" + t[n.paneId]).html(t[n.title]) 540 } 541 542 function o() { 543 return e('<div class="tab-content"></div>') 544 } 545 546 function i(t, n, r) { 547 var o = r.tabLiContent || '<li role="presentation" class=""></li>', 548 i = e(o), 549 s = a(t, n).appendTo(i); 550 return t[n.disabled] ? (i.addClass("disabled"), s.attr("data-toggle", "")) : r.forceActiveTab && t[n.active] && i.addClass("active"), r.tabPostProcessor && r.tabPostProcessor(i, s), i 551 } 552 553 function s(t, n, r) { 554 var a = e('<div role="tabpanel" class="tab-pane"></div>').attr("id", t[n.paneId]).html(t[n.content]); 555 return r.forceActiveTab && t[n.active] && a.addClass("active"), a 556 } 557 return { 558 getElTabPaneForLi: t, 559 getNewElNavTabs: n, 560 getNewElScrollerElementWrappingNavTabsInstance: r, 561 getNewElTabAnchor: a, 562 getNewElTabContent: o, 563 getNewElTabLi: i, 564 getNewElTabPane: s 565 } 566 }(), 567 L = function () { 568 function t(t, n, a) { 569 var o = !1; 570 return t.each(function (t) { 571 var i = r(n, a.paneId, e(this).data("tab")[a.paneId]); 572 if (i > -1 && i !== t) return o = !0, !1 573 }), o 574 } 575 576 function n(e, t) { 577 for (var n = e.length - 1, r = -1, a = 0, o = 0; - 1 === r && o >= 0;)((o = t + ++a) <= n && !e.eq(o).hasClass("disabled") || (o = t - a) >= 0 && !e.eq(o).hasClass("disabled")) && (r = o); 578 return r 579 } 580 581 function r(e, t, n) { 582 var r = -1; 583 return e.some(function (e, a) { 584 if (e[t] === n) return r = a, !0 585 }), r 586 } 587 588 function a(t, n, r) { 589 t.data({ 590 tab: e.extend({}, n[r]), 591 index: r 592 }) 593 } 594 return { 595 didTabOrderChange: t, 596 getIndexOfClosestEnabledTab: n, 597 getTabIndexByPaneId: r, 598 storeDataOnLiEl: a 599 } 600 }(), 601 E = { 602 destroy: function () { 603 return this.each(S) 604 }, 605 init: function (t) { 606 var n = this, 607 r = n.length - 1, 608 a = e.extend({}, e.fn.scrollingTabs.defaults, t || {}); 609 return a.tabs ? n.each(function (t) { 610 i(e(this), a, t < r ? null : function () { 611 n.trigger(T.EVENTS.TABS_READY) 612 }) 613 }) : n.each(function (t) { 614 var o = { 615 isWrapperOnly: !0 616 }; 617 s(e(this).data({ 618 scrtabs: o 619 }), a, t < r ? null : function () { 620 n.trigger(T.EVENTS.TABS_READY) 621 }) 622 }) 623 }, 624 refresh: function (t) { 625 var n = this, 626 r = e.extend({}, e.fn.scrollingTabs.defaults, t || {}); 627 return n.each(function () { 628 u(e(this), r) 629 }) 630 }, 631 scrollToActiveTab: function () { 632 return this.each(h) 633 } 634 }; 635 e.fn.scrollingTabs = function (t) { 636 return E[t] ? E[t].apply(this, Array.prototype.slice.call(arguments, 1)) : t && "object" != typeof t ? void e.error("Method " + t + " does not exist on $.scrollingTabs.") : E.init.apply(this, arguments) 637 }, e.fn.scrollingTabs.nextInstanceId = 0, e.fn.scrollingTabs.defaults = { 638 tabs: null, 639 propPaneId: "paneId", 640 propTitle: "title", 641 propActive: "active", 642 p
642ropDisabled: "disabled", 643 propContent: "content", 644 ignoreTabPanes: !1, 645 scrollToTabEdge: !1, 646 disableScrollArrowsOnFullyScrolled: !1, 647 forceActiveTab: !1, 648 reverseScroll: !1, 649 widthMultiplier: 1, 650 tabClickHandler: null, 651 cssClassLeftArrow: "glyphicon glyphicon-chevron-left", 652 cssClassRightArrow: "glyphicon glyphicon-chevron-right", 653 leftArrowContent: "", 654 rightArrowContent: "", 655 tabsLiContent: null, 656 tabsPostProcessors: null, 657 enableSwiping: !1, 658 enableRtlSupport: !1, 659 handleDelayedScrollbar: !1, 660 bootstrapVersion: 3 661 } 662}(jQuery, window);
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.