{"version":3,"file":"js/471-c192ba35a732c52144a7.js","mappings":"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","sources":["webpack://mh-web/./node_modules/jquery-ui/ui/core.js","webpack://mh-web/./node_modules/jquery-ui/ui/position.js","webpack://mh-web/./node_modules/jquery-ui/ui/unique-id.js","webpack://mh-web/./node_modules/bootstrap/js/dist/button.js","webpack://mh-web/./node_modules/bootstrap/js/dist/tab.js","webpack://mh-web/./node_modules/jquery-ui/ui/widgets/autocomplete.js","webpack://mh-web/./node_modules/jquery-ui/ui/widgets/menu.js","webpack://mh-web/./node_modules/hex-to-rgb/index.js","webpack://mh-web/./node_modules/bootstrap/js/dist/alert.js","webpack://mh-web/./node_modules/vanilla-lazyload/dist/lazyload.js","webpack://mh-web/./node_modules/jquery-ui/ui/keycode.js","webpack://mh-web/./node_modules/popper.js/dist/esm/popper.js","webpack://mh-web/./node_modules/jquery-ui/ui/version.js","webpack://mh-web/./node_modules/rails-ujs/lib/assets/compiled/rails-ujs.js","webpack://mh-web/./node_modules/bootstrap/js/dist/dropdown.js","webpack://mh-web/./node_modules/jquery-ui/ui/safe-active-element.js","webpack://mh-web/./node_modules/jquery-ui/ui/widget.js","webpack://mh-web/./node_modules/rgb-to-hsl/index.js","webpack://mh-web/./node_modules/hex-to-hsl/index.js","webpack://mh-web/./node_modules/choices.js/public/assets/scripts/choices.mjs"],"sourcesContent":["// This file is deprecated in 1.12.0 to be removed in 1.14\n( function() {\n\"use strict\";\n\ndefine( [\n\t\"jquery\",\n\t\"./data\",\n\t\"./disable-selection\",\n\t\"./focusable\",\n\t\"./form\",\n\t\"./ie\",\n\t\"./keycode\",\n\t\"./labels\",\n\t\"./jquery-patch.js\",\n\t\"./plugin\",\n\t\"./safe-active-element\",\n\t\"./safe-blur\",\n\t\"./scroll-parent\",\n\t\"./tabbable\",\n\t\"./unique-id\",\n\t\"./version\"\n] );\n} )();\n","/*!\n * jQuery UI Position 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/position/\n */\n\n//>>label: Position\n//>>group: Core\n//>>description: Positions elements relative to other elements.\n//>>docs: http://api.jqueryui.com/position/\n//>>demos: http://jqueryui.com/position/\n\n( function( factory ) {\n\t\"use strict\";\n\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\", \"./version\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} )( function( $ ) {\n\"use strict\";\n\n( function() {\nvar cachedScrollbarWidth,\n\tmax = Math.max,\n\tabs = Math.abs,\n\trhorizontal = /left|center|right/,\n\trvertical = /top|center|bottom/,\n\troffset = /[\\+\\-]\\d+(\\.[\\d]+)?%?/,\n\trposition = /^\\w+/,\n\trpercent = /%$/,\n\t_position = $.fn.position;\n\nfunction getOffsets( offsets, width, height ) {\n\treturn [\n\t\tparseFloat( offsets[ 0 ] ) * ( rpercent.test( offsets[ 0 ] ) ? width / 100 : 1 ),\n\t\tparseFloat( offsets[ 1 ] ) * ( rpercent.test( offsets[ 1 ] ) ? height / 100 : 1 )\n\t];\n}\n\nfunction parseCss( element, property ) {\n\treturn parseInt( $.css( element, property ), 10 ) || 0;\n}\n\nfunction isWindow( obj ) {\n\treturn obj != null && obj === obj.window;\n}\n\nfunction getDimensions( elem ) {\n\tvar raw = elem[ 0 ];\n\tif ( raw.nodeType === 9 ) {\n\t\treturn {\n\t\t\twidth: elem.width(),\n\t\t\theight: elem.height(),\n\t\t\toffset: { top: 0, left: 0 }\n\t\t};\n\t}\n\tif ( isWindow( raw ) ) {\n\t\treturn {\n\t\t\twidth: elem.width(),\n\t\t\theight: elem.height(),\n\t\t\toffset: { top: elem.scrollTop(), left: elem.scrollLeft() }\n\t\t};\n\t}\n\tif ( raw.preventDefault ) {\n\t\treturn {\n\t\t\twidth: 0,\n\t\t\theight: 0,\n\t\t\toffset: { top: raw.pageY, left: raw.pageX }\n\t\t};\n\t}\n\treturn {\n\t\twidth: elem.outerWidth(),\n\t\theight: elem.outerHeight(),\n\t\toffset: elem.offset()\n\t};\n}\n\n$.position = {\n\tscrollbarWidth: function() {\n\t\tif ( cachedScrollbarWidth !== undefined ) {\n\t\t\treturn cachedScrollbarWidth;\n\t\t}\n\t\tvar w1, w2,\n\t\t\tdiv = $( \"<div style=\" +\n\t\t\t\t\"'display:block;position:absolute;width:200px;height:200px;overflow:hidden;'>\" +\n\t\t\t\t\"<div style='height:300px;width:auto;'></div></div>\" ),\n\t\t\tinnerDiv = div.children()[ 0 ];\n\n\t\t$( \"body\" ).append( div );\n\t\tw1 = innerDiv.offsetWidth;\n\t\tdiv.css( \"overflow\", \"scroll\" );\n\n\t\tw2 = innerDiv.offsetWidth;\n\n\t\tif ( w1 === w2 ) {\n\t\t\tw2 = div[ 0 ].clientWidth;\n\t\t}\n\n\t\tdiv.remove();\n\n\t\treturn ( cachedScrollbarWidth = w1 - w2 );\n\t},\n\tgetScrollInfo: function( within ) {\n\t\tvar overflowX = within.isWindow || within.isDocument ? \"\" :\n\t\t\t\twithin.element.css( \"overflow-x\" ),\n\t\t\toverflowY = within.isWindow || within.isDocument ? \"\" :\n\t\t\t\twithin.element.css( \"overflow-y\" ),\n\t\t\thasOverflowX = overflowX === \"scroll\" ||\n\t\t\t\t( overflowX === \"auto\" && within.width < within.element[ 0 ].scrollWidth ),\n\t\t\thasOverflowY = overflowY === \"scroll\" ||\n\t\t\t\t( overflowY === \"auto\" && within.height < within.element[ 0 ].scrollHeight );\n\t\treturn {\n\t\t\twidth: hasOverflowY ? $.position.scrollbarWidth() : 0,\n\t\t\theight: hasOverflowX ? $.position.scrollbarWidth() : 0\n\t\t};\n\t},\n\tgetWithinInfo: function( element ) {\n\t\tvar withinElement = $( element || window ),\n\t\t\tisElemWindow = isWindow( withinElement[ 0 ] ),\n\t\t\tisDocument = !!withinElement[ 0 ] && withinElement[ 0 ].nodeType === 9,\n\t\t\thasOffset = !isElemWindow && !isDocument;\n\t\treturn {\n\t\t\telement: withinElement,\n\t\t\tisWindow: isElemWindow,\n\t\t\tisDocument: isDocument,\n\t\t\toffset: hasOffset ? $( element ).offset() : { left: 0, top: 0 },\n\t\t\tscrollLeft: withinElement.scrollLeft(),\n\t\t\tscrollTop: withinElement.scrollTop(),\n\t\t\twidth: withinElement.outerWidth(),\n\t\t\theight: withinElement.outerHeight()\n\t\t};\n\t}\n};\n\n$.fn.position = function( options ) {\n\tif ( !options || !options.of ) {\n\t\treturn _position.apply( this, arguments );\n\t}\n\n\t// Make a copy, we don't want to modify arguments\n\toptions = $.extend( {}, options );\n\n\tvar atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions,\n\n\t\t// Make sure string options are treated as CSS selectors\n\t\ttarget = typeof options.of === \"string\" ?\n\t\t\t$( document ).find( options.of ) :\n\t\t\t$( options.of ),\n\n\t\twithin = $.position.getWithinInfo( options.within ),\n\t\tscrollInfo = $.position.getScrollInfo( within ),\n\t\tcollision = ( options.collision || \"flip\" ).split( \" \" ),\n\t\toffsets = {};\n\n\tdimensions = getDimensions( target );\n\tif ( target[ 0 ].preventDefault ) {\n\n\t\t// Force left top to allow flipping\n\t\toptions.at = \"left top\";\n\t}\n\ttargetWidth = dimensions.width;\n\ttargetHeight = dimensions.height;\n\ttargetOffset = dimensions.offset;\n\n\t// Clone to reuse original targetOffset later\n\tbasePosition = $.extend( {}, targetOffset );\n\n\t// Force my and at to have valid horizontal and vertical positions\n\t// if a value is missing or invalid, it will be converted to center\n\t$.each( [ \"my\", \"at\" ], function() {\n\t\tvar pos = ( options[ this ] || \"\" ).split( \" \" ),\n\t\t\thorizontalOffset,\n\t\t\tverticalOffset;\n\n\t\tif ( pos.length === 1 ) {\n\t\t\tpos = rhorizontal.test( pos[ 0 ] ) ?\n\t\t\t\tpos.concat( [ \"center\" ] ) :\n\t\t\t\trvertical.test( pos[ 0 ] ) ?\n\t\t\t\t\t[ \"center\" ].concat( pos ) :\n\t\t\t\t\t[ \"center\", \"center\" ];\n\t\t}\n\t\tpos[ 0 ] = rhorizontal.test( pos[ 0 ] ) ? pos[ 0 ] : \"center\";\n\t\tpos[ 1 ] = rvertical.test( pos[ 1 ] ) ? pos[ 1 ] : \"center\";\n\n\t\t// Calculate offsets\n\t\thorizontalOffset = roffset.exec( pos[ 0 ] );\n\t\tverticalOffset = roffset.exec( pos[ 1 ] );\n\t\toffsets[ this ] = [\n\t\t\thorizontalOffset ? horizontalOffset[ 0 ] : 0,\n\t\t\tverticalOffset ? verticalOffset[ 0 ] : 0\n\t\t];\n\n\t\t// Reduce to just the positions without the offsets\n\t\toptions[ this ] = [\n\t\t\trposition.exec( pos[ 0 ] )[ 0 ],\n\t\t\trposition.exec( pos[ 1 ] )[ 0 ]\n\t\t];\n\t} );\n\n\t// Normalize collision option\n\tif ( collision.length === 1 ) {\n\t\tcollision[ 1 ] = collision[ 0 ];\n\t}\n\n\tif ( options.at[ 0 ] === \"right\" ) {\n\t\tbasePosition.left += targetWidth;\n\t} else if ( options.at[ 0 ] === \"center\" ) {\n\t\tbasePosition.left += targetWidth / 2;\n\t}\n\n\tif ( options.at[ 1 ] === \"bottom\" ) {\n\t\tbasePosition.top += targetHeight;\n\t} else if ( options.at[ 1 ] === \"center\" ) {\n\t\tbasePosition.top += targetHeight / 2;\n\t}\n\n\tatOffset = getOffsets( offsets.at, targetWidth, targetHeight );\n\tbasePosition.left += atOffset[ 0 ];\n\tbasePosition.top += atOffset[ 1 ];\n\n\treturn this.each( function() {\n\t\tvar collisionPosition, using,\n\t\t\telem = $( this ),\n\t\t\telemWidth = elem.outerWidth(),\n\t\t\telemHeight = elem.outerHeight(),\n\t\t\tmarginLeft = parseCss( this, \"marginLeft\" ),\n\t\t\tmarginTop = parseCss( this, \"marginTop\" ),\n\t\t\tcollisionWidth = elemWidth + marginLeft + parseCss( this, \"marginRight\" ) +\n\t\t\t\tscrollInfo.width,\n\t\t\tcollisionHeight = elemHeight + marginTop + parseCss( this, \"marginBottom\" ) +\n\t\t\t\tscrollInfo.height,\n\t\t\tposition = $.extend( {}, basePosition ),\n\t\t\tmyOffset = getOffsets( offsets.my, elem.outerWidth(), elem.outerHeight() );\n\n\t\tif ( options.my[ 0 ] === \"right\" ) {\n\t\t\tposition.left -= elemWidth;\n\t\t} else if ( options.my[ 0 ] === \"center\" ) {\n\t\t\tposition.left -= elemWidth / 2;\n\t\t}\n\n\t\tif ( options.my[ 1 ] === \"bottom\" ) {\n\t\t\tposition.top -= elemHeight;\n\t\t} else if ( options.my[ 1 ] === \"center\" ) {\n\t\t\tposition.top -= elemHeight / 2;\n\t\t}\n\n\t\tposition.left += myOffset[ 0 ];\n\t\tposition.top += myOffset[ 1 ];\n\n\t\tcollisionPosition = {\n\t\t\tmarginLeft: marginLeft,\n\t\t\tmarginTop: marginTop\n\t\t};\n\n\t\t$.each( [ \"left\", \"top\" ], function( i, dir ) {\n\t\t\tif ( $.ui.position[ collision[ i ] ] ) {\n\t\t\t\t$.ui.position[ collision[ i ] ][ dir ]( position, {\n\t\t\t\t\ttargetWidth: targetWidth,\n\t\t\t\t\ttargetHeight: targetHeight,\n\t\t\t\t\telemWidth: elemWidth,\n\t\t\t\t\telemHeight: elemHeight,\n\t\t\t\t\tcollisionPosition: collisionPosition,\n\t\t\t\t\tcollisionWidth: collisionWidth,\n\t\t\t\t\tcollisionHeight: collisionHeight,\n\t\t\t\t\toffset: [ atOffset[ 0 ] + myOffset[ 0 ], atOffset [ 1 ] + myOffset[ 1 ] ],\n\t\t\t\t\tmy: options.my,\n\t\t\t\t\tat: options.at,\n\t\t\t\t\twithin: within,\n\t\t\t\t\telem: elem\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\n\t\tif ( options.using ) {\n\n\t\t\t// Adds feedback as second argument to using callback, if present\n\t\t\tusing = function( props ) {\n\t\t\t\tvar left = targetOffset.left - position.left,\n\t\t\t\t\tright = left + targetWidth - elemWidth,\n\t\t\t\t\ttop = targetOffset.top - position.top,\n\t\t\t\t\tbottom = top + targetHeight - elemHeight,\n\t\t\t\t\tfeedback = {\n\t\t\t\t\t\ttarget: {\n\t\t\t\t\t\t\telement: target,\n\t\t\t\t\t\t\tleft: targetOffset.left,\n\t\t\t\t\t\t\ttop: targetOffset.top,\n\t\t\t\t\t\t\twidth: targetWidth,\n\t\t\t\t\t\t\theight: targetHeight\n\t\t\t\t\t\t},\n\t\t\t\t\t\telement: {\n\t\t\t\t\t\t\telement: elem,\n\t\t\t\t\t\t\tleft: position.left,\n\t\t\t\t\t\t\ttop: position.top,\n\t\t\t\t\t\t\twidth: elemWidth,\n\t\t\t\t\t\t\theight: elemHeight\n\t\t\t\t\t\t},\n\t\t\t\t\t\thorizontal: right < 0 ? \"left\" : left > 0 ? \"right\" : \"center\",\n\t\t\t\t\t\tvertical: bottom < 0 ? \"top\" : top > 0 ? \"bottom\" : \"middle\"\n\t\t\t\t\t};\n\t\t\t\tif ( targetWidth < elemWidth && abs( left + right ) < targetWidth ) {\n\t\t\t\t\tfeedback.horizontal = \"center\";\n\t\t\t\t}\n\t\t\t\tif ( targetHeight < elemHeight && abs( top + bottom ) < targetHeight ) {\n\t\t\t\t\tfeedback.vertical = \"middle\";\n\t\t\t\t}\n\t\t\t\tif ( max( abs( left ), abs( right ) ) > max( abs( top ), abs( bottom ) ) ) {\n\t\t\t\t\tfeedback.important = \"horizontal\";\n\t\t\t\t} else {\n\t\t\t\t\tfeedback.important = \"vertical\";\n\t\t\t\t}\n\t\t\t\toptions.using.call( this, props, feedback );\n\t\t\t};\n\t\t}\n\n\t\telem.offset( $.extend( position, { using: using } ) );\n\t} );\n};\n\n$.ui.position = {\n\tfit: {\n\t\tleft: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.isWindow ? within.scrollLeft : within.offset.left,\n\t\t\t\touterWidth = within.width,\n\t\t\t\tcollisionPosLeft = position.left - data.collisionPosition.marginLeft,\n\t\t\t\toverLeft = withinOffset - collisionPosLeft,\n\t\t\t\toverRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset,\n\t\t\t\tnewOverRight;\n\n\t\t\t// Element is wider than within\n\t\t\tif ( data.collisionWidth > outerWidth ) {\n\n\t\t\t\t// Element is initially over the left side of within\n\t\t\t\tif ( overLeft > 0 && overRight <= 0 ) {\n\t\t\t\t\tnewOverRight = position.left + overLeft + data.collisionWidth - outerWidth -\n\t\t\t\t\t\twithinOffset;\n\t\t\t\t\tposition.left += overLeft - newOverRight;\n\n\t\t\t\t// Element is initially over right side of within\n\t\t\t\t} else if ( overRight > 0 && overLeft <= 0 ) {\n\t\t\t\t\tposition.left = withinOffset;\n\n\t\t\t\t// Element is initially over both left and right sides of within\n\t\t\t\t} else {\n\t\t\t\t\tif ( overLeft > overRight ) {\n\t\t\t\t\t\tposition.left = withinOffset + outerWidth - data.collisionWidth;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tposition.left = withinOffset;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Too far left -> align with left edge\n\t\t\t} else if ( overLeft > 0 ) {\n\t\t\t\tposition.left += overLeft;\n\n\t\t\t// Too far right -> align with right edge\n\t\t\t} else if ( overRight > 0 ) {\n\t\t\t\tposition.left -= overRight;\n\n\t\t\t// Adjust based on position and margin\n\t\t\t} else {\n\t\t\t\tposition.left = max( position.left - collisionPosLeft, position.left );\n\t\t\t}\n\t\t},\n\t\ttop: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.isWindow ? within.scrollTop : within.offset.top,\n\t\t\t\touterHeight = data.within.height,\n\t\t\t\tcollisionPosTop = position.top - data.collisionPosition.marginTop,\n\t\t\t\toverTop = withinOffset - collisionPosTop,\n\t\t\t\toverBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset,\n\t\t\t\tnewOverBottom;\n\n\t\t\t// Element is taller than within\n\t\t\tif ( data.collisionHeight > outerHeight ) {\n\n\t\t\t\t// Element is initially over the top of within\n\t\t\t\tif ( overTop > 0 && overBottom <= 0 ) {\n\t\t\t\t\tnewOverBottom = position.top + overTop + data.collisionHeight - outerHeight -\n\t\t\t\t\t\twithinOffset;\n\t\t\t\t\tposition.top += overTop - newOverBottom;\n\n\t\t\t\t// Element is initially over bottom of within\n\t\t\t\t} else if ( overBottom > 0 && overTop <= 0 ) {\n\t\t\t\t\tposition.top = withinOffset;\n\n\t\t\t\t// Element is initially over both top and bottom of within\n\t\t\t\t} else {\n\t\t\t\t\tif ( overTop > overBottom ) {\n\t\t\t\t\t\tposition.top = withinOffset + outerHeight - data.collisionHeight;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tposition.top = withinOffset;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Too far up -> align with top\n\t\t\t} else if ( overTop > 0 ) {\n\t\t\t\tposition.top += overTop;\n\n\t\t\t// Too far down -> align with bottom edge\n\t\t\t} else if ( overBottom > 0 ) {\n\t\t\t\tposition.top -= overBottom;\n\n\t\t\t// Adjust based on position and margin\n\t\t\t} else {\n\t\t\t\tposition.top = max( position.top - collisionPosTop, position.top );\n\t\t\t}\n\t\t}\n\t},\n\tflip: {\n\t\tleft: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.offset.left + within.scrollLeft,\n\t\t\t\touterWidth = within.width,\n\t\t\t\toffsetLeft = within.isWindow ? within.scrollLeft : within.offset.left,\n\t\t\t\tcollisionPosLeft = position.left - data.collisionPosition.marginLeft,\n\t\t\t\toverLeft = collisionPosLeft - offsetLeft,\n\t\t\t\toverRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft,\n\t\t\t\tmyOffset = data.my[ 0 ] === \"left\" ?\n\t\t\t\t\t-data.elemWidth :\n\t\t\t\t\tdata.my[ 0 ] === \"right\" ?\n\t\t\t\t\t\tdata.elemWidth :\n\t\t\t\t\t\t0,\n\t\t\t\tatOffset = data.at[ 0 ] === \"left\" ?\n\t\t\t\t\tdata.targetWidth :\n\t\t\t\t\tdata.at[ 0 ] === \"right\" ?\n\t\t\t\t\t\t-data.targetWidth :\n\t\t\t\t\t\t0,\n\t\t\t\toffset = -2 * data.offset[ 0 ],\n\t\t\t\tnewOverRight,\n\t\t\t\tnewOverLeft;\n\n\t\t\tif ( overLeft < 0 ) {\n\t\t\t\tnewOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth -\n\t\t\t\t\touterWidth - withinOffset;\n\t\t\t\tif ( newOverRight < 0 || newOverRight < abs( overLeft ) ) {\n\t\t\t\t\tposition.left += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t} else if ( overRight > 0 ) {\n\t\t\t\tnewOverLeft = position.left - data.collisionPosition.marginLeft + myOffset +\n\t\t\t\t\tatOffset + offset - offsetLeft;\n\t\t\t\tif ( newOverLeft > 0 || abs( newOverLeft ) < overRight ) {\n\t\t\t\t\tposition.left += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\ttop: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.offset.top + within.scrollTop,\n\t\t\t\touterHeight = within.height,\n\t\t\t\toffsetTop = within.isWindow ? within.scrollTop : within.offset.top,\n\t\t\t\tcollisionPosTop = position.top - data.collisionPosition.marginTop,\n\t\t\t\toverTop = collisionPosTop - offsetTop,\n\t\t\t\toverBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop,\n\t\t\t\ttop = data.my[ 1 ] === \"top\",\n\t\t\t\tmyOffset = top ?\n\t\t\t\t\t-data.elemHeight :\n\t\t\t\t\tdata.my[ 1 ] === \"bottom\" ?\n\t\t\t\t\t\tdata.elemHeight :\n\t\t\t\t\t\t0,\n\t\t\t\tatOffset = data.at[ 1 ] === \"top\" ?\n\t\t\t\t\tdata.targetHeight :\n\t\t\t\t\tdata.at[ 1 ] === \"bottom\" ?\n\t\t\t\t\t\t-data.targetHeight :\n\t\t\t\t\t\t0,\n\t\t\t\toffset = -2 * data.offset[ 1 ],\n\t\t\t\tnewOverTop,\n\t\t\t\tnewOverBottom;\n\t\t\tif ( overTop < 0 ) {\n\t\t\t\tnewOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight -\n\t\t\t\t\touterHeight - withinOffset;\n\t\t\t\tif ( newOverBottom < 0 || newOverBottom < abs( overTop ) ) {\n\t\t\t\t\tposition.top += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t} else if ( overBottom > 0 ) {\n\t\t\t\tnewOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset +\n\t\t\t\t\toffset - offsetTop;\n\t\t\t\tif ( newOverTop > 0 || abs( newOverTop ) < overBottom ) {\n\t\t\t\t\tposition.top += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tflipfit: {\n\t\tleft: function() {\n\t\t\t$.ui.position.flip.left.apply( this, arguments );\n\t\t\t$.ui.position.fit.left.apply( this, arguments );\n\t\t},\n\t\ttop: function() {\n\t\t\t$.ui.position.flip.top.apply( this, arguments );\n\t\t\t$.ui.position.fit.top.apply( this, arguments );\n\t\t}\n\t}\n};\n\n} )();\n\nreturn $.ui.position;\n\n} );\n","/*!\n * jQuery UI Unique ID 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: uniqueId\n//>>group: Core\n//>>description: Functions to generate and remove uniqueId's\n//>>docs: http://api.jqueryui.com/uniqueId/\n\n( function( factory ) {\n\t\"use strict\";\n\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\", \"./version\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} )( function( $ ) {\n\"use strict\";\n\nreturn $.fn.extend( {\n\tuniqueId: ( function() {\n\t\tvar uuid = 0;\n\n\t\treturn function() {\n\t\t\treturn this.each( function() {\n\t\t\t\tif ( !this.id ) {\n\t\t\t\t\tthis.id = \"ui-id-\" + ( ++uuid );\n\t\t\t\t}\n\t\t\t} );\n\t\t};\n\t} )(),\n\n\tremoveUniqueId: function() {\n\t\treturn this.each( function() {\n\t\t\tif ( /^ui-id-\\d+$/.test( this.id ) ) {\n\t\t\t\t$( this ).removeAttr( \"id\" );\n\t\t\t}\n\t\t} );\n\t}\n} );\n\n} );\n","/*!\n * Bootstrap button.js v4.6.2 (https://getbootstrap.com/)\n * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('jquery')) :\n typeof define === 'function' && define.amd ? define(['jquery'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Button = factory(global.jQuery));\n})(this, (function ($) { 'use strict';\n\n function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\n var $__default = /*#__PURE__*/_interopDefaultLegacy($);\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n }\n\n /**\n * Constants\n */\n\n var NAME = 'button';\n var VERSION = '4.6.2';\n var DATA_KEY = 'bs.button';\n var EVENT_KEY = \".\" + DATA_KEY;\n var DATA_API_KEY = '.data-api';\n var JQUERY_NO_CONFLICT = $__default[\"default\"].fn[NAME];\n var CLASS_NAME_ACTIVE = 'active';\n var CLASS_NAME_BUTTON = 'btn';\n var CLASS_NAME_FOCUS = 'focus';\n var EVENT_CLICK_DATA_API = \"click\" + EVENT_KEY + DATA_API_KEY;\n var EVENT_FOCUS_BLUR_DATA_API = \"focus\" + EVENT_KEY + DATA_API_KEY + \" \" + (\"blur\" + EVENT_KEY + DATA_API_KEY);\n var EVENT_LOAD_DATA_API = \"load\" + EVENT_KEY + DATA_API_KEY;\n var SELECTOR_DATA_TOGGLE_CARROT = '[data-toggle^=\"button\"]';\n var SELECTOR_DATA_TOGGLES = '[data-toggle=\"buttons\"]';\n var SELECTOR_DATA_TOGGLE = '[data-toggle=\"button\"]';\n var SELECTOR_DATA_TOGGLES_BUTTONS = '[data-toggle=\"buttons\"] .btn';\n var SELECTOR_INPUT = 'input:not([type=\"hidden\"])';\n var SELECTOR_ACTIVE = '.active';\n var SELECTOR_BUTTON = '.btn';\n /**\n * Class definition\n */\n\n var Button = /*#__PURE__*/function () {\n function Button(element) {\n this._element = element;\n this.shouldAvoidTriggerChange = false;\n } // Getters\n\n\n var _proto = Button.prototype;\n\n // Public\n _proto.toggle = function toggle() {\n var triggerChangeEvent = true;\n var addAriaPressed = true;\n var rootElement = $__default[\"default\"](this._element).closest(SELECTOR_DATA_TOGGLES)[0];\n\n if (rootElement) {\n var 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 var activeElement = rootElement.querySelector(SELECTOR_ACTIVE);\n\n if (activeElement) {\n $__default[\"default\"](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 $__default[\"default\"](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 $__default[\"default\"](this._element).toggleClass(CLASS_NAME_ACTIVE);\n }\n }\n };\n\n _proto.dispose = function dispose() {\n $__default[\"default\"].removeData(this._element, DATA_KEY);\n this._element = null;\n } // Static\n ;\n\n Button._jQueryInterface = function _jQueryInterface(config, avoidTriggerChange) {\n return this.each(function () {\n var $element = $__default[\"default\"](this);\n var 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 _createClass(Button, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION;\n }\n }]);\n\n return Button;\n }();\n /**\n * Data API implementation\n */\n\n\n $__default[\"default\"](document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, function (event) {\n var button = event.target;\n var initialButton = button;\n\n if (!$__default[\"default\"](button).hasClass(CLASS_NAME_BUTTON)) {\n button = $__default[\"default\"](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 var 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\n return;\n }\n\n if (initialButton.tagName === 'INPUT' || button.tagName !== 'LABEL') {\n Button._jQueryInterface.call($__default[\"default\"](button), 'toggle', initialButton.tagName === 'INPUT');\n }\n }\n }).on(EVENT_FOCUS_BLUR_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, function (event) {\n var button = $__default[\"default\"](event.target).closest(SELECTOR_BUTTON)[0];\n $__default[\"default\"](button).toggleClass(CLASS_NAME_FOCUS, /^focus(in)?$/.test(event.type));\n });\n $__default[\"default\"](window).on(EVENT_LOAD_DATA_API, function () {\n // ensure correct active class is set to match the controls' actual values/states\n // find all checkboxes/readio buttons inside data-toggle groups\n var buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLES_BUTTONS));\n\n for (var i = 0, len = buttons.length; i < len; i++) {\n var button = buttons[i];\n var input = button.querySelector(SELECTOR_INPUT);\n\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 } // find all button toggles\n\n\n buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE));\n\n for (var _i = 0, _len = buttons.length; _i < _len; _i++) {\n var _button = buttons[_i];\n\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 * jQuery\n */\n\n $__default[\"default\"].fn[NAME] = Button._jQueryInterface;\n $__default[\"default\"].fn[NAME].Constructor = Button;\n\n $__default[\"default\"].fn[NAME].noConflict = function () {\n $__default[\"default\"].fn[NAME] = JQUERY_NO_CONFLICT;\n return Button._jQueryInterface;\n };\n\n return Button;\n\n}));\n//# sourceMappingURL=button.js.map\n","/*!\n * Bootstrap tab.js v4.6.2 (https://getbootstrap.com/)\n * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('jquery'), require('./util.js')) :\n typeof define === 'function' && define.amd ? define(['jquery', './util'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Tab = factory(global.jQuery, global.Util));\n})(this, (function ($, Util) { 'use strict';\n\n function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\n var $__default = /*#__PURE__*/_interopDefaultLegacy($);\n var Util__default = /*#__PURE__*/_interopDefaultLegacy(Util);\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n }\n\n /**\n * Constants\n */\n\n var NAME = 'tab';\n var VERSION = '4.6.2';\n var DATA_KEY = 'bs.tab';\n var EVENT_KEY = \".\" + DATA_KEY;\n var DATA_API_KEY = '.data-api';\n var JQUERY_NO_CONFLICT = $__default[\"default\"].fn[NAME];\n var CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu';\n var CLASS_NAME_ACTIVE = 'active';\n var CLASS_NAME_DISABLED = 'disabled';\n var CLASS_NAME_FADE = 'fade';\n var CLASS_NAME_SHOW = 'show';\n var EVENT_HIDE = \"hide\" + EVENT_KEY;\n var EVENT_HIDDEN = \"hidden\" + EVENT_KEY;\n var EVENT_SHOW = \"show\" + EVENT_KEY;\n var EVENT_SHOWN = \"shown\" + EVENT_KEY;\n var EVENT_CLICK_DATA_API = \"click\" + EVENT_KEY + DATA_API_KEY;\n var SELECTOR_DROPDOWN = '.dropdown';\n var SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';\n var SELECTOR_ACTIVE = '.active';\n var SELECTOR_ACTIVE_UL = '> li > .active';\n var SELECTOR_DATA_TOGGLE = '[data-toggle=\"tab\"], [data-toggle=\"pill\"], [data-toggle=\"list\"]';\n var SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';\n var SELECTOR_DROPDOWN_ACTIVE_CHILD = '> .dropdown-menu .active';\n /**\n * Class definition\n */\n\n var Tab = /*#__PURE__*/function () {\n function Tab(element) {\n this._element = element;\n } // Getters\n\n\n var _proto = Tab.prototype;\n\n // Public\n _proto.show = function show() {\n var _this = this;\n\n if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $__default[\"default\"](this._element).hasClass(CLASS_NAME_ACTIVE) || $__default[\"default\"](this._element).hasClass(CLASS_NAME_DISABLED) || this._element.hasAttribute('disabled')) {\n return;\n }\n\n var target;\n var previous;\n var listElement = $__default[\"default\"](this._element).closest(SELECTOR_NAV_LIST_GROUP)[0];\n var selector = Util__default[\"default\"].getSelectorFromElement(this._element);\n\n if (listElement) {\n var itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE;\n previous = $__default[\"default\"].makeArray($__default[\"default\"](listElement).find(itemSelector));\n previous = previous[previous.length - 1];\n }\n\n var hideEvent = $__default[\"default\"].Event(EVENT_HIDE, {\n relatedTarget: this._element\n });\n var showEvent = $__default[\"default\"].Event(EVENT_SHOW, {\n relatedTarget: previous\n });\n\n if (previous) {\n $__default[\"default\"](previous).trigger(hideEvent);\n }\n\n $__default[\"default\"](this._element).trigger(showEvent);\n\n if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) {\n return;\n }\n\n if (selector) {\n target = document.querySelector(selector);\n }\n\n this._activate(this._element, listElement);\n\n var complete = function complete() {\n var hiddenEvent = $__default[\"default\"].Event(EVENT_HIDDEN, {\n relatedTarget: _this._element\n });\n var shownEvent = $__default[\"default\"].Event(EVENT_SHOWN, {\n relatedTarget: previous\n });\n $__default[\"default\"](previous).trigger(hiddenEvent);\n $__default[\"default\"](_this._element).trigger(shownEvent);\n };\n\n if (target) {\n this._activate(target, target.parentNode, complete);\n } else {\n complete();\n }\n };\n\n _proto.dispose = function dispose() {\n $__default[\"default\"].removeData(this._element, DATA_KEY);\n this._element = null;\n } // Private\n ;\n\n _proto._activate = function _activate(element, container, callback) {\n var _this2 = this;\n\n var activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ? $__default[\"default\"](container).find(SELECTOR_ACTIVE_UL) : $__default[\"default\"](container).children(SELECTOR_ACTIVE);\n var active = activeElements[0];\n var isTransitioning = callback && active && $__default[\"default\"](active).hasClass(CLASS_NAME_FADE);\n\n var complete = function complete() {\n return _this2._transitionComplete(element, active, callback);\n };\n\n if (active && isTransitioning) {\n var transitionDuration = Util__default[\"default\"].getTransitionDurationFromElement(active);\n $__default[\"default\"](active).removeClass(CLASS_NAME_SHOW).one(Util__default[\"default\"].TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n };\n\n _proto._transitionComplete = function _transitionComplete(element, active, callback) {\n if (active) {\n $__default[\"default\"](active).removeClass(CLASS_NAME_ACTIVE);\n var dropdownChild = $__default[\"default\"](active.parentNode).find(SELECTOR_DROPDOWN_ACTIVE_CHILD)[0];\n\n if (dropdownChild) {\n $__default[\"default\"](dropdownChild).removeClass(CLASS_NAME_ACTIVE);\n }\n\n if (active.getAttribute('role') === 'tab') {\n active.setAttribute('aria-selected', false);\n }\n }\n\n $__default[\"default\"](element).addClass(CLASS_NAME_ACTIVE);\n\n if (element.getAttribute('role') === 'tab') {\n element.setAttribute('aria-selected', true);\n }\n\n Util__default[\"default\"].reflow(element);\n\n if (element.classList.contains(CLASS_NAME_FADE)) {\n element.classList.add(CLASS_NAME_SHOW);\n }\n\n var parent = element.parentNode;\n\n if (parent && parent.nodeName === 'LI') {\n parent = parent.parentNode;\n }\n\n if (parent && $__default[\"default\"](parent).hasClass(CLASS_NAME_DROPDOWN_MENU)) {\n var dropdownElement = $__default[\"default\"](element).closest(SELECTOR_DROPDOWN)[0];\n\n if (dropdownElement) {\n var dropdownToggleList = [].slice.call(dropdownElement.querySelectorAll(SELECTOR_DROPDOWN_TOGGLE));\n $__default[\"default\"](dropdownToggleList).addClass(CLASS_NAME_ACTIVE);\n }\n\n element.setAttribute('aria-expanded', true);\n }\n\n if (callback) {\n callback();\n }\n } // Static\n ;\n\n Tab._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $this = $__default[\"default\"](this);\n var 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 _createClass(Tab, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION;\n }\n }]);\n\n return Tab;\n }();\n /**\n * Data API implementation\n */\n\n\n $__default[\"default\"](document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n event.preventDefault();\n\n Tab._jQueryInterface.call($__default[\"default\"](this), 'show');\n });\n /**\n * jQuery\n */\n\n $__default[\"default\"].fn[NAME] = Tab._jQueryInterface;\n $__default[\"default\"].fn[NAME].Constructor = Tab;\n\n $__default[\"default\"].fn[NAME].noConflict = function () {\n $__default[\"default\"].fn[NAME] = JQUERY_NO_CONFLICT;\n return Tab._jQueryInterface;\n };\n\n return Tab;\n\n}));\n//# sourceMappingURL=tab.js.map\n","/*!\n * jQuery UI Autocomplete 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Autocomplete\n//>>group: Widgets\n//>>description: Lists suggested words as the user is typing.\n//>>docs: http://api.jqueryui.com/autocomplete/\n//>>demos: http://jqueryui.com/autocomplete/\n//>>css.structure: ../../themes/base/core.css\n//>>css.structure: ../../themes/base/autocomplete.css\n//>>css.theme: ../../themes/base/theme.css\n\n( function( factory ) {\n\t\"use strict\";\n\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [\n\t\t\t\"jquery\",\n\t\t\t\"./menu\",\n\t\t\t\"../keycode\",\n\t\t\t\"../position\",\n\t\t\t\"../safe-active-element\",\n\t\t\t\"../version\",\n\t\t\t\"../widget\"\n\t\t], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} )( function( $ ) {\n\"use strict\";\n\n$.widget( \"ui.autocomplete\", {\n\tversion: \"1.13.2\",\n\tdefaultElement: \"<input>\",\n\toptions: {\n\t\tappendTo: null,\n\t\tautoFocus: false,\n\t\tdelay: 300,\n\t\tminLength: 1,\n\t\tposition: {\n\t\t\tmy: \"left top\",\n\t\t\tat: \"left bottom\",\n\t\t\tcollision: \"none\"\n\t\t},\n\t\tsource: null,\n\n\t\t// Callbacks\n\t\tchange: null,\n\t\tclose: null,\n\t\tfocus: null,\n\t\topen: null,\n\t\tresponse: null,\n\t\tsearch: null,\n\t\tselect: null\n\t},\n\n\trequestIndex: 0,\n\tpending: 0,\n\tliveRegionTimer: null,\n\n\t_create: function() {\n\n\t\t// Some browsers only repeat keydown events, not keypress events,\n\t\t// so we use the suppressKeyPress flag to determine if we've already\n\t\t// handled the keydown event. #7269\n\t\t// Unfortunately the code for & in keypress is the same as the up arrow,\n\t\t// so we use the suppressKeyPressRepeat flag to avoid handling keypress\n\t\t// events when we know the keydown event was used to modify the\n\t\t// search term. #7799\n\t\tvar suppressKeyPress, suppressKeyPressRepeat, suppressInput,\n\t\t\tnodeName = this.element[ 0 ].nodeName.toLowerCase(),\n\t\t\tisTextarea = nodeName === \"textarea\",\n\t\t\tisInput = nodeName === \"input\";\n\n\t\t// Textareas are always multi-line\n\t\t// Inputs are always single-line, even if inside a contentEditable element\n\t\t// IE also treats inputs as contentEditable\n\t\t// All other element types are determined by whether or not they're contentEditable\n\t\tthis.isMultiLine = isTextarea || !isInput && this._isContentEditable( this.element );\n\n\t\tthis.valueMethod = this.element[ isTextarea || isInput ? \"val\" : \"text\" ];\n\t\tthis.isNewMenu = true;\n\n\t\tthis._addClass( \"ui-autocomplete-input\" );\n\t\tthis.element.attr( \"autocomplete\", \"off\" );\n\n\t\tthis._on( this.element, {\n\t\t\tkeydown: function( event ) {\n\t\t\t\tif ( this.element.prop( \"readOnly\" ) ) {\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tsuppressInput = true;\n\t\t\t\t\tsuppressKeyPressRepeat = true;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tsuppressKeyPress = false;\n\t\t\t\tsuppressInput = false;\n\t\t\t\tsuppressKeyPressRepeat = false;\n\t\t\t\tvar keyCode = $.ui.keyCode;\n\t\t\t\tswitch ( event.keyCode ) {\n\t\t\t\tcase keyCode.PAGE_UP:\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tthis._move( \"previousPage\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.PAGE_DOWN:\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tthis._move( \"nextPage\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.UP:\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tthis._keyEvent( \"previous\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.DOWN:\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tthis._keyEvent( \"next\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.ENTER:\n\n\t\t\t\t\t// when menu is open and has focus\n\t\t\t\t\tif ( this.menu.active ) {\n\n\t\t\t\t\t\t// #6055 - Opera still allows the keypress to occur\n\t\t\t\t\t\t// which causes forms to submit\n\t\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tthis.menu.select( event );\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.TAB:\n\t\t\t\t\tif ( this.menu.active ) {\n\t\t\t\t\t\tthis.menu.select( event );\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.ESCAPE:\n\t\t\t\t\tif ( this.menu.element.is( \":visible\" ) ) {\n\t\t\t\t\t\tif ( !this.isMultiLine ) {\n\t\t\t\t\t\t\tthis._value( this.term );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.close( event );\n\n\t\t\t\t\t\t// Different browsers have different default behavior for escape\n\t\t\t\t\t\t// Single press can mean undo or clear\n\t\t\t\t\t\t// Double press in IE means clear the whole form\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tsuppressKeyPressRepeat = true;\n\n\t\t\t\t\t// search timeout should be triggered before the input value is changed\n\t\t\t\t\tthis._searchTimeout( event );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t},\n\t\t\tkeypress: function( event ) {\n\t\t\t\tif ( suppressKeyPress ) {\n\t\t\t\t\tsuppressKeyPress = false;\n\t\t\t\t\tif ( !this.isMultiLine || this.menu.element.is( \":visible\" ) ) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif ( suppressKeyPressRepeat ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Replicate some key handlers to allow them to repeat in Firefox and Opera\n\t\t\t\tvar keyCode = $.ui.keyCode;\n\t\t\t\tswitch ( event.keyCode ) {\n\t\t\t\tcase keyCode.PAGE_UP:\n\t\t\t\t\tthis._move( \"previousPage\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.PAGE_DOWN:\n\t\t\t\t\tthis._move( \"nextPage\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.UP:\n\t\t\t\t\tthis._keyEvent( \"previous\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.DOWN:\n\t\t\t\t\tthis._keyEvent( \"next\", event );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t},\n\t\t\tinput: function( event ) {\n\t\t\t\tif ( suppressInput ) {\n\t\t\t\t\tsuppressInput = false;\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._searchTimeout( event );\n\t\t\t},\n\t\t\tfocus: function() {\n\t\t\t\tthis.selectedItem = null;\n\t\t\t\tthis.previous = this._value();\n\t\t\t},\n\t\t\tblur: function( event ) {\n\t\t\t\tclearTimeout( this.searching );\n\t\t\t\tthis.close( event );\n\t\t\t\tthis._change( event );\n\t\t\t}\n\t\t} );\n\n\t\tthis._initSource();\n\t\tthis.menu = $( \"<ul>\" )\n\t\t\t.appendTo( this._appendTo() )\n\t\t\t.menu( {\n\n\t\t\t\t// disable ARIA support, the live region takes care of that\n\t\t\t\trole: null\n\t\t\t} )\n\t\t\t.hide()\n\n\t\t\t// Support: IE 11 only, Edge <= 14\n\t\t\t// For other browsers, we preventDefault() on the mousedown event\n\t\t\t// to keep the dropdown from taking focus from the input. This doesn't\n\t\t\t// work for IE/Edge, causing problems with selection and scrolling (#9638)\n\t\t\t// Happily, IE and Edge support an \"unselectable\" attribute that\n\t\t\t// prevents an element from receiving focus, exactly what we want here.\n\t\t\t.attr( {\n\t\t\t\t\"unselectable\": \"on\"\n\t\t\t} )\n\t\t\t.menu( \"instance\" );\n\n\t\tthis._addClass( this.menu.element, \"ui-autocomplete\", \"ui-front\" );\n\t\tthis._on( this.menu.element, {\n\t\t\tmousedown: function( event ) {\n\n\t\t\t\t// Prevent moving focus out of the text field\n\t\t\t\tevent.preventDefault();\n\t\t\t},\n\t\t\tmenufocus: function( event, ui ) {\n\t\t\t\tvar label, item;\n\n\t\t\t\t// support: Firefox\n\t\t\t\t// Prevent accidental activation of menu items in Firefox (#7024 #9118)\n\t\t\t\tif ( this.isNewMenu ) {\n\t\t\t\t\tthis.isNewMenu = false;\n\t\t\t\t\tif ( event.originalEvent && /^mouse/.test( event.originalEvent.type ) ) {\n\t\t\t\t\t\tthis.menu.blur();\n\n\t\t\t\t\t\tthis.document.one( \"mousemove\", function() {\n\t\t\t\t\t\t\t$( event.target ).trigger( event.originalEvent );\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\titem = ui.item.data( \"ui-autocomplete-item\" );\n\t\t\t\tif ( false !== this._trigger( \"focus\", event, { item: item } ) ) {\n\n\t\t\t\t\t// use value to match what will end up in the input, if it was a key event\n\t\t\t\t\tif ( event.originalEvent && /^key/.test( event.originalEvent.type ) ) {\n\t\t\t\t\t\tthis._value( item.value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Announce the value in the liveRegion\n\t\t\t\tlabel = ui.item.attr( \"aria-label\" ) || item.value;\n\t\t\t\tif ( label && String.prototype.trim.call( label ).length ) {\n\t\t\t\t\tclearTimeout( this.liveRegionTimer );\n\t\t\t\t\tthis.liveRegionTimer = this._delay( function() {\n\t\t\t\t\t\tthis.liveRegion.html( $( \"<div>\" ).text( label ) );\n\t\t\t\t\t}, 100 );\n\t\t\t\t}\n\t\t\t},\n\t\t\tmenuselect: function( event, ui ) {\n\t\t\t\tvar item = ui.item.data( \"ui-autocomplete-item\" ),\n\t\t\t\t\tprevious = this.previous;\n\n\t\t\t\t// Only trigger when focus was lost (click on menu)\n\t\t\t\tif ( this.element[ 0 ] !== $.ui.safeActiveElement( this.document[ 0 ] ) ) {\n\t\t\t\t\tthis.element.trigger( \"focus\" );\n\t\t\t\t\tthis.previous = previous;\n\n\t\t\t\t\t// #6109 - IE triggers two focus events and the second\n\t\t\t\t\t// is asynchronous, so we need to reset the previous\n\t\t\t\t\t// term synchronously and asynchronously :-(\n\t\t\t\t\tthis._delay( function() {\n\t\t\t\t\t\tthis.previous = previous;\n\t\t\t\t\t\tthis.selectedItem = item;\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\tif ( false !== this._trigger( \"select\", event, { item: item } ) ) {\n\t\t\t\t\tthis._value( item.value );\n\t\t\t\t}\n\n\t\t\t\t// reset the term after the select event\n\t\t\t\t// this allows custom select handling to work properly\n\t\t\t\tthis.term = this._value();\n\n\t\t\t\tthis.close( event );\n\t\t\t\tthis.selectedItem = item;\n\t\t\t}\n\t\t} );\n\n\t\tthis.liveRegion = $( \"<div>\", {\n\t\t\trole: \"status\",\n\t\t\t\"aria-live\": \"assertive\",\n\t\t\t\"aria-relevant\": \"additions\"\n\t\t} )\n\t\t\t.appendTo( this.document[ 0 ].body );\n\n\t\tthis._addClass( this.liveRegion, null, \"ui-helper-hidden-accessible\" );\n\n\t\t// Turning off autocomplete prevents the browser from remembering the\n\t\t// value when navigating through history, so we re-enable autocomplete\n\t\t// if the page is unloaded before the widget is destroyed. #7790\n\t\tthis._on( this.window, {\n\t\t\tbeforeunload: function() {\n\t\t\t\tthis.element.removeAttr( \"autocomplete\" );\n\t\t\t}\n\t\t} );\n\t},\n\n\t_destroy: function() {\n\t\tclearTimeout( this.searching );\n\t\tthis.element.removeAttr( \"autocomplete\" );\n\t\tthis.menu.element.remove();\n\t\tthis.liveRegion.remove();\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tthis._super( key, value );\n\t\tif ( key === \"source\" ) {\n\t\t\tthis._initSource();\n\t\t}\n\t\tif ( key === \"appendTo\" ) {\n\t\t\tthis.menu.element.appendTo( this._appendTo() );\n\t\t}\n\t\tif ( key === \"disabled\" && value && this.xhr ) {\n\t\t\tthis.xhr.abort();\n\t\t}\n\t},\n\n\t_isEventTargetInWidget: function( event ) {\n\t\tvar menuElement = this.menu.element[ 0 ];\n\n\t\treturn event.target === this.element[ 0 ] ||\n\t\t\tevent.target === menuElement ||\n\t\t\t$.contains( menuElement, event.target );\n\t},\n\n\t_closeOnClickOutside: function( event ) {\n\t\tif ( !this._isEventTargetInWidget( event ) ) {\n\t\t\tthis.close();\n\t\t}\n\t},\n\n\t_appendTo: function() {\n\t\tvar element = this.options.appendTo;\n\n\t\tif ( element ) {\n\t\t\telement = element.jquery || element.nodeType ?\n\t\t\t\t$( element ) :\n\t\t\t\tthis.document.find( element ).eq( 0 );\n\t\t}\n\n\t\tif ( !element || !element[ 0 ] ) {\n\t\t\telement = this.element.closest( \".ui-front, dialog\" );\n\t\t}\n\n\t\tif ( !element.length ) {\n\t\t\telement = this.document[ 0 ].body;\n\t\t}\n\n\t\treturn element;\n\t},\n\n\t_initSource: function() {\n\t\tvar array, url,\n\t\t\tthat = this;\n\t\tif ( Array.isArray( this.options.source ) ) {\n\t\t\tarray = this.options.source;\n\t\t\tthis.source = function( request, response ) {\n\t\t\t\tresponse( $.ui.autocomplete.filter( array, request.term ) );\n\t\t\t};\n\t\t} else if ( typeof this.options.source === \"string\" ) {\n\t\t\turl = this.options.source;\n\t\t\tthis.source = function( request, response ) {\n\t\t\t\tif ( that.xhr ) {\n\t\t\t\t\tthat.xhr.abort();\n\t\t\t\t}\n\t\t\t\tthat.xhr = $.ajax( {\n\t\t\t\t\turl: url,\n\t\t\t\t\tdata: request,\n\t\t\t\t\tdataType: \"json\",\n\t\t\t\t\tsuccess: function( data ) {\n\t\t\t\t\t\tresponse( data );\n\t\t\t\t\t},\n\t\t\t\t\terror: function() {\n\t\t\t\t\t\tresponse( [] );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t};\n\t\t} else {\n\t\t\tthis.source = this.options.source;\n\t\t}\n\t},\n\n\t_searchTimeout: function( event ) {\n\t\tclearTimeout( this.searching );\n\t\tthis.searching = this._delay( function() {\n\n\t\t\t// Search if the value has changed, or if the user retypes the same value (see #7434)\n\t\t\tvar equalValues = this.term === this._value(),\n\t\t\t\tmenuVisible = this.menu.element.is( \":visible\" ),\n\t\t\t\tmodifierKey = event.altKey || event.ctrlKey || event.metaKey || event.shiftKey;\n\n\t\t\tif ( !equalValues || ( equalValues && !menuVisible && !modifierKey ) ) {\n\t\t\t\tthis.selectedItem = null;\n\t\t\t\tthis.search( null, event );\n\t\t\t}\n\t\t}, this.options.delay );\n\t},\n\n\tsearch: function( value, event ) {\n\t\tvalue = value != null ? value : this._value();\n\n\t\t// Always save the actual value, not the one passed as an argument\n\t\tthis.term = this._value();\n\n\t\tif ( value.length < this.options.minLength ) {\n\t\t\treturn this.close( event );\n\t\t}\n\n\t\tif ( this._trigger( \"search\", event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn this._search( value );\n\t},\n\n\t_search: function( value ) {\n\t\tthis.pending++;\n\t\tthis._addClass( \"ui-autocomplete-loading\" );\n\t\tthis.cancelSearch = false;\n\n\t\tthis.source( { term: value }, this._response() );\n\t},\n\n\t_response: function() {\n\t\tvar index = ++this.requestIndex;\n\n\t\treturn function( content ) {\n\t\t\tif ( index === this.requestIndex ) {\n\t\t\t\tthis.__response( content );\n\t\t\t}\n\n\t\t\tthis.pending--;\n\t\t\tif ( !this.pending ) {\n\t\t\t\tthis._removeClass( \"ui-autocomplete-loading\" );\n\t\t\t}\n\t\t}.bind( this );\n\t},\n\n\t__response: function( content ) {\n\t\tif ( content ) {\n\t\t\tcontent = this._normalize( content );\n\t\t}\n\t\tthis._trigger( \"response\", null, { content: content } );\n\t\tif ( !this.options.disabled && content && content.length && !this.cancelSearch ) {\n\t\t\tthis._suggest( content );\n\t\t\tthis._trigger( \"open\" );\n\t\t} else {\n\n\t\t\t// use ._close() instead of .close() so we don't cancel future searches\n\t\t\tthis._close();\n\t\t}\n\t},\n\n\tclose: function( event ) {\n\t\tthis.cancelSearch = true;\n\t\tthis._close( event );\n\t},\n\n\t_close: function( event ) {\n\n\t\t// Remove the handler that closes the menu on outside clicks\n\t\tthis._off( this.document, \"mousedown\" );\n\n\t\tif ( this.menu.element.is( \":visible\" ) ) {\n\t\t\tthis.menu.element.hide();\n\t\t\tthis.menu.blur();\n\t\t\tthis.isNewMenu = true;\n\t\t\tthis._trigger( \"close\", event );\n\t\t}\n\t},\n\n\t_change: function( event ) {\n\t\tif ( this.previous !== this._value() ) {\n\t\t\tthis._trigger( \"change\", event, { item: this.selectedItem } );\n\t\t}\n\t},\n\n\t_normalize: function( items ) {\n\n\t\t// assume all items have the right format when the first item is complete\n\t\tif ( items.length && items[ 0 ].label && items[ 0 ].value ) {\n\t\t\treturn items;\n\t\t}\n\t\treturn $.map( items, function( item ) {\n\t\t\tif ( typeof item === \"string\" ) {\n\t\t\t\treturn {\n\t\t\t\t\tlabel: item,\n\t\t\t\t\tvalue: item\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn $.extend( {}, item, {\n\t\t\t\tlabel: item.label || item.value,\n\t\t\t\tvalue: item.value || item.label\n\t\t\t} );\n\t\t} );\n\t},\n\n\t_suggest: function( items ) {\n\t\tvar ul = this.menu.element.empty();\n\t\tthis._renderMenu( ul, items );\n\t\tthis.isNewMenu = true;\n\t\tthis.menu.refresh();\n\n\t\t// Size and position menu\n\t\tul.show();\n\t\tthis._resizeMenu();\n\t\tul.position( $.extend( {\n\t\t\tof: this.element\n\t\t}, this.options.position ) );\n\n\t\tif ( this.options.autoFocus ) {\n\t\t\tthis.menu.next();\n\t\t}\n\n\t\t// Listen for interactions outside of the widget (#6642)\n\t\tthis._on( this.document, {\n\t\t\tmousedown: \"_closeOnClickOutside\"\n\t\t} );\n\t},\n\n\t_resizeMenu: function() {\n\t\tvar ul = this.menu.element;\n\t\tul.outerWidth( Math.max(\n\n\t\t\t// Firefox wraps long text (possibly a rounding bug)\n\t\t\t// so we add 1px to avoid the wrapping (#7513)\n\t\t\tul.width( \"\" ).outerWidth() + 1,\n\t\t\tthis.element.outerWidth()\n\t\t) );\n\t},\n\n\t_renderMenu: function( ul, items ) {\n\t\tvar that = this;\n\t\t$.each( items, function( index, item ) {\n\t\t\tthat._renderItemData( ul, item );\n\t\t} );\n\t},\n\n\t_renderItemData: function( ul, item ) {\n\t\treturn this._renderItem( ul, item ).data( \"ui-autocomplete-item\", item );\n\t},\n\n\t_renderItem: function( ul, item ) {\n\t\treturn $( \"<li>\" )\n\t\t\t.append( $( \"<div>\" ).text( item.label ) )\n\t\t\t.appendTo( ul );\n\t},\n\n\t_move: function( direction, event ) {\n\t\tif ( !this.menu.element.is( \":visible\" ) ) {\n\t\t\tthis.search( null, event );\n\t\t\treturn;\n\t\t}\n\t\tif ( this.menu.isFirstItem() && /^previous/.test( direction ) ||\n\t\t\t\tthis.menu.isLastItem() && /^next/.test( direction ) ) {\n\n\t\t\tif ( !this.isMultiLine ) {\n\t\t\t\tthis._value( this.term );\n\t\t\t}\n\n\t\t\tthis.menu.blur();\n\t\t\treturn;\n\t\t}\n\t\tthis.menu[ direction ]( event );\n\t},\n\n\twidget: function() {\n\t\treturn this.menu.element;\n\t},\n\n\t_value: function() {\n\t\treturn this.valueMethod.apply( this.element, arguments );\n\t},\n\n\t_keyEvent: function( keyEvent, event ) {\n\t\tif ( !this.isMultiLine || this.menu.element.is( \":visible\" ) ) {\n\t\t\tthis._move( keyEvent, event );\n\n\t\t\t// Prevents moving cursor to beginning/end of the text field in some browsers\n\t\t\tevent.preventDefault();\n\t\t}\n\t},\n\n\t// Support: Chrome <=50\n\t// We should be able to just use this.element.prop( \"isContentEditable\" )\n\t// but hidden elements always report false in Chrome.\n\t// https://code.google.com/p/chromium/issues/detail?id=313082\n\t_isContentEditable: function( element ) {\n\t\tif ( !element.length ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar editable = element.prop( \"contentEditable\" );\n\n\t\tif ( editable === \"inherit\" ) {\n\t\t\treturn this._isContentEditable( element.parent() );\n\t\t}\n\n\t\treturn editable === \"true\";\n\t}\n} );\n\n$.extend( $.ui.autocomplete, {\n\tescapeRegex: function( value ) {\n\t\treturn value.replace( /[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, \"\\\\$&\" );\n\t},\n\tfilter: function( array, term ) {\n\t\tvar matcher = new RegExp( $.ui.autocomplete.escapeRegex( term ), \"i\" );\n\t\treturn $.grep( array, function( value ) {\n\t\t\treturn matcher.test( value.label || value.value || value );\n\t\t} );\n\t}\n} );\n\n// Live region extension, adding a `messages` option\n// NOTE: This is an experimental API. We are still investigating\n// a full solution for string manipulation and internationalization.\n$.widget( \"ui.autocomplete\", $.ui.autocomplete, {\n\toptions: {\n\t\tmessages: {\n\t\t\tnoResults: \"No search results.\",\n\t\t\tresults: function( amount ) {\n\t\t\t\treturn amount + ( amount > 1 ? \" results are\" : \" result is\" ) +\n\t\t\t\t\t\" available, use up and down arrow keys to navigate.\";\n\t\t\t}\n\t\t}\n\t},\n\n\t__response: function( content ) {\n\t\tvar message;\n\t\tthis._superApply( arguments );\n\t\tif ( this.options.disabled || this.cancelSearch ) {\n\t\t\treturn;\n\t\t}\n\t\tif ( content && content.length ) {\n\t\t\tmessage = this.options.messages.results( content.length );\n\t\t} else {\n\t\t\tmessage = this.options.messages.noResults;\n\t\t}\n\t\tclearTimeout( this.liveRegionTimer );\n\t\tthis.liveRegionTimer = this._delay( function() {\n\t\t\tthis.liveRegion.html( $( \"<div>\" ).text( message ) );\n\t\t}, 100 );\n\t}\n} );\n\nreturn $.ui.autocomplete;\n\n} );\n","/*!\n * jQuery UI Menu 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Menu\n//>>group: Widgets\n//>>description: Creates nestable menus.\n//>>docs: http://api.jqueryui.com/menu/\n//>>demos: http://jqueryui.com/menu/\n//>>css.structure: ../../themes/base/core.css\n//>>css.structure: ../../themes/base/menu.css\n//>>css.theme: ../../themes/base/theme.css\n\n( function( factory ) {\n\t\"use strict\";\n\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [\n\t\t\t\"jquery\",\n\t\t\t\"../keycode\",\n\t\t\t\"../position\",\n\t\t\t\"../safe-active-element\",\n\t\t\t\"../unique-id\",\n\t\t\t\"../version\",\n\t\t\t\"../widget\"\n\t\t], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} )( function( $ ) {\n\"use strict\";\n\nreturn $.widget( \"ui.menu\", {\n\tversion: \"1.13.2\",\n\tdefaultElement: \"<ul>\",\n\tdelay: 300,\n\toptions: {\n\t\ticons: {\n\t\t\tsubmenu: \"ui-icon-caret-1-e\"\n\t\t},\n\t\titems: \"> *\",\n\t\tmenus: \"ul\",\n\t\tposition: {\n\t\t\tmy: \"left top\",\n\t\t\tat: \"right top\"\n\t\t},\n\t\trole: \"menu\",\n\n\t\t// Callbacks\n\t\tblur: null,\n\t\tfocus: null,\n\t\tselect: null\n\t},\n\n\t_create: function() {\n\t\tthis.activeMenu = this.element;\n\n\t\t// Flag used to prevent firing of the click handler\n\t\t// as the event bubbles up through nested menus\n\t\tthis.mouseHandled = false;\n\t\tthis.lastMousePosition = { x: null, y: null };\n\t\tthis.element\n\t\t\t.uniqueId()\n\t\t\t.attr( {\n\t\t\t\trole: this.options.role,\n\t\t\t\ttabIndex: 0\n\t\t\t} );\n\n\t\tthis._addClass( \"ui-menu\", \"ui-widget ui-widget-content\" );\n\t\tthis._on( {\n\n\t\t\t// Prevent focus from sticking to links inside menu after clicking\n\t\t\t// them (focus should always stay on UL during navigation).\n\t\t\t\"mousedown .ui-menu-item\": function( event ) {\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\tthis._activateItem( event );\n\t\t\t},\n\t\t\t\"click .ui-menu-item\": function( event ) {\n\t\t\t\tvar target = $( event.target );\n\t\t\t\tvar active = $( $.ui.safeActiveElement( this.document[ 0 ] ) );\n\t\t\t\tif ( !this.mouseHandled && target.not( \".ui-state-disabled\" ).length ) {\n\t\t\t\t\tthis.select( event );\n\n\t\t\t\t\t// Only set the mouseHandled flag if the event will bubble, see #9469.\n\t\t\t\t\tif ( !event.isPropagationStopped() ) {\n\t\t\t\t\t\tthis.mouseHandled = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Open submenu on click\n\t\t\t\t\tif ( target.has( \".ui-menu\" ).length ) {\n\t\t\t\t\t\tthis.expand( event );\n\t\t\t\t\t} else if ( !this.element.is( \":focus\" ) &&\n\t\t\t\t\t\t\tactive.closest( \".ui-menu\" ).length ) {\n\n\t\t\t\t\t\t// Redirect focus to the menu\n\t\t\t\t\t\tthis.element.trigger( \"focus\", [ true ] );\n\n\t\t\t\t\t\t// If the active item is on the top level, let it stay active.\n\t\t\t\t\t\t// Otherwise, blur the active item since it is no longer visible.\n\t\t\t\t\t\tif ( this.active && this.active.parents( \".ui-menu\" ).length === 1 ) {\n\t\t\t\t\t\t\tclearTimeout( this.timer );\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\t\"mouseenter .ui-menu-item\": \"_activateItem\",\n\t\t\t\"mousemove .ui-menu-item\": \"_activateItem\",\n\t\t\tmouseleave: \"collapseAll\",\n\t\t\t\"mouseleave .ui-menu\": \"collapseAll\",\n\t\t\tfocus: function( event, keepActiveItem ) {\n\n\t\t\t\t// If there's already an active item, keep it active\n\t\t\t\t// If not, activate the first item\n\t\t\t\tvar item = this.active || this._menuItems().first();\n\n\t\t\t\tif ( !keepActiveItem ) {\n\t\t\t\t\tthis.focus( event, item );\n\t\t\t\t}\n\t\t\t},\n\t\t\tblur: function( event ) {\n\t\t\t\tthis._delay( function() {\n\t\t\t\t\tvar notContained = !$.contains(\n\t\t\t\t\t\tthis.element[ 0 ],\n\t\t\t\t\t\t$.ui.safeActiveElement( this.document[ 0 ] )\n\t\t\t\t\t);\n\t\t\t\t\tif ( notContained ) {\n\t\t\t\t\t\tthis.collapseAll( event );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t},\n\t\t\tkeydown: \"_keydown\"\n\t\t} );\n\n\t\tthis.refresh();\n\n\t\t// Clicks outside of a menu collapse any open menus\n\t\tthis._on( this.document, {\n\t\t\tclick: function( event ) {\n\t\t\t\tif ( this._closeOnDocumentClick( event ) ) {\n\t\t\t\t\tthis.collapseAll( event, true );\n\t\t\t\t}\n\n\t\t\t\t// Reset the mouseHandled flag\n\t\t\t\tthis.mouseHandled = false;\n\t\t\t}\n\t\t} );\n\t},\n\n\t_activateItem: function( event ) {\n\n\t\t// Ignore mouse events while typeahead is active, see #10458.\n\t\t// Prevents focusing the wrong item when typeahead causes a scroll while the mouse\n\t\t// is over an item in the menu\n\t\tif ( this.previousFilter ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If the mouse didn't actually move, but the page was scrolled, ignore the event (#9356)\n\t\tif ( event.clientX === this.lastMousePosition.x &&\n\t\t\t\tevent.clientY === this.lastMousePosition.y ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.lastMousePosition = {\n\t\t\tx: event.clientX,\n\t\t\ty: event.clientY\n\t\t};\n\n\t\tvar actualTarget = $( event.target ).closest( \".ui-menu-item\" ),\n\t\t\ttarget = $( event.currentTarget );\n\n\t\t// Ignore bubbled events on parent items, see #11641\n\t\tif ( actualTarget[ 0 ] !== target[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If the item is already active, there's nothing to do\n\t\tif ( target.is( \".ui-state-active\" ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remove ui-state-active class from siblings of the newly focused menu item\n\t\t// to avoid a jump caused by adjacent elements both having a class with a border\n\t\tthis._removeClass( target.siblings().children( \".ui-state-active\" ),\n\t\t\tnull, \"ui-state-active\" );\n\t\tthis.focus( event, target );\n\t},\n\n\t_destroy: function() {\n\t\tvar items = this.element.find( \".ui-menu-item\" )\n\t\t\t\t.removeAttr( \"role aria-disabled\" ),\n\t\t\tsubmenus = items.children( \".ui-menu-item-wrapper\" )\n\t\t\t\t.removeUniqueId()\n\t\t\t\t.removeAttr( \"tabIndex role aria-haspopup\" );\n\n\t\t// Destroy (sub)menus\n\t\tthis.element\n\t\t\t.removeAttr( \"aria-activedescendant\" )\n\t\t\t.find( \".ui-menu\" ).addBack()\n\t\t\t\t.removeAttr( \"role aria-labelledby aria-expanded aria-hidden aria-disabled \" +\n\t\t\t\t\t\"tabIndex\" )\n\t\t\t\t.removeUniqueId()\n\t\t\t\t.show();\n\n\t\tsubmenus.children().each( function() {\n\t\t\tvar elem = $( this );\n\t\t\tif ( elem.data( \"ui-menu-submenu-caret\" ) ) {\n\t\t\t\telem.remove();\n\t\t\t}\n\t\t} );\n\t},\n\n\t_keydown: function( event ) {\n\t\tvar match, prev, character, skip,\n\t\t\tpreventDefault = true;\n\n\t\tswitch ( event.keyCode ) {\n\t\tcase $.ui.keyCode.PAGE_UP:\n\t\t\tthis.previousPage( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.PAGE_DOWN:\n\t\t\tthis.nextPage( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.HOME:\n\t\t\tthis._move( \"first\", \"first\", event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.END:\n\t\t\tthis._move( \"last\", \"last\", event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.UP:\n\t\t\tthis.previous( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.DOWN:\n\t\t\tthis.next( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.LEFT:\n\t\t\tthis.collapse( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.RIGHT:\n\t\t\tif ( this.active && !this.active.is( \".ui-state-disabled\" ) ) {\n\t\t\t\tthis.expand( event );\n\t\t\t}\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.ENTER:\n\t\tcase $.ui.keyCode.SPACE:\n\t\t\tthis._activate( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.ESCAPE:\n\t\t\tthis.collapse( event );\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tpreventDefault = false;\n\t\t\tprev = this.previousFilter || \"\";\n\t\t\tskip = false;\n\n\t\t\t// Support number pad values\n\t\t\tcharacter = event.keyCode >= 96 && event.keyCode <= 105 ?\n\t\t\t\t( event.keyCode - 96 ).toString() : String.fromCharCode( event.keyCode );\n\n\t\t\tclearTimeout( this.filterTimer );\n\n\t\t\tif ( character === prev ) {\n\t\t\t\tskip = true;\n\t\t\t} else {\n\t\t\t\tcharacter = prev + character;\n\t\t\t}\n\n\t\t\tmatch = this._filterMenuItems( character );\n\t\t\tmatch = skip && match.index( this.active.next() ) !== -1 ?\n\t\t\t\tthis.active.nextAll( \".ui-menu-item\" ) :\n\t\t\t\tmatch;\n\n\t\t\t// If no matches on the current filter, reset to the last character pressed\n\t\t\t// to move down the menu to the first item that starts with that character\n\t\t\tif ( !match.length ) {\n\t\t\t\tcharacter = String.fromCharCode( event.keyCode );\n\t\t\t\tmatch = this._filterMenuItems( character );\n\t\t\t}\n\n\t\t\tif ( match.length ) {\n\t\t\t\tthis.focus( event, match );\n\t\t\t\tthis.previousFilter = character;\n\t\t\t\tthis.filterTimer = this._delay( function() {\n\t\t\t\t\tdelete this.previousFilter;\n\t\t\t\t}, 1000 );\n\t\t\t} else {\n\t\t\t\tdelete this.previousFilter;\n\t\t\t}\n\t\t}\n\n\t\tif ( preventDefault ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t},\n\n\t_activate: function( event ) {\n\t\tif ( this.active && !this.active.is( \".ui-state-disabled\" ) ) {\n\t\t\tif ( this.active.children( \"[aria-haspopup='true']\" ).length ) {\n\t\t\t\tthis.expand( event );\n\t\t\t} else {\n\t\t\t\tthis.select( event );\n\t\t\t}\n\t\t}\n\t},\n\n\trefresh: function() {\n\t\tvar menus, items, newSubmenus, newItems, newWrappers,\n\t\t\tthat = this,\n\t\t\ticon = this.options.icons.submenu,\n\t\t\tsubmenus = this.element.find( this.options.menus );\n\n\t\tthis._toggleClass( \"ui-menu-icons\", null, !!this.element.find( \".ui-icon\" ).length );\n\n\t\t// Initialize nested menus\n\t\tnewSubmenus = submenus.filter( \":not(.ui-menu)\" )\n\t\t\t.hide()\n\t\t\t.attr( {\n\t\t\t\trole: this.options.role,\n\t\t\t\t\"aria-hidden\": \"true\",\n\t\t\t\t\"aria-expanded\": \"false\"\n\t\t\t} )\n\t\t\t.each( function() {\n\t\t\t\tvar menu = $( this ),\n\t\t\t\t\titem = menu.prev(),\n\t\t\t\t\tsubmenuCaret = $( \"<span>\" ).data( \"ui-menu-submenu-caret\", true );\n\n\t\t\t\tthat._addClass( submenuCaret, \"ui-menu-icon\", \"ui-icon \" + icon );\n\t\t\t\titem\n\t\t\t\t\t.attr( \"aria-haspopup\", \"true\" )\n\t\t\t\t\t.prepend( submenuCaret );\n\t\t\t\tmenu.attr( \"aria-labelledby\", item.attr( \"id\" ) );\n\t\t\t} );\n\n\t\tthis._addClass( newSubmenus, \"ui-menu\", \"ui-widget ui-widget-content ui-front\" );\n\n\t\tmenus = submenus.add( this.element );\n\t\titems = menus.find( this.options.items );\n\n\t\t// Initialize menu-items containing spaces and/or dashes only as dividers\n\t\titems.not( \".ui-menu-item\" ).each( function() {\n\t\t\tvar item = $( this );\n\t\t\tif ( that._isDivider( item ) ) {\n\t\t\t\tthat._addClass( item, \"ui-menu-divider\", \"ui-widget-content\" );\n\t\t\t}\n\t\t} );\n\n\t\t// Don't refresh list items that are already adapted\n\t\tnewItems = items.not( \".ui-menu-item, .ui-menu-divider\" );\n\t\tnewWrappers = newItems.children()\n\t\t\t.not( \".ui-menu\" )\n\t\t\t\t.uniqueId()\n\t\t\t\t.attr( {\n\t\t\t\t\ttabIndex: -1,\n\t\t\t\t\trole: this._itemRole()\n\t\t\t\t} );\n\t\tthis._addClass( newItems, \"ui-menu-item\" )\n\t\t\t._addClass( newWrappers, \"ui-menu-item-wrapper\" );\n\n\t\t// Add aria-disabled attribute to any disabled menu item\n\t\titems.filter( \".ui-state-disabled\" ).attr( \"aria-disabled\", \"true\" );\n\n\t\t// If the active item has been removed, blur the menu\n\t\tif ( this.active && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) {\n\t\t\tthis.blur();\n\t\t}\n\t},\n\n\t_itemRole: function() {\n\t\treturn {\n\t\t\tmenu: \"menuitem\",\n\t\t\tlistbox: \"option\"\n\t\t}[ this.options.role ];\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"icons\" ) {\n\t\t\tvar icons = this.element.find( \".ui-menu-icon\" );\n\t\t\tthis._removeClass( icons, null, this.options.icons.submenu )\n\t\t\t\t._addClass( icons, null, value.submenu );\n\t\t}\n\t\tthis._super( key, value );\n\t},\n\n\t_setOptionDisabled: function( value ) {\n\t\tthis._super( value );\n\n\t\tthis.element.attr( \"aria-disabled\", String( value ) );\n\t\tthis._toggleClass( null, \"ui-state-disabled\", !!value );\n\t},\n\n\tfocus: function( event, item ) {\n\t\tvar nested, focused, activeParent;\n\t\tthis.blur( event, event && event.type === \"focus\" );\n\n\t\tthis._scrollIntoView( item );\n\n\t\tthis.active = item.first();\n\n\t\tfocused = this.active.children( \".ui-menu-item-wrapper\" );\n\t\tthis._addClass( focused, null, \"ui-state-active\" );\n\n\t\t// Only update aria-activedescendant if there's a role\n\t\t// otherwise we assume focus is managed elsewhere\n\t\tif ( this.options.role ) {\n\t\t\tthis.element.attr( \"aria-activedescendant\", focused.attr( \"id\" ) );\n\t\t}\n\n\t\t// Highlight active parent menu item, if any\n\t\tactiveParent = this.active\n\t\t\t.parent()\n\t\t\t\t.closest( \".ui-menu-item\" )\n\t\t\t\t\t.children( \".ui-menu-item-wrapper\" );\n\t\tthis._addClass( activeParent, null, \"ui-state-active\" );\n\n\t\tif ( event && event.type === \"keydown\" ) {\n\t\t\tthis._close();\n\t\t} else {\n\t\t\tthis.timer = this._delay( function() {\n\t\t\t\tthis._close();\n\t\t\t}, this.delay );\n\t\t}\n\n\t\tnested = item.children( \".ui-menu\" );\n\t\tif ( nested.length && event && ( /^mouse/.test( event.type ) ) ) {\n\t\t\tthis._startOpening( nested );\n\t\t}\n\t\tthis.activeMenu = item.parent();\n\n\t\tthis._trigger( \"focus\", event, { item: item } );\n\t},\n\n\t_scrollIntoView: function( item ) {\n\t\tvar borderTop, paddingTop, offset, scroll, elementHeight, itemHeight;\n\t\tif ( this._hasScroll() ) {\n\t\t\tborderTop = parseFloat( $.css( this.activeMenu[ 0 ], \"borderTopWidth\" ) ) || 0;\n\t\t\tpaddingTop = parseFloat( $.css( this.activeMenu[ 0 ], \"paddingTop\" ) ) || 0;\n\t\t\toffset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop;\n\t\t\tscroll = this.activeMenu.scrollTop();\n\t\t\telementHeight = this.activeMenu.height();\n\t\t\titemHeight = item.outerHeight();\n\n\t\t\tif ( offset < 0 ) {\n\t\t\t\tthis.activeMenu.scrollTop( scroll + offset );\n\t\t\t} else if ( offset + itemHeight > elementHeight ) {\n\t\t\t\tthis.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight );\n\t\t\t}\n\t\t}\n\t},\n\n\tblur: function( event, fromFocus ) {\n\t\tif ( !fromFocus ) {\n\t\t\tclearTimeout( this.timer );\n\t\t}\n\n\t\tif ( !this.active ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._removeClass( this.active.children( \".ui-menu-item-wrapper\" ),\n\t\t\tnull, \"ui-state-active\" );\n\n\t\tthis._trigger( \"blur\", event, { item: this.active } );\n\t\tthis.active = null;\n\t},\n\n\t_startOpening: function( submenu ) {\n\t\tclearTimeout( this.timer );\n\n\t\t// Don't open if already open fixes a Firefox bug that caused a .5 pixel\n\t\t// shift in the submenu position when mousing over the caret icon\n\t\tif ( submenu.attr( \"aria-hidden\" ) !== \"true\" ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.timer = this._delay( function() {\n\t\t\tthis._close();\n\t\t\tthis._open( submenu );\n\t\t}, this.delay );\n\t},\n\n\t_open: function( submenu ) {\n\t\tvar position = $.extend( {\n\t\t\tof: this.active\n\t\t}, this.options.position );\n\n\t\tclearTimeout( this.timer );\n\t\tthis.element.find( \".ui-menu\" ).not( submenu.parents( \".ui-menu\" ) )\n\t\t\t.hide()\n\t\t\t.attr( \"aria-hidden\", \"true\" );\n\n\t\tsubmenu\n\t\t\t.show()\n\t\t\t.removeAttr( \"aria-hidden\" )\n\t\t\t.attr( \"aria-expanded\", \"true\" )\n\t\t\t.position( position );\n\t},\n\n\tcollapseAll: function( event, all ) {\n\t\tclearTimeout( this.timer );\n\t\tthis.timer = this._delay( function() {\n\n\t\t\t// If we were passed an event, look for the submenu that contains the event\n\t\t\tvar currentMenu = all ? this.element :\n\t\t\t\t$( event && event.target ).closest( this.element.find( \".ui-menu\" ) );\n\n\t\t\t// If we found no valid submenu ancestor, use the main menu to close all\n\t\t\t// sub menus anyway\n\t\t\tif ( !currentMenu.length ) {\n\t\t\t\tcurrentMenu = this.element;\n\t\t\t}\n\n\t\t\tthis._close( currentMenu );\n\n\t\t\tthis.blur( event );\n\n\t\t\t// Work around active item staying active after menu is blurred\n\t\t\tthis._removeClass( currentMenu.find( \".ui-state-active\" ), null, \"ui-state-active\" );\n\n\t\t\tthis.activeMenu = currentMenu;\n\t\t}, all ? 0 : this.delay );\n\t},\n\n\t// With no arguments, closes the currently active menu - if nothing is active\n\t// it closes all menus. If passed an argument, it will search for menus BELOW\n\t_close: function( startMenu ) {\n\t\tif ( !startMenu ) {\n\t\t\tstartMenu = this.active ? this.active.parent() : this.element;\n\t\t}\n\n\t\tstartMenu.find( \".ui-menu\" )\n\t\t\t.hide()\n\t\t\t.attr( \"aria-hidden\", \"true\" )\n\t\t\t.attr( \"aria-expanded\", \"false\" );\n\t},\n\n\t_closeOnDocumentClick: function( event ) {\n\t\treturn !$( event.target ).closest( \".ui-menu\" ).length;\n\t},\n\n\t_isDivider: function( item ) {\n\n\t\t// Match hyphen, em dash, en dash\n\t\treturn !/[^\\-\\u2014\\u2013\\s]/.test( item.text() );\n\t},\n\n\tcollapse: function( event ) {\n\t\tvar newItem = this.active &&\n\t\t\tthis.active.parent().closest( \".ui-menu-item\", this.element );\n\t\tif ( newItem && newItem.length ) {\n\t\t\tthis._close();\n\t\t\tthis.focus( event, newItem );\n\t\t}\n\t},\n\n\texpand: function( event ) {\n\t\tvar newItem = this.active && this._menuItems( this.active.children( \".ui-menu\" ) ).first();\n\n\t\tif ( newItem && newItem.length ) {\n\t\t\tthis._open( newItem.parent() );\n\n\t\t\t// Delay so Firefox will not hide activedescendant change in expanding submenu from AT\n\t\t\tthis._delay( function() {\n\t\t\t\tthis.focus( event, newItem );\n\t\t\t} );\n\t\t}\n\t},\n\n\tnext: function( event ) {\n\t\tthis._move( \"next\", \"first\", event );\n\t},\n\n\tprevious: function( event ) {\n\t\tthis._move( \"prev\", \"last\", event );\n\t},\n\n\tisFirstItem: function() {\n\t\treturn this.active && !this.active.prevAll( \".ui-menu-item\" ).length;\n\t},\n\n\tisLastItem: function() {\n\t\treturn this.active && !this.active.nextAll( \".ui-menu-item\" ).length;\n\t},\n\n\t_menuItems: function( menu ) {\n\t\treturn ( menu || this.element )\n\t\t\t.find( this.options.items )\n\t\t\t.filter( \".ui-menu-item\" );\n\t},\n\n\t_move: function( direction, filter, event ) {\n\t\tvar next;\n\t\tif ( this.active ) {\n\t\t\tif ( direction === \"first\" || direction === \"last\" ) {\n\t\t\t\tnext = this.active\n\t\t\t\t\t[ direction === \"first\" ? \"prevAll\" : \"nextAll\" ]( \".ui-menu-item\" )\n\t\t\t\t\t.last();\n\t\t\t} else {\n\t\t\t\tnext = this.active\n\t\t\t\t\t[ direction + \"All\" ]( \".ui-menu-item\" )\n\t\t\t\t\t.first();\n\t\t\t}\n\t\t}\n\t\tif ( !next || !next.length || !this.active ) {\n\t\t\tnext = this._menuItems( this.activeMenu )[ filter ]();\n\t\t}\n\n\t\tthis.focus( event, next );\n\t},\n\n\tnextPage: function( event ) {\n\t\tvar item, base, height;\n\n\t\tif ( !this.active ) {\n\t\t\tthis.next( event );\n\t\t\treturn;\n\t\t}\n\t\tif ( this.isLastItem() ) {\n\t\t\treturn;\n\t\t}\n\t\tif ( this._hasScroll() ) {\n\t\t\tbase = this.active.offset().top;\n\t\t\theight = this.element.innerHeight();\n\n\t\t\t// jQuery 3.2 doesn't include scrollbars in innerHeight, add it back.\n\t\t\tif ( $.fn.jquery.indexOf( \"3.2.\" ) === 0 ) {\n\t\t\t\theight += this.element[ 0 ].offsetHeight - this.element.outerHeight();\n\t\t\t}\n\n\t\t\tthis.active.nextAll( \".ui-menu-item\" ).each( function() {\n\t\t\t\titem = $( this );\n\t\t\t\treturn item.offset().top - base - height < 0;\n\t\t\t} );\n\n\t\t\tthis.focus( event, item );\n\t\t} else {\n\t\t\tthis.focus( event, this._menuItems( this.activeMenu )\n\t\t\t\t[ !this.active ? \"first\" : \"last\" ]() );\n\t\t}\n\t},\n\n\tpreviousPage: function( event ) {\n\t\tvar item, base, height;\n\t\tif ( !this.active ) {\n\t\t\tthis.next( event );\n\t\t\treturn;\n\t\t}\n\t\tif ( this.isFirstItem() ) {\n\t\t\treturn;\n\t\t}\n\t\tif ( this._hasScroll() ) {\n\t\t\tbase = this.active.offset().top;\n\t\t\theight = this.element.innerHeight();\n\n\t\t\t// jQuery 3.2 doesn't include scrollbars in innerHeight, add it back.\n\t\t\tif ( $.fn.jquery.indexOf( \"3.2.\" ) === 0 ) {\n\t\t\t\theight += this.element[ 0 ].offsetHeight - this.element.outerHeight();\n\t\t\t}\n\n\t\t\tthis.active.prevAll( \".ui-menu-item\" ).each( function() {\n\t\t\t\titem = $( this );\n\t\t\t\treturn item.offset().top - base + height > 0;\n\t\t\t} );\n\n\t\t\tthis.focus( event, item );\n\t\t} else {\n\t\t\tthis.focus( event, this._menuItems( this.activeMenu ).first() );\n\t\t}\n\t},\n\n\t_hasScroll: function() {\n\t\treturn this.element.outerHeight() < this.element.prop( \"scrollHeight\" );\n\t},\n\n\tselect: function( event ) {\n\n\t\t// TODO: It should never be possible to not have an active item at this\n\t\t// point, but the tests don't trigger mouseenter before click.\n\t\tthis.active = this.active || $( event.target ).closest( \".ui-menu-item\" );\n\t\tvar ui = { item: this.active };\n\t\tif ( !this.active.has( \".ui-menu\" ).length ) {\n\t\t\tthis.collapseAll( event, true );\n\t\t}\n\t\tthis._trigger( \"select\", event, ui );\n\t},\n\n\t_filterMenuItems: function( character ) {\n\t\tvar escapedCharacter = character.replace( /[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, \"\\\\$&\" ),\n\t\t\tregex = new RegExp( \"^\" + escapedCharacter, \"i\" );\n\n\t\treturn this.activeMenu\n\t\t\t.find( this.options.items )\n\n\t\t\t\t// Only match on items, not dividers or other content (#10571)\n\t\t\t\t.filter( \".ui-menu-item\" )\n\t\t\t\t\t.filter( function() {\n\t\t\t\t\t\treturn regex.test(\n\t\t\t\t\t\t\tString.prototype.trim.call(\n\t\t\t\t\t\t\t\t$( this ).children( \".ui-menu-item-wrapper\" ).text() ) );\n\t\t\t\t\t} );\n\t}\n} );\n\n} );\n","module.exports = function hexToRgb (hex) {\n\n if (hex.charAt && hex.charAt(0) === '#') {\n hex = removeHash(hex)\n }\n\n if (hex.length === 3) {\n hex = expand(hex)\n }\n\n var bigint = parseInt(hex, 16)\n var r = (bigint >> 16) & 255\n var g = (bigint >> 8) & 255\n var b = bigint & 255\n\n return [r, g, b]\n}\n\nfunction removeHash (hex) {\n\n var arr = hex.split('')\n arr.shift()\n return arr.join('')\n}\n\nfunction expand (hex) {\n\n return hex\n .split('')\n .reduce(function (accum, value) {\n\n return accum.concat([value, value])\n }, [])\n .join('')\n}\n","/*!\n * Bootstrap alert.js v4.6.2 (https://getbootstrap.com/)\n * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('jquery'), require('./util.js')) :\n typeof define === 'function' && define.amd ? define(['jquery', './util'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Alert = factory(global.jQuery, global.Util));\n})(this, (function ($, Util) { 'use strict';\n\n function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\n var $__default = /*#__PURE__*/_interopDefaultLegacy($);\n var Util__default = /*#__PURE__*/_interopDefaultLegacy(Util);\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n }\n\n /**\n * Constants\n */\n\n var NAME = 'alert';\n var VERSION = '4.6.2';\n var DATA_KEY = 'bs.alert';\n var EVENT_KEY = \".\" + DATA_KEY;\n var DATA_API_KEY = '.data-api';\n var JQUERY_NO_CONFLICT = $__default[\"default\"].fn[NAME];\n var CLASS_NAME_ALERT = 'alert';\n var CLASS_NAME_FADE = 'fade';\n var CLASS_NAME_SHOW = 'show';\n var EVENT_CLOSE = \"close\" + EVENT_KEY;\n var EVENT_CLOSED = \"closed\" + EVENT_KEY;\n var EVENT_CLICK_DATA_API = \"click\" + EVENT_KEY + DATA_API_KEY;\n var SELECTOR_DISMISS = '[data-dismiss=\"alert\"]';\n /**\n * Class definition\n */\n\n var Alert = /*#__PURE__*/function () {\n function Alert(element) {\n this._element = element;\n } // Getters\n\n\n var _proto = Alert.prototype;\n\n // Public\n _proto.close = function close(element) {\n var rootElement = this._element;\n\n if (element) {\n rootElement = this._getRootElement(element);\n }\n\n var customEvent = this._triggerCloseEvent(rootElement);\n\n if (customEvent.isDefaultPrevented()) {\n return;\n }\n\n this._removeElement(rootElement);\n };\n\n _proto.dispose = function dispose() {\n $__default[\"default\"].removeData(this._element, DATA_KEY);\n this._element = null;\n } // Private\n ;\n\n _proto._getRootElement = function _getRootElement(element) {\n var selector = Util__default[\"default\"].getSelectorFromElement(element);\n var parent = false;\n\n if (selector) {\n parent = document.querySelector(selector);\n }\n\n if (!parent) {\n parent = $__default[\"default\"](element).closest(\".\" + CLASS_NAME_ALERT)[0];\n }\n\n return parent;\n };\n\n _proto._triggerCloseEvent = function _triggerCloseEvent(element) {\n var closeEvent = $__default[\"default\"].Event(EVENT_CLOSE);\n $__default[\"default\"](element).trigger(closeEvent);\n return closeEvent;\n };\n\n _proto._removeElement = function _removeElement(element) {\n var _this = this;\n\n $__default[\"default\"](element).removeClass(CLASS_NAME_SHOW);\n\n if (!$__default[\"default\"](element).hasClass(CLASS_NAME_FADE)) {\n this._destroyElement(element);\n\n return;\n }\n\n var transitionDuration = Util__default[\"default\"].getTransitionDurationFromElement(element);\n $__default[\"default\"](element).one(Util__default[\"default\"].TRANSITION_END, function (event) {\n return _this._destroyElement(element, event);\n }).emulateTransitionEnd(transitionDuration);\n };\n\n _proto._destroyElement = function _destroyElement(element) {\n $__default[\"default\"](element).detach().trigger(EVENT_CLOSED).remove();\n } // Static\n ;\n\n Alert._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $element = $__default[\"default\"](this);\n var 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 Alert._handleDismiss = function _handleDismiss(alertInstance) {\n return function (event) {\n if (event) {\n event.preventDefault();\n }\n\n alertInstance.close(this);\n };\n };\n\n _createClass(Alert, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION;\n }\n }]);\n\n return Alert;\n }();\n /**\n * Data API implementation\n */\n\n\n $__default[\"default\"](document).on(EVENT_CLICK_DATA_API, SELECTOR_DISMISS, Alert._handleDismiss(new Alert()));\n /**\n * jQuery\n */\n\n $__default[\"default\"].fn[NAME] = Alert._jQueryInterface;\n $__default[\"default\"].fn[NAME].Constructor = Alert;\n\n $__default[\"default\"].fn[NAME].noConflict = function () {\n $__default[\"default\"].fn[NAME] = JQUERY_NO_CONFLICT;\n return Alert._jQueryInterface;\n };\n\n return Alert;\n\n}));\n//# sourceMappingURL=alert.js.map\n","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.LazyLoad = factory());\n}(this, (function () { 'use strict';\n\n function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n }\n\n var runningOnBrowser = typeof window !== \"undefined\";\n var isBot = runningOnBrowser && !(\"onscroll\" in window) || typeof navigator !== \"undefined\" && /(gle|ing|ro)bot|crawl|spider/i.test(navigator.userAgent);\n var supportsIntersectionObserver = runningOnBrowser && \"IntersectionObserver\" in window;\n var supportsClassList = runningOnBrowser && \"classList\" in document.createElement(\"p\");\n var isHiDpi = runningOnBrowser && window.devicePixelRatio > 1;\n\n var defaultSettings = {\n elements_selector: \".lazy\",\n container: isBot || runningOnBrowser ? document : null,\n threshold: 300,\n thresholds: null,\n data_src: \"src\",\n data_srcset: \"srcset\",\n data_sizes: \"sizes\",\n data_bg: \"bg\",\n data_bg_hidpi: \"bg-hidpi\",\n data_bg_multi: \"bg-multi\",\n data_bg_multi_hidpi: \"bg-multi-hidpi\",\n data_bg_set: \"bg-set\",\n data_poster: \"poster\",\n class_applied: \"applied\",\n class_loading: \"loading\",\n class_loaded: \"loaded\",\n class_error: \"error\",\n class_entered: \"entered\",\n class_exited: \"exited\",\n unobserve_completed: true,\n unobserve_entered: false,\n cancel_on_exit: true,\n callback_enter: null,\n callback_exit: null,\n callback_applied: null,\n callback_loading: null,\n callback_loaded: null,\n callback_error: null,\n callback_finish: null,\n callback_cancel: null,\n use_native: false,\n restore_on_error: false\n };\n var getExtendedSettings = function getExtendedSettings(customSettings) {\n return _extends({}, defaultSettings, customSettings);\n };\n\n /* Creates instance and notifies it through the window element */\n var createInstance = function createInstance(classObj, options) {\n var event;\n var eventString = \"LazyLoad::Initialized\";\n var instance = new classObj(options);\n\n try {\n // Works in modern browsers\n event = new CustomEvent(eventString, {\n detail: {\n instance: instance\n }\n });\n } catch (err) {\n // Works in Internet Explorer (all versions)\n event = document.createEvent(\"CustomEvent\");\n event.initCustomEvent(eventString, false, false, {\n instance: instance\n });\n }\n\n window.dispatchEvent(event);\n };\n /* Auto initialization of one or more instances of LazyLoad, depending on the\n options passed in (plain object or an array) */\n\n\n var autoInitialize = function autoInitialize(classObj, options) {\n if (!options) {\n return;\n }\n\n if (!options.length) {\n // Plain object\n createInstance(classObj, options);\n } else {\n // Array of objects\n for (var i = 0, optionsItem; optionsItem = options[i]; i += 1) {\n createInstance(classObj, optionsItem);\n }\n }\n };\n\n var SRC = \"src\";\n var SRCSET = \"srcset\";\n var SIZES = \"sizes\";\n var POSTER = \"poster\";\n var ORIGINALS = \"llOriginalAttrs\";\n var DATA = \"data\";\n\n var statusLoading = \"loading\";\n var statusLoaded = \"loaded\";\n var statusApplied = \"applied\";\n var statusEntered = \"entered\";\n var statusError = \"error\";\n var statusNative = \"native\";\n\n var dataPrefix = \"data-\";\n var statusDataName = \"ll-status\";\n var getData = function getData(element, attribute) {\n return element.getAttribute(dataPrefix + attribute);\n };\n var setData = function setData(element, attribute, value) {\n var attrName = dataPrefix + attribute;\n\n if (value === null) {\n element.removeAttribute(attrName);\n return;\n }\n\n element.setAttribute(attrName, value);\n };\n var getStatus = function getStatus(element) {\n return getData(element, statusDataName);\n };\n var setStatus = function setStatus(element, status) {\n return setData(element, statusDataName, status);\n };\n var resetStatus = function resetStatus(element) {\n return setStatus(element, null);\n };\n var hasEmptyStatus = function hasEmptyStatus(element) {\n return getStatus(element) === null;\n };\n var hasStatusLoading = function hasStatusLoading(element) {\n return getStatus(element) === statusLoading;\n };\n var hasStatusError = function hasStatusError(element) {\n return getStatus(element) === statusError;\n };\n var hasStatusNative = function hasStatusNative(element) {\n return getStatus(element) === statusNative;\n };\n var statusesAfterLoading = [statusLoading, statusLoaded, statusApplied, statusError];\n var hadStartedLoading = function hadStartedLoading(element) {\n return statusesAfterLoading.indexOf(getStatus(element)) >= 0;\n };\n\n var safeCallback = function safeCallback(callback, arg1, arg2, arg3) {\n if (!callback || typeof callback !== 'function') {\n return;\n }\n\n if (arg3 !== undefined) {\n callback(arg1, arg2, arg3);\n return;\n }\n\n if (arg2 !== undefined) {\n callback(arg1, arg2);\n return;\n }\n\n callback(arg1);\n };\n\n var addClass = function addClass(element, className) {\n if (supportsClassList) {\n element.classList.add(className);\n return;\n }\n\n element.className += (element.className ? \" \" : \"\") + className;\n };\n var removeClass = function removeClass(element, className) {\n if (supportsClassList) {\n element.classList.remove(className);\n return;\n }\n\n element.className = element.className.replace(new RegExp(\"(^|\\\\s+)\" + className + \"(\\\\s+|$)\"), \" \").replace(/^\\s+/, \"\").replace(/\\s+$/, \"\");\n };\n\n var addTempImage = function addTempImage(element) {\n element.llTempImage = document.createElement(\"IMG\");\n };\n var deleteTempImage = function deleteTempImage(element) {\n delete element.llTempImage;\n };\n var getTempImage = function getTempImage(element) {\n return element.llTempImage;\n };\n\n var unobserve = function unobserve(element, instance) {\n if (!instance) return;\n var observer = instance._observer;\n if (!observer) return;\n observer.unobserve(element);\n };\n var resetObserver = function resetObserver(observer) {\n observer.disconnect();\n };\n var unobserveEntered = function unobserveEntered(element, settings, instance) {\n if (settings.unobserve_entered) unobserve(element, instance);\n };\n\n var updateLoadingCount = function updateLoadingCount(instance, delta) {\n if (!instance) return;\n instance.loadingCount += delta;\n };\n var decreaseToLoadCount = function decreaseToLoadCount(instance) {\n if (!instance) return;\n instance.toLoadCount -= 1;\n };\n var setToLoadCount = function setToLoadCount(instance, value) {\n if (!instance) return;\n instance.toLoadCount = value;\n };\n var isSomethingLoading = function isSomethingLoading(instance) {\n return instance.loadingCount > 0;\n };\n var haveElementsToLoad = function haveElementsToLoad(instance) {\n return instance.toLoadCount > 0;\n };\n\n var getSourceTags = function getSourceTags(parentTag) {\n var sourceTags = [];\n\n for (var i = 0, childTag; childTag = parentTag.children[i]; i += 1) {\n if (childTag.tagName === \"SOURCE\") {\n sourceTags.push(childTag);\n }\n }\n\n return sourceTags;\n };\n\n var forEachPictureSource = function forEachPictureSource(element, fn) {\n var parent = element.parentNode;\n\n if (!parent || parent.tagName !== \"PICTURE\") {\n return;\n }\n\n var sourceTags = getSourceTags(parent);\n sourceTags.forEach(fn);\n };\n var forEachVideoSource = function forEachVideoSource(element, fn) {\n var sourceTags = getSourceTags(element);\n sourceTags.forEach(fn);\n };\n\n var attrsSrc = [SRC];\n var attrsSrcPoster = [SRC, POSTER];\n var attrsSrcSrcsetSizes = [SRC, SRCSET, SIZES];\n var attrsData = [DATA];\n var hasOriginalAttrs = function hasOriginalAttrs(element) {\n return !!element[ORIGINALS];\n };\n var getOriginalAttrs = function getOriginalAttrs(element) {\n return element[ORIGINALS];\n };\n var deleteOriginalAttrs = function deleteOriginalAttrs(element) {\n return delete element[ORIGINALS];\n }; // ## SAVE ##\n\n var setOriginalsObject = function setOriginalsObject(element, attributes) {\n if (hasOriginalAttrs(element)) {\n return;\n }\n\n var originals = {};\n attributes.forEach(function (attribute) {\n originals[attribute] = element.getAttribute(attribute);\n });\n element[ORIGINALS] = originals;\n };\n var saveOriginalBackgroundStyle = function saveOriginalBackgroundStyle(element) {\n if (hasOriginalAttrs(element)) {\n return;\n }\n\n element[ORIGINALS] = {\n backgroundImage: element.style.backgroundImage\n };\n }; // ## RESTORE ##\n\n var setOrResetAttribute = function setOrResetAttribute(element, attrName, value) {\n if (!value) {\n element.removeAttribute(attrName);\n return;\n }\n\n element.setAttribute(attrName, value);\n };\n\n var restoreOriginalAttrs = function restoreOriginalAttrs(element, attributes) {\n if (!hasOriginalAttrs(element)) {\n return;\n }\n\n var originals = getOriginalAttrs(element);\n attributes.forEach(function (attribute) {\n setOrResetAttribute(element, attribute, originals[attribute]);\n });\n };\n var restoreOriginalBgImage = function restoreOriginalBgImage(element) {\n if (!hasOriginalAttrs(element)) {\n return;\n }\n\n var originals = getOriginalAttrs(element);\n element.style.backgroundImage = originals.backgroundImage;\n };\n\n var manageApplied = function manageApplied(element, settings, instance) {\n addClass(element, settings.class_applied);\n setStatus(element, statusApplied); // Instance is not provided when loading is called from static class\n\n if (!instance) return;\n\n if (settings.unobserve_completed) {\n // Unobserve now because we can't do it on load\n unobserve(element, settings);\n }\n\n safeCallback(settings.callback_applied, element, instance);\n };\n var manageLoading = function manageLoading(element, settings, instance) {\n addClass(element, settings.class_loading);\n setStatus(element, statusLoading); // Instance is not provided when loading is called from static class\n\n if (!instance) return;\n updateLoadingCount(instance, +1);\n safeCallback(settings.callback_loading, element, instance);\n };\n var setAttributeIfValue = function setAttributeIfValue(element, attrName, value) {\n if (!value) {\n return;\n }\n\n element.setAttribute(attrName, value);\n };\n var setImageAttributes = function setImageAttributes(element, settings) {\n setAttributeIfValue(element, SIZES, getData(element, settings.data_sizes));\n setAttributeIfValue(element, SRCSET, getData(element, settings.data_srcset));\n setAttributeIfValue(element, SRC, getData(element, settings.data_src));\n };\n var setSourcesImg = function setSourcesImg(imgEl, settings) {\n forEachPictureSource(imgEl, function (sourceTag) {\n setOriginalsObject(sourceTag, attrsSrcSrcsetSizes);\n setImageAttributes(sourceTag, settings);\n });\n setOriginalsObject(imgEl, attrsSrcSrcsetSizes);\n setImageAttributes(imgEl, settings);\n };\n var setSourcesIframe = function setSourcesIframe(iframe, settings) {\n setOriginalsObject(iframe, attrsSrc);\n setAttributeIfValue(iframe, SRC, getData(iframe, settings.data_src));\n };\n var setSourcesVideo = function setSourcesVideo(videoEl, settings) {\n forEachVideoSource(videoEl, function (sourceEl) {\n setOriginalsObject(sourceEl, attrsSrc);\n setAttributeIfValue(sourceEl, SRC, getData(sourceEl, settings.data_src));\n });\n setOriginalsObject(videoEl, attrsSrcPoster);\n setAttributeIfValue(videoEl, POSTER, getData(videoEl, settings.data_poster));\n setAttributeIfValue(videoEl, SRC, getData(videoEl, settings.data_src));\n videoEl.load();\n };\n var setSourcesObject = function setSourcesObject(object, settings) {\n setOriginalsObject(object, attrsData);\n setAttributeIfValue(object, DATA, getData(object, settings.data_src));\n };\n var setBackground = function setBackground(element, settings, instance) {\n var bg1xValue = getData(element, settings.data_bg);\n var bgHiDpiValue = getData(element, settings.data_bg_hidpi);\n var bgDataValue = isHiDpi && bgHiDpiValue ? bgHiDpiValue : bg1xValue;\n if (!bgDataValue) return;\n element.style.backgroundImage = \"url(\\\"\".concat(bgDataValue, \"\\\")\");\n getTempImage(element).setAttribute(SRC, bgDataValue);\n manageLoading(element, settings, instance);\n }; // NOTE: THE TEMP IMAGE TRICK CANNOT BE DONE WITH data-multi-bg\n // BECAUSE INSIDE ITS VALUES MUST BE WRAPPED WITH URL() AND ONE OF THEM\n // COULD BE A GRADIENT BACKGROUND IMAGE\n\n var setMultiBackground = function setMultiBackground(element, settings, instance) {\n var bg1xValue = getData(element, settings.data_bg_multi);\n var bgHiDpiValue = getData(element, settings.data_bg_multi_hidpi);\n var bgDataValue = isHiDpi && bgHiDpiValue ? bgHiDpiValue : bg1xValue;\n\n if (!bgDataValue) {\n return;\n }\n\n element.style.backgroundImage = bgDataValue;\n manageApplied(element, settings, instance);\n };\n var setImgsetBackground = function setImgsetBackground(element, settings, instance) {\n var bgImgSetDataValue = getData(element, settings.data_bg_set);\n\n if (!bgImgSetDataValue) {\n return;\n }\n\n var imgSetValues = bgImgSetDataValue.split(\"|\");\n var bgImageValues = imgSetValues.map(function (value) {\n return \"image-set(\".concat(value, \")\");\n });\n element.style.backgroundImage = bgImageValues.join(); // Temporary fix for Chromeium with the -webkit- prefix\n\n if (element.style.backgroundImage === \"\") {\n bgImageValues = imgSetValues.map(function (value) {\n return \"-webkit-image-set(\".concat(value, \")\");\n });\n element.style.backgroundImage = bgImageValues.join();\n }\n\n manageApplied(element, settings, instance);\n };\n var setSourcesFunctions = {\n IMG: setSourcesImg,\n IFRAME: setSourcesIframe,\n VIDEO: setSourcesVideo,\n OBJECT: setSourcesObject\n };\n var setSourcesNative = function setSourcesNative(element, settings) {\n var setSourcesFunction = setSourcesFunctions[element.tagName];\n\n if (!setSourcesFunction) {\n return;\n }\n\n setSourcesFunction(element, settings);\n };\n var setSources = function setSources(element, settings, instance) {\n var setSourcesFunction = setSourcesFunctions[element.tagName];\n\n if (!setSourcesFunction) {\n return;\n }\n\n setSourcesFunction(element, settings);\n manageLoading(element, settings, instance);\n };\n\n var elementsWithLoadEvent = [\"IMG\", \"IFRAME\", \"VIDEO\", \"OBJECT\"];\n var hasLoadEvent = function hasLoadEvent(element) {\n return elementsWithLoadEvent.indexOf(element.tagName) > -1;\n };\n var checkFinish = function checkFinish(settings, instance) {\n if (instance && !isSomethingLoading(instance) && !haveElementsToLoad(instance)) {\n safeCallback(settings.callback_finish, instance);\n }\n };\n var addEventListener = function addEventListener(element, eventName, handler) {\n element.addEventListener(eventName, handler);\n element.llEvLisnrs[eventName] = handler;\n };\n var removeEventListener = function removeEventListener(element, eventName, handler) {\n element.removeEventListener(eventName, handler);\n };\n var hasEventListeners = function hasEventListeners(element) {\n return !!element.llEvLisnrs;\n };\n var addEventListeners = function addEventListeners(element, loadHandler, errorHandler) {\n if (!hasEventListeners(element)) element.llEvLisnrs = {};\n var loadEventName = element.tagName === \"VIDEO\" ? \"loadeddata\" : \"load\";\n addEventListener(element, loadEventName, loadHandler);\n addEventListener(element, \"error\", errorHandler);\n };\n var removeEventListeners = function removeEventListeners(element) {\n if (!hasEventListeners(element)) {\n return;\n }\n\n var eventListeners = element.llEvLisnrs;\n\n for (var eventName in eventListeners) {\n var handler = eventListeners[eventName];\n removeEventListener(element, eventName, handler);\n }\n\n delete element.llEvLisnrs;\n };\n var doneHandler = function doneHandler(element, settings, instance) {\n deleteTempImage(element);\n updateLoadingCount(instance, -1);\n decreaseToLoadCount(instance);\n removeClass(element, settings.class_loading);\n\n if (settings.unobserve_completed) {\n unobserve(element, instance);\n }\n };\n var loadHandler = function loadHandler(event, element, settings, instance) {\n var goingNative = hasStatusNative(element);\n doneHandler(element, settings, instance);\n addClass(element, settings.class_loaded);\n setStatus(element, statusLoaded);\n safeCallback(settings.callback_loaded, element, instance);\n if (!goingNative) checkFinish(settings, instance);\n };\n var errorHandler = function errorHandler(event, element, settings, instance) {\n var goingNative = hasStatusNative(element);\n doneHandler(element, settings, instance);\n addClass(element, settings.class_error);\n setStatus(element, statusError);\n safeCallback(settings.callback_error, element, instance);\n if (settings.restore_on_error) restoreOriginalAttrs(element, attrsSrcSrcsetSizes);\n if (!goingNative) checkFinish(settings, instance);\n };\n var addOneShotEventListeners = function addOneShotEventListeners(element, settings, instance) {\n var elementToListenTo = getTempImage(element) || element;\n\n if (hasEventListeners(elementToListenTo)) {\n // This happens when loading is retried twice\n return;\n }\n\n var _loadHandler = function _loadHandler(event) {\n loadHandler(event, element, settings, instance);\n removeEventListeners(elementToListenTo);\n };\n\n var _errorHandler = function _errorHandler(event) {\n errorHandler(event, element, settings, instance);\n removeEventListeners(elementToListenTo);\n };\n\n addEventListeners(elementToListenTo, _loadHandler, _errorHandler);\n };\n\n var loadBackground = function loadBackground(element, settings, instance) {\n addTempImage(element);\n addOneShotEventListeners(element, settings, instance);\n saveOriginalBackgroundStyle(element);\n setBackground(element, settings, instance);\n setMultiBackground(element, settings, instance);\n setImgsetBackground(element, settings, instance);\n };\n\n var loadRegular = function loadRegular(element, settings, instance) {\n addOneShotEventListeners(element, settings, instance);\n setSources(element, settings, instance);\n };\n\n var load = function load(element, settings, instance) {\n if (hasLoadEvent(element)) {\n loadRegular(element, settings, instance);\n } else {\n loadBackground(element, settings, instance);\n }\n };\n var loadNative = function loadNative(element, settings, instance) {\n element.setAttribute(\"loading\", \"lazy\");\n addOneShotEventListeners(element, settings, instance);\n setSourcesNative(element, settings);\n setStatus(element, statusNative);\n };\n\n var removeImageAttributes = function removeImageAttributes(element) {\n element.removeAttribute(SRC);\n element.removeAttribute(SRCSET);\n element.removeAttribute(SIZES);\n };\n\n var resetSourcesImg = function resetSourcesImg(element) {\n forEachPictureSource(element, function (sourceTag) {\n removeImageAttributes(sourceTag);\n });\n removeImageAttributes(element);\n };\n\n var restoreImg = function restoreImg(imgEl) {\n forEachPictureSource(imgEl, function (sourceEl) {\n restoreOriginalAttrs(sourceEl, attrsSrcSrcsetSizes);\n });\n restoreOriginalAttrs(imgEl, attrsSrcSrcsetSizes);\n };\n var restoreVideo = function restoreVideo(videoEl) {\n forEachVideoSource(videoEl, function (sourceEl) {\n restoreOriginalAttrs(sourceEl, attrsSrc);\n });\n restoreOriginalAttrs(videoEl, attrsSrcPoster);\n videoEl.load();\n };\n var restoreIframe = function restoreIframe(iframeEl) {\n restoreOriginalAttrs(iframeEl, attrsSrc);\n };\n var restoreObject = function restoreObject(objectEl) {\n restoreOriginalAttrs(objectEl, attrsData);\n };\n var restoreFunctions = {\n IMG: restoreImg,\n IFRAME: restoreIframe,\n VIDEO: restoreVideo,\n OBJECT: restoreObject\n };\n\n var restoreAttributes = function restoreAttributes(element) {\n var restoreFunction = restoreFunctions[element.tagName];\n\n if (!restoreFunction) {\n restoreOriginalBgImage(element);\n return;\n }\n\n restoreFunction(element);\n };\n\n var resetClasses = function resetClasses(element, settings) {\n if (hasEmptyStatus(element) || hasStatusNative(element)) {\n return;\n }\n\n removeClass(element, settings.class_entered);\n removeClass(element, settings.class_exited);\n removeClass(element, settings.class_applied);\n removeClass(element, settings.class_loading);\n removeClass(element, settings.class_loaded);\n removeClass(element, settings.class_error);\n };\n\n var restore = function restore(element, settings) {\n restoreAttributes(element);\n resetClasses(element, settings);\n resetStatus(element);\n deleteOriginalAttrs(element);\n };\n\n var cancelLoading = function cancelLoading(element, entry, settings, instance) {\n if (!settings.cancel_on_exit) return;\n if (!hasStatusLoading(element)) return;\n if (element.tagName !== \"IMG\") return; //Works only on images\n\n removeEventListeners(element);\n resetSourcesImg(element);\n restoreImg(element);\n removeClass(element, settings.class_loading);\n updateLoadingCount(instance, -1);\n resetStatus(element);\n safeCallback(settings.callback_cancel, element, entry, instance);\n };\n\n var onEnter = function onEnter(element, entry, settings, instance) {\n var dontLoad = hadStartedLoading(element);\n /* Save status\n before setting it, to prevent loading it again. Fixes #526. */\n\n setStatus(element, statusEntered);\n addClass(element, settings.class_entered);\n removeClass(element, settings.class_exited);\n unobserveEntered(element, settings, instance);\n safeCallback(settings.callback_enter, element, entry, instance);\n if (dontLoad) return;\n load(element, settings, instance);\n };\n var onExit = function onExit(element, entry, settings, instance) {\n if (hasEmptyStatus(element)) return; //Ignore the first pass, at landing\n\n addClass(element, settings.class_exited);\n cancelLoading(element, entry, settings, instance);\n safeCallback(settings.callback_exit, element, entry, instance);\n };\n\n var tagsWithNativeLazy = [\"IMG\", \"IFRAME\", \"VIDEO\"];\n var shouldUseNative = function shouldUseNative(settings) {\n return settings.use_native && \"loading\" in HTMLImageElement.prototype;\n };\n var loadAllNative = function loadAllNative(elements, settings, instance) {\n elements.forEach(function (element) {\n if (tagsWithNativeLazy.indexOf(element.tagName) === -1) {\n return;\n }\n\n loadNative(element, settings, instance);\n });\n setToLoadCount(instance, 0);\n };\n\n var isIntersecting = function isIntersecting(entry) {\n return entry.isIntersecting || entry.intersectionRatio > 0;\n };\n\n var getObserverSettings = function getObserverSettings(settings) {\n return {\n root: settings.container === document ? null : settings.container,\n rootMargin: settings.thresholds || settings.threshold + \"px\"\n };\n };\n\n var intersectionHandler = function intersectionHandler(entries, settings, instance) {\n entries.forEach(function (entry) {\n return isIntersecting(entry) ? onEnter(entry.target, entry, settings, instance) : onExit(entry.target, entry, settings, instance);\n });\n };\n\n var observeElements = function observeElements(observer, elements) {\n elements.forEach(function (element) {\n observer.observe(element);\n });\n };\n var updateObserver = function updateObserver(observer, elementsToObserve) {\n resetObserver(observer);\n observeElements(observer, elementsToObserve);\n };\n var setObserver = function setObserver(settings, instance) {\n if (!supportsIntersectionObserver || shouldUseNative(settings)) {\n return;\n }\n\n instance._observer = new IntersectionObserver(function (entries) {\n intersectionHandler(entries, settings, instance);\n }, getObserverSettings(settings));\n };\n\n var toArray = function toArray(nodeSet) {\n return Array.prototype.slice.call(nodeSet);\n };\n var queryElements = function queryElements(settings) {\n return settings.container.querySelectorAll(settings.elements_selector);\n };\n var excludeManagedElements = function excludeManagedElements(elements) {\n return toArray(elements).filter(hasEmptyStatus);\n };\n var hasError = function hasError(element) {\n return hasStatusError(element);\n };\n var filterErrorElements = function filterErrorElements(elements) {\n return toArray(elements).filter(hasError);\n };\n var getElementsToLoad = function getElementsToLoad(elements, settings) {\n return excludeManagedElements(elements || queryElements(settings));\n };\n\n var retryLazyLoad = function retryLazyLoad(settings, instance) {\n var errorElements = filterErrorElements(queryElements(settings));\n errorElements.forEach(function (element) {\n removeClass(element, settings.class_error);\n resetStatus(element);\n });\n instance.update();\n };\n var setOnlineCheck = function setOnlineCheck(settings, instance) {\n if (!runningOnBrowser) {\n return;\n }\n\n instance._onlineHandler = function () {\n retryLazyLoad(settings, instance);\n };\n\n window.addEventListener(\"online\", instance._onlineHandler);\n };\n var resetOnlineCheck = function resetOnlineCheck(instance) {\n if (!runningOnBrowser) {\n return;\n }\n\n window.removeEventListener(\"online\", instance._onlineHandler);\n };\n\n var LazyLoad = function LazyLoad(customSettings, elements) {\n var settings = getExtendedSettings(customSettings);\n this._settings = settings;\n this.loadingCount = 0;\n setObserver(settings, this);\n setOnlineCheck(settings, this);\n this.update(elements);\n };\n\n LazyLoad.prototype = {\n update: function update(givenNodeset) {\n var settings = this._settings;\n var elementsToLoad = getElementsToLoad(givenNodeset, settings);\n setToLoadCount(this, elementsToLoad.length);\n\n if (isBot || !supportsIntersectionObserver) {\n this.loadAll(elementsToLoad);\n return;\n }\n\n if (shouldUseNative(settings)) {\n loadAllNative(elementsToLoad, settings, this);\n return;\n }\n\n updateObserver(this._observer, elementsToLoad);\n },\n destroy: function destroy() {\n // Observer\n if (this._observer) {\n this._observer.disconnect();\n } // Clean handlers\n\n\n resetOnlineCheck(this); // Clean custom attributes on elements\n\n queryElements(this._settings).forEach(function (element) {\n deleteOriginalAttrs(element);\n }); // Delete all internal props\n\n delete this._observer;\n delete this._settings;\n delete this._onlineHandler;\n delete this.loadingCount;\n delete this.toLoadCount;\n },\n loadAll: function loadAll(elements) {\n var _this = this;\n\n var settings = this._settings;\n var elementsToLoad = getElementsToLoad(elements, settings);\n elementsToLoad.forEach(function (element) {\n unobserve(element, _this);\n load(element, settings, _this);\n });\n },\n restoreAll: function restoreAll() {\n var settings = this._settings;\n queryElements(settings).forEach(function (element) {\n restore(element, settings);\n });\n }\n };\n\n LazyLoad.load = function (element, customSettings) {\n var settings = getExtendedSettings(customSettings);\n load(element, settings);\n };\n\n LazyLoad.resetStatus = function (element) {\n resetStatus(element);\n }; // Automatic instances creation if required (useful for async script loading)\n\n\n if (runningOnBrowser) {\n autoInitialize(LazyLoad, window.lazyLoadOptions);\n }\n\n return LazyLoad;\n\n})));\n","/*!\n * jQuery UI Keycode 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Keycode\n//>>group: Core\n//>>description: Provide keycodes as keynames\n//>>docs: http://api.jqueryui.com/jQuery.ui.keyCode/\n\n( function( factory ) {\n\t\"use strict\";\n\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\", \"./version\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} )( function( $ ) {\n\"use strict\";\n\nreturn $.ui.keyCode = {\n\tBACKSPACE: 8,\n\tCOMMA: 188,\n\tDELETE: 46,\n\tDOWN: 40,\n\tEND: 35,\n\tENTER: 13,\n\tESCAPE: 27,\n\tHOME: 36,\n\tLEFT: 37,\n\tPAGE_DOWN: 34,\n\tPAGE_UP: 33,\n\tPERIOD: 190,\n\tRIGHT: 39,\n\tSPACE: 32,\n\tTAB: 9,\n\tUP: 38\n};\n\n} );\n","/**!\n * @fileOverview Kickass library to create and place poppers near their reference elements.\n * @version 1.16.1\n * @license\n * Copyright (c) 2016 Federico Zivolo and contributors\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && typeof navigator !== 'undefined';\n\nvar timeoutDuration = function () {\n var longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\n for (var 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\nfunction microtaskDebounce(fn) {\n var called = false;\n return function () {\n if (called) {\n return;\n }\n called = true;\n window.Promise.resolve().then(function () {\n called = false;\n fn();\n });\n };\n}\n\nfunction taskDebounce(fn) {\n var scheduled = false;\n return function () {\n if (!scheduled) {\n scheduled = true;\n setTimeout(function () {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nvar supportsMicroTasks = isBrowser && window.Promise;\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*/\nvar debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;\n\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 */\nfunction isFunction(functionToCheck) {\n var getType = {};\n return functionToCheck && 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 */\nfunction getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n var window = element.ownerDocument.defaultView;\n var css = window.getComputedStyle(element, null);\n return property ? css[property] : css;\n}\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 */\nfunction getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\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 */\nfunction 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\n var _getStyleComputedProp = getStyleComputedProperty(element),\n overflow = _getStyleComputedProp.overflow,\n overflowX = _getStyleComputedProp.overflowX,\n overflowY = _getStyleComputedProp.overflowY;\n\n if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\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 */\nfunction getReferenceNode(reference) {\n return reference && reference.referenceNode ? reference.referenceNode : reference;\n}\n\nvar isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nvar 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 */\nfunction isIE(version) {\n if (version === 11) {\n return isIE11;\n }\n if (version === 10) {\n return isIE10;\n }\n return isIE11 || isIE10;\n}\n\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 */\nfunction getOffsetParent(element) {\n if (!element) {\n return document.documentElement;\n }\n\n var noOffsetParent = isIE(10) ? document.body : null;\n\n // NOTE: 1 DOM access here\n var 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 var 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 (['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n\nfunction isOffsetContainer(element) {\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY') {\n return false;\n }\n return 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 */\nfunction getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\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 */\nfunction 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 var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\n var start = order ? element1 : element2;\n var end = order ? element2 : element1;\n\n // Get common ancestor container\n var range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n var commonAncestorContainer = range.commonAncestorContainer;\n\n // Both nodes are inside #document\n\n if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {\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 var 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/**\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 */\nfunction getScroll(element) {\n var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';\n\n var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n var html = element.ownerDocument.documentElement;\n var scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\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 */\nfunction includeScroll(rect, element) {\n var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n var 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/*\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\nfunction getBordersSize(styles, axis) {\n var sideA = axis === 'x' ? 'Left' : 'Top';\n var sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return parseFloat(styles['border' + sideA + 'Width']) + parseFloat(styles['border' + sideB + 'Width']);\n}\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE(10) ? parseInt(html['offset' + axis]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')]) : 0);\n}\n\nfunction getWindowSizes(document) {\n var body = document.body;\n var html = document.documentElement;\n var 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\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n\n\n\nvar defineProperty = function (obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\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 */\nfunction getClientRect(offsets) {\n return _extends({}, offsets, {\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height\n });\n}\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 */\nfunction getBoundingClientRect(element) {\n var 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 var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n } else {\n rect = element.getBoundingClientRect();\n }\n } catch (e) {}\n\n var 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 var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n var width = sizes.width || element.clientWidth || result.width;\n var height = sizes.height || element.clientHeight || result.height;\n\n var horizScrollbar = element.offsetWidth - width;\n var 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 var 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\nfunction getOffsetRectRelativeToArbitraryNode(children, parent) {\n var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var isIE10 = isIE(10);\n var isHTML = parent.nodeName === 'HTML';\n var childrenRect = getBoundingClientRect(children);\n var parentRect = getBoundingClientRect(parent);\n var scrollParent = getScrollParent(children);\n\n var styles = getStyleComputedProperty(parent);\n var borderTopWidth = parseFloat(styles.borderTopWidth);\n var 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 var 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 var marginTop = parseFloat(styles.marginTop);\n var 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 (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n\nfunction getViewportOffsetRectRelativeToArtbitraryNode(element) {\n var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var html = element.ownerDocument.documentElement;\n var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n var width = Math.max(html.clientWidth, window.innerWidth || 0);\n var height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n var scrollTop = !excludeScroll ? getScroll(html) : 0;\n var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\n var offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width: width,\n height: height\n };\n\n return getClientRect(offset);\n}\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 */\nfunction isFixed(element) {\n var nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n var parentNode = getParentNode(element);\n if (!parentNode) {\n return false;\n }\n return isFixed(parentNode);\n}\n\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\nfunction 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 var el = element.parentElement;\n while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n el = el.parentElement;\n }\n return el || document.documentElement;\n}\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 */\nfunction getBoundaries(popper, reference, padding, boundariesElement) {\n var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n // NOTE: 1 DOM access here\n\n var boundaries = { top: 0, left: 0 };\n var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n\n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n } else {\n // Handle other cases based on DOM element used as boundaries\n var boundariesNode = void 0;\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 var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition);\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n var _getWindowSizes = getWindowSizes(popper.ownerDocument),\n height = _getWindowSizes.height,\n width = _getWindowSizes.width;\n\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 var 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\nfunction getArea(_ref) {\n var width = _ref.width,\n height = _ref.height;\n\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 */\nfunction computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {\n var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n var boundaries = getBoundaries(popper, reference, padding, boundariesElement);\n\n var 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 var sortedAreas = Object.keys(rects).map(function (key) {\n return _extends({\n key: key\n }, rects[key], {\n area: getArea(rects[key])\n });\n }).sort(function (a, b) {\n return b.area - a.area;\n });\n\n var filteredAreas = sortedAreas.filter(function (_ref2) {\n var width = _ref2.width,\n height = _ref2.height;\n return width >= popper.clientWidth && height >= popper.clientHeight;\n });\n\n var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;\n\n var variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? '-' + variation : '');\n}\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 */\nfunction getReferenceOffsets(state, popper, reference) {\n var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\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 */\nfunction getOuterSizes(element) {\n var window = element.ownerDocument.defaultView;\n var styles = window.getComputedStyle(element);\n var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n var result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x\n };\n return result;\n}\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 */\nfunction getOppositePlacement(placement) {\n var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}\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 */\nfunction getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n var popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n var 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 var isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n var mainSide = isHoriz ? 'top' : 'left';\n var secondarySide = isHoriz ? 'left' : 'top';\n var measurement = isHoriz ? 'height' : 'width';\n var secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\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 */\nfunction 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\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 */\nfunction findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(function (cur) {\n return cur[prop] === value;\n });\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n var match = find(arr, function (obj) {\n return obj[prop] === value;\n });\n return arr.indexOf(match);\n}\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 */\nfunction runModifiers(modifiers, data, ends) {\n var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(function (modifier) {\n if (modifier['function']) {\n // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n var 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\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 */\nfunction update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n\n var 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(this.state, this.popper, this.reference, this.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 data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding);\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(this.popper, data.offsets.reference, data.placement);\n\n data.offsets.popper.position = this.options.positionFixed ? 'fixed' : '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/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nfunction isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(function (_ref) {\n var name = _ref.name,\n enabled = _ref.enabled;\n return enabled && name === modifierName;\n });\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 */\nfunction getSupportedPropertyName(property) {\n var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n var upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (var i = 0; i < prefixes.length; i++) {\n var prefix = prefixes[i];\n var toCheck = prefix ? '' + prefix + upperProp : property;\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\nfunction 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/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nfunction getWindow(element) {\n var ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n var isBody = scrollParent.nodeName === 'BODY';\n var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);\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 */\nfunction setupEventListeners(reference, options, state, updateBound) {\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 var scrollElement = getScrollParent(reference);\n attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\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 */\nfunction enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);\n }\n}\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction 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(function (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\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 */\nfunction disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\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 */\nfunction isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\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 */\nfunction setStyles(element, styles) {\n Object.keys(styles).forEach(function (prop) {\n var unit = '';\n // add unit if the value is numeric and is one of the following\n if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\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 */\nfunction setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function (prop) {\n var value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\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 */\nfunction 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 */\nfunction applyStyleOnLoad(reference, popper, options, modifierOptions, state) {\n // compute reference element offsets\n var 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 var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);\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/**\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 */\nfunction getRoundedOffsets(data, shouldRound) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n var round = Math.round,\n floor = Math.floor;\n\n var noRound = function noRound(v) {\n return v;\n };\n\n var referenceWidth = round(reference.width);\n var popperWidth = round(popper.width);\n\n var isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n var isVariation = data.placement.indexOf('-') !== -1;\n var sameWidthParity = referenceWidth % 2 === popperWidth % 2;\n var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;\n\n var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor;\n var verticalToInteger = !shouldRound ? noRound : round;\n\n return {\n left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left),\n top: verticalToInteger(popper.top),\n bottom: verticalToInteger(popper.bottom),\n right: horizontalToInteger(popper.right)\n };\n}\n\nvar 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 */\nfunction computeStyle(data, options) {\n var x = options.x,\n y = options.y;\n var popper = data.offsets.popper;\n\n // Remove this legacy support in Popper.js v2\n\n var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'applyStyle';\n }).gpuAcceleration;\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');\n }\n var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;\n\n var offsetParent = getOffsetParent(data.instance.popper);\n var offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n var styles = {\n position: popper.position\n };\n\n var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox);\n\n var sideA = x === 'bottom' ? 'top' : 'bottom';\n var 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 var 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 var left = void 0,\n top = void 0;\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 var invertTop = sideA === 'bottom' ? -1 : 1;\n var 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 var attributes = {\n 'x-placement': data.placement\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = _extends({}, attributes, data.attributes);\n data.styles = _extends({}, styles, data.styles);\n data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);\n\n return data;\n}\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 */\nfunction isModifierRequired(modifiers, requestingName, requestedName) {\n var requesting = find(modifiers, function (_ref) {\n var name = _ref.name;\n return name === requestingName;\n });\n\n var isRequired = !!requesting && modifiers.some(function (modifier) {\n return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;\n });\n\n if (!isRequired) {\n var _requesting = '`' + requestingName + '`';\n var requested = '`' + requestedName + '`';\n console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!');\n }\n return isRequired;\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 */\nfunction arrow(data, options) {\n var _data$offsets$arrow;\n\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n var 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('WARNING: `arrow.element` must be child of its popper element!');\n return data;\n }\n }\n\n var placement = data.placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n var len = isVertical ? 'height' : 'width';\n var sideCapitalized = isVertical ? 'Top' : 'Left';\n var side = sideCapitalized.toLowerCase();\n var altSide = isVertical ? 'left' : 'top';\n var opSide = isVertical ? 'bottom' : 'right';\n var 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] -= popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];\n }\n data.offsets.popper = getClientRect(data.offsets.popper);\n\n // compute center of the popper\n var 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 var css = getStyleComputedProperty(data.instance.popper);\n var popperMarginSide = parseFloat(css['margin' + sideCapitalized]);\n var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width']);\n var sideValue = 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 = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow);\n\n return data;\n}\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 */\nfunction getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\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 */\nvar placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];\n\n// Get rid of `auto` `auto-start` and `auto-end`\nvar 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 */\nfunction clockwise(placement) {\n var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var index = validPlacements.indexOf(placement);\n var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\n\nvar 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 */\nfunction 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 var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed);\n\n var placement = data.placement.split('-')[0];\n var placementOpposite = getOppositePlacement(placement);\n var variation = data.placement.split('-')[1] || '';\n\n var 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(function (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 var popperOffsets = data.offsets.popper;\n var refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\n var floor = Math.floor;\n var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom);\n\n var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom;\n\n // flip the variation if required\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n\n // flips variation if reference element overflows boundaries\n var flippedVariationByRef = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom);\n\n // flips variation if popper content overflows boundaries\n var flippedVariationByContent = !!options.flipVariationsByContent && (isVertical && variation === 'start' && overflowsRight || isVertical && variation === 'end' && overflowsLeft || !isVertical && variation === 'start' && overflowsBottom || !isVertical && variation === 'end' && overflowsTop);\n\n var 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 = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\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 */\nfunction keepTogether(data) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var placement = data.placement.split('-')[0];\n var floor = Math.floor;\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n var side = isVertical ? 'right' : 'bottom';\n var opSide = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] = 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\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 */\nfunction toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n var split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n var value = +split[1];\n var 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 var element = void 0;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n\n var 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 var size = void 0;\n if (unit === 'vh') {\n size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n } else {\n size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\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 */\nfunction parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {\n var 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 var 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 var fragments = offset.split(/(\\+|\\-)/).map(function (frag) {\n return frag.trim();\n });\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 var divider = fragments.indexOf(find(fragments, function (frag) {\n return frag.search(/,|\\s/) !== -1;\n }));\n\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');\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 var splitRegex = /\\s*,\\s*|\\s+/;\n var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments];\n\n // Convert the values with units to absolute pixels to allow our computations\n ops = ops.map(function (op, index) {\n // Most of the units rely on the orientation of the popper\n var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width';\n var mergeWithPrevious = false;\n return op\n // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce(function (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(function (str) {\n return toValue(str, measurement, popperOffsets, referenceOffsets);\n });\n });\n\n // Loop trough the offsets arrays and execute the operations\n ops.forEach(function (op, index) {\n op.forEach(function (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 */\nfunction offset(data, _ref) {\n var offset = _ref.offset;\n var placement = data.placement,\n _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var basePlacement = placement.split('-')[0];\n\n var offsets = void 0;\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\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 */\nfunction preventOverflow(data, options) {\n var boundariesElement = 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 var transformProp = getSupportedPropertyName('transform');\n var popperStyles = data.instance.popper.style; // assignment to help minification\n var top = popperStyles.top,\n left = popperStyles.left,\n transform = popperStyles[transformProp];\n\n popperStyles.top = '';\n popperStyles.left = '';\n popperStyles[transformProp] = '';\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed);\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 var order = options.priority;\n var popper = data.offsets.popper;\n\n var check = {\n primary: function primary(placement) {\n var value = popper[placement];\n if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n return defineProperty({}, placement, value);\n },\n secondary: function secondary(placement) {\n var mainSide = placement === 'right' ? 'left' : 'top';\n var value = popper[mainSide];\n if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {\n value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));\n }\n return defineProperty({}, mainSide, value);\n }\n };\n\n order.forEach(function (placement) {\n var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n popper = _extends({}, popper, check[side](placement));\n });\n\n data.offsets.popper = popper;\n\n return data;\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 */\nfunction shift(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n var _data$offsets = data.offsets,\n reference = _data$offsets.reference,\n popper = _data$offsets.popper;\n\n var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n var side = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n var shiftOffsets = {\n start: defineProperty({}, side, reference[side]),\n end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])\n };\n\n data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);\n }\n\n return data;\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 */\nfunction hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n\n var refRect = data.offsets.reference;\n var bound = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'preventOverflow';\n }).boundaries;\n\n if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {\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\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 */\nfunction inner(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\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 */\nvar modifiers = {\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\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 */\nvar Defaults = {\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: function 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: function 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: modifiers\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n\n// Utils\n// Methods\nvar Popper = function () {\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 function Popper(reference, popper) {\n var _this = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n classCallCheck(this, Popper);\n\n this.scheduleUpdate = function () {\n return requestAnimationFrame(_this.update);\n };\n\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 = _extends({}, 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(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) {\n _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {});\n });\n\n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers).map(function (name) {\n return _extends({\n name: name\n }, _this.options.modifiers[name]);\n })\n // sort the modifiers by order\n .sort(function (a, b) {\n return a.order - b.order;\n });\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(function (modifierOptions) {\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);\n }\n });\n\n // fire the first update to position the popper in the right place\n this.update();\n\n var 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\n\n createClass(Popper, [{\n key: 'update',\n value: function update$$1() {\n return update.call(this);\n }\n }, {\n key: 'destroy',\n value: function destroy$$1() {\n return destroy.call(this);\n }\n }, {\n key: 'enableEventListeners',\n value: function enableEventListeners$$1() {\n return enableEventListeners.call(this);\n }\n }, {\n key: 'disableEventListeners',\n value: function disableEventListeners$$1() {\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\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\n }]);\n return Popper;\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\nPopper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\nPopper.placements = placements;\nPopper.Defaults = Defaults;\n\nexport default Popper;\n//# sourceMappingURL=popper.js.map\n","( function( factory ) {\n\t\"use strict\";\n\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} )( function( $ ) {\n\"use strict\";\n\n$.ui = $.ui || {};\n\nreturn $.ui.version = \"1.13.2\";\n\n} );\n","/*\nUnobtrusive JavaScript\nhttps://github.com/rails/rails/blob/master/actionview/app/assets/javascripts\nReleased under the MIT license\n */;\n\n(function() {\n var context = this;\n\n (function() {\n (function() {\n this.Rails = {\n linkClickSelector: 'a[data-confirm], a[data-method], a[data-remote]:not([disabled]), a[data-disable-with], a[data-disable]',\n buttonClickSelector: {\n selector: 'button[data-remote]:not([form]), button[data-confirm]:not([form])',\n exclude: 'form button'\n },\n inputChangeSelector: 'select[data-remote], input[data-remote], textarea[data-remote]',\n formSubmitSelector: 'form',\n formInputClickSelector: 'form input[type=submit], form input[type=image], form button[type=submit], form button:not([type]), input[type=submit][form], input[type=image][form], button[type=submit][form], button[form]:not([type])',\n formDisableSelector: 'input[data-disable-with]:enabled, button[data-disable-with]:enabled, textarea[data-disable-with]:enabled, input[data-disable]:enabled, button[data-disable]:enabled, textarea[data-disable]:enabled',\n formEnableSelector: 'input[data-disable-with]:disabled, button[data-disable-with]:disabled, textarea[data-disable-with]:disabled, input[data-disable]:disabled, button[data-disable]:disabled, textarea[data-disable]:disabled',\n fileInputSelector: 'input[name][type=file]:not([disabled])',\n linkDisableSelector: 'a[data-disable-with], a[data-disable]',\n buttonDisableSelector: 'button[data-remote][data-disable-with], button[data-remote][data-disable]'\n };\n\n }).call(this);\n }).call(context);\n\n var Rails = context.Rails;\n\n (function() {\n (function() {\n var nonce;\n\n nonce = null;\n\n Rails.loadCSPNonce = function() {\n var ref;\n return nonce = (ref = document.querySelector(\"meta[name=csp-nonce]\")) != null ? ref.content : void 0;\n };\n\n Rails.cspNonce = function() {\n return nonce != null ? nonce : Rails.loadCSPNonce();\n };\n\n }).call(this);\n (function() {\n var expando, m;\n\n m = Element.prototype.matches || Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector;\n\n Rails.matches = function(element, selector) {\n if (selector.exclude != null) {\n return m.call(element, selector.selector) && !m.call(element, selector.exclude);\n } else {\n return m.call(element, selector);\n }\n };\n\n expando = '_ujsData';\n\n Rails.getData = function(element, key) {\n var ref;\n return (ref = element[expando]) != null ? ref[key] : void 0;\n };\n\n Rails.setData = function(element, key, value) {\n if (element[expando] == null) {\n element[expando] = {};\n }\n return element[expando][key] = value;\n };\n\n Rails.$ = function(selector) {\n return Array.prototype.slice.call(document.querySelectorAll(selector));\n };\n\n }).call(this);\n (function() {\n var $, csrfParam, csrfToken;\n\n $ = Rails.$;\n\n csrfToken = Rails.csrfToken = function() {\n var meta;\n meta = document.querySelector('meta[name=csrf-token]');\n return meta && meta.content;\n };\n\n csrfParam = Rails.csrfParam = function() {\n var meta;\n meta = document.querySelector('meta[name=csrf-param]');\n return meta && meta.content;\n };\n\n Rails.CSRFProtection = function(xhr) {\n var token;\n token = csrfToken();\n if (token != null) {\n return xhr.setRequestHeader('X-CSRF-Token', token);\n }\n };\n\n Rails.refreshCSRFTokens = function() {\n var param, token;\n token = csrfToken();\n param = csrfParam();\n if ((token != null) && (param != null)) {\n return $('form input[name=\"' + param + '\"]').forEach(function(input) {\n return input.value = token;\n });\n }\n };\n\n }).call(this);\n (function() {\n var CustomEvent, fire, matches, preventDefault;\n\n matches = Rails.matches;\n\n CustomEvent = window.CustomEvent;\n\n if (typeof CustomEvent !== 'function') {\n CustomEvent = function(event, params) {\n var evt;\n evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return evt;\n };\n CustomEvent.prototype = window.Event.prototype;\n preventDefault = CustomEvent.prototype.preventDefault;\n CustomEvent.prototype.preventDefault = function() {\n var result;\n result = preventDefault.call(this);\n if (this.cancelable && !this.defaultPrevented) {\n Object.defineProperty(this, 'defaultPrevented', {\n get: function() {\n return true;\n }\n });\n }\n return result;\n };\n }\n\n fire = Rails.fire = function(obj, name, data) {\n var event;\n event = new CustomEvent(name, {\n bubbles: true,\n cancelable: true,\n detail: data\n });\n obj.dispatchEvent(event);\n return !event.defaultPrevented;\n };\n\n Rails.stopEverything = function(e) {\n fire(e.target, 'ujs:everythingStopped');\n e.preventDefault();\n e.stopPropagation();\n return e.stopImmediatePropagation();\n };\n\n Rails.delegate = function(element, selector, eventType, handler) {\n return element.addEventListener(eventType, function(e) {\n var target;\n target = e.target;\n while (!(!(target instanceof Element) || matches(target, selector))) {\n target = target.parentNode;\n }\n if (target instanceof Element && handler.call(target, e) === false) {\n e.preventDefault();\n return e.stopPropagation();\n }\n });\n };\n\n }).call(this);\n (function() {\n var AcceptHeaders, CSRFProtection, createXHR, cspNonce, fire, prepareOptions, processResponse;\n\n cspNonce = Rails.cspNonce, CSRFProtection = Rails.CSRFProtection, fire = Rails.fire;\n\n AcceptHeaders = {\n '*': '*/*',\n text: 'text/plain',\n html: 'text/html',\n xml: 'application/xml, text/xml',\n json: 'application/json, text/javascript',\n script: 'text/javascript, application/javascript, application/ecmascript, application/x-ecmascript'\n };\n\n Rails.ajax = function(options) {\n var xhr;\n options = prepareOptions(options);\n xhr = createXHR(options, function() {\n var ref, response;\n response = processResponse((ref = xhr.response) != null ? ref : xhr.responseText, xhr.getResponseHeader('Content-Type'));\n if (Math.floor(xhr.status / 100) === 2) {\n if (typeof options.success === \"function\") {\n options.success(response, xhr.statusText, xhr);\n }\n } else {\n if (typeof options.error === \"function\") {\n options.error(response, xhr.statusText, xhr);\n }\n }\n return typeof options.complete === \"function\" ? options.complete(xhr, xhr.statusText) : void 0;\n });\n if ((options.beforeSend != null) && !options.beforeSend(xhr, options)) {\n return false;\n }\n if (xhr.readyState === XMLHttpRequest.OPENED) {\n return xhr.send(options.data);\n }\n };\n\n prepareOptions = function(options) {\n options.url = options.url || location.href;\n options.type = options.type.toUpperCase();\n if (options.type === 'GET' && options.data) {\n if (options.url.indexOf('?') < 0) {\n options.url += '?' + options.data;\n } else {\n options.url += '&' + options.data;\n }\n }\n if (AcceptHeaders[options.dataType] == null) {\n options.dataType = '*';\n }\n options.accept = AcceptHeaders[options.dataType];\n if (options.dataType !== '*') {\n options.accept += ', */*; q=0.01';\n }\n return options;\n };\n\n createXHR = function(options, done) {\n var xhr;\n xhr = new XMLHttpRequest();\n xhr.open(options.type, options.url, true);\n xhr.setRequestHeader('Accept', options.accept);\n if (typeof options.data === 'string') {\n xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');\n }\n if (!options.crossDomain) {\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n CSRFProtection(xhr);\n }\n xhr.withCredentials = !!options.withCredentials;\n xhr.onreadystatechange = function() {\n if (xhr.readyState === XMLHttpRequest.DONE) {\n return done(xhr);\n }\n };\n return xhr;\n };\n\n processResponse = function(response, type) {\n var parser, script;\n if (typeof response === 'string' && typeof type === 'string') {\n if (type.match(/\\bjson\\b/)) {\n try {\n response = JSON.parse(response);\n } catch (error) {}\n } else if (type.match(/\\b(?:java|ecma)script\\b/)) {\n script = document.createElement('script');\n script.setAttribute('nonce', cspNonce());\n script.text = response;\n document.head.appendChild(script).parentNode.removeChild(script);\n } else if (type.match(/\\b(xml|html|svg)\\b/)) {\n parser = new DOMParser();\n type = type.replace(/;.+/, '');\n try {\n response = parser.parseFromString(response, type);\n } catch (error) {}\n }\n }\n return response;\n };\n\n Rails.href = function(element) {\n return element.href;\n };\n\n Rails.isCrossDomain = function(url) {\n var e, originAnchor, urlAnchor;\n originAnchor = document.createElement('a');\n originAnchor.href = location.href;\n urlAnchor = document.createElement('a');\n try {\n urlAnchor.href = url;\n return !(((!urlAnchor.protocol || urlAnchor.protocol === ':') && !urlAnchor.host) || (originAnchor.protocol + '//' + originAnchor.host === urlAnchor.protocol + '//' + urlAnchor.host));\n } catch (error) {\n e = error;\n return true;\n }\n };\n\n }).call(this);\n (function() {\n var matches, toArray;\n\n matches = Rails.matches;\n\n toArray = function(e) {\n return Array.prototype.slice.call(e);\n };\n\n Rails.serializeElement = function(element, additionalParam) {\n var inputs, params;\n inputs = [element];\n if (matches(element, 'form')) {\n inputs = toArray(element.elements);\n }\n params = [];\n inputs.forEach(function(input) {\n if (!input.name || input.disabled) {\n return;\n }\n if (matches(input, 'select')) {\n return toArray(input.options).forEach(function(option) {\n if (option.selected) {\n return params.push({\n name: input.name,\n value: option.value\n });\n }\n });\n } else if (input.checked || ['radio', 'checkbox', 'submit'].indexOf(input.type) === -1) {\n return params.push({\n name: input.name,\n value: input.value\n });\n }\n });\n if (additionalParam) {\n params.push(additionalParam);\n }\n return params.map(function(param) {\n if (param.name != null) {\n return (encodeURIComponent(param.name)) + \"=\" + (encodeURIComponent(param.value));\n } else {\n return param;\n }\n }).join('&');\n };\n\n Rails.formElements = function(form, selector) {\n if (matches(form, 'form')) {\n return toArray(form.elements).filter(function(el) {\n return matches(el, selector);\n });\n } else {\n return toArray(form.querySelectorAll(selector));\n }\n };\n\n }).call(this);\n (function() {\n var allowAction, fire, stopEverything;\n\n fire = Rails.fire, stopEverything = Rails.stopEverything;\n\n Rails.handleConfirm = function(e) {\n if (!allowAction(this)) {\n return stopEverything(e);\n }\n };\n\n allowAction = function(element) {\n var answer, callback, message;\n message = element.getAttribute('data-confirm');\n if (!message) {\n return true;\n }\n answer = false;\n if (fire(element, 'confirm')) {\n try {\n answer = confirm(message);\n } catch (error) {}\n callback = fire(element, 'confirm:complete', [answer]);\n }\n return answer && callback;\n };\n\n }).call(this);\n (function() {\n var disableFormElement, disableFormElements, disableLinkElement, enableFormElement, enableFormElements, enableLinkElement, formElements, getData, matches, setData, stopEverything;\n\n matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, stopEverything = Rails.stopEverything, formElements = Rails.formElements;\n\n Rails.handleDisabledElement = function(e) {\n var element;\n element = this;\n if (element.disabled) {\n return stopEverything(e);\n }\n };\n\n Rails.enableElement = function(e) {\n var element;\n element = e instanceof Event ? e.target : e;\n if (matches(element, Rails.linkDisableSelector)) {\n return enableLinkElement(element);\n } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formEnableSelector)) {\n return enableFormElement(element);\n } else if (matches(element, Rails.formSubmitSelector)) {\n return enableFormElements(element);\n }\n };\n\n Rails.disableElement = function(e) {\n var element;\n element = e instanceof Event ? e.target : e;\n if (matches(element, Rails.linkDisableSelector)) {\n return disableLinkElement(element);\n } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formDisableSelector)) {\n return disableFormElement(element);\n } else if (matches(element, Rails.formSubmitSelector)) {\n return disableFormElements(element);\n }\n };\n\n disableLinkElement = function(element) {\n var replacement;\n replacement = element.getAttribute('data-disable-with');\n if (replacement != null) {\n setData(element, 'ujs:enable-with', element.innerHTML);\n element.innerHTML = replacement;\n }\n element.addEventListener('click', stopEverything);\n return setData(element, 'ujs:disabled', true);\n };\n\n enableLinkElement = function(element) {\n var originalText;\n originalText = getData(element, 'ujs:enable-with');\n if (originalText != null) {\n element.innerHTML = originalText;\n setData(element, 'ujs:enable-with', null);\n }\n element.removeEventListener('click', stopEverything);\n return setData(element, 'ujs:disabled', null);\n };\n\n disableFormElements = function(form) {\n return formElements(form, Rails.formDisableSelector).forEach(disableFormElement);\n };\n\n disableFormElement = function(element) {\n var replacement;\n replacement = element.getAttribute('data-disable-with');\n if (replacement != null) {\n if (matches(element, 'button')) {\n setData(element, 'ujs:enable-with', element.innerHTML);\n element.innerHTML = replacement;\n } else {\n setData(element, 'ujs:enable-with', element.value);\n element.value = replacement;\n }\n }\n element.disabled = true;\n return setData(element, 'ujs:disabled', true);\n };\n\n enableFormElements = function(form) {\n return formElements(form, Rails.formEnableSelector).forEach(enableFormElement);\n };\n\n enableFormElement = function(element) {\n var originalText;\n originalText = getData(element, 'ujs:enable-with');\n if (originalText != null) {\n if (matches(element, 'button')) {\n element.innerHTML = originalText;\n } else {\n element.value = originalText;\n }\n setData(element, 'ujs:enable-with', null);\n }\n element.disabled = false;\n return setData(element, 'ujs:disabled', null);\n };\n\n }).call(this);\n (function() {\n var stopEverything;\n\n stopEverything = Rails.stopEverything;\n\n Rails.handleMethod = function(e) {\n var csrfParam, csrfToken, form, formContent, href, link, method;\n link = this;\n method = link.getAttribute('data-method');\n if (!method) {\n return;\n }\n href = Rails.href(link);\n csrfToken = Rails.csrfToken();\n csrfParam = Rails.csrfParam();\n form = document.createElement('form');\n formContent = \"<input name='_method' value='\" + method + \"' type='hidden' />\";\n if ((csrfParam != null) && (csrfToken != null) && !Rails.isCrossDomain(href)) {\n formContent += \"<input name='\" + csrfParam + \"' value='\" + csrfToken + \"' type='hidden' />\";\n }\n formContent += '<input type=\"submit\" />';\n form.method = 'post';\n form.action = href;\n form.target = link.target;\n form.innerHTML = formContent;\n form.style.display = 'none';\n document.body.appendChild(form);\n form.querySelector('[type=\"submit\"]').click();\n return stopEverything(e);\n };\n\n }).call(this);\n (function() {\n var ajax, fire, getData, isCrossDomain, isRemote, matches, serializeElement, setData, stopEverything,\n slice = [].slice;\n\n matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, fire = Rails.fire, stopEverything = Rails.stopEverything, ajax = Rails.ajax, isCrossDomain = Rails.isCrossDomain, serializeElement = Rails.serializeElement;\n\n isRemote = function(element) {\n var value;\n value = element.getAttribute('data-remote');\n return (value != null) && value !== 'false';\n };\n\n Rails.handleRemote = function(e) {\n var button, data, dataType, element, method, url, withCredentials;\n element = this;\n if (!isRemote(element)) {\n return true;\n }\n if (!fire(element, 'ajax:before')) {\n fire(element, 'ajax:stopped');\n return false;\n }\n withCredentials = element.getAttribute('data-with-credentials');\n dataType = element.getAttribute('data-type') || 'script';\n if (matches(element, Rails.formSubmitSelector)) {\n button = getData(element, 'ujs:submit-button');\n method = getData(element, 'ujs:submit-button-formmethod') || element.method;\n url = getData(element, 'ujs:submit-button-formaction') || element.getAttribute('action') || location.href;\n if (method.toUpperCase() === 'GET') {\n url = url.replace(/\\?.*$/, '');\n }\n if (element.enctype === 'multipart/form-data') {\n data = new FormData(element);\n if (button != null) {\n data.append(button.name, button.value);\n }\n } else {\n data = serializeElement(element, button);\n }\n setData(element, 'ujs:submit-button', null);\n setData(element, 'ujs:submit-button-formmethod', null);\n setData(element, 'ujs:submit-button-formaction', null);\n } else if (matches(element, Rails.buttonClickSelector) || matches(element, Rails.inputChangeSelector)) {\n method = element.getAttribute('data-method');\n url = element.getAttribute('data-url');\n data = serializeElement(element, element.getAttribute('data-params'));\n } else {\n method = element.getAttribute('data-method');\n url = Rails.href(element);\n data = element.getAttribute('data-params');\n }\n ajax({\n type: method || 'GET',\n url: url,\n data: data,\n dataType: dataType,\n beforeSend: function(xhr, options) {\n if (fire(element, 'ajax:beforeSend', [xhr, options])) {\n return fire(element, 'ajax:send', [xhr]);\n } else {\n fire(element, 'ajax:stopped');\n return false;\n }\n },\n success: function() {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:success', args);\n },\n error: function() {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:error', args);\n },\n complete: function() {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:complete', args);\n },\n crossDomain: isCrossDomain(url),\n withCredentials: (withCredentials != null) && withCredentials !== 'false'\n });\n return stopEverything(e);\n };\n\n Rails.formSubmitButtonClick = function(e) {\n var button, form;\n button = this;\n form = button.form;\n if (!form) {\n return;\n }\n if (button.name) {\n setData(form, 'ujs:submit-button', {\n name: button.name,\n value: button.value\n });\n }\n setData(form, 'ujs:formnovalidate-button', button.formNoValidate);\n setData(form, 'ujs:submit-button-formaction', button.getAttribute('formaction'));\n return setData(form, 'ujs:submit-button-formmethod', button.getAttribute('formmethod'));\n };\n\n Rails.preventInsignificantClick = function(e) {\n var data, insignificantMetaClick, link, metaClick, method, nonPrimaryMouseClick;\n link = this;\n method = (link.getAttribute('data-method') || 'GET').toUpperCase();\n data = link.getAttribute('data-params');\n metaClick = e.metaKey || e.ctrlKey;\n insignificantMetaClick = metaClick && method === 'GET' && !data;\n nonPrimaryMouseClick = (e.button != null) && e.button !== 0;\n if (nonPrimaryMouseClick || insignificantMetaClick) {\n return e.stopImmediatePropagation();\n }\n };\n\n }).call(this);\n (function() {\n var $, CSRFProtection, delegate, disableElement, enableElement, fire, formSubmitButtonClick, getData, handleConfirm, handleDisabledElement, handleMethod, handleRemote, loadCSPNonce, preventInsignificantClick, refreshCSRFTokens;\n\n fire = Rails.fire, delegate = Rails.delegate, getData = Rails.getData, $ = Rails.$, refreshCSRFTokens = Rails.refreshCSRFTokens, CSRFProtection = Rails.CSRFProtection, loadCSPNonce = Rails.loadCSPNonce, enableElement = Rails.enableElement, disableElement = Rails.disableElement, handleDisabledElement = Rails.handleDisabledElement, handleConfirm = Rails.handleConfirm, preventInsignificantClick = Rails.preventInsignificantClick, handleRemote = Rails.handleRemote, formSubmitButtonClick = Rails.formSubmitButtonClick, handleMethod = Rails.handleMethod;\n\n if ((typeof jQuery !== \"undefined\" && jQuery !== null) && (jQuery.ajax != null)) {\n if (jQuery.rails) {\n throw new Error('If you load both jquery_ujs and rails-ujs, use rails-ujs only.');\n }\n jQuery.rails = Rails;\n jQuery.ajaxPrefilter(function(options, originalOptions, xhr) {\n if (!options.crossDomain) {\n return CSRFProtection(xhr);\n }\n });\n }\n\n Rails.start = function() {\n if (window._rails_loaded) {\n throw new Error('rails-ujs has already been loaded!');\n }\n window.addEventListener('pageshow', function() {\n $(Rails.formEnableSelector).forEach(function(el) {\n if (getData(el, 'ujs:disabled')) {\n return enableElement(el);\n }\n });\n return $(Rails.linkDisableSelector).forEach(function(el) {\n if (getData(el, 'ujs:disabled')) {\n return enableElement(el);\n }\n });\n });\n delegate(document, Rails.linkDisableSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.linkDisableSelector, 'ajax:stopped', enableElement);\n delegate(document, Rails.buttonDisableSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.buttonDisableSelector, 'ajax:stopped', enableElement);\n delegate(document, Rails.linkClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.linkClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.linkClickSelector, 'click', handleConfirm);\n delegate(document, Rails.linkClickSelector, 'click', disableElement);\n delegate(document, Rails.linkClickSelector, 'click', handleRemote);\n delegate(document, Rails.linkClickSelector, 'click', handleMethod);\n delegate(document, Rails.buttonClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.buttonClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.buttonClickSelector, 'click', handleConfirm);\n delegate(document, Rails.buttonClickSelector, 'click', disableElement);\n delegate(document, Rails.buttonClickSelector, 'click', handleRemote);\n delegate(document, Rails.inputChangeSelector, 'change', handleDisabledElement);\n delegate(document, Rails.inputChangeSelector, 'change', handleConfirm);\n delegate(document, Rails.inputChangeSelector, 'change', handleRemote);\n delegate(document, Rails.formSubmitSelector, 'submit', handleDisabledElement);\n delegate(document, Rails.formSubmitSelector, 'submit', handleConfirm);\n delegate(document, Rails.formSubmitSelector, 'submit', handleRemote);\n delegate(document, Rails.formSubmitSelector, 'submit', function(e) {\n return setTimeout((function() {\n return disableElement(e);\n }), 13);\n });\n delegate(document, Rails.formSubmitSelector, 'ajax:send', disableElement);\n delegate(document, Rails.formSubmitSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.formInputClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.formInputClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.formInputClickSelector, 'click', handleConfirm);\n delegate(document, Rails.formInputClickSelector, 'click', formSubmitButtonClick);\n document.addEventListener('DOMContentLoaded', refreshCSRFTokens);\n document.addEventListener('DOMContentLoaded', loadCSPNonce);\n return window._rails_loaded = true;\n };\n\n if (window.Rails === Rails && fire(document, 'rails:attachBindings')) {\n Rails.start();\n }\n\n }).call(this);\n }).call(this);\n\n if (typeof module === \"object\" && module.exports) {\n module.exports = Rails;\n } else if (typeof define === \"function\" && define.amd) {\n define(Rails);\n }\n}).call(this);\n","/*!\n * Bootstrap dropdown.js v4.6.2 (https://getbootstrap.com/)\n * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('jquery'), require('popper.js'), require('./util.js')) :\n typeof define === 'function' && define.amd ? define(['jquery', 'popper.js', './util'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Dropdown = factory(global.jQuery, global.Popper, global.Util));\n})(this, (function ($, Popper, Util) { 'use strict';\n\n function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\n var $__default = /*#__PURE__*/_interopDefaultLegacy($);\n var Popper__default = /*#__PURE__*/_interopDefaultLegacy(Popper);\n var Util__default = /*#__PURE__*/_interopDefaultLegacy(Util);\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n }\n\n function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n return _extends.apply(this, arguments);\n }\n\n /**\n * Constants\n */\n\n var NAME = 'dropdown';\n var VERSION = '4.6.2';\n var DATA_KEY = 'bs.dropdown';\n var EVENT_KEY = \".\" + DATA_KEY;\n var DATA_API_KEY = '.data-api';\n var JQUERY_NO_CONFLICT = $__default[\"default\"].fn[NAME];\n var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key\n\n var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key\n\n var TAB_KEYCODE = 9; // KeyboardEvent.which value for tab key\n\n var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key\n\n var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key\n\n var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse)\n\n var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + \"|\" + ARROW_DOWN_KEYCODE + \"|\" + ESCAPE_KEYCODE);\n var CLASS_NAME_DISABLED = 'disabled';\n var CLASS_NAME_SHOW = 'show';\n var CLASS_NAME_DROPUP = 'dropup';\n var CLASS_NAME_DROPRIGHT = 'dropright';\n var CLASS_NAME_DROPLEFT = 'dropleft';\n var CLASS_NAME_MENURIGHT = 'dropdown-menu-right';\n var CLASS_NAME_POSITION_STATIC = 'position-static';\n var EVENT_HIDE = \"hide\" + EVENT_KEY;\n var EVENT_HIDDEN = \"hidden\" + EVENT_KEY;\n var EVENT_SHOW = \"show\" + EVENT_KEY;\n var EVENT_SHOWN = \"shown\" + EVENT_KEY;\n var EVENT_CLICK = \"click\" + EVENT_KEY;\n var EVENT_CLICK_DATA_API = \"click\" + EVENT_KEY + DATA_API_KEY;\n var EVENT_KEYDOWN_DATA_API = \"keydown\" + EVENT_KEY + DATA_API_KEY;\n var EVENT_KEYUP_DATA_API = \"keyup\" + EVENT_KEY + DATA_API_KEY;\n var SELECTOR_DATA_TOGGLE = '[data-toggle=\"dropdown\"]';\n var SELECTOR_FORM_CHILD = '.dropdown form';\n var SELECTOR_MENU = '.dropdown-menu';\n var SELECTOR_NAVBAR_NAV = '.navbar-nav';\n var SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';\n var PLACEMENT_TOP = 'top-start';\n var PLACEMENT_TOPEND = 'top-end';\n var PLACEMENT_BOTTOM = 'bottom-start';\n var PLACEMENT_BOTTOMEND = 'bottom-end';\n var PLACEMENT_RIGHT = 'right-start';\n var PLACEMENT_LEFT = 'left-start';\n var Default = {\n offset: 0,\n flip: true,\n boundary: 'scrollParent',\n reference: 'toggle',\n display: 'dynamic',\n popperConfig: null\n };\n var 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 * Class definition\n */\n\n var Dropdown = /*#__PURE__*/function () {\n function Dropdown(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 } // Getters\n\n\n var _proto = Dropdown.prototype;\n\n // Public\n _proto.toggle = function toggle() {\n if (this._element.disabled || $__default[\"default\"](this._element).hasClass(CLASS_NAME_DISABLED)) {\n return;\n }\n\n var isActive = $__default[\"default\"](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 _proto.show = function show(usePopper) {\n if (usePopper === void 0) {\n usePopper = false;\n }\n\n if (this._element.disabled || $__default[\"default\"](this._element).hasClass(CLASS_NAME_DISABLED) || $__default[\"default\"](this._menu).hasClass(CLASS_NAME_SHOW)) {\n return;\n }\n\n var relatedTarget = {\n relatedTarget: this._element\n };\n var showEvent = $__default[\"default\"].Event(EVENT_SHOW, relatedTarget);\n\n var parent = Dropdown._getParentFromElement(this._element);\n\n $__default[\"default\"](parent).trigger(showEvent);\n\n if (showEvent.isDefaultPrevented()) {\n return;\n } // Totally disable Popper for Dropdowns in Navbar\n\n\n if (!this._inNavbar && usePopper) {\n // Check for Popper dependency\n if (typeof Popper__default[\"default\"] === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)');\n }\n\n var referenceElement = this._element;\n\n if (this._config.reference === 'parent') {\n referenceElement = parent;\n } else if (Util__default[\"default\"].isElement(this._config.reference)) {\n referenceElement = this._config.reference; // Check if it's jQuery element\n\n if (typeof this._config.reference.jquery !== 'undefined') {\n referenceElement = this._config.reference[0];\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\n\n if (this._config.boundary !== 'scrollParent') {\n $__default[\"default\"](parent).addClass(CLASS_NAME_POSITION_STATIC);\n }\n\n this._popper = new Popper__default[\"default\"](referenceElement, this._menu, this._getPopperConfig());\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\n\n if ('ontouchstart' in document.documentElement && $__default[\"default\"](parent).closest(SELECTOR_NAVBAR_NAV).length === 0) {\n $__default[\"default\"](document.body).children().on('mouseover', null, $__default[\"default\"].noop);\n }\n\n this._element.focus();\n\n this._element.setAttribute('aria-expanded', true);\n\n $__default[\"default\"](this._menu).toggleClass(CLASS_NAME_SHOW);\n $__default[\"default\"](parent).toggleClass(CLASS_NAME_SHOW).trigger($__default[\"default\"].Event(EVENT_SHOWN, relatedTarget));\n };\n\n _proto.hide = function hide() {\n if (this._element.disabled || $__default[\"default\"](this._element).hasClass(CLASS_NAME_DISABLED) || !$__default[\"default\"](this._menu).hasClass(CLASS_NAME_SHOW)) {\n return;\n }\n\n var relatedTarget = {\n relatedTarget: this._element\n };\n var hideEvent = $__default[\"default\"].Event(EVENT_HIDE, relatedTarget);\n\n var parent = Dropdown._getParentFromElement(this._element);\n\n $__default[\"default\"](parent).trigger(hideEvent);\n\n if (hideEvent.isDefaultPrevented()) {\n return;\n }\n\n if (this._popper) {\n this._popper.destroy();\n }\n\n $__default[\"default\"](this._menu).toggleClass(CLASS_NAME_SHOW);\n $__default[\"default\"](parent).toggleClass(CLASS_NAME_SHOW).trigger($__default[\"default\"].Event(EVENT_HIDDEN, relatedTarget));\n };\n\n _proto.dispose = function dispose() {\n $__default[\"default\"].removeData(this._element, DATA_KEY);\n $__default[\"default\"](this._element).off(EVENT_KEY);\n this._element = null;\n this._menu = null;\n\n if (this._popper !== null) {\n this._popper.destroy();\n\n this._popper = null;\n }\n };\n\n _proto.update = function update() {\n this._inNavbar = this._detectNavbar();\n\n if (this._popper !== null) {\n this._popper.scheduleUpdate();\n }\n } // Private\n ;\n\n _proto._addEventListeners = function _addEventListeners() {\n var _this = this;\n\n $__default[\"default\"](this._element).on(EVENT_CLICK, function (event) {\n event.preventDefault();\n event.stopPropagation();\n\n _this.toggle();\n });\n };\n\n _proto._getConfig = function _getConfig(config) {\n config = _extends({}, this.constructor.Default, $__default[\"default\"](this._element).data(), config);\n Util__default[\"default\"].typeCheckConfig(NAME, config, this.constructor.DefaultType);\n return config;\n };\n\n _proto._getMenuElement = function _getMenuElement() {\n if (!this._menu) {\n var 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 _proto._getPlacement = function _getPlacement() {\n var $parentDropdown = $__default[\"default\"](this._element.parentNode);\n var placement = PLACEMENT_BOTTOM; // Handle dropup\n\n if ($parentDropdown.hasClass(CLASS_NAME_DROPUP)) {\n placement = $__default[\"default\"](this._menu).hasClass(CLASS_NAME_MENURIGHT) ? PLACEMENT_TOPEND : 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 ($__default[\"default\"](this._menu).hasClass(CLASS_NAME_MENURIGHT)) {\n placement = PLACEMENT_BOTTOMEND;\n }\n\n return placement;\n };\n\n _proto._detectNavbar = function _detectNavbar() {\n return $__default[\"default\"](this._element).closest('.navbar').length > 0;\n };\n\n _proto._getOffset = function _getOffset() {\n var _this2 = this;\n\n var offset = {};\n\n if (typeof this._config.offset === 'function') {\n offset.fn = function (data) {\n data.offsets = _extends({}, data.offsets, _this2._config.offset(data.offsets, _this2._element));\n return data;\n };\n } else {\n offset.offset = this._config.offset;\n }\n\n return offset;\n };\n\n _proto._getPopperConfig = function _getPopperConfig() {\n var 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 }; // Disable Popper if we have a static display\n\n if (this._config.display === 'static') {\n popperConfig.modifiers.applyStyle = {\n enabled: false\n };\n }\n\n return _extends({}, popperConfig, this._config.popperConfig);\n } // Static\n ;\n\n Dropdown._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $__default[\"default\"](this).data(DATA_KEY);\n\n var _config = typeof config === 'object' ? config : null;\n\n if (!data) {\n data = new Dropdown(this, _config);\n $__default[\"default\"](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 Dropdown._clearMenus = function _clearMenus(event) {\n if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === 'keyup' && event.which !== TAB_KEYCODE)) {\n return;\n }\n\n var toggles = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE));\n\n for (var i = 0, len = toggles.length; i < len; i++) {\n var parent = Dropdown._getParentFromElement(toggles[i]);\n\n var context = $__default[\"default\"](toggles[i]).data(DATA_KEY);\n var 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 var dropdownMenu = context._menu;\n\n if (!$__default[\"default\"](parent).hasClass(CLASS_NAME_SHOW)) {\n continue;\n }\n\n if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && $__default[\"default\"].contains(parent, event.target)) {\n continue;\n }\n\n var hideEvent = $__default[\"default\"].Event(EVENT_HIDE, relatedTarget);\n $__default[\"default\"](parent).trigger(hideEvent);\n\n if (hideEvent.isDefaultPrevented()) {\n continue;\n } // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n\n\n if ('ontouchstart' in document.documentElement) {\n $__default[\"default\"](document.body).children().off('mouseover', null, $__default[\"default\"].noop);\n }\n\n toggles[i].setAttribute('aria-expanded', 'false');\n\n if (context._popper) {\n context._popper.destroy();\n }\n\n $__default[\"default\"](dropdownMenu).removeClass(CLASS_NAME_SHOW);\n $__default[\"default\"](parent).removeClass(CLASS_NAME_SHOW).trigger($__default[\"default\"].Event(EVENT_HIDDEN, relatedTarget));\n }\n };\n\n Dropdown._getParentFromElement = function _getParentFromElement(element) {\n var parent;\n var selector = Util__default[\"default\"].getSelectorFromElement(element);\n\n if (selector) {\n parent = document.querySelector(selector);\n }\n\n return parent || element.parentNode;\n } // eslint-disable-next-line complexity\n ;\n\n Dropdown._dataApiKeydownHandler = function _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) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || $__default[\"default\"](event.target).closest(SELECTOR_MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {\n return;\n }\n\n if (this.disabled || $__default[\"default\"](this).hasClass(CLASS_NAME_DISABLED)) {\n return;\n }\n\n var parent = Dropdown._getParentFromElement(this);\n\n var isActive = $__default[\"default\"](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 $__default[\"default\"](parent.querySelector(SELECTOR_DATA_TOGGLE)).trigger('focus');\n }\n\n $__default[\"default\"](this).trigger('click');\n return;\n }\n\n var items = [].slice.call(parent.querySelectorAll(SELECTOR_VISIBLE_ITEMS)).filter(function (item) {\n return $__default[\"default\"](item).is(':visible');\n });\n\n if (items.length === 0) {\n return;\n }\n\n var index = items.indexOf(event.target);\n\n if (event.which === ARROW_UP_KEYCODE && index > 0) {\n // Up\n index--;\n }\n\n if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) {\n // Down\n index++;\n }\n\n if (index < 0) {\n index = 0;\n }\n\n items[index].focus();\n };\n\n _createClass(Dropdown, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType;\n }\n }]);\n\n return Dropdown;\n }();\n /**\n * Data API implementation\n */\n\n\n $__default[\"default\"](document).on(EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown._dataApiKeydownHandler).on(EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown._dataApiKeydownHandler).on(EVENT_CLICK_DATA_API + \" \" + EVENT_KEYUP_DATA_API, Dropdown._clearMenus).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n event.preventDefault();\n event.stopPropagation();\n\n Dropdown._jQueryInterface.call($__default[\"default\"](this), 'toggle');\n }).on(EVENT_CLICK_DATA_API, SELECTOR_FORM_CHILD, function (e) {\n e.stopPropagation();\n });\n /**\n * jQuery\n */\n\n $__default[\"default\"].fn[NAME] = Dropdown._jQueryInterface;\n $__default[\"default\"].fn[NAME].Constructor = Dropdown;\n\n $__default[\"default\"].fn[NAME].noConflict = function () {\n $__default[\"default\"].fn[NAME] = JQUERY_NO_CONFLICT;\n return Dropdown._jQueryInterface;\n };\n\n return Dropdown;\n\n}));\n//# sourceMappingURL=dropdown.js.map\n","( function( factory ) {\n\t\"use strict\";\n\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\", \"./version\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} )( function( $ ) {\n\"use strict\";\n\nreturn $.ui.safeActiveElement = function( document ) {\n\tvar activeElement;\n\n\t// Support: IE 9 only\n\t// IE9 throws an \"Unspecified error\" accessing document.activeElement from an <iframe>\n\ttry {\n\t\tactiveElement = document.activeElement;\n\t} catch ( error ) {\n\t\tactiveElement = document.body;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE may return null instead of an element\n\t// Interestingly, this only seems to occur when NOT in an iframe\n\tif ( !activeElement ) {\n\t\tactiveElement = document.body;\n\t}\n\n\t// Support: IE 11 only\n\t// IE11 returns a seemingly empty object in some cases when accessing\n\t// document.activeElement from an <iframe>\n\tif ( !activeElement.nodeName ) {\n\t\tactiveElement = document.body;\n\t}\n\n\treturn activeElement;\n};\n\n} );\n","/*!\n * jQuery UI Widget 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Widget\n//>>group: Core\n//>>description: Provides a factory for creating stateful widgets with a common API.\n//>>docs: http://api.jqueryui.com/jQuery.widget/\n//>>demos: http://jqueryui.com/widget/\n\n( function( factory ) {\n\t\"use strict\";\n\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\", \"./version\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} )( function( $ ) {\n\"use strict\";\n\nvar widgetUuid = 0;\nvar widgetHasOwnProperty = Array.prototype.hasOwnProperty;\nvar widgetSlice = Array.prototype.slice;\n\n$.cleanData = ( function( orig ) {\n\treturn function( elems ) {\n\t\tvar events, elem, i;\n\t\tfor ( i = 0; ( elem = elems[ i ] ) != null; i++ ) {\n\n\t\t\t// Only trigger remove when necessary to save time\n\t\t\tevents = $._data( elem, \"events\" );\n\t\t\tif ( events && events.remove ) {\n\t\t\t\t$( elem ).triggerHandler( \"remove\" );\n\t\t\t}\n\t\t}\n\t\torig( elems );\n\t};\n} )( $.cleanData );\n\n$.widget = function( name, base, prototype ) {\n\tvar existingConstructor, constructor, basePrototype;\n\n\t// ProxiedPrototype allows the provided prototype to remain unmodified\n\t// so that it can be used as a mixin for multiple widgets (#8876)\n\tvar proxiedPrototype = {};\n\n\tvar namespace = name.split( \".\" )[ 0 ];\n\tname = name.split( \".\" )[ 1 ];\n\tvar fullName = namespace + \"-\" + name;\n\n\tif ( !prototype ) {\n\t\tprototype = base;\n\t\tbase = $.Widget;\n\t}\n\n\tif ( Array.isArray( prototype ) ) {\n\t\tprototype = $.extend.apply( null, [ {} ].concat( prototype ) );\n\t}\n\n\t// Create selector for plugin\n\t$.expr.pseudos[ fullName.toLowerCase() ] = function( elem ) {\n\t\treturn !!$.data( elem, fullName );\n\t};\n\n\t$[ namespace ] = $[ namespace ] || {};\n\texistingConstructor = $[ namespace ][ name ];\n\tconstructor = $[ namespace ][ name ] = function( options, element ) {\n\n\t\t// Allow instantiation without \"new\" keyword\n\t\tif ( !this || !this._createWidget ) {\n\t\t\treturn new constructor( options, element );\n\t\t}\n\n\t\t// Allow instantiation without initializing for simple inheritance\n\t\t// must use \"new\" keyword (the code above always passes args)\n\t\tif ( arguments.length ) {\n\t\t\tthis._createWidget( options, element );\n\t\t}\n\t};\n\n\t// Extend with the existing constructor to carry over any static properties\n\t$.extend( constructor, existingConstructor, {\n\t\tversion: prototype.version,\n\n\t\t// Copy the object used to create the prototype in case we need to\n\t\t// redefine the widget later\n\t\t_proto: $.extend( {}, prototype ),\n\n\t\t// Track widgets that inherit from this widget in case this widget is\n\t\t// redefined after a widget inherits from it\n\t\t_childConstructors: []\n\t} );\n\n\tbasePrototype = new base();\n\n\t// We need to make the options hash a property directly on the new instance\n\t// otherwise we'll modify the options hash on the prototype that we're\n\t// inheriting from\n\tbasePrototype.options = $.widget.extend( {}, basePrototype.options );\n\t$.each( prototype, function( prop, value ) {\n\t\tif ( typeof value !== \"function\" ) {\n\t\t\tproxiedPrototype[ prop ] = value;\n\t\t\treturn;\n\t\t}\n\t\tproxiedPrototype[ prop ] = ( function() {\n\t\t\tfunction _super() {\n\t\t\t\treturn base.prototype[ prop ].apply( this, arguments );\n\t\t\t}\n\n\t\t\tfunction _superApply( args ) {\n\t\t\t\treturn base.prototype[ prop ].apply( this, args );\n\t\t\t}\n\n\t\t\treturn function() {\n\t\t\t\tvar __super = this._super;\n\t\t\t\tvar __superApply = this._superApply;\n\t\t\t\tvar returnValue;\n\n\t\t\t\tthis._super = _super;\n\t\t\t\tthis._superApply = _superApply;\n\n\t\t\t\treturnValue = value.apply( this, arguments );\n\n\t\t\t\tthis._super = __super;\n\t\t\t\tthis._superApply = __superApply;\n\n\t\t\t\treturn returnValue;\n\t\t\t};\n\t\t} )();\n\t} );\n\tconstructor.prototype = $.widget.extend( basePrototype, {\n\n\t\t// TODO: remove support for widgetEventPrefix\n\t\t// always use the name + a colon as the prefix, e.g., draggable:start\n\t\t// don't prefix for widgets that aren't DOM-based\n\t\twidgetEventPrefix: existingConstructor ? ( basePrototype.widgetEventPrefix || name ) : name\n\t}, proxiedPrototype, {\n\t\tconstructor: constructor,\n\t\tnamespace: namespace,\n\t\twidgetName: name,\n\t\twidgetFullName: fullName\n\t} );\n\n\t// If this widget is being redefined then we need to find all widgets that\n\t// are inheriting from it and redefine all of them so that they inherit from\n\t// the new version of this widget. We're essentially trying to replace one\n\t// level in the prototype chain.\n\tif ( existingConstructor ) {\n\t\t$.each( existingConstructor._childConstructors, function( i, child ) {\n\t\t\tvar childPrototype = child.prototype;\n\n\t\t\t// Redefine the child widget using the same prototype that was\n\t\t\t// originally used, but inherit from the new version of the base\n\t\t\t$.widget( childPrototype.namespace + \".\" + childPrototype.widgetName, constructor,\n\t\t\t\tchild._proto );\n\t\t} );\n\n\t\t// Remove the list of existing child constructors from the old constructor\n\t\t// so the old child constructors can be garbage collected\n\t\tdelete existingConstructor._childConstructors;\n\t} else {\n\t\tbase._childConstructors.push( constructor );\n\t}\n\n\t$.widget.bridge( name, constructor );\n\n\treturn constructor;\n};\n\n$.widget.extend = function( target ) {\n\tvar input = widgetSlice.call( arguments, 1 );\n\tvar inputIndex = 0;\n\tvar inputLength = input.length;\n\tvar key;\n\tvar value;\n\n\tfor ( ; inputIndex < inputLength; inputIndex++ ) {\n\t\tfor ( key in input[ inputIndex ] ) {\n\t\t\tvalue = input[ inputIndex ][ key ];\n\t\t\tif ( widgetHasOwnProperty.call( input[ inputIndex ], key ) && value !== undefined ) {\n\n\t\t\t\t// Clone objects\n\t\t\t\tif ( $.isPlainObject( value ) ) {\n\t\t\t\t\ttarget[ key ] = $.isPlainObject( target[ key ] ) ?\n\t\t\t\t\t\t$.widget.extend( {}, target[ key ], value ) :\n\n\t\t\t\t\t\t// Don't extend strings, arrays, etc. with objects\n\t\t\t\t\t\t$.widget.extend( {}, value );\n\n\t\t\t\t// Copy everything else by reference\n\t\t\t\t} else {\n\t\t\t\t\ttarget[ key ] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn target;\n};\n\n$.widget.bridge = function( name, object ) {\n\tvar fullName = object.prototype.widgetFullName || name;\n\t$.fn[ name ] = function( options ) {\n\t\tvar isMethodCall = typeof options === \"string\";\n\t\tvar args = widgetSlice.call( arguments, 1 );\n\t\tvar returnValue = this;\n\n\t\tif ( isMethodCall ) {\n\n\t\t\t// If this is an empty collection, we need to have the instance method\n\t\t\t// return undefined instead of the jQuery instance\n\t\t\tif ( !this.length && options === \"instance\" ) {\n\t\t\t\treturnValue = undefined;\n\t\t\t} else {\n\t\t\t\tthis.each( function() {\n\t\t\t\t\tvar methodValue;\n\t\t\t\t\tvar instance = $.data( this, fullName );\n\n\t\t\t\t\tif ( options === \"instance\" ) {\n\t\t\t\t\t\treturnValue = instance;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !instance ) {\n\t\t\t\t\t\treturn $.error( \"cannot call methods on \" + name +\n\t\t\t\t\t\t\t\" prior to initialization; \" +\n\t\t\t\t\t\t\t\"attempted to call method '\" + options + \"'\" );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( typeof instance[ options ] !== \"function\" ||\n\t\t\t\t\t\toptions.charAt( 0 ) === \"_\" ) {\n\t\t\t\t\t\treturn $.error( \"no such method '\" + options + \"' for \" + name +\n\t\t\t\t\t\t\t\" widget instance\" );\n\t\t\t\t\t}\n\n\t\t\t\t\tmethodValue = instance[ options ].apply( instance, args );\n\n\t\t\t\t\tif ( methodValue !== instance && methodValue !== undefined ) {\n\t\t\t\t\t\treturnValue = methodValue && methodValue.jquery ?\n\t\t\t\t\t\t\treturnValue.pushStack( methodValue.get() ) :\n\t\t\t\t\t\t\tmethodValue;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\t} else {\n\n\t\t\t// Allow multiple hashes to be passed on init\n\t\t\tif ( args.length ) {\n\t\t\t\toptions = $.widget.extend.apply( null, [ options ].concat( args ) );\n\t\t\t}\n\n\t\t\tthis.each( function() {\n\t\t\t\tvar instance = $.data( this, fullName );\n\t\t\t\tif ( instance ) {\n\t\t\t\t\tinstance.option( options || {} );\n\t\t\t\t\tif ( instance._init ) {\n\t\t\t\t\t\tinstance._init();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t$.data( this, fullName, new object( options, this ) );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn returnValue;\n\t};\n};\n\n$.Widget = function( /* options, element */ ) {};\n$.Widget._childConstructors = [];\n\n$.Widget.prototype = {\n\twidgetName: \"widget\",\n\twidgetEventPrefix: \"\",\n\tdefaultElement: \"<div>\",\n\n\toptions: {\n\t\tclasses: {},\n\t\tdisabled: false,\n\n\t\t// Callbacks\n\t\tcreate: null\n\t},\n\n\t_createWidget: function( options, element ) {\n\t\telement = $( element || this.defaultElement || this )[ 0 ];\n\t\tthis.element = $( element );\n\t\tthis.uuid = widgetUuid++;\n\t\tthis.eventNamespace = \".\" + this.widgetName + this.uuid;\n\n\t\tthis.bindings = $();\n\t\tthis.hoverable = $();\n\t\tthis.focusable = $();\n\t\tthis.classesElementLookup = {};\n\n\t\tif ( element !== this ) {\n\t\t\t$.data( element, this.widgetFullName, this );\n\t\t\tthis._on( true, this.element, {\n\t\t\t\tremove: function( event ) {\n\t\t\t\t\tif ( event.target === element ) {\n\t\t\t\t\t\tthis.destroy();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t\tthis.document = $( element.style ?\n\n\t\t\t\t// Element within the document\n\t\t\t\telement.ownerDocument :\n\n\t\t\t\t// Element is window or document\n\t\t\t\telement.document || element );\n\t\t\tthis.window = $( this.document[ 0 ].defaultView || this.document[ 0 ].parentWindow );\n\t\t}\n\n\t\tthis.options = $.widget.extend( {},\n\t\t\tthis.options,\n\t\t\tthis._getCreateOptions(),\n\t\t\toptions );\n\n\t\tthis._create();\n\n\t\tif ( this.options.disabled ) {\n\t\t\tthis._setOptionDisabled( this.options.disabled );\n\t\t}\n\n\t\tthis._trigger( \"create\", null, this._getCreateEventData() );\n\t\tthis._init();\n\t},\n\n\t_getCreateOptions: function() {\n\t\treturn {};\n\t},\n\n\t_getCreateEventData: $.noop,\n\n\t_create: $.noop,\n\n\t_init: $.noop,\n\n\tdestroy: function() {\n\t\tvar that = this;\n\n\t\tthis._destroy();\n\t\t$.each( this.classesElementLookup, function( key, value ) {\n\t\t\tthat._removeClass( value, key );\n\t\t} );\n\n\t\t// We can probably remove the unbind calls in 2.0\n\t\t// all event bindings should go through this._on()\n\t\tthis.element\n\t\t\t.off( this.eventNamespace )\n\t\t\t.removeData( this.widgetFullName );\n\t\tthis.widget()\n\t\t\t.off( this.eventNamespace )\n\t\t\t.removeAttr( \"aria-disabled\" );\n\n\t\t// Clean up events and states\n\t\tthis.bindings.off( this.eventNamespace );\n\t},\n\n\t_destroy: $.noop,\n\n\twidget: function() {\n\t\treturn this.element;\n\t},\n\n\toption: function( key, value ) {\n\t\tvar options = key;\n\t\tvar parts;\n\t\tvar curOption;\n\t\tvar i;\n\n\t\tif ( arguments.length === 0 ) {\n\n\t\t\t// Don't return a reference to the internal hash\n\t\t\treturn $.widget.extend( {}, this.options );\n\t\t}\n\n\t\tif ( typeof key === \"string\" ) {\n\n\t\t\t// Handle nested keys, e.g., \"foo.bar\" => { foo: { bar: ___ } }\n\t\t\toptions = {};\n\t\t\tparts = key.split( \".\" );\n\t\t\tkey = parts.shift();\n\t\t\tif ( parts.length ) {\n\t\t\t\tcurOption = options[ key ] = $.widget.extend( {}, this.options[ key ] );\n\t\t\t\tfor ( i = 0; i < parts.length - 1; i++ ) {\n\t\t\t\t\tcurOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {};\n\t\t\t\t\tcurOption = curOption[ parts[ i ] ];\n\t\t\t\t}\n\t\t\t\tkey = parts.pop();\n\t\t\t\tif ( arguments.length === 1 ) {\n\t\t\t\t\treturn curOption[ key ] === undefined ? null : curOption[ key ];\n\t\t\t\t}\n\t\t\t\tcurOption[ key ] = value;\n\t\t\t} else {\n\t\t\t\tif ( arguments.length === 1 ) {\n\t\t\t\t\treturn this.options[ key ] === undefined ? null : this.options[ key ];\n\t\t\t\t}\n\t\t\t\toptions[ key ] = value;\n\t\t\t}\n\t\t}\n\n\t\tthis._setOptions( options );\n\n\t\treturn this;\n\t},\n\n\t_setOptions: function( options ) {\n\t\tvar key;\n\n\t\tfor ( key in options ) {\n\t\t\tthis._setOption( key, options[ key ] );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"classes\" ) {\n\t\t\tthis._setOptionClasses( value );\n\t\t}\n\n\t\tthis.options[ key ] = value;\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis._setOptionDisabled( value );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\t_setOptionClasses: function( value ) {\n\t\tvar classKey, elements, currentElements;\n\n\t\tfor ( classKey in value ) {\n\t\t\tcurrentElements = this.classesElementLookup[ classKey ];\n\t\t\tif ( value[ classKey ] === this.options.classes[ classKey ] ||\n\t\t\t\t\t!currentElements ||\n\t\t\t\t\t!currentElements.length ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// We are doing this to create a new jQuery object because the _removeClass() call\n\t\t\t// on the next line is going to destroy the reference to the current elements being\n\t\t\t// tracked. We need to save a copy of this collection so that we can add the new classes\n\t\t\t// below.\n\t\t\telements = $( currentElements.get() );\n\t\t\tthis._removeClass( currentElements, classKey );\n\n\t\t\t// We don't use _addClass() here, because that uses this.options.classes\n\t\t\t// for generating the string of classes. We want to use the value passed in from\n\t\t\t// _setOption(), this is the new value of the classes option which was passed to\n\t\t\t// _setOption(). We pass this value directly to _classes().\n\t\t\telements.addClass( this._classes( {\n\t\t\t\telement: elements,\n\t\t\t\tkeys: classKey,\n\t\t\t\tclasses: value,\n\t\t\t\tadd: true\n\t\t\t} ) );\n\t\t}\n\t},\n\n\t_setOptionDisabled: function( value ) {\n\t\tthis._toggleClass( this.widget(), this.widgetFullName + \"-disabled\", null, !!value );\n\n\t\t// If the widget is becoming disabled, then nothing is interactive\n\t\tif ( value ) {\n\t\t\tthis._removeClass( this.hoverable, null, \"ui-state-hover\" );\n\t\t\tthis._removeClass( this.focusable, null, \"ui-state-focus\" );\n\t\t}\n\t},\n\n\tenable: function() {\n\t\treturn this._setOptions( { disabled: false } );\n\t},\n\n\tdisable: function() {\n\t\treturn this._setOptions( { disabled: true } );\n\t},\n\n\t_classes: function( options ) {\n\t\tvar full = [];\n\t\tvar that = this;\n\n\t\toptions = $.extend( {\n\t\t\telement: this.element,\n\t\t\tclasses: this.options.classes || {}\n\t\t}, options );\n\n\t\tfunction bindRemoveEvent() {\n\t\t\tvar nodesToBind = [];\n\n\t\t\toptions.element.each( function( _, element ) {\n\t\t\t\tvar isTracked = $.map( that.classesElementLookup, function( elements ) {\n\t\t\t\t\treturn elements;\n\t\t\t\t} )\n\t\t\t\t\t.some( function( elements ) {\n\t\t\t\t\t\treturn elements.is( element );\n\t\t\t\t\t} );\n\n\t\t\t\tif ( !isTracked ) {\n\t\t\t\t\tnodesToBind.push( element );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tthat._on( $( nodesToBind ), {\n\t\t\t\tremove: \"_untrackClassesElement\"\n\t\t\t} );\n\t\t}\n\n\t\tfunction processClassString( classes, checkOption ) {\n\t\t\tvar current, i;\n\t\t\tfor ( i = 0; i < classes.length; i++ ) {\n\t\t\t\tcurrent = that.classesElementLookup[ classes[ i ] ] || $();\n\t\t\t\tif ( options.add ) {\n\t\t\t\t\tbindRemoveEvent();\n\t\t\t\t\tcurrent = $( $.uniqueSort( current.get().concat( options.element.get() ) ) );\n\t\t\t\t} else {\n\t\t\t\t\tcurrent = $( current.not( options.element ).get() );\n\t\t\t\t}\n\t\t\t\tthat.classesElementLookup[ classes[ i ] ] = current;\n\t\t\t\tfull.push( classes[ i ] );\n\t\t\t\tif ( checkOption && options.classes[ classes[ i ] ] ) {\n\t\t\t\t\tfull.push( options.classes[ classes[ i ] ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( options.keys ) {\n\t\t\tprocessClassString( options.keys.match( /\\S+/g ) || [], true );\n\t\t}\n\t\tif ( options.extra ) {\n\t\t\tprocessClassString( options.extra.match( /\\S+/g ) || [] );\n\t\t}\n\n\t\treturn full.join( \" \" );\n\t},\n\n\t_untrackClassesElement: function( event ) {\n\t\tvar that = this;\n\t\t$.each( that.classesElementLookup, function( key, value ) {\n\t\t\tif ( $.inArray( event.target, value ) !== -1 ) {\n\t\t\t\tthat.classesElementLookup[ key ] = $( value.not( event.target ).get() );\n\t\t\t}\n\t\t} );\n\n\t\tthis._off( $( event.target ) );\n\t},\n\n\t_removeClass: function( element, keys, extra ) {\n\t\treturn this._toggleClass( element, keys, extra, false );\n\t},\n\n\t_addClass: function( element, keys, extra ) {\n\t\treturn this._toggleClass( element, keys, extra, true );\n\t},\n\n\t_toggleClass: function( element, keys, extra, add ) {\n\t\tadd = ( typeof add === \"boolean\" ) ? add : extra;\n\t\tvar shift = ( typeof element === \"string\" || element === null ),\n\t\t\toptions = {\n\t\t\t\textra: shift ? keys : extra,\n\t\t\t\tkeys: shift ? element : keys,\n\t\t\t\telement: shift ? this.element : element,\n\t\t\t\tadd: add\n\t\t\t};\n\t\toptions.element.toggleClass( this._classes( options ), add );\n\t\treturn this;\n\t},\n\n\t_on: function( suppressDisabledCheck, element, handlers ) {\n\t\tvar delegateElement;\n\t\tvar instance = this;\n\n\t\t// No suppressDisabledCheck flag, shuffle arguments\n\t\tif ( typeof suppressDisabledCheck !== \"boolean\" ) {\n\t\t\thandlers = element;\n\t\t\telement = suppressDisabledCheck;\n\t\t\tsuppressDisabledCheck = false;\n\t\t}\n\n\t\t// No element argument, shuffle and use this.element\n\t\tif ( !handlers ) {\n\t\t\thandlers = element;\n\t\t\telement = this.element;\n\t\t\tdelegateElement = this.widget();\n\t\t} else {\n\t\t\telement = delegateElement = $( element );\n\t\t\tthis.bindings = this.bindings.add( element );\n\t\t}\n\n\t\t$.each( handlers, function( event, handler ) {\n\t\t\tfunction handlerProxy() {\n\n\t\t\t\t// Allow widgets to customize the disabled handling\n\t\t\t\t// - disabled as an array instead of boolean\n\t\t\t\t// - disabled class as method for disabling individual parts\n\t\t\t\tif ( !suppressDisabledCheck &&\n\t\t\t\t\t\t( instance.options.disabled === true ||\n\t\t\t\t\t\t$( this ).hasClass( \"ui-state-disabled\" ) ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\treturn ( typeof handler === \"string\" ? instance[ handler ] : handler )\n\t\t\t\t\t.apply( instance, arguments );\n\t\t\t}\n\n\t\t\t// Copy the guid so direct unbinding works\n\t\t\tif ( typeof handler !== \"string\" ) {\n\t\t\t\thandlerProxy.guid = handler.guid =\n\t\t\t\t\thandler.guid || handlerProxy.guid || $.guid++;\n\t\t\t}\n\n\t\t\tvar match = event.match( /^([\\w:-]*)\\s*(.*)$/ );\n\t\t\tvar eventName = match[ 1 ] + instance.eventNamespace;\n\t\t\tvar selector = match[ 2 ];\n\n\t\t\tif ( selector ) {\n\t\t\t\tdelegateElement.on( eventName, selector, handlerProxy );\n\t\t\t} else {\n\t\t\t\telement.on( eventName, handlerProxy );\n\t\t\t}\n\t\t} );\n\t},\n\n\t_off: function( element, eventName ) {\n\t\teventName = ( eventName || \"\" ).split( \" \" ).join( this.eventNamespace + \" \" ) +\n\t\t\tthis.eventNamespace;\n\t\telement.off( eventName );\n\n\t\t// Clear the stack to avoid memory leaks (#10056)\n\t\tthis.bindings = $( this.bindings.not( element ).get() );\n\t\tthis.focusable = $( this.focusable.not( element ).get() );\n\t\tthis.hoverable = $( this.hoverable.not( element ).get() );\n\t},\n\n\t_delay: function( handler, delay ) {\n\t\tfunction handlerProxy() {\n\t\t\treturn ( typeof handler === \"string\" ? instance[ handler ] : handler )\n\t\t\t\t.apply( instance, arguments );\n\t\t}\n\t\tvar instance = this;\n\t\treturn setTimeout( handlerProxy, delay || 0 );\n\t},\n\n\t_hoverable: function( element ) {\n\t\tthis.hoverable = this.hoverable.add( element );\n\t\tthis._on( element, {\n\t\t\tmouseenter: function( event ) {\n\t\t\t\tthis._addClass( $( event.currentTarget ), null, \"ui-state-hover\" );\n\t\t\t},\n\t\t\tmouseleave: function( event ) {\n\t\t\t\tthis._removeClass( $( event.currentTarget ), null, \"ui-state-hover\" );\n\t\t\t}\n\t\t} );\n\t},\n\n\t_focusable: function( element ) {\n\t\tthis.focusable = this.focusable.add( element );\n\t\tthis._on( element, {\n\t\t\tfocusin: function( event ) {\n\t\t\t\tthis._addClass( $( event.currentTarget ), null, \"ui-state-focus\" );\n\t\t\t},\n\t\t\tfocusout: function( event ) {\n\t\t\t\tthis._removeClass( $( event.currentTarget ), null, \"ui-state-focus\" );\n\t\t\t}\n\t\t} );\n\t},\n\n\t_trigger: function( type, event, data ) {\n\t\tvar prop, orig;\n\t\tvar callback = this.options[ type ];\n\n\t\tdata = data || {};\n\t\tevent = $.Event( event );\n\t\tevent.type = ( type === this.widgetEventPrefix ?\n\t\t\ttype :\n\t\t\tthis.widgetEventPrefix + type ).toLowerCase();\n\n\t\t// The original event may come from any element\n\t\t// so we need to reset the target on the new event\n\t\tevent.target = this.element[ 0 ];\n\n\t\t// Copy original event properties over to the new event\n\t\torig = event.originalEvent;\n\t\tif ( orig ) {\n\t\t\tfor ( prop in orig ) {\n\t\t\t\tif ( !( prop in event ) ) {\n\t\t\t\t\tevent[ prop ] = orig[ prop ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.element.trigger( event, data );\n\t\treturn !( typeof callback === \"function\" &&\n\t\t\tcallback.apply( this.element[ 0 ], [ event ].concat( data ) ) === false ||\n\t\t\tevent.isDefaultPrevented() );\n\t}\n};\n\n$.each( { show: \"fadeIn\", hide: \"fadeOut\" }, function( method, defaultEffect ) {\n\t$.Widget.prototype[ \"_\" + method ] = function( element, options, callback ) {\n\t\tif ( typeof options === \"string\" ) {\n\t\t\toptions = { effect: options };\n\t\t}\n\n\t\tvar hasOptions;\n\t\tvar effectName = !options ?\n\t\t\tmethod :\n\t\t\toptions === true || typeof options === \"number\" ?\n\t\t\t\tdefaultEffect :\n\t\t\t\toptions.effect || defaultEffect;\n\n\t\toptions = options || {};\n\t\tif ( typeof options === \"number\" ) {\n\t\t\toptions = { duration: options };\n\t\t} else if ( options === true ) {\n\t\t\toptions = {};\n\t\t}\n\n\t\thasOptions = !$.isEmptyObject( options );\n\t\toptions.complete = callback;\n\n\t\tif ( options.delay ) {\n\t\t\telement.delay( options.delay );\n\t\t}\n\n\t\tif ( hasOptions && $.effects && $.effects.effect[ effectName ] ) {\n\t\t\telement[ method ]( options );\n\t\t} else if ( effectName !== method && element[ effectName ] ) {\n\t\t\telement[ effectName ]( options.duration, options.easing, callback );\n\t\t} else {\n\t\t\telement.queue( function( next ) {\n\t\t\t\t$( this )[ method ]();\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback.call( element[ 0 ] );\n\t\t\t\t}\n\t\t\t\tnext();\n\t\t\t} );\n\t\t}\n\t};\n} );\n\nreturn $.widget;\n\n} );\n","(function() {\n module.exports = function(r, g, b) {\n var d, h, l, max, min, s;\n r /= 255;\n g /= 255;\n b /= 255;\n max = Math.max(r, g, b);\n min = Math.min(r, g, b);\n h = 0;\n s = 0;\n l = (max + min) / 2;\n if (max === min) {\n h = s = 0;\n } else {\n d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n }\n h /= 6;\n }\n h = Math.ceil(h * 360);\n s = (Math.ceil(s * 100)) + \"%\";\n l = (Math.ceil(l * 100)) + \"%\";\n return [h, s, l];\n };\n\n}).call(this);\n","\nvar rgbToHsl = require('rgb-to-hsl');\nvar hexToRgb = require('hex-to-rgb');\n\nmodule.exports = function (hex) {\n\tvar hsl = rgbToHsl.apply(rgbToHsl, hexToRgb(hex));\n\treturn [hsl[0], parseInt(hsl[1], 10), parseInt(hsl[2], 10)];\n};\n","/*! choices.js v11.0.3 | © 2024 Josh Johnson | https://github.com/jshjohnson/Choices#readme */\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n};\nfunction __extends(d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\nvar __assign = function () {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nfunction __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\ntypeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nvar ActionType = {\n ADD_CHOICE: 'ADD_CHOICE',\n REMOVE_CHOICE: 'REMOVE_CHOICE',\n FILTER_CHOICES: 'FILTER_CHOICES',\n ACTIVATE_CHOICES: 'ACTIVATE_CHOICES',\n CLEAR_CHOICES: 'CLEAR_CHOICES',\n ADD_GROUP: 'ADD_GROUP',\n ADD_ITEM: 'ADD_ITEM',\n REMOVE_ITEM: 'REMOVE_ITEM',\n HIGHLIGHT_ITEM: 'HIGHLIGHT_ITEM',\n};\n\nvar EventType = {\n showDropdown: 'showDropdown',\n hideDropdown: 'hideDropdown',\n change: 'change',\n choice: 'choice',\n search: 'search',\n addItem: 'addItem',\n removeItem: 'removeItem',\n highlightItem: 'highlightItem',\n highlightChoice: 'highlightChoice',\n unhighlightItem: 'unhighlightItem',\n};\n\nvar KeyCodeMap = {\n TAB_KEY: 9,\n SHIFT_KEY: 16,\n BACK_KEY: 46,\n DELETE_KEY: 8,\n ENTER_KEY: 13,\n A_KEY: 65,\n ESC_KEY: 27,\n UP_KEY: 38,\n DOWN_KEY: 40,\n PAGE_UP_KEY: 33,\n PAGE_DOWN_KEY: 34,\n};\n\nvar ObjectsInConfig = ['fuseOptions', 'classNames'];\n\nvar PassedElementTypes = {\n Text: 'text',\n SelectOne: 'select-one',\n SelectMultiple: 'select-multiple',\n};\n\nvar addChoice = function (choice) { return ({\n type: ActionType.ADD_CHOICE,\n choice: choice,\n}); };\nvar removeChoice = function (choice) { return ({\n type: ActionType.REMOVE_CHOICE,\n choice: choice,\n}); };\nvar filterChoices = function (results) { return ({\n type: ActionType.FILTER_CHOICES,\n results: results,\n}); };\nvar activateChoices = function (active) {\n return ({\n type: ActionType.ACTIVATE_CHOICES,\n active: active,\n });\n};\n\nvar addGroup = function (group) { return ({\n type: ActionType.ADD_GROUP,\n group: group,\n}); };\n\nvar addItem = function (item) { return ({\n type: ActionType.ADD_ITEM,\n item: item,\n}); };\nvar removeItem$1 = function (item) { return ({\n type: ActionType.REMOVE_ITEM,\n item: item,\n}); };\nvar highlightItem = function (item, highlighted) { return ({\n type: ActionType.HIGHLIGHT_ITEM,\n item: item,\n highlighted: highlighted,\n}); };\n\nvar getRandomNumber = function (min, max) { return Math.floor(Math.random() * (max - min) + min); };\nvar generateChars = function (length) {\n return Array.from({ length: length }, function () { return getRandomNumber(0, 36).toString(36); }).join('');\n};\nvar generateId = function (element, prefix) {\n var id = element.id || (element.name && \"\".concat(element.name, \"-\").concat(generateChars(2))) || generateChars(4);\n id = id.replace(/(:|\\.|\\[|\\]|,)/g, '');\n id = \"\".concat(prefix, \"-\").concat(id);\n return id;\n};\nvar getAdjacentEl = function (startEl, selector, direction) {\n if (direction === void 0) { direction = 1; }\n var prop = \"\".concat(direction > 0 ? 'next' : 'previous', \"ElementSibling\");\n var sibling = startEl[prop];\n while (sibling) {\n if (sibling.matches(selector)) {\n return sibling;\n }\n sibling = sibling[prop];\n }\n return null;\n};\nvar isScrolledIntoView = function (element, parent, direction) {\n if (direction === void 0) { direction = 1; }\n var isVisible;\n if (direction > 0) {\n // In view from bottom\n isVisible = parent.scrollTop + parent.offsetHeight >= element.offsetTop + element.offsetHeight;\n }\n else {\n // In view from top\n isVisible = element.offsetTop >= parent.scrollTop;\n }\n return isVisible;\n};\nvar sanitise = function (value) {\n if (typeof value !== 'string') {\n if (value === null || value === undefined) {\n return '';\n }\n if (typeof value === 'object') {\n if ('raw' in value) {\n return sanitise(value.raw);\n }\n if ('trusted' in value) {\n return value.trusted;\n }\n }\n return value;\n }\n return value\n .replace(/&/g, '&')\n .replace(/>/g, '>')\n .replace(/</g, '<')\n .replace(/'/g, ''')\n .replace(/\"/g, '"');\n};\nvar strToEl = (function () {\n var tmpEl = document.createElement('div');\n return function (str) {\n tmpEl.innerHTML = str.trim();\n var firstChild = tmpEl.children[0];\n while (tmpEl.firstChild) {\n tmpEl.removeChild(tmpEl.firstChild);\n }\n return firstChild;\n };\n})();\nvar resolveNoticeFunction = function (fn, value) {\n return typeof fn === 'function' ? fn(sanitise(value), value) : fn;\n};\nvar resolveStringFunction = function (fn) {\n return typeof fn === 'function' ? fn() : fn;\n};\nvar unwrapStringForRaw = function (s) {\n if (typeof s === 'string') {\n return s;\n }\n if (typeof s === 'object') {\n if ('trusted' in s) {\n return s.trusted;\n }\n if ('raw' in s) {\n return s.raw;\n }\n }\n return '';\n};\nvar unwrapStringForEscaped = function (s) {\n if (typeof s === 'string') {\n return s;\n }\n if (typeof s === 'object') {\n if ('escaped' in s) {\n return s.escaped;\n }\n if ('trusted' in s) {\n return s.trusted;\n }\n }\n return '';\n};\nvar escapeForTemplate = function (allowHTML, s) {\n return allowHTML ? unwrapStringForEscaped(s) : sanitise(s);\n};\nvar setElementHtml = function (el, allowHtml, html) {\n el.innerHTML = escapeForTemplate(allowHtml, html);\n};\nvar sortByAlpha = function (_a, _b) {\n var value = _a.value, _c = _a.label, label = _c === void 0 ? value : _c;\n var value2 = _b.value, _d = _b.label, label2 = _d === void 0 ? value2 : _d;\n return unwrapStringForRaw(label).localeCompare(unwrapStringForRaw(label2), [], {\n sensitivity: 'base',\n ignorePunctuation: true,\n numeric: true,\n });\n};\nvar sortByRank = function (a, b) {\n return a.rank - b.rank;\n};\nvar dispatchEvent = function (element, type, customArgs) {\n if (customArgs === void 0) { customArgs = null; }\n var event = new CustomEvent(type, {\n detail: customArgs,\n bubbles: true,\n cancelable: true,\n });\n return element.dispatchEvent(event);\n};\n/**\n * Returns an array of keys present on the first but missing on the second object\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nvar diff = function (a, b) {\n var aKeys = Object.keys(a).sort();\n var bKeys = Object.keys(b).sort();\n return aKeys.filter(function (i) { return bKeys.indexOf(i) < 0; });\n};\nvar getClassNames = function (ClassNames) {\n return Array.isArray(ClassNames) ? ClassNames : [ClassNames];\n};\nvar getClassNamesSelector = function (option) {\n if (option && Array.isArray(option)) {\n return option\n .map(function (item) {\n return \".\".concat(item);\n })\n .join('');\n }\n return \".\".concat(option);\n};\nvar addClassesToElement = function (element, className) {\n var _a;\n (_a = element.classList).add.apply(_a, getClassNames(className));\n};\nvar removeClassesFromElement = function (element, className) {\n var _a;\n (_a = element.classList).remove.apply(_a, getClassNames(className));\n};\nvar parseCustomProperties = function (customProperties) {\n if (typeof customProperties !== 'undefined') {\n try {\n return JSON.parse(customProperties);\n }\n catch (e) {\n return customProperties;\n }\n }\n return {};\n};\nvar updateClassList = function (item, add, remove) {\n var itemEl = item.itemEl;\n if (itemEl) {\n removeClassesFromElement(itemEl, remove);\n addClassesToElement(itemEl, add);\n }\n};\n\nvar Dropdown = /** @class */ (function () {\n function Dropdown(_a) {\n var element = _a.element, type = _a.type, classNames = _a.classNames;\n this.element = element;\n this.classNames = classNames;\n this.type = type;\n this.isActive = false;\n }\n /**\n * Show dropdown to user by adding active state class\n */\n Dropdown.prototype.show = function () {\n addClassesToElement(this.element, this.classNames.activeState);\n this.element.setAttribute('aria-expanded', 'true');\n this.isActive = true;\n return this;\n };\n /**\n * Hide dropdown from user\n */\n Dropdown.prototype.hide = function () {\n removeClassesFromElement(this.element, this.classNames.activeState);\n this.element.setAttribute('aria-expanded', 'false');\n this.isActive = false;\n return this;\n };\n return Dropdown;\n}());\n\nvar Container = /** @class */ (function () {\n function Container(_a) {\n var element = _a.element, type = _a.type, classNames = _a.classNames, position = _a.position;\n this.element = element;\n this.classNames = classNames;\n this.type = type;\n this.position = position;\n this.isOpen = false;\n this.isFlipped = false;\n this.isDisabled = false;\n this.isLoading = false;\n }\n /**\n * Determine whether container should be flipped based on passed\n * dropdown position\n */\n Container.prototype.shouldFlip = function (dropdownPos, dropdownHeight) {\n // If flip is enabled and the dropdown bottom position is\n // greater than the window height flip the dropdown.\n var shouldFlip = false;\n if (this.position === 'auto') {\n shouldFlip =\n this.element.getBoundingClientRect().top - dropdownHeight >= 0 &&\n !window.matchMedia(\"(min-height: \".concat(dropdownPos + 1, \"px)\")).matches;\n }\n else if (this.position === 'top') {\n shouldFlip = true;\n }\n return shouldFlip;\n };\n Container.prototype.setActiveDescendant = function (activeDescendantID) {\n this.element.setAttribute('aria-activedescendant', activeDescendantID);\n };\n Container.prototype.removeActiveDescendant = function () {\n this.element.removeAttribute('aria-activedescendant');\n };\n Container.prototype.open = function (dropdownPos, dropdownHeight) {\n addClassesToElement(this.element, this.classNames.openState);\n this.element.setAttribute('aria-expanded', 'true');\n this.isOpen = true;\n if (this.shouldFlip(dropdownPos, dropdownHeight)) {\n addClassesToElement(this.element, this.classNames.flippedState);\n this.isFlipped = true;\n }\n };\n Container.prototype.close = function () {\n removeClassesFromElement(this.element, this.classNames.openState);\n this.element.setAttribute('aria-expanded', 'false');\n this.removeActiveDescendant();\n this.isOpen = false;\n // A dropdown flips if it does not have space within the page\n if (this.isFlipped) {\n removeClassesFromElement(this.element, this.classNames.flippedState);\n this.isFlipped = false;\n }\n };\n Container.prototype.addFocusState = function () {\n addClassesToElement(this.element, this.classNames.focusState);\n };\n Container.prototype.removeFocusState = function () {\n removeClassesFromElement(this.element, this.classNames.focusState);\n };\n Container.prototype.enable = function () {\n removeClassesFromElement(this.element, this.classNames.disabledState);\n this.element.removeAttribute('aria-disabled');\n if (this.type === PassedElementTypes.SelectOne) {\n this.element.setAttribute('tabindex', '0');\n }\n this.isDisabled = false;\n };\n Container.prototype.disable = function () {\n addClassesToElement(this.element, this.classNames.disabledState);\n this.element.setAttribute('aria-disabled', 'true');\n if (this.type === PassedElementTypes.SelectOne) {\n this.element.setAttribute('tabindex', '-1');\n }\n this.isDisabled = true;\n };\n Container.prototype.wrap = function (element) {\n var el = this.element;\n var parentNode = element.parentNode;\n if (parentNode) {\n if (element.nextSibling) {\n parentNode.insertBefore(el, element.nextSibling);\n }\n else {\n parentNode.appendChild(el);\n }\n }\n el.appendChild(element);\n };\n Container.prototype.unwrap = function (element) {\n var el = this.element;\n var parentNode = el.parentNode;\n if (parentNode) {\n // Move passed element outside this element\n parentNode.insertBefore(element, el);\n // Remove this element\n parentNode.removeChild(el);\n }\n };\n Container.prototype.addLoadingState = function () {\n addClassesToElement(this.element, this.classNames.loadingState);\n this.element.setAttribute('aria-busy', 'true');\n this.isLoading = true;\n };\n Container.prototype.removeLoadingState = function () {\n removeClassesFromElement(this.element, this.classNames.loadingState);\n this.element.removeAttribute('aria-busy');\n this.isLoading = false;\n };\n return Container;\n}());\n\nvar Input = /** @class */ (function () {\n function Input(_a) {\n var element = _a.element, type = _a.type, classNames = _a.classNames, preventPaste = _a.preventPaste;\n this.element = element;\n this.type = type;\n this.classNames = classNames;\n this.preventPaste = preventPaste;\n this.isFocussed = this.element.isEqualNode(document.activeElement);\n this.isDisabled = element.disabled;\n this._onPaste = this._onPaste.bind(this);\n this._onInput = this._onInput.bind(this);\n this._onFocus = this._onFocus.bind(this);\n this._onBlur = this._onBlur.bind(this);\n }\n Object.defineProperty(Input.prototype, \"placeholder\", {\n set: function (placeholder) {\n this.element.placeholder = placeholder;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Input.prototype, \"value\", {\n get: function () {\n return this.element.value;\n },\n set: function (value) {\n this.element.value = value;\n },\n enumerable: false,\n configurable: true\n });\n Input.prototype.addEventListeners = function () {\n var el = this.element;\n el.addEventListener('paste', this._onPaste);\n el.addEventListener('input', this._onInput, {\n passive: true,\n });\n el.addEventListener('focus', this._onFocus, {\n passive: true,\n });\n el.addEventListener('blur', this._onBlur, {\n passive: true,\n });\n };\n Input.prototype.removeEventListeners = function () {\n var el = this.element;\n el.removeEventListener('input', this._onInput);\n el.removeEventListener('paste', this._onPaste);\n el.removeEventListener('focus', this._onFocus);\n el.removeEventListener('blur', this._onBlur);\n };\n Input.prototype.enable = function () {\n var el = this.element;\n el.removeAttribute('disabled');\n this.isDisabled = false;\n };\n Input.prototype.disable = function () {\n var el = this.element;\n el.setAttribute('disabled', '');\n this.isDisabled = true;\n };\n Input.prototype.focus = function () {\n if (!this.isFocussed) {\n this.element.focus();\n }\n };\n Input.prototype.blur = function () {\n if (this.isFocussed) {\n this.element.blur();\n }\n };\n Input.prototype.clear = function (setWidth) {\n if (setWidth === void 0) { setWidth = true; }\n this.element.value = '';\n if (setWidth) {\n this.setWidth();\n }\n return this;\n };\n /**\n * Set the correct input width based on placeholder\n * value or input value\n */\n Input.prototype.setWidth = function () {\n // Resize input to contents or placeholder\n var element = this.element;\n element.style.minWidth = \"\".concat(element.placeholder.length + 1, \"ch\");\n element.style.width = \"\".concat(element.value.length + 1, \"ch\");\n };\n Input.prototype.setActiveDescendant = function (activeDescendantID) {\n this.element.setAttribute('aria-activedescendant', activeDescendantID);\n };\n Input.prototype.removeActiveDescendant = function () {\n this.element.removeAttribute('aria-activedescendant');\n };\n Input.prototype._onInput = function () {\n if (this.type !== PassedElementTypes.SelectOne) {\n this.setWidth();\n }\n };\n Input.prototype._onPaste = function (event) {\n if (this.preventPaste) {\n event.preventDefault();\n }\n };\n Input.prototype._onFocus = function () {\n this.isFocussed = true;\n };\n Input.prototype._onBlur = function () {\n this.isFocussed = false;\n };\n return Input;\n}());\n\nvar SCROLLING_SPEED = 4;\n\nvar List = /** @class */ (function () {\n function List(_a) {\n var element = _a.element;\n this.element = element;\n this.scrollPos = this.element.scrollTop;\n this.height = this.element.offsetHeight;\n }\n List.prototype.prepend = function (node) {\n var child = this.element.firstElementChild;\n if (child) {\n this.element.insertBefore(node, child);\n }\n else {\n this.element.append(node);\n }\n };\n List.prototype.scrollToTop = function () {\n this.element.scrollTop = 0;\n };\n List.prototype.scrollToChildElement = function (element, direction) {\n var _this = this;\n if (!element) {\n return;\n }\n var listHeight = this.element.offsetHeight;\n // Scroll position of dropdown\n var listScrollPosition = this.element.scrollTop + listHeight;\n var elementHeight = element.offsetHeight;\n // Distance from bottom of element to top of parent\n var elementPos = element.offsetTop + elementHeight;\n // Difference between the element and scroll position\n var destination = direction > 0 ? this.element.scrollTop + elementPos - listScrollPosition : element.offsetTop;\n requestAnimationFrame(function () {\n _this._animateScroll(destination, direction);\n });\n };\n List.prototype._scrollDown = function (scrollPos, strength, destination) {\n var easing = (destination - scrollPos) / strength;\n var distance = easing > 1 ? easing : 1;\n this.element.scrollTop = scrollPos + distance;\n };\n List.prototype._scrollUp = function (scrollPos, strength, destination) {\n var easing = (scrollPos - destination) / strength;\n var distance = easing > 1 ? easing : 1;\n this.element.scrollTop = scrollPos - distance;\n };\n List.prototype._animateScroll = function (destination, direction) {\n var _this = this;\n var strength = SCROLLING_SPEED;\n var choiceListScrollTop = this.element.scrollTop;\n var continueAnimation = false;\n if (direction > 0) {\n this._scrollDown(choiceListScrollTop, strength, destination);\n if (choiceListScrollTop < destination) {\n continueAnimation = true;\n }\n }\n else {\n this._scrollUp(choiceListScrollTop, strength, destination);\n if (choiceListScrollTop > destination) {\n continueAnimation = true;\n }\n }\n if (continueAnimation) {\n requestAnimationFrame(function () {\n _this._animateScroll(destination, direction);\n });\n }\n };\n return List;\n}());\n\nvar WrappedElement = /** @class */ (function () {\n function WrappedElement(_a) {\n var element = _a.element, classNames = _a.classNames;\n this.element = element;\n this.classNames = classNames;\n this.isDisabled = false;\n }\n Object.defineProperty(WrappedElement.prototype, \"isActive\", {\n get: function () {\n return this.element.dataset.choice === 'active';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(WrappedElement.prototype, \"dir\", {\n get: function () {\n return this.element.dir;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(WrappedElement.prototype, \"value\", {\n get: function () {\n return this.element.value;\n },\n set: function (value) {\n this.element.setAttribute('value', value);\n this.element.value = value;\n },\n enumerable: false,\n configurable: true\n });\n WrappedElement.prototype.conceal = function () {\n var el = this.element;\n // Hide passed input\n addClassesToElement(el, this.classNames.input);\n el.hidden = true;\n // Remove element from tab index\n el.tabIndex = -1;\n // Backup original styles if any\n var origStyle = el.getAttribute('style');\n if (origStyle) {\n el.setAttribute('data-choice-orig-style', origStyle);\n }\n el.setAttribute('data-choice', 'active');\n };\n WrappedElement.prototype.reveal = function () {\n var el = this.element;\n // Reinstate passed element\n removeClassesFromElement(el, this.classNames.input);\n el.hidden = false;\n el.removeAttribute('tabindex');\n // Recover original styles if any\n var origStyle = el.getAttribute('data-choice-orig-style');\n if (origStyle) {\n el.removeAttribute('data-choice-orig-style');\n el.setAttribute('style', origStyle);\n }\n else {\n el.removeAttribute('style');\n }\n el.removeAttribute('data-choice');\n };\n WrappedElement.prototype.enable = function () {\n this.element.removeAttribute('disabled');\n this.element.disabled = false;\n this.isDisabled = false;\n };\n WrappedElement.prototype.disable = function () {\n this.element.setAttribute('disabled', '');\n this.element.disabled = true;\n this.isDisabled = true;\n };\n WrappedElement.prototype.triggerEvent = function (eventType, data) {\n dispatchEvent(this.element, eventType, data || {});\n };\n return WrappedElement;\n}());\n\nvar WrappedInput = /** @class */ (function (_super) {\n __extends(WrappedInput, _super);\n function WrappedInput() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return WrappedInput;\n}(WrappedElement));\n\nvar coerceBool = function (arg, defaultValue) {\n if (defaultValue === void 0) { defaultValue = true; }\n return typeof arg === 'undefined' ? defaultValue : !!arg;\n};\nvar stringToHtmlClass = function (input) {\n if (typeof input === 'string') {\n // eslint-disable-next-line no-param-reassign\n input = input.split(' ').filter(function (s) { return s.length; });\n }\n if (Array.isArray(input) && input.length) {\n return input;\n }\n return undefined;\n};\nvar mapInputToChoice = function (value, allowGroup, allowRawString) {\n if (allowRawString === void 0) { allowRawString = true; }\n if (typeof value === 'string') {\n var sanitisedValue = sanitise(value);\n var userValue = allowRawString || sanitisedValue === value ? value : { escaped: sanitisedValue, raw: value };\n var result_1 = mapInputToChoice({\n value: value,\n label: userValue,\n selected: true,\n }, false);\n return result_1;\n }\n var groupOrChoice = value;\n if ('choices' in groupOrChoice) {\n if (!allowGroup) {\n // https://developer.mozilla.org/en-US/docs/Web/HTML/Element/optgroup\n throw new TypeError(\"optGroup is not allowed\");\n }\n var group = groupOrChoice;\n var choices = group.choices.map(function (e) { return mapInputToChoice(e, false); });\n var result_2 = {\n id: 0, // actual ID will be assigned during _addGroup\n label: unwrapStringForRaw(group.label) || group.value,\n active: !!choices.length,\n disabled: !!group.disabled,\n choices: choices,\n };\n return result_2;\n }\n var choice = groupOrChoice;\n var result = {\n id: 0, // actual ID will be assigned during _addChoice\n group: null, // actual group will be assigned during _addGroup but before _addChoice\n score: 0, // used in search\n rank: 0, // used in search, stable sort order\n value: choice.value,\n label: choice.label || choice.value,\n active: coerceBool(choice.active),\n selected: coerceBool(choice.selected, false),\n disabled: coerceBool(choice.disabled, false),\n placeholder: coerceBool(choice.placeholder, false),\n highlighted: false,\n labelClass: stringToHtmlClass(choice.labelClass),\n labelDescription: choice.labelDescription,\n customProperties: choice.customProperties,\n };\n return result;\n};\n\nvar isHtmlInputElement = function (e) { return e.tagName === 'INPUT'; };\nvar isHtmlSelectElement = function (e) { return e.tagName === 'SELECT'; };\nvar isHtmlOption = function (e) { return e.tagName === 'OPTION'; };\nvar isHtmlOptgroup = function (e) { return e.tagName === 'OPTGROUP'; };\n\nvar WrappedSelect = /** @class */ (function (_super) {\n __extends(WrappedSelect, _super);\n function WrappedSelect(_a) {\n var element = _a.element, classNames = _a.classNames, template = _a.template, extractPlaceholder = _a.extractPlaceholder;\n var _this = _super.call(this, { element: element, classNames: classNames }) || this;\n _this.template = template;\n _this.extractPlaceholder = extractPlaceholder;\n return _this;\n }\n Object.defineProperty(WrappedSelect.prototype, \"placeholderOption\", {\n get: function () {\n return (this.element.querySelector('option[value=\"\"]') ||\n // Backward compatibility layer for the non-standard placeholder attribute supported in older versions.\n this.element.querySelector('option[placeholder]'));\n },\n enumerable: false,\n configurable: true\n });\n WrappedSelect.prototype.addOptions = function (choices) {\n var _this = this;\n var fragment = document.createDocumentFragment();\n choices.forEach(function (obj) {\n var choice = obj;\n if (choice.element) {\n return;\n }\n var option = _this.template(choice);\n fragment.appendChild(option);\n choice.element = option;\n });\n this.element.appendChild(fragment);\n };\n WrappedSelect.prototype.optionsAsChoices = function () {\n var _this = this;\n var choices = [];\n this.element.querySelectorAll(':scope > option, :scope > optgroup').forEach(function (e) {\n if (isHtmlOption(e)) {\n choices.push(_this._optionToChoice(e));\n }\n else if (isHtmlOptgroup(e)) {\n choices.push(_this._optgroupToChoice(e));\n }\n // todo: hr as empty optgroup, requires displaying empty opt-groups to be useful\n });\n return choices;\n };\n // eslint-disable-next-line class-methods-use-this\n WrappedSelect.prototype._optionToChoice = function (option) {\n // option.value returns the label if there is no value attribute, which can break legacy placeholder attribute support\n if (!option.hasAttribute('value') && option.hasAttribute('placeholder')) {\n option.setAttribute('value', '');\n option.value = '';\n }\n return {\n id: 0,\n group: null,\n score: 0,\n rank: 0,\n value: option.value,\n label: option.innerText, // HTML options do not support most html tags, but innerHtml will extract html comments...\n element: option,\n active: true,\n // this returns true if nothing is selected on initial load, which will break placeholder support\n selected: this.extractPlaceholder ? option.selected : option.hasAttribute('selected'),\n disabled: option.disabled,\n highlighted: false,\n placeholder: this.extractPlaceholder && (!option.value || option.hasAttribute('placeholder')),\n labelClass: typeof option.dataset.labelClass !== 'undefined' ? stringToHtmlClass(option.dataset.labelClass) : undefined,\n labelDescription: typeof option.dataset.labelDescription !== 'undefined' ? option.dataset.labelDescription : undefined,\n customProperties: parseCustomProperties(option.dataset.customProperties),\n };\n };\n WrappedSelect.prototype._optgroupToChoice = function (optgroup) {\n var _this = this;\n var options = optgroup.querySelectorAll('option');\n var choices = Array.from(options).map(function (option) { return _this._optionToChoice(option); });\n return {\n id: 0,\n label: optgroup.label || '',\n element: optgroup,\n active: !!choices.length,\n disabled: optgroup.disabled,\n choices: choices,\n };\n };\n return WrappedSelect;\n}(WrappedElement));\n\nvar DEFAULT_CLASSNAMES = {\n containerOuter: ['choices'],\n containerInner: ['choices__inner'],\n input: ['choices__input'],\n inputCloned: ['choices__input--cloned'],\n list: ['choices__list'],\n listItems: ['choices__list--multiple'],\n listSingle: ['choices__list--single'],\n listDropdown: ['choices__list--dropdown'],\n item: ['choices__item'],\n itemSelectable: ['choices__item--selectable'],\n itemDisabled: ['choices__item--disabled'],\n itemChoice: ['choices__item--choice'],\n description: ['choices__description'],\n placeholder: ['choices__placeholder'],\n group: ['choices__group'],\n groupHeading: ['choices__heading'],\n button: ['choices__button'],\n activeState: ['is-active'],\n focusState: ['is-focused'],\n openState: ['is-open'],\n disabledState: ['is-disabled'],\n highlightedState: ['is-highlighted'],\n selectedState: ['is-selected'],\n flippedState: ['is-flipped'],\n loadingState: ['is-loading'],\n notice: ['choices__notice'],\n addChoice: ['choices__item--selectable', 'add-choice'],\n noResults: ['has-no-results'],\n noChoices: ['has-no-choices'],\n};\nvar DEFAULT_CONFIG = {\n items: [],\n choices: [],\n silent: false,\n renderChoiceLimit: -1,\n maxItemCount: -1,\n closeDropdownOnSelect: 'auto',\n singleModeForMultiSelect: false,\n addChoices: false,\n addItems: true,\n addItemFilter: function (value) { return !!value && value !== ''; },\n removeItems: true,\n removeItemButton: false,\n removeItemButtonAlignLeft: false,\n editItems: false,\n allowHTML: false,\n allowHtmlUserInput: false,\n duplicateItemsAllowed: true,\n delimiter: ',',\n paste: true,\n searchEnabled: true,\n searchChoices: true,\n searchFloor: 1,\n searchResultLimit: 4,\n searchFields: ['label', 'value'],\n position: 'auto',\n resetScrollPosition: true,\n shouldSort: true,\n shouldSortItems: false,\n sorter: sortByAlpha,\n shadowRoot: null,\n placeholder: true,\n placeholderValue: null,\n searchPlaceholderValue: null,\n prependValue: null,\n appendValue: null,\n renderSelectedChoices: 'auto',\n loadingText: 'Loading...',\n noResultsText: 'No results found',\n noChoicesText: 'No choices to choose from',\n itemSelectText: 'Press to select',\n uniqueItemText: 'Only unique values can be added',\n customAddItemText: 'Only values matching specific conditions can be added',\n addItemText: function (value) { return \"Press Enter to add <b>\\\"\".concat(value, \"\\\"</b>\"); },\n removeItemIconText: function () { return \"Remove item\"; },\n removeItemLabelText: function (value) { return \"Remove item: \".concat(value); },\n maxItemText: function (maxItemCount) { return \"Only \".concat(maxItemCount, \" values can be added\"); },\n valueComparer: function (value1, value2) { return value1 === value2; },\n fuseOptions: {\n includeScore: true,\n },\n labelId: '',\n callbackOnInit: null,\n callbackOnCreateTemplates: null,\n classNames: DEFAULT_CLASSNAMES,\n appendGroupInSearch: false,\n};\n\nvar removeItem = function (item) {\n var itemEl = item.itemEl;\n if (itemEl) {\n itemEl.remove();\n item.itemEl = undefined;\n }\n};\nfunction items(s, action, context) {\n var state = s;\n var update = true;\n switch (action.type) {\n case ActionType.ADD_ITEM: {\n action.item.selected = true;\n var el = action.item.element;\n if (el) {\n el.selected = true;\n el.setAttribute('selected', '');\n }\n state.push(action.item);\n break;\n }\n case ActionType.REMOVE_ITEM: {\n action.item.selected = false;\n var el = action.item.element;\n if (el) {\n el.selected = false;\n el.removeAttribute('selected');\n // For a select-one, if all options are deselected, the first item is selected. To set a black value, select.value needs to be set\n var select = el.parentElement;\n if (select && isHtmlSelectElement(select) && select.type === PassedElementTypes.SelectOne) {\n select.value = '';\n }\n }\n // this is mixing concerns, but this is *so much faster*\n removeItem(action.item);\n state = state.filter(function (choice) { return choice.id !== action.item.id; });\n break;\n }\n case ActionType.REMOVE_CHOICE: {\n removeItem(action.choice);\n state = state.filter(function (item) { return item.id !== action.choice.id; });\n break;\n }\n case ActionType.HIGHLIGHT_ITEM: {\n var highlighted = action.highlighted;\n var item = state.find(function (obj) { return obj.id === action.item.id; });\n if (item && item.highlighted !== highlighted) {\n item.highlighted = highlighted;\n if (context) {\n updateClassList(item, highlighted ? context.classNames.highlightedState : context.classNames.selectedState, highlighted ? context.classNames.selectedState : context.classNames.highlightedState);\n }\n }\n break;\n }\n default: {\n update = false;\n break;\n }\n }\n return { state: state, update: update };\n}\n\nfunction groups(s, action) {\n var state = s;\n var update = true;\n switch (action.type) {\n case ActionType.ADD_GROUP: {\n state.push(action.group);\n break;\n }\n case ActionType.CLEAR_CHOICES: {\n state = [];\n break;\n }\n default: {\n update = false;\n break;\n }\n }\n return { state: state, update: update };\n}\n\n/* eslint-disable */\nfunction choices(s, action, context) {\n var state = s;\n var update = true;\n switch (action.type) {\n case ActionType.ADD_CHOICE: {\n state.push(action.choice);\n break;\n }\n case ActionType.REMOVE_CHOICE: {\n action.choice.choiceEl = undefined;\n if (action.choice.group) {\n action.choice.group.choices = action.choice.group.choices.filter(function (obj) { return obj.id !== action.choice.id; });\n }\n state = state.filter(function (obj) { return obj.id !== action.choice.id; });\n break;\n }\n case ActionType.ADD_ITEM:\n case ActionType.REMOVE_ITEM: {\n action.item.choiceEl = undefined;\n break;\n }\n case ActionType.FILTER_CHOICES: {\n // avoid O(n^2) algorithm complexity when searching/filtering choices\n var scoreLookup_1 = [];\n action.results.forEach(function (result) {\n scoreLookup_1[result.item.id] = result;\n });\n state.forEach(function (choice) {\n var result = scoreLookup_1[choice.id];\n if (result !== undefined) {\n choice.score = result.score;\n choice.rank = result.rank;\n choice.active = true;\n }\n else {\n choice.score = 0;\n choice.rank = 0;\n choice.active = false;\n }\n if (context && context.appendGroupInSearch) {\n choice.choiceEl = undefined;\n }\n });\n break;\n }\n case ActionType.ACTIVATE_CHOICES: {\n state.forEach(function (choice) {\n choice.active = action.active;\n if (context && context.appendGroupInSearch) {\n choice.choiceEl = undefined;\n }\n });\n break;\n }\n case ActionType.CLEAR_CHOICES: {\n state = [];\n break;\n }\n default: {\n update = false;\n break;\n }\n }\n return { state: state, update: update };\n}\n\nvar reducers = {\n groups: groups,\n items: items,\n choices: choices,\n};\nvar Store = /** @class */ (function () {\n function Store(context) {\n this._state = this.defaultState;\n this._listeners = [];\n this._txn = 0;\n this._context = context;\n }\n Object.defineProperty(Store.prototype, \"defaultState\", {\n // eslint-disable-next-line class-methods-use-this\n get: function () {\n return {\n groups: [],\n items: [],\n choices: [],\n };\n },\n enumerable: false,\n configurable: true\n });\n // eslint-disable-next-line class-methods-use-this\n Store.prototype.changeSet = function (init) {\n return {\n groups: init,\n items: init,\n choices: init,\n };\n };\n Store.prototype.reset = function () {\n this._state = this.defaultState;\n var changes = this.changeSet(true);\n if (this._txn) {\n this._changeSet = changes;\n }\n else {\n this._listeners.forEach(function (l) { return l(changes); });\n }\n };\n Store.prototype.subscribe = function (onChange) {\n this._listeners.push(onChange);\n return this;\n };\n Store.prototype.dispatch = function (action) {\n var _this = this;\n var state = this._state;\n var hasChanges = false;\n var changes = this._changeSet || this.changeSet(false);\n Object.keys(reducers).forEach(function (key) {\n var stateUpdate = reducers[key](state[key], action, _this._context);\n if (stateUpdate.update) {\n hasChanges = true;\n changes[key] = true;\n state[key] = stateUpdate.state;\n }\n });\n if (hasChanges) {\n if (this._txn) {\n this._changeSet = changes;\n }\n else {\n this._listeners.forEach(function (l) { return l(changes); });\n }\n }\n };\n Store.prototype.withTxn = function (func) {\n this._txn++;\n try {\n func();\n }\n finally {\n this._txn = Math.max(0, this._txn - 1);\n if (!this._txn) {\n var changeSet_1 = this._changeSet;\n if (changeSet_1) {\n this._changeSet = undefined;\n this._listeners.forEach(function (l) { return l(changeSet_1); });\n }\n }\n }\n };\n Object.defineProperty(Store.prototype, \"state\", {\n /**\n * Get store object\n */\n get: function () {\n return this._state;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Store.prototype, \"items\", {\n /**\n * Get items from store\n */\n get: function () {\n return this.state.items;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Store.prototype, \"highlightedActiveItems\", {\n /**\n * Get highlighted items from store\n */\n get: function () {\n return this.items.filter(function (item) { return !item.disabled && item.active && item.highlighted; });\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Store.prototype, \"choices\", {\n /**\n * Get choices from store\n */\n get: function () {\n return this.state.choices;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Store.prototype, \"activeChoices\", {\n /**\n * Get active choices from store\n */\n get: function () {\n return this.choices.filter(function (choice) { return choice.active; });\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Store.prototype, \"searchableChoices\", {\n /**\n * Get choices that can be searched (excluding placeholders)\n */\n get: function () {\n return this.choices.filter(function (choice) { return !choice.disabled && !choice.placeholder; });\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Store.prototype, \"groups\", {\n /**\n * Get groups from store\n */\n get: function () {\n return this.state.groups;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Store.prototype, \"activeGroups\", {\n /**\n * Get active groups from store\n */\n get: function () {\n var _this = this;\n return this.state.groups.filter(function (group) {\n var isActive = group.active && !group.disabled;\n var hasActiveOptions = _this.state.choices.some(function (choice) { return choice.active && !choice.disabled; });\n return isActive && hasActiveOptions;\n }, []);\n },\n enumerable: false,\n configurable: true\n });\n Store.prototype.inTxn = function () {\n return this._txn > 0;\n };\n /**\n * Get single choice by it's ID\n */\n Store.prototype.getChoiceById = function (id) {\n return this.activeChoices.find(function (choice) { return choice.id === id; });\n };\n /**\n * Get group by group id\n */\n Store.prototype.getGroupById = function (id) {\n return this.groups.find(function (group) { return group.id === id; });\n };\n return Store;\n}());\n\nvar NoticeTypes = {\n noChoices: 'no-choices',\n noResults: 'no-results',\n addChoice: 'add-choice',\n generic: '',\n};\n\nfunction _defineProperty(e, r, t) {\n return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != typeof t || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != typeof i) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == typeof i ? i : i + \"\";\n}\n\n/**\n * Fuse.js v7.0.0 - Lightweight fuzzy-search (http://fusejs.io)\n *\n * Copyright (c) 2023 Kiro Risk (http://kiro.me)\n * All Rights Reserved. Apache Software License 2.0\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n */\n\nfunction isArray(value) {\n return !Array.isArray ? getTag(value) === '[object Array]' : Array.isArray(value);\n}\n\n// Adapted from: https://github.com/lodash/lodash/blob/master/.internal/baseToString.js\nconst INFINITY = 1 / 0;\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n let result = value + '';\n return result == '0' && 1 / value == -INFINITY ? '-0' : result;\n}\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\nfunction isString(value) {\n return typeof value === 'string';\n}\nfunction isNumber(value) {\n return typeof value === 'number';\n}\n\n// Adapted from: https://github.com/lodash/lodash/blob/master/isBoolean.js\nfunction isBoolean(value) {\n return value === true || value === false || isObjectLike(value) && getTag(value) == '[object Boolean]';\n}\nfunction isObject(value) {\n return typeof value === 'object';\n}\n\n// Checks if `value` is object-like.\nfunction isObjectLike(value) {\n return isObject(value) && value !== null;\n}\nfunction isDefined(value) {\n return value !== undefined && value !== null;\n}\nfunction isBlank(value) {\n return !value.trim().length;\n}\n\n// Gets the `toStringTag` of `value`.\n// Adapted from: https://github.com/lodash/lodash/blob/master/.internal/getTag.js\nfunction getTag(value) {\n return value == null ? value === undefined ? '[object Undefined]' : '[object Null]' : Object.prototype.toString.call(value);\n}\nconst EXTENDED_SEARCH_UNAVAILABLE = 'Extended search is not available';\nconst INCORRECT_INDEX_TYPE = \"Incorrect 'index' type\";\nconst LOGICAL_SEARCH_INVALID_QUERY_FOR_KEY = key => `Invalid value for key ${key}`;\nconst PATTERN_LENGTH_TOO_LARGE = max => `Pattern length exceeds max of ${max}.`;\nconst MISSING_KEY_PROPERTY = name => `Missing ${name} property in key`;\nconst INVALID_KEY_WEIGHT_VALUE = key => `Property 'weight' in key '${key}' must be a positive integer`;\nconst hasOwn = Object.prototype.hasOwnProperty;\nclass KeyStore {\n constructor(keys) {\n this._keys = [];\n this._keyMap = {};\n let totalWeight = 0;\n keys.forEach(key => {\n let obj = createKey(key);\n this._keys.push(obj);\n this._keyMap[obj.id] = obj;\n totalWeight += obj.weight;\n });\n\n // Normalize weights so that their sum is equal to 1\n this._keys.forEach(key => {\n key.weight /= totalWeight;\n });\n }\n get(keyId) {\n return this._keyMap[keyId];\n }\n keys() {\n return this._keys;\n }\n toJSON() {\n return JSON.stringify(this._keys);\n }\n}\nfunction createKey(key) {\n let path = null;\n let id = null;\n let src = null;\n let weight = 1;\n let getFn = null;\n if (isString(key) || isArray(key)) {\n src = key;\n path = createKeyPath(key);\n id = createKeyId(key);\n } else {\n if (!hasOwn.call(key, 'name')) {\n throw new Error(MISSING_KEY_PROPERTY('name'));\n }\n const name = key.name;\n src = name;\n if (hasOwn.call(key, 'weight')) {\n weight = key.weight;\n if (weight <= 0) {\n throw new Error(INVALID_KEY_WEIGHT_VALUE(name));\n }\n }\n path = createKeyPath(name);\n id = createKeyId(name);\n getFn = key.getFn;\n }\n return {\n path,\n id,\n weight,\n src,\n getFn\n };\n}\nfunction createKeyPath(key) {\n return isArray(key) ? key : key.split('.');\n}\nfunction createKeyId(key) {\n return isArray(key) ? key.join('.') : key;\n}\nfunction get(obj, path) {\n let list = [];\n let arr = false;\n const deepGet = (obj, path, index) => {\n if (!isDefined(obj)) {\n return;\n }\n if (!path[index]) {\n // If there's no path left, we've arrived at the object we care about.\n list.push(obj);\n } else {\n let key = path[index];\n const value = obj[key];\n if (!isDefined(value)) {\n return;\n }\n\n // If we're at the last value in the path, and if it's a string/number/bool,\n // add it to the list\n if (index === path.length - 1 && (isString(value) || isNumber(value) || isBoolean(value))) {\n list.push(toString(value));\n } else if (isArray(value)) {\n arr = true;\n // Search each item in the array.\n for (let i = 0, len = value.length; i < len; i += 1) {\n deepGet(value[i], path, index + 1);\n }\n } else if (path.length) {\n // An object. Recurse further.\n deepGet(value, path, index + 1);\n }\n }\n };\n\n // Backwards compatibility (since path used to be a string)\n deepGet(obj, isString(path) ? path.split('.') : path, 0);\n return arr ? list : list[0];\n}\nconst MatchOptions = {\n // Whether the matches should be included in the result set. When `true`, each record in the result\n // set will include the indices of the matched characters.\n // These can consequently be used for highlighting purposes.\n includeMatches: false,\n // When `true`, the matching function will continue to the end of a search pattern even if\n // a perfect match has already been located in the string.\n findAllMatches: false,\n // Minimum number of characters that must be matched before a result is considered a match\n minMatchCharLength: 1\n};\nconst BasicOptions = {\n // When `true`, the algorithm continues searching to the end of the input even if a perfect\n // match is found before the end of the same input.\n isCaseSensitive: false,\n // When true, the matching function will continue to the end of a search pattern even if\n includeScore: false,\n // List of properties that will be searched. This also supports nested properties.\n keys: [],\n // Whether to sort the result list, by score\n shouldSort: true,\n // Default sort function: sort by ascending score, ascending index\n sortFn: (a, b) => a.score === b.score ? a.idx < b.idx ? -1 : 1 : a.score < b.score ? -1 : 1\n};\nconst FuzzyOptions = {\n // Approximately where in the text is the pattern expected to be found?\n location: 0,\n // At what point does the match algorithm give up. A threshold of '0.0' requires a perfect match\n // (of both letters and location), a threshold of '1.0' would match anything.\n threshold: 0.6,\n // Determines how close the match must be to the fuzzy location (specified above).\n // An exact letter match which is 'distance' characters away from the fuzzy location\n // would score as a complete mismatch. A distance of '0' requires the match be at\n // the exact location specified, a threshold of '1000' would require a perfect match\n // to be within 800 characters of the fuzzy location to be found using a 0.8 threshold.\n distance: 100\n};\nconst AdvancedOptions = {\n // When `true`, it enables the use of unix-like search commands\n useExtendedSearch: false,\n // The get function to use when fetching an object's properties.\n // The default will search nested paths *ie foo.bar.baz*\n getFn: get,\n // When `true`, search will ignore `location` and `distance`, so it won't matter\n // where in the string the pattern appears.\n // More info: https://fusejs.io/concepts/scoring-theory.html#fuzziness-score\n ignoreLocation: false,\n // When `true`, the calculation for the relevance score (used for sorting) will\n // ignore the field-length norm.\n // More info: https://fusejs.io/concepts/scoring-theory.html#field-length-norm\n ignoreFieldNorm: false,\n // The weight to determine how much field length norm effects scoring.\n fieldNormWeight: 1\n};\nvar Config = _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, BasicOptions), MatchOptions), FuzzyOptions), AdvancedOptions);\nconst SPACE = /[^ ]+/g;\n\n// Field-length norm: the shorter the field, the higher the weight.\n// Set to 3 decimals to reduce index size.\nfunction norm(weight = 1, mantissa = 3) {\n const cache = new Map();\n const m = Math.pow(10, mantissa);\n return {\n get(value) {\n const numTokens = value.match(SPACE).length;\n if (cache.has(numTokens)) {\n return cache.get(numTokens);\n }\n\n // Default function is 1/sqrt(x), weight makes that variable\n const norm = 1 / Math.pow(numTokens, 0.5 * weight);\n\n // In place of `toFixed(mantissa)`, for faster computation\n const n = parseFloat(Math.round(norm * m) / m);\n cache.set(numTokens, n);\n return n;\n },\n clear() {\n cache.clear();\n }\n };\n}\nclass FuseIndex {\n constructor({\n getFn = Config.getFn,\n fieldNormWeight = Config.fieldNormWeight\n } = {}) {\n this.norm = norm(fieldNormWeight, 3);\n this.getFn = getFn;\n this.isCreated = false;\n this.setIndexRecords();\n }\n setSources(docs = []) {\n this.docs = docs;\n }\n setIndexRecords(records = []) {\n this.records = records;\n }\n setKeys(keys = []) {\n this.keys = keys;\n this._keysMap = {};\n keys.forEach((key, idx) => {\n this._keysMap[key.id] = idx;\n });\n }\n create() {\n if (this.isCreated || !this.docs.length) {\n return;\n }\n this.isCreated = true;\n\n // List is Array<String>\n if (isString(this.docs[0])) {\n this.docs.forEach((doc, docIndex) => {\n this._addString(doc, docIndex);\n });\n } else {\n // List is Array<Object>\n this.docs.forEach((doc, docIndex) => {\n this._addObject(doc, docIndex);\n });\n }\n this.norm.clear();\n }\n // Adds a doc to the end of the index\n add(doc) {\n const idx = this.size();\n if (isString(doc)) {\n this._addString(doc, idx);\n } else {\n this._addObject(doc, idx);\n }\n }\n // Removes the doc at the specified index of the index\n removeAt(idx) {\n this.records.splice(idx, 1);\n\n // Change ref index of every subsquent doc\n for (let i = idx, len = this.size(); i < len; i += 1) {\n this.records[i].i -= 1;\n }\n }\n getValueForItemAtKeyId(item, keyId) {\n return item[this._keysMap[keyId]];\n }\n size() {\n return this.records.length;\n }\n _addString(doc, docIndex) {\n if (!isDefined(doc) || isBlank(doc)) {\n return;\n }\n let record = {\n v: doc,\n i: docIndex,\n n: this.norm.get(doc)\n };\n this.records.push(record);\n }\n _addObject(doc, docIndex) {\n let record = {\n i: docIndex,\n $: {}\n };\n\n // Iterate over every key (i.e, path), and fetch the value at that key\n this.keys.forEach((key, keyIndex) => {\n let value = key.getFn ? key.getFn(doc) : this.getFn(doc, key.path);\n if (!isDefined(value)) {\n return;\n }\n if (isArray(value)) {\n let subRecords = [];\n const stack = [{\n nestedArrIndex: -1,\n value\n }];\n while (stack.length) {\n const {\n nestedArrIndex,\n value\n } = stack.pop();\n if (!isDefined(value)) {\n continue;\n }\n if (isString(value) && !isBlank(value)) {\n let subRecord = {\n v: value,\n i: nestedArrIndex,\n n: this.norm.get(value)\n };\n subRecords.push(subRecord);\n } else if (isArray(value)) {\n value.forEach((item, k) => {\n stack.push({\n nestedArrIndex: k,\n value: item\n });\n });\n } else ;\n }\n record.$[keyIndex] = subRecords;\n } else if (isString(value) && !isBlank(value)) {\n let subRecord = {\n v: value,\n n: this.norm.get(value)\n };\n record.$[keyIndex] = subRecord;\n }\n });\n this.records.push(record);\n }\n toJSON() {\n return {\n keys: this.keys,\n records: this.records\n };\n }\n}\nfunction createIndex(keys, docs, {\n getFn = Config.getFn,\n fieldNormWeight = Config.fieldNormWeight\n} = {}) {\n const myIndex = new FuseIndex({\n getFn,\n fieldNormWeight\n });\n myIndex.setKeys(keys.map(createKey));\n myIndex.setSources(docs);\n myIndex.create();\n return myIndex;\n}\nfunction parseIndex(data, {\n getFn = Config.getFn,\n fieldNormWeight = Config.fieldNormWeight\n} = {}) {\n const {\n keys,\n records\n } = data;\n const myIndex = new FuseIndex({\n getFn,\n fieldNormWeight\n });\n myIndex.setKeys(keys);\n myIndex.setIndexRecords(records);\n return myIndex;\n}\nfunction computeScore$1(pattern, {\n errors = 0,\n currentLocation = 0,\n expectedLocation = 0,\n distance = Config.distance,\n ignoreLocation = Config.ignoreLocation\n} = {}) {\n const accuracy = errors / pattern.length;\n if (ignoreLocation) {\n return accuracy;\n }\n const proximity = Math.abs(expectedLocation - currentLocation);\n if (!distance) {\n // Dodge divide by zero error.\n return proximity ? 1.0 : accuracy;\n }\n return accuracy + proximity / distance;\n}\nfunction convertMaskToIndices(matchmask = [], minMatchCharLength = Config.minMatchCharLength) {\n let indices = [];\n let start = -1;\n let end = -1;\n let i = 0;\n for (let len = matchmask.length; i < len; i += 1) {\n let match = matchmask[i];\n if (match && start === -1) {\n start = i;\n } else if (!match && start !== -1) {\n end = i - 1;\n if (end - start + 1 >= minMatchCharLength) {\n indices.push([start, end]);\n }\n start = -1;\n }\n }\n\n // (i-1 - start) + 1 => i - start\n if (matchmask[i - 1] && i - start >= minMatchCharLength) {\n indices.push([start, i - 1]);\n }\n return indices;\n}\n\n// Machine word size\nconst MAX_BITS = 32;\nfunction search(text, pattern, patternAlphabet, {\n location = Config.location,\n distance = Config.distance,\n threshold = Config.threshold,\n findAllMatches = Config.findAllMatches,\n minMatchCharLength = Config.minMatchCharLength,\n includeMatches = Config.includeMatches,\n ignoreLocation = Config.ignoreLocation\n} = {}) {\n if (pattern.length > MAX_BITS) {\n throw new Error(PATTERN_LENGTH_TOO_LARGE(MAX_BITS));\n }\n const patternLen = pattern.length;\n // Set starting location at beginning text and initialize the alphabet.\n const textLen = text.length;\n // Handle the case when location > text.length\n const expectedLocation = Math.max(0, Math.min(location, textLen));\n // Highest score beyond which we give up.\n let currentThreshold = threshold;\n // Is there a nearby exact match? (speedup)\n let bestLocation = expectedLocation;\n\n // Performance: only computer matches when the minMatchCharLength > 1\n // OR if `includeMatches` is true.\n const computeMatches = minMatchCharLength > 1 || includeMatches;\n // A mask of the matches, used for building the indices\n const matchMask = computeMatches ? Array(textLen) : [];\n let index;\n\n // Get all exact matches, here for speed up\n while ((index = text.indexOf(pattern, bestLocation)) > -1) {\n let score = computeScore$1(pattern, {\n currentLocation: index,\n expectedLocation,\n distance,\n ignoreLocation\n });\n currentThreshold = Math.min(score, currentThreshold);\n bestLocation = index + patternLen;\n if (computeMatches) {\n let i = 0;\n while (i < patternLen) {\n matchMask[index + i] = 1;\n i += 1;\n }\n }\n }\n\n // Reset the best location\n bestLocation = -1;\n let lastBitArr = [];\n let finalScore = 1;\n let binMax = patternLen + textLen;\n const mask = 1 << patternLen - 1;\n for (let i = 0; i < patternLen; i += 1) {\n // Scan for the best match; each iteration allows for one more error.\n // Run a binary search to determine how far from the match location we can stray\n // at this error level.\n let binMin = 0;\n let binMid = binMax;\n while (binMin < binMid) {\n const score = computeScore$1(pattern, {\n errors: i,\n currentLocation: expectedLocation + binMid,\n expectedLocation,\n distance,\n ignoreLocation\n });\n if (score <= currentThreshold) {\n binMin = binMid;\n } else {\n binMax = binMid;\n }\n binMid = Math.floor((binMax - binMin) / 2 + binMin);\n }\n\n // Use the result from this iteration as the maximum for the next.\n binMax = binMid;\n let start = Math.max(1, expectedLocation - binMid + 1);\n let finish = findAllMatches ? textLen : Math.min(expectedLocation + binMid, textLen) + patternLen;\n\n // Initialize the bit array\n let bitArr = Array(finish + 2);\n bitArr[finish + 1] = (1 << i) - 1;\n for (let j = finish; j >= start; j -= 1) {\n let currentLocation = j - 1;\n let charMatch = patternAlphabet[text.charAt(currentLocation)];\n if (computeMatches) {\n // Speed up: quick bool to int conversion (i.e, `charMatch ? 1 : 0`)\n matchMask[currentLocation] = +!!charMatch;\n }\n\n // First pass: exact match\n bitArr[j] = (bitArr[j + 1] << 1 | 1) & charMatch;\n\n // Subsequent passes: fuzzy match\n if (i) {\n bitArr[j] |= (lastBitArr[j + 1] | lastBitArr[j]) << 1 | 1 | lastBitArr[j + 1];\n }\n if (bitArr[j] & mask) {\n finalScore = computeScore$1(pattern, {\n errors: i,\n currentLocation,\n expectedLocation,\n distance,\n ignoreLocation\n });\n\n // This match will almost certainly be better than any existing match.\n // But check anyway.\n if (finalScore <= currentThreshold) {\n // Indeed it is\n currentThreshold = finalScore;\n bestLocation = currentLocation;\n\n // Already passed `loc`, downhill from here on in.\n if (bestLocation <= expectedLocation) {\n break;\n }\n\n // When passing `bestLocation`, don't exceed our current distance from `expectedLocation`.\n start = Math.max(1, 2 * expectedLocation - bestLocation);\n }\n }\n }\n\n // No hope for a (better) match at greater error levels.\n const score = computeScore$1(pattern, {\n errors: i + 1,\n currentLocation: expectedLocation,\n expectedLocation,\n distance,\n ignoreLocation\n });\n if (score > currentThreshold) {\n break;\n }\n lastBitArr = bitArr;\n }\n const result = {\n isMatch: bestLocation >= 0,\n // Count exact matches (those with a score of 0) to be \"almost\" exact\n score: Math.max(0.001, finalScore)\n };\n if (computeMatches) {\n const indices = convertMaskToIndices(matchMask, minMatchCharLength);\n if (!indices.length) {\n result.isMatch = false;\n } else if (includeMatches) {\n result.indices = indices;\n }\n }\n return result;\n}\nfunction createPatternAlphabet(pattern) {\n let mask = {};\n for (let i = 0, len = pattern.length; i < len; i += 1) {\n const char = pattern.charAt(i);\n mask[char] = (mask[char] || 0) | 1 << len - i - 1;\n }\n return mask;\n}\nclass BitapSearch {\n constructor(pattern, {\n location = Config.location,\n threshold = Config.threshold,\n distance = Config.distance,\n includeMatches = Config.includeMatches,\n findAllMatches = Config.findAllMatches,\n minMatchCharLength = Config.minMatchCharLength,\n isCaseSensitive = Config.isCaseSensitive,\n ignoreLocation = Config.ignoreLocation\n } = {}) {\n this.options = {\n location,\n threshold,\n distance,\n includeMatches,\n findAllMatches,\n minMatchCharLength,\n isCaseSensitive,\n ignoreLocation\n };\n this.pattern = isCaseSensitive ? pattern : pattern.toLowerCase();\n this.chunks = [];\n if (!this.pattern.length) {\n return;\n }\n const addChunk = (pattern, startIndex) => {\n this.chunks.push({\n pattern,\n alphabet: createPatternAlphabet(pattern),\n startIndex\n });\n };\n const len = this.pattern.length;\n if (len > MAX_BITS) {\n let i = 0;\n const remainder = len % MAX_BITS;\n const end = len - remainder;\n while (i < end) {\n addChunk(this.pattern.substr(i, MAX_BITS), i);\n i += MAX_BITS;\n }\n if (remainder) {\n const startIndex = len - MAX_BITS;\n addChunk(this.pattern.substr(startIndex), startIndex);\n }\n } else {\n addChunk(this.pattern, 0);\n }\n }\n searchIn(text) {\n const {\n isCaseSensitive,\n includeMatches\n } = this.options;\n if (!isCaseSensitive) {\n text = text.toLowerCase();\n }\n\n // Exact match\n if (this.pattern === text) {\n let result = {\n isMatch: true,\n score: 0\n };\n if (includeMatches) {\n result.indices = [[0, text.length - 1]];\n }\n return result;\n }\n\n // Otherwise, use Bitap algorithm\n const {\n location,\n distance,\n threshold,\n findAllMatches,\n minMatchCharLength,\n ignoreLocation\n } = this.options;\n let allIndices = [];\n let totalScore = 0;\n let hasMatches = false;\n this.chunks.forEach(({\n pattern,\n alphabet,\n startIndex\n }) => {\n const {\n isMatch,\n score,\n indices\n } = search(text, pattern, alphabet, {\n location: location + startIndex,\n distance,\n threshold,\n findAllMatches,\n minMatchCharLength,\n includeMatches,\n ignoreLocation\n });\n if (isMatch) {\n hasMatches = true;\n }\n totalScore += score;\n if (isMatch && indices) {\n allIndices = [...allIndices, ...indices];\n }\n });\n let result = {\n isMatch: hasMatches,\n score: hasMatches ? totalScore / this.chunks.length : 1\n };\n if (hasMatches && includeMatches) {\n result.indices = allIndices;\n }\n return result;\n }\n}\nclass BaseMatch {\n constructor(pattern) {\n this.pattern = pattern;\n }\n static isMultiMatch(pattern) {\n return getMatch(pattern, this.multiRegex);\n }\n static isSingleMatch(pattern) {\n return getMatch(pattern, this.singleRegex);\n }\n search( /*text*/) {}\n}\nfunction getMatch(pattern, exp) {\n const matches = pattern.match(exp);\n return matches ? matches[1] : null;\n}\n\n// Token: 'file\n\nclass ExactMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'exact';\n }\n static get multiRegex() {\n return /^=\"(.*)\"$/;\n }\n static get singleRegex() {\n return /^=(.*)$/;\n }\n search(text) {\n const isMatch = text === this.pattern;\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices: [0, this.pattern.length - 1]\n };\n }\n}\n\n// Token: !fire\n\nclass InverseExactMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'inverse-exact';\n }\n static get multiRegex() {\n return /^!\"(.*)\"$/;\n }\n static get singleRegex() {\n return /^!(.*)$/;\n }\n search(text) {\n const index = text.indexOf(this.pattern);\n const isMatch = index === -1;\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices: [0, text.length - 1]\n };\n }\n}\n\n// Token: ^file\n\nclass PrefixExactMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'prefix-exact';\n }\n static get multiRegex() {\n return /^\\^\"(.*)\"$/;\n }\n static get singleRegex() {\n return /^\\^(.*)$/;\n }\n search(text) {\n const isMatch = text.startsWith(this.pattern);\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices: [0, this.pattern.length - 1]\n };\n }\n}\n\n// Token: !^fire\n\nclass InversePrefixExactMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'inverse-prefix-exact';\n }\n static get multiRegex() {\n return /^!\\^\"(.*)\"$/;\n }\n static get singleRegex() {\n return /^!\\^(.*)$/;\n }\n search(text) {\n const isMatch = !text.startsWith(this.pattern);\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices: [0, text.length - 1]\n };\n }\n}\n\n// Token: .file$\n\nclass SuffixExactMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'suffix-exact';\n }\n static get multiRegex() {\n return /^\"(.*)\"\\$$/;\n }\n static get singleRegex() {\n return /^(.*)\\$$/;\n }\n search(text) {\n const isMatch = text.endsWith(this.pattern);\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices: [text.length - this.pattern.length, text.length - 1]\n };\n }\n}\n\n// Token: !.file$\n\nclass InverseSuffixExactMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'inverse-suffix-exact';\n }\n static get multiRegex() {\n return /^!\"(.*)\"\\$$/;\n }\n static get singleRegex() {\n return /^!(.*)\\$$/;\n }\n search(text) {\n const isMatch = !text.endsWith(this.pattern);\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices: [0, text.length - 1]\n };\n }\n}\nclass FuzzyMatch extends BaseMatch {\n constructor(pattern, {\n location = Config.location,\n threshold = Config.threshold,\n distance = Config.distance,\n includeMatches = Config.includeMatches,\n findAllMatches = Config.findAllMatches,\n minMatchCharLength = Config.minMatchCharLength,\n isCaseSensitive = Config.isCaseSensitive,\n ignoreLocation = Config.ignoreLocation\n } = {}) {\n super(pattern);\n this._bitapSearch = new BitapSearch(pattern, {\n location,\n threshold,\n distance,\n includeMatches,\n findAllMatches,\n minMatchCharLength,\n isCaseSensitive,\n ignoreLocation\n });\n }\n static get type() {\n return 'fuzzy';\n }\n static get multiRegex() {\n return /^\"(.*)\"$/;\n }\n static get singleRegex() {\n return /^(.*)$/;\n }\n search(text) {\n return this._bitapSearch.searchIn(text);\n }\n}\n\n// Token: 'file\n\nclass IncludeMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'include';\n }\n static get multiRegex() {\n return /^'\"(.*)\"$/;\n }\n static get singleRegex() {\n return /^'(.*)$/;\n }\n search(text) {\n let location = 0;\n let index;\n const indices = [];\n const patternLen = this.pattern.length;\n\n // Get all exact matches\n while ((index = text.indexOf(this.pattern, location)) > -1) {\n location = index + patternLen;\n indices.push([index, location - 1]);\n }\n const isMatch = !!indices.length;\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices\n };\n }\n}\n\n// â—Order is important. DO NOT CHANGE.\nconst searchers = [ExactMatch, IncludeMatch, PrefixExactMatch, InversePrefixExactMatch, InverseSuffixExactMatch, SuffixExactMatch, InverseExactMatch, FuzzyMatch];\nconst searchersLen = searchers.length;\n\n// Regex to split by spaces, but keep anything in quotes together\nconst SPACE_RE = / +(?=(?:[^\\\"]*\\\"[^\\\"]*\\\")*[^\\\"]*$)/;\nconst OR_TOKEN = '|';\n\n// Return a 2D array representation of the query, for simpler parsing.\n// Example:\n// \"^core go$ | rb$ | py$ xy$\" => [[\"^core\", \"go$\"], [\"rb$\"], [\"py$\", \"xy$\"]]\nfunction parseQuery(pattern, options = {}) {\n return pattern.split(OR_TOKEN).map(item => {\n let query = item.trim().split(SPACE_RE).filter(item => item && !!item.trim());\n let results = [];\n for (let i = 0, len = query.length; i < len; i += 1) {\n const queryItem = query[i];\n\n // 1. Handle multiple query match (i.e, once that are quoted, like `\"hello world\"`)\n let found = false;\n let idx = -1;\n while (!found && ++idx < searchersLen) {\n const searcher = searchers[idx];\n let token = searcher.isMultiMatch(queryItem);\n if (token) {\n results.push(new searcher(token, options));\n found = true;\n }\n }\n if (found) {\n continue;\n }\n\n // 2. Handle single query matches (i.e, once that are *not* quoted)\n idx = -1;\n while (++idx < searchersLen) {\n const searcher = searchers[idx];\n let token = searcher.isSingleMatch(queryItem);\n if (token) {\n results.push(new searcher(token, options));\n break;\n }\n }\n }\n return results;\n });\n}\n\n// These extended matchers can return an array of matches, as opposed\n// to a singl match\nconst MultiMatchSet = new Set([FuzzyMatch.type, IncludeMatch.type]);\n\n/**\n * Command-like searching\n * ======================\n *\n * Given multiple search terms delimited by spaces.e.g. `^jscript .python$ ruby !java`,\n * search in a given text.\n *\n * Search syntax:\n *\n * | Token | Match type | Description |\n * | ----------- | -------------------------- | -------------------------------------- |\n * | `jscript` | fuzzy-match | Items that fuzzy match `jscript` |\n * | `=scheme` | exact-match | Items that are `scheme` |\n * | `'python` | include-match | Items that include `python` |\n * | `!ruby` | inverse-exact-match | Items that do not include `ruby` |\n * | `^java` | prefix-exact-match | Items that start with `java` |\n * | `!^earlang` | inverse-prefix-exact-match | Items that do not start with `earlang` |\n * | `.js$` | suffix-exact-match | Items that end with `.js` |\n * | `!.go$` | inverse-suffix-exact-match | Items that do not end with `.go` |\n *\n * A single pipe character acts as an OR operator. For example, the following\n * query matches entries that start with `core` and end with either`go`, `rb`,\n * or`py`.\n *\n * ```\n * ^core go$ | rb$ | py$\n * ```\n */\nclass ExtendedSearch {\n constructor(pattern, {\n isCaseSensitive = Config.isCaseSensitive,\n includeMatches = Config.includeMatches,\n minMatchCharLength = Config.minMatchCharLength,\n ignoreLocation = Config.ignoreLocation,\n findAllMatches = Config.findAllMatches,\n location = Config.location,\n threshold = Config.threshold,\n distance = Config.distance\n } = {}) {\n this.query = null;\n this.options = {\n isCaseSensitive,\n includeMatches,\n minMatchCharLength,\n findAllMatches,\n ignoreLocation,\n location,\n threshold,\n distance\n };\n this.pattern = isCaseSensitive ? pattern : pattern.toLowerCase();\n this.query = parseQuery(this.pattern, this.options);\n }\n static condition(_, options) {\n return options.useExtendedSearch;\n }\n searchIn(text) {\n const query = this.query;\n if (!query) {\n return {\n isMatch: false,\n score: 1\n };\n }\n const {\n includeMatches,\n isCaseSensitive\n } = this.options;\n text = isCaseSensitive ? text : text.toLowerCase();\n let numMatches = 0;\n let allIndices = [];\n let totalScore = 0;\n\n // ORs\n for (let i = 0, qLen = query.length; i < qLen; i += 1) {\n const searchers = query[i];\n\n // Reset indices\n allIndices.length = 0;\n numMatches = 0;\n\n // ANDs\n for (let j = 0, pLen = searchers.length; j < pLen; j += 1) {\n const searcher = searchers[j];\n const {\n isMatch,\n indices,\n score\n } = searcher.search(text);\n if (isMatch) {\n numMatches += 1;\n totalScore += score;\n if (includeMatches) {\n const type = searcher.constructor.type;\n if (MultiMatchSet.has(type)) {\n allIndices = [...allIndices, ...indices];\n } else {\n allIndices.push(indices);\n }\n }\n } else {\n totalScore = 0;\n numMatches = 0;\n allIndices.length = 0;\n break;\n }\n }\n\n // OR condition, so if TRUE, return\n if (numMatches) {\n let result = {\n isMatch: true,\n score: totalScore / numMatches\n };\n if (includeMatches) {\n result.indices = allIndices;\n }\n return result;\n }\n }\n\n // Nothing was matched\n return {\n isMatch: false,\n score: 1\n };\n }\n}\nconst registeredSearchers = [];\nfunction register(...args) {\n registeredSearchers.push(...args);\n}\nfunction createSearcher(pattern, options) {\n for (let i = 0, len = registeredSearchers.length; i < len; i += 1) {\n let searcherClass = registeredSearchers[i];\n if (searcherClass.condition(pattern, options)) {\n return new searcherClass(pattern, options);\n }\n }\n return new BitapSearch(pattern, options);\n}\nconst LogicalOperator = {\n AND: '$and',\n OR: '$or'\n};\nconst KeyType = {\n PATH: '$path',\n PATTERN: '$val'\n};\nconst isExpression = query => !!(query[LogicalOperator.AND] || query[LogicalOperator.OR]);\nconst isPath = query => !!query[KeyType.PATH];\nconst isLeaf = query => !isArray(query) && isObject(query) && !isExpression(query);\nconst convertToExplicit = query => ({\n [LogicalOperator.AND]: Object.keys(query).map(key => ({\n [key]: query[key]\n }))\n});\n\n// When `auto` is `true`, the parse function will infer and initialize and add\n// the appropriate `Searcher` instance\nfunction parse(query, options, {\n auto = true\n} = {}) {\n const next = query => {\n let keys = Object.keys(query);\n const isQueryPath = isPath(query);\n if (!isQueryPath && keys.length > 1 && !isExpression(query)) {\n return next(convertToExplicit(query));\n }\n if (isLeaf(query)) {\n const key = isQueryPath ? query[KeyType.PATH] : keys[0];\n const pattern = isQueryPath ? query[KeyType.PATTERN] : query[key];\n if (!isString(pattern)) {\n throw new Error(LOGICAL_SEARCH_INVALID_QUERY_FOR_KEY(key));\n }\n const obj = {\n keyId: createKeyId(key),\n pattern\n };\n if (auto) {\n obj.searcher = createSearcher(pattern, options);\n }\n return obj;\n }\n let node = {\n children: [],\n operator: keys[0]\n };\n keys.forEach(key => {\n const value = query[key];\n if (isArray(value)) {\n value.forEach(item => {\n node.children.push(next(item));\n });\n }\n });\n return node;\n };\n if (!isExpression(query)) {\n query = convertToExplicit(query);\n }\n return next(query);\n}\n\n// Practical scoring function\nfunction computeScore(results, {\n ignoreFieldNorm = Config.ignoreFieldNorm\n}) {\n results.forEach(result => {\n let totalScore = 1;\n result.matches.forEach(({\n key,\n norm,\n score\n }) => {\n const weight = key ? key.weight : null;\n totalScore *= Math.pow(score === 0 && weight ? Number.EPSILON : score, (weight || 1) * (ignoreFieldNorm ? 1 : norm));\n });\n result.score = totalScore;\n });\n}\nfunction transformMatches(result, data) {\n const matches = result.matches;\n data.matches = [];\n if (!isDefined(matches)) {\n return;\n }\n matches.forEach(match => {\n if (!isDefined(match.indices) || !match.indices.length) {\n return;\n }\n const {\n indices,\n value\n } = match;\n let obj = {\n indices,\n value\n };\n if (match.key) {\n obj.key = match.key.src;\n }\n if (match.idx > -1) {\n obj.refIndex = match.idx;\n }\n data.matches.push(obj);\n });\n}\nfunction transformScore(result, data) {\n data.score = result.score;\n}\nfunction format(results, docs, {\n includeMatches = Config.includeMatches,\n includeScore = Config.includeScore\n} = {}) {\n const transformers = [];\n if (includeMatches) transformers.push(transformMatches);\n if (includeScore) transformers.push(transformScore);\n return results.map(result => {\n const {\n idx\n } = result;\n const data = {\n item: docs[idx],\n refIndex: idx\n };\n if (transformers.length) {\n transformers.forEach(transformer => {\n transformer(result, data);\n });\n }\n return data;\n });\n}\nclass Fuse {\n constructor(docs, options = {}, index) {\n this.options = _objectSpread2(_objectSpread2({}, Config), options);\n if (this.options.useExtendedSearch && !true) {\n throw new Error(EXTENDED_SEARCH_UNAVAILABLE);\n }\n this._keyStore = new KeyStore(this.options.keys);\n this.setCollection(docs, index);\n }\n setCollection(docs, index) {\n this._docs = docs;\n if (index && !(index instanceof FuseIndex)) {\n throw new Error(INCORRECT_INDEX_TYPE);\n }\n this._myIndex = index || createIndex(this.options.keys, this._docs, {\n getFn: this.options.getFn,\n fieldNormWeight: this.options.fieldNormWeight\n });\n }\n add(doc) {\n if (!isDefined(doc)) {\n return;\n }\n this._docs.push(doc);\n this._myIndex.add(doc);\n }\n remove(predicate = ( /* doc, idx */) => false) {\n const results = [];\n for (let i = 0, len = this._docs.length; i < len; i += 1) {\n const doc = this._docs[i];\n if (predicate(doc, i)) {\n this.removeAt(i);\n i -= 1;\n len -= 1;\n results.push(doc);\n }\n }\n return results;\n }\n removeAt(idx) {\n this._docs.splice(idx, 1);\n this._myIndex.removeAt(idx);\n }\n getIndex() {\n return this._myIndex;\n }\n search(query, {\n limit = -1\n } = {}) {\n const {\n includeMatches,\n includeScore,\n shouldSort,\n sortFn,\n ignoreFieldNorm\n } = this.options;\n let results = isString(query) ? isString(this._docs[0]) ? this._searchStringList(query) : this._searchObjectList(query) : this._searchLogical(query);\n computeScore(results, {\n ignoreFieldNorm\n });\n if (shouldSort) {\n results.sort(sortFn);\n }\n if (isNumber(limit) && limit > -1) {\n results = results.slice(0, limit);\n }\n return format(results, this._docs, {\n includeMatches,\n includeScore\n });\n }\n _searchStringList(query) {\n const searcher = createSearcher(query, this.options);\n const {\n records\n } = this._myIndex;\n const results = [];\n\n // Iterate over every string in the index\n records.forEach(({\n v: text,\n i: idx,\n n: norm\n }) => {\n if (!isDefined(text)) {\n return;\n }\n const {\n isMatch,\n score,\n indices\n } = searcher.searchIn(text);\n if (isMatch) {\n results.push({\n item: text,\n idx,\n matches: [{\n score,\n value: text,\n norm,\n indices\n }]\n });\n }\n });\n return results;\n }\n _searchLogical(query) {\n const expression = parse(query, this.options);\n const evaluate = (node, item, idx) => {\n if (!node.children) {\n const {\n keyId,\n searcher\n } = node;\n const matches = this._findMatches({\n key: this._keyStore.get(keyId),\n value: this._myIndex.getValueForItemAtKeyId(item, keyId),\n searcher\n });\n if (matches && matches.length) {\n return [{\n idx,\n item,\n matches\n }];\n }\n return [];\n }\n const res = [];\n for (let i = 0, len = node.children.length; i < len; i += 1) {\n const child = node.children[i];\n const result = evaluate(child, item, idx);\n if (result.length) {\n res.push(...result);\n } else if (node.operator === LogicalOperator.AND) {\n return [];\n }\n }\n return res;\n };\n const records = this._myIndex.records;\n const resultMap = {};\n const results = [];\n records.forEach(({\n $: item,\n i: idx\n }) => {\n if (isDefined(item)) {\n let expResults = evaluate(expression, item, idx);\n if (expResults.length) {\n // Dedupe when adding\n if (!resultMap[idx]) {\n resultMap[idx] = {\n idx,\n item,\n matches: []\n };\n results.push(resultMap[idx]);\n }\n expResults.forEach(({\n matches\n }) => {\n resultMap[idx].matches.push(...matches);\n });\n }\n }\n });\n return results;\n }\n _searchObjectList(query) {\n const searcher = createSearcher(query, this.options);\n const {\n keys,\n records\n } = this._myIndex;\n const results = [];\n\n // List is Array<Object>\n records.forEach(({\n $: item,\n i: idx\n }) => {\n if (!isDefined(item)) {\n return;\n }\n let matches = [];\n\n // Iterate over every key (i.e, path), and fetch the value at that key\n keys.forEach((key, keyIndex) => {\n matches.push(...this._findMatches({\n key,\n value: item[keyIndex],\n searcher\n }));\n });\n if (matches.length) {\n results.push({\n idx,\n item,\n matches\n });\n }\n });\n return results;\n }\n _findMatches({\n key,\n value,\n searcher\n }) {\n if (!isDefined(value)) {\n return [];\n }\n let matches = [];\n if (isArray(value)) {\n value.forEach(({\n v: text,\n i: idx,\n n: norm\n }) => {\n if (!isDefined(text)) {\n return;\n }\n const {\n isMatch,\n score,\n indices\n } = searcher.searchIn(text);\n if (isMatch) {\n matches.push({\n score,\n key,\n value: text,\n idx,\n norm,\n indices\n });\n }\n });\n } else {\n const {\n v: text,\n n: norm\n } = value;\n const {\n isMatch,\n score,\n indices\n } = searcher.searchIn(text);\n if (isMatch) {\n matches.push({\n score,\n key,\n value: text,\n norm,\n indices\n });\n }\n }\n return matches;\n }\n}\nFuse.version = '7.0.0';\nFuse.createIndex = createIndex;\nFuse.parseIndex = parseIndex;\nFuse.config = Config;\n{\n Fuse.parseQuery = parse;\n}\n{\n register(ExtendedSearch);\n}\n\nvar SearchByFuse = /** @class */ (function () {\n function SearchByFuse(config) {\n this._haystack = [];\n this._fuseOptions = __assign(__assign({}, config.fuseOptions), { keys: __spreadArray([], config.searchFields, true), includeMatches: true });\n }\n SearchByFuse.prototype.index = function (data) {\n this._haystack = data;\n if (this._fuse) {\n this._fuse.setCollection(data);\n }\n };\n SearchByFuse.prototype.reset = function () {\n this._haystack = [];\n this._fuse = undefined;\n };\n SearchByFuse.prototype.isEmptyIndex = function () {\n return !this._haystack.length;\n };\n SearchByFuse.prototype.search = function (needle) {\n if (!this._fuse) {\n {\n this._fuse = new Fuse(this._haystack, this._fuseOptions);\n }\n }\n var results = this._fuse.search(needle);\n return results.map(function (value, i) {\n return {\n item: value.item,\n score: value.score || 0,\n rank: i + 1, // If value.score is used for sorting, this can create non-stable sorts!\n };\n });\n };\n return SearchByFuse;\n}());\n\nfunction getSearcher(config) {\n {\n return new SearchByFuse(config);\n }\n}\n\n/**\n * Helpers to create HTML elements used by Choices\n * Can be overridden by providing `callbackOnCreateTemplates` option.\n * `Choices.defaults.templates` allows access to the default template methods from `callbackOnCreateTemplates`\n */\nvar isEmptyObject = function (obj) {\n // eslint-disable-next-line no-restricted-syntax\n for (var prop in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, prop)) {\n return false;\n }\n }\n return true;\n};\nvar assignCustomProperties = function (el, choice, withCustomProperties) {\n var dataset = el.dataset;\n var customProperties = choice.customProperties, labelClass = choice.labelClass, labelDescription = choice.labelDescription;\n if (labelClass) {\n dataset.labelClass = getClassNames(labelClass).join(' ');\n }\n if (labelDescription) {\n dataset.labelDescription = labelDescription;\n }\n if (withCustomProperties && customProperties) {\n if (typeof customProperties === 'string') {\n dataset.customProperties = customProperties;\n }\n else if (typeof customProperties === 'object' && !isEmptyObject(customProperties)) {\n dataset.customProperties = JSON.stringify(customProperties);\n }\n }\n};\nvar addAriaLabel = function (docRoot, id, element) {\n var label = id && docRoot.querySelector(\"label[for='\".concat(id, \"']\"));\n var text = label && label.innerText;\n if (text) {\n element.setAttribute('aria-label', text);\n }\n};\nvar templates = {\n containerOuter: function (_a, dir, isSelectElement, isSelectOneElement, searchEnabled, passedElementType, labelId) {\n var containerOuter = _a.classNames.containerOuter;\n var div = document.createElement('div');\n addClassesToElement(div, containerOuter);\n div.dataset.type = passedElementType;\n if (dir) {\n div.dir = dir;\n }\n if (isSelectOneElement) {\n div.tabIndex = 0;\n }\n if (isSelectElement) {\n div.setAttribute('role', searchEnabled ? 'combobox' : 'listbox');\n if (searchEnabled) {\n div.setAttribute('aria-autocomplete', 'list');\n }\n else if (!labelId) {\n addAriaLabel(this._docRoot, this.passedElement.element.id, div);\n }\n div.setAttribute('aria-haspopup', 'true');\n div.setAttribute('aria-expanded', 'false');\n }\n if (labelId) {\n div.setAttribute('aria-labelledby', labelId);\n }\n return div;\n },\n containerInner: function (_a) {\n var containerInner = _a.classNames.containerInner;\n var div = document.createElement('div');\n addClassesToElement(div, containerInner);\n return div;\n },\n itemList: function (_a, isSelectOneElement) {\n var searchEnabled = _a.searchEnabled, _b = _a.classNames, list = _b.list, listSingle = _b.listSingle, listItems = _b.listItems;\n var div = document.createElement('div');\n addClassesToElement(div, list);\n addClassesToElement(div, isSelectOneElement ? listSingle : listItems);\n if (this._isSelectElement && searchEnabled) {\n div.setAttribute('role', 'listbox');\n }\n return div;\n },\n placeholder: function (_a, value) {\n var allowHTML = _a.allowHTML, placeholder = _a.classNames.placeholder;\n var div = document.createElement('div');\n addClassesToElement(div, placeholder);\n setElementHtml(div, allowHTML, value);\n return div;\n },\n item: function (_a, choice, removeItemButton) {\n var allowHTML = _a.allowHTML, removeItemButtonAlignLeft = _a.removeItemButtonAlignLeft, removeItemIconText = _a.removeItemIconText, removeItemLabelText = _a.removeItemLabelText, _b = _a.classNames, item = _b.item, button = _b.button, highlightedState = _b.highlightedState, itemSelectable = _b.itemSelectable, placeholder = _b.placeholder;\n var rawValue = unwrapStringForRaw(choice.value);\n var div = document.createElement('div');\n addClassesToElement(div, item);\n if (choice.labelClass) {\n var spanLabel = document.createElement('span');\n setElementHtml(spanLabel, allowHTML, choice.label);\n addClassesToElement(spanLabel, choice.labelClass);\n div.appendChild(spanLabel);\n }\n else {\n setElementHtml(div, allowHTML, choice.label);\n }\n div.dataset.item = '';\n div.dataset.id = choice.id;\n div.dataset.value = rawValue;\n assignCustomProperties(div, choice, true);\n if (choice.disabled || this.containerOuter.isDisabled) {\n div.setAttribute('aria-disabled', 'true');\n }\n if (this._isSelectElement) {\n div.setAttribute('aria-selected', 'true');\n div.setAttribute('role', 'option');\n }\n if (choice.placeholder) {\n addClassesToElement(div, placeholder);\n div.dataset.placeholder = '';\n }\n addClassesToElement(div, choice.highlighted ? highlightedState : itemSelectable);\n if (removeItemButton) {\n if (choice.disabled) {\n removeClassesFromElement(div, itemSelectable);\n }\n div.dataset.deletable = '';\n var removeButton = document.createElement('button');\n removeButton.type = 'button';\n addClassesToElement(removeButton, button);\n setElementHtml(removeButton, true, resolveNoticeFunction(removeItemIconText, choice.value));\n var REMOVE_ITEM_LABEL = resolveNoticeFunction(removeItemLabelText, choice.value);\n if (REMOVE_ITEM_LABEL) {\n removeButton.setAttribute('aria-label', REMOVE_ITEM_LABEL);\n }\n removeButton.dataset.button = '';\n if (removeItemButtonAlignLeft) {\n div.insertAdjacentElement('afterbegin', removeButton);\n }\n else {\n div.appendChild(removeButton);\n }\n }\n return div;\n },\n choiceList: function (_a, isSelectOneElement) {\n var list = _a.classNames.list;\n var div = document.createElement('div');\n addClassesToElement(div, list);\n if (!isSelectOneElement) {\n div.setAttribute('aria-multiselectable', 'true');\n }\n div.setAttribute('role', 'listbox');\n return div;\n },\n choiceGroup: function (_a, _b) {\n var allowHTML = _a.allowHTML, _c = _a.classNames, group = _c.group, groupHeading = _c.groupHeading, itemDisabled = _c.itemDisabled;\n var id = _b.id, label = _b.label, disabled = _b.disabled;\n var rawLabel = unwrapStringForRaw(label);\n var div = document.createElement('div');\n addClassesToElement(div, group);\n if (disabled) {\n addClassesToElement(div, itemDisabled);\n }\n div.setAttribute('role', 'group');\n div.dataset.group = '';\n div.dataset.id = id;\n div.dataset.value = rawLabel;\n if (disabled) {\n div.setAttribute('aria-disabled', 'true');\n }\n var heading = document.createElement('div');\n addClassesToElement(heading, groupHeading);\n setElementHtml(heading, allowHTML, label || '');\n div.appendChild(heading);\n return div;\n },\n choice: function (_a, choice, selectText, groupName) {\n var allowHTML = _a.allowHTML, _b = _a.classNames, item = _b.item, itemChoice = _b.itemChoice, itemSelectable = _b.itemSelectable, selectedState = _b.selectedState, itemDisabled = _b.itemDisabled, description = _b.description, placeholder = _b.placeholder;\n // eslint-disable-next-line prefer-destructuring\n var label = choice.label;\n var rawValue = unwrapStringForRaw(choice.value);\n var div = document.createElement('div');\n div.id = choice.elementId;\n addClassesToElement(div, item);\n addClassesToElement(div, itemChoice);\n if (groupName && typeof label === 'string') {\n label = escapeForTemplate(allowHTML, label);\n label += \" (\".concat(groupName, \")\");\n label = { trusted: label };\n }\n var describedBy = div;\n if (choice.labelClass) {\n var spanLabel = document.createElement('span');\n setElementHtml(spanLabel, allowHTML, label);\n addClassesToElement(spanLabel, choice.labelClass);\n describedBy = spanLabel;\n div.appendChild(spanLabel);\n }\n else {\n setElementHtml(div, allowHTML, label);\n }\n if (choice.labelDescription) {\n var descId = \"\".concat(choice.elementId, \"-description\");\n describedBy.setAttribute('aria-describedby', descId);\n var spanDesc = document.createElement('span');\n setElementHtml(spanDesc, allowHTML, choice.labelDescription);\n spanDesc.id = descId;\n addClassesToElement(spanDesc, description);\n div.appendChild(spanDesc);\n }\n if (choice.selected) {\n addClassesToElement(div, selectedState);\n }\n if (choice.placeholder) {\n addClassesToElement(div, placeholder);\n }\n div.setAttribute('role', choice.group ? 'treeitem' : 'option');\n div.dataset.choice = '';\n div.dataset.id = choice.id;\n div.dataset.value = rawValue;\n if (selectText) {\n div.dataset.selectText = selectText;\n }\n if (choice.group) {\n div.dataset.groupId = \"\".concat(choice.group.id);\n }\n assignCustomProperties(div, choice, false);\n if (choice.disabled) {\n addClassesToElement(div, itemDisabled);\n div.dataset.choiceDisabled = '';\n div.setAttribute('aria-disabled', 'true');\n }\n else {\n addClassesToElement(div, itemSelectable);\n div.dataset.choiceSelectable = '';\n }\n return div;\n },\n input: function (_a, placeholderValue) {\n var _b = _a.classNames, input = _b.input, inputCloned = _b.inputCloned, labelId = _a.labelId;\n var inp = document.createElement('input');\n inp.type = 'search';\n addClassesToElement(inp, input);\n addClassesToElement(inp, inputCloned);\n inp.autocomplete = 'off';\n inp.autocapitalize = 'off';\n inp.spellcheck = false;\n inp.setAttribute('role', 'textbox');\n inp.setAttribute('aria-autocomplete', 'list');\n if (placeholderValue) {\n inp.setAttribute('aria-label', placeholderValue);\n }\n else if (!labelId) {\n addAriaLabel(this._docRoot, this.passedElement.element.id, inp);\n }\n return inp;\n },\n dropdown: function (_a) {\n var _b = _a.classNames, list = _b.list, listDropdown = _b.listDropdown;\n var div = document.createElement('div');\n addClassesToElement(div, list);\n addClassesToElement(div, listDropdown);\n div.setAttribute('aria-expanded', 'false');\n return div;\n },\n notice: function (_a, innerHTML, type) {\n var _b = _a.classNames, item = _b.item, itemChoice = _b.itemChoice, addChoice = _b.addChoice, noResults = _b.noResults, noChoices = _b.noChoices, noticeItem = _b.notice;\n if (type === void 0) { type = NoticeTypes.generic; }\n var notice = document.createElement('div');\n setElementHtml(notice, true, innerHTML);\n addClassesToElement(notice, item);\n addClassesToElement(notice, itemChoice);\n addClassesToElement(notice, noticeItem);\n // eslint-disable-next-line default-case\n switch (type) {\n case NoticeTypes.addChoice:\n addClassesToElement(notice, addChoice);\n break;\n case NoticeTypes.noResults:\n addClassesToElement(notice, noResults);\n break;\n case NoticeTypes.noChoices:\n addClassesToElement(notice, noChoices);\n break;\n }\n if (type === NoticeTypes.addChoice) {\n notice.dataset.choiceSelectable = '';\n notice.dataset.choice = '';\n }\n return notice;\n },\n option: function (choice) {\n // HtmlOptionElement's label value does not support HTML, so the avoid double escaping unwrap the untrusted string.\n var labelValue = unwrapStringForRaw(choice.label);\n var opt = new Option(labelValue, choice.value, false, choice.selected);\n assignCustomProperties(opt, choice, true);\n opt.disabled = choice.disabled;\n if (choice.selected) {\n opt.setAttribute('selected', '');\n }\n return opt;\n },\n};\n\n/** @see {@link http://browserhacks.com/#hack-acea075d0ac6954f275a70023906050c} */\nvar IS_IE11 = '-ms-scroll-limit' in document.documentElement.style &&\n '-ms-ime-align' in document.documentElement.style;\nvar USER_DEFAULTS = {};\nvar parseDataSetId = function (element) {\n if (!element) {\n return undefined;\n }\n return element.dataset.id ? parseInt(element.dataset.id, 10) : undefined;\n};\nvar selectableChoiceIdentifier = '[data-choice-selectable]';\n/**\n * Choices\n * @author Josh Johnson<josh@joshuajohnson.co.uk>\n */\nvar Choices = /** @class */ (function () {\n function Choices(element, userConfig) {\n if (element === void 0) { element = '[data-choice]'; }\n if (userConfig === void 0) { userConfig = {}; }\n var _this = this;\n this.initialisedOK = undefined;\n this._hasNonChoicePlaceholder = false;\n this._lastAddedChoiceId = 0;\n this._lastAddedGroupId = 0;\n var defaults = Choices.defaults;\n this.config = __assign(__assign(__assign({}, defaults.allOptions), defaults.options), userConfig);\n ObjectsInConfig.forEach(function (key) {\n _this.config[key] = __assign(__assign(__assign({}, defaults.allOptions[key]), defaults.options[key]), userConfig[key]);\n });\n var config = this.config;\n if (!config.silent) {\n this._validateConfig();\n }\n var docRoot = config.shadowRoot || document.documentElement;\n this._docRoot = docRoot;\n var passedElement = typeof element === 'string' ? docRoot.querySelector(element) : element;\n if (!passedElement ||\n typeof passedElement !== 'object' ||\n !(isHtmlInputElement(passedElement) || isHtmlSelectElement(passedElement))) {\n if (!passedElement && typeof element === 'string') {\n throw TypeError(\"Selector \".concat(element, \" failed to find an element\"));\n }\n throw TypeError(\"Expected one of the following types text|select-one|select-multiple\");\n }\n var elementType = passedElement.type;\n var isText = elementType === PassedElementTypes.Text;\n if (isText || config.maxItemCount !== 1) {\n config.singleModeForMultiSelect = false;\n }\n if (config.singleModeForMultiSelect) {\n elementType = PassedElementTypes.SelectMultiple;\n }\n var isSelectOne = elementType === PassedElementTypes.SelectOne;\n var isSelectMultiple = elementType === PassedElementTypes.SelectMultiple;\n var isSelect = isSelectOne || isSelectMultiple;\n this._elementType = elementType;\n this._isTextElement = isText;\n this._isSelectOneElement = isSelectOne;\n this._isSelectMultipleElement = isSelectMultiple;\n this._isSelectElement = isSelectOne || isSelectMultiple;\n this._canAddUserChoices = (isText && config.addItems) || (isSelect && config.addChoices);\n if (typeof config.renderSelectedChoices !== 'boolean') {\n config.renderSelectedChoices = config.renderSelectedChoices === 'always' || isSelectOne;\n }\n if (config.closeDropdownOnSelect === 'auto') {\n config.closeDropdownOnSelect = isText || isSelectOne || config.singleModeForMultiSelect;\n }\n else {\n config.closeDropdownOnSelect = coerceBool(config.closeDropdownOnSelect);\n }\n if (config.placeholder) {\n if (config.placeholderValue) {\n this._hasNonChoicePlaceholder = true;\n }\n else if (passedElement.dataset.placeholder) {\n this._hasNonChoicePlaceholder = true;\n config.placeholderValue = passedElement.dataset.placeholder;\n }\n }\n if (userConfig.addItemFilter && typeof userConfig.addItemFilter !== 'function') {\n var re = userConfig.addItemFilter instanceof RegExp ? userConfig.addItemFilter : new RegExp(userConfig.addItemFilter);\n config.addItemFilter = re.test.bind(re);\n }\n if (this._isTextElement) {\n this.passedElement = new WrappedInput({\n element: passedElement,\n classNames: config.classNames,\n });\n }\n else {\n var selectEl = passedElement;\n this.passedElement = new WrappedSelect({\n element: selectEl,\n classNames: config.classNames,\n template: function (data) { return _this._templates.option(data); },\n extractPlaceholder: config.placeholder && !this._hasNonChoicePlaceholder,\n });\n }\n this.initialised = false;\n this._store = new Store(config);\n this._currentValue = '';\n config.searchEnabled = (!isText && config.searchEnabled) || isSelectMultiple;\n this._canSearch = config.searchEnabled;\n this._isScrollingOnIe = false;\n this._highlightPosition = 0;\n this._wasTap = true;\n this._placeholderValue = this._generatePlaceholderValue();\n this._baseId = generateId(passedElement, 'choices-');\n /**\n * setting direction in cases where it's explicitly set on passedElement\n * or when calculated direction is different from the document\n */\n this._direction = passedElement.dir;\n if (!this._direction) {\n var elementDirection = window.getComputedStyle(passedElement).direction;\n var documentDirection = window.getComputedStyle(document.documentElement).direction;\n if (elementDirection !== documentDirection) {\n this._direction = elementDirection;\n }\n }\n this._idNames = {\n itemChoice: 'item-choice',\n };\n this._templates = defaults.templates;\n this._render = this._render.bind(this);\n this._onFocus = this._onFocus.bind(this);\n this._onBlur = this._onBlur.bind(this);\n this._onKeyUp = this._onKeyUp.bind(this);\n this._onKeyDown = this._onKeyDown.bind(this);\n this._onInput = this._onInput.bind(this);\n this._onClick = this._onClick.bind(this);\n this._onTouchMove = this._onTouchMove.bind(this);\n this._onTouchEnd = this._onTouchEnd.bind(this);\n this._onMouseDown = this._onMouseDown.bind(this);\n this._onMouseOver = this._onMouseOver.bind(this);\n this._onFormReset = this._onFormReset.bind(this);\n this._onSelectKey = this._onSelectKey.bind(this);\n this._onEnterKey = this._onEnterKey.bind(this);\n this._onEscapeKey = this._onEscapeKey.bind(this);\n this._onDirectionKey = this._onDirectionKey.bind(this);\n this._onDeleteKey = this._onDeleteKey.bind(this);\n // If element has already been initialised with Choices, fail silently\n if (this.passedElement.isActive) {\n if (!config.silent) {\n console.warn('Trying to initialise Choices on element already initialised', { element: element });\n }\n this.initialised = true;\n this.initialisedOK = false;\n return;\n }\n // Let's go\n this.init();\n // preserve the selected item list after setup for form reset\n this._initialItems = this._store.items.map(function (choice) { return choice.value; });\n }\n Object.defineProperty(Choices, \"defaults\", {\n get: function () {\n return Object.preventExtensions({\n get options() {\n return USER_DEFAULTS;\n },\n get allOptions() {\n return DEFAULT_CONFIG;\n },\n get templates() {\n return templates;\n },\n });\n },\n enumerable: false,\n configurable: true\n });\n Choices.prototype.init = function () {\n if (this.initialised || this.initialisedOK !== undefined) {\n return;\n }\n this._searcher = getSearcher(this.config);\n this._loadChoices();\n this._createTemplates();\n this._createElements();\n this._createStructure();\n if ((this._isTextElement && !this.config.addItems) ||\n this.passedElement.element.hasAttribute('disabled') ||\n !!this.passedElement.element.closest('fieldset:disabled')) {\n this.disable();\n }\n else {\n this.enable();\n this._addEventListeners();\n }\n // should be triggered **after** disabled state to avoid additional re-draws\n this._initStore();\n this.initialised = true;\n this.initialisedOK = true;\n var callbackOnInit = this.config.callbackOnInit;\n // Run callback if it is a function\n if (typeof callbackOnInit === 'function') {\n callbackOnInit.call(this);\n }\n };\n Choices.prototype.destroy = function () {\n if (!this.initialised) {\n return;\n }\n this._removeEventListeners();\n this.passedElement.reveal();\n this.containerOuter.unwrap(this.passedElement.element);\n this._store._listeners = []; // prevents select/input value being wiped\n this.clearStore(false);\n this._stopSearch();\n this._templates = Choices.defaults.templates;\n this.initialised = false;\n this.initialisedOK = undefined;\n };\n Choices.prototype.enable = function () {\n if (this.passedElement.isDisabled) {\n this.passedElement.enable();\n }\n if (this.containerOuter.isDisabled) {\n this._addEventListeners();\n this.input.enable();\n this.containerOuter.enable();\n }\n return this;\n };\n Choices.prototype.disable = function () {\n if (!this.passedElement.isDisabled) {\n this.passedElement.disable();\n }\n if (!this.containerOuter.isDisabled) {\n this._removeEventListeners();\n this.input.disable();\n this.containerOuter.disable();\n }\n return this;\n };\n Choices.prototype.highlightItem = function (item, runEvent) {\n if (runEvent === void 0) { runEvent = true; }\n if (!item || !item.id) {\n return this;\n }\n var choice = this._store.items.find(function (c) { return c.id === item.id; });\n if (!choice || choice.highlighted) {\n return this;\n }\n this._store.dispatch(highlightItem(choice, true));\n if (runEvent) {\n this.passedElement.triggerEvent(EventType.highlightItem, this._getChoiceForOutput(choice));\n }\n return this;\n };\n Choices.prototype.unhighlightItem = function (item, runEvent) {\n if (runEvent === void 0) { runEvent = true; }\n if (!item || !item.id) {\n return this;\n }\n var choice = this._store.items.find(function (c) { return c.id === item.id; });\n if (!choice || !choice.highlighted) {\n return this;\n }\n this._store.dispatch(highlightItem(choice, false));\n if (runEvent) {\n this.passedElement.triggerEvent(EventType.unhighlightItem, this._getChoiceForOutput(choice));\n }\n return this;\n };\n Choices.prototype.highlightAll = function () {\n var _this = this;\n this._store.withTxn(function () {\n _this._store.items.forEach(function (item) {\n if (!item.highlighted) {\n _this._store.dispatch(highlightItem(item, true));\n _this.passedElement.triggerEvent(EventType.highlightItem, _this._getChoiceForOutput(item));\n }\n });\n });\n return this;\n };\n Choices.prototype.unhighlightAll = function () {\n var _this = this;\n this._store.withTxn(function () {\n _this._store.items.forEach(function (item) {\n if (item.highlighted) {\n _this._store.dispatch(highlightItem(item, false));\n _this.passedElement.triggerEvent(EventType.highlightItem, _this._getChoiceForOutput(item));\n }\n });\n });\n return this;\n };\n Choices.prototype.removeActiveItemsByValue = function (value) {\n var _this = this;\n this._store.withTxn(function () {\n _this._store.items.filter(function (item) { return item.value === value; }).forEach(function (item) { return _this._removeItem(item); });\n });\n return this;\n };\n Choices.prototype.removeActiveItems = function (excludedId) {\n var _this = this;\n this._store.withTxn(function () {\n _this._store.items.filter(function (_a) {\n var id = _a.id;\n return id !== excludedId;\n }).forEach(function (item) { return _this._removeItem(item); });\n });\n return this;\n };\n Choices.prototype.removeHighlightedItems = function (runEvent) {\n var _this = this;\n if (runEvent === void 0) { runEvent = false; }\n this._store.withTxn(function () {\n _this._store.highlightedActiveItems.forEach(function (item) {\n _this._removeItem(item);\n // If this action was performed by the user\n // trigger the event\n if (runEvent) {\n _this._triggerChange(item.value);\n }\n });\n });\n return this;\n };\n Choices.prototype.showDropdown = function (preventInputFocus) {\n var _this = this;\n if (this.dropdown.isActive) {\n return this;\n }\n if (preventInputFocus === undefined) {\n // eslint-disable-next-line no-param-reassign\n preventInputFocus = !this._canSearch;\n }\n requestAnimationFrame(function () {\n _this.dropdown.show();\n var rect = _this.dropdown.element.getBoundingClientRect();\n _this.containerOuter.open(rect.bottom, rect.height);\n if (!preventInputFocus) {\n _this.input.focus();\n }\n _this.passedElement.triggerEvent(EventType.showDropdown);\n });\n return this;\n };\n Choices.prototype.hideDropdown = function (preventInputBlur) {\n var _this = this;\n if (!this.dropdown.isActive) {\n return this;\n }\n requestAnimationFrame(function () {\n _this.dropdown.hide();\n _this.containerOuter.close();\n if (!preventInputBlur && _this._canSearch) {\n _this.input.removeActiveDescendant();\n _this.input.blur();\n }\n _this.passedElement.triggerEvent(EventType.hideDropdown);\n });\n return this;\n };\n Choices.prototype.getValue = function (valueOnly) {\n var _this = this;\n var values = this._store.items.map(function (item) {\n return (valueOnly ? item.value : _this._getChoiceForOutput(item));\n });\n return this._isSelectOneElement || this.config.singleModeForMultiSelect ? values[0] : values;\n };\n Choices.prototype.setValue = function (items) {\n var _this = this;\n if (!this.initialisedOK) {\n this._warnChoicesInitFailed('setValue');\n return this;\n }\n this._store.withTxn(function () {\n items.forEach(function (value) {\n if (value) {\n _this._addChoice(mapInputToChoice(value, false));\n }\n });\n });\n // @todo integrate with Store\n this._searcher.reset();\n return this;\n };\n Choices.prototype.setChoiceByValue = function (value) {\n var _this = this;\n if (!this.initialisedOK) {\n this._warnChoicesInitFailed('setChoiceByValue');\n return this;\n }\n if (this._isTextElement) {\n return this;\n }\n this._store.withTxn(function () {\n // If only one value has been passed, convert to array\n var choiceValue = Array.isArray(value) ? value : [value];\n // Loop through each value and\n choiceValue.forEach(function (val) { return _this._findAndSelectChoiceByValue(val); });\n _this.unhighlightAll();\n });\n // @todo integrate with Store\n this._searcher.reset();\n return this;\n };\n /**\n * Set choices of select input via an array of objects (or function that returns array of object or promise of it),\n * a value field name and a label field name.\n * This behaves the same as passing items via the choices option but can be called after initialising Choices.\n * This can also be used to add groups of choices (see example 2); Optionally pass a true `replaceChoices` value to remove any existing choices.\n * Optionally pass a `customProperties` object to add additional data to your choices (useful when searching/filtering etc).\n *\n * **Input types affected:** select-one, select-multiple\n *\n * @example\n * ```js\n * const example = new Choices(element);\n *\n * example.setChoices([\n * {value: 'One', label: 'Label One', disabled: true},\n * {value: 'Two', label: 'Label Two', selected: true},\n * {value: 'Three', label: 'Label Three'},\n * ], 'value', 'label', false);\n * ```\n *\n * @example\n * ```js\n * const example = new Choices(element);\n *\n * example.setChoices(async () => {\n * try {\n * const items = await fetch('/items');\n * return items.json()\n * } catch(err) {\n * console.error(err)\n * }\n * });\n * ```\n *\n * @example\n * ```js\n * const example = new Choices(element);\n *\n * example.setChoices([{\n * label: 'Group one',\n * id: 1,\n * disabled: false,\n * choices: [\n * {value: 'Child One', label: 'Child One', selected: true},\n * {value: 'Child Two', label: 'Child Two', disabled: true},\n * {value: 'Child Three', label: 'Child Three'},\n * ]\n * },\n * {\n * label: 'Group two',\n * id: 2,\n * disabled: false,\n * choices: [\n * {value: 'Child Four', label: 'Child Four', disabled: true},\n * {value: 'Child Five', label: 'Child Five'},\n * {value: 'Child Six', label: 'Child Six', customProperties: {\n * description: 'Custom description about child six',\n * random: 'Another random custom property'\n * }},\n * ]\n * }], 'value', 'label', false);\n * ```\n */\n Choices.prototype.setChoices = function (choicesArrayOrFetcher, value, label, replaceChoices, clearSearchFlag) {\n var _this = this;\n if (choicesArrayOrFetcher === void 0) { choicesArrayOrFetcher = []; }\n if (value === void 0) { value = 'value'; }\n if (label === void 0) { label = 'label'; }\n if (replaceChoices === void 0) { replaceChoices = false; }\n if (clearSearchFlag === void 0) { clearSearchFlag = true; }\n if (!this.initialisedOK) {\n this._warnChoicesInitFailed('setChoices');\n return this;\n }\n if (!this._isSelectElement) {\n throw new TypeError(\"setChoices can't be used with INPUT based Choices\");\n }\n if (typeof value !== 'string' || !value) {\n throw new TypeError(\"value parameter must be a name of 'value' field in passed objects\");\n }\n // Clear choices if needed\n if (replaceChoices) {\n this.clearChoices();\n }\n if (typeof choicesArrayOrFetcher === 'function') {\n // it's a choices fetcher function\n var fetcher_1 = choicesArrayOrFetcher(this);\n if (typeof Promise === 'function' && fetcher_1 instanceof Promise) {\n // that's a promise\n // eslint-disable-next-line no-promise-executor-return\n return new Promise(function (resolve) { return requestAnimationFrame(resolve); })\n .then(function () { return _this._handleLoadingState(true); })\n .then(function () { return fetcher_1; })\n .then(function (data) { return _this.setChoices(data, value, label, replaceChoices); })\n .catch(function (err) {\n if (!_this.config.silent) {\n console.error(err);\n }\n })\n .then(function () { return _this._handleLoadingState(false); })\n .then(function () { return _this; });\n }\n // function returned something else than promise, let's check if it's an array of choices\n if (!Array.isArray(fetcher_1)) {\n throw new TypeError(\".setChoices first argument function must return either array of choices or Promise, got: \".concat(typeof fetcher_1));\n }\n // recursion with results, it's sync and choices were cleared already\n return this.setChoices(fetcher_1, value, label, false);\n }\n if (!Array.isArray(choicesArrayOrFetcher)) {\n throw new TypeError(\".setChoices must be called either with array of choices with a function resulting into Promise of array of choices\");\n }\n this.containerOuter.removeLoadingState();\n this._store.withTxn(function () {\n if (clearSearchFlag) {\n _this._isSearching = false;\n }\n var isDefaultValue = value === 'value';\n var isDefaultLabel = label === 'label';\n choicesArrayOrFetcher.forEach(function (groupOrChoice) {\n if ('choices' in groupOrChoice) {\n var group = groupOrChoice;\n if (!isDefaultLabel) {\n group = __assign(__assign({}, group), { label: group[label] });\n }\n _this._addGroup(mapInputToChoice(group, true));\n }\n else {\n var choice = groupOrChoice;\n if (!isDefaultLabel || !isDefaultValue) {\n choice = __assign(__assign({}, choice), { value: choice[value], label: choice[label] });\n }\n _this._addChoice(mapInputToChoice(choice, false));\n }\n });\n _this.unhighlightAll();\n });\n // @todo integrate with Store\n this._searcher.reset();\n return this;\n };\n Choices.prototype.refresh = function (withEvents, selectFirstOption, deselectAll) {\n var _this = this;\n if (withEvents === void 0) { withEvents = false; }\n if (selectFirstOption === void 0) { selectFirstOption = false; }\n if (deselectAll === void 0) { deselectAll = false; }\n if (!this._isSelectElement) {\n if (!this.config.silent) {\n console.warn('refresh method can only be used on choices backed by a <select> element');\n }\n return this;\n }\n this._store.withTxn(function () {\n var choicesFromOptions = _this.passedElement.optionsAsChoices();\n // Build the list of items which require preserving\n var existingItems = {};\n if (!deselectAll) {\n _this._store.items.forEach(function (choice) {\n if (choice.id && choice.active && choice.selected && !choice.disabled) {\n existingItems[choice.value] = true;\n }\n });\n }\n _this.clearStore(false);\n var updateChoice = function (choice) {\n if (deselectAll) {\n _this._store.dispatch(removeItem$1(choice));\n }\n else if (existingItems[choice.value]) {\n choice.selected = true;\n }\n };\n choicesFromOptions.forEach(function (groupOrChoice) {\n if ('choices' in groupOrChoice) {\n groupOrChoice.choices.forEach(updateChoice);\n return;\n }\n updateChoice(groupOrChoice);\n });\n /* @todo only generate add events for the added options instead of all\n if (withEvents) {\n items.forEach((choice) => {\n if (existingItems[choice.value]) {\n this.passedElement.triggerEvent(\n EventType.removeItem,\n this._getChoiceForEvent(choice),\n );\n }\n });\n }\n */\n // load new choices & items\n _this._addPredefinedChoices(choicesFromOptions, selectFirstOption, withEvents);\n // re-do search if required\n if (_this._isSearching) {\n _this._searchChoices(_this.input.value);\n }\n });\n return this;\n };\n Choices.prototype.removeChoice = function (value) {\n var choice = this._store.choices.find(function (c) { return c.value === value; });\n if (!choice) {\n return this;\n }\n this._clearNotice();\n this._store.dispatch(removeChoice(choice));\n // @todo integrate with Store\n this._searcher.reset();\n if (choice.selected) {\n this.passedElement.triggerEvent(EventType.removeItem, this._getChoiceForOutput(choice));\n }\n return this;\n };\n Choices.prototype.clearChoices = function () {\n var _this = this;\n this._store.withTxn(function () {\n _this._store.choices.forEach(function (choice) {\n if (!choice.selected) {\n _this._store.dispatch(removeChoice(choice));\n }\n });\n });\n // @todo integrate with Store\n this._searcher.reset();\n return this;\n };\n Choices.prototype.clearStore = function (clearOptions) {\n if (clearOptions === void 0) { clearOptions = true; }\n this._stopSearch();\n if (clearOptions) {\n this.passedElement.element.replaceChildren('');\n }\n this.itemList.element.replaceChildren('');\n this.choiceList.element.replaceChildren('');\n this._clearNotice();\n this._store.reset();\n this._lastAddedChoiceId = 0;\n this._lastAddedGroupId = 0;\n // @todo integrate with Store\n this._searcher.reset();\n return this;\n };\n Choices.prototype.clearInput = function () {\n var shouldSetInputWidth = !this._isSelectOneElement;\n this.input.clear(shouldSetInputWidth);\n this._stopSearch();\n return this;\n };\n Choices.prototype._validateConfig = function () {\n var config = this.config;\n var invalidConfigOptions = diff(config, DEFAULT_CONFIG);\n if (invalidConfigOptions.length) {\n console.warn('Unknown config option(s) passed', invalidConfigOptions.join(', '));\n }\n if (config.allowHTML && config.allowHtmlUserInput) {\n if (config.addItems) {\n console.warn('Warning: allowHTML/allowHtmlUserInput/addItems all being true is strongly not recommended and may lead to XSS attacks');\n }\n if (config.addChoices) {\n console.warn('Warning: allowHTML/allowHtmlUserInput/addChoices all being true is strongly not recommended and may lead to XSS attacks');\n }\n }\n };\n Choices.prototype._render = function (changes) {\n if (changes === void 0) { changes = { choices: true, groups: true, items: true }; }\n if (this._store.inTxn()) {\n return;\n }\n if (this._isSelectElement) {\n if (changes.choices || changes.groups) {\n this._renderChoices();\n }\n }\n if (changes.items) {\n this._renderItems();\n }\n };\n Choices.prototype._renderChoices = function () {\n var _this = this;\n if (!this._canAddItems()) {\n return; // block rendering choices if the input limit is reached.\n }\n var _a = this, config = _a.config, isSearching = _a._isSearching;\n var _b = this._store, activeGroups = _b.activeGroups, activeChoices = _b.activeChoices;\n var renderLimit = 0;\n if (isSearching && config.searchResultLimit > 0) {\n renderLimit = config.searchResultLimit;\n }\n else if (config.renderChoiceLimit > 0) {\n renderLimit = config.renderChoiceLimit;\n }\n if (this._isSelectElement) {\n var backingOptions = activeChoices.filter(function (choice) { return !choice.element; });\n if (backingOptions.length) {\n this.passedElement.addOptions(backingOptions);\n }\n }\n var fragment = document.createDocumentFragment();\n var renderableChoices = function (choices) {\n return choices.filter(function (choice) {\n return !choice.placeholder && (isSearching ? !!choice.rank : config.renderSelectedChoices || !choice.selected);\n });\n };\n var selectableChoices = false;\n var renderChoices = function (choices, withinGroup, groupLabel) {\n if (isSearching) {\n // sortByRank is used to ensure stable sorting, as scores are non-unique\n // this additionally ensures fuseOptions.sortFn is not ignored\n choices.sort(sortByRank);\n }\n else if (config.shouldSort) {\n choices.sort(config.sorter);\n }\n var choiceLimit = choices.length;\n choiceLimit = !withinGroup && renderLimit && choiceLimit > renderLimit ? renderLimit : choiceLimit;\n choiceLimit--;\n choices.every(function (choice, index) {\n // choiceEl being empty signals the contents has probably significantly changed\n var dropdownItem = choice.choiceEl || _this._templates.choice(config, choice, config.itemSelectText, groupLabel);\n choice.choiceEl = dropdownItem;\n fragment.appendChild(dropdownItem);\n if (!choice.disabled && (isSearching || !choice.selected)) {\n selectableChoices = true;\n }\n return index < choiceLimit;\n });\n };\n if (activeChoices.length) {\n if (config.resetScrollPosition) {\n requestAnimationFrame(function () { return _this.choiceList.scrollToTop(); });\n }\n if (!this._hasNonChoicePlaceholder && !isSearching && this._isSelectOneElement) {\n // If we have a placeholder choice along with groups\n renderChoices(activeChoices.filter(function (choice) { return choice.placeholder && !choice.group; }), false, undefined);\n }\n // If we have grouped options\n if (activeGroups.length && !isSearching) {\n if (config.shouldSort) {\n activeGroups.sort(config.sorter);\n }\n // render Choices without group first, regardless of sort, otherwise they won't be distinguishable\n // from the last group\n renderChoices(activeChoices.filter(function (choice) { return !choice.placeholder && !choice.group; }), false, undefined);\n activeGroups.forEach(function (group) {\n var groupChoices = renderableChoices(group.choices);\n if (groupChoices.length) {\n if (group.label) {\n var dropdownGroup = group.groupEl || _this._templates.choiceGroup(_this.config, group);\n group.groupEl = dropdownGroup;\n dropdownGroup.remove();\n fragment.appendChild(dropdownGroup);\n }\n renderChoices(groupChoices, true, config.appendGroupInSearch && isSearching ? group.label : undefined);\n }\n });\n }\n else {\n renderChoices(renderableChoices(activeChoices), false, undefined);\n }\n }\n if (!selectableChoices) {\n if (!this._notice) {\n this._notice = {\n text: resolveStringFunction(isSearching ? config.noResultsText : config.noChoicesText),\n type: isSearching ? NoticeTypes.noResults : NoticeTypes.noChoices,\n };\n }\n fragment.replaceChildren('');\n }\n this._renderNotice(fragment);\n this.choiceList.element.replaceChildren(fragment);\n if (selectableChoices) {\n this._highlightChoice();\n }\n };\n Choices.prototype._renderItems = function () {\n var _this = this;\n var items = this._store.items || [];\n var itemList = this.itemList.element;\n var config = this.config;\n var fragment = document.createDocumentFragment();\n var itemFromList = function (item) {\n return itemList.querySelector(\"[data-item][data-id=\\\"\".concat(item.id, \"\\\"]\"));\n };\n var addItemToFragment = function (item) {\n var el = item.itemEl;\n if (el && el.parentElement) {\n return;\n }\n el = itemFromList(item) || _this._templates.item(config, item, config.removeItemButton);\n item.itemEl = el;\n fragment.appendChild(el);\n };\n // new items\n items.forEach(addItemToFragment);\n var addItems = !!fragment.childNodes.length;\n if (this._isSelectOneElement && this._hasNonChoicePlaceholder) {\n var existingItems = itemList.children.length;\n if (addItems || existingItems > 1) {\n var placeholder = itemList.querySelector(getClassNamesSelector(config.classNames.placeholder));\n if (placeholder) {\n placeholder.remove();\n }\n }\n else if (!existingItems) {\n addItems = true;\n addItemToFragment(mapInputToChoice({\n selected: true,\n value: '',\n label: config.placeholderValue || '',\n placeholder: true,\n }, false));\n }\n }\n if (addItems) {\n itemList.append(fragment);\n if (config.shouldSortItems && !this._isSelectOneElement) {\n items.sort(config.sorter);\n // push sorting into the DOM\n items.forEach(function (item) {\n var el = itemFromList(item);\n if (el) {\n el.remove();\n fragment.append(el);\n }\n });\n itemList.append(fragment);\n }\n }\n if (this._isTextElement) {\n // Update the value of the hidden input\n this.passedElement.value = items.map(function (_a) {\n var value = _a.value;\n return value;\n }).join(config.delimiter);\n }\n };\n Choices.prototype._displayNotice = function (text, type, openDropdown) {\n if (openDropdown === void 0) { openDropdown = true; }\n var oldNotice = this._notice;\n if (oldNotice &&\n ((oldNotice.type === type && oldNotice.text === text) ||\n (oldNotice.type === NoticeTypes.addChoice &&\n (type === NoticeTypes.noResults || type === NoticeTypes.noChoices)))) {\n if (openDropdown) {\n this.showDropdown(true);\n }\n return;\n }\n this._clearNotice();\n this._notice = text\n ? {\n text: text,\n type: type,\n }\n : undefined;\n this._renderNotice();\n if (openDropdown && text) {\n this.showDropdown(true);\n }\n };\n Choices.prototype._clearNotice = function () {\n if (!this._notice) {\n return;\n }\n var noticeElement = this.choiceList.element.querySelector(getClassNamesSelector(this.config.classNames.notice));\n if (noticeElement) {\n noticeElement.remove();\n }\n this._notice = undefined;\n };\n Choices.prototype._renderNotice = function (fragment) {\n var noticeConf = this._notice;\n if (noticeConf) {\n var notice = this._templates.notice(this.config, noticeConf.text, noticeConf.type);\n if (fragment) {\n fragment.append(notice);\n }\n else {\n this.choiceList.prepend(notice);\n }\n }\n };\n // eslint-disable-next-line class-methods-use-this\n Choices.prototype._getChoiceForOutput = function (choice, keyCode) {\n return {\n id: choice.id,\n highlighted: choice.highlighted,\n labelClass: choice.labelClass,\n labelDescription: choice.labelDescription,\n customProperties: choice.customProperties,\n disabled: choice.disabled,\n active: choice.active,\n label: choice.label,\n placeholder: choice.placeholder,\n value: choice.value,\n groupValue: choice.group ? choice.group.label : undefined,\n element: choice.element,\n keyCode: keyCode,\n };\n };\n Choices.prototype._triggerChange = function (value) {\n if (value === undefined || value === null) {\n return;\n }\n this.passedElement.triggerEvent(EventType.change, {\n value: value,\n });\n };\n Choices.prototype._handleButtonAction = function (element) {\n var _this = this;\n var items = this._store.items;\n if (!items.length || !this.config.removeItems || !this.config.removeItemButton) {\n return;\n }\n var id = element && parseDataSetId(element.parentElement);\n var itemToRemove = id && items.find(function (item) { return item.id === id; });\n if (!itemToRemove) {\n return;\n }\n this._store.withTxn(function () {\n // Remove item associated with button\n _this._removeItem(itemToRemove);\n _this._triggerChange(itemToRemove.value);\n if (_this._isSelectOneElement && !_this._hasNonChoicePlaceholder) {\n var placeholderChoice = _this._store.choices\n .reverse()\n .find(function (choice) { return !choice.disabled && choice.placeholder; });\n if (placeholderChoice) {\n _this._addItem(placeholderChoice);\n _this.unhighlightAll();\n if (placeholderChoice.value) {\n _this._triggerChange(placeholderChoice.value);\n }\n }\n }\n });\n };\n Choices.prototype._handleItemAction = function (element, hasShiftKey) {\n var _this = this;\n if (hasShiftKey === void 0) { hasShiftKey = false; }\n var items = this._store.items;\n if (!items.length || !this.config.removeItems || this._isSelectOneElement) {\n return;\n }\n var id = parseDataSetId(element);\n if (!id) {\n return;\n }\n // We only want to select one item with a click\n // so we deselect any items that aren't the target\n // unless shift is being pressed\n items.forEach(function (item) {\n if (item.id === id && !item.highlighted) {\n _this.highlightItem(item);\n }\n else if (!hasShiftKey && item.highlighted) {\n _this.unhighlightItem(item);\n }\n });\n // Focus input as without focus, a user cannot do anything with a\n // highlighted item\n this.input.focus();\n };\n Choices.prototype._handleChoiceAction = function (element) {\n var _this = this;\n // If we are clicking on an option\n var id = parseDataSetId(element);\n var choice = id && this._store.getChoiceById(id);\n if (!choice || choice.disabled) {\n return false;\n }\n var hasActiveDropdown = this.dropdown.isActive;\n if (!choice.selected) {\n if (!this._canAddItems()) {\n return true; // causes _onEnterKey to early out\n }\n this._store.withTxn(function () {\n _this._addItem(choice, true, true);\n _this.clearInput();\n _this.unhighlightAll();\n });\n this._triggerChange(choice.value);\n }\n // We want to close the dropdown if we are dealing with a single select box\n if (hasActiveDropdown && this.config.closeDropdownOnSelect) {\n this.hideDropdown(true);\n this.containerOuter.element.focus();\n }\n return true;\n };\n Choices.prototype._handleBackspace = function (items) {\n var config = this.config;\n if (!config.removeItems || !items.length) {\n return;\n }\n var lastItem = items[items.length - 1];\n var hasHighlightedItems = items.some(function (item) { return item.highlighted; });\n // If editing the last item is allowed and there are not other selected items,\n // we can edit the item value. Otherwise if we can remove items, remove all selected items\n if (config.editItems && !hasHighlightedItems && lastItem) {\n this.input.value = lastItem.value;\n this.input.setWidth();\n this._removeItem(lastItem);\n this._triggerChange(lastItem.value);\n }\n else {\n if (!hasHighlightedItems) {\n // Highlight last item if none already highlighted\n this.highlightItem(lastItem, false);\n }\n this.removeHighlightedItems(true);\n }\n };\n Choices.prototype._loadChoices = function () {\n var _a;\n var _this = this;\n var config = this.config;\n if (this._isTextElement) {\n // Assign preset items from passed object first\n this._presetChoices = config.items.map(function (e) { return mapInputToChoice(e, false); });\n // Add any values passed from attribute\n if (this.passedElement.value) {\n var elementItems = this.passedElement.value\n .split(config.delimiter)\n .map(function (e) { return mapInputToChoice(e, false, _this.config.allowHtmlUserInput); });\n this._presetChoices = this._presetChoices.concat(elementItems);\n }\n this._presetChoices.forEach(function (choice) {\n choice.selected = true;\n });\n }\n else if (this._isSelectElement) {\n // Assign preset choices from passed object\n this._presetChoices = config.choices.map(function (e) { return mapInputToChoice(e, true); });\n // Create array of choices from option elements\n var choicesFromOptions = this.passedElement.optionsAsChoices();\n if (choicesFromOptions) {\n (_a = this._presetChoices).push.apply(_a, choicesFromOptions);\n }\n }\n };\n Choices.prototype._handleLoadingState = function (setLoading) {\n if (setLoading === void 0) { setLoading = true; }\n var el = this.itemList.element;\n if (setLoading) {\n this.disable();\n this.containerOuter.addLoadingState();\n if (this._isSelectOneElement) {\n el.replaceChildren(this._templates.placeholder(this.config, this.config.loadingText));\n }\n else {\n this.input.placeholder = this.config.loadingText;\n }\n }\n else {\n this.enable();\n this.containerOuter.removeLoadingState();\n if (this._isSelectOneElement) {\n el.replaceChildren('');\n this._render();\n }\n else {\n this.input.placeholder = this._placeholderValue || '';\n }\n }\n };\n Choices.prototype._handleSearch = function (value) {\n if (!this.input.isFocussed) {\n return;\n }\n // Check that we have a value to search and the input was an alphanumeric character\n if (value !== null && typeof value !== 'undefined' && value.length >= this.config.searchFloor) {\n var resultCount = this.config.searchChoices ? this._searchChoices(value) : 0;\n if (resultCount !== null) {\n // Trigger search event\n this.passedElement.triggerEvent(EventType.search, {\n value: value,\n resultCount: resultCount,\n });\n }\n }\n else if (this._store.choices.some(function (option) { return !option.active; })) {\n this._stopSearch();\n }\n };\n Choices.prototype._canAddItems = function () {\n var config = this.config;\n var maxItemCount = config.maxItemCount, maxItemText = config.maxItemText;\n if (!config.singleModeForMultiSelect && maxItemCount > 0 && maxItemCount <= this._store.items.length) {\n this.choiceList.element.replaceChildren('');\n this._notice = undefined;\n this._displayNotice(typeof maxItemText === 'function' ? maxItemText(maxItemCount) : maxItemText, NoticeTypes.addChoice);\n return false;\n }\n return true;\n };\n Choices.prototype._canCreateItem = function (value) {\n var config = this.config;\n var canAddItem = true;\n var notice = '';\n if (canAddItem && typeof config.addItemFilter === 'function' && !config.addItemFilter(value)) {\n canAddItem = false;\n notice = resolveNoticeFunction(config.customAddItemText, value);\n }\n if (canAddItem) {\n var foundChoice = this._store.choices.find(function (choice) { return config.valueComparer(choice.value, value); });\n if (this._isSelectElement) {\n // for exact matches, do not prompt to add it as a custom choice\n if (foundChoice) {\n this._displayNotice('', NoticeTypes.addChoice);\n return false;\n }\n }\n else if (this._isTextElement && !config.duplicateItemsAllowed) {\n if (foundChoice) {\n canAddItem = false;\n notice = resolveNoticeFunction(config.uniqueItemText, value);\n }\n }\n }\n if (canAddItem) {\n notice = resolveNoticeFunction(config.addItemText, value);\n }\n if (notice) {\n this._displayNotice(notice, NoticeTypes.addChoice);\n }\n return canAddItem;\n };\n Choices.prototype._searchChoices = function (value) {\n var newValue = value.trim().replace(/\\s{2,}/, ' ');\n // signal input didn't change search\n if (!newValue.length || newValue === this._currentValue) {\n return null;\n }\n var searcher = this._searcher;\n if (searcher.isEmptyIndex()) {\n searcher.index(this._store.searchableChoices);\n }\n // If new value matches the desired length and is not the same as the current value with a space\n var results = searcher.search(newValue);\n this._currentValue = newValue;\n this._highlightPosition = 0;\n this._isSearching = true;\n var notice = this._notice;\n var noticeType = notice && notice.type;\n if (noticeType !== NoticeTypes.addChoice) {\n if (!results.length) {\n this._displayNotice(resolveStringFunction(this.config.noResultsText), NoticeTypes.noResults);\n }\n else {\n this._clearNotice();\n }\n }\n this._store.dispatch(filterChoices(results));\n return results.length;\n };\n Choices.prototype._stopSearch = function () {\n if (this._isSearching) {\n this._currentValue = '';\n this._isSearching = false;\n this._clearNotice();\n this._store.dispatch(activateChoices(true));\n this.passedElement.triggerEvent(EventType.search, {\n value: '',\n resultCount: 0,\n });\n }\n };\n Choices.prototype._addEventListeners = function () {\n var documentElement = this._docRoot;\n var outerElement = this.containerOuter.element;\n var inputElement = this.input.element;\n // capture events - can cancel event processing or propagation\n documentElement.addEventListener('touchend', this._onTouchEnd, true);\n outerElement.addEventListener('keydown', this._onKeyDown, true);\n outerElement.addEventListener('mousedown', this._onMouseDown, true);\n // passive events - doesn't call `preventDefault` or `stopPropagation`\n documentElement.addEventListener('click', this._onClick, { passive: true });\n documentElement.addEventListener('touchmove', this._onTouchMove, {\n passive: true,\n });\n this.dropdown.element.addEventListener('mouseover', this._onMouseOver, {\n passive: true,\n });\n if (this._isSelectOneElement) {\n outerElement.addEventListener('focus', this._onFocus, {\n passive: true,\n });\n outerElement.addEventListener('blur', this._onBlur, {\n passive: true,\n });\n }\n inputElement.addEventListener('keyup', this._onKeyUp, {\n passive: true,\n });\n inputElement.addEventListener('input', this._onInput, {\n passive: true,\n });\n inputElement.addEventListener('focus', this._onFocus, {\n passive: true,\n });\n inputElement.addEventListener('blur', this._onBlur, {\n passive: true,\n });\n if (inputElement.form) {\n inputElement.form.addEventListener('reset', this._onFormReset, {\n passive: true,\n });\n }\n this.input.addEventListeners();\n };\n Choices.prototype._removeEventListeners = function () {\n var documentElement = this._docRoot;\n var outerElement = this.containerOuter.element;\n var inputElement = this.input.element;\n documentElement.removeEventListener('touchend', this._onTouchEnd, true);\n outerElement.removeEventListener('keydown', this._onKeyDown, true);\n outerElement.removeEventListener('mousedown', this._onMouseDown, true);\n documentElement.removeEventListener('click', this._onClick);\n documentElement.removeEventListener('touchmove', this._onTouchMove);\n this.dropdown.element.removeEventListener('mouseover', this._onMouseOver);\n if (this._isSelectOneElement) {\n outerElement.removeEventListener('focus', this._onFocus);\n outerElement.removeEventListener('blur', this._onBlur);\n }\n inputElement.removeEventListener('keyup', this._onKeyUp);\n inputElement.removeEventListener('input', this._onInput);\n inputElement.removeEventListener('focus', this._onFocus);\n inputElement.removeEventListener('blur', this._onBlur);\n if (inputElement.form) {\n inputElement.form.removeEventListener('reset', this._onFormReset);\n }\n this.input.removeEventListeners();\n };\n Choices.prototype._onKeyDown = function (event) {\n var keyCode = event.keyCode;\n var hasActiveDropdown = this.dropdown.isActive;\n /*\n See:\n https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key\n https://developer.mozilla.org/en-US/docs/Web/API/UI_Events/Keyboard_event_key_values\n https://en.wikipedia.org/wiki/UTF-16#Code_points_from_U+010000_to_U+10FFFF - UTF-16 surrogate pairs\n https://stackoverflow.com/a/70866532 - \"Unidentified\" for mobile\n http://www.unicode.org/versions/Unicode5.2.0/ch16.pdf#G19635 - U+FFFF is reserved (Section 16.7)\n \n Logic: when a key event is sent, `event.key` represents its printable value _or_ one\n of a large list of special values indicating meta keys/functionality. In addition,\n key events for compose functionality contain a value of `Dead` when mid-composition.\n \n I can't quite verify it, but non-English IMEs may also be able to generate key codes\n for code points in the surrogate-pair range, which could potentially be seen as having\n key.length > 1. Since `Fn` is one of the special keys, we can't distinguish by that\n alone.\n \n Here, key.length === 1 means we know for sure the input was printable and not a special\n `key` value. When the length is greater than 1, it could be either a printable surrogate\n pair or a special `key` value. We can tell the difference by checking if the _character\n code_ value (not code point!) is in the \"surrogate pair\" range or not.\n \n We don't use .codePointAt because an invalid code point would return 65535, which wouldn't\n pass the >= 0x10000 check we would otherwise use.\n \n > ...The Unicode Standard sets aside 66 noncharacter code points. The last two code points\n > of each plane are noncharacters: U+FFFE and U+FFFF on the BMP...\n */\n var wasPrintableChar = event.key.length === 1 ||\n (event.key.length === 2 && event.key.charCodeAt(0) >= 0xd800) ||\n event.key === 'Unidentified';\n /*\n We do not show the dropdown if focusing out with esc or navigating through input fields.\n An activated search can still be opened with any other key.\n */\n if (!this._isTextElement &&\n !hasActiveDropdown &&\n keyCode !== KeyCodeMap.ESC_KEY &&\n keyCode !== KeyCodeMap.TAB_KEY &&\n keyCode !== KeyCodeMap.SHIFT_KEY) {\n this.showDropdown();\n if (!this.input.isFocussed && wasPrintableChar) {\n /*\n We update the input value with the pressed key as\n the input was not focussed at the time of key press\n therefore does not have the value of the key.\n */\n this.input.value += event.key;\n // browsers interpret a space as pagedown\n if (event.key === ' ') {\n event.preventDefault();\n }\n }\n }\n switch (keyCode) {\n case KeyCodeMap.A_KEY:\n return this._onSelectKey(event, this.itemList.element.hasChildNodes());\n case KeyCodeMap.ENTER_KEY:\n return this._onEnterKey(event, hasActiveDropdown);\n case KeyCodeMap.ESC_KEY:\n return this._onEscapeKey(event, hasActiveDropdown);\n case KeyCodeMap.UP_KEY:\n case KeyCodeMap.PAGE_UP_KEY:\n case KeyCodeMap.DOWN_KEY:\n case KeyCodeMap.PAGE_DOWN_KEY:\n return this._onDirectionKey(event, hasActiveDropdown);\n case KeyCodeMap.DELETE_KEY:\n case KeyCodeMap.BACK_KEY:\n return this._onDeleteKey(event, this._store.items, this.input.isFocussed);\n }\n };\n Choices.prototype._onKeyUp = function ( /* event: KeyboardEvent */) {\n this._canSearch = this.config.searchEnabled;\n };\n Choices.prototype._onInput = function ( /* event: InputEvent */) {\n var value = this.input.value;\n if (!value) {\n if (this._isTextElement) {\n this.hideDropdown(true);\n }\n else {\n this._stopSearch();\n }\n return;\n }\n if (!this._canAddItems()) {\n return;\n }\n if (this._canSearch) {\n // do the search even if the entered text can not be added\n this._handleSearch(value);\n }\n if (!this._canAddUserChoices) {\n return;\n }\n // determine if a notice needs to be displayed for why a search result can't be added\n this._canCreateItem(value);\n if (this._isSelectElement) {\n this._highlightPosition = 0; // reset to select the notice and/or exact match\n this._highlightChoice();\n }\n };\n Choices.prototype._onSelectKey = function (event, hasItems) {\n // If CTRL + A or CMD + A have been pressed and there are items to select\n if ((event.ctrlKey || event.metaKey) && hasItems) {\n this._canSearch = false;\n var shouldHightlightAll = this.config.removeItems && !this.input.value && this.input.element === document.activeElement;\n if (shouldHightlightAll) {\n this.highlightAll();\n }\n }\n };\n Choices.prototype._onEnterKey = function (event, hasActiveDropdown) {\n var _this = this;\n var value = this.input.value;\n var target = event.target;\n event.preventDefault();\n if (target && target.hasAttribute('data-button')) {\n this._handleButtonAction(target);\n return;\n }\n if (!hasActiveDropdown) {\n if (this._isSelectElement || this._notice) {\n this.showDropdown();\n }\n return;\n }\n var highlightedChoice = this.dropdown.element.querySelector(getClassNamesSelector(this.config.classNames.highlightedState));\n if (highlightedChoice && this._handleChoiceAction(highlightedChoice)) {\n return;\n }\n if (!target || !value) {\n this.hideDropdown(true);\n return;\n }\n if (!this._canAddItems()) {\n return;\n }\n var addedItem = false;\n this._store.withTxn(function () {\n addedItem = _this._findAndSelectChoiceByValue(value, true);\n if (!addedItem) {\n if (!_this._canAddUserChoices) {\n return;\n }\n if (!_this._canCreateItem(value)) {\n return;\n }\n _this._addChoice(mapInputToChoice(value, false, _this.config.allowHtmlUserInput), true, true);\n addedItem = true;\n }\n _this.clearInput();\n _this.unhighlightAll();\n });\n if (!addedItem) {\n return;\n }\n this._triggerChange(value);\n if (this.config.closeDropdownOnSelect) {\n this.hideDropdown(true);\n }\n };\n Choices.prototype._onEscapeKey = function (event, hasActiveDropdown) {\n if (hasActiveDropdown) {\n event.stopPropagation();\n this.hideDropdown(true);\n this._stopSearch();\n this.containerOuter.element.focus();\n }\n };\n Choices.prototype._onDirectionKey = function (event, hasActiveDropdown) {\n var keyCode = event.keyCode;\n // If up or down key is pressed, traverse through options\n if (hasActiveDropdown || this._isSelectOneElement) {\n this.showDropdown();\n this._canSearch = false;\n var directionInt = keyCode === KeyCodeMap.DOWN_KEY || keyCode === KeyCodeMap.PAGE_DOWN_KEY ? 1 : -1;\n var skipKey = event.metaKey || keyCode === KeyCodeMap.PAGE_DOWN_KEY || keyCode === KeyCodeMap.PAGE_UP_KEY;\n var nextEl = void 0;\n if (skipKey) {\n if (directionInt > 0) {\n nextEl = this.dropdown.element.querySelector(\"\".concat(selectableChoiceIdentifier, \":last-of-type\"));\n }\n else {\n nextEl = this.dropdown.element.querySelector(selectableChoiceIdentifier);\n }\n }\n else {\n var currentEl = this.dropdown.element.querySelector(getClassNamesSelector(this.config.classNames.highlightedState));\n if (currentEl) {\n nextEl = getAdjacentEl(currentEl, selectableChoiceIdentifier, directionInt);\n }\n else {\n nextEl = this.dropdown.element.querySelector(selectableChoiceIdentifier);\n }\n }\n if (nextEl) {\n // We prevent default to stop the cursor moving\n // when pressing the arrow\n if (!isScrolledIntoView(nextEl, this.choiceList.element, directionInt)) {\n this.choiceList.scrollToChildElement(nextEl, directionInt);\n }\n this._highlightChoice(nextEl);\n }\n // Prevent default to maintain cursor position whilst\n // traversing dropdown options\n event.preventDefault();\n }\n };\n Choices.prototype._onDeleteKey = function (event, items, hasFocusedInput) {\n // If backspace or delete key is pressed and the input has no value\n if (!this._isSelectOneElement && !event.target.value && hasFocusedInput) {\n this._handleBackspace(items);\n event.preventDefault();\n }\n };\n Choices.prototype._onTouchMove = function () {\n if (this._wasTap) {\n this._wasTap = false;\n }\n };\n Choices.prototype._onTouchEnd = function (event) {\n var target = (event || event.touches[0]).target;\n var touchWasWithinContainer = this._wasTap && this.containerOuter.element.contains(target);\n if (touchWasWithinContainer) {\n var containerWasExactTarget = target === this.containerOuter.element || target === this.containerInner.element;\n if (containerWasExactTarget) {\n if (this._isTextElement) {\n this.input.focus();\n }\n else if (this._isSelectMultipleElement) {\n this.showDropdown();\n }\n }\n // Prevents focus event firing\n event.stopPropagation();\n }\n this._wasTap = true;\n };\n /**\n * Handles mousedown event in capture mode for containetOuter.element\n */\n Choices.prototype._onMouseDown = function (event) {\n var target = event.target;\n if (!(target instanceof HTMLElement)) {\n return;\n }\n // If we have our mouse down on the scrollbar and are on IE11...\n if (IS_IE11 && this.choiceList.element.contains(target)) {\n // check if click was on a scrollbar area\n var firstChoice = this.choiceList.element.firstElementChild;\n this._isScrollingOnIe =\n this._direction === 'ltr' ? event.offsetX >= firstChoice.offsetWidth : event.offsetX < firstChoice.offsetLeft;\n }\n if (target === this.input.element) {\n return;\n }\n var item = target.closest('[data-button],[data-item],[data-choice]');\n if (item instanceof HTMLElement) {\n if ('button' in item.dataset) {\n this._handleButtonAction(item);\n }\n else if ('item' in item.dataset) {\n this._handleItemAction(item, event.shiftKey);\n }\n else if ('choice' in item.dataset) {\n this._handleChoiceAction(item);\n }\n }\n event.preventDefault();\n };\n /**\n * Handles mouseover event over this.dropdown\n * @param {MouseEvent} event\n */\n Choices.prototype._onMouseOver = function (_a) {\n var target = _a.target;\n if (target instanceof HTMLElement && 'choice' in target.dataset) {\n this._highlightChoice(target);\n }\n };\n Choices.prototype._onClick = function (_a) {\n var target = _a.target;\n var containerOuter = this.containerOuter;\n var clickWasWithinContainer = containerOuter.element.contains(target);\n if (clickWasWithinContainer) {\n if (!this.dropdown.isActive && !containerOuter.isDisabled) {\n if (this._isTextElement) {\n if (document.activeElement !== this.input.element) {\n this.input.focus();\n }\n }\n else {\n this.showDropdown();\n containerOuter.element.focus();\n }\n }\n else if (this._isSelectOneElement &&\n target !== this.input.element &&\n !this.dropdown.element.contains(target)) {\n this.hideDropdown();\n }\n }\n else {\n containerOuter.removeFocusState();\n this.hideDropdown(true);\n this.unhighlightAll();\n }\n };\n Choices.prototype._onFocus = function (_a) {\n var target = _a.target;\n var containerOuter = this.containerOuter;\n var focusWasWithinContainer = target && containerOuter.element.contains(target);\n if (!focusWasWithinContainer) {\n return;\n }\n var targetIsInput = target === this.input.element;\n if (this._isTextElement) {\n if (targetIsInput) {\n containerOuter.addFocusState();\n }\n }\n else if (this._isSelectMultipleElement) {\n if (targetIsInput) {\n this.showDropdown(true);\n // If element is a select box, the focused element is the container and the dropdown\n // isn't already open, focus and show dropdown\n containerOuter.addFocusState();\n }\n }\n else {\n containerOuter.addFocusState();\n if (targetIsInput) {\n this.showDropdown(true);\n }\n }\n };\n Choices.prototype._onBlur = function (_a) {\n var target = _a.target;\n var containerOuter = this.containerOuter;\n var blurWasWithinContainer = target && containerOuter.element.contains(target);\n if (blurWasWithinContainer && !this._isScrollingOnIe) {\n if (target === this.input.element) {\n containerOuter.removeFocusState();\n this.hideDropdown(true);\n if (this._isTextElement || this._isSelectMultipleElement) {\n this.unhighlightAll();\n }\n }\n else if (target === this.containerOuter.element) {\n // Remove the focus state when the past outerContainer was the target\n containerOuter.removeFocusState();\n }\n }\n else {\n // On IE11, clicking the scollbar blurs our input and thus\n // closes the dropdown. To stop this, we refocus our input\n // if we know we are on IE *and* are scrolling.\n this._isScrollingOnIe = false;\n this.input.element.focus();\n }\n };\n Choices.prototype._onFormReset = function () {\n var _this = this;\n this._store.withTxn(function () {\n _this.clearInput();\n _this.hideDropdown();\n _this.refresh(false, false, true);\n if (_this._initialItems.length) {\n _this.setChoiceByValue(_this._initialItems);\n }\n });\n };\n Choices.prototype._highlightChoice = function (el) {\n if (el === void 0) { el = null; }\n var choices = Array.from(this.dropdown.element.querySelectorAll(selectableChoiceIdentifier));\n if (!choices.length) {\n return;\n }\n var passedEl = el;\n var highlightedState = this.config.classNames.highlightedState;\n var highlightedChoices = Array.from(this.dropdown.element.querySelectorAll(getClassNamesSelector(highlightedState)));\n // Remove any highlighted choices\n highlightedChoices.forEach(function (choice) {\n removeClassesFromElement(choice, highlightedState);\n choice.setAttribute('aria-selected', 'false');\n });\n if (passedEl) {\n this._highlightPosition = choices.indexOf(passedEl);\n }\n else {\n // Highlight choice based on last known highlight location\n if (choices.length > this._highlightPosition) {\n // If we have an option to highlight\n passedEl = choices[this._highlightPosition];\n }\n else {\n // Otherwise highlight the option before\n passedEl = choices[choices.length - 1];\n }\n if (!passedEl) {\n passedEl = choices[0];\n }\n }\n addClassesToElement(passedEl, highlightedState);\n passedEl.setAttribute('aria-selected', 'true');\n this.passedElement.triggerEvent(EventType.highlightChoice, {\n el: passedEl,\n });\n if (this.dropdown.isActive) {\n // IE11 ignores aria-label and blocks virtual keyboard\n // if aria-activedescendant is set without a dropdown\n this.input.setActiveDescendant(passedEl.id);\n this.containerOuter.setActiveDescendant(passedEl.id);\n }\n };\n Choices.prototype._addItem = function (item, withEvents, userTriggered) {\n if (withEvents === void 0) { withEvents = true; }\n if (userTriggered === void 0) { userTriggered = false; }\n if (!item.id) {\n throw new TypeError('item.id must be set before _addItem is called for a choice/item');\n }\n if (this.config.singleModeForMultiSelect || this._isSelectOneElement) {\n this.removeActiveItems(item.id);\n }\n this._store.dispatch(addItem(item));\n if (withEvents) {\n this.passedElement.triggerEvent(EventType.addItem, this._getChoiceForOutput(item));\n if (userTriggered) {\n this.passedElement.triggerEvent(EventType.choice, this._getChoiceForOutput(item));\n }\n }\n };\n Choices.prototype._removeItem = function (item) {\n if (!item.id) {\n return;\n }\n this._store.dispatch(removeItem$1(item));\n var notice = this._notice;\n if (notice && notice.type === NoticeTypes.noChoices) {\n this._clearNotice();\n }\n this.passedElement.triggerEvent(EventType.removeItem, this._getChoiceForOutput(item));\n };\n Choices.prototype._addChoice = function (choice, withEvents, userTriggered) {\n if (withEvents === void 0) { withEvents = true; }\n if (userTriggered === void 0) { userTriggered = false; }\n if (choice.id) {\n throw new TypeError('Can not re-add a choice which has already been added');\n }\n var config = this.config;\n if ((this._isSelectElement || !config.duplicateItemsAllowed) &&\n this._store.choices.find(function (c) { return config.valueComparer(c.value, choice.value); })) {\n return;\n }\n // Generate unique id, in-place update is required so chaining _addItem works as expected\n this._lastAddedChoiceId++;\n choice.id = this._lastAddedChoiceId;\n choice.elementId = \"\".concat(this._baseId, \"-\").concat(this._idNames.itemChoice, \"-\").concat(choice.id);\n var prependValue = config.prependValue, appendValue = config.appendValue;\n if (prependValue) {\n choice.value = prependValue + choice.value;\n }\n if (appendValue) {\n choice.value += appendValue.toString();\n }\n if ((prependValue || appendValue) && choice.element) {\n choice.element.value = choice.value;\n }\n this._clearNotice();\n this._store.dispatch(addChoice(choice));\n if (choice.selected) {\n this._addItem(choice, withEvents, userTriggered);\n }\n };\n Choices.prototype._addGroup = function (group, withEvents) {\n var _this = this;\n if (withEvents === void 0) { withEvents = true; }\n if (group.id) {\n throw new TypeError('Can not re-add a group which has already been added');\n }\n this._store.dispatch(addGroup(group));\n if (!group.choices) {\n return;\n }\n // add unique id for the group(s), and do not store the full list of choices in this group\n this._lastAddedGroupId++;\n group.id = this._lastAddedGroupId;\n group.choices.forEach(function (item) {\n item.group = group;\n if (group.disabled) {\n item.disabled = true;\n }\n _this._addChoice(item, withEvents);\n });\n };\n Choices.prototype._createTemplates = function () {\n var _this = this;\n var callbackOnCreateTemplates = this.config.callbackOnCreateTemplates;\n var userTemplates = {};\n if (typeof callbackOnCreateTemplates === 'function') {\n userTemplates = callbackOnCreateTemplates.call(this, strToEl, escapeForTemplate, getClassNames);\n }\n var templating = {};\n Object.keys(this._templates).forEach(function (name) {\n if (name in userTemplates) {\n templating[name] = userTemplates[name].bind(_this);\n }\n else {\n templating[name] = _this._templates[name].bind(_this);\n }\n });\n this._templates = templating;\n };\n Choices.prototype._createElements = function () {\n var templating = this._templates;\n var _a = this, config = _a.config, isSelectOneElement = _a._isSelectOneElement;\n var position = config.position, classNames = config.classNames;\n var elementType = this._elementType;\n this.containerOuter = new Container({\n element: templating.containerOuter(config, this._direction, this._isSelectElement, isSelectOneElement, config.searchEnabled, elementType, config.labelId),\n classNames: classNames,\n type: elementType,\n position: position,\n });\n this.containerInner = new Container({\n element: templating.containerInner(config),\n classNames: classNames,\n type: elementType,\n position: position,\n });\n this.input = new Input({\n element: templating.input(config, this._placeholderValue),\n classNames: classNames,\n type: elementType,\n preventPaste: !config.paste,\n });\n this.choiceList = new List({\n element: templating.choiceList(config, isSelectOneElement),\n });\n this.itemList = new List({\n element: templating.itemList(config, isSelectOneElement),\n });\n this.dropdown = new Dropdown({\n element: templating.dropdown(config),\n classNames: classNames,\n type: elementType,\n });\n };\n Choices.prototype._createStructure = function () {\n var _a = this, containerInner = _a.containerInner, containerOuter = _a.containerOuter, passedElement = _a.passedElement;\n var dropdownElement = this.dropdown.element;\n // Hide original element\n passedElement.conceal();\n // Wrap input in container preserving DOM ordering\n containerInner.wrap(passedElement.element);\n // Wrapper inner container with outer container\n containerOuter.wrap(containerInner.element);\n if (this._isSelectOneElement) {\n this.input.placeholder = this.config.searchPlaceholderValue || '';\n }\n else {\n if (this._placeholderValue) {\n this.input.placeholder = this._placeholderValue;\n }\n this.input.setWidth();\n }\n containerOuter.element.appendChild(containerInner.element);\n containerOuter.element.appendChild(dropdownElement);\n containerInner.element.appendChild(this.itemList.element);\n dropdownElement.appendChild(this.choiceList.element);\n if (!this._isSelectOneElement) {\n containerInner.element.appendChild(this.input.element);\n }\n else if (this.config.searchEnabled) {\n dropdownElement.insertBefore(this.input.element, dropdownElement.firstChild);\n }\n this._highlightPosition = 0;\n this._isSearching = false;\n };\n Choices.prototype._initStore = function () {\n var _this = this;\n this._store.subscribe(this._render).withTxn(function () {\n _this._addPredefinedChoices(_this._presetChoices, _this._isSelectOneElement && !_this._hasNonChoicePlaceholder, false);\n });\n if (!this._store.choices.length || (this._isSelectOneElement && this._hasNonChoicePlaceholder)) {\n this._render();\n }\n };\n Choices.prototype._addPredefinedChoices = function (choices, selectFirstOption, withEvents) {\n var _this = this;\n if (selectFirstOption === void 0) { selectFirstOption = false; }\n if (withEvents === void 0) { withEvents = true; }\n if (selectFirstOption) {\n /**\n * If there is a selected choice already or the choice is not the first in\n * the array, add each choice normally.\n *\n * Otherwise we pre-select the first enabled choice in the array (\"select-one\" only)\n */\n var noSelectedChoices = choices.findIndex(function (choice) { return choice.selected; }) === -1;\n if (noSelectedChoices) {\n choices.some(function (choice) {\n if (choice.disabled || 'choices' in choice) {\n return false;\n }\n choice.selected = true;\n return true;\n });\n }\n }\n choices.forEach(function (item) {\n if ('choices' in item) {\n if (_this._isSelectElement) {\n _this._addGroup(item, withEvents);\n }\n }\n else {\n _this._addChoice(item, withEvents);\n }\n });\n };\n Choices.prototype._findAndSelectChoiceByValue = function (value, userTriggered) {\n var _this = this;\n if (userTriggered === void 0) { userTriggered = false; }\n // Check 'value' property exists and the choice isn't already selected\n var foundChoice = this._store.choices.find(function (choice) { return _this.config.valueComparer(choice.value, value); });\n if (foundChoice && !foundChoice.disabled && !foundChoice.selected) {\n this._addItem(foundChoice, true, userTriggered);\n return true;\n }\n return false;\n };\n Choices.prototype._generatePlaceholderValue = function () {\n var config = this.config;\n if (!config.placeholder) {\n return null;\n }\n if (this._hasNonChoicePlaceholder) {\n return config.placeholderValue;\n }\n if (this._isSelectElement) {\n var placeholderOption = this.passedElement.placeholderOption;\n return placeholderOption ? placeholderOption.text : null;\n }\n return null;\n };\n Choices.prototype._warnChoicesInitFailed = function (caller) {\n if (this.config.silent) {\n return;\n }\n if (!this.initialised) {\n throw new TypeError(\"\".concat(caller, \" called on a non-initialised instance of Choices\"));\n }\n else if (!this.initialisedOK) {\n throw new TypeError(\"\".concat(caller, \" called for an element which has multiple instances of Choices initialised on it\"));\n }\n };\n Choices.version = '11.0.3';\n return Choices;\n}());\n\nexport { Choices as default };\n"],"names":["$","cachedScrollbarWidth","max","Math","abs","rhorizontal","rvertical","roffset","rposition","rpercent","_position","fn","position","getOffsets","offsets","width","height","parseFloat","test","parseCss","element","property","parseInt","css","isWindow","obj","window","getDimensions","elem","raw","nodeType","offset","top","left","scrollTop","scrollLeft","preventDefault","pageY","pageX","outerWidth","outerHeight","scrollbarWidth","undefined","w1","w2","div","innerDiv","children","append","offsetWidth","clientWidth","remove","getScrollInfo","within","overflowX","isDocument","overflowY","hasOverflowX","scrollWidth","scrollHeight","getWithinInfo","withinElement","isElemWindow","options","of","apply","this","arguments","atOffset","targetWidth","targetHeight","targetOffset","basePosition","dimensions","target","extend","document","find","scrollInfo","collision","split","at","each","horizontalOffset","verticalOffset","pos","length","concat","exec","collisionPosition","using","elemWidth","elemHeight","marginLeft","marginTop","collisionWidth","collisionHeight","myOffset","my","i","dir","ui","props","right","bottom","feedback","horizontal","vertical","important","call","fit","data","newOverRight","withinOffset","collisionPosLeft","overLeft","overRight","newOverBottom","collisionPosTop","overTop","overBottom","flip","newOverLeft","offsetLeft","newOverTop","offsetTop","flipfit","uniqueId","uuid","id","removeUniqueId","removeAttr","module","exports","_interopDefaultLegacy","e","$__default","_defineProperties","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_createClass","Constructor","protoProps","staticProps","prototype","NAME","VERSION","DATA_KEY","EVENT_KEY","DATA_API_KEY","JQUERY_NO_CONFLICT","CLASS_NAME_ACTIVE","CLASS_NAME_BUTTON","CLASS_NAME_FOCUS","EVENT_CLICK_DATA_API","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","_element","shouldAvoidTriggerChange","_proto","toggle","triggerChangeEvent","addAriaPressed","rootElement","closest","input","querySelector","type","checked","classList","contains","activeElement","removeClass","trigger","focus","hasAttribute","setAttribute","toggleClass","dispose","removeData","_jQueryInterface","config","avoidTriggerChange","$element","get","on","event","button","initialButton","hasClass","inputBtn","tagName","buttons","slice","querySelectorAll","len","add","_i","_len","_button","getAttribute","noConflict","factory","Util","Util__default","CLASS_NAME_DROPDOWN_MENU","CLASS_NAME_DISABLED","CLASS_NAME_FADE","CLASS_NAME_SHOW","EVENT_HIDE","EVENT_HIDDEN","EVENT_SHOW","EVENT_SHOWN","SELECTOR_DROPDOWN","SELECTOR_NAV_LIST_GROUP","SELECTOR_ACTIVE_UL","SELECTOR_DROPDOWN_TOGGLE","SELECTOR_DROPDOWN_ACTIVE_CHILD","Tab","show","_this","parentNode","Node","ELEMENT_NODE","previous","listElement","selector","getSelectorFromElement","itemSelector","nodeName","makeArray","hideEvent","Event","relatedTarget","showEvent","isDefaultPrevented","_activate","complete","hiddenEvent","shownEvent","container","callback","_this2","active","isTransitioning","_transitionComplete","transitionDuration","getTransitionDurationFromElement","one","TRANSITION_END","emulateTransitionEnd","dropdownChild","addClass","reflow","parent","dropdownElement","dropdownToggleList","$this","TypeError","widget","version","defaultElement","appendTo","autoFocus","delay","minLength","source","change","close","open","response","search","select","requestIndex","pending","liveRegionTimer","_create","suppressKeyPress","suppressKeyPressRepeat","suppressInput","toLowerCase","isTextarea","isInput","isMultiLine","_isContentEditable","valueMethod","isNewMenu","_addClass","attr","_on","keydown","prop","keyCode","PAGE_UP","_move","PAGE_DOWN","UP","_keyEvent","DOWN","ENTER","menu","TAB","ESCAPE","is","_value","term","_searchTimeout","keypress","selectedItem","blur","clearTimeout","searching","_change","_initSource","_appendTo","role","hide","mousedown","menufocus","label","item","originalEvent","_trigger","value","String","trim","_delay","liveRegion","html","text","menuselect","safeActiveElement","body","beforeunload","_destroy","_setOption","_super","xhr","abort","_isEventTargetInWidget","menuElement","_closeOnClickOutside","jquery","eq","array","url","that","Array","isArray","request","autocomplete","filter","ajax","dataType","success","error","equalValues","menuVisible","modifierKey","altKey","ctrlKey","metaKey","shiftKey","_search","cancelSearch","_response","index","content","__response","_removeClass","bind","_normalize","disabled","_suggest","_close","_off","items","map","ul","empty","_renderMenu","refresh","_resizeMenu","next","_renderItemData","_renderItem","direction","isFirstItem","isLastItem","keyEvent","editable","escapeRegex","replace","matcher","RegExp","grep","messages","noResults","results","amount","message","_superApply","icons","submenu","menus","activeMenu","mouseHandled","lastMousePosition","x","y","tabIndex","_activateItem","not","isPropagationStopped","has","expand","parents","timer","mouseleave","keepActiveItem","_menuItems","first","collapseAll","click","_closeOnDocumentClick","previousFilter","clientX","clientY","actualTarget","currentTarget","siblings","submenus","addBack","_keydown","match","prev","character","skip","previousPage","nextPage","HOME","END","LEFT","collapse","RIGHT","SPACE","toString","fromCharCode","filterTimer","_filterMenuItems","nextAll","newSubmenus","newItems","newWrappers","icon","_toggleClass","submenuCaret","prepend","_isDivider","_itemRole","listbox","_setOptionDisabled","nested","focused","activeParent","_scrollIntoView","_startOpening","borderTop","paddingTop","scroll","elementHeight","itemHeight","_hasScroll","fromFocus","_open","all","currentMenu","startMenu","newItem","prevAll","last","base","innerHeight","indexOf","offsetHeight","escapedCharacter","regex","hex","charAt","arr","shift","join","removeHash","reduce","accum","bigint","CLASS_NAME_ALERT","EVENT_CLOSE","EVENT_CLOSED","SELECTOR_DISMISS","Alert","_getRootElement","_triggerCloseEvent","_removeElement","closeEvent","_destroyElement","detach","_handleDismiss","alertInstance","_extends","assign","hasOwnProperty","runningOnBrowser","isBot","navigator","userAgent","supportsIntersectionObserver","supportsClassList","createElement","isHiDpi","devicePixelRatio","defaultSettings","elements_selector","threshold","thresholds","data_src","data_srcset","data_sizes","data_bg","data_bg_hidpi","data_bg_multi","data_bg_multi_hidpi","data_bg_set","data_poster","class_applied","class_loading","class_loaded","class_error","class_entered","class_exited","unobserve_completed","unobserve_entered","cancel_on_exit","callback_enter","callback_exit","callback_applied","callback_loading","callback_loaded","callback_error","callback_finish","callback_cancel","use_native","restore_on_error","getExtendedSettings","customSettings","createInstance","classObj","eventString","instance","CustomEvent","detail","err","createEvent","initCustomEvent","dispatchEvent","autoInitialize","optionsItem","SRC","SRCSET","SIZES","POSTER","ORIGINALS","DATA","statusLoading","statusLoaded","statusApplied","statusEntered","statusError","statusNative","dataPrefix","statusDataName","getData","attribute","setData","attrName","removeAttribute","getStatus","setStatus","status","resetStatus","hasEmptyStatus","hasStatusLoading","hasStatusError","hasStatusNative","statusesAfterLoading","hadStartedLoading","safeCallback","arg1","arg2","arg3","className","addTempImage","llTempImage","deleteTempImage","getTempImage","unobserve","observer","_observer","resetObserver","disconnect","unobserveEntered","settings","updateLoadingCount","delta","loadingCount","decreaseToLoadCount","toLoadCount","setToLoadCount","isSomethingLoading","haveElementsToLoad","getSourceTags","parentTag","childTag","sourceTags","push","forEachPictureSource","forEach","forEachVideoSource","attrsSrc","attrsSrcPoster","attrsSrcSrcsetSizes","attrsData","hasOriginalAttrs","getOriginalAttrs","deleteOriginalAttrs","setOriginalsObject","attributes","originals","saveOriginalBackgroundStyle","backgroundImage","style","setOrResetAttribute","restoreOriginalAttrs","restoreOriginalBgImage","manageApplied","manageLoading","setAttributeIfValue","setImageAttributes","setBackground","bg1xValue","bgHiDpiValue","bgDataValue","setMultiBackground","setImgsetBackground","bgImgSetDataValue","imgSetValues","bgImageValues","setSourcesFunctions","IMG","imgEl","sourceTag","IFRAME","iframe","VIDEO","videoEl","sourceEl","load","OBJECT","object","setSourcesNative","setSourcesFunction","setSources","elementsWithLoadEvent","hasLoadEvent","checkFinish","addEventListener","eventName","handler","llEvLisnrs","removeEventListener","hasEventListeners","addEventListeners","loadHandler","errorHandler","loadEventName","removeEventListeners","eventListeners","doneHandler","goingNative","addOneShotEventListeners","elementToListenTo","loadBackground","loadRegular","loadNative","removeImageAttributes","resetSourcesImg","restoreImg","restoreFunctions","iframeEl","objectEl","restoreAttributes","restoreFunction","resetClasses","restore","cancelLoading","entry","onEnter","dontLoad","onExit","tagsWithNativeLazy","shouldUseNative","HTMLImageElement","loadAllNative","elements","isIntersecting","intersectionRatio","getObserverSettings","root","rootMargin","intersectionHandler","entries","observeElements","observe","updateObserver","elementsToObserve","setObserver","IntersectionObserver","toArray","nodeSet","queryElements","excludeManagedElements","hasError","filterErrorElements","getElementsToLoad","retryLazyLoad","update","setOnlineCheck","_onlineHandler","resetOnlineCheck","LazyLoad","_settings","givenNodeset","elementsToLoad","loadAll","destroy","restoreAll","lazyLoadOptions","BACKSPACE","COMMA","DELETE","PERIOD","isBrowser","timeoutDuration","longerTimeoutBrowsers","debounce","Promise","called","resolve","then","scheduled","setTimeout","isFunction","functionToCheck","getStyleComputedProperty","ownerDocument","defaultView","getComputedStyle","getParentNode","host","getScrollParent","_getStyleComputedProp","overflow","getReferenceNode","reference","referenceNode","isIE11","MSInputMethodContext","documentMode","isIE10","isIE","getOffsetParent","documentElement","noOffsetParent","offsetParent","nextElementSibling","getRoot","node","findCommonOffsetParent","element1","element2","order","compareDocumentPosition","DOCUMENT_POSITION_FOLLOWING","start","end","range","createRange","setStart","setEnd","commonAncestorContainer","firstElementChild","element1root","getScroll","upperSide","scrollingElement","getBordersSize","styles","axis","sideA","sideB","getSize","computedStyle","getWindowSizes","createClass","defineProperties","getClientRect","getBoundingClientRect","rect","result","sizes","clientHeight","horizScrollbar","vertScrollbar","getOffsetRectRelativeToArbitraryNode","fixedPosition","isHTML","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidth","subtract","modifier","includeScroll","isFixed","getFixedPositionOffsetParent","parentElement","el","getBoundaries","popper","padding","boundariesElement","boundaries","excludeScroll","relativeOffset","innerWidth","getViewportOffsetRectRelativeToArtbitraryNode","boundariesNode","_getWindowSizes","isPaddingNumber","computeAutoPlacement","placement","refRect","rects","sortedAreas","keys","area","_ref","sort","a","b","filteredAreas","_ref2","computedPlacement","variation","getReferenceOffsets","state","getOuterSizes","marginBottom","marginRight","getOppositePlacement","hash","matched","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","check","runModifiers","modifiers","ends","findIndex","cur","console","warn","enabled","isDestroyed","arrowStyles","flipped","positionFixed","originalPlacement","isCreated","onUpdate","onCreate","isModifierEnabled","modifierName","some","name","getSupportedPropertyName","prefixes","upperProp","toUpperCase","prefix","toCheck","willChange","disableEventListeners","removeOnDestroy","removeChild","getWindow","attachToScrollParents","scrollParents","isBody","passive","setupEventListeners","updateBound","scrollElement","eventsEnabled","enableEventListeners","scheduleUpdate","cancelAnimationFrame","isNumeric","n","isNaN","isFinite","setStyles","unit","isFirefox","isModifierRequired","requestingName","requestedName","requesting","isRequired","_requesting","requested","placements","validPlacements","clockwise","counter","reverse","BEHAVIORS","parseOffset","basePlacement","useHeight","fragments","frag","divider","splitRegex","ops","op","mergeWithPrevious","str","toValue","index2","shiftvariation","_data$offsets","isVertical","side","shiftOffsets","preventOverflow","transformProp","popperStyles","transform","priority","primary","escapeWithReference","secondary","min","keepTogether","floor","opSide","arrow","_data$offsets$arrow","arrowElement","sideCapitalized","altSide","arrowElementSize","center","popperMarginSide","popperBorderSide","sideValue","round","placementOpposite","flipOrder","behavior","step","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariationByRef","flipVariations","flippedVariationByContent","flipVariationsByContent","flippedVariation","getOppositeVariation","inner","subtractLength","bound","computeStyle","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","shouldRound","noRound","v","referenceWidth","popperWidth","isVariation","horizontalToInteger","verticalToInteger","getRoundedOffsets","prefixedProperty","invertTop","invertLeft","applyStyle","onLoad","modifierOptions","Defaults","Popper","classCallCheck","requestAnimationFrame","Utils","g","PopperUtils","Rails","linkClickSelector","buttonClickSelector","exclude","inputChangeSelector","formSubmitSelector","formInputClickSelector","formDisableSelector","formEnableSelector","fileInputSelector","linkDisableSelector","buttonDisableSelector","nonce","loadCSPNonce","ref","cspNonce","expando","m","Element","matches","matchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","csrfParam","csrfToken","meta","CSRFProtection","token","setRequestHeader","refreshCSRFTokens","param","fire","params","evt","bubbles","cancelable","defaultPrevented","stopEverything","stopPropagation","stopImmediatePropagation","delegate","eventType","AcceptHeaders","createXHR","prepareOptions","processResponse","xml","json","script","responseText","getResponseHeader","statusText","beforeSend","readyState","XMLHttpRequest","OPENED","send","location","href","accept","done","crossDomain","withCredentials","onreadystatechange","DONE","parser","JSON","parse","head","appendChild","DOMParser","parseFromString","isCrossDomain","originAnchor","urlAnchor","protocol","serializeElement","additionalParam","inputs","option","selected","encodeURIComponent","formElements","form","allowAction","handleConfirm","answer","confirm","disableFormElement","disableFormElements","disableLinkElement","enableFormElement","enableFormElements","enableLinkElement","handleDisabledElement","enableElement","disableElement","replacement","innerHTML","originalText","handleMethod","formContent","link","method","action","display","isRemote","handleRemote","enctype","FormData","args","formSubmitButtonClick","formNoValidate","preventInsignificantClick","insignificantMetaClick","jQuery","rails","Error","ajaxPrefilter","originalOptions","_rails_loaded","Popper__default","ESCAPE_KEYCODE","SPACE_KEYCODE","TAB_KEYCODE","ARROW_UP_KEYCODE","ARROW_DOWN_KEYCODE","RIGHT_MOUSE_BUTTON_WHICH","REGEXP_KEYDOWN","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","Default","boundary","popperConfig","DefaultType","Dropdown","_popper","_config","_getConfig","_menu","_getMenuElement","_inNavbar","_detectNavbar","_addEventListeners","isActive","_clearMenus","usePopper","_getParentFromElement","referenceElement","isElement","_getPopperConfig","noop","off","constructor","typeCheckConfig","_getPlacement","$parentDropdown","_getOffset","which","toggles","context","clickEvent","dropdownMenu","_dataApiKeydownHandler","widgetUuid","widgetHasOwnProperty","widgetSlice","cleanData","orig","elems","events","_data","triggerHandler","existingConstructor","basePrototype","proxiedPrototype","namespace","fullName","Widget","expr","pseudos","_createWidget","_childConstructors","returnValue","__super","__superApply","widgetEventPrefix","widgetName","widgetFullName","child","childPrototype","bridge","inputIndex","inputLength","isPlainObject","isMethodCall","methodValue","pushStack","_init","classes","create","eventNamespace","bindings","hoverable","focusable","classesElementLookup","parentWindow","_getCreateOptions","_getCreateEventData","parts","curOption","pop","_setOptions","_setOptionClasses","classKey","currentElements","_classes","enable","disable","full","bindRemoveEvent","nodesToBind","_","processClassString","checkOption","current","uniqueSort","extra","_untrackClassesElement","inArray","suppressDisabledCheck","handlers","delegateElement","handlerProxy","guid","_hoverable","mouseenter","_focusable","focusin","focusout","defaultEffect","hasOptions","effect","effectName","duration","isEmptyObject","effects","easing","queue","r","d","h","l","s","ceil","rgbToHsl","hexToRgb","hsl","extendStatics","setPrototypeOf","__proto__","p","__extends","__","__assign","t","__spreadArray","to","from","pack","ar","SuppressedError","tmpEl","ActionType","EventType","KeyCodeMap","ObjectsInConfig","PassedElementTypes","removeChoice","choice","removeItem$1","highlightItem","highlighted","generateChars","random","sanitise","trusted","strToEl","firstChild","resolveNoticeFunction","resolveStringFunction","unwrapStringForRaw","escapeForTemplate","allowHTML","escaped","unwrapStringForEscaped","setElementHtml","allowHtml","sortByRank","rank","getClassNames","ClassNames","getClassNamesSelector","addClassesToElement","_a","removeClassesFromElement","parseCustomProperties","customProperties","classNames","activeState","Container","isOpen","isFlipped","isDisabled","isLoading","shouldFlip","dropdownPos","dropdownHeight","matchMedia","setActiveDescendant","activeDescendantID","removeActiveDescendant","openState","flippedState","addFocusState","focusState","removeFocusState","disabledState","wrap","nextSibling","insertBefore","unwrap","addLoadingState","loadingState","removeLoadingState","Input","preventPaste","isFocussed","isEqualNode","_onPaste","_onInput","_onFocus","_onBlur","set","placeholder","clear","setWidth","minWidth","List","scrollPos","scrollToTop","scrollToChildElement","listHeight","listScrollPosition","elementPos","destination","_animateScroll","_scrollDown","strength","distance","_scrollUp","choiceListScrollTop","continueAnimation","WrappedElement","dataset","conceal","hidden","origStyle","reveal","triggerEvent","customArgs","WrappedInput","coerceBool","arg","defaultValue","stringToHtmlClass","mapInputToChoice","allowGroup","allowRawString","sanitisedValue","groupOrChoice","group","choices","score","labelClass","labelDescription","isHtmlSelectElement","WrappedSelect","template","extractPlaceholder","addOptions","fragment","createDocumentFragment","optionsAsChoices","isHtmlOption","isHtmlOptgroup","_optgroupToChoice","_optionToChoice","innerText","optgroup","DEFAULT_CONFIG","silent","renderChoiceLimit","maxItemCount","closeDropdownOnSelect","singleModeForMultiSelect","addChoices","addItems","addItemFilter","removeItems","removeItemButton","removeItemButtonAlignLeft","editItems","allowHtmlUserInput","duplicateItemsAllowed","delimiter","paste","searchEnabled","searchChoices","searchFloor","searchResultLimit","searchFields","resetScrollPosition","shouldSort","shouldSortItems","sorter","_b","_c","value2","_d","label2","localeCompare","sensitivity","ignorePunctuation","numeric","shadowRoot","placeholderValue","searchPlaceholderValue","prependValue","appendValue","renderSelectedChoices","loadingText","noResultsText","noChoicesText","itemSelectText","uniqueItemText","customAddItemText","addItemText","removeItemIconText","removeItemLabelText","maxItemText","valueComparer","value1","fuseOptions","includeScore","labelId","callbackOnInit","callbackOnCreateTemplates","containerOuter","containerInner","inputCloned","list","listItems","listSingle","listDropdown","itemSelectable","itemDisabled","itemChoice","description","groupHeading","highlightedState","selectedState","notice","addChoice","noChoices","appendGroupInSearch","removeItem","itemEl","reducers","groups","updateClassList","choiceEl","scoreLookup_1","Store","_state","defaultState","_listeners","_txn","_context","changeSet","init","reset","changes","_changeSet","subscribe","onChange","dispatch","hasChanges","stateUpdate","withTxn","func","changeSet_1","hasActiveOptions","inTxn","getChoiceById","activeChoices","getGroupById","NoticeTypes","_defineProperty","Symbol","toPrimitive","Number","_toPrimitive","_toPropertyKey","ownKeys","getOwnPropertySymbols","o","getOwnPropertyDescriptor","_objectSpread2","getOwnPropertyDescriptors","getTag","isString","isNumber","isBoolean","isObject","isObjectLike","isDefined","isBlank","hasOwn","KeyStore","_keys","_keyMap","totalWeight","createKey","weight","keyId","toJSON","stringify","path","src","getFn","createKeyPath","createKeyId","MISSING_KEY_PROPERTY","INVALID_KEY_WEIGHT_VALUE","AdvancedOptions","useExtendedSearch","deepGet","baseToString","ignoreLocation","ignoreFieldNorm","fieldNormWeight","Config","isCaseSensitive","sortFn","idx","includeMatches","findAllMatches","minMatchCharLength","FuseIndex","norm","mantissa","cache","Map","pow","numTokens","setIndexRecords","docs","records","setKeys","_keysMap","doc","docIndex","_addString","_addObject","size","removeAt","splice","getValueForItemAtKeyId","record","keyIndex","subRecords","stack","nestedArrIndex","subRecord","k","createIndex","myIndex","computeScore$1","pattern","errors","currentLocation","expectedLocation","accuracy","proximity","MAX_BITS","patternAlphabet","patternLen","textLen","currentThreshold","bestLocation","computeMatches","matchMask","lastBitArr","finalScore","binMax","mask","binMin","binMid","finish","bitArr","j","charMatch","isMatch","indices","matchmask","convertMaskToIndices","createPatternAlphabet","char","BitapSearch","chunks","addChunk","startIndex","alphabet","remainder","substr","searchIn","allIndices","totalScore","hasMatches","BaseMatch","isMultiMatch","getMatch","multiRegex","isSingleMatch","singleRegex","exp","FuzzyMatch","super","_bitapSearch","IncludeMatch","searchers","startsWith","endsWith","searchersLen","SPACE_RE","MultiMatchSet","Set","ExtendedSearch","query","queryItem","found","searcher","parseQuery","condition","numMatches","qLen","pLen","registeredSearchers","createSearcher","searcherClass","LogicalOperator","KeyType","isExpression","convertToExplicit","auto","isQueryPath","isPath","isLeaf","LOGICAL_SEARCH_INVALID_QUERY_FOR_KEY","operator","transformMatches","refIndex","transformScore","Fuse","_keyStore","setCollection","_docs","_myIndex","predicate","getIndex","limit","_searchStringList","_searchObjectList","_searchLogical","EPSILON","computeScore","transformers","transformer","format","expression","evaluate","_findMatches","res","resultMap","expResults","parseIndex","register","SearchByFuse","_haystack","_fuseOptions","_fuse","isEmptyIndex","needle","assignCustomProperties","withCustomProperties","addAriaLabel","docRoot","templates","isSelectElement","isSelectOneElement","passedElementType","_docRoot","passedElement","itemList","_isSelectElement","rawValue","spanLabel","deletable","removeButton","REMOVE_ITEM_LABEL","insertAdjacentElement","choiceList","choiceGroup","rawLabel","heading","selectText","groupName","elementId","describedBy","descId","spanDesc","groupId","choiceDisabled","choiceSelectable","inp","autocapitalize","spellcheck","dropdown","noticeItem","labelValue","opt","Option","IS_IE11","USER_DEFAULTS","parseDataSetId","selectableChoiceIdentifier","Choices","userConfig","initialisedOK","_hasNonChoicePlaceholder","_lastAddedChoiceId","_lastAddedGroupId","defaults","allOptions","_validateConfig","elementType","isText","isSelectOne","isSelectMultiple","isSelect","_elementType","_isTextElement","_isSelectOneElement","_isSelectMultipleElement","_canAddUserChoices","re","selectEl","_templates","initialised","_store","_currentValue","_canSearch","_isScrollingOnIe","_highlightPosition","_wasTap","_placeholderValue","_generatePlaceholderValue","_baseId","generateId","_direction","elementDirection","_idNames","_render","_onKeyUp","_onKeyDown","_onClick","_onTouchMove","_onTouchEnd","_onMouseDown","_onMouseOver","_onFormReset","_onSelectKey","_onEnterKey","_onEscapeKey","_onDirectionKey","_onDeleteKey","_initialItems","preventExtensions","_searcher","_loadChoices","_createTemplates","_createElements","_createStructure","_initStore","_removeEventListeners","clearStore","_stopSearch","runEvent","c","_getChoiceForOutput","unhighlightItem","highlightAll","unhighlightAll","removeActiveItemsByValue","_removeItem","removeActiveItems","excludedId","removeHighlightedItems","highlightedActiveItems","_triggerChange","showDropdown","preventInputFocus","hideDropdown","preventInputBlur","getValue","valueOnly","values","setValue","_addChoice","_warnChoicesInitFailed","setChoiceByValue","val","_findAndSelectChoiceByValue","setChoices","choicesArrayOrFetcher","replaceChoices","clearSearchFlag","clearChoices","fetcher_1","_handleLoadingState","catch","_isSearching","isDefaultValue","isDefaultLabel","_addGroup","withEvents","selectFirstOption","deselectAll","choicesFromOptions","existingItems","updateChoice","_addPredefinedChoices","_searchChoices","_clearNotice","clearOptions","replaceChildren","clearInput","shouldSetInputWidth","aKeys","bKeys","invalidConfigOptions","_renderChoices","_renderItems","_canAddItems","isSearching","activeGroups","renderLimit","backingOptions","renderableChoices","selectableChoices","renderChoices","withinGroup","groupLabel","choiceLimit","every","dropdownItem","groupChoices","dropdownGroup","groupEl","_notice","_renderNotice","_highlightChoice","itemFromList","addItemToFragment","childNodes","_displayNotice","openDropdown","oldNotice","noticeElement","noticeConf","groupValue","_handleButtonAction","itemToRemove","placeholderChoice","_addItem","_handleItemAction","hasShiftKey","_handleChoiceAction","hasActiveDropdown","_handleBackspace","lastItem","hasHighlightedItems","_presetChoices","elementItems","setLoading","_handleSearch","resultCount","_canCreateItem","canAddItem","foundChoice","newValue","searchableChoices","filterChoices","outerElement","inputElement","wasPrintableChar","charCodeAt","hasChildNodes","hasItems","highlightedChoice","addedItem","directionInt","nextEl","currentEl","startEl","sibling","getAdjacentEl","hasFocusedInput","touches","HTMLElement","firstChoice","offsetX","targetIsInput","passedEl","userTriggered","addItem","addGroup","userTemplates","templating","placeholderOption","caller"],"sourceRoot":""}