PageSourceSearch

https://rasoulallah.net/assets/plugins/jquery.scrolling-tabs.min.js

js rasoulallah.net collected 2026-09-24 09:42:47 UTC 30,060 bytes, 662 lines download raw bytes

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.