import {
require_jquery
} from "./chunk-DH55I632.js";
import {
__commonJS
} from "./chunk-WFTEJBJX.js";
// node_modules/select2/dist/js/select2.js
var require_select2 = __commonJS({
"node_modules/select2/dist/js/select2.js"(exports, module) {
(function(factory) {
if (typeof define === "function" && define.amd) {
define(["jquery"], factory);
} else if (typeof module === "object" && module.exports) {
module.exports = function(root, jQuery2) {
if (jQuery2 === void 0) {
if (typeof window !== "undefined") {
jQuery2 = require_jquery();
} else {
jQuery2 = require_jquery()(root);
}
}
factory(jQuery2);
return jQuery2;
};
} else {
factory(jQuery);
}
})(function(jQuery2) {
var S2 = function() {
if (jQuery2 && jQuery2.fn && jQuery2.fn.select2 && jQuery2.fn.select2.amd) {
var S22 = jQuery2.fn.select2.amd;
}
var S22;
(function() {
if (!S22 || !S22.requirejs) {
if (!S22) {
S22 = {};
} else {
require2 = S22;
}
var requirejs, require2, define2;
(function(undef) {
var main, req, makeMap, handlers, defined = {}, waiting = {}, config = {}, defining = {}, hasOwn = Object.prototype.hasOwnProperty, aps = [].slice, jsSuffixRegExp = /\.js$/;
function hasProp(obj, prop) {
return hasOwn.call(obj, prop);
}
function normalize(name, baseName) {
var nameParts, nameSegment, mapValue, foundMap, lastIndex, foundI, foundStarMap, starI, i, j, part, normalizedBaseParts, baseParts = baseName && baseName.split("/"), map = config.map, starMap = map && map["*"] || {};
if (name) {
name = name.split("/");
lastIndex = name.length - 1;
if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) {
name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, "");
}
if (name[0].charAt(0) === "." && baseParts) {
normalizedBaseParts = baseParts.slice(0, baseParts.length - 1);
name = normalizedBaseParts.concat(name);
}
for (i = 0; i < name.length; i++) {
part = name[i];
if (part === ".") {
name.splice(i, 1);
i -= 1;
} else if (part === "..") {
if (i === 0 || i === 1 && name[2] === ".." || name[i - 1] === "..") {
continue;
} else if (i > 0) {
name.splice(i - 1, 2);
i -= 2;
}
}
}
name = name.join("/");
}
if ((baseParts || starMap) && map) {
nameParts = name.split("/");
for (i = nameParts.length; i > 0; i -= 1) {
nameSegment = nameParts.slice(0, i).join("/");
if (baseParts) {
for (j = baseParts.length; j > 0; j -= 1) {
mapValue = map[baseParts.slice(0, j).join("/")];
if (mapValue) {
mapValue = mapValue[nameSegment];
if (mapValue) {
foundMap = mapValue;
foundI = i;
break;
}
}
}
}
if (foundMap) {
break;
}
if (!foundStarMap && starMap && starMap[nameSegment]) {
foundStarMap = starMap[nameSegment];
starI = i;
}
}
if (!foundMap && foundStarMap) {
foundMap = foundStarMap;
foundI = starI;
}
if (foundMap) {
nameParts.splice(0, foundI, foundMap);
name = nameParts.join("/");
}
}
return name;
}
function makeRequire(relName, forceSync) {
return function() {
var args = aps.call(arguments, 0);
if (typeof args[0] !== "string" && args.length === 1) {
args.push(null);
}
return req.apply(undef, args.concat([relName, forceSync]));
};
}
function makeNormalize(relName) {
return function(name) {
return normalize(name, relName);
};
}
function makeLoad(depName) {
return function(value) {
defined[depName] = value;
};
}
function callDep(name) {
if (hasProp(waiting, name)) {
var args = waiting[name];
delete waiting[name];
defining[name] = true;
main.apply(undef, args);
}
if (!hasProp(defined, name) && !hasProp(defining, name)) {
throw new Error("No " + name);
}
return defined[name];
}
function splitPrefix(name) {
var prefix, index = name ? name.indexOf("!") : -1;
if (index > -1) {
prefix = name.substring(0, index);
name = name.substring(index + 1, name.length);
}
return [prefix, name];
}
function makeRelParts(relName) {
return relName ? splitPrefix(relName) : [];
}
makeMap = function(name, relParts) {
var plugin, parts = splitPrefix(name), prefix = parts[0], relResourceName = relParts[1];
name = parts[1];
if (prefix) {
prefix = normalize(prefix, relResourceName);
plugin = callDep(prefix);
}
if (prefix) {
if (plugin && plugin.normalize) {
name = plugin.normalize(name, makeNormalize(relResourceName));
} else {
name = normalize(name, relResourceName);
}
} else {
name = normalize(name, relResourceName);
parts = splitPrefix(name);
prefix = parts[0];
name = parts[1];
if (prefix) {
plugin = callDep(prefix);
}
}
return {
f: prefix ? prefix + "!" + name : name,
//fullName
n: name,
pr: prefix,
p: plugin
};
};
function makeConfig(name) {
return function() {
return config && config.config && config.config[name] || {};
};
}
handlers = {
require: function(name) {
return makeRequire(name);
},
exports: function(name) {
var e = defined[name];
if (typeof e !== "undefined") {
return e;
} else {
return defined[name] = {};
}
},
module: function(name) {
return {
id: name,
uri: "",
exports: defined[name],
config: makeConfig(name)
};
}
};
main = function(name, deps, callback, relName) {
var cjsModule, depName, ret, map, i, relParts, args = [], callbackType = typeof callback, usingExports;
relName = relName || name;
relParts = makeRelParts(relName);
if (callbackType === "undefined" || callbackType === "function") {
deps = !deps.length && callback.length ? ["require", "exports", "module"] : deps;
for (i = 0; i < deps.length; i += 1) {
map = makeMap(deps[i], relParts);
depName = map.f;
if (depName === "require") {
args[i] = handlers.require(name);
} else if (depName === "exports") {
args[i] = handlers.exports(name);
usingExports = true;
} else if (depName === "module") {
cjsModule = args[i] = handlers.module(name);
} else if (hasProp(defined, depName) || hasProp(waiting, depName) || hasProp(defining, depName)) {
args[i] = callDep(depName);
} else if (map.p) {
map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {});
args[i] = defined[depName];
} else {
throw new Error(name + " missing " + depName);
}
}
ret = callback ? callback.apply(defined[name], args) : void 0;
if (name) {
if (cjsModule && cjsModule.exports !== undef && cjsModule.exports !== defined[name]) {
defined[name] = cjsModule.exports;
} else if (ret !== undef || !usingExports) {
defined[name] = ret;
}
}
} else if (name) {
defined[name] = callback;
}
};
requirejs = require2 = req = function(deps, callback, relName, forceSync, alt) {
if (typeof deps === "string") {
if (handlers[deps]) {
return handlers[deps](callback);
}
return callDep(makeMap(deps, makeRelParts(callback)).f);
} else if (!deps.splice) {
config = deps;
if (config.deps) {
req(config.deps, config.callback);
}
if (!callback) {
return;
}
if (callback.splice) {
deps = callback;
callback = relName;
relName = null;
} else {
deps = undef;
}
}
callback = callback || function() {
};
if (typeof relName === "function") {
relName = forceSync;
forceSync = alt;
}
if (forceSync) {
main(undef, deps, callback, relName);
} else {
setTimeout(function() {
main(undef, deps, callback, relName);
}, 4);
}
return req;
};
req.config = function(cfg) {
return req(cfg);
};
requirejs._defined = defined;
define2 = function(name, deps, callback) {
if (typeof name !== "string") {
throw new Error("See almond README: incorrect module build, no module name");
}
if (!deps.splice) {
callback = deps;
deps = [];
}
if (!hasProp(defined, name) && !hasProp(waiting, name)) {
waiting[name] = [name, deps, callback];
}
};
define2.amd = {
jQuery: true
};
})();
S22.requirejs = requirejs;
S22.require = require2;
S22.define = define2;
}
})();
S22.define("almond", function() {
});
S22.define("jquery", [], function() {
var _$ = jQuery2 || $;
if (_$ == null && console && console.error) {
console.error(
"Select2: An instance of jQuery or a jQuery-compatible library was not found. Make sure that you are including jQuery before Select2 on your web page."
);
}
return _$;
});
S22.define("select2/utils", [
"jquery"
], function($2) {
var Utils = {};
Utils.Extend = function(ChildClass, SuperClass) {
var __hasProp = {}.hasOwnProperty;
function BaseConstructor() {
this.constructor = ChildClass;
}
for (var key in SuperClass) {
if (__hasProp.call(SuperClass, key)) {
ChildClass[key] = SuperClass[key];
}
}
BaseConstructor.prototype = SuperClass.prototype;
ChildClass.prototype = new BaseConstructor();
ChildClass.__super__ = SuperClass.prototype;
return ChildClass;
};
function getMethods(theClass) {
var proto = theClass.prototype;
var methods = [];
for (var methodName in proto) {
var m = proto[methodName];
if (typeof m !== "function") {
continue;
}
if (methodName === "constructor") {
continue;
}
methods.push(methodName);
}
return methods;
}
Utils.Decorate = function(SuperClass, DecoratorClass) {
var decoratedMethods = getMethods(DecoratorClass);
var superMethods = getMethods(SuperClass);
function DecoratedClass() {
var unshift = Array.prototype.unshift;
var argCount = DecoratorClass.prototype.constructor.length;
var calledConstructor = SuperClass.prototype.constructor;
if (argCount > 0) {
unshift.call(arguments, SuperClass.prototype.constructor);
calledConstructor = DecoratorClass.prototype.constructor;
}
calledConstructor.apply(this, arguments);
}
DecoratorClass.displayName = SuperClass.displayName;
function ctr() {
this.constructor = DecoratedClass;
}
DecoratedClass.prototype = new ctr();
for (var m = 0; m < superMethods.length; m++) {
var superMethod = superMethods[m];
DecoratedClass.prototype[superMethod] = SuperClass.prototype[superMethod];
}
var calledMethod = function(methodName) {
var originalMethod = function() {
};
if (methodName in DecoratedClass.prototype) {
originalMethod = DecoratedClass.prototype[methodName];
}
var decoratedMethod2 = DecoratorClass.prototype[methodName];
return function() {
var unshift = Array.prototype.unshift;
unshift.call(arguments, originalMethod);
return decoratedMethod2.apply(this, arguments);
};
};
for (var d = 0; d < decoratedMethods.length; d++) {
var decoratedMethod = decoratedMethods[d];
DecoratedClass.prototype[decoratedMethod] = calledMethod(decoratedMethod);
}
return DecoratedClass;
};
var Observable = function() {
this.listeners = {};
};
Observable.prototype.on = function(event, callback) {
this.listeners = this.listeners || {};
if (event in this.listeners) {
this.listeners[event].push(callback);
} else {
this.listeners[event] = [callback];
}
};
Observable.prototype.trigger = function(event) {
var slice = Array.prototype.slice;
var params = slice.call(arguments, 1);
this.listeners = this.listeners || {};
if (params == null) {
params = [];
}
if (params.length === 0) {
params.push({});
}
params[0]._type = event;
if (event in this.listeners) {
this.invoke(this.listeners[event], slice.call(arguments, 1));
}
if ("*" in this.listeners) {
this.invoke(this.listeners["*"], arguments);
}
};
Observable.prototype.invoke = function(listeners, params) {
for (var i = 0, len = listeners.length; i < len; i++) {
listeners[i].apply(this, params);
}
};
Utils.Observable = Observable;
Utils.generateChars = function(length) {
var chars = "";
for (var i = 0; i < length; i++) {
var randomChar = Math.floor(Math.random() * 36);
chars += randomChar.toString(36);
}
return chars;
};
Utils.bind = function(func, context) {
return function() {
func.apply(context, arguments);
};
};
Utils._convertData = function(data) {
for (var originalKey in data) {
var keys = originalKey.split("-");
var dataLevel = data;
if (keys.length === 1) {
continue;
}
for (var k = 0; k < keys.length; k++) {
var key = keys[k];
key = key.substring(0, 1).toLowerCase() + key.substring(1);
if (!(key in dataLevel)) {
dataLevel[key] = {};
}
if (k == keys.length - 1) {
dataLevel[key] = data[originalKey];
}
dataLevel = dataLevel[key];
}
delete data[originalKey];
}
return data;
};
Utils.hasScroll = function(index, el) {
var $el = $2(el);
var overflowX = el.style.overflowX;
var overflowY = el.style.overflowY;
if (overflowX === overflowY && (overflowY === "hidden" || overflowY === "visible")) {
return false;
}
if (overflowX === "scroll" || overflowY === "scroll") {
return true;
}
return $el.innerHeight() < el.scrollHeight || $el.innerWidth() < el.scrollWidth;
};
Utils.escapeMarkup = function(markup) {
var replaceMap = {
"\\": "\",
"&": "&",
"<": "<",
">": ">",
'"': """,
"'": "'",
"/": "/"
};
if (typeof markup !== "string") {
return markup;
}
return String(markup).replace(/[&<>"'\/\\]/g, function(match) {
return replaceMap[match];
});
};
Utils.__cache = {};
var id = 0;
Utils.GetUniqueElementId = function(element) {
var select2Id = element.getAttribute("data-select2-id");
if (select2Id != null) {
return select2Id;
}
if (element.id) {
select2Id = "select2-data-" + element.id;
} else {
select2Id = "select2-data-" + (++id).toString() + "-" + Utils.generateChars(4);
}
element.setAttribute("data-select2-id", select2Id);
return select2Id;
};
Utils.StoreData = function(element, name, value) {
var id2 = Utils.GetUniqueElementId(element);
if (!Utils.__cache[id2]) {
Utils.__cache[id2] = {};
}
Utils.__cache[id2][name] = value;
};
Utils.GetData = function(element, name) {
var id2 = Utils.GetUniqueElementId(element);
if (name) {
if (Utils.__cache[id2]) {
if (Utils.__cache[id2][name] != null) {
return Utils.__cache[id2][name];
}
return $2(element).data(name);
}
return $2(element).data(name);
} else {
return Utils.__cache[id2];
}
};
Utils.RemoveData = function(element) {
var id2 = Utils.GetUniqueElementId(element);
if (Utils.__cache[id2] != null) {
delete Utils.__cache[id2];
}
element.removeAttribute("data-select2-id");
};
Utils.copyNonInternalCssClasses = function(dest, src) {
var classes;
var destinationClasses = dest.getAttribute("class").trim().split(/\s+/);
destinationClasses = destinationClasses.filter(function(clazz) {
return clazz.indexOf("select2-") === 0;
});
var sourceClasses = src.getAttribute("class").trim().split(/\s+/);
sourceClasses = sourceClasses.filter(function(clazz) {
return clazz.indexOf("select2-") !== 0;
});
var replacements = destinationClasses.concat(sourceClasses);
dest.setAttribute("class", replacements.join(" "));
};
return Utils;
});
S22.define("select2/results", [
"jquery",
"./utils"
], function($2, Utils) {
function Results($element, options, dataAdapter) {
this.$element = $element;
this.data = dataAdapter;
this.options = options;
Results.__super__.constructor.call(this);
}
Utils.Extend(Results, Utils.Observable);
Results.prototype.render = function() {
var $results = $2(
'
'
);
if (this.options.get("multiple")) {
$results.attr("aria-multiselectable", "true");
}
this.$results = $results;
return $results;
};
Results.prototype.clear = function() {
this.$results.empty();
};
Results.prototype.displayMessage = function(params) {
var escapeMarkup = this.options.get("escapeMarkup");
this.clear();
this.hideLoading();
var $message = $2(
''
);
var message = this.options.get("translations").get(params.message);
$message.append(
escapeMarkup(
message(params.args)
)
);
$message[0].className += " select2-results__message";
this.$results.append($message);
};
Results.prototype.hideMessages = function() {
this.$results.find(".select2-results__message").remove();
};
Results.prototype.append = function(data) {
this.hideLoading();
var $options = [];
if (data.results == null || data.results.length === 0) {
if (this.$results.children().length === 0) {
this.trigger("results:message", {
message: "noResults"
});
}
return;
}
data.results = this.sort(data.results);
for (var d = 0; d < data.results.length; d++) {
var item = data.results[d];
var $option = this.option(item);
$options.push($option);
}
this.$results.append($options);
};
Results.prototype.position = function($results, $dropdown) {
var $resultsContainer = $dropdown.find(".select2-results");
$resultsContainer.append($results);
};
Results.prototype.sort = function(data) {
var sorter = this.options.get("sorter");
return sorter(data);
};
Results.prototype.highlightFirstItem = function() {
var $options = this.$results.find(".select2-results__option--selectable");
var $selected = $options.filter(".select2-results__option--selected");
if ($selected.length > 0) {
$selected.first().trigger("mouseenter");
} else {
$options.first().trigger("mouseenter");
}
this.ensureHighlightVisible();
};
Results.prototype.setClasses = function() {
var self = this;
this.data.current(function(selected) {
var selectedIds = selected.map(function(s) {
return s.id.toString();
});
var $options = self.$results.find(".select2-results__option--selectable");
$options.each(function() {
var $option = $2(this);
var item = Utils.GetData(this, "data");
var id = "" + item.id;
if (item.element != null && item.element.selected || item.element == null && selectedIds.indexOf(id) > -1) {
this.classList.add("select2-results__option--selected");
$option.attr("aria-selected", "true");
} else {
this.classList.remove("select2-results__option--selected");
$option.attr("aria-selected", "false");
}
});
});
};
Results.prototype.showLoading = function(params) {
this.hideLoading();
var loadingMore = this.options.get("translations").get("searching");
var loading = {
disabled: true,
loading: true,
text: loadingMore(params)
};
var $loading = this.option(loading);
$loading.className += " loading-results";
this.$results.prepend($loading);
};
Results.prototype.hideLoading = function() {
this.$results.find(".loading-results").remove();
};
Results.prototype.option = function(data) {
var option = document.createElement("li");
option.classList.add("select2-results__option");
option.classList.add("select2-results__option--selectable");
var attrs = {
"role": "option"
};
var matches = window.Element.prototype.matches || window.Element.prototype.msMatchesSelector || window.Element.prototype.webkitMatchesSelector;
if (data.element != null && matches.call(data.element, ":disabled") || data.element == null && data.disabled) {
attrs["aria-disabled"] = "true";
option.classList.remove("select2-results__option--selectable");
option.classList.add("select2-results__option--disabled");
}
if (data.id == null) {
option.classList.remove("select2-results__option--selectable");
}
if (data._resultId != null) {
option.id = data._resultId;
}
if (data.title) {
option.title = data.title;
}
if (data.children) {
attrs.role = "group";
attrs["aria-label"] = data.text;
option.classList.remove("select2-results__option--selectable");
option.classList.add("select2-results__option--group");
}
for (var attr in attrs) {
var val = attrs[attr];
option.setAttribute(attr, val);
}
if (data.children) {
var $option = $2(option);
var label = document.createElement("strong");
label.className = "select2-results__group";
this.template(data, label);
var $children = [];
for (var c = 0; c < data.children.length; c++) {
var child = data.children[c];
var $child = this.option(child);
$children.push($child);
}
var $childrenContainer = $2("", {
"class": "select2-results__options select2-results__options--nested",
"role": "none"
});
$childrenContainer.append($children);
$option.append(label);
$option.append($childrenContainer);
} else {
this.template(data, option);
}
Utils.StoreData(option, "data", data);
return option;
};
Results.prototype.bind = function(container, $container) {
var self = this;
var id = container.id + "-results";
this.$results.attr("id", id);
container.on("results:all", function(params) {
self.clear();
self.append(params.data);
if (container.isOpen()) {
self.setClasses();
self.highlightFirstItem();
}
});
container.on("results:append", function(params) {
self.append(params.data);
if (container.isOpen()) {
self.setClasses();
}
});
container.on("query", function(params) {
self.hideMessages();
self.showLoading(params);
});
container.on("select", function() {
if (!container.isOpen()) {
return;
}
self.setClasses();
if (self.options.get("scrollAfterSelect")) {
self.highlightFirstItem();
}
});
container.on("unselect", function() {
if (!container.isOpen()) {
return;
}
self.setClasses();
if (self.options.get("scrollAfterSelect")) {
self.highlightFirstItem();
}
});
container.on("open", function() {
self.$results.attr("aria-expanded", "true");
self.$results.attr("aria-hidden", "false");
self.setClasses();
self.ensureHighlightVisible();
});
container.on("close", function() {
self.$results.attr("aria-expanded", "false");
self.$results.attr("aria-hidden", "true");
self.$results.removeAttr("aria-activedescendant");
});
container.on("results:toggle", function() {
var $highlighted = self.getHighlightedResults();
if ($highlighted.length === 0) {
return;
}
$highlighted.trigger("mouseup");
});
container.on("results:select", function() {
var $highlighted = self.getHighlightedResults();
if ($highlighted.length === 0) {
return;
}
var data = Utils.GetData($highlighted[0], "data");
if ($highlighted.hasClass("select2-results__option--selected")) {
self.trigger("close", {});
} else {
self.trigger("select", {
data
});
}
});
container.on("results:previous", function() {
var $highlighted = self.getHighlightedResults();
var $options = self.$results.find(".select2-results__option--selectable");
var currentIndex = $options.index($highlighted);
if (currentIndex <= 0) {
return;
}
var nextIndex = currentIndex - 1;
if ($highlighted.length === 0) {
nextIndex = 0;
}
var $next = $options.eq(nextIndex);
$next.trigger("mouseenter");
var currentOffset = self.$results.offset().top;
var nextTop = $next.offset().top;
var nextOffset = self.$results.scrollTop() + (nextTop - currentOffset);
if (nextIndex === 0) {
self.$results.scrollTop(0);
} else if (nextTop - currentOffset < 0) {
self.$results.scrollTop(nextOffset);
}
});
container.on("results:next", function() {
var $highlighted = self.getHighlightedResults();
var $options = self.$results.find(".select2-results__option--selectable");
var currentIndex = $options.index($highlighted);
var nextIndex = currentIndex + 1;
if (nextIndex >= $options.length) {
return;
}
var $next = $options.eq(nextIndex);
$next.trigger("mouseenter");
var currentOffset = self.$results.offset().top + self.$results.outerHeight(false);
var nextBottom = $next.offset().top + $next.outerHeight(false);
var nextOffset = self.$results.scrollTop() + nextBottom - currentOffset;
if (nextIndex === 0) {
self.$results.scrollTop(0);
} else if (nextBottom > currentOffset) {
self.$results.scrollTop(nextOffset);
}
});
container.on("results:focus", function(params) {
params.element[0].classList.add("select2-results__option--highlighted");
params.element[0].setAttribute("aria-selected", "true");
});
container.on("results:message", function(params) {
self.displayMessage(params);
});
if ($2.fn.mousewheel) {
this.$results.on("mousewheel", function(e) {
var top = self.$results.scrollTop();
var bottom = self.$results.get(0).scrollHeight - top + e.deltaY;
var isAtTop = e.deltaY > 0 && top - e.deltaY <= 0;
var isAtBottom = e.deltaY < 0 && bottom <= self.$results.height();
if (isAtTop) {
self.$results.scrollTop(0);
e.preventDefault();
e.stopPropagation();
} else if (isAtBottom) {
self.$results.scrollTop(
self.$results.get(0).scrollHeight - self.$results.height()
);
e.preventDefault();
e.stopPropagation();
}
});
}
this.$results.on(
"mouseup",
".select2-results__option--selectable",
function(evt) {
var $this = $2(this);
var data = Utils.GetData(this, "data");
if ($this.hasClass("select2-results__option--selected")) {
if (self.options.get("multiple")) {
self.trigger("unselect", {
originalEvent: evt,
data
});
} else {
self.trigger("close", {});
}
return;
}
self.trigger("select", {
originalEvent: evt,
data
});
}
);
this.$results.on(
"mouseenter",
".select2-results__option--selectable",
function(evt) {
var data = Utils.GetData(this, "data");
self.getHighlightedResults().removeClass("select2-results__option--highlighted").attr("aria-selected", "false");
self.trigger("results:focus", {
data,
element: $2(this)
});
}
);
};
Results.prototype.getHighlightedResults = function() {
var $highlighted = this.$results.find(".select2-results__option--highlighted");
return $highlighted;
};
Results.prototype.destroy = function() {
this.$results.remove();
};
Results.prototype.ensureHighlightVisible = function() {
var $highlighted = this.getHighlightedResults();
if ($highlighted.length === 0) {
return;
}
var $options = this.$results.find(".select2-results__option--selectable");
var currentIndex = $options.index($highlighted);
var currentOffset = this.$results.offset().top;
var nextTop = $highlighted.offset().top;
var nextOffset = this.$results.scrollTop() + (nextTop - currentOffset);
var offsetDelta = nextTop - currentOffset;
nextOffset -= $highlighted.outerHeight(false) * 2;
if (currentIndex <= 2) {
this.$results.scrollTop(0);
} else if (offsetDelta > this.$results.outerHeight() || offsetDelta < 0) {
this.$results.scrollTop(nextOffset);
}
};
Results.prototype.template = function(result, container) {
var template = this.options.get("templateResult");
var escapeMarkup = this.options.get("escapeMarkup");
var content = template(result, container);
if (content == null) {
container.style.display = "none";
} else if (typeof content === "string") {
container.innerHTML = escapeMarkup(content);
} else {
$2(container).append(content);
}
};
return Results;
});
S22.define("select2/keys", [], function() {
var KEYS = {
BACKSPACE: 8,
TAB: 9,
ENTER: 13,
SHIFT: 16,
CTRL: 17,
ALT: 18,
ESC: 27,
SPACE: 32,
PAGE_UP: 33,
PAGE_DOWN: 34,
END: 35,
HOME: 36,
LEFT: 37,
UP: 38,
RIGHT: 39,
DOWN: 40,
DELETE: 46
};
return KEYS;
});
S22.define("select2/selection/base", [
"jquery",
"../utils",
"../keys"
], function($2, Utils, KEYS) {
function BaseSelection($element, options) {
this.$element = $element;
this.options = options;
BaseSelection.__super__.constructor.call(this);
}
Utils.Extend(BaseSelection, Utils.Observable);
BaseSelection.prototype.render = function() {
var $selection = $2(
''
);
this._tabindex = 0;
if (Utils.GetData(this.$element[0], "old-tabindex") != null) {
this._tabindex = Utils.GetData(this.$element[0], "old-tabindex");
} else if (this.$element.attr("tabindex") != null) {
this._tabindex = this.$element.attr("tabindex");
}
$selection.attr("title", this.$element.attr("title"));
$selection.attr("tabindex", this._tabindex);
$selection.attr("aria-disabled", "false");
this.$selection = $selection;
return $selection;
};
BaseSelection.prototype.bind = function(container, $container) {
var self = this;
var resultsId = container.id + "-results";
this.container = container;
this.$selection.on("focus", function(evt) {
self.trigger("focus", evt);
});
this.$selection.on("blur", function(evt) {
self._handleBlur(evt);
});
this.$selection.on("keydown", function(evt) {
self.trigger("keypress", evt);
if (evt.which === KEYS.SPACE) {
evt.preventDefault();
}
});
container.on("results:focus", function(params) {
self.$selection.attr("aria-activedescendant", params.data._resultId);
});
container.on("selection:update", function(params) {
self.update(params.data);
});
container.on("open", function() {
self.$selection.attr("aria-expanded", "true");
self.$selection.attr("aria-owns", resultsId);
self._attachCloseHandler(container);
});
container.on("close", function() {
self.$selection.attr("aria-expanded", "false");
self.$selection.removeAttr("aria-activedescendant");
self.$selection.removeAttr("aria-owns");
self.$selection.trigger("focus");
self._detachCloseHandler(container);
});
container.on("enable", function() {
self.$selection.attr("tabindex", self._tabindex);
self.$selection.attr("aria-disabled", "false");
});
container.on("disable", function() {
self.$selection.attr("tabindex", "-1");
self.$selection.attr("aria-disabled", "true");
});
};
BaseSelection.prototype._handleBlur = function(evt) {
var self = this;
window.setTimeout(function() {
if (document.activeElement == self.$selection[0] || $2.contains(self.$selection[0], document.activeElement)) {
return;
}
self.trigger("blur", evt);
}, 1);
};
BaseSelection.prototype._attachCloseHandler = function(container) {
$2(document.body).on("mousedown.select2." + container.id, function(e) {
var $target = $2(e.target);
var $select = $target.closest(".select2");
var $all = $2(".select2.select2-container--open");
$all.each(function() {
if (this == $select[0]) {
return;
}
var $element = Utils.GetData(this, "element");
$element.select2("close");
});
});
};
BaseSelection.prototype._detachCloseHandler = function(container) {
$2(document.body).off("mousedown.select2." + container.id);
};
BaseSelection.prototype.position = function($selection, $container) {
var $selectionContainer = $container.find(".selection");
$selectionContainer.append($selection);
};
BaseSelection.prototype.destroy = function() {
this._detachCloseHandler(this.container);
};
BaseSelection.prototype.update = function(data) {
throw new Error("The `update` method must be defined in child classes.");
};
BaseSelection.prototype.isEnabled = function() {
return !this.isDisabled();
};
BaseSelection.prototype.isDisabled = function() {
return this.options.get("disabled");
};
return BaseSelection;
});
S22.define("select2/selection/single", [
"jquery",
"./base",
"../utils",
"../keys"
], function($2, BaseSelection, Utils, KEYS) {
function SingleSelection() {
SingleSelection.__super__.constructor.apply(this, arguments);
}
Utils.Extend(SingleSelection, BaseSelection);
SingleSelection.prototype.render = function() {
var $selection = SingleSelection.__super__.render.call(this);
$selection[0].classList.add("select2-selection--single");
$selection.html(
''
);
return $selection;
};
SingleSelection.prototype.bind = function(container, $container) {
var self = this;
SingleSelection.__super__.bind.apply(this, arguments);
var id = container.id + "-container";
this.$selection.find(".select2-selection__rendered").attr("id", id).attr("role", "textbox").attr("aria-readonly", "true");
this.$selection.attr("aria-labelledby", id);
this.$selection.attr("aria-controls", id);
this.$selection.on("mousedown", function(evt) {
if (evt.which !== 1) {
return;
}
self.trigger("toggle", {
originalEvent: evt
});
});
this.$selection.on("focus", function(evt) {
});
this.$selection.on("blur", function(evt) {
});
container.on("focus", function(evt) {
if (!container.isOpen()) {
self.$selection.trigger("focus");
}
});
};
SingleSelection.prototype.clear = function() {
var $rendered = this.$selection.find(".select2-selection__rendered");
$rendered.empty();
$rendered.removeAttr("title");
};
SingleSelection.prototype.display = function(data, container) {
var template = this.options.get("templateSelection");
var escapeMarkup = this.options.get("escapeMarkup");
return escapeMarkup(template(data, container));
};
SingleSelection.prototype.selectionContainer = function() {
return $2("");
};
SingleSelection.prototype.update = function(data) {
if (data.length === 0) {
this.clear();
return;
}
var selection = data[0];
var $rendered = this.$selection.find(".select2-selection__rendered");
var formatted = this.display(selection, $rendered);
$rendered.empty().append(formatted);
var title = selection.title || selection.text;
if (title) {
$rendered.attr("title", title);
} else {
$rendered.removeAttr("title");
}
};
return SingleSelection;
});
S22.define("select2/selection/multiple", [
"jquery",
"./base",
"../utils"
], function($2, BaseSelection, Utils) {
function MultipleSelection($element, options) {
MultipleSelection.__super__.constructor.apply(this, arguments);
}
Utils.Extend(MultipleSelection, BaseSelection);
MultipleSelection.prototype.render = function() {
var $selection = MultipleSelection.__super__.render.call(this);
$selection[0].classList.add("select2-selection--multiple");
$selection.html(
''
);
return $selection;
};
MultipleSelection.prototype.bind = function(container, $container) {
var self = this;
MultipleSelection.__super__.bind.apply(this, arguments);
var id = container.id + "-container";
this.$selection.find(".select2-selection__rendered").attr("id", id);
this.$selection.on("click", function(evt) {
self.trigger("toggle", {
originalEvent: evt
});
});
this.$selection.on(
"click",
".select2-selection__choice__remove",
function(evt) {
if (self.isDisabled()) {
return;
}
var $remove = $2(this);
var $selection = $remove.parent();
var data = Utils.GetData($selection[0], "data");
self.trigger("unselect", {
originalEvent: evt,
data
});
}
);
this.$selection.on(
"keydown",
".select2-selection__choice__remove",
function(evt) {
if (self.isDisabled()) {
return;
}
evt.stopPropagation();
}
);
};
MultipleSelection.prototype.clear = function() {
var $rendered = this.$selection.find(".select2-selection__rendered");
$rendered.empty();
$rendered.removeAttr("title");
};
MultipleSelection.prototype.display = function(data, container) {
var template = this.options.get("templateSelection");
var escapeMarkup = this.options.get("escapeMarkup");
return escapeMarkup(template(data, container));
};
MultipleSelection.prototype.selectionContainer = function() {
var $container = $2(
''
);
return $container;
};
MultipleSelection.prototype.update = function(data) {
this.clear();
if (data.length === 0) {
return;
}
var $selections = [];
var selectionIdPrefix = this.$selection.find(".select2-selection__rendered").attr("id") + "-choice-";
for (var d = 0; d < data.length; d++) {
var selection = data[d];
var $selection = this.selectionContainer();
var formatted = this.display(selection, $selection);
var selectionId = selectionIdPrefix + Utils.generateChars(4) + "-";
if (selection.id) {
selectionId += selection.id;
} else {
selectionId += Utils.generateChars(4);
}
$selection.find(".select2-selection__choice__display").append(formatted).attr("id", selectionId);
var title = selection.title || selection.text;
if (title) {
$selection.attr("title", title);
}
var removeItem = this.options.get("translations").get("removeItem");
var $remove = $selection.find(".select2-selection__choice__remove");
$remove.attr("title", removeItem());
$remove.attr("aria-label", removeItem());
$remove.attr("aria-describedby", selectionId);
Utils.StoreData($selection[0], "data", selection);
$selections.push($selection);
}
var $rendered = this.$selection.find(".select2-selection__rendered");
$rendered.append($selections);
};
return MultipleSelection;
});
S22.define("select2/selection/placeholder", [], function() {
function Placeholder(decorated, $element, options) {
this.placeholder = this.normalizePlaceholder(options.get("placeholder"));
decorated.call(this, $element, options);
}
Placeholder.prototype.normalizePlaceholder = function(_, placeholder) {
if (typeof placeholder === "string") {
placeholder = {
id: "",
text: placeholder
};
}
return placeholder;
};
Placeholder.prototype.createPlaceholder = function(decorated, placeholder) {
var $placeholder = this.selectionContainer();
$placeholder.html(this.display(placeholder));
$placeholder[0].classList.add("select2-selection__placeholder");
$placeholder[0].classList.remove("select2-selection__choice");
var placeholderTitle = placeholder.title || placeholder.text || $placeholder.text();
this.$selection.find(".select2-selection__rendered").attr(
"title",
placeholderTitle
);
return $placeholder;
};
Placeholder.prototype.update = function(decorated, data) {
var singlePlaceholder = data.length == 1 && data[0].id != this.placeholder.id;
var multipleSelections = data.length > 1;
if (multipleSelections || singlePlaceholder) {
return decorated.call(this, data);
}
this.clear();
var $placeholder = this.createPlaceholder(this.placeholder);
this.$selection.find(".select2-selection__rendered").append($placeholder);
};
return Placeholder;
});
S22.define("select2/selection/allowClear", [
"jquery",
"../keys",
"../utils"
], function($2, KEYS, Utils) {
function AllowClear() {
}
AllowClear.prototype.bind = function(decorated, container, $container) {
var self = this;
decorated.call(this, container, $container);
if (this.placeholder == null) {
if (this.options.get("debug") && window.console && console.error) {
console.error(
"Select2: The `allowClear` option should be used in combination with the `placeholder` option."
);
}
}
this.$selection.on(
"mousedown",
".select2-selection__clear",
function(evt) {
self._handleClear(evt);
}
);
container.on("keypress", function(evt) {
self._handleKeyboardClear(evt, container);
});
};
AllowClear.prototype._handleClear = function(_, evt) {
if (this.isDisabled()) {
return;
}
var $clear = this.$selection.find(".select2-selection__clear");
if ($clear.length === 0) {
return;
}
evt.stopPropagation();
var data = Utils.GetData($clear[0], "data");
var previousVal = this.$element.val();
this.$element.val(this.placeholder.id);
var unselectData = {
data
};
this.trigger("clear", unselectData);
if (unselectData.prevented) {
this.$element.val(previousVal);
return;
}
for (var d = 0; d < data.length; d++) {
unselectData = {
data: data[d]
};
this.trigger("unselect", unselectData);
if (unselectData.prevented) {
this.$element.val(previousVal);
return;
}
}
this.$element.trigger("input").trigger("change");
this.trigger("toggle", {});
};
AllowClear.prototype._handleKeyboardClear = function(_, evt, container) {
if (container.isOpen()) {
return;
}
if (evt.which == KEYS.DELETE || evt.which == KEYS.BACKSPACE) {
this._handleClear(evt);
}
};
AllowClear.prototype.update = function(decorated, data) {
decorated.call(this, data);
this.$selection.find(".select2-selection__clear").remove();
this.$selection[0].classList.remove("select2-selection--clearable");
if (this.$selection.find(".select2-selection__placeholder").length > 0 || data.length === 0) {
return;
}
var selectionId = this.$selection.find(".select2-selection__rendered").attr("id");
var removeAll = this.options.get("translations").get("removeAllItems");
var $remove = $2(
''
);
$remove.attr("title", removeAll());
$remove.attr("aria-label", removeAll());
$remove.attr("aria-describedby", selectionId);
Utils.StoreData($remove[0], "data", data);
this.$selection.prepend($remove);
this.$selection[0].classList.add("select2-selection--clearable");
};
return AllowClear;
});
S22.define("select2/selection/search", [
"jquery",
"../utils",
"../keys"
], function($2, Utils, KEYS) {
function Search(decorated, $element, options) {
decorated.call(this, $element, options);
}
Search.prototype.render = function(decorated) {
var searchLabel = this.options.get("translations").get("search");
var $search = $2(
''
);
this.$searchContainer = $search;
this.$search = $search.find("textarea");
this.$search.prop("autocomplete", this.options.get("autocomplete"));
this.$search.attr("aria-label", searchLabel());
var $rendered = decorated.call(this);
this._transferTabIndex();
$rendered.append(this.$searchContainer);
return $rendered;
};
Search.prototype.bind = function(decorated, container, $container) {
var self = this;
var resultsId = container.id + "-results";
var selectionId = container.id + "-container";
decorated.call(this, container, $container);
self.$search.attr("aria-describedby", selectionId);
container.on("open", function() {
self.$search.attr("aria-controls", resultsId);
self.$search.trigger("focus");
});
container.on("close", function() {
self.$search.val("");
self.resizeSearch();
self.$search.removeAttr("aria-controls");
self.$search.removeAttr("aria-activedescendant");
self.$search.trigger("focus");
});
container.on("enable", function() {
self.$search.prop("disabled", false);
self._transferTabIndex();
});
container.on("disable", function() {
self.$search.prop("disabled", true);
});
container.on("focus", function(evt) {
self.$search.trigger("focus");
});
container.on("results:focus", function(params) {
if (params.data._resultId) {
self.$search.attr("aria-activedescendant", params.data._resultId);
} else {
self.$search.removeAttr("aria-activedescendant");
}
});
this.$selection.on("focusin", ".select2-search--inline", function(evt) {
self.trigger("focus", evt);
});
this.$selection.on("focusout", ".select2-search--inline", function(evt) {
self._handleBlur(evt);
});
this.$selection.on("keydown", ".select2-search--inline", function(evt) {
evt.stopPropagation();
self.trigger("keypress", evt);
self._keyUpPrevented = evt.isDefaultPrevented();
var key = evt.which;
if (key === KEYS.BACKSPACE && self.$search.val() === "") {
var $previousChoice = self.$selection.find(".select2-selection__choice").last();
if ($previousChoice.length > 0) {
var item = Utils.GetData($previousChoice[0], "data");
self.searchRemoveChoice(item);
evt.preventDefault();
}
}
});
this.$selection.on("click", ".select2-search--inline", function(evt) {
if (self.$search.val()) {
evt.stopPropagation();
}
});
var msie = document.documentMode;
var disableInputEvents = msie && msie <= 11;
this.$selection.on(
"input.searchcheck",
".select2-search--inline",
function(evt) {
if (disableInputEvents) {
self.$selection.off("input.search input.searchcheck");
return;
}
self.$selection.off("keyup.search");
}
);
this.$selection.on(
"keyup.search input.search",
".select2-search--inline",
function(evt) {
if (disableInputEvents && evt.type === "input") {
self.$selection.off("input.search input.searchcheck");
return;
}
var key = evt.which;
if (key == KEYS.SHIFT || key == KEYS.CTRL || key == KEYS.ALT) {
return;
}
if (key == KEYS.TAB) {
return;
}
self.handleSearch(evt);
}
);
};
Search.prototype._transferTabIndex = function(decorated) {
this.$search.attr("tabindex", this.$selection.attr("tabindex"));
this.$selection.attr("tabindex", "-1");
};
Search.prototype.createPlaceholder = function(decorated, placeholder) {
this.$search.attr("placeholder", placeholder.text);
};
Search.prototype.update = function(decorated, data) {
var searchHadFocus = this.$search[0] == document.activeElement;
this.$search.attr("placeholder", "");
decorated.call(this, data);
this.resizeSearch();
if (searchHadFocus) {
this.$search.trigger("focus");
}
};
Search.prototype.handleSearch = function() {
this.resizeSearch();
if (!this._keyUpPrevented) {
var input = this.$search.val();
this.trigger("query", {
term: input
});
}
this._keyUpPrevented = false;
};
Search.prototype.searchRemoveChoice = function(decorated, item) {
this.trigger("unselect", {
data: item
});
this.$search.val(item.text);
this.handleSearch();
};
Search.prototype.resizeSearch = function() {
this.$search.css("width", "25px");
var width = "100%";
if (this.$search.attr("placeholder") === "") {
var minimumWidth = this.$search.val().length + 1;
width = minimumWidth * 0.75 + "em";
}
this.$search.css("width", width);
};
return Search;
});
S22.define("select2/selection/selectionCss", [
"../utils"
], function(Utils) {
function SelectionCSS() {
}
SelectionCSS.prototype.render = function(decorated) {
var $selection = decorated.call(this);
var selectionCssClass = this.options.get("selectionCssClass") || "";
if (selectionCssClass.indexOf(":all:") !== -1) {
selectionCssClass = selectionCssClass.replace(":all:", "");
Utils.copyNonInternalCssClasses($selection[0], this.$element[0]);
}
$selection.addClass(selectionCssClass);
return $selection;
};
return SelectionCSS;
});
S22.define("select2/selection/eventRelay", [
"jquery"
], function($2) {
function EventRelay() {
}
EventRelay.prototype.bind = function(decorated, container, $container) {
var self = this;
var relayEvents = [
"open",
"opening",
"close",
"closing",
"select",
"selecting",
"unselect",
"unselecting",
"clear",
"clearing"
];
var preventableEvents = [
"opening",
"closing",
"selecting",
"unselecting",
"clearing"
];
decorated.call(this, container, $container);
container.on("*", function(name, params) {
if (relayEvents.indexOf(name) === -1) {
return;
}
params = params || {};
var evt = $2.Event("select2:" + name, {
params
});
self.$element.trigger(evt);
if (preventableEvents.indexOf(name) === -1) {
return;
}
params.prevented = evt.isDefaultPrevented();
});
};
return EventRelay;
});
S22.define("select2/translation", [
"jquery",
"require"
], function($2, require2) {
function Translation(dict) {
this.dict = dict || {};
}
Translation.prototype.all = function() {
return this.dict;
};
Translation.prototype.get = function(key) {
return this.dict[key];
};
Translation.prototype.extend = function(translation) {
this.dict = $2.extend({}, translation.all(), this.dict);
};
Translation._cache = {};
Translation.loadPath = function(path) {
if (!(path in Translation._cache)) {
var translations = require2(path);
Translation._cache[path] = translations;
}
return new Translation(Translation._cache[path]);
};
return Translation;
});
S22.define("select2/diacritics", [], function() {
var diacritics = {
"Ⓐ": "A",
"A": "A",
"À": "A",
"Á": "A",
"Â": "A",
"Ầ": "A",
"Ấ": "A",
"Ẫ": "A",
"Ẩ": "A",
"Ã": "A",
"Ā": "A",
"Ă": "A",
"Ằ": "A",
"Ắ": "A",
"Ẵ": "A",
"Ẳ": "A",
"Ȧ": "A",
"Ǡ": "A",
"Ä": "A",
"Ǟ": "A",
"Ả": "A",
"Å": "A",
"Ǻ": "A",
"Ǎ": "A",
"Ȁ": "A",
"Ȃ": "A",
"Ạ": "A",
"Ậ": "A",
"Ặ": "A",
"Ḁ": "A",
"Ą": "A",
"Ⱥ": "A",
"Ɐ": "A",
"Ꜳ": "AA",
"Æ": "AE",
"Ǽ": "AE",
"Ǣ": "AE",
"Ꜵ": "AO",
"Ꜷ": "AU",
"Ꜹ": "AV",
"Ꜻ": "AV",
"Ꜽ": "AY",
"Ⓑ": "B",
"B": "B",
"Ḃ": "B",
"Ḅ": "B",
"Ḇ": "B",
"Ƀ": "B",
"Ƃ": "B",
"Ɓ": "B",
"Ⓒ": "C",
"C": "C",
"Ć": "C",
"Ĉ": "C",
"Ċ": "C",
"Č": "C",
"Ç": "C",
"Ḉ": "C",
"Ƈ": "C",
"Ȼ": "C",
"Ꜿ": "C",
"Ⓓ": "D",
"D": "D",
"Ḋ": "D",
"Ď": "D",
"Ḍ": "D",
"Ḑ": "D",
"Ḓ": "D",
"Ḏ": "D",
"Đ": "D",
"Ƌ": "D",
"Ɗ": "D",
"Ɖ": "D",
"Ꝺ": "D",
"DZ": "DZ",
"DŽ": "DZ",
"Dz": "Dz",
"Dž": "Dz",
"Ⓔ": "E",
"E": "E",
"È": "E",
"É": "E",
"Ê": "E",
"Ề": "E",
"Ế": "E",
"Ễ": "E",
"Ể": "E",
"Ẽ": "E",
"Ē": "E",
"Ḕ": "E",
"Ḗ": "E",
"Ĕ": "E",
"Ė": "E",
"Ë": "E",
"Ẻ": "E",
"Ě": "E",
"Ȅ": "E",
"Ȇ": "E",
"Ẹ": "E",
"Ệ": "E",
"Ȩ": "E",
"Ḝ": "E",
"Ę": "E",
"Ḙ": "E",
"Ḛ": "E",
"Ɛ": "E",
"Ǝ": "E",
"Ⓕ": "F",
"F": "F",
"Ḟ": "F",
"Ƒ": "F",
"Ꝼ": "F",
"Ⓖ": "G",
"G": "G",
"Ǵ": "G",
"Ĝ": "G",
"Ḡ": "G",
"Ğ": "G",
"Ġ": "G",
"Ǧ": "G",
"Ģ": "G",
"Ǥ": "G",
"Ɠ": "G",
"Ꞡ": "G",
"Ᵹ": "G",
"Ꝿ": "G",
"Ⓗ": "H",
"H": "H",
"Ĥ": "H",
"Ḣ": "H",
"Ḧ": "H",
"Ȟ": "H",
"Ḥ": "H",
"Ḩ": "H",
"Ḫ": "H",
"Ħ": "H",
"Ⱨ": "H",
"Ⱶ": "H",
"Ɥ": "H",
"Ⓘ": "I",
"I": "I",
"Ì": "I",
"Í": "I",
"Î": "I",
"Ĩ": "I",
"Ī": "I",
"Ĭ": "I",
"İ": "I",
"Ï": "I",
"Ḯ": "I",
"Ỉ": "I",
"Ǐ": "I",
"Ȉ": "I",
"Ȋ": "I",
"Ị": "I",
"Į": "I",
"Ḭ": "I",
"Ɨ": "I",
"Ⓙ": "J",
"J": "J",
"Ĵ": "J",
"Ɉ": "J",
"Ⓚ": "K",
"K": "K",
"Ḱ": "K",
"Ǩ": "K",
"Ḳ": "K",
"Ķ": "K",
"Ḵ": "K",
"Ƙ": "K",
"Ⱪ": "K",
"Ꝁ": "K",
"Ꝃ": "K",
"Ꝅ": "K",
"Ꞣ": "K",
"Ⓛ": "L",
"L": "L",
"Ŀ": "L",
"Ĺ": "L",
"Ľ": "L",
"Ḷ": "L",
"Ḹ": "L",
"Ļ": "L",
"Ḽ": "L",
"Ḻ": "L",
"Ł": "L",
"Ƚ": "L",
"Ɫ": "L",
"Ⱡ": "L",
"Ꝉ": "L",
"Ꝇ": "L",
"Ꞁ": "L",
"LJ": "LJ",
"Lj": "Lj",
"Ⓜ": "M",
"M": "M",
"Ḿ": "M",
"Ṁ": "M",
"Ṃ": "M",
"Ɱ": "M",
"Ɯ": "M",
"Ⓝ": "N",
"N": "N",
"Ǹ": "N",
"Ń": "N",
"Ñ": "N",
"Ṅ": "N",
"Ň": "N",
"Ṇ": "N",
"Ņ": "N",
"Ṋ": "N",
"Ṉ": "N",
"Ƞ": "N",
"Ɲ": "N",
"Ꞑ": "N",
"Ꞥ": "N",
"NJ": "NJ",
"Nj": "Nj",
"Ⓞ": "O",
"O": "O",
"Ò": "O",
"Ó": "O",
"Ô": "O",
"Ồ": "O",
"Ố": "O",
"Ỗ": "O",
"Ổ": "O",
"Õ": "O",
"Ṍ": "O",
"Ȭ": "O",
"Ṏ": "O",
"Ō": "O",
"Ṑ": "O",
"Ṓ": "O",
"Ŏ": "O",
"Ȯ": "O",
"Ȱ": "O",
"Ö": "O",
"Ȫ": "O",
"Ỏ": "O",
"Ő": "O",
"Ǒ": "O",
"Ȍ": "O",
"Ȏ": "O",
"Ơ": "O",
"Ờ": "O",
"Ớ": "O",
"Ỡ": "O",
"Ở": "O",
"Ợ": "O",
"Ọ": "O",
"Ộ": "O",
"Ǫ": "O",
"Ǭ": "O",
"Ø": "O",
"Ǿ": "O",
"Ɔ": "O",
"Ɵ": "O",
"Ꝋ": "O",
"Ꝍ": "O",
"Œ": "OE",
"Ƣ": "OI",
"Ꝏ": "OO",
"Ȣ": "OU",
"Ⓟ": "P",
"P": "P",
"Ṕ": "P",
"Ṗ": "P",
"Ƥ": "P",
"Ᵽ": "P",
"Ꝑ": "P",
"Ꝓ": "P",
"Ꝕ": "P",
"Ⓠ": "Q",
"Q": "Q",
"Ꝗ": "Q",
"Ꝙ": "Q",
"Ɋ": "Q",
"Ⓡ": "R",
"R": "R",
"Ŕ": "R",
"Ṙ": "R",
"Ř": "R",
"Ȑ": "R",
"Ȓ": "R",
"Ṛ": "R",
"Ṝ": "R",
"Ŗ": "R",
"Ṟ": "R",
"Ɍ": "R",
"Ɽ": "R",
"Ꝛ": "R",
"Ꞧ": "R",
"Ꞃ": "R",
"Ⓢ": "S",
"S": "S",
"ẞ": "S",
"Ś": "S",
"Ṥ": "S",
"Ŝ": "S",
"Ṡ": "S",
"Š": "S",
"Ṧ": "S",
"Ṣ": "S",
"Ṩ": "S",
"Ș": "S",
"Ş": "S",
"Ȿ": "S",
"Ꞩ": "S",
"Ꞅ": "S",
"Ⓣ": "T",
"T": "T",
"Ṫ": "T",
"Ť": "T",
"Ṭ": "T",
"Ț": "T",
"Ţ": "T",
"Ṱ": "T",
"Ṯ": "T",
"Ŧ": "T",
"Ƭ": "T",
"Ʈ": "T",
"Ⱦ": "T",
"Ꞇ": "T",
"Ꜩ": "TZ",
"Ⓤ": "U",
"U": "U",
"Ù": "U",
"Ú": "U",
"Û": "U",
"Ũ": "U",
"Ṹ": "U",
"Ū": "U",
"Ṻ": "U",
"Ŭ": "U",
"Ü": "U",
"Ǜ": "U",
"Ǘ": "U",
"Ǖ": "U",
"Ǚ": "U",
"Ủ": "U",
"Ů": "U",
"Ű": "U",
"Ǔ": "U",
"Ȕ": "U",
"Ȗ": "U",
"Ư": "U",
"Ừ": "U",
"Ứ": "U",
"Ữ": "U",
"Ử": "U",
"Ự": "U",
"Ụ": "U",
"Ṳ": "U",
"Ų": "U",
"Ṷ": "U",
"Ṵ": "U",
"Ʉ": "U",
"Ⓥ": "V",
"V": "V",
"Ṽ": "V",
"Ṿ": "V",
"Ʋ": "V",
"Ꝟ": "V",
"Ʌ": "V",
"Ꝡ": "VY",
"Ⓦ": "W",
"W": "W",
"Ẁ": "W",
"Ẃ": "W",
"Ŵ": "W",
"Ẇ": "W",
"Ẅ": "W",
"Ẉ": "W",
"Ⱳ": "W",
"Ⓧ": "X",
"X": "X",
"Ẋ": "X",
"Ẍ": "X",
"Ⓨ": "Y",
"Y": "Y",
"Ỳ": "Y",
"Ý": "Y",
"Ŷ": "Y",
"Ỹ": "Y",
"Ȳ": "Y",
"Ẏ": "Y",
"Ÿ": "Y",
"Ỷ": "Y",
"Ỵ": "Y",
"Ƴ": "Y",
"Ɏ": "Y",
"Ỿ": "Y",
"Ⓩ": "Z",
"Z": "Z",
"Ź": "Z",
"Ẑ": "Z",
"Ż": "Z",
"Ž": "Z",
"Ẓ": "Z",
"Ẕ": "Z",
"Ƶ": "Z",
"Ȥ": "Z",
"Ɀ": "Z",
"Ⱬ": "Z",
"Ꝣ": "Z",
"ⓐ": "a",
"a": "a",
"ẚ": "a",
"à": "a",
"á": "a",
"â": "a",
"ầ": "a",
"ấ": "a",
"ẫ": "a",
"ẩ": "a",
"ã": "a",
"ā": "a",
"ă": "a",
"ằ": "a",
"ắ": "a",
"ẵ": "a",
"ẳ": "a",
"ȧ": "a",
"ǡ": "a",
"ä": "a",
"ǟ": "a",
"ả": "a",
"å": "a",
"ǻ": "a",
"ǎ": "a",
"ȁ": "a",
"ȃ": "a",
"ạ": "a",
"ậ": "a",
"ặ": "a",
"ḁ": "a",
"ą": "a",
"ⱥ": "a",
"ɐ": "a",
"ꜳ": "aa",
"æ": "ae",
"ǽ": "ae",
"ǣ": "ae",
"ꜵ": "ao",
"ꜷ": "au",
"ꜹ": "av",
"ꜻ": "av",
"ꜽ": "ay",
"ⓑ": "b",
"b": "b",
"ḃ": "b",
"ḅ": "b",
"ḇ": "b",
"ƀ": "b",
"ƃ": "b",
"ɓ": "b",
"ⓒ": "c",
"c": "c",
"ć": "c",
"ĉ": "c",
"ċ": "c",
"č": "c",
"ç": "c",
"ḉ": "c",
"ƈ": "c",
"ȼ": "c",
"ꜿ": "c",
"ↄ": "c",
"ⓓ": "d",
"d": "d",
"ḋ": "d",
"ď": "d",
"ḍ": "d",
"ḑ": "d",
"ḓ": "d",
"ḏ": "d",
"đ": "d",
"ƌ": "d",
"ɖ": "d",
"ɗ": "d",
"ꝺ": "d",
"dz": "dz",
"dž": "dz",
"ⓔ": "e",
"e": "e",
"è": "e",
"é": "e",
"ê": "e",
"ề": "e",
"ế": "e",
"ễ": "e",
"ể": "e",
"ẽ": "e",
"ē": "e",
"ḕ": "e",
"ḗ": "e",
"ĕ": "e",
"ė": "e",
"ë": "e",
"ẻ": "e",
"ě": "e",
"ȅ": "e",
"ȇ": "e",
"ẹ": "e",
"ệ": "e",
"ȩ": "e",
"ḝ": "e",
"ę": "e",
"ḙ": "e",
"ḛ": "e",
"ɇ": "e",
"ɛ": "e",
"ǝ": "e",
"ⓕ": "f",
"f": "f",
"ḟ": "f",
"ƒ": "f",
"ꝼ": "f",
"ⓖ": "g",
"g": "g",
"ǵ": "g",
"ĝ": "g",
"ḡ": "g",
"ğ": "g",
"ġ": "g",
"ǧ": "g",
"ģ": "g",
"ǥ": "g",
"ɠ": "g",
"ꞡ": "g",
"ᵹ": "g",
"ꝿ": "g",
"ⓗ": "h",
"h": "h",
"ĥ": "h",
"ḣ": "h",
"ḧ": "h",
"ȟ": "h",
"ḥ": "h",
"ḩ": "h",
"ḫ": "h",
"ẖ": "h",
"ħ": "h",
"ⱨ": "h",
"ⱶ": "h",
"ɥ": "h",
"ƕ": "hv",
"ⓘ": "i",
"i": "i",
"ì": "i",
"í": "i",
"î": "i",
"ĩ": "i",
"ī": "i",
"ĭ": "i",
"ï": "i",
"ḯ": "i",
"ỉ": "i",
"ǐ": "i",
"ȉ": "i",
"ȋ": "i",
"ị": "i",
"į": "i",
"ḭ": "i",
"ɨ": "i",
"ı": "i",
"ⓙ": "j",
"j": "j",
"ĵ": "j",
"ǰ": "j",
"ɉ": "j",
"ⓚ": "k",
"k": "k",
"ḱ": "k",
"ǩ": "k",
"ḳ": "k",
"ķ": "k",
"ḵ": "k",
"ƙ": "k",
"ⱪ": "k",
"ꝁ": "k",
"ꝃ": "k",
"ꝅ": "k",
"ꞣ": "k",
"ⓛ": "l",
"l": "l",
"ŀ": "l",
"ĺ": "l",
"ľ": "l",
"ḷ": "l",
"ḹ": "l",
"ļ": "l",
"ḽ": "l",
"ḻ": "l",
"ſ": "l",
"ł": "l",
"ƚ": "l",
"ɫ": "l",
"ⱡ": "l",
"ꝉ": "l",
"ꞁ": "l",
"ꝇ": "l",
"lj": "lj",
"ⓜ": "m",
"m": "m",
"ḿ": "m",
"ṁ": "m",
"ṃ": "m",
"ɱ": "m",
"ɯ": "m",
"ⓝ": "n",
"n": "n",
"ǹ": "n",
"ń": "n",
"ñ": "n",
"ṅ": "n",
"ň": "n",
"ṇ": "n",
"ņ": "n",
"ṋ": "n",
"ṉ": "n",
"ƞ": "n",
"ɲ": "n",
"ʼn": "n",
"ꞑ": "n",
"ꞥ": "n",
"nj": "nj",
"ⓞ": "o",
"o": "o",
"ò": "o",
"ó": "o",
"ô": "o",
"ồ": "o",
"ố": "o",
"ỗ": "o",
"ổ": "o",
"õ": "o",
"ṍ": "o",
"ȭ": "o",
"ṏ": "o",
"ō": "o",
"ṑ": "o",
"ṓ": "o",
"ŏ": "o",
"ȯ": "o",
"ȱ": "o",
"ö": "o",
"ȫ": "o",
"ỏ": "o",
"ő": "o",
"ǒ": "o",
"ȍ": "o",
"ȏ": "o",
"ơ": "o",
"ờ": "o",
"ớ": "o",
"ỡ": "o",
"ở": "o",
"ợ": "o",
"ọ": "o",
"ộ": "o",
"ǫ": "o",
"ǭ": "o",
"ø": "o",
"ǿ": "o",
"ɔ": "o",
"ꝋ": "o",
"ꝍ": "o",
"ɵ": "o",
"œ": "oe",
"ƣ": "oi",
"ȣ": "ou",
"ꝏ": "oo",
"ⓟ": "p",
"p": "p",
"ṕ": "p",
"ṗ": "p",
"ƥ": "p",
"ᵽ": "p",
"ꝑ": "p",
"ꝓ": "p",
"ꝕ": "p",
"ⓠ": "q",
"q": "q",
"ɋ": "q",
"ꝗ": "q",
"ꝙ": "q",
"ⓡ": "r",
"r": "r",
"ŕ": "r",
"ṙ": "r",
"ř": "r",
"ȑ": "r",
"ȓ": "r",
"ṛ": "r",
"ṝ": "r",
"ŗ": "r",
"ṟ": "r",
"ɍ": "r",
"ɽ": "r",
"ꝛ": "r",
"ꞧ": "r",
"ꞃ": "r",
"ⓢ": "s",
"s": "s",
"ß": "s",
"ś": "s",
"ṥ": "s",
"ŝ": "s",
"ṡ": "s",
"š": "s",
"ṧ": "s",
"ṣ": "s",
"ṩ": "s",
"ș": "s",
"ş": "s",
"ȿ": "s",
"ꞩ": "s",
"ꞅ": "s",
"ẛ": "s",
"ⓣ": "t",
"t": "t",
"ṫ": "t",
"ẗ": "t",
"ť": "t",
"ṭ": "t",
"ț": "t",
"ţ": "t",
"ṱ": "t",
"ṯ": "t",
"ŧ": "t",
"ƭ": "t",
"ʈ": "t",
"ⱦ": "t",
"ꞇ": "t",
"ꜩ": "tz",
"ⓤ": "u",
"u": "u",
"ù": "u",
"ú": "u",
"û": "u",
"ũ": "u",
"ṹ": "u",
"ū": "u",
"ṻ": "u",
"ŭ": "u",
"ü": "u",
"ǜ": "u",
"ǘ": "u",
"ǖ": "u",
"ǚ": "u",
"ủ": "u",
"ů": "u",
"ű": "u",
"ǔ": "u",
"ȕ": "u",
"ȗ": "u",
"ư": "u",
"ừ": "u",
"ứ": "u",
"ữ": "u",
"ử": "u",
"ự": "u",
"ụ": "u",
"ṳ": "u",
"ų": "u",
"ṷ": "u",
"ṵ": "u",
"ʉ": "u",
"ⓥ": "v",
"v": "v",
"ṽ": "v",
"ṿ": "v",
"ʋ": "v",
"ꝟ": "v",
"ʌ": "v",
"ꝡ": "vy",
"ⓦ": "w",
"w": "w",
"ẁ": "w",
"ẃ": "w",
"ŵ": "w",
"ẇ": "w",
"ẅ": "w",
"ẘ": "w",
"ẉ": "w",
"ⱳ": "w",
"ⓧ": "x",
"x": "x",
"ẋ": "x",
"ẍ": "x",
"ⓨ": "y",
"y": "y",
"ỳ": "y",
"ý": "y",
"ŷ": "y",
"ỹ": "y",
"ȳ": "y",
"ẏ": "y",
"ÿ": "y",
"ỷ": "y",
"ẙ": "y",
"ỵ": "y",
"ƴ": "y",
"ɏ": "y",
"ỿ": "y",
"ⓩ": "z",
"z": "z",
"ź": "z",
"ẑ": "z",
"ż": "z",
"ž": "z",
"ẓ": "z",
"ẕ": "z",
"ƶ": "z",
"ȥ": "z",
"ɀ": "z",
"ⱬ": "z",
"ꝣ": "z",
"Ά": "Α",
"Έ": "Ε",
"Ή": "Η",
"Ί": "Ι",
"Ϊ": "Ι",
"Ό": "Ο",
"Ύ": "Υ",
"Ϋ": "Υ",
"Ώ": "Ω",
"ά": "α",
"έ": "ε",
"ή": "η",
"ί": "ι",
"ϊ": "ι",
"ΐ": "ι",
"ό": "ο",
"ύ": "υ",
"ϋ": "υ",
"ΰ": "υ",
"ώ": "ω",
"ς": "σ",
"’": "'"
};
return diacritics;
});
S22.define("select2/data/base", [
"../utils"
], function(Utils) {
function BaseAdapter($element, options) {
BaseAdapter.__super__.constructor.call(this);
}
Utils.Extend(BaseAdapter, Utils.Observable);
BaseAdapter.prototype.current = function(callback) {
throw new Error("The `current` method must be defined in child classes.");
};
BaseAdapter.prototype.query = function(params, callback) {
throw new Error("The `query` method must be defined in child classes.");
};
BaseAdapter.prototype.bind = function(container, $container) {
};
BaseAdapter.prototype.destroy = function() {
};
BaseAdapter.prototype.generateResultId = function(container, data) {
var id = container.id + "-result-";
id += Utils.generateChars(4);
if (data.id != null) {
id += "-" + data.id.toString();
} else {
id += "-" + Utils.generateChars(4);
}
return id;
};
return BaseAdapter;
});
S22.define("select2/data/select", [
"./base",
"../utils",
"jquery"
], function(BaseAdapter, Utils, $2) {
function SelectAdapter($element, options) {
this.$element = $element;
this.options = options;
SelectAdapter.__super__.constructor.call(this);
}
Utils.Extend(SelectAdapter, BaseAdapter);
SelectAdapter.prototype.current = function(callback) {
var self = this;
var data = Array.prototype.map.call(
this.$element[0].querySelectorAll(":checked"),
function(selectedElement) {
return self.item($2(selectedElement));
}
);
callback(data);
};
SelectAdapter.prototype.select = function(data) {
var self = this;
data.selected = true;
if (data.element != null && data.element.tagName.toLowerCase() === "option") {
data.element.selected = true;
this.$element.trigger("input").trigger("change");
return;
}
if (this.$element.prop("multiple")) {
this.current(function(currentData) {
var val2 = [];
data = [data];
data.push.apply(data, currentData);
for (var d = 0; d < data.length; d++) {
var id = data[d].id;
if (val2.indexOf(id) === -1) {
val2.push(id);
}
}
self.$element.val(val2);
self.$element.trigger("input").trigger("change");
});
} else {
var val = data.id;
this.$element.val(val);
this.$element.trigger("input").trigger("change");
}
};
SelectAdapter.prototype.unselect = function(data) {
var self = this;
if (!this.$element.prop("multiple")) {
return;
}
data.selected = false;
if (data.element != null && data.element.tagName.toLowerCase() === "option") {
data.element.selected = false;
this.$element.trigger("input").trigger("change");
return;
}
this.current(function(currentData) {
var val = [];
for (var d = 0; d < currentData.length; d++) {
var id = currentData[d].id;
if (id !== data.id && val.indexOf(id) === -1) {
val.push(id);
}
}
self.$element.val(val);
self.$element.trigger("input").trigger("change");
});
};
SelectAdapter.prototype.bind = function(container, $container) {
var self = this;
this.container = container;
container.on("select", function(params) {
self.select(params.data);
});
container.on("unselect", function(params) {
self.unselect(params.data);
});
};
SelectAdapter.prototype.destroy = function() {
this.$element.find("*").each(function() {
Utils.RemoveData(this);
});
};
SelectAdapter.prototype.query = function(params, callback) {
var data = [];
var self = this;
var $options = this.$element.children();
$options.each(function() {
if (this.tagName.toLowerCase() !== "option" && this.tagName.toLowerCase() !== "optgroup") {
return;
}
var $option = $2(this);
var option = self.item($option);
var matches = self.matches(params, option);
if (matches !== null) {
data.push(matches);
}
});
callback({
results: data
});
};
SelectAdapter.prototype.addOptions = function($options) {
this.$element.append($options);
};
SelectAdapter.prototype.option = function(data) {
var option;
if (data.children) {
option = document.createElement("optgroup");
option.label = data.text;
} else {
option = document.createElement("option");
if (option.textContent !== void 0) {
option.textContent = data.text;
} else {
option.innerText = data.text;
}
}
if (data.id !== void 0) {
option.value = data.id;
}
if (data.disabled) {
option.disabled = true;
}
if (data.selected) {
option.selected = true;
}
if (data.title) {
option.title = data.title;
}
var normalizedData = this._normalizeItem(data);
normalizedData.element = option;
Utils.StoreData(option, "data", normalizedData);
return $2(option);
};
SelectAdapter.prototype.item = function($option) {
var data = {};
data = Utils.GetData($option[0], "data");
if (data != null) {
return data;
}
var option = $option[0];
if (option.tagName.toLowerCase() === "option") {
data = {
id: $option.val(),
text: $option.text(),
disabled: $option.prop("disabled"),
selected: $option.prop("selected"),
title: $option.prop("title")
};
} else if (option.tagName.toLowerCase() === "optgroup") {
data = {
text: $option.prop("label"),
children: [],
title: $option.prop("title")
};
var $children = $option.children("option");
var children = [];
for (var c = 0; c < $children.length; c++) {
var $child = $2($children[c]);
var child = this.item($child);
children.push(child);
}
data.children = children;
}
data = this._normalizeItem(data);
data.element = $option[0];
Utils.StoreData($option[0], "data", data);
return data;
};
SelectAdapter.prototype._normalizeItem = function(item) {
if (item !== Object(item)) {
item = {
id: item,
text: item
};
}
item = $2.extend({}, {
text: ""
}, item);
var defaults = {
selected: false,
disabled: false
};
if (item.id != null) {
item.id = item.id.toString();
}
if (item.text != null) {
item.text = item.text.toString();
}
if (item._resultId == null && item.id && this.container != null) {
item._resultId = this.generateResultId(this.container, item);
}
return $2.extend({}, defaults, item);
};
SelectAdapter.prototype.matches = function(params, data) {
var matcher = this.options.get("matcher");
return matcher(params, data);
};
return SelectAdapter;
});
S22.define("select2/data/array", [
"./select",
"../utils",
"jquery"
], function(SelectAdapter, Utils, $2) {
function ArrayAdapter($element, options) {
this._dataToConvert = options.get("data") || [];
ArrayAdapter.__super__.constructor.call(this, $element, options);
}
Utils.Extend(ArrayAdapter, SelectAdapter);
ArrayAdapter.prototype.bind = function(container, $container) {
ArrayAdapter.__super__.bind.call(this, container, $container);
this.addOptions(this.convertToOptions(this._dataToConvert));
};
ArrayAdapter.prototype.select = function(data) {
var $option = this.$element.find("option").filter(function(i, elm) {
return elm.value == data.id.toString();
});
if ($option.length === 0) {
$option = this.option(data);
this.addOptions($option);
}
ArrayAdapter.__super__.select.call(this, data);
};
ArrayAdapter.prototype.convertToOptions = function(data) {
var self = this;
var $existing = this.$element.find("option");
var existingIds = $existing.map(function() {
return self.item($2(this)).id;
}).get();
var $options = [];
function onlyItem(item2) {
return function() {
return $2(this).val() == item2.id;
};
}
for (var d = 0; d < data.length; d++) {
var item = this._normalizeItem(data[d]);
if (existingIds.indexOf(item.id) >= 0) {
var $existingOption = $existing.filter(onlyItem(item));
var existingData = this.item($existingOption);
var newData = $2.extend(true, {}, item, existingData);
var $newOption = this.option(newData);
$existingOption.replaceWith($newOption);
continue;
}
var $option = this.option(item);
if (item.children) {
var $children = this.convertToOptions(item.children);
$option.append($children);
}
$options.push($option);
}
return $options;
};
return ArrayAdapter;
});
S22.define("select2/data/ajax", [
"./array",
"../utils",
"jquery"
], function(ArrayAdapter, Utils, $2) {
function AjaxAdapter($element, options) {
this.ajaxOptions = this._applyDefaults(options.get("ajax"));
if (this.ajaxOptions.processResults != null) {
this.processResults = this.ajaxOptions.processResults;
}
AjaxAdapter.__super__.constructor.call(this, $element, options);
}
Utils.Extend(AjaxAdapter, ArrayAdapter);
AjaxAdapter.prototype._applyDefaults = function(options) {
var defaults = {
data: function(params) {
return $2.extend({}, params, {
q: params.term
});
},
transport: function(params, success, failure) {
var $request = $2.ajax(params);
$request.then(success);
$request.fail(failure);
return $request;
}
};
return $2.extend({}, defaults, options, true);
};
AjaxAdapter.prototype.processResults = function(results) {
return results;
};
AjaxAdapter.prototype.query = function(params, callback) {
var matches = [];
var self = this;
if (this._request != null) {
if (typeof this._request.abort === "function") {
this._request.abort();
}
this._request = null;
}
var options = $2.extend({
type: "GET"
}, this.ajaxOptions);
if (typeof options.url === "function") {
options.url = options.url.call(this.$element, params);
}
if (typeof options.data === "function") {
options.data = options.data.call(this.$element, params);
}
function request() {
var $request = options.transport(options, function(data) {
var results = self.processResults(data, params);
if (self.options.get("debug") && window.console && console.error) {
if (!results || !results.results || !Array.isArray(results.results)) {
console.error(
"Select2: The AJAX results did not return an array in the `results` key of the response."
);
}
}
callback(results);
}, function() {
if ("status" in $request && ($request.status === 0 || $request.status === "0")) {
return;
}
self.trigger("results:message", {
message: "errorLoading"
});
});
self._request = $request;
}
if (this.ajaxOptions.delay && params.term != null) {
if (this._queryTimeout) {
window.clearTimeout(this._queryTimeout);
}
this._queryTimeout = window.setTimeout(request, this.ajaxOptions.delay);
} else {
request();
}
};
return AjaxAdapter;
});
S22.define("select2/data/tags", [
"jquery"
], function($2) {
function Tags(decorated, $element, options) {
var tags = options.get("tags");
var createTag = options.get("createTag");
if (createTag !== void 0) {
this.createTag = createTag;
}
var insertTag = options.get("insertTag");
if (insertTag !== void 0) {
this.insertTag = insertTag;
}
decorated.call(this, $element, options);
if (Array.isArray(tags)) {
for (var t = 0; t < tags.length; t++) {
var tag = tags[t];
var item = this._normalizeItem(tag);
var $option = this.option(item);
this.$element.append($option);
}
}
}
Tags.prototype.query = function(decorated, params, callback) {
var self = this;
this._removeOldTags();
if (params.term == null || params.page != null) {
decorated.call(this, params, callback);
return;
}
function wrapper(obj, child) {
var data = obj.results;
for (var i = 0; i < data.length; i++) {
var option = data[i];
var checkChildren = option.children != null && !wrapper({
results: option.children
}, true);
var optionText = (option.text || "").toUpperCase();
var paramsTerm = (params.term || "").toUpperCase();
var checkText = optionText === paramsTerm;
if (checkText || checkChildren) {
if (child) {
return false;
}
obj.data = data;
callback(obj);
return;
}
}
if (child) {
return true;
}
var tag = self.createTag(params);
if (tag != null) {
var $option = self.option(tag);
$option.attr("data-select2-tag", "true");
self.addOptions([$option]);
self.insertTag(data, tag);
}
obj.results = data;
callback(obj);
}
decorated.call(this, params, wrapper);
};
Tags.prototype.createTag = function(decorated, params) {
if (params.term == null) {
return null;
}
var term = params.term.trim();
if (term === "") {
return null;
}
return {
id: term,
text: term
};
};
Tags.prototype.insertTag = function(_, data, tag) {
data.unshift(tag);
};
Tags.prototype._removeOldTags = function(_) {
var $options = this.$element.find("option[data-select2-tag]");
$options.each(function() {
if (this.selected) {
return;
}
$2(this).remove();
});
};
return Tags;
});
S22.define("select2/data/tokenizer", [
"jquery"
], function($2) {
function Tokenizer(decorated, $element, options) {
var tokenizer = options.get("tokenizer");
if (tokenizer !== void 0) {
this.tokenizer = tokenizer;
}
decorated.call(this, $element, options);
}
Tokenizer.prototype.bind = function(decorated, container, $container) {
decorated.call(this, container, $container);
this.$search = container.dropdown.$search || container.selection.$search || $container.find(".select2-search__field");
};
Tokenizer.prototype.query = function(decorated, params, callback) {
var self = this;
function createAndSelect(data) {
var item = self._normalizeItem(data);
var $existingOptions = self.$element.find("option").filter(function() {
return $2(this).val() === item.id;
});
if (!$existingOptions.length) {
var $option = self.option(item);
$option.attr("data-select2-tag", true);
self._removeOldTags();
self.addOptions([$option]);
}
select(item);
}
function select(data) {
self.trigger("select", {
data
});
}
params.term = params.term || "";
var tokenData = this.tokenizer(params, this.options, createAndSelect);
if (tokenData.term !== params.term) {
if (this.$search.length) {
this.$search.val(tokenData.term);
this.$search.trigger("focus");
}
params.term = tokenData.term;
}
decorated.call(this, params, callback);
};
Tokenizer.prototype.tokenizer = function(_, params, options, callback) {
var separators = options.get("tokenSeparators") || [];
var term = params.term;
var i = 0;
var createTag = this.createTag || function(params2) {
return {
id: params2.term,
text: params2.term
};
};
while (i < term.length) {
var termChar = term[i];
if (separators.indexOf(termChar) === -1) {
i++;
continue;
}
var part = term.substr(0, i);
var partParams = $2.extend({}, params, {
term: part
});
var data = createTag(partParams);
if (data == null) {
i++;
continue;
}
callback(data);
term = term.substr(i + 1) || "";
i = 0;
}
return {
term
};
};
return Tokenizer;
});
S22.define("select2/data/minimumInputLength", [], function() {
function MinimumInputLength(decorated, $e, options) {
this.minimumInputLength = options.get("minimumInputLength");
decorated.call(this, $e, options);
}
MinimumInputLength.prototype.query = function(decorated, params, callback) {
params.term = params.term || "";
if (params.term.length < this.minimumInputLength) {
this.trigger("results:message", {
message: "inputTooShort",
args: {
minimum: this.minimumInputLength,
input: params.term,
params
}
});
return;
}
decorated.call(this, params, callback);
};
return MinimumInputLength;
});
S22.define("select2/data/maximumInputLength", [], function() {
function MaximumInputLength(decorated, $e, options) {
this.maximumInputLength = options.get("maximumInputLength");
decorated.call(this, $e, options);
}
MaximumInputLength.prototype.query = function(decorated, params, callback) {
params.term = params.term || "";
if (this.maximumInputLength > 0 && params.term.length > this.maximumInputLength) {
this.trigger("results:message", {
message: "inputTooLong",
args: {
maximum: this.maximumInputLength,
input: params.term,
params
}
});
return;
}
decorated.call(this, params, callback);
};
return MaximumInputLength;
});
S22.define("select2/data/maximumSelectionLength", [], function() {
function MaximumSelectionLength(decorated, $e, options) {
this.maximumSelectionLength = options.get("maximumSelectionLength");
decorated.call(this, $e, options);
}
MaximumSelectionLength.prototype.bind = function(decorated, container, $container) {
var self = this;
decorated.call(this, container, $container);
container.on("select", function() {
self._checkIfMaximumSelected();
});
};
MaximumSelectionLength.prototype.query = function(decorated, params, callback) {
var self = this;
this._checkIfMaximumSelected(function() {
decorated.call(self, params, callback);
});
};
MaximumSelectionLength.prototype._checkIfMaximumSelected = function(_, successCallback) {
var self = this;
this.current(function(currentData) {
var count = currentData != null ? currentData.length : 0;
if (self.maximumSelectionLength > 0 && count >= self.maximumSelectionLength) {
self.trigger("results:message", {
message: "maximumSelected",
args: {
maximum: self.maximumSelectionLength
}
});
return;
}
if (successCallback) {
successCallback();
}
});
};
return MaximumSelectionLength;
});
S22.define("select2/dropdown", [
"jquery",
"./utils"
], function($2, Utils) {
function Dropdown($element, options) {
this.$element = $element;
this.options = options;
Dropdown.__super__.constructor.call(this);
}
Utils.Extend(Dropdown, Utils.Observable);
Dropdown.prototype.render = function() {
var $dropdown = $2(
''
);
$dropdown.attr("dir", this.options.get("dir"));
this.$dropdown = $dropdown;
return $dropdown;
};
Dropdown.prototype.bind = function() {
};
Dropdown.prototype.position = function($dropdown, $container) {
};
Dropdown.prototype.destroy = function() {
this.$dropdown.remove();
};
return Dropdown;
});
S22.define("select2/dropdown/search", [
"jquery"
], function($2) {
function Search() {
}
Search.prototype.render = function(decorated) {
var $rendered = decorated.call(this);
var searchLabel = this.options.get("translations").get("search");
var $search = $2(
''
);
this.$searchContainer = $search;
this.$search = $search.find("input");
this.$search.prop("autocomplete", this.options.get("autocomplete"));
this.$search.attr("aria-label", searchLabel());
$rendered.prepend($search);
return $rendered;
};
Search.prototype.bind = function(decorated, container, $container) {
var self = this;
var resultsId = container.id + "-results";
decorated.call(this, container, $container);
this.$search.on("keydown", function(evt) {
self.trigger("keypress", evt);
self._keyUpPrevented = evt.isDefaultPrevented();
});
this.$search.on("input", function(evt) {
$2(this).off("keyup");
});
this.$search.on("keyup input", function(evt) {
self.handleSearch(evt);
});
container.on("open", function() {
self.$search.attr("tabindex", 0);
self.$search.attr("aria-controls", resultsId);
self.$search.trigger("focus");
window.setTimeout(function() {
self.$search.trigger("focus");
}, 0);
});
container.on("close", function() {
self.$search.attr("tabindex", -1);
self.$search.removeAttr("aria-controls");
self.$search.removeAttr("aria-activedescendant");
self.$search.val("");
self.$search.trigger("blur");
});
container.on("focus", function() {
if (!container.isOpen()) {
self.$search.trigger("focus");
}
});
container.on("results:all", function(params) {
if (params.query.term == null || params.query.term === "") {
var showSearch = self.showSearch(params);
if (showSearch) {
self.$searchContainer[0].classList.remove("select2-search--hide");
} else {
self.$searchContainer[0].classList.add("select2-search--hide");
}
}
});
container.on("results:focus", function(params) {
if (params.data._resultId) {
self.$search.attr("aria-activedescendant", params.data._resultId);
} else {
self.$search.removeAttr("aria-activedescendant");
}
});
};
Search.prototype.handleSearch = function(evt) {
if (!this._keyUpPrevented) {
var input = this.$search.val();
this.trigger("query", {
term: input
});
}
this._keyUpPrevented = false;
};
Search.prototype.showSearch = function(_, params) {
return true;
};
return Search;
});
S22.define("select2/dropdown/hidePlaceholder", [], function() {
function HidePlaceholder(decorated, $element, options, dataAdapter) {
this.placeholder = this.normalizePlaceholder(options.get("placeholder"));
decorated.call(this, $element, options, dataAdapter);
}
HidePlaceholder.prototype.append = function(decorated, data) {
data.results = this.removePlaceholder(data.results);
decorated.call(this, data);
};
HidePlaceholder.prototype.normalizePlaceholder = function(_, placeholder) {
if (typeof placeholder === "string") {
placeholder = {
id: "",
text: placeholder
};
}
return placeholder;
};
HidePlaceholder.prototype.removePlaceholder = function(_, data) {
var modifiedData = data.slice(0);
for (var d = data.length - 1; d >= 0; d--) {
var item = data[d];
if (this.placeholder.id === item.id) {
modifiedData.splice(d, 1);
}
}
return modifiedData;
};
return HidePlaceholder;
});
S22.define("select2/dropdown/infiniteScroll", [
"jquery"
], function($2) {
function InfiniteScroll(decorated, $element, options, dataAdapter) {
this.lastParams = {};
decorated.call(this, $element, options, dataAdapter);
this.$loadingMore = this.createLoadingMore();
this.loading = false;
}
InfiniteScroll.prototype.append = function(decorated, data) {
this.$loadingMore.remove();
this.loading = false;
decorated.call(this, data);
if (this.showLoadingMore(data)) {
this.$results.append(this.$loadingMore);
this.loadMoreIfNeeded();
}
};
InfiniteScroll.prototype.bind = function(decorated, container, $container) {
var self = this;
decorated.call(this, container, $container);
container.on("query", function(params) {
self.lastParams = params;
self.loading = true;
});
container.on("query:append", function(params) {
self.lastParams = params;
self.loading = true;
});
this.$results.on("scroll", this.loadMoreIfNeeded.bind(this));
};
InfiniteScroll.prototype.loadMoreIfNeeded = function() {
var isLoadMoreVisible = $2.contains(
document.documentElement,
this.$loadingMore[0]
);
if (this.loading || !isLoadMoreVisible) {
return;
}
var currentOffset = this.$results.offset().top + this.$results.outerHeight(false);
var loadingMoreOffset = this.$loadingMore.offset().top + this.$loadingMore.outerHeight(false);
if (currentOffset + 50 >= loadingMoreOffset) {
this.loadMore();
}
};
InfiniteScroll.prototype.loadMore = function() {
this.loading = true;
var params = $2.extend({}, { page: 1 }, this.lastParams);
params.page++;
this.trigger("query:append", params);
};
InfiniteScroll.prototype.showLoadingMore = function(_, data) {
return data.pagination && data.pagination.more;
};
InfiniteScroll.prototype.createLoadingMore = function() {
var $option = $2(
''
);
var message = this.options.get("translations").get("loadingMore");
$option.html(message(this.lastParams));
return $option;
};
return InfiniteScroll;
});
S22.define("select2/dropdown/attachBody", [
"jquery",
"../utils"
], function($2, Utils) {
function AttachBody(decorated, $element, options) {
this.$dropdownParent = $2(options.get("dropdownParent") || document.body);
decorated.call(this, $element, options);
}
AttachBody.prototype.bind = function(decorated, container, $container) {
var self = this;
decorated.call(this, container, $container);
container.on("open", function() {
self._showDropdown();
self._attachPositioningHandler(container);
self._bindContainerResultHandlers(container);
});
container.on("close", function() {
self._hideDropdown();
self._detachPositioningHandler(container);
});
this.$dropdownContainer.on("mousedown", function(evt) {
evt.stopPropagation();
});
};
AttachBody.prototype.destroy = function(decorated) {
decorated.call(this);
this.$dropdownContainer.remove();
};
AttachBody.prototype.position = function(decorated, $dropdown, $container) {
$dropdown.attr("class", $container.attr("class"));
$dropdown[0].classList.remove("select2");
$dropdown[0].classList.add("select2-container--open");
$dropdown.css({
position: "absolute",
top: -999999
});
this.$container = $container;
};
AttachBody.prototype.render = function(decorated) {
var $container = $2("");
var $dropdown = decorated.call(this);
$container.append($dropdown);
this.$dropdownContainer = $container;
return $container;
};
AttachBody.prototype._hideDropdown = function(decorated) {
this.$dropdownContainer.detach();
};
AttachBody.prototype._bindContainerResultHandlers = function(decorated, container) {
if (this._containerResultsHandlersBound) {
return;
}
var self = this;
container.on("results:all", function() {
self._positionDropdown();
self._resizeDropdown();
});
container.on("results:append", function() {
self._positionDropdown();
self._resizeDropdown();
});
container.on("results:message", function() {
self._positionDropdown();
self._resizeDropdown();
});
container.on("select", function() {
self._positionDropdown();
self._resizeDropdown();
});
container.on("unselect", function() {
self._positionDropdown();
self._resizeDropdown();
});
this._containerResultsHandlersBound = true;
};
AttachBody.prototype._attachPositioningHandler = function(decorated, container) {
var self = this;
var scrollEvent = "scroll.select2." + container.id;
var resizeEvent = "resize.select2." + container.id;
var orientationEvent = "orientationchange.select2." + container.id;
var $watchers = this.$container.parents().filter(Utils.hasScroll);
$watchers.each(function() {
Utils.StoreData(this, "select2-scroll-position", {
x: $2(this).scrollLeft(),
y: $2(this).scrollTop()
});
});
$watchers.on(scrollEvent, function(ev) {
var position = Utils.GetData(this, "select2-scroll-position");
$2(this).scrollTop(position.y);
});
$2(window).on(
scrollEvent + " " + resizeEvent + " " + orientationEvent,
function(e) {
self._positionDropdown();
self._resizeDropdown();
}
);
};
AttachBody.prototype._detachPositioningHandler = function(decorated, container) {
var scrollEvent = "scroll.select2." + container.id;
var resizeEvent = "resize.select2." + container.id;
var orientationEvent = "orientationchange.select2." + container.id;
var $watchers = this.$container.parents().filter(Utils.hasScroll);
$watchers.off(scrollEvent);
$2(window).off(scrollEvent + " " + resizeEvent + " " + orientationEvent);
};
AttachBody.prototype._positionDropdown = function() {
var $window = $2(window);
var isCurrentlyAbove = this.$dropdown[0].classList.contains("select2-dropdown--above");
var isCurrentlyBelow = this.$dropdown[0].classList.contains("select2-dropdown--below");
var newDirection = null;
var offset = this.$container.offset();
offset.bottom = offset.top + this.$container.outerHeight(false);
var container = {
height: this.$container.outerHeight(false)
};
container.top = offset.top;
container.bottom = offset.top + container.height;
var dropdown = {
height: this.$dropdown.outerHeight(false)
};
var viewport = {
top: $window.scrollTop(),
bottom: $window.scrollTop() + $window.height()
};
var enoughRoomAbove = viewport.top < offset.top - dropdown.height;
var enoughRoomBelow = viewport.bottom > offset.bottom + dropdown.height;
var css = {
left: offset.left,
top: container.bottom
};
var $offsetParent = this.$dropdownParent;
if ($offsetParent.css("position") === "static") {
$offsetParent = $offsetParent.offsetParent();
}
var parentOffset = {
top: 0,
left: 0
};
if ($2.contains(document.body, $offsetParent[0]) || $offsetParent[0].isConnected) {
parentOffset = $offsetParent.offset();
}
css.top -= parentOffset.top;
css.left -= parentOffset.left;
if (!isCurrentlyAbove && !isCurrentlyBelow) {
newDirection = "below";
}
if (!enoughRoomBelow && enoughRoomAbove && !isCurrentlyAbove) {
newDirection = "above";
} else if (!enoughRoomAbove && enoughRoomBelow && isCurrentlyAbove) {
newDirection = "below";
}
if (newDirection == "above" || isCurrentlyAbove && newDirection !== "below") {
css.top = container.top - parentOffset.top - dropdown.height;
}
if (newDirection != null) {
this.$dropdown[0].classList.remove("select2-dropdown--below");
this.$dropdown[0].classList.remove("select2-dropdown--above");
this.$dropdown[0].classList.add("select2-dropdown--" + newDirection);
this.$container[0].classList.remove("select2-container--below");
this.$container[0].classList.remove("select2-container--above");
this.$container[0].classList.add("select2-container--" + newDirection);
}
this.$dropdownContainer.css(css);
};
AttachBody.prototype._resizeDropdown = function() {
var css = {
width: this.$container.outerWidth(false) + "px"
};
if (this.options.get("dropdownAutoWidth")) {
css.minWidth = css.width;
css.position = "relative";
css.width = "auto";
}
this.$dropdown.css(css);
};
AttachBody.prototype._showDropdown = function(decorated) {
this.$dropdownContainer.appendTo(this.$dropdownParent);
this._positionDropdown();
this._resizeDropdown();
};
return AttachBody;
});
S22.define("select2/dropdown/minimumResultsForSearch", [], function() {
function countResults(data) {
var count = 0;
for (var d = 0; d < data.length; d++) {
var item = data[d];
if (item.children) {
count += countResults(item.children);
} else {
count++;
}
}
return count;
}
function MinimumResultsForSearch(decorated, $element, options, dataAdapter) {
this.minimumResultsForSearch = options.get("minimumResultsForSearch");
if (this.minimumResultsForSearch < 0) {
this.minimumResultsForSearch = Infinity;
}
decorated.call(this, $element, options, dataAdapter);
}
MinimumResultsForSearch.prototype.showSearch = function(decorated, params) {
if (countResults(params.data.results) < this.minimumResultsForSearch) {
return false;
}
return decorated.call(this, params);
};
return MinimumResultsForSearch;
});
S22.define("select2/dropdown/selectOnClose", [
"../utils"
], function(Utils) {
function SelectOnClose() {
}
SelectOnClose.prototype.bind = function(decorated, container, $container) {
var self = this;
decorated.call(this, container, $container);
container.on("close", function(params) {
self._handleSelectOnClose(params);
});
};
SelectOnClose.prototype._handleSelectOnClose = function(_, params) {
if (params && params.originalSelect2Event != null) {
var event = params.originalSelect2Event;
if (event._type === "select" || event._type === "unselect") {
return;
}
}
var $highlightedResults = this.getHighlightedResults();
if ($highlightedResults.length < 1) {
return;
}
var data = Utils.GetData($highlightedResults[0], "data");
if (data.element != null && data.element.selected || data.element == null && data.selected) {
return;
}
this.trigger("select", {
data
});
};
return SelectOnClose;
});
S22.define("select2/dropdown/closeOnSelect", [], function() {
function CloseOnSelect() {
}
CloseOnSelect.prototype.bind = function(decorated, container, $container) {
var self = this;
decorated.call(this, container, $container);
container.on("select", function(evt) {
self._selectTriggered(evt);
});
container.on("unselect", function(evt) {
self._selectTriggered(evt);
});
};
CloseOnSelect.prototype._selectTriggered = function(_, evt) {
var originalEvent = evt.originalEvent;
if (originalEvent && (originalEvent.ctrlKey || originalEvent.metaKey)) {
return;
}
this.trigger("close", {
originalEvent,
originalSelect2Event: evt
});
};
return CloseOnSelect;
});
S22.define("select2/dropdown/dropdownCss", [
"../utils"
], function(Utils) {
function DropdownCSS() {
}
DropdownCSS.prototype.render = function(decorated) {
var $dropdown = decorated.call(this);
var dropdownCssClass = this.options.get("dropdownCssClass") || "";
if (dropdownCssClass.indexOf(":all:") !== -1) {
dropdownCssClass = dropdownCssClass.replace(":all:", "");
Utils.copyNonInternalCssClasses($dropdown[0], this.$element[0]);
}
$dropdown.addClass(dropdownCssClass);
return $dropdown;
};
return DropdownCSS;
});
S22.define("select2/dropdown/tagsSearchHighlight", [
"../utils"
], function(Utils) {
function TagsSearchHighlight() {
}
TagsSearchHighlight.prototype.highlightFirstItem = function(decorated) {
var $options = this.$results.find(
".select2-results__option--selectable:not(.select2-results__option--selected)"
);
if ($options.length > 0) {
var $firstOption = $options.first();
var data = Utils.GetData($firstOption[0], "data");
var firstElement = data.element;
if (firstElement && firstElement.getAttribute) {
if (firstElement.getAttribute("data-select2-tag") === "true") {
$firstOption.trigger("mouseenter");
return;
}
}
}
decorated.call(this);
};
return TagsSearchHighlight;
});
S22.define("select2/i18n/en", [], function() {
return {
errorLoading: function() {
return "The results could not be loaded.";
},
inputTooLong: function(args) {
var overChars = args.input.length - args.maximum;
var message = "Please delete " + overChars + " character";
if (overChars != 1) {
message += "s";
}
return message;
},
inputTooShort: function(args) {
var remainingChars = args.minimum - args.input.length;
var message = "Please enter " + remainingChars + " or more characters";
return message;
},
loadingMore: function() {
return "Loading more results…";
},
maximumSelected: function(args) {
var message = "You can only select " + args.maximum + " item";
if (args.maximum != 1) {
message += "s";
}
return message;
},
noResults: function() {
return "No results found";
},
searching: function() {
return "Searching…";
},
removeAllItems: function() {
return "Remove all items";
},
removeItem: function() {
return "Remove item";
},
search: function() {
return "Search";
}
};
});
S22.define("select2/defaults", [
"jquery",
"./results",
"./selection/single",
"./selection/multiple",
"./selection/placeholder",
"./selection/allowClear",
"./selection/search",
"./selection/selectionCss",
"./selection/eventRelay",
"./utils",
"./translation",
"./diacritics",
"./data/select",
"./data/array",
"./data/ajax",
"./data/tags",
"./data/tokenizer",
"./data/minimumInputLength",
"./data/maximumInputLength",
"./data/maximumSelectionLength",
"./dropdown",
"./dropdown/search",
"./dropdown/hidePlaceholder",
"./dropdown/infiniteScroll",
"./dropdown/attachBody",
"./dropdown/minimumResultsForSearch",
"./dropdown/selectOnClose",
"./dropdown/closeOnSelect",
"./dropdown/dropdownCss",
"./dropdown/tagsSearchHighlight",
"./i18n/en"
], function($2, ResultsList, SingleSelection, MultipleSelection, Placeholder, AllowClear, SelectionSearch, SelectionCSS, EventRelay, Utils, Translation, DIACRITICS, SelectData, ArrayData, AjaxData, Tags, Tokenizer, MinimumInputLength, MaximumInputLength, MaximumSelectionLength, Dropdown, DropdownSearch, HidePlaceholder, InfiniteScroll, AttachBody, MinimumResultsForSearch, SelectOnClose, CloseOnSelect, DropdownCSS, TagsSearchHighlight, EnglishTranslation) {
function Defaults() {
this.reset();
}
Defaults.prototype.apply = function(options) {
options = $2.extend(true, {}, this.defaults, options);
if (options.dataAdapter == null) {
if (options.ajax != null) {
options.dataAdapter = AjaxData;
} else if (options.data != null) {
options.dataAdapter = ArrayData;
} else {
options.dataAdapter = SelectData;
}
if (options.minimumInputLength > 0) {
options.dataAdapter = Utils.Decorate(
options.dataAdapter,
MinimumInputLength
);
}
if (options.maximumInputLength > 0) {
options.dataAdapter = Utils.Decorate(
options.dataAdapter,
MaximumInputLength
);
}
if (options.maximumSelectionLength > 0) {
options.dataAdapter = Utils.Decorate(
options.dataAdapter,
MaximumSelectionLength
);
}
if (options.tags) {
options.dataAdapter = Utils.Decorate(options.dataAdapter, Tags);
}
if (options.tokenSeparators != null || options.tokenizer != null) {
options.dataAdapter = Utils.Decorate(
options.dataAdapter,
Tokenizer
);
}
}
if (options.resultsAdapter == null) {
options.resultsAdapter = ResultsList;
if (options.ajax != null) {
options.resultsAdapter = Utils.Decorate(
options.resultsAdapter,
InfiniteScroll
);
}
if (options.placeholder != null) {
options.resultsAdapter = Utils.Decorate(
options.resultsAdapter,
HidePlaceholder
);
}
if (options.selectOnClose) {
options.resultsAdapter = Utils.Decorate(
options.resultsAdapter,
SelectOnClose
);
}
if (options.tags) {
options.resultsAdapter = Utils.Decorate(
options.resultsAdapter,
TagsSearchHighlight
);
}
}
if (options.dropdownAdapter == null) {
if (options.multiple) {
options.dropdownAdapter = Dropdown;
} else {
var SearchableDropdown = Utils.Decorate(Dropdown, DropdownSearch);
options.dropdownAdapter = SearchableDropdown;
}
if (options.minimumResultsForSearch !== 0) {
options.dropdownAdapter = Utils.Decorate(
options.dropdownAdapter,
MinimumResultsForSearch
);
}
if (options.closeOnSelect) {
options.dropdownAdapter = Utils.Decorate(
options.dropdownAdapter,
CloseOnSelect
);
}
if (options.dropdownCssClass != null) {
options.dropdownAdapter = Utils.Decorate(
options.dropdownAdapter,
DropdownCSS
);
}
options.dropdownAdapter = Utils.Decorate(
options.dropdownAdapter,
AttachBody
);
}
if (options.selectionAdapter == null) {
if (options.multiple) {
options.selectionAdapter = MultipleSelection;
} else {
options.selectionAdapter = SingleSelection;
}
if (options.placeholder != null) {
options.selectionAdapter = Utils.Decorate(
options.selectionAdapter,
Placeholder
);
}
if (options.allowClear) {
options.selectionAdapter = Utils.Decorate(
options.selectionAdapter,
AllowClear
);
}
if (options.multiple) {
options.selectionAdapter = Utils.Decorate(
options.selectionAdapter,
SelectionSearch
);
}
if (options.selectionCssClass != null) {
options.selectionAdapter = Utils.Decorate(
options.selectionAdapter,
SelectionCSS
);
}
options.selectionAdapter = Utils.Decorate(
options.selectionAdapter,
EventRelay
);
}
options.language = this._resolveLanguage(options.language);
options.language.push("en");
var uniqueLanguages = [];
for (var l = 0; l < options.language.length; l++) {
var language = options.language[l];
if (uniqueLanguages.indexOf(language) === -1) {
uniqueLanguages.push(language);
}
}
options.language = uniqueLanguages;
options.translations = this._processTranslations(
options.language,
options.debug
);
return options;
};
Defaults.prototype.reset = function() {
function stripDiacritics(text) {
function match(a) {
return DIACRITICS[a] || a;
}
return text.replace(/[^\u0000-\u007E]/g, match);
}
function matcher(params, data) {
if (params.term == null || params.term.trim() === "") {
return data;
}
if (data.children && data.children.length > 0) {
var match = $2.extend(true, {}, data);
for (var c = data.children.length - 1; c >= 0; c--) {
var child = data.children[c];
var matches = matcher(params, child);
if (matches == null) {
match.children.splice(c, 1);
}
}
if (match.children.length > 0) {
return match;
}
return matcher(params, match);
}
var original = stripDiacritics(data.text).toUpperCase();
var term = stripDiacritics(params.term).toUpperCase();
if (original.indexOf(term) > -1) {
return data;
}
return null;
}
this.defaults = {
amdLanguageBase: "./i18n/",
autocomplete: "off",
closeOnSelect: true,
debug: false,
dropdownAutoWidth: false,
escapeMarkup: Utils.escapeMarkup,
language: {},
matcher,
minimumInputLength: 0,
maximumInputLength: 0,
maximumSelectionLength: 0,
minimumResultsForSearch: 0,
selectOnClose: false,
scrollAfterSelect: false,
sorter: function(data) {
return data;
},
templateResult: function(result) {
return result.text;
},
templateSelection: function(selection) {
return selection.text;
},
theme: "default",
width: "resolve"
};
};
Defaults.prototype.applyFromElement = function(options, $element) {
var optionLanguage = options.language;
var defaultLanguage = this.defaults.language;
var elementLanguage = $element.prop("lang");
var parentLanguage = $element.closest("[lang]").prop("lang");
var languages = Array.prototype.concat.call(
this._resolveLanguage(elementLanguage),
this._resolveLanguage(optionLanguage),
this._resolveLanguage(defaultLanguage),
this._resolveLanguage(parentLanguage)
);
options.language = languages;
return options;
};
Defaults.prototype._resolveLanguage = function(language) {
if (!language) {
return [];
}
if ($2.isEmptyObject(language)) {
return [];
}
if ($2.isPlainObject(language)) {
return [language];
}
var languages;
if (!Array.isArray(language)) {
languages = [language];
} else {
languages = language;
}
var resolvedLanguages = [];
for (var l = 0; l < languages.length; l++) {
resolvedLanguages.push(languages[l]);
if (typeof languages[l] === "string" && languages[l].indexOf("-") > 0) {
var languageParts = languages[l].split("-");
var baseLanguage = languageParts[0];
resolvedLanguages.push(baseLanguage);
}
}
return resolvedLanguages;
};
Defaults.prototype._processTranslations = function(languages, debug) {
var translations = new Translation();
for (var l = 0; l < languages.length; l++) {
var languageData = new Translation();
var language = languages[l];
if (typeof language === "string") {
try {
languageData = Translation.loadPath(language);
} catch (e) {
try {
language = this.defaults.amdLanguageBase + language;
languageData = Translation.loadPath(language);
} catch (ex) {
if (debug && window.console && console.warn) {
console.warn(
'Select2: The language file for "' + language + '" could not be automatically loaded. A fallback will be used instead.'
);
}
}
}
} else if ($2.isPlainObject(language)) {
languageData = new Translation(language);
} else {
languageData = language;
}
translations.extend(languageData);
}
return translations;
};
Defaults.prototype.set = function(key, value) {
var camelKey = $2.camelCase(key);
var data = {};
data[camelKey] = value;
var convertedData = Utils._convertData(data);
$2.extend(true, this.defaults, convertedData);
};
var defaults = new Defaults();
return defaults;
});
S22.define("select2/options", [
"jquery",
"./defaults",
"./utils"
], function($2, Defaults, Utils) {
function Options(options, $element) {
this.options = options;
if ($element != null) {
this.fromElement($element);
}
if ($element != null) {
this.options = Defaults.applyFromElement(this.options, $element);
}
this.options = Defaults.apply(this.options);
}
Options.prototype.fromElement = function($e) {
var excludedData = ["select2"];
if (this.options.multiple == null) {
this.options.multiple = $e.prop("multiple");
}
if (this.options.disabled == null) {
this.options.disabled = $e.prop("disabled");
}
if (this.options.autocomplete == null && $e.prop("autocomplete")) {
this.options.autocomplete = $e.prop("autocomplete");
}
if (this.options.dir == null) {
if ($e.prop("dir")) {
this.options.dir = $e.prop("dir");
} else if ($e.closest("[dir]").prop("dir")) {
this.options.dir = $e.closest("[dir]").prop("dir");
} else {
this.options.dir = "ltr";
}
}
$e.prop("disabled", this.options.disabled);
$e.prop("multiple", this.options.multiple);
if (Utils.GetData($e[0], "select2Tags")) {
if (this.options.debug && window.console && console.warn) {
console.warn(
'Select2: The `data-select2-tags` attribute has been changed to use the `data-data` and `data-tags="true"` attributes and will be removed in future versions of Select2.'
);
}
Utils.StoreData($e[0], "data", Utils.GetData($e[0], "select2Tags"));
Utils.StoreData($e[0], "tags", true);
}
if (Utils.GetData($e[0], "ajaxUrl")) {
if (this.options.debug && window.console && console.warn) {
console.warn(
"Select2: The `data-ajax-url` attribute has been changed to `data-ajax--url` and support for the old attribute will be removed in future versions of Select2."
);
}
$e.attr("ajax--url", Utils.GetData($e[0], "ajaxUrl"));
Utils.StoreData($e[0], "ajax-Url", Utils.GetData($e[0], "ajaxUrl"));
}
var dataset = {};
function upperCaseLetter(_, letter) {
return letter.toUpperCase();
}
for (var attr = 0; attr < $e[0].attributes.length; attr++) {
var attributeName = $e[0].attributes[attr].name;
var prefix = "data-";
if (attributeName.substr(0, prefix.length) == prefix) {
var dataName = attributeName.substring(prefix.length);
var dataValue = Utils.GetData($e[0], dataName);
var camelDataName = dataName.replace(/-([a-z])/g, upperCaseLetter);
dataset[camelDataName] = dataValue;
}
}
if ($2.fn.jquery && $2.fn.jquery.substr(0, 2) == "1." && $e[0].dataset) {
dataset = $2.extend(true, {}, $e[0].dataset, dataset);
}
var data = $2.extend(true, {}, Utils.GetData($e[0]), dataset);
data = Utils._convertData(data);
for (var key in data) {
if (excludedData.indexOf(key) > -1) {
continue;
}
if ($2.isPlainObject(this.options[key])) {
$2.extend(this.options[key], data[key]);
} else {
this.options[key] = data[key];
}
}
return this;
};
Options.prototype.get = function(key) {
return this.options[key];
};
Options.prototype.set = function(key, val) {
this.options[key] = val;
};
return Options;
});
S22.define("select2/core", [
"jquery",
"./options",
"./utils",
"./keys"
], function($2, Options, Utils, KEYS) {
var Select2 = function($element, options) {
if (Utils.GetData($element[0], "select2") != null) {
Utils.GetData($element[0], "select2").destroy();
}
this.$element = $element;
this.id = this._generateId($element);
options = options || {};
this.options = new Options(options, $element);
Select2.__super__.constructor.call(this);
var tabindex = $element.attr("tabindex") || 0;
Utils.StoreData($element[0], "old-tabindex", tabindex);
$element.attr("tabindex", "-1");
var DataAdapter = this.options.get("dataAdapter");
this.dataAdapter = new DataAdapter($element, this.options);
var $container = this.render();
this._placeContainer($container);
var SelectionAdapter = this.options.get("selectionAdapter");
this.selection = new SelectionAdapter($element, this.options);
this.$selection = this.selection.render();
this.selection.position(this.$selection, $container);
var DropdownAdapter = this.options.get("dropdownAdapter");
this.dropdown = new DropdownAdapter($element, this.options);
this.$dropdown = this.dropdown.render();
this.dropdown.position(this.$dropdown, $container);
var ResultsAdapter = this.options.get("resultsAdapter");
this.results = new ResultsAdapter($element, this.options, this.dataAdapter);
this.$results = this.results.render();
this.results.position(this.$results, this.$dropdown);
var self = this;
this._bindAdapters();
this._registerDomEvents();
this._registerDataEvents();
this._registerSelectionEvents();
this._registerDropdownEvents();
this._registerResultsEvents();
this._registerEvents();
this.dataAdapter.current(function(initialData) {
self.trigger("selection:update", {
data: initialData
});
});
$element[0].classList.add("select2-hidden-accessible");
$element.attr("aria-hidden", "true");
this._syncAttributes();
Utils.StoreData($element[0], "select2", this);
$element.data("select2", this);
};
Utils.Extend(Select2, Utils.Observable);
Select2.prototype._generateId = function($element) {
var id = "";
if ($element.attr("id") != null) {
id = $element.attr("id");
} else if ($element.attr("name") != null) {
id = $element.attr("name") + "-" + Utils.generateChars(2);
} else {
id = Utils.generateChars(4);
}
id = id.replace(/(:|\.|\[|\]|,)/g, "");
id = "select2-" + id;
return id;
};
Select2.prototype._placeContainer = function($container) {
$container.insertAfter(this.$element);
var width = this._resolveWidth(this.$element, this.options.get("width"));
if (width != null) {
$container.css("width", width);
}
};
Select2.prototype._resolveWidth = function($element, method) {
var WIDTH = /^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;
if (method == "resolve") {
var styleWidth = this._resolveWidth($element, "style");
if (styleWidth != null) {
return styleWidth;
}
return this._resolveWidth($element, "element");
}
if (method == "element") {
var elementWidth = $element.outerWidth(false);
if (elementWidth <= 0) {
return "auto";
}
return elementWidth + "px";
}
if (method == "style") {
var style = $element.attr("style");
if (typeof style !== "string") {
return null;
}
var attrs = style.split(";");
for (var i = 0, l = attrs.length; i < l; i = i + 1) {
var attr = attrs[i].replace(/\s/g, "");
var matches = attr.match(WIDTH);
if (matches !== null && matches.length >= 1) {
return matches[1];
}
}
return null;
}
if (method == "computedstyle") {
var computedStyle = window.getComputedStyle($element[0]);
return computedStyle.width;
}
return method;
};
Select2.prototype._bindAdapters = function() {
this.dataAdapter.bind(this, this.$container);
this.selection.bind(this, this.$container);
this.dropdown.bind(this, this.$container);
this.results.bind(this, this.$container);
};
Select2.prototype._registerDomEvents = function() {
var self = this;
this.$element.on("change.select2", function() {
self.dataAdapter.current(function(data) {
self.trigger("selection:update", {
data
});
});
});
this.$element.on("focus.select2", function(evt) {
self.trigger("focus", evt);
});
this._syncA = Utils.bind(this._syncAttributes, this);
this._syncS = Utils.bind(this._syncSubtree, this);
this._observer = new window.MutationObserver(function(mutations) {
self._syncA();
self._syncS(mutations);
});
this._observer.observe(this.$element[0], {
attributes: true,
childList: true,
subtree: false
});
};
Select2.prototype._registerDataEvents = function() {
var self = this;
this.dataAdapter.on("*", function(name, params) {
self.trigger(name, params);
});
};
Select2.prototype._registerSelectionEvents = function() {
var self = this;
var nonRelayEvents = ["toggle", "focus"];
this.selection.on("toggle", function() {
self.toggleDropdown();
});
this.selection.on("focus", function(params) {
self.focus(params);
});
this.selection.on("*", function(name, params) {
if (nonRelayEvents.indexOf(name) !== -1) {
return;
}
self.trigger(name, params);
});
};
Select2.prototype._registerDropdownEvents = function() {
var self = this;
this.dropdown.on("*", function(name, params) {
self.trigger(name, params);
});
};
Select2.prototype._registerResultsEvents = function() {
var self = this;
this.results.on("*", function(name, params) {
self.trigger(name, params);
});
};
Select2.prototype._registerEvents = function() {
var self = this;
this.on("open", function() {
self.$container[0].classList.add("select2-container--open");
});
this.on("close", function() {
self.$container[0].classList.remove("select2-container--open");
});
this.on("enable", function() {
self.$container[0].classList.remove("select2-container--disabled");
});
this.on("disable", function() {
self.$container[0].classList.add("select2-container--disabled");
});
this.on("blur", function() {
self.$container[0].classList.remove("select2-container--focus");
});
this.on("query", function(params) {
if (!self.isOpen()) {
self.trigger("open", {});
}
this.dataAdapter.query(params, function(data) {
self.trigger("results:all", {
data,
query: params
});
});
});
this.on("query:append", function(params) {
this.dataAdapter.query(params, function(data) {
self.trigger("results:append", {
data,
query: params
});
});
});
this.on("keypress", function(evt) {
var key = evt.which;
if (self.isOpen()) {
if (key === KEYS.ESC || key === KEYS.UP && evt.altKey) {
self.close(evt);
evt.preventDefault();
} else if (key === KEYS.ENTER || key === KEYS.TAB) {
self.trigger("results:select", {});
evt.preventDefault();
} else if (key === KEYS.SPACE && evt.ctrlKey) {
self.trigger("results:toggle", {});
evt.preventDefault();
} else if (key === KEYS.UP) {
self.trigger("results:previous", {});
evt.preventDefault();
} else if (key === KEYS.DOWN) {
self.trigger("results:next", {});
evt.preventDefault();
}
} else {
if (key === KEYS.ENTER || key === KEYS.SPACE || key === KEYS.DOWN && evt.altKey) {
self.open();
evt.preventDefault();
}
}
});
};
Select2.prototype._syncAttributes = function() {
this.options.set("disabled", this.$element.prop("disabled"));
if (this.isDisabled()) {
if (this.isOpen()) {
this.close();
}
this.trigger("disable", {});
} else {
this.trigger("enable", {});
}
};
Select2.prototype._isChangeMutation = function(mutations) {
var self = this;
if (mutations.addedNodes && mutations.addedNodes.length > 0) {
for (var n = 0; n < mutations.addedNodes.length; n++) {
var node = mutations.addedNodes[n];
if (node.selected) {
return true;
}
}
} else if (mutations.removedNodes && mutations.removedNodes.length > 0) {
return true;
} else if (Array.isArray(mutations)) {
return mutations.some(function(mutation) {
return self._isChangeMutation(mutation);
});
}
return false;
};
Select2.prototype._syncSubtree = function(mutations) {
var changed = this._isChangeMutation(mutations);
var self = this;
if (changed) {
this.dataAdapter.current(function(currentData) {
self.trigger("selection:update", {
data: currentData
});
});
}
};
Select2.prototype.trigger = function(name, args) {
var actualTrigger = Select2.__super__.trigger;
var preTriggerMap = {
"open": "opening",
"close": "closing",
"select": "selecting",
"unselect": "unselecting",
"clear": "clearing"
};
if (args === void 0) {
args = {};
}
if (name in preTriggerMap) {
var preTriggerName = preTriggerMap[name];
var preTriggerArgs = {
prevented: false,
name,
args
};
actualTrigger.call(this, preTriggerName, preTriggerArgs);
if (preTriggerArgs.prevented) {
args.prevented = true;
return;
}
}
actualTrigger.call(this, name, args);
};
Select2.prototype.toggleDropdown = function() {
if (this.isDisabled()) {
return;
}
if (this.isOpen()) {
this.close();
} else {
this.open();
}
};
Select2.prototype.open = function() {
if (this.isOpen()) {
return;
}
if (this.isDisabled()) {
return;
}
this.trigger("query", {});
};
Select2.prototype.close = function(evt) {
if (!this.isOpen()) {
return;
}
this.trigger("close", { originalEvent: evt });
};
Select2.prototype.isEnabled = function() {
return !this.isDisabled();
};
Select2.prototype.isDisabled = function() {
return this.options.get("disabled");
};
Select2.prototype.isOpen = function() {
return this.$container[0].classList.contains("select2-container--open");
};
Select2.prototype.hasFocus = function() {
return this.$container[0].classList.contains("select2-container--focus");
};
Select2.prototype.focus = function(data) {
if (this.hasFocus()) {
return;
}
this.$container[0].classList.add("select2-container--focus");
this.trigger("focus", {});
};
Select2.prototype.enable = function(args) {
if (this.options.get("debug") && window.console && console.warn) {
console.warn(
'Select2: The `select2("enable")` method has been deprecated and will be removed in later Select2 versions. Use $element.prop("disabled") instead.'
);
}
if (args == null || args.length === 0) {
args = [true];
}
var disabled = !args[0];
this.$element.prop("disabled", disabled);
};
Select2.prototype.data = function() {
if (this.options.get("debug") && arguments.length > 0 && window.console && console.warn) {
console.warn(
'Select2: Data can no longer be set using `select2("data")`. You should consider setting the value instead using `$element.val()`.'
);
}
var data = [];
this.dataAdapter.current(function(currentData) {
data = currentData;
});
return data;
};
Select2.prototype.val = function(args) {
if (this.options.get("debug") && window.console && console.warn) {
console.warn(
'Select2: The `select2("val")` method has been deprecated and will be removed in later Select2 versions. Use $element.val() instead.'
);
}
if (args == null || args.length === 0) {
return this.$element.val();
}
var newVal = args[0];
if (Array.isArray(newVal)) {
newVal = newVal.map(function(obj) {
return obj.toString();
});
}
this.$element.val(newVal).trigger("input").trigger("change");
};
Select2.prototype.destroy = function() {
Utils.RemoveData(this.$container[0]);
this.$container.remove();
this._observer.disconnect();
this._observer = null;
this._syncA = null;
this._syncS = null;
this.$element.off(".select2");
this.$element.attr(
"tabindex",
Utils.GetData(this.$element[0], "old-tabindex")
);
this.$element[0].classList.remove("select2-hidden-accessible");
this.$element.attr("aria-hidden", "false");
Utils.RemoveData(this.$element[0]);
this.$element.removeData("select2");
this.dataAdapter.destroy();
this.selection.destroy();
this.dropdown.destroy();
this.results.destroy();
this.dataAdapter = null;
this.selection = null;
this.dropdown = null;
this.results = null;
};
Select2.prototype.render = function() {
var $container = $2(
''
);
$container.attr("dir", this.options.get("dir"));
this.$container = $container;
this.$container[0].classList.add("select2-container--" + this.options.get("theme"));
Utils.StoreData($container[0], "element", this.$element);
return $container;
};
return Select2;
});
S22.define("jquery-mousewheel", [
"jquery"
], function($2) {
return $2;
});
S22.define("jquery.select2", [
"jquery",
"jquery-mousewheel",
"./select2/core",
"./select2/defaults",
"./select2/utils"
], function($2, _, Select2, Defaults, Utils) {
if ($2.fn.select2 == null) {
var thisMethods = ["open", "close", "destroy"];
$2.fn.select2 = function(options) {
options = options || {};
if (typeof options === "object") {
this.each(function() {
var instanceOptions = $2.extend(true, {}, options);
var instance = new Select2($2(this), instanceOptions);
});
return this;
} else if (typeof options === "string") {
var ret;
var args = Array.prototype.slice.call(arguments, 1);
this.each(function() {
var instance = Utils.GetData(this, "select2");
if (instance == null && window.console && console.error) {
console.error(
"The select2('" + options + "') method was called on an element that is not using Select2."
);
}
ret = instance[options].apply(instance, args);
});
if (thisMethods.indexOf(options) > -1) {
return this;
}
return ret;
} else {
throw new Error("Invalid arguments for Select2: " + options);
}
};
}
if ($2.fn.select2.defaults == null) {
$2.fn.select2.defaults = Defaults;
}
return Select2;
});
return {
define: S22.define,
require: S22.require
};
}();
var select2 = S2.require("jquery.select2");
jQuery2.fn.select2.amd = S2;
return select2;
});
}
});
export default require_select2();
/*! Bundled license information:
select2/dist/js/select2.js:
(*!
* Select2 4.1.0-rc.0
* https://select2.github.io
*
* Released under the MIT license
* https://github.com/select2/select2/blob/master/LICENSE.md
*)
(**
* @license almond 0.3.3 Copyright jQuery Foundation and other contributors.
* Released under MIT license, http://github.com/requirejs/almond/LICENSE
*)
*/
//# sourceMappingURL=select2.js.map