PageSourceSearch

https://www.bu.com.co/libraries/chosen/chosen.jquery.js?v=2.2.1

js bu.com.co collected 2026-10-06 09:32:23 UTC 47,436 bytes, 1,356 lines download raw bytes

vendor: 20,429 bytes, lines 1-587
1/*!
2Chosen, a Select Box Enhancer for jQuery and Prototype
3by Patrick Filler for Harvest, http://getharvest.com
4
5Version 1.8.3
6Full source at https://github.com/harvesthq/chosen
7Copyright (c) 2011-2018 Harvest http://getharvest.com
8
9MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md
10This file is generated by `grunt build`, do not edit it by hand.
11*/
12
13(function() {
14  var $, AbstractChosen, Chosen, SelectParser,
15    bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },
16    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
17    hasProp = {}.hasOwnProperty;
18
19  SelectParser = (function() {
20    function SelectParser() {
21      this.options_index = 0;
22      this.parsed = [];
23    }
24
25    SelectParser.prototype.add_node = function(child) {
26      if (child.nodeName.toUpperCase() === "OPTGROUP") {
27        return this.add_group(child);
28      } else {
29        return this.add_option(child);
30      }
31    };
32
33    SelectParser.prototype.add_group = function(group) {
34      var group_position, i, len, option, ref, results1;
35      group_position = this.parsed.length;
36      this.parsed.push({
37        array_index: group_position,
38        group: true,
39        label: group.label,
40        title: group.title ? group.title : void 0,
41        children: 0,
42        disabled: group.disabled,
43        classes: group.className
44      });
45      ref = group.childNodes;
46      results1 = [];
47      for (i = 0, len = ref.length; i < len; i++) {
48        option = ref[i];
49        results1.push(this.add_option(option, group_position, group.disabled));
50      }
51      return results1;
52    };
53
54    SelectParser.prototype.add_option = function(option, group_position, group_disabled) {
55      if (option.nodeName.toUpperCase() === "OPTION") {
56        if (option.text !== "") {
57          if (group_position != null) {
58            this.parsed[group_position].children += 1;
59          }
60          this.parsed.push({
61            array_index: this.parsed.length,
62            options_index: this.options_index,
63            value: option.value,
64            text: option.text,
65            html: option.innerHTML,
66            title: option.title ? option.title : void 0,
67            selected: option.selected,
68            disabled: group_disabled === true ? group_disabled : option.disabled,
69            group_array_index: group_position,
70            group_label: group_position != null ? this.parsed[group_position].label : null,
71            classes: option.className,
72            style: option.style.cssText
73          });
74        } else {
75          this.parsed.push({
76            array_index: this.parsed.length,
77            options_index: this.options_index,
78            empty: true
79          });
80        }
81        return this.options_index += 1;
82      }
83    };
84
85    return SelectParser;
86
87  })();
88
89  SelectParser.select_to_array = function(select) {
90    var child, i, len, parser, ref;
91    parser = new SelectParser();
92    ref = select.childNodes;
93    for (i = 0, len = ref.length; i < len; i++) {
94      child = ref[i];
95      parser.add_node(child);
96    }
97    return parser.parsed;
98  };
99
100  AbstractChosen = (function() {
101    function AbstractChosen(form_field, options1) {
102      this.form_field = form_field;
103      this.options = options1 != null ? options1 : {};
104      this.label_click_handler = bind(this.label_click_handler, this);
105      if (!AbstractChosen.browser_is_supported()) {
106        return;
107      }
108      this.is_multiple = this.form_field.multiple;
109      this.set_default_text();
110      this.set_default_values();
111      this.setup();
112      this.set_up_html();
113      this.register_observers();
114      this.on_ready();
115    }
116
117    AbstractChosen.prototype.set_default_values = function() {
118      this.click_test_action = (function(_this) {
119        return function(evt) {
120          return _this.test_active_click(evt);
121        };
122      })(this);
123      this.activate_action = (function(_this) {
124        return function(evt) {
125          return _this.activate_field(evt);
126        };
127      })(this);
128      this.active_field = false;
129      this.mouse_on_container = false;
130      this.results_showing = false;
131      this.result_highlighted = null;
132      this.is_rtl = this.options.rtl || /\bchosen-rtl\b/.test(this.form_field.className);
133      this.allow_single_deselect = (this.options.allow_single_deselect != null) && (this.form_field.options[0] != null) && this.form_field.options[0].text === "" ? this.options.allow_single_deselect : false;
134      this.disable_search_threshold = this.options.disable_search_threshold || 0;
135      this.disable_search = this.options.disable_search || false;
136      this.enable_split_word_search = this.options.enable_split_word_search != null ? this.options.enable_split_word_search : true;
137      this.group_search = this.options.group_search != null ? this.options.group_search : true;
138      this.search_contains = this.options.search_contains || false;
139      this.single_backstroke_delete = this.options.single_backstroke_delete != null ? this.options.single_backstroke_delete : true;
140      this.max_selected_options = this.options.max_selected_options || Infinity;
141      this.inherit_select_classes = this.options.inherit_select_classes || false;
142      this.display_selected_options = this.options.display_selected_options != null ? this.options.display_selected_options : true;
143      this.display_disabled_options = this.options.display_disabled_options != null ? this.options.display_disabled_options : true;
144      this.include_group_label_in_selected = this.options.include_group_label_in_selected || false;
145      this.max_shown_results = this.options.max_shown_results || Number.POSITIVE_INFINITY;
146      this.case_sensitive_search = this.options.case_sensitive_search || false;
147      return this.hide_results_on_select = this.options.hide_results_on_select != null ? this.options.hide_results_on_select : true;
148    };
149
150    AbstractChosen.prototype.set_default_text = function() {
151      if (this.form_field.getAttribute("data-placeholder")) {
152        this.default_text = this.form_field.getAttribute("data-placeholder");
153      } else if (this.is_multiple) {
154        this.default_text = this.options.placeholder_text_multiple || this.options.placeholder_text || AbstractChosen.default_multiple_text;
155      } else {
156        this.default_text = this.options.placeholder_text_single || this.options.placeholder_text || AbstractChosen.default_single_text;
157      }
158      this.default_text = this.escape_html(this.default_text);
159      return this.results_none_found = this.form_field.getAttribute("data-no_results_text") || this.options.no_results_text || AbstractChosen.default_no_result_text;
160    };
161
162    AbstractChosen.prototype.choice_label = function(item) {
163      if (this.include_group_label_in_selected && (item.group_label != null)) {
164        return "<b class='group-name'>" + item.group_label + "</b>" + item.html;
165      } else {
166        return item.html;
167      }
168    };
169
170    AbstractChosen.prototype.mouse_enter = function() {
171      return this.mouse_on_container = true;
172    };
173
174    AbstractChosen.prototype.mouse_leave = function() {
175      return this.mouse_on_container = false;
176    };
177
178    AbstractChosen.prototype.input_focus = function(evt) {
179      if (this.is_multiple) {
180        if (!this.active_field) {
181          return setTimeout(((function(_this) {
182            return function() {
183              return _this.container_mousedown();
184            };
185          })(this)), 50);
186        }
187      } else {
188        if (!this.active_field) {
189          return this.activate_field();
190        }
191      }
192    };
193
194    AbstractChosen.prototype.input_blur = function(evt) {
195      if (!this.mouse_on_container) {
196        this.active_field = false;
197        return setTimeout(((function(_this) {
198          return function() {
199            return _this.blur_test();
200          };
201        })(this)), 100);
202      }
203    };
204
205    AbstractChosen.prototype.label_click_handler = function(evt) {
206      if (this.is_multiple) {
207        return this.container_mousedown(evt);
208      } else {
209        return this.activate_field();
210      }
211    };
212
213    AbstractChosen.prototype.results_option_build = function(options) {
214      var content, data, data_content, i, len, ref, shown_results;
215      content = '';
216      shown_results = 0;
217      ref = this.results_data;
218      for (i = 0, len = ref.length; i < len; i++) {
219        data = ref[i];
220        data_content = '';
221        if (data.group) {
222          data_content = this.result_add_group(data);
223        } else {
224          data_content = this.result_add_option(data);
225        }
226        if (data_content !== '') {
227          shown_results++;
228          content += data_content;
229        }
230        if (options != null ? options.first : void 0) {
231          if (data.selected && this.is_multiple) {
232            this.choice_build(data);
233          } else if (data.selected && !this.is_multiple) {
234            this.single_set_selected_text(this.choice_label(data));
235          }
236        }
237        if (shown_results >= this.max_shown_results) {
238          break;
239        }
240      }
241      return content;
242    };
243
244    AbstractChosen.prototype.result_add_option = function(option) {
245      var classes, option_el;
246      if (!option.search_match) {
247        return '';
248      }
249      if (!this.include_option_in_results(option)) {
250        return '';
251      }
252      classes = [];
253      if (!option.disabled && !(option.selected && this.is_multiple)) {
254        classes.push("active-result");
255      }
256      if (option.disabled && !(option.selected && this.is_multiple)) {
257        classes.push("disabled-result");
258      }
259      if (option.selected) {
260        classes.push("result-selected");
261      }
262      if (option.group_array_index != null) {
263        classes.push("group-option");
264      }
265      if (option.classes !== "") {
266        classes.push(option.classes);
267      }
268      option_el = document.createElement("li");
269      option_el.className = classes.join(" ");
270      option_el.style.cssText = option.style;
271      option_el.setAttribute("data-option-array-index", option.array_index);
272      option_el.innerHTML = option.highlighted_html || option.html;
273      if (option.title) {
274        option_el.title = option.title;
275      }
276      return this.outerHTML(option_el);
277    };
278
279    AbstractChosen.prototype.result_add_group = function(group) {
280      var classes, group_el;
281      if (!(group.search_match || group.group_match)) {
282        return '';
283      }
284      if (!(group.active_options > 0)) {
285        return '';
286      }
287      classes = [];
288      classes.push("group-result");
289      if (group.classes) {
290        classes.push(group.classes);
291      }
292      group_el = document.createElement("li");
293      group_el.className = classes.join(" ");
294      group_el.innerHTML = group.highlighted_html || this.escape_html(group.label);
295      if (group.title) {
296        group_el.title = group.title;
297      }
298      return this.outerHTML(group_el);
299    };
300
301    AbstractChosen.prototype.results_update_field = function() {
302      this.set_default_text();
303      if (!this.is_multiple) {
304        this.results_reset_cleanup();
305      }
306      this.result_clear_highlight();
307      this.results_build();
308      if (this.results_showing) {
309        return this.winnow_results();
310      }
311    };
312
313    AbstractChosen.prototype.reset_single_select_options = function() {
314      var i, len, ref, result, results1;
315      ref = this.results_data;
316      results1 = [];
317      for (i = 0, len = ref.length; i < len; i++) {
318        result = ref[i];
319        if (result.selected) {
320          results1.push(result.selected = false);
321        } else {
322          results1.push(void 0);
323        }
324      }
325      return results1;
326    };
327
328    AbstractChosen.prototype.results_toggle = function() {
329      if (this.results_showing) {
330        return this.results_hide();
331      } else {
332        return this.results_show();
333      }
334    };
335
336    AbstractChosen.prototype.results_search = function(evt) {
337      if (this.results_showing) {
338        return this.winnow_results();
339      } else {
340        return this.results_show();
341      }
342    };
343
344    AbstractChosen.prototype.winnow_results = function() {
345      var escapedQuery, fix, i, len, option, prefix, query, ref, regex, results, results_group, search_match, startpos, suffix, text;
346      this.no_results_clear();
347      results = 0;
348      query = this.get_search_text();
349      escapedQuery = query.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
350      regex = this.get_search_regex(escapedQuery);
351      ref = this.results_data;
352      for (i = 0, len = ref.length; i < len; i++) {
353        option = ref[i];
354        option.search_match = false;
355        results_group = null;
356        search_match = null;
357        option.highlighted_html = '';
358        if (this.include_option_in_results(option)) {
359          if (option.group) {
360            option.group_match = false;
361            option.active_options = 0;
362          }
363          if ((option.group_array_index != null) && this.results_data[option.group_array_index]) {
364            results_group = this.results_data[option.group_array_index];
365            if (results_group.active_options === 0 && results_group.search_match) {
366              results += 1;
367            }
368            results_group.active_options += 1;
369          }
370          text = option.group ? option.label : option.text;
371          if (!(option.group && !this.group_search)) {
372            search_match = this.search_string_match(text, regex);
373            option.search_match = search_match != null;
374            if (option.search_match && !option.group) {
375              results += 1;
376            }
377            if (option.search_match) {
378              if (query.length) {
379                startpos = search_match.index;
380                prefix = text.slice(0, startpos);
381                fix = text.slice(startpos, startpos + query.length);
382                suffix = text.slice(startpos + query.length);
383                option.highlighted_html = (this.escape_html(prefix)) + "<em>" + (this.escape_html(fix)) + "</em>" + (this.escape_html(suffix));
384              }
385              if (results_group != null) {
386                results_group.group_match = true;
387              }
388            } else if ((option.group_array_index != null) && this.results_data[option.group_array_index].search_match) {
389              option.search_match = true;
390            }
391          }
392        }
393      }
394      this.result_clear_highlight();
395      if (results < 1 && query.length) {
396        this.update_results_content("");
397        return this.no_results(query);
398      } else {
399        this.update_results_content(this.results_option_build());
400        return this.winnow_results_set_highlight();
401      }
402    };
403
404    AbstractChosen.prototype.get_search_regex = function(escaped_search_string) {
405      var regex_flag, regex_string;
406      regex_string = this.search_contains ? escaped_search_string : "(^|\\s|\\b)" + escaped_search_string + "[^\\s]*";
407      if (!(this.enable_split_word_search || this.search_contains)) {
408        regex_string = "^" + regex_string;
409      }
410      regex_flag = this.case_sensitive_search ? "" : "i";
411      return new RegExp(regex_string, regex_flag);
412    };
413
414    AbstractChosen.prototype.search_string_match = function(search_string, regex) {
415      var match;
416      match = regex.exec(search_string);
417      if (!this.search_contains && (match != null ? match[1] : void 0)) {
418        match.index += 1;
419      }
420      return match;
421    };
422
423    AbstractChosen.prototype.choices_count = function() {
424      var i, len, option, ref;
425      if (this.selected_option_count != null) {
426        return this.selected_option_count;
427      }
428      this.selected_option_count = 0;
429      ref = this.form_field.options;
430      for (i = 0, len = ref.length; i < len; i++) {
431        option = ref[i];
432        if (option.selected) {
433          this.selected_option_count += 1;
434        }
435      }
436      return this.selected_option_count;
437    };
438
439    AbstractChosen.prototype.choices_click = function(evt) {
440      evt.preventDefault();
441      this.activate_field();
442      if (!(this.results_showing || this.is_disabled)) {
443        return this.results_show();
444      }
445    };
446
447    AbstractChosen.prototype.keydown_checker = function(evt) {
448      var ref, stroke;
449      stroke = (ref = evt.which) != null ? ref : evt.keyCode;
450      this.search_field_scale();
451      if (stroke !== 8 && this.pending_backstroke) {
452        this.clear_backstroke();
453      }
454      switch (stroke) {
455        case 8:
456          this.backstroke_length = this.get_search_field_value().length;
457          break;
458        case 9:
459          if (this.results_showing && !this.is_multiple) {
460            this.result_select(evt);
461          }
462          this.mouse_on_container = false;
463          break;
464        case 13:
465          if (this.results_showing) {
466            evt.preventDefault();
467          }
468          break;
469        case 27:
470          if (this.results_showing) {
471            evt.preventDefault();
472          }
473          break;
474        case 32:
475          if (this.disable_search) {
476            evt.preventDefault();
477          }
478          break;
479        case 38:
480          evt.preventDefault();
481          this.keyup_arrow();
482          break;
483        case 40:
484          evt.preventDefault();
485          this.keydown_arrow();
486          break;
487      }
488    };
489
490    AbstractChosen.prototype.keyup_checker = function(evt) {
491      var ref, stroke;
492      stroke = (ref = evt.which) != null ? ref : evt.keyCode;
493      this.search_field_scale();
494      switch (stroke) {
495        case 8:
496          if (this.is_multiple && this.backstroke_length < 1 && this.choices_count() > 0) {
497            this.keydown_backstroke();
498          } else if (!this.pending_backstroke) {
499            this.result_clear_highlight();
500            this.results_search();
501          }
502          break;
503        case 13:
504          evt.preventDefault();
505          if (this.results_showing) {
506            this.result_select(evt);
507          }
508          break;
509        case 27:
510          if (this.results_showing) {
511            this.results_hide();
512          }
513          break;
514        case 9:
515        case 16:
516        case 17:
517        case 18:
518        case 38:
519        case 40:
520        case 91:
521          break;
522        default:
523          this.results_search();
524          break;
525      }
526    };
527
528    AbstractChosen.prototype.clipboard_event_checker = function(evt) {
529      if (this.is_disabled) {
530        return;
531      }
532      return setTimeout(((function(_this) {
533        return function() {
534          return _this.results_search();
535        };
536      })(this)), 50);
537    };
538
539    AbstractChosen.prototype.container_width = function() {
540      if (this.options.width != null) {
541        return this.options.width;
542      } else {
543        return this.form_field.offsetWidth + "px";
544      }
545    };
546
547    AbstractChosen.prototype.include_option_in_results = function(option) {
548      if (this.is_multiple && (!this.display_selected_options && option.selected)) {
549        return false;
550      }
551      if (!this.display_disabled_options && option.disabled) {
552        return false;
553      }
554      if (option.empty) {
555        return false;
556      }
557      return true;
558    };
559
560    AbstractChosen.prototype.search_results_touchstart = function(evt) {
561      this.touch_started = true;
562      return this.search_results_mouseover(evt);
563    };
564
565    AbstractChosen.prototype.search_results_touchmove = function(evt) {
566      this.touch_started = false;
567      return this.search_results_mouseout(evt);
568    };
569
570    AbstractChosen.prototype.search_results_touchend = function(evt) {
571      if (this.touch_started) {
572        return this.search_results_mouseup(evt);
573      }
574    };
575
576    AbstractChosen.prototype.outerHTML = function(element) {
577      var tmp;
578      if (element.outerHTML) {
579        return element.outerHTML;
580      }
581      tmp = document.createElement("div");
582      tmp.appendChild(element);
583      return tmp.innerHTML;
584    };
585
586    AbstractChosen.prototype.get_single_html = function() {
587      return "<a class=\"chosen-single chosen-default\">\n  <input class=\"chosen-search-input\" type=\"text\" autocomplete=\"off\" />\n  <span>" + this.default_text + "</span>\n  <div><b></b></div>\n</a>\n<div class=\"chosen-drop\">\n  <div class=\"chosen-search\"
vendor: 12,623 bytes, lines 587-944
587>\n  </div>\n  <ul class=\"chosen-results\"></ul>\n</div>";
588    };
589
590    AbstractChosen.prototype.get_multi_html = function() {
591      return "<ul class=\"chosen-choices\">\n  <li class=\"search-field\">\n    <input class=\"chosen-search-input\" type=\"text\" autocomplete=\"off\" value=\"" + this.default_text + "\" />\n  </li>\n</ul>\n<div class=\"chosen-drop\">\n  <ul class=\"chosen-results\"></ul>\n</div>";
592    };
593
594    AbstractChosen.prototype.get_no_results_html = function(terms) {
595      return "<li class=\"no-results\">\n  " + this.results_none_found + " <span>" + (this.escape_html(terms)) + "</span>\n</li>";
596    };
597
598    AbstractChosen.browser_is_supported = function() {
599      if ("Microsoft Internet Explorer" === window.navigator.appName) {
600        return document.documentMode >= 8;
601      }
602      if (/iP(od|hone)/i.test(window.navigator.userAgent) || /IEMobile/i.test(window.navigator.userAgent) || /Windows Phone/i.test(window.navigator.userAgent) || /BlackBerry/i.test(window.navigator.userAgent) || /BB10/i.test(window.navigator.userAgent) || /Android.*Mobile/i.test(window.navigator.userAgent)) {
603        return false;
604      }
605      return true;
606    };
607
608    AbstractChosen.default_multiple_text = "Select Some Options";
609
610    AbstractChosen.default_single_text = "Select an Option";
611
612    AbstractChosen.default_no_result_text = "No results match";
613
614    return AbstractChosen;
615
616  })();
617
618  $ = jQuery;
619
620  $.fn.extend({
621    chosen: function(options) {
622      if (!AbstractChosen.browser_is_supported()) {
623        return this;
624      }
625      return this.each(function(input_field) {
626        var $this, chosen;
627        $this = $(this);
628        chosen = $this.data('chosen');
629        if (options === 'destroy') {
630          if (chosen instanceof Chosen) {
631            chosen.destroy();
632          }
633          return;
634        }
635        if (!(chosen instanceof Chosen)) {
636          $this.data('chosen', new Chosen(this, options));
637        }
638      });
639    }
640  });
641
642  Chosen = (function(superClass) {
643    extend(Chosen, superClass);
644
645    function Chosen() {
646      return Chosen.__super__.constructor.apply(this, arguments);
647    }
648
649    Chosen.prototype.setup = function() {
650      this.form_field_jq = $(this.form_field);
651      return this.current_selectedIndex = this.form_field.selectedIndex;
652    };
653
654    Chosen.prototype.set_up_html = function() {
655      var container_classes, container_props;
656      container_classes = ["chosen-container"];
657      container_classes.push("chosen-container-" + (this.is_multiple ? "multi" : "single"));
658      if (this.inherit_select_classes && this.form_field.className) {
659        container_classes.push(this.form_field.className);
660      }
661      if (this.is_rtl) {
662        container_classes.push("chosen-rtl");
663      }
664      container_props = {
665        'class': container_classes.join(' '),
666        'title': this.form_field.title
667      };
668      if (this.form_field.id.length) {
669        container_props.id = this.form_field.id.replace(/[^\w]/g, '_') + "_chosen";
670      }
671      this.container = $("<div />", container_props);
672      this.container.width(this.container_width());
673      if (this.is_multiple) {
674        this.container.html(this.get_multi_html());
675      } else {
676        this.container.html(this.get_single_html());
677      }
678      this.form_field_jq.hide().after(this.container);
679      this.dropdown = this.container.find('div.chosen-drop').first();
680      this.search_field = this.container.find('input').first();
681      this.search_results = this.container.find('ul.chosen-results').first();
682      this.search_field_scale();
683      this.search_no_results = this.container.find('li.no-results').first();
684      if (this.is_multiple) {
685        this.search_choices = this.container.find('ul.chosen-choices').first();
686        this.search_container = this.container.find('li.search-field').first();
687      } else {
688        this.search_container = this.container.find('div.chosen-search').first();
689        this.selected_item = this.container.find('.chosen-single').first();
690      }
691      this.results_build();
692      this.set_tab_index();
693      return this.set_label_behavior();
694    };
695
696    Chosen.prototype.on_ready = function() {
697      return this.form_field_jq.trigger("chosen:ready", {
698        chosen: this
699      });
700    };
701
702    Chosen.prototype.register_observers = function() {
703      this.container.on('touchstart.chosen', (function(_this) {
704        return function(evt) {
705          _this.container_mousedown(evt);
706        };
707      })(this));
708      this.container.on('touchend.chosen', (function(_this) {
709        return function(evt) {
710          _this.container_mouseup(evt);
711        };
712      })(this));
713      this.container.on('mousedown.chosen', (function(_this) {
714        return function(evt) {
715          _this.container_mousedown(evt);
716        };
717      })(this));
718      this.container.on('mouseup.chosen', (function(_this) {
719        return function(evt) {
720          _this.container_mouseup(evt);
721        };
722      })(this));
723      this.container.on('mouseenter.chosen', (function(_this) {
724        return function(evt) {
725          _this.mouse_enter(evt);
726        };
727      })(this));
728      this.container.on('mouseleave.chosen', (function(_this) {
729        return function(evt) {
730          _this.mouse_leave(evt);
731        };
732      })(this));
733      this.search_results.on('mouseup.chosen', (function(_this) {
734        return function(evt) {
735          _this.search_results_mouseup(evt);
736        };
737      })(this));
738      this.search_results.on('mouseover.chosen', (function(_this) {
739        return function(evt) {
740          _this.search_results_mouseover(evt);
741        };
742      })(this));
743      this.search_results.on('mouseout.chosen', (function(_this) {
744        return function(evt) {
745          _this.search_results_mouseout(evt);
746        };
747      })(this));
748      this.search_results.on('mousewheel.chosen DOMMouseScroll.chosen', (function(_this) {
749        return function(evt) {
750          _this.search_results_mousewheel(evt);
751        };
752      })(this));
753      this.search_results.on('touchstart.chosen', (function(_this) {
754        return function(evt) {
755          _this.search_results_touchstart(evt);
756        };
757      })(this));
758      this.search_results.on('touchmove.chosen', (function(_this) {
759        return function(evt) {
760          _this.search_results_touchmove(evt);
761        };
762      })(this));
763      this.search_results.on('touchend.chosen', (function(_this) {
764        return function(evt) {
765          _this.search_results_touchend(evt);
766        };
767      })(this));
768      this.form_field_jq.on("chosen:updated.chosen", (function(_this) {
769        return function(evt) {
770          _this.results_update_field(evt);
771        };
772      })(this));
773      this.form_field_jq.on("chosen:activate.chosen", (function(_this) {
774        return function(evt) {
775          _this.activate_field(evt);
776        };
777      })(this));
778      this.form_field_jq.on("chosen:open.chosen", (function(_this) {
779        return function(evt) {
780          _this.container_mousedown(evt);
781        };
782      })(this));
783      this.form_field_jq.on("chosen:close.chosen", (function(_this) {
784        return function(evt) {
785          _this.close_field(evt);
786        };
787      })(this));
788      this.search_field.on('blur.chosen', (function(_this) {
789        return function(evt) {
790          _this.input_blur(evt);
791        };
792      })(this));
793      this.search_field.on('keyup.chosen', (function(_this) {
794        return function(evt) {
795          _this.keyup_checker(evt);
796        };
797      })(this));
798      this.search_field.on('keydown.chosen', (function(_this) {
799        return function(evt) {
800          _this.keydown_checker(evt);
801        };
802      })(this));
803      this.search_field.on('focus.chosen', (function(_this) {
804        return function(evt) {
805          _this.input_focus(evt);
806        };
807      })(this));
808      this.search_field.on('cut.chosen', (function(_this) {
809        return function(evt) {
810          _this.clipboard_event_checker(evt);
811        };
812      })(this));
813      this.search_field.on('paste.chosen', (function(_this) {
814        return function(evt) {
815          _this.clipboard_event_checker(evt);
816        };
817      })(this));
818      if (this.is_multiple) {
819        return this.search_choices.on('click.chosen', (function(_this) {
820          return function(evt) {
821            _this.choices_click(evt);
822          };
823        })(this));
824      } else {
825        return this.container.on('click.chosen', function(evt) {
826          evt.preventDefault();
827        });
828      }
829    };
830
831    Chosen.prototype.destroy = function() {
832      $(this.container[0].ownerDocument).off('click.chosen', this.click_test_action);
833      if (this.form_field_label.length > 0) {
834        this.form_field_label.off('click.chosen');
835      }
836      if (this.search_field[0].tabIndex) {
837        this.form_field_jq[0].tabIndex = this.search_field[0].tabIndex;
838      }
839      this.container.remove();
840      this.form_field_jq.removeData('chosen');
841      return this.form_field_jq.show();
842    };
843
844    Chosen.prototype.search_field_disabled = function() {
845      this.is_disabled = this.form_field.disabled || this.form_field_jq.parents('fieldset').is(':disabled');
846      this.container.toggleClass('chosen-disabled', this.is_disabled);
847      this.search_field[0].disabled = this.is_disabled;
848      if (!this.is_multiple) {
849        this.selected_item.off('focus.chosen', this.activate_field);
850      }
851      if (this.is_disabled) {
852        return this.close_field();
853      } else if (!this.is_multiple) {
854        return this.selected_item.on('focus.chosen', this.activate_field);
855      }
856    };
857
858    Chosen.prototype.container_mousedown = function(evt) {
859      var ref;
860      if (this.is_disabled) {
861        return;
862      }
863      if (evt && ((ref = evt.type) === 'mousedown' || ref === 'touchstart') && !this.results_showing) {
864        evt.preventDefault();
865      }
866      if (!((evt != null) && ($(evt.target)).hasClass("search-choice-close"))) {
867        if (!this.active_field) {
868          if (this.is_multiple) {
869            this.search_field.val("");
870          }
871          $(this.container[0].ownerDocument).on('click.chosen', this.click_test_action);
872          this.results_show();
873        } else if (!this.is_multiple && evt && (($(evt.target)[0] === this.selected_item[0]) || $(evt.target).parents("a.chosen-single").length)) {
874          evt.preventDefault();
875          this.results_toggle();
876        }
877        return this.activate_field();
878      }
879    };
880
881    Chosen.prototype.container_mouseup = function(evt) {
882      if (evt.target.nodeName === "ABBR" && !this.is_disabled) {
883        return this.results_reset(evt);
884      }
885    };
886
887    Chosen.prototype.search_results_mousewheel = function(evt) {
888      var delta;
889      if (evt.originalEvent) {
890        delta = evt.originalEvent.deltaY || -evt.originalEvent.wheelDelta || evt.originalEvent.detail;
891      }
892      if (delta != null) {
893        evt.preventDefault();
894        if (evt.type === 'DOMMouseScroll') {
895          delta = delta * 40;
896        }
897        return this.search_results.scrollTop(delta + this.search_results.scrollTop());
898      }
899    };
900
901    Chosen.prototype.blur_test = function(evt) {
902      if (!this.active_field && this.container.hasClass("chosen-container-active")) {
903        return this.close_field();
904      }
905    };
906
907    Chosen.prototype.close_field = function() {
908      $(this.container[0].ownerDocument).off("click.chosen", this.click_test_action);
909      this.active_field = false;
910      this.results_hide();
911      this.container.removeClass("chosen-container-active");
912      this.clear_backstroke();
913      this.show_search_field_default();
914      this.search_field_scale();
915      return this.search_field.blur();
916    };
917
918    Chosen.prototype.activate_field = function() {
919      if (this.is_disabled) {
920        return;
921      }
922      this.container.addClass("chosen-container-active");
923      this.active_field = true;
924      this.search_field.val(this.search_field.val());
925      return this.search_field.focus();
926    };
927
928    Chosen.prototype.test_active_click = function(evt) {
929      var active_container;
930      active_container = $(evt.target).closest('.chosen-container');
931      if (active_container.length && this.container[0] === active_container[0]) {
932        return this.active_field = true;
933      } else {
934        return this.close_field();
935      }
936    };
937
938    Chosen.prototype.results_build = function() {
939      this.parsing = true;
940      this.selected_option_count = null;
941      this.results_data = SelectParser.select_to_array(this.form_field);
942      if (this.is_multiple) {
943        this.search_choices.find("li.search-choice").remove();
944      } else 
vendor: 7,425 bytes, lines 944-1152
944if (!this.is_multiple) {
945        this.single_set_selected_text();
946        if (this.disable_search || this.form_field.options.length <= this.disable_search_threshold) {
947          this.search_field[0].readOnly = true;
948          this.container.addClass("chosen-container-single-nosearch");
949        } else {
950          this.search_field[0].readOnly = false;
951          this.container.removeClass("chosen-container-single-nosearch");
952        }
953      }
954      this.update_results_content(this.results_option_build({
955        first: true
956      }));
957      this.search_field_disabled();
958      this.show_search_field_default();
959      this.search_field_scale();
960      return this.parsing = false;
961    };
962
963    Chosen.prototype.result_do_highlight = function(el) {
964      var high_bottom, high_top, maxHeight, visible_bottom, visible_top;
965      if (el.length) {
966        this.result_clear_highlight();
967        this.result_highlight = el;
968        this.result_highlight.addClass("highlighted");
969        maxHeight = parseInt(this.search_results.css("maxHeight"), 10);
970        visible_top = this.search_results.scrollTop();
971        visible_bottom = maxHeight + visible_top;
972        high_top = this.result_highlight.position().top + this.search_results.scrollTop();
973        high_bottom = high_top + this.result_highlight.outerHeight();
974        if (high_bottom >= visible_bottom) {
975          return this.search_results.scrollTop((high_bottom - maxHeight) > 0 ? high_bottom - maxHeight : 0);
976        } else if (high_top < visible_top) {
977          return this.search_results.scrollTop(high_top);
978        }
979      }
980    };
981
982    Chosen.prototype.result_clear_highlight = function() {
983      if (this.result_highlight) {
984        this.result_highlight.removeClass("highlighted");
985      }
986      return this.result_highlight = null;
987    };
988
989    Chosen.prototype.results_show = function() {
990      if (this.is_multiple && this.max_selected_options <= this.choices_count()) {
991        this.form_field_jq.trigger("chosen:maxselected", {
992          chosen: this
993        });
994        return false;
995      }
996      if (!this.is_multiple) {
997        this.search_container.append(this.search_field);
998      }
999      this.container.addClass("chosen-with-drop");
1000      this.results_showing = true;
1001      this.search_field.focus();
1002      this.search_field.val(this.get_search_field_value());
1003      this.winnow_results();
1004      return this.form_field_jq.trigger("chosen:showing_dropdown", {
1005        chosen: this
1006      });
1007    };
1008
1009    Chosen.prototype.update_results_content = function(content) {
1010      return this.search_results.html(content);
1011    };
1012
1013    Chosen.prototype.results_hide = function() {
1014      if (this.results_showing) {
1015        this.result_clear_highlight();
1016        if (!this.is_multiple) {
1017          this.selected_item.prepend(this.search_field);
1018          this.search_field.focus();
1019        }
1020        this.container.removeClass("chosen-with-drop");
1021        this.form_field_jq.trigger("chosen:hiding_dropdown", {
1022          chosen: this
1023        });
1024      }
1025      return this.results_showing = false;
1026    };
1027
1028    Chosen.prototype.set_tab_index = function(el) {
1029      var ti;
1030      if (this.form_field.tabIndex) {
1031        ti = this.form_field.tabIndex;
1032        this.form_field.tabIndex = -1;
1033        return this.search_field[0].tabIndex = ti;
1034      }
1035    };
1036
1037    Chosen.prototype.set_label_behavior = function() {
1038      this.form_field_label = this.form_field_jq.parents("label");
1039      if (!this.form_field_label.length && this.form_field.id.length) {
1040        this.form_field_label = $("label[for='" + this.form_field.id + "']");
1041      }
1042      if (this.form_field_label.length > 0) {
1043        return this.form_field_label.on('click.chosen', this.label_click_handler);
1044      }
1045    };
1046
1047    Chosen.prototype.show_search_field_default = function() {
1048      if (this.is_multiple && this.choices_count() < 1 && !this.active_field) {
1049        this.search_field.val(this.default_text);
1050        return this.search_field.addClass("default");
1051      } else {
1052        this.search_field.val("");
1053        return this.search_field.removeClass("default");
1054      }
1055    };
1056
1057    Chosen.prototype.search_results_mouseup = function(evt) {
1058      var target;
1059      target = $(evt.target).hasClass("active-result") ? $(evt.target) : $(evt.target).parents(".active-result").first();
1060      if (target.length) {
1061        this.result_highlight = target;
1062        this.result_select(evt);
1063        return this.search_field.focus();
1064      }
1065    };
1066
1067    Chosen.prototype.search_results_mouseover = function(evt) {
1068      var target;
1069      target = $(evt.target).hasClass("active-result") ? $(evt.target) : $(evt.target).parents(".active-result").first();
1070      if (target) {
1071        return this.result_do_highlight(target);
1072      }
1073    };
1074
1075    Chosen.prototype.search_results_mouseout = function(evt) {
1076      if ($(evt.target).hasClass("active-result") || $(evt.target).parents('.active-result').first()) {
1077        return this.result_clear_highlight();
1078      }
1079    };
1080
1081    Chosen.prototype.choice_build = function(item) {
1082      var choice, close_link;
1083      choice = $('<li />', {
1084        "class": "search-choice"
1085      }).html("<span>" + (this.choice_label(item)) + "</span>");
1086      if (item.disabled) {
1087        choice.addClass('search-choice-disabled');
1088      } else {
1089        close_link = $('<a />', {
1090          "class": 'search-choice-close',
1091          'data-option-array-index': item.array_index
1092        });
1093        close_link.on('click.chosen', (function(_this) {
1094          return function(evt) {
1095            return _this.choice_destroy_link_click(evt);
1096          };
1097        })(this));
1098        choice.append(close_link);
1099      }
1100      return this.search_container.before(choice);
1101    };
1102
1103    Chosen.prototype.choice_destroy_link_click = function(evt) {
1104      evt.preventDefault();
1105      evt.stopPropagation();
1106      if (!this.is_disabled) {
1107        return this.choice_destroy($(evt.target));
1108      }
1109    };
1110
1111    Chosen.prototype.choice_destroy = function(link) {
1112      if (this.result_deselect(link[0].getAttribute("data-option-array-index"))) {
1113        if (this.active_field) {
1114          this.search_field.focus();
1115        } else {
1116          this.show_search_field_default();
1117        }
1118        if (this.is_multiple && this.choices_count() > 0 && this.get_search_field_value().length < 1) {
1119          this.results_hide();
1120        }
1121        link.parents('li').first().remove();
1122        return this.search_field_scale();
1123      }
1124    };
1125
1126    Chosen.prototype.results_reset = function() {
1127      this.reset_single_select_options();
1128      this.form_field.options[0].selected = true;
1129      this.single_set_selected_text();
1130      this.show_search_field_default();
1131      this.results_reset_cleanup();
1132      this.trigger_form_field_change();
1133      if (this.active_field) {
1134        return this.results_hide();
1135      }
1136    };
1137
1138    Chosen.prototype.results_reset_cleanup = function() {
1139      this.current_selectedIndex = this.form_field.selectedIndex;
1140      return this.selected_item.find("abbr").remove();
1141    };
1142
1143    Chosen.prototype.result_select = function(evt) {
1144      var high, item;
1145      if (this.result_highlight) {
1146        high = this.result_highlight;
1147        this.result_clear_highlight();
1148        if (this.is_multiple && this.max_selected_options <= this.choices_count()) {
1149          this.form_field_jq.trigger("chosen:maxselected", {
1150            chosen: this
1151          });
1152          return false;
1153        }
1154        if (this.is_multiple) {
1155          high.removeClass("active-result");
1156        } else {
1157          this.reset_single_select_options();
1158        }
1159        high.addClass("result-selected");
1160        item = this.results_data[high[0].getAttribute("data-option-array-index")];
1161        item.selected = true;
1162        this.form_field.options[item.options_index].selected = true;
1163        this.selected_option_count = null;
1164        this.search_field.val("");
1165        if (this.is_multiple) {
1166          this.choice_build(item);
1167        } else {
1168          this.single_set_selected_text(this.choice_label(item));
1169        }
1170        if (this.is_multiple && (!this.hide_results_on_select || (evt.metaKey || evt.ctrlKey))) {
1171          this.winnow_results();
vendor: 6,207 bytes, lines 1171-1356
1171
1172        } else {
1173          this.results_hide();
1174          this.show_search_field_default();
1175        }
1176        if (this.is_multiple || this.form_field.selectedIndex !== this.current_selectedIndex) {
1177          this.trigger_form_field_change({
1178            selected: this.form_field.options[item.options_index].value
1179          });
1180        }
1181        this.current_selectedIndex = this.form_field.selectedIndex;
1182        evt.preventDefault();
1183        return this.search_field_scale();
1184      }
1185    };
1186
1187    Chosen.prototype.single_set_selected_text = function(text) {
1188      if (text == null) {
1189        text = this.default_text;
1190      }
1191      if (text === this.default_text) {
1192        this.selected_item.addClass("chosen-default");
1193      } else {
1194        this.single_deselect_control_build();
1195        this.selected_item.removeClass("chosen-default");
1196      }
1197      return this.selected_item.find("span").html(text);
1198    };
1199
1200    Chosen.prototype.result_deselect = function(pos) {
1201      var result_data;
1202      result_data = this.results_data[pos];
1203      if (!this.form_field.options[result_data.options_index].disabled) {
1204        result_data.selected = false;
1205        this.form_field.options[result_data.options_index].selected = false;
1206        this.selected_option_count = null;
1207        this.result_clear_highlight();
1208        if (this.results_showing) {
1209          this.winnow_results();
1210        }
1211        this.trigger_form_field_change({
1212          deselected: this.form_field.options[result_data.options_index].value
1213        });
1214        this.search_field_scale();
1215        return true;
1216      } else {
1217        return false;
1218      }
1219    };
1220
1221    Chosen.prototype.single_deselect_control_build = function() {
1222      if (!this.allow_single_deselect) {
1223        return;
1224      }
1225      if (!this.selected_item.find("abbr").length) {
1226        this.selected_item.find("span").first().after("<abbr class=\"search-choice-close\"></abbr>");
1227      }
1228      return this.selected_item.addClass("chosen-single-with-deselect");
1229    };
1230
1231    Chosen.prototype.get_search_field_value = function() {
1232      return this.search_field.val();
1233    };
1234
1235    Chosen.prototype.get_search_text = function() {
1236      return $.trim(this.get_search_field_value());
1237    };
1238
1239    Chosen.prototype.escape_html = function(text) {
1240      return $('<div/>').text(text).html();
1241    };
1242
1243    Chosen.prototype.winnow_results_set_highlight = function() {
1244      var do_high, selected_results;
1245      selected_results = !this.is_multiple ? this.search_results.find(".result-selected.active-result") : [];
1246      do_high = selected_results.length ? selected_results.first() : this.search_results.find(".active-result").first();
1247      if (do_high != null) {
1248        return this.result_do_highlight(do_high);
1249      }
1250    };
1251
1252    Chosen.prototype.no_results = function(terms) {
1253      var no_results_html;
1254      no_results_html = this.get_no_results_html(terms);
1255      this.search_results.append(no_results_html);
1256      return this.form_field_jq.trigger("chosen:no_results", {
1257        chosen: this
1258      });
1259    };
1260
1261    Chosen.prototype.no_results_clear = function() {
1262      return this.search_results.find(".no-results").remove();
1263    };
1264
1265    Chosen.prototype.keydown_arrow = function() {
1266      var next_sib;
1267      if (this.results_showing && this.result_highlight) {
1268        next_sib = this.result_highlight.nextAll("li.active-result").first();
1269        if (next_sib) {
1270          return this.result_do_highlight(next_sib);
1271        }
1272      } else {
1273        return this.results_show();
1274      }
1275    };
1276
1277    Chosen.prototype.keyup_arrow = function() {
1278      var prev_sibs;
1279      if (!this.results_showing && !this.is_multiple) {
1280        return this.results_show();
1281      } else if (this.result_highlight) {
1282        prev_sibs = this.result_highlight.prevAll("li.active-result");
1283        if (prev_sibs.length) {
1284          return this.result_do_highlight(prev_sibs.first());
1285        } else {
1286          if (this.choices_count() > 0) {
1287            this.results_hide();
1288          }
1289          return this.result_clear_highlight();
1290        }
1291      }
1292    };
1293
1294    Chosen.prototype.keydown_backstroke = function() {
1295      var next_available_destroy;
1296      if (this.pending_backstroke) {
1297        this.choice_destroy(this.pending_backstroke.find("a").first());
1298        return this.clear_backstroke();
1299      } else {
1300        next_available_destroy = this.search_container.siblings("li.search-choice").last();
1301        if (next_available_destroy.length && !next_available_destroy.hasClass("search-choice-disabled")) {
1302          this.pending_backstroke = next_available_destroy;
1303          if (this.single_backstroke_delete) {
1304            return this.keydown_backstroke();
1305          } else {
1306            return this.pending_backstroke.addClass("search-choice-focus");
1307          }
1308        }
1309      }
1310    };
1311
1312    Chosen.prototype.clear_backstroke = function() {
1313      if (this.pending_backstroke) {
1314        this.pending_backstroke.removeClass("search-choice-focus");
1315      }
1316      return this.pending_backstroke = null;
1317    };
1318
1319    Chosen.prototype.search_field_scale = function() {
1320      var div, i, len, style, style_block, styles, width;
1321      if (!this.is_multiple) {
1322        return;
1323      }
1324      style_block = {
1325        position: 'absolute',
1326        left: '-1000px',
1327        top: '-1000px',
1328        display: 'none',
1329        whiteSpace: 'pre'
1330      };
1331      styles = ['fontSize', 'fontStyle', 'fontWeight', 'fontFamily', 'lineHeight', 'textTransform', 'letterSpacing'];
1332      for (i = 0, len = styles.length; i < len; i++) {
1333        style = styles[i];
1334        style_block[style] = this.search_field.css(style);
1335      }
1336      div = $('<div />').css(style_block);
1337      div.text(this.get_search_field_value());
1338      $('body').append(div);
1339      width = div.width() + 25;
1340      div.remove();
1341      if (this.container.is(':visible')) {
1342        width = Math.min(this.container.outerWidth() - 10, width);
1343      }
1344      return this.search_field.width(width);
1345    };
1346
1347    Chosen.prototype.trigger_form_field_change = function(extra) {
1348      this.form_field_jq.trigger("input", extra);
1349      return this.form_field_jq.trigger("change", extra);
1350    };
1351
1352    return Chosen;
1353
1354  })(AbstractChosen);
1355
1356}).call(this);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.