vendor: 1,627 bytes, lines 1-48
1"use strict"; 2 3function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } 4/* 5 * Bootstrap Touchspin - v4.7.3 6 * A mobile and touch friendly input spinner component for Bootstrap 3 & 4. 7 * https://www.virtuosoft.eu/code/bootstrap-touchspin/ 8 * 9 * Made by István Ujj-Mészáros 10 * Under MIT License 11 */ 12(function (factory) { 13 if (typeof define === 'function' && define.amd) { 14 define(['jquery'], factory); 15 } else if ((typeof module === "undefined" ? "undefined" : _typeof(module)) === 'object' && module.exports) { 16 module.exports = function (root, jQuery) { 17 if (jQuery === undefined) { 18 if (typeof window !== 'undefined') { 19 jQuery = require('jquery'); 20 } else { 21 jQuery = require('jquery')(root); 22 } 23 } 24 factory(jQuery); 25 return jQuery; 26 }; 27 } else { 28 factory(jQuery); 29 } 30})(function ($) { 31 'use strict'; 32 33 var _currentSpinnerId = 0; 34 $.fn.TouchSpin = function (options) { 35 var defaults = { 36 min: 0, 37 // If null, there is no minimum enforced 38 max: 100, 39 // If null, there is no maximum enforced 40 initval: '', 41 replacementval: '', 42 firstclickvalueifempty: null, 43 step: 1, 44 decimals: 0, 45 stepinterval: 100, 46 forcestepdivisibility: 'round', 47 // none | floor | round | ceil 48 stepintervaldelay: 500,
49 verticalbuttons: false, 50 verticalup: '+', 51 verticaldown: '−', 52 verticalupclass: '', 53 verticaldownclass: '', 54 prefix: '', 55 postfix: '', 56 prefix_extraclass: '', 57 postfix_extraclass: '', 58 booster: true, 59 boostat: 10, 60 maxboostedstep: false, 61 mousewheel: true, 62 buttondown_class: 'btn btn-primary', 63 buttonup_class: 'btn btn-primary', 64 buttondown_txt: '−', 65 buttonup_txt: '+', 66 callback_before_calculation: function callback_before_calculation(value) { 67 return value; 68 }, 69 callback_after_calculation: function callback_after_calculation(value) { 70 return value; 71 } 72 }; 73 var attributeMap = { 74 min: 'min', 75 max: 'max', 76 initval: 'init-val', 77 replacementval: 'replacement-val', 78 firstclickvalueifempty: 'first-click-value-if-empty', 79 step: 'step', 80 decimals: 'decimals', 81 stepinterval: 'step-interval', 82 verticalbuttons: 'vertical-buttons', 83 verticalupclass: 'vertical-up-class', 84 verticaldownclass: 'vertical-down-class', 85 forcestepdivisibility: 'force-step-divisibility', 86 stepintervaldelay: 'step-interval-delay', 87 prefix: 'prefix', 88 postfix: 'postfix', 89 prefix_extraclass: 'prefix-extra-class', 90 postfix_extraclass: 'postfix-extra-class', 91 booster: 'booster', 92 boostat: 'boostat', 93 maxboostedstep: 'max-boosted-step', 94 mousewheel: 'mouse-wheel', 95 buttondown_class: 'button-down-class', 96 buttonup_class: 'button-up-class', 97 buttondown_txt: 'button-down-txt', 98 buttonup_txt: 'button-up-txt' 99 }; 100 return this.each(function () { 101 var settings, 102 originalinput = $(this), 103 originalinput_data = originalinput.data(), 104 _detached_prefix, 105 _detached_postfix, 106 container, 107 elements, 108 verticalbuttons_html, 109 value, 110 downSpinTimer, 111 upSpinTimer, 112 downDelayTimeout, 113 upDelayTimeout, 114 spincount = 0, 115 spinning = false; 116 init(); 117 function init() { 118 if (originalinput.data('alreadyinitialized')) { 119 return; 120 } 121 originalinput.data('alreadyinitialized', true); 122 _currentSpinnerId += 1; 123 originalinput.data('spinnerid', _currentSpinnerId); 124 if (!originalinput.is('input')) { 125 console.log('Must be an input.'); 126 return; 127 } 128 _initSettings(); 129 _setInitval(); 130 _checkValue(); 131 _buildHtml(); 132 _initElements(); 133 _updateButtonDisabledState(); 134 _hideEmptyPrefixPostfix(); 135 _setupMutationObservers(); 136 _bindEvents(); 137 _bindEventsInterface(); 138 } 139 function _setInitval() { 140 if (settings.initval !== '' && originalinput.val() === '') { 141 originalinput.val(settings.initval); 142 } 143 } 144 function changeSettings(newsettings) { 145 _updateSettings(newsettings); 146 _checkValue(); 147 var value = elements.input.val(); 148 if (value !== '') { 149 value = parseFloat(settings.callback_before_calculation(elements.input.val())); 150 elements.input.val(settings.callback_after_calculation(parseFloat(value).toFixed(settings.decimals))); 151 } 152 } 153 function _initSettings() { 154 settings = $.extend({}, defaults, originalinput_data, _parseAttributes(), options); 155 if (parseFloat(settings.step) !== 1) { 156 var remainder; 157 158 // Modify settings.max to be divisible by step 159 remainder = settings.max % settings.step; 160 if (remainder !== 0) { 161 settings.max = parseFloat(settings.max) - remainder; 162 } 163 164 // Do the same with min, should work with negative numbers too 165 remainder = settings.min % settings.step; 166 if (remainder !== 0) { 167 settings.min = parseFloat(settings.min) + (parseFloat(settings.step) - remainder); 168 } 169 } 170 } 171 function _parseAttributes() { 172 var data = {}; 173 174 // Setting up based on data attributes 175 $.each(attributeMap, function (key, value) { 176 var attrName = 'bts-' + value + ''; 177 if (originalinput.is('[data-' + attrName + ']')) { 178 data[key] = originalinput.data(attrName); 179 } 180 }); 181 182 // Setting up based on input attributes if specified (input attributes have precedence) 183 $.each(['min', 'max', 'step'], function (i, key) { 184 if (originalinput.is('[' + key + ']')) { 185 if (data[key] !== undefined) { 186 console.warn('Both the "data-bts-' + key + '" data attribute and the "' + key + '" individual attribute were specified, the individual attribute will take precedence on: ', originalinput); 187 } 188 data[key] = originalinput.attr(key); 189 } 190 }); 191 return data; 192 } 193 function _destroy() { 194 var $parent = originalinput.parent(); 195 stopSpin(); 196 originalinput.off('.touchspin'); 197 if ($parent.hasClass('bootstrap-touchspin-injected')) { 198 originalinput.siblings().remove(); 199 originalinput.unwrap(); 200 } else { 201 $('.bootstrap-touchspin-injected', $parent).remove(); 202 $parent.removeClass('bootstrap-touchspin'); 203 } 204 originalinput.data('alreadyinitialized', false); 205 } 206 function _updateSettings(newsettings) { 207 settings = $.extend({}, settings, newsettings); 208 209 // Update postfix and prefix texts if those settings were changed. 210 if (newsettings.postfix) { 211 var $postfix = originalinput.parent().find('.bootstrap-touchspin-postfix'); 212 if ($postfix.length === 0) { 213 _detached_postfix.insertAfter(originalinput); 214 } 215 originalinput.parent().find('.bootstrap-touchspin-postfix .input-group-text').text(newsettings.postfix); 216 } 217 if (newsettings.prefix) { 218 var $prefix = originalinput.parent().find('.bootstrap-touchspin-prefix'); 219 if ($prefix.length === 0) { 220 _detached_prefix.insertBefore(originalinput); 221 } 222 originalinput.parent().find('.bootstrap-touchspin-prefix .input-group-text').text(newsettings.prefix); 223 } 224 _hideEmptyPrefixPostfix(); 225 } 226 function _buildHtml() { 227 var initval = originalinput.val(), 228 parentelement = originalinput.parent(); 229 if (initval !== '') { 230 // initval may not be parsable as a number (callback_after_calculation() may decorate it so it cant be parsed). Use the callbacks if provided. 231 initval = settings.callback_before_calculation(initval); 232 initval = settings.callback_after_calculation(parseFloat(initval).toFixed(settings.decimals)); 233 } 234 originalinput.data('initvalue', initval).val(initval); 235 originalinput.addClass('form-control');
236 verticalbuttons_html = "\n <span class=\"input-group-addon bootstrap-touchspin-vertical-button-wrapper\">\n <span class=\"input-group-btn-vertical\">\n <button tabindex=\"-1\" class=\"".concat(settings.buttondown_class, " bootstrap-touchspin-up ").concat(settings.verticalupclass, "\" type=\"button\">").concat(settings.verticalup, "</button>\n <button tabindex=\"-1\" class=\"").concat(settings.buttonup_class, " bootstrap-touchspin-down ").concat(settings.verticaldownclass, "\" type=\"button\">").concat(settings.verticaldown, "</button>\n </span>\n </span>\n "); 237 if (parentelement.hasClass('input-group')) { 238 _advanceInputGroup(parentelement); 239 } else { 240 _buildInputGroup(); 241 } 242 } 243 function _advanceInputGroup(parentelement) { 244 parentelement.addClass('bootstrap-touchspin'); 245 var prev = originalinput.prev(), 246 next = originalinput.next(); 247 var downhtml, 248 uphtml, 249 prefixhtml = "\n <span class=\"input-group-addon input-group-prepend bootstrap-touchspin-prefix input-group-prepend bootstrap-touchspin-injected\">\n <span class=\"input-group-text\">".concat(settings.prefix, "</span>\n </span>\n "), 250 postfixhtml = "\n <span class=\"input-group-addon input-group-append bootstrap-touchspin-postfix input-group-append bootstrap-touchspin-injected\">\n <span class=\"input-group-text\">".concat(settings.postfix, "</span>\n </span>\n "); 251 if (settings.verticalbuttons) { 252 $(verticalbuttons_html).insertAfter(originalinput); 253 } else { 254 if (prev.hasClass('input-group-btn') || prev.hasClass('input-group-prepend')) { 255 downhtml = "\n <button tabindex=\"-1\" class=\"".concat(settings.buttondown_class, " bootstrap-touchspin-down bootstrap-touchspin-injected\" type=\"button\">").concat(settings.buttondown_txt, "</button>\n "); 256 prev.append(downhtml); 257 } else { 258 downhtml = "\n <span class=\"input-group-btn input-group-prepend bootstrap-touchspin-injected\">\n <button tabindex=\"-1\" class=\"".concat(settings.buttondown_class, " bootstrap-touchspin-down\" type=\"button\">").concat(settings.buttondown_txt, "</button>\n </span>\n "); 259 $(downhtml).insertBefore(originalinput); 260 } 261 if (next.hasClass('input-group-btn') || next.hasClass('input-group-append')) { 262 uphtml = "\n <button tabindex=\"-1\" class=\"".concat(settings.buttonup_class, " bootstrap-touchspin-up bootstrap-touchspin-injected\" type=\"button\">").concat(settings.buttonup_txt, "</button>\n "); 263 next.prepend(uphtml); 264 } else { 265 uphtml = "\n <span class=\"input-group-btn input-group-append bootstrap-touchspin-injected\">\n <button tabindex=\"-1\" class=\"".concat(settings.buttonup_class, " bootstrap-touchspin-up\" type=\"button\">").concat(settings.buttonup_txt, "</button>\n </span>\n "); 266 $(uphtml).insertAfter(originalinput); 267 } 268 } 269 $(prefixhtml).insertBefore(originalinput); 270 $(postfixhtml).insertAfter(originalinput); 271 container = parentelement; 272 } 273 function _buildInputGroup() { 274 var html; 275 var inputGroupSize = ''; 276 if (originalinput.hasClass('input-sm') || originalinput.hasClass('form-control-sm')) { 277 inputGroupSize = 'input-group-sm'; 278 } else if (originalinput.hasClass('input-lg') || originalinput.hasClass('form-control-lg')) { 279 inputGroupSize = 'input-group-lg'; 280 } 281 if (settings.verticalbuttons) { 282 html = "\n <div class=\"input-group ".concat(inputGroupSize, " bootstrap-touchspin bootstrap-touchspin-injected\">\n <span class=\"input-group-addon input-group-prepend bootstrap-touchspin-prefix\">
282\n <span class=\"input-group-text\">").concat(settings.prefix, "</span>\n </span>\n <span class=\"input-group-addon bootstrap-touchspin-postfix input-group-append\">\n <span class=\"input-group-text\">").concat(settings.postfix, "</span>\n </span>\n ").concat(verticalbuttons_html, "\n </div>\n "); 283 } else { 284 html = "\n <div class=\"input-group bootstrap-touchspin bootstrap-touchspin-injected\">\n <span class=\"input-group-btn input-group-prepend\">\n <button tabindex=\"-1\" class=\"".concat(settings.buttondown_class, " bootstrap-touchspin-down\" type=\"button\">").concat(settings.buttondown_txt, "</button>\n </span>\n <span class=\"input-group-addon bootstrap-touchspin-prefix input-group-prepend\">\n <span class=\"input-group-text\">").concat(settings.prefix, "</span>\n </span>\n <span class=\"input-group-addon bootstrap-touchspin-postfix input-group-append\">\n <span class=\"input-group-text\">").concat(settings.postfix, "</span>\n </span>\n <span class=\"input-group-btn input-group-append\">\n <button tabindex=\"-1\" class=\"").concat(settings.buttonup_class, " bootstrap-touchspin-up\" type=\"button\">").concat(settings.buttonup_txt, "</button>\n </span>\n </div>"); 285 } 286 container = $(html).insertBefore(originalinput); 287 $('.bootstrap-touchspin-prefix', container).after(originalinput); 288 if (originalinput.hasClass('input-sm') || originalinput.hasClass('form-control-sm')) { 289 container.addClass('input-group-sm'); 290 } else if (originalinput.hasClass('input-lg') || originalinput.hasClass('form-control-lg')) { 291 container.addClass('input-group-lg'); 292 } 293 } 294 function _initElements() { 295 elements = { 296 down: $('.bootstrap-touchspin-down', container), 297 up: $('.bootstrap-touchspin-up', container), 298 input: $('input', container), 299 prefix: $('.bootstrap-touchspin-prefix', container).addClass(settings.prefix_extraclass), 300 postfix: $('.bootstrap-touchspin-postfix', container).addClass(settings.postfix_extraclass) 301 }; 302 } 303 function _hideEmptyPrefixPostfix() { 304 if (settings.prefix === '') { 305 _detached_prefix = elements.prefix.detach(); 306 } 307 if (settings.postfix === '') { 308 _detached_postfix = elements.postfix.detach(); 309 } 310 } 311 function _bindEvents() { 312 originalinput.on('keydown.touchspin', function (ev) { 313 var code = ev.keyCode || ev.which; 314 if (code === 38) { 315 if (spinning !== 'up') { 316 upOnce(); 317 startUpSpin(); 318 } 319 ev.preventDefault(); 320 } else if (code === 40) { 321 if (spinning !== 'down') { 322 downOnce(); 323 startDownSpin(); 324 } 325 ev.preventDefault(); 326 } else if (code === 9 || code === 13) { 327 _checkValue(); 328 } 329 }); 330 originalinput.on('keyup.touchspin', function (ev) { 331 var code = ev.keyCode || ev.which; 332 if (code === 38) { 333 stopSpin(); 334 } else if (code === 40) { 335 stopSpin(); 336 } 337 }); 338 339 // change is fired before blur, so we need to work around that 340 $(document).on('mousedown touchstart', function (event) { 341 if ($(event.target).is(originalinput)) { 342 return; 343 } 344 _checkValue(); 345 }); 346 originalinput.on('blur.touchspin', function () { 347 _checkValue(); 348 }); 349 elements.down.on('keydown', function (ev) { 350 var code = ev.keyCode || ev.which; 351 if (code === 32 || code === 13) { 352 if (spinning !== 'down') { 353 downOnce(); 354 startDownSpin(); 355 } 356 ev.preventDefault(); 357 } 358 }); 359 elements.down.on('keyup.touchspin', function (ev) { 360 var code = ev.keyCode || ev.which; 361 if (code === 32 || code === 13) { 362 stopSpin(); 363 } 364 }); 365 elements.up.on('keydown.touchspin', function (ev) { 366 var code = ev.keyCode || ev.which; 367 if (code === 32 || code === 13) { 368 if (spinning !== 'up') { 369 upOnce(); 370 startUpSpin(); 371 } 372 ev.preventDefault(); 373 } 374 }); 375 elements.up.on('keyup.touchspin', function (ev) { 376 var code = ev.keyCode || ev.which; 377 if (code === 32 || code === 13) { 378 stopSpin(); 379 } 380 }); 381 elements.down.on('mousedown.touchspin', function (ev) { 382 elements.down.off('touchstart.touchspin'); // android 4 workaround 383 384 if (originalinput.is(':disabled,[readonly]')) { 385 return; 386 } 387 downOnce(); 388 startDownSpin(); 389 ev.preventDefault(); 390 ev.stopPropagation(); 391 }); 392 elements.down.on('touchstart.touchspin', function (ev) { 393 elements.down.off('mousedown.touchspin'); // android 4 workaround 394 395 if (originalinput.is(':disabled,[readonly]')) { 396 return; 397 } 398 downOnce(); 399 startDownSpin(); 400 ev.preventDefault(); 401 ev.stopPropagation(); 402 }); 403 elements.up.on('mousedown.touchspin', function (ev) { 404 elements.up.off('touchstart.touchspin'); // android 4 workaround 405 406 if (originalinput.is(':disabled,[readonly]')) { 407 return; 408 } 409 upOnce(); 410 startUpSpin(); 411 ev.preventDefault(); 412 ev.stopPropagation(); 413 }); 414 elements.up.on('touchstart.touchspin', function (ev) { 415 elements.up.off('mousedown.touchspin'); // android 4 workaround 416 417 if (originalinput.is(':disabled,[readonly]')) { 418 return; 419 } 420 upOnce(); 421 startUpSpin(); 422 ev.preventDefault(); 423 ev.stopPropagation(); 424 }); 425 elements.up.on('mouseup.touchspin mouseout.touchspin touchleave.touchspin touchend.touchspin touchcancel.touchspin', function (ev) { 426 if (!spinning) { 427 return; 428 } 429 ev.stopPropagation(); 430 stopSpin(); 431 }); 432 elements.down.on('mouseup.touchspin mouseout.touchspin touchleave.touchspin touchend.touchspin touchcancel.touchspin', function (ev) { 433 if (!spinning) { 434 return; 435 } 436 ev.stopPropagation(); 437 stopSpin(); 438 }); 439 elements.down.on('mousemove.touchspin touchmove.touchspin', function (ev) { 440 if (!spinning) { 441 return; 442 } 443 ev.stopPropagation(); 444 ev.preventDefault(); 445 }); 446 elements.up.on('mousemove.touchspin touchmove.touchspin', function (ev) { 447 if (!spinning) { 448 return; 449 } 450 ev.stopPropagation(); 451 ev.preventDefault(); 452 }); 453 originalinput.on('mousewheel.touchspin DOMMouseScroll.touchspin', function (ev) { 454 if (!settings.mousewheel || !originalinput.is(':focus')) { 455 return; 456 } 457 var delta = ev.originalEvent.wheelDelta || -ev.originalEvent.deltaY || -ev.originalEvent.detail; 458 ev.stopPropagation(); 459 ev.preventDefault(); 460 if (delta < 0) { 461 downOnce(); 462 } else { 463 upOnce(); 464 } 465 }); 466 } 467 function _bindEventsInterface() { 468 originalinput.on('touchspin.destroy', function () { 469 _destroy(); 470 }); 471 originalinput.on('touchspin.uponce', function () { 472 stopSpin(); 473 upOnce(); 474 }); 475 originalinput.on('touchspin.downonce', function () { 476 stopSpin(); 477 downOnce(); 478 }); 479 originalinput.on('touchspin.startupspin', function () { 480 startUpSpin(); 481 }); 482 originalinput.on('touchspin.startdownspin', function () { 483 startDownSpin(); 484 }); 485 originalinput.on('touchspin.stopspin', function () { 486 stopSpin(); 487 }); 488 originalinput.on('touchspin.updatesettings', function (e, newsettings) { 489 changeSettings(newsettings); 490 }); 491 } 492 function _setupMutationObservers() { 493 if (typeof MutationObserver !== 'undefined') { 494 // MutationObserver is available 495 var observer = new MutationObserver(function (mutations) { 496 mutations.forEach(function (mutation) { 497 if (mutation.type === 'attributes' && (mutation.attributeName === 'disabled' || mutation.attributeName === 'readonly')) { 498 _updateButtonDisabledState(); 499 } 500 }); 501 }); 502 observer.observe(originalinput[0], { 503 attributes: true 504 }); 505 } 506 } 507 function _forcestepdivisibility(value) { 508 switch (settings.forcestepdivisibility) { 509 case 'round': 510 return (Math.round(value / settings.step) * settings.step).toFixed(settings.decimals); 511 case 'floor': 512 return (Math.floor(value / settings.step) * settings.step).toFixed(settings.decimals);
513 case 'ceil': 514 return (Math.ceil(value / settings.step) * settings.step).toFixed(settings.decimals); 515 default: 516 return value.toFixed(settings.decimals); 517 } 518 } 519 function _checkValue() { 520 var val, parsedval, returnval; 521 val = settings.callback_before_calculation(originalinput.val()); 522 if (val === '') { 523 if (settings.replacementval !== '') { 524 originalinput.val(settings.replacementval); 525 originalinput.trigger('change'); 526 } 527 return; 528 } 529 if (settings.decimals > 0 && val === '.') { 530 return; 531 } 532 parsedval = parseFloat(val); 533 if (isNaN(parsedval)) { 534 if (settings.replacementval !== '') { 535 parsedval = settings.replacementval; 536 } else { 537 parsedval = 0; 538 } 539 } 540 returnval = parsedval; 541 if (parsedval.toString() !== val) { 542 returnval = parsedval; 543 } 544 returnval = _forcestepdivisibility(parsedval); 545 if (settings.min !== null && parsedval < settings.min) { 546 returnval = settings.min; 547 } 548 if (settings.max !== null && parsedval > settings.max) { 549 returnval = settings.max; 550 } 551 if (parseFloat(parsedval).toString() !== parseFloat(returnval).toString()) { 552 originalinput.val(returnval); 553 } 554 originalinput.val(settings.callback_after_calculation(parseFloat(returnval).toFixed(settings.decimals))); 555 } 556 function _getBoostedStep() { 557 if (!settings.booster) { 558 return settings.step; 559 } else { 560 var boosted = Math.pow(2, Math.floor(spincount / settings.boostat)) * settings.step; 561 if (settings.maxboostedstep) { 562 if (boosted > settings.maxboostedstep) { 563 boosted = settings.maxboostedstep; 564 value = Math.round(value / boosted) * boosted; 565 } 566 } 567 return Math.max(settings.step, boosted); 568 } 569 } 570 function valueIfIsNaN() { 571 if (typeof settings.firstclickvalueifempty === 'number') { 572 return settings.firstclickvalueifempty; 573 } else { 574 return (settings.min + settings.max) / 2; 575 } 576 } 577 function _updateButtonDisabledState() { 578 var isDisabled = originalinput.is(':disabled,[readonly]'); 579 elements.up.prop('disabled', isDisabled); 580 elements.down.prop('disabled', isDisabled); 581 if (isDisabled) { 582 stopSpin(); 583 } 584 } 585 function upOnce() { 586 if (originalinput.is(':disabled,[readonly]')) { 587 return; 588 } 589 _checkValue(); 590 value = parseFloat(settings.callback_before_calculation(elements.input.val())); 591 var initvalue = value; 592 var boostedstep; 593 if (isNaN(value)) { 594 value = valueIfIsNaN(); 595 } else { 596 boostedstep = _getBoostedStep(); 597 value = value + boostedstep; 598 } 599 if (settings.max !== null && value >= settings.max) { 600 value = settings.max; 601 originalinput.trigger('touchspin.on.max'); 602 stopSpin(); 603 } 604 elements.input.val(settings.callback_after_calculation(parseFloat(value).toFixed(settings.decimals))); 605 if (initvalue !== value) { 606 originalinput.trigger('change'); 607 } 608 } 609 function downOnce() { 610 if (originalinput.is(':disabled,[readonly]')) { 611 return; 612 } 613 _checkValue(); 614 value = parseFloat(settings.callback_before_calculation(elements.input.val())); 615 var initvalue = value; 616 var boostedstep; 617 if (isNaN(value)) { 618 value = valueIfIsNaN(); 619 } else { 620 boostedstep = _getBoostedStep(); 621 value = value - boostedstep; 622 } 623 if (settings.min !== null && value <= settings.min) { 624 value = settings.min; 625 originalinput.trigger('touchspin.on.min'); 626 stopSpin(); 627 } 628 elements.input.val(settings.callback_after_calculation(parseFloat(value).toFixed(settings.decimals))); 629 if (initvalue !== value) { 630 originalinput.trigger('change'); 631 } 632 } 633 function startDownSpin() { 634 if (originalinput.is(':disabled,[readonly]')) { 635 return; 636 } 637 stopSpin(); 638 spincount = 0; 639 spinning = 'down'; 640 originalinput.trigger('touchspin.on.startspin'); 641 originalinput.trigger('touchspin.on.startdownspin'); 642 downDelayTimeout = setTimeout(function () { 643 downSpinTimer = setInterval(function () { 644 spincount++; 645 downOnce(); 646 }, settings.stepinterval); 647 }, settings.stepintervaldelay); 648 } 649 function startUpSpin() { 650 if (originalinput.is(':disabled,[readonly]')) { 651 return; 652 } 653 stopSpin(); 654 spincount = 0; 655 spinning = 'up'; 656 originalinput.trigger('touchspin.on.startspin'); 657 originalinput.trigger('touchspin.on.startupspin'); 658 upDelayTimeout = setTimeout(function () { 659 upSpinTimer = setInterval(function () { 660 spincount++; 661 upOnce(); 662 }, settings.stepinterval); 663 }, settings.stepintervaldelay); 664 } 665 function stopSpin() { 666 clearTimeout(downDelayTimeout); 667 clearTimeout(upDelayTimeout); 668 clearInterval(downSpinTimer); 669 clearInterval(upSpinTimer); 670 switch (spinning) { 671 case 'up': 672 originalinput.trigger('touchspin.on.stopupspin'); 673 originalinput.trigger('touchspin.on.stopspin'); 674 break; 675 case 'down': 676 originalinput.trigger('touchspin.on.stopdownspin'); 677 originalinput.trigger('touchspin.on.stopspin'); 678 break; 679 } 680 spincount = 0; 681 spinning = false;
682 } 683 }); 684 }; 685}); 686//# sourceMappingURL=jquery.bootstrap-touchspin.js.map
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.