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.