diff --git a/dist/angular-select2.js b/dist/angular-select2.js
deleted file mode 100644
index d42b386..0000000
--- a/dist/angular-select2.js
+++ /dev/null
@@ -1,290 +0,0 @@
-angular.module("rt.select2", [])
- .value("select2Config", {})
- .factory("select2Stack", function () {
- var stack = [];
-
- return {
- $register: function (callbackElem) {
- stack.push(callbackElem);
- },
- $unregister: function (callbackElem) {
- var idx = stack.indexOf(callbackElem);
- if (idx !== -1) {
- stack.splice(idx, 1);
- }
- },
- closeAll: function () {
- stack.forEach(function (elem) {
- elem.close();
- });
- }
- };
- })
- .directive("select2", ["$rootScope", "$timeout", "$parse", "$filter", "select2Config", "select2Stack", function ($rootScope, $timeout, $parse, $filter, select2Config, select2Stack) {
- "use strict";
-
- var filter = $filter("filter");
-
- function sortedKeys(obj) {
- var keys = [];
- for (var key in obj) {
- if (obj.hasOwnProperty(key)) {
- keys.push(key);
- }
- }
- return keys.sort();
- }
-
- var defaultOptions = {};
- //0000111110000000000022220000000000000000000000333300000000000000444444444444444000000000555555555555555000000066666666666666600000000000000007777000000000000000000088888
- var NG_OPTIONS_REGEXP = /^\s*(.*?)(?:\s+as\s+(.*?))?(?:\s+group\s+by\s+(.*))?\s+for\s+(?:([\$\w][\$\w]*)|(?:\(\s*([\$\w][\$\w]*)\s*,\s*([\$\w][\$\w]*)\s*\)))\s+in\s+(.*?)(?:\s+track\s+by\s+(.*?))?$/;
-
- if (select2Config) {
- angular.extend(defaultOptions, select2Config);
- }
-
- return {
- require: "ngModel",
- priority: 1,
- restrict: "E",
- template: "",
- replace: true,
- link: function (scope, element, attrs, controller) {
- var getOptions;
-
- var opts = angular.extend({}, defaultOptions, scope.$eval(attrs.options));
- var isMultiple = angular.isDefined(attrs.multiple) || opts.multiple;
-
- opts.multiple = isMultiple;
-
- // make sure ngrequired validation works
- if (isMultiple) {
- controller.$isEmpty = function (value) {
- return !value || value.length === 0;
- };
- }
-
- if (attrs.placeholder) {
- opts.placeholder = attrs.placeholder;
- }
-
- var filterOptions = $parse(attrs.optionsFilter);
-
- // All values returned from Select2 are strings. This is a
- // problem if you supply integer indexes: they'll become
- // strings once passing through this directive. We keep a
- // mapping between string keys and values through the
- // optionItems object, to be able to return the correctly typed
- // value.
- var optionItems = {};
-
- function filterValues(values) {
- if (filterOptions) {
- var filterParams = filterOptions(scope);
- if (filterParams) {
- return filter(values, filterParams);
- }
- }
-
- return values;
- }
-
- if (attrs.s2Options) {
- var match;
- if (!(match = attrs.s2Options.match(NG_OPTIONS_REGEXP))) {
- throw new Error("Invalid s2Options encountered!");
- }
-
- var displayFn = $parse(match[2] || match[1]);
- var valuesFn = $parse(match[7]);
- var valueName = match[4] || match[6];
- var valueFn = $parse(match[2] ? match[1] : valueName);
- var keyName = match[5];
-
- getOptions = function (callback) {
- optionItems = {};
- var values = filterValues(valuesFn(scope));
- var keys = (keyName ? sortedKeys(values) : values) || [];
-
- var options = [];
- for (var i = 0; i < keys.length; i++) {
- var locals = {};
- var key = i;
- if (keyName) {
- key = keys[i];
- locals[keyName] = key;
- }
- locals[valueName] = values[key];
-
- var value = valueFn(scope, locals);
- var label = displayFn(scope, locals) || "";
-
- // Select2 returns strings, we use a dictionary to get
- // back to the original value.
- optionItems[value] = {
- id: value,
- text: label,
- obj: values[key]
- };
-
- options.push(optionItems[value]);
- }
-
- callback(options);
- };
-
- opts.query = function (query) {
- var values = filterValues(valuesFn(scope));
- var keys = (keyName ? sortedKeys(values) : values) || [];
-
- var options = [];
- for (var i = 0; i < keys.length; i++) {
- var locals = {};
- var key = i;
- if (keyName) {
- key = keys[i];
- locals[keyName] = key;
- }
- locals[valueName] = values[key];
-
- var value = valueFn(scope, locals);
- var label = displayFn(scope, locals) || "";
-
- if (label.toLowerCase().indexOf(query.term.toLowerCase()) > -1) {
- options.push({
- id: value,
- text: label,
- obj: values[key]
- });
- }
- }
-
- query.callback({
- results: options
- });
- };
-
- // Make sure changes to the options get filled in
- scope.$watch(match[7], function () {
- controller.$render();
- });
- } else {
- if (!opts.query) {
- throw new Error("You need to supply a query function!");
- }
-
- var queryFn = opts.query;
- opts.query = function (query) {
- var cb = query.callback;
- query.callback = function (data) {
- for (var i = 0; i < data.results.length; i++) {
- var result = data.results[i];
- optionItems[result.id] = result;
- }
- cb(data);
- };
- queryFn(query);
- };
-
- getOptions = function (callback) {
- opts.query({
- term: "",
- callback: function (query) {
- callback(query.results);
- }
- });
- };
- }
-
- function getSelection(callback) {
- if (isMultiple) {
- getOptions(function (options) {
- var selection = [];
- for (var i = 0; i < options.length; i++) {
- var option = options[i];
- var viewValue = controller.$viewValue || [];
- if (viewValue.indexOf(option.id) > -1) {
- selection.push(option);
- }
- }
- callback(selection);
- });
- } else {
- getOptions(function () {
- callback(optionItems[controller.$viewValue] || { obj: {} });
- });
- }
- }
-
- controller.$render = function () {
- getSelection(function (selection) {
- if (isMultiple) {
- element.select2("data", selection);
- } else {
- element.select2("val", selection.id);
- }
- });
- };
-
- if (!opts.initSelection) {
- opts.initSelection = function (element, callback) {
- getSelection(callback);
- };
- } else {
- var _initSelection = opts.initSelection;
- opts.initSelection = function (element, callback) {
- _initSelection(element, function (result) {
- optionItems[result.id] = result;
- callback(result);
- });
- };
- }
-
- // register with the select2stack
- var controlObj = {
- close: function () {
- element.select2("close");
- }
- };
- select2Stack.$register(controlObj);
- scope.$on("destroy", function () {
- select2Stack.$unregister(controlObj);
- });
-
- $timeout(function () {
- element.select2(opts);
- element.on("change", function (e) {
- scope.$apply(function () {
- var val;
- if (isMultiple) {
- var vals = [];
- for (var i = 0; i < e.val.length; i++) {
- val = optionItems[e.val[i]];
- if (val) {
- vals.push(val.id);
- }
- }
- controller.$setViewValue(vals);
- } else {
- val = optionItems[e.val];
- controller.$setViewValue(val ? val.id : null);
- }
-
- controller.$render();
-
- });
- });
-
- element.on("select2-blur", function () {
- if (controller.$touched) {
- return;
- }
-
- scope.$apply(controller.$setTouched);
- });
-
- controller.$render();
- });
- }
- };
- }]);
diff --git a/dist/angular-select2.min.js b/dist/angular-select2.min.js
deleted file mode 100644
index d631538..0000000
--- a/dist/angular-select2.min.js
+++ /dev/null
@@ -1 +0,0 @@
-angular.module("rt.select2",[]).value("select2Config",{}).factory("select2Stack",function(){var a=[];return{$register:function(b){a.push(b)},$unregister:function(b){var c=a.indexOf(b);-1!==c&&a.splice(c,1)},closeAll:function(){a.forEach(function(a){a.close()})}}}).directive("select2",["$rootScope","$timeout","$parse","$filter","select2Config","select2Stack",function(a,b,c,d,e,f){"use strict";function g(a){var b=[];for(var c in a)a.hasOwnProperty(c)&&b.push(c);return b.sort()}var h=d("filter"),i={},j=/^\s*(.*?)(?:\s+as\s+(.*?))?(?:\s+group\s+by\s+(.*))?\s+for\s+(?:([\$\w][\$\w]*)|(?:\(\s*([\$\w][\$\w]*)\s*,\s*([\$\w][\$\w]*)\s*\)))\s+in\s+(.*?)(?:\s+track\s+by\s+(.*?))?$/;return e&&angular.extend(i,e),{require:"ngModel",priority:1,restrict:"E",template:'',replace:!0,link:function(a,d,e,k){function l(b){if(q){var c=q(a);if(c)return h(b,c)}return b}function m(a){n(p?function(b){for(var c=[],d=0;d-1&&c.push(e)}a(c)}:function(){a(r[k.$viewValue]||{obj:{}})})}var n,o=angular.extend({},i,a.$eval(e.options)),p=angular.isDefined(e.multiple)||o.multiple;o.multiple=p,p&&(k.$isEmpty=function(a){return!a||0===a.length}),e.placeholder&&(o.placeholder=e.placeholder);var q=c(e.optionsFilter),r={};if(e.s2Options){var s;if(!(s=e.s2Options.match(j)))throw new Error("Invalid s2Options encountered!");var t=c(s[2]||s[1]),u=c(s[7]),v=s[4]||s[6],w=c(s[2]?s[1]:v),x=s[5];n=function(b){r={};for(var c=l(u(a)),d=(x?g(c):c)||[],e=[],f=0;f-1&&e.push({id:j,text:k,obj:c[i]})}b.callback({results:e})},a.$watch(s[7],function(){k.$render()})}else{if(!o.query)throw new Error("You need to supply a query function!");var y=o.query;o.query=function(a){var b=a.callback;a.callback=function(a){for(var c=0;c