{"version":3,"file":"67435f31486b5532b3fc5bbc.js?3.6.14.7428b935c.1723600572441","mappings":"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,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU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","sources":["webpack://mono-repo/./node_modules/select2/dist/js/select2.full.js"],"sourcesContent":["/*!\r\n * Select2 4.0.3\r\n * https://select2.github.io\r\n *\r\n * Released under the MIT license\r\n * https://github.com/select2/select2/blob/master/LICENSE.md\r\n */\r\n(function (factory) {\r\n if (typeof define === 'function' && define.amd) {\r\n // AMD. Register as an anonymous module.\r\n define(['jquery'], factory);\r\n } else if (typeof exports === 'object') {\r\n // Node/CommonJS\r\n factory(require('jquery'));\r\n } else {\r\n // Browser globals\r\n factory(jQuery);\r\n }\r\n}(function (jQuery) {\r\n // This is needed so we can catch the AMD loader configuration and use it\r\n // The inner file should be wrapped (by `banner.start.js`) in a function that\r\n // returns the AMD loader references.\r\n var S2 =\r\n(function () {\r\n // Restore the Select2 AMD loader so it can be used\r\n // Needed mostly in the language files, where the loader is not inserted\r\n if (jQuery && jQuery.fn && jQuery.fn.select2 && jQuery.fn.select2.amd) {\r\n var S2 = jQuery.fn.select2.amd;\r\n }\r\nvar S2;(function () { if (!S2 || !S2.requirejs) {\nif (!S2) { S2 = {}; } else { require = S2; }\n/**\n * @license almond 0.3.1 Copyright (c) 2011-2014, The Dojo Foundation All Rights Reserved.\n * Available via the MIT or new BSD license.\n * see: http://github.com/jrburke/almond for details\n */\n//Going sloppy to avoid 'use strict' string cost, but strict practices should\n//be followed.\n/*jslint sloppy: true */\n/*global setTimeout: false */\n\nvar requirejs, require, define;\n(function (undef) {\n var main, req, makeMap, handlers,\n defined = {},\n waiting = {},\n config = {},\n defining = {},\n hasOwn = Object.prototype.hasOwnProperty,\n aps = [].slice,\n jsSuffixRegExp = /\\.js$/;\n\n function hasProp(obj, prop) {\n return hasOwn.call(obj, prop);\n }\n\n /**\n * Given a relative module name, like ./something, normalize it to\n * a real name that can be mapped to a path.\n * @param {String} name the relative name\n * @param {String} baseName a real name that the name arg is relative\n * to.\n * @returns {String} normalized name\n */\n function normalize(name, baseName) {\n var nameParts, nameSegment, mapValue, foundMap, lastIndex,\n foundI, foundStarMap, starI, i, j, part,\n baseParts = baseName && baseName.split(\"/\"),\n map = config.map,\n starMap = (map && map['*']) || {};\n\n //Adjust any relative paths.\n if (name && name.charAt(0) === \".\") {\n //If have a base name, try to normalize against it,\n //otherwise, assume it is a top-level require that will\n //be relative to baseUrl in the end.\n if (baseName) {\n name = name.split('/');\n lastIndex = name.length - 1;\n\n // Node .js allowance:\n if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) {\n name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, '');\n }\n\n //Lop off the last part of baseParts, so that . matches the\n //\"directory\" and not name of the baseName's module. For instance,\n //baseName of \"one/two/three\", maps to \"one/two/three.js\", but we\n //want the directory, \"one/two\" for this normalization.\n name = baseParts.slice(0, baseParts.length - 1).concat(name);\n\n //start trimDots\n for (i = 0; i < name.length; i += 1) {\n part = name[i];\n if (part === \".\") {\n name.splice(i, 1);\n i -= 1;\n } else if (part === \"..\") {\n if (i === 1 && (name[2] === '..' || name[0] === '..')) {\n //End of the line. Keep at least one non-dot\n //path segment at the front so it can be mapped\n //correctly to disk. Otherwise, there is likely\n //no path mapping for a path starting with '..'.\n //This can still fail, but catches the most reasonable\n //uses of ..\n break;\n } else if (i > 0) {\n name.splice(i - 1, 2);\n i -= 2;\n }\n }\n }\n //end trimDots\n\n name = name.join(\"/\");\n } else if (name.indexOf('./') === 0) {\n // No baseName, so this is ID is resolved relative\n // to baseUrl, pull off the leading dot.\n name = name.substring(2);\n }\n }\n\n //Apply map config if available.\n if ((baseParts || starMap) && map) {\n nameParts = name.split('/');\n\n for (i = nameParts.length; i > 0; i -= 1) {\n nameSegment = nameParts.slice(0, i).join(\"/\");\n\n if (baseParts) {\n //Find the longest baseName segment match in the config.\n //So, do joins on the biggest to smallest lengths of baseParts.\n for (j = baseParts.length; j > 0; j -= 1) {\n mapValue = map[baseParts.slice(0, j).join('/')];\n\n //baseName segment has config, find if it has one for\n //this name.\n if (mapValue) {\n mapValue = mapValue[nameSegment];\n if (mapValue) {\n //Match, update name to the new value.\n foundMap = mapValue;\n foundI = i;\n break;\n }\n }\n }\n }\n\n if (foundMap) {\n break;\n }\n\n //Check for a star map match, but just hold on to it,\n //if there is a shorter segment match later in a matching\n //config, then favor over this star map.\n if (!foundStarMap && starMap && starMap[nameSegment]) {\n foundStarMap = starMap[nameSegment];\n starI = i;\n }\n }\n\n if (!foundMap && foundStarMap) {\n foundMap = foundStarMap;\n foundI = starI;\n }\n\n if (foundMap) {\n nameParts.splice(0, foundI, foundMap);\n name = nameParts.join('/');\n }\n }\n\n return name;\n }\n\n function makeRequire(relName, forceSync) {\n return function () {\n //A version of a require function that passes a moduleName\n //value for items that may need to\n //look up paths relative to the moduleName\n var args = aps.call(arguments, 0);\n\n //If first arg is not require('string'), and there is only\n //one arg, it is the array form without a callback. Insert\n //a null so that the following concat is correct.\n if (typeof args[0] !== 'string' && args.length === 1) {\n args.push(null);\n }\n return req.apply(undef, args.concat([relName, forceSync]));\n };\n }\n\n function makeNormalize(relName) {\n return function (name) {\n return normalize(name, relName);\n };\n }\n\n function makeLoad(depName) {\n return function (value) {\n defined[depName] = value;\n };\n }\n\n function callDep(name) {\n if (hasProp(waiting, name)) {\n var args = waiting[name];\n delete waiting[name];\n defining[name] = true;\n main.apply(undef, args);\n }\n\n if (!hasProp(defined, name) && !hasProp(defining, name)) {\n throw new Error('No ' + name);\n }\n return defined[name];\n }\n\n //Turns a plugin!resource to [plugin, resource]\n //with the plugin being undefined if the name\n //did not have a plugin prefix.\n function splitPrefix(name) {\n var prefix,\n index = name ? name.indexOf('!') : -1;\n if (index > -1) {\n prefix = name.substring(0, index);\n name = name.substring(index + 1, name.length);\n }\n return [prefix, name];\n }\n\n /**\n * Makes a name map, normalizing the name, and using a plugin\n * for normalization if necessary. Grabs a ref to plugin\n * too, as an optimization.\n */\n makeMap = function (name, relName) {\n var plugin,\n parts = splitPrefix(name),\n prefix = parts[0];\n\n name = parts[1];\n\n if (prefix) {\n prefix = normalize(prefix, relName);\n plugin = callDep(prefix);\n }\n\n //Normalize according\n if (prefix) {\n if (plugin && plugin.normalize) {\n name = plugin.normalize(name, makeNormalize(relName));\n } else {\n name = normalize(name, relName);\n }\n } else {\n name = normalize(name, relName);\n parts = splitPrefix(name);\n prefix = parts[0];\n name = parts[1];\n if (prefix) {\n plugin = callDep(prefix);\n }\n }\n\n //Using ridiculous property names for space reasons\n return {\n f: prefix ? prefix + '!' + name : name, //fullName\n n: name,\n pr: prefix,\n p: plugin\n };\n };\n\n function makeConfig(name) {\n return function () {\n return (config && config.config && config.config[name]) || {};\n };\n }\n\n handlers = {\n require: function (name) {\n return makeRequire(name);\n },\n exports: function (name) {\n var e = defined[name];\n if (typeof e !== 'undefined') {\n return e;\n } else {\n return (defined[name] = {});\n }\n },\n module: function (name) {\n return {\n id: name,\n uri: '',\n exports: defined[name],\n config: makeConfig(name)\n };\n }\n };\n\n main = function (name, deps, callback, relName) {\n var cjsModule, depName, ret, map, i,\n args = [],\n callbackType = typeof callback,\n usingExports;\n\n //Use name if no relName\n relName = relName || name;\n\n //Call the callback to define the module, if necessary.\n if (callbackType === 'undefined' || callbackType === 'function') {\n //Pull out the defined dependencies and pass the ordered\n //values to the callback.\n //Default to [require, exports, module] if no deps\n deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps;\n for (i = 0; i < deps.length; i += 1) {\n map = makeMap(deps[i], relName);\n depName = map.f;\n\n //Fast path CommonJS standard dependencies.\n if (depName === \"require\") {\n args[i] = handlers.require(name);\n } else if (depName === \"exports\") {\n //CommonJS module spec 1.1\n args[i] = handlers.exports(name);\n usingExports = true;\n } else if (depName === \"module\") {\n //CommonJS module spec 1.1\n cjsModule = args[i] = handlers.module(name);\n } else if (hasProp(defined, depName) ||\n hasProp(waiting, depName) ||\n hasProp(defining, depName)) {\n args[i] = callDep(depName);\n } else if (map.p) {\n map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {});\n args[i] = defined[depName];\n } else {\n throw new Error(name + ' missing ' + depName);\n }\n }\n\n ret = callback ? callback.apply(defined[name], args) : undefined;\n\n if (name) {\n //If setting exports via \"module\" is in play,\n //favor that over return value and exports. After that,\n //favor a non-undefined return value over exports use.\n if (cjsModule && cjsModule.exports !== undef &&\n cjsModule.exports !== defined[name]) {\n defined[name] = cjsModule.exports;\n } else if (ret !== undef || !usingExports) {\n //Use the return value from the function.\n defined[name] = ret;\n }\n }\n } else if (name) {\n //May just be an object definition for the module. Only\n //worry about defining if have a module name.\n defined[name] = callback;\n }\n };\n\n requirejs = require = req = function (deps, callback, relName, forceSync, alt) {\n if (typeof deps === \"string\") {\n if (handlers[deps]) {\n //callback in this case is really relName\n return handlers[deps](callback);\n }\n //Just return the module wanted. In this scenario, the\n //deps arg is the module name, and second arg (if passed)\n //is just the relName.\n //Normalize module name, if it contains . or ..\n return callDep(makeMap(deps, callback).f);\n } else if (!deps.splice) {\n //deps is a config object, not an array.\n config = deps;\n if (config.deps) {\n req(config.deps, config.callback);\n }\n if (!callback) {\n return;\n }\n\n if (callback.splice) {\n //callback is an array, which means it is a dependency list.\n //Adjust args if there are dependencies\n deps = callback;\n callback = relName;\n relName = null;\n } else {\n deps = undef;\n }\n }\n\n //Support require(['a'])\n callback = callback || function () {};\n\n //If relName is a function, it is an errback handler,\n //so remove it.\n if (typeof relName === 'function') {\n relName = forceSync;\n forceSync = alt;\n }\n\n //Simulate async callback;\n if (forceSync) {\n main(undef, deps, callback, relName);\n } else {\n //Using a non-zero value because of concern for what old browsers\n //do, and latest browsers \"upgrade\" to 4 if lower value is used:\n //http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout:\n //If want a value immediately, use require('id') instead -- something\n //that works in almond on the global level, but not guaranteed and\n //unlikely to work in other AMD implementations.\n setTimeout(function () {\n main(undef, deps, callback, relName);\n }, 4);\n }\n\n return req;\n };\n\n /**\n * Just drops the config on the floor, but returns req in case\n * the config return value is used.\n */\n req.config = function (cfg) {\n return req(cfg);\n };\n\n /**\n * Expose module registry for debugging and tooling\n */\n requirejs._defined = defined;\n\n define = function (name, deps, callback) {\n if (typeof name !== 'string') {\n throw new Error('See almond README: incorrect module build, no module name');\n }\n\n //This module may not have dependencies\n if (!deps.splice) {\n //deps is not an array, so probably means\n //an object literal or factory function for\n //the value. Adjust args.\n callback = deps;\n deps = [];\n }\n\n if (!hasProp(defined, name) && !hasProp(waiting, name)) {\n waiting[name] = [name, deps, callback];\n }\n };\n\n define.amd = {\n jQuery: true\n };\n}());\n\nS2.requirejs = requirejs;S2.require = require;S2.define = define;\n}\n}());\nS2.define(\"almond\", function(){});\n\n/* global jQuery:false, $:false */\r\nS2.define('jquery',[],function () {\r\n var _$ = jQuery || $;\r\n\r\n if (_$ == null && console && console.error) {\r\n console.error(\r\n 'Select2: An instance of jQuery or a jQuery-compatible library was not ' +\r\n 'found. Make sure that you are including jQuery before Select2 on your ' +\r\n 'web page.'\r\n );\r\n }\r\n\r\n return _$;\r\n});\r\n\nS2.define('select2/utils',[\r\n 'jquery'\r\n], function ($) {\r\n var Utils = {};\r\n\r\n Utils.Extend = function (ChildClass, SuperClass) {\r\n var __hasProp = {}.hasOwnProperty;\r\n\r\n function BaseConstructor () {\r\n this.constructor = ChildClass;\r\n }\r\n\r\n for (var key in SuperClass) {\r\n if (__hasProp.call(SuperClass, key)) {\r\n ChildClass[key] = SuperClass[key];\r\n }\r\n }\r\n\r\n BaseConstructor.prototype = SuperClass.prototype;\r\n ChildClass.prototype = new BaseConstructor();\r\n ChildClass.__super__ = SuperClass.prototype;\r\n\r\n return ChildClass;\r\n };\r\n\r\n function getMethods (theClass) {\r\n var proto = theClass.prototype;\r\n\r\n var methods = [];\r\n\r\n for (var methodName in proto) {\r\n var m = proto[methodName];\r\n\r\n if (typeof m !== 'function') {\r\n continue;\r\n }\r\n\r\n if (methodName === 'constructor') {\r\n continue;\r\n }\r\n\r\n methods.push(methodName);\r\n }\r\n\r\n return methods;\r\n }\r\n\r\n Utils.Decorate = function (SuperClass, DecoratorClass) {\r\n var decoratedMethods = getMethods(DecoratorClass);\r\n var superMethods = getMethods(SuperClass);\r\n\r\n function DecoratedClass () {\r\n var unshift = Array.prototype.unshift;\r\n\r\n var argCount = DecoratorClass.prototype.constructor.length;\r\n\r\n var calledConstructor = SuperClass.prototype.constructor;\r\n\r\n if (argCount > 0) {\r\n unshift.call(arguments, SuperClass.prototype.constructor);\r\n\r\n calledConstructor = DecoratorClass.prototype.constructor;\r\n }\r\n\r\n calledConstructor.apply(this, arguments);\r\n }\r\n\r\n DecoratorClass.displayName = SuperClass.displayName;\r\n\r\n function ctr () {\r\n this.constructor = DecoratedClass;\r\n }\r\n\r\n DecoratedClass.prototype = new ctr();\r\n\r\n for (var m = 0; m < superMethods.length; m++) {\r\n var superMethod = superMethods[m];\r\n\r\n DecoratedClass.prototype[superMethod] =\r\n SuperClass.prototype[superMethod];\r\n }\r\n\r\n var calledMethod = function (methodName) {\r\n // Stub out the original method if it's not decorating an actual method\r\n var originalMethod = function () {};\r\n\r\n if (methodName in DecoratedClass.prototype) {\r\n originalMethod = DecoratedClass.prototype[methodName];\r\n }\r\n\r\n var decoratedMethod = DecoratorClass.prototype[methodName];\r\n\r\n return function () {\r\n var unshift = Array.prototype.unshift;\r\n\r\n unshift.call(arguments, originalMethod);\r\n\r\n return decoratedMethod.apply(this, arguments);\r\n };\r\n };\r\n\r\n for (var d = 0; d < decoratedMethods.length; d++) {\r\n var decoratedMethod = decoratedMethods[d];\r\n\r\n DecoratedClass.prototype[decoratedMethod] = calledMethod(decoratedMethod);\r\n }\r\n\r\n return DecoratedClass;\r\n };\r\n\r\n var Observable = function () {\r\n this.listeners = {};\r\n };\r\n\r\n Observable.prototype.on = function (event, callback) {\r\n this.listeners = this.listeners || {};\r\n\r\n if (event in this.listeners) {\r\n this.listeners[event].push(callback);\r\n } else {\r\n this.listeners[event] = [callback];\r\n }\r\n };\r\n\r\n Observable.prototype.trigger = function (event) {\r\n var slice = Array.prototype.slice;\r\n var params = slice.call(arguments, 1);\r\n\r\n this.listeners = this.listeners || {};\r\n\r\n // Params should always come in as an array\r\n if (params == null) {\r\n params = [];\r\n }\r\n\r\n // If there are no arguments to the event, use a temporary object\r\n if (params.length === 0) {\r\n params.push({});\r\n }\r\n\r\n // Set the `_type` of the first object to the event\r\n params[0]._type = event;\r\n\r\n if (event in this.listeners) {\r\n this.invoke(this.listeners[event], slice.call(arguments, 1));\r\n }\r\n\r\n if ('*' in this.listeners) {\r\n this.invoke(this.listeners['*'], arguments);\r\n }\r\n };\r\n\r\n Observable.prototype.invoke = function (listeners, params) {\r\n for (var i = 0, len = listeners.length; i < len; i++) {\r\n listeners[i].apply(this, params);\r\n }\r\n };\r\n\r\n Utils.Observable = Observable;\r\n\r\n Utils.generateChars = function (length) {\r\n var chars = '';\r\n\r\n for (var i = 0; i < length; i++) {\r\n var randomChar = Math.floor(Math.random() * 36);\r\n chars += randomChar.toString(36);\r\n }\r\n\r\n return chars;\r\n };\r\n\r\n Utils.bind = function (func, context) {\r\n return function () {\r\n func.apply(context, arguments);\r\n };\r\n };\r\n\r\n Utils._convertData = function (data) {\r\n for (var originalKey in data) {\r\n var keys = originalKey.split('-');\r\n\r\n var dataLevel = data;\r\n\r\n if (keys.length === 1) {\r\n continue;\r\n }\r\n\r\n for (var k = 0; k < keys.length; k++) {\r\n var key = keys[k];\r\n\r\n // Lowercase the first letter\r\n // By default, dash-separated becomes camelCase\r\n key = key.substring(0, 1).toLowerCase() + key.substring(1);\r\n\r\n if (!(key in dataLevel)) {\r\n dataLevel[key] = {};\r\n }\r\n\r\n if (k == keys.length - 1) {\r\n dataLevel[key] = data[originalKey];\r\n }\r\n\r\n dataLevel = dataLevel[key];\r\n }\r\n\r\n delete data[originalKey];\r\n }\r\n\r\n return data;\r\n };\r\n\r\n Utils.hasScroll = function (index, el) {\r\n // Adapted from the function created by @ShadowScripter\r\n // and adapted by @BillBarry on the Stack Exchange Code Review website.\r\n // The original code can be found at\r\n // http://codereview.stackexchange.com/q/13338\r\n // and was designed to be used with the Sizzle selector engine.\r\n\r\n var $el = $(el);\r\n var overflowX = el.style.overflowX;\r\n var overflowY = el.style.overflowY;\r\n\r\n //Check both x and y declarations\r\n if (overflowX === overflowY &&\r\n (overflowY === 'hidden' || overflowY === 'visible')) {\r\n return false;\r\n }\r\n\r\n if (overflowX === 'scroll' || overflowY === 'scroll') {\r\n return true;\r\n }\r\n\r\n return ($el.innerHeight() < el.scrollHeight ||\r\n $el.innerWidth() < el.scrollWidth);\r\n };\r\n\r\n Utils.escapeMarkup = function (markup) {\r\n var replaceMap = {\r\n '\\\\': '\',\r\n '&': '&',\r\n '<': '<',\r\n '>': '>',\r\n '\"': '"',\r\n '\\'': ''',\r\n '/': '/'\r\n };\r\n\r\n // Do not try to escape the markup if it's not a string\r\n if (typeof markup !== 'string') {\r\n return markup;\r\n }\r\n\r\n return String(markup).replace(/[&<>\"'\\/\\\\]/g, function (match) {\r\n return replaceMap[match];\r\n });\r\n };\r\n\r\n // Append an array of jQuery nodes to a given element.\r\n Utils.appendMany = function ($element, $nodes) {\r\n // jQuery 1.7.x does not support $.fn.append() with an array\r\n // Fall back to a jQuery object collection using $.fn.add()\r\n if ($.fn.jquery.substr(0, 3) === '1.7') {\r\n var $jqNodes = $();\r\n\r\n $.map($nodes, function (node) {\r\n $jqNodes = $jqNodes.add(node);\r\n });\r\n\r\n $nodes = $jqNodes;\r\n }\r\n\r\n $element.append($nodes);\r\n };\r\n\r\n return Utils;\r\n});\r\n\nS2.define('select2/results',[\r\n 'jquery',\r\n './utils'\r\n], function ($, Utils) {\r\n function Results ($element, options, dataAdapter) {\r\n this.$element = $element;\r\n this.data = dataAdapter;\r\n this.options = options;\r\n\r\n Results.__super__.constructor.call(this);\r\n }\r\n\r\n Utils.Extend(Results, Utils.Observable);\r\n\r\n Results.prototype.render = function () {\r\n var $results = $(\r\n ''\r\n );\r\n\r\n if (this.options.get('multiple')) {\r\n $results.attr('aria-multiselectable', 'true');\r\n }\r\n\r\n this.$results = $results;\r\n\r\n return $results;\r\n };\r\n\r\n Results.prototype.clear = function () {\r\n this.$results.empty();\r\n };\r\n\r\n Results.prototype.displayMessage = function (params) {\r\n var escapeMarkup = this.options.get('escapeMarkup');\r\n\r\n this.clear();\r\n this.hideLoading();\r\n\r\n var $message = $(\r\n '
  • '\r\n );\r\n\r\n var message = this.options.get('translations').get(params.message);\r\n\r\n $message.append(\r\n escapeMarkup(\r\n message(params.args)\r\n )\r\n );\r\n\r\n $message[0].className += ' select2-results__message';\r\n\r\n this.$results.append($message);\r\n };\r\n\r\n Results.prototype.hideMessages = function () {\r\n this.$results.find('.select2-results__message').remove();\r\n };\r\n\r\n Results.prototype.append = function (data) {\r\n this.hideLoading();\r\n\r\n var $options = [];\r\n\r\n if (data.results == null || data.results.length === 0) {\r\n if (this.$results.children().length === 0) {\r\n this.trigger('results:message', {\r\n message: 'noResults'\r\n });\r\n }\r\n\r\n return;\r\n }\r\n\r\n data.results = this.sort(data.results);\r\n\r\n for (var d = 0; d < data.results.length; d++) {\r\n var item = data.results[d];\r\n\r\n var $option = this.option(item);\r\n\r\n $options.push($option);\r\n }\r\n\r\n this.$results.append($options);\r\n };\r\n\r\n Results.prototype.position = function ($results, $dropdown) {\r\n var $resultsContainer = $dropdown.find('.select2-results');\r\n $resultsContainer.append($results);\r\n };\r\n\r\n Results.prototype.sort = function (data) {\r\n var sorter = this.options.get('sorter');\r\n\r\n return sorter(data);\r\n };\r\n\r\n Results.prototype.highlightFirstItem = function () {\r\n var $options = this.$results\r\n .find('.select2-results__option[aria-selected]');\r\n\r\n var $selected = $options.filter('[aria-selected=true]');\r\n\r\n // Check if there are any selected options\r\n if ($selected.length > 0) {\r\n // If there are selected options, highlight the first\r\n $selected.first().trigger('mouseenter');\r\n } else {\r\n // If there are no selected options, highlight the first option\r\n // in the dropdown\r\n $options.first().trigger('mouseenter');\r\n }\r\n\r\n this.ensureHighlightVisible();\r\n };\r\n\r\n Results.prototype.setClasses = function () {\r\n var self = this;\r\n\r\n this.data.current(function (selected) {\r\n var selectedIds = $.map(selected, function (s) {\r\n return s.id.toString();\r\n });\r\n\r\n var $options = self.$results\r\n .find('.select2-results__option[aria-selected]');\r\n\r\n $options.each(function () {\r\n var $option = $(this);\r\n\r\n var item = $.data(this, 'data');\r\n\r\n // id needs to be converted to a string when comparing\r\n var id = '' + item.id;\r\n\r\n if ((item.element != null && item.element.selected) ||\r\n (item.element == null && $.inArray(id, selectedIds) > -1)) {\r\n $option.attr('aria-selected', 'true');\r\n } else {\r\n $option.attr('aria-selected', 'false');\r\n }\r\n });\r\n\r\n });\r\n };\r\n\r\n Results.prototype.showLoading = function (params) {\r\n this.hideLoading();\r\n\r\n var loadingMore = this.options.get('translations').get('searching');\r\n\r\n var loading = {\r\n disabled: true,\r\n loading: true,\r\n text: loadingMore(params)\r\n };\r\n var $loading = this.option(loading);\r\n $loading.className += ' loading-results';\r\n\r\n this.$results.prepend($loading);\r\n };\r\n\r\n Results.prototype.hideLoading = function () {\r\n this.$results.find('.loading-results').remove();\r\n };\r\n\r\n Results.prototype.option = function (data) {\r\n var option = document.createElement('li');\r\n option.className = 'select2-results__option';\r\n\r\n var attrs = {\r\n 'role': 'treeitem',\r\n 'aria-selected': 'false'\r\n };\r\n\r\n if (data.disabled) {\r\n delete attrs['aria-selected'];\r\n attrs['aria-disabled'] = 'true';\r\n }\r\n\r\n if (data.id == null) {\r\n delete attrs['aria-selected'];\r\n }\r\n\r\n if (data._resultId != null) {\r\n option.id = data._resultId;\r\n }\r\n\r\n if (data.title) {\r\n option.title = data.title;\r\n }\r\n\r\n if (data.children) {\r\n attrs.role = 'group';\r\n attrs['aria-label'] = data.text;\r\n delete attrs['aria-selected'];\r\n }\r\n\r\n for (var attr in attrs) {\r\n var val = attrs[attr];\r\n\r\n option.setAttribute(attr, val);\r\n }\r\n\r\n if (data.children) {\r\n var $option = $(option);\r\n\r\n var label = document.createElement('strong');\r\n label.className = 'select2-results__group';\r\n\r\n var $label = $(label);\r\n this.template(data, label);\r\n\r\n var $children = [];\r\n\r\n for (var c = 0; c < data.children.length; c++) {\r\n var child = data.children[c];\r\n\r\n var $child = this.option(child);\r\n\r\n $children.push($child);\r\n }\r\n\r\n var $childrenContainer = $('', {\r\n 'class': 'select2-results__options select2-results__options--nested'\r\n });\r\n\r\n $childrenContainer.append($children);\r\n\r\n $option.append(label);\r\n $option.append($childrenContainer);\r\n } else {\r\n this.template(data, option);\r\n }\r\n\r\n $.data(option, 'data', data);\r\n\r\n return option;\r\n };\r\n\r\n Results.prototype.bind = function (container, $container) {\r\n var self = this;\r\n\r\n var id = container.id + '-results';\r\n\r\n this.$results.attr('id', id);\r\n\r\n container.on('results:all', function (params) {\r\n self.clear();\r\n self.append(params.data);\r\n\r\n if (container.isOpen()) {\r\n self.setClasses();\r\n self.highlightFirstItem();\r\n }\r\n });\r\n\r\n container.on('results:append', function (params) {\r\n self.append(params.data);\r\n\r\n if (container.isOpen()) {\r\n self.setClasses();\r\n }\r\n });\r\n\r\n container.on('query', function (params) {\r\n self.hideMessages();\r\n self.showLoading(params);\r\n });\r\n\r\n container.on('select', function () {\r\n if (!container.isOpen()) {\r\n return;\r\n }\r\n\r\n self.setClasses();\r\n self.highlightFirstItem();\r\n });\r\n\r\n container.on('unselect', function () {\r\n if (!container.isOpen()) {\r\n return;\r\n }\r\n\r\n self.setClasses();\r\n self.highlightFirstItem();\r\n });\r\n\r\n container.on('open', function () {\r\n // When the dropdown is open, aria-expended=\"true\"\r\n self.$results.attr('aria-expanded', 'true');\r\n self.$results.attr('aria-hidden', 'false');\r\n\r\n self.setClasses();\r\n self.ensureHighlightVisible();\r\n });\r\n\r\n container.on('close', function () {\r\n // When the dropdown is closed, aria-expended=\"false\"\r\n self.$results.attr('aria-expanded', 'false');\r\n self.$results.attr('aria-hidden', 'true');\r\n self.$results.removeAttr('aria-activedescendant');\r\n });\r\n\r\n container.on('results:toggle', function () {\r\n var $highlighted = self.getHighlightedResults();\r\n\r\n if ($highlighted.length === 0) {\r\n return;\r\n }\r\n\r\n $highlighted.trigger('mouseup');\r\n });\r\n\r\n container.on('results:select', function () {\r\n var $highlighted = self.getHighlightedResults();\r\n\r\n if ($highlighted.length === 0) {\r\n return;\r\n }\r\n\r\n var data = $highlighted.data('data');\r\n\r\n if ($highlighted.attr('aria-selected') == 'true') {\r\n self.trigger('close', {});\r\n } else {\r\n self.trigger('select', {\r\n data: data\r\n });\r\n }\r\n });\r\n\r\n container.on('results:previous', function () {\r\n var $highlighted = self.getHighlightedResults();\r\n\r\n var $options = self.$results.find('[aria-selected]');\r\n\r\n var currentIndex = $options.index($highlighted);\r\n\r\n // If we are already at te top, don't move further\r\n if (currentIndex === 0) {\r\n return;\r\n }\r\n\r\n var nextIndex = currentIndex - 1;\r\n\r\n // If none are highlighted, highlight the first\r\n if ($highlighted.length === 0) {\r\n nextIndex = 0;\r\n }\r\n\r\n var $next = $options.eq(nextIndex);\r\n\r\n $next.trigger('mouseenter');\r\n\r\n var currentOffset = self.$results.offset().top;\r\n var nextTop = $next.offset().top;\r\n var nextOffset = self.$results.scrollTop() + (nextTop - currentOffset);\r\n\r\n if (nextIndex === 0) {\r\n self.$results.scrollTop(0);\r\n } else if (nextTop - currentOffset < 0) {\r\n self.$results.scrollTop(nextOffset);\r\n }\r\n });\r\n\r\n container.on('results:next', function () {\r\n var $highlighted = self.getHighlightedResults();\r\n\r\n var $options = self.$results.find('[aria-selected]');\r\n\r\n var currentIndex = $options.index($highlighted);\r\n\r\n var nextIndex = currentIndex + 1;\r\n\r\n // If we are at the last option, stay there\r\n if (nextIndex >= $options.length) {\r\n return;\r\n }\r\n\r\n var $next = $options.eq(nextIndex);\r\n\r\n $next.trigger('mouseenter');\r\n\r\n var currentOffset = self.$results.offset().top +\r\n self.$results.outerHeight(false);\r\n var nextBottom = $next.offset().top + $next.outerHeight(false);\r\n var nextOffset = self.$results.scrollTop() + nextBottom - currentOffset;\r\n\r\n if (nextIndex === 0) {\r\n self.$results.scrollTop(0);\r\n } else if (nextBottom > currentOffset) {\r\n self.$results.scrollTop(nextOffset);\r\n }\r\n });\r\n\r\n container.on('results:focus', function (params) {\r\n params.element.addClass('select2-results__option--highlighted');\r\n });\r\n\r\n container.on('results:message', function (params) {\r\n self.displayMessage(params);\r\n });\r\n\r\n if ($.fn.mousewheel) {\r\n this.$results.on('mousewheel', function (e) {\r\n var top = self.$results.scrollTop();\r\n\r\n var bottom = self.$results.get(0).scrollHeight - top + e.deltaY;\r\n\r\n var isAtTop = e.deltaY > 0 && top - e.deltaY <= 0;\r\n var isAtBottom = e.deltaY < 0 && bottom <= self.$results.height();\r\n\r\n if (isAtTop) {\r\n self.$results.scrollTop(0);\r\n\r\n e.preventDefault();\r\n e.stopPropagation();\r\n } else if (isAtBottom) {\r\n self.$results.scrollTop(\r\n self.$results.get(0).scrollHeight - self.$results.height()\r\n );\r\n\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n });\r\n }\r\n\r\n this.$results.on('mouseup', '.select2-results__option[aria-selected]',\r\n function (evt) {\r\n var $this = $(this);\r\n\r\n var data = $this.data('data');\r\n\r\n if ($this.attr('aria-selected') === 'true') {\r\n if (self.options.get('multiple')) {\r\n self.trigger('unselect', {\r\n originalEvent: evt,\r\n data: data\r\n });\r\n } else {\r\n self.trigger('close', {});\r\n }\r\n\r\n return;\r\n }\r\n\r\n self.trigger('select', {\r\n originalEvent: evt,\r\n data: data\r\n });\r\n });\r\n\r\n this.$results.on('mouseenter', '.select2-results__option[aria-selected]',\r\n function (evt) {\r\n var data = $(this).data('data');\r\n\r\n self.getHighlightedResults()\r\n .removeClass('select2-results__option--highlighted');\r\n\r\n self.trigger('results:focus', {\r\n data: data,\r\n element: $(this)\r\n });\r\n });\r\n };\r\n\r\n Results.prototype.getHighlightedResults = function () {\r\n var $highlighted = this.$results\r\n .find('.select2-results__option--highlighted');\r\n\r\n return $highlighted;\r\n };\r\n\r\n Results.prototype.destroy = function () {\r\n this.$results.remove();\r\n };\r\n\r\n Results.prototype.ensureHighlightVisible = function () {\r\n var $highlighted = this.getHighlightedResults();\r\n\r\n if ($highlighted.length === 0) {\r\n return;\r\n }\r\n\r\n var $options = this.$results.find('[aria-selected]');\r\n\r\n var currentIndex = $options.index($highlighted);\r\n\r\n var currentOffset = this.$results.offset().top;\r\n var nextTop = $highlighted.offset().top;\r\n var nextOffset = this.$results.scrollTop() + (nextTop - currentOffset);\r\n\r\n var offsetDelta = nextTop - currentOffset;\r\n nextOffset -= $highlighted.outerHeight(false) * 2;\r\n\r\n if (currentIndex <= 2) {\r\n this.$results.scrollTop(0);\r\n } else if (offsetDelta > this.$results.outerHeight() || offsetDelta < 0) {\r\n this.$results.scrollTop(nextOffset);\r\n }\r\n };\r\n\r\n Results.prototype.template = function (result, container) {\r\n var template = this.options.get('templateResult');\r\n var escapeMarkup = this.options.get('escapeMarkup');\r\n\r\n var content = template(result, container);\r\n\r\n if (content == null) {\r\n container.style.display = 'none';\r\n } else if (typeof content === 'string') {\r\n container.innerHTML = escapeMarkup(content);\r\n } else {\r\n $(container).append(content);\r\n }\r\n };\r\n\r\n return Results;\r\n});\r\n\nS2.define('select2/keys',[\r\n\r\n], function () {\r\n var KEYS = {\r\n BACKSPACE: 8,\r\n TAB: 9,\r\n ENTER: 13,\r\n SHIFT: 16,\r\n CTRL: 17,\r\n ALT: 18,\r\n ESC: 27,\r\n SPACE: 32,\r\n PAGE_UP: 33,\r\n PAGE_DOWN: 34,\r\n END: 35,\r\n HOME: 36,\r\n LEFT: 37,\r\n UP: 38,\r\n RIGHT: 39,\r\n DOWN: 40,\r\n DELETE: 46\r\n };\r\n\r\n return KEYS;\r\n});\r\n\nS2.define('select2/selection/base',[\r\n 'jquery',\r\n '../utils',\r\n '../keys'\r\n], function ($, Utils, KEYS) {\r\n function BaseSelection ($element, options) {\r\n this.$element = $element;\r\n this.options = options;\r\n\r\n BaseSelection.__super__.constructor.call(this);\r\n }\r\n\r\n Utils.Extend(BaseSelection, Utils.Observable);\r\n\r\n BaseSelection.prototype.render = function () {\r\n var $selection = $(\r\n '' +\r\n ''\r\n );\r\n\r\n this._tabindex = 0;\r\n\r\n if (this.$element.data('old-tabindex') != null) {\r\n this._tabindex = this.$element.data('old-tabindex');\r\n } else if (this.$element.attr('tabindex') != null) {\r\n this._tabindex = this.$element.attr('tabindex');\r\n }\r\n\r\n $selection.attr('title', this.$element.attr('title'));\r\n $selection.attr('tabindex', this._tabindex);\r\n\r\n this.$selection = $selection;\r\n\r\n return $selection;\r\n };\r\n\r\n BaseSelection.prototype.bind = function (container, $container) {\r\n var self = this;\r\n\r\n var id = container.id + '-container';\r\n var resultsId = container.id + '-results';\r\n\r\n this.container = container;\r\n\r\n this.$selection.on('focus', function (evt) {\r\n self.trigger('focus', evt);\r\n });\r\n\r\n this.$selection.on('blur', function (evt) {\r\n self._handleBlur(evt);\r\n });\r\n\r\n this.$selection.on('keydown', function (evt) {\r\n self.trigger('keypress', evt);\r\n\r\n if (evt.which === KEYS.SPACE) {\r\n evt.preventDefault();\r\n }\r\n });\r\n\r\n container.on('results:focus', function (params) {\r\n self.$selection.attr('aria-activedescendant', params.data._resultId);\r\n });\r\n\r\n container.on('selection:update', function (params) {\r\n self.update(params.data);\r\n });\r\n\r\n container.on('open', function () {\r\n // When the dropdown is open, aria-expanded=\"true\"\r\n self.$selection.attr('aria-expanded', 'true');\r\n self.$selection.attr('aria-owns', resultsId);\r\n\r\n self._attachCloseHandler(container);\r\n });\r\n\r\n container.on('close', function () {\r\n // When the dropdown is closed, aria-expanded=\"false\"\r\n self.$selection.attr('aria-expanded', 'false');\r\n self.$selection.removeAttr('aria-activedescendant');\r\n self.$selection.removeAttr('aria-owns');\r\n\r\n self.$selection.focus();\r\n\r\n self._detachCloseHandler(container);\r\n });\r\n\r\n container.on('enable', function () {\r\n self.$selection.attr('tabindex', self._tabindex);\r\n });\r\n\r\n container.on('disable', function () {\r\n self.$selection.attr('tabindex', '-1');\r\n });\r\n };\r\n\r\n BaseSelection.prototype._handleBlur = function (evt) {\r\n var self = this;\r\n\r\n // This needs to be delayed as the active element is the body when the tab\r\n // key is pressed, possibly along with others.\r\n window.setTimeout(function () {\r\n // Don't trigger `blur` if the focus is still in the selection\r\n if (\r\n (document.activeElement == self.$selection[0]) ||\r\n ($.contains(self.$selection[0], document.activeElement))\r\n ) {\r\n return;\r\n }\r\n\r\n self.trigger('blur', evt);\r\n }, 1);\r\n };\r\n\r\n BaseSelection.prototype._attachCloseHandler = function (container) {\r\n var self = this;\r\n\r\n $(document.body).on('mousedown.select2.' + container.id, function (e) {\r\n var $target = $(e.target);\r\n\r\n var $select = $target.closest('.select2');\r\n\r\n var $all = $('.select2.select2-container--open');\r\n\r\n $all.each(function () {\r\n var $this = $(this);\r\n\r\n if (this == $select[0]) {\r\n return;\r\n }\r\n\r\n var $element = $this.data('element');\r\n\r\n $element.select2('close');\r\n });\r\n });\r\n };\r\n\r\n BaseSelection.prototype._detachCloseHandler = function (container) {\r\n $(document.body).off('mousedown.select2.' + container.id);\r\n };\r\n\r\n BaseSelection.prototype.position = function ($selection, $container) {\r\n var $selectionContainer = $container.find('.selection');\r\n $selectionContainer.append($selection);\r\n };\r\n\r\n BaseSelection.prototype.destroy = function () {\r\n this._detachCloseHandler(this.container);\r\n };\r\n\r\n BaseSelection.prototype.update = function (data) {\r\n throw new Error('The `update` method must be defined in child classes.');\r\n };\r\n\r\n return BaseSelection;\r\n});\r\n\nS2.define('select2/selection/single',[\r\n 'jquery',\r\n './base',\r\n '../utils',\r\n '../keys'\r\n], function ($, BaseSelection, Utils, KEYS) {\r\n function SingleSelection () {\r\n SingleSelection.__super__.constructor.apply(this, arguments);\r\n }\r\n\r\n Utils.Extend(SingleSelection, BaseSelection);\r\n\r\n SingleSelection.prototype.render = function () {\r\n var $selection = SingleSelection.__super__.render.call(this);\r\n\r\n $selection.addClass('select2-selection--single');\r\n\r\n $selection.html(\r\n '' +\r\n '' +\r\n '' +\r\n ''\r\n );\r\n\r\n return $selection;\r\n };\r\n\r\n SingleSelection.prototype.bind = function (container, $container) {\r\n var self = this;\r\n\r\n SingleSelection.__super__.bind.apply(this, arguments);\r\n\r\n var id = container.id + '-container';\r\n\r\n this.$selection.find('.select2-selection__rendered').attr('id', id);\r\n this.$selection.attr('aria-labelledby', id);\r\n\r\n this.$selection.on('mousedown', function (evt) {\r\n // Only respond to left clicks\r\n if (evt.which !== 1) {\r\n return;\r\n }\r\n\r\n self.trigger('toggle', {\r\n originalEvent: evt\r\n });\r\n });\r\n\r\n this.$selection.on('focus', function (evt) {\r\n // User focuses on the container\r\n });\r\n\r\n this.$selection.on('blur', function (evt) {\r\n // User exits the container\r\n });\r\n\r\n container.on('focus', function (evt) {\r\n if (!container.isOpen()) {\r\n self.$selection.focus();\r\n }\r\n });\r\n\r\n container.on('selection:update', function (params) {\r\n self.update(params.data);\r\n });\r\n };\r\n\r\n SingleSelection.prototype.clear = function () {\r\n this.$selection.find('.select2-selection__rendered').empty();\r\n };\r\n\r\n SingleSelection.prototype.display = function (data, container) {\r\n var template = this.options.get('templateSelection');\r\n var escapeMarkup = this.options.get('escapeMarkup');\r\n\r\n return escapeMarkup(template(data, container));\r\n };\r\n\r\n SingleSelection.prototype.selectionContainer = function () {\r\n return $('');\r\n };\r\n\r\n SingleSelection.prototype.update = function (data) {\r\n if (data.length === 0) {\r\n this.clear();\r\n return;\r\n }\r\n\r\n var selection = data[0];\r\n\r\n var $rendered = this.$selection.find('.select2-selection__rendered');\r\n var formatted = this.display(selection, $rendered);\r\n\r\n $rendered.empty().append(formatted);\r\n $rendered.prop('title', selection.title || selection.text);\r\n };\r\n\r\n return SingleSelection;\r\n});\r\n\nS2.define('select2/selection/multiple',[\r\n 'jquery',\r\n './base',\r\n '../utils'\r\n], function ($, BaseSelection, Utils) {\r\n function MultipleSelection ($element, options) {\r\n MultipleSelection.__super__.constructor.apply(this, arguments);\r\n }\r\n\r\n Utils.Extend(MultipleSelection, BaseSelection);\r\n\r\n MultipleSelection.prototype.render = function () {\r\n var $selection = MultipleSelection.__super__.render.call(this);\r\n\r\n $selection.addClass('select2-selection--multiple');\r\n\r\n $selection.html(\r\n ''\r\n );\r\n\r\n return $selection;\r\n };\r\n\r\n MultipleSelection.prototype.bind = function (container, $container) {\r\n var self = this;\r\n\r\n MultipleSelection.__super__.bind.apply(this, arguments);\r\n\r\n this.$selection.on('click', function (evt) {\r\n self.trigger('toggle', {\r\n originalEvent: evt\r\n });\r\n });\r\n\r\n this.$selection.on(\r\n 'click',\r\n '.select2-selection__choice__remove',\r\n function (evt) {\r\n // Ignore the event if it is disabled\r\n if (self.options.get('disabled')) {\r\n return;\r\n }\r\n\r\n var $remove = $(this);\r\n var $selection = $remove.parent();\r\n\r\n var data = $selection.data('data');\r\n\r\n self.trigger('unselect', {\r\n originalEvent: evt,\r\n data: data\r\n });\r\n }\r\n );\r\n };\r\n\r\n MultipleSelection.prototype.clear = function () {\r\n this.$selection.find('.select2-selection__rendered').empty();\r\n };\r\n\r\n MultipleSelection.prototype.display = function (data, container) {\r\n var template = this.options.get('templateSelection');\r\n var escapeMarkup = this.options.get('escapeMarkup');\r\n\r\n return escapeMarkup(template(data, container));\r\n };\r\n\r\n MultipleSelection.prototype.selectionContainer = function () {\r\n var $container = $(\r\n '
  • ' +\r\n '' +\r\n '×' +\r\n '' +\r\n '
  • '\r\n );\r\n\r\n return $container;\r\n };\r\n\r\n MultipleSelection.prototype.update = function (data) {\r\n this.clear();\r\n\r\n if (data.length === 0) {\r\n return;\r\n }\r\n\r\n var $selections = [];\r\n\r\n for (var d = 0; d < data.length; d++) {\r\n var selection = data[d];\r\n\r\n var $selection = this.selectionContainer();\r\n var formatted = this.display(selection, $selection);\r\n\r\n $selection.append(formatted);\r\n $selection.prop('title', selection.title || selection.text);\r\n\r\n $selection.data('data', selection);\r\n\r\n $selections.push($selection);\r\n }\r\n\r\n var $rendered = this.$selection.find('.select2-selection__rendered');\r\n\r\n Utils.appendMany($rendered, $selections);\r\n };\r\n\r\n return MultipleSelection;\r\n});\r\n\nS2.define('select2/selection/placeholder',[\r\n '../utils'\r\n], function (Utils) {\r\n function Placeholder (decorated, $element, options) {\r\n this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\r\n\r\n decorated.call(this, $element, options);\r\n }\r\n\r\n Placeholder.prototype.normalizePlaceholder = function (_, placeholder) {\r\n if (typeof placeholder === 'string') {\r\n placeholder = {\r\n id: '',\r\n text: placeholder\r\n };\r\n }\r\n\r\n return placeholder;\r\n };\r\n\r\n Placeholder.prototype.createPlaceholder = function (decorated, placeholder) {\r\n var $placeholder = this.selectionContainer();\r\n\r\n $placeholder.html(this.display(placeholder));\r\n $placeholder.addClass('select2-selection__placeholder')\r\n .removeClass('select2-selection__choice');\r\n\r\n return $placeholder;\r\n };\r\n\r\n Placeholder.prototype.update = function (decorated, data) {\r\n var singlePlaceholder = (\r\n data.length == 1 && data[0].id != this.placeholder.id\r\n );\r\n var multipleSelections = data.length > 1;\r\n\r\n if (multipleSelections || singlePlaceholder) {\r\n return decorated.call(this, data);\r\n }\r\n\r\n this.clear();\r\n\r\n var $placeholder = this.createPlaceholder(this.placeholder);\r\n\r\n this.$selection.find('.select2-selection__rendered').append($placeholder);\r\n };\r\n\r\n return Placeholder;\r\n});\r\n\nS2.define('select2/selection/allowClear',[\r\n 'jquery',\r\n '../keys'\r\n], function ($, KEYS) {\r\n function AllowClear () { }\r\n\r\n AllowClear.prototype.bind = function (decorated, container, $container) {\r\n var self = this;\r\n\r\n decorated.call(this, container, $container);\r\n\r\n if (this.placeholder == null) {\r\n if (this.options.get('debug') && window.console && console.error) {\r\n console.error(\r\n 'Select2: The `allowClear` option should be used in combination ' +\r\n 'with the `placeholder` option.'\r\n );\r\n }\r\n }\r\n\r\n this.$selection.on('mousedown', '.select2-selection__clear',\r\n function (evt) {\r\n self._handleClear(evt);\r\n });\r\n\r\n container.on('keypress', function (evt) {\r\n self._handleKeyboardClear(evt, container);\r\n });\r\n };\r\n\r\n AllowClear.prototype._handleClear = function (_, evt) {\r\n // Ignore the event if it is disabled\r\n if (this.options.get('disabled')) {\r\n return;\r\n }\r\n\r\n var $clear = this.$selection.find('.select2-selection__clear');\r\n\r\n // Ignore the event if nothing has been selected\r\n if ($clear.length === 0) {\r\n return;\r\n }\r\n\r\n evt.stopPropagation();\r\n\r\n var data = $clear.data('data');\r\n\r\n for (var d = 0; d < data.length; d++) {\r\n var unselectData = {\r\n data: data[d]\r\n };\r\n\r\n // Trigger the `unselect` event, so people can prevent it from being\r\n // cleared.\r\n this.trigger('unselect', unselectData);\r\n\r\n // If the event was prevented, don't clear it out.\r\n if (unselectData.prevented) {\r\n return;\r\n }\r\n }\r\n\r\n this.$element.val(this.placeholder.id).trigger('change');\r\n\r\n this.trigger('toggle', {});\r\n };\r\n\r\n AllowClear.prototype._handleKeyboardClear = function (_, evt, container) {\r\n if (container.isOpen()) {\r\n return;\r\n }\r\n\r\n if (evt.which == KEYS.DELETE || evt.which == KEYS.BACKSPACE) {\r\n this._handleClear(evt);\r\n }\r\n };\r\n\r\n AllowClear.prototype.update = function (decorated, data) {\r\n decorated.call(this, data);\r\n\r\n if (this.$selection.find('.select2-selection__placeholder').length > 0 ||\r\n data.length === 0) {\r\n return;\r\n }\r\n\r\n var $remove = $(\r\n '' +\r\n '×' +\r\n ''\r\n );\r\n $remove.data('data', data);\r\n\r\n this.$selection.find('.select2-selection__rendered').prepend($remove);\r\n };\r\n\r\n return AllowClear;\r\n});\r\n\nS2.define('select2/selection/search',[\r\n 'jquery',\r\n '../utils',\r\n '../keys'\r\n], function ($, Utils, KEYS) {\r\n function Search (decorated, $element, options) {\r\n decorated.call(this, $element, options);\r\n }\r\n\r\n Search.prototype.render = function (decorated) {\r\n var $search = $(\r\n ''\r\n );\r\n\r\n this.$searchContainer = $search;\r\n this.$search = $search.find('input');\r\n\r\n var $rendered = decorated.call(this);\r\n\r\n this._transferTabIndex();\r\n\r\n return $rendered;\r\n };\r\n\r\n Search.prototype.bind = function (decorated, container, $container) {\r\n var self = this;\r\n\r\n decorated.call(this, container, $container);\r\n\r\n container.on('open', function () {\r\n self.$search.trigger('focus');\r\n });\r\n\r\n container.on('close', function () {\r\n self.$search.val('');\r\n self.$search.removeAttr('aria-activedescendant');\r\n self.$search.trigger('focus');\r\n });\r\n\r\n container.on('enable', function () {\r\n self.$search.prop('disabled', false);\r\n\r\n self._transferTabIndex();\r\n });\r\n\r\n container.on('disable', function () {\r\n self.$search.prop('disabled', true);\r\n });\r\n\r\n container.on('focus', function (evt) {\r\n self.$search.trigger('focus');\r\n });\r\n\r\n container.on('results:focus', function (params) {\r\n self.$search.attr('aria-activedescendant', params.id);\r\n });\r\n\r\n this.$selection.on('focusin', '.select2-search--inline', function (evt) {\r\n self.trigger('focus', evt);\r\n });\r\n\r\n this.$selection.on('focusout', '.select2-search--inline', function (evt) {\r\n self._handleBlur(evt);\r\n });\r\n\r\n this.$selection.on('keydown', '.select2-search--inline', function (evt) {\r\n evt.stopPropagation();\r\n\r\n self.trigger('keypress', evt);\r\n\r\n self._keyUpPrevented = evt.isDefaultPrevented();\r\n\r\n var key = evt.which;\r\n\r\n if (key === KEYS.BACKSPACE && self.$search.val() === '') {\r\n var $previousChoice = self.$searchContainer\r\n .prev('.select2-selection__choice');\r\n\r\n if ($previousChoice.length > 0) {\r\n var item = $previousChoice.data('data');\r\n\r\n self.searchRemoveChoice(item);\r\n\r\n evt.preventDefault();\r\n }\r\n }\r\n });\r\n\r\n // Try to detect the IE version should the `documentMode` property that\r\n // is stored on the document. This is only implemented in IE and is\r\n // slightly cleaner than doing a user agent check.\r\n // This property is not available in Edge, but Edge also doesn't have\r\n // this bug.\r\n var msie = document.documentMode;\r\n var disableInputEvents = msie && msie <= 11;\r\n\r\n // Workaround for browsers which do not support the `input` event\r\n // This will prevent double-triggering of events for browsers which support\r\n // both the `keyup` and `input` events.\r\n this.$selection.on(\r\n 'input.searchcheck',\r\n '.select2-search--inline',\r\n function (evt) {\r\n // IE will trigger the `input` event when a placeholder is used on a\r\n // search box. To get around this issue, we are forced to ignore all\r\n // `input` events in IE and keep using `keyup`.\r\n if (disableInputEvents) {\r\n self.$selection.off('input.search input.searchcheck');\r\n return;\r\n }\r\n\r\n // Unbind the duplicated `keyup` event\r\n self.$selection.off('keyup.search');\r\n }\r\n );\r\n\r\n this.$selection.on(\r\n 'keyup.search input.search',\r\n '.select2-search--inline',\r\n function (evt) {\r\n // IE will trigger the `input` event when a placeholder is used on a\r\n // search box. To get around this issue, we are forced to ignore all\r\n // `input` events in IE and keep using `keyup`.\r\n if (disableInputEvents && evt.type === 'input') {\r\n self.$selection.off('input.search input.searchcheck');\r\n return;\r\n }\r\n\r\n var key = evt.which;\r\n\r\n // We can freely ignore events from modifier keys\r\n if (key == KEYS.SHIFT || key == KEYS.CTRL || key == KEYS.ALT) {\r\n return;\r\n }\r\n\r\n // Tabbing will be handled during the `keydown` phase\r\n if (key == KEYS.TAB) {\r\n return;\r\n }\r\n\r\n self.handleSearch(evt);\r\n }\r\n );\r\n };\r\n\r\n /**\r\n * This method will transfer the tabindex attribute from the rendered\r\n * selection to the search box. This allows for the search box to be used as\r\n * the primary focus instead of the selection container.\r\n *\r\n * @private\r\n */\r\n Search.prototype._transferTabIndex = function (decorated) {\r\n this.$search.attr('tabindex', this.$selection.attr('tabindex'));\r\n this.$selection.attr('tabindex', '-1');\r\n };\r\n\r\n Search.prototype.createPlaceholder = function (decorated, placeholder) {\r\n this.$search.attr('placeholder', placeholder.text);\r\n };\r\n\r\n Search.prototype.update = function (decorated, data) {\r\n var searchHadFocus = this.$search[0] == document.activeElement;\r\n\r\n this.$search.attr('placeholder', '');\r\n\r\n decorated.call(this, data);\r\n\r\n this.$selection.find('.select2-selection__rendered')\r\n .append(this.$searchContainer);\r\n\r\n this.resizeSearch();\r\n if (searchHadFocus) {\r\n this.$search.focus();\r\n }\r\n };\r\n\r\n Search.prototype.handleSearch = function () {\r\n this.resizeSearch();\r\n\r\n if (!this._keyUpPrevented) {\r\n var input = this.$search.val();\r\n\r\n this.trigger('query', {\r\n term: input\r\n });\r\n }\r\n\r\n this._keyUpPrevented = false;\r\n };\r\n\r\n Search.prototype.searchRemoveChoice = function (decorated, item) {\r\n this.trigger('unselect', {\r\n data: item\r\n });\r\n\r\n this.$search.val(item.text);\r\n this.handleSearch();\r\n };\r\n\r\n Search.prototype.resizeSearch = function () {\r\n this.$search.css('width', '25px');\r\n\r\n var width = '';\r\n\r\n if (this.$search.attr('placeholder') !== '') {\r\n width = this.$selection.find('.select2-selection__rendered').innerWidth();\r\n } else {\r\n var minimumWidth = this.$search.val().length + 1;\r\n\r\n width = (minimumWidth * 0.75) + 'em';\r\n }\r\n\r\n this.$search.css('width', width);\r\n };\r\n\r\n return Search;\r\n});\r\n\nS2.define('select2/selection/eventRelay',[\r\n 'jquery'\r\n], function ($) {\r\n function EventRelay () { }\r\n\r\n EventRelay.prototype.bind = function (decorated, container, $container) {\r\n var self = this;\r\n var relayEvents = [\r\n 'open', 'opening',\r\n 'close', 'closing',\r\n 'select', 'selecting',\r\n 'unselect', 'unselecting'\r\n ];\r\n\r\n var preventableEvents = ['opening', 'closing', 'selecting', 'unselecting'];\r\n\r\n decorated.call(this, container, $container);\r\n\r\n container.on('*', function (name, params) {\r\n // Ignore events that should not be relayed\r\n if ($.inArray(name, relayEvents) === -1) {\r\n return;\r\n }\r\n\r\n // The parameters should always be an object\r\n params = params || {};\r\n\r\n // Generate the jQuery event for the Select2 event\r\n var evt = $.Event('select2:' + name, {\r\n params: params\r\n });\r\n\r\n self.$element.trigger(evt);\r\n\r\n // Only handle preventable events if it was one\r\n if ($.inArray(name, preventableEvents) === -1) {\r\n return;\r\n }\r\n\r\n params.prevented = evt.isDefaultPrevented();\r\n });\r\n };\r\n\r\n return EventRelay;\r\n});\r\n\nS2.define('select2/translation',[\r\n 'jquery',\r\n 'require'\r\n], function ($, require) {\r\n function Translation (dict) {\r\n this.dict = dict || {};\r\n }\r\n\r\n Translation.prototype.all = function () {\r\n return this.dict;\r\n };\r\n\r\n Translation.prototype.get = function (key) {\r\n return this.dict[key];\r\n };\r\n\r\n Translation.prototype.extend = function (translation) {\r\n this.dict = $.extend({}, translation.all(), this.dict);\r\n };\r\n\r\n // Static functions\r\n\r\n Translation._cache = {};\r\n\r\n Translation.loadPath = function (path) {\r\n if (!(path in Translation._cache)) {\r\n var translations = require(path);\r\n\r\n Translation._cache[path] = translations;\r\n }\r\n\r\n return new Translation(Translation._cache[path]);\r\n };\r\n\r\n return Translation;\r\n});\r\n\nS2.define('select2/diacritics',[\r\n\r\n], function () {\r\n var diacritics = {\r\n '\\u24B6': 'A',\r\n '\\uFF21': 'A',\r\n '\\u00C0': 'A',\r\n '\\u00C1': 'A',\r\n '\\u00C2': 'A',\r\n '\\u1EA6': 'A',\r\n '\\u1EA4': 'A',\r\n '\\u1EAA': 'A',\r\n '\\u1EA8': 'A',\r\n '\\u00C3': 'A',\r\n '\\u0100': 'A',\r\n '\\u0102': 'A',\r\n '\\u1EB0': 'A',\r\n '\\u1EAE': 'A',\r\n '\\u1EB4': 'A',\r\n '\\u1EB2': 'A',\r\n '\\u0226': 'A',\r\n '\\u01E0': 'A',\r\n '\\u00C4': 'A',\r\n '\\u01DE': 'A',\r\n '\\u1EA2': 'A',\r\n '\\u00C5': 'A',\r\n '\\u01FA': 'A',\r\n '\\u01CD': 'A',\r\n '\\u0200': 'A',\r\n '\\u0202': 'A',\r\n '\\u1EA0': 'A',\r\n '\\u1EAC': 'A',\r\n '\\u1EB6': 'A',\r\n '\\u1E00': 'A',\r\n '\\u0104': 'A',\r\n '\\u023A': 'A',\r\n '\\u2C6F': 'A',\r\n '\\uA732': 'AA',\r\n '\\u00C6': 'AE',\r\n '\\u01FC': 'AE',\r\n '\\u01E2': 'AE',\r\n '\\uA734': 'AO',\r\n '\\uA736': 'AU',\r\n '\\uA738': 'AV',\r\n '\\uA73A': 'AV',\r\n '\\uA73C': 'AY',\r\n '\\u24B7': 'B',\r\n '\\uFF22': 'B',\r\n '\\u1E02': 'B',\r\n '\\u1E04': 'B',\r\n '\\u1E06': 'B',\r\n '\\u0243': 'B',\r\n '\\u0182': 'B',\r\n '\\u0181': 'B',\r\n '\\u24B8': 'C',\r\n '\\uFF23': 'C',\r\n '\\u0106': 'C',\r\n '\\u0108': 'C',\r\n '\\u010A': 'C',\r\n '\\u010C': 'C',\r\n '\\u00C7': 'C',\r\n '\\u1E08': 'C',\r\n '\\u0187': 'C',\r\n '\\u023B': 'C',\r\n '\\uA73E': 'C',\r\n '\\u24B9': 'D',\r\n '\\uFF24': 'D',\r\n '\\u1E0A': 'D',\r\n '\\u010E': 'D',\r\n '\\u1E0C': 'D',\r\n '\\u1E10': 'D',\r\n '\\u1E12': 'D',\r\n '\\u1E0E': 'D',\r\n '\\u0110': 'D',\r\n '\\u018B': 'D',\r\n '\\u018A': 'D',\r\n '\\u0189': 'D',\r\n '\\uA779': 'D',\r\n '\\u01F1': 'DZ',\r\n '\\u01C4': 'DZ',\r\n '\\u01F2': 'Dz',\r\n '\\u01C5': 'Dz',\r\n '\\u24BA': 'E',\r\n '\\uFF25': 'E',\r\n '\\u00C8': 'E',\r\n '\\u00C9': 'E',\r\n '\\u00CA': 'E',\r\n '\\u1EC0': 'E',\r\n '\\u1EBE': 'E',\r\n '\\u1EC4': 'E',\r\n '\\u1EC2': 'E',\r\n '\\u1EBC': 'E',\r\n '\\u0112': 'E',\r\n '\\u1E14': 'E',\r\n '\\u1E16': 'E',\r\n '\\u0114': 'E',\r\n '\\u0116': 'E',\r\n '\\u00CB': 'E',\r\n '\\u1EBA': 'E',\r\n '\\u011A': 'E',\r\n '\\u0204': 'E',\r\n '\\u0206': 'E',\r\n '\\u1EB8': 'E',\r\n '\\u1EC6': 'E',\r\n '\\u0228': 'E',\r\n '\\u1E1C': 'E',\r\n '\\u0118': 'E',\r\n '\\u1E18': 'E',\r\n '\\u1E1A': 'E',\r\n '\\u0190': 'E',\r\n '\\u018E': 'E',\r\n '\\u24BB': 'F',\r\n '\\uFF26': 'F',\r\n '\\u1E1E': 'F',\r\n '\\u0191': 'F',\r\n '\\uA77B': 'F',\r\n '\\u24BC': 'G',\r\n '\\uFF27': 'G',\r\n '\\u01F4': 'G',\r\n '\\u011C': 'G',\r\n '\\u1E20': 'G',\r\n '\\u011E': 'G',\r\n '\\u0120': 'G',\r\n '\\u01E6': 'G',\r\n '\\u0122': 'G',\r\n '\\u01E4': 'G',\r\n '\\u0193': 'G',\r\n '\\uA7A0': 'G',\r\n '\\uA77D': 'G',\r\n '\\uA77E': 'G',\r\n '\\u24BD': 'H',\r\n '\\uFF28': 'H',\r\n '\\u0124': 'H',\r\n '\\u1E22': 'H',\r\n '\\u1E26': 'H',\r\n '\\u021E': 'H',\r\n '\\u1E24': 'H',\r\n '\\u1E28': 'H',\r\n '\\u1E2A': 'H',\r\n '\\u0126': 'H',\r\n '\\u2C67': 'H',\r\n '\\u2C75': 'H',\r\n '\\uA78D': 'H',\r\n '\\u24BE': 'I',\r\n '\\uFF29': 'I',\r\n '\\u00CC': 'I',\r\n '\\u00CD': 'I',\r\n '\\u00CE': 'I',\r\n '\\u0128': 'I',\r\n '\\u012A': 'I',\r\n '\\u012C': 'I',\r\n '\\u0130': 'I',\r\n '\\u00CF': 'I',\r\n '\\u1E2E': 'I',\r\n '\\u1EC8': 'I',\r\n '\\u01CF': 'I',\r\n '\\u0208': 'I',\r\n '\\u020A': 'I',\r\n '\\u1ECA': 'I',\r\n '\\u012E': 'I',\r\n '\\u1E2C': 'I',\r\n '\\u0197': 'I',\r\n '\\u24BF': 'J',\r\n '\\uFF2A': 'J',\r\n '\\u0134': 'J',\r\n '\\u0248': 'J',\r\n '\\u24C0': 'K',\r\n '\\uFF2B': 'K',\r\n '\\u1E30': 'K',\r\n '\\u01E8': 'K',\r\n '\\u1E32': 'K',\r\n '\\u0136': 'K',\r\n '\\u1E34': 'K',\r\n '\\u0198': 'K',\r\n '\\u2C69': 'K',\r\n '\\uA740': 'K',\r\n '\\uA742': 'K',\r\n '\\uA744': 'K',\r\n '\\uA7A2': 'K',\r\n '\\u24C1': 'L',\r\n '\\uFF2C': 'L',\r\n '\\u013F': 'L',\r\n '\\u0139': 'L',\r\n '\\u013D': 'L',\r\n '\\u1E36': 'L',\r\n '\\u1E38': 'L',\r\n '\\u013B': 'L',\r\n '\\u1E3C': 'L',\r\n '\\u1E3A': 'L',\r\n '\\u0141': 'L',\r\n '\\u023D': 'L',\r\n '\\u2C62': 'L',\r\n '\\u2C60': 'L',\r\n '\\uA748': 'L',\r\n '\\uA746': 'L',\r\n '\\uA780': 'L',\r\n '\\u01C7': 'LJ',\r\n '\\u01C8': 'Lj',\r\n '\\u24C2': 'M',\r\n '\\uFF2D': 'M',\r\n '\\u1E3E': 'M',\r\n '\\u1E40': 'M',\r\n '\\u1E42': 'M',\r\n '\\u2C6E': 'M',\r\n '\\u019C': 'M',\r\n '\\u24C3': 'N',\r\n '\\uFF2E': 'N',\r\n '\\u01F8': 'N',\r\n '\\u0143': 'N',\r\n '\\u00D1': 'N',\r\n '\\u1E44': 'N',\r\n '\\u0147': 'N',\r\n '\\u1E46': 'N',\r\n '\\u0145': 'N',\r\n '\\u1E4A': 'N',\r\n '\\u1E48': 'N',\r\n '\\u0220': 'N',\r\n '\\u019D': 'N',\r\n '\\uA790': 'N',\r\n '\\uA7A4': 'N',\r\n '\\u01CA': 'NJ',\r\n '\\u01CB': 'Nj',\r\n '\\u24C4': 'O',\r\n '\\uFF2F': 'O',\r\n '\\u00D2': 'O',\r\n '\\u00D3': 'O',\r\n '\\u00D4': 'O',\r\n '\\u1ED2': 'O',\r\n '\\u1ED0': 'O',\r\n '\\u1ED6': 'O',\r\n '\\u1ED4': 'O',\r\n '\\u00D5': 'O',\r\n '\\u1E4C': 'O',\r\n '\\u022C': 'O',\r\n '\\u1E4E': 'O',\r\n '\\u014C': 'O',\r\n '\\u1E50': 'O',\r\n '\\u1E52': 'O',\r\n '\\u014E': 'O',\r\n '\\u022E': 'O',\r\n '\\u0230': 'O',\r\n '\\u00D6': 'O',\r\n '\\u022A': 'O',\r\n '\\u1ECE': 'O',\r\n '\\u0150': 'O',\r\n '\\u01D1': 'O',\r\n '\\u020C': 'O',\r\n '\\u020E': 'O',\r\n '\\u01A0': 'O',\r\n '\\u1EDC': 'O',\r\n '\\u1EDA': 'O',\r\n '\\u1EE0': 'O',\r\n '\\u1EDE': 'O',\r\n '\\u1EE2': 'O',\r\n '\\u1ECC': 'O',\r\n '\\u1ED8': 'O',\r\n '\\u01EA': 'O',\r\n '\\u01EC': 'O',\r\n '\\u00D8': 'O',\r\n '\\u01FE': 'O',\r\n '\\u0186': 'O',\r\n '\\u019F': 'O',\r\n '\\uA74A': 'O',\r\n '\\uA74C': 'O',\r\n '\\u01A2': 'OI',\r\n '\\uA74E': 'OO',\r\n '\\u0222': 'OU',\r\n '\\u24C5': 'P',\r\n '\\uFF30': 'P',\r\n '\\u1E54': 'P',\r\n '\\u1E56': 'P',\r\n '\\u01A4': 'P',\r\n '\\u2C63': 'P',\r\n '\\uA750': 'P',\r\n '\\uA752': 'P',\r\n '\\uA754': 'P',\r\n '\\u24C6': 'Q',\r\n '\\uFF31': 'Q',\r\n '\\uA756': 'Q',\r\n '\\uA758': 'Q',\r\n '\\u024A': 'Q',\r\n '\\u24C7': 'R',\r\n '\\uFF32': 'R',\r\n '\\u0154': 'R',\r\n '\\u1E58': 'R',\r\n '\\u0158': 'R',\r\n '\\u0210': 'R',\r\n '\\u0212': 'R',\r\n '\\u1E5A': 'R',\r\n '\\u1E5C': 'R',\r\n '\\u0156': 'R',\r\n '\\u1E5E': 'R',\r\n '\\u024C': 'R',\r\n '\\u2C64': 'R',\r\n '\\uA75A': 'R',\r\n '\\uA7A6': 'R',\r\n '\\uA782': 'R',\r\n '\\u24C8': 'S',\r\n '\\uFF33': 'S',\r\n '\\u1E9E': 'S',\r\n '\\u015A': 'S',\r\n '\\u1E64': 'S',\r\n '\\u015C': 'S',\r\n '\\u1E60': 'S',\r\n '\\u0160': 'S',\r\n '\\u1E66': 'S',\r\n '\\u1E62': 'S',\r\n '\\u1E68': 'S',\r\n '\\u0218': 'S',\r\n '\\u015E': 'S',\r\n '\\u2C7E': 'S',\r\n '\\uA7A8': 'S',\r\n '\\uA784': 'S',\r\n '\\u24C9': 'T',\r\n '\\uFF34': 'T',\r\n '\\u1E6A': 'T',\r\n '\\u0164': 'T',\r\n '\\u1E6C': 'T',\r\n '\\u021A': 'T',\r\n '\\u0162': 'T',\r\n '\\u1E70': 'T',\r\n '\\u1E6E': 'T',\r\n '\\u0166': 'T',\r\n '\\u01AC': 'T',\r\n '\\u01AE': 'T',\r\n '\\u023E': 'T',\r\n '\\uA786': 'T',\r\n '\\uA728': 'TZ',\r\n '\\u24CA': 'U',\r\n '\\uFF35': 'U',\r\n '\\u00D9': 'U',\r\n '\\u00DA': 'U',\r\n '\\u00DB': 'U',\r\n '\\u0168': 'U',\r\n '\\u1E78': 'U',\r\n '\\u016A': 'U',\r\n '\\u1E7A': 'U',\r\n '\\u016C': 'U',\r\n '\\u00DC': 'U',\r\n '\\u01DB': 'U',\r\n '\\u01D7': 'U',\r\n '\\u01D5': 'U',\r\n '\\u01D9': 'U',\r\n '\\u1EE6': 'U',\r\n '\\u016E': 'U',\r\n '\\u0170': 'U',\r\n '\\u01D3': 'U',\r\n '\\u0214': 'U',\r\n '\\u0216': 'U',\r\n '\\u01AF': 'U',\r\n '\\u1EEA': 'U',\r\n '\\u1EE8': 'U',\r\n '\\u1EEE': 'U',\r\n '\\u1EEC': 'U',\r\n '\\u1EF0': 'U',\r\n '\\u1EE4': 'U',\r\n '\\u1E72': 'U',\r\n '\\u0172': 'U',\r\n '\\u1E76': 'U',\r\n '\\u1E74': 'U',\r\n '\\u0244': 'U',\r\n '\\u24CB': 'V',\r\n '\\uFF36': 'V',\r\n '\\u1E7C': 'V',\r\n '\\u1E7E': 'V',\r\n '\\u01B2': 'V',\r\n '\\uA75E': 'V',\r\n '\\u0245': 'V',\r\n '\\uA760': 'VY',\r\n '\\u24CC': 'W',\r\n '\\uFF37': 'W',\r\n '\\u1E80': 'W',\r\n '\\u1E82': 'W',\r\n '\\u0174': 'W',\r\n '\\u1E86': 'W',\r\n '\\u1E84': 'W',\r\n '\\u1E88': 'W',\r\n '\\u2C72': 'W',\r\n '\\u24CD': 'X',\r\n '\\uFF38': 'X',\r\n '\\u1E8A': 'X',\r\n '\\u1E8C': 'X',\r\n '\\u24CE': 'Y',\r\n '\\uFF39': 'Y',\r\n '\\u1EF2': 'Y',\r\n '\\u00DD': 'Y',\r\n '\\u0176': 'Y',\r\n '\\u1EF8': 'Y',\r\n '\\u0232': 'Y',\r\n '\\u1E8E': 'Y',\r\n '\\u0178': 'Y',\r\n '\\u1EF6': 'Y',\r\n '\\u1EF4': 'Y',\r\n '\\u01B3': 'Y',\r\n '\\u024E': 'Y',\r\n '\\u1EFE': 'Y',\r\n '\\u24CF': 'Z',\r\n '\\uFF3A': 'Z',\r\n '\\u0179': 'Z',\r\n '\\u1E90': 'Z',\r\n '\\u017B': 'Z',\r\n '\\u017D': 'Z',\r\n '\\u1E92': 'Z',\r\n '\\u1E94': 'Z',\r\n '\\u01B5': 'Z',\r\n '\\u0224': 'Z',\r\n '\\u2C7F': 'Z',\r\n '\\u2C6B': 'Z',\r\n '\\uA762': 'Z',\r\n '\\u24D0': 'a',\r\n '\\uFF41': 'a',\r\n '\\u1E9A': 'a',\r\n '\\u00E0': 'a',\r\n '\\u00E1': 'a',\r\n '\\u00E2': 'a',\r\n '\\u1EA7': 'a',\r\n '\\u1EA5': 'a',\r\n '\\u1EAB': 'a',\r\n '\\u1EA9': 'a',\r\n '\\u00E3': 'a',\r\n '\\u0101': 'a',\r\n '\\u0103': 'a',\r\n '\\u1EB1': 'a',\r\n '\\u1EAF': 'a',\r\n '\\u1EB5': 'a',\r\n '\\u1EB3': 'a',\r\n '\\u0227': 'a',\r\n '\\u01E1': 'a',\r\n '\\u00E4': 'a',\r\n '\\u01DF': 'a',\r\n '\\u1EA3': 'a',\r\n '\\u00E5': 'a',\r\n '\\u01FB': 'a',\r\n '\\u01CE': 'a',\r\n '\\u0201': 'a',\r\n '\\u0203': 'a',\r\n '\\u1EA1': 'a',\r\n '\\u1EAD': 'a',\r\n '\\u1EB7': 'a',\r\n '\\u1E01': 'a',\r\n '\\u0105': 'a',\r\n '\\u2C65': 'a',\r\n '\\u0250': 'a',\r\n '\\uA733': 'aa',\r\n '\\u00E6': 'ae',\r\n '\\u01FD': 'ae',\r\n '\\u01E3': 'ae',\r\n '\\uA735': 'ao',\r\n '\\uA737': 'au',\r\n '\\uA739': 'av',\r\n '\\uA73B': 'av',\r\n '\\uA73D': 'ay',\r\n '\\u24D1': 'b',\r\n '\\uFF42': 'b',\r\n '\\u1E03': 'b',\r\n '\\u1E05': 'b',\r\n '\\u1E07': 'b',\r\n '\\u0180': 'b',\r\n '\\u0183': 'b',\r\n '\\u0253': 'b',\r\n '\\u24D2': 'c',\r\n '\\uFF43': 'c',\r\n '\\u0107': 'c',\r\n '\\u0109': 'c',\r\n '\\u010B': 'c',\r\n '\\u010D': 'c',\r\n '\\u00E7': 'c',\r\n '\\u1E09': 'c',\r\n '\\u0188': 'c',\r\n '\\u023C': 'c',\r\n '\\uA73F': 'c',\r\n '\\u2184': 'c',\r\n '\\u24D3': 'd',\r\n '\\uFF44': 'd',\r\n '\\u1E0B': 'd',\r\n '\\u010F': 'd',\r\n '\\u1E0D': 'd',\r\n '\\u1E11': 'd',\r\n '\\u1E13': 'd',\r\n '\\u1E0F': 'd',\r\n '\\u0111': 'd',\r\n '\\u018C': 'd',\r\n '\\u0256': 'd',\r\n '\\u0257': 'd',\r\n '\\uA77A': 'd',\r\n '\\u01F3': 'dz',\r\n '\\u01C6': 'dz',\r\n '\\u24D4': 'e',\r\n '\\uFF45': 'e',\r\n '\\u00E8': 'e',\r\n '\\u00E9': 'e',\r\n '\\u00EA': 'e',\r\n '\\u1EC1': 'e',\r\n '\\u1EBF': 'e',\r\n '\\u1EC5': 'e',\r\n '\\u1EC3': 'e',\r\n '\\u1EBD': 'e',\r\n '\\u0113': 'e',\r\n '\\u1E15': 'e',\r\n '\\u1E17': 'e',\r\n '\\u0115': 'e',\r\n '\\u0117': 'e',\r\n '\\u00EB': 'e',\r\n '\\u1EBB': 'e',\r\n '\\u011B': 'e',\r\n '\\u0205': 'e',\r\n '\\u0207': 'e',\r\n '\\u1EB9': 'e',\r\n '\\u1EC7': 'e',\r\n '\\u0229': 'e',\r\n '\\u1E1D': 'e',\r\n '\\u0119': 'e',\r\n '\\u1E19': 'e',\r\n '\\u1E1B': 'e',\r\n '\\u0247': 'e',\r\n '\\u025B': 'e',\r\n '\\u01DD': 'e',\r\n '\\u24D5': 'f',\r\n '\\uFF46': 'f',\r\n '\\u1E1F': 'f',\r\n '\\u0192': 'f',\r\n '\\uA77C': 'f',\r\n '\\u24D6': 'g',\r\n '\\uFF47': 'g',\r\n '\\u01F5': 'g',\r\n '\\u011D': 'g',\r\n '\\u1E21': 'g',\r\n '\\u011F': 'g',\r\n '\\u0121': 'g',\r\n '\\u01E7': 'g',\r\n '\\u0123': 'g',\r\n '\\u01E5': 'g',\r\n '\\u0260': 'g',\r\n '\\uA7A1': 'g',\r\n '\\u1D79': 'g',\r\n '\\uA77F': 'g',\r\n '\\u24D7': 'h',\r\n '\\uFF48': 'h',\r\n '\\u0125': 'h',\r\n '\\u1E23': 'h',\r\n '\\u1E27': 'h',\r\n '\\u021F': 'h',\r\n '\\u1E25': 'h',\r\n '\\u1E29': 'h',\r\n '\\u1E2B': 'h',\r\n '\\u1E96': 'h',\r\n '\\u0127': 'h',\r\n '\\u2C68': 'h',\r\n '\\u2C76': 'h',\r\n '\\u0265': 'h',\r\n '\\u0195': 'hv',\r\n '\\u24D8': 'i',\r\n '\\uFF49': 'i',\r\n '\\u00EC': 'i',\r\n '\\u00ED': 'i',\r\n '\\u00EE': 'i',\r\n '\\u0129': 'i',\r\n '\\u012B': 'i',\r\n '\\u012D': 'i',\r\n '\\u00EF': 'i',\r\n '\\u1E2F': 'i',\r\n '\\u1EC9': 'i',\r\n '\\u01D0': 'i',\r\n '\\u0209': 'i',\r\n '\\u020B': 'i',\r\n '\\u1ECB': 'i',\r\n '\\u012F': 'i',\r\n '\\u1E2D': 'i',\r\n '\\u0268': 'i',\r\n '\\u0131': 'i',\r\n '\\u24D9': 'j',\r\n '\\uFF4A': 'j',\r\n '\\u0135': 'j',\r\n '\\u01F0': 'j',\r\n '\\u0249': 'j',\r\n '\\u24DA': 'k',\r\n '\\uFF4B': 'k',\r\n '\\u1E31': 'k',\r\n '\\u01E9': 'k',\r\n '\\u1E33': 'k',\r\n '\\u0137': 'k',\r\n '\\u1E35': 'k',\r\n '\\u0199': 'k',\r\n '\\u2C6A': 'k',\r\n '\\uA741': 'k',\r\n '\\uA743': 'k',\r\n '\\uA745': 'k',\r\n '\\uA7A3': 'k',\r\n '\\u24DB': 'l',\r\n '\\uFF4C': 'l',\r\n '\\u0140': 'l',\r\n '\\u013A': 'l',\r\n '\\u013E': 'l',\r\n '\\u1E37': 'l',\r\n '\\u1E39': 'l',\r\n '\\u013C': 'l',\r\n '\\u1E3D': 'l',\r\n '\\u1E3B': 'l',\r\n '\\u017F': 'l',\r\n '\\u0142': 'l',\r\n '\\u019A': 'l',\r\n '\\u026B': 'l',\r\n '\\u2C61': 'l',\r\n '\\uA749': 'l',\r\n '\\uA781': 'l',\r\n '\\uA747': 'l',\r\n '\\u01C9': 'lj',\r\n '\\u24DC': 'm',\r\n '\\uFF4D': 'm',\r\n '\\u1E3F': 'm',\r\n '\\u1E41': 'm',\r\n '\\u1E43': 'm',\r\n '\\u0271': 'm',\r\n '\\u026F': 'm',\r\n '\\u24DD': 'n',\r\n '\\uFF4E': 'n',\r\n '\\u01F9': 'n',\r\n '\\u0144': 'n',\r\n '\\u00F1': 'n',\r\n '\\u1E45': 'n',\r\n '\\u0148': 'n',\r\n '\\u1E47': 'n',\r\n '\\u0146': 'n',\r\n '\\u1E4B': 'n',\r\n '\\u1E49': 'n',\r\n '\\u019E': 'n',\r\n '\\u0272': 'n',\r\n '\\u0149': 'n',\r\n '\\uA791': 'n',\r\n '\\uA7A5': 'n',\r\n '\\u01CC': 'nj',\r\n '\\u24DE': 'o',\r\n '\\uFF4F': 'o',\r\n '\\u00F2': 'o',\r\n '\\u00F3': 'o',\r\n '\\u00F4': 'o',\r\n '\\u1ED3': 'o',\r\n '\\u1ED1': 'o',\r\n '\\u1ED7': 'o',\r\n '\\u1ED5': 'o',\r\n '\\u00F5': 'o',\r\n '\\u1E4D': 'o',\r\n '\\u022D': 'o',\r\n '\\u1E4F': 'o',\r\n '\\u014D': 'o',\r\n '\\u1E51': 'o',\r\n '\\u1E53': 'o',\r\n '\\u014F': 'o',\r\n '\\u022F': 'o',\r\n '\\u0231': 'o',\r\n '\\u00F6': 'o',\r\n '\\u022B': 'o',\r\n '\\u1ECF': 'o',\r\n '\\u0151': 'o',\r\n '\\u01D2': 'o',\r\n '\\u020D': 'o',\r\n '\\u020F': 'o',\r\n '\\u01A1': 'o',\r\n '\\u1EDD': 'o',\r\n '\\u1EDB': 'o',\r\n '\\u1EE1': 'o',\r\n '\\u1EDF': 'o',\r\n '\\u1EE3': 'o',\r\n '\\u1ECD': 'o',\r\n '\\u1ED9': 'o',\r\n '\\u01EB': 'o',\r\n '\\u01ED': 'o',\r\n '\\u00F8': 'o',\r\n '\\u01FF': 'o',\r\n '\\u0254': 'o',\r\n '\\uA74B': 'o',\r\n '\\uA74D': 'o',\r\n '\\u0275': 'o',\r\n '\\u01A3': 'oi',\r\n '\\u0223': 'ou',\r\n '\\uA74F': 'oo',\r\n '\\u24DF': 'p',\r\n '\\uFF50': 'p',\r\n '\\u1E55': 'p',\r\n '\\u1E57': 'p',\r\n '\\u01A5': 'p',\r\n '\\u1D7D': 'p',\r\n '\\uA751': 'p',\r\n '\\uA753': 'p',\r\n '\\uA755': 'p',\r\n '\\u24E0': 'q',\r\n '\\uFF51': 'q',\r\n '\\u024B': 'q',\r\n '\\uA757': 'q',\r\n '\\uA759': 'q',\r\n '\\u24E1': 'r',\r\n '\\uFF52': 'r',\r\n '\\u0155': 'r',\r\n '\\u1E59': 'r',\r\n '\\u0159': 'r',\r\n '\\u0211': 'r',\r\n '\\u0213': 'r',\r\n '\\u1E5B': 'r',\r\n '\\u1E5D': 'r',\r\n '\\u0157': 'r',\r\n '\\u1E5F': 'r',\r\n '\\u024D': 'r',\r\n '\\u027D': 'r',\r\n '\\uA75B': 'r',\r\n '\\uA7A7': 'r',\r\n '\\uA783': 'r',\r\n '\\u24E2': 's',\r\n '\\uFF53': 's',\r\n '\\u00DF': 's',\r\n '\\u015B': 's',\r\n '\\u1E65': 's',\r\n '\\u015D': 's',\r\n '\\u1E61': 's',\r\n '\\u0161': 's',\r\n '\\u1E67': 's',\r\n '\\u1E63': 's',\r\n '\\u1E69': 's',\r\n '\\u0219': 's',\r\n '\\u015F': 's',\r\n '\\u023F': 's',\r\n '\\uA7A9': 's',\r\n '\\uA785': 's',\r\n '\\u1E9B': 's',\r\n '\\u24E3': 't',\r\n '\\uFF54': 't',\r\n '\\u1E6B': 't',\r\n '\\u1E97': 't',\r\n '\\u0165': 't',\r\n '\\u1E6D': 't',\r\n '\\u021B': 't',\r\n '\\u0163': 't',\r\n '\\u1E71': 't',\r\n '\\u1E6F': 't',\r\n '\\u0167': 't',\r\n '\\u01AD': 't',\r\n '\\u0288': 't',\r\n '\\u2C66': 't',\r\n '\\uA787': 't',\r\n '\\uA729': 'tz',\r\n '\\u24E4': 'u',\r\n '\\uFF55': 'u',\r\n '\\u00F9': 'u',\r\n '\\u00FA': 'u',\r\n '\\u00FB': 'u',\r\n '\\u0169': 'u',\r\n '\\u1E79': 'u',\r\n '\\u016B': 'u',\r\n '\\u1E7B': 'u',\r\n '\\u016D': 'u',\r\n '\\u00FC': 'u',\r\n '\\u01DC': 'u',\r\n '\\u01D8': 'u',\r\n '\\u01D6': 'u',\r\n '\\u01DA': 'u',\r\n '\\u1EE7': 'u',\r\n '\\u016F': 'u',\r\n '\\u0171': 'u',\r\n '\\u01D4': 'u',\r\n '\\u0215': 'u',\r\n '\\u0217': 'u',\r\n '\\u01B0': 'u',\r\n '\\u1EEB': 'u',\r\n '\\u1EE9': 'u',\r\n '\\u1EEF': 'u',\r\n '\\u1EED': 'u',\r\n '\\u1EF1': 'u',\r\n '\\u1EE5': 'u',\r\n '\\u1E73': 'u',\r\n '\\u0173': 'u',\r\n '\\u1E77': 'u',\r\n '\\u1E75': 'u',\r\n '\\u0289': 'u',\r\n '\\u24E5': 'v',\r\n '\\uFF56': 'v',\r\n '\\u1E7D': 'v',\r\n '\\u1E7F': 'v',\r\n '\\u028B': 'v',\r\n '\\uA75F': 'v',\r\n '\\u028C': 'v',\r\n '\\uA761': 'vy',\r\n '\\u24E6': 'w',\r\n '\\uFF57': 'w',\r\n '\\u1E81': 'w',\r\n '\\u1E83': 'w',\r\n '\\u0175': 'w',\r\n '\\u1E87': 'w',\r\n '\\u1E85': 'w',\r\n '\\u1E98': 'w',\r\n '\\u1E89': 'w',\r\n '\\u2C73': 'w',\r\n '\\u24E7': 'x',\r\n '\\uFF58': 'x',\r\n '\\u1E8B': 'x',\r\n '\\u1E8D': 'x',\r\n '\\u24E8': 'y',\r\n '\\uFF59': 'y',\r\n '\\u1EF3': 'y',\r\n '\\u00FD': 'y',\r\n '\\u0177': 'y',\r\n '\\u1EF9': 'y',\r\n '\\u0233': 'y',\r\n '\\u1E8F': 'y',\r\n '\\u00FF': 'y',\r\n '\\u1EF7': 'y',\r\n '\\u1E99': 'y',\r\n '\\u1EF5': 'y',\r\n '\\u01B4': 'y',\r\n '\\u024F': 'y',\r\n '\\u1EFF': 'y',\r\n '\\u24E9': 'z',\r\n '\\uFF5A': 'z',\r\n '\\u017A': 'z',\r\n '\\u1E91': 'z',\r\n '\\u017C': 'z',\r\n '\\u017E': 'z',\r\n '\\u1E93': 'z',\r\n '\\u1E95': 'z',\r\n '\\u01B6': 'z',\r\n '\\u0225': 'z',\r\n '\\u0240': 'z',\r\n '\\u2C6C': 'z',\r\n '\\uA763': 'z',\r\n '\\u0386': '\\u0391',\r\n '\\u0388': '\\u0395',\r\n '\\u0389': '\\u0397',\r\n '\\u038A': '\\u0399',\r\n '\\u03AA': '\\u0399',\r\n '\\u038C': '\\u039F',\r\n '\\u038E': '\\u03A5',\r\n '\\u03AB': '\\u03A5',\r\n '\\u038F': '\\u03A9',\r\n '\\u03AC': '\\u03B1',\r\n '\\u03AD': '\\u03B5',\r\n '\\u03AE': '\\u03B7',\r\n '\\u03AF': '\\u03B9',\r\n '\\u03CA': '\\u03B9',\r\n '\\u0390': '\\u03B9',\r\n '\\u03CC': '\\u03BF',\r\n '\\u03CD': '\\u03C5',\r\n '\\u03CB': '\\u03C5',\r\n '\\u03B0': '\\u03C5',\r\n '\\u03C9': '\\u03C9',\r\n '\\u03C2': '\\u03C3'\r\n };\r\n\r\n return diacritics;\r\n});\r\n\nS2.define('select2/data/base',[\r\n '../utils'\r\n], function (Utils) {\r\n function BaseAdapter ($element, options) {\r\n BaseAdapter.__super__.constructor.call(this);\r\n }\r\n\r\n Utils.Extend(BaseAdapter, Utils.Observable);\r\n\r\n BaseAdapter.prototype.current = function (callback) {\r\n throw new Error('The `current` method must be defined in child classes.');\r\n };\r\n\r\n BaseAdapter.prototype.query = function (params, callback) {\r\n throw new Error('The `query` method must be defined in child classes.');\r\n };\r\n\r\n BaseAdapter.prototype.bind = function (container, $container) {\r\n // Can be implemented in subclasses\r\n };\r\n\r\n BaseAdapter.prototype.destroy = function () {\r\n // Can be implemented in subclasses\r\n };\r\n\r\n BaseAdapter.prototype.generateResultId = function (container, data) {\r\n var id = container.id + '-result-';\r\n\r\n id += Utils.generateChars(4);\r\n\r\n if (data.id != null) {\r\n id += '-' + data.id.toString();\r\n } else {\r\n id += '-' + Utils.generateChars(4);\r\n }\r\n return id;\r\n };\r\n\r\n return BaseAdapter;\r\n});\r\n\nS2.define('select2/data/select',[\r\n './base',\r\n '../utils',\r\n 'jquery'\r\n], function (BaseAdapter, Utils, $) {\r\n function SelectAdapter ($element, options) {\r\n this.$element = $element;\r\n this.options = options;\r\n\r\n SelectAdapter.__super__.constructor.call(this);\r\n }\r\n\r\n Utils.Extend(SelectAdapter, BaseAdapter);\r\n\r\n SelectAdapter.prototype.current = function (callback) {\r\n var data = [];\r\n var self = this;\r\n\r\n this.$element.find(':selected').each(function () {\r\n var $option = $(this);\r\n\r\n var option = self.item($option);\r\n\r\n data.push(option);\r\n });\r\n\r\n callback(data);\r\n };\r\n\r\n SelectAdapter.prototype.select = function (data) {\r\n var self = this;\r\n\r\n data.selected = true;\r\n\r\n // If data.element is a DOM node, use it instead\r\n if ($(data.element).is('option')) {\r\n data.element.selected = true;\r\n\r\n this.$element.trigger('change');\r\n\r\n return;\r\n }\r\n\r\n if (this.$element.prop('multiple')) {\r\n this.current(function (currentData) {\r\n var val = [];\r\n\r\n data = [data];\r\n data.push.apply(data, currentData);\r\n\r\n for (var d = 0; d < data.length; d++) {\r\n var id = data[d].id;\r\n\r\n if ($.inArray(id, val) === -1) {\r\n val.push(id);\r\n }\r\n }\r\n\r\n self.$element.val(val);\r\n self.$element.trigger('change');\r\n });\r\n } else {\r\n var val = data.id;\r\n\r\n this.$element.val(val);\r\n this.$element.trigger('change');\r\n }\r\n };\r\n\r\n SelectAdapter.prototype.unselect = function (data) {\r\n var self = this;\r\n\r\n if (!this.$element.prop('multiple')) {\r\n return;\r\n }\r\n\r\n data.selected = false;\r\n\r\n if ($(data.element).is('option')) {\r\n data.element.selected = false;\r\n\r\n this.$element.trigger('change');\r\n\r\n return;\r\n }\r\n\r\n this.current(function (currentData) {\r\n var val = [];\r\n\r\n for (var d = 0; d < currentData.length; d++) {\r\n var id = currentData[d].id;\r\n\r\n if (id !== data.id && $.inArray(id, val) === -1) {\r\n val.push(id);\r\n }\r\n }\r\n\r\n self.$element.val(val);\r\n\r\n self.$element.trigger('change');\r\n });\r\n };\r\n\r\n SelectAdapter.prototype.bind = function (container, $container) {\r\n var self = this;\r\n\r\n this.container = container;\r\n\r\n container.on('select', function (params) {\r\n self.select(params.data);\r\n });\r\n\r\n container.on('unselect', function (params) {\r\n self.unselect(params.data);\r\n });\r\n };\r\n\r\n SelectAdapter.prototype.destroy = function () {\r\n // Remove anything added to child elements\r\n this.$element.find('*').each(function () {\r\n // Remove any custom data set by Select2\r\n $.removeData(this, 'data');\r\n });\r\n };\r\n\r\n SelectAdapter.prototype.query = function (params, callback) {\r\n var data = [];\r\n var self = this;\r\n\r\n var $options = this.$element.children();\r\n\r\n $options.each(function () {\r\n var $option = $(this);\r\n\r\n if (!$option.is('option') && !$option.is('optgroup')) {\r\n return;\r\n }\r\n\r\n var option = self.item($option);\r\n\r\n var matches = self.matches(params, option);\r\n\r\n if (matches !== null) {\r\n data.push(matches);\r\n }\r\n });\r\n\r\n callback({\r\n results: data\r\n });\r\n };\r\n\r\n SelectAdapter.prototype.addOptions = function ($options) {\r\n Utils.appendMany(this.$element, $options);\r\n };\r\n\r\n SelectAdapter.prototype.option = function (data) {\r\n var option;\r\n\r\n if (data.children) {\r\n option = document.createElement('optgroup');\r\n option.label = data.text;\r\n } else {\r\n option = document.createElement('option');\r\n\r\n if (option.textContent !== undefined) {\r\n option.textContent = data.text;\r\n } else {\r\n option.innerText = data.text;\r\n }\r\n }\r\n\r\n if (data.id) {\r\n option.value = data.id;\r\n }\r\n\r\n if (data.disabled) {\r\n option.disabled = true;\r\n }\r\n\r\n if (data.selected) {\r\n option.selected = true;\r\n }\r\n\r\n if (data.title) {\r\n option.title = data.title;\r\n }\r\n\r\n var $option = $(option);\r\n\r\n var normalizedData = this._normalizeItem(data);\r\n normalizedData.element = option;\r\n\r\n // Override the option's data with the combined data\r\n $.data(option, 'data', normalizedData);\r\n\r\n return $option;\r\n };\r\n\r\n SelectAdapter.prototype.item = function ($option) {\r\n var data = {};\r\n\r\n data = $.data($option[0], 'data');\r\n\r\n if (data != null) {\r\n return data;\r\n }\r\n\r\n if ($option.is('option')) {\r\n data = {\r\n id: $option.val(),\r\n text: $option.text(),\r\n disabled: $option.prop('disabled'),\r\n selected: $option.prop('selected'),\r\n title: $option.prop('title')\r\n };\r\n } else if ($option.is('optgroup')) {\r\n data = {\r\n text: $option.prop('label'),\r\n children: [],\r\n title: $option.prop('title')\r\n };\r\n\r\n var $children = $option.children('option');\r\n var children = [];\r\n\r\n for (var c = 0; c < $children.length; c++) {\r\n var $child = $($children[c]);\r\n\r\n var child = this.item($child);\r\n\r\n children.push(child);\r\n }\r\n\r\n data.children = children;\r\n }\r\n\r\n data = this._normalizeItem(data);\r\n data.element = $option[0];\r\n\r\n $.data($option[0], 'data', data);\r\n\r\n return data;\r\n };\r\n\r\n SelectAdapter.prototype._normalizeItem = function (item) {\r\n if (!$.isPlainObject(item)) {\r\n item = {\r\n id: item,\r\n text: item\r\n };\r\n }\r\n\r\n item = $.extend({}, {\r\n text: ''\r\n }, item);\r\n\r\n var defaults = {\r\n selected: false,\r\n disabled: false\r\n };\r\n\r\n if (item.id != null) {\r\n item.id = item.id.toString();\r\n }\r\n\r\n if (item.text != null) {\r\n item.text = item.text.toString();\r\n }\r\n\r\n if (item._resultId == null && item.id && this.container != null) {\r\n item._resultId = this.generateResultId(this.container, item);\r\n }\r\n\r\n return $.extend({}, defaults, item);\r\n };\r\n\r\n SelectAdapter.prototype.matches = function (params, data) {\r\n var matcher = this.options.get('matcher');\r\n\r\n return matcher(params, data);\r\n };\r\n\r\n return SelectAdapter;\r\n});\r\n\nS2.define('select2/data/array',[\r\n './select',\r\n '../utils',\r\n 'jquery'\r\n], function (SelectAdapter, Utils, $) {\r\n function ArrayAdapter ($element, options) {\r\n var data = options.get('data') || [];\r\n\r\n ArrayAdapter.__super__.constructor.call(this, $element, options);\r\n\r\n this.addOptions(this.convertToOptions(data));\r\n }\r\n\r\n Utils.Extend(ArrayAdapter, SelectAdapter);\r\n\r\n ArrayAdapter.prototype.select = function (data) {\r\n var $option = this.$element.find('option').filter(function (i, elm) {\r\n return elm.value == data.id.toString();\r\n });\r\n\r\n if ($option.length === 0) {\r\n $option = this.option(data);\r\n\r\n this.addOptions($option);\r\n }\r\n\r\n ArrayAdapter.__super__.select.call(this, data);\r\n };\r\n\r\n ArrayAdapter.prototype.convertToOptions = function (data) {\r\n var self = this;\r\n\r\n var $existing = this.$element.find('option');\r\n var existingIds = $existing.map(function () {\r\n return self.item($(this)).id;\r\n }).get();\r\n\r\n var $options = [];\r\n\r\n // Filter out all items except for the one passed in the argument\r\n function onlyItem (item) {\r\n return function () {\r\n return $(this).val() == item.id;\r\n };\r\n }\r\n\r\n for (var d = 0; d < data.length; d++) {\r\n var item = this._normalizeItem(data[d]);\r\n\r\n // Skip items which were pre-loaded, only merge the data\r\n if ($.inArray(item.id, existingIds) >= 0) {\r\n var $existingOption = $existing.filter(onlyItem(item));\r\n\r\n var existingData = this.item($existingOption);\r\n var newData = $.extend(true, {}, item, existingData);\r\n\r\n var $newOption = this.option(newData);\r\n\r\n $existingOption.replaceWith($newOption);\r\n\r\n continue;\r\n }\r\n\r\n var $option = this.option(item);\r\n\r\n if (item.children) {\r\n var $children = this.convertToOptions(item.children);\r\n\r\n Utils.appendMany($option, $children);\r\n }\r\n\r\n $options.push($option);\r\n }\r\n\r\n return $options;\r\n };\r\n\r\n return ArrayAdapter;\r\n});\r\n\nS2.define('select2/data/ajax',[\r\n './array',\r\n '../utils',\r\n 'jquery'\r\n], function (ArrayAdapter, Utils, $) {\r\n function AjaxAdapter ($element, options) {\r\n this.ajaxOptions = this._applyDefaults(options.get('ajax'));\r\n\r\n if (this.ajaxOptions.processResults != null) {\r\n this.processResults = this.ajaxOptions.processResults;\r\n }\r\n\r\n AjaxAdapter.__super__.constructor.call(this, $element, options);\r\n }\r\n\r\n Utils.Extend(AjaxAdapter, ArrayAdapter);\r\n\r\n AjaxAdapter.prototype._applyDefaults = function (options) {\r\n var defaults = {\r\n data: function (params) {\r\n return $.extend({}, params, {\r\n q: params.term\r\n });\r\n },\r\n transport: function (params, success, failure) {\r\n var $request = $.ajax(params);\r\n\r\n $request.then(success);\r\n $request.fail(failure);\r\n\r\n return $request;\r\n }\r\n };\r\n\r\n return $.extend({}, defaults, options, true);\r\n };\r\n\r\n AjaxAdapter.prototype.processResults = function (results) {\r\n return results;\r\n };\r\n\r\n AjaxAdapter.prototype.query = function (params, callback) {\r\n var matches = [];\r\n var self = this;\r\n\r\n if (this._request != null) {\r\n // JSONP requests cannot always be aborted\r\n if ($.isFunction(this._request.abort)) {\r\n this._request.abort();\r\n }\r\n\r\n this._request = null;\r\n }\r\n\r\n var options = $.extend({\r\n type: 'GET'\r\n }, this.ajaxOptions);\r\n\r\n if (typeof options.url === 'function') {\r\n options.url = options.url.call(this.$element, params);\r\n }\r\n\r\n if (typeof options.data === 'function') {\r\n options.data = options.data.call(this.$element, params);\r\n }\r\n\r\n function request () {\r\n var $request = options.transport(options, function (data) {\r\n var results = self.processResults(data, params);\r\n\r\n if (self.options.get('debug') && window.console && console.error) {\r\n // Check to make sure that the response included a `results` key.\r\n if (!results || !results.results || !$.isArray(results.results)) {\r\n console.error(\r\n 'Select2: The AJAX results did not return an array in the ' +\r\n '`results` key of the response.'\r\n );\r\n }\r\n }\r\n\r\n callback(results);\r\n }, function () {\r\n // Attempt to detect if a request was aborted\r\n // Only works if the transport exposes a status property\r\n if ($request.status && $request.status === '0') {\r\n return;\r\n }\r\n\r\n self.trigger('results:message', {\r\n message: 'errorLoading'\r\n });\r\n });\r\n\r\n self._request = $request;\r\n }\r\n\r\n if (this.ajaxOptions.delay && params.term != null) {\r\n if (this._queryTimeout) {\r\n window.clearTimeout(this._queryTimeout);\r\n }\r\n\r\n this._queryTimeout = window.setTimeout(request, this.ajaxOptions.delay);\r\n } else {\r\n request();\r\n }\r\n };\r\n\r\n return AjaxAdapter;\r\n});\r\n\nS2.define('select2/data/tags',[\r\n 'jquery'\r\n], function ($) {\r\n function Tags (decorated, $element, options) {\r\n var tags = options.get('tags');\r\n\r\n var createTag = options.get('createTag');\r\n\r\n if (createTag !== undefined) {\r\n this.createTag = createTag;\r\n }\r\n\r\n var insertTag = options.get('insertTag');\r\n\r\n if (insertTag !== undefined) {\r\n this.insertTag = insertTag;\r\n }\r\n\r\n decorated.call(this, $element, options);\r\n\r\n if ($.isArray(tags)) {\r\n for (var t = 0; t < tags.length; t++) {\r\n var tag = tags[t];\r\n var item = this._normalizeItem(tag);\r\n\r\n var $option = this.option(item);\r\n\r\n this.$element.append($option);\r\n }\r\n }\r\n }\r\n\r\n Tags.prototype.query = function (decorated, params, callback) {\r\n var self = this;\r\n\r\n this._removeOldTags();\r\n\r\n if (params.term == null || params.page != null) {\r\n decorated.call(this, params, callback);\r\n return;\r\n }\r\n\r\n function wrapper (obj, child) {\r\n var data = obj.results;\r\n\r\n for (var i = 0; i < data.length; i++) {\r\n var option = data[i];\r\n\r\n var checkChildren = (\r\n option.children != null &&\r\n !wrapper({\r\n results: option.children\r\n }, true)\r\n );\r\n\r\n var checkText = option.text === params.term;\r\n\r\n if (checkText || checkChildren) {\r\n if (child) {\r\n return false;\r\n }\r\n\r\n obj.data = data;\r\n callback(obj);\r\n\r\n return;\r\n }\r\n }\r\n\r\n if (child) {\r\n return true;\r\n }\r\n\r\n var tag = self.createTag(params);\r\n\r\n if (tag != null) {\r\n var $option = self.option(tag);\r\n $option.attr('data-select2-tag', true);\r\n\r\n self.addOptions([$option]);\r\n\r\n self.insertTag(data, tag);\r\n }\r\n\r\n obj.results = data;\r\n\r\n callback(obj);\r\n }\r\n\r\n decorated.call(this, params, wrapper);\r\n };\r\n\r\n Tags.prototype.createTag = function (decorated, params) {\r\n var term = $.trim(params.term);\r\n\r\n if (term === '') {\r\n return null;\r\n }\r\n\r\n return {\r\n id: term,\r\n text: term\r\n };\r\n };\r\n\r\n Tags.prototype.insertTag = function (_, data, tag) {\r\n data.unshift(tag);\r\n };\r\n\r\n Tags.prototype._removeOldTags = function (_) {\r\n var tag = this._lastTag;\r\n\r\n var $options = this.$element.find('option[data-select2-tag]');\r\n\r\n $options.each(function () {\r\n if (this.selected) {\r\n return;\r\n }\r\n\r\n $(this).remove();\r\n });\r\n };\r\n\r\n return Tags;\r\n});\r\n\nS2.define('select2/data/tokenizer',[\r\n 'jquery'\r\n], function ($) {\r\n function Tokenizer (decorated, $element, options) {\r\n var tokenizer = options.get('tokenizer');\r\n\r\n if (tokenizer !== undefined) {\r\n this.tokenizer = tokenizer;\r\n }\r\n\r\n decorated.call(this, $element, options);\r\n }\r\n\r\n Tokenizer.prototype.bind = function (decorated, container, $container) {\r\n decorated.call(this, container, $container);\r\n\r\n this.$search = container.dropdown.$search || container.selection.$search ||\r\n $container.find('.select2-search__field');\r\n };\r\n\r\n Tokenizer.prototype.query = function (decorated, params, callback) {\r\n var self = this;\r\n\r\n function createAndSelect (data) {\r\n // Normalize the data object so we can use it for checks\r\n var item = self._normalizeItem(data);\r\n\r\n // Check if the data object already exists as a tag\r\n // Select it if it doesn't\r\n var $existingOptions = self.$element.find('option').filter(function () {\r\n return $(this).val() === item.id;\r\n });\r\n\r\n // If an existing option wasn't found for it, create the option\r\n if (!$existingOptions.length) {\r\n var $option = self.option(item);\r\n $option.attr('data-select2-tag', true);\r\n\r\n self._removeOldTags();\r\n self.addOptions([$option]);\r\n }\r\n\r\n // Select the item, now that we know there is an option for it\r\n select(item);\r\n }\r\n\r\n function select (data) {\r\n self.trigger('select', {\r\n data: data\r\n });\r\n }\r\n\r\n params.term = params.term || '';\r\n\r\n var tokenData = this.tokenizer(params, this.options, createAndSelect);\r\n\r\n if (tokenData.term !== params.term) {\r\n // Replace the search term if we have the search box\r\n if (this.$search.length) {\r\n this.$search.val(tokenData.term);\r\n this.$search.focus();\r\n }\r\n\r\n params.term = tokenData.term;\r\n }\r\n\r\n decorated.call(this, params, callback);\r\n };\r\n\r\n Tokenizer.prototype.tokenizer = function (_, params, options, callback) {\r\n var separators = options.get('tokenSeparators') || [];\r\n var term = params.term;\r\n var i = 0;\r\n\r\n var createTag = this.createTag || function (params) {\r\n return {\r\n id: params.term,\r\n text: params.term\r\n };\r\n };\r\n\r\n while (i < term.length) {\r\n var termChar = term[i];\r\n\r\n if ($.inArray(termChar, separators) === -1) {\r\n i++;\r\n\r\n continue;\r\n }\r\n\r\n var part = term.substr(0, i);\r\n var partParams = $.extend({}, params, {\r\n term: part\r\n });\r\n\r\n var data = createTag(partParams);\r\n\r\n if (data == null) {\r\n i++;\r\n continue;\r\n }\r\n\r\n callback(data);\r\n\r\n // Reset the term to not include the tokenized portion\r\n term = term.substr(i + 1) || '';\r\n i = 0;\r\n }\r\n\r\n return {\r\n term: term\r\n };\r\n };\r\n\r\n return Tokenizer;\r\n});\r\n\nS2.define('select2/data/minimumInputLength',[\r\n\r\n], function () {\r\n function MinimumInputLength (decorated, $e, options) {\r\n this.minimumInputLength = options.get('minimumInputLength');\r\n\r\n decorated.call(this, $e, options);\r\n }\r\n\r\n MinimumInputLength.prototype.query = function (decorated, params, callback) {\r\n params.term = params.term || '';\r\n\r\n if (params.term.length < this.minimumInputLength) {\r\n this.trigger('results:message', {\r\n message: 'inputTooShort',\r\n args: {\r\n minimum: this.minimumInputLength,\r\n input: params.term,\r\n params: params\r\n }\r\n });\r\n\r\n return;\r\n }\r\n\r\n decorated.call(this, params, callback);\r\n };\r\n\r\n return MinimumInputLength;\r\n});\r\n\nS2.define('select2/data/maximumInputLength',[\r\n\r\n], function () {\r\n function MaximumInputLength (decorated, $e, options) {\r\n this.maximumInputLength = options.get('maximumInputLength');\r\n\r\n decorated.call(this, $e, options);\r\n }\r\n\r\n MaximumInputLength.prototype.query = function (decorated, params, callback) {\r\n params.term = params.term || '';\r\n\r\n if (this.maximumInputLength > 0 &&\r\n params.term.length > this.maximumInputLength) {\r\n this.trigger('results:message', {\r\n message: 'inputTooLong',\r\n args: {\r\n maximum: this.maximumInputLength,\r\n input: params.term,\r\n params: params\r\n }\r\n });\r\n\r\n return;\r\n }\r\n\r\n decorated.call(this, params, callback);\r\n };\r\n\r\n return MaximumInputLength;\r\n});\r\n\nS2.define('select2/data/maximumSelectionLength',[\r\n\r\n], function (){\r\n function MaximumSelectionLength (decorated, $e, options) {\r\n this.maximumSelectionLength = options.get('maximumSelectionLength');\r\n\r\n decorated.call(this, $e, options);\r\n }\r\n\r\n MaximumSelectionLength.prototype.query =\r\n function (decorated, params, callback) {\r\n var self = this;\r\n\r\n this.current(function (currentData) {\r\n var count = currentData != null ? currentData.length : 0;\r\n if (self.maximumSelectionLength > 0 &&\r\n count >= self.maximumSelectionLength) {\r\n self.trigger('results:message', {\r\n message: 'maximumSelected',\r\n args: {\r\n maximum: self.maximumSelectionLength\r\n }\r\n });\r\n return;\r\n }\r\n decorated.call(self, params, callback);\r\n });\r\n };\r\n\r\n return MaximumSelectionLength;\r\n});\r\n\nS2.define('select2/dropdown',[\r\n 'jquery',\r\n './utils'\r\n], function ($, Utils) {\r\n function Dropdown ($element, options) {\r\n this.$element = $element;\r\n this.options = options;\r\n\r\n Dropdown.__super__.constructor.call(this);\r\n }\r\n\r\n Utils.Extend(Dropdown, Utils.Observable);\r\n\r\n Dropdown.prototype.render = function () {\r\n var $dropdown = $(\r\n '' +\r\n '' +\r\n ''\r\n );\r\n\r\n $dropdown.attr('dir', this.options.get('dir'));\r\n\r\n this.$dropdown = $dropdown;\r\n\r\n return $dropdown;\r\n };\r\n\r\n Dropdown.prototype.bind = function () {\r\n // Should be implemented in subclasses\r\n };\r\n\r\n Dropdown.prototype.position = function ($dropdown, $container) {\r\n // Should be implmented in subclasses\r\n };\r\n\r\n Dropdown.prototype.destroy = function () {\r\n // Remove the dropdown from the DOM\r\n this.$dropdown.remove();\r\n };\r\n\r\n return Dropdown;\r\n});\r\n\nS2.define('select2/dropdown/search',[\r\n 'jquery',\r\n '../utils'\r\n], function ($, Utils) {\r\n function Search () { }\r\n\r\n Search.prototype.render = function (decorated) {\r\n var $rendered = decorated.call(this);\r\n\r\n var $search = $(\r\n '' +\r\n '' +\r\n ''\r\n );\r\n\r\n this.$searchContainer = $search;\r\n this.$search = $search.find('input');\r\n\r\n $rendered.prepend($search);\r\n\r\n return $rendered;\r\n };\r\n\r\n Search.prototype.bind = function (decorated, container, $container) {\r\n var self = this;\r\n\r\n decorated.call(this, container, $container);\r\n\r\n this.$search.on('keydown', function (evt) {\r\n self.trigger('keypress', evt);\r\n\r\n self._keyUpPrevented = evt.isDefaultPrevented();\r\n });\r\n\r\n // Workaround for browsers which do not support the `input` event\r\n // This will prevent double-triggering of events for browsers which support\r\n // both the `keyup` and `input` events.\r\n this.$search.on('input', function (evt) {\r\n // Unbind the duplicated `keyup` event\r\n $(this).off('keyup');\r\n });\r\n\r\n this.$search.on('keyup input', function (evt) {\r\n self.handleSearch(evt);\r\n });\r\n\r\n container.on('open', function () {\r\n self.$search.attr('tabindex', 0);\r\n\r\n self.$search.focus();\r\n\r\n window.setTimeout(function () {\r\n self.$search.focus();\r\n }, 0);\r\n });\r\n\r\n container.on('close', function () {\r\n self.$search.attr('tabindex', -1);\r\n\r\n self.$search.val('');\r\n });\r\n\r\n container.on('focus', function () {\r\n if (container.isOpen()) {\r\n self.$search.focus();\r\n }\r\n });\r\n\r\n container.on('results:all', function (params) {\r\n if (params.query.term == null || params.query.term === '') {\r\n var showSearch = self.showSearch(params);\r\n\r\n if (showSearch) {\r\n self.$searchContainer.removeClass('select2-search--hide');\r\n } else {\r\n self.$searchContainer.addClass('select2-search--hide');\r\n }\r\n }\r\n });\r\n };\r\n\r\n Search.prototype.handleSearch = function (evt) {\r\n if (!this._keyUpPrevented) {\r\n var input = this.$search.val();\r\n\r\n this.trigger('query', {\r\n term: input\r\n });\r\n }\r\n\r\n this._keyUpPrevented = false;\r\n };\r\n\r\n Search.prototype.showSearch = function (_, params) {\r\n return true;\r\n };\r\n\r\n return Search;\r\n});\r\n\nS2.define('select2/dropdown/hidePlaceholder',[\r\n\r\n], function () {\r\n function HidePlaceholder (decorated, $element, options, dataAdapter) {\r\n this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\r\n\r\n decorated.call(this, $element, options, dataAdapter);\r\n }\r\n\r\n HidePlaceholder.prototype.append = function (decorated, data) {\r\n data.results = this.removePlaceholder(data.results);\r\n\r\n decorated.call(this, data);\r\n };\r\n\r\n HidePlaceholder.prototype.normalizePlaceholder = function (_, placeholder) {\r\n if (typeof placeholder === 'string') {\r\n placeholder = {\r\n id: '',\r\n text: placeholder\r\n };\r\n }\r\n\r\n return placeholder;\r\n };\r\n\r\n HidePlaceholder.prototype.removePlaceholder = function (_, data) {\r\n var modifiedData = data.slice(0);\r\n\r\n for (var d = data.length - 1; d >= 0; d--) {\r\n var item = data[d];\r\n\r\n if (this.placeholder.id === item.id) {\r\n modifiedData.splice(d, 1);\r\n }\r\n }\r\n\r\n return modifiedData;\r\n };\r\n\r\n return HidePlaceholder;\r\n});\r\n\nS2.define('select2/dropdown/infiniteScroll',[\r\n 'jquery'\r\n], function ($) {\r\n function InfiniteScroll (decorated, $element, options, dataAdapter) {\r\n this.lastParams = {};\r\n\r\n decorated.call(this, $element, options, dataAdapter);\r\n\r\n this.$loadingMore = this.createLoadingMore();\r\n this.loading = false;\r\n }\r\n\r\n InfiniteScroll.prototype.append = function (decorated, data) {\r\n this.$loadingMore.remove();\r\n this.loading = false;\r\n\r\n decorated.call(this, data);\r\n\r\n if (this.showLoadingMore(data)) {\r\n this.$results.append(this.$loadingMore);\r\n }\r\n };\r\n\r\n InfiniteScroll.prototype.bind = function (decorated, container, $container) {\r\n var self = this;\r\n\r\n decorated.call(this, container, $container);\r\n\r\n container.on('query', function (params) {\r\n self.lastParams = params;\r\n self.loading = true;\r\n });\r\n\r\n container.on('query:append', function (params) {\r\n self.lastParams = params;\r\n self.loading = true;\r\n });\r\n\r\n this.$results.on('scroll', function () {\r\n var isLoadMoreVisible = $.contains(\r\n document.documentElement,\r\n self.$loadingMore[0]\r\n );\r\n\r\n if (self.loading || !isLoadMoreVisible) {\r\n return;\r\n }\r\n\r\n var currentOffset = self.$results.offset().top +\r\n self.$results.outerHeight(false);\r\n var loadingMoreOffset = self.$loadingMore.offset().top +\r\n self.$loadingMore.outerHeight(false);\r\n\r\n if (currentOffset + 50 >= loadingMoreOffset) {\r\n self.loadMore();\r\n }\r\n });\r\n };\r\n\r\n InfiniteScroll.prototype.loadMore = function () {\r\n this.loading = true;\r\n\r\n var params = $.extend({}, {page: 1}, this.lastParams);\r\n\r\n params.page++;\r\n\r\n this.trigger('query:append', params);\r\n };\r\n\r\n InfiniteScroll.prototype.showLoadingMore = function (_, data) {\r\n return data.pagination && data.pagination.more;\r\n };\r\n\r\n InfiniteScroll.prototype.createLoadingMore = function () {\r\n var $option = $(\r\n '
  • '\r\n );\r\n\r\n var message = this.options.get('translations').get('loadingMore');\r\n\r\n $option.html(message(this.lastParams));\r\n\r\n return $option;\r\n };\r\n\r\n return InfiniteScroll;\r\n});\r\n\nS2.define('select2/dropdown/attachBody',[\r\n 'jquery',\r\n '../utils'\r\n], function ($, Utils) {\r\n function AttachBody (decorated, $element, options) {\r\n this.$dropdownParent = options.get('dropdownParent') || $(document.body);\r\n\r\n decorated.call(this, $element, options);\r\n }\r\n\r\n AttachBody.prototype.bind = function (decorated, container, $container) {\r\n var self = this;\r\n\r\n var setupResultsEvents = false;\r\n\r\n decorated.call(this, container, $container);\r\n\r\n container.on('open', function () {\r\n self._showDropdown();\r\n self._attachPositioningHandler(container);\r\n\r\n if (!setupResultsEvents) {\r\n setupResultsEvents = true;\r\n\r\n container.on('results:all', function () {\r\n self._positionDropdown();\r\n self._resizeDropdown();\r\n });\r\n\r\n container.on('results:append', function () {\r\n self._positionDropdown();\r\n self._resizeDropdown();\r\n });\r\n }\r\n });\r\n\r\n container.on('close', function () {\r\n self._hideDropdown();\r\n self._detachPositioningHandler(container);\r\n });\r\n\r\n this.$dropdownContainer.on('mousedown', function (evt) {\r\n evt.stopPropagation();\r\n });\r\n };\r\n\r\n AttachBody.prototype.destroy = function (decorated) {\r\n decorated.call(this);\r\n\r\n this.$dropdownContainer.remove();\r\n };\r\n\r\n AttachBody.prototype.position = function (decorated, $dropdown, $container) {\r\n // Clone all of the container classes\r\n $dropdown.attr('class', $container.attr('class'));\r\n\r\n $dropdown.removeClass('select2');\r\n $dropdown.addClass('select2-container--open');\r\n\r\n $dropdown.css({\r\n position: 'absolute',\r\n top: -999999\r\n });\r\n\r\n this.$container = $container;\r\n };\r\n\r\n AttachBody.prototype.render = function (decorated) {\r\n var $container = $('');\r\n\r\n var $dropdown = decorated.call(this);\r\n $container.append($dropdown);\r\n\r\n this.$dropdownContainer = $container;\r\n\r\n return $container;\r\n };\r\n\r\n AttachBody.prototype._hideDropdown = function (decorated) {\r\n this.$dropdownContainer.detach();\r\n };\r\n\r\n AttachBody.prototype._attachPositioningHandler =\r\n function (decorated, container) {\r\n var self = this;\r\n\r\n var scrollEvent = 'scroll.select2.' + container.id;\r\n var resizeEvent = 'resize.select2.' + container.id;\r\n var orientationEvent = 'orientationchange.select2.' + container.id;\r\n\r\n var $watchers = this.$container.parents().filter(Utils.hasScroll);\r\n $watchers.each(function () {\r\n $(this).data('select2-scroll-position', {\r\n x: $(this).scrollLeft(),\r\n y: $(this).scrollTop()\r\n });\r\n });\r\n\r\n $watchers.on(scrollEvent, function (ev) {\r\n var position = $(this).data('select2-scroll-position');\r\n $(this).scrollTop(position.y);\r\n });\r\n\r\n $(window).on(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent,\r\n function (e) {\r\n self._positionDropdown();\r\n self._resizeDropdown();\r\n });\r\n };\r\n\r\n AttachBody.prototype._detachPositioningHandler =\r\n function (decorated, container) {\r\n var scrollEvent = 'scroll.select2.' + container.id;\r\n var resizeEvent = 'resize.select2.' + container.id;\r\n var orientationEvent = 'orientationchange.select2.' + container.id;\r\n\r\n var $watchers = this.$container.parents().filter(Utils.hasScroll);\r\n $watchers.off(scrollEvent);\r\n\r\n $(window).off(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent);\r\n };\r\n\r\n AttachBody.prototype._positionDropdown = function () {\r\n var $window = $(window);\r\n\r\n var isCurrentlyAbove = this.$dropdown.hasClass('select2-dropdown--above');\r\n var isCurrentlyBelow = this.$dropdown.hasClass('select2-dropdown--below');\r\n\r\n var newDirection = null;\r\n\r\n var offset = this.$container.offset();\r\n\r\n offset.bottom = offset.top + this.$container.outerHeight(false);\r\n\r\n var container = {\r\n height: this.$container.outerHeight(false)\r\n };\r\n\r\n container.top = offset.top;\r\n container.bottom = offset.top + container.height;\r\n\r\n var dropdown = {\r\n height: this.$dropdown.outerHeight(false)\r\n };\r\n\r\n var viewport = {\r\n top: $window.scrollTop(),\r\n bottom: $window.scrollTop() + $window.height()\r\n };\r\n\r\n var enoughRoomAbove = viewport.top < (offset.top - dropdown.height);\r\n var enoughRoomBelow = viewport.bottom > (offset.bottom + dropdown.height);\r\n\r\n var css = {\r\n left: offset.left,\r\n top: container.bottom\r\n };\r\n\r\n // Determine what the parent element is to use for calciulating the offset\r\n var $offsetParent = this.$dropdownParent;\r\n\r\n // For statically positoned elements, we need to get the element\r\n // that is determining the offset\r\n if ($offsetParent.css('position') === 'static') {\r\n $offsetParent = $offsetParent.offsetParent();\r\n }\r\n\r\n var parentOffset = $offsetParent.offset();\r\n\r\n css.top -= parentOffset.top;\r\n css.left -= parentOffset.left;\r\n\r\n if (!isCurrentlyAbove && !isCurrentlyBelow) {\r\n newDirection = 'below';\r\n }\r\n\r\n if (!enoughRoomBelow && enoughRoomAbove && !isCurrentlyAbove) {\r\n newDirection = 'above';\r\n } else if (!enoughRoomAbove && enoughRoomBelow && isCurrentlyAbove) {\r\n newDirection = 'below';\r\n }\r\n\r\n if (newDirection == 'above' ||\r\n (isCurrentlyAbove && newDirection !== 'below')) {\r\n css.top = container.top - parentOffset.top - dropdown.height;\r\n }\r\n\r\n if (newDirection != null) {\r\n this.$dropdown\r\n .removeClass('select2-dropdown--below select2-dropdown--above')\r\n .addClass('select2-dropdown--' + newDirection);\r\n this.$container\r\n .removeClass('select2-container--below select2-container--above')\r\n .addClass('select2-container--' + newDirection);\r\n }\r\n\r\n this.$dropdownContainer.css(css);\r\n };\r\n\r\n AttachBody.prototype._resizeDropdown = function () {\r\n var css = {\r\n width: this.$container.outerWidth(false) + 'px'\r\n };\r\n\r\n if (this.options.get('dropdownAutoWidth')) {\r\n css.minWidth = css.width;\r\n css.position = 'relative';\r\n css.width = 'auto';\r\n }\r\n\r\n this.$dropdown.css(css);\r\n };\r\n\r\n AttachBody.prototype._showDropdown = function (decorated) {\r\n this.$dropdownContainer.appendTo(this.$dropdownParent);\r\n\r\n this._positionDropdown();\r\n this._resizeDropdown();\r\n };\r\n\r\n return AttachBody;\r\n});\r\n\nS2.define('select2/dropdown/minimumResultsForSearch',[\r\n\r\n], function () {\r\n function countResults (data) {\r\n var count = 0;\r\n\r\n for (var d = 0; d < data.length; d++) {\r\n var item = data[d];\r\n\r\n if (item.children) {\r\n count += countResults(item.children);\r\n } else {\r\n count++;\r\n }\r\n }\r\n\r\n return count;\r\n }\r\n\r\n function MinimumResultsForSearch (decorated, $element, options, dataAdapter) {\r\n this.minimumResultsForSearch = options.get('minimumResultsForSearch');\r\n\r\n if (this.minimumResultsForSearch < 0) {\r\n this.minimumResultsForSearch = Infinity;\r\n }\r\n\r\n decorated.call(this, $element, options, dataAdapter);\r\n }\r\n\r\n MinimumResultsForSearch.prototype.showSearch = function (decorated, params) {\r\n if (countResults(params.data.results) < this.minimumResultsForSearch) {\r\n return false;\r\n }\r\n\r\n return decorated.call(this, params);\r\n };\r\n\r\n return MinimumResultsForSearch;\r\n});\r\n\nS2.define('select2/dropdown/selectOnClose',[\r\n\r\n], function () {\r\n function SelectOnClose () { }\r\n\r\n SelectOnClose.prototype.bind = function (decorated, container, $container) {\r\n var self = this;\r\n\r\n decorated.call(this, container, $container);\r\n\r\n container.on('close', function (params) {\r\n self._handleSelectOnClose(params);\r\n });\r\n };\r\n\r\n SelectOnClose.prototype._handleSelectOnClose = function (_, params) {\r\n if (params && params.originalSelect2Event != null) {\r\n var event = params.originalSelect2Event;\r\n\r\n // Don't select an item if the close event was triggered from a select or\r\n // unselect event\r\n if (event._type === 'select' || event._type === 'unselect') {\r\n return;\r\n }\r\n }\r\n\r\n var $highlightedResults = this.getHighlightedResults();\r\n\r\n // Only select highlighted results\r\n if ($highlightedResults.length < 1) {\r\n return;\r\n }\r\n\r\n var data = $highlightedResults.data('data');\r\n\r\n // Don't re-select already selected resulte\r\n if (\r\n (data.element != null && data.element.selected) ||\r\n (data.element == null && data.selected)\r\n ) {\r\n return;\r\n }\r\n\r\n this.trigger('select', {\r\n data: data\r\n });\r\n };\r\n\r\n return SelectOnClose;\r\n});\r\n\nS2.define('select2/dropdown/closeOnSelect',[\r\n\r\n], function () {\r\n function CloseOnSelect () { }\r\n\r\n CloseOnSelect.prototype.bind = function (decorated, container, $container) {\r\n var self = this;\r\n\r\n decorated.call(this, container, $container);\r\n\r\n container.on('select', function (evt) {\r\n self._selectTriggered(evt);\r\n });\r\n\r\n container.on('unselect', function (evt) {\r\n self._selectTriggered(evt);\r\n });\r\n };\r\n\r\n CloseOnSelect.prototype._selectTriggered = function (_, evt) {\r\n var originalEvent = evt.originalEvent;\r\n\r\n // Don't close if the control key is being held\r\n if (originalEvent && originalEvent.ctrlKey) {\r\n return;\r\n }\r\n\r\n this.trigger('close', {\r\n originalEvent: originalEvent,\r\n originalSelect2Event: evt\r\n });\r\n };\r\n\r\n return CloseOnSelect;\r\n});\r\n\nS2.define('select2/i18n/en',[],function () {\r\n // English\r\n return {\r\n errorLoading: function () {\r\n return 'The results could not be loaded.';\r\n },\r\n inputTooLong: function (args) {\r\n var overChars = args.input.length - args.maximum;\r\n\r\n var message = 'Please delete ' + overChars + ' character';\r\n\r\n if (overChars != 1) {\r\n message += 's';\r\n }\r\n\r\n return message;\r\n },\r\n inputTooShort: function (args) {\r\n var remainingChars = args.minimum - args.input.length;\r\n\r\n var message = 'Please enter ' + remainingChars + ' or more characters';\r\n\r\n return message;\r\n },\r\n loadingMore: function () {\r\n return 'Loading more results…';\r\n },\r\n maximumSelected: function (args) {\r\n var message = 'You can only select ' + args.maximum + ' item';\r\n\r\n if (args.maximum != 1) {\r\n message += 's';\r\n }\r\n\r\n return message;\r\n },\r\n noResults: function () {\r\n return 'No results found';\r\n },\r\n searching: function () {\r\n return 'Searching…';\r\n }\r\n };\r\n});\r\n\nS2.define('select2/defaults',[\r\n 'jquery',\r\n 'require',\r\n\r\n './results',\r\n\r\n './selection/single',\r\n './selection/multiple',\r\n './selection/placeholder',\r\n './selection/allowClear',\r\n './selection/search',\r\n './selection/eventRelay',\r\n\r\n './utils',\r\n './translation',\r\n './diacritics',\r\n\r\n './data/select',\r\n './data/array',\r\n './data/ajax',\r\n './data/tags',\r\n './data/tokenizer',\r\n './data/minimumInputLength',\r\n './data/maximumInputLength',\r\n './data/maximumSelectionLength',\r\n\r\n './dropdown',\r\n './dropdown/search',\r\n './dropdown/hidePlaceholder',\r\n './dropdown/infiniteScroll',\r\n './dropdown/attachBody',\r\n './dropdown/minimumResultsForSearch',\r\n './dropdown/selectOnClose',\r\n './dropdown/closeOnSelect',\r\n\r\n './i18n/en'\r\n], function ($, require,\r\n\r\n ResultsList,\r\n\r\n SingleSelection, MultipleSelection, Placeholder, AllowClear,\r\n SelectionSearch, EventRelay,\r\n\r\n Utils, Translation, DIACRITICS,\r\n\r\n SelectData, ArrayData, AjaxData, Tags, Tokenizer,\r\n MinimumInputLength, MaximumInputLength, MaximumSelectionLength,\r\n\r\n Dropdown, DropdownSearch, HidePlaceholder, InfiniteScroll,\r\n AttachBody, MinimumResultsForSearch, SelectOnClose, CloseOnSelect,\r\n\r\n EnglishTranslation) {\r\n function Defaults () {\r\n this.reset();\r\n }\r\n\r\n Defaults.prototype.apply = function (options) {\r\n options = $.extend(true, {}, this.defaults, options);\r\n\r\n if (options.dataAdapter == null) {\r\n if (options.ajax != null) {\r\n options.dataAdapter = AjaxData;\r\n } else if (options.data != null) {\r\n options.dataAdapter = ArrayData;\r\n } else {\r\n options.dataAdapter = SelectData;\r\n }\r\n\r\n if (options.minimumInputLength > 0) {\r\n options.dataAdapter = Utils.Decorate(\r\n options.dataAdapter,\r\n MinimumInputLength\r\n );\r\n }\r\n\r\n if (options.maximumInputLength > 0) {\r\n options.dataAdapter = Utils.Decorate(\r\n options.dataAdapter,\r\n MaximumInputLength\r\n );\r\n }\r\n\r\n if (options.maximumSelectionLength > 0) {\r\n options.dataAdapter = Utils.Decorate(\r\n options.dataAdapter,\r\n MaximumSelectionLength\r\n );\r\n }\r\n\r\n if (options.tags) {\r\n options.dataAdapter = Utils.Decorate(options.dataAdapter, Tags);\r\n }\r\n\r\n if (options.tokenSeparators != null || options.tokenizer != null) {\r\n options.dataAdapter = Utils.Decorate(\r\n options.dataAdapter,\r\n Tokenizer\r\n );\r\n }\r\n\r\n if (options.query != null) {\r\n var Query = require(options.amdBase + 'compat/query');\r\n\r\n options.dataAdapter = Utils.Decorate(\r\n options.dataAdapter,\r\n Query\r\n );\r\n }\r\n\r\n if (options.initSelection != null) {\r\n var InitSelection = require(options.amdBase + 'compat/initSelection');\r\n\r\n options.dataAdapter = Utils.Decorate(\r\n options.dataAdapter,\r\n InitSelection\r\n );\r\n }\r\n }\r\n\r\n if (options.resultsAdapter == null) {\r\n options.resultsAdapter = ResultsList;\r\n\r\n if (options.ajax != null) {\r\n options.resultsAdapter = Utils.Decorate(\r\n options.resultsAdapter,\r\n InfiniteScroll\r\n );\r\n }\r\n\r\n if (options.placeholder != null) {\r\n options.resultsAdapter = Utils.Decorate(\r\n options.resultsAdapter,\r\n HidePlaceholder\r\n );\r\n }\r\n\r\n if (options.selectOnClose) {\r\n options.resultsAdapter = Utils.Decorate(\r\n options.resultsAdapter,\r\n SelectOnClose\r\n );\r\n }\r\n }\r\n\r\n if (options.dropdownAdapter == null) {\r\n if (options.multiple) {\r\n options.dropdownAdapter = Dropdown;\r\n } else {\r\n var SearchableDropdown = Utils.Decorate(Dropdown, DropdownSearch);\r\n\r\n options.dropdownAdapter = SearchableDropdown;\r\n }\r\n\r\n if (options.minimumResultsForSearch !== 0) {\r\n options.dropdownAdapter = Utils.Decorate(\r\n options.dropdownAdapter,\r\n MinimumResultsForSearch\r\n );\r\n }\r\n\r\n if (options.closeOnSelect) {\r\n options.dropdownAdapter = Utils.Decorate(\r\n options.dropdownAdapter,\r\n CloseOnSelect\r\n );\r\n }\r\n\r\n if (\r\n options.dropdownCssClass != null ||\r\n options.dropdownCss != null ||\r\n options.adaptDropdownCssClass != null\r\n ) {\r\n var DropdownCSS = require(options.amdBase + 'compat/dropdownCss');\r\n\r\n options.dropdownAdapter = Utils.Decorate(\r\n options.dropdownAdapter,\r\n DropdownCSS\r\n );\r\n }\r\n\r\n options.dropdownAdapter = Utils.Decorate(\r\n options.dropdownAdapter,\r\n AttachBody\r\n );\r\n }\r\n\r\n if (options.selectionAdapter == null) {\r\n if (options.multiple) {\r\n options.selectionAdapter = MultipleSelection;\r\n } else {\r\n options.selectionAdapter = SingleSelection;\r\n }\r\n\r\n // Add the placeholder mixin if a placeholder was specified\r\n if (options.placeholder != null) {\r\n options.selectionAdapter = Utils.Decorate(\r\n options.selectionAdapter,\r\n Placeholder\r\n );\r\n }\r\n\r\n if (options.allowClear) {\r\n options.selectionAdapter = Utils.Decorate(\r\n options.selectionAdapter,\r\n AllowClear\r\n );\r\n }\r\n\r\n if (options.multiple) {\r\n options.selectionAdapter = Utils.Decorate(\r\n options.selectionAdapter,\r\n SelectionSearch\r\n );\r\n }\r\n\r\n if (\r\n options.containerCssClass != null ||\r\n options.containerCss != null ||\r\n options.adaptContainerCssClass != null\r\n ) {\r\n var ContainerCSS = require(options.amdBase + 'compat/containerCss');\r\n\r\n options.selectionAdapter = Utils.Decorate(\r\n options.selectionAdapter,\r\n ContainerCSS\r\n );\r\n }\r\n\r\n options.selectionAdapter = Utils.Decorate(\r\n options.selectionAdapter,\r\n EventRelay\r\n );\r\n }\r\n\r\n if (typeof options.language === 'string') {\r\n // Check if the language is specified with a region\r\n if (options.language.indexOf('-') > 0) {\r\n // Extract the region information if it is included\r\n var languageParts = options.language.split('-');\r\n var baseLanguage = languageParts[0];\r\n\r\n options.language = [options.language, baseLanguage];\r\n } else {\r\n options.language = [options.language];\r\n }\r\n }\r\n\r\n if ($.isArray(options.language)) {\r\n var languages = new Translation();\r\n options.language.push('en');\r\n\r\n var languageNames = options.language;\r\n\r\n for (var l = 0; l < languageNames.length; l++) {\r\n var name = languageNames[l];\r\n var language = {};\r\n\r\n try {\r\n // Try to load it with the original name\r\n language = Translation.loadPath(name);\r\n } catch (e) {\r\n try {\r\n // If we couldn't load it, check if it wasn't the full path\r\n name = this.defaults.amdLanguageBase + name;\r\n language = Translation.loadPath(name);\r\n } catch (ex) {\r\n // The translation could not be loaded at all. Sometimes this is\r\n // because of a configuration problem, other times this can be\r\n // because of how Select2 helps load all possible translation files.\r\n if (options.debug && window.console && console.warn) {\r\n console.warn(\r\n 'Select2: The language file for \"' + name + '\" could not be ' +\r\n 'automatically loaded. A fallback will be used instead.'\r\n );\r\n }\r\n\r\n continue;\r\n }\r\n }\r\n\r\n languages.extend(language);\r\n }\r\n\r\n options.translations = languages;\r\n } else {\r\n var baseTranslation = Translation.loadPath(\r\n this.defaults.amdLanguageBase + 'en'\r\n );\r\n var customTranslation = new Translation(options.language);\r\n\r\n customTranslation.extend(baseTranslation);\r\n\r\n options.translations = customTranslation;\r\n }\r\n\r\n return options;\r\n };\r\n\r\n Defaults.prototype.reset = function () {\r\n function stripDiacritics (text) {\r\n // Used 'uni range + named function' from http://jsperf.com/diacritics/18\r\n function match(a) {\r\n return DIACRITICS[a] || a;\r\n }\r\n\r\n return text.replace(/[^\\u0000-\\u007E]/g, match);\r\n }\r\n\r\n function matcher (params, data) {\r\n // Always return the object if there is nothing to compare\r\n if ($.trim(params.term) === '') {\r\n return data;\r\n }\r\n\r\n // Do a recursive check for options with children\r\n if (data.children && data.children.length > 0) {\r\n // Clone the data object if there are children\r\n // This is required as we modify the object to remove any non-matches\r\n var match = $.extend(true, {}, data);\r\n\r\n // Check each child of the option\r\n for (var c = data.children.length - 1; c >= 0; c--) {\r\n var child = data.children[c];\r\n\r\n var matches = matcher(params, child);\r\n\r\n // If there wasn't a match, remove the object in the array\r\n if (matches == null) {\r\n match.children.splice(c, 1);\r\n }\r\n }\r\n\r\n // If any children matched, return the new object\r\n if (match.children.length > 0) {\r\n return match;\r\n }\r\n\r\n // If there were no matching children, check just the plain object\r\n return matcher(params, match);\r\n }\r\n\r\n var original = stripDiacritics(data.text).toUpperCase();\r\n var term = stripDiacritics(params.term).toUpperCase();\r\n\r\n // Check if the text contains the term\r\n if (original.indexOf(term) > -1) {\r\n return data;\r\n }\r\n\r\n // If it doesn't contain the term, don't return anything\r\n return null;\r\n }\r\n\r\n this.defaults = {\r\n amdBase: './',\r\n amdLanguageBase: './i18n/',\r\n closeOnSelect: true,\r\n debug: false,\r\n dropdownAutoWidth: false,\r\n escapeMarkup: Utils.escapeMarkup,\r\n language: EnglishTranslation,\r\n matcher: matcher,\r\n minimumInputLength: 0,\r\n maximumInputLength: 0,\r\n maximumSelectionLength: 0,\r\n minimumResultsForSearch: 0,\r\n selectOnClose: false,\r\n sorter: function (data) {\r\n return data;\r\n },\r\n templateResult: function (result) {\r\n return result.text;\r\n },\r\n templateSelection: function (selection) {\r\n return selection.text;\r\n },\r\n theme: 'default',\r\n width: 'resolve'\r\n };\r\n };\r\n\r\n Defaults.prototype.set = function (key, value) {\r\n var camelKey = $.camelCase(key);\r\n\r\n var data = {};\r\n data[camelKey] = value;\r\n\r\n var convertedData = Utils._convertData(data);\r\n\r\n $.extend(this.defaults, convertedData);\r\n };\r\n\r\n var defaults = new Defaults();\r\n\r\n return defaults;\r\n});\r\n\nS2.define('select2/options',[\r\n 'require',\r\n 'jquery',\r\n './defaults',\r\n './utils'\r\n], function (require, $, Defaults, Utils) {\r\n function Options (options, $element) {\r\n this.options = options;\r\n\r\n if ($element != null) {\r\n this.fromElement($element);\r\n }\r\n\r\n this.options = Defaults.apply(this.options);\r\n\r\n if ($element && $element.is('input')) {\r\n var InputCompat = require(this.get('amdBase') + 'compat/inputData');\r\n\r\n this.options.dataAdapter = Utils.Decorate(\r\n this.options.dataAdapter,\r\n InputCompat\r\n );\r\n }\r\n }\r\n\r\n Options.prototype.fromElement = function ($e) {\r\n var excludedData = ['select2'];\r\n\r\n if (this.options.multiple == null) {\r\n this.options.multiple = $e.prop('multiple');\r\n }\r\n\r\n if (this.options.disabled == null) {\r\n this.options.disabled = $e.prop('disabled');\r\n }\r\n\r\n if (this.options.language == null) {\r\n if ($e.prop('lang')) {\r\n this.options.language = $e.prop('lang').toLowerCase();\r\n } else if ($e.closest('[lang]').prop('lang')) {\r\n this.options.language = $e.closest('[lang]').prop('lang');\r\n }\r\n }\r\n\r\n if (this.options.dir == null) {\r\n if ($e.prop('dir')) {\r\n this.options.dir = $e.prop('dir');\r\n } else if ($e.closest('[dir]').prop('dir')) {\r\n this.options.dir = $e.closest('[dir]').prop('dir');\r\n } else {\r\n this.options.dir = 'ltr';\r\n }\r\n }\r\n\r\n $e.prop('disabled', this.options.disabled);\r\n $e.prop('multiple', this.options.multiple);\r\n\r\n if ($e.data('select2Tags')) {\r\n if (this.options.debug && window.console && console.warn) {\r\n console.warn(\r\n 'Select2: The `data-select2-tags` attribute has been changed to ' +\r\n 'use the `data-data` and `data-tags=\"true\"` attributes and will be ' +\r\n 'removed in future versions of Select2.'\r\n );\r\n }\r\n\r\n $e.data('data', $e.data('select2Tags'));\r\n $e.data('tags', true);\r\n }\r\n\r\n if ($e.data('ajaxUrl')) {\r\n if (this.options.debug && window.console && console.warn) {\r\n console.warn(\r\n 'Select2: The `data-ajax-url` attribute has been changed to ' +\r\n '`data-ajax--url` and support for the old attribute will be removed' +\r\n ' in future versions of Select2.'\r\n );\r\n }\r\n\r\n $e.attr('ajax--url', $e.data('ajaxUrl'));\r\n $e.data('ajax--url', $e.data('ajaxUrl'));\r\n }\r\n\r\n var dataset = {};\r\n\r\n // Prefer the element's `dataset` attribute if it exists\r\n // jQuery 1.x does not correctly handle data attributes with multiple dashes\r\n if ($.fn.jquery && $.fn.jquery.substr(0, 2) == '1.' && $e[0].dataset) {\r\n dataset = $.extend(true, {}, $e[0].dataset, $e.data());\r\n } else {\r\n dataset = $e.data();\r\n }\r\n\r\n var data = $.extend(true, {}, dataset);\r\n\r\n data = Utils._convertData(data);\r\n\r\n for (var key in data) {\r\n if ($.inArray(key, excludedData) > -1) {\r\n continue;\r\n }\r\n\r\n if ($.isPlainObject(this.options[key])) {\r\n $.extend(this.options[key], data[key]);\r\n } else {\r\n this.options[key] = data[key];\r\n }\r\n }\r\n\r\n return this;\r\n };\r\n\r\n Options.prototype.get = function (key) {\r\n return this.options[key];\r\n };\r\n\r\n Options.prototype.set = function (key, val) {\r\n this.options[key] = val;\r\n };\r\n\r\n return Options;\r\n});\r\n\nS2.define('select2/core',[\r\n 'jquery',\r\n './options',\r\n './utils',\r\n './keys'\r\n], function ($, Options, Utils, KEYS) {\r\n var Select2 = function ($element, options) {\r\n if ($element.data('select2') != null) {\r\n $element.data('select2').destroy();\r\n }\r\n\r\n this.$element = $element;\r\n\r\n this.id = this._generateId($element);\r\n\r\n options = options || {};\r\n\r\n this.options = new Options(options, $element);\r\n\r\n Select2.__super__.constructor.call(this);\r\n\r\n // Set up the tabindex\r\n\r\n var tabindex = $element.attr('tabindex') || 0;\r\n $element.data('old-tabindex', tabindex);\r\n $element.attr('tabindex', '-1');\r\n\r\n // Set up containers and adapters\r\n\r\n var DataAdapter = this.options.get('dataAdapter');\r\n this.dataAdapter = new DataAdapter($element, this.options);\r\n\r\n var $container = this.render();\r\n\r\n this._placeContainer($container);\r\n\r\n var SelectionAdapter = this.options.get('selectionAdapter');\r\n this.selection = new SelectionAdapter($element, this.options);\r\n this.$selection = this.selection.render();\r\n\r\n this.selection.position(this.$selection, $container);\r\n\r\n var DropdownAdapter = this.options.get('dropdownAdapter');\r\n this.dropdown = new DropdownAdapter($element, this.options);\r\n this.$dropdown = this.dropdown.render();\r\n\r\n this.dropdown.position(this.$dropdown, $container);\r\n\r\n var ResultsAdapter = this.options.get('resultsAdapter');\r\n this.results = new ResultsAdapter($element, this.options, this.dataAdapter);\r\n this.$results = this.results.render();\r\n\r\n this.results.position(this.$results, this.$dropdown);\r\n\r\n // Bind events\r\n\r\n var self = this;\r\n\r\n // Bind the container to all of the adapters\r\n this._bindAdapters();\r\n\r\n // Register any DOM event handlers\r\n this._registerDomEvents();\r\n\r\n // Register any internal event handlers\r\n this._registerDataEvents();\r\n this._registerSelectionEvents();\r\n this._registerDropdownEvents();\r\n this._registerResultsEvents();\r\n this._registerEvents();\r\n\r\n // Set the initial state\r\n this.dataAdapter.current(function (initialData) {\r\n self.trigger('selection:update', {\r\n data: initialData\r\n });\r\n });\r\n\r\n // Hide the original select\r\n $element.addClass('select2-hidden-accessible');\r\n $element.attr('aria-hidden', 'true');\r\n\r\n // Synchronize any monitored attributes\r\n this._syncAttributes();\r\n\r\n $element.data('select2', this);\r\n };\r\n\r\n Utils.Extend(Select2, Utils.Observable);\r\n\r\n Select2.prototype._generateId = function ($element) {\r\n var id = '';\r\n\r\n if ($element.attr('id') != null) {\r\n id = $element.attr('id');\r\n } else if ($element.attr('name') != null) {\r\n id = $element.attr('name') + '-' + Utils.generateChars(2);\r\n } else {\r\n id = Utils.generateChars(4);\r\n }\r\n\r\n id = id.replace(/(:|\\.|\\[|\\]|,)/g, '');\r\n id = 'select2-' + id;\r\n\r\n return id;\r\n };\r\n\r\n Select2.prototype._placeContainer = function ($container) {\r\n $container.insertAfter(this.$element);\r\n\r\n var width = this._resolveWidth(this.$element, this.options.get('width'));\r\n\r\n if (width != null) {\r\n $container.css('width', width);\r\n }\r\n };\r\n\r\n Select2.prototype._resolveWidth = function ($element, method) {\r\n var WIDTH = /^width:(([-+]?([0-9]*\\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;\r\n\r\n if (method == 'resolve') {\r\n var styleWidth = this._resolveWidth($element, 'style');\r\n\r\n if (styleWidth != null) {\r\n return styleWidth;\r\n }\r\n\r\n return this._resolveWidth($element, 'element');\r\n }\r\n\r\n if (method == 'element') {\r\n var elementWidth = $element.outerWidth(false);\r\n\r\n if (elementWidth <= 0) {\r\n return 'auto';\r\n }\r\n\r\n return elementWidth + 'px';\r\n }\r\n\r\n if (method == 'style') {\r\n var style = $element.attr('style');\r\n\r\n if (typeof(style) !== 'string') {\r\n return null;\r\n }\r\n\r\n var attrs = style.split(';');\r\n\r\n for (var i = 0, l = attrs.length; i < l; i = i + 1) {\r\n var attr = attrs[i].replace(/\\s/g, '');\r\n var matches = attr.match(WIDTH);\r\n\r\n if (matches !== null && matches.length >= 1) {\r\n return matches[1];\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n return method;\r\n };\r\n\r\n Select2.prototype._bindAdapters = function () {\r\n this.dataAdapter.bind(this, this.$container);\r\n this.selection.bind(this, this.$container);\r\n\r\n this.dropdown.bind(this, this.$container);\r\n this.results.bind(this, this.$container);\r\n };\r\n\r\n Select2.prototype._registerDomEvents = function () {\r\n var self = this;\r\n\r\n this.$element.on('change.select2', function () {\r\n self.dataAdapter.current(function (data) {\r\n self.trigger('selection:update', {\r\n data: data\r\n });\r\n });\r\n });\r\n\r\n this.$element.on('focus.select2', function (evt) {\r\n self.trigger('focus', evt);\r\n });\r\n\r\n this._syncA = Utils.bind(this._syncAttributes, this);\r\n this._syncS = Utils.bind(this._syncSubtree, this);\r\n\r\n if (this.$element[0].attachEvent) {\r\n this.$element[0].attachEvent('onpropertychange', this._syncA);\r\n }\r\n\r\n var observer = window.MutationObserver ||\r\n window.WebKitMutationObserver ||\r\n window.MozMutationObserver\r\n ;\r\n\r\n if (observer != null) {\r\n this._observer = new observer(function (mutations) {\r\n $.each(mutations, self._syncA);\r\n $.each(mutations, self._syncS);\r\n });\r\n this._observer.observe(this.$element[0], {\r\n attributes: true,\r\n childList: true,\r\n subtree: false\r\n });\r\n } else if (this.$element[0].addEventListener) {\r\n this.$element[0].addEventListener(\r\n 'DOMAttrModified',\r\n self._syncA,\r\n false\r\n );\r\n this.$element[0].addEventListener(\r\n 'DOMNodeInserted',\r\n self._syncS,\r\n false\r\n );\r\n this.$element[0].addEventListener(\r\n 'DOMNodeRemoved',\r\n self._syncS,\r\n false\r\n );\r\n }\r\n };\r\n\r\n Select2.prototype._registerDataEvents = function () {\r\n var self = this;\r\n\r\n this.dataAdapter.on('*', function (name, params) {\r\n self.trigger(name, params);\r\n });\r\n };\r\n\r\n Select2.prototype._registerSelectionEvents = function () {\r\n var self = this;\r\n var nonRelayEvents = ['toggle', 'focus'];\r\n\r\n this.selection.on('toggle', function () {\r\n self.toggleDropdown();\r\n });\r\n\r\n this.selection.on('focus', function (params) {\r\n self.focus(params);\r\n });\r\n\r\n this.selection.on('*', function (name, params) {\r\n if ($.inArray(name, nonRelayEvents) !== -1) {\r\n return;\r\n }\r\n\r\n self.trigger(name, params);\r\n });\r\n };\r\n\r\n Select2.prototype._registerDropdownEvents = function () {\r\n var self = this;\r\n\r\n this.dropdown.on('*', function (name, params) {\r\n self.trigger(name, params);\r\n });\r\n };\r\n\r\n Select2.prototype._registerResultsEvents = function () {\r\n var self = this;\r\n\r\n this.results.on('*', function (name, params) {\r\n self.trigger(name, params);\r\n });\r\n };\r\n\r\n Select2.prototype._registerEvents = function () {\r\n var self = this;\r\n\r\n this.on('open', function () {\r\n self.$container.addClass('select2-container--open');\r\n });\r\n\r\n this.on('close', function () {\r\n self.$container.removeClass('select2-container--open');\r\n });\r\n\r\n this.on('enable', function () {\r\n self.$container.removeClass('select2-container--disabled');\r\n });\r\n\r\n this.on('disable', function () {\r\n self.$container.addClass('select2-container--disabled');\r\n });\r\n\r\n this.on('blur', function () {\r\n self.$container.removeClass('select2-container--focus');\r\n });\r\n\r\n this.on('query', function (params) {\r\n if (!self.isOpen()) {\r\n self.trigger('open', {});\r\n }\r\n\r\n this.dataAdapter.query(params, function (data) {\r\n self.trigger('results:all', {\r\n data: data,\r\n query: params\r\n });\r\n });\r\n });\r\n\r\n this.on('query:append', function (params) {\r\n this.dataAdapter.query(params, function (data) {\r\n self.trigger('results:append', {\r\n data: data,\r\n query: params\r\n });\r\n });\r\n });\r\n\r\n this.on('keypress', function (evt) {\r\n var key = evt.which;\r\n\r\n if (self.isOpen()) {\r\n if (key === KEYS.ESC || key === KEYS.TAB ||\r\n (key === KEYS.UP && evt.altKey)) {\r\n self.close();\r\n\r\n evt.preventDefault();\r\n } else if (key === KEYS.ENTER) {\r\n self.trigger('results:select', {});\r\n\r\n evt.preventDefault();\r\n } else if ((key === KEYS.SPACE && evt.ctrlKey)) {\r\n self.trigger('results:toggle', {});\r\n\r\n evt.preventDefault();\r\n } else if (key === KEYS.UP) {\r\n self.trigger('results:previous', {});\r\n\r\n evt.preventDefault();\r\n } else if (key === KEYS.DOWN) {\r\n self.trigger('results:next', {});\r\n\r\n evt.preventDefault();\r\n }\r\n } else {\r\n if (key === KEYS.ENTER || key === KEYS.SPACE ||\r\n (key === KEYS.DOWN && evt.altKey)) {\r\n self.open();\r\n\r\n evt.preventDefault();\r\n }\r\n }\r\n });\r\n };\r\n\r\n Select2.prototype._syncAttributes = function () {\r\n this.options.set('disabled', this.$element.prop('disabled'));\r\n\r\n if (this.options.get('disabled')) {\r\n if (this.isOpen()) {\r\n this.close();\r\n }\r\n\r\n this.trigger('disable', {});\r\n } else {\r\n this.trigger('enable', {});\r\n }\r\n };\r\n\r\n Select2.prototype._syncSubtree = function (evt, mutations) {\r\n var changed = false;\r\n var self = this;\r\n\r\n // Ignore any mutation events raised for elements that aren't options or\r\n // optgroups. This handles the case when the select element is destroyed\r\n if (\r\n evt && evt.target && (\r\n evt.target.nodeName !== 'OPTION' && evt.target.nodeName !== 'OPTGROUP'\r\n )\r\n ) {\r\n return;\r\n }\r\n\r\n if (!mutations) {\r\n // If mutation events aren't supported, then we can only assume that the\r\n // change affected the selections\r\n changed = true;\r\n } else if (mutations.addedNodes && mutations.addedNodes.length > 0) {\r\n for (var n = 0; n < mutations.addedNodes.length; n++) {\r\n var node = mutations.addedNodes[n];\r\n\r\n if (node.selected) {\r\n changed = true;\r\n }\r\n }\r\n } else if (mutations.removedNodes && mutations.removedNodes.length > 0) {\r\n changed = true;\r\n }\r\n\r\n // Only re-pull the data if we think there is a change\r\n if (changed) {\r\n this.dataAdapter.current(function (currentData) {\r\n self.trigger('selection:update', {\r\n data: currentData\r\n });\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * Override the trigger method to automatically trigger pre-events when\r\n * there are events that can be prevented.\r\n */\r\n Select2.prototype.trigger = function (name, args) {\r\n var actualTrigger = Select2.__super__.trigger;\r\n var preTriggerMap = {\r\n 'open': 'opening',\r\n 'close': 'closing',\r\n 'select': 'selecting',\r\n 'unselect': 'unselecting'\r\n };\r\n\r\n if (args === undefined) {\r\n args = {};\r\n }\r\n\r\n if (name in preTriggerMap) {\r\n var preTriggerName = preTriggerMap[name];\r\n var preTriggerArgs = {\r\n prevented: false,\r\n name: name,\r\n args: args\r\n };\r\n\r\n actualTrigger.call(this, preTriggerName, preTriggerArgs);\r\n\r\n if (preTriggerArgs.prevented) {\r\n args.prevented = true;\r\n\r\n return;\r\n }\r\n }\r\n\r\n actualTrigger.call(this, name, args);\r\n };\r\n\r\n Select2.prototype.toggleDropdown = function () {\r\n if (this.options.get('disabled')) {\r\n return;\r\n }\r\n\r\n if (this.isOpen()) {\r\n this.close();\r\n } else {\r\n this.open();\r\n }\r\n };\r\n\r\n Select2.prototype.open = function () {\r\n if (this.isOpen()) {\r\n return;\r\n }\r\n\r\n this.trigger('query', {});\r\n };\r\n\r\n Select2.prototype.close = function () {\r\n if (!this.isOpen()) {\r\n return;\r\n }\r\n\r\n this.trigger('close', {});\r\n };\r\n\r\n Select2.prototype.isOpen = function () {\r\n return this.$container.hasClass('select2-container--open');\r\n };\r\n\r\n Select2.prototype.hasFocus = function () {\r\n return this.$container.hasClass('select2-container--focus');\r\n };\r\n\r\n Select2.prototype.focus = function (data) {\r\n // No need to re-trigger focus events if we are already focused\r\n if (this.hasFocus()) {\r\n return;\r\n }\r\n\r\n this.$container.addClass('select2-container--focus');\r\n this.trigger('focus', {});\r\n };\r\n\r\n Select2.prototype.enable = function (args) {\r\n if (this.options.get('debug') && window.console && console.warn) {\r\n console.warn(\r\n 'Select2: The `select2(\"enable\")` method has been deprecated and will' +\r\n ' be removed in later Select2 versions. Use $element.prop(\"disabled\")' +\r\n ' instead.'\r\n );\r\n }\r\n\r\n if (args == null || args.length === 0) {\r\n args = [true];\r\n }\r\n\r\n var disabled = !args[0];\r\n\r\n this.$element.prop('disabled', disabled);\r\n };\r\n\r\n Select2.prototype.data = function () {\r\n if (this.options.get('debug') &&\r\n arguments.length > 0 && window.console && console.warn) {\r\n console.warn(\r\n 'Select2: Data can no longer be set using `select2(\"data\")`. You ' +\r\n 'should consider setting the value instead using `$element.val()`.'\r\n );\r\n }\r\n\r\n var data = [];\r\n\r\n this.dataAdapter.current(function (currentData) {\r\n data = currentData;\r\n });\r\n\r\n return data;\r\n };\r\n\r\n Select2.prototype.val = function (args) {\r\n if (this.options.get('debug') && window.console && console.warn) {\r\n console.warn(\r\n 'Select2: The `select2(\"val\")` method has been deprecated and will be' +\r\n ' removed in later Select2 versions. Use $element.val() instead.'\r\n );\r\n }\r\n\r\n if (args == null || args.length === 0) {\r\n return this.$element.val();\r\n }\r\n\r\n var newVal = args[0];\r\n\r\n if ($.isArray(newVal)) {\r\n newVal = $.map(newVal, function (obj) {\r\n return obj.toString();\r\n });\r\n }\r\n\r\n this.$element.val(newVal).trigger('change');\r\n };\r\n\r\n Select2.prototype.destroy = function () {\r\n this.$container.remove();\r\n\r\n if (this.$element[0].detachEvent) {\r\n this.$element[0].detachEvent('onpropertychange', this._syncA);\r\n }\r\n\r\n if (this._observer != null) {\r\n this._observer.disconnect();\r\n this._observer = null;\r\n } else if (this.$element[0].removeEventListener) {\r\n this.$element[0]\r\n .removeEventListener('DOMAttrModified', this._syncA, false);\r\n this.$element[0]\r\n .removeEventListener('DOMNodeInserted', this._syncS, false);\r\n this.$element[0]\r\n .removeEventListener('DOMNodeRemoved', this._syncS, false);\r\n }\r\n\r\n this._syncA = null;\r\n this._syncS = null;\r\n\r\n this.$element.off('.select2');\r\n this.$element.attr('tabindex', this.$element.data('old-tabindex'));\r\n\r\n this.$element.removeClass('select2-hidden-accessible');\r\n this.$element.attr('aria-hidden', 'false');\r\n this.$element.removeData('select2');\r\n\r\n this.dataAdapter.destroy();\r\n this.selection.destroy();\r\n this.dropdown.destroy();\r\n this.results.destroy();\r\n\r\n this.dataAdapter = null;\r\n this.selection = null;\r\n this.dropdown = null;\r\n this.results = null;\r\n };\r\n\r\n Select2.prototype.render = function () {\r\n var $container = $(\r\n '' +\r\n '' +\r\n '' +\r\n ''\r\n );\r\n\r\n $container.attr('dir', this.options.get('dir'));\r\n\r\n this.$container = $container;\r\n\r\n this.$container.addClass('select2-container--' + this.options.get('theme'));\r\n\r\n $container.data('element', this.$element);\r\n\r\n return $container;\r\n };\r\n\r\n return Select2;\r\n});\r\n\nS2.define('select2/compat/utils',[\r\n 'jquery'\r\n], function ($) {\r\n function syncCssClasses ($dest, $src, adapter) {\r\n var classes, replacements = [], adapted;\r\n\r\n classes = $.trim($dest.attr('class'));\r\n\r\n if (classes) {\r\n classes = '' + classes; // for IE which returns object\r\n\r\n $(classes.split(/\\s+/)).each(function () {\r\n // Save all Select2 classes\r\n if (this.indexOf('select2-') === 0) {\r\n replacements.push(this);\r\n }\r\n });\r\n }\r\n\r\n classes = $.trim($src.attr('class'));\r\n\r\n if (classes) {\r\n classes = '' + classes; // for IE which returns object\r\n\r\n $(classes.split(/\\s+/)).each(function () {\r\n // Only adapt non-Select2 classes\r\n if (this.indexOf('select2-') !== 0) {\r\n adapted = adapter(this);\r\n\r\n if (adapted != null) {\r\n replacements.push(adapted);\r\n }\r\n }\r\n });\r\n }\r\n\r\n $dest.attr('class', replacements.join(' '));\r\n }\r\n\r\n return {\r\n syncCssClasses: syncCssClasses\r\n };\r\n});\r\n\nS2.define('select2/compat/containerCss',[\r\n 'jquery',\r\n './utils'\r\n], function ($, CompatUtils) {\r\n // No-op CSS adapter that discards all classes by default\r\n function _containerAdapter (clazz) {\r\n return null;\r\n }\r\n\r\n function ContainerCSS () { }\r\n\r\n ContainerCSS.prototype.render = function (decorated) {\r\n var $container = decorated.call(this);\r\n\r\n var containerCssClass = this.options.get('containerCssClass') || '';\r\n\r\n if ($.isFunction(containerCssClass)) {\r\n containerCssClass = containerCssClass(this.$element);\r\n }\r\n\r\n var containerCssAdapter = this.options.get('adaptContainerCssClass');\r\n containerCssAdapter = containerCssAdapter || _containerAdapter;\r\n\r\n if (containerCssClass.indexOf(':all:') !== -1) {\r\n containerCssClass = containerCssClass.replace(':all:', '');\r\n\r\n var _cssAdapter = containerCssAdapter;\r\n\r\n containerCssAdapter = function (clazz) {\r\n var adapted = _cssAdapter(clazz);\r\n\r\n if (adapted != null) {\r\n // Append the old one along with the adapted one\r\n return adapted + ' ' + clazz;\r\n }\r\n\r\n return clazz;\r\n };\r\n }\r\n\r\n var containerCss = this.options.get('containerCss') || {};\r\n\r\n if ($.isFunction(containerCss)) {\r\n containerCss = containerCss(this.$element);\r\n }\r\n\r\n CompatUtils.syncCssClasses($container, this.$element, containerCssAdapter);\r\n\r\n $container.css(containerCss);\r\n $container.addClass(containerCssClass);\r\n\r\n return $container;\r\n };\r\n\r\n return ContainerCSS;\r\n});\r\n\nS2.define('select2/compat/dropdownCss',[\r\n 'jquery',\r\n './utils'\r\n], function ($, CompatUtils) {\r\n // No-op CSS adapter that discards all classes by default\r\n function _dropdownAdapter (clazz) {\r\n return null;\r\n }\r\n\r\n function DropdownCSS () { }\r\n\r\n DropdownCSS.prototype.render = function (decorated) {\r\n var $dropdown = decorated.call(this);\r\n\r\n var dropdownCssClass = this.options.get('dropdownCssClass') || '';\r\n\r\n if ($.isFunction(dropdownCssClass)) {\r\n dropdownCssClass = dropdownCssClass(this.$element);\r\n }\r\n\r\n var dropdownCssAdapter = this.options.get('adaptDropdownCssClass');\r\n dropdownCssAdapter = dropdownCssAdapter || _dropdownAdapter;\r\n\r\n if (dropdownCssClass.indexOf(':all:') !== -1) {\r\n dropdownCssClass = dropdownCssClass.replace(':all:', '');\r\n\r\n var _cssAdapter = dropdownCssAdapter;\r\n\r\n dropdownCssAdapter = function (clazz) {\r\n var adapted = _cssAdapter(clazz);\r\n\r\n if (adapted != null) {\r\n // Append the old one along with the adapted one\r\n return adapted + ' ' + clazz;\r\n }\r\n\r\n return clazz;\r\n };\r\n }\r\n\r\n var dropdownCss = this.options.get('dropdownCss') || {};\r\n\r\n if ($.isFunction(dropdownCss)) {\r\n dropdownCss = dropdownCss(this.$element);\r\n }\r\n\r\n CompatUtils.syncCssClasses($dropdown, this.$element, dropdownCssAdapter);\r\n\r\n $dropdown.css(dropdownCss);\r\n $dropdown.addClass(dropdownCssClass);\r\n\r\n return $dropdown;\r\n };\r\n\r\n return DropdownCSS;\r\n});\r\n\nS2.define('select2/compat/initSelection',[\r\n 'jquery'\r\n], function ($) {\r\n function InitSelection (decorated, $element, options) {\r\n if (options.get('debug') && window.console && console.warn) {\r\n console.warn(\r\n 'Select2: The `initSelection` option has been deprecated in favor' +\r\n ' of a custom data adapter that overrides the `current` method. ' +\r\n 'This method is now called multiple times instead of a single ' +\r\n 'time when the instance is initialized. Support will be removed ' +\r\n 'for the `initSelection` option in future versions of Select2'\r\n );\r\n }\r\n\r\n this.initSelection = options.get('initSelection');\r\n this._isInitialized = false;\r\n\r\n decorated.call(this, $element, options);\r\n }\r\n\r\n InitSelection.prototype.current = function (decorated, callback) {\r\n var self = this;\r\n\r\n if (this._isInitialized) {\r\n decorated.call(this, callback);\r\n\r\n return;\r\n }\r\n\r\n this.initSelection.call(null, this.$element, function (data) {\r\n self._isInitialized = true;\r\n\r\n if (!$.isArray(data)) {\r\n data = [data];\r\n }\r\n\r\n callback(data);\r\n });\r\n };\r\n\r\n return InitSelection;\r\n});\r\n\nS2.define('select2/compat/inputData',[\r\n 'jquery'\r\n], function ($) {\r\n function InputData (decorated, $element, options) {\r\n this._currentData = [];\r\n this._valueSeparator = options.get('valueSeparator') || ',';\r\n\r\n if ($element.prop('type') === 'hidden') {\r\n if (options.get('debug') && console && console.warn) {\r\n console.warn(\r\n 'Select2: Using a hidden input with Select2 is no longer ' +\r\n 'supported and may stop working in the future. It is recommended ' +\r\n 'to use a `