PageSourceSearch

https://onetarget.ru/lk/template/inc/global/vendor/asscrollbar/jquery-asScrollbar.js

js onetarget.ru collected 2026-10-06 22:54:36 UTC 38,904 bytes, 1,343 lines download raw bytes

1/**
2* jQuery asScrollbar v0.5.7
3* https://github.com/amazingSurge/jquery-asScrollbar
4*
5* Copyright (c) amazingSurge
6* Released under the LGPL-3.0 license
7*/
8(function(global, factory) {
9  if (typeof define === 'function' && define.amd) {
10    define(['jquery'], factory);
11  } else if (typeof exports !== 'undefined') {
12    factory(require('jquery'));
13  } else {
14    var mod = {
15      exports: {}
16    };
17    factory(global.jQuery);
18    global.jqueryAsScrollbarEs = mod.exports;
19  }
20})(this, function(_jquery) {
21  'use strict';
22
23  var _jquery2 = _interopRequireDefault(_jquery);
24
25  function _interopRequireDefault(obj) {
26    return obj && obj.__esModule
27      ? obj
28      : {
29          default: obj
30        };
31  }
32
33  var _typeof =
34    typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol'
35      ? function(obj) {
36          return typeof obj;
37        }
38      : function(obj) {
39          return obj &&
40          typeof Symbol === 'function' &&
41          obj.constructor === Symbol &&
42          obj !== Symbol.prototype
43            ? 'symbol'
44            : typeof obj;
45        };
46
47  function _classCallCheck(instance, Constructor) {
48    if (!(instance instanceof Constructor)) {
49      throw new TypeError('Cannot call a class as a function');
50    }
51  }
52
53  var _createClass = (function() {
54    function defineProperties(target, props) {
55      for (var i = 0; i < props.length; i++) {
56        var descriptor = props[i];
57        descriptor.enumerable = descriptor.enumerable || false;
58        descriptor.configurable = true;
59        if ('value' in descriptor) descriptor.writable = true;
60        Object.defineProperty(target, descriptor.key, descriptor);
61      }
62    }
63
64    return function(Constructor, protoProps, staticProps) {
65      if (protoProps) defineProperties(Constructor.prototype, protoProps);
66      if (staticProps) defineProperties(Constructor, staticProps);
67      return Constructor;
68    };
69  })();
70
71  var DEFAULTS = {
72    namespace: 'asScrollbar',
73
74    skin: null,
75    handleSelector: null,
76    handleTemplate: '<div class="{{handle}}"></div>',
77
78    barClass: null,
79    handleClass: null,
80
81    disabledClass: 'is-disabled',
82    draggingClass: 'is-dragging',
83    hoveringClass: 'is-hovering',
84
85    direction: 'vertical',
86
87    barLength: null,
88    handleLength: null,
89
90    minHandleLength: 30,
91    maxHandleLength: null,
92
93    mouseDrag: true,
94    touchDrag: true,
95    pointerDrag: true,
96    clickMove: true,
97    clickMoveStep: 0.3, // 0 - 1
98    mousewheel: true,
99    mousewheelSpeed: 50,
100
101    keyboard: true,
102
103    useCssTransforms3d: true,
104    useCssTransforms: true,
105    useCssTransitions: true,
106
107    duration: '500',
108    easing: 'ease' // linear, ease-in, ease-out, ease-in-out
109  };
110
111  var easingBezier = function easingBezier(mX1, mY1, mX2, mY2) {
112    'use strict';
113
114    var a = function a(aA1, aA2) {
115      return 1.0 - 3.0 * aA2 + 3.0 * aA1;
116    };
117
118    var b = function b(aA1, aA2) {
119      return 3.0 * aA2 - 6.0 * aA1;
120    };
121
122    var c = function c(aA1) {
123      return 3.0 * aA1;
124    };
125
126    // Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.
127    var calcBezier = function calcBezier(aT, aA1, aA2) {
128      return ((a(aA1, aA2) * aT + b(aA1, aA2)) * aT + c(aA1)) * aT;
129    };
130
131    // Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.
132    var getSlope = function getSlope(aT, aA1, aA2) {
133      return 3.0 * a(aA1, aA2) * aT * aT + 2.0 * b(aA1, aA2) * aT + c(aA1);
134    };
135
136    var getTForX = function getTForX(aX) {
137      // Newton raphson iteration
138      var aGuessT = aX;
139      for (var i = 0; i < 4; ++i) {
140        var currentSlope = getSlope(aGuessT, mX1, mX2);
141        if (currentSlope === 0.0) {
142          return aGuessT;
143        }
144        var currentX = calcBezier(aGuessT, mX1, mX2) - aX;
145        aGuessT -= currentX / currentSlope;
146      }
147      return aGuessT;
148    };
149
150    if (mX1 === mY1 && mX2 === mY2) {
151      return {
152        css: 'linear',
153        fn: function fn(aX) {
154          return aX;
155        }
156      };
157    }
158
159    return {
160      css: 'cubic-bezier(' + mX1 + ',' + mY1 + ',' + mX2 + ',' + mY2 + ')',
161      fn: function fn(aX) {
162        return calcBezier(getTForX(aX), mY1, mY2);
163      }
164    };
165  };
166
167  var EASING = {
168    ease: easingBezier(0.25, 0.1, 0.25, 1.0),
169    linear: easingBezier(0.0, 0.0, 1.0, 1.0),
170    'ease-in': easingBezier(0.42, 0.0, 1.0, 1.0),
171    'ease-out': easingBezier(0.0, 0.0, 0.58, 1.0),
172    'ease-in-out': easingBezier(0.42, 0.0, 0.58, 1.0)
173  };
174
175  if (!Date.now) {
176    Date.now = function() {
177      return new Date().getTime();
178    };
179  }
180
181  var vendors = ['webkit', 'moz'];
182  for (var i = 0; i < vendors.length && !window.requestAnimationFrame; ++i) {
183    var vp = vendors[i];
184    window.requestAnimationFrame = window[vp + 'RequestAnimationFrame'];
185    window.cancelAnimationFrame =
186      window[vp + 'CancelAnimationFrame'] ||
187      window[vp + 'CancelRequestAnimationFrame'];
188  }
189
190  if (
191    /iP(ad|hone|od).*OS (6|7|8)/.test(window.navigator.userAgent) ||
192    !window.requestAnimationFrame ||
193    !window.cancelAnimationFrame
194  ) {
195    var lastTime = 0;
196    window.requestAnimationFrame = function(callback) {
197      var now = getTime();
198      var timePlus = 16;
199      var nextTime = Math.max(lastTime + timePlus, now);
200      return setTimeout(function() {
201        callback((lastTime = nextTime));
202      }, nextTime - now);
203    };
204    window.cancelAnimationFrame = clearTimeout;
205  }
206
207  function isPercentage(n) {
208    return typeof n === 'string' && n.indexOf('%') !== -1;
209  }
210
211  function convertPercentageToFloat(n) {
212    return parseFloat(n.slice(0, -1) / 100, 10);
213  }
214
215  function convertMatrixToArray(value) {
216    if (value && value.substr(0, 6) === 'matrix') {
217      return value
218        .replace(/^.*\((.*)\)$/g, '$1')
219        .replace(/px/g, '')
220        .split(/, +/);
221    }
222    return false;
223  }
224
225  function getTime() {
226    if (typeof window.performance !== 'undefined' && window.performance.now) {
227      return window.performance.now();
228    }
229    return Date.now();
230  }
231
232  /**
233   * Css features detect
234   **/
235  var support = {};
236
237  (function(support) {
238    /**
239     * Borrowed from Owl carousel
240     **/
241    'use strict';
242
243    var events = {
244        transition: {
245          end: {
246            WebkitTransition: 'webkitTransitionEnd',
247            MozTransition: 'transitionend',
248            OTransition: 'oTransitionEnd',
249            transition: 'transitionend'
250          }
251        },
252        animation: {
253          end: {
254            WebkitAnimation: 'webkitAnimationEnd',
255            MozAnimation: 'animationend',
256            OAnimation: 'oAnimationEnd',
257            animation: 'animationend'
258          }
259        }
260      },
261      prefixes = ['webkit', 'Moz', 'O', 'ms'],
262      style = (0, _jquery2.default)('<support>').get(0).style,
263      tests = {
264        csstransforms: function csstransforms() {
265          return Boolean(test('transform'));
266        },
267        csstransforms3d: function csstransforms3d() {
268          return Boolean(test('perspective'));
269        },
270        csstransitions: function csstransitions() {
271          return Boolean(test('transition'));
272        },
273        cssanimations: function cssanimations() {
274          return Boolean(test('animation'));
275        }
276      };
277
278    var test = function test(property, prefixed) {
279      var result = false,
280        upper = property.charAt(0).toUpperCase() + property.slice(1);
281
282      if (style[property] !== undefined) {
283        result = property;
284      }
285      if (!result) {
286        _jquery2.default.each(prefixes, function(i, prefix) {
287          if (style[prefix + upper] !== undefined) {
288            result = '-' + prefix.toLowerCase() + '-' + upper;
289            return false;
290          }
291          return true;
292        });
293      }
294
295      if (prefixed) {
296        return result;
297      }
298      if (result) {
299        return true;
300      }
301      return false;
302    };
303
304    var prefixed = function prefixed(property) {
305      return test(property, true);
306    };
307
308    if (tests.csstransitions()) {
309      /*eslint no-new-wrappers: "off"*/
310      support.transition = new String(prefixed('transition'));
311      support.transition.end = events.transition.end[support.transition];
312    }
313
314    if (tests.cssanimations()) {
315      /*eslint no-new-wrappers: "off"*/
316      support.animation = new String(prefixed('animation'));
317      support.animation.end = events.animation.end[support.animation];
318    }
319
320    if (tests.csstransforms()) {
321      /*eslint no-new-wrappers: "off"*/
322      support.transform = new String(prefixed('transform'));
323      support.transform3d = tests.csstransforms3d();
324    }
325
326    if (
327      'ontouchstart' in window ||
328      (window.DocumentTouch && document instanceof window.DocumentTouch)
329    ) {
330      support.touch = true;
331    } else {
332      support.touch = false;
333    }
334
335    if (window.PointerEvent || window.MSPointerEvent) {
336      support.pointer = true;
337    } else {
338      support.pointer = false;
339    }
340
341    support.prefixPointerEvent = function(pointerEvent) {
342      return window.MSPointerEvent
343        ? 'MSPointer' +
344          pointerEvent.charAt(9).toUpperCase() +
345          pointerEvent.substr(10)
346        : pointerEvent;
347    };
348  })(support);
349
350  var NAMESPACE$1 = 'asScrollbar';
351
352  /**
353   * Plugin constructor
354   **/
355
356  var asScrollbar = (function() {
357    function asScrollbar(bar) {
358      var options =
359        arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
360
361      _classCallCheck(this, asScrollbar);
362
363      this.$bar = (0, _jquery2.default)(bar);
364      options = this.options = _jquery2.default.extend(
365        {},
366        DEFAULTS,
367        options,
368        this.$bar.data('options') || {}
369      );
370      bar.direction = this.options.direction;
371
372      this.classes = {
373        directionClass: options.namespace + '-' + options.direction,
374        barClass: options.barClass ? options.barClass : options.namespace,
375        handleClass: options.handleClass
376          ? options.handleClass
377          : options.namespace + '-handle'
378      };
379
380      if (this.options.direction === 'vertical') {
381        this.attributes = {
382          axis: 'Y',
383          position: 'top',
384          length: 'height',
385          clientLength: 'clientHeight'
386        };
387      } else if (this.options.direction === 'horizontal') {
388        this.attributes = {
389          axis: 'X',
390          position: 'left',
391          length: 'width',
392          clientLength: 'clientWidth'
393        };
394      }
395
396      // Current state information.
397      this._states = {};
398
399      // Current state information for the drag operation.
400      this._drag = {
401        time: null,
402        pointer: null
403      };
404
405      // Current timeout
406      this._frameId = null;
407
408      // Current handle position
409      this.handlePosition = 0;
410
411      this.easing = EASING[this.options.easing] || EASING.ease;
412
413      this.init();
414    }
415
416    _createClass(
417      asScrollbar,
418      [
419        {
420          key: 'init',
421          value: function init() {
422            var options = this.options;
423
424            this.$handle = this.$bar.find(this.options.handleSelector);
425            if (this.$handle.length === 0) {
426              this.$handle = (0, _jquery2.default)(
427                options.handleTemplate.replace(
428                  /\{\{handle\}\}/g,
429                  this.classes.handleClass
430                )
431              ).appendTo(this.$bar);
432            } else {
433              this.$handle.addClass(this.classes.handleClass);
434            }
435
436            this.$bar
437              .addClass(this.classes.barClass)
438              .addClass(this.classes.directionClass)
439              .attr('draggable', false);
440
441            if (options.skin) {
442              this.$bar.addClass(options.skin);
443            }
444            if (options.barLength !== null) {
445              this.setBarLength(options.barLength);
446            }
447
448            if (options.handleLength !== null) {
449              this.setHandleLength(options.handleLength);
450            }
451
452            this.updateLength();
453
454            this.bindEvents();
455
456            this.trigger('ready');
457          }
458        },
459        {
460          key: 'trigger',
461          value: function trigger(eventType) {
462            for (
463              var _len = arguments.length,
464                params = Array(_len > 1 ? _len - 1 : 0),
465                _key = 1;
466              _key < _len;
467              _key++
468            ) {
469              params[_key - 1] = arguments[_key];
470            }
471
472            var data = [this].concat(params);
473
474            // event
475            this.$bar.trigger(NAMESPACE$1 + '::' + eventType, data);
476
477            // callback
478            eventType = eventType.replace(/\b\w+\b/g, function(word) {
479              return word.substring(0, 1).toUpperCase() + word.substring(1);
480            });
481            var onFunction = 'on' + eventType;
482
483            if (typeof this.options[onFunction] === 'function') {
484              this.options[onFunction].apply(this, params);
485            }
486          }
487        },
488        {
489          key: 'is',
490          value: function is(state) {
491            return this._states[state] && this._states[state] > 0;
492          }
493        },
494        {
495          key: 'enter',
496          value: function enter(state) {
497            if (this._states[state] === undefined) {
498              this._states[state] = 0;
499            }
500
501            this._states[state]++;
502          }
503        },
504        {
505          key: 'leave',
506          value: function leave(state) {
507            this._states[state]--;
508          }
509        },
510        {
511          key: 'eventName',
512          value: function eventName(events) {
513            if (typeof events !== 'string' || events === '') {
514              return '.' + this.options.namespace;
515            }
516            events = events.split(' ');
517
518            var length = events.length;
519            for (var _i = 0; _i < length; _i++) {
520              events[_i] = events[_i] + '.' + this.options.namespace;
521            }
522            return events.join(' ');
523          }
524        },
525        {
526          key: 'bindEvents',
527          value: function bindEvents() {
528            var _this = this;
529
530            if (this.options.mouseDrag) {
531              this.$handle.on(
532                this.eventName('mousedown'),
533                _jquery2.default.proxy(this.onDragStart, this)
534              );
535              this.$handle.on(
536                this.eventName('dragstart selectstart'),
537                function() {
538                  return false;
539                }
540              );
541            }
542
543            if (this.options.touchDrag && support.touch) {
544              this.$handle.on(
545                this.eventName('touchstart'),
546                _jquery2.default.proxy(this.onDragStart, this)
547              );
548              this.$handle.on(
549                this.eventName('touchcancel'),
550                _jquery2.default.proxy(this.onDragEnd, this)
551              );
552            }
553
554            if (this.options.pointerDrag && support.pointer) {
555              this.$handle.on(
556                this.eventName(support.prefixPointerEvent('pointerdown')),
557                _jquery2.default.proxy(this.onDragStart, this)
558              );
559              this.$handle.on(
560                this.eventName(support.prefixPointerEvent('pointercancel')),
561                _jquery2.default.proxy(this.onDragEnd, this)
562              );
563            }
564
565            if (this.options.clickMove) {
566              this.$bar.on(
567                this.eventName('mousedown'),
568                _jquery2.default.proxy(this.onClick, this)
569              );
570            }
571
572            if (this.options.mousewheel) {
573              this.$bar.on('mousewheel', function(e) {
574                var delta = void 0;
575                if (_this.options.direction === 'vertical') {
576                  delta = e.deltaFactor * e.deltaY;
577                } else if (_this.options.direction === 'horizontal') {
578                  delta = -1 * e.deltaFactor * e.deltaX;
579                }
580                var offset = _this.getHandlePosition();
581                if (offset <= 0 && delta > 0) {
582                  return true;
583                } else if (offset >= _this.barLength && delta < 0) {
584                  return true;
585                }
586                offset -= _this.options.mousewheelSpeed * delta;
587                _this.move(offset, true);
588                return false;
589              });
590            }
591
592            this.$bar.on(this.eventName('mouseenter'), function() {
593              _this.$bar.addClass(_this.options.hoveringClass);
594              _this.enter('hovering');
595              _this.trigger('hover');
596            });
597
598            this.$bar.on(this.eventName('mouseleave'), function() {
599              _this.$bar.removeClass(_this.options.hoveringClass);
600
601              if (!_this.is('hovering')) {
602                return;
603              }
604              _this.leave('hovering');
605              _this.trigger('hovered');
606            });
607
608            if (this.options.keyboard) {
609              (0, _jquery2.default)(document).on(
610                this.eventName('keydown'),
611                function(e) {
612                  if (e.isDefaultPrevented && e.isDefaultPrevented()) {
613                    return;
614                  }
615
616                  if (!_this.is('hovering')) {
617                    return;
618                  }
619                  var activeElement = document.activeElement;
620                  // go deeper if element is a webcomponent
621                  while (activeElement.shadowRoot) {
622                    activeElement = activeElement.shadowRoot.activeElement;
623                  }
624                  if (
625                    (0, _jquery2.default)(activeElement).is(
626                      ':input,select,option,[contenteditable]'
627                    )
628                  ) {
629                    return;
630                  }
631                  var by = 0,
632                    to = null;
633
634                  var down = 40,
635                    end = 35,
636                    home = 36,
637                    left = 37,
638                    pageDown = 34,
639                    pageUp = 33,
640                    right = 39,
641                    spaceBar = 32,
642                    up = 38;
643
644                  var webkitDown = 63233,
645                    webkitEnd = 63275,
646                    webkitHome = 63273,
647                    webkitLeft = 63234,
648                    webkitPageDown = 63277,
649                    webkitPageUp = 63276,
650                    webkitRight = 63235,
651                    webkitUp = 63232;
652
653                  switch (e.which) {
654                    case left: // left
655                    case webkitUp:
656                      by = -30;
657                      break;
658                    case up: // up
659                    case webkitDown:
660                      by = -30;
661                      break;
662                    case right: // right
663                    case webkitLeft:
664                      by = 30;
665                      break;
666                    case down: // down
667                    case webkitRight:
668                      by = 30;
669                      break;
670                    case pageUp: // page up
671                    case webkitPageUp:
672                      by = -90;
673                      break;
674                    case spaceBar: // space bar
675                    case pageDown: // page down
676                    case webkitPageDown:
677                      by = -90;
678                      break;
679                    case end: // end
680                    case webkitEnd:
681                      to = '100%';
682                      break;
683                    case home: // home
684                    case webkitHome:
685                      to = 0;
686                      break;
687                    default:
688                      return;
689                  }
690
691                  if (by || to !== null) {
692                    if (by) {
693                      _this.moveBy(by, true);
694                    } else if (to !== null) {
695                      _this.moveTo(to, true);
696                    }
697                    e.preventDefault();
698                  }
699                }
700              );
701            }
702          }
703        },
704        {
705          key: 'onClick',
706          value: function onClick(event) {
707            var num = 3;
708
709            if (event.which === num) {
710              return;
711            }
712
713            if (event.target === this.$handle[0]) {
714              return;
715            }
716
717            this._drag.time = new Date().getTime();
718            this._drag.pointer = this.pointer(event);
719
720            var offset = this.$handle.offset();
721            var distance = this.distance(
722                {
723                  x: offset.left,
724                  y: offset.top
725                },
726                this._drag.pointer
727              ),
728              factor = 1;
729
730            if (distance > 0) {
731              distance -= this.handleLength;
732            } else {
733              distance = Math.abs(distance);
734              factor = -1;
735            }
736
737            if (distance > this.barLength * this.options.clickMoveStep) {
738              distance = this.barLength * this.options.clickMoveStep;
739            }
740            this.moveBy(factor * distance, true);
741          }
742        },
743        {
744          key: 'onDragStart',
745          value: function onDragStart(event) {
746            var _this2 = this;
747
748            var num = 3;
749            if (event.which === num) {
750              return;
751            }
752
753            // this.$bar.toggleClass(this.options.draggingClass, event.type === 'mousedown');
754            this.$bar.addClass(this.options.draggingClass);
755
756            this._drag.time = new Date().getTime();
757            this._drag.pointer = this.pointer(event);
758
759            var callback = function callback() {
760              _this2.enter('dragging');
761              _this2.trigger('drag');
762            };
763
764            if (this.options.mouseDrag) {
765              (0, _jquery2.default)(document).on(
766                this.eventName('mouseup'),
767                _jquery2.default.proxy(this.onDragEnd, this)
768              );
769
770              (0, _jquery2.default)(document).one(
771                this.eventName('mousemove'),
772                _jquery2.default.proxy(function() {
773                  (0, _jquery2.default)(document).on(
774                    _this2.eventName('mousemove'),
775                    _jquery2.default.proxy(_this2.onDragMove, _this2)
776                  );
777
778                  callback();
779                }, this)
780              );
781            }
782
783            if (this.options.touchDrag && support.touch) {
784              (0, _jquery2.default)(document).on(
785                this.eventName('touchend'),
786                _jquery2.default.proxy(this.onDragEnd, this)
787              );
788
789              (0, _jquery2.default)(document).one(
790                this.eventName('touchmove'),
791                _jquery2.default.proxy(function() {
792                  (0, _jquery2.default)(document).on(
793                    _this2.eventName('touchmove'),
794                    _jquery2.default.proxy(_this2.onDragMove, _this2)
795                  );
796
797                  callback();
798                }, this)
799              );
800            }
801
802            if (this.options.pointerDrag && support.pointer) {
803              (0, _jquery2.default)(document).on(
804                this.eventName(support.prefixPointerEvent('pointerup')),
805                _jquery2.default.proxy(this.onDragEnd, this)
806              );
807
808              (0, _jquery2.default)(document).one(
809                this.eventName(support.prefixPointerEvent('pointermove')),
810                _jquery2.default.proxy(function() {
811                  (0, _jquery2.default)(document).on(
812                    _this2.eventName(support.prefixPointerEvent('pointermove')),
813                    _jquery2.default.proxy(_this2.onDragMove, _this2)
814                  );
815
816                  callback();
817                }, this)
818              );
819            }
820
821            (0, _jquery2.default)(document).on(
822              this.eventName('blur'),
823              _jquery2.default.proxy(this.onDragEnd, this)
824            );
825          }
826        },
827        {
828          key: 'onDragMove',
829          value: function onDragMove(event) {
830            var distance = this.distance(
831              this._drag.pointer,
832              this.pointer(event)
833            );
834
835            if (!this.is('dragging')) {
836              return;
837            }
838
839            event.preventDefault();
840            this.moveBy(distance, true);
841          }
842        },
843        {
844          key: 'onDragEnd',
845          value: function onDragEnd() {
846            (0, _jquery2.default)(document).off(
847              this.eventName(
848                'mousemove mouseup touchmove touchend pointermove pointerup MSPointerMove MSPointerUp blur'
849              )
850            );
851
852            this.$bar.removeClass(this.options.draggingClass);
853            this.handlePosition = this.getHandlePosition();
854
855            if (!this.is('dragging')) {
856              return;
857            }
858
859            this.leave('dragging');
860            this.trigger('dragged');
861          }
862        },
863        {
864          key: 'pointer',
865          value: function pointer(event) {
866            var result = {
867              x: null,
868              y: null
869            };
870
871            event = event.originalEvent || event || window.event;
872
873            event =
874              event.touches && event.touches.length
875                ? event.touches[0]
876                : event.changedTouches && event.changedTouches.length
877                  ? event.changedTouches[0]
878                  : event;
879
880            if (event.pageX) {
881              result.x = event.pageX;
882              result.y = event.pageY;
883            } else {
884              result.x = event.clientX;
885              result.y = event.clientY;
886            }
887
888            return result;
889          }
890        },
891        {
892          key: 'distance',
893          value: function distance(first, second) {
894            if (this.options.direction === 'vertical') {
895              return second.y - first.y;
896            }
897            return second.x - first.x;
898          }
899        },
900        {
901          key: 'setBarLength',
902          value: function setBarLength(length, update) {
903            if (typeof length !== 'undefined') {
904              this.$bar.css(this.attributes.length, length);
905            }
906            if (update !== false) {
907              this.updateLength();
908            }
909          }
910        },
911        {
912          key: 'setHandleLength',
913          value: function setHandleLength(length, update) {
914            if (typeof length !== 'undefined') {
915              if (length < this.options.minHandleLength) {
916                length = this.options.minHandleLength;
917              } else if (
918                this.options.maxHandleLength &&
919                length > this.options.maxHandleLength
920              ) {
921                length = this.options.maxHandleLength;
922              }
923              this.$handle.css(this.attributes.length, length);
924
925              if (update !== false) {
926                this.updateLength(length);
927              }
928            }
929          }
930        },
931        {
932          key: 'updateLength',
933          value: function updateLength(length, barLength) {
934            if (typeof length !== 'undefined') {
935              this.handleLength = length;
936            } else {
937              this.handleLength = this.getHandleLenght();
938            }
939            if (typeof barLength !== 'undefined') {
940              this.barLength = barLength;
941            } else {
942              this.barLength = this.getBarLength();
943            }
944          }
945        },
946        {
947          key: 'getBarLength',
948          value: function getBarLength() {
949            return this.$bar[0][this.attributes.clientLength];
950          }
951        },
952        {
953          key: 'getHandleLenght',
954          value: function getHandleLenght() {
955            return this.$handle[0][this.attributes.clientLength];
956          }
957        },
958        {
959          key: 'getHandlePosition',
960          value: function getHandlePosition() {
961            var value = void 0;
962
963            if (this.options.useCssTransforms && support.transform) {
964              value = convertMatrixToArray(this.$handle.css(support.transform));
965
966              if (!value) {
967                return 0;
968              }
969
970              if (this.attributes.axis === 'X') {
971                value = value[12] || value[4];
972              } else {
973                value = value[13] || value[5];
974              }
975            } else {
976              value = this.$handle.css(this.attributes.position);
977            }
978
979            return parseFloat(value.replace('px', ''));
980          }
981        },
982        {
983          key: 'makeHandlePositionStyle',
984          value: function makeHandlePositionStyle(value) {
985            var property = void 0,
986              x = '0',
987              y = '0';
988
989            if (this.options.useCssTransforms && support.transform) {
990              if (this.attributes.axis === 'X') {
991                x = value + 'px';
992              } else {
993                y = value + 'px';
994              }
995
996              property = support.transform.toString();
997
998              if (this.options.useCssTransforms3d && support.transform3d) {
999                value = 'translate3d(' + x + ',' + y + ',0)';
1000              } else {
1001                value = 'translate(' + x + ',' + y + ')';
1002              }
1003            } else {
1004              property = this.attributes.position;
1005            }
1006            var temp = {};
1007            temp[property] = value;
1008
1009            return temp;
1010          }
1011        },
1012        {
1013          key: 'setHandlePosition',
1014          value: function setHandlePosition(value) {
1015            var style = this.makeHandlePositionStyle(value);
1016            this.$handle.css(style);
1017
1018            if (!this.is('dragging')) {
1019              this.handlePosition = parseFloat(value);
1020            }
1021          }
1022        },
1023        {
1024          key: 'moveTo',
1025          value: function moveTo(value, trigger, sync) {
1026            var type =
1027              typeof value === 'undefined' ? 'undefined' : _typeof(value);
1028
1029            if (type === 'string') {
1030              if (isPercentage(value)) {
1031                value =
1032                  convertPercentageToFloat(value) *
1033                  (this.barLength - this.handleLength);
1034              }
1035
1036              value = parseFloat(value);
1037              type = 'number';
1038            }
1039
1040            if (type !== 'number') {
1041              return;
1042            }
1043
1044            this.move(value, trigger, sync);
1045          }
1046        },
1047        {
1048          key: 'moveBy',
1049          value: function moveBy(value, trigger, sync) {
1050            var type =
1051              typeof value === 'undefined' ? 'undefined' : _typeof(value);
1052
1053            if (type === 'string') {
1054              if (isPercentage(value)) {
1055                value =
1056                  convertPercentageToFloat(value) *
1057                  (this.barLength - this.handleLength);
1058              }
1059
1060              value = parseFloat(value);
1061              type = 'number';
1062            }
1063
1064            if (type !== 'number') {
1065              return;
1066            }
1067
1068            this.move(this.handlePosition + value, trigger, sync);
1069          }
1070        },
1071        {
1072          key: 'move',
1073          value: function move(value, trigger, sync) {
1074            if (typeof value !== 'number' || this.is('disabled')) {
1075              return;
1076            }
1077            if (value < 0) {
1078              value = 0;
1079            } else if (value + this.handleLength > this.barLength) {
1080              value = this.barLength - this.handleLength;
1081            }
1082
1083            if (!this.is('dragging') && sync !== true) {
1084              this.doMove(
1085                value,
1086                this.options.duration,
1087                this.options.easing,
1088                trigger
1089              );
1090            } else {
1091              this.setHandlePosition(value);
1092
1093              if (trigger) {
1094                this.trigger(
1095                  'change',
1096                  value / (this.barLength - this.handleLength)
1097                );
1098              }
1099            }
1100          }
1101        },
1102        {
1103          key: 'doMove',
1104          value: function doMove(value, duration, easing, trigger) {
1105            var _this3 = this;
1106
1107            var property = void 0;
1108            this.enter('moving');
1109            duration = duration ? duration : this.options.duration;
1110            easing = easing ? easing : this.options.easing;
1111
1112            var style = this.makeHandlePositionStyle(value);
1113            for (property in style) {
1114              if ({}.hasOwnProperty.call(style, property)) {
1115                break;
1116              }
1117            }
1118
1119            if (this.options.useCssTransitions && support.transition) {
1120              this.
1120enter('transition');
1121              this.prepareTransition(property, duration, easing);
1122
1123              this.$handle.one(support.transition.end, function() {
1124                _this3.$handle.css(support.transition, '');
1125
1126                if (trigger) {
1127                  _this3.trigger(
1128                    'change',
1129                    value / (_this3.barLength - _this3.handleLength)
1130                  );
1131                }
1132                _this3.leave('transition');
1133                _this3.leave('moving');
1134              });
1135
1136              this.setHandlePosition(value);
1137            } else {
1138              this.enter('animating');
1139
1140              var startTime = getTime();
1141              var start = this.getHandlePosition();
1142              var end = value;
1143
1144              var run = function run(time) {
1145                var percent = (time - startTime) / _this3.options.duration;
1146
1147                if (percent > 1) {
1148                  percent = 1;
1149                }
1150
1151                percent = _this3.easing.fn(percent);
1152                var scale = 10;
1153                var current = parseFloat(
1154                  start + percent * (end - start),
1155                  scale
1156                );
1157                _this3.setHandlePosition(current);
1158
1159                if (trigger) {
1160                  _this3.trigger(
1161                    'change',
1162                    current / (_this3.barLength - _this3.handleLength)
1163                  );
1164                }
1165
1166                if (percent === 1) {
1167                  window.cancelAnimationFrame(_this3._frameId);
1168                  _this3._frameId = null;
1169
1170                  _this3.leave('animating');
1171                  _this3.leave('moving');
1172                } else {
1173                  _this3._frameId = window.requestAnimationFrame(run);
1174                }
1175              };
1176
1177              this._frameId = window.requestAnimationFrame(run);
1178            }
1179          }
1180        },
1181        {
1182          key: 'prepareTransition',
1183          value: function prepareTransition(property, duration, easing, delay) {
1184            var temp = [];
1185            if (property) {
1186              temp.push(property);
1187            }
1188            if (duration) {
1189              if (_jquery2.default.isNumeric(duration)) {
1190                duration = duration + 'ms';
1191              }
1192              temp.push(duration);
1193            }
1194            if (easing) {
1195              temp.push(easing);
1196            } else {
1197              temp.push(this.easing.css);
1198            }
1199            if (delay) {
1200              temp.push(delay);
1201            }
1202            this.$handle.css(support.transition, temp.join(' '));
1203          }
1204        },
1205        {
1206          key: 'enable',
1207          value: function enable() {
1208            this._states.disabled = 0;
1209
1210            this.$bar.removeClass(this.options.disabledClass);
1211
1212            this.trigger('enable');
1213          }
1214        },
1215        {
1216          key: 'disable',
1217          value: function disable() {
1218            this._states.disabled = 1;
1219
1220            this.$bar.addClass(this.options.disabledClass);
1221
1222            this.trigger('disable');
1223          }
1224        },
1225        {
1226          key: 'destroy',
1227          value: function destroy() {
1228            this.$handle.removeClass(this.classes.handleClass);
1229            this.$bar
1230              .removeClass(this.classes.barClass)
1231              .removeClass(this.classes.directionClass)
1232              .attr('draggable', null);
1233            if (this.options.skin) {
1234              this.$bar.removeClass(this.options.skin);
1235            }
1236            this.$bar.off(this.eventName());
1237            this.$handle.off(this.eventName());
1238
1239            this.trigger('destroy');
1240          }
1241        }
1242      ],
1243      [
1244        {
1245          key: 'registerEasing',
1246          value: function registerEasing(name) {
1247            for (
1248              var _len2 = arguments.length,
1249                args = Array(_len2 > 1 ? _len2 - 1 : 0),
1250                _key2 = 1;
1251              _key2 < _len2;
1252              _key2++
1253            ) {
1254              args[_key2 - 1] = arguments[_key2];
1255            }
1256
1257            EASING[name] = easingBezier.apply(undefined, args);
1258          }
1259        },
1260        {
1261          key: 'getEasing',
1262          value: function getEasing(name) {
1263            return EASING[name];
1264          }
1265        },
1266        {
1267          key: 'setDefaults',
1268          value: function setDefaults(options) {
1269            _jquery2.default.extend(
1270              DEFAULTS,
1271              _jquery2.default.isPlainObject(options) && options
1272            );
1273          }
1274        }
1275      ]
1276    );
1277
1278    return asScrollbar;
1279  })();
1280
1281  var info = {
1282    version: '0.5.7'
1283  };
1284
1285  var NAMESPACE = 'asScrollbar';
1286  var OtherAsScrollbar = _jquery2.default.fn.asScrollbar;
1287
1288  var jQueryAsScrollbar = function jQueryAsScrollbar(options) {
1289    for (
1290      var _len3 = arguments.length,
1291        args = Array(_len3 > 1 ? _len3 - 1 : 0),
1292        _key3 = 1;
1293      _key3 < _len3;
1294      _key3++
1295    ) {
1296      args[_key3 - 1] = arguments[_key3];
1297    }
1298
1299    if (typeof options === 'string') {
1300      var method = options;
1301
1302      if (/^_/.test(method)) {
1303        return false;
1304      } else if (/^(get)/.test(method)) {
1305        var instance = this.first().data(NAMESPACE);
1306        if (instance && typeof instance[method] === 'function') {
1307          return instance[method].apply(instance, args);
1308        }
1309      } else {
1310        return this.each(function() {
1311          var instance = _jquery2.default.data(this, NAMESPACE);
1312          if (instance && typeof instance[method] === 'function') {
1313            instance[method].apply(instance, args);
1314          }
1315        });
1316      }
1317    }
1318
1319    return this.each(function() {
1320      if (!(0, _jquery2.default)(this).data(NAMESPACE)) {
1321        (0, _jquery2.default)(this).data(
1322          NAMESPACE,
1323          new asScrollbar(this, options)
1324        );
1325      }
1326    });
1327  };
1328
1329  _jquery2.default.fn.asScrollbar = jQueryAsScrollbar;
1330
1331  _jquery2.default.asScrollbar = _jquery2.default.extend(
1332    {
1333      setDefaults: asScrollbar.setDefaults,
1334      registerEasing: asScrollbar.registerEasing,
1335      getEasing: asScrollbar.getEasing,
1336      noConflict: function noConflict() {
1337        _jquery2.default.fn.asScrollbar = OtherAsScrollbar;
1338        return jQueryAsScrollbar;
1339      }
1340    },
1341    info
1342  );
1343});

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.