{ "version": 3, "sources": ["../../../../node_modules/jquery-validation/dist/jquery.validate.js", "../../../../node_modules/jquery-validation-unobtrusive/dist/jquery.validate.unobtrusive.js", "../../../../node_modules/jquery.nicescroll/jquery.nicescroll.js", "../../../../node_modules/metismenu/src/util.js", "../../../../node_modules/metismenu/src/index.js", "../../../../node_modules/popper.js/src/utils/isBrowser.js", "../../../../node_modules/popper.js/src/utils/debounce.js", "../../../../node_modules/popper.js/src/utils/isFunction.js", "../../../../node_modules/popper.js/src/utils/getStyleComputedProperty.js", "../../../../node_modules/popper.js/src/utils/getParentNode.js", "../../../../node_modules/popper.js/src/utils/getScrollParent.js", "../../../../node_modules/popper.js/src/utils/getReferenceNode.js", "../../../../node_modules/popper.js/src/utils/isIE.js", "../../../../node_modules/popper.js/src/utils/getOffsetParent.js", "../../../../node_modules/popper.js/src/utils/isOffsetContainer.js", "../../../../node_modules/popper.js/src/utils/getRoot.js", "../../../../node_modules/popper.js/src/utils/findCommonOffsetParent.js", "../../../../node_modules/popper.js/src/utils/getScroll.js", "../../../../node_modules/popper.js/src/utils/includeScroll.js", "../../../../node_modules/popper.js/src/utils/getBordersSize.js", "../../../../node_modules/popper.js/src/utils/getWindowSizes.js", "../../../../node_modules/popper.js/src/utils/getClientRect.js", "../../../../node_modules/popper.js/src/utils/getBoundingClientRect.js", "../../../../node_modules/popper.js/src/utils/getOffsetRectRelativeToArbitraryNode.js", "../../../../node_modules/popper.js/src/utils/getViewportOffsetRectRelativeToArtbitraryNode.js", "../../../../node_modules/popper.js/src/utils/isFixed.js", "../../../../node_modules/popper.js/src/utils/getFixedPositionOffsetParent.js", "../../../../node_modules/popper.js/src/utils/getBoundaries.js", "../../../../node_modules/popper.js/src/utils/computeAutoPlacement.js", "../../../../node_modules/popper.js/src/utils/getReferenceOffsets.js", "../../../../node_modules/popper.js/src/utils/getOuterSizes.js", "../../../../node_modules/popper.js/src/utils/getOppositePlacement.js", "../../../../node_modules/popper.js/src/utils/getPopperOffsets.js", "../../../../node_modules/popper.js/src/utils/find.js", "../../../../node_modules/popper.js/src/utils/findIndex.js", "../../../../node_modules/popper.js/src/utils/runModifiers.js", "../../../../node_modules/popper.js/src/methods/update.js", "../../../../node_modules/popper.js/src/utils/isModifierEnabled.js", "../../../../node_modules/popper.js/src/utils/getSupportedPropertyName.js", "../../../../node_modules/popper.js/src/methods/destroy.js", "../../../../node_modules/popper.js/src/utils/getWindow.js", "../../../../node_modules/popper.js/src/utils/setupEventListeners.js", "../../../../node_modules/popper.js/src/methods/enableEventListeners.js", "../../../../node_modules/popper.js/src/utils/removeEventListeners.js", "../../../../node_modules/popper.js/src/methods/disableEventListeners.js", "../../../../node_modules/popper.js/src/utils/isNumeric.js", "../../../../node_modules/popper.js/src/utils/setStyles.js", "../../../../node_modules/popper.js/src/utils/setAttributes.js", "../../../../node_modules/popper.js/src/modifiers/applyStyle.js", "../../../../node_modules/popper.js/src/utils/getRoundedOffsets.js", "../../../../node_modules/popper.js/src/modifiers/computeStyle.js", "../../../../node_modules/popper.js/src/utils/isModifierRequired.js", "../../../../node_modules/popper.js/src/modifiers/arrow.js", "../../../../node_modules/popper.js/src/utils/getOppositeVariation.js", "../../../../node_modules/popper.js/src/methods/placements.js", "../../../../node_modules/popper.js/src/utils/clockwise.js", "../../../../node_modules/popper.js/src/modifiers/flip.js", "../../../../node_modules/popper.js/src/modifiers/keepTogether.js", "../../../../node_modules/popper.js/src/modifiers/offset.js", "../../../../node_modules/popper.js/src/modifiers/preventOverflow.js", "../../../../node_modules/popper.js/src/modifiers/shift.js", "../../../../node_modules/popper.js/src/modifiers/hide.js", "../../../../node_modules/popper.js/src/modifiers/inner.js", "../../../../node_modules/popper.js/src/modifiers/index.js", "../../../../node_modules/popper.js/src/methods/defaults.js", "../../../../node_modules/popper.js/src/index.js", "../../../../node_modules/bootstrap/js/src/util.js", "../../../../node_modules/bootstrap/js/src/alert.js", "../../../../node_modules/bootstrap/js/src/button.js", "../../../../node_modules/bootstrap/js/src/carousel.js", "../../../../node_modules/bootstrap/js/src/collapse.js", "../../../../node_modules/bootstrap/js/src/dropdown.js", "../../../../node_modules/bootstrap/js/src/modal.js", "../../../../node_modules/bootstrap/js/src/tools/sanitizer.js", "../../../../node_modules/bootstrap/js/src/tooltip.js", "../../../../node_modules/bootstrap/js/src/popover.js", "../../../../node_modules/bootstrap/js/src/scrollspy.js", "../../../../node_modules/bootstrap/js/src/tab.js", "../../../../node_modules/bootstrap/js/src/toast.js", "../../../../Scripts/GlobalImport.ts", "../../../../Scripts/Views/Shared/Layout.ts"], "sourcesContent": ["/*!\n * jQuery Validation Plugin v1.19.5\n *\n * https://jqueryvalidation.org/\n *\n * Copyright (c) 2022 J\u00F6rn Zaefferer\n * Released under the MIT license\n */\n(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n$.extend( $.fn, {\n\n\t// https://jqueryvalidation.org/validate/\n\tvalidate: function( options ) {\n\n\t\t// If nothing is selected, return nothing; can't chain anyway\n\t\tif ( !this.length ) {\n\t\t\tif ( options && options.debug && window.console ) {\n\t\t\t\tconsole.warn( \"Nothing selected, can't validate, returning nothing.\" );\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// Check if a validator for this form was already created\n\t\tvar validator = $.data( this[ 0 ], \"validator\" );\n\t\tif ( validator ) {\n\t\t\treturn validator;\n\t\t}\n\n\t\t// Add novalidate tag if HTML5.\n\t\tthis.attr( \"novalidate\", \"novalidate\" );\n\n\t\tvalidator = new $.validator( options, this[ 0 ] );\n\t\t$.data( this[ 0 ], \"validator\", validator );\n\n\t\tif ( validator.settings.onsubmit ) {\n\n\t\t\tthis.on( \"click.validate\", \":submit\", function( event ) {\n\n\t\t\t\t// Track the used submit button to properly handle scripted\n\t\t\t\t// submits later.\n\t\t\t\tvalidator.submitButton = event.currentTarget;\n\n\t\t\t\t// Allow suppressing validation by adding a cancel class to the submit button\n\t\t\t\tif ( $( this ).hasClass( \"cancel\" ) ) {\n\t\t\t\t\tvalidator.cancelSubmit = true;\n\t\t\t\t}\n\n\t\t\t\t// Allow suppressing validation by adding the html5 formnovalidate attribute to the submit button\n\t\t\t\tif ( $( this ).attr( \"formnovalidate\" ) !== undefined ) {\n\t\t\t\t\tvalidator.cancelSubmit = true;\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t// Validate the form on submit\n\t\t\tthis.on( \"submit.validate\", function( event ) {\n\t\t\t\tif ( validator.settings.debug ) {\n\n\t\t\t\t\t// Prevent form submit to be able to see console output\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\n\t\t\t\tfunction handle() {\n\t\t\t\t\tvar hidden, result;\n\n\t\t\t\t\t// Insert a hidden input as a replacement for the missing submit button\n\t\t\t\t\t// The hidden input is inserted in two cases:\n\t\t\t\t\t// - A user defined a `submitHandler`\n\t\t\t\t\t// - There was a pending request due to `remote` method and `stopRequest()`\n\t\t\t\t\t// was called to submit the form in case it's valid\n\t\t\t\t\tif ( validator.submitButton && ( validator.settings.submitHandler || validator.formSubmitted ) ) {\n\t\t\t\t\t\thidden = $( \"<input type='hidden'/>\" )\n\t\t\t\t\t\t\t.attr( \"name\", validator.submitButton.name )\n\t\t\t\t\t\t\t.val( $( validator.submitButton ).val() )\n\t\t\t\t\t\t\t.appendTo( validator.currentForm );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( validator.settings.submitHandler && !validator.settings.debug ) {\n\t\t\t\t\t\tresult = validator.settings.submitHandler.call( validator, validator.currentForm, event );\n\t\t\t\t\t\tif ( hidden ) {\n\n\t\t\t\t\t\t\t// And clean up afterwards; thanks to no-block-scope, hidden can be referenced\n\t\t\t\t\t\t\thidden.remove();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( result !== undefined ) {\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\t// Prevent submit for invalid forms or custom submit handlers\n\t\t\t\tif ( validator.cancelSubmit ) {\n\t\t\t\t\tvalidator.cancelSubmit = false;\n\t\t\t\t\treturn handle();\n\t\t\t\t}\n\t\t\t\tif ( validator.form() ) {\n\t\t\t\t\tif ( validator.pendingRequest ) {\n\t\t\t\t\t\tvalidator.formSubmitted = true;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn handle();\n\t\t\t\t} else {\n\t\t\t\t\tvalidator.focusInvalid();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn validator;\n\t},\n\n\t// https://jqueryvalidation.org/valid/\n\tvalid: function() {\n\t\tvar valid, validator, errorList;\n\n\t\tif ( $( this[ 0 ] ).is( \"form\" ) ) {\n\t\t\tvalid = this.validate().form();\n\t\t} else {\n\t\t\terrorList = [];\n\t\t\tvalid = true;\n\t\t\tvalidator = $( this[ 0 ].form ).validate();\n\t\t\tthis.each( function() {\n\t\t\t\tvalid = validator.element( this ) && valid;\n\t\t\t\tif ( !valid ) {\n\t\t\t\t\terrorList = errorList.concat( validator.errorList );\n\t\t\t\t}\n\t\t\t} );\n\t\t\tvalidator.errorList = errorList;\n\t\t}\n\t\treturn valid;\n\t},\n\n\t// https://jqueryvalidation.org/rules/\n\trules: function( command, argument ) {\n\t\tvar element = this[ 0 ],\n\t\t\tisContentEditable = typeof this.attr( \"contenteditable\" ) !== \"undefined\" && this.attr( \"contenteditable\" ) !== \"false\",\n\t\t\tsettings, staticRules, existingRules, data, param, filtered;\n\n\t\t// If nothing is selected, return empty object; can't chain anyway\n\t\tif ( element == null ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !element.form && isContentEditable ) {\n\t\t\telement.form = this.closest( \"form\" )[ 0 ];\n\t\t\telement.name = this.attr( \"name\" );\n\t\t}\n\n\t\tif ( element.form == null ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( command ) {\n\t\t\tsettings = $.data( element.form, \"validator\" ).settings;\n\t\t\tstaticRules = settings.rules;\n\t\t\texistingRules = $.validator.staticRules( element );\n\t\t\tswitch ( command ) {\n\t\t\tcase \"add\":\n\t\t\t\t$.extend( existingRules, $.validator.normalizeRule( argument ) );\n\n\t\t\t\t// Remove messages from rules, but allow them to be set separately\n\t\t\t\tdelete existingRules.messages;\n\t\t\t\tstaticRules[ element.name ] = existingRules;\n\t\t\t\tif ( argument.messages ) {\n\t\t\t\t\tsettings.messages[ element.name ] = $.extend( settings.messages[ element.name ], argument.messages );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"remove\":\n\t\t\t\tif ( !argument ) {\n\t\t\t\t\tdelete staticRules[ element.name ];\n\t\t\t\t\treturn existingRules;\n\t\t\t\t}\n\t\t\t\tfiltered = {};\n\t\t\t\t$.each( argument.split( /\\s/ ), function( index, method ) {\n\t\t\t\t\tfiltered[ method ] = existingRules[ method ];\n\t\t\t\t\tdelete existingRules[ method ];\n\t\t\t\t} );\n\t\t\t\treturn filtered;\n\t\t\t}\n\t\t}\n\n\t\tdata = $.validator.normalizeRules(\n\t\t$.extend(\n\t\t\t{},\n\t\t\t$.validator.classRules( element ),\n\t\t\t$.validator.attributeRules( element ),\n\t\t\t$.validator.dataRules( element ),\n\t\t\t$.validator.staticRules( element )\n\t\t), element );\n\n\t\t// Make sure required is at front\n\t\tif ( data.required ) {\n\t\t\tparam = data.required;\n\t\t\tdelete data.required;\n\t\t\tdata = $.extend( { required: param }, data );\n\t\t}\n\n\t\t// Make sure remote is at back\n\t\tif ( data.remote ) {\n\t\t\tparam = data.remote;\n\t\t\tdelete data.remote;\n\t\t\tdata = $.extend( data, { remote: param } );\n\t\t}\n\n\t\treturn data;\n\t}\n} );\n\n// JQuery trim is deprecated, provide a trim method based on String.prototype.trim\nvar trim = function( str ) {\n\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/trim#Polyfill\n\treturn str.replace( /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, \"\" );\n};\n\n// Custom selectors\n$.extend( $.expr.pseudos || $.expr[ \":\" ], {\t\t// '|| $.expr[ \":\" ]' here enables backwards compatibility to jQuery 1.7. Can be removed when dropping jQ 1.7.x support\n\n\t// https://jqueryvalidation.org/blank-selector/\n\tblank: function( a ) {\n\t\treturn !trim( \"\" + $( a ).val() );\n\t},\n\n\t// https://jqueryvalidation.org/filled-selector/\n\tfilled: function( a ) {\n\t\tvar val = $( a ).val();\n\t\treturn val !== null && !!trim( \"\" + val );\n\t},\n\n\t// https://jqueryvalidation.org/unchecked-selector/\n\tunchecked: function( a ) {\n\t\treturn !$( a ).prop( \"checked\" );\n\t}\n} );\n\n// Constructor for validator\n$.validator = function( options, form ) {\n\tthis.settings = $.extend( true, {}, $.validator.defaults, options );\n\tthis.currentForm = form;\n\tthis.init();\n};\n\n// https://jqueryvalidation.org/jQuery.validator.format/\n$.validator.format = function( source, params ) {\n\tif ( arguments.length === 1 ) {\n\t\treturn function() {\n\t\t\tvar args = $.makeArray( arguments );\n\t\t\targs.unshift( source );\n\t\t\treturn $.validator.format.apply( this, args );\n\t\t};\n\t}\n\tif ( params === undefined ) {\n\t\treturn source;\n\t}\n\tif ( arguments.length > 2 && params.constructor !== Array ) {\n\t\tparams = $.makeArray( arguments ).slice( 1 );\n\t}\n\tif ( params.constructor !== Array ) {\n\t\tparams = [ params ];\n\t}\n\t$.each( params, function( i, n ) {\n\t\tsource = source.replace( new RegExp( \"\\\\{\" + i + \"\\\\}\", \"g\" ), function() {\n\t\t\treturn n;\n\t\t} );\n\t} );\n\treturn source;\n};\n\n$.extend( $.validator, {\n\n\tdefaults: {\n\t\tmessages: {},\n\t\tgroups: {},\n\t\trules: {},\n\t\terrorClass: \"error\",\n\t\tpendingClass: \"pending\",\n\t\tvalidClass: \"valid\",\n\t\terrorElement: \"label\",\n\t\tfocusCleanup: false,\n\t\tfocusInvalid: true,\n\t\terrorContainer: $( [] ),\n\t\terrorLabelContainer: $( [] ),\n\t\tonsubmit: true,\n\t\tignore: \":hidden\",\n\t\tignoreTitle: false,\n\t\tonfocusin: function( element ) {\n\t\t\tthis.lastActive = element;\n\n\t\t\t// Hide error label and remove error class on focus if enabled\n\t\t\tif ( this.settings.focusCleanup ) {\n\t\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t\tthis.hideThese( this.errorsFor( element ) );\n\t\t\t}\n\t\t},\n\t\tonfocusout: function( element ) {\n\t\t\tif ( !this.checkable( element ) && ( element.name in this.submitted || !this.optional( element ) ) ) {\n\t\t\t\tthis.element( element );\n\t\t\t}\n\t\t},\n\t\tonkeyup: function( element, event ) {\n\n\t\t\t// Avoid revalidate the field when pressing one of the following keys\n\t\t\t// Shift => 16\n\t\t\t// Ctrl => 17\n\t\t\t// Alt => 18\n\t\t\t// Caps lock => 20\n\t\t\t// End => 35\n\t\t\t// Home => 36\n\t\t\t// Left arrow => 37\n\t\t\t// Up arrow => 38\n\t\t\t// Right arrow => 39\n\t\t\t// Down arrow => 40\n\t\t\t// Insert => 45\n\t\t\t// Num lock => 144\n\t\t\t// AltGr key => 225\n\t\t\tvar excludedKeys = [\n\t\t\t\t16, 17, 18, 20, 35, 36, 37,\n\t\t\t\t38, 39, 40, 45, 144, 225\n\t\t\t];\n\n\t\t\tif ( event.which === 9 && this.elementValue( element ) === \"\" || $.inArray( event.keyCode, excludedKeys ) !== -1 ) {\n\t\t\t\treturn;\n\t\t\t} else if ( element.name in this.submitted || element.name in this.invalid ) {\n\t\t\t\tthis.element( element );\n\t\t\t}\n\t\t},\n\t\tonclick: function( element ) {\n\n\t\t\t// Click on selects, radiobuttons and checkboxes\n\t\t\tif ( element.name in this.submitted ) {\n\t\t\t\tthis.element( element );\n\n\t\t\t// Or option elements, check parent select in that case\n\t\t\t} else if ( element.parentNode.name in this.submitted ) {\n\t\t\t\tthis.element( element.parentNode );\n\t\t\t}\n\t\t},\n\t\thighlight: function( element, errorClass, validClass ) {\n\t\t\tif ( element.type === \"radio\" ) {\n\t\t\t\tthis.findByName( element.name ).addClass( errorClass ).removeClass( validClass );\n\t\t\t} else {\n\t\t\t\t$( element ).addClass( errorClass ).removeClass( validClass );\n\t\t\t}\n\t\t},\n\t\tunhighlight: function( element, errorClass, validClass ) {\n\t\t\tif ( element.type === \"radio\" ) {\n\t\t\t\tthis.findByName( element.name ).removeClass( errorClass ).addClass( validClass );\n\t\t\t} else {\n\t\t\t\t$( element ).removeClass( errorClass ).addClass( validClass );\n\t\t\t}\n\t\t}\n\t},\n\n\t// https://jqueryvalidation.org/jQuery.validator.setDefaults/\n\tsetDefaults: function( settings ) {\n\t\t$.extend( $.validator.defaults, settings );\n\t},\n\n\tmessages: {\n\t\trequired: \"This field is required.\",\n\t\tremote: \"Please fix this field.\",\n\t\temail: \"Please enter a valid email address.\",\n\t\turl: \"Please enter a valid URL.\",\n\t\tdate: \"Please enter a valid date.\",\n\t\tdateISO: \"Please enter a valid date (ISO).\",\n\t\tnumber: \"Please enter a valid number.\",\n\t\tdigits: \"Please enter only digits.\",\n\t\tequalTo: \"Please enter the same value again.\",\n\t\tmaxlength: $.validator.format( \"Please enter no more than {0} characters.\" ),\n\t\tminlength: $.validator.format( \"Please enter at least {0} characters.\" ),\n\t\trangelength: $.validator.format( \"Please enter a value between {0} and {1} characters long.\" ),\n\t\trange: $.validator.format( \"Please enter a value between {0} and {1}.\" ),\n\t\tmax: $.validator.format( \"Please enter a value less than or equal to {0}.\" ),\n\t\tmin: $.validator.format( \"Please enter a value greater than or equal to {0}.\" ),\n\t\tstep: $.validator.format( \"Please enter a multiple of {0}.\" )\n\t},\n\n\tautoCreateRanges: false,\n\n\tprototype: {\n\n\t\tinit: function() {\n\t\t\tthis.labelContainer = $( this.settings.errorLabelContainer );\n\t\t\tthis.errorContext = this.labelContainer.length && this.labelContainer || $( this.currentForm );\n\t\t\tthis.containers = $( this.settings.errorContainer ).add( this.settings.errorLabelContainer );\n\t\t\tthis.submitted = {};\n\t\t\tthis.valueCache = {};\n\t\t\tthis.pendingRequest = 0;\n\t\t\tthis.pending = {};\n\t\t\tthis.invalid = {};\n\t\t\tthis.reset();\n\n\t\t\tvar currentForm = this.currentForm,\n\t\t\t\tgroups = ( this.groups = {} ),\n\t\t\t\trules;\n\t\t\t$.each( this.settings.groups, function( key, value ) {\n\t\t\t\tif ( typeof value === \"string\" ) {\n\t\t\t\t\tvalue = value.split( /\\s/ );\n\t\t\t\t}\n\t\t\t\t$.each( value, function( index, name ) {\n\t\t\t\t\tgroups[ name ] = key;\n\t\t\t\t} );\n\t\t\t} );\n\t\t\trules = this.settings.rules;\n\t\t\t$.each( rules, function( key, value ) {\n\t\t\t\trules[ key ] = $.validator.normalizeRule( value );\n\t\t\t} );\n\n\t\t\tfunction delegate( event ) {\n\t\t\t\tvar isContentEditable = typeof $( this ).attr( \"contenteditable\" ) !== \"undefined\" && $( this ).attr( \"contenteditable\" ) !== \"false\";\n\n\t\t\t\t// Set form expando on contenteditable\n\t\t\t\tif ( !this.form && isContentEditable ) {\n\t\t\t\t\tthis.form = $( this ).closest( \"form\" )[ 0 ];\n\t\t\t\t\tthis.name = $( this ).attr( \"name\" );\n\t\t\t\t}\n\n\t\t\t\t// Ignore the element if it belongs to another form. This will happen mainly\n\t\t\t\t// when setting the `form` attribute of an input to the id of another form.\n\t\t\t\tif ( currentForm !== this.form ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar validator = $.data( this.form, \"validator\" ),\n\t\t\t\t\teventType = \"on\" + event.type.replace( /^validate/, \"\" ),\n\t\t\t\t\tsettings = validator.settings;\n\t\t\t\tif ( settings[ eventType ] && !$( this ).is( settings.ignore ) ) {\n\t\t\t\t\tsettings[ eventType ].call( validator, this, event );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t$( this.currentForm )\n\t\t\t\t.on( \"focusin.validate focusout.validate keyup.validate\",\n\t\t\t\t\t\":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], \" +\n\t\t\t\t\t\"[type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], \" +\n\t\t\t\t\t\"[type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], \" +\n\t\t\t\t\t\"[type='radio'], [type='checkbox'], [contenteditable], [type='button']\", delegate )\n\n\t\t\t\t// Support: Chrome, oldIE\n\t\t\t\t// \"select\" is provided as event.target when clicking a option\n\t\t\t\t.on( \"click.validate\", \"select, option, [type='radio'], [type='checkbox']\", delegate );\n\n\t\t\tif ( this.settings.invalidHandler ) {\n\t\t\t\t$( this.currentForm ).on( \"invalid-form.validate\", this.settings.invalidHandler );\n\t\t\t}\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.form/\n\t\tform: function() {\n\t\t\tthis.checkForm();\n\t\t\t$.extend( this.submitted, this.errorMap );\n\t\t\tthis.invalid = $.extend( {}, this.errorMap );\n\t\t\tif ( !this.valid() ) {\n\t\t\t\t$( this.currentForm ).triggerHandler( \"invalid-form\", [ this ] );\n\t\t\t}\n\t\t\tthis.showErrors();\n\t\t\treturn this.valid();\n\t\t},\n\n\t\tcheckForm: function() {\n\t\t\tthis.prepareForm();\n\t\t\tfor ( var i = 0, elements = ( this.currentElements = this.elements() ); elements[ i ]; i++ ) {\n\t\t\t\tthis.check( elements[ i ] );\n\t\t\t}\n\t\t\treturn this.valid();\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.element/\n\t\telement: function( element ) {\n\t\t\tvar cleanElement = this.clean( element ),\n\t\t\t\tcheckElement = this.validationTargetFor( cleanElement ),\n\t\t\t\tv = this,\n\t\t\t\tresult = true,\n\t\t\t\trs, group;\n\n\t\t\tif ( checkElement === undefined ) {\n\t\t\t\tdelete this.invalid[ cleanElement.name ];\n\t\t\t} else {\n\t\t\t\tthis.prepareElement( checkElement );\n\t\t\t\tthis.currentElements = $( checkElement );\n\n\t\t\t\t// If this element is grouped, then validate all group elements already\n\t\t\t\t// containing a value\n\t\t\t\tgroup = this.groups[ checkElement.name ];\n\t\t\t\tif ( group ) {\n\t\t\t\t\t$.each( this.groups, function( name, testgroup ) {\n\t\t\t\t\t\tif ( testgroup === group && name !== checkElement.name ) {\n\t\t\t\t\t\t\tcleanElement = v.validationTargetFor( v.clean( v.findByName( name ) ) );\n\t\t\t\t\t\t\tif ( cleanElement && cleanElement.name in v.invalid ) {\n\t\t\t\t\t\t\t\tv.currentElements.push( cleanElement );\n\t\t\t\t\t\t\t\tresult = v.check( cleanElement ) && result;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\trs = this.check( checkElement ) !== false;\n\t\t\t\tresult = result && rs;\n\t\t\t\tif ( rs ) {\n\t\t\t\t\tthis.invalid[ checkElement.name ] = false;\n\t\t\t\t} else {\n\t\t\t\t\tthis.invalid[ checkElement.name ] = true;\n\t\t\t\t}\n\n\t\t\t\tif ( !this.numberOfInvalids() ) {\n\n\t\t\t\t\t// Hide error containers on last error\n\t\t\t\t\tthis.toHide = this.toHide.add( this.containers );\n\t\t\t\t}\n\t\t\t\tthis.showErrors();\n\n\t\t\t\t// Add aria-invalid status for screen readers\n\t\t\t\t$( element ).attr( \"aria-invalid\", !rs );\n\t\t\t}\n\n\t\t\treturn result;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.showErrors/\n\t\tshowErrors: function( errors ) {\n\t\t\tif ( errors ) {\n\t\t\t\tvar validator = this;\n\n\t\t\t\t// Add items to error list and map\n\t\t\t\t$.extend( this.errorMap, errors );\n\t\t\t\tthis.errorList = $.map( this.errorMap, function( message, name ) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tmessage: message,\n\t\t\t\t\t\telement: validator.findByName( name )[ 0 ]\n\t\t\t\t\t};\n\t\t\t\t} );\n\n\t\t\t\t// Remove items from success list\n\t\t\t\tthis.successList = $.grep( this.successList, function( element ) {\n\t\t\t\t\treturn !( element.name in errors );\n\t\t\t\t} );\n\t\t\t}\n\t\t\tif ( this.settings.showErrors ) {\n\t\t\t\tthis.settings.showErrors.call( this, this.errorMap, this.errorList );\n\t\t\t} else {\n\t\t\t\tthis.defaultShowErrors();\n\t\t\t}\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.resetForm/\n\t\tresetForm: function() {\n\t\t\tif ( $.fn.resetForm ) {\n\t\t\t\t$( this.currentForm ).resetForm();\n\t\t\t}\n\t\t\tthis.invalid = {};\n\t\t\tthis.submitted = {};\n\t\t\tthis.prepareForm();\n\t\t\tthis.hideErrors();\n\t\t\tvar elements = this.elements()\n\t\t\t\t.removeData( \"previousValue\" )\n\t\t\t\t.removeAttr( \"aria-invalid\" );\n\n\t\t\tthis.resetElements( elements );\n\t\t},\n\n\t\tresetElements: function( elements ) {\n\t\t\tvar i;\n\n\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\tfor ( i = 0; elements[ i ]; i++ ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, elements[ i ],\n\t\t\t\t\t\tthis.settings.errorClass, \"\" );\n\t\t\t\t\tthis.findByName( elements[ i ].name ).removeClass( this.settings.validClass );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\telements\n\t\t\t\t\t.removeClass( this.settings.errorClass )\n\t\t\t\t\t.removeClass( this.settings.validClass );\n\t\t\t}\n\t\t},\n\n\t\tnumberOfInvalids: function() {\n\t\t\treturn this.objectLength( this.invalid );\n\t\t},\n\n\t\tobjectLength: function( obj ) {\n\t\t\t/* jshint unused: false */\n\t\t\tvar count = 0,\n\t\t\t\ti;\n\t\t\tfor ( i in obj ) {\n\n\t\t\t\t// This check allows counting elements with empty error\n\t\t\t\t// message as invalid elements\n\t\t\t\tif ( obj[ i ] !== undefined && obj[ i ] !== null && obj[ i ] !== false ) {\n\t\t\t\t\tcount++;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn count;\n\t\t},\n\n\t\thideErrors: function() {\n\t\t\tthis.hideThese( this.toHide );\n\t\t},\n\n\t\thideThese: function( errors ) {\n\t\t\terrors.not( this.containers ).text( \"\" );\n\t\t\tthis.addWrapper( errors ).hide();\n\t\t},\n\n\t\tvalid: function() {\n\t\t\treturn this.size() === 0;\n\t\t},\n\n\t\tsize: function() {\n\t\t\treturn this.errorList.length;\n\t\t},\n\n\t\tfocusInvalid: function() {\n\t\t\tif ( this.settings.focusInvalid ) {\n\t\t\t\ttry {\n\t\t\t\t\t$( this.findLastActive() || this.errorList.length && this.errorList[ 0 ].element || [] )\n\t\t\t\t\t.filter( \":visible\" )\n\t\t\t\t\t.trigger( \"focus\" )\n\n\t\t\t\t\t// Manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find\n\t\t\t\t\t.trigger( \"focusin\" );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// Ignore IE throwing errors when focusing hidden elements\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tfindLastActive: function() {\n\t\t\tvar lastActive = this.lastActive;\n\t\t\treturn lastActive && $.grep( this.errorList, function( n ) {\n\t\t\t\treturn n.element.name === lastActive.name;\n\t\t\t} ).length === 1 && lastActive;\n\t\t},\n\n\t\telements: function() {\n\t\t\tvar validator = this,\n\t\t\t\trulesCache = {};\n\n\t\t\t// Select all valid inputs inside the form (no submit or reset buttons)\n\t\t\treturn $( this.currentForm )\n\t\t\t.find( \"input, select, textarea, [contenteditable]\" )\n\t\t\t.not( \":submit, :reset, :image, :disabled\" )\n\t\t\t.not( this.settings.ignore )\n\t\t\t.filter( function() {\n\t\t\t\tvar name = this.name || $( this ).attr( \"name\" ); // For contenteditable\n\t\t\t\tvar isContentEditable = typeof $( this ).attr( \"contenteditable\" ) !== \"undefined\" && $( this ).attr( \"contenteditable\" ) !== \"false\";\n\n\t\t\t\tif ( !name && validator.settings.debug && window.console ) {\n\t\t\t\t\tconsole.error( \"%o has no name assigned\", this );\n\t\t\t\t}\n\n\t\t\t\t// Set form expando on contenteditable\n\t\t\t\tif ( isContentEditable ) {\n\t\t\t\t\tthis.form = $( this ).closest( \"form\" )[ 0 ];\n\t\t\t\t\tthis.name = name;\n\t\t\t\t}\n\n\t\t\t\t// Ignore elements that belong to other/nested forms\n\t\t\t\tif ( this.form !== validator.currentForm ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t// Select only the first element for each name, and only those with rules specified\n\t\t\t\tif ( name in rulesCache || !validator.objectLength( $( this ).rules() ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\trulesCache[ name ] = true;\n\t\t\t\treturn true;\n\t\t\t} );\n\t\t},\n\n\t\tclean: function( selector ) {\n\t\t\treturn $( selector )[ 0 ];\n\t\t},\n\n\t\terrors: function() {\n\t\t\tvar errorClass = this.settings.errorClass.split( \" \" ).join( \".\" );\n\t\t\treturn $( this.settings.errorElement + \".\" + errorClass, this.errorContext );\n\t\t},\n\n\t\tresetInternals: function() {\n\t\t\tthis.successList = [];\n\t\t\tthis.errorList = [];\n\t\t\tthis.errorMap = {};\n\t\t\tthis.toShow = $( [] );\n\t\t\tthis.toHide = $( [] );\n\t\t},\n\n\t\treset: function() {\n\t\t\tthis.resetInternals();\n\t\t\tthis.currentElements = $( [] );\n\t\t},\n\n\t\tprepareForm: function() {\n\t\t\tthis.reset();\n\t\t\tthis.toHide = this.errors().add( this.containers );\n\t\t},\n\n\t\tprepareElement: function( element ) {\n\t\t\tthis.reset();\n\t\t\tthis.toHide = this.errorsFor( element );\n\t\t},\n\n\t\telementValue: function( element ) {\n\t\t\tvar $element = $( element ),\n\t\t\t\ttype = element.type,\n\t\t\t\tisContentEditable = typeof $element.attr( \"contenteditable\" ) !== \"undefined\" && $element.attr( \"contenteditable\" ) !== \"false\",\n\t\t\t\tval, idx;\n\n\t\t\tif ( type === \"radio\" || type === \"checkbox\" ) {\n\t\t\t\treturn this.findByName( element.name ).filter( \":checked\" ).val();\n\t\t\t} else if ( type === \"number\" && typeof element.validity !== \"undefined\" ) {\n\t\t\t\treturn element.validity.badInput ? \"NaN\" : $element.val();\n\t\t\t}\n\n\t\t\tif ( isContentEditable ) {\n\t\t\t\tval = $element.text();\n\t\t\t} else {\n\t\t\t\tval = $element.val();\n\t\t\t}\n\n\t\t\tif ( type === \"file\" ) {\n\n\t\t\t\t// Modern browser (chrome & safari)\n\t\t\t\tif ( val.substr( 0, 12 ) === \"C:\\\\fakepath\\\\\" ) {\n\t\t\t\t\treturn val.substr( 12 );\n\t\t\t\t}\n\n\t\t\t\t// Legacy browsers\n\t\t\t\t// Unix-based path\n\t\t\t\tidx = val.lastIndexOf( \"/\" );\n\t\t\t\tif ( idx >= 0 ) {\n\t\t\t\t\treturn val.substr( idx + 1 );\n\t\t\t\t}\n\n\t\t\t\t// Windows-based path\n\t\t\t\tidx = val.lastIndexOf( \"\\\\\" );\n\t\t\t\tif ( idx >= 0 ) {\n\t\t\t\t\treturn val.substr( idx + 1 );\n\t\t\t\t}\n\n\t\t\t\t// Just the file name\n\t\t\t\treturn val;\n\t\t\t}\n\n\t\t\tif ( typeof val === \"string\" ) {\n\t\t\t\treturn val.replace( /\\r/g, \"\" );\n\t\t\t}\n\t\t\treturn val;\n\t\t},\n\n\t\tcheck: function( element ) {\n\t\t\telement = this.validationTargetFor( this.clean( element ) );\n\n\t\t\tvar rules = $( element ).rules(),\n\t\t\t\trulesCount = $.map( rules, function( n, i ) {\n\t\t\t\t\treturn i;\n\t\t\t\t} ).length,\n\t\t\t\tdependencyMismatch = false,\n\t\t\t\tval = this.elementValue( element ),\n\t\t\t\tresult, method, rule, normalizer;\n\n\t\t\t// Prioritize the local normalizer defined for this element over the global one\n\t\t\t// if the former exists, otherwise user the global one in case it exists.\n\t\t\tif ( typeof rules.normalizer === \"function\" ) {\n\t\t\t\tnormalizer = rules.normalizer;\n\t\t\t} else if (\ttypeof this.settings.normalizer === \"function\" ) {\n\t\t\t\tnormalizer = this.settings.normalizer;\n\t\t\t}\n\n\t\t\t// If normalizer is defined, then call it to retreive the changed value instead\n\t\t\t// of using the real one.\n\t\t\t// Note that `this` in the normalizer is `element`.\n\t\t\tif ( normalizer ) {\n\t\t\t\tval = normalizer.call( element, val );\n\n\t\t\t\t// Delete the normalizer from rules to avoid treating it as a pre-defined method.\n\t\t\t\tdelete rules.normalizer;\n\t\t\t}\n\n\t\t\tfor ( method in rules ) {\n\t\t\t\trule = { method: method, parameters: rules[ method ] };\n\t\t\t\ttry {\n\t\t\t\t\tresult = $.validator.methods[ method ].call( this, val, element, rule.parameters );\n\n\t\t\t\t\t// If a method indicates that the field is optional and therefore valid,\n\t\t\t\t\t// don't mark it as valid when there are no other rules\n\t\t\t\t\tif ( result === \"dependency-mismatch\" && rulesCount === 1 ) {\n\t\t\t\t\t\tdependencyMismatch = true;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tdependencyMismatch = false;\n\n\t\t\t\t\tif ( result === \"pending\" ) {\n\t\t\t\t\t\tthis.toHide = this.toHide.not( this.errorsFor( element ) );\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !result ) {\n\t\t\t\t\t\tthis.formatAndAdd( element, rule );\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t} catch ( e ) {\n\t\t\t\t\tif ( this.settings.debug && window.console ) {\n\t\t\t\t\t\tconsole.log( \"Exception occurred when checking element \" + element.id + \", check the '\" + rule.method + \"' method.\", e );\n\t\t\t\t\t}\n\t\t\t\t\tif ( e instanceof TypeError ) {\n\t\t\t\t\t\te.message += \". Exception occurred when checking element \" + element.id + \", check the '\" + rule.method + \"' method.\";\n\t\t\t\t\t}\n\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( dependencyMismatch ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( this.objectLength( rules ) ) {\n\t\t\t\tthis.successList.push( element );\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t// Return the custom message for the given element and validation method\n\t\t// specified in the element's HTML5 data attribute\n\t\t// return the generic message if present and no method specific message is present\n\t\tcustomDataMessage: function( element, method ) {\n\t\t\treturn $( element ).data( \"msg\" + method.charAt( 0 ).toUpperCase() +\n\t\t\t\tmethod.substring( 1 ).toLowerCase() ) || $( element ).data( \"msg\" );\n\t\t},\n\n\t\t// Return the custom message for the given element name and validation method\n\t\tcustomMessage: function( name, method ) {\n\t\t\tvar m = this.settings.messages[ name ];\n\t\t\treturn m && ( m.constructor === String ? m : m[ method ] );\n\t\t},\n\n\t\t// Return the first defined argument, allowing empty strings\n\t\tfindDefined: function() {\n\t\t\tfor ( var i = 0; i < arguments.length; i++ ) {\n\t\t\t\tif ( arguments[ i ] !== undefined ) {\n\t\t\t\t\treturn arguments[ i ];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn undefined;\n\t\t},\n\n\t\t// The second parameter 'rule' used to be a string, and extended to an object literal\n\t\t// of the following form:\n\t\t// rule = {\n\t\t// method: \"method name\",\n\t\t// parameters: \"the given method parameters\"\n\t\t// }\n\t\t//\n\t\t// The old behavior still supported, kept to maintain backward compatibility with\n\t\t// old code, and will be removed in the next major release.\n\t\tdefaultMessage: function( element, rule ) {\n\t\t\tif ( typeof rule === \"string\" ) {\n\t\t\t\trule = { method: rule };\n\t\t\t}\n\n\t\t\tvar message = this.findDefined(\n\t\t\t\t\tthis.customMessage( element.name, rule.method ),\n\t\t\t\t\tthis.customDataMessage( element, rule.method ),\n\n\t\t\t\t\t// 'title' is never undefined, so handle empty string as undefined\n\t\t\t\t\t!this.settings.ignoreTitle && element.title || undefined,\n\t\t\t\t\t$.validator.messages[ rule.method ],\n\t\t\t\t\t\"<strong>Warning: No message defined for \" + element.name + \"</strong>\"\n\t\t\t\t),\n\t\t\t\ttheregex = /\\$?\\{(\\d+)\\}/g;\n\t\t\tif ( typeof message === \"function\" ) {\n\t\t\t\tmessage = message.call( this, rule.parameters, element );\n\t\t\t} else if ( theregex.test( message ) ) {\n\t\t\t\tmessage = $.validator.format( message.replace( theregex, \"{$1}\" ), rule.parameters );\n\t\t\t}\n\n\t\t\treturn message;\n\t\t},\n\n\t\tformatAndAdd: function( element, rule ) {\n\t\t\tvar message = this.defaultMessage( element, rule );\n\n\t\t\tthis.errorList.push( {\n\t\t\t\tmessage: message,\n\t\t\t\telement: element,\n\t\t\t\tmethod: rule.method\n\t\t\t} );\n\n\t\t\tthis.errorMap[ element.name ] = message;\n\t\t\tthis.submitted[ element.name ] = message;\n\t\t},\n\n\t\taddWrapper: function( toToggle ) {\n\t\t\tif ( this.settings.wrapper ) {\n\t\t\t\ttoToggle = toToggle.add( toToggle.parent( this.settings.wrapper ) );\n\t\t\t}\n\t\t\treturn toToggle;\n\t\t},\n\n\t\tdefaultShowErrors: function() {\n\t\t\tvar i, elements, error;\n\t\t\tfor ( i = 0; this.errorList[ i ]; i++ ) {\n\t\t\t\terror = this.errorList[ i ];\n\t\t\t\tif ( this.settings.highlight ) {\n\t\t\t\t\tthis.settings.highlight.call( this, error.element, this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t\tthis.showLabel( error.element, error.message );\n\t\t\t}\n\t\t\tif ( this.errorList.length ) {\n\t\t\t\tthis.toShow = this.toShow.add( this.containers );\n\t\t\t}\n\t\t\tif ( this.settings.success ) {\n\t\t\t\tfor ( i = 0; this.successList[ i ]; i++ ) {\n\t\t\t\t\tthis.showLabel( this.successList[ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\tfor ( i = 0, elements = this.validElements(); elements[ i ]; i++ ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, elements[ i ], this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.toHide = this.toHide.not( this.toShow );\n\t\t\tthis.hideErrors();\n\t\t\tthis.addWrapper( this.toShow ).show();\n\t\t},\n\n\t\tvalidElements: function() {\n\t\t\treturn this.currentElements.not( this.invalidElements() );\n\t\t},\n\n\t\tinvalidElements: function() {\n\t\t\treturn $( this.errorList ).map( function() {\n\t\t\t\treturn this.element;\n\t\t\t} );\n\t\t},\n\n\t\tshowLabel: function( element, message ) {\n\t\t\tvar place, group, errorID, v,\n\t\t\t\terror = this.errorsFor( element ),\n\t\t\t\telementID = this.idOrName( element ),\n\t\t\t\tdescribedBy = $( element ).attr( \"aria-describedby\" );\n\n\t\t\tif ( error.length ) {\n\n\t\t\t\t// Refresh error/success class\n\t\t\t\terror.removeClass( this.settings.validClass ).addClass( this.settings.errorClass );\n\n\t\t\t\t// Replace message on existing label\n\t\t\t\terror.html( message );\n\t\t\t} else {\n\n\t\t\t\t// Create error element\n\t\t\t\terror = $( \"<\" + this.settings.errorElement + \">\" )\n\t\t\t\t\t.attr( \"id\", elementID + \"-error\" )\n\t\t\t\t\t.addClass( this.settings.errorClass )\n\t\t\t\t\t.html( message || \"\" );\n\n\t\t\t\t// Maintain reference to the element to be placed into the DOM\n\t\t\t\tplace = error;\n\t\t\t\tif ( this.settings.wrapper ) {\n\n\t\t\t\t\t// Make sure the element is visible, even in IE\n\t\t\t\t\t// actually showing the wrapped element is handled elsewhere\n\t\t\t\t\tplace = error.hide().show().wrap( \"<\" + this.settings.wrapper + \"/>\" ).parent();\n\t\t\t\t}\n\t\t\t\tif ( this.labelContainer.length ) {\n\t\t\t\t\tthis.labelContainer.append( place );\n\t\t\t\t} else if ( this.settings.errorPlacement ) {\n\t\t\t\t\tthis.settings.errorPlacement.call( this, place, $( element ) );\n\t\t\t\t} else {\n\t\t\t\t\tplace.insertAfter( element );\n\t\t\t\t}\n\n\t\t\t\t// Link error back to the element\n\t\t\t\tif ( error.is( \"label\" ) ) {\n\n\t\t\t\t\t// If the error is a label, then associate using 'for'\n\t\t\t\t\terror.attr( \"for\", elementID );\n\n\t\t\t\t\t// If the element is not a child of an associated label, then it's necessary\n\t\t\t\t\t// to explicitly apply aria-describedby\n\t\t\t\t} else if ( error.parents( \"label[for='\" + this.escapeCssMeta( elementID ) + \"']\" ).length === 0 ) {\n\t\t\t\t\terrorID = error.attr( \"id\" );\n\n\t\t\t\t\t// Respect existing non-error aria-describedby\n\t\t\t\t\tif ( !describedBy ) {\n\t\t\t\t\t\tdescribedBy = errorID;\n\t\t\t\t\t} else if ( !describedBy.match( new RegExp( \"\\\\b\" + this.escapeCssMeta( errorID ) + \"\\\\b\" ) ) ) {\n\n\t\t\t\t\t\t// Add to end of list if not already present\n\t\t\t\t\t\tdescribedBy += \" \" + errorID;\n\t\t\t\t\t}\n\t\t\t\t\t$( element ).attr( \"aria-describedby\", describedBy );\n\n\t\t\t\t\t// If this element is grouped, then assign to all elements in the same group\n\t\t\t\t\tgroup = this.groups[ element.name ];\n\t\t\t\t\tif ( group ) {\n\t\t\t\t\t\tv = this;\n\t\t\t\t\t\t$.each( v.groups, function( name, testgroup ) {\n\t\t\t\t\t\t\tif ( testgroup === group ) {\n\t\t\t\t\t\t\t\t$( \"[name='\" + v.escapeCssMeta( name ) + \"']\", v.currentForm )\n\t\t\t\t\t\t\t\t\t.attr( \"aria-describedby\", error.attr( \"id\" ) );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( !message && this.settings.success ) {\n\t\t\t\terror.text( \"\" );\n\t\t\t\tif ( typeof this.settings.success === \"string\" ) {\n\t\t\t\t\terror.addClass( this.settings.success );\n\t\t\t\t} else {\n\t\t\t\t\tthis.settings.success( error, element );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.toShow = this.toShow.add( error );\n\t\t},\n\n\t\terrorsFor: function( element ) {\n\t\t\tvar name = this.escapeCssMeta( this.idOrName( element ) ),\n\t\t\t\tdescriber = $( element ).attr( \"aria-describedby\" ),\n\t\t\t\tselector = \"label[for='\" + name + \"'], label[for='\" + name + \"'] *\";\n\n\t\t\t// 'aria-describedby' should directly reference the error element\n\t\t\tif ( describer ) {\n\t\t\t\tselector = selector + \", #\" + this.escapeCssMeta( describer )\n\t\t\t\t\t.replace( /\\s+/g, \", #\" );\n\t\t\t}\n\n\t\t\treturn this\n\t\t\t\t.errors()\n\t\t\t\t.filter( selector );\n\t\t},\n\n\t\t// See https://api.jquery.com/category/selectors/, for CSS\n\t\t// meta-characters that should be escaped in order to be used with JQuery\n\t\t// as a literal part of a name/id or any selector.\n\t\tescapeCssMeta: function( string ) {\n\t\t\tif ( string === undefined ) {\n\t\t\t\treturn \"\";\n\t\t\t}\n\n\t\t\treturn string.replace( /([\\\\!\"#$%&'()*+,./:;<=>?@\\[\\]^`{|}~])/g, \"\\\\$1\" );\n\t\t},\n\n\t\tidOrName: function( element ) {\n\t\t\treturn this.groups[ element.name ] || ( this.checkable( element ) ? element.name : element.id || element.name );\n\t\t},\n\n\t\tvalidationTargetFor: function( element ) {\n\n\t\t\t// If radio/checkbox, validate first element in group instead\n\t\t\tif ( this.checkable( element ) ) {\n\t\t\t\telement = this.findByName( element.name );\n\t\t\t}\n\n\t\t\t// Always apply ignore filter\n\t\t\treturn $( element ).not( this.settings.ignore )[ 0 ];\n\t\t},\n\n\t\tcheckable: function( element ) {\n\t\t\treturn ( /radio|checkbox/i ).test( element.type );\n\t\t},\n\n\t\tfindByName: function( name ) {\n\t\t\treturn $( this.currentForm ).find( \"[name='\" + this.escapeCssMeta( name ) + \"']\" );\n\t\t},\n\n\t\tgetLength: function( value, element ) {\n\t\t\tswitch ( element.nodeName.toLowerCase() ) {\n\t\t\tcase \"select\":\n\t\t\t\treturn $( \"option:selected\", element ).length;\n\t\t\tcase \"input\":\n\t\t\t\tif ( this.checkable( element ) ) {\n\t\t\t\t\treturn this.findByName( element.name ).filter( \":checked\" ).length;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn value.length;\n\t\t},\n\n\t\tdepend: function( param, element ) {\n\t\t\treturn this.dependTypes[ typeof param ] ? this.dependTypes[ typeof param ]( param, element ) : true;\n\t\t},\n\n\t\tdependTypes: {\n\t\t\t\"boolean\": function( param ) {\n\t\t\t\treturn param;\n\t\t\t},\n\t\t\t\"string\": function( param, element ) {\n\t\t\t\treturn !!$( param, element.form ).length;\n\t\t\t},\n\t\t\t\"function\": function( param, element ) {\n\t\t\t\treturn param( element );\n\t\t\t}\n\t\t},\n\n\t\toptional: function( element ) {\n\t\t\tvar val = this.elementValue( element );\n\t\t\treturn !$.validator.methods.required.call( this, val, element ) && \"dependency-mismatch\";\n\t\t},\n\n\t\tstartRequest: function( element ) {\n\t\t\tif ( !this.pending[ element.name ] ) {\n\t\t\t\tthis.pendingRequest++;\n\t\t\t\t$( element ).addClass( this.settings.pendingClass );\n\t\t\t\tthis.pending[ element.name ] = true;\n\t\t\t}\n\t\t},\n\n\t\tstopRequest: function( element, valid ) {\n\t\t\tthis.pendingRequest--;\n\n\t\t\t// Sometimes synchronization fails, make sure pendingRequest is never < 0\n\t\t\tif ( this.pendingRequest < 0 ) {\n\t\t\t\tthis.pendingRequest = 0;\n\t\t\t}\n\t\t\tdelete this.pending[ element.name ];\n\t\t\t$( element ).removeClass( this.settings.pendingClass );\n\t\t\tif ( valid && this.pendingRequest === 0 && this.formSubmitted && this.form() && this.pendingRequest === 0 ) {\n\t\t\t\t$( this.currentForm ).trigger( \"submit\" );\n\n\t\t\t\t// Remove the hidden input that was used as a replacement for the\n\t\t\t\t// missing submit button. The hidden input is added by `handle()`\n\t\t\t\t// to ensure that the value of the used submit button is passed on\n\t\t\t\t// for scripted submits triggered by this method\n\t\t\t\tif ( this.submitButton ) {\n\t\t\t\t\t$( \"input:hidden[name='\" + this.submitButton.name + \"']\", this.currentForm ).remove();\n\t\t\t\t}\n\n\t\t\t\tthis.formSubmitted = false;\n\t\t\t} else if ( !valid && this.pendingRequest === 0 && this.formSubmitted ) {\n\t\t\t\t$( this.currentForm ).triggerHandler( \"invalid-form\", [ this ] );\n\t\t\t\tthis.formSubmitted = false;\n\t\t\t}\n\t\t},\n\n\t\tpreviousValue: function( element, method ) {\n\t\t\tmethod = typeof method === \"string\" && method || \"remote\";\n\n\t\t\treturn $.data( element, \"previousValue\" ) || $.data( element, \"previousValue\", {\n\t\t\t\told: null,\n\t\t\t\tvalid: true,\n\t\t\t\tmessage: this.defaultMessage( element, { method: method } )\n\t\t\t} );\n\t\t},\n\n\t\t// Cleans up all forms and elements, removes validator-specific events\n\t\tdestroy: function() {\n\t\t\tthis.resetForm();\n\n\t\t\t$( this.currentForm )\n\t\t\t\t.off( \".validate\" )\n\t\t\t\t.removeData( \"validator\" )\n\t\t\t\t.find( \".validate-equalTo-blur\" )\n\t\t\t\t\t.off( \".validate-equalTo\" )\n\t\t\t\t\t.removeClass( \"validate-equalTo-blur\" )\n\t\t\t\t.find( \".validate-lessThan-blur\" )\n\t\t\t\t\t.off( \".validate-lessThan\" )\n\t\t\t\t\t.removeClass( \"validate-lessThan-blur\" )\n\t\t\t\t.find( \".validate-lessThanEqual-blur\" )\n\t\t\t\t\t.off( \".validate-lessThanEqual\" )\n\t\t\t\t\t.removeClass( \"validate-lessThanEqual-blur\" )\n\t\t\t\t.find( \".validate-greaterThanEqual-blur\" )\n\t\t\t\t\t.off( \".validate-greaterThanEqual\" )\n\t\t\t\t\t.removeClass( \"validate-greaterThanEqual-blur\" )\n\t\t\t\t.find( \".validate-greaterThan-blur\" )\n\t\t\t\t\t.off( \".validate-greaterThan\" )\n\t\t\t\t\t.removeClass( \"validate-greaterThan-blur\" );\n\t\t}\n\n\t},\n\n\tclassRuleSettings: {\n\t\trequired: { required: true },\n\t\temail: { email: true },\n\t\turl: { url: true },\n\t\tdate: { date: true },\n\t\tdateISO: { dateISO: true },\n\t\tnumber: { number: true },\n\t\tdigits: { digits: true },\n\t\tcreditcard: { creditcard: true }\n\t},\n\n\taddClassRules: function( className, rules ) {\n\t\tif ( className.constructor === String ) {\n\t\t\tthis.classRuleSettings[ className ] = rules;\n\t\t} else {\n\t\t\t$.extend( this.classRuleSettings, className );\n\t\t}\n\t},\n\n\tclassRules: function( element ) {\n\t\tvar rules = {},\n\t\t\tclasses = $( element ).attr( \"class\" );\n\n\t\tif ( classes ) {\n\t\t\t$.each( classes.split( \" \" ), function() {\n\t\t\t\tif ( this in $.validator.classRuleSettings ) {\n\t\t\t\t\t$.extend( rules, $.validator.classRuleSettings[ this ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t\treturn rules;\n\t},\n\n\tnormalizeAttributeRule: function( rules, type, method, value ) {\n\n\t\t// Convert the value to a number for number inputs, and for text for backwards compability\n\t\t// allows type=\"date\" and others to be compared as strings\n\t\tif ( /min|max|step/.test( method ) && ( type === null || /number|range|text/.test( type ) ) ) {\n\t\t\tvalue = Number( value );\n\n\t\t\t// Support Opera Mini, which returns NaN for undefined minlength\n\t\t\tif ( isNaN( value ) ) {\n\t\t\t\tvalue = undefined;\n\t\t\t}\n\t\t}\n\n\t\tif ( value || value === 0 ) {\n\t\t\trules[ method ] = value;\n\t\t} else if ( type === method && type !== \"range\" ) {\n\n\t\t\t// Exception: the jquery validate 'range' method\n\t\t\t// does not test for the html5 'range' type\n\t\t\trules[ type === \"date\" ? \"dateISO\" : method ] = true;\n\t\t}\n\t},\n\n\tattributeRules: function( element ) {\n\t\tvar rules = {},\n\t\t\t$element = $( element ),\n\t\t\ttype = element.getAttribute( \"type\" ),\n\t\t\tmethod, value;\n\n\t\tfor ( method in $.validator.methods ) {\n\n\t\t\t// Support for <input required> in both html5 and older browsers\n\t\t\tif ( method === \"required\" ) {\n\t\t\t\tvalue = element.getAttribute( method );\n\n\t\t\t\t// Some browsers return an empty string for the required attribute\n\t\t\t\t// and non-HTML5 browsers might have required=\"\" markup\n\t\t\t\tif ( value === \"\" ) {\n\t\t\t\t\tvalue = true;\n\t\t\t\t}\n\n\t\t\t\t// Force non-HTML5 browsers to return bool\n\t\t\t\tvalue = !!value;\n\t\t\t} else {\n\t\t\t\tvalue = $element.attr( method );\n\t\t\t}\n\n\t\t\tthis.normalizeAttributeRule( rules, type, method, value );\n\t\t}\n\n\t\t// 'maxlength' may be returned as -1, 2147483647 ( IE ) and 524288 ( safari ) for text inputs\n\t\tif ( rules.maxlength && /-1|2147483647|524288/.test( rules.maxlength ) ) {\n\t\t\tdelete rules.maxlength;\n\t\t}\n\n\t\treturn rules;\n\t},\n\n\tdataRules: function( element ) {\n\t\tvar rules = {},\n\t\t\t$element = $( element ),\n\t\t\ttype = element.getAttribute( \"type\" ),\n\t\t\tmethod, value;\n\n\t\tfor ( method in $.validator.methods ) {\n\t\t\tvalue = $element.data( \"rule\" + method.charAt( 0 ).toUpperCase() + method.substring( 1 ).toLowerCase() );\n\n\t\t\t// Cast empty attributes like `data-rule-required` to `true`\n\t\t\tif ( value === \"\" ) {\n\t\t\t\tvalue = true;\n\t\t\t}\n\n\t\t\tthis.normalizeAttributeRule( rules, type, method, value );\n\t\t}\n\t\treturn rules;\n\t},\n\n\tstaticRules: function( element ) {\n\t\tvar rules = {},\n\t\t\tvalidator = $.data( element.form, \"validator\" );\n\n\t\tif ( validator.settings.rules ) {\n\t\t\trules = $.validator.normalizeRule( validator.settings.rules[ element.name ] ) || {};\n\t\t}\n\t\treturn rules;\n\t},\n\n\tnormalizeRules: function( rules, element ) {\n\n\t\t// Handle dependency check\n\t\t$.each( rules, function( prop, val ) {\n\n\t\t\t// Ignore rule when param is explicitly false, eg. required:false\n\t\t\tif ( val === false ) {\n\t\t\t\tdelete rules[ prop ];\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( val.param || val.depends ) {\n\t\t\t\tvar keepRule = true;\n\t\t\t\tswitch ( typeof val.depends ) {\n\t\t\t\tcase \"string\":\n\t\t\t\t\tkeepRule = !!$( val.depends, element.form ).length;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"function\":\n\t\t\t\t\tkeepRule = val.depends.call( element, element );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif ( keepRule ) {\n\t\t\t\t\trules[ prop ] = val.param !== undefined ? val.param : true;\n\t\t\t\t} else {\n\t\t\t\t\t$.data( element.form, \"validator\" ).resetElements( $( element ) );\n\t\t\t\t\tdelete rules[ prop ];\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\t// Evaluate parameters\n\t\t$.each( rules, function( rule, parameter ) {\n\t\t\trules[ rule ] = typeof parameter === \"function\" && rule !== \"normalizer\" ? parameter( element ) : parameter;\n\t\t} );\n\n\t\t// Clean number parameters\n\t\t$.each( [ \"minlength\", \"maxlength\" ], function() {\n\t\t\tif ( rules[ this ] ) {\n\t\t\t\trules[ this ] = Number( rules[ this ] );\n\t\t\t}\n\t\t} );\n\t\t$.each( [ \"rangelength\", \"range\" ], function() {\n\t\t\tvar parts;\n\t\t\tif ( rules[ this ] ) {\n\t\t\t\tif ( Array.isArray( rules[ this ] ) ) {\n\t\t\t\t\trules[ this ] = [ Number( rules[ this ][ 0 ] ), Number( rules[ this ][ 1 ] ) ];\n\t\t\t\t} else if ( typeof rules[ this ] === \"string\" ) {\n\t\t\t\t\tparts = rules[ this ].replace( /[\\[\\]]/g, \"\" ).split( /[\\s,]+/ );\n\t\t\t\t\trules[ this ] = [ Number( parts[ 0 ] ), Number( parts[ 1 ] ) ];\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\tif ( $.validator.autoCreateRanges ) {\n\n\t\t\t// Auto-create ranges\n\t\t\tif ( rules.min != null && rules.max != null ) {\n\t\t\t\trules.range = [ rules.min, rules.max ];\n\t\t\t\tdelete rules.min;\n\t\t\t\tdelete rules.max;\n\t\t\t}\n\t\t\tif ( rules.minlength != null && rules.maxlength != null ) {\n\t\t\t\trules.rangelength = [ rules.minlength, rules.maxlength ];\n\t\t\t\tdelete rules.minlength;\n\t\t\t\tdelete rules.maxlength;\n\t\t\t}\n\t\t}\n\n\t\treturn rules;\n\t},\n\n\t// Converts a simple string to a {string: true} rule, e.g., \"required\" to {required:true}\n\tnormalizeRule: function( data ) {\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tvar transformed = {};\n\t\t\t$.each( data.split( /\\s/ ), function() {\n\t\t\t\ttransformed[ this ] = true;\n\t\t\t} );\n\t\t\tdata = transformed;\n\t\t}\n\t\treturn data;\n\t},\n\n\t// https://jqueryvalidation.org/jQuery.validator.addMethod/\n\taddMethod: function( name, method, message ) {\n\t\t$.validator.methods[ name ] = method;\n\t\t$.validator.messages[ name ] = message !== undefined ? message : $.validator.messages[ name ];\n\t\tif ( method.length < 3 ) {\n\t\t\t$.validator.addClassRules( name, $.validator.normalizeRule( name ) );\n\t\t}\n\t},\n\n\t// https://jqueryvalidation.org/jQuery.validator.methods/\n\tmethods: {\n\n\t\t// https://jqueryvalidation.org/required-method/\n\t\trequired: function( value, element, param ) {\n\n\t\t\t// Check if dependency is met\n\t\t\tif ( !this.depend( param, element ) ) {\n\t\t\t\treturn \"dependency-mismatch\";\n\t\t\t}\n\t\t\tif ( element.nodeName.toLowerCase() === \"select\" ) {\n\n\t\t\t\t// Could be an array for select-multiple or a string, both are fine this way\n\t\t\t\tvar val = $( element ).val();\n\t\t\t\treturn val && val.length > 0;\n\t\t\t}\n\t\t\tif ( this.checkable( element ) ) {\n\t\t\t\treturn this.getLength( value, element ) > 0;\n\t\t\t}\n\t\t\treturn value !== undefined && value !== null && value.length > 0;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/email-method/\n\t\temail: function( value, element ) {\n\n\t\t\t// From https://html.spec.whatwg.org/multipage/forms.html#valid-e-mail-address\n\t\t\t// Retrieved 2014-01-14\n\t\t\t// If you have a problem with this implementation, report a bug against the above spec\n\t\t\t// Or use custom methods to implement your own email validation\n\t\t\treturn this.optional( element ) || /^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/url-method/\n\t\turl: function( value, element ) {\n\n\t\t\t// Copyright (c) 2010-2013 Diego Perini, MIT licensed\n\t\t\t// https://gist.github.com/dperini/729294\n\t\t\t// see also https://mathiasbynens.be/demo/url-regex\n\t\t\t// modified to allow protocol-relative URLs\n\t\t\treturn this.optional( element ) || /^(?:(?:(?:https?|ftp):)?\\/\\/)(?:(?:[^\\]\\[?\\/<~#`!@$^&*()+=}|:\";',>{ ]|%[0-9A-Fa-f]{2})+(?::(?:[^\\]\\[?\\/<~#`!@$^&*()+=}|:\";',>{ ]|%[0-9A-Fa-f]{2})*)?@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z0-9\\u00a1-\\uffff][a-z0-9\\u00a1-\\uffff_-]{0,62})?[a-z0-9\\u00a1-\\uffff]\\.)+(?:[a-z\\u00a1-\\uffff]{2,}\\.?))(?::\\d{2,5})?(?:[/?#]\\S*)?$/i.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/date-method/\n\t\tdate: ( function() {\n\t\t\tvar called = false;\n\n\t\t\treturn function( value, element ) {\n\t\t\t\tif ( !called ) {\n\t\t\t\t\tcalled = true;\n\t\t\t\t\tif ( this.settings.debug && window.console ) {\n\t\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t\t\"The `date` method is deprecated and will be removed in version '2.0.0'.\\n\" +\n\t\t\t\t\t\t\t\"Please don't use it, since it relies on the Date constructor, which\\n\" +\n\t\t\t\t\t\t\t\"behaves very differently across browsers and locales. Use `dateISO`\\n\" +\n\t\t\t\t\t\t\t\"instead or one of the locale specific methods in `localizations/`\\n\" +\n\t\t\t\t\t\t\t\"and `additional-methods.js`.\"\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn this.optional( element ) || !/Invalid|NaN/.test( new Date( value ).toString() );\n\t\t\t};\n\t\t}() ),\n\n\t\t// https://jqueryvalidation.org/dateISO-method/\n\t\tdateISO: function( value, element ) {\n\t\t\treturn this.optional( element ) || /^\\d{4}[\\/\\-](0?[1-9]|1[012])[\\/\\-](0?[1-9]|[12][0-9]|3[01])$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/number-method/\n\t\tnumber: function( value, element ) {\n\t\t\treturn this.optional( element ) || /^(?:-?\\d+|-?\\d{1,3}(?:,\\d{3})+)?(?:\\.\\d+)?$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/digits-method/\n\t\tdigits: function( value, element ) {\n\t\t\treturn this.optional( element ) || /^\\d+$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/minlength-method/\n\t\tminlength: function( value, element, param ) {\n\t\t\tvar length = Array.isArray( value ) ? value.length : this.getLength( value, element );\n\t\t\treturn this.optional( element ) || length >= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/maxlength-method/\n\t\tmaxlength: function( value, element, param ) {\n\t\t\tvar length = Array.isArray( value ) ? value.length : this.getLength( value, element );\n\t\t\treturn this.optional( element ) || length <= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/rangelength-method/\n\t\trangelength: function( value, element, param ) {\n\t\t\tvar length = Array.isArray( value ) ? value.length : this.getLength( value, element );\n\t\t\treturn this.optional( element ) || ( length >= param[ 0 ] && length <= param[ 1 ] );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/min-method/\n\t\tmin: function( value, element, param ) {\n\t\t\treturn this.optional( element ) || value >= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/max-method/\n\t\tmax: function( value, element, param ) {\n\t\t\treturn this.optional( element ) || value <= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/range-method/\n\t\trange: function( value, element, param ) {\n\t\t\treturn this.optional( element ) || ( value >= param[ 0 ] && value <= param[ 1 ] );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/step-method/\n\t\tstep: function( value, element, param ) {\n\t\t\tvar type = $( element ).attr( \"type\" ),\n\t\t\t\terrorMessage = \"Step attribute on input type \" + type + \" is not supported.\",\n\t\t\t\tsupportedTypes = [ \"text\", \"number\", \"range\" ],\n\t\t\t\tre = new RegExp( \"\\\\b\" + type + \"\\\\b\" ),\n\t\t\t\tnotSupported = type && !re.test( supportedTypes.join() ),\n\t\t\t\tdecimalPlaces = function( num ) {\n\t\t\t\t\tvar match = ( \"\" + num ).match( /(?:\\.(\\d+))?$/ );\n\t\t\t\t\tif ( !match ) {\n\t\t\t\t\t\treturn 0;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Number of digits right of decimal point.\n\t\t\t\t\treturn match[ 1 ] ? match[ 1 ].length : 0;\n\t\t\t\t},\n\t\t\t\ttoInt = function( num ) {\n\t\t\t\t\treturn Math.round( num * Math.pow( 10, decimals ) );\n\t\t\t\t},\n\t\t\t\tvalid = true,\n\t\t\t\tdecimals;\n\n\t\t\t// Works only for text, number and range input types\n\t\t\t// TODO find a way to support input types date, datetime, datetime-local, month, time and week\n\t\t\tif ( notSupported ) {\n\t\t\t\tthrow new Error( errorMessage );\n\t\t\t}\n\n\t\t\tdecimals = decimalPlaces( param );\n\n\t\t\t// Value can't have too many decimals\n\t\t\tif ( decimalPlaces( value ) > decimals || toInt( value ) % toInt( param ) !== 0 ) {\n\t\t\t\tvalid = false;\n\t\t\t}\n\n\t\t\treturn this.optional( element ) || valid;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/equalTo-method/\n\t\tequalTo: function( value, element, param ) {\n\n\t\t\t// Bind to the blur event of the target in order to revalidate whenever the target field is updated\n\t\t\tvar target = $( param );\n\t\t\tif ( this.settings.onfocusout && target.not( \".validate-equalTo-blur\" ).length ) {\n\t\t\t\ttarget.addClass( \"validate-equalTo-blur\" ).on( \"blur.validate-equalTo\", function() {\n\t\t\t\t\t$( element ).valid();\n\t\t\t\t} );\n\t\t\t}\n\t\t\treturn value === target.val();\n\t\t},\n\n\t\t// https://jqueryvalidation.org/remote-method/\n\t\tremote: function( value, element, param, method ) {\n\t\t\tif ( this.optional( element ) ) {\n\t\t\t\treturn \"dependency-mismatch\";\n\t\t\t}\n\n\t\t\tmethod = typeof method === \"string\" && method || \"remote\";\n\n\t\t\tvar previous = this.previousValue( element, method ),\n\t\t\t\tvalidator, data, optionDataString;\n\n\t\t\tif ( !this.settings.messages[ element.name ] ) {\n\t\t\t\tthis.settings.messages[ element.name ] = {};\n\t\t\t}\n\t\t\tprevious.originalMessage = previous.originalMessage || this.settings.messages[ element.name ][ method ];\n\t\t\tthis.settings.messages[ element.name ][ method ] = previous.message;\n\n\t\t\tparam = typeof param === \"string\" && { url: param } || param;\n\t\t\toptionDataString = $.param( $.extend( { data: value }, param.data ) );\n\t\t\tif ( previous.old === optionDataString ) {\n\t\t\t\treturn previous.valid;\n\t\t\t}\n\n\t\t\tprevious.old = optionDataString;\n\t\t\tvalidator = this;\n\t\t\tthis.startRequest( element );\n\t\t\tdata = {};\n\t\t\tdata[ element.name ] = value;\n\t\t\t$.ajax( $.extend( true, {\n\t\t\t\tmode: \"abort\",\n\t\t\t\tport: \"validate\" + element.name,\n\t\t\t\tdataType: \"json\",\n\t\t\t\tdata: data,\n\t\t\t\tcontext: validator.currentForm,\n\t\t\t\tsuccess: function( response ) {\n\t\t\t\t\tvar valid = response === true || response === \"true\",\n\t\t\t\t\t\terrors, message, submitted;\n\n\t\t\t\t\tvalidator.settings.messages[ element.name ][ method ] = previous.originalMessage;\n\t\t\t\t\tif ( valid ) {\n\t\t\t\t\t\tsubmitted = validator.formSubmitted;\n\t\t\t\t\t\tvalidator.resetInternals();\n\t\t\t\t\t\tvalidator.toHide = validator.errorsFor( element );\n\t\t\t\t\t\tvalidator.formSubmitted = submitted;\n\t\t\t\t\t\tvalidator.successList.push( element );\n\t\t\t\t\t\tvalidator.invalid[ element.name ] = false;\n\t\t\t\t\t\tvalidator.showErrors();\n\t\t\t\t\t} else {\n\t\t\t\t\t\terrors = {};\n\t\t\t\t\t\tmessage = response || validator.defaultMessage( element, { method: method, parameters: value } );\n\t\t\t\t\t\terrors[ element.name ] = previous.message = message;\n\t\t\t\t\t\tvalidator.invalid[ element.name ] = true;\n\t\t\t\t\t\tvalidator.showErrors( errors );\n\t\t\t\t\t}\n\t\t\t\t\tprevious.valid = valid;\n\t\t\t\t\tvalidator.stopRequest( element, valid );\n\t\t\t\t}\n\t\t\t}, param ) );\n\t\t\treturn \"pending\";\n\t\t}\n\t}\n\n} );\n\n// Ajax mode: abort\n// usage: $.ajax({ mode: \"abort\"[, port: \"uniqueport\"]});\n// if mode:\"abort\" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()\n\nvar pendingRequests = {},\n\tajax;\n\n// Use a prefilter if available (1.5+)\nif ( $.ajaxPrefilter ) {\n\t$.ajaxPrefilter( function( settings, _, xhr ) {\n\t\tvar port = settings.port;\n\t\tif ( settings.mode === \"abort\" ) {\n\t\t\tif ( pendingRequests[ port ] ) {\n\t\t\t\tpendingRequests[ port ].abort();\n\t\t\t}\n\t\t\tpendingRequests[ port ] = xhr;\n\t\t}\n\t} );\n} else {\n\n\t// Proxy ajax\n\tajax = $.ajax;\n\t$.ajax = function( settings ) {\n\t\tvar mode = ( \"mode\" in settings ? settings : $.ajaxSettings ).mode,\n\t\t\tport = ( \"port\" in settings ? settings : $.ajaxSettings ).port;\n\t\tif ( mode === \"abort\" ) {\n\t\t\tif ( pendingRequests[ port ] ) {\n\t\t\t\tpendingRequests[ port ].abort();\n\t\t\t}\n\t\t\tpendingRequests[ port ] = ajax.apply( this, arguments );\n\t\t\treturn pendingRequests[ port ];\n\t\t}\n\t\treturn ajax.apply( this, arguments );\n\t};\n}\nreturn $;\n}));", "/**\r\n * @license\r\n * Unobtrusive validation support library for jQuery and jQuery Validate\r\n * Copyright (c) .NET Foundation. All rights reserved.\r\n * Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n * @version v4.0.0\r\n */\r\n\r\n/*jslint white: true, browser: true, onevar: true, undef: true, nomen: true, eqeqeq: true, plusplus: true, bitwise: true, regexp: true, newcap: true, immed: true, strict: false */\r\n/*global document: false, jQuery: false */\r\n\r\n(function (factory) {\r\n if (typeof define === 'function' && define.amd) {\r\n // AMD. Register as an anonymous module.\r\n define(\"jquery.validate.unobtrusive\", ['jquery-validation'], factory);\r\n } else if (typeof module === 'object' && module.exports) {\r\n // CommonJS-like environments that support module.exports \r\n module.exports = factory(require('jquery-validation'));\r\n } else {\r\n // Browser global\r\n jQuery.validator.unobtrusive = factory(jQuery);\r\n }\r\n}(function ($) {\r\n var $jQval = $.validator,\r\n adapters,\r\n data_validation = \"unobtrusiveValidation\";\r\n\r\n function setValidationValues(options, ruleName, value) {\r\n options.rules[ruleName] = value;\r\n if (options.message) {\r\n options.messages[ruleName] = options.message;\r\n }\r\n }\r\n\r\n function splitAndTrim(value) {\r\n return value.replace(/^\\s+|\\s+$/g, \"\").split(/\\s*,\\s*/g);\r\n }\r\n\r\n function escapeAttributeValue(value) {\r\n // As mentioned on http://api.jquery.com/category/selectors/\r\n return value.replace(/([!\"#$%&'()*+,./:;<=>?@\\[\\\\\\]^`{|}~])/g, \"\\\\$1\");\r\n }\r\n\r\n function getModelPrefix(fieldName) {\r\n return fieldName.substr(0, fieldName.lastIndexOf(\".\") + 1);\r\n }\r\n\r\n function appendModelPrefix(value, prefix) {\r\n if (value.indexOf(\"*.\") === 0) {\r\n value = value.replace(\"*.\", prefix);\r\n }\r\n return value;\r\n }\r\n\r\n function onError(error, inputElement) { // 'this' is the form element\r\n var container = $(this).find(\"[data-valmsg-for='\" + escapeAttributeValue(inputElement[0].name) + \"']\"),\r\n replaceAttrValue = container.attr(\"data-valmsg-replace\"),\r\n replace = replaceAttrValue ? $.parseJSON(replaceAttrValue) !== false : null;\r\n\r\n container.removeClass(\"field-validation-valid\").addClass(\"field-validation-error\");\r\n error.data(\"unobtrusiveContainer\", container);\r\n\r\n if (replace) {\r\n container.empty();\r\n error.removeClass(\"input-validation-error\").appendTo(container);\r\n }\r\n else {\r\n error.hide();\r\n }\r\n }\r\n\r\n function onErrors(event, validator) { // 'this' is the form element\r\n var container = $(this).find(\"[data-valmsg-summary=true]\"),\r\n list = container.find(\"ul\");\r\n\r\n if (list && list.length && validator.errorList.length) {\r\n list.empty();\r\n container.addClass(\"validation-summary-errors\").removeClass(\"validation-summary-valid\");\r\n\r\n $.each(validator.errorList, function () {\r\n $(\"<li />\").html(this.message).appendTo(list);\r\n });\r\n }\r\n }\r\n\r\n function onSuccess(error) { // 'this' is the form element\r\n var container = error.data(\"unobtrusiveContainer\");\r\n\r\n if (container) {\r\n var replaceAttrValue = container.attr(\"data-valmsg-replace\"),\r\n replace = replaceAttrValue ? $.parseJSON(replaceAttrValue) : null;\r\n\r\n container.addClass(\"field-validation-valid\").removeClass(\"field-validation-error\");\r\n error.removeData(\"unobtrusiveContainer\");\r\n\r\n if (replace) {\r\n container.empty();\r\n }\r\n }\r\n }\r\n\r\n function onReset(event) { // 'this' is the form element\r\n var $form = $(this),\r\n key = '__jquery_unobtrusive_validation_form_reset';\r\n if ($form.data(key)) {\r\n return;\r\n }\r\n // Set a flag that indicates we're currently resetting the form.\r\n $form.data(key, true);\r\n try {\r\n $form.data(\"validator\").resetForm();\r\n } finally {\r\n $form.removeData(key);\r\n }\r\n\r\n $form.find(\".validation-summary-errors\")\r\n .addClass(\"validation-summary-valid\")\r\n .removeClass(\"validation-summary-errors\");\r\n $form.find(\".field-validation-error\")\r\n .addClass(\"field-validation-valid\")\r\n .removeClass(\"field-validation-error\")\r\n .removeData(\"unobtrusiveContainer\")\r\n .find(\">*\") // If we were using valmsg-replace, get the underlying error\r\n .removeData(\"unobtrusiveContainer\");\r\n }\r\n\r\n function validationInfo(form) {\r\n var $form = $(form),\r\n result = $form.data(data_validation),\r\n onResetProxy = $.proxy(onReset, form),\r\n defaultOptions = $jQval.unobtrusive.options || {},\r\n execInContext = function (name, args) {\r\n var func = defaultOptions[name];\r\n func && $.isFunction(func) && func.apply(form, args);\r\n };\r\n\r\n if (!result) {\r\n result = {\r\n options: { // options structure passed to jQuery Validate's validate() method\r\n errorClass: defaultOptions.errorClass || \"input-validation-error\",\r\n errorElement: defaultOptions.errorElement || \"span\",\r\n errorPlacement: function () {\r\n onError.apply(form, arguments);\r\n execInContext(\"errorPlacement\", arguments);\r\n },\r\n invalidHandler: function () {\r\n onErrors.apply(form, arguments);\r\n execInContext(\"invalidHandler\", arguments);\r\n },\r\n messages: {},\r\n rules: {},\r\n success: function () {\r\n onSuccess.apply(form, arguments);\r\n execInContext(\"success\", arguments);\r\n }\r\n },\r\n attachValidation: function () {\r\n $form\r\n .off(\"reset.\" + data_validation, onResetProxy)\r\n .on(\"reset.\" + data_validation, onResetProxy)\r\n .validate(this.options);\r\n },\r\n validate: function () { // a validation function that is called by unobtrusive Ajax\r\n $form.validate();\r\n return $form.valid();\r\n }\r\n };\r\n $form.data(data_validation, result);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n $jQval.unobtrusive = {\r\n adapters: [],\r\n\r\n parseElement: function (element, skipAttach) {\r\n /// <summary>\r\n /// Parses a single HTML element for unobtrusive validation attributes.\r\n /// </summary>\r\n /// <param name=\"element\" domElement=\"true\">The HTML element to be parsed.</param>\r\n /// <param name=\"skipAttach\" type=\"Boolean\">[Optional] true to skip attaching the\r\n /// validation to the form. If parsing just this single element, you should specify true.\r\n /// If parsing several elements, you should specify false, and manually attach the validation\r\n /// to the form when you are finished. The default is false.</param>\r\n var $element = $(element),\r\n form = $element.parents(\"form\")[0],\r\n valInfo, rules, messages;\r\n\r\n if (!form) { // Cannot do client-side validation without a form\r\n return;\r\n }\r\n\r\n valInfo = validationInfo(form);\r\n valInfo.options.rules[element.name] = rules = {};\r\n valInfo.options.messages[element.name] = messages = {};\r\n\r\n $.each(this.adapters, function () {\r\n var prefix = \"data-val-\" + this.name,\r\n message = $element.attr(prefix),\r\n paramValues = {};\r\n\r\n if (message !== undefined) { // Compare against undefined, because an empty message is legal (and falsy)\r\n prefix += \"-\";\r\n\r\n $.each(this.params, function () {\r\n paramValues[this] = $element.attr(prefix + this);\r\n });\r\n\r\n this.adapt({\r\n element: element,\r\n form: form,\r\n message: message,\r\n params: paramValues,\r\n rules: rules,\r\n messages: messages\r\n });\r\n }\r\n });\r\n\r\n $.extend(rules, { \"__dummy__\": true });\r\n\r\n if (!skipAttach) {\r\n valInfo.attachValidation();\r\n }\r\n },\r\n\r\n parse: function (selector) {\r\n /// <summary>\r\n /// Parses all the HTML elements in the specified selector. It looks for input elements decorated\r\n /// with the [data-val=true] attribute value and enables validation according to the data-val-*\r\n /// attribute values.\r\n /// </summary>\r\n /// <param name=\"selector\" type=\"String\">Any valid jQuery selector.</param>\r\n\r\n // $forms includes all forms in selector's DOM hierarchy (parent, children and self) that have at least one\r\n // element with data-val=true\r\n var $selector = $(selector),\r\n $forms = $selector.parents()\r\n .addBack()\r\n .filter(\"form\")\r\n .add($selector.find(\"form\"))\r\n .has(\"[data-val=true]\");\r\n\r\n $selector.find(\"[data-val=true]\").each(function () {\r\n $jQval.unobtrusive.parseElement(this, true);\r\n });\r\n\r\n $forms.each(function () {\r\n var info = validationInfo(this);\r\n if (info) {\r\n info.attachValidation();\r\n }\r\n });\r\n }\r\n };\r\n\r\n adapters = $jQval.unobtrusive.adapters;\r\n\r\n adapters.add = function (adapterName, params, fn) {\r\n /// <summary>Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation.</summary>\r\n /// <param name=\"adapterName\" type=\"String\">The name of the adapter to be added. This matches the name used\r\n /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name).</param>\r\n /// <param name=\"params\" type=\"Array\" optional=\"true\">[Optional] An array of parameter names (strings) that will\r\n /// be extracted from the data-val-nnnn-mmmm HTML attributes (where nnnn is the adapter name, and\r\n /// mmmm is the parameter name).</param>\r\n /// <param name=\"fn\" type=\"Function\">The function to call, which adapts the values from the HTML\r\n /// attributes into jQuery Validate rules and/or messages.</param>\r\n /// <returns type=\"jQuery.validator.unobtrusive.adapters\" />\r\n if (!fn) { // Called with no params, just a function\r\n fn = params;\r\n params = [];\r\n }\r\n this.push({ name: adapterName, params: params, adapt: fn });\r\n return this;\r\n };\r\n\r\n adapters.addBool = function (adapterName, ruleName) {\r\n /// <summary>Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where\r\n /// the jQuery Validate validation rule has no parameter values.</summary>\r\n /// <param name=\"adapterName\" type=\"String\">The name of the adapter to be added. This matches the name used\r\n /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name).</param>\r\n /// <param name=\"ruleName\" type=\"String\" optional=\"true\">[Optional] The name of the jQuery Validate rule. If not provided, the value\r\n /// of adapterName will be used instead.</param>\r\n /// <returns type=\"jQuery.validator.unobtrusive.adapters\" />\r\n return this.add(adapterName, function (options) {\r\n setValidationValues(options, ruleName || adapterName, true);\r\n });\r\n };\r\n\r\n adapters.addMinMax = function (adapterName, minRuleName, maxRuleName, minMaxRuleName, minAttribute, maxAttribute) {\r\n /// <summary>Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where\r\n /// the jQuery Validate validation has three potential rules (one for min-only, one for max-only, and\r\n /// one for min-and-max). The HTML parameters are expected to be named -min and -max.</summary>\r\n /// <param name=\"adapterName\" type=\"String\">The name of the adapter to be added. This matches the name used\r\n /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name).</param>\r\n /// <param name=\"minRuleName\" type=\"String\">The name of the jQuery Validate rule to be used when you only\r\n /// have a minimum value.</param>\r\n /// <param name=\"maxRuleName\" type=\"String\">The name of the jQuery Validate rule to be used when you only\r\n /// have a maximum value.</param>\r\n /// <param name=\"minMaxRuleName\" type=\"String\">The name of the jQuery Validate rule to be used when you\r\n /// have both a minimum and maximum value.</param>\r\n /// <param name=\"minAttribute\" type=\"String\" optional=\"true\">[Optional] The name of the HTML attribute that\r\n /// contains the minimum value. The default is \"min\".</param>\r\n /// <param name=\"maxAttribute\" type=\"String\" optional=\"true\">[Optional] The name of the HTML attribute that\r\n /// contains the maximum value. The default is \"max\".</param>\r\n /// <returns type=\"jQuery.validator.unobtrusive.adapters\" />\r\n return this.add(adapterName, [minAttribute || \"min\", maxAttribute || \"max\"], function (options) {\r\n var min = options.params.min,\r\n max = options.params.max;\r\n\r\n if (min && max) {\r\n setValidationValues(options, minMaxRuleName, [min, max]);\r\n }\r\n else if (min) {\r\n setValidationValues(options, minRuleName, min);\r\n }\r\n else if (max) {\r\n setValidationValues(options, maxRuleName, max);\r\n }\r\n });\r\n };\r\n\r\n adapters.addSingleVal = function (adapterName, attribute, ruleName) {\r\n /// <summary>Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where\r\n /// the jQuery Validate validation rule has a single value.</summary>\r\n /// <param name=\"adapterName\" type=\"String\">The name of the adapter to be added. This matches the name used\r\n /// in the data-val-nnnn HTML attribute(where nnnn is the adapter name).</param>\r\n /// <param name=\"attribute\" type=\"String\">[Optional] The name of the HTML attribute that contains the value.\r\n /// The default is \"val\".</param>\r\n /// <param name=\"ruleName\" type=\"String\" optional=\"true\">[Optional] The name of the jQuery Validate rule. If not provided, the value\r\n /// of adapterName will be used instead.</param>\r\n /// <returns type=\"jQuery.validator.unobtrusive.adapters\" />\r\n return this.add(adapterName, [attribute || \"val\"], function (options) {\r\n setValidationValues(options, ruleName || adapterName, options.params[attribute]);\r\n });\r\n };\r\n\r\n $jQval.addMethod(\"__dummy__\", function (value, element, params) {\r\n return true;\r\n });\r\n\r\n $jQval.addMethod(\"regex\", function (value, element, params) {\r\n var match;\r\n if (this.optional(element)) {\r\n return true;\r\n }\r\n\r\n match = new RegExp(params).exec(value);\r\n return (match && (match.index === 0) && (match[0].length === value.length));\r\n });\r\n\r\n $jQval.addMethod(\"nonalphamin\", function (value, element, nonalphamin) {\r\n var match;\r\n if (nonalphamin) {\r\n match = value.match(/\\W/g);\r\n match = match && match.length >= nonalphamin;\r\n }\r\n return match;\r\n });\r\n\r\n if ($jQval.methods.extension) {\r\n adapters.addSingleVal(\"accept\", \"mimtype\");\r\n adapters.addSingleVal(\"extension\", \"extension\");\r\n } else {\r\n // for backward compatibility, when the 'extension' validation method does not exist, such as with versions\r\n // of JQuery Validation plugin prior to 1.10, we should use the 'accept' method for\r\n // validating the extension, and ignore mime-type validations as they are not supported.\r\n adapters.addSingleVal(\"extension\", \"extension\", \"accept\");\r\n }\r\n\r\n adapters.addSingleVal(\"regex\", \"pattern\");\r\n adapters.addBool(\"creditcard\").addBool(\"date\").addBool(\"digits\").addBool(\"email\").addBool(\"number\").addBool(\"url\");\r\n adapters.addMinMax(\"length\", \"minlength\", \"maxlength\", \"rangelength\").addMinMax(\"range\", \"min\", \"max\", \"range\");\r\n adapters.addMinMax(\"minlength\", \"minlength\").addMinMax(\"maxlength\", \"minlength\", \"maxlength\");\r\n adapters.add(\"equalto\", [\"other\"], function (options) {\r\n var prefix = getModelPrefix(options.element.name),\r\n other = options.params.other,\r\n fullOtherName = appendModelPrefix(other, prefix),\r\n element = $(options.form).find(\":input\").filter(\"[name='\" + escapeAttributeValue(fullOtherName) + \"']\")[0];\r\n\r\n setValidationValues(options, \"equalTo\", element);\r\n });\r\n adapters.add(\"required\", function (options) {\r\n // jQuery Validate equates \"required\" with \"mandatory\" for checkbox elements\r\n if (options.element.tagName.toUpperCase() !== \"INPUT\" || options.element.type.toUpperCase() !== \"CHECKBOX\") {\r\n setValidationValues(options, \"required\", true);\r\n }\r\n });\r\n adapters.add(\"remote\", [\"url\", \"type\", \"additionalfields\"], function (options) {\r\n var value = {\r\n url: options.params.url,\r\n type: options.params.type || \"GET\",\r\n data: {}\r\n },\r\n prefix = getModelPrefix(options.element.name);\r\n\r\n $.each(splitAndTrim(options.params.additionalfields || options.element.name), function (i, fieldName) {\r\n var paramName = appendModelPrefix(fieldName, prefix);\r\n value.data[paramName] = function () {\r\n var field = $(options.form).find(\":input\").filter(\"[name='\" + escapeAttributeValue(paramName) + \"']\");\r\n // For checkboxes and radio buttons, only pick up values from checked fields.\r\n if (field.is(\":checkbox\")) {\r\n return field.filter(\":checked\").val() || field.filter(\":hidden\").val() || '';\r\n }\r\n else if (field.is(\":radio\")) {\r\n return field.filter(\":checked\").val() || '';\r\n }\r\n return field.val();\r\n };\r\n });\r\n\r\n setValidationValues(options, \"remote\", value);\r\n });\r\n adapters.add(\"password\", [\"min\", \"nonalphamin\", \"regex\"], function (options) {\r\n if (options.params.min) {\r\n setValidationValues(options, \"minlength\", options.params.min);\r\n }\r\n if (options.params.nonalphamin) {\r\n setValidationValues(options, \"nonalphamin\", options.params.nonalphamin);\r\n }\r\n if (options.params.regex) {\r\n setValidationValues(options, \"regex\", options.params.regex);\r\n }\r\n });\r\n adapters.add(\"fileextensions\", [\"extensions\"], function (options) {\r\n setValidationValues(options, \"extension\", options.params.extensions);\r\n });\r\n\r\n $(function () {\r\n $jQval.unobtrusive.parse(document);\r\n });\r\n\r\n return $jQval.unobtrusive;\r\n}));\r\n", "/* jquery.nicescroll\r\n-- version 3.7.6\r\n-- copyright 2017-07-19 InuYaksa*2017\r\n-- licensed under the MIT\r\n--\r\n-- https://nicescroll.areaaperta.com/\r\n-- https://github.com/inuyaksa/jquery.nicescroll\r\n--\r\n*/\r\n\r\n/* jshint expr: true */\r\n\r\n(function (factory) {\r\n if (typeof define === 'function' && define.amd) {\r\n // AMD. Register as anonymous module.\r\n define(['jquery'], factory);\r\n } else if (typeof exports === 'object') {\r\n // Node/CommonJS.\r\n module.exports = factory(require('jquery'));\r\n } else {\r\n // Browser globals.\r\n factory(jQuery);\r\n }\r\n}(function (jQuery) {\r\n\r\n \"use strict\";\r\n\r\n // globals\r\n var domfocus = false,\r\n mousefocus = false,\r\n tabindexcounter = 0,\r\n ascrailcounter = 2000,\r\n globalmaxzindex = 0;\r\n\r\n var $ = jQuery, // sandbox\r\n _doc = document,\r\n _win = window,\r\n $window = $(_win);\r\n\r\n var delegatevents = [];\r\n\r\n // http://stackoverflow.com/questions/2161159/get-script-path\r\n function getScriptPath() {\r\n var scripts = _doc.currentScript || (function () { var s = _doc.getElementsByTagName('script'); return (s.length) ? s[s.length - 1] : false; })();\r\n var path = scripts ? scripts.src.split('?')[0] : '';\r\n return (path.split('/').length > 0) ? path.split('/').slice(0, -1).join('/') + '/' : '';\r\n }\r\n\r\n // based on code by Paul Irish https://www.paulirish.com/2011/requestanimationframe-for-smart-animating/ \r\n var setAnimationFrame = _win.requestAnimationFrame || _win.webkitRequestAnimationFrame || _win.mozRequestAnimationFrame || false;\r\n var clearAnimationFrame = _win.cancelAnimationFrame || _win.webkitCancelAnimationFrame || _win.mozCancelAnimationFrame || false;\r\n\r\n if (!setAnimationFrame) {\r\n var anilasttime = 0;\r\n setAnimationFrame = function (callback, element) {\r\n var currTime = new Date().getTime();\r\n var timeToCall = Math.max(0, 16 - (currTime - anilasttime));\r\n var id = _win.setTimeout(function () { callback(currTime + timeToCall); },\r\n timeToCall);\r\n anilasttime = currTime + timeToCall;\r\n return id;\r\n };\r\n clearAnimationFrame = function (id) {\r\n _win.clearTimeout(id);\r\n };\r\n } else {\r\n if (!_win.cancelAnimationFrame) clearAnimationFrame = function (id) { };\r\n }\r\n\r\n var ClsMutationObserver = _win.MutationObserver || _win.WebKitMutationObserver || false;\r\n\r\n var now = Date.now || function () { return new Date().getTime(); };\r\n\r\n var _globaloptions = {\r\n zindex: \"auto\",\r\n cursoropacitymin: 0,\r\n cursoropacitymax: 1,\r\n cursorcolor: \"#424242\",\r\n cursorwidth: \"6px\",\r\n cursorborder: \"1px solid #fff\",\r\n cursorborderradius: \"5px\",\r\n scrollspeed: 40,\r\n mousescrollstep: 9 * 3,\r\n touchbehavior: false, // deprecated\r\n emulatetouch: false, // replacing touchbehavior\r\n hwacceleration: true,\r\n usetransition: true,\r\n boxzoom: false,\r\n dblclickzoom: true,\r\n gesturezoom: true,\r\n grabcursorenabled: true,\r\n autohidemode: true,\r\n background: \"\",\r\n iframeautoresize: true,\r\n cursorminheight: 32,\r\n preservenativescrolling: true,\r\n railoffset: false,\r\n railhoffset: false,\r\n bouncescroll: true,\r\n spacebarenabled: true,\r\n railpadding: {\r\n top: 0,\r\n right: 0,\r\n left: 0,\r\n bottom: 0\r\n },\r\n disableoutline: true,\r\n horizrailenabled: true,\r\n railalign: \"right\",\r\n railvalign: \"bottom\",\r\n enabletranslate3d: true,\r\n enablemousewheel: true,\r\n enablekeyboard: true,\r\n smoothscroll: true,\r\n sensitiverail: true,\r\n enablemouselockapi: true,\r\n // cursormaxheight:false,\r\n cursorfixedheight: false,\r\n directionlockdeadzone: 6,\r\n hidecursordelay: 400,\r\n nativeparentscrolling: true,\r\n enablescrollonselection: true,\r\n overflowx: true,\r\n overflowy: true,\r\n cursordragspeed: 0.3,\r\n rtlmode: \"auto\",\r\n cursordragontouch: false,\r\n oneaxismousemode: \"auto\",\r\n scriptpath: getScriptPath(),\r\n preventmultitouchscrolling: true,\r\n disablemutationobserver: false,\r\n enableobserver: true,\r\n scrollbarid: false\r\n };\r\n\r\n var browserdetected = false;\r\n\r\n var getBrowserDetection = function () {\r\n\r\n if (browserdetected) return browserdetected;\r\n\r\n var _el = _doc.createElement('DIV'),\r\n _style = _el.style,\r\n _agent = navigator.userAgent,\r\n _platform = navigator.platform,\r\n d = {};\r\n\r\n d.haspointerlock = \"pointerLockElement\" in _doc || \"webkitPointerLockElement\" in _doc || \"mozPointerLockElement\" in _doc;\r\n\r\n d.isopera = (\"opera\" in _win); // 12-\r\n d.isopera12 = (d.isopera && (\"getUserMedia\" in navigator));\r\n d.isoperamini = (Object.prototype.toString.call(_win.operamini) === \"[object OperaMini]\");\r\n\r\n d.isie = ((\"all\" in _doc) && (\"attachEvent\" in _el) && !d.isopera); //IE10-\r\n d.isieold = (d.isie && !(\"msInterpolationMode\" in _style)); // IE6 and older\r\n d.isie7 = d.isie && !d.isieold && (!(\"documentMode\" in _doc) || (_doc.documentMode === 7));\r\n d.isie8 = d.isie && (\"documentMode\" in _doc) && (_doc.documentMode === 8);\r\n d.isie9 = d.isie && (\"performance\" in _win) && (_doc.documentMode === 9);\r\n d.isie10 = d.isie && (\"performance\" in _win) && (_doc.documentMode === 10);\r\n d.isie11 = (\"msRequestFullscreen\" in _el) && (_doc.documentMode >= 11); // IE11+\r\n\r\n d.ismsedge = (\"msCredentials\" in _win); // MS Edge 14+\r\n\r\n d.ismozilla = (\"MozAppearance\" in _style);\r\n\r\n d.iswebkit = !d.ismsedge && (\"WebkitAppearance\" in _style);\r\n\r\n d.ischrome = d.iswebkit && (\"chrome\" in _win);\r\n d.ischrome38 = (d.ischrome && (\"touchAction\" in _style)); // behavior changed in touch emulation \r\n d.ischrome22 = (!d.ischrome38) && (d.ischrome && d.haspointerlock);\r\n d.ischrome26 = (!d.ischrome38) && (d.ischrome && (\"transition\" in _style)); // issue with transform detection (maintain prefix)\r\n\r\n d.cantouch = (\"ontouchstart\" in _doc.documentElement) || (\"ontouchstart\" in _win); // with detection for Chrome Touch Emulation \r\n d.hasw3ctouch = (_win.PointerEvent || false) && ((navigator.maxTouchPoints > 0) || (navigator.msMaxTouchPoints > 0)); //IE11 pointer events, following W3C Pointer Events spec\r\n d.hasmstouch = (!d.hasw3ctouch) && (_win.MSPointerEvent || false); // IE10 pointer events\r\n\r\n d.ismac = /^mac$/i.test(_platform);\r\n\r\n d.isios = d.cantouch && /iphone|ipad|ipod/i.test(_platform);\r\n d.isios4 = d.isios && !(\"seal\" in Object);\r\n d.isios7 = d.isios && (\"webkitHidden\" in _doc); //iOS 7+\r\n d.isios8 = d.isios && (\"hidden\" in _doc); //iOS 8+\r\n d.isios10 = d.isios && _win.Proxy; //iOS 10+\r\n\r\n d.isandroid = (/android/i.test(_agent));\r\n\r\n d.haseventlistener = (\"addEventListener\" in _el);\r\n\r\n d.trstyle = false;\r\n d.hastransform = false;\r\n d.hastranslate3d = false;\r\n d.transitionstyle = false;\r\n d.hastransition = false;\r\n d.transitionend = false;\r\n\r\n d.trstyle = \"transform\";\r\n d.hastransform = (\"transform\" in _style) || (function () {\r\n var check = ['msTransform', 'webkitTransform', 'MozTransform', 'OTransform'];\r\n for (var a = 0, c = check.length; a < c; a++) {\r\n if (_style[check[a]] !== undefined) {\r\n d.trstyle = check[a];\r\n break;\r\n }\r\n }\r\n d.hastransform = (!!d.trstyle);\r\n })();\r\n\r\n if (d.hastransform) {\r\n _style[d.trstyle] = \"translate3d(1px,2px,3px)\";\r\n d.hastranslate3d = /translate3d/.test(_style[d.trstyle]);\r\n }\r\n\r\n d.transitionstyle = \"transition\";\r\n d.prefixstyle = '';\r\n d.transitionend = \"transitionend\";\r\n\r\n d.hastransition = (\"transition\" in _style) || (function () {\r\n\r\n d.transitionend = false;\r\n var check = ['webkitTransition', 'msTransition', 'MozTransition', 'OTransition', 'OTransition', 'KhtmlTransition'];\r\n var prefix = ['-webkit-', '-ms-', '-moz-', '-o-', '-o', '-khtml-'];\r\n var evs = ['webkitTransitionEnd', 'msTransitionEnd', 'transitionend', 'otransitionend', 'oTransitionEnd', 'KhtmlTransitionEnd'];\r\n for (var a = 0, c = check.length; a < c; a++) {\r\n if (check[a] in _style) {\r\n d.transitionstyle = check[a];\r\n d.prefixstyle = prefix[a];\r\n d.transitionend = evs[a];\r\n break;\r\n }\r\n }\r\n if (d.ischrome26) d.prefixstyle = prefix[1]; // always use prefix\r\n\r\n d.hastransition = (d.transitionstyle);\r\n\r\n })();\r\n\r\n function detectCursorGrab() {\r\n var lst = ['grab', '-webkit-grab', '-moz-grab'];\r\n if ((d.ischrome && !d.ischrome38) || d.isie) lst = []; // force setting for IE returns false positive and chrome cursor bug\r\n for (var a = 0, l = lst.length; a < l; a++) {\r\n var p = lst[a];\r\n _style.cursor = p;\r\n if (_style.cursor == p) return p;\r\n }\r\n return 'url(https://cdnjs.cloudflare.com/ajax/libs/slider-pro/1.3.0/css/images/openhand.cur),n-resize'; // thanks to https://cdnjs.com/ for the openhand cursor!\r\n }\r\n d.cursorgrabvalue = detectCursorGrab();\r\n\r\n d.hasmousecapture = (\"setCapture\" in _el);\r\n\r\n d.hasMutationObserver = (ClsMutationObserver !== false);\r\n\r\n _el = null; //memory released\r\n\r\n browserdetected = d;\r\n\r\n return d;\r\n };\r\n\r\n var NiceScrollClass = function (myopt, me) {\r\n\r\n var self = this;\r\n\r\n this.version = '3.7.6';\r\n this.name = 'nicescroll';\r\n\r\n this.me = me;\r\n\r\n var $body = $(\"body\");\r\n\r\n var opt = this.opt = {\r\n doc: $body,\r\n win: false\r\n };\r\n\r\n $.extend(opt, _globaloptions); // clone opts\r\n\r\n // Options for internal use\r\n opt.snapbackspeed = 80;\r\n\r\n if (myopt || false) {\r\n for (var a in opt) {\r\n if (myopt[a] !== undefined) opt[a] = myopt[a];\r\n }\r\n }\r\n\r\n if (opt.disablemutationobserver) ClsMutationObserver = false;\r\n\r\n this.doc = opt.doc;\r\n this.iddoc = (this.doc && this.doc[0]) ? this.doc[0].id || '' : '';\r\n this.ispage = /^BODY|HTML/.test((opt.win) ? opt.win[0].nodeName : this.doc[0].nodeName);\r\n this.haswrapper = (opt.win !== false);\r\n this.win = opt.win || (this.ispage ? $window : this.doc);\r\n this.docscroll = (this.ispage && !this.haswrapper) ? $window : this.win;\r\n this.body = $body;\r\n this.viewport = false;\r\n\r\n this.isfixed = false;\r\n\r\n this.iframe = false;\r\n this.isiframe = ((this.doc[0].nodeName == 'IFRAME') && (this.win[0].nodeName == 'IFRAME'));\r\n\r\n this.istextarea = (this.win[0].nodeName == 'TEXTAREA');\r\n\r\n this.forcescreen = false; //force to use screen position on events\r\n\r\n this.canshowonmouseevent = (opt.autohidemode != \"scroll\");\r\n\r\n // Events jump table \r\n this.onmousedown = false;\r\n this.onmouseup = false;\r\n this.onmousemove = false;\r\n this.onmousewheel = false;\r\n this.onkeypress = false;\r\n this.ongesturezoom = false;\r\n this.onclick = false;\r\n\r\n // Nicescroll custom events\r\n this.onscrollstart = false;\r\n this.onscrollend = false;\r\n this.onscrollcancel = false;\r\n\r\n this.onzoomin = false;\r\n this.onzoomout = false;\r\n\r\n // Let's start! \r\n this.view = false;\r\n this.page = false;\r\n\r\n this.scroll = {\r\n x: 0,\r\n y: 0\r\n };\r\n this.scrollratio = {\r\n x: 0,\r\n y: 0\r\n };\r\n this.cursorheight = 20;\r\n this.scrollvaluemax = 0;\r\n\r\n // http://dev.w3.org/csswg/css-writing-modes-3/#logical-to-physical\r\n // http://dev.w3.org/csswg/css-writing-modes-3/#svg-writing-mode\r\n if (opt.rtlmode == \"auto\") {\r\n var target = this.win[0] == _win ? this.body : this.win;\r\n var writingMode = target.css(\"writing-mode\") || target.css(\"-webkit-writing-mode\") || target.css(\"-ms-writing-mode\") || target.css(\"-moz-writing-mode\");\r\n\r\n if (writingMode == \"horizontal-tb\" || writingMode == \"lr-tb\" || writingMode === \"\") {\r\n this.isrtlmode = (target.css(\"direction\") == \"rtl\");\r\n this.isvertical = false;\r\n } else {\r\n this.isrtlmode = (writingMode == \"vertical-rl\" || writingMode == \"tb\" || writingMode == \"tb-rl\" || writingMode == \"rl-tb\");\r\n this.isvertical = (writingMode == \"vertical-rl\" || writingMode == \"tb\" || writingMode == \"tb-rl\");\r\n }\r\n } else {\r\n this.isrtlmode = (opt.rtlmode === true);\r\n this.isvertical = false;\r\n }\r\n // this.checkrtlmode = false;\r\n\r\n this.scrollrunning = false;\r\n\r\n this.scrollmom = false;\r\n\r\n this.observer = false; // observer div changes\r\n this.observerremover = false; // observer on parent for remove detection\r\n this.observerbody = false; // observer on body for position change\r\n\r\n if (opt.scrollbarid !== false) {\r\n this.id = opt.scrollbarid;\r\n } else {\r\n do {\r\n this.id = \"ascrail\" + (ascrailcounter++);\r\n } while (_doc.getElementById(this.id));\r\n }\r\n\r\n this.rail = false;\r\n this.cursor = false;\r\n this.cursorfreezed = false;\r\n this.selectiondrag = false;\r\n\r\n this.zoom = false;\r\n this.zoomactive = false;\r\n\r\n this.hasfocus = false;\r\n this.hasmousefocus = false;\r\n\r\n //this.visibility = true;\r\n this.railslocked = false; // locked by resize\r\n this.locked = false; // prevent lost of locked status sets by user\r\n this.hidden = false; // rails always hidden\r\n this.cursoractive = true; // user can interact with cursors\r\n\r\n this.wheelprevented = false; //prevent mousewheel event\r\n\r\n this.overflowx = opt.overflowx;\r\n this.overflowy = opt.overflowy;\r\n\r\n this.nativescrollingarea = false;\r\n this.checkarea = 0;\r\n\r\n this.events = []; // event list for unbind\r\n\r\n this.saved = {}; // style saved\r\n\r\n this.delaylist = {};\r\n this.synclist = {};\r\n\r\n this.lastdeltax = 0;\r\n this.lastdeltay = 0;\r\n\r\n this.detected = getBrowserDetection();\r\n\r\n var cap = $.extend({}, this.detected);\r\n\r\n this.canhwscroll = (cap.hastransform && opt.hwacceleration);\r\n this.ishwscroll = (this.canhwscroll && self.haswrapper);\r\n\r\n if (!this.isrtlmode) {\r\n this.hasreversehr = false;\r\n } else if (this.isvertical) { // RTL mode with reverse horizontal axis\r\n this.hasreversehr = !(cap.iswebkit || cap.isie || cap.isie11);\r\n } else {\r\n this.hasreversehr = !(cap.iswebkit || (cap.isie && !cap.isie10 && !cap.isie11));\r\n }\r\n\r\n this.istouchcapable = false; // desktop devices with touch screen support\r\n\r\n //## Check WebKit-based desktop with touch support\r\n //## + Firefox 18 nightly build (desktop) false positive (or desktop with touch support)\r\n\r\n if (!cap.cantouch && (cap.hasw3ctouch || cap.hasmstouch)) { // desktop device with multiple input\r\n this.istouchcapable = true;\r\n } else if (cap.cantouch && !cap.isios && !cap.isandroid && (cap.iswebkit || cap.ismozilla)) {\r\n this.istouchcapable = true;\r\n }\r\n\r\n //## disable MouseLock API on user request\r\n if (!opt.enablemouselockapi) {\r\n cap.hasmousecapture = false;\r\n cap.haspointerlock = false;\r\n }\r\n\r\n this.debounced = function (name, fn, tm) {\r\n if (!self) return;\r\n var dd = self.delaylist[name] || false;\r\n if (!dd) {\r\n self.delaylist[name] = {\r\n h: setAnimationFrame(function () {\r\n self.delaylist[name].fn.call(self);\r\n self.delaylist[name] = false;\r\n }, tm)\r\n };\r\n fn.call(self);\r\n }\r\n self.delaylist[name].fn = fn;\r\n };\r\n\r\n\r\n this.synched = function (name, fn) {\r\n if (self.synclist[name]) self.synclist[name] = fn;\r\n else {\r\n self.synclist[name] = fn;\r\n setAnimationFrame(function () {\r\n if (!self) return;\r\n self.synclist[name] && self.synclist[name].call(self);\r\n self.synclist[name] = null;\r\n });\r\n }\r\n };\r\n\r\n this.unsynched = function (name) {\r\n if (self.synclist[name]) self.synclist[name] = false;\r\n };\r\n\r\n this.css = function (el, pars) { // save & set\r\n for (var n in pars) {\r\n self.saved.css.push([el, n, el.css(n)]);\r\n el.css(n, pars[n]);\r\n }\r\n };\r\n\r\n this.scrollTop = function (val) {\r\n return (val === undefined) ? self.getScrollTop() : self.setScrollTop(val);\r\n };\r\n\r\n this.scrollLeft = function (val) {\r\n return (val === undefined) ? self.getScrollLeft() : self.setScrollLeft(val);\r\n };\r\n\r\n // derived by by Dan Pupius www.pupius.net\r\n var BezierClass = function (st, ed, spd, p1, p2, p3, p4) {\r\n\r\n this.st = st;\r\n this.ed = ed;\r\n this.spd = spd;\r\n\r\n this.p1 = p1 || 0;\r\n this.p2 = p2 || 1;\r\n this.p3 = p3 || 0;\r\n this.p4 = p4 || 1;\r\n\r\n this.ts = now();\r\n this.df = ed - st;\r\n };\r\n BezierClass.prototype = {\r\n B2: function (t) {\r\n return 3 * (1 - t) * (1 - t) * t;\r\n },\r\n B3: function (t) {\r\n return 3 * (1 - t) * t * t;\r\n },\r\n B4: function (t) {\r\n return t * t * t;\r\n },\r\n getPos: function () {\r\n return (now() - this.ts) / this.spd;\r\n },\r\n getNow: function () {\r\n var pc = (now() - this.ts) / this.spd;\r\n var bz = this.B2(pc) + this.B3(pc) + this.B4(pc);\r\n return (pc >= 1) ? this.ed : this.st + (this.df * bz) | 0;\r\n },\r\n update: function (ed, spd) {\r\n this.st = this.getNow();\r\n this.ed = ed;\r\n this.spd = spd;\r\n this.ts = now();\r\n this.df = this.ed - this.st;\r\n return this;\r\n }\r\n };\r\n\r\n //derived from http://stackoverflow.com/questions/11236090/\r\n function getMatrixValues() {\r\n var tr = self.doc.css(cap.trstyle);\r\n if (tr && (tr.substr(0, 6) == \"matrix\")) {\r\n return tr.replace(/^.*\\((.*)\\)$/g, \"$1\").replace(/px/g, '').split(/, +/);\r\n }\r\n return false;\r\n }\r\n\r\n if (this.ishwscroll) { // hw accelerated scroll\r\n\r\n this.doc.translate = {\r\n x: 0,\r\n y: 0,\r\n tx: \"0px\",\r\n ty: \"0px\"\r\n };\r\n\r\n //this one can help to enable hw accel on ios6 http://indiegamr.com/ios6-html-hardware-acceleration-changes-and-how-to-fix-them/\r\n if (cap.hastranslate3d && cap.isios) this.doc.css(\"-webkit-backface-visibility\", \"hidden\"); // prevent flickering http://stackoverflow.com/questions/3461441/ \r\n\r\n this.getScrollTop = function (last) {\r\n if (!last) {\r\n var mtx = getMatrixValues();\r\n if (mtx) return (mtx.length == 16) ? -mtx[13] : -mtx[5]; //matrix3d 16 on IE10\r\n if (self.timerscroll && self.timerscroll.bz) return self.timerscroll.bz.getNow();\r\n }\r\n return self.doc.translate.y;\r\n };\r\n\r\n this.getScrollLeft = function (last) {\r\n if (!last) {\r\n var mtx = getMatrixValues();\r\n if (mtx) return (mtx.length == 16) ? -mtx[12] : -mtx[4]; //matrix3d 16 on IE10\r\n if (self.timerscroll && self.timerscroll.bh) return self.timerscroll.bh.getNow();\r\n }\r\n return self.doc.translate.x;\r\n };\r\n\r\n this.notifyScrollEvent = function (el) {\r\n var e = _doc.createEvent(\"UIEvents\");\r\n e.initUIEvent(\"scroll\", false, false, _win, 1);\r\n e.niceevent = true;\r\n el.dispatchEvent(e);\r\n };\r\n\r\n var cxscrollleft = (this.isrtlmode) ? 1 : -1;\r\n\r\n if (cap.hastranslate3d && opt.enabletranslate3d) {\r\n this.setScrollTop = function (val, silent) {\r\n self.doc.translate.y = val;\r\n self.doc.translate.ty = (val * -1) + \"px\";\r\n self.doc.css(cap.trstyle, \"translate3d(\" + self.doc.translate.tx + \",\" + self.doc.translate.ty + \",0)\");\r\n if (!silent) self.notifyScrollEvent(self.win[0]);\r\n };\r\n this.setScrollLeft = function (val, silent) {\r\n self.doc.translate.x = val;\r\n self.doc.translate.tx = (val * cxscrollleft) + \"px\";\r\n self.doc.css(cap.trstyle, \"translate3d(\" + self.doc.translate.tx + \",\" + self.doc.translate.ty + \",0)\");\r\n if (!silent) self.notifyScrollEvent(self.win[0]);\r\n };\r\n } else {\r\n this.setScrollTop = function (val, silent) {\r\n self.doc.translate.y = val;\r\n self.doc.translate.ty = (val * -1) + \"px\";\r\n self.doc.css(cap.trstyle, \"translate(\" + self.doc.translate.tx + \",\" + self.doc.translate.ty + \")\");\r\n if (!silent) self.notifyScrollEvent(self.win[0]);\r\n };\r\n this.setScrollLeft = function (val, silent) {\r\n self.doc.translate.x = val;\r\n self.doc.translate.tx = (val * cxscrollleft) + \"px\";\r\n self.doc.css(cap.trstyle, \"translate(\" + self.doc.translate.tx + \",\" + self.doc.translate.ty + \")\");\r\n if (!silent) self.notifyScrollEvent(self.win[0]);\r\n };\r\n }\r\n } else { // native scroll\r\n\r\n this.getScrollTop = function () {\r\n return self.docscroll.scrollTop();\r\n };\r\n this.setScrollTop = function (val) {\r\n self.docscroll.scrollTop(val);\r\n };\r\n\r\n this.getScrollLeft = function () {\r\n var val;\r\n if (!self.hasreversehr) {\r\n val = self.docscroll.scrollLeft();\r\n } else if (self.detected.ismozilla) {\r\n val = self.page.maxw - Math.abs(self.docscroll.scrollLeft());\r\n } else {\r\n val = self.page.maxw - self.docscroll.scrollLeft();\r\n }\r\n return val;\r\n };\r\n this.setScrollLeft = function (val) {\r\n return setTimeout(function () {\r\n if (!self) return;\r\n if (self.hasreversehr) {\r\n if (self.detected.ismozilla) {\r\n val = -(self.page.maxw - val);\r\n } else {\r\n val = self.page.maxw - val;\r\n }\r\n }\r\n return self.docscroll.scrollLeft(val);\r\n }, 1);\r\n };\r\n }\r\n\r\n this.getTarget = function (e) {\r\n if (!e) return false;\r\n if (e.target) return e.target;\r\n if (e.srcElement) return e.srcElement;\r\n return false;\r\n };\r\n\r\n this.hasParent = function (e, id) {\r\n if (!e) return false;\r\n var el = e.target || e.srcElement || e || false;\r\n while (el && el.id != id) {\r\n el = el.parentNode || false;\r\n }\r\n return (el !== false);\r\n };\r\n\r\n function getZIndex() {\r\n var dom = self.win;\r\n if (\"zIndex\" in dom) return dom.zIndex(); // use jQuery UI method when available\r\n while (dom.length > 0) {\r\n if (dom[0].nodeType == 9) return false;\r\n var zi = dom.css('zIndex');\r\n if (!isNaN(zi) && zi !== 0) return parseInt(zi);\r\n dom = dom.parent();\r\n }\r\n return false;\r\n }\r\n\r\n //inspired by http://forum.jquery.com/topic/width-includes-border-width-when-set-to-thin-medium-thick-in-ie\r\n var _convertBorderWidth = {\r\n \"thin\": 1,\r\n \"medium\": 3,\r\n \"thick\": 5\r\n };\r\n\r\n function getWidthToPixel(dom, prop, chkheight) {\r\n var wd = dom.css(prop);\r\n var px = parseFloat(wd);\r\n if (isNaN(px)) {\r\n px = _convertBorderWidth[wd] || 0;\r\n var brd = (px == 3) ? ((chkheight) ? (self.win.outerHeight() - self.win.innerHeight()) : (self.win.outerWidth() - self.win.innerWidth())) : 1; //DON'T TRUST CSS\r\n if (self.isie8 && px) px += 1;\r\n return (brd) ? px : 0;\r\n }\r\n return px;\r\n }\r\n\r\n this.getDocumentScrollOffset = function () {\r\n return {\r\n top: _win.pageYOffset || _doc.documentElement.scrollTop,\r\n left: _win.pageXOffset || _doc.documentElement.scrollLeft\r\n };\r\n };\r\n\r\n this.getOffset = function () {\r\n if (self.isfixed) {\r\n var ofs = self.win.offset(); // fix Chrome auto issue (when right/bottom props only)\r\n var scrl = self.getDocumentScrollOffset();\r\n ofs.top -= scrl.top;\r\n ofs.left -= scrl.left;\r\n return ofs;\r\n }\r\n var ww = self.win.offset();\r\n if (!self.viewport) return ww;\r\n var vp = self.viewport.offset();\r\n return {\r\n top: ww.top - vp.top,\r\n left: ww.left - vp.left\r\n };\r\n };\r\n\r\n this.updateScrollBar = function (len) {\r\n var pos, off;\r\n if (self.ishwscroll) {\r\n self.rail.css({\r\n height: self.win.innerHeight() - (opt.railpadding.top + opt.railpadding.bottom)\r\n });\r\n if (self.railh) self.railh.css({\r\n width: self.win.innerWidth() - (opt.railpadding.left + opt.railpadding.right)\r\n });\r\n } else {\r\n var wpos = self.getOffset();\r\n pos = {\r\n top: wpos.top,\r\n left: wpos.left - (opt.railpadding.left + opt.railpadding.right)\r\n };\r\n pos.top += getWidthToPixel(self.win, 'border-top-width', true);\r\n pos.left += (self.rail.align) ? self.win.outerWidth() - getWidthToPixel(self.win, 'border-right-width') - self.rail.width : getWidthToPixel(self.win, 'border-left-width');\r\n\r\n off = opt.railoffset;\r\n if (off) {\r\n if (off.top) pos.top += off.top;\r\n if (off.left) pos.left += off.left;\r\n }\r\n\r\n if (!self.railslocked) self.rail.css({\r\n top: pos.top,\r\n left: pos.left,\r\n height: ((len) ? len.h : self.win.innerHeight()) - (opt.railpadding.top + opt.railpadding.bottom)\r\n });\r\n\r\n if (self.zoom) {\r\n self.zoom.css({\r\n top: pos.top + 1,\r\n left: (self.rail.align == 1) ? pos.left - 20 : pos.left + self.rail.width + 4\r\n });\r\n }\r\n\r\n if (self.railh && !self.railslocked) {\r\n pos = {\r\n top: wpos.top,\r\n left: wpos.left\r\n };\r\n off = opt.railhoffset;\r\n if (off) {\r\n if (off.top) pos.top += off.top;\r\n if (off.left) pos.left += off.left;\r\n }\r\n var y = (self.railh.align) ? pos.top + getWidthToPixel(self.win, 'border-top-width', true) + self.win.innerHeight() - self.railh.height : pos.top + getWidthToPixel(self.win, 'border-top-width', true);\r\n var x = pos.left + getWidthToPixel(self.win, 'border-left-width');\r\n self.railh.css({\r\n top: y - (opt.railpadding.top + opt.railpadding.bottom),\r\n left: x,\r\n width: self.railh.width\r\n });\r\n }\r\n\r\n }\r\n };\r\n\r\n this.doRailClick = function (e, dbl, hr) {\r\n var fn, pg, cur, pos;\r\n\r\n if (self.railslocked) return;\r\n\r\n self.cancelEvent(e);\r\n\r\n if (!(\"pageY\" in e)) {\r\n e.pageX = e.clientX + _doc.documentElement.scrollLeft;\r\n e.pageY = e.clientY + _doc.documentElement.scrollTop;\r\n }\r\n\r\n if (dbl) {\r\n fn = (hr) ? self.doScrollLeft : self.doScrollTop;\r\n cur = (hr) ? ((e.pageX - self.railh.offset().left - (self.cursorwidth / 2)) * self.scrollratio.x) : ((e.pageY - self.rail.offset().top - (self.cursorheight / 2)) * self.scrollratio.y);\r\n self.unsynched(\"relativexy\");\r\n fn(cur|0);\r\n } else {\r\n fn = (hr) ? self.doScrollLeftBy : self.doScrollBy;\r\n cur = (hr) ? self.scroll.x : self.scroll.y;\r\n pos = (hr) ? e.pageX - self.railh.offset().left : e.pageY - self.rail.offset().top;\r\n pg = (hr) ? self.view.w : self.view.h;\r\n fn((cur >= pos) ? pg : -pg);\r\n }\r\n\r\n };\r\n\r\n self.newscrolly = self.newscrollx = 0;\r\n\r\n self.hasanimationframe = (\"requestAnimationFrame\" in _win);\r\n self.hascancelanimationframe = (\"cancelAnimationFrame\" in _win);\r\n\r\n self.hasborderbox = false;\r\n\r\n this.init = function () {\r\n\r\n self.saved.css = [];\r\n\r\n if (cap.isoperamini) return true; // SORRY, DO NOT WORK!\r\n if (cap.isandroid && !(\"hidden\" in _doc)) return true; // Android 3- SORRY, DO NOT WORK!\r\n\r\n opt.emulatetouch = opt.emulatetouch || opt.touchbehavior; // mantain compatibility with \"touchbehavior\" \r\n\r\n self.hasborderbox = _win.getComputedStyle && (_win.getComputedStyle(_doc.body)['box-sizing'] === \"border-box\");\r\n\r\n var _scrollyhidden = { 'overflow-y': 'hidden' };\r\n if (cap.isie11 || cap.isie10) _scrollyhidden['-ms-overflow-style'] = 'none'; // IE 10 & 11 is always a world apart!\r\n\r\n if (self.ishwscroll) {\r\n this.doc.css(cap.transitionstyle, cap.prefixstyle + 'transform 0ms ease-out');\r\n if (cap.transitionend) self.bind(self.doc, cap.transitionend, self.onScrollTransitionEnd, false); //I have got to do something usefull!!\r\n }\r\n\r\n self.zindex = \"auto\";\r\n if (!self.ispage && opt.zindex == \"auto\") {\r\n self.zindex = getZIndex() || \"auto\";\r\n } else {\r\n self.zindex = opt.zindex;\r\n }\r\n\r\n if (!self.ispage && self.zindex != \"auto\" && self.zindex > globalmaxzindex) {\r\n globalmaxzindex = self.zindex;\r\n }\r\n\r\n if (self.isie && self.zindex === 0 && opt.zindex == \"auto\") { // fix IE auto == 0\r\n self.zindex = \"auto\";\r\n }\r\n\r\n if (!self.ispage || !cap.isieold) {\r\n\r\n var cont = self.docscroll;\r\n if (self.ispage) cont = (self.haswrapper) ? self.win : self.doc;\r\n\r\n self.css(cont, _scrollyhidden);\r\n\r\n if (self.ispage && (cap.isie11 || cap.isie)) { // IE 7-11\r\n self.css($(\"html\"), _scrollyhidden);\r\n }\r\n\r\n if (cap.isios && !self.ispage && !self.haswrapper) self.css($body, {\r\n \"-webkit-overflow-scrolling\": \"touch\"\r\n }); //force hw acceleration\r\n\r\n var cursor = $(_doc.createElement('div'));\r\n cursor.css({\r\n position: \"relative\",\r\n top: 0,\r\n \"float\": \"right\",\r\n width: opt.cursorwidth,\r\n height: 0,\r\n 'background-color': opt.cursorcolor,\r\n border: opt.cursorborder,\r\n 'background-clip': 'padding-box',\r\n '-webkit-border-radius': opt.cursorborderradius,\r\n '-moz-border-radius': opt.cursorborderradius,\r\n 'border-radius': opt.cursorborderradius\r\n });\r\n\r\n cursor.addClass('nicescroll-cursors');\r\n\r\n self.cursor = cursor;\r\n\r\n var rail = $(_doc.createElement('div'));\r\n rail.attr('id', self.id);\r\n rail.addClass('nicescroll-rails nicescroll-rails-vr');\r\n\r\n var v, a, kp = [\"left\", \"right\", \"top\", \"bottom\"]; //**\r\n for (var n in kp) {\r\n a = kp[n];\r\n v = opt.railpadding[a] || 0;\r\n v && rail.css(\"padding-\" + a, v + \"px\");\r\n }\r\n\r\n rail.append(cursor);\r\n\r\n rail.width = Math.max(parseFloat(opt.cursorwidth), cursor.outerWidth());\r\n rail.css({\r\n width: rail.width + \"px\",\r\n zIndex: self.zindex,\r\n background: opt.background,\r\n cursor: \"default\"\r\n });\r\n\r\n rail.visibility = true;\r\n rail.scrollable = true;\r\n\r\n rail.align = (opt.railalign == \"left\") ? 0 : 1;\r\n\r\n self.rail = rail;\r\n\r\n self.rail.drag = false;\r\n\r\n var zoom = false;\r\n if (opt.boxzoom && !self.ispage && !cap.isieold) {\r\n zoom = _doc.createElement('div');\r\n\r\n self.bind(zoom, \"click\", self.doZoom);\r\n self.bind(zoom, \"mouseenter\", function () {\r\n self.zoom.css('opacity', opt.cursoropacitymax);\r\n });\r\n self.bind(zoom, \"mouseleave\", function () {\r\n self.zoom.css('opacity', opt.cursoropacitymin);\r\n });\r\n\r\n self.zoom = $(zoom);\r\n self.zoom.css({\r\n cursor: \"pointer\",\r\n zIndex: self.zindex,\r\n backgroundImage: 'url(' + opt.scriptpath + 'zoomico.png)',\r\n height: 18,\r\n width: 18,\r\n backgroundPosition: '0 0'\r\n });\r\n if (opt.dblclickzoom) self.bind(self.win, \"dblclick\", self.doZoom);\r\n if (cap.cantouch && opt.gesturezoom) {\r\n self.ongesturezoom = function (e) {\r\n if (e.scale > 1.5) self.doZoomIn(e);\r\n if (e.scale < 0.8) self.doZoomOut(e);\r\n return self.cancelEvent(e);\r\n };\r\n self.bind(self.win, \"gestureend\", self.ongesturezoom);\r\n }\r\n }\r\n\r\n // init HORIZ\r\n\r\n self.railh = false;\r\n var railh;\r\n\r\n if (opt.horizrailenabled) {\r\n\r\n self.css(cont, {\r\n overflowX: 'hidden'\r\n });\r\n\r\n cursor = $(_doc.createElement('div'));\r\n cursor.css({\r\n position: \"absolute\",\r\n top: 0,\r\n height: opt.cursorwidth,\r\n width: 0,\r\n backgroundColor: opt.cursorcolor,\r\n border: opt.cursorborder,\r\n backgroundClip: 'padding-box',\r\n '-webkit-border-radius': opt.cursorborderradius,\r\n '-moz-border-radius': opt.cursorborderradius,\r\n 'border-radius': opt.cursorborderradius\r\n });\r\n\r\n if (cap.isieold) cursor.css('overflow', 'hidden'); //IE6 horiz scrollbar issue\r\n\r\n cursor.addClass('nicescroll-cursors');\r\n\r\n self.cursorh = cursor;\r\n\r\n railh = $(_doc.createElement('div'));\r\n railh.attr('id', self.id + '-hr');\r\n railh.addClass('nicescroll-rails nicescroll-rails-hr');\r\n railh.height = Math.max(parseFloat(opt.cursorwidth), cursor.outerHeight());\r\n railh.css({\r\n height: railh.height + \"px\",\r\n 'zIndex': self.zindex,\r\n \"background\": opt.background\r\n });\r\n\r\n railh.append(cursor);\r\n\r\n railh.visibility = true;\r\n railh.scrollable = true;\r\n\r\n railh.align = (opt.railvalign == \"top\") ? 0 : 1;\r\n\r\n self.railh = railh;\r\n\r\n self.railh.drag = false;\r\n\r\n }\r\n\r\n if (self.ispage) {\r\n\r\n rail.css({\r\n position: \"fixed\",\r\n top: 0,\r\n height: \"100%\"\r\n });\r\n\r\n rail.css((rail.align) ? { right: 0 } : { left: 0 });\r\n\r\n self.body.append(rail);\r\n if (self.railh) {\r\n railh.css({\r\n position: \"fixed\",\r\n left: 0,\r\n width: \"100%\"\r\n });\r\n\r\n railh.css((railh.align) ? { bottom: 0 } : { top: 0 });\r\n\r\n self.body.append(railh);\r\n }\r\n } else {\r\n if (self.ishwscroll) {\r\n if (self.win.css('position') == 'static') self.css(self.win, { 'position': 'relative' });\r\n var bd = (self.win[0].nodeName == 'HTML') ? self.body : self.win;\r\n $(bd).scrollTop(0).scrollLeft(0); // fix rail position if content already scrolled\r\n if (self.zoom) {\r\n self.zoom.css({\r\n position: \"absolute\",\r\n top: 1,\r\n right: 0,\r\n \"margin-right\": rail.width + 4\r\n });\r\n bd.append(self.zoom);\r\n }\r\n rail.css({\r\n position: \"absolute\",\r\n top: 0\r\n });\r\n rail.css((rail.align) ? { right: 0 } : { left: 0 });\r\n bd.append(rail);\r\n if (railh) {\r\n railh.css({\r\n position: \"absolute\",\r\n left: 0,\r\n bottom: 0\r\n });\r\n railh.css((railh.align) ? { bottom: 0 } : { top: 0 });\r\n bd.append(railh);\r\n }\r\n } else {\r\n self.isfixed = (self.win.css(\"position\") == \"fixed\");\r\n var rlpos = (self.isfixed) ? \"fixed\" : \"absolute\";\r\n\r\n if (!self.isfixed) self.viewport = self.getViewport(self.win[0]);\r\n if (self.viewport) {\r\n self.body = self.viewport;\r\n if (!(/fixed|absolute/.test(self.viewport.css(\"position\")))) self.css(self.viewport, {\r\n \"position\": \"relative\"\r\n });\r\n }\r\n\r\n rail.css({\r\n position: rlpos\r\n });\r\n if (self.zoom) self.zoom.css({\r\n position: rlpos\r\n });\r\n self.updateScrollBar();\r\n self.body.append(rail);\r\n if (self.zoom) self.body.append(self.zoom);\r\n if (self.railh) {\r\n railh.css({\r\n position: rlpos\r\n });\r\n self.body.append(railh);\r\n }\r\n }\r\n\r\n if (cap.isios) self.css(self.win, {\r\n '-webkit-tap-highlight-color': 'rgba(0,0,0,0)',\r\n '-webkit-touch-callout': 'none'\r\n }); // prevent grey layer on click\r\n\r\n if (opt.disableoutline) {\r\n if (cap.isie) self.win.attr(\"hideFocus\", \"true\"); // IE, prevent dotted rectangle on focused div\r\n if (cap.iswebkit) self.win.css('outline', 'none'); // Webkit outline\r\n }\r\n\r\n }\r\n\r\n if (opt.autohidemode === false) {\r\n self.autohidedom = false;\r\n self.rail.css({\r\n opacity: opt.cursoropacitymax\r\n });\r\n if (self.railh) self.railh.css({\r\n opacity: opt.cursoropacitymax\r\n });\r\n } else if ((opt.autohidemode === true) || (opt.autohidemode === \"leave\")) {\r\n self.autohidedom = $().add(self.rail);\r\n if (cap.isie8) self.autohidedom = self.autohidedom.add(self.cursor);\r\n if (self.railh) self.autohidedom = self.autohidedom.add(self.railh);\r\n if (self.railh && cap.isie8) self.autohidedom = self.autohidedom.add(self.cursorh);\r\n } else if (opt.autohidemode == \"scroll\") {\r\n self.autohidedom = $().add(self.rail);\r\n if (self.railh) self.autohidedom = self.autohidedom.add(self.railh);\r\n } else if (opt.autohidemode == \"cursor\") {\r\n self.autohidedom = $().add(self.cursor);\r\n if (self.railh) self.autohidedom = self.autohidedom.add(self.cursorh);\r\n } else if (opt.autohidemode == \"hidden\") {\r\n self.autohidedom = false;\r\n self.hide();\r\n self.railslocked = false;\r\n }\r\n\r\n if (cap.cantouch || self.istouchcapable || opt.emulatetouch || cap.hasmstouch) {\r\n\r\n self.scrollmom = new ScrollMomentumClass2D(self);\r\n\r\n var delayedclick = null;\r\n\r\n self.ontouchstart = function (e) {\r\n\r\n if (self.locked) return false;\r\n\r\n //if (e.pointerType && e.pointerType != 2 && e.pointerType != \"touch\") return false;\r\n if (e.pointerType && (e.pointerType === 'mouse' || e.pointerType === e.MSPOINTER_TYPE_MOUSE)) return false; // need test on surface!!\r\n\r\n self.hasmoving = false;\r\n\r\n if (self.scrollmom.timer) {\r\n self.triggerScrollEnd();\r\n self.scrollmom.stop();\r\n }\r\n\r\n if (!self.railslocked) {\r\n var tg = self.getTarget(e);\r\n\r\n if (tg) {\r\n var skp = (/INPUT/i.test(tg.nodeName)) && (/range/i.test(tg.type));\r\n if (skp) return self.stopPropagation(e);\r\n }\r\n\r\n var ismouse = (e.type === \"mousedown\");\r\n\r\n if (!(\"clientX\" in e) && (\"changedTouches\" in e)) {\r\n e.clientX = e.changedTouches[0].clientX;\r\n e.clientY = e.changedTouches[0].clientY;\r\n }\r\n\r\n if (self.forcescreen) {\r\n var le = e;\r\n e = {\r\n \"original\": (e.original) ? e.original : e\r\n };\r\n e.clientX = le.screenX;\r\n e.clientY = le.screenY;\r\n }\r\n\r\n self.rail.drag = {\r\n x: e.clientX,\r\n y: e.clientY,\r\n sx: self.scroll.x,\r\n sy: self.scroll.y,\r\n st: self.getScrollTop(),\r\n sl: self.getScrollLeft(),\r\n pt: 2,\r\n dl: false,\r\n tg: tg\r\n };\r\n\r\n if (self.ispage || !opt.directionlockdeadzone) {\r\n\r\n self.rail.drag.dl = \"f\";\r\n\r\n } else {\r\n\r\n var view = {\r\n w: $window.width(),\r\n h: $window.height()\r\n };\r\n\r\n var page = self.getContentSize();\r\n\r\n var maxh = page.h - view.h;\r\n var maxw = page.w - view.w;\r\n\r\n if (self.rail.scrollable && !self.railh.scrollable) self.rail.drag.ck = (maxh > 0) ? \"v\" : false;\r\n else if (!self.rail.scrollable && self.railh.scrollable) self.rail.drag.ck = (maxw > 0) ? \"h\" : false;\r\n else self.rail.drag.ck = false;\r\n\r\n }\r\n\r\n if (opt.emulatetouch && self.isiframe && cap.isie) {\r\n var wp = self.win.position();\r\n self.rail.drag.x += wp.left;\r\n self.rail.drag.y += wp.top;\r\n }\r\n\r\n self.hasmoving = false;\r\n self.lastmouseup = false;\r\n self.scrollmom.reset(e.clientX, e.clientY);\r\n\r\n if (tg&&ismouse) {\r\n\r\n var ip = /INPUT|SELECT|BUTTON|TEXTAREA/i.test(tg.nodeName);\r\n if (!ip) {\r\n if (cap.hasmousecapture) tg.setCapture();\r\n if (opt.emulatetouch) {\r\n if (tg.onclick && !(tg._onclick || false)) { // intercept DOM0 onclick event\r\n tg._onclick = tg.onclick;\r\n tg.onclick = function (e) {\r\n if (self.hasmoving) return false;\r\n tg._onclick.call(this, e);\r\n };\r\n }\r\n return self.cancelEvent(e);\r\n }\r\n return self.stopPropagation(e);\r\n }\r\n\r\n if (/SUBMIT|CANCEL|BUTTON/i.test($(tg).attr('type'))) {\r\n self.preventclick = {\r\n \"tg\": tg,\r\n \"click\": false\r\n };\r\n }\r\n\r\n }\r\n }\r\n\r\n };\r\n\r\n self.ontouchend = function (e) {\r\n\r\n if (!self.rail.drag) return true;\r\n\r\n if (self.rail.drag.pt == 2) {\r\n //if (e.pointerType && e.pointerType != 2 && e.pointerType != \"touch\") return false;\r\n if (e.pointerType && (e.pointerType === 'mouse' || e.pointerType === e.MSPOINTER_TYPE_MOUSE)) return false;\r\n\r\n self.rail.drag = false;\r\n\r\n var ismouse = (e.type === \"mouseup\");\r\n\r\n if (self.hasmoving) {\r\n self.scrollmom.doMomentum();\r\n self.lastmouseup = true;\r\n self.hideCursor();\r\n if (cap.hasmousecapture) _doc.releaseCapture();\r\n if (ismouse) return self.cancelEvent(e);\r\n }\r\n\r\n }\r\n else if (self.rail.drag.pt == 1) {\r\n return self.onmouseup(e);\r\n }\r\n\r\n };\r\n\r\n var moveneedoffset = (opt.emulatetouch && self.isiframe && !cap.hasmousecapture);\r\n\r\n var locktollerance = opt.directionlockdeadzone * 0.3 | 0;\r\n\r\n self.ontouchmove = function (e, byiframe) {\r\n\r\n if (!self.rail.drag) return true;\r\n\r\n if (e.targetTouches && opt.preventmultitouchscrolling) {\r\n if (e.targetTouches.length > 1) return true; // multitouch\r\n }\r\n\r\n //if (e.pointerType && e.pointerType != 2 && e.pointerType != \"touch\") return false;\r\n if (e.pointerType && (e.pointerType === 'mouse' || e.pointerType === e.MSPOINTER_TYPE_MOUSE)) return true;\r\n\r\n if (self.rail.drag.pt == 2) {\r\n\r\n if ((\"changedTouches\" in e)) {\r\n e.clientX = e.changedTouches[0].clientX;\r\n e.clientY = e.changedTouches[0].clientY;\r\n }\r\n\r\n var ofy, ofx;\r\n ofx = ofy = 0;\r\n\r\n if (moveneedoffset && !byiframe) {\r\n var wp = self.win.position();\r\n ofx = -wp.left;\r\n ofy = -wp.top;\r\n }\r\n\r\n var fy = e.clientY + ofy;\r\n var my = (fy - self.rail.drag.y);\r\n var fx = e.clientX + ofx;\r\n var mx = (fx - self.rail.drag.x);\r\n\r\n var ny = self.rail.drag.st - my;\r\n\r\n if (self.ishwscroll && opt.bouncescroll) {\r\n if (ny < 0) {\r\n ny = Math.round(ny / 2);\r\n } else if (ny > self.page.maxh) {\r\n ny = self.page.maxh + Math.round((ny - self.page.maxh) / 2);\r\n }\r\n } else {\r\n if (ny < 0) {\r\n ny = 0;\r\n fy = 0;\r\n }\r\n else if (ny > self.page.maxh) {\r\n ny = self.page.maxh;\r\n fy = 0;\r\n }\r\n if (fy === 0 && !self.hasmoving) {\r\n if (!self.ispage) self.rail.drag = false;\r\n return true;\r\n }\r\n }\r\n\r\n var nx = self.getScrollLeft();\r\n\r\n if (self.railh && self.railh.scrollable) {\r\n nx = (self.isrtlmode) ? mx - self.rail.drag.sl : self.rail.drag.sl - mx;\r\n\r\n if (self.ishwscroll && opt.bouncescroll) {\r\n if (nx < 0) {\r\n nx = Math.round(nx / 2);\r\n } else if (nx > self.page.maxw) {\r\n nx = self.page.maxw + Math.round((nx - self.page.maxw) / 2);\r\n }\r\n } else {\r\n if (nx < 0) {\r\n nx = 0;\r\n fx = 0;\r\n }\r\n if (nx > self.page.maxw) {\r\n nx = self.page.maxw;\r\n fx = 0;\r\n }\r\n }\r\n\r\n }\r\n\r\n\r\n if (!self.hasmoving) {\r\n\r\n if (self.rail.drag.y === e.clientY && self.rail.drag.x === e.clientX) return self.cancelEvent(e); // prevent first useless move event \r\n\r\n var ay = Math.abs(my);\r\n var ax = Math.abs(mx);\r\n var dz = opt.directionlockdeadzone;\r\n\r\n if (!self.rail.drag.ck) {\r\n if (ay > dz && ax > dz) self.rail.drag.dl = \"f\";\r\n else if (ay > dz) self.rail.drag.dl = (ax > locktollerance) ? \"f\" : \"v\";\r\n else if (ax > dz) self.rail.drag.dl = (ay > locktollerance) ? \"f\" : \"h\";\r\n }\r\n else if (self.rail.drag.ck == \"v\") {\r\n if (ax > dz && ay <= locktollerance) {\r\n self.rail.drag = false;\r\n }\r\n else if (ay > dz) self.rail.drag.dl = \"v\";\r\n\r\n }\r\n else if (self.rail.drag.ck == \"h\") {\r\n\r\n if (ay > dz && ax <= locktollerance) {\r\n self.rail.drag = false;\r\n }\r\n else if (ax > dz) self.rail.drag.dl = \"h\";\r\n\r\n }\r\n\r\n if (!self.rail.drag.dl) return self.cancelEvent(e);\r\n\r\n self.triggerScrollStart(e.clientX, e.clientY, 0, 0, 0);\r\n self.hasmoving = true;\r\n }\r\n\r\n if (self.preventclick && !self.preventclick.click) {\r\n self.preventclick.click = self.preventclick.tg.onclick || false;\r\n self.preventclick.tg.onclick = self.onpreventclick;\r\n }\r\n\r\n if (self.rail.drag.dl) {\r\n if (self.rail.drag.dl == \"v\") nx = self.rail.drag.sl;\r\n else if (self.rail.drag.dl == \"h\") ny = self.rail.drag.st;\r\n }\r\n\r\n self.synched(\"touchmove\", function () {\r\n if (self.rail.drag && (self.rail.drag.pt == 2)) {\r\n if (self.prepareTransition) self.resetTransition();\r\n if (self.rail.scrollable) self.setScrollTop(ny);\r\n self.scrollmom.update(fx, fy);\r\n if (self.railh && self.railh.scrollable) {\r\n self.setScrollLeft(nx);\r\n self.showCursor(ny, nx);\r\n } else {\r\n self.showCursor(ny);\r\n }\r\n if (cap.isie10) _doc.selection.clear();\r\n }\r\n });\r\n\r\n return self.cancelEvent(e);\r\n\r\n }\r\n else if (self.rail.drag.pt == 1) { // drag on cursor\r\n return self.onmousemove(e);\r\n }\r\n\r\n };\r\n\r\n self.ontouchstartCursor = function (e, hronly) {\r\n if (self.rail.drag && self.rail.drag.pt != 3) return;\r\n if (self.locked) return self.cancelEvent(e);\r\n self.cancelScroll();\r\n self.rail.drag = {\r\n x: e.touches[0].clientX,\r\n y: e.touches[0].clientY,\r\n sx: self.scroll.x,\r\n sy: self.scroll.y,\r\n pt: 3,\r\n hr: (!!hronly)\r\n };\r\n var tg = self.getTarget(e);\r\n if (!self.ispage && cap.hasmousecapture) tg.setCapture();\r\n if (self.isiframe && !cap.hasmousecapture) {\r\n self.saved.csspointerevents = self.doc.css(\"pointer-events\");\r\n self.css(self.doc, { \"pointer-events\": \"none\" });\r\n }\r\n return self.cancelEvent(e);\r\n };\r\n\r\n self.ontouchendCursor = function (e) {\r\n if (self.rail.drag) {\r\n if (cap.hasmousecapture) _doc.releaseCapture();\r\n if (self.isiframe && !cap.hasmousecapture) self.doc.css(\"pointer-events\", self.saved.csspointerevents);\r\n if (self.rail.drag.pt != 3) return;\r\n self.rail.drag = false;\r\n return self.cancelEvent(e);\r\n }\r\n };\r\n\r\n self.ontouchmoveCursor = function (e) {\r\n if (self.rail.drag) {\r\n if (self.rail.drag.pt != 3) return;\r\n\r\n self.cursorfreezed = true;\r\n\r\n if (self.rail.drag.hr) {\r\n self.scroll.x = self.rail.drag.sx + (e.touches[0].clientX - self.rail.drag.x);\r\n if (self.scroll.x < 0) self.scroll.x = 0;\r\n var mw = self.scrollvaluemaxw;\r\n if (self.scroll.x > mw) self.scroll.x = mw;\r\n } else {\r\n self.scroll.y = self.rail.drag.sy + (e.touches[0].clientY - self.rail.drag.y);\r\n if (self.scroll.y < 0) self.scroll.y = 0;\r\n var my = self.scrollvaluemax;\r\n if (self.scroll.y > my) self.scroll.y = my;\r\n }\r\n\r\n self.synched('touchmove', function () {\r\n if (self.rail.drag && (self.rail.drag.pt == 3)) {\r\n self.showCursor();\r\n if (self.rail.drag.hr) self.doScrollLeft(Math.round(self.scroll.x * self.scrollratio.x), opt.cursordragspeed);\r\n else self.doScrollTop(Math.round(self.scroll.y * self.scrollratio.y), opt.cursordragspeed);\r\n }\r\n });\r\n\r\n return self.cancelEvent(e);\r\n }\r\n\r\n };\r\n\r\n }\r\n\r\n self.onmousedown = function (e, hronly) {\r\n if (self.rail.drag && self.rail.drag.pt != 1) return;\r\n if (self.railslocked) return self.cancelEvent(e);\r\n self.cancelScroll();\r\n self.rail.drag = {\r\n x: e.clientX,\r\n y: e.clientY,\r\n sx: self.scroll.x,\r\n sy: self.scroll.y,\r\n pt: 1,\r\n hr: hronly || false\r\n };\r\n var tg = self.getTarget(e);\r\n\r\n if (cap.hasmousecapture) tg.setCapture();\r\n if (self.isiframe && !cap.hasmousecapture) {\r\n self.saved.csspointerevents = self.doc.css(\"pointer-events\");\r\n self.css(self.doc, {\r\n \"pointer-events\": \"none\"\r\n });\r\n }\r\n self.hasmoving = false;\r\n return self.cancelEvent(e);\r\n };\r\n\r\n self.onmouseup = function (e) {\r\n if (self.rail.drag) {\r\n if (self.rail.drag.pt != 1) return true;\r\n\r\n if (cap.hasmousecapture) _doc.releaseCapture();\r\n if (self.isiframe && !cap.hasmousecapture) self.doc.css(\"pointer-events\", self.saved.csspointerevents);\r\n self.rail.drag = false;\r\n self.cursorfreezed = false;\r\n if (self.hasmoving) self.triggerScrollEnd();\r\n return self.cancelEvent(e);\r\n }\r\n };\r\n\r\n self.onmousemove = function (e) {\r\n if (self.rail.drag) {\r\n if (self.rail.drag.pt !== 1) return;\r\n\r\n if (cap.ischrome && e.which === 0) return self.onmouseup(e);\r\n\r\n self.cursorfreezed = true;\r\n\r\n if (!self.hasmoving) self.triggerScrollStart(e.clientX, e.clientY, 0, 0, 0);\r\n\r\n self.hasmoving = true;\r\n\r\n if (self.rail.drag.hr) {\r\n self.scroll.x = self.rail.drag.sx + (e.clientX - self.rail.drag.x);\r\n if (self.scroll.x < 0) self.scroll.x = 0;\r\n var mw = self.scrollvaluemaxw;\r\n if (self.scroll.x > mw) self.scroll.x = mw;\r\n } else {\r\n self.scroll.y = self.rail.drag.sy + (e.clientY - self.rail.drag.y);\r\n if (self.scroll.y < 0) self.scroll.y = 0;\r\n var my = self.scrollvaluemax;\r\n if (self.scroll.y > my) self.scroll.y = my;\r\n }\r\n\r\n self.synched('mousemove', function () {\r\n\r\n if (self.cursorfreezed) {\r\n self.showCursor();\r\n\r\n if (self.rail.drag.hr) {\r\n self.scrollLeft(Math.round(self.scroll.x * self.scrollratio.x));\r\n } else {\r\n self.scrollTop(Math.round(self.scroll.y * self.scrollratio.y));\r\n }\r\n\r\n }\r\n });\r\n\r\n return self.cancelEvent(e);\r\n }\r\n else {\r\n self.checkarea = 0;\r\n }\r\n };\r\n\r\n if (cap.cantouch || opt.emulatetouch) {\r\n\r\n self.onpreventclick = function (e) {\r\n if (self.preventclick) {\r\n self.preventclick.tg.onclick = self.preventclick.click;\r\n self.preventclick = false;\r\n return self.cancelEvent(e);\r\n }\r\n };\r\n\r\n self.onclick = (cap.isios) ? false : function (e) { // it needs to check IE11 ???\r\n if (self.lastmouseup) {\r\n self.lastmouseup = false;\r\n return self.cancelEvent(e);\r\n } else {\r\n return true;\r\n }\r\n };\r\n\r\n if (opt.grabcursorenabled && cap.cursorgrabvalue) {\r\n self.css((self.ispage) ? self.doc : self.win, {\r\n 'cursor': cap.cursorgrabvalue\r\n });\r\n self.css(self.rail, {\r\n 'cursor': cap.cursorgrabvalue\r\n });\r\n }\r\n\r\n } else {\r\n\r\n var checkSelectionScroll = function (e) {\r\n if (!self.selectiondrag) return;\r\n\r\n if (e) {\r\n var ww = self.win.outerHeight();\r\n var df = (e.pageY - self.selectiondrag.top);\r\n if (df > 0 && df < ww) df = 0;\r\n if (df >= ww) df -= ww;\r\n self.selectiondrag.df = df;\r\n }\r\n if (self.selectiondrag.df === 0) return;\r\n\r\n var rt = -(self.selectiondrag.df*2/6)|0;\r\n self.doScrollBy(rt);\r\n\r\n self.debounced(\"doselectionscroll\", function () {\r\n checkSelectionScroll();\r\n }, 50);\r\n };\r\n\r\n if (\"getSelection\" in _doc) { // A grade - Major browsers\r\n self.hasTextSelected = function () {\r\n return (_doc.getSelection().rangeCount > 0);\r\n };\r\n } else if (\"selection\" in _doc) { //IE9-\r\n self.hasTextSelected = function () {\r\n return (_doc.selection.type != \"None\");\r\n };\r\n } else {\r\n self.hasTextSelected = function () { // no support\r\n return false;\r\n };\r\n }\r\n\r\n self.onselectionstart = function (e) {\r\n // More testing - severe chrome issues \r\n /* \r\n if (!self.haswrapper&&(e.which&&e.which==2)) { // fool browser to manage middle button scrolling\r\n self.win.css({'overflow':'auto'});\r\n setTimeout(function(){\r\n self.win.css({'overflow':'hidden'});\r\n },10); \r\n return true;\r\n } \r\n */\r\n if (self.ispage) return;\r\n self.selectiondrag = self.win.offset();\r\n };\r\n\r\n self.onselectionend = function (e) {\r\n self.selectiondrag = false;\r\n };\r\n self.onselectiondrag = function (e) {\r\n if (!self.selectiondrag) return;\r\n if (self.hasTextSelected()) self.debounced(\"selectionscroll\", function () {\r\n checkSelectionScroll(e);\r\n }, 250);\r\n };\r\n }\r\n\r\n if (cap.hasw3ctouch) { //IE11+\r\n self.css((self.ispage) ? $(\"html\") : self.win, { 'touch-action': 'none' });\r\n self.css(self.rail, {\r\n 'touch-action': 'none'\r\n });\r\n self.css(self.cursor, {\r\n 'touch-action': 'none'\r\n });\r\n self.bind(self.win, \"pointerdown\", self.ontouchstart);\r\n self.bind(_doc, \"pointerup\", self.ontouchend);\r\n self.delegate(_doc, \"pointermove\", self.ontouchmove);\r\n } else if (cap.hasmstouch) { //IE10\r\n self.css((self.ispage) ? $(\"html\") : self.win, { '-ms-touch-action': 'none' });\r\n self.css(self.rail, {\r\n '-ms-touch-action': 'none'\r\n });\r\n self.css(self.cursor, {\r\n '-ms-touch-action': 'none'\r\n });\r\n self.bind(self.win, \"MSPointerDown\", self.ontouchstart);\r\n self.bind(_doc, \"MSPointerUp\", self.ontouchend);\r\n self.delegate(_doc, \"MSPointerMove\", self.ontouchmove);\r\n self.bind(self.cursor, \"MSGestureHold\", function (e) {\r\n e.preventDefault();\r\n });\r\n self.bind(self.cursor, \"contextmenu\", function (e) {\r\n e.preventDefault();\r\n });\r\n } else if (cap.cantouch) { // smartphones/touch devices\r\n self.bind(self.win, \"touchstart\", self.ontouchstart, false, true);\r\n self.bind(_doc, \"touchend\", self.ontouchend, false, true);\r\n self.bind(_doc, \"touchcancel\", self.ontouchend, false, true);\r\n self.delegate(_doc, \"touchmove\", self.ontouchmove, false, true);\r\n }\r\n\r\n if (opt.emulatetouch) {\r\n self.bind(self.win, \"mousedown\", self.ontouchstart, false, true);\r\n self.bind(_doc, \"mouseup\", self.ontouchend, false, true);\r\n self.bind(_doc, \"mousemove\", self.ontouchmove, false, true);\r\n }\r\n\r\n if (opt.cursordragontouch || (!cap.cantouch && !opt.emulatetouch)) {\r\n\r\n self.rail.css({\r\n cursor: \"default\"\r\n });\r\n self.railh && self.railh.css({\r\n cursor: \"default\"\r\n });\r\n\r\n self.jqbind(self.rail, \"mouseenter\", function () {\r\n if (!self.ispage && !self.win.is(\":visible\")) return false;\r\n if (self.canshowonmouseevent) self.showCursor();\r\n self.rail.active = true;\r\n });\r\n self.jqbind(self.rail, \"mouseleave\", function () {\r\n self.rail.active = false;\r\n if (!self.rail.drag) self.hideCursor();\r\n });\r\n\r\n if (opt.sensitiverail) {\r\n self.bind(self.rail, \"click\", function (e) {\r\n self.doRailClick(e, false, false);\r\n });\r\n self.bind(self.rail, \"dblclick\", function (e) {\r\n self.doRailClick(e, true, false);\r\n });\r\n self.bind(self.cursor, \"click\", function (e) {\r\n self.cancelEvent(e);\r\n });\r\n self.bind(self.cursor, \"dblclick\", function (e) {\r\n self.cancelEvent(e);\r\n });\r\n }\r\n\r\n if (self.railh) {\r\n self.jqbind(self.railh, \"mouseenter\", function () {\r\n if (!self.ispage && !self.win.is(\":visible\")) return false;\r\n if (self.canshowonmouseevent) self.showCursor();\r\n self.rail.active = true;\r\n });\r\n self.jqbind(self.railh, \"mouseleave\", function () {\r\n self.rail.active = false;\r\n if (!self.rail.drag) self.hideCursor();\r\n });\r\n\r\n if (opt.sensitiverail) {\r\n self.bind(self.railh, \"click\", function (e) {\r\n self.doRailClick(e, false, true);\r\n });\r\n self.bind(self.railh, \"dblclick\", function (e) {\r\n self.doRailClick(e, true, true);\r\n });\r\n self.bind(self.cursorh, \"click\", function (e) {\r\n self.cancelEvent(e);\r\n });\r\n self.bind(self.cursorh, \"dblclick\", function (e) {\r\n self.cancelEvent(e);\r\n });\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n if (opt.cursordragontouch && (this.istouchcapable || cap.cantouch)) {\r\n self.bind(self.cursor, \"touchstart\", self.ontouchstartCursor);\r\n self.bind(self.cursor, \"touchmove\", self.ontouchmoveCursor);\r\n self.bind(self.cursor, \"touchend\", self.ontouchendCursor);\r\n self.cursorh && self.bind(self.cursorh, \"touchstart\", function (e) {\r\n self.ontouchstartCursor(e, true);\r\n });\r\n self.cursorh && self.bind(self.cursorh, \"touchmove\", self.ontouchmoveCursor);\r\n self.cursorh && self.bind(self.cursorh, \"touchend\", self.ontouchendCursor);\r\n }\r\n\r\n// if (!cap.cantouch && !opt.emulatetouch) {\r\n if (!opt.emulatetouch && !cap.isandroid && !cap.isios) {\r\n\r\n self.bind((cap.hasmousecapture) ? self.win : _doc, \"mouseup\", self.onmouseup);\r\n self.bind(_doc, \"mousemove\", self.onmousemove);\r\n if (self.onclick) self.bind(_doc, \"click\", self.onclick);\r\n\r\n self.bind(self.cursor, \"mousedown\", self.onmousedown);\r\n self.bind(self.cursor, \"mouseup\", self.onmouseup);\r\n\r\n if (self.railh) {\r\n self.bind(self.cursorh, \"mousedown\", function (e) {\r\n self.onmousedown(e, true);\r\n });\r\n self.bind(self.cursorh, \"mouseup\", self.onmouseup);\r\n }\r\n\r\n if (!self.ispage && opt.enablescrollonselection) {\r\n self.bind(self.win[0], \"mousedown\", self.onselectionstart);\r\n self.bind(_doc, \"mouseup\", self.onselectionend);\r\n self.bind(self.cursor, \"mouseup\", self.onselectionend);\r\n if (self.cursorh) self.bind(self.cursorh, \"mouseup\", self.onselectionend);\r\n self.bind(_doc, \"mousemove\", self.onselectiondrag);\r\n }\r\n\r\n if (self.zoom) {\r\n self.jqbind(self.zoom, \"mouseenter\", function () {\r\n if (self.canshowonmouseevent) self.showCursor();\r\n self.rail.active = true;\r\n });\r\n self.jqbind(self.zoom, \"mouseleave\", function () {\r\n self.rail.active = false;\r\n if (!self.rail.drag) self.hideCursor();\r\n });\r\n }\r\n\r\n } else {\r\n\r\n self.bind((cap.hasmousecapture) ? self.win : _doc, \"mouseup\", self.ontouchend);\r\n if (self.onclick) self.bind(_doc, \"click\", self.onclick);\r\n\r\n if (opt.cursordragontouch) {\r\n self.bind(self.cursor, \"mousedown\", self.onmousedown);\r\n self.bind(self.cursor, \"mouseup\", self.onmouseup);\r\n self.cursorh && self.bind(self.cursorh, \"mousedown\", function (e) {\r\n self.onmousedown(e, true);\r\n });\r\n self.cursorh && self.bind(self.cursorh, \"mouseup\", self.onmouseup);\r\n } else {\r\n self.bind(self.rail, \"mousedown\", function (e) { e.preventDefault(); }); // prevent text selection \r\n self.railh && self.bind(self.railh, \"mousedown\", function (e) { e.preventDefault(); });\r\n }\r\n\r\n }\r\n\r\n\r\n if (opt.enablemousewheel) {\r\n if (!self.isiframe) self.mousewheel((cap.isie && self.ispage) ? _doc : self.win, self.onmousewheel);\r\n self.mousewheel(self.rail, self.onmousewheel);\r\n if (self.railh) self.mousewheel(self.railh, self.onmousewheelhr);\r\n }\r\n\r\n if (!self.ispage && !cap.cantouch && !(/HTML|^BODY/.test(self.win[0].nodeName))) {\r\n if (!self.win.attr(\"tabindex\")) self.win.attr({\r\n \"tabindex\": ++tabindexcounter\r\n });\r\n\r\n self.bind(self.win, \"focus\", function (e) { // better using native events\r\n domfocus = (self.getTarget(e)).id || self.getTarget(e) || false;\r\n self.hasfocus = true;\r\n if (self.canshowonmouseevent) self.noticeCursor();\r\n });\r\n self.bind(self.win, \"blur\", function (e) { // *\r\n domfocus = false;\r\n self.hasfocus = false;\r\n });\r\n\r\n self.bind(self.win, \"mouseenter\", function (e) { // *\r\n mousefocus = (self.getTarget(e)).id || self.getTarget(e) || false;\r\n self.hasmousefocus = true;\r\n if (self.canshowonmouseevent) self.noticeCursor();\r\n });\r\n self.bind(self.win, \"mouseleave\", function (e) { // * \r\n mousefocus = false;\r\n self.hasmousefocus = false;\r\n if (!self.rail.drag) self.hideCursor();\r\n });\r\n\r\n }\r\n\r\n\r\n //Thanks to http://www.quirksmode.org !!\r\n self.onkeypress = function (e) {\r\n if (self.railslocked && self.page.maxh === 0) return true;\r\n\r\n e = e || _win.event;\r\n var tg = self.getTarget(e);\r\n if (tg && /INPUT|TEXTAREA|SELECT|OPTION/.test(tg.nodeName)) {\r\n var tp = tg.getAttribute('type') || tg.type || false;\r\n if ((!tp) || !(/submit|button|cancel/i.tp)) return true;\r\n }\r\n\r\n if ($(tg).attr('contenteditable')) return true;\r\n\r\n if (self.hasfocus || (self.hasmousefocus && !domfocus) || (self.ispage && !domfocus && !mousefocus)) {\r\n var key = e.keyCode;\r\n\r\n if (self.railslocked && key != 27) return self.cancelEvent(e);\r\n\r\n var ctrl = e.ctrlKey || false;\r\n var shift = e.shiftKey || false;\r\n\r\n var ret = false;\r\n switch (key) {\r\n case 38:\r\n case 63233: //safari\r\n self.doScrollBy(24 * 3);\r\n ret = true;\r\n break;\r\n case 40:\r\n case 63235: //safari\r\n self.doScrollBy(-24 * 3);\r\n ret = true;\r\n break;\r\n case 37:\r\n case 63232: //safari\r\n if (self.railh) {\r\n (ctrl) ? self.doScrollLeft(0) : self.doScrollLeftBy(24 * 3);\r\n ret = true;\r\n }\r\n break;\r\n case 39:\r\n case 63234: //safari\r\n if (self.railh) {\r\n (ctrl) ? self.doScrollLeft(self.page.maxw) : self.doScrollLeftBy(-24 * 3);\r\n ret = true;\r\n }\r\n break;\r\n case 33:\r\n case 63276: // safari\r\n self.doScrollBy(self.view.h);\r\n ret = true;\r\n break;\r\n case 34:\r\n case 63277: // safari\r\n self.doScrollBy(-self.view.h);\r\n ret = true;\r\n break;\r\n case 36:\r\n case 63273: // safari \r\n (self.railh && ctrl) ? self.doScrollPos(0, 0) : self.doScrollTo(0);\r\n ret = true;\r\n break;\r\n case 35:\r\n case 63275: // safari\r\n (self.railh && ctrl) ? self.doScrollPos(self.page.maxw, self.page.maxh) : self.doScrollTo(self.page.maxh);\r\n ret = true;\r\n break;\r\n case 32:\r\n if (opt.spacebarenabled) {\r\n (shift) ? self.doScrollBy(self.view.h) : self.doScrollBy(-self.view.h);\r\n ret = true;\r\n }\r\n break;\r\n case 27: // ESC\r\n if (self.zoomactive) {\r\n self.doZoom();\r\n ret = true;\r\n }\r\n break;\r\n }\r\n if (ret) return self.cancelEvent(e);\r\n }\r\n };\r\n\r\n if (opt.enablekeyboard) self.bind(_doc, (cap.isopera && !cap.isopera12) ? \"keypress\" : \"keydown\", self.onkeypress);\r\n\r\n self.bind(_doc, \"keydown\", function (e) {\r\n var ctrl = e.ctrlKey || false;\r\n if (ctrl) self.wheelprevented = true;\r\n });\r\n self.bind(_doc, \"keyup\", function (e) {\r\n var ctrl = e.ctrlKey || false;\r\n if (!ctrl) self.wheelprevented = false;\r\n });\r\n self.bind(_win, \"blur\", function (e) {\r\n self.wheelprevented = false;\r\n });\r\n\r\n self.bind(_win, 'resize', self.onscreenresize);\r\n self.bind(_win, 'orientationchange', self.onscreenresize);\r\n\r\n self.bind(_win, \"load\", self.lazyResize);\r\n\r\n if (cap.ischrome && !self.ispage && !self.haswrapper) { //chrome void scrollbar bug - it persists in version 26\r\n var tmp = self.win.attr(\"style\");\r\n var ww = parseFloat(self.win.css(\"width\")) + 1;\r\n self.win.css('width', ww);\r\n self.synched(\"chromefix\", function () {\r\n self.win.attr(\"style\", tmp);\r\n });\r\n }\r\n\r\n\r\n // Trying a cross-browser implementation - good luck!\r\n\r\n self.onAttributeChange = function (e) {\r\n self.lazyResize(self.isieold ? 250 : 30);\r\n };\r\n\r\n if (opt.enableobserver) {\r\n\r\n if ((!self.isie11) && (ClsMutationObserver !== false)) { // IE11 crashes #568\r\n self.observerbody = new ClsMutationObserver(function (mutations) {\r\n mutations.forEach(function (mut) {\r\n if (mut.type == \"attributes\") {\r\n return ($body.hasClass(\"modal-open\") && $body.hasClass(\"modal-dialog\") && !$.contains($('.modal-dialog')[0], self.doc[0])) ? self.hide() : self.show(); // Support for Bootstrap modal; Added check if the nice scroll element is inside a modal\r\n }\r\n });\r\n if (self.me.clientWidth != self.page.width || self.me.clientHeight != self.page.height) return self.lazyResize(30);\r\n });\r\n self.observerbody.observe(_doc.body, {\r\n childList: true,\r\n subtree: true,\r\n characterData: false,\r\n attributes: true,\r\n attributeFilter: ['class']\r\n });\r\n }\r\n\r\n if (!self.ispage && !self.haswrapper) {\r\n\r\n var _dom = self.win[0];\r\n\r\n // redesigned MutationObserver for Chrome18+/Firefox14+/iOS6+ with support for: remove div, add/remove content\r\n if (ClsMutationObserver !== false) {\r\n self.observer = new ClsMutationObserver(function (mutations) {\r\n mutations.forEach(self.onAttributeChange);\r\n });\r\n self.observer.observe(_dom, {\r\n childList: true,\r\n characterData: false,\r\n attributes: true,\r\n subtree: false\r\n });\r\n self.observerremover = new ClsMutationObserver(function (mutations) {\r\n mutations.forEach(function (mo) {\r\n if (mo.removedNodes.length > 0) {\r\n for (var dd in mo.removedNodes) {\r\n if (!!self && (mo.removedNodes[dd] === _dom)) return self.remove();\r\n }\r\n }\r\n });\r\n });\r\n self.observerremover.observe(_dom.parentNode, {\r\n childList: true,\r\n characterData: false,\r\n attributes: false,\r\n subtree: false\r\n });\r\n } else {\r\n self.bind(_dom, (cap.isie && !cap.isie9) ? \"propertychange\" : \"DOMAttrModified\", self.onAttributeChange);\r\n if (cap.isie9) _dom.attachEvent(\"onpropertychange\", self.onAttributeChange); //IE9 DOMAttrModified bug\r\n self.bind(_dom, \"DOMNodeRemoved\", function (e) {\r\n if (e.target === _dom) self.remove();\r\n });\r\n }\r\n }\r\n\r\n }\r\n\r\n //\r\n\r\n if (!self.ispage && opt.boxzoom) self.bind(_win, \"resize\", self.resizeZoom);\r\n if (self.istextarea) {\r\n self.bind(self.win, \"keydown\", self.lazyResize);\r\n self.bind(self.win, \"mouseup\", self.lazyResize);\r\n }\r\n\r\n self.lazyResize(30);\r\n\r\n }\r\n\r\n if (this.doc[0].nodeName == 'IFRAME') {\r\n var oniframeload = function () {\r\n self.iframexd = false;\r\n var doc;\r\n try {\r\n doc = 'contentDocument' in this ? this.contentDocument : this.contentWindow._doc;\r\n var a = doc.domain;\r\n } catch (e) {\r\n self.iframexd = true;\r\n doc = false;\r\n }\r\n\r\n if (self.iframexd) {\r\n if (\"console\" in _win) console.log('NiceScroll error: policy restriced iframe');\r\n return true; //cross-domain - I can't manage this \r\n }\r\n\r\n self.forcescreen = true;\r\n\r\n if (self.isiframe) {\r\n self.iframe = {\r\n \"doc\": $(doc),\r\n \"html\": self.doc.contents().find('html')[0],\r\n \"body\": self.doc.contents().find('body')[0]\r\n };\r\n self.getContentSize = function () {\r\n return {\r\n w: Math.max(self.iframe.html.scrollWidth, self.iframe.body.scrollWidth),\r\n h: Math.max(self.iframe.html.scrollHeight, self.iframe.body.scrollHeight)\r\n };\r\n };\r\n self.docscroll = $(self.iframe.body);\r\n }\r\n\r\n if (!cap.isios && opt.iframeautoresize && !self.isiframe) {\r\n self.win.scrollTop(0); // reset position\r\n self.doc.height(\"\"); //reset height to fix browser bug\r\n var hh = Math.max(doc.getElementsByTagName('html')[0].scrollHeight, doc.body.scrollHeight);\r\n self.doc.height(hh);\r\n }\r\n self.lazyResize(30);\r\n\r\n self.css($(self.iframe.body), _scrollyhidden);\r\n\r\n if (cap.isios && self.haswrapper) {\r\n self.css($(doc.body), {\r\n '-webkit-transform': 'translate3d(0,0,0)'\r\n }); // avoid iFrame content clipping - thanks to http://blog.derraab.com/2012/04/02/avoid-iframe-content-clipping-with-css-transform-on-ios/\r\n }\r\n\r\n if ('contentWindow' in this) {\r\n self.bind(this.contentWindow, \"scroll\", self.onscroll); //IE8 & minor\r\n } else {\r\n self.bind(doc, \"scroll\", self.onscroll);\r\n }\r\n\r\n if (opt.enablemousewheel) {\r\n self.mousewheel(doc, self.onmousewheel);\r\n }\r\n\r\n if (opt.enablekeyboard) self.bind(doc, (cap.isopera) ? \"keypress\" : \"keydown\", self.onkeypress);\r\n\r\n if (cap.cantouch) {\r\n self.bind(doc, \"touchstart\", self.ontouchstart);\r\n self.bind(doc, \"touchmove\", self.ontouchmove);\r\n }\r\n else if (opt.emulatetouch) {\r\n self.bind(doc, \"mousedown\", self.ontouchstart);\r\n self.bind(doc, \"mousemove\", function (e) {\r\n return self.ontouchmove(e, true);\r\n });\r\n if (opt.grabcursorenabled && cap.cursorgrabvalue) self.css($(doc.body), {\r\n 'cursor': cap.cursorgrabvalue\r\n });\r\n }\r\n\r\n self.bind(doc, \"mouseup\", self.ontouchend);\r\n\r\n if (self.zoom) {\r\n if (opt.dblclickzoom) self.bind(doc, 'dblclick', self.doZoom);\r\n if (self.ongesturezoom) self.bind(doc, \"gestureend\", self.ongesturezoom);\r\n }\r\n };\r\n\r\n if (this.doc[0].readyState && this.doc[0].readyState === \"complete\") {\r\n setTimeout(function () {\r\n oniframeload.call(self.doc[0], false);\r\n }, 500);\r\n }\r\n self.bind(this.doc, \"load\", oniframeload);\r\n\r\n }\r\n\r\n };\r\n\r\n this.showCursor = function (py, px) {\r\n if (self.cursortimeout) {\r\n clearTimeout(self.cursortimeout);\r\n self.cursortimeout = 0;\r\n }\r\n if (!self.rail) return;\r\n if (self.autohidedom) {\r\n self.autohidedom.stop().css({\r\n opacity: opt.cursoropacitymax\r\n });\r\n self.cursoractive = true;\r\n }\r\n\r\n if (!self.rail.drag || self.rail.drag.pt != 1) {\r\n if (py !== undefined && py !== false) {\r\n self.scroll.y = (py / self.scrollratio.y) | 0;\r\n }\r\n if (px !== undefined) {\r\n self.scroll.x = (px / self.scrollratio.x) | 0;\r\n }\r\n }\r\n\r\n self.cursor.css({\r\n height: self.cursorheight,\r\n top: self.scroll.y\r\n });\r\n if (self.cursorh) {\r\n var lx = (self.hasreversehr) ? self.scrollvaluemaxw - self.scroll.x : self.scroll.x;\r\n self.cursorh.css({\r\n width: self.cursorwidth,\r\n left: (!self.rail.align && self.rail.visibility) ? lx + self.rail.width : lx\r\n });\r\n self.cursoractive = true;\r\n }\r\n\r\n if (self.zoom) self.zoom.stop().css({\r\n opacity: opt.cursoropacitymax\r\n });\r\n };\r\n\r\n this.hideCursor = function (tm) {\r\n if (self.cursortimeout) return;\r\n if (!self.rail) return;\r\n if (!self.autohidedom) return;\r\n\r\n if (self.hasmousefocus && opt.autohidemode === \"leave\") return;\r\n self.cursortimeout = setTimeout(function () {\r\n if (!self.rail.active || !self.showonmouseevent) {\r\n self.autohidedom.stop().animate({\r\n opacity: opt.cursoropacitymin\r\n });\r\n if (self.zoom) self.zoom.stop().animate({\r\n opacity: opt.cursoropacitymin\r\n });\r\n self.cursoractive = false;\r\n }\r\n self.cursortimeout = 0;\r\n }, tm || opt.hidecursordelay);\r\n };\r\n\r\n this.noticeCursor = function (tm, py, px) {\r\n self.showCursor(py, px);\r\n if (!self.rail.active) self.hideCursor(tm);\r\n };\r\n\r\n this.getContentSize =\r\n (self.ispage) ?\r\n function () {\r\n return {\r\n w: Math.max(_doc.body.scrollWidth, _doc.documentElement.scrollWidth),\r\n h: Math.max(_doc.body.scrollHeight, _doc.documentElement.scrollHeight)\r\n };\r\n } : (self.haswrapper) ?\r\n function () {\r\n return {\r\n w: self.doc[0].offsetWidth,\r\n h: self.doc[0].offsetHeight\r\n };\r\n } : function () {\r\n return {\r\n w: self.docscroll[0].scrollWidth,\r\n h: self.docscroll[0].scrollHeight\r\n };\r\n };\r\n\r\n this.onResize = function (e, page) {\r\n\r\n if (!self || !self.win) return false;\r\n\r\n var premaxh = self.page.maxh,\r\n premaxw = self.page.maxw,\r\n previewh = self.view.h,\r\n previeww = self.view.w;\r\n\r\n self.view = {\r\n w: (self.ispage) ? self.win.width() : self.win[0].clientWidth,\r\n h: (self.ispage) ? self.win.height() : self.win[0].clientHeight\r\n };\r\n\r\n self.page = (page) ? page : self.getContentSize();\r\n\r\n self.page.maxh = Math.max(0, self.page.h - self.view.h);\r\n self.page.maxw = Math.max(0, self.page.w - self.view.w);\r\n\r\n if ((self.page.maxh == premaxh) && (self.page.maxw == premaxw) && (self.view.w == previeww) && (self.view.h == previewh)) {\r\n // test position \r\n if (!self.ispage) {\r\n var pos = self.win.offset();\r\n if (self.lastposition) {\r\n var lst = self.lastposition;\r\n if ((lst.top == pos.top) && (lst.left == pos.left)) return self; //nothing to do \r\n }\r\n self.lastposition = pos;\r\n } else {\r\n return self; //nothing to do\r\n }\r\n }\r\n\r\n if (self.page.maxh === 0) {\r\n self.hideRail();\r\n self.scrollvaluemax = 0;\r\n self.scroll.y = 0;\r\n self.scrollratio.y = 0;\r\n self.cursorheight = 0;\r\n self.setScrollTop(0);\r\n if (self.rail) self.rail.scrollable = false;\r\n } else {\r\n self.page.maxh -= (opt.railpadding.top + opt.railpadding.bottom);\r\n self.rail.scrollable = true;\r\n }\r\n\r\n if (self.page.maxw === 0) {\r\n self.hideRailHr();\r\n self.scrollvaluemaxw = 0;\r\n self.scroll.x = 0;\r\n self.scrollratio.x = 0;\r\n self.cursorwidth = 0;\r\n self.setScrollLeft(0);\r\n if (self.railh) {\r\n self.railh.scrollable = false;\r\n }\r\n } else {\r\n self.page.maxw -= (opt.railpadding.left + opt.railpadding.right);\r\n if (self.railh) self.railh.scrollable = (opt.horizrailenabled);\r\n }\r\n\r\n self.railslocked = (self.locked) || ((self.page.maxh === 0) && (self.page.maxw === 0));\r\n if (self.railslocked) {\r\n if (!self.ispage) self.updateScrollBar(self.view);\r\n return false;\r\n }\r\n\r\n if (!self.hidden) {\r\n if (!self.rail.visibility) self.showRail();\r\n if (self.railh && !self.railh.visibility) self.showRailHr();\r\n }\r\n\r\n if (self.istextarea && self.win.css('resize') && self.win.css('resize') != 'none') self.view.h -= 20;\r\n\r\n self.cursorheight = Math.min(self.view.h, Math.round(self.view.h * (self.view.h / self.page.h)));\r\n self.cursorheight = (opt.cursorfixedheight) ? opt.cursorfixedheight : Math.max(opt.cursorminheight, self.cursorheight);\r\n\r\n self.cursorwidth = Math.min(self.view.w, Math.round(self.view.w * (self.view.w / self.page.w)));\r\n self.cursorwidth = (opt.cursorfixedheight) ? opt.cursorfixedheight : Math.max(opt.cursorminheight, self.cursorwidth);\r\n\r\n self.scrollvaluemax = self.view.h - self.cursorheight - (opt.railpadding.top + opt.railpadding.bottom);\r\n if (!self.hasborderbox) self.scrollvaluemax -= self.cursor[0].offsetHeight - self.cursor[0].clientHeight;\r\n\r\n if (self.railh) {\r\n self.railh.width = (self.page.maxh > 0) ? (self.view.w - self.rail.width) : self.view.w;\r\n self.scrollvaluemaxw = self.railh.width - self.cursorwidth - (opt.railpadding.left + opt.railpadding.right);\r\n }\r\n\r\n if (!self.ispage) self.updateScrollBar(self.view);\r\n\r\n self.scrollratio = {\r\n x: (self.page.maxw / self.scrollvaluemaxw),\r\n y: (self.page.maxh / self.scrollvaluemax)\r\n };\r\n\r\n var sy = self.getScrollTop();\r\n if (sy > self.page.maxh) {\r\n self.doScrollTop(self.page.maxh);\r\n } else {\r\n self.scroll.y = (self.getScrollTop() / self.scrollratio.y) | 0;\r\n self.scroll.x = (self.getScrollLeft() / self.scrollratio.x) | 0;\r\n if (self.cursoractive) self.noticeCursor();\r\n }\r\n\r\n if (self.scroll.y && (self.getScrollTop() === 0)) self.doScrollTo((self.scroll.y * self.scrollratio.y)|0);\r\n\r\n return self;\r\n };\r\n\r\n this.resize = self.onResize;\r\n\r\n var hlazyresize = 0;\r\n\r\n this.onscreenresize = function(e) {\r\n clearTimeout(hlazyresize);\r\n\r\n var hiderails = (!self.ispage && !self.haswrapper);\r\n if (hiderails) self.hideRails();\r\n\r\n hlazyresize = setTimeout(function () {\r\n if (self) {\r\n if (hiderails) self.showRails();\r\n self.resize();\r\n }\r\n hlazyresize=0;\r\n }, 120);\r\n };\r\n\r\n this.lazyResize = function (tm) { // event debounce\r\n\r\n clearTimeout(hlazyresize);\r\n\r\n tm = isNaN(tm) ? 240 : tm;\r\n\r\n hlazyresize = setTimeout(function () {\r\n self && self.resize();\r\n hlazyresize=0;\r\n }, tm);\r\n\r\n return self;\r\n\r\n };\r\n\r\n // derived by MDN https://developer.mozilla.org/en-US/docs/DOM/Mozilla_event_reference/wheel\r\n function _modernWheelEvent(dom, name, fn, bubble) {\r\n self._bind(dom, name, function (e) {\r\n e = e || _win.event;\r\n var event = {\r\n original: e,\r\n target: e.target || e.srcElement,\r\n type: \"wheel\",\r\n deltaMode: e.type == \"MozMousePixelScroll\" ? 0 : 1,\r\n deltaX: 0,\r\n deltaZ: 0,\r\n preventDefault: function () {\r\n e.preventDefault ? e.preventDefault() : e.returnValue = false;\r\n return false;\r\n },\r\n stopImmediatePropagation: function () {\r\n (e.stopImmediatePropagation) ? e.stopImmediatePropagation() : e.cancelBubble = true;\r\n }\r\n };\r\n\r\n if (name == \"mousewheel\") {\r\n e.wheelDeltaX && (event.deltaX = -1 / 40 * e.wheelDeltaX);\r\n e.wheelDeltaY && (event.deltaY = -1 / 40 * e.wheelDeltaY);\r\n !event.deltaY && !event.deltaX && (event.deltaY = -1 / 40 * e.wheelDelta);\r\n } else {\r\n event.deltaY = e.detail;\r\n }\r\n\r\n return fn.call(dom, event);\r\n }, bubble);\r\n }\r\n\r\n\r\n\r\n this.jqbind = function (dom, name, fn) { // use jquery bind for non-native events (mouseenter/mouseleave)\r\n self.events.push({\r\n e: dom,\r\n n: name,\r\n f: fn,\r\n q: true\r\n });\r\n $(dom).on(name, fn);\r\n };\r\n\r\n this.mousewheel = function (dom, fn, bubble) { // bind mousewheel\r\n var el = (\"jquery\" in dom) ? dom[0] : dom;\r\n if (\"onwheel\" in _doc.createElement(\"div\")) { // Modern browsers support \"wheel\"\r\n self._bind(el, \"wheel\", fn, bubble || false);\r\n } else {\r\n var wname = (_doc.onmousewheel !== undefined) ? \"mousewheel\" : \"DOMMouseScroll\"; // older Webkit+IE support or older Firefox \r\n _modernWheelEvent(el, wname, fn, bubble || false);\r\n if (wname == \"DOMMouseScroll\") _modernWheelEvent(el, \"MozMousePixelScroll\", fn, bubble || false); // Firefox legacy\r\n }\r\n };\r\n\r\n var passiveSupported = false;\r\n\r\n if (cap.haseventlistener) { // W3C standard event model\r\n\r\n // thanks to https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener\r\n try { var options = Object.defineProperty({}, \"passive\", { get: function () { passiveSupported = !0; } }); _win.addEventListener(\"test\", null, options); } catch (err) { }\r\n\r\n this.stopPropagation = function (e) {\r\n if (!e) return false;\r\n e = (e.original) ? e.original : e;\r\n e.stopPropagation();\r\n return false;\r\n };\r\n\r\n this.cancelEvent = function(e) {\r\n if (e.cancelable) e.preventDefault();\r\n e.stopImmediatePropagation();\r\n if (e.preventManipulation) e.preventManipulation(); // IE10+\r\n return false;\r\n }; \r\n\r\n } else {\r\n\r\n // inspired from https://gist.github.com/jonathantneal/2415137 \r\n\r\n Event.prototype.preventDefault = function () {\r\n this.returnValue = false;\r\n };\r\n\r\n Event.prototype.stopPropagation = function () {\r\n this.cancelBubble = true;\r\n };\r\n\r\n _win.constructor.prototype.addEventListener = _doc.constructor.prototype.addEventListener = Element.prototype.addEventListener = function (type, listener, useCapture) {\r\n this.attachEvent(\"on\" + type, listener);\r\n };\r\n _win.constructor.prototype.removeEventListener = _doc.constructor.prototype.removeEventListener = Element.prototype.removeEventListener = function (type, listener, useCapture) {\r\n this.detachEvent(\"on\" + type, listener);\r\n };\r\n\r\n // Thanks to http://www.switchonthecode.com !!\r\n this.cancelEvent = function (e) {\r\n e = e || _win.event;\r\n if (e) { \r\n e.cancelBubble = true;\r\n e.cancel = true;\r\n e.returnValue = false;\r\n } \r\n return false;\r\n };\r\n\r\n this.stopPropagation = function (e) {\r\n e = e || _win.event;\r\n if (e) e.cancelBubble = true;\r\n return false;\r\n };\r\n\r\n }\r\n\r\n this.delegate = function (dom, name, fn, bubble, active) {\r\n\r\n var de = delegatevents[name] || false;\r\n\r\n if (!de) {\r\n\r\n de = {\r\n a: [],\r\n l: [],\r\n f: function (e) {\r\n var lst = de.l, l = lst.length - 1;\r\n var r = false;\r\n for (var a = l; a >= 0; a--) {\r\n r = lst[a].call(e.target, e);\r\n if (r === false) return false;\r\n }\r\n return r;\r\n }\r\n };\r\n\r\n self.bind(dom, name, de.f, bubble, active);\r\n\r\n delegatevents[name] = de;\r\n\r\n }\r\n\r\n if (self.ispage) {\r\n de.a = [self.id].concat(de.a);\r\n de.l = [fn].concat(de.l);\r\n } else {\r\n de.a.push(self.id);\r\n de.l.push(fn); \r\n }\r\n\r\n };\r\n\r\n this.undelegate = function (dom, name, fn, bubble, active) {\r\n var de = delegatevents[name]||false;\r\n if (de&&de.l) { // quick fix #683\r\n for (var a=0,l=de.l.length;a<l;a++) {\r\n if (de.a[a] === self.id) {\r\n de.a.splice(a);\r\n de.l.splice(a);\r\n if (de.a.length===0) {\r\n self._unbind(dom,name,de.l.f);\r\n delegatevents[name] = null;\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n this.bind = function (dom, name, fn, bubble, active) {\r\n var el = (\"jquery\" in dom) ? dom[0] : dom;\r\n self._bind(el, name, fn, bubble || false, active || false);\r\n };\r\n\r\n this._bind = function (el, name, fn, bubble, active) { // primitive bind\r\n\r\n self.events.push({\r\n e: el,\r\n n: name,\r\n f: fn,\r\n b: bubble,\r\n q: false\r\n });\r\n\r\n (passiveSupported && active) ? el.addEventListener(name, fn, { passive: false, capture: bubble }) : el.addEventListener(name, fn, bubble || false);\r\n };\r\n\r\n this._unbind = function (el, name, fn, bub) { // primitive unbind\r\n if (delegatevents[name]) self.undelegate(el, name, fn, bub);\r\n else el.removeEventListener(name, fn, bub);\r\n };\r\n\r\n this.unbindAll = function () {\r\n for (var a = 0; a < self.events.length; a++) {\r\n var r = self.events[a];\r\n (r.q) ? r.e.unbind(r.n, r.f) : self._unbind(r.e, r.n, r.f, r.b);\r\n }\r\n };\r\n\r\n this.showRails = function () {\r\n return self.showRail().showRailHr();\r\n };\r\n\r\n this.showRail = function () {\r\n if ((self.page.maxh !== 0) && (self.ispage || self.win.css('display') != 'none')) {\r\n //self.visibility = true;\r\n self.rail.visibility = true;\r\n self.rail.css('display', 'block');\r\n }\r\n return self;\r\n };\r\n\r\n this.showRailHr = function () {\r\n if (self.railh) {\r\n if ((self.page.maxw !== 0) && (self.ispage || self.win.css('display') != 'none')) {\r\n self.railh.visibility = true;\r\n self.railh.css('display', 'block');\r\n }\r\n }\r\n return self;\r\n };\r\n\r\n this.hideRails = function () {\r\n return self.hideRail().hideRailHr();\r\n };\r\n\r\n this.hideRail = function () {\r\n //self.visibility = false;\r\n self.rail.visibility = false;\r\n self.rail.css('display', 'none');\r\n return self;\r\n };\r\n\r\n this.hideRailHr = function () {\r\n if (self.railh) {\r\n self.railh.visibility = false;\r\n self.railh.css('display', 'none');\r\n }\r\n return self;\r\n };\r\n\r\n this.show = function () {\r\n self.hidden = false;\r\n self.railslocked = false;\r\n return self.showRails();\r\n };\r\n\r\n this.hide = function () {\r\n self.hidden = true;\r\n self.railslocked = true;\r\n return self.hideRails();\r\n };\r\n\r\n this.toggle = function () {\r\n return (self.hidden) ? self.show() : self.hide();\r\n };\r\n\r\n this.remove = function () {\r\n self.stop();\r\n if (self.cursortimeout) clearTimeout(self.cursortimeout);\r\n for (var n in self.delaylist) if (self.delaylist[n]) clearAnimationFrame(self.delaylist[n].h);\r\n self.doZoomOut();\r\n self.unbindAll();\r\n\r\n if (cap.isie9) self.win[0].detachEvent(\"onpropertychange\", self.onAttributeChange); //IE9 DOMAttrModified bug\r\n\r\n if (self.observer !== false) self.observer.disconnect();\r\n if (self.observerremover !== false) self.observerremover.disconnect();\r\n if (self.observerbody !== false) self.observerbody.disconnect();\r\n\r\n self.events = null;\r\n\r\n if (self.cursor) {\r\n self.cursor.remove();\r\n }\r\n if (self.cursorh) {\r\n self.cursorh.remove();\r\n }\r\n if (self.rail) {\r\n self.rail.remove();\r\n }\r\n if (self.railh) {\r\n self.railh.remove();\r\n }\r\n if (self.zoom) {\r\n self.zoom.remove();\r\n }\r\n for (var a = 0; a < self.saved.css.length; a++) {\r\n var d = self.saved.css[a];\r\n d[0].css(d[1], (d[2] === undefined) ? '' : d[2]);\r\n }\r\n self.saved = false;\r\n self.me.data('__nicescroll', ''); //erase all traces\r\n\r\n // memory leak fixed by GianlucaGuarini - thanks a lot!\r\n // remove the current nicescroll from the $.nicescroll array & normalize array\r\n var lst = $.nicescroll;\r\n lst.each(function (i) {\r\n if (!this) return;\r\n if (this.id === self.id) {\r\n delete lst[i];\r\n for (var b = ++i; b < lst.length; b++ , i++) lst[i] = lst[b];\r\n lst.length--;\r\n if (lst.length) delete lst[lst.length];\r\n }\r\n });\r\n\r\n for (var i in self) {\r\n self[i] = null;\r\n delete self[i];\r\n }\r\n\r\n self = null;\r\n\r\n };\r\n\r\n this.scrollstart = function (fn) {\r\n this.onscrollstart = fn;\r\n return self;\r\n };\r\n this.scrollend = function (fn) {\r\n this.onscrollend = fn;\r\n return self;\r\n };\r\n this.scrollcancel = function (fn) {\r\n this.onscrollcancel = fn;\r\n return self;\r\n };\r\n\r\n this.zoomin = function (fn) {\r\n this.onzoomin = fn;\r\n return self;\r\n };\r\n this.zoomout = function (fn) {\r\n this.onzoomout = fn;\r\n return self;\r\n };\r\n\r\n this.isScrollable = function (e) {\r\n var dom = (e.target) ? e.target : e;\r\n if (dom.nodeName == 'OPTION') return true;\r\n while (dom && (dom.nodeType == 1) && (dom !== this.me[0]) && !(/^BODY|HTML/.test(dom.nodeName))) {\r\n var dd = $(dom);\r\n var ov = dd.css('overflowY') || dd.css('overflowX') || dd.css('overflow') || '';\r\n if (/scroll|auto/.test(ov)) return (dom.clientHeight != dom.scrollHeight);\r\n dom = (dom.parentNode) ? dom.parentNode : false;\r\n }\r\n return false;\r\n };\r\n\r\n this.getViewport = function (me) {\r\n var dom = (me && me.parentNode) ? me.parentNode : false;\r\n while (dom && (dom.nodeType == 1) && !(/^BODY|HTML/.test(dom.nodeName))) {\r\n var dd = $(dom);\r\n if (/fixed|absolute/.test(dd.css(\"position\"))) return dd;\r\n var ov = dd.css('overflowY') || dd.css('overflowX') || dd.css('overflow') || '';\r\n if ((/scroll|auto/.test(ov)) && (dom.clientHeight != dom.scrollHeight)) return dd;\r\n if (dd.getNiceScroll().length > 0) return dd;\r\n dom = (dom.parentNode) ? dom.parentNode : false;\r\n }\r\n return false;\r\n };\r\n\r\n this.triggerScrollStart = function (cx, cy, rx, ry, ms) {\r\n\r\n if (self.onscrollstart) {\r\n var info = {\r\n type: \"scrollstart\",\r\n current: {\r\n x: cx,\r\n y: cy\r\n },\r\n request: {\r\n x: rx,\r\n y: ry\r\n },\r\n end: {\r\n x: self.newscrollx,\r\n y: self.newscrolly\r\n },\r\n speed: ms\r\n };\r\n self.onscrollstart.call(self, info);\r\n }\r\n\r\n };\r\n\r\n this.triggerScrollEnd = function () {\r\n if (self.onscrollend) {\r\n\r\n var px = self.getScrollLeft();\r\n var py = self.getScrollTop();\r\n\r\n var info = {\r\n type: \"scrollend\",\r\n current: {\r\n x: px,\r\n y: py\r\n },\r\n end: {\r\n x: px,\r\n y: py\r\n }\r\n };\r\n\r\n self.onscrollend.call(self, info);\r\n\r\n }\r\n\r\n };\r\n\r\n var scrolldiry = 0, scrolldirx = 0, scrolltmr = 0, scrollspd = 1;\r\n\r\n function doScrollRelative(px, py, chkscroll, iswheel) {\r\n\r\n if (!self.scrollrunning) {\r\n self.newscrolly = self.getScrollTop();\r\n self.newscrollx = self.getScrollLeft();\r\n scrolltmr = now();\r\n }\r\n\r\n var gap = (now() - scrolltmr);\r\n scrolltmr = now();\r\n\r\n if (gap > 350) {\r\n scrollspd = 1;\r\n } else {\r\n scrollspd += (2 - scrollspd) / 10;\r\n }\r\n\r\n px = px * scrollspd | 0;\r\n py = py * scrollspd | 0;\r\n\r\n if (px) {\r\n\r\n if (iswheel) { // mouse-only\r\n if (px < 0) { // fix apple magic mouse swipe back/forward\r\n if (self.getScrollLeft() >= self.page.maxw) return true;\r\n } else {\r\n if (self.getScrollLeft() <= 0) return true;\r\n }\r\n }\r\n\r\n var dx = px > 0 ? 1 : -1;\r\n\r\n if (scrolldirx !== dx) {\r\n if (self.scrollmom) self.scrollmom.stop();\r\n self.newscrollx = self.getScrollLeft();\r\n scrolldirx = dx;\r\n }\r\n\r\n self.lastdeltax -= px;\r\n\r\n }\r\n\r\n if (py) {\r\n\r\n var chk = (function () {\r\n var top = self.getScrollTop();\r\n if (py < 0) {\r\n if (top >= self.page.maxh) return true;\r\n } else {\r\n if (top <= 0) return true;\r\n }\r\n })();\r\n\r\n if (chk) {\r\n if (opt.nativeparentscrolling && chkscroll && !self.ispage && !self.zoomactive) return true;\r\n var ny = self.view.h >> 1;\r\n if (self.newscrolly < -ny) { self.newscrolly = -ny; py = -1; }\r\n else if (self.newscrolly > self.page.maxh + ny) { self.newscrolly = self.page.maxh + ny; py = 1; }\r\n else py = 0;\r\n }\r\n\r\n var dy = py > 0 ? 1 : -1;\r\n\r\n if (scrolldiry !== dy) {\r\n if (self.scrollmom) self.scrollmom.stop();\r\n self.newscrolly = self.getScrollTop();\r\n scrolldiry = dy;\r\n }\r\n\r\n self.lastdeltay -= py;\r\n\r\n }\r\n\r\n if (py || px) {\r\n self.synched(\"relativexy\", function () {\r\n\r\n var dty = self.lastdeltay + self.newscrolly;\r\n self.lastdeltay = 0;\r\n\r\n var dtx = self.lastdeltax + self.newscrollx;\r\n self.lastdeltax = 0;\r\n\r\n if (!self.rail.drag) self.doScrollPos(dtx, dty);\r\n\r\n });\r\n }\r\n\r\n }\r\n\r\n var hasparentscrollingphase = false;\r\n\r\n function execScrollWheel(e, hr, chkscroll) {\r\n var px, py;\r\n\r\n if (!chkscroll && hasparentscrollingphase) return true;\r\n\r\n if (e.deltaMode === 0) { // PIXEL\r\n px = -(e.deltaX * (opt.mousescrollstep / (18 * 3))) | 0;\r\n py = -(e.deltaY * (opt.mousescrollstep / (18 * 3))) | 0;\r\n } else if (e.deltaMode === 1) { // LINE\r\n px = -(e.deltaX * opt.mousescrollstep * 50 / 80) | 0;\r\n py = -(e.deltaY * opt.mousescrollstep * 50 / 80) | 0;\r\n }\r\n\r\n if (hr && opt.oneaxismousemode && (px === 0) && py) { // classic vertical-only mousewheel + browser with x/y support \r\n px = py;\r\n py = 0;\r\n\r\n if (chkscroll) {\r\n var hrend = (px < 0) ? (self.getScrollLeft() >= self.page.maxw) : (self.getScrollLeft() <= 0);\r\n if (hrend) { // preserve vertical scrolling\r\n py = px;\r\n px = 0;\r\n }\r\n }\r\n\r\n }\r\n\r\n // invert horizontal direction for rtl mode\r\n if (self.isrtlmode) px = -px;\r\n\r\n var chk = doScrollRelative(px, py, chkscroll, true);\r\n\r\n if (chk) {\r\n if (chkscroll) hasparentscrollingphase = true;\r\n } else {\r\n hasparentscrollingphase = false;\r\n e.stopImmediatePropagation();\r\n return e.preventDefault();\r\n }\r\n\r\n }\r\n\r\n this.onmousewheel = function (e) {\r\n if (self.wheelprevented||self.locked) return false;\r\n if (self.railslocked) {\r\n self.debounced(\"checkunlock\", self.resize, 250);\r\n return false;\r\n }\r\n if (self.rail.drag) return self.cancelEvent(e);\r\n\r\n if (opt.oneaxismousemode === \"auto\" && e.deltaX !== 0) opt.oneaxismousemode = false; // check two-axis mouse support (not very elegant)\r\n\r\n if (opt.oneaxismousemode && e.deltaX === 0) {\r\n if (!self.rail.scrollable) {\r\n if (self.railh && self.railh.scrollable) {\r\n return self.onmousewheelhr(e);\r\n } else {\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n var nw = now();\r\n var chk = false;\r\n if (opt.preservenativescrolling && ((self.checkarea + 600) < nw)) {\r\n self.nativescrollingarea = self.isScrollable(e);\r\n chk = true;\r\n }\r\n self.checkarea = nw;\r\n if (self.nativescrollingarea) return true; // this isn't my business\r\n var ret = execScrollWheel(e, false, chk);\r\n if (ret) self.checkarea = 0;\r\n return ret;\r\n };\r\n\r\n this.onmousewheelhr = function (e) {\r\n if (self.wheelprevented) return;\r\n if (self.railslocked || !self.railh.scrollable) return true;\r\n if (self.rail.drag) return self.cancelEvent(e);\r\n\r\n var nw = now();\r\n var chk = false;\r\n if (opt.preservenativescrolling && ((self.checkarea + 600) < nw)) {\r\n self.nativescrollingarea = self.isScrollable(e);\r\n chk = true;\r\n }\r\n self.checkarea = nw;\r\n if (self.nativescrollingarea) return true; // this is not my business\r\n if (self.railslocked) return self.cancelEvent(e);\r\n\r\n return execScrollWheel(e, true, chk);\r\n };\r\n\r\n this.stop = function () {\r\n self.cancelScroll();\r\n if (self.scrollmon) self.scrollmon.stop();\r\n self.cursorfreezed = false;\r\n self.scroll.y = Math.round(self.getScrollTop() * (1 / self.scrollratio.y));\r\n self.noticeCursor();\r\n return self;\r\n };\r\n\r\n this.getTransitionSpeed = function (dif) {\r\n\r\n return 80 + (dif / 72) * opt.scrollspeed |0;\r\n\r\n };\r\n\r\n if (!opt.smoothscroll) {\r\n this.doScrollLeft = function (x, spd) { //direct\r\n var y = self.getScrollTop();\r\n self.doScrollPos(x, y, spd);\r\n };\r\n this.doScrollTop = function (y, spd) { //direct\r\n var x = self.getScrollLeft();\r\n self.doScrollPos(x, y, spd);\r\n };\r\n this.doScrollPos = function (x, y, spd) { //direct\r\n var nx = (x > self.page.maxw) ? self.page.maxw : x;\r\n if (nx < 0) nx = 0;\r\n var ny = (y > self.page.maxh) ? self.page.maxh : y;\r\n if (ny < 0) ny = 0;\r\n self.synched('scroll', function () {\r\n self.setScrollTop(ny);\r\n self.setScrollLeft(nx);\r\n });\r\n };\r\n this.cancelScroll = function () { }; // direct\r\n\r\n } else if (self.ishwscroll && cap.hastransition && opt.usetransition && !!opt.smoothscroll) {\r\n\r\n var lasttransitionstyle = '';\r\n\r\n this.resetTransition = function () {\r\n lasttransitionstyle = '';\r\n self.doc.css(cap.prefixstyle + 'transition-duration', '0ms');\r\n };\r\n\r\n this.prepareTransition = function (dif, istime) {\r\n var ex = (istime) ? dif : self.getTransitionSpeed(dif);\r\n var trans = ex + 'ms';\r\n if (lasttransitionstyle !== trans) {\r\n lasttransitionstyle = trans;\r\n self.doc.css(cap.prefixstyle + 'transition-duration', trans);\r\n }\r\n return ex;\r\n };\r\n\r\n this.doScrollLeft = function (x, spd) { //trans\r\n var y = (self.scrollrunning) ? self.newscrolly : self.getScrollTop();\r\n self.doScrollPos(x, y, spd);\r\n };\r\n\r\n this.doScrollTop = function (y, spd) { //trans\r\n var x = (self.scrollrunning) ? self.newscrollx : self.getScrollLeft();\r\n self.doScrollPos(x, y, spd);\r\n };\r\n\r\n this.cursorupdate = {\r\n running: false,\r\n start: function () {\r\n var m = this;\r\n\r\n if (m.running) return;\r\n m.running = true;\r\n\r\n var loop = function () {\r\n if (m.running) setAnimationFrame(loop);\r\n self.showCursor(self.getScrollTop(), self.getScrollLeft());\r\n self.notifyScrollEvent(self.win[0]);\r\n };\r\n\r\n setAnimationFrame(loop);\r\n },\r\n stop: function () {\r\n this.running = false;\r\n }\r\n };\r\n\r\n this.doScrollPos = function (x, y, spd) { //trans\r\n\r\n var py = self.getScrollTop();\r\n var px = self.getScrollLeft();\r\n\r\n if (((self.newscrolly - py) * (y - py) < 0) || ((self.newscrollx - px) * (x - px) < 0)) self.cancelScroll(); //inverted movement detection \r\n\r\n if (!opt.bouncescroll) {\r\n if (y < 0) y = 0;\r\n else if (y > self.page.maxh) y = self.page.maxh;\r\n if (x < 0) x = 0;\r\n else if (x > self.page.maxw) x = self.page.maxw;\r\n } else {\r\n if (y < 0) y = y / 2 | 0;\r\n else if (y > self.page.maxh) y = self.page.maxh + (y - self.page.maxh) / 2 | 0;\r\n if (x < 0) x = x / 2 | 0;\r\n else if (x > self.page.maxw) x = self.page.maxw + (x - self.page.maxw) / 2 | 0;\r\n }\r\n\r\n if (self.scrollrunning && x == self.newscrollx && y == self.newscrolly) return false;\r\n\r\n self.newscrolly = y;\r\n self.newscrollx = x;\r\n\r\n var top = self.getScrollTop();\r\n var lft = self.getScrollLeft();\r\n\r\n var dst = {};\r\n dst.x = x - lft;\r\n dst.y = y - top;\r\n\r\n var dd = Math.sqrt((dst.x * dst.x) + (dst.y * dst.y)) | 0;\r\n\r\n var ms = self.prepareTransition(dd);\r\n\r\n if (!self.scrollrunning) {\r\n self.scrollrunning = true;\r\n self.triggerScrollStart(lft, top, x, y, ms);\r\n self.cursorupdate.start();\r\n }\r\n\r\n self.scrollendtrapped = true;\r\n\r\n if (!cap.transitionend) {\r\n if (self.scrollendtrapped) clearTimeout(self.scrollendtrapped);\r\n self.scrollendtrapped = setTimeout(self.onScrollTransitionEnd, ms); // simulate transitionend event\r\n }\r\n\r\n self.setScrollTop(self.newscrolly);\r\n self.setScrollLeft(self.newscrollx);\r\n\r\n };\r\n\r\n this.cancelScroll = function () {\r\n if (!self.scrollendtrapped) return true;\r\n var py = self.getScrollTop();\r\n var px = self.getScrollLeft();\r\n self.scrollrunning = false;\r\n if (!cap.transitionend) clearTimeout(cap.transitionend);\r\n self.scrollendtrapped = false;\r\n self.resetTransition();\r\n self.setScrollTop(py); // fire event onscroll\r\n if (self.railh) self.setScrollLeft(px);\r\n if (self.timerscroll && self.timerscroll.tm) clearInterval(self.timerscroll.tm);\r\n self.timerscroll = false;\r\n\r\n self.cursorfreezed = false;\r\n\r\n self.cursorupdate.stop();\r\n self.showCursor(py, px);\r\n return self;\r\n };\r\n\r\n this.onScrollTransitionEnd = function () {\r\n\r\n if (!self.scrollendtrapped) return;\r\n\r\n var py = self.getScrollTop();\r\n var px = self.getScrollLeft();\r\n\r\n if (py < 0) py = 0;\r\n else if (py > self.page.maxh) py = self.page.maxh;\r\n if (px < 0) px = 0;\r\n else if (px > self.page.maxw) px = self.page.maxw;\r\n if ((py != self.newscrolly) || (px != self.newscrollx)) return self.doScrollPos(px, py, opt.snapbackspeed);\r\n\r\n if (self.scrollrunning) self.triggerScrollEnd();\r\n self.scrollrunning = false;\r\n\r\n self.scrollendtrapped = false;\r\n self.resetTransition();\r\n self.timerscroll = false;\r\n self.setScrollTop(py); // fire event onscroll \r\n if (self.railh) self.setScrollLeft(px); // fire event onscroll left\r\n\r\n self.cursorupdate.stop();\r\n self.noticeCursor(false, py, px);\r\n\r\n self.cursorfreezed = false;\r\n\r\n };\r\n\r\n } else {\r\n\r\n this.doScrollLeft = function (x, spd) { //no-trans\r\n var y = (self.scrollrunning) ? self.newscrolly : self.getScrollTop();\r\n self.doScrollPos(x, y, spd);\r\n };\r\n\r\n this.doScrollTop = function (y, spd) { //no-trans\r\n var x = (self.scrollrunning) ? self.newscrollx : self.getScrollLeft();\r\n self.doScrollPos(x, y, spd);\r\n };\r\n\r\n this.doScrollPos = function (x, y, spd) { //no-trans\r\n\r\n var py = self.getScrollTop();\r\n var px = self.getScrollLeft();\r\n\r\n if (((self.newscrolly - py) * (y - py) < 0) || ((self.newscrollx - px) * (x - px) < 0)) self.cancelScroll(); //inverted movement detection\r\n\r\n var clipped = false;\r\n\r\n if (!self.bouncescroll || !self.rail.visibility) {\r\n if (y < 0) {\r\n y = 0;\r\n clipped = true;\r\n } else if (y > self.page.maxh) {\r\n y = self.page.maxh;\r\n clipped = true;\r\n }\r\n }\r\n if (!self.bouncescroll || !self.railh.visibility) {\r\n if (x < 0) {\r\n x = 0;\r\n clipped = true;\r\n } else if (x > self.page.maxw) {\r\n x = self.page.maxw;\r\n clipped = true;\r\n }\r\n }\r\n\r\n if (self.scrollrunning && (self.newscrolly === y) && (self.newscrollx === x)) return true;\r\n\r\n self.newscrolly = y;\r\n self.newscrollx = x;\r\n\r\n self.dst = {};\r\n self.dst.x = x - px;\r\n self.dst.y = y - py;\r\n self.dst.px = px;\r\n self.dst.py = py;\r\n\r\n var dd = Math.sqrt((self.dst.x * self.dst.x) + (self.dst.y * self.dst.y)) | 0;\r\n var ms = self.getTransitionSpeed(dd);\r\n\r\n self.bzscroll = {};\r\n\r\n var p3 = (clipped) ? 1 : 0.58;\r\n self.bzscroll.x = new BezierClass(px, self.newscrollx, ms, 0, 0, p3, 1);\r\n self.bzscroll.y = new BezierClass(py, self.newscrolly, ms, 0, 0, p3, 1);\r\n\r\n var loopid = now();\r\n\r\n var loop = function () {\r\n\r\n if (!self.scrollrunning) return;\r\n var x = self.bzscroll.y.getPos();\r\n\r\n self.setScrollLeft(self.bzscroll.x.getNow());\r\n self.setScrollTop(self.bzscroll.y.getNow());\r\n\r\n if (x <= 1) {\r\n self.timer = setAnimationFrame(loop);\r\n } else {\r\n self.scrollrunning = false;\r\n self.timer = 0;\r\n self.triggerScrollEnd();\r\n }\r\n\r\n };\r\n\r\n if (!self.scrollrunning) {\r\n self.triggerScrollStart(px, py, x, y, ms);\r\n self.scrollrunning = true;\r\n self.timer = setAnimationFrame(loop);\r\n }\r\n\r\n };\r\n\r\n this.cancelScroll = function () {\r\n if (self.timer) clearAnimationFrame(self.timer);\r\n self.timer = 0;\r\n self.bzscroll = false;\r\n self.scrollrunning = false;\r\n return self;\r\n };\r\n\r\n }\r\n\r\n this.doScrollBy = function (stp, relative) {\r\n doScrollRelative(0, stp);\r\n };\r\n\r\n this.doScrollLeftBy = function (stp, relative) {\r\n doScrollRelative(stp, 0);\r\n };\r\n\r\n this.doScrollTo = function (pos, relative) {\r\n var ny = (relative) ? Math.round(pos * self.scrollratio.y) : pos;\r\n if (ny < 0) ny = 0;\r\n else if (ny > self.page.maxh) ny = self.page.maxh;\r\n self.cursorfreezed = false;\r\n self.doScrollTop(pos);\r\n };\r\n\r\n this.checkContentSize = function () {\r\n var pg = self.getContentSize();\r\n if ((pg.h != self.page.h) || (pg.w != self.page.w)) self.resize(false, pg);\r\n };\r\n\r\n self.onscroll = function (e) {\r\n if (self.rail.drag) return;\r\n if (!self.cursorfreezed) {\r\n self.synched('scroll', function () {\r\n self.scroll.y = Math.round(self.getScrollTop() / self.scrollratio.y);\r\n if (self.railh) self.scroll.x = Math.round(self.getScrollLeft() / self.scrollratio.x);\r\n self.noticeCursor();\r\n });\r\n }\r\n };\r\n self.bind(self.docscroll, \"scroll\", self.onscroll);\r\n\r\n this.doZoomIn = function (e) {\r\n if (self.zoomactive) return;\r\n self.zoomactive = true;\r\n\r\n self.zoomrestore = {\r\n style: {}\r\n };\r\n var lst = ['position', 'top', 'left', 'zIndex', 'backgroundColor', 'marginTop', 'marginBottom', 'marginLeft', 'marginRight'];\r\n var win = self.win[0].style;\r\n for (var a in lst) {\r\n var pp = lst[a];\r\n self.zoomrestore.style[pp] = (win[pp] !== undefined) ? win[pp] : '';\r\n }\r\n\r\n self.zoomrestore.style.width = self.win.css('width');\r\n self.zoomrestore.style.height = self.win.css('height');\r\n\r\n self.zoomrestore.padding = {\r\n w: self.win.outerWidth() - self.win.width(),\r\n h: self.win.outerHeight() - self.win.height()\r\n };\r\n\r\n if (cap.isios4) {\r\n self.zoomrestore.scrollTop = $window.scrollTop();\r\n $window.scrollTop(0);\r\n }\r\n\r\n self.win.css({\r\n position: (cap.isios4) ? \"absolute\" : \"fixed\",\r\n top: 0,\r\n left: 0,\r\n zIndex: globalmaxzindex + 100,\r\n margin: 0\r\n });\r\n var bkg = self.win.css(\"backgroundColor\");\r\n if (\"\" === bkg || /transparent|rgba\\(0, 0, 0, 0\\)|rgba\\(0,0,0,0\\)/.test(bkg)) self.win.css(\"backgroundColor\", \"#fff\");\r\n self.rail.css({\r\n zIndex: globalmaxzindex + 101\r\n });\r\n self.zoom.css({\r\n zIndex: globalmaxzindex + 102\r\n });\r\n self.zoom.css('backgroundPosition', '0 -18px');\r\n self.resizeZoom();\r\n\r\n if (self.onzoomin) self.onzoomin.call(self);\r\n\r\n return self.cancelEvent(e);\r\n };\r\n\r\n this.doZoomOut = function (e) {\r\n if (!self.zoomactive) return;\r\n self.zoomactive = false;\r\n\r\n self.win.css(\"margin\", \"\");\r\n self.win.css(self.zoomrestore.style);\r\n\r\n if (cap.isios4) {\r\n $window.scrollTop(self.zoomrestore.scrollTop);\r\n }\r\n\r\n self.rail.css({\r\n \"z-index\": self.zindex\r\n });\r\n self.zoom.css({\r\n \"z-index\": self.zindex\r\n });\r\n self.zoomrestore = false;\r\n self.zoom.css('backgroundPosition', '0 0');\r\n self.onResize();\r\n\r\n if (self.onzoomout) self.onzoomout.call(self);\r\n\r\n return self.cancelEvent(e);\r\n };\r\n\r\n this.doZoom = function (e) {\r\n return (self.zoomactive) ? self.doZoomOut(e) : self.doZoomIn(e);\r\n };\r\n\r\n this.resizeZoom = function () {\r\n if (!self.zoomactive) return;\r\n\r\n var py = self.getScrollTop(); //preserve scrolling position\r\n self.win.css({\r\n width: $window.width() - self.zoomrestore.padding.w + \"px\",\r\n height: $window.height() - self.zoomrestore.padding.h + \"px\"\r\n });\r\n self.onResize();\r\n\r\n self.setScrollTop(Math.min(self.page.maxh, py));\r\n };\r\n\r\n this.init();\r\n\r\n $.nicescroll.push(this);\r\n\r\n };\r\n\r\n // Inspired by the work of Kin Blas\r\n // http://webpro.host.adobe.com/people/jblas/momentum/includes/jquery.momentum.0.7.js \r\n var ScrollMomentumClass2D = function (nc) {\r\n var self = this;\r\n this.nc = nc;\r\n\r\n this.lastx = 0;\r\n this.lasty = 0;\r\n this.speedx = 0;\r\n this.speedy = 0;\r\n this.lasttime = 0;\r\n this.steptime = 0;\r\n this.snapx = false;\r\n this.snapy = false;\r\n this.demulx = 0;\r\n this.demuly = 0;\r\n\r\n this.lastscrollx = -1;\r\n this.lastscrolly = -1;\r\n\r\n this.chkx = 0;\r\n this.chky = 0;\r\n\r\n this.timer = 0;\r\n\r\n this.reset = function (px, py) {\r\n self.stop();\r\n self.steptime = 0;\r\n self.lasttime = now();\r\n self.speedx = 0;\r\n self.speedy = 0;\r\n self.lastx = px;\r\n self.lasty = py;\r\n self.lastscrollx = -1;\r\n self.lastscrolly = -1;\r\n };\r\n\r\n this.update = function (px, py) {\r\n var tm = now();\r\n self.steptime = tm - self.lasttime;\r\n self.lasttime = tm;\r\n var dy = py - self.lasty;\r\n var dx = px - self.lastx;\r\n var sy = self.nc.getScrollTop();\r\n var sx = self.nc.getScrollLeft();\r\n var newy = sy + dy;\r\n var newx = sx + dx;\r\n self.snapx = (newx < 0) || (newx > self.nc.page.maxw);\r\n self.snapy = (newy < 0) || (newy > self.nc.page.maxh);\r\n self.speedx = dx;\r\n self.speedy = dy;\r\n self.lastx = px;\r\n self.lasty = py;\r\n };\r\n\r\n this.stop = function () {\r\n self.nc.unsynched(\"domomentum2d\");\r\n if (self.timer) clearTimeout(self.timer);\r\n self.timer = 0;\r\n self.lastscrollx = -1;\r\n self.lastscrolly = -1;\r\n };\r\n\r\n this.doSnapy = function (nx, ny) {\r\n var snap = false;\r\n\r\n if (ny < 0) {\r\n ny = 0;\r\n snap = true;\r\n } else if (ny > self.nc.page.maxh) {\r\n ny = self.nc.page.maxh;\r\n snap = true;\r\n }\r\n\r\n if (nx < 0) {\r\n nx = 0;\r\n snap = true;\r\n } else if (nx > self.nc.page.maxw) {\r\n nx = self.nc.page.maxw;\r\n snap = true;\r\n }\r\n\r\n (snap) ? self.nc.doScrollPos(nx, ny, self.nc.opt.snapbackspeed) : self.nc.triggerScrollEnd();\r\n };\r\n\r\n this.doMomentum = function (gp) {\r\n var t = now();\r\n var l = (gp) ? t + gp : self.lasttime;\r\n\r\n var sl = self.nc.getScrollLeft();\r\n var st = self.nc.getScrollTop();\r\n\r\n var pageh = self.nc.page.maxh;\r\n var pagew = self.nc.page.maxw;\r\n\r\n self.speedx = (pagew > 0) ? Math.min(60, self.speedx) : 0;\r\n self.speedy = (pageh > 0) ? Math.min(60, self.speedy) : 0;\r\n\r\n var chk = l && (t - l) <= 60;\r\n\r\n if ((st < 0) || (st > pageh) || (sl < 0) || (sl > pagew)) chk = false;\r\n\r\n var sy = (self.speedy && chk) ? self.speedy : false;\r\n var sx = (self.speedx && chk) ? self.speedx : false;\r\n\r\n if (sy || sx) {\r\n var tm = Math.max(16, self.steptime); //timeout granularity\r\n\r\n if (tm > 50) { // do smooth\r\n var xm = tm / 50;\r\n self.speedx *= xm;\r\n self.speedy *= xm;\r\n tm = 50;\r\n }\r\n\r\n self.demulxy = 0;\r\n\r\n self.lastscrollx = self.nc.getScrollLeft();\r\n self.chkx = self.lastscrollx;\r\n self.lastscrolly = self.nc.getScrollTop();\r\n self.chky = self.lastscrolly;\r\n\r\n var nx = self.lastscrollx;\r\n var ny = self.lastscrolly;\r\n\r\n var onscroll = function () {\r\n var df = ((now() - t) > 600) ? 0.04 : 0.02;\r\n\r\n if (self.speedx) {\r\n nx = Math.floor(self.lastscrollx - (self.speedx * (1 - self.demulxy)));\r\n self.lastscrollx = nx;\r\n if ((nx < 0) || (nx > pagew)) df = 0.10;\r\n }\r\n\r\n if (self.speedy) {\r\n ny = Math.floor(self.lastscrolly - (self.speedy * (1 - self.demulxy)));\r\n self.lastscrolly = ny;\r\n if ((ny < 0) || (ny > pageh)) df = 0.10;\r\n }\r\n\r\n self.demulxy = Math.min(1, self.demulxy + df);\r\n\r\n self.nc.synched(\"domomentum2d\", function () {\r\n\r\n if (self.speedx) {\r\n var scx = self.nc.getScrollLeft();\r\n // if (scx != self.chkx) self.stop();\r\n self.chkx = nx;\r\n self.nc.setScrollLeft(nx);\r\n }\r\n\r\n if (self.speedy) {\r\n var scy = self.nc.getScrollTop();\r\n // if (scy != self.chky) self.stop();\r\n self.chky = ny;\r\n self.nc.setScrollTop(ny);\r\n }\r\n\r\n if (!self.timer) {\r\n self.nc.hideCursor();\r\n self.doSnapy(nx, ny);\r\n }\r\n\r\n });\r\n\r\n if (self.demulxy < 1) {\r\n self.timer = setTimeout(onscroll, tm);\r\n } else {\r\n self.stop();\r\n self.nc.hideCursor();\r\n self.doSnapy(nx, ny);\r\n }\r\n };\r\n\r\n onscroll();\r\n\r\n } else {\r\n self.doSnapy(self.nc.getScrollLeft(), self.nc.getScrollTop());\r\n }\r\n\r\n };\r\n\r\n };\r\n\r\n\r\n // override jQuery scrollTop\r\n var _scrollTop = jQuery.fn.scrollTop; // preserve original function\r\n\r\n jQuery.cssHooks.pageYOffset = {\r\n get: function (elem, computed, extra) {\r\n var nice = $.data(elem, '__nicescroll') || false;\r\n return (nice && nice.ishwscroll) ? nice.getScrollTop() : _scrollTop.call(elem);\r\n },\r\n set: function (elem, value) {\r\n var nice = $.data(elem, '__nicescroll') || false;\r\n (nice && nice.ishwscroll) ? nice.setScrollTop(parseInt(value)) : _scrollTop.call(elem, value);\r\n return this;\r\n }\r\n };\r\n\r\n jQuery.fn.scrollTop = function (value) {\r\n if (value === undefined) {\r\n var nice = (this[0]) ? $.data(this[0], '__nicescroll') || false : false;\r\n return (nice && nice.ishwscroll) ? nice.getScrollTop() : _scrollTop.call(this);\r\n } else {\r\n return this.each(function () {\r\n var nice = $.data(this, '__nicescroll') || false;\r\n (nice && nice.ishwscroll) ? nice.setScrollTop(parseInt(value)) : _scrollTop.call($(this), value);\r\n });\r\n }\r\n };\r\n\r\n // override jQuery scrollLeft\r\n var _scrollLeft = jQuery.fn.scrollLeft; // preserve original function\r\n\r\n $.cssHooks.pageXOffset = {\r\n get: function (elem, computed, extra) {\r\n var nice = $.data(elem, '__nicescroll') || false;\r\n return (nice && nice.ishwscroll) ? nice.getScrollLeft() : _scrollLeft.call(elem);\r\n },\r\n set: function (elem, value) {\r\n var nice = $.data(elem, '__nicescroll') || false;\r\n (nice && nice.ishwscroll) ? nice.setScrollLeft(parseInt(value)) : _scrollLeft.call(elem, value);\r\n return this;\r\n }\r\n };\r\n\r\n jQuery.fn.scrollLeft = function (value) {\r\n if (value === undefined) {\r\n var nice = (this[0]) ? $.data(this[0], '__nicescroll') || false : false;\r\n return (nice && nice.ishwscroll) ? nice.getScrollLeft() : _scrollLeft.call(this);\r\n } else {\r\n return this.each(function () {\r\n var nice = $.data(this, '__nicescroll') || false;\r\n (nice && nice.ishwscroll) ? nice.setScrollLeft(parseInt(value)) : _scrollLeft.call($(this), value);\r\n });\r\n }\r\n };\r\n\r\n var NiceScrollArray = function (doms) {\r\n var self = this;\r\n this.length = 0;\r\n this.name = \"nicescrollarray\";\r\n\r\n this.each = function (fn) {\r\n $.each(self, fn);\r\n return self;\r\n };\r\n\r\n this.push = function (nice) {\r\n self[self.length] = nice;\r\n self.length++;\r\n };\r\n\r\n this.eq = function (idx) {\r\n return self[idx];\r\n };\r\n\r\n if (doms) {\r\n for (var a = 0; a < doms.length; a++) {\r\n var nice = $.data(doms[a], '__nicescroll') || false;\r\n if (nice) {\r\n this[this.length] = nice;\r\n this.length++;\r\n }\r\n }\r\n }\r\n\r\n return this;\r\n };\r\n\r\n function mplex(el, lst, fn) {\r\n for (var a = 0, l = lst.length; a < l; a++) fn(el, lst[a]);\r\n }\r\n mplex(\r\n NiceScrollArray.prototype, ['show', 'hide', 'toggle', 'onResize', 'resize', 'remove', 'stop', 'doScrollPos'],\r\n function (e, n) {\r\n e[n] = function () {\r\n var args = arguments;\r\n return this.each(function () {\r\n this[n].apply(this, args);\r\n });\r\n };\r\n }\r\n );\r\n\r\n jQuery.fn.getNiceScroll = function (index) {\r\n if (index === undefined) {\r\n return new NiceScrollArray(this);\r\n } else {\r\n return this[index] && $.data(this[index], '__nicescroll') || false;\r\n }\r\n };\r\n\r\n var pseudos = jQuery.expr.pseudos || jQuery.expr[':']; // jQuery 3 migration\r\n pseudos.nicescroll = function (a) {\r\n return $.data(a, '__nicescroll') !== undefined;\r\n };\r\n\r\n $.fn.niceScroll = function (wrapper, _opt) {\r\n if (_opt === undefined && typeof wrapper == \"object\" && !(\"jquery\" in wrapper)) {\r\n _opt = wrapper;\r\n wrapper = false;\r\n }\r\n\r\n var ret = new NiceScrollArray();\r\n\r\n this.each(function () {\r\n var $this = $(this);\r\n\r\n var opt = $.extend({}, _opt); // cloning\r\n\r\n if (wrapper || false) {\r\n var wrp = $(wrapper);\r\n opt.doc = (wrp.length > 1) ? $(wrapper, $this) : wrp;\r\n opt.win = $this;\r\n }\r\n var docundef = !(\"doc\" in opt);\r\n if (!docundef && !(\"win\" in opt)) opt.win = $this;\r\n\r\n var nice = $this.data('__nicescroll') || false;\r\n if (!nice) {\r\n opt.doc = opt.doc || $this;\r\n nice = new NiceScrollClass(opt, $this);\r\n $this.data('__nicescroll', nice);\r\n }\r\n ret.push(nice);\r\n });\r\n\r\n return (ret.length === 1) ? ret[0] : ret;\r\n };\r\n\r\n _win.NiceScroll = {\r\n getjQuery: function () {\r\n return jQuery;\r\n }\r\n };\r\n\r\n if (!$.nicescroll) {\r\n $.nicescroll = new NiceScrollArray();\r\n $.nicescroll.options = _globaloptions;\r\n }\r\n\r\n}));", "import $ from 'jquery';\n\nconst Util = (($) => { // eslint-disable-line no-shadow\n const TRANSITION_END = 'transitionend';\n\n const Util = { // eslint-disable-line no-shadow\n TRANSITION_END: 'mmTransitionEnd',\n\n triggerTransitionEnd(element) {\n $(element).trigger(TRANSITION_END);\n },\n\n supportsTransitionEnd() {\n return Boolean(TRANSITION_END);\n },\n };\n\n function getSpecialTransitionEndEvent() {\n return {\n bindType: TRANSITION_END,\n delegateType: TRANSITION_END,\n handle(event) {\n if ($(event.target).is(this)) {\n return event\n .handleObj\n .handler\n .apply(this, arguments); // eslint-disable-line prefer-rest-params\n }\n return undefined;\n },\n };\n }\n\n function transitionEndEmulator(duration) {\n let called = false;\n\n $(this).one(Util.TRANSITION_END, () => {\n called = true;\n });\n\n setTimeout(() => {\n if (!called) {\n Util.triggerTransitionEnd(this);\n }\n }, duration);\n\n return this;\n }\n\n function setTransitionEndSupport() {\n $.fn.mmEmulateTransitionEnd = transitionEndEmulator; // eslint-disable-line no-param-reassign\n // eslint-disable-next-line no-param-reassign\n $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();\n }\n\n setTransitionEndSupport();\n\n return Util;\n})($);\n\nexport default Util;\n", "import $ from 'jquery';\nimport Util from './util';\n\nconst NAME = 'metisMenu';\nconst DATA_KEY = 'metisMenu';\nconst EVENT_KEY = `.${DATA_KEY}`;\nconst DATA_API_KEY = '.data-api';\nconst JQUERY_NO_CONFLICT = $.fn[NAME];\nconst TRANSITION_DURATION = 350;\n\nconst Default = {\n toggle: true,\n preventDefault: true,\n triggerElement: 'a',\n parentTrigger: 'li',\n subMenu: 'ul',\n};\n\nconst Event = {\n SHOW: `show${EVENT_KEY}`,\n SHOWN: `shown${EVENT_KEY}`,\n HIDE: `hide${EVENT_KEY}`,\n HIDDEN: `hidden${EVENT_KEY}`,\n CLICK_DATA_API: `click${EVENT_KEY}${DATA_API_KEY}`,\n};\n\nconst ClassName = {\n METIS: 'metismenu',\n ACTIVE: 'mm-active',\n SHOW: 'mm-show',\n COLLAPSE: 'mm-collapse',\n COLLAPSING: 'mm-collapsing',\n COLLAPSED: 'mm-collapsed',\n};\n\nclass MetisMenu {\n // eslint-disable-line no-shadow\n constructor(element, config) {\n this.element = element;\n this.config = {\n ...Default,\n ...config,\n };\n this.transitioning = null;\n\n this.init();\n }\n\n init() {\n const self = this;\n const conf = this.config;\n const el = $(this.element);\n\n el.addClass(ClassName.METIS); // add metismenu class to element\n\n el.find(`${conf.parentTrigger}.${ClassName.ACTIVE}`)\n .children(conf.triggerElement)\n .attr('aria-expanded', 'true'); // add attribute aria-expanded=true the trigger element\n\n el.find(`${conf.parentTrigger}.${ClassName.ACTIVE}`)\n .parents(conf.parentTrigger)\n .addClass(ClassName.ACTIVE);\n\n el.find(`${conf.parentTrigger}.${ClassName.ACTIVE}`)\n .parents(conf.parentTrigger)\n .children(conf.triggerElement)\n .attr('aria-expanded', 'true'); // add attribute aria-expanded=true the triggers of all parents\n\n el.find(`${conf.parentTrigger}.${ClassName.ACTIVE}`)\n .has(conf.subMenu)\n .children(conf.subMenu)\n .addClass(`${ClassName.COLLAPSE} ${ClassName.SHOW}`);\n\n el\n .find(conf.parentTrigger)\n .not(`.${ClassName.ACTIVE}`)\n .has(conf.subMenu)\n .children(conf.subMenu)\n .addClass(ClassName.COLLAPSE);\n\n el\n .find(conf.parentTrigger)\n // .has(conf.subMenu)\n .children(conf.triggerElement)\n .on(Event.CLICK_DATA_API, function (e) { // eslint-disable-line func-names\n const eTar = $(this);\n\n if (eTar.attr('aria-disabled') === 'true') {\n return;\n }\n\n if (conf.preventDefault && eTar.attr('href') === '#') {\n e.preventDefault();\n }\n\n const paRent = eTar.parent(conf.parentTrigger);\n const sibLi = paRent.siblings(conf.parentTrigger);\n const sibTrigger = sibLi.children(conf.triggerElement);\n\n if (paRent.hasClass(ClassName.ACTIVE)) {\n eTar.attr('aria-expanded', 'false');\n self.removeActive(paRent);\n } else {\n eTar.attr('aria-expanded', 'true');\n self.setActive(paRent);\n if (conf.toggle) {\n self.removeActive(sibLi);\n sibTrigger.attr('aria-expanded', 'false');\n }\n }\n\n if (conf.onTransitionStart) {\n conf.onTransitionStart(e);\n }\n });\n }\n\n setActive(li) {\n $(li).addClass(ClassName.ACTIVE);\n const ul = $(li).children(this.config.subMenu);\n if (ul.length > 0 && !ul.hasClass(ClassName.SHOW)) {\n this.show(ul);\n }\n }\n\n removeActive(li) {\n $(li).removeClass(ClassName.ACTIVE);\n const ul = $(li).children(`${this.config.subMenu}.${ClassName.SHOW}`);\n if (ul.length > 0) {\n this.hide(ul);\n }\n }\n\n show(element) {\n if (this.transitioning || $(element).hasClass(ClassName.COLLAPSING)) {\n return;\n }\n const elem = $(element);\n\n const startEvent = $.Event(Event.SHOW);\n elem.trigger(startEvent);\n\n if (startEvent.isDefaultPrevented()) {\n return;\n }\n\n elem.parent(this.config.parentTrigger).addClass(ClassName.ACTIVE);\n\n if (this.config.toggle) {\n const toggleElem = elem.parent(this.config.parentTrigger).siblings().children(`${this.config.subMenu}.${ClassName.SHOW}`);\n this.hide(toggleElem);\n }\n\n elem\n .removeClass(ClassName.COLLAPSE)\n .addClass(ClassName.COLLAPSING)\n .height(0);\n\n this.setTransitioning(true);\n\n const complete = () => {\n // check if disposed\n if (!this.config || !this.element) {\n return;\n }\n elem\n .removeClass(ClassName.COLLAPSING)\n .addClass(`${ClassName.COLLAPSE} ${ClassName.SHOW}`)\n .height('');\n\n this.setTransitioning(false);\n\n elem.trigger(Event.SHOWN);\n };\n\n elem\n .height(element[0].scrollHeight)\n .one(Util.TRANSITION_END, complete)\n .mmEmulateTransitionEnd(TRANSITION_DURATION);\n }\n\n hide(element) {\n if (\n this.transitioning || !$(element).hasClass(ClassName.SHOW)\n ) {\n return;\n }\n\n const elem = $(element);\n\n const startEvent = $.Event(Event.HIDE);\n elem.trigger(startEvent);\n\n if (startEvent.isDefaultPrevented()) {\n return;\n }\n\n elem.parent(this.config.parentTrigger).removeClass(ClassName.ACTIVE);\n // eslint-disable-next-line no-unused-expressions\n elem.height(elem.height())[0].offsetHeight;\n\n elem\n .addClass(ClassName.COLLAPSING)\n .removeClass(ClassName.COLLAPSE)\n .removeClass(ClassName.SHOW);\n\n this.setTransitioning(true);\n\n const complete = () => {\n // check if disposed\n if (!this.config || !this.element) {\n return;\n }\n if (this.transitioning && this.config.onTransitionEnd) {\n this.config.onTransitionEnd();\n }\n\n this.setTransitioning(false);\n elem.trigger(Event.HIDDEN);\n\n elem\n .removeClass(ClassName.COLLAPSING)\n .addClass(ClassName.COLLAPSE);\n };\n\n if (elem.height() === 0 || elem.css('display') === 'none') {\n complete();\n } else {\n elem\n .height(0)\n .one(Util.TRANSITION_END, complete)\n .mmEmulateTransitionEnd(TRANSITION_DURATION);\n }\n }\n\n setTransitioning(isTransitioning) {\n this.transitioning = isTransitioning;\n }\n\n dispose() {\n $.removeData(this.element, DATA_KEY);\n\n $(this.element)\n .find(this.config.parentTrigger)\n // .has(this.config.subMenu)\n .children(this.config.triggerElement)\n .off(Event.CLICK_DATA_API);\n\n this.transitioning = null;\n this.config = null;\n this.element = null;\n }\n\n static jQueryInterface(config) {\n // eslint-disable-next-line func-names\n return this.each(function () {\n const $this = $(this);\n let data = $this.data(DATA_KEY);\n const conf = {\n ...Default,\n ...$this.data(),\n ...(typeof config === 'object' && config ? config : {}),\n };\n\n if (!data) {\n data = new MetisMenu(this, conf);\n $this.data(DATA_KEY, data);\n }\n\n if (typeof config === 'string') {\n if (data[config] === undefined) {\n throw new Error(`No method named \"${config}\"`);\n }\n data[config]();\n }\n });\n }\n}\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = MetisMenu.jQueryInterface; // eslint-disable-line no-param-reassign\n$.fn[NAME].Constructor = MetisMenu; // eslint-disable-line no-param-reassign\n$.fn[NAME].noConflict = () => {\n // eslint-disable-line no-param-reassign\n $.fn[NAME] = JQUERY_NO_CONFLICT; // eslint-disable-line no-param-reassign\n return MetisMenu.jQueryInterface;\n};\n\nexport default MetisMenu;\n", "export default typeof window !== 'undefined' && typeof document !== 'undefined' && typeof navigator !== 'undefined';\n", "import isBrowser from './isBrowser';\n\nconst timeoutDuration = (function(){\n const longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\n for (let i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n return 1;\n }\n }\n return 0;\n}());\n\nexport function microtaskDebounce(fn) {\n let called = false\n return () => {\n if (called) {\n return\n }\n called = true\n window.Promise.resolve().then(() => {\n called = false\n fn()\n })\n }\n}\n\nexport function taskDebounce(fn) {\n let scheduled = false;\n return () => {\n if (!scheduled) {\n scheduled = true;\n setTimeout(() => {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nconst supportsMicroTasks = isBrowser && window.Promise\n\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nexport default (supportsMicroTasks\n ? microtaskDebounce\n : taskDebounce);\n", "/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nexport default function isFunction(functionToCheck) {\n const getType = {};\n return (\n functionToCheck &&\n getType.toString.call(functionToCheck) === '[object Function]'\n );\n}\n", "/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nexport default function getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n const window = element.ownerDocument.defaultView;\n const css = window.getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n", "/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nexport default function getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n", "import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nexport default function getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body\n case '#document':\n return element.body\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n const { overflow, overflowX, overflowY } = getStyleComputedProperty(element);\n if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n", "/**\n * Returns the reference node of the reference object, or the reference object itself.\n * @method\n * @memberof Popper.Utils\n * @param {Element|Object} reference - the reference element (the popper will be relative to this)\n * @returns {Element} parent\n */\nexport default function getReferenceNode(reference) {\n return reference && reference.referenceNode ? reference.referenceNode : reference;\n}\n", "import isBrowser from './isBrowser';\n\nconst isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nconst isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n\n/**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\nexport default function isIE(version) {\n if (version === 11) {\n return isIE11;\n }\n if (version === 10) {\n return isIE10;\n }\n return isIE11 || isIE10;\n}\n", "import getStyleComputedProperty from './getStyleComputedProperty';\nimport isIE from './isIE';\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nexport default function getOffsetParent(element) {\n if (!element) {\n return document.documentElement;\n }\n\n const noOffsetParent = isIE(10) ? document.body : null;\n\n // NOTE: 1 DOM access here\n let offsetParent = element.offsetParent || null;\n // Skip hidden elements which don't have an offsetParent\n while (offsetParent === noOffsetParent && element.nextElementSibling) {\n offsetParent = (element = element.nextElementSibling).offsetParent;\n }\n\n const nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n return element ? element.ownerDocument.documentElement : document.documentElement;\n }\n\n // .offsetParent will return the closest TH, TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (\n ['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 &&\n getStyleComputedProperty(offsetParent, 'position') === 'static'\n ) {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n", "import getOffsetParent from './getOffsetParent';\n\nexport default function isOffsetContainer(element) {\n const { nodeName } = element;\n if (nodeName === 'BODY') {\n return false;\n }\n return (\n nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element\n );\n}\n", "/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nexport default function getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n", "import isOffsetContainer from './isOffsetContainer';\nimport getRoot from './getRoot';\nimport getOffsetParent from './getOffsetParent';\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nexport default function findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n const order =\n element1.compareDocumentPosition(element2) &\n Node.DOCUMENT_POSITION_FOLLOWING;\n const start = order ? element1 : element2;\n const end = order ? element2 : element1;\n\n // Get common ancestor container\n const range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n const { commonAncestorContainer } = range;\n\n // Both nodes are inside #document\n if (\n (element1 !== commonAncestorContainer &&\n element2 !== commonAncestorContainer) ||\n start.contains(end)\n ) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n const element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n", "/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nexport default function getScroll(element, side = 'top') {\n const upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n const nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n const html = element.ownerDocument.documentElement;\n const scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n", "import getScroll from './getScroll';\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nexport default function includeScroll(rect, element, subtract = false) {\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n const modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n", "/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nexport default function getBordersSize(styles, axis) {\n const sideA = axis === 'x' ? 'Left' : 'Top';\n const sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return (\n parseFloat(styles[`border${sideA}Width`]) +\n parseFloat(styles[`border${sideB}Width`])\n );\n}\n", "import isIE from './isIE';\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(\n body[`offset${axis}`],\n body[`scroll${axis}`],\n html[`client${axis}`],\n html[`offset${axis}`],\n html[`scroll${axis}`],\n isIE(10)\n ? (parseInt(html[`offset${axis}`]) + \n parseInt(computedStyle[`margin${axis === 'Height' ? 'Top' : 'Left'}`]) + \n parseInt(computedStyle[`margin${axis === 'Height' ? 'Bottom' : 'Right'}`]))\n : 0 \n );\n}\n\nexport default function getWindowSizes(document) {\n const body = document.body;\n const html = document.documentElement;\n const computedStyle = isIE(10) && getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle),\n };\n}\n", "/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nexport default function getClientRect(offsets) {\n return {\n ...offsets,\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height,\n };\n}\n", "import getStyleComputedProperty from './getStyleComputedProperty';\nimport getBordersSize from './getBordersSize';\nimport getWindowSizes from './getWindowSizes';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\nimport isIE from './isIE';\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nexport default function getBoundingClientRect(element) {\n let rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n try {\n if (isIE(10)) {\n rect = element.getBoundingClientRect();\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n }\n else {\n rect = element.getBoundingClientRect();\n }\n }\n catch(e){}\n\n const result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top,\n };\n\n // subtract scrollbar size from sizes\n const sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n const width =\n sizes.width || element.clientWidth || result.width;\n const height =\n sizes.height || element.clientHeight || result.height;\n\n let horizScrollbar = element.offsetWidth - width;\n let vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n const styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n", "import getStyleComputedProperty from './getStyleComputedProperty';\nimport includeScroll from './includeScroll';\nimport getScrollParent from './getScrollParent';\nimport getBoundingClientRect from './getBoundingClientRect';\nimport runIsIE from './isIE';\nimport getClientRect from './getClientRect';\n\nexport default function getOffsetRectRelativeToArbitraryNode(children, parent, fixedPosition = false) {\n const isIE10 = runIsIE(10);\n const isHTML = parent.nodeName === 'HTML';\n const childrenRect = getBoundingClientRect(children);\n const parentRect = getBoundingClientRect(parent);\n const scrollParent = getScrollParent(children);\n\n const styles = getStyleComputedProperty(parent);\n const borderTopWidth = parseFloat(styles.borderTopWidth);\n const borderLeftWidth = parseFloat(styles.borderLeftWidth);\n\n // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n if(fixedPosition && isHTML) {\n parentRect.top = Math.max(parentRect.top, 0);\n parentRect.left = Math.max(parentRect.left, 0);\n }\n let offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height,\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n const marginTop = parseFloat(styles.marginTop);\n const marginLeft = parseFloat(styles.marginLeft);\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (\n isIE10 && !fixedPosition\n ? parent.contains(scrollParent)\n : parent === scrollParent && scrollParent.nodeName !== 'BODY'\n ) {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n", "import getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\n\nexport default function getViewportOffsetRectRelativeToArtbitraryNode(element, excludeScroll = false) {\n const html = element.ownerDocument.documentElement;\n const relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n const width = Math.max(html.clientWidth, window.innerWidth || 0);\n const height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n const scrollTop = !excludeScroll ? getScroll(html) : 0;\n const scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\n const offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width,\n height,\n };\n\n return getClientRect(offset);\n}\n", "import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nexport default function isFixed(element) {\n const nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n const parentNode = getParentNode(element);\n if (!parentNode) {\n return false;\n }\n return isFixed(parentNode);\n}\n", "import getStyleComputedProperty from './getStyleComputedProperty';\nimport isIE from './isIE';\n/**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\nexport default function getFixedPositionOffsetParent(element) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element || !element.parentElement || isIE()) {\n return document.documentElement;\n }\n let el = element.parentElement;\n while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n el = el.parentElement;\n }\n return el || document.documentElement;\n\n}\n", "import getScrollParent from './getScrollParent';\nimport getParentNode from './getParentNode';\nimport getReferenceNode from './getReferenceNode';\nimport findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getViewportOffsetRectRelativeToArtbitraryNode from './getViewportOffsetRectRelativeToArtbitraryNode';\nimport getWindowSizes from './getWindowSizes';\nimport isFixed from './isFixed';\nimport getFixedPositionOffsetParent from './getFixedPositionOffsetParent';\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\nexport default function getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement,\n fixedPosition = false\n) {\n // NOTE: 1 DOM access here\n\n let boundaries = { top: 0, left: 0 };\n const offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n\n // Handle viewport case\n if (boundariesElement === 'viewport' ) {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n }\n\n else {\n // Handle other cases based on DOM element used as boundaries\n let boundariesNode;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n const offsets = getOffsetRectRelativeToArbitraryNode(\n boundariesNode,\n offsetParent,\n fixedPosition\n );\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n const { height, width } = getWindowSizes(popper.ownerDocument);\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n padding = padding || 0;\n const isPaddingNumber = typeof padding === 'number';\n boundaries.left += isPaddingNumber ? padding : padding.left || 0; \n boundaries.top += isPaddingNumber ? padding : padding.top || 0; \n boundaries.right -= isPaddingNumber ? padding : padding.right || 0; \n boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0; \n\n return boundaries;\n}\n", "import getBoundaries from '../utils/getBoundaries';\n\nfunction getArea({ width, height }) {\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeAutoPlacement(\n placement,\n refRect,\n popper,\n reference,\n boundariesElement,\n padding = 0\n) {\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n const boundaries = getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement\n );\n\n const rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top,\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height,\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom,\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height,\n },\n };\n\n const sortedAreas = Object.keys(rects)\n .map(key => ({\n key,\n ...rects[key],\n area: getArea(rects[key]),\n }))\n .sort((a, b) => b.area - a.area);\n\n const filteredAreas = sortedAreas.filter(\n ({ width, height }) =>\n width >= popper.clientWidth && height >= popper.clientHeight\n );\n\n const computedPlacement = filteredAreas.length > 0\n ? filteredAreas[0].key\n : sortedAreas[0].key;\n\n const variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? `-${variation}` : '');\n}\n", "import findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getFixedPositionOffsetParent from './getFixedPositionOffsetParent';\nimport getReferenceNode from './getReferenceNode';\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nexport default function getReferenceOffsets(state, popper, reference, fixedPosition = null) {\n const commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\n", "/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nexport default function getOuterSizes(element) {\n const window = element.ownerDocument.defaultView;\n const styles = window.getComputedStyle(element);\n const x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n const y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n const result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x,\n };\n return result;\n}\n", "/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nexport default function getOppositePlacement(placement) {\n const hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, matched => hash[matched]);\n}\n", "import getOuterSizes from './getOuterSizes';\nimport getOppositePlacement from './getOppositePlacement';\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nexport default function getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n const popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n const popperOffsets = {\n width: popperRect.width,\n height: popperRect.height,\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n const isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n const mainSide = isHoriz ? 'top' : 'left';\n const secondarySide = isHoriz ? 'left' : 'top';\n const measurement = isHoriz ? 'height' : 'width';\n const secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] =\n referenceOffsets[mainSide] +\n referenceOffsets[measurement] / 2 -\n popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] =\n referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] =\n referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n", "/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n", "import find from './find';\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(cur => cur[prop] === value);\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n const match = find(arr, obj => obj[prop] === value);\n return arr.indexOf(match);\n}\n", "import isFunction from './isFunction';\nimport findIndex from './findIndex';\nimport getClientRect from '../utils/getClientRect';\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nexport default function runModifiers(modifiers, data, ends) {\n const modifiersToRun = ends === undefined\n ? modifiers\n : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(modifier => {\n if (modifier['function']) { // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n const fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n", "import computeAutoPlacement from '../utils/computeAutoPlacement';\nimport getReferenceOffsets from '../utils/getReferenceOffsets';\nimport getPopperOffsets from '../utils/getPopperOffsets';\nimport runModifiers from '../utils/runModifiers';\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.<br />\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nexport default function update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n\n let data = {\n instance: this,\n styles: {},\n arrowStyles: {},\n attributes: {},\n flipped: false,\n offsets: {},\n };\n\n // compute reference element offsets\n data.offsets.reference = getReferenceOffsets(\n this.state,\n this.popper,\n this.reference,\n this.options.positionFixed\n );\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n data.placement = computeAutoPlacement(\n this.options.placement,\n data.offsets.reference,\n this.popper,\n this.reference,\n this.options.modifiers.flip.boundariesElement,\n this.options.modifiers.flip.padding\n );\n\n // store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n\n data.positionFixed = this.options.positionFixed;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(\n this.popper,\n data.offsets.reference,\n data.placement\n );\n\n data.offsets.popper.position = this.options.positionFixed\n ? 'fixed'\n : 'absolute';\n\n // run the modifiers\n data = runModifiers(this.modifiers, data);\n\n // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\n if (!this.state.isCreated) {\n this.state.isCreated = true;\n this.options.onCreate(data);\n } else {\n this.options.onUpdate(data);\n }\n}\n", "/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nexport default function isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(\n ({ name, enabled }) => enabled && name === modifierName\n );\n}\n", "/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nexport default function getSupportedPropertyName(property) {\n const prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n const upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (let i = 0; i < prefixes.length; i++) {\n const prefix = prefixes[i];\n const toCheck = prefix ? `${prefix}${upperProp}` : property;\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n", "import isModifierEnabled from '../utils/isModifierEnabled';\nimport getSupportedPropertyName from '../utils/getSupportedPropertyName';\n\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\nexport default function destroy() {\n this.state.isDestroyed = true;\n\n // touch DOM only if `applyStyle` modifier is enabled\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n this.popper.removeAttribute('x-placement');\n this.popper.style.position = '';\n this.popper.style.top = '';\n this.popper.style.left = '';\n this.popper.style.right = '';\n this.popper.style.bottom = '';\n this.popper.style.willChange = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n\n this.disableEventListeners();\n\n // remove the popper if user explicitly asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n}\n", "/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nexport default function getWindow(element) {\n const ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n", "import getScrollParent from './getScrollParent';\nimport getWindow from './getWindow';\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n const isBody = scrollParent.nodeName === 'BODY';\n const target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(\n getScrollParent(target.parentNode),\n event,\n callback,\n scrollParents\n );\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function setupEventListeners(\n reference,\n options,\n state,\n updateBound\n) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n const scrollElement = getScrollParent(reference);\n attachToScrollParents(\n scrollElement,\n 'scroll',\n state.updateBound,\n state.scrollParents\n );\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n", "import setupEventListeners from '../utils/setupEventListeners';\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nexport default function enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(\n this.reference,\n this.options,\n this.state,\n this.scheduleUpdate\n );\n }\n}\n", "import getWindow from './getWindow';\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(target => {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n", "import removeEventListeners from '../utils/removeEventListeners';\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger `onUpdate` callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nexport default function disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n}\n", "/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nexport default function isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n", "import isNumeric from './isNumeric';\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setStyles(element, styles) {\n Object.keys(styles).forEach(prop => {\n let unit = '';\n // add unit if the value is numeric and is one of the following\n if (\n ['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !==\n -1 &&\n isNumeric(styles[prop])\n ) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n", "/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function(prop) {\n const value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n", "import setStyles from '../utils/setStyles';\nimport setAttributes from '../utils/setAttributes';\nimport getReferenceOffsets from '../utils/getReferenceOffsets';\nimport computeAutoPlacement from '../utils/computeAutoPlacement';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nexport default function applyStyle(data) {\n // any property present in `data.styles` will be applied to the popper,\n // in this way we can make the 3rd party modifiers add custom styles to it\n // Be aware, modifiers could override the properties defined in the previous\n // lines of this modifier!\n setStyles(data.instance.popper, data.styles);\n\n // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n\n // if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper\n * @param {Object} options - Popper.js options\n */\nexport function applyStyleOnLoad(\n reference,\n popper,\n options,\n modifierOptions,\n state\n) {\n // compute reference element offsets\n const referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n const placement = computeAutoPlacement(\n options.placement,\n referenceOffsets,\n popper,\n reference,\n options.modifiers.flip.boundariesElement,\n options.modifiers.flip.padding\n );\n\n popper.setAttribute('x-placement', placement);\n\n // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });\n\n return options;\n}\n", "/**\n * @function\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Boolean} shouldRound - If the offsets should be rounded at all\n * @returns {Object} The popper's position offsets rounded\n *\n * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\n * good as it can be within reason.\n * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\n *\n * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\n * as well on High DPI screens).\n *\n * Firefox prefers no rounding for positioning and does not have blurriness on\n * high DPI screens.\n *\n * Only horizontal placement and left/right values need to be considered.\n */\nexport default function getRoundedOffsets(data, shouldRound) {\n const { popper, reference } = data.offsets;\n const { round, floor } = Math;\n const noRound = v => v;\n \n const referenceWidth = round(reference.width);\n const popperWidth = round(popper.width);\n \n const isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n const isVariation = data.placement.indexOf('-') !== -1;\n const sameWidthParity = referenceWidth % 2 === popperWidth % 2;\n const bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;\n\n const horizontalToInteger = !shouldRound\n ? noRound\n : isVertical || isVariation || sameWidthParity\n ? round\n : floor;\n const verticalToInteger = !shouldRound ? noRound : round;\n\n return {\n left: horizontalToInteger(\n bothOddWidth && !isVariation && shouldRound\n ? popper.left - 1\n : popper.left\n ),\n top: verticalToInteger(popper.top),\n bottom: verticalToInteger(popper.bottom),\n right: horizontalToInteger(popper.right),\n };\n}\n", "import getSupportedPropertyName from '../utils/getSupportedPropertyName';\nimport find from '../utils/find';\nimport getOffsetParent from '../utils/getOffsetParent';\nimport getBoundingClientRect from '../utils/getBoundingClientRect';\nimport getRoundedOffsets from '../utils/getRoundedOffsets';\nimport isBrowser from '../utils/isBrowser';\n\nconst isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeStyle(data, options) {\n const { x, y } = options;\n const { popper } = data.offsets;\n\n // Remove this legacy support in Popper.js v2\n const legacyGpuAccelerationOption = find(\n data.instance.modifiers,\n modifier => modifier.name === 'applyStyle'\n ).gpuAcceleration;\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn(\n 'WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!'\n );\n }\n const gpuAcceleration =\n legacyGpuAccelerationOption !== undefined\n ? legacyGpuAccelerationOption\n : options.gpuAcceleration;\n\n const offsetParent = getOffsetParent(data.instance.popper);\n const offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n const styles = {\n position: popper.position,\n };\n\n const offsets = getRoundedOffsets(\n data,\n window.devicePixelRatio < 2 || !isFirefox\n );\n\n const sideA = x === 'bottom' ? 'top' : 'bottom';\n const sideB = y === 'right' ? 'left' : 'right';\n\n // if gpuAcceleration is set to `true` and transform is supported,\n // we use `translate3d` to apply the position to the popper we\n // automatically use the supported prefixed version if needed\n const prefixedProperty = getSupportedPropertyName('transform');\n\n // now, let's make a step back and look at this code closely (wtf?)\n // If the content of the popper grows once it's been positioned, it\n // may happen that the popper gets misplaced because of the new content\n // overflowing its reference element\n // To avoid this problem, we provide two options (x and y), which allow\n // the consumer to define the offset origin.\n // If we position a popper on top of a reference element, we can set\n // `x` to `top` to make the popper grow towards its top instead of\n // its bottom.\n let left, top;\n if (sideA === 'bottom') {\n // when offsetParent is <html> the positioning is relative to the bottom of the screen (excluding the scrollbar)\n // and not the bottom of the html element\n if (offsetParent.nodeName === 'HTML') {\n top = -offsetParent.clientHeight + offsets.bottom;\n } else {\n top = -offsetParentRect.height + offsets.bottom;\n }\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n if (offsetParent.nodeName === 'HTML') {\n left = -offsetParent.clientWidth + offsets.right;\n } else {\n left = -offsetParentRect.width + offsets.right;\n }\n } else {\n left = offsets.left;\n }\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = `translate3d(${left}px, ${top}px, 0)`;\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n const invertTop = sideA === 'bottom' ? -1 : 1;\n const invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = `${sideA}, ${sideB}`;\n }\n\n // Attributes\n const attributes = {\n 'x-placement': data.placement,\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = { ...attributes, ...data.attributes };\n data.styles = { ...styles, ...data.styles };\n data.arrowStyles = { ...data.offsets.arrow, ...data.arrowStyles };\n\n return data;\n}\n", "import find from './find';\n\n/**\n * Helper used to know if the given modifier depends from another one.<br />\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nexport default function isModifierRequired(\n modifiers,\n requestingName,\n requestedName\n) {\n const requesting = find(modifiers, ({ name }) => name === requestingName);\n\n const isRequired =\n !!requesting &&\n modifiers.some(modifier => {\n return (\n modifier.name === requestedName &&\n modifier.enabled &&\n modifier.order < requesting.order\n );\n });\n\n if (!isRequired) {\n const requesting = `\\`${requestingName}\\``;\n const requested = `\\`${requestedName}\\``;\n console.warn(\n `${requested} modifier is required by ${requesting} modifier in order to work, be sure to include it before ${requesting}!`\n );\n }\n return isRequired;\n}\n", "import getClientRect from '../utils/getClientRect';\nimport getOuterSizes from '../utils/getOuterSizes';\nimport isModifierRequired from '../utils/isModifierRequired';\nimport getStyleComputedProperty from '../utils/getStyleComputedProperty';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function arrow(data, options) {\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n let arrowElement = options.element;\n\n // if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n\n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n } else {\n // if the arrowElement isn't a query selector we must check that the\n // provided DOM node is child of its popper node\n if (!data.instance.popper.contains(arrowElement)) {\n console.warn(\n 'WARNING: `arrow.element` must be child of its popper element!'\n );\n return data;\n }\n }\n\n const placement = data.placement.split('-')[0];\n const { popper, reference } = data.offsets;\n const isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n const len = isVertical ? 'height' : 'width';\n const sideCapitalized = isVertical ? 'Top' : 'Left';\n const side = sideCapitalized.toLowerCase();\n const altSide = isVertical ? 'left' : 'top';\n const opSide = isVertical ? 'bottom' : 'right';\n const arrowElementSize = getOuterSizes(arrowElement)[len];\n\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjunction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -=\n popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] +=\n reference[side] + arrowElementSize - popper[opSide];\n }\n data.offsets.popper = getClientRect(data.offsets.popper);\n\n // compute center of the popper\n const center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n const css = getStyleComputedProperty(data.instance.popper);\n const popperMarginSide = parseFloat(css[`margin${sideCapitalized}`]);\n const popperBorderSide = parseFloat(css[`border${sideCapitalized}Width`]);\n let sideValue =\n center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n // prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n data.arrowElement = arrowElement;\n data.offsets.arrow = {\n [side]: Math.round(sideValue),\n [altSide]: '', // make sure to unset any eventual altSide value from the DOM node\n };\n\n return data;\n}\n", "/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nexport default function getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\n", "/**\n * List of accepted placements to use as values of the `placement` option.<br />\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.<br />\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-end` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nexport default [\n 'auto-start',\n 'auto',\n 'auto-end',\n 'top-start',\n 'top',\n 'top-end',\n 'right-start',\n 'right',\n 'right-end',\n 'bottom-end',\n 'bottom',\n 'bottom-start',\n 'left-end',\n 'left',\n 'left-start',\n];\n", "import placements from '../methods/placements';\n\n// Get rid of `auto` `auto-start` and `auto-end`\nconst validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nexport default function clockwise(placement, counter = false) {\n const index = validPlacements.indexOf(placement);\n const arr = validPlacements\n .slice(index + 1)\n .concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\n", "import getOppositePlacement from '../utils/getOppositePlacement';\nimport getOppositeVariation from '../utils/getOppositeVariation';\nimport getPopperOffsets from '../utils/getPopperOffsets';\nimport runModifiers from '../utils/runModifiers';\nimport getBoundaries from '../utils/getBoundaries';\nimport isModifierEnabled from '../utils/isModifierEnabled';\nimport clockwise from '../utils/clockwise';\n\nconst BEHAVIORS = {\n FLIP: 'flip',\n CLOCKWISE: 'clockwise',\n COUNTERCLOCKWISE: 'counterclockwise',\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function flip(data, options) {\n // if `inner` modifier is enabled, we can't use the `flip` modifier\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n return data;\n }\n\n if (data.flipped && data.placement === data.originalPlacement) {\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n\n const boundaries = getBoundaries(\n data.instance.popper,\n data.instance.reference,\n options.padding,\n options.boundariesElement,\n data.positionFixed\n );\n\n let placement = data.placement.split('-')[0];\n let placementOpposite = getOppositePlacement(placement);\n let variation = data.placement.split('-')[1] || '';\n\n let flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\n default:\n flipOrder = options.behavior;\n }\n\n flipOrder.forEach((step, index) => {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n\n const popperOffsets = data.offsets.popper;\n const refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\n const floor = Math.floor;\n const overlapsRef =\n (placement === 'left' &&\n floor(popperOffsets.right) > floor(refOffsets.left)) ||\n (placement === 'right' &&\n floor(popperOffsets.left) < floor(refOffsets.right)) ||\n (placement === 'top' &&\n floor(popperOffsets.bottom) > floor(refOffsets.top)) ||\n (placement === 'bottom' &&\n floor(popperOffsets.top) < floor(refOffsets.bottom));\n\n const overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n const overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n const overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n const overflowsBottom =\n floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n const overflowsBoundaries =\n (placement === 'left' && overflowsLeft) ||\n (placement === 'right' && overflowsRight) ||\n (placement === 'top' && overflowsTop) ||\n (placement === 'bottom' && overflowsBottom);\n\n // flip the variation if required\n const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n\n // flips variation if reference element overflows boundaries\n const flippedVariationByRef =\n !!options.flipVariations &&\n ((isVertical && variation === 'start' && overflowsLeft) ||\n (isVertical && variation === 'end' && overflowsRight) ||\n (!isVertical && variation === 'start' && overflowsTop) ||\n (!isVertical && variation === 'end' && overflowsBottom));\n\n // flips variation if popper content overflows boundaries\n const flippedVariationByContent =\n !!options.flipVariationsByContent &&\n ((isVertical && variation === 'start' && overflowsRight) ||\n (isVertical && variation === 'end' && overflowsLeft) ||\n (!isVertical && variation === 'start' && overflowsBottom) ||\n (!isVertical && variation === 'end' && overflowsTop));\n\n const flippedVariation = flippedVariationByRef || flippedVariationByContent;\n\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n // this boolean to detect any flip loop\n data.flipped = true;\n\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n\n data.placement = placement + (variation ? '-' + variation : '');\n\n // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n data.offsets.popper = {\n ...data.offsets.popper,\n ...getPopperOffsets(\n data.instance.popper,\n data.offsets.reference,\n data.placement\n ),\n };\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\n", "/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function keepTogether(data) {\n const { popper, reference } = data.offsets;\n const placement = data.placement.split('-')[0];\n const floor = Math.floor;\n const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n const side = isVertical ? 'right' : 'bottom';\n const opSide = isVertical ? 'left' : 'top';\n const measurement = isVertical ? 'width' : 'height';\n\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] =\n floor(reference[opSide]) - popper[measurement];\n }\n if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\n", "import isNumeric from '../utils/isNumeric';\nimport getClientRect from '../utils/getClientRect';\nimport find from '../utils/find';\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nexport function toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n const split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n const value = +split[1];\n const unit = split[2];\n\n // If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n let element;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n\n const rect = getClientRect(element);\n return rect[measurement] / 100 * value;\n } else if (unit === 'vh' || unit === 'vw') {\n // if is a vh or vw, we calculate the size based on the viewport\n let size;\n if (unit === 'vh') {\n size = Math.max(\n document.documentElement.clientHeight,\n window.innerHeight || 0\n );\n } else {\n size = Math.max(\n document.documentElement.clientWidth,\n window.innerWidth || 0\n );\n }\n return size / 100 * value;\n } else {\n // if is an explicit pixel unit, we get rid of the unit and keep the value\n // if is an implicit unit, it's px, and we return just the value\n return value;\n }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nexport function parseOffset(\n offset,\n popperOffsets,\n referenceOffsets,\n basePlacement\n) {\n const offsets = [0, 0];\n\n // Use height if placement is left or right and index is 0 otherwise use width\n // in this way the first offset will use an axis and the second one\n // will use the other one\n const useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n // Split the offset string to obtain a list of values and operands\n // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n const fragments = offset.split(/(\\+|\\-)/).map(frag => frag.trim());\n\n // Detect if the offset string contains a pair of values or a single one\n // they could be separated by comma or space\n const divider = fragments.indexOf(\n find(fragments, frag => frag.search(/,|\\s/) !== -1)\n );\n\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn(\n 'Offsets separated by white space(s) are deprecated, use a comma (,) instead.'\n );\n }\n\n // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\n const splitRegex = /\\s*,\\s*|\\s+/;\n let ops = divider !== -1\n ? [\n fragments\n .slice(0, divider)\n .concat([fragments[divider].split(splitRegex)[0]]),\n [fragments[divider].split(splitRegex)[1]].concat(\n fragments.slice(divider + 1)\n ),\n ]\n : [fragments];\n\n // Convert the values with units to absolute pixels to allow our computations\n ops = ops.map((op, index) => {\n // Most of the units rely on the orientation of the popper\n const measurement = (index === 1 ? !useHeight : useHeight)\n ? 'height'\n : 'width';\n let mergeWithPrevious = false;\n return (\n op\n // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce((a, b) => {\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n a[a.length - 1] = b;\n mergeWithPrevious = true;\n return a;\n } else if (mergeWithPrevious) {\n a[a.length - 1] += b;\n mergeWithPrevious = false;\n return a;\n } else {\n return a.concat(b);\n }\n }, [])\n // Here we convert the string values into number values (in px)\n .map(str => toValue(str, measurement, popperOffsets, referenceOffsets))\n );\n });\n\n // Loop trough the offsets arrays and execute the operations\n ops.forEach((op, index) => {\n op.forEach((frag, index2) => {\n if (isNumeric(frag)) {\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n }\n });\n });\n return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nexport default function offset(data, { offset }) {\n const { placement, offsets: { popper, reference } } = data;\n const basePlacement = placement.split('-')[0];\n\n let offsets;\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n\n if (basePlacement === 'left') {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === 'right') {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === 'top') {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === 'bottom') {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n\n data.popper = popper;\n return data;\n}\n", "import getOffsetParent from '../utils/getOffsetParent';\nimport getBoundaries from '../utils/getBoundaries';\nimport getSupportedPropertyName from '../utils/getSupportedPropertyName';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function preventOverflow(data, options) {\n let boundariesElement =\n options.boundariesElement || getOffsetParent(data.instance.popper);\n\n // If offsetParent is the reference element, we really want to\n // go one step up and use the next offsetParent as reference to\n // avoid to make this modifier completely useless and look like broken\n if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n\n // NOTE: DOM access here\n // resets the popper's position so that the document size can be calculated excluding\n // the size of the popper element itself\n const transformProp = getSupportedPropertyName('transform');\n const popperStyles = data.instance.popper.style; // assignment to help minification\n const { top, left, [transformProp]: transform } = popperStyles;\n popperStyles.top = '';\n popperStyles.left = '';\n popperStyles[transformProp] = '';\n\n const boundaries = getBoundaries(\n data.instance.popper,\n data.instance.reference,\n options.padding,\n boundariesElement,\n data.positionFixed\n );\n\n // NOTE: DOM access here\n // restores the original style properties after the offsets have been computed\n popperStyles.top = top;\n popperStyles.left = left;\n popperStyles[transformProp] = transform;\n\n options.boundaries = boundaries;\n\n const order = options.priority;\n let popper = data.offsets.popper;\n\n const check = {\n primary(placement) {\n let value = popper[placement];\n if (\n popper[placement] < boundaries[placement] &&\n !options.escapeWithReference\n ) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n return { [placement]: value };\n },\n secondary(placement) {\n const mainSide = placement === 'right' ? 'left' : 'top';\n let value = popper[mainSide];\n if (\n popper[placement] > boundaries[placement] &&\n !options.escapeWithReference\n ) {\n value = Math.min(\n popper[mainSide],\n boundaries[placement] -\n (placement === 'right' ? popper.width : popper.height)\n );\n }\n return { [mainSide]: value };\n },\n };\n\n order.forEach(placement => {\n const side =\n ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n popper = { ...popper, ...check[side](placement) };\n });\n\n data.offsets.popper = popper;\n\n return data;\n}\n", "/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function shift(data) {\n const placement = data.placement;\n const basePlacement = placement.split('-')[0];\n const shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n const { reference, popper } = data.offsets;\n const isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n const side = isVertical ? 'left' : 'top';\n const measurement = isVertical ? 'width' : 'height';\n\n const shiftOffsets = {\n start: { [side]: reference[side] },\n end: {\n [side]: reference[side] + reference[measurement] - popper[measurement],\n },\n };\n\n data.offsets.popper = { ...popper, ...shiftOffsets[shiftvariation] };\n }\n\n return data;\n}\n", "import isModifierRequired from '../utils/isModifierRequired';\nimport find from '../utils/find';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n\n const refRect = data.offsets.reference;\n const bound = find(\n data.instance.modifiers,\n modifier => modifier.name === 'preventOverflow'\n ).boundaries;\n\n if (\n refRect.bottom < bound.top ||\n refRect.left > bound.right ||\n refRect.top > bound.bottom ||\n refRect.right < bound.left\n ) {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === true) {\n return data;\n }\n\n data.hide = true;\n data.attributes['x-out-of-boundaries'] = '';\n } else {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === false) {\n return data;\n }\n\n data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\n }\n\n return data;\n}\n", "import getClientRect from '../utils/getClientRect';\nimport getOppositePlacement from '../utils/getOppositePlacement';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function inner(data) {\n const placement = data.placement;\n const basePlacement = placement.split('-')[0];\n const { popper, reference } = data.offsets;\n const isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n const subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] =\n reference[basePlacement] -\n (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\n", "import applyStyle, { applyStyleOnLoad } from './applyStyle';\nimport computeStyle from './computeStyle';\nimport arrow from './arrow';\nimport flip from './flip';\nimport keepTogether from './keepTogether';\nimport offset from './offset';\nimport preventOverflow from './preventOverflow';\nimport shift from './shift';\nimport hide from './hide';\nimport inner from './inner';\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.<br />\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.<br />\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nexport default {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.<br />\n * It will read the variation of the `placement` property.<br />\n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: shift,\n },\n\n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unit-less, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.<br />\n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the `height`.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.<br />\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.<br />\n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0,\n },\n\n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * A scenario exists where the reference itself is not within the boundaries.<br />\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".<br />\n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: ['left', 'right', 'top', 'bottom'],\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper. This makes sure the popper always has a little padding\n * between the edges of its container\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: 'scrollParent',\n },\n\n /**\n * Modifier used to make sure the reference and its popper stay near each other\n * without leaving any gap between the two. Especially useful when the arrow is\n * enabled and you want to ensure that it points to its reference element.\n * It cares only about the first axis. You can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: keepTogether,\n },\n\n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjunction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: '[x-arrow]',\n },\n\n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations)\n */\n behavior: 'flip',\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position.\n * The popper will never be placed outside of the defined boundaries\n * (except if `keepTogether` is enabled)\n */\n boundariesElement: 'viewport',\n /**\n * @prop {Boolean} flipVariations=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the reference element overlaps its boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariations: false,\n /**\n * @prop {Boolean} flipVariationsByContent=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the popper element overlaps its reference boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariationsByContent: false,\n },\n\n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n /** @prop {ModifierFn} */\n fn: inner,\n },\n\n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: hide,\n },\n\n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: true,\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: 'bottom',\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: 'right',\n },\n\n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define your own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: undefined,\n },\n};\n\n/**\n * The `dataObject` is an object containing all the information used by Popper.js.\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n", "import modifiers from '../modifiers/index';\n\n/**\n * Default options provided to Popper.js constructor.<br />\n * These can be overridden using the `options` argument of Popper.js.<br />\n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nexport default {\n /**\n * Popper's placement.\n * @prop {Popper.placements} placement='bottom'\n */\n placement: 'bottom',\n\n /**\n * Set this to true if you want popper to position it self in 'fixed' mode\n * @prop {Boolean} positionFixed=false\n */\n positionFixed: false,\n\n /**\n * Whether events (resize, scroll) are initially enabled.\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\n\n /**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n */\n removeOnDestroy: false,\n\n /**\n * Callback called when the popper is created.<br />\n * By default, it is set to no-op.<br />\n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: () => {},\n\n /**\n * Callback called when the popper is updated. This callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates.<br />\n * By default, it is set to no-op.<br />\n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: () => {},\n\n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js.\n * @prop {modifiers}\n */\n modifiers,\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n", "// Utils\nimport debounce from './utils/debounce';\nimport isFunction from './utils/isFunction';\n\n// Methods\nimport update from './methods/update';\nimport destroy from './methods/destroy';\nimport enableEventListeners from './methods/enableEventListeners';\nimport disableEventListeners from './methods/disableEventListeners';\nimport Defaults from './methods/defaults';\nimport placements from './methods/placements';\n\nexport default class Popper {\n /**\n * Creates a new Popper.js instance.\n * @class Popper\n * @param {Element|referenceObject} reference - The reference element used to position the popper\n * @param {Element} popper - The HTML / XML element used as the popper\n * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n * @return {Object} instance - The generated Popper.js instance\n */\n constructor(reference, popper, options = {}) {\n // make update() debounced, so that it only runs at most once-per-tick\n this.update = debounce(this.update.bind(this));\n\n // with {} we create a new object with the options inside it\n this.options = { ...Popper.Defaults, ...options };\n\n // init state\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: [],\n };\n\n // get reference and popper elements (allow jQuery wrappers)\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper;\n\n // Deep merge modifiers options\n this.options.modifiers = {};\n Object.keys({\n ...Popper.Defaults.modifiers,\n ...options.modifiers,\n }).forEach(name => {\n this.options.modifiers[name] = {\n // If it's a built-in modifier, use it as base\n ...(Popper.Defaults.modifiers[name] || {}),\n // If there are custom options, override and merge with default ones\n ...(options.modifiers ? options.modifiers[name] : {}),\n };\n });\n\n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers)\n .map(name => ({\n name,\n ...this.options.modifiers[name],\n }))\n // sort the modifiers by order\n .sort((a, b) => a.order - b.order);\n\n // modifiers have the ability to execute arbitrary code when Popper.js get inited\n // such code is executed in the same order of its modifier\n // they could add new properties to their options configuration\n // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n this.modifiers.forEach(modifierOptions => {\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n modifierOptions.onLoad(\n this.reference,\n this.popper,\n this.options,\n modifierOptions,\n this.state\n );\n }\n });\n\n // fire the first update to position the popper in the right place\n this.update();\n\n const eventsEnabled = this.options.eventsEnabled;\n if (eventsEnabled) {\n // setup event listeners, they will take care of update the position in specific situations\n this.enableEventListeners();\n }\n\n this.state.eventsEnabled = eventsEnabled;\n }\n\n // We can't use class properties because they don't get listed in the\n // class prototype and break stuff like Sinon stubs\n update() {\n return update.call(this);\n }\n destroy() {\n return destroy.call(this);\n }\n enableEventListeners() {\n return enableEventListeners.call(this);\n }\n disableEventListeners() {\n return disableEventListeners.call(this);\n }\n\n /**\n * Schedules an update. It will run on the next UI update available.\n * @method scheduleUpdate\n * @memberof Popper\n */\n scheduleUpdate = () => requestAnimationFrame(this.update);\n\n /**\n * Collection of utilities useful when writing custom modifiers.\n * Starting from version 1.7, this method is available only if you\n * include `popper-utils.js` before `popper.js`.\n *\n * **DEPRECATION**: This way to access PopperUtils is deprecated\n * and will be removed in v2! Use the PopperUtils module directly instead.\n * Due to the high instability of the methods contained in Utils, we can't\n * guarantee them to follow semver. Use them at your own risk!\n * @static\n * @private\n * @type {Object}\n * @deprecated since version 1.8\n * @member Utils\n * @memberof Popper\n */\n static Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\n\n static placements = placements;\n\n static Defaults = Defaults;\n}\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.<br />\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10.\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.2): util.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\n\n/**\n * Private TransitionEnd Helpers\n */\n\nconst TRANSITION_END = 'transitionend'\nconst MAX_UID = 1000000\nconst MILLISECONDS_MULTIPLIER = 1000\n\n// Shoutout AngusCroll (https://goo.gl/pxwQGp)\nfunction toType(obj) {\n if (obj === null || typeof obj === 'undefined') {\n return `${obj}`\n }\n\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\nfunction getSpecialTransitionEndEvent() {\n return {\n bindType: TRANSITION_END,\n delegateType: TRANSITION_END,\n handle(event) {\n if ($(event.target).is(this)) {\n return event.handleObj.handler.apply(this, arguments) // eslint-disable-line prefer-rest-params\n }\n\n return undefined\n }\n }\n}\n\nfunction transitionEndEmulator(duration) {\n let called = false\n\n $(this).one(Util.TRANSITION_END, () => {\n called = true\n })\n\n setTimeout(() => {\n if (!called) {\n Util.triggerTransitionEnd(this)\n }\n }, duration)\n\n return this\n}\n\nfunction setTransitionEndSupport() {\n $.fn.emulateTransitionEnd = transitionEndEmulator\n $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent()\n}\n\n/**\n * Public Util API\n */\n\nconst Util = {\n TRANSITION_END: 'bsTransitionEnd',\n\n getUID(prefix) {\n do {\n // eslint-disable-next-line no-bitwise\n prefix += ~~(Math.random() * MAX_UID) // \"~~\" acts like a faster Math.floor() here\n } while (document.getElementById(prefix))\n\n return prefix\n },\n\n getSelectorFromElement(element) {\n let selector = element.getAttribute('data-target')\n\n if (!selector || selector === '#') {\n const hrefAttr = element.getAttribute('href')\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : ''\n }\n\n try {\n return document.querySelector(selector) ? selector : null\n } catch (_) {\n return null\n }\n },\n\n getTransitionDurationFromElement(element) {\n if (!element) {\n return 0\n }\n\n // Get transition-duration of the element\n let transitionDuration = $(element).css('transition-duration')\n let transitionDelay = $(element).css('transition-delay')\n\n const floatTransitionDuration = parseFloat(transitionDuration)\n const floatTransitionDelay = parseFloat(transitionDelay)\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0]\n transitionDelay = transitionDelay.split(',')[0]\n\n return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n },\n\n reflow(element) {\n return element.offsetHeight\n },\n\n triggerTransitionEnd(element) {\n $(element).trigger(TRANSITION_END)\n },\n\n supportsTransitionEnd() {\n return Boolean(TRANSITION_END)\n },\n\n isElement(obj) {\n return (obj[0] || obj).nodeType\n },\n\n typeCheckConfig(componentName, config, configTypes) {\n for (const property in configTypes) {\n if (Object.prototype.hasOwnProperty.call(configTypes, property)) {\n const expectedTypes = configTypes[property]\n const value = config[property]\n const valueType = value && Util.isElement(value) ?\n 'element' : toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new Error(\n `${componentName.toUpperCase()}: ` +\n `Option \"${property}\" provided type \"${valueType}\" ` +\n `but expected type \"${expectedTypes}\".`)\n }\n }\n }\n },\n\n findShadowRoot(element) {\n if (!document.documentElement.attachShadow) {\n return null\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode()\n return root instanceof ShadowRoot ? root : null\n }\n\n if (element instanceof ShadowRoot) {\n return element\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null\n }\n\n return Util.findShadowRoot(element.parentNode)\n },\n\n jQueryDetection() {\n if (typeof $ === 'undefined') {\n throw new TypeError('Bootstrap\\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\\'s JavaScript.')\n }\n\n const version = $.fn.jquery.split(' ')[0].split('.')\n const minMajor = 1\n const ltMajor = 2\n const minMinor = 9\n const minPatch = 1\n const maxMajor = 4\n\n if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {\n throw new Error('Bootstrap\\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0')\n }\n }\n}\n\nUtil.jQueryDetection()\nsetTransitionEndSupport()\n\nexport default Util\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.2): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * Constants\n */\n\nconst NAME = 'alert'\nconst VERSION = '4.6.2'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst CLASS_NAME_ALERT = 'alert'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DISMISS = '[data-dismiss=\"alert\"]'\n\n/**\n * Class definition\n */\n\nclass Alert {\n constructor(element) {\n this._element = element\n }\n\n // Getters\n static get VERSION() {\n return VERSION\n }\n\n // Public\n close(element) {\n let rootElement = this._element\n if (element) {\n rootElement = this._getRootElement(element)\n }\n\n const customEvent = this._triggerCloseEvent(rootElement)\n\n if (customEvent.isDefaultPrevented()) {\n return\n }\n\n this._removeElement(rootElement)\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n this._element = null\n }\n\n // Private\n _getRootElement(element) {\n const selector = Util.getSelectorFromElement(element)\n let parent = false\n\n if (selector) {\n parent = document.querySelector(selector)\n }\n\n if (!parent) {\n parent = $(element).closest(`.${CLASS_NAME_ALERT}`)[0]\n }\n\n return parent\n }\n\n _triggerCloseEvent(element) {\n const closeEvent = $.Event(EVENT_CLOSE)\n\n $(element).trigger(closeEvent)\n return closeEvent\n }\n\n _removeElement(element) {\n $(element).removeClass(CLASS_NAME_SHOW)\n\n if (!$(element).hasClass(CLASS_NAME_FADE)) {\n this._destroyElement(element)\n return\n }\n\n const transitionDuration = Util.getTransitionDurationFromElement(element)\n\n $(element)\n .one(Util.TRANSITION_END, event => this._destroyElement(element, event))\n .emulateTransitionEnd(transitionDuration)\n }\n\n _destroyElement(element) {\n $(element)\n .detach()\n .trigger(EVENT_CLOSED)\n .remove()\n }\n\n // Static\n static _jQueryInterface(config) {\n return this.each(function () {\n const $element = $(this)\n let data = $element.data(DATA_KEY)\n\n if (!data) {\n data = new Alert(this)\n $element.data(DATA_KEY, data)\n }\n\n if (config === 'close') {\n data[config](this)\n }\n })\n }\n\n static _handleDismiss(alertInstance) {\n return function (event) {\n if (event) {\n event.preventDefault()\n }\n\n alertInstance.close(this)\n }\n }\n}\n\n/**\n * Data API implementation\n */\n\n$(document).on(\n EVENT_CLICK_DATA_API,\n SELECTOR_DISMISS,\n Alert._handleDismiss(new Alert())\n)\n\n/**\n * jQuery\n */\n\n$.fn[NAME] = Alert._jQueryInterface\n$.fn[NAME].Constructor = Alert\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Alert._jQueryInterface\n}\n\nexport default Alert\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.2): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\n\n/**\n * Constants\n */\n\nconst NAME = 'button'\nconst VERSION = '4.6.2'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_BUTTON = 'btn'\nconst CLASS_NAME_FOCUS = 'focus'\n\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_FOCUS_BLUR_DATA_API = `focus${EVENT_KEY}${DATA_API_KEY} ` +\n `blur${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DATA_TOGGLE_CARROT = '[data-toggle^=\"button\"]'\nconst SELECTOR_DATA_TOGGLES = '[data-toggle=\"buttons\"]'\nconst SELECTOR_DATA_TOGGLE = '[data-toggle=\"button\"]'\nconst SELECTOR_DATA_TOGGLES_BUTTONS = '[data-toggle=\"buttons\"] .btn'\nconst SELECTOR_INPUT = 'input:not([type=\"hidden\"])'\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_BUTTON = '.btn'\n\n/**\n * Class definition\n */\n\nclass Button {\n constructor(element) {\n this._element = element\n this.shouldAvoidTriggerChange = false\n }\n\n // Getters\n static get VERSION() {\n return VERSION\n }\n\n // Public\n toggle() {\n let triggerChangeEvent = true\n let addAriaPressed = true\n const rootElement = $(this._element).closest(SELECTOR_DATA_TOGGLES)[0]\n\n if (rootElement) {\n const input = this._element.querySelector(SELECTOR_INPUT)\n\n if (input) {\n if (input.type === 'radio') {\n if (input.checked && this._element.classList.contains(CLASS_NAME_ACTIVE)) {\n triggerChangeEvent = false\n } else {\n const activeElement = rootElement.querySelector(SELECTOR_ACTIVE)\n\n if (activeElement) {\n $(activeElement).removeClass(CLASS_NAME_ACTIVE)\n }\n }\n }\n\n if (triggerChangeEvent) {\n // if it's not a radio button or checkbox don't add a pointless/invalid checked property to the input\n if (input.type === 'checkbox' || input.type === 'radio') {\n input.checked = !this._element.classList.contains(CLASS_NAME_ACTIVE)\n }\n\n if (!this.shouldAvoidTriggerChange) {\n $(input).trigger('change')\n }\n }\n\n input.focus()\n addAriaPressed = false\n }\n }\n\n if (!(this._element.hasAttribute('disabled') || this._element.classList.contains('disabled'))) {\n if (addAriaPressed) {\n this._element.setAttribute('aria-pressed', !this._element.classList.contains(CLASS_NAME_ACTIVE))\n }\n\n if (triggerChangeEvent) {\n $(this._element).toggleClass(CLASS_NAME_ACTIVE)\n }\n }\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n this._element = null\n }\n\n // Static\n static _jQueryInterface(config, avoidTriggerChange) {\n return this.each(function () {\n const $element = $(this)\n let data = $element.data(DATA_KEY)\n\n if (!data) {\n data = new Button(this)\n $element.data(DATA_KEY, data)\n }\n\n data.shouldAvoidTriggerChange = avoidTriggerChange\n\n if (config === 'toggle') {\n data[config]()\n }\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\n$(document)\n .on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, event => {\n let button = event.target\n const initialButton = button\n\n if (!$(button).hasClass(CLASS_NAME_BUTTON)) {\n button = $(button).closest(SELECTOR_BUTTON)[0]\n }\n\n if (!button || button.hasAttribute('disabled') || button.classList.contains('disabled')) {\n event.preventDefault() // work around Firefox bug #1540995\n } else {\n const inputBtn = button.querySelector(SELECTOR_INPUT)\n\n if (inputBtn && (inputBtn.hasAttribute('disabled') || inputBtn.classList.contains('disabled'))) {\n event.preventDefault() // work around Firefox bug #1540995\n return\n }\n\n if (initialButton.tagName === 'INPUT' || button.tagName !== 'LABEL') {\n Button._jQueryInterface.call($(button), 'toggle', initialButton.tagName === 'INPUT')\n }\n }\n })\n .on(EVENT_FOCUS_BLUR_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, event => {\n const button = $(event.target).closest(SELECTOR_BUTTON)[0]\n $(button).toggleClass(CLASS_NAME_FOCUS, /^focus(in)?$/.test(event.type))\n })\n\n$(window).on(EVENT_LOAD_DATA_API, () => {\n // ensure correct active class is set to match the controls' actual values/states\n\n // find all checkboxes/readio buttons inside data-toggle groups\n let buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLES_BUTTONS))\n for (let i = 0, len = buttons.length; i < len; i++) {\n const button = buttons[i]\n const input = button.querySelector(SELECTOR_INPUT)\n if (input.checked || input.hasAttribute('checked')) {\n button.classList.add(CLASS_NAME_ACTIVE)\n } else {\n button.classList.remove(CLASS_NAME_ACTIVE)\n }\n }\n\n // find all button toggles\n buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE))\n for (let i = 0, len = buttons.length; i < len; i++) {\n const button = buttons[i]\n if (button.getAttribute('aria-pressed') === 'true') {\n button.classList.add(CLASS_NAME_ACTIVE)\n } else {\n button.classList.remove(CLASS_NAME_ACTIVE)\n }\n }\n})\n\n/**\n * jQuery\n */\n\n$.fn[NAME] = Button._jQueryInterface\n$.fn[NAME].Constructor = Button\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Button._jQueryInterface\n}\n\nexport default Button\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.2): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * Constants\n */\n\nconst NAME = 'carousel'\nconst VERSION = '4.6.2'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst ARROW_LEFT_KEYCODE = 37 // KeyboardEvent.which value for left arrow key\nconst ARROW_RIGHT_KEYCODE = 39 // KeyboardEvent.which value for right arrow key\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\nconst SWIPE_THRESHOLD = 40\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_SLIDE = 'slide'\nconst CLASS_NAME_RIGHT = 'carousel-item-right'\nconst CLASS_NAME_LEFT = 'carousel-item-left'\nconst CLASS_NAME_NEXT = 'carousel-item-next'\nconst CLASS_NAME_PREV = 'carousel-item-prev'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\n\nconst DIRECTION_NEXT = 'next'\nconst DIRECTION_PREV = 'prev'\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ACTIVE_ITEM = '.active.carousel-item'\nconst SELECTOR_ITEM = '.carousel-item'\nconst SELECTOR_ITEM_IMG = '.carousel-item img'\nconst SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_DATA_SLIDE = '[data-slide], [data-slide-to]'\nconst SELECTOR_DATA_RIDE = '[data-ride=\"carousel\"]'\n\nconst Default = {\n interval: 5000,\n keyboard: true,\n slide: false,\n pause: 'hover',\n wrap: true,\n touch: true\n}\n\nconst DefaultType = {\n interval: '(number|boolean)',\n keyboard: 'boolean',\n slide: '(boolean|string)',\n pause: '(string|boolean)',\n wrap: 'boolean',\n touch: 'boolean'\n}\n\nconst PointerType = {\n TOUCH: 'touch',\n PEN: 'pen'\n}\n\n/**\n * Class definition\n */\n\nclass Carousel {\n constructor(element, config) {\n this._items = null\n this._interval = null\n this._activeElement = null\n this._isPaused = false\n this._isSliding = false\n this.touchTimeout = null\n this.touchStartX = 0\n this.touchDeltaX = 0\n\n this._config = this._getConfig(config)\n this._element = element\n this._indicatorsElement = this._element.querySelector(SELECTOR_INDICATORS)\n this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent)\n\n this._addEventListeners()\n }\n\n // Getters\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n next() {\n if (!this._isSliding) {\n this._slide(DIRECTION_NEXT)\n }\n }\n\n nextWhenVisible() {\n const $element = $(this._element)\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden &&\n ($element.is(':visible') && $element.css('visibility') !== 'hidden')) {\n this.next()\n }\n }\n\n prev() {\n if (!this._isSliding) {\n this._slide(DIRECTION_PREV)\n }\n }\n\n pause(event) {\n if (!event) {\n this._isPaused = true\n }\n\n if (this._element.querySelector(SELECTOR_NEXT_PREV)) {\n Util.triggerTransitionEnd(this._element)\n this.cycle(true)\n }\n\n clearInterval(this._interval)\n this._interval = null\n }\n\n cycle(event) {\n if (!event) {\n this._isPaused = false\n }\n\n if (this._interval) {\n clearInterval(this._interval)\n this._interval = null\n }\n\n if (this._config.interval && !this._isPaused) {\n this._updateInterval()\n\n this._interval = setInterval(\n (document.visibilityState ? this.nextWhenVisible : this.next).bind(this),\n this._config.interval\n )\n }\n }\n\n to(index) {\n this._activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM)\n\n const activeIndex = this._getItemIndex(this._activeElement)\n\n if (index > this._items.length - 1 || index < 0) {\n return\n }\n\n if (this._isSliding) {\n $(this._element).one(EVENT_SLID, () => this.to(index))\n return\n }\n\n if (activeIndex === index) {\n this.pause()\n this.cycle()\n return\n }\n\n const direction = index > activeIndex ?\n DIRECTION_NEXT :\n DIRECTION_PREV\n\n this._slide(direction, this._items[index])\n }\n\n dispose() {\n $(this._element).off(EVENT_KEY)\n $.removeData(this._element, DATA_KEY)\n\n this._items = null\n this._config = null\n this._element = null\n this._interval = null\n this._isPaused = null\n this._isSliding = null\n this._activeElement = null\n this._indicatorsElement = null\n }\n\n // Private\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _handleSwipe() {\n const absDeltax = Math.abs(this.touchDeltaX)\n\n if (absDeltax <= SWIPE_THRESHOLD) {\n return\n }\n\n const direction = absDeltax / this.touchDeltaX\n\n this.touchDeltaX = 0\n\n // swipe left\n if (direction > 0) {\n this.prev()\n }\n\n // swipe right\n if (direction < 0) {\n this.next()\n }\n }\n\n _addEventListeners() {\n if (this._config.keyboard) {\n $(this._element).on(EVENT_KEYDOWN, event => this._keydown(event))\n }\n\n if (this._config.pause === 'hover') {\n $(this._element)\n .on(EVENT_MOUSEENTER, event => this.pause(event))\n .on(EVENT_MOUSELEAVE, event => this.cycle(event))\n }\n\n if (this._config.touch) {\n this._addTouchEventListeners()\n }\n }\n\n _addTouchEventListeners() {\n if (!this._touchSupported) {\n return\n }\n\n const start = event => {\n if (this._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n this.touchStartX = event.originalEvent.clientX\n } else if (!this._pointerEvent) {\n this.touchStartX = event.originalEvent.touches[0].clientX\n }\n }\n\n const move = event => {\n // ensure swiping with one touch and not pinching\n this.touchDeltaX = event.originalEvent.touches && event.originalEvent.touches.length > 1 ?\n 0 :\n event.originalEvent.touches[0].clientX - this.touchStartX\n }\n\n const end = event => {\n if (this._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n this.touchDeltaX = event.originalEvent.clientX - this.touchStartX\n }\n\n this._handleSwipe()\n if (this._config.pause === 'hover') {\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n\n this.pause()\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout)\n }\n\n this.touchTimeout = setTimeout(event => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n }\n }\n\n $(this._element.querySelectorAll(SELECTOR_ITEM_IMG))\n .on(EVENT_DRAG_START, e => e.preventDefault())\n\n if (this._pointerEvent) {\n $(this._element).on(EVENT_POINTERDOWN, event => start(event))\n $(this._element).on(EVENT_POINTERUP, event => end(event))\n\n this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n } else {\n $(this._element).on(EVENT_TOUCHSTART, event => start(event))\n $(this._element).on(EVENT_TOUCHMOVE, event => move(event))\n $(this._element).on(EVENT_TOUCHEND, event => end(event))\n }\n }\n\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return\n }\n\n switch (event.which) {\n case ARROW_LEFT_KEYCODE:\n event.preventDefault()\n this.prev()\n break\n case ARROW_RIGHT_KEYCODE:\n event.preventDefault()\n this.next()\n break\n default:\n }\n }\n\n _getItemIndex(element) {\n this._items = element && element.parentNode ?\n [].slice.call(element.parentNode.querySelectorAll(SELECTOR_ITEM)) :\n []\n return this._items.indexOf(element)\n }\n\n _getItemByDirection(direction, activeElement) {\n const isNextDirection = direction === DIRECTION_NEXT\n const isPrevDirection = direction === DIRECTION_PREV\n const activeIndex = this._getItemIndex(activeElement)\n const lastItemIndex = this._items.length - 1\n const isGoingToWrap = isPrevDirection && activeIndex === 0 ||\n isNextDirection && activeIndex === lastItemIndex\n\n if (isGoingToWrap && !this._config.wrap) {\n return activeElement\n }\n\n const delta = direction === DIRECTION_PREV ? -1 : 1\n const itemIndex = (activeIndex + delta) % this._items.length\n\n return itemIndex === -1 ?\n this._items[this._items.length - 1] : this._items[itemIndex]\n }\n\n _triggerSlideEvent(relatedTarget, eventDirectionName) {\n const targetIndex = this._getItemIndex(relatedTarget)\n const fromIndex = this._getItemIndex(this._element.querySelector(SELECTOR_ACTIVE_ITEM))\n const slideEvent = $.Event(EVENT_SLIDE, {\n relatedTarget,\n direction: eventDirectionName,\n from: fromIndex,\n to: targetIndex\n })\n\n $(this._element).trigger(slideEvent)\n\n return slideEvent\n }\n\n _setActiveIndicatorElement(element) {\n if (this._indicatorsElement) {\n const indicators = [].slice.call(this._indicatorsElement.querySelectorAll(SELECTOR_ACTIVE))\n $(indicators).removeClass(CLASS_NAME_ACTIVE)\n\n const nextIndicator = this._indicatorsElement.children[\n this._getItemIndex(element)\n ]\n\n if (nextIndicator) {\n $(nextIndicator).addClass(CLASS_NAME_ACTIVE)\n }\n }\n }\n\n _updateInterval() {\n const element = this._activeElement || this._element.querySelector(SELECTOR_ACTIVE_ITEM)\n\n if (!element) {\n return\n }\n\n const elementInterval = parseInt(element.getAttribute('data-interval'), 10)\n\n if (elementInterval) {\n this._config.defaultInterval = this._config.defaultInterval || this._config.interval\n this._config.interval = elementInterval\n } else {\n this._config.interval = this._config.defaultInterval || this._config.interval\n }\n }\n\n _slide(direction, element) {\n const activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM)\n const activeElementIndex = this._getItemIndex(activeElement)\n const nextElement = element || activeElement &&\n this._getItemByDirection(direction, activeElement)\n const nextElementIndex = this._getItemIndex(nextElement)\n const isCycling = Boolean(this._interval)\n\n let directionalClassName\n let orderClassName\n let eventDirectionName\n\n if (direction === DIRECTION_NEXT) {\n directionalClassName = CLASS_NAME_LEFT\n orderClassName = CLASS_NAME_NEXT\n eventDirectionName = DIRECTION_LEFT\n } else {\n directionalClassName = CLASS_NAME_RIGHT\n orderClassName = CLASS_NAME_PREV\n eventDirectionName = DIRECTION_RIGHT\n }\n\n if (nextElement && $(nextElement).hasClass(CLASS_NAME_ACTIVE)) {\n this._isSliding = false\n return\n }\n\n const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName)\n if (slideEvent.isDefaultPrevented()) {\n return\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n return\n }\n\n this._isSliding = true\n\n if (isCycling) {\n this.pause()\n }\n\n this._setActiveIndicatorElement(nextElement)\n this._activeElement = nextElement\n\n const slidEvent = $.Event(EVENT_SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n })\n\n if ($(this._element).hasClass(CLASS_NAME_SLIDE)) {\n $(nextElement).addClass(orderClassName)\n\n Util.reflow(nextElement)\n\n $(activeElement).addClass(directionalClassName)\n $(nextElement).addClass(directionalClassName)\n\n const transitionDuration = Util.getTransitionDurationFromElement(activeElement)\n\n $(activeElement)\n .one(Util.TRANSITION_END, () => {\n $(nextElement)\n .removeClass(`${directionalClassName} ${orderClassName}`)\n .addClass(CLASS_NAME_ACTIVE)\n\n $(activeElement).removeClass(`${CLASS_NAME_ACTIVE} ${orderClassName} ${directionalClassName}`)\n\n this._isSliding = false\n\n setTimeout(() => $(this._element).trigger(slidEvent), 0)\n })\n .emulateTransitionEnd(transitionDuration)\n } else {\n $(activeElement).removeClass(CLASS_NAME_ACTIVE)\n $(nextElement).addClass(CLASS_NAME_ACTIVE)\n\n this._isSliding = false\n $(this._element).trigger(slidEvent)\n }\n\n if (isCycling) {\n this.cycle()\n }\n }\n\n // Static\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n let _config = {\n ...Default,\n ...$(this).data()\n }\n\n if (typeof config === 'object') {\n _config = {\n ..._config,\n ...config\n }\n }\n\n const action = typeof config === 'string' ? config : _config.slide\n\n if (!data) {\n data = new Carousel(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'number') {\n data.to(config)\n } else if (typeof action === 'string') {\n if (typeof data[action] === 'undefined') {\n throw new TypeError(`No method named \"${action}\"`)\n }\n\n data[action]()\n } else if (_config.interval && _config.ride) {\n data.pause()\n data.cycle()\n }\n })\n }\n\n static _dataApiClickHandler(event) {\n const selector = Util.getSelectorFromElement(this)\n\n if (!selector) {\n return\n }\n\n const target = $(selector)[0]\n\n if (!target || !$(target).hasClass(CLASS_NAME_CAROUSEL)) {\n return\n }\n\n const config = {\n ...$(target).data(),\n ...$(this).data()\n }\n const slideIndex = this.getAttribute('data-slide-to')\n\n if (slideIndex) {\n config.interval = false\n }\n\n Carousel._jQueryInterface.call($(target), config)\n\n if (slideIndex) {\n $(target).data(DATA_KEY).to(slideIndex)\n }\n\n event.preventDefault()\n }\n}\n\n/**\n * Data API implementation\n */\n\n$(document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, Carousel._dataApiClickHandler)\n\n$(window).on(EVENT_LOAD_DATA_API, () => {\n const carousels = [].slice.call(document.querySelectorAll(SELECTOR_DATA_RIDE))\n for (let i = 0, len = carousels.length; i < len; i++) {\n const $carousel = $(carousels[i])\n Carousel._jQueryInterface.call($carousel, $carousel.data())\n }\n})\n\n/**\n * jQuery\n */\n\n$.fn[NAME] = Carousel._jQueryInterface\n$.fn[NAME].Constructor = Carousel\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Carousel._jQueryInterface\n}\n\nexport default Carousel\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.2): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * Constants\n */\n\nconst NAME = 'collapse'\nconst VERSION = '4.6.2'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\n\nconst DIMENSION_WIDTH = 'width'\nconst DIMENSION_HEIGHT = 'height'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_ACTIVES = '.show, .collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-toggle=\"collapse\"]'\n\nconst Default = {\n toggle: true,\n parent: ''\n}\n\nconst DefaultType = {\n toggle: 'boolean',\n parent: '(string|element)'\n}\n\n/**\n * Class definition\n */\n\nclass Collapse {\n constructor(element, config) {\n this._isTransitioning = false\n this._element = element\n this._config = this._getConfig(config)\n this._triggerArray = [].slice.call(document.querySelectorAll(\n `[data-toggle=\"collapse\"][href=\"#${element.id}\"],` +\n `[data-toggle=\"collapse\"][data-target=\"#${element.id}\"]`\n ))\n\n const toggleList = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE))\n for (let i = 0, len = toggleList.length; i < len; i++) {\n const elem = toggleList[i]\n const selector = Util.getSelectorFromElement(elem)\n const filterElement = [].slice.call(document.querySelectorAll(selector))\n .filter(foundElem => foundElem === element)\n\n if (selector !== null && filterElement.length > 0) {\n this._selector = selector\n this._triggerArray.push(elem)\n }\n }\n\n this._parent = this._config.parent ? this._getParent() : null\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._element, this._triggerArray)\n }\n\n if (this._config.toggle) {\n this.toggle()\n }\n }\n\n // Getters\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n toggle() {\n if ($(this._element).hasClass(CLASS_NAME_SHOW)) {\n this.hide()\n } else {\n this.show()\n }\n }\n\n show() {\n if (this._isTransitioning ||\n $(this._element).hasClass(CLASS_NAME_SHOW)) {\n return\n }\n\n let actives\n let activesData\n\n if (this._parent) {\n actives = [].slice.call(this._parent.querySelectorAll(SELECTOR_ACTIVES))\n .filter(elem => {\n if (typeof this._config.parent === 'string') {\n return elem.getAttribute('data-parent') === this._config.parent\n }\n\n return elem.classList.contains(CLASS_NAME_COLLAPSE)\n })\n\n if (actives.length === 0) {\n actives = null\n }\n }\n\n if (actives) {\n activesData = $(actives).not(this._selector).data(DATA_KEY)\n if (activesData && activesData._isTransitioning) {\n return\n }\n }\n\n const startEvent = $.Event(EVENT_SHOW)\n $(this._element).trigger(startEvent)\n if (startEvent.isDefaultPrevented()) {\n return\n }\n\n if (actives) {\n Collapse._jQueryInterface.call($(actives).not(this._selector), 'hide')\n if (!activesData) {\n $(actives).data(DATA_KEY, null)\n }\n }\n\n const dimension = this._getDimension()\n\n $(this._element)\n .removeClass(CLASS_NAME_COLLAPSE)\n .addClass(CLASS_NAME_COLLAPSING)\n\n this._element.style[dimension] = 0\n\n if (this._triggerArray.length) {\n $(this._triggerArray)\n .removeClass(CLASS_NAME_COLLAPSED)\n .attr('aria-expanded', true)\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n $(this._element)\n .removeClass(CLASS_NAME_COLLAPSING)\n .addClass(`${CLASS_NAME_COLLAPSE} ${CLASS_NAME_SHOW}`)\n\n this._element.style[dimension] = ''\n\n this.setTransitioning(false)\n\n $(this._element).trigger(EVENT_SHOWN)\n }\n\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n const scrollSize = `scroll${capitalizedDimension}`\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n\n this._element.style[dimension] = `${this._element[scrollSize]}px`\n }\n\n hide() {\n if (this._isTransitioning ||\n !$(this._element).hasClass(CLASS_NAME_SHOW)) {\n return\n }\n\n const startEvent = $.Event(EVENT_HIDE)\n $(this._element).trigger(startEvent)\n if (startEvent.isDefaultPrevented()) {\n return\n }\n\n const dimension = this._getDimension()\n\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n Util.reflow(this._element)\n\n $(this._element)\n .addClass(CLASS_NAME_COLLAPSING)\n .removeClass(`${CLASS_NAME_COLLAPSE} ${CLASS_NAME_SHOW}`)\n\n const triggerArrayLength = this._triggerArray.length\n if (triggerArrayLength > 0) {\n for (let i = 0; i < triggerArrayLength; i++) {\n const trigger = this._triggerArray[i]\n const selector = Util.getSelectorFromElement(trigger)\n\n if (selector !== null) {\n const $elem = $([].slice.call(document.querySelectorAll(selector)))\n if (!$elem.hasClass(CLASS_NAME_SHOW)) {\n $(trigger).addClass(CLASS_NAME_COLLAPSED)\n .attr('aria-expanded', false)\n }\n }\n }\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n this.setTransitioning(false)\n $(this._element)\n .removeClass(CLASS_NAME_COLLAPSING)\n .addClass(CLASS_NAME_COLLAPSE)\n .trigger(EVENT_HIDDEN)\n }\n\n this._element.style[dimension] = ''\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n }\n\n setTransitioning(isTransitioning) {\n this._isTransitioning = isTransitioning\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n\n this._config = null\n this._parent = null\n this._element = null\n this._triggerArray = null\n this._isTransitioning = null\n }\n\n // Private\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n config.toggle = Boolean(config.toggle) // Coerce string values\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _getDimension() {\n const hasWidth = $(this._element).hasClass(DIMENSION_WIDTH)\n return hasWidth ? DIMENSION_WIDTH : DIMENSION_HEIGHT\n }\n\n _getParent() {\n let parent\n\n if (Util.isElement(this._config.parent)) {\n parent = this._config.parent\n\n // It's a jQuery object\n if (typeof this._config.parent.jquery !== 'undefined') {\n parent = this._config.parent[0]\n }\n } else {\n parent = document.querySelector(this._config.parent)\n }\n\n const selector = `[data-toggle=\"collapse\"][data-parent=\"${this._config.parent}\"]`\n const children = [].slice.call(parent.querySelectorAll(selector))\n\n $(children).each((i, element) => {\n this._addAriaAndCollapsedClass(\n Collapse._getTargetFromElement(element),\n [element]\n )\n })\n\n return parent\n }\n\n _addAriaAndCollapsedClass(element, triggerArray) {\n const isOpen = $(element).hasClass(CLASS_NAME_SHOW)\n\n if (triggerArray.length) {\n $(triggerArray)\n .toggleClass(CLASS_NAME_COLLAPSED, !isOpen)\n .attr('aria-expanded', isOpen)\n }\n }\n\n // Static\n static _getTargetFromElement(element) {\n const selector = Util.getSelectorFromElement(element)\n return selector ? document.querySelector(selector) : null\n }\n\n static _jQueryInterface(config) {\n return this.each(function () {\n const $element = $(this)\n let data = $element.data(DATA_KEY)\n const _config = {\n ...Default,\n ...$element.data(),\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false\n }\n\n if (!data) {\n data = new Collapse(this, _config)\n $element.data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\n$(document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n if (event.currentTarget.tagName === 'A') {\n event.preventDefault()\n }\n\n const $trigger = $(this)\n const selector = Util.getSelectorFromElement(this)\n const selectors = [].slice.call(document.querySelectorAll(selector))\n\n $(selectors).each(function () {\n const $target = $(this)\n const data = $target.data(DATA_KEY)\n const config = data ? 'toggle' : $trigger.data()\n Collapse._jQueryInterface.call($target, config)\n })\n})\n\n/**\n * jQuery\n */\n\n$.fn[NAME] = Collapse._jQueryInterface\n$.fn[NAME].Constructor = Collapse\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Collapse._jQueryInterface\n}\n\nexport default Collapse\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.2): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Popper from 'popper.js'\nimport Util from './util'\n\n/**\n * Constants\n */\n\nconst NAME = 'dropdown'\nconst VERSION = '4.6.2'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst ESCAPE_KEYCODE = 27 // KeyboardEvent.which value for Escape (Esc) key\nconst SPACE_KEYCODE = 32 // KeyboardEvent.which value for space key\nconst TAB_KEYCODE = 9 // KeyboardEvent.which value for tab key\nconst ARROW_UP_KEYCODE = 38 // KeyboardEvent.which value for up arrow key\nconst ARROW_DOWN_KEYCODE = 40 // KeyboardEvent.which value for down arrow key\nconst RIGHT_MOUSE_BUTTON_WHICH = 3 // MouseEvent.which value for the right button (assuming a right-handed mouse)\nconst REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEYCODE}|${ARROW_DOWN_KEYCODE}|${ESCAPE_KEYCODE}`)\n\nconst CLASS_NAME_DISABLED = 'disabled'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_DROPUP = 'dropup'\nconst CLASS_NAME_DROPRIGHT = 'dropright'\nconst CLASS_NAME_DROPLEFT = 'dropleft'\nconst CLASS_NAME_MENURIGHT = 'dropdown-menu-right'\nconst CLASS_NAME_POSITION_STATIC = 'position-static'\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK = `click${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-toggle=\"dropdown\"]'\nconst SELECTOR_FORM_CHILD = '.dropdown form'\nconst SELECTOR_MENU = '.dropdown-menu'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n\nconst PLACEMENT_TOP = 'top-start'\nconst PLACEMENT_TOPEND = 'top-end'\nconst PLACEMENT_BOTTOM = 'bottom-start'\nconst PLACEMENT_BOTTOMEND = 'bottom-end'\nconst PLACEMENT_RIGHT = 'right-start'\nconst PLACEMENT_LEFT = 'left-start'\n\nconst Default = {\n offset: 0,\n flip: true,\n boundary: 'scrollParent',\n reference: 'toggle',\n display: 'dynamic',\n popperConfig: null\n}\n\nconst DefaultType = {\n offset: '(number|string|function)',\n flip: 'boolean',\n boundary: '(string|element)',\n reference: '(string|element)',\n display: 'string',\n popperConfig: '(null|object)'\n}\n\n/**\n * Class definition\n */\n\nclass Dropdown {\n constructor(element, config) {\n this._element = element\n this._popper = null\n this._config = this._getConfig(config)\n this._menu = this._getMenuElement()\n this._inNavbar = this._detectNavbar()\n\n this._addEventListeners()\n }\n\n // Getters\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Public\n toggle() {\n if (this._element.disabled || $(this._element).hasClass(CLASS_NAME_DISABLED)) {\n return\n }\n\n const isActive = $(this._menu).hasClass(CLASS_NAME_SHOW)\n\n Dropdown._clearMenus()\n\n if (isActive) {\n return\n }\n\n this.show(true)\n }\n\n show(usePopper = false) {\n if (this._element.disabled || $(this._element).hasClass(CLASS_NAME_DISABLED) || $(this._menu).hasClass(CLASS_NAME_SHOW)) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n const showEvent = $.Event(EVENT_SHOW, relatedTarget)\n const parent = Dropdown._getParentFromElement(this._element)\n\n $(parent).trigger(showEvent)\n\n if (showEvent.isDefaultPrevented()) {\n return\n }\n\n // Totally disable Popper for Dropdowns in Navbar\n if (!this._inNavbar && usePopper) {\n // Check for Popper dependency\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)')\n }\n\n let referenceElement = this._element\n\n if (this._config.reference === 'parent') {\n referenceElement = parent\n } else if (Util.isElement(this._config.reference)) {\n referenceElement = this._config.reference\n\n // Check if it's jQuery element\n if (typeof this._config.reference.jquery !== 'undefined') {\n referenceElement = this._config.reference[0]\n }\n }\n\n // If boundary is not `scrollParent`, then set position to `static`\n // to allow the menu to \"escape\" the scroll parent's boundaries\n // https://github.com/twbs/bootstrap/issues/24251\n if (this._config.boundary !== 'scrollParent') {\n $(parent).addClass(CLASS_NAME_POSITION_STATIC)\n }\n\n this._popper = new Popper(referenceElement, this._menu, this._getPopperConfig())\n }\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement &&\n $(parent).closest(SELECTOR_NAVBAR_NAV).length === 0) {\n $(document.body).children().on('mouseover', null, $.noop)\n }\n\n this._element.focus()\n this._element.setAttribute('aria-expanded', true)\n\n $(this._menu).toggleClass(CLASS_NAME_SHOW)\n $(parent)\n .toggleClass(CLASS_NAME_SHOW)\n .trigger($.Event(EVENT_SHOWN, relatedTarget))\n }\n\n hide() {\n if (this._element.disabled || $(this._element).hasClass(CLASS_NAME_DISABLED) || !$(this._menu).hasClass(CLASS_NAME_SHOW)) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n const hideEvent = $.Event(EVENT_HIDE, relatedTarget)\n const parent = Dropdown._getParentFromElement(this._element)\n\n $(parent).trigger(hideEvent)\n\n if (hideEvent.isDefaultPrevented()) {\n return\n }\n\n if (this._popper) {\n this._popper.destroy()\n }\n\n $(this._menu).toggleClass(CLASS_NAME_SHOW)\n $(parent)\n .toggleClass(CLASS_NAME_SHOW)\n .trigger($.Event(EVENT_HIDDEN, relatedTarget))\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n $(this._element).off(EVENT_KEY)\n this._element = null\n this._menu = null\n if (this._popper !== null) {\n this._popper.destroy()\n this._popper = null\n }\n }\n\n update() {\n this._inNavbar = this._detectNavbar()\n if (this._popper !== null) {\n this._popper.scheduleUpdate()\n }\n }\n\n // Private\n _addEventListeners() {\n $(this._element).on(EVENT_CLICK, event => {\n event.preventDefault()\n event.stopPropagation()\n this.toggle()\n })\n }\n\n _getConfig(config) {\n config = {\n ...this.constructor.Default,\n ...$(this._element).data(),\n ...config\n }\n\n Util.typeCheckConfig(\n NAME,\n config,\n this.constructor.DefaultType\n )\n\n return config\n }\n\n _getMenuElement() {\n if (!this._menu) {\n const parent = Dropdown._getParentFromElement(this._element)\n\n if (parent) {\n this._menu = parent.querySelector(SELECTOR_MENU)\n }\n }\n\n return this._menu\n }\n\n _getPlacement() {\n const $parentDropdown = $(this._element.parentNode)\n let placement = PLACEMENT_BOTTOM\n\n // Handle dropup\n if ($parentDropdown.hasClass(CLASS_NAME_DROPUP)) {\n placement = $(this._menu).hasClass(CLASS_NAME_MENURIGHT) ?\n PLACEMENT_TOPEND :\n PLACEMENT_TOP\n } else if ($parentDropdown.hasClass(CLASS_NAME_DROPRIGHT)) {\n placement = PLACEMENT_RIGHT\n } else if ($parentDropdown.hasClass(CLASS_NAME_DROPLEFT)) {\n placement = PLACEMENT_LEFT\n } else if ($(this._menu).hasClass(CLASS_NAME_MENURIGHT)) {\n placement = PLACEMENT_BOTTOMEND\n }\n\n return placement\n }\n\n _detectNavbar() {\n return $(this._element).closest('.navbar').length > 0\n }\n\n _getOffset() {\n const offset = {}\n\n if (typeof this._config.offset === 'function') {\n offset.fn = data => {\n data.offsets = {\n ...data.offsets,\n ...this._config.offset(data.offsets, this._element)\n }\n\n return data\n }\n } else {\n offset.offset = this._config.offset\n }\n\n return offset\n }\n\n _getPopperConfig() {\n const popperConfig = {\n placement: this._getPlacement(),\n modifiers: {\n offset: this._getOffset(),\n flip: {\n enabled: this._config.flip\n },\n preventOverflow: {\n boundariesElement: this._config.boundary\n }\n }\n }\n\n // Disable Popper if we have a static display\n if (this._config.display === 'static') {\n popperConfig.modifiers.applyStyle = {\n enabled: false\n }\n }\n\n return {\n ...popperConfig,\n ...this._config.popperConfig\n }\n }\n\n // Static\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = typeof config === 'object' ? config : null\n\n if (!data) {\n data = new Dropdown(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n\n static _clearMenus(event) {\n if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH ||\n event.type === 'keyup' && event.which !== TAB_KEYCODE)) {\n return\n }\n\n const toggles = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE))\n\n for (let i = 0, len = toggles.length; i < len; i++) {\n const parent = Dropdown._getParentFromElement(toggles[i])\n const context = $(toggles[i]).data(DATA_KEY)\n const relatedTarget = {\n relatedTarget: toggles[i]\n }\n\n if (event && event.type === 'click') {\n relatedTarget.clickEvent = event\n }\n\n if (!context) {\n continue\n }\n\n const dropdownMenu = context._menu\n if (!$(parent).hasClass(CLASS_NAME_SHOW)) {\n continue\n }\n\n if (event && (event.type === 'click' &&\n /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) &&\n $.contains(parent, event.target)) {\n continue\n }\n\n const hideEvent = $.Event(EVENT_HIDE, relatedTarget)\n $(parent).trigger(hideEvent)\n if (hideEvent.isDefaultPrevented()) {\n continue\n }\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n $(document.body).children().off('mouseover', null, $.noop)\n }\n\n toggles[i].setAttribute('aria-expanded', 'false')\n\n if (context._popper) {\n context._popper.destroy()\n }\n\n $(dropdownMenu).removeClass(CLASS_NAME_SHOW)\n $(parent)\n .removeClass(CLASS_NAME_SHOW)\n .trigger($.Event(EVENT_HIDDEN, relatedTarget))\n }\n }\n\n static _getParentFromElement(element) {\n let parent\n const selector = Util.getSelectorFromElement(element)\n\n if (selector) {\n parent = document.querySelector(selector)\n }\n\n return parent || element.parentNode\n }\n\n // eslint-disable-next-line complexity\n static _dataApiKeydownHandler(event) {\n // If not input/textarea:\n // - And not a key in REGEXP_KEYDOWN => not a dropdown command\n // If input/textarea:\n // - If space key => not a dropdown command\n // - If key is other than escape\n // - If key is not up or down => not a dropdown command\n // - If trigger inside the menu => not a dropdown command\n if (/input|textarea/i.test(event.target.tagName) ?\n event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE &&\n (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE ||\n $(event.target).closest(SELECTOR_MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {\n return\n }\n\n if (this.disabled || $(this).hasClass(CLASS_NAME_DISABLED)) {\n return\n }\n\n const parent = Dropdown._getParentFromElement(this)\n const isActive = $(parent).hasClass(CLASS_NAME_SHOW)\n\n if (!isActive && event.which === ESCAPE_KEYCODE) {\n return\n }\n\n event.preventDefault()\n event.stopPropagation()\n\n if (!isActive || (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {\n if (event.which === ESCAPE_KEYCODE) {\n $(parent.querySelector(SELECTOR_DATA_TOGGLE)).trigger('focus')\n }\n\n $(this).trigger('click')\n return\n }\n\n const items = [].slice.call(parent.querySelectorAll(SELECTOR_VISIBLE_ITEMS))\n .filter(item => $(item).is(':visible'))\n\n if (items.length === 0) {\n return\n }\n\n let index = items.indexOf(event.target)\n\n if (event.which === ARROW_UP_KEYCODE && index > 0) { // Up\n index--\n }\n\n if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) { // Down\n index++\n }\n\n if (index < 0) {\n index = 0\n }\n\n items[index].focus()\n }\n}\n\n/**\n * Data API implementation\n */\n\n$(document)\n .on(EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown._dataApiKeydownHandler)\n .on(EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown._dataApiKeydownHandler)\n .on(`${EVENT_CLICK_DATA_API} ${EVENT_KEYUP_DATA_API}`, Dropdown._clearMenus)\n .on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n event.preventDefault()\n event.stopPropagation()\n Dropdown._jQueryInterface.call($(this), 'toggle')\n })\n .on(EVENT_CLICK_DATA_API, SELECTOR_FORM_CHILD, e => {\n e.stopPropagation()\n })\n\n/**\n * jQuery\n */\n\n$.fn[NAME] = Dropdown._jQueryInterface\n$.fn[NAME].Constructor = Dropdown\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Dropdown._jQueryInterface\n}\n\nexport default Dropdown\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.2): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * Constants\n */\n\nconst NAME = 'modal'\nconst VERSION = '4.6.2'\nconst DATA_KEY = 'bs.modal'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst ESCAPE_KEYCODE = 27 // KeyboardEvent.which value for Escape (Esc) key\n\nconst CLASS_NAME_SCROLLABLE = 'modal-dialog-scrollable'\nconst CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure'\nconst CLASS_NAME_BACKDROP = 'modal-backdrop'\nconst CLASS_NAME_OPEN = 'modal-open'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_STATIC = 'modal-static'\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEUP_DISMISS = `mouseup.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DIALOG = '.modal-dialog'\nconst SELECTOR_MODAL_BODY = '.modal-body'\nconst SELECTOR_DATA_TOGGLE = '[data-toggle=\"modal\"]'\nconst SELECTOR_DATA_DISMISS = '[data-dismiss=\"modal\"]'\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\n\nconst Default = {\n backdrop: true,\n keyboard: true,\n focus: true,\n show: true\n}\n\nconst DefaultType = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n focus: 'boolean',\n show: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Modal {\n constructor(element, config) {\n this._config = this._getConfig(config)\n this._element = element\n this._dialog = element.querySelector(SELECTOR_DIALOG)\n this._backdrop = null\n this._isShown = false\n this._isBodyOverflowing = false\n this._ignoreBackdropClick = false\n this._isTransitioning = false\n this._scrollbarWidth = 0\n }\n\n // Getters\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget) {\n if (this._isShown || this._isTransitioning) {\n return\n }\n\n const showEvent = $.Event(EVENT_SHOW, {\n relatedTarget\n })\n\n $(this._element).trigger(showEvent)\n\n if (showEvent.isDefaultPrevented()) {\n return\n }\n\n this._isShown = true\n\n if ($(this._element).hasClass(CLASS_NAME_FADE)) {\n this._isTransitioning = true\n }\n\n this._checkScrollbar()\n this._setScrollbar()\n\n this._adjustDialog()\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n $(this._element).on(\n EVENT_CLICK_DISMISS,\n SELECTOR_DATA_DISMISS,\n event => this.hide(event)\n )\n\n $(this._dialog).on(EVENT_MOUSEDOWN_DISMISS, () => {\n $(this._element).one(EVENT_MOUSEUP_DISMISS, event => {\n if ($(event.target).is(this._element)) {\n this._ignoreBackdropClick = true\n }\n })\n })\n\n this._showBackdrop(() => this._showElement(relatedTarget))\n }\n\n hide(event) {\n if (event) {\n event.preventDefault()\n }\n\n if (!this._isShown || this._isTransitioning) {\n return\n }\n\n const hideEvent = $.Event(EVENT_HIDE)\n\n $(this._element).trigger(hideEvent)\n\n if (!this._isShown || hideEvent.isDefaultPrevented()) {\n return\n }\n\n this._isShown = false\n const transition = $(this._element).hasClass(CLASS_NAME_FADE)\n\n if (transition) {\n this._isTransitioning = true\n }\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n $(document).off(EVENT_FOCUSIN)\n\n $(this._element).removeClass(CLASS_NAME_SHOW)\n\n $(this._element).off(EVENT_CLICK_DISMISS)\n $(this._dialog).off(EVENT_MOUSEDOWN_DISMISS)\n\n if (transition) {\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element)\n .one(Util.TRANSITION_END, event => this._hideModal(event))\n .emulateTransitionEnd(transitionDuration)\n } else {\n this._hideModal()\n }\n }\n\n dispose() {\n [window, this._element, this._dialog]\n .forEach(htmlElement => $(htmlElement).off(EVENT_KEY))\n\n /**\n * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`\n * Do not move `document` in `htmlElements` array\n * It will remove `EVENT_CLICK_DATA_API` event that should remain\n */\n $(document).off(EVENT_FOCUSIN)\n\n $.removeData(this._element, DATA_KEY)\n\n this._config = null\n this._element = null\n this._dialog = null\n this._backdrop = null\n this._isShown = null\n this._isBodyOverflowing = null\n this._ignoreBackdropClick = null\n this._isTransitioning = null\n this._scrollbarWidth = null\n }\n\n handleUpdate() {\n this._adjustDialog()\n }\n\n // Private\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _triggerBackdropTransition() {\n const hideEventPrevented = $.Event(EVENT_HIDE_PREVENTED)\n\n $(this._element).trigger(hideEventPrevented)\n if (hideEventPrevented.isDefaultPrevented()) {\n return\n }\n\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n\n if (!isModalOverflowing) {\n this._element.style.overflowY = 'hidden'\n }\n\n this._element.classList.add(CLASS_NAME_STATIC)\n\n const modalTransitionDuration = Util.getTransitionDurationFromElement(this._dialog)\n $(this._element).off(Util.TRANSITION_END)\n\n $(this._element).one(Util.TRANSITION_END, () => {\n this._element.classList.remove(CLASS_NAME_STATIC)\n if (!isModalOverflowing) {\n $(this._element).one(Util.TRANSITION_END, () => {\n this._element.style.overflowY = ''\n })\n .emulateTransitionEnd(this._element, modalTransitionDuration)\n }\n })\n .emulateTransitionEnd(modalTransitionDuration)\n this._element.focus()\n }\n\n _showElement(relatedTarget) {\n const transition = $(this._element).hasClass(CLASS_NAME_FADE)\n const modalBody = this._dialog ? this._dialog.querySelector(SELECTOR_MODAL_BODY) : null\n\n if (!this._element.parentNode ||\n this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n // Don't move modal's DOM position\n document.body.appendChild(this._element)\n }\n\n this._element.style.display = 'block'\n this._element.removeAttribute('aria-hidden')\n this._element.setAttribute('aria-modal', true)\n this._element.setAttribute('role', 'dialog')\n\n if ($(this._dialog).hasClass(CLASS_NAME_SCROLLABLE) && modalBody) {\n modalBody.scrollTop = 0\n } else {\n this._element.scrollTop = 0\n }\n\n if (transition) {\n Util.reflow(this._element)\n }\n\n $(this._element).addClass(CLASS_NAME_SHOW)\n\n if (this._config.focus) {\n this._enforceFocus()\n }\n\n const shownEvent = $.Event(EVENT_SHOWN, {\n relatedTarget\n })\n\n const transitionComplete = () => {\n if (this._config.focus) {\n this._element.focus()\n }\n\n this._isTransitioning = false\n $(this._element).trigger(shownEvent)\n }\n\n if (transition) {\n const transitionDuration = Util.getTransitionDurationFromElement(this._dialog)\n\n $(this._dialog)\n .one(Util.TRANSITION_END, transitionComplete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n transitionComplete()\n }\n }\n\n _enforceFocus() {\n $(document)\n .off(EVENT_FOCUSIN) // Guard against infinite focus loop\n .on(EVENT_FOCUSIN, event => {\n if (document !== event.target &&\n this._element !== event.target &&\n $(this._element).has(event.target).length === 0) {\n this._element.focus()\n }\n })\n }\n\n _setEscapeEvent() {\n if (this._isShown) {\n $(this._element).on(EVENT_KEYDOWN_DISMISS, event => {\n if (this._config.keyboard && event.which === ESCAPE_KEYCODE) {\n event.preventDefault()\n this.hide()\n } else if (!this._config.keyboard && event.which === ESCAPE_KEYCODE) {\n this._triggerBackdropTransition()\n }\n })\n } else if (!this._isShown) {\n $(this._element).off(EVENT_KEYDOWN_DISMISS)\n }\n }\n\n _setResizeEvent() {\n if (this._isShown) {\n $(window).on(EVENT_RESIZE, event => this.handleUpdate(event))\n } else {\n $(window).off(EVENT_RESIZE)\n }\n }\n\n _hideModal() {\n this._element.style.display = 'none'\n this._element.setAttribute('aria-hidden', true)\n this._element.removeAttribute('aria-modal')\n this._element.removeAttribute('role')\n this._isTransitioning = false\n this._showBackdrop(() => {\n $(document.body).removeClass(CLASS_NAME_OPEN)\n this._resetAdjustments()\n this._resetScrollbar()\n $(this._element).trigger(EVENT_HIDDEN)\n })\n }\n\n _removeBackdrop() {\n if (this._backdrop) {\n $(this._backdrop).remove()\n this._backdrop = null\n }\n }\n\n _showBackdrop(callback) {\n const animate = $(this._element).hasClass(CLASS_NAME_FADE) ?\n CLASS_NAME_FADE : ''\n\n if (this._isShown && this._config.backdrop) {\n this._backdrop = document.createElement('div')\n this._backdrop.className = CLASS_NAME_BACKDROP\n\n if (animate) {\n this._backdrop.classList.add(animate)\n }\n\n $(this._backdrop).appendTo(document.body)\n\n $(this._element).on(EVENT_CLICK_DISMISS, event => {\n if (this._ignoreBackdropClick) {\n this._ignoreBackdropClick = false\n return\n }\n\n if (event.target !== event.currentTarget) {\n return\n }\n\n if (this._config.backdrop === 'static') {\n this._triggerBackdropTransition()\n } else {\n this.hide()\n }\n })\n\n if (animate) {\n Util.reflow(this._backdrop)\n }\n\n $(this._backdrop).addClass(CLASS_NAME_SHOW)\n\n if (!callback) {\n return\n }\n\n if (!animate) {\n callback()\n return\n }\n\n const backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop)\n\n $(this._backdrop)\n .one(Util.TRANSITION_END, callback)\n .emulateTransitionEnd(backdropTransitionDuration)\n } else if (!this._isShown && this._backdrop) {\n $(this._backdrop).removeClass(CLASS_NAME_SHOW)\n\n const callbackRemove = () => {\n this._removeBackdrop()\n if (callback) {\n callback()\n }\n }\n\n if ($(this._element).hasClass(CLASS_NAME_FADE)) {\n const backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop)\n\n $(this._backdrop)\n .one(Util.TRANSITION_END, callbackRemove)\n .emulateTransitionEnd(backdropTransitionDuration)\n } else {\n callbackRemove()\n }\n } else if (callback) {\n callback()\n }\n }\n\n // ----------------------------------------------------------------------\n // the following methods are used to handle overflowing modals\n // todo (fat): these should probably be refactored out of modal.js\n // ----------------------------------------------------------------------\n\n _adjustDialog() {\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n\n if (!this._isBodyOverflowing && isModalOverflowing) {\n this._element.style.paddingLeft = `${this._scrollbarWidth}px`\n }\n\n if (this._isBodyOverflowing && !isModalOverflowing) {\n this._element.style.paddingRight = `${this._scrollbarWidth}px`\n }\n }\n\n _resetAdjustments() {\n this._element.style.paddingLeft = ''\n this._element.style.paddingRight = ''\n }\n\n _checkScrollbar() {\n const rect = document.body.getBoundingClientRect()\n this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth\n this._scrollbarWidth = this._getScrollbarWidth()\n }\n\n _setScrollbar() {\n if (this._isBodyOverflowing) {\n // Note: DOMNode.style.paddingRight returns the actual value or '' if not set\n // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set\n const fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT))\n const stickyContent = [].slice.call(document.querySelectorAll(SELECTOR_STICKY_CONTENT))\n\n // Adjust fixed content padding\n $(fixedContent).each((index, element) => {\n const actualPadding = element.style.paddingRight\n const calculatedPadding = $(element).css('padding-right')\n $(element)\n .data('padding-right', actualPadding)\n .css('padding-right', `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`)\n })\n\n // Adjust sticky content margin\n $(stickyContent).each((index, element) => {\n const actualMargin = element.style.marginRight\n const calculatedMargin = $(element).css('margin-right')\n $(element)\n .data('margin-right', actualMargin)\n .css('margin-right', `${parseFloat(calculatedMargin) - this._scrollbarWidth}px`)\n })\n\n // Adjust body padding\n const actualPadding = document.body.style.paddingRight\n const calculatedPadding = $(document.body).css('padding-right')\n $(document.body)\n .data('padding-right', actualPadding)\n .css('padding-right', `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`)\n }\n\n $(document.body).addClass(CLASS_NAME_OPEN)\n }\n\n _resetScrollbar() {\n // Restore fixed content padding\n const fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT))\n $(fixedContent).each((index, element) => {\n const padding = $(element).data('padding-right')\n $(element).removeData('padding-right')\n element.style.paddingRight = padding ? padding : ''\n })\n\n // Restore sticky content\n const elements = [].slice.call(document.querySelectorAll(`${SELECTOR_STICKY_CONTENT}`))\n $(elements).each((index, element) => {\n const margin = $(element).data('margin-right')\n if (typeof margin !== 'undefined') {\n $(element).css('margin-right', margin).removeData('margin-right')\n }\n })\n\n // Restore body padding\n const padding = $(document.body).data('padding-right')\n $(document.body).removeData('padding-right')\n document.body.style.paddingRight = padding ? padding : ''\n }\n\n _getScrollbarWidth() { // thx d.walsh\n const scrollDiv = document.createElement('div')\n scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER\n document.body.appendChild(scrollDiv)\n const scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth\n document.body.removeChild(scrollDiv)\n return scrollbarWidth\n }\n\n // Static\n static _jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = {\n ...Default,\n ...$(this).data(),\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (!data) {\n data = new Modal(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](relatedTarget)\n } else if (_config.show) {\n data.show(relatedTarget)\n }\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\n$(document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n let target\n const selector = Util.getSelectorFromElement(this)\n\n if (selector) {\n target = document.querySelector(selector)\n }\n\n const config = $(target).data(DATA_KEY) ?\n 'toggle' : {\n ...$(target).data(),\n ...$(this).data()\n }\n\n if (this.tagName === 'A' || this.tagName === 'AREA') {\n event.preventDefault()\n }\n\n const $target = $(target).one(EVENT_SHOW, showEvent => {\n if (showEvent.isDefaultPrevented()) {\n // Only register focus restorer if modal will actually get shown\n return\n }\n\n $target.one(EVENT_HIDDEN, () => {\n if ($(this).is(':visible')) {\n this.focus()\n }\n })\n })\n\n Modal._jQueryInterface.call($(target), config, this)\n})\n\n/**\n * jQuery\n */\n\n$.fn[NAME] = Modal._jQueryInterface\n$.fn[NAME].Constructor = Modal\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Modal._jQueryInterface\n}\n\nexport default Modal\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.2): tools/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst uriAttrs = [\n 'background',\n 'cite',\n 'href',\n 'itemtype',\n 'longdesc',\n 'poster',\n 'src',\n 'xlink:href'\n]\n\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\nexport const DefaultWhitelist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n}\n\n/**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i\n\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i\n\nfunction allowedAttribute(attr, allowedAttributeList) {\n const attrName = attr.nodeName.toLowerCase()\n\n if (allowedAttributeList.indexOf(attrName) !== -1) {\n if (uriAttrs.indexOf(attrName) !== -1) {\n return Boolean(SAFE_URL_PATTERN.test(attr.nodeValue) || DATA_URL_PATTERN.test(attr.nodeValue))\n }\n\n return true\n }\n\n const regExp = allowedAttributeList.filter(attrRegex => attrRegex instanceof RegExp)\n\n // Check if a regular expression validates the attribute.\n for (let i = 0, len = regExp.length; i < len; i++) {\n if (regExp[i].test(attrName)) {\n return true\n }\n }\n\n return false\n}\n\nexport function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {\n if (unsafeHtml.length === 0) {\n return unsafeHtml\n }\n\n if (sanitizeFn && typeof sanitizeFn === 'function') {\n return sanitizeFn(unsafeHtml)\n }\n\n const domParser = new window.DOMParser()\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n const whitelistKeys = Object.keys(whiteList)\n const elements = [].slice.call(createdDocument.body.querySelectorAll('*'))\n\n for (let i = 0, len = elements.length; i < len; i++) {\n const el = elements[i]\n const elName = el.nodeName.toLowerCase()\n\n if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) {\n el.parentNode.removeChild(el)\n\n continue\n }\n\n const attributeList = [].slice.call(el.attributes)\n // eslint-disable-next-line unicorn/prefer-spread\n const whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || [])\n\n attributeList.forEach(attr => {\n if (!allowedAttribute(attr, whitelistedAttributes)) {\n el.removeAttribute(attr.nodeName)\n }\n })\n }\n\n return createdDocument.body.innerHTML\n}\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.2): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { DefaultWhitelist, sanitizeHtml } from './tools/sanitizer'\nimport $ from 'jquery'\nimport Popper from 'popper.js'\nimport Util from './util'\n\n/**\n * Constants\n */\n\nconst NAME = 'tooltip'\nconst VERSION = '4.6.2'\nconst DATA_KEY = 'bs.tooltip'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst CLASS_PREFIX = 'bs-tooltip'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\nconst DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn']\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst HOVER_STATE_SHOW = 'show'\nconst HOVER_STATE_OUT = 'out'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\nconst SELECTOR_ARROW = '.arrow'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\nconst AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: 'right',\n BOTTOM: 'bottom',\n LEFT: 'left'\n}\n\nconst Default = {\n animation: true,\n template: '<div class=\"tooltip\" role=\"tooltip\">' +\n '<div class=\"arrow\"></div>' +\n '<div class=\"tooltip-inner\"></div></div>',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n selector: false,\n placement: 'top',\n offset: 0,\n container: false,\n fallbackPlacement: 'flip',\n boundary: 'scrollParent',\n customClass: '',\n sanitize: true,\n sanitizeFn: null,\n whiteList: DefaultWhitelist,\n popperConfig: null\n}\n\nconst DefaultType = {\n animation: 'boolean',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string',\n delay: '(number|object)',\n html: 'boolean',\n selector: '(string|boolean)',\n placement: '(string|function)',\n offset: '(number|string|function)',\n container: '(string|element|boolean)',\n fallbackPlacement: '(string|array)',\n boundary: '(string|element)',\n customClass: '(string|function)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n whiteList: 'object',\n popperConfig: '(null|object)'\n}\n\nconst Event = {\n HIDE: `hide${EVENT_KEY}`,\n HIDDEN: `hidden${EVENT_KEY}`,\n SHOW: `show${EVENT_KEY}`,\n SHOWN: `shown${EVENT_KEY}`,\n INSERTED: `inserted${EVENT_KEY}`,\n CLICK: `click${EVENT_KEY}`,\n FOCUSIN: `focusin${EVENT_KEY}`,\n FOCUSOUT: `focusout${EVENT_KEY}`,\n MOUSEENTER: `mouseenter${EVENT_KEY}`,\n MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\n/**\n * Class definition\n */\n\nclass Tooltip {\n constructor(element, config) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)')\n }\n\n // Private\n this._isEnabled = true\n this._timeout = 0\n this._hoverState = ''\n this._activeTrigger = {}\n this._popper = null\n\n // Protected\n this.element = element\n this.config = this._getConfig(config)\n this.tip = null\n\n this._setListeners()\n }\n\n // Getters\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n static get Event() {\n return Event\n }\n\n static get EVENT_KEY() {\n return EVENT_KEY\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Public\n enable() {\n this._isEnabled = true\n }\n\n disable() {\n this._isEnabled = false\n }\n\n toggleEnabled() {\n this._isEnabled = !this._isEnabled\n }\n\n toggle(event) {\n if (!this._isEnabled) {\n return\n }\n\n if (event) {\n const dataKey = this.constructor.DATA_KEY\n let context = $(event.currentTarget).data(dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n )\n $(event.currentTarget).data(dataKey, context)\n }\n\n context._activeTrigger.click = !context._activeTrigger.click\n\n if (context._isWithActiveTrigger()) {\n context._enter(null, context)\n } else {\n context._leave(null, context)\n }\n } else {\n if ($(this.getTipElement()).hasClass(CLASS_NAME_SHOW)) {\n this._leave(null, this)\n return\n }\n\n this._enter(null, this)\n }\n }\n\n dispose() {\n clearTimeout(this._timeout)\n\n $.removeData(this.element, this.constructor.DATA_KEY)\n\n $(this.element).off(this.constructor.EVENT_KEY)\n $(this.element).closest('.modal').off('hide.bs.modal', this._hideModalHandler)\n\n if (this.tip) {\n $(this.tip).remove()\n }\n\n this._isEnabled = null\n this._timeout = null\n this._hoverState = null\n this._activeTrigger = null\n if (this._popper) {\n this._popper.destroy()\n }\n\n this._popper = null\n this.element = null\n this.config = null\n this.tip = null\n }\n\n show() {\n if ($(this.element).css('display') === 'none') {\n throw new Error('Please use show on visible elements')\n }\n\n const showEvent = $.Event(this.constructor.Event.SHOW)\n if (this.isWithContent() && this._isEnabled) {\n $(this.element).trigger(showEvent)\n\n const shadowRoot = Util.findShadowRoot(this.element)\n const isInTheDom = $.contains(\n shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement,\n this.element\n )\n\n if (showEvent.isDefaultPrevented() || !isInTheDom) {\n return\n }\n\n const tip = this.getTipElement()\n const tipId = Util.getUID(this.constructor.NAME)\n\n tip.setAttribute('id', tipId)\n this.element.setAttribute('aria-describedby', tipId)\n\n this.setContent()\n\n if (this.config.animation) {\n $(tip).addClass(CLASS_NAME_FADE)\n }\n\n const placement = typeof this.config.placement === 'function' ?\n this.config.placement.call(this, tip, this.element) :\n this.config.placement\n\n const attachment = this._getAttachment(placement)\n this.addAttachmentClass(attachment)\n\n const container = this._getContainer()\n $(tip).data(this.constructor.DATA_KEY, this)\n\n if (!$.contains(this.element.ownerDocument.documentElement, this.tip)) {\n $(tip).appendTo(container)\n }\n\n $(this.element).trigger(this.constructor.Event.INSERTED)\n\n this._popper = new Popper(this.element, tip, this._getPopperConfig(attachment))\n\n $(tip).addClass(CLASS_NAME_SHOW)\n $(tip).addClass(this.config.customClass)\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement) {\n $(document.body).children().on('mouseover', null, $.noop)\n }\n\n const complete = () => {\n if (this.config.animation) {\n this._fixTransition()\n }\n\n const prevHoverState = this._hoverState\n this._hoverState = null\n\n $(this.element).trigger(this.constructor.Event.SHOWN)\n\n if (prevHoverState === HOVER_STATE_OUT) {\n this._leave(null, this)\n }\n }\n\n if ($(this.tip).hasClass(CLASS_NAME_FADE)) {\n const transitionDuration = Util.getTransitionDurationFromElement(this.tip)\n\n $(this.tip)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n complete()\n }\n }\n }\n\n hide(callback) {\n const tip = this.getTipElement()\n const hideEvent = $.Event(this.constructor.Event.HIDE)\n const complete = () => {\n if (this._hoverState !== HOVER_STATE_SHOW && tip.parentNode) {\n tip.parentNode.removeChild(tip)\n }\n\n this._cleanTipClass()\n this.element.removeAttribute('aria-describedby')\n $(this.element).trigger(this.constructor.Event.HIDDEN)\n if (this._popper !== null) {\n this._popper.destroy()\n }\n\n if (callback) {\n callback()\n }\n }\n\n $(this.element).trigger(hideEvent)\n\n if (hideEvent.isDefaultPrevented()) {\n return\n }\n\n $(tip).removeClass(CLASS_NAME_SHOW)\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n $(document.body).children().off('mouseover', null, $.noop)\n }\n\n this._activeTrigger[TRIGGER_CLICK] = false\n this._activeTrigger[TRIGGER_FOCUS] = false\n this._activeTrigger[TRIGGER_HOVER] = false\n\n if ($(this.tip).hasClass(CLASS_NAME_FADE)) {\n const transitionDuration = Util.getTransitionDurationFromElement(tip)\n\n $(tip)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n complete()\n }\n\n this._hoverState = ''\n }\n\n update() {\n if (this._popper !== null) {\n this._popper.scheduleUpdate()\n }\n }\n\n // Protected\n isWithContent() {\n return Boolean(this.getTitle())\n }\n\n addAttachmentClass(attachment) {\n $(this.getTipElement()).addClass(`${CLASS_PREFIX}-${attachment}`)\n }\n\n getTipElement() {\n this.tip = this.tip || $(this.config.template)[0]\n return this.tip\n }\n\n setContent() {\n const tip = this.getTipElement()\n this.setElementContent($(tip.querySelectorAll(SELECTOR_TOOLTIP_INNER)), this.getTitle())\n $(tip).removeClass(`${CLASS_NAME_FADE} ${CLASS_NAME_SHOW}`)\n }\n\n setElementContent($element, content) {\n if (typeof content === 'object' && (content.nodeType || content.jquery)) {\n // Content is a DOM node or a jQuery\n if (this.config.html) {\n if (!$(content).parent().is($element)) {\n $element.empty().append(content)\n }\n } else {\n $element.text($(content).text())\n }\n\n return\n }\n\n if (this.config.html) {\n if (this.config.sanitize) {\n content = sanitizeHtml(content, this.config.whiteList, this.config.sanitizeFn)\n }\n\n $element.html(content)\n } else {\n $element.text(content)\n }\n }\n\n getTitle() {\n let title = this.element.getAttribute('data-original-title')\n\n if (!title) {\n title = typeof this.config.title === 'function' ?\n this.config.title.call(this.element) :\n this.config.title\n }\n\n return title\n }\n\n // Private\n _getPopperConfig(attachment) {\n const defaultBsConfig = {\n placement: attachment,\n modifiers: {\n offset: this._getOffset(),\n flip: {\n behavior: this.config.fallbackPlacement\n },\n arrow: {\n element: SELECTOR_ARROW\n },\n preventOverflow: {\n boundariesElement: this.config.boundary\n }\n },\n onCreate: data => {\n if (data.originalPlacement !== data.placement) {\n this._handlePopperPlacementChange(data)\n }\n },\n onUpdate: data => this._handlePopperPlacementChange(data)\n }\n\n return {\n ...defaultBsConfig,\n ...this.config.popperConfig\n }\n }\n\n _getOffset() {\n const offset = {}\n\n if (typeof this.config.offset === 'function') {\n offset.fn = data => {\n data.offsets = {\n ...data.offsets,\n ...this.config.offset(data.offsets, this.element)\n }\n\n return data\n }\n } else {\n offset.offset = this.config.offset\n }\n\n return offset\n }\n\n _getContainer() {\n if (this.config.container === false) {\n return document.body\n }\n\n if (Util.isElement(this.config.container)) {\n return $(this.config.container)\n }\n\n return $(document).find(this.config.container)\n }\n\n _getAttachment(placement) {\n return AttachmentMap[placement.toUpperCase()]\n }\n\n _setListeners() {\n const triggers = this.config.trigger.split(' ')\n\n triggers.forEach(trigger => {\n if (trigger === 'click') {\n $(this.element).on(\n this.constructor.Event.CLICK,\n this.config.selector,\n event => this.toggle(event)\n )\n } else if (trigger !== TRIGGER_MANUAL) {\n const eventIn = trigger === TRIGGER_HOVER ?\n this.constructor.Event.MOUSEENTER :\n this.constructor.Event.FOCUSIN\n const eventOut = trigger === TRIGGER_HOVER ?\n this.constructor.Event.MOUSELEAVE :\n this.constructor.Event.FOCUSOUT\n\n $(this.element)\n .on(eventIn, this.config.selector, event => this._enter(event))\n .on(eventOut, this.config.selector, event => this._leave(event))\n }\n })\n\n this._hideModalHandler = () => {\n if (this.element) {\n this.hide()\n }\n }\n\n $(this.element).closest('.modal').on('hide.bs.modal', this._hideModalHandler)\n\n if (this.config.selector) {\n this.config = {\n ...this.config,\n trigger: 'manual',\n selector: ''\n }\n } else {\n this._fixTitle()\n }\n }\n\n _fixTitle() {\n const titleType = typeof this.element.getAttribute('data-original-title')\n\n if (this.element.getAttribute('title') || titleType !== 'string') {\n this.element.setAttribute(\n 'data-original-title',\n this.element.getAttribute('title') || ''\n )\n\n this.element.setAttribute('title', '')\n }\n }\n\n _enter(event, context) {\n const dataKey = this.constructor.DATA_KEY\n context = context || $(event.currentTarget).data(dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n )\n $(event.currentTarget).data(dataKey, context)\n }\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER\n ] = true\n }\n\n if ($(context.getTipElement()).hasClass(CLASS_NAME_SHOW) || context._hoverState === HOVER_STATE_SHOW) {\n context._hoverState = HOVER_STATE_SHOW\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HOVER_STATE_SHOW\n\n if (!context.config.delay || !context.config.delay.show) {\n context.show()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HOVER_STATE_SHOW) {\n context.show()\n }\n }, context.config.delay.show)\n }\n\n _leave(event, context) {\n const dataKey = this.constructor.DATA_KEY\n context = context || $(event.currentTarget).data(dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n )\n $(event.currentTarget).data(dataKey, context)\n }\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER\n ] = false\n }\n\n if (context._isWithActiveTrigger()) {\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HOVER_STATE_OUT\n\n if (!context.config.delay || !context.config.delay.hide) {\n context.hide()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HOVER_STATE_OUT) {\n context.hide()\n }\n }, context.config.delay.hide)\n }\n\n _isWithActiveTrigger() {\n for (const trigger in this._activeTrigger) {\n if (this._activeTrigger[trigger]) {\n return true\n }\n }\n\n return false\n }\n\n _getConfig(config) {\n const dataAttributes = $(this.element).data()\n\n Object.keys(dataAttributes)\n .forEach(dataAttr => {\n if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) {\n delete dataAttributes[dataAttr]\n }\n })\n\n config = {\n ...this.constructor.Default,\n ...dataAttributes,\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n }\n }\n\n if (typeof config.title === 'number') {\n config.title = config.title.toString()\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString()\n }\n\n Util.typeCheckConfig(\n NAME,\n config,\n this.constructor.DefaultType\n )\n\n if (config.sanitize) {\n config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn)\n }\n\n return config\n }\n\n _getDelegateConfig() {\n const config = {}\n\n if (this.config) {\n for (const key in this.config) {\n if (this.constructor.Default[key] !== this.config[key]) {\n config[key] = this.config[key]\n }\n }\n }\n\n return config\n }\n\n _cleanTipClass() {\n const $tip = $(this.getTipElement())\n const tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length) {\n $tip.removeClass(tabClass.join(''))\n }\n }\n\n _handlePopperPlacementChange(popperData) {\n this.tip = popperData.instance.popper\n this._cleanTipClass()\n this.addAttachmentClass(this._getAttachment(popperData.placement))\n }\n\n _fixTransition() {\n const tip = this.getTipElement()\n const initConfigAnimation = this.config.animation\n\n if (tip.getAttribute('x-placement') !== null) {\n return\n }\n\n $(tip).removeClass(CLASS_NAME_FADE)\n this.config.animation = false\n this.hide()\n this.show()\n this.config.animation = initConfigAnimation\n }\n\n // Static\n static _jQueryInterface(config) {\n return this.each(function () {\n const $element = $(this)\n let data = $element.data(DATA_KEY)\n const _config = typeof config === 'object' && config\n\n if (!data && /dispose|hide/.test(config)) {\n return\n }\n\n if (!data) {\n data = new Tooltip(this, _config)\n $element.data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * jQuery\n */\n\n$.fn[NAME] = Tooltip._jQueryInterface\n$.fn[NAME].Constructor = Tooltip\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Tooltip._jQueryInterface\n}\n\nexport default Tooltip\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.2): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Tooltip from './tooltip'\n\n/**\n * Constants\n */\n\nconst NAME = 'popover'\nconst VERSION = '4.6.2'\nconst DATA_KEY = 'bs.popover'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst CLASS_PREFIX = 'bs-popover'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\n\nconst Default = {\n ...Tooltip.Default,\n placement: 'right',\n trigger: 'click',\n content: '',\n template: '<div class=\"popover\" role=\"tooltip\">' +\n '<div class=\"arrow\"></div>' +\n '<h3 class=\"popover-header\"></h3>' +\n '<div class=\"popover-body\"></div></div>'\n}\n\nconst DefaultType = {\n ...Tooltip.DefaultType,\n content: '(string|element|function)'\n}\n\nconst Event = {\n HIDE: `hide${EVENT_KEY}`,\n HIDDEN: `hidden${EVENT_KEY}`,\n SHOW: `show${EVENT_KEY}`,\n SHOWN: `shown${EVENT_KEY}`,\n INSERTED: `inserted${EVENT_KEY}`,\n CLICK: `click${EVENT_KEY}`,\n FOCUSIN: `focusin${EVENT_KEY}`,\n FOCUSOUT: `focusout${EVENT_KEY}`,\n MOUSEENTER: `mouseenter${EVENT_KEY}`,\n MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\n/**\n * Class definition\n */\n\nclass Popover extends Tooltip {\n // Getters\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n static get Event() {\n return Event\n }\n\n static get EVENT_KEY() {\n return EVENT_KEY\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Overrides\n isWithContent() {\n return this.getTitle() || this._getContent()\n }\n\n addAttachmentClass(attachment) {\n $(this.getTipElement()).addClass(`${CLASS_PREFIX}-${attachment}`)\n }\n\n getTipElement() {\n this.tip = this.tip || $(this.config.template)[0]\n return this.tip\n }\n\n setContent() {\n const $tip = $(this.getTipElement())\n\n // We use append for html objects to maintain js events\n this.setElementContent($tip.find(SELECTOR_TITLE), this.getTitle())\n let content = this._getContent()\n if (typeof content === 'function') {\n content = content.call(this.element)\n }\n\n this.setElementContent($tip.find(SELECTOR_CONTENT), content)\n\n $tip.removeClass(`${CLASS_NAME_FADE} ${CLASS_NAME_SHOW}`)\n }\n\n // Private\n _getContent() {\n return this.element.getAttribute('data-content') ||\n this.config.content\n }\n\n _cleanTipClass() {\n const $tip = $(this.getTipElement())\n const tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length > 0) {\n $tip.removeClass(tabClass.join(''))\n }\n }\n\n // Static\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = typeof config === 'object' ? config : null\n\n if (!data && /dispose|hide/.test(config)) {\n return\n }\n\n if (!data) {\n data = new Popover(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * jQuery\n */\n\n$.fn[NAME] = Popover._jQueryInterface\n$.fn[NAME].Constructor = Popover\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Popover._jQueryInterface\n}\n\nexport default Popover\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.2): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * Constants\n */\n\nconst NAME = 'scrollspy'\nconst VERSION = '4.6.2'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_SCROLL = `scroll${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst METHOD_OFFSET = 'offset'\nconst METHOD_POSITION = 'position'\n\nconst SELECTOR_DATA_SPY = '[data-spy=\"scroll\"]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_DROPDOWN_ITEMS = '.dropdown-item'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\n\nconst Default = {\n offset: 10,\n method: 'auto',\n target: ''\n}\n\nconst DefaultType = {\n offset: 'number',\n method: 'string',\n target: '(string|element)'\n}\n\n/**\n * Class definition\n */\n\nclass ScrollSpy {\n constructor(element, config) {\n this._element = element\n this._scrollElement = element.tagName === 'BODY' ? window : element\n this._config = this._getConfig(config)\n this._selector = `${this._config.target} ${SELECTOR_NAV_LINKS},` +\n `${this._config.target} ${SELECTOR_LIST_ITEMS},` +\n `${this._config.target} ${SELECTOR_DROPDOWN_ITEMS}`\n this._offsets = []\n this._targets = []\n this._activeTarget = null\n this._scrollHeight = 0\n\n $(this._scrollElement).on(EVENT_SCROLL, event => this._process(event))\n\n this.refresh()\n this._process()\n }\n\n // Getters\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n refresh() {\n const autoMethod = this._scrollElement === this._scrollElement.window ?\n METHOD_OFFSET : METHOD_POSITION\n\n const offsetMethod = this._config.method === 'auto' ?\n autoMethod : this._config.method\n\n const offsetBase = offsetMethod === METHOD_POSITION ?\n this._getScrollTop() : 0\n\n this._offsets = []\n this._targets = []\n\n this._scrollHeight = this._getScrollHeight()\n\n const targets = [].slice.call(document.querySelectorAll(this._selector))\n\n targets\n .map(element => {\n let target\n const targetSelector = Util.getSelectorFromElement(element)\n\n if (targetSelector) {\n target = document.querySelector(targetSelector)\n }\n\n if (target) {\n const targetBCR = target.getBoundingClientRect()\n if (targetBCR.width || targetBCR.height) {\n // TODO (fat): remove sketch reliance on jQuery position/offset\n return [\n $(target)[offsetMethod]().top + offsetBase,\n targetSelector\n ]\n }\n }\n\n return null\n })\n .filter(Boolean)\n .sort((a, b) => a[0] - b[0])\n .forEach(item => {\n this._offsets.push(item[0])\n this._targets.push(item[1])\n })\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n $(this._scrollElement).off(EVENT_KEY)\n\n this._element = null\n this._scrollElement = null\n this._config = null\n this._selector = null\n this._offsets = null\n this._targets = null\n this._activeTarget = null\n this._scrollHeight = null\n }\n\n // Private\n _getConfig(config) {\n config = {\n ...Default,\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (typeof config.target !== 'string' && Util.isElement(config.target)) {\n let id = $(config.target).attr('id')\n if (!id) {\n id = Util.getUID(NAME)\n $(config.target).attr('id', id)\n }\n\n config.target = `#${id}`\n }\n\n Util.typeCheckConfig(NAME, config, DefaultType)\n\n return config\n }\n\n _getScrollTop() {\n return this._scrollElement === window ?\n this._scrollElement.pageYOffset : this._scrollElement.scrollTop\n }\n\n _getScrollHeight() {\n return this._scrollElement.scrollHeight || Math.max(\n document.body.scrollHeight,\n document.documentElement.scrollHeight\n )\n }\n\n _getOffsetHeight() {\n return this._scrollElement === window ?\n window.innerHeight : this._scrollElement.getBoundingClientRect().height\n }\n\n _process() {\n const scrollTop = this._getScrollTop() + this._config.offset\n const scrollHeight = this._getScrollHeight()\n const maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight()\n\n if (this._scrollHeight !== scrollHeight) {\n this.refresh()\n }\n\n if (scrollTop >= maxScroll) {\n const target = this._targets[this._targets.length - 1]\n\n if (this._activeTarget !== target) {\n this._activate(target)\n }\n\n return\n }\n\n if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n this._activeTarget = null\n this._clear()\n return\n }\n\n for (let i = this._offsets.length; i--;) {\n const isActiveTarget = this._activeTarget !== this._targets[i] &&\n scrollTop >= this._offsets[i] &&\n (typeof this._offsets[i + 1] === 'undefined' ||\n scrollTop < this._offsets[i + 1])\n\n if (isActiveTarget) {\n this._activate(this._targets[i])\n }\n }\n }\n\n _activate(target) {\n this._activeTarget = target\n\n this._clear()\n\n const queries = this._selector\n .split(',')\n .map(selector => `${selector}[data-target=\"${target}\"],${selector}[href=\"${target}\"]`)\n\n const $link = $([].slice.call(document.querySelectorAll(queries.join(','))))\n\n if ($link.hasClass(CLASS_NAME_DROPDOWN_ITEM)) {\n $link.closest(SELECTOR_DROPDOWN)\n .find(SELECTOR_DROPDOWN_TOGGLE)\n .addClass(CLASS_NAME_ACTIVE)\n $link.addClass(CLASS_NAME_ACTIVE)\n } else {\n // Set triggered link as active\n $link.addClass(CLASS_NAME_ACTIVE)\n // Set triggered links parents as active\n // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n $link.parents(SELECTOR_NAV_LIST_GROUP)\n .prev(`${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`)\n .addClass(CLASS_NAME_ACTIVE)\n // Handle special case when .nav-link is inside .nav-item\n $link.parents(SELECTOR_NAV_LIST_GROUP)\n .prev(SELECTOR_NAV_ITEMS)\n .children(SELECTOR_NAV_LINKS)\n .addClass(CLASS_NAME_ACTIVE)\n }\n\n $(this._scrollElement).trigger(EVENT_ACTIVATE, {\n relatedTarget: target\n })\n }\n\n _clear() {\n [].slice.call(document.querySelectorAll(this._selector))\n .filter(node => node.classList.contains(CLASS_NAME_ACTIVE))\n .forEach(node => node.classList.remove(CLASS_NAME_ACTIVE))\n }\n\n // Static\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = typeof config === 'object' && config\n\n if (!data) {\n data = new ScrollSpy(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\n$(window).on(EVENT_LOAD_DATA_API, () => {\n const scrollSpys = [].slice.call(document.querySelectorAll(SELECTOR_DATA_SPY))\n const scrollSpysLength = scrollSpys.length\n\n for (let i = scrollSpysLength; i--;) {\n const $spy = $(scrollSpys[i])\n ScrollSpy._jQueryInterface.call($spy, $spy.data())\n }\n})\n\n/**\n * jQuery\n */\n\n$.fn[NAME] = ScrollSpy._jQueryInterface\n$.fn[NAME].Constructor = ScrollSpy\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return ScrollSpy._jQueryInterface\n}\n\nexport default ScrollSpy\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.2): tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * Constants\n */\n\nconst NAME = 'tab'\nconst VERSION = '4.6.2'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_DISABLED = 'disabled'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ACTIVE_UL = '> li > .active'\nconst SELECTOR_DATA_TOGGLE = '[data-toggle=\"tab\"], [data-toggle=\"pill\"], [data-toggle=\"list\"]'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\nconst SELECTOR_DROPDOWN_ACTIVE_CHILD = '> .dropdown-menu .active'\n\n/**\n * Class definition\n */\n\nclass Tab {\n constructor(element) {\n this._element = element\n }\n\n // Getters\n static get VERSION() {\n return VERSION\n }\n\n // Public\n show() {\n if (this._element.parentNode &&\n this._element.parentNode.nodeType === Node.ELEMENT_NODE &&\n $(this._element).hasClass(CLASS_NAME_ACTIVE) ||\n $(this._element).hasClass(CLASS_NAME_DISABLED) ||\n this._element.hasAttribute('disabled')) {\n return\n }\n\n let target\n let previous\n const listElement = $(this._element).closest(SELECTOR_NAV_LIST_GROUP)[0]\n const selector = Util.getSelectorFromElement(this._element)\n\n if (listElement) {\n const itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE\n previous = $.makeArray($(listElement).find(itemSelector))\n previous = previous[previous.length - 1]\n }\n\n const hideEvent = $.Event(EVENT_HIDE, {\n relatedTarget: this._element\n })\n\n const showEvent = $.Event(EVENT_SHOW, {\n relatedTarget: previous\n })\n\n if (previous) {\n $(previous).trigger(hideEvent)\n }\n\n $(this._element).trigger(showEvent)\n\n if (showEvent.isDefaultPrevented() ||\n hideEvent.isDefaultPrevented()) {\n return\n }\n\n if (selector) {\n target = document.querySelector(selector)\n }\n\n this._activate(\n this._element,\n listElement\n )\n\n const complete = () => {\n const hiddenEvent = $.Event(EVENT_HIDDEN, {\n relatedTarget: this._element\n })\n\n const shownEvent = $.Event(EVENT_SHOWN, {\n relatedTarget: previous\n })\n\n $(previous).trigger(hiddenEvent)\n $(this._element).trigger(shownEvent)\n }\n\n if (target) {\n this._activate(target, target.parentNode, complete)\n } else {\n complete()\n }\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n this._element = null\n }\n\n // Private\n _activate(element, container, callback) {\n const activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ?\n $(container).find(SELECTOR_ACTIVE_UL) :\n $(container).children(SELECTOR_ACTIVE)\n\n const active = activeElements[0]\n const isTransitioning = callback && (active && $(active).hasClass(CLASS_NAME_FADE))\n const complete = () => this._transitionComplete(\n element,\n active,\n callback\n )\n\n if (active && isTransitioning) {\n const transitionDuration = Util.getTransitionDurationFromElement(active)\n\n $(active)\n .removeClass(CLASS_NAME_SHOW)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n complete()\n }\n }\n\n _transitionComplete(element, active, callback) {\n if (active) {\n $(active).removeClass(CLASS_NAME_ACTIVE)\n\n const dropdownChild = $(active.parentNode).find(\n SELECTOR_DROPDOWN_ACTIVE_CHILD\n )[0]\n\n if (dropdownChild) {\n $(dropdownChild).removeClass(CLASS_NAME_ACTIVE)\n }\n\n if (active.getAttribute('role') === 'tab') {\n active.setAttribute('aria-selected', false)\n }\n }\n\n $(element).addClass(CLASS_NAME_ACTIVE)\n if (element.getAttribute('role') === 'tab') {\n element.setAttribute('aria-selected', true)\n }\n\n Util.reflow(element)\n\n if (element.classList.contains(CLASS_NAME_FADE)) {\n element.classList.add(CLASS_NAME_SHOW)\n }\n\n let parent = element.parentNode\n if (parent && parent.nodeName === 'LI') {\n parent = parent.parentNode\n }\n\n if (parent && $(parent).hasClass(CLASS_NAME_DROPDOWN_MENU)) {\n const dropdownElement = $(element).closest(SELECTOR_DROPDOWN)[0]\n\n if (dropdownElement) {\n const dropdownToggleList = [].slice.call(dropdownElement.querySelectorAll(SELECTOR_DROPDOWN_TOGGLE))\n\n $(dropdownToggleList).addClass(CLASS_NAME_ACTIVE)\n }\n\n element.setAttribute('aria-expanded', true)\n }\n\n if (callback) {\n callback()\n }\n }\n\n // Static\n static _jQueryInterface(config) {\n return this.each(function () {\n const $this = $(this)\n let data = $this.data(DATA_KEY)\n\n if (!data) {\n data = new Tab(this)\n $this.data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\n$(document)\n .on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n event.preventDefault()\n Tab._jQueryInterface.call($(this), 'show')\n })\n\n/**\n * jQuery\n */\n\n$.fn[NAME] = Tab._jQueryInterface\n$.fn[NAME].Constructor = Tab\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Tab._jQueryInterface\n}\n\nexport default Tab\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.2): toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * Constants\n */\n\nconst NAME = 'toast'\nconst VERSION = '4.6.2'\nconst DATA_KEY = 'bs.toast'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_HIDE = 'hide'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\n\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\n\nconst SELECTOR_DATA_DISMISS = '[data-dismiss=\"toast\"]'\n\nconst Default = {\n animation: true,\n autohide: true,\n delay: 500\n}\n\nconst DefaultType = {\n animation: 'boolean',\n autohide: 'boolean',\n delay: 'number'\n}\n\n/**\n * Class definition\n */\n\nclass Toast {\n constructor(element, config) {\n this._element = element\n this._config = this._getConfig(config)\n this._timeout = null\n this._setListeners()\n }\n\n // Getters\n static get VERSION() {\n return VERSION\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n show() {\n const showEvent = $.Event(EVENT_SHOW)\n\n $(this._element).trigger(showEvent)\n if (showEvent.isDefaultPrevented()) {\n return\n }\n\n this._clearTimeout()\n\n if (this._config.animation) {\n this._element.classList.add(CLASS_NAME_FADE)\n }\n\n const complete = () => {\n this._element.classList.remove(CLASS_NAME_SHOWING)\n this._element.classList.add(CLASS_NAME_SHOW)\n\n $(this._element).trigger(EVENT_SHOWN)\n\n if (this._config.autohide) {\n this._timeout = setTimeout(() => {\n this.hide()\n }, this._config.delay)\n }\n }\n\n this._element.classList.remove(CLASS_NAME_HIDE)\n Util.reflow(this._element)\n this._element.classList.add(CLASS_NAME_SHOWING)\n if (this._config.animation) {\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n complete()\n }\n }\n\n hide() {\n if (!this._element.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n const hideEvent = $.Event(EVENT_HIDE)\n\n $(this._element).trigger(hideEvent)\n if (hideEvent.isDefaultPrevented()) {\n return\n }\n\n this._close()\n }\n\n dispose() {\n this._clearTimeout()\n\n if (this._element.classList.contains(CLASS_NAME_SHOW)) {\n this._element.classList.remove(CLASS_NAME_SHOW)\n }\n\n $(this._element).off(EVENT_CLICK_DISMISS)\n\n $.removeData(this._element, DATA_KEY)\n this._element = null\n this._config = null\n }\n\n // Private\n _getConfig(config) {\n config = {\n ...Default,\n ...$(this._element).data(),\n ...(typeof config === 'object' && config ? config : {})\n }\n\n Util.typeCheckConfig(\n NAME,\n config,\n this.constructor.DefaultType\n )\n\n return config\n }\n\n _setListeners() {\n $(this._element).on(EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, () => this.hide())\n }\n\n _close() {\n const complete = () => {\n this._element.classList.add(CLASS_NAME_HIDE)\n $(this._element).trigger(EVENT_HIDDEN)\n }\n\n this._element.classList.remove(CLASS_NAME_SHOW)\n if (this._config.animation) {\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n complete()\n }\n }\n\n _clearTimeout() {\n clearTimeout(this._timeout)\n this._timeout = null\n }\n\n // Static\n static _jQueryInterface(config) {\n return this.each(function () {\n const $element = $(this)\n let data = $element.data(DATA_KEY)\n const _config = typeof config === 'object' && config\n\n if (!data) {\n data = new Toast(this, _config)\n $element.data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](this)\n }\n })\n }\n}\n\n/**\n * jQuery\n */\n\n$.fn[NAME] = Toast._jQueryInterface\n$.fn[NAME].Constructor = Toast\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Toast._jQueryInterface\n}\n\nexport default Toast\n", "\uFEFFimport $ from \"jquery\";\n\ndeclare global {\n interface Window {\n jQuery: typeof jQuery;\n $: typeof jQuery;\n }\n}\n\nwindow.$ = window.jQuery = window[\"$\"] = window[\"jQuery\"] = $; ", "\uFEFFimport \"../../GlobalImport\";\nimport \"jquery-validation\";\nimport \"jquery-validation-unobtrusive\";\nimport \"jquery.nicescroll\";\nimport \"metismenu\";\nimport \"bootstrap\";\nimport moment from \"moment\";\nimport { Dropdown } from \"../../Dropdowns/Dropdown\";\nimport { InputElementCollection} from \"../../HTMLElements/InputElementCollection\";\n\ninterface Options {\n select2Lang: {\n errorLoading: string;\n loadingMore: string;\n noResults: string;\n searching: string;\n };\n localeDateFormat: string;\n}\n\nexport class Layout {\n\n constructor(options: Options) {\n \n this.setDropdownLanguage(options); \n \n const accountDropdown = new Dropdown();\n accountDropdown.setupDropdown($(\"#GlobalAccountSelector\"));\n \n $.validator.addMethod(\"datenotbefore\", (value, element, params) => {\n \n const releaseInputValue = $(\"#\" + params[0]).val();\n const availableFromDate = moment(value, options.localeDateFormat);\n const releaseDate = moment(releaseInputValue, options.localeDateFormat);\n if (releaseInputValue === \"\" || value === \"\") {\n return true;\n }\n if (!availableFromDate.isValid() || !releaseDate.isValid()) {\n return true;\n } \n const isValid = releaseDate.isSameOrBefore(availableFromDate, \"day\");\n \n return isValid;\n });\n\n $.validator.unobtrusive.adapters.add(\"datenotbefore\", [\"date\"], (data: any) => {\n data.rules[\"datenotbefore\"] = [data.params[\"date\"] as string];\n data.messages[\"datenotbefore\"] = data.message;\n });\n\n $.validator.addMethod(\"datenotafter\", (value, element, params) => {\n \n const releaseInputValue = $(\"#\" + params[0]).val();\n const availableFromDate = moment(value, options.localeDateFormat);\n const releaseDate = moment(releaseInputValue, options.localeDateFormat);\n if (!availableFromDate.isValid() || !releaseDate.isValid()) {\n return true;\n } \n if (releaseInputValue === \"\" || value === \"\") {\n return true;\n }\n const isValid = releaseDate.isSameOrAfter(availableFromDate, \"day\");\n \n return isValid;\n });\n\n $.validator.unobtrusive.adapters.add(\"datenotafter\", [\"date\"], (data: any) => {\n data.rules[\"datenotafter\"] = [data.params[\"date\"] as string];\n data.messages[\"datenotafter\"] = data.message;\n });\n \n }\n\n public bindEventsOnDocumentReady(): void {\n \n $(() => {\n \n\n $(window).on(\"resize\", () => {\n $(\"#filter-wrapper\").height(Number($(\".filters\").height()));\n let inactiveTop;\n if ($(\"body\").hasClass(\"body-small\")) {\n inactiveTop = 150 - Number($(\".filters\").height());\n } else {\n console.log();\n inactiveTop = 180 - Number($(\".filters\").height());\n }\n \n $(\".filters\").removeClass(\"do-top\");\n $(\".filter-row\").removeClass(\"do-transition\");\n $(\".filters\").css({top: inactiveTop});\n setTimeout(function () { $(\".filters\").addClass(\"do-top\"); }, 500);\n setTimeout(function () { $(\".filter-row\").addClass(\"do-transition\"); }, 500);\n\n if (Number($(document).width()) < 769) {\n $(\"body\").addClass(\"body-small\");\n } else {\n $(\"body\").removeClass(\"body-small\"); \n }\n\n if (Number($(document).width()) >= 1200) {\n $(\"body\").addClass(\"body-large\");\n } else {\n $(\"body\").removeClass(\"body-large\");\n }\n });\n\n $(\"#UserName\").on(\"change\", (event) => {\n const cleanedUserName = ($(event.currentTarget).val() as string).replace(/\\s/g, \"\");\n $(event.currentTarget).val(cleanedUserName);\n });\n\n $(\"#filter-wrapper\").height(Number($(\".filters\").height()));\n \n if (Number($(document).width()) > 1024) {\n $(\".sidebar-nav\").niceScroll({\n cursorcolor: \"#666666\",\n cursorborder: \"none\",\n cursorwidth: \"3px\",\n railpadding: { top: 0, right: 1, left: 0, bottom: 0 }\n });\n }\n\n let inactiveTop = 0;\n const filterHeight = Number($(\".filters\").height());\n if (Number($(window).width()) < 769) { \n $(\"body\").addClass(\"body-small\");\n \n inactiveTop = 150 - filterHeight;\n } else { \n $(\"body\").removeClass(\"body-small\");\n if ($(\".topbar-wrapper\").hasClass(\"sticky\")) {\n inactiveTop = 90 - filterHeight;\n } else {\n inactiveTop = 180 - filterHeight;\n }\n }\n \n if (Number($(window).width()) >= 1200) {\n $(\"body\").addClass(\"body-large\");\n } else {\n $(\"body\").removeClass(\"body-large\");\n }\n\n if (localStorage.getItem(\"filters\") === \"open\") {\n $(\"#filter-wrapper\").addClass('active');\n\n } else {\n $(\"#filter-wrapper\").addClass(\"inactive\");\n }\n $(\".filters\").css({top: inactiveTop}); \n\n \n $(\"#filter-wrapper\").removeClass(\"load\");\n\n\n $('#side-menu').metisMenu({\n toggle:false\n }).on(\"shown.metisMenu\", () => {\n $(\".sidebar-nav\").getNiceScroll().resize();\n }).on(\"hidden.metisMenu\", () => {\n $(\".sidebar-nav\").getNiceScroll().resize();\n });\n\n $(\".user-account\").on(\"click\", (event) => {\n $(event.currentTarget).toggleClass(\"active\");\n $(\".account-wrapper\").slideToggle();\n });\n $(\".user\").on(\"click\", (event) => {\n $(event.currentTarget).toggleClass(\"active\");\n $(\".account-wrapper\").slideToggle();\n });\n $('.toggle-filters').on('click', () => {\n const height = Number($(\"#filter-wrapper\").height());\n if ($('#filter-wrapper').hasClass('active')) {\n $(\"#filter-wrapper\").removeClass('active');\n $(\"#filter-wrapper\").addClass(\"inactive\");\n localStorage.setItem(\"filters\", \"closed\");\n\n } else {\n $(\"#filter-wrapper\").addClass('active').removeClass(\"inactive\");\n localStorage.setItem(\"filters\", \"open\");\n\n }\n if ($('#filter-wrapper').hasClass('static')) {\n $(\"#filter-wrapper\").height(height);\n }\n });\n\n setTimeout(function() { $(\".filter-row\").addClass(\"do-transition\"); }, 500);\n\n $(\"#flags > a\").on(\"click\",\n function() {\n $(\".language-selector\").slideToggle();\n $(\"#flags\").toggleClass(\"mm-active\");\n });\n\n $('[data-toggle=\"tooltip\"]').tooltip();\n $(\"body\").tooltip({ selector: '[data-toggle=tooltip]'});\n\n $(\".burger-menu\").click(() => {\n $(\"body\").toggleClass(\"mini-navbar\");\n if ($(\"body\").hasClass(\"mini-navbar\")) {\n $(\"#page-wrapper\").one(\"transitionend\", () => {\n \n $(\".sidebar-nav\").niceScroll({\n cursorcolor: \"#666666\",\n cursorborder: \"none\"\n });\n });\n } else {\n $(\".sidebar-nav\").getNiceScroll().remove();\n }\n });\n \n $(\"#flag > a\").on(\"click\", function () {\n $(this).toggleClass(\"open\"); \n });\n \n $(\".modal\").appendTo(\"body\");\n\n this.fixHeight();\n\n $(window).bind(\"load resize scroll\", () => {\n if (!$(\"body\").hasClass(\"body-small\")) {\n this.fixHeight();\n } \n });\n\n $('#GlobalAccountSelector').on('select2:select', (event) => {\n event.preventDefault();\n \n const value = $(event.currentTarget).data('value');\n if (parseInt(value) > 0) {\n const form = $('#GlobalAccountSelectorForm');\n $.ajax({\n type: \"POST\",\n url: form.attr(\"action\"),\n data: form.serialize()\n \n }).done(() => {\n location.reload();\n });\n }\n \n });\n \n $('#GlobalAccountSelector').on('select2:unselecting', () => {\n const form = $('#GlobalAccountSelectorForm');\n const url = form.attr(\"data-clear-url\");\n $.ajax({\n type: 'GET',\n url: url\n }).done(() => {\n location.reload();\n });\n });\n\n $(\"#Ean\").keydown((event) => {\n if ($.inArray(event.keyCode, [46, 8, 9, 27, 13, 110, 190]) !== -1 ||\n // Allow: Ctrl/cmd+A\n (event.keyCode === 65 && (event.ctrlKey || event.metaKey)) ||\n // Allow: Ctrl/cmd+C\n (event.keyCode === 67 && (event.ctrlKey || event.metaKey)) ||\n // Allow: Ctrl/cmd+V\n (event.keyCode === 86 && (event.ctrlKey || event.metaKey)) ||\n // Allow: Ctrl/cmd+X\n (event.keyCode === 88 && (event.ctrlKey || event.metaKey)) ||\n // Allow: home, end, left, right\n (event.keyCode >= 35 && event.keyCode <= 39)) {\n // let it happen, don't do anything\n return true;\n }\n \n if ($(event.currentTarget).val()) {\n const input = $(event.currentTarget).val()?.toString();\n const length = input?.length\n if (length && length > 12) {\n return false;\n }\n }\n\n \n // Ensure that it is a number and stop the keypress\n if ((event.shiftKey || (event.keyCode < 48 || event.keyCode > 57)) && (event.keyCode < 96 || event.keyCode > 105)) {\n event.preventDefault();\n }\n });\n const $toolbar = $(\".toolbar\");\n const toolbarOffset = $toolbar.offset();\n this.resizeEvent(toolbarOffset);\n });\n }\n\n public bindEvents() {\n \n const inputElements = new InputElementCollection(document.body);\n inputElements.floatLabel();\n inputElements.addEventsToLabel();\n \n const $toolbar = $(\".toolbar\");\n const toolbarOffset = $toolbar.offset();\n\n $(window).on(\"scroll\", () => {\n this.resizeEvent(toolbarOffset);\n });\n\n }\n\n private fixHeight() {\n const navbarHeigh = Number($(\"nav.sidebar-nav\").height());\n const wrapperHeigh = Number($(\"#page-wrapper\").height());\n\n if (navbarHeigh > wrapperHeigh) {\n $(\"#page-wrapper\").css(\"min-height\", navbarHeigh + \"px\");\n }\n\n if (navbarHeigh < wrapperHeigh) {\n $(\"#page-wrapper\").css(\"min-height\", $(window).height() + \"px\");\n }\n }\n\n private setDropdownLanguage(translation: Options) {\n \n const language: Select2.Translation = {\n \n errorLoading: () => {\n return translation.select2Lang.errorLoading;\n },\n loadingMore: () => {\n return translation.select2Lang.loadingMore + \"...\";\n },\n noResults: () => {\n return translation.select2Lang.noResults;\n },\n searching: () => {\n return translation.select2Lang.searching + \"...\";\n }\n }\n $.fn.select2.defaults.set('language', language);\n \n }\n \n private resizeEvent(toolbarOffset: any): void {\n if ($(\".topbar\").css(\"position\") !== \"fixed\") {\n if (toolbarOffset) {\n if (window.scrollY >= toolbarOffset.top) {\n $(\".topbar-wrapper\").addClass(\"sticky\");\n $(\"#wrapper-overlay\").addClass(\"sticky\");\n\n\n if (!$(\"#filter-wrapper\").hasClass(\"sticky\")) {\n\n $(\".filters\").removeClass(\"do-top\").removeClass(\"do-left\");\n $(\"#filter-wrapper\").removeClass(\"do-height\");\n\n $(\"#filter-wrapper\").addClass(\"sticky\");\n\n const stickyTop = Number($(\".filters\").height()) - 90;\n $(\".filters\").css({ top: -stickyTop });\n\n setTimeout(function () { $(\".filters\").addClass(\"do-top\").addClass(\"do-left\"); }, 200);\n setTimeout(function () { $(\"#filter-wrapper\").addClass(\"do-height\"); }, 200);\n }\n\n if ($(\".user\").hasClass(\"active\")) {\n $(\".account-wrapper\").show();\n } else {\n $(\".account-wrapper\").hide();\n }\n\n } else {\n $(\".filters\").removeClass(\"do-top\").removeClass(\"do-left\");\n $(\"#filter-wrapper\").removeClass(\"do-height\");\n\n $(\".topbar-wrapper\").removeClass(\"sticky\");\n $(\"#wrapper-overlay\").removeClass(\"sticky\");\n $(\"#filter-wrapper\").removeClass(\"sticky\");\n\n const inactiveTop = 180 - Number($(\".filters\").height());\n $(\".filters\").css({ top: inactiveTop });\n\n setTimeout(function () { $(\".filters\").addClass(\"do-top\").addClass(\"do-left\"); }, 200);\n setTimeout(function () { $(\"#filter-wrapper\").addClass(\"do-height\"); }, 200);\n\n $(\".account-wrapper\").show();\n\n }\n }\n const wrapperOffset = $(\".wrapper-content\").offset();\n if (wrapperOffset) {\n if ($(\"#filter-wrapper\").hasClass(\"sticky\") && window.scrollY > wrapperOffset.top - 90) {\n\n $(\"#filter-wrapper\").addClass(\"static\");\n\n } else {\n $(\"#filter-wrapper\").removeClass(\"static\");\n $(\"#filter-wrapper\").height(Number($(\".filters\").height()));\n }\n }}\n\n}\n \n}\n\n"], "mappings": "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", "names": ["$", "$", "jQuery", "$", "self", "a", "e", "ww", "i", "me", "x", "nice", "Util", "$", "TRANSITION_END", "[object Object]", "element", "trigger", "supportsTransitionEnd", "Boolean", "transitionEndEmulator", "duration", "called", "this", "one", "setTimeout", "triggerTransitionEnd", "fn", "mmEmulateTransitionEnd", "event", "special", "bindType", "delegateType", "target", "is", "handleObj", "handler", "apply", "arguments", "NAME", "DATA_KEY", "JQUERY_NO_CONFLICT", "Default", "toggle", "preventDefault", "triggerElement", "parentTrigger", "subMenu", "Event", "SHOW", "SHOWN", "HIDE", "HIDDEN", "CLICK_DATA_API", "ClassName", "MetisMenu", "config", "transitioning", "init", "self", "conf", "el", "addClass", "find", "children", "attr", "parents", "has", "not", "on", "e", "eTar", "paRent", "parent", "sibLi", "siblings", "sibTrigger", "hasClass", "removeActive", "setActive", "onTransitionStart", "li", "ul", "length", "show", "removeClass", "hide", "elem", "startEvent", "isDefaultPrevented", "toggleElem", "height", "setTransitioning", "scrollHeight", "offsetHeight", "complete", "onTransitionEnd", "css", "isTransitioning", "removeData", "off", "each", "$this", "data", "Error", "jQueryInterface", "Constructor", "noConflict", "window", "document", "navigator", "timeoutDuration", "longerTimeoutBrowsers", "i", "length", "isBrowser", "userAgent", "indexOf", "microtaskDebounce", "fn", "called", "Promise", "resolve", "then", "taskDebounce", "scheduled", "supportsMicroTasks", "isFunction", "functionToCheck", "getType", "toString", "call", "getStyleComputedProperty", "element", "property", "nodeType", "ownerDocument", "defaultView", "css", "getComputedStyle", "getParentNode", "nodeName", "parentNode", "host", "getScrollParent", "body", "overflow", "overflowX", "overflowY", "test", "getReferenceNode", "reference", "referenceNode", "isIE11", "MSInputMethodContext", "documentMode", "isIE10", "isIE", "version", "getOffsetParent", "documentElement", "noOffsetParent", "offsetParent", "nextElementSibling", "isOffsetContainer", "firstElementChild", "getRoot", "node", "findCommonOffsetParent", "element1", "element2", "order", "compareDocumentPosition", "Node", "DOCUMENT_POSITION_FOLLOWING", "start", "end", "range", "createRange", "setStart", "setEnd", "commonAncestorContainer", "contains", "element1root", "getScroll", "side", "upperSide", "html", "scrollingElement", "includeScroll", "rect", "subtract", "scrollTop", "scrollLeft", "modifier", "top", "bottom", "left", "right", "getBordersSize", "styles", "axis", "sideA", "sideB", "parseFloat", "getSize", "computedStyle", "Math", "max", "parseInt", "getWindowSizes", "getClientRect", "offsets", "width", "height", "getBoundingClientRect", "e", "result", "sizes", "clientWidth", "clientHeight", "horizScrollbar", "offsetWidth", "vertScrollbar", "offsetHeight", "getOffsetRectRelativeToArbitraryNode", "children", "parent", "fixedPosition", "runIsIE", "isHTML", "childrenRect", "parentRect", "scrollParent", "borderTopWidth", "borderLeftWidth", "marginTop", "marginLeft", "getViewportOffsetRectRelativeToArtbitraryNode", "excludeScroll", "relativeOffset", "innerWidth", "innerHeight", "offset", "isFixed", "getFixedPositionOffsetParent", "parentElement", "el", "getBoundaries", "popper", "padding", "boundariesElement", "boundaries", "boundariesNode", "isPaddingNumber", "getArea", "computeAutoPlacement", "placement", "refRect", "rects", "sortedAreas", "Object", "keys", "map", "key", "sort", "a", "b", "area", "filteredAreas", "filter", "computedPlacement", "variation", "split", "getReferenceOffsets", "state", "commonOffsetParent", "getOuterSizes", "x", "marginBottom", "y", "marginRight", "getOppositePlacement", "hash", "replace", "matched", "getPopperOffsets", "referenceOffsets", "popperRect", "popperOffsets", "isHoriz", "mainSide", "secondarySide", "measurement", "secondaryMeasurement", "find", "arr", "check", "Array", "prototype", "findIndex", "prop", "value", "cur", "match", "obj", "runModifiers", "modifiers", "data", "ends", "modifiersToRun", "undefined", "slice", "forEach", "warn", "enabled", "update", "isDestroyed", "options", "positionFixed", "flip", "originalPlacement", "position", "isCreated", "onCreate", "onUpdate", "isModifierEnabled", "modifierName", "some", "name", "getSupportedPropertyName", "prefixes", "upperProp", "charAt", "toUpperCase", "prefix", "toCheck", "style", "destroy", "removeAttribute", "willChange", "disableEventListeners", "removeOnDestroy", "removeChild", "getWindow", "attachToScrollParents", "event", "callback", "scrollParents", "isBody", "target", "addEventListener", "passive", "push", "setupEventListeners", "updateBound", "scrollElement", "eventsEnabled", "enableEventListeners", "scheduleUpdate", "removeEventListeners", "removeEventListener", "isNumeric", "n", "isNaN", "isFinite", "setStyles", "unit", "setAttributes", "attributes", "setAttribute", "applyStyle", "instance", "arrowElement", "arrowStyles", "applyStyleOnLoad", "modifierOptions", "getRoundedOffsets", "shouldRound", "round", "floor", "noRound", "v", "referenceWidth", "popperWidth", "isVertical", "isVariation", "sameWidthParity", "bothOddWidth", "horizontalToInteger", "verticalToInteger", "isFirefox", "computeStyle", "legacyGpuAccelerationOption", "gpuAcceleration", "offsetParentRect", "devicePixelRatio", "prefixedProperty", "invertTop", "invertLeft", "arrow", "isModifierRequired", "requestingName", "requestedName", "requesting", "isRequired", "requested", "querySelector", "len", "sideCapitalized", "toLowerCase", "altSide", "opSide", "arrowElementSize", "center", "popperMarginSide", "popperBorderSide", "sideValue", "min", "getOppositeVariation", "validPlacements", "placements", "clockwise", "counter", "index", "concat", "reverse", "BEHAVIORS", "flipped", "placementOpposite", "flipOrder", "behavior", "FLIP", "CLOCKWISE", "COUNTERCLOCKWISE", "step", "refOffsets", "overlapsRef", "overflowsLeft", "overflowsRight", "overflowsTop", "overflowsBottom", "overflowsBoundaries", "flippedVariationByRef", "flipVariations", "flippedVariationByContent", "flipVariationsByContent", "flippedVariation", "keepTogether", "toValue", "str", "size", "parseOffset", "basePlacement", "useHeight", "fragments", "frag", "trim", "divider", "search", "splitRegex", "ops", "op", "mergeWithPrevious", "reduce", "index2", "preventOverflow", "transformProp", "popperStyles", "transform", "priority", "escapeWithReference", "shift", "shiftvariation", "shiftOffsets", "hide", "bound", "inner", "subtractLength", "Popper", "requestAnimationFrame", "debounce", "bind", "Defaults", "jquery", "onLoad", "Utils", "global", "PopperUtils", "TRANSITION_END", "MAX_UID", "MILLISECONDS_MULTIPLIER", "toType", "obj", "toString", "call", "match", "toLowerCase", "getSpecialTransitionEndEvent", "bindType", "delegateType", "handle", "event", "$", "target", "is", "handleObj", "handler", "apply", "arguments", "undefined", "transitionEndEmulator", "duration", "called", "one", "Util", "setTimeout", "triggerTransitionEnd", "setTransitionEndSupport", "fn", "emulateTransitionEnd", "special", "getUID", "prefix", "Math", "random", "document", "getElementById", "getSelectorFromElement", "element", "selector", "getAttribute", "hrefAttr", "trim", "querySelector", "_", "getTransitionDurationFromElement", "transitionDuration", "css", "transitionDelay", "floatTransitionDuration", "parseFloat", "floatTransitionDelay", "split", "reflow", "offsetHeight", "trigger", "supportsTransitionEnd", "Boolean", "isElement", "nodeType", "typeCheckConfig", "componentName", "config", "configTypes", "property", "Object", "prototype", "hasOwnProperty", "expectedTypes", "value", "valueType", "RegExp", "test", "Error", "toUpperCase", "findShadowRoot", "documentElement", "attachShadow", "getRootNode", "root", "ShadowRoot", "parentNode", "jQueryDetection", "TypeError", "version", "jquery", "minMajor", "ltMajor", "minMinor", "minPatch", "maxMajor", "NAME", "VERSION", "DATA_KEY", "EVENT_KEY", "DATA_API_KEY", "JQUERY_NO_CONFLICT", "CLASS_NAME_ALERT", "CLASS_NAME_FADE", "CLASS_NAME_SHOW", "EVENT_CLOSE", "EVENT_CLOSED", "EVENT_CLICK_DATA_API", "SELECTOR_DISMISS", "Alert", "_element", "close", "rootElement", "_getRootElement", "customEvent", "_triggerCloseEvent", "isDefaultPrevented", "_removeElement", "dispose", "removeData", "parent", "closest", "closeEvent", "Event", "removeClass", "hasClass", "_destroyElement", "detach", "remove", "_jQueryInterface", "each", "$element", "data", "_handleDismiss", "alertInstance", "preventDefault", "on", "Constructor", "noConflict", "CLASS_NAME_ACTIVE", "CLASS_NAME_BUTTON", "CLASS_NAME_FOCUS", "EVENT_FOCUS_BLUR_DATA_API", "EVENT_LOAD_DATA_API", "SELECTOR_DATA_TOGGLE_CARROT", "SELECTOR_DATA_TOGGLES", "SELECTOR_DATA_TOGGLE", "SELECTOR_DATA_TOGGLES_BUTTONS", "SELECTOR_INPUT", "SELECTOR_ACTIVE", "SELECTOR_BUTTON", "Button", "shouldAvoidTriggerChange", "toggle", "triggerChangeEvent", "addAriaPressed", "input", "type", "checked", "classList", "contains", "activeElement", "focus", "hasAttribute", "setAttribute", "toggleClass", "avoidTriggerChange", "button", "initialButton", "inputBtn", "tagName", "window", "buttons", "slice", "querySelectorAll", "i", "len", "length", "add", "ARROW_LEFT_KEYCODE", "ARROW_RIGHT_KEYCODE", "TOUCHEVENT_COMPAT_WAIT", "SWIPE_THRESHOLD", "CLASS_NAME_CAROUSEL", "CLASS_NAME_SLIDE", "CLASS_NAME_RIGHT", "CLASS_NAME_LEFT", "CLASS_NAME_NEXT", "CLASS_NAME_PREV", "CLASS_NAME_POINTER_EVENT", "DIRECTION_NEXT", "DIRECTION_PREV", "DIRECTION_LEFT", "DIRECTION_RIGHT", "EVENT_SLIDE", "EVENT_SLID", "EVENT_KEYDOWN", "EVENT_MOUSEENTER", "EVENT_MOUSELEAVE", "EVENT_TOUCHSTART", "EVENT_TOUCHMOVE", "EVENT_TOUCHEND", "EVENT_POINTERDOWN", "EVENT_POINTERUP", "EVENT_DRAG_START", "SELECTOR_ACTIVE_ITEM", "SELECTOR_ITEM", "SELECTOR_ITEM_IMG", "SELECTOR_NEXT_PREV", "SELECTOR_INDICATORS", "SELECTOR_DATA_SLIDE", "SELECTOR_DATA_RIDE", "Default", "interval", "keyboard", "slide", "pause", "wrap", "touch", "DefaultType", "PointerType", "TOUCH", "PEN", "Carousel", "_items", "_interval", "_activeElement", "_isPaused", "_isSliding", "touchTimeout", "touchStartX", "touchDeltaX", "_config", "_getConfig", "_indicatorsElement", "_touchSupported", "navigator", "maxTouchPoints", "_pointerEvent", "PointerEvent", "MSPointerEvent", "_addEventListeners", "next", "_slide", "nextWhenVisible", "hidden", "prev", "cycle", "clearInterval", "_updateInterval", "setInterval", "visibilityState", "bind", "to", "index", "activeIndex", "_getItemIndex", "direction", "off", "_handleSwipe", "absDeltax", "abs", "_keydown", "_addTouchEventListeners", "start", "originalEvent", "pointerType", "clientX", "touches", "move", "end", "clearTimeout", "e", "which", "indexOf", "_getItemByDirection", "isNextDirection", "isPrevDirection", "lastItemIndex", "isGoingToWrap", "delta", "itemIndex", "_triggerSlideEvent", "relatedTarget", "eventDirectionName", "targetIndex", "fromIndex", "slideEvent", "from", "_setActiveIndicatorElement", "indicators", "nextIndicator", "children", "addClass", "elementInterval", "parseInt", "defaultInterval", "activeElementIndex", "nextElement", "nextElementIndex", "isCycling", "directionalClassName", "orderClassName", "slidEvent", "action", "ride", "_dataApiClickHandler", "slideIndex", "carousels", "$carousel", "CLASS_NAME_COLLAPSE", "CLASS_NAME_COLLAPSING", "CLASS_NAME_COLLAPSED", "DIMENSION_WIDTH", "DIMENSION_HEIGHT", "EVENT_SHOW", "EVENT_SHOWN", "EVENT_HIDE", "EVENT_HIDDEN", "SELECTOR_ACTIVES", "Collapse", "_isTransitioning", "_triggerArray", "id", "toggleList", "elem", "filterElement", "filter", "foundElem", "_selector", "push", "_parent", "_getParent", "_addAriaAndCollapsedClass", "hide", "show", "actives", "activesData", "not", "startEvent", "dimension", "_getDimension", "style", "attr", "setTransitioning", "complete", "capitalizedDimension", "scrollSize", "getBoundingClientRect", "triggerArrayLength", "$elem", "isTransitioning", "hasWidth", "_getTargetFromElement", "triggerArray", "isOpen", "currentTarget", "$trigger", "selectors", "$target", "ESCAPE_KEYCODE", "SPACE_KEYCODE", "TAB_KEYCODE", "ARROW_UP_KEYCODE", "ARROW_DOWN_KEYCODE", "RIGHT_MOUSE_BUTTON_WHICH", "REGEXP_KEYDOWN", "CLASS_NAME_DISABLED", "CLASS_NAME_DROPUP", "CLASS_NAME_DROPRIGHT", "CLASS_NAME_DROPLEFT", "CLASS_NAME_MENURIGHT", "CLASS_NAME_POSITION_STATIC", "EVENT_CLICK", "EVENT_KEYDOWN_DATA_API", "EVENT_KEYUP_DATA_API", "SELECTOR_FORM_CHILD", "SELECTOR_MENU", "SELECTOR_NAVBAR_NAV", "SELECTOR_VISIBLE_ITEMS", "PLACEMENT_TOP", "PLACEMENT_TOPEND", "PLACEMENT_BOTTOM", "PLACEMENT_BOTTOMEND", "PLACEMENT_RIGHT", "PLACEMENT_LEFT", "offset", "flip", "boundary", "reference", "display", "popperConfig", "Dropdown", "_popper", "_menu", "_getMenuElement", "_inNavbar", "_detectNavbar", "disabled", "isActive", "_clearMenus", "usePopper", "showEvent", "_getParentFromElement", "Popper", "referenceElement", "_getPopperConfig", "body", "noop", "hideEvent", "destroy", "update", "scheduleUpdate", "stopPropagation", "constructor", "_getPlacement", "$parentDropdown", "placement", "_getOffset", "offsets", "modifiers", "enabled", "preventOverflow", "boundariesElement", "applyStyle", "toggles", "context", "clickEvent", "dropdownMenu", "_dataApiKeydownHandler", "items", "item", "CLASS_NAME_SCROLLABLE", "CLASS_NAME_SCROLLBAR_MEASURER", "CLASS_NAME_BACKDROP", "CLASS_NAME_OPEN", "CLASS_NAME_STATIC", "EVENT_HIDE_PREVENTED", "EVENT_FOCUSIN", "EVENT_RESIZE", "EVENT_CLICK_DISMISS", "EVENT_KEYDOWN_DISMISS", "EVENT_MOUSEUP_DISMISS", "EVENT_MOUSEDOWN_DISMISS", "SELECTOR_DIALOG", "SELECTOR_MODAL_BODY", "SELECTOR_DATA_DISMISS", "SELECTOR_FIXED_CONTENT", "SELECTOR_STICKY_CONTENT", "backdrop", "Modal", "_dialog", "_backdrop", "_isShown", "_isBodyOverflowing", "_ignoreBackdropClick", "_scrollbarWidth", "_checkScrollbar", "_setScrollbar", "_adjustDialog", "_setEscapeEvent", "_setResizeEvent", "_showBackdrop", "_showElement", "transition", "_hideModal", "forEach", "htmlElement", "handleUpdate", "_triggerBackdropTransition", "hideEventPrevented", "isModalOverflowing", "scrollHeight", "clientHeight", "overflowY", "modalTransitionDuration", "modalBody", "Node", "ELEMENT_NODE", "appendChild", "removeAttribute", "scrollTop", "_enforceFocus", "shownEvent", "transitionComplete", "has", "_resetAdjustments", "_resetScrollbar", "_removeBackdrop", "callback", "animate", "createElement", "className", "appendTo", "backdropTransitionDuration", "callbackRemove", "paddingLeft", "paddingRight", "rect", "round", "left", "right", "innerWidth", "_getScrollbarWidth", "fixedContent", "stickyContent", "actualPadding", "calculatedPadding", "actualMargin", "marginRight", "calculatedMargin", "padding", "elements", "margin", "scrollDiv", "scrollbarWidth", "width", "clientWidth", "removeChild", "uriAttrs", "ARIA_ATTRIBUTE_PATTERN", "DefaultWhitelist", "a", "area", "b", "br", "col", "code", "div", "em", "hr", "h1", "h2", "h3", "h4", "h5", "h6", "img", "li", "ol", "p", "pre", "s", "small", "span", "sub", "sup", "strong", "u", "ul", "SAFE_URL_PATTERN", "DATA_URL_PATTERN", "allowedAttribute", "allowedAttributeList", "attrName", "nodeName", "nodeValue", "regExp", "attrRegex", "sanitizeHtml", "unsafeHtml", "whiteList", "sanitizeFn", "domParser", "DOMParser", "createdDocument", "parseFromString", "whitelistKeys", "keys", "el", "elName", "attributeList", "attributes", "whitelistedAttributes", "concat", "innerHTML", "CLASS_PREFIX", "BSCLS_PREFIX_REGEX", "DISALLOWED_ATTRIBUTES", "HOVER_STATE_SHOW", "HOVER_STATE_OUT", "SELECTOR_TOOLTIP_INNER", "SELECTOR_ARROW", "TRIGGER_HOVER", "TRIGGER_FOCUS", "TRIGGER_CLICK", "TRIGGER_MANUAL", "AttachmentMap", "AUTO", "TOP", "RIGHT", "BOTTOM", "LEFT", "animation", "template", "title", "delay", "html", "container", "fallbackPlacement", "customClass", "sanitize", "HIDE", "HIDDEN", "SHOW", "SHOWN", "INSERTED", "CLICK", "FOCUSIN", "FOCUSOUT", "MOUSEENTER", "MOUSELEAVE", "Tooltip", "_isEnabled", "_timeout", "_hoverState", "_activeTrigger", "tip", "_setListeners", "enable", "disable", "toggleEnabled", "dataKey", "_getDelegateConfig", "click", "_isWithActiveTrigger", "_enter", "_leave", "getTipElement", "_hideModalHandler", "isWithContent", "shadowRoot", "isInTheDom", "ownerDocument", "tipId", "setContent", "attachment", "_getAttachment", "addAttachmentClass", "_getContainer", "_fixTransition", "prevHoverState", "_cleanTipClass", "getTitle", "setElementContent", "content", "empty", "append", "text", "defaultBsConfig", "behavior", "arrow", "onCreate", "originalPlacement", "_handlePopperPlacementChange", "onUpdate", "find", "triggers", "eventIn", "eventOut", "_fixTitle", "titleType", "dataAttributes", "dataAttr", "key", "$tip", "tabClass", "join", "popperData", "instance", "popper", "initConfigAnimation", "SELECTOR_TITLE", "SELECTOR_CONTENT", "Popover", "_getContent", "CLASS_NAME_DROPDOWN_ITEM", "EVENT_ACTIVATE", "EVENT_SCROLL", "METHOD_OFFSET", "METHOD_POSITION", "SELECTOR_DATA_SPY", "SELECTOR_NAV_LIST_GROUP", "SELECTOR_NAV_LINKS", "SELECTOR_NAV_ITEMS", "SELECTOR_LIST_ITEMS", "SELECTOR_DROPDOWN", "SELECTOR_DROPDOWN_ITEMS", "SELECTOR_DROPDOWN_TOGGLE", "method", "ScrollSpy", "_scrollElement", "_offsets", "_targets", "_activeTarget", "_scrollHeight", "_process", "refresh", "autoMethod", "offsetMethod", "offsetBase", "_getScrollTop", "_getScrollHeight", "targets", "map", "targetSelector", "targetBCR", "height", "top", "sort", "pageYOffset", "max", "_getOffsetHeight", "innerHeight", "maxScroll", "_activate", "_clear", "isActiveTarget", "queries", "$link", "parents", "node", "scrollSpys", "scrollSpysLength", "$spy", "CLASS_NAME_DROPDOWN_MENU", "SELECTOR_ACTIVE_UL", "SELECTOR_DROPDOWN_ACTIVE_CHILD", "Tab", "previous", "listElement", "itemSelector", "makeArray", "hiddenEvent", "activeElements", "active", "_transitionComplete", "dropdownChild", "dropdownElement", "dropdownToggleList", "$this", "CLASS_NAME_HIDE", "CLASS_NAME_SHOWING", "autohide", "Toast", "_clearTimeout", "_close", "$", "import_jquery", "moment", "inactiveTop"] }