{"version":3,"sources":["Feature/Search/code/ui/scripts/Search/lib/typeahead.bundle.js"],"names":["root","factory","define","amd","a0","exports","_typeof","module","require","jQuery","this","$","_","isMsie","test","navigator","userAgent","match","isBlankString","str","escapeRegExChars","replace","isString","obj","isNumber","isArray","isFunction","isPlainObject","isElement","nodeType","isJQuery","toStr","s","isUndefined","bind","each","collection","cb","proxy","index","value","reverseArgs","map","filter","grep","every","result","key","val","call","some","extend","identity","x","clone","getIdGenerator","counter","templatify","String","defer","fn","setTimeout","debounce","func","wait","immediate","template","later","callNow","context","args","arguments","timeout","apply","throttle","previous","Date","clearTimeout","now","remaining","JSON","stringify","noop","whitespace","getObjTokenizer","split","nonword","tokenizer","keys","slice","o","tokens","k","concat","LruCache","maxSize","get","List","head","tail","mixin","prototype","node","list","size","remove","tailItem","setKey","tokenize","hash","moveToFront","prev","add","set","next","Node","PersistentStorage","LOCAL_STORAGE","reset","window","localStorage","setItem","err","namespace","override","prefix","join","ttlKey","keyMatcher","RegExp","ls","_noop","_ttlKey","_prefix","isExpired","_safeSet","name","clear","decode","getItem","ttl","encode","removeItem","i","len","length","push","getTime","Transport","pendingRequestsCount","pendingRequests","maxPendingRequests","sharedCache","_send","transport","_get","_cache","cache","setMaxPendingRequests","num","_fingerprint","gatherMatchingKeys","param","fingerprint","jqXhr","done","resp","that","fail","cancelled","lastReq","always","onDeckRequestArgs","SearchIndex","IDS","datumTokenizer","queryTokenizer","error","bootstrap","datums","trie","data","type","datum","id","identify","normalizeTokens","token","chars","ch","shift","CHILDREN","newNode","ids","search","query","matches","ai","bi","intersection","arrayA","sort","arrayB","getIntersection","array","seen","uniques","unique","values","serialize","toLowerCase","url","prepare","thumbprint","storage","cacheKey","protocol","Prefetch","store","location","fromCache","stored","fromNetwork","settings","_settings","transform","Remote","limiter","dataType","cancelLastRequest","lenArrayA","defaults","sorter","initialize","sufficient","local","prefetch","remote","callbackToDeferred","ajax","parsePrefetch","rateLimitBy","onError","wildcard","encodeURIComponent","toRemotePrepare","method","rateLimitWait","onResponse","toLimiter","parseRemote","deferred","Deferred","resolve","reject","Bloodhound","noConflict","old","tokenizers","sync","async","serialized","promise","initPromise","_loadPrefetch","force","_initialize","nonDuplicates","r","l","prepareByReplace","all","idenityPrepare","clearRemoteCache","prepareByWildcard","ttAdapter","wrapper","isObject","withAsync","withoutAsync","loadPrefetch","addLocalToIndex","WWW","defaultClassNames","processRemote","input","hint","dataset","suggestion","selectable","empty","open","highlight","www","classes","css","position","display","top","left","borderColor","boxShadow","opacity","verticalAlign","backgroundColor","inputWithNoHint","menu","zIndex","ltr","right","rtl","backgroundImage","clearPrefetchCache","c","v","selectors","buildSelectors","resetCache","__ttAdapter","deprecationMap","EventBus","el","$el","render","cursorchange","select","_trigger","$e","Event","unshift","trigger","before","isDefaultPrevented","deprecatedType","EventEmitter","nextTickFn","setImmediate","getNextTick","onSync","on","onAsync","types","off","_callbacks","splitter","callbacks","syncFlush","asyncFlush","getFlush","nextTick","bindContext","doc","tagName","className","caseSensitive","regex","html","pattern","patterns","wordsOnly","regexStr","escapedPatterns","getRegex","traverse","hightlightTextNode","childNode","childNodes","textNode","patternNode","wrapperNode","exec","buildHtml","createElement","splitText","appendChild","cloneNode","parentNode","replaceChild","Input","$input","$hint","queryWhenFocused","hasFocus","$overflowHelper","whiteSpace","fontFamily","fontVariant","fontWeight","wordSpacing","letterSpacing","textIndent","textRendering","textTransform","insertAfter","_checkLanguageDirection","setHint","getHint","clearHint","clearHintIfInvalid","27","38","40","_onBlur","resetInputValue","_onFocus","keyName","specialKeyCodeMap","which","keyCode","_managePreventDefault","_shouldTrigger","_onInput","_setQuery","getInputValue","preventDefault","withModifier","dir","attr","silent","areEquivalent","hasDifferentWhitespace","a","b","normalizeQuery","onBlur","onKeydown","onInput","onFocus","_onKeydown","focus","blur","getLangDir","getQuery","setQuery","hasQueryChangedSinceLastFocus","setInputValue","valIsPrefixOfHint","indexOf","hasOverflow","flush","constraint","width","text","valueLength","selectionStart","range","document","selection","createRange","moveStart","nextTickSetTimeout","altKey","ctrlKey","metaKey","shiftKey","Dataset","nameGenerator","templates","notFound","limit","displayFn","getDisplayFn","displayKey","pending","header","footer","getTemplates","source","TEXT_NODE_TYPE","addClass","_overwrite","suggestions","_renderSuggestions","_renderNotFound","_append","$lastSuggestion","_appendSuggestions","$fragment","_getSuggestionsFragment","children","last","prepend","_getHeader","append","_getFooter","after","_resetLastSuggestion","fragment","createDocumentFragment","_query","update","canceled","syncCalled","rendered","cancel","areQueriesEquivalent","_empty","Menu","datasets","$node","find","oDataset","first","appendTo","_onSelectableClick","currentTarget","_onRendered","toggleClass","_allDatasetsEmpty","_onCleared","isEmpty","_getSelectables","$selectable","removeClass","cursor","isCursorAtEnd","nodeHeight","outerHeight","nodeScrollTop","scrollTop","height","parseInt","elTop","elBottom","onSelectableClick","destroy","_propagate","isOpen","hasClass","buildOverflowHelper","visibility","_removeCursor","fontSize","fontStyle","delta","$selectables","$oldCursor","newIndex","getActiveSelectable","eq","setCursor","_ensureVisible","getSelectableData","extractData","getTopSelectable","isValidUpdate","isValidName","DefaultMenu","_show","close","_hide","_renderPending","Typeahead","onFocused","onUpKeyed","onDownKeyed","onLeftKeyed","onQueryChanged","onWhitespaceChanged","eventBus","minLength","enabled","active","activate","renderNotFound","_onSelectableClicked","_onAsyncRequested","_onAsyncCanceled","_onAsyncReceived","_onDatasetRendered","_onDatasetCleared","onBlurred","onRightKeyed","onEnterKeyed","onTabKeyed","onEscKeyed","_onLangDirChanged","getSuggestionNode","_injectQuery","is","hasActive","$menu","has","isActive","getHeader","_updateHint","injectQuery","_minLengthMet","_onTabKeyed","autocomplete","_onUpKeyed","_onDownKeyed","moveCursor","_onLeftKeyed","_onQueryChanged","e","_onWhitespaceChanged","setLanguageDirection","_openIfActive","escapedQuery","enable","suggestionTemplate","disable","isEnabled","deactivate","initializeDataset","propagate","setVal","isDatasetEmpty","getVal","getSelectables","$candidate","payload","selectableRelativeToCursor","oldIndex","methods","ctx","stopImmediatePropagation","$els","typeahead","$elOrNull","_onEscKeyed","attrs","classNames","$wrapper","defaultHint","defaultMenu","MenuConstructor","d","updateDataset","removeData","backgroundAttachment","backgroundOrigin","backgroundRepeat","backgroundSize","prop","removeAttr","spellcheck","tabindex","buildHintFromInput","onDatasetRendered","onAsyncCanceled","clearDataset","parent","destroyDataset","ttEach","t","success","newVal"],"mappings":"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","file":"../../../../scripts/Search/lib/typeahead-17041e3b24.bundle.js","sourcesContent":["/*!\r\n * typeahead.js 0.11.1\r\n * https://github.com/twitter/typeahead.js\r\n * Copyright 2013-2015 Twitter, Inc. and other contributors; Licensed MIT\r\n */\r\n\r\n(function(root, factory) {\r\n if (typeof define === \"function\" && define.amd) {\r\n define(\"bloodhound\", [ \"jquery\" ], function(a0) {\r\n return root[\"Bloodhound\"] = factory(a0);\r\n });\r\n } else if (typeof exports === \"object\") {\r\n module.exports = factory(require(\"jquery\"));\r\n } else {\r\n root[\"Bloodhound\"] = factory(jQuery);\r\n }\r\n})(this, function($) {\r\n var _ = function() {\r\n \"use strict\";\r\n return {\r\n isMsie: function() {\r\n return /(msie|trident)/i.test(navigator.userAgent) ? navigator.userAgent.match(/(msie |rv:)(\\d+(.\\d+)?)/i)[2] : false;\r\n },\r\n isBlankString: function(str) {\r\n return !str || /^\\s*$/.test(str);\r\n },\r\n escapeRegExChars: function(str) {\r\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, \"\\\\$&\");\r\n },\r\n isString: function(obj) {\r\n return typeof obj === \"string\";\r\n },\r\n isNumber: function(obj) {\r\n return typeof obj === \"number\";\r\n },\r\n isArray: $.isArray,\r\n isFunction: $.isFunction,\r\n isObject: $.isPlainObject,\r\n isUndefined: function(obj) {\r\n return typeof obj === \"undefined\";\r\n },\r\n isElement: function(obj) {\r\n return !!(obj && obj.nodeType === 1);\r\n },\r\n isJQuery: function(obj) {\r\n return obj instanceof $;\r\n },\r\n toStr: function toStr(s) {\r\n return _.isUndefined(s) || s === null ? \"\" : s + \"\";\r\n },\r\n bind: $.proxy,\r\n each: function(collection, cb) {\r\n $.each(collection, reverseArgs);\r\n function reverseArgs(index, value) {\r\n return cb(value, index);\r\n }\r\n },\r\n map: $.map,\r\n filter: $.grep,\r\n every: function(obj, test) {\r\n var result = true;\r\n if (!obj) {\r\n return result;\r\n }\r\n $.each(obj, function(key, val) {\r\n if (!(result = test.call(null, val, key, obj))) {\r\n return false;\r\n }\r\n });\r\n return !!result;\r\n },\r\n some: function(obj, test) {\r\n var result = false;\r\n if (!obj) {\r\n return result;\r\n }\r\n $.each(obj, function(key, val) {\r\n if (result = test.call(null, val, key, obj)) {\r\n return false;\r\n }\r\n });\r\n return !!result;\r\n },\r\n mixin: $.extend,\r\n identity: function(x) {\r\n return x;\r\n },\r\n clone: function(obj) {\r\n return $.extend(true, {}, obj);\r\n },\r\n getIdGenerator: function() {\r\n var counter = 0;\r\n return function() {\r\n return counter++;\r\n };\r\n },\r\n templatify: function templatify(obj) {\r\n return $.isFunction(obj) ? obj : template;\r\n function template() {\r\n return String(obj);\r\n }\r\n },\r\n defer: function(fn) {\r\n setTimeout(fn, 0);\r\n },\r\n debounce: function(func, wait, immediate) {\r\n var timeout, result;\r\n return function() {\r\n var context = this, args = arguments, later, callNow;\r\n later = function() {\r\n timeout = null;\r\n if (!immediate) {\r\n result = func.apply(context, args);\r\n }\r\n };\r\n callNow = immediate && !timeout;\r\n clearTimeout(timeout);\r\n timeout = setTimeout(later, wait);\r\n if (callNow) {\r\n result = func.apply(context, args);\r\n }\r\n return result;\r\n };\r\n },\r\n throttle: function(func, wait) {\r\n var context, args, timeout, result, previous, later;\r\n previous = 0;\r\n later = function() {\r\n previous = new Date();\r\n timeout = null;\r\n result = func.apply(context, args);\r\n };\r\n return function() {\r\n var now = new Date(), remaining = wait - (now - previous);\r\n context = this;\r\n args = arguments;\r\n if (remaining <= 0) {\r\n clearTimeout(timeout);\r\n timeout = null;\r\n previous = now;\r\n result = func.apply(context, args);\r\n } else if (!timeout) {\r\n timeout = setTimeout(later, remaining);\r\n }\r\n return result;\r\n };\r\n },\r\n stringify: function(val) {\r\n return _.isString(val) ? val : JSON.stringify(val);\r\n },\r\n noop: function() {}\r\n };\r\n }();\r\n var VERSION = \"0.11.1\";\r\n var tokenizers = function() {\r\n \"use strict\";\r\n return {\r\n nonword: nonword,\r\n whitespace: whitespace,\r\n obj: {\r\n nonword: getObjTokenizer(nonword),\r\n whitespace: getObjTokenizer(whitespace)\r\n }\r\n };\r\n function whitespace(str) {\r\n str = _.toStr(str);\r\n return str ? str.split(/\\s+/) : [];\r\n }\r\n function nonword(str) {\r\n str = _.toStr(str);\r\n return str ? str.split(/\\W+/) : [];\r\n }\r\n function getObjTokenizer(tokenizer) {\r\n return function setKey(keys) {\r\n keys = _.isArray(keys) ? keys : [].slice.call(arguments, 0);\r\n return function tokenize(o) {\r\n var tokens = [];\r\n _.each(keys, function(k) {\r\n tokens = tokens.concat(tokenizer(_.toStr(o[k])));\r\n });\r\n return tokens;\r\n };\r\n };\r\n }\r\n }();\r\n var LruCache = function() {\r\n \"use strict\";\r\n function LruCache(maxSize) {\r\n this.maxSize = _.isNumber(maxSize) ? maxSize : 100;\r\n this.reset();\r\n if (this.maxSize <= 0) {\r\n this.set = this.get = $.noop;\r\n }\r\n }\r\n _.mixin(LruCache.prototype, {\r\n set: function set(key, val) {\r\n var tailItem = this.list.tail, node;\r\n if (this.size >= this.maxSize) {\r\n this.list.remove(tailItem);\r\n delete this.hash[tailItem.key];\r\n this.size--;\r\n }\r\n if (node = this.hash[key]) {\r\n node.val = val;\r\n this.list.moveToFront(node);\r\n } else {\r\n node = new Node(key, val);\r\n this.list.add(node);\r\n this.hash[key] = node;\r\n this.size++;\r\n }\r\n },\r\n get: function get(key) {\r\n var node = this.hash[key];\r\n if (node) {\r\n this.list.moveToFront(node);\r\n return node.val;\r\n }\r\n },\r\n reset: function reset() {\r\n this.size = 0;\r\n this.hash = {};\r\n this.list = new List();\r\n }\r\n });\r\n function List() {\r\n this.head = this.tail = null;\r\n }\r\n _.mixin(List.prototype, {\r\n add: function add(node) {\r\n if (this.head) {\r\n node.next = this.head;\r\n this.head.prev = node;\r\n }\r\n this.head = node;\r\n this.tail = this.tail || node;\r\n },\r\n remove: function remove(node) {\r\n node.prev ? node.prev.next = node.next : this.head = node.next;\r\n node.next ? node.next.prev = node.prev : this.tail = node.prev;\r\n },\r\n moveToFront: function(node) {\r\n this.remove(node);\r\n this.add(node);\r\n }\r\n });\r\n function Node(key, val) {\r\n this.key = key;\r\n this.val = val;\r\n this.prev = this.next = null;\r\n }\r\n return LruCache;\r\n }();\r\n var PersistentStorage = function() {\r\n \"use strict\";\r\n var LOCAL_STORAGE;\r\n try {\r\n LOCAL_STORAGE = window.localStorage;\r\n LOCAL_STORAGE.setItem(\"~~~\", \"!\");\r\n LOCAL_STORAGE.removeItem(\"~~~\");\r\n } catch (err) {\r\n LOCAL_STORAGE = null;\r\n }\r\n function PersistentStorage(namespace, override) {\r\n this.prefix = [ \"__\", namespace, \"__\" ].join(\"\");\r\n this.ttlKey = \"__ttl__\";\r\n this.keyMatcher = new RegExp(\"^\" + _.escapeRegExChars(this.prefix));\r\n this.ls = override || LOCAL_STORAGE;\r\n !this.ls && this._noop();\r\n }\r\n _.mixin(PersistentStorage.prototype, {\r\n _prefix: function(key) {\r\n return this.prefix + key;\r\n },\r\n _ttlKey: function(key) {\r\n return this._prefix(key) + this.ttlKey;\r\n },\r\n _noop: function() {\r\n this.get = this.set = this.remove = this.clear = this.isExpired = _.noop;\r\n },\r\n _safeSet: function(key, val) {\r\n try {\r\n this.ls.setItem(key, val);\r\n } catch (err) {\r\n if (err.name === \"QuotaExceededError\") {\r\n this.clear();\r\n this._noop();\r\n }\r\n }\r\n },\r\n get: function(key) {\r\n if (this.isExpired(key)) {\r\n this.remove(key);\r\n }\r\n return decode(this.ls.getItem(this._prefix(key)));\r\n },\r\n set: function(key, val, ttl) {\r\n if (_.isNumber(ttl)) {\r\n this._safeSet(this._ttlKey(key), encode(now() + ttl));\r\n } else {\r\n this.ls.removeItem(this._ttlKey(key));\r\n }\r\n return this._safeSet(this._prefix(key), encode(val));\r\n },\r\n remove: function(key) {\r\n this.ls.removeItem(this._ttlKey(key));\r\n this.ls.removeItem(this._prefix(key));\r\n return this;\r\n },\r\n clear: function() {\r\n var i, keys = gatherMatchingKeys(this.keyMatcher);\r\n for (i = keys.length; i--; ) {\r\n this.remove(keys[i]);\r\n }\r\n return this;\r\n },\r\n isExpired: function(key) {\r\n var ttl = decode(this.ls.getItem(this._ttlKey(key)));\r\n return _.isNumber(ttl) && now() > ttl ? true : false;\r\n }\r\n });\r\n return PersistentStorage;\r\n function now() {\r\n return new Date().getTime();\r\n }\r\n function encode(val) {\r\n return JSON.stringify(_.isUndefined(val) ? null : val);\r\n }\r\n function decode(val) {\r\n return $.parseJSON(val);\r\n }\r\n function gatherMatchingKeys(keyMatcher) {\r\n var i, key, keys = [], len = LOCAL_STORAGE.length;\r\n for (i = 0; i < len; i++) {\r\n if ((key = LOCAL_STORAGE.key(i)).match(keyMatcher)) {\r\n keys.push(key.replace(keyMatcher, \"\"));\r\n }\r\n }\r\n return keys;\r\n }\r\n }();\r\n var Transport = function() {\r\n \"use strict\";\r\n var pendingRequestsCount = 0, pendingRequests = {}, maxPendingRequests = 6, sharedCache = new LruCache(10);\r\n function Transport(o) {\r\n o = o || {};\r\n this.cancelled = false;\r\n this.lastReq = null;\r\n this._send = o.transport;\r\n this._get = o.limiter ? o.limiter(this._get) : this._get;\r\n this._cache = o.cache === false ? new LruCache(0) : sharedCache;\r\n }\r\n Transport.setMaxPendingRequests = function setMaxPendingRequests(num) {\r\n maxPendingRequests = num;\r\n };\r\n Transport.resetCache = function resetCache() {\r\n sharedCache.reset();\r\n };\r\n _.mixin(Transport.prototype, {\r\n _fingerprint: function fingerprint(o) {\r\n o = o || {};\r\n return o.url + o.type + $.param(o.data || {});\r\n },\r\n _get: function(o, cb) {\r\n var that = this, fingerprint, jqXhr;\r\n fingerprint = this._fingerprint(o);\r\n if (this.cancelled || fingerprint !== this.lastReq) {\r\n return;\r\n }\r\n if (jqXhr = pendingRequests[fingerprint]) {\r\n jqXhr.done(done).fail(fail);\r\n } else if (pendingRequestsCount < maxPendingRequests) {\r\n pendingRequestsCount++;\r\n pendingRequests[fingerprint] = this._send(o).done(done).fail(fail).always(always);\r\n } else {\r\n this.onDeckRequestArgs = [].slice.call(arguments, 0);\r\n }\r\n function done(resp) {\r\n cb(null, resp);\r\n that._cache.set(fingerprint, resp);\r\n }\r\n function fail() {\r\n cb(true);\r\n }\r\n function always() {\r\n pendingRequestsCount--;\r\n delete pendingRequests[fingerprint];\r\n if (that.onDeckRequestArgs) {\r\n that._get.apply(that, that.onDeckRequestArgs);\r\n that.onDeckRequestArgs = null;\r\n }\r\n }\r\n },\r\n get: function(o, cb) {\r\n var resp, fingerprint;\r\n cb = cb || $.noop;\r\n o = _.isString(o) ? {\r\n url: o\r\n } : o || {};\r\n fingerprint = this._fingerprint(o);\r\n this.cancelled = false;\r\n this.lastReq = fingerprint;\r\n if (resp = this._cache.get(fingerprint)) {\r\n cb(null, resp);\r\n } else {\r\n this._get(o, cb);\r\n }\r\n },\r\n cancel: function() {\r\n this.cancelled = true;\r\n }\r\n });\r\n return Transport;\r\n }();\r\n var SearchIndex = window.SearchIndex = function() {\r\n \"use strict\";\r\n var CHILDREN = \"c\", IDS = \"i\";\r\n function SearchIndex(o) {\r\n o = o || {};\r\n if (!o.datumTokenizer || !o.queryTokenizer) {\r\n $.error(\"datumTokenizer and queryTokenizer are both required\");\r\n }\r\n this.identify = o.identify || _.stringify;\r\n this.datumTokenizer = o.datumTokenizer;\r\n this.queryTokenizer = o.queryTokenizer;\r\n this.reset();\r\n }\r\n _.mixin(SearchIndex.prototype, {\r\n bootstrap: function bootstrap(o) {\r\n this.datums = o.datums;\r\n this.trie = o.trie;\r\n },\r\n add: function(data) {\r\n var that = this;\r\n data = _.isArray(data) ? data : [ data ];\r\n _.each(data, function(datum) {\r\n var id, tokens;\r\n that.datums[id = that.identify(datum)] = datum;\r\n tokens = normalizeTokens(that.datumTokenizer(datum));\r\n _.each(tokens, function(token) {\r\n var node, chars, ch;\r\n node = that.trie;\r\n chars = token.split(\"\");\r\n while (ch = chars.shift()) {\r\n node = node[CHILDREN][ch] || (node[CHILDREN][ch] = newNode());\r\n node[IDS].push(id);\r\n }\r\n });\r\n });\r\n },\r\n get: function get(ids) {\r\n var that = this;\r\n return _.map(ids, function(id) {\r\n return that.datums[id];\r\n });\r\n },\r\n search: function search(query) {\r\n var that = this, tokens, matches;\r\n tokens = normalizeTokens(this.queryTokenizer(query));\r\n _.each(tokens, function(token) {\r\n var node, chars, ch, ids;\r\n if (matches && matches.length === 0) {\r\n return false;\r\n }\r\n node = that.trie;\r\n chars = token.split(\"\");\r\n while (node && (ch = chars.shift())) {\r\n node = node[CHILDREN][ch];\r\n }\r\n if (node && chars.length === 0) {\r\n ids = node[IDS].slice(0);\r\n matches = matches ? getIntersection(matches, ids) : ids;\r\n } else {\r\n matches = [];\r\n return false;\r\n }\r\n });\r\n return matches ? _.map(unique(matches), function(id) {\r\n return that.datums[id];\r\n }) : [];\r\n },\r\n all: function all() {\r\n var values = [];\r\n for (var key in this.datums) {\r\n values.push(this.datums[key]);\r\n }\r\n return values;\r\n },\r\n reset: function reset() {\r\n this.datums = {};\r\n this.trie = newNode();\r\n },\r\n serialize: function serialize() {\r\n return {\r\n datums: this.datums,\r\n trie: this.trie\r\n };\r\n }\r\n });\r\n return SearchIndex;\r\n function normalizeTokens(tokens) {\r\n tokens = _.filter(tokens, function(token) {\r\n return !!token;\r\n });\r\n tokens = _.map(tokens, function(token) {\r\n return token.toLowerCase();\r\n });\r\n return tokens;\r\n }\r\n function newNode() {\r\n var node = {};\r\n node[IDS] = [];\r\n node[CHILDREN] = {};\r\n return node;\r\n }\r\n function unique(array) {\r\n var seen = {}, uniques = [];\r\n for (var i = 0, len = array.length; i < len; i++) {\r\n if (!seen[array[i]]) {\r\n seen[array[i]] = true;\r\n uniques.push(array[i]);\r\n }\r\n }\r\n return uniques;\r\n }\r\n function getIntersection(arrayA, arrayB) {\r\n var ai = 0, bi = 0, intersection = [];\r\n arrayA = arrayA.sort();\r\n arrayB = arrayB.sort();\r\n var lenArrayA = arrayA.length, lenArrayB = arrayB.length;\r\n while (ai < lenArrayA && bi < lenArrayB) {\r\n if (arrayA[ai] < arrayB[bi]) {\r\n ai++;\r\n } else if (arrayA[ai] > arrayB[bi]) {\r\n bi++;\r\n } else {\r\n intersection.push(arrayA[ai]);\r\n ai++;\r\n bi++;\r\n }\r\n }\r\n return intersection;\r\n }\r\n }();\r\n var Prefetch = function() {\r\n \"use strict\";\r\n var keys;\r\n keys = {\r\n data: \"data\",\r\n protocol: \"protocol\",\r\n thumbprint: \"thumbprint\"\r\n };\r\n function Prefetch(o) {\r\n this.url = o.url;\r\n this.ttl = o.ttl;\r\n this.cache = o.cache;\r\n this.prepare = o.prepare;\r\n this.transform = o.transform;\r\n this.transport = o.transport;\r\n this.thumbprint = o.thumbprint;\r\n this.storage = new PersistentStorage(o.cacheKey);\r\n }\r\n _.mixin(Prefetch.prototype, {\r\n _settings: function settings() {\r\n return {\r\n url: this.url,\r\n type: \"GET\",\r\n dataType: \"json\"\r\n };\r\n },\r\n store: function store(data) {\r\n if (!this.cache) {\r\n return;\r\n }\r\n this.storage.set(keys.data, data, this.ttl);\r\n this.storage.set(keys.protocol, location.protocol, this.ttl);\r\n this.storage.set(keys.thumbprint, this.thumbprint, this.ttl);\r\n },\r\n fromCache: function fromCache() {\r\n var stored = {}, isExpired;\r\n if (!this.cache) {\r\n return null;\r\n }\r\n stored.data = this.storage.get(keys.data);\r\n stored.protocol = this.storage.get(keys.protocol);\r\n stored.thumbprint = this.storage.get(keys.thumbprint);\r\n isExpired = stored.thumbprint !== this.thumbprint || stored.protocol !== location.protocol;\r\n return stored.data && !isExpired ? stored.data : null;\r\n },\r\n fromNetwork: function(cb) {\r\n var that = this, settings;\r\n if (!cb) {\r\n return;\r\n }\r\n settings = this.prepare(this._settings());\r\n this.transport(settings).fail(onError).done(onResponse);\r\n function onError() {\r\n cb(true);\r\n }\r\n function onResponse(resp) {\r\n cb(null, that.transform(resp));\r\n }\r\n },\r\n clear: function clear() {\r\n this.storage.clear();\r\n return this;\r\n }\r\n });\r\n return Prefetch;\r\n }();\r\n var Remote = function() {\r\n \"use strict\";\r\n function Remote(o) {\r\n this.url = o.url;\r\n this.prepare = o.prepare;\r\n this.transform = o.transform;\r\n this.transport = new Transport({\r\n cache: o.cache,\r\n limiter: o.limiter,\r\n transport: o.transport\r\n });\r\n }\r\n _.mixin(Remote.prototype, {\r\n _settings: function settings() {\r\n return {\r\n url: this.url,\r\n type: \"GET\",\r\n dataType: \"json\"\r\n };\r\n },\r\n get: function get(query, cb) {\r\n var that = this, settings;\r\n if (!cb) {\r\n return;\r\n }\r\n query = query || \"\";\r\n settings = this.prepare(query, this._settings());\r\n return this.transport.get(settings, onResponse);\r\n function onResponse(err, resp) {\r\n err ? cb([]) : cb(that.transform(resp));\r\n }\r\n },\r\n cancelLastRequest: function cancelLastRequest() {\r\n this.transport.cancel();\r\n }\r\n });\r\n return Remote;\r\n }();\r\n var oParser = function() {\r\n \"use strict\";\r\n return function parse(o) {\r\n var defaults, sorter;\r\n defaults = {\r\n initialize: true,\r\n identify: _.stringify,\r\n datumTokenizer: null,\r\n queryTokenizer: null,\r\n sufficient: 5,\r\n sorter: null,\r\n local: [],\r\n prefetch: null,\r\n remote: null\r\n };\r\n o = _.mixin(defaults, o || {});\r\n !o.datumTokenizer && $.error(\"datumTokenizer is required\");\r\n !o.queryTokenizer && $.error(\"queryTokenizer is required\");\r\n sorter = o.sorter;\r\n o.sorter = sorter ? function(x) {\r\n return x.sort(sorter);\r\n } : _.identity;\r\n o.local = _.isFunction(o.local) ? o.local() : o.local;\r\n o.prefetch = parsePrefetch(o.prefetch);\r\n o.remote = parseRemote(o.remote);\r\n return o;\r\n };\r\n function parsePrefetch(o) {\r\n var defaults;\r\n if (!o) {\r\n return null;\r\n }\r\n defaults = {\r\n url: null,\r\n ttl: 24 * 60 * 60 * 1e3,\r\n cache: true,\r\n cacheKey: null,\r\n thumbprint: \"\",\r\n prepare: _.identity,\r\n transform: _.identity,\r\n transport: null\r\n };\r\n o = _.isString(o) ? {\r\n url: o\r\n } : o;\r\n o = _.mixin(defaults, o);\r\n !o.url && $.error(\"prefetch requires url to be set\");\r\n o.transform = o.filter || o.transform;\r\n o.cacheKey = o.cacheKey || o.url;\r\n o.thumbprint = VERSION + o.thumbprint;\r\n o.transport = o.transport ? callbackToDeferred(o.transport) : $.ajax;\r\n return o;\r\n }\r\n function parseRemote(o) {\r\n var defaults;\r\n if (!o) {\r\n return;\r\n }\r\n defaults = {\r\n url: null,\r\n cache: true,\r\n prepare: null,\r\n replace: null,\r\n wildcard: null,\r\n limiter: null,\r\n rateLimitBy: \"debounce\",\r\n rateLimitWait: 300,\r\n transform: _.identity,\r\n transport: null\r\n };\r\n o = _.isString(o) ? {\r\n url: o\r\n } : o;\r\n o = _.mixin(defaults, o);\r\n !o.url && $.error(\"remote requires url to be set\");\r\n o.transform = o.filter || o.transform;\r\n o.prepare = toRemotePrepare(o);\r\n o.limiter = toLimiter(o);\r\n o.transport = o.transport ? callbackToDeferred(o.transport) : $.ajax;\r\n delete o.replace;\r\n delete o.wildcard;\r\n delete o.rateLimitBy;\r\n delete o.rateLimitWait;\r\n return o;\r\n }\r\n function toRemotePrepare(o) {\r\n var prepare, replace, wildcard;\r\n prepare = o.prepare;\r\n replace = o.replace;\r\n wildcard = o.wildcard;\r\n if (prepare) {\r\n return prepare;\r\n }\r\n if (replace) {\r\n prepare = prepareByReplace;\r\n } else if (o.wildcard) {\r\n prepare = prepareByWildcard;\r\n } else {\r\n prepare = idenityPrepare;\r\n }\r\n return prepare;\r\n function prepareByReplace(query, settings) {\r\n settings.url = replace(settings.url, query);\r\n return settings;\r\n }\r\n function prepareByWildcard(query, settings) {\r\n settings.url = settings.url.replace(wildcard, encodeURIComponent(query));\r\n return settings;\r\n }\r\n function idenityPrepare(query, settings) {\r\n return settings;\r\n }\r\n }\r\n function toLimiter(o) {\r\n var limiter, method, wait;\r\n limiter = o.limiter;\r\n method = o.rateLimitBy;\r\n wait = o.rateLimitWait;\r\n if (!limiter) {\r\n limiter = /^throttle$/i.test(method) ? throttle(wait) : debounce(wait);\r\n }\r\n return limiter;\r\n function debounce(wait) {\r\n return function debounce(fn) {\r\n return _.debounce(fn, wait);\r\n };\r\n }\r\n function throttle(wait) {\r\n return function throttle(fn) {\r\n return _.throttle(fn, wait);\r\n };\r\n }\r\n }\r\n function callbackToDeferred(fn) {\r\n return function wrapper(o) {\r\n var deferred = $.Deferred();\r\n fn(o, onSuccess, onError);\r\n return deferred;\r\n function onSuccess(resp) {\r\n _.defer(function() {\r\n deferred.resolve(resp);\r\n });\r\n }\r\n function onError(err) {\r\n _.defer(function() {\r\n deferred.reject(err);\r\n });\r\n }\r\n };\r\n }\r\n }();\r\n var Bloodhound = function() {\r\n \"use strict\";\r\n var old;\r\n old = window && window.Bloodhound;\r\n function Bloodhound(o) {\r\n o = oParser(o);\r\n this.sorter = o.sorter;\r\n this.identify = o.identify;\r\n this.sufficient = o.sufficient;\r\n this.local = o.local;\r\n this.remote = o.remote ? new Remote(o.remote) : null;\r\n this.prefetch = o.prefetch ? new Prefetch(o.prefetch) : null;\r\n this.index = new SearchIndex({\r\n identify: this.identify,\r\n datumTokenizer: o.datumTokenizer,\r\n queryTokenizer: o.queryTokenizer\r\n });\r\n o.initialize !== false && this.initialize();\r\n }\r\n Bloodhound.noConflict = function noConflict() {\r\n window && (window.Bloodhound = old);\r\n return Bloodhound;\r\n };\r\n Bloodhound.tokenizers = tokenizers;\r\n _.mixin(Bloodhound.prototype, {\r\n __ttAdapter: function ttAdapter() {\r\n var that = this;\r\n return this.remote ? withAsync : withoutAsync;\r\n function withAsync(query, sync, async) {\r\n return that.search(query, sync, async);\r\n }\r\n function withoutAsync(query, sync) {\r\n return that.search(query, sync);\r\n }\r\n },\r\n _loadPrefetch: function loadPrefetch() {\r\n var that = this, deferred, serialized;\r\n deferred = $.Deferred();\r\n if (!this.prefetch) {\r\n deferred.resolve();\r\n } else if (serialized = this.prefetch.fromCache()) {\r\n this.index.bootstrap(serialized);\r\n deferred.resolve();\r\n } else {\r\n this.prefetch.fromNetwork(done);\r\n }\r\n return deferred.promise();\r\n function done(err, data) {\r\n if (err) {\r\n return deferred.reject();\r\n }\r\n that.add(data);\r\n that.prefetch.store(that.index.serialize());\r\n deferred.resolve();\r\n }\r\n },\r\n _initialize: function initialize() {\r\n var that = this, deferred;\r\n this.clear();\r\n (this.initPromise = this._loadPrefetch()).done(addLocalToIndex);\r\n return this.initPromise;\r\n function addLocalToIndex() {\r\n that.add(that.local);\r\n }\r\n },\r\n initialize: function initialize(force) {\r\n return !this.initPromise || force ? this._initialize() : this.initPromise;\r\n },\r\n add: function add(data) {\r\n this.index.add(data);\r\n return this;\r\n },\r\n get: function get(ids) {\r\n ids = _.isArray(ids) ? ids : [].slice.call(arguments);\r\n return this.index.get(ids);\r\n },\r\n search: function search(query, sync, async) {\r\n var that = this, local;\r\n local = this.sorter(this.index.search(query));\r\n sync(this.remote ? local.slice() : local);\r\n if (this.remote && local.length < this.sufficient) {\r\n this.remote.get(query, processRemote);\r\n } else if (this.remote) {\r\n this.remote.cancelLastRequest();\r\n }\r\n return this;\r\n function processRemote(remote) {\r\n var nonDuplicates = [];\r\n _.each(remote, function(r) {\r\n !_.some(local, function(l) {\r\n return that.identify(r) === that.identify(l);\r\n }) && nonDuplicates.push(r);\r\n });\r\n async && async(nonDuplicates);\r\n }\r\n },\r\n all: function all() {\r\n return this.index.all();\r\n },\r\n clear: function clear() {\r\n this.index.reset();\r\n return this;\r\n },\r\n clearPrefetchCache: function clearPrefetchCache() {\r\n this.prefetch && this.prefetch.clear();\r\n return this;\r\n },\r\n clearRemoteCache: function clearRemoteCache() {\r\n Transport.resetCache();\r\n return this;\r\n },\r\n ttAdapter: function ttAdapter() {\r\n return this.__ttAdapter();\r\n }\r\n });\r\n return Bloodhound;\r\n }();\r\n return Bloodhound;\r\n});\r\n\r\n(function(root, factory) {\r\n if (typeof define === \"function\" && define.amd) {\r\n define(\"typeahead.js\", [ \"jquery\" ], function(a0) {\r\n return factory(a0);\r\n });\r\n } else if (typeof exports === \"object\") {\r\n module.exports = factory(require(\"jquery\"));\r\n } else {\r\n factory(jQuery);\r\n }\r\n})(this, function($) {\r\n var _ = function() {\r\n \"use strict\";\r\n return {\r\n isMsie: function() {\r\n return /(msie|trident)/i.test(navigator.userAgent) ? navigator.userAgent.match(/(msie |rv:)(\\d+(.\\d+)?)/i)[2] : false;\r\n },\r\n isBlankString: function(str) {\r\n return !str || /^\\s*$/.test(str);\r\n },\r\n escapeRegExChars: function(str) {\r\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, \"\\\\$&\");\r\n },\r\n isString: function(obj) {\r\n return typeof obj === \"string\";\r\n },\r\n isNumber: function(obj) {\r\n return typeof obj === \"number\";\r\n },\r\n isArray: $.isArray,\r\n isFunction: $.isFunction,\r\n isObject: $.isPlainObject,\r\n isUndefined: function(obj) {\r\n return typeof obj === \"undefined\";\r\n },\r\n isElement: function(obj) {\r\n return !!(obj && obj.nodeType === 1);\r\n },\r\n isJQuery: function(obj) {\r\n return obj instanceof $;\r\n },\r\n toStr: function toStr(s) {\r\n return _.isUndefined(s) || s === null ? \"\" : s + \"\";\r\n },\r\n bind: $.proxy,\r\n each: function(collection, cb) {\r\n $.each(collection, reverseArgs);\r\n function reverseArgs(index, value) {\r\n return cb(value, index);\r\n }\r\n },\r\n map: $.map,\r\n filter: $.grep,\r\n every: function(obj, test) {\r\n var result = true;\r\n if (!obj) {\r\n return result;\r\n }\r\n $.each(obj, function(key, val) {\r\n if (!(result = test.call(null, val, key, obj))) {\r\n return false;\r\n }\r\n });\r\n return !!result;\r\n },\r\n some: function(obj, test) {\r\n var result = false;\r\n if (!obj) {\r\n return result;\r\n }\r\n $.each(obj, function(key, val) {\r\n if (result = test.call(null, val, key, obj)) {\r\n return false;\r\n }\r\n });\r\n return !!result;\r\n },\r\n mixin: $.extend,\r\n identity: function(x) {\r\n return x;\r\n },\r\n clone: function(obj) {\r\n return $.extend(true, {}, obj);\r\n },\r\n getIdGenerator: function() {\r\n var counter = 0;\r\n return function() {\r\n return counter++;\r\n };\r\n },\r\n templatify: function templatify(obj) {\r\n return $.isFunction(obj) ? obj : template;\r\n function template() {\r\n return String(obj);\r\n }\r\n },\r\n defer: function(fn) {\r\n setTimeout(fn, 0);\r\n },\r\n debounce: function(func, wait, immediate) {\r\n var timeout, result;\r\n return function() {\r\n var context = this, args = arguments, later, callNow;\r\n later = function() {\r\n timeout = null;\r\n if (!immediate) {\r\n result = func.apply(context, args);\r\n }\r\n };\r\n callNow = immediate && !timeout;\r\n clearTimeout(timeout);\r\n timeout = setTimeout(later, wait);\r\n if (callNow) {\r\n result = func.apply(context, args);\r\n }\r\n return result;\r\n };\r\n },\r\n throttle: function(func, wait) {\r\n var context, args, timeout, result, previous, later;\r\n previous = 0;\r\n later = function() {\r\n previous = new Date();\r\n timeout = null;\r\n result = func.apply(context, args);\r\n };\r\n return function() {\r\n var now = new Date(), remaining = wait - (now - previous);\r\n context = this;\r\n args = arguments;\r\n if (remaining <= 0) {\r\n clearTimeout(timeout);\r\n timeout = null;\r\n previous = now;\r\n result = func.apply(context, args);\r\n } else if (!timeout) {\r\n timeout = setTimeout(later, remaining);\r\n }\r\n return result;\r\n };\r\n },\r\n stringify: function(val) {\r\n return _.isString(val) ? val : JSON.stringify(val);\r\n },\r\n noop: function() {}\r\n };\r\n }();\r\n var WWW = function() {\r\n \"use strict\";\r\n var defaultClassNames = {\r\n wrapper: \"twitter-typeahead\",\r\n input: \"tt-input\",\r\n hint: \"tt-hint\",\r\n menu: \"tt-menu\",\r\n dataset: \"tt-dataset\",\r\n suggestion: \"tt-suggestion\",\r\n selectable: \"tt-selectable\",\r\n empty: \"tt-empty\",\r\n open: \"tt-open\",\r\n cursor: \"tt-cursor\",\r\n highlight: \"tt-highlight\"\r\n };\r\n return build;\r\n function build(o) {\r\n var www, classes;\r\n classes = _.mixin({}, defaultClassNames, o);\r\n www = {\r\n css: buildCss(),\r\n classes: classes,\r\n html: buildHtml(classes),\r\n selectors: buildSelectors(classes)\r\n };\r\n return {\r\n css: www.css,\r\n html: www.html,\r\n classes: www.classes,\r\n selectors: www.selectors,\r\n mixin: function(o) {\r\n _.mixin(o, www);\r\n }\r\n };\r\n }\r\n function buildHtml(c) {\r\n return {\r\n wrapper: '',\r\n menu: '
'\r\n };\r\n }\r\n function buildSelectors(classes) {\r\n var selectors = {};\r\n _.each(classes, function(v, k) {\r\n selectors[k] = \".\" + v;\r\n });\r\n return selectors;\r\n }\r\n function buildCss() {\r\n var css = {\r\n wrapper: {\r\n position: \"relative\",\r\n display: \"inline-block\"\r\n },\r\n hint: {\r\n position: \"absolute\",\r\n top: \"0\",\r\n left: \"0\",\r\n borderColor: \"transparent\",\r\n boxShadow: \"none\",\r\n opacity: \"1\"\r\n },\r\n input: {\r\n position: \"relative\",\r\n verticalAlign: \"top\",\r\n backgroundColor: \"transparent\"\r\n },\r\n inputWithNoHint: {\r\n position: \"relative\",\r\n verticalAlign: \"top\"\r\n },\r\n menu: {\r\n position: \"absolute\",\r\n top: \"100%\",\r\n left: \"0\",\r\n zIndex: \"100\",\r\n display: \"none\"\r\n },\r\n ltr: {\r\n left: \"0\",\r\n right: \"auto\"\r\n },\r\n rtl: {\r\n left: \"auto\",\r\n right: \" 0\"\r\n }\r\n };\r\n if (_.isMsie()) {\r\n _.mixin(css.input, {\r\n backgroundImage: \"url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)\"\r\n });\r\n }\r\n return css;\r\n }\r\n }();\r\n var EventBus = function() {\r\n \"use strict\";\r\n var namespace, deprecationMap;\r\n namespace = \"typeahead:\";\r\n deprecationMap = {\r\n render: \"rendered\",\r\n cursorchange: \"cursorchanged\",\r\n select: \"selected\",\r\n autocomplete: \"autocompleted\"\r\n };\r\n function EventBus(o) {\r\n if (!o || !o.el) {\r\n $.error(\"EventBus initialized without el\");\r\n }\r\n this.$el = $(o.el);\r\n }\r\n _.mixin(EventBus.prototype, {\r\n _trigger: function(type, args) {\r\n var $e;\r\n $e = $.Event(namespace + type);\r\n (args = args || []).unshift($e);\r\n this.$el.trigger.apply(this.$el, args);\r\n return $e;\r\n },\r\n before: function(type) {\r\n var args, $e;\r\n args = [].slice.call(arguments, 1);\r\n $e = this._trigger(\"before\" + type, args);\r\n return $e.isDefaultPrevented();\r\n },\r\n trigger: function(type) {\r\n var deprecatedType;\r\n this._trigger(type, [].slice.call(arguments, 1));\r\n if (deprecatedType = deprecationMap[type]) {\r\n this._trigger(deprecatedType, [].slice.call(arguments, 1));\r\n }\r\n }\r\n });\r\n return EventBus;\r\n }();\r\n var EventEmitter = function() {\r\n \"use strict\";\r\n var splitter = /\\s+/, nextTick = getNextTick();\r\n return {\r\n onSync: onSync,\r\n onAsync: onAsync,\r\n off: off,\r\n trigger: trigger\r\n };\r\n function on(method, types, cb, context) {\r\n var type;\r\n if (!cb) {\r\n return this;\r\n }\r\n types = types.split(splitter);\r\n cb = context ? bindContext(cb, context) : cb;\r\n this._callbacks = this._callbacks || {};\r\n while (type = types.shift()) {\r\n this._callbacks[type] = this._callbacks[type] || {\r\n sync: [],\r\n async: []\r\n };\r\n this._callbacks[type][method].push(cb);\r\n }\r\n return this;\r\n }\r\n function onAsync(types, cb, context) {\r\n return on.call(this, \"async\", types, cb, context);\r\n }\r\n function onSync(types, cb, context) {\r\n return on.call(this, \"sync\", types, cb, context);\r\n }\r\n function off(types) {\r\n var type;\r\n if (!this._callbacks) {\r\n return this;\r\n }\r\n types = types.split(splitter);\r\n while (type = types.shift()) {\r\n delete this._callbacks[type];\r\n }\r\n return this;\r\n }\r\n function trigger(types) {\r\n var type, callbacks, args, syncFlush, asyncFlush;\r\n if (!this._callbacks) {\r\n return this;\r\n }\r\n types = types.split(splitter);\r\n args = [].slice.call(arguments, 1);\r\n while ((type = types.shift()) && (callbacks = this._callbacks[type])) {\r\n syncFlush = getFlush(callbacks.sync, this, [ type ].concat(args));\r\n asyncFlush = getFlush(callbacks.async, this, [ type ].concat(args));\r\n syncFlush() && nextTick(asyncFlush);\r\n }\r\n return this;\r\n }\r\n function getFlush(callbacks, context, args) {\r\n return flush;\r\n function flush() {\r\n var cancelled;\r\n for (var i = 0, len = callbacks.length; !cancelled && i < len; i += 1) {\r\n cancelled = callbacks[i].apply(context, args) === false;\r\n }\r\n return !cancelled;\r\n }\r\n }\r\n function getNextTick() {\r\n var nextTickFn;\r\n if (window.setImmediate) {\r\n nextTickFn = function nextTickSetImmediate(fn) {\r\n setImmediate(function() {\r\n fn();\r\n });\r\n };\r\n } else {\r\n nextTickFn = function nextTickSetTimeout(fn) {\r\n setTimeout(function() {\r\n fn();\r\n }, 0);\r\n };\r\n }\r\n return nextTickFn;\r\n }\r\n function bindContext(fn, context) {\r\n return fn.bind ? fn.bind(context) : function() {\r\n fn.apply(context, [].slice.call(arguments, 0));\r\n };\r\n }\r\n }();\r\n var highlight = function(doc) {\r\n \"use strict\";\r\n var defaults = {\r\n node: null,\r\n pattern: null,\r\n tagName: \"strong\",\r\n className: null,\r\n wordsOnly: false,\r\n caseSensitive: false\r\n };\r\n return function hightlight(o) {\r\n var regex;\r\n o = _.mixin({}, defaults, o);\r\n if (!o.node || !o.pattern) {\r\n return;\r\n }\r\n o.pattern = _.isArray(o.pattern) ? o.pattern : [ o.pattern ];\r\n regex = getRegex(o.pattern, o.caseSensitive, o.wordsOnly);\r\n traverse(o.node, hightlightTextNode);\r\n function hightlightTextNode(textNode) {\r\n var match, patternNode, wrapperNode;\r\n if (match = regex.exec(textNode.data)) {\r\n wrapperNode = doc.createElement(o.tagName);\r\n o.className && (wrapperNode.className = o.className);\r\n patternNode = textNode.splitText(match.index);\r\n patternNode.splitText(match[0].length);\r\n wrapperNode.appendChild(patternNode.cloneNode(true));\r\n textNode.parentNode.replaceChild(wrapperNode, patternNode);\r\n }\r\n return !!match;\r\n }\r\n function traverse(el, hightlightTextNode) {\r\n var childNode, TEXT_NODE_TYPE = 3;\r\n for (var i = 0; i < el.childNodes.length; i++) {\r\n childNode = el.childNodes[i];\r\n if (childNode.nodeType === TEXT_NODE_TYPE) {\r\n i += hightlightTextNode(childNode) ? 1 : 0;\r\n } else {\r\n traverse(childNode, hightlightTextNode);\r\n }\r\n }\r\n }\r\n };\r\n function getRegex(patterns, caseSensitive, wordsOnly) {\r\n var escapedPatterns = [], regexStr;\r\n for (var i = 0, len = patterns.length; i < len; i++) {\r\n escapedPatterns.push(_.escapeRegExChars(patterns[i]));\r\n }\r\n regexStr = wordsOnly ? \"\\\\b(\" + escapedPatterns.join(\"|\") + \")\\\\b\" : \"(\" + escapedPatterns.join(\"|\") + \")\";\r\n return caseSensitive ? new RegExp(regexStr) : new RegExp(regexStr, \"i\");\r\n }\r\n }(window.document);\r\n var Input = function() {\r\n \"use strict\";\r\n var specialKeyCodeMap;\r\n specialKeyCodeMap = {\r\n 9: \"tab\",\r\n 27: \"esc\",\r\n 37: \"left\",\r\n 39: \"right\",\r\n 13: \"enter\",\r\n 38: \"up\",\r\n 40: \"down\"\r\n };\r\n function Input(o, www) {\r\n o = o || {};\r\n if (!o.input) {\r\n $.error(\"input is missing\");\r\n }\r\n www.mixin(this);\r\n this.$hint = $(o.hint);\r\n this.$input = $(o.input);\r\n this.query = this.$input.val();\r\n this.queryWhenFocused = this.hasFocus() ? this.query : null;\r\n this.$overflowHelper = buildOverflowHelper(this.$input);\r\n this._checkLanguageDirection();\r\n if (this.$hint.length === 0) {\r\n this.setHint = this.getHint = this.clearHint = this.clearHintIfInvalid = _.noop;\r\n }\r\n }\r\n Input.normalizeQuery = function(str) {\r\n return _.toStr(str).replace(/^\\s*/g, \"\").replace(/\\s{2,}/g, \" \");\r\n };\r\n _.mixin(Input.prototype, EventEmitter, {\r\n _onBlur: function onBlur() {\r\n this.resetInputValue();\r\n this.trigger(\"blurred\");\r\n },\r\n _onFocus: function onFocus() {\r\n this.queryWhenFocused = this.query;\r\n this.trigger(\"focused\");\r\n },\r\n _onKeydown: function onKeydown($e) {\r\n var keyName = specialKeyCodeMap[$e.which || $e.keyCode];\r\n this._managePreventDefault(keyName, $e);\r\n if (keyName && this._shouldTrigger(keyName, $e)) {\r\n this.trigger(keyName + \"Keyed\", $e);\r\n }\r\n },\r\n _onInput: function onInput() {\r\n this._setQuery(this.getInputValue());\r\n this.clearHintIfInvalid();\r\n this._checkLanguageDirection();\r\n },\r\n _managePreventDefault: function managePreventDefault(keyName, $e) {\r\n var preventDefault;\r\n switch (keyName) {\r\n case \"up\":\r\n case \"down\":\r\n preventDefault = !withModifier($e);\r\n break;\r\n\r\n default:\r\n preventDefault = false;\r\n }\r\n preventDefault && $e.preventDefault();\r\n },\r\n _shouldTrigger: function shouldTrigger(keyName, $e) {\r\n var trigger;\r\n switch (keyName) {\r\n case \"tab\":\r\n trigger = !withModifier($e);\r\n break;\r\n\r\n default:\r\n trigger = true;\r\n }\r\n return trigger;\r\n },\r\n _checkLanguageDirection: function checkLanguageDirection() {\r\n var dir = (this.$input.css(\"direction\") || \"ltr\").toLowerCase();\r\n if (this.dir !== dir) {\r\n this.dir = dir;\r\n this.$hint.attr(\"dir\", dir);\r\n this.trigger(\"langDirChanged\", dir);\r\n }\r\n },\r\n _setQuery: function setQuery(val, silent) {\r\n var areEquivalent, hasDifferentWhitespace;\r\n areEquivalent = areQueriesEquivalent(val, this.query);\r\n hasDifferentWhitespace = areEquivalent ? this.query.length !== val.length : false;\r\n this.query = val;\r\n if (!silent && !areEquivalent) {\r\n this.trigger(\"queryChanged\", this.query);\r\n } else if (!silent && hasDifferentWhitespace) {\r\n this.trigger(\"whitespaceChanged\", this.query);\r\n }\r\n },\r\n bind: function() {\r\n var that = this, onBlur, onFocus, onKeydown, onInput;\r\n onBlur = _.bind(this._onBlur, this);\r\n onFocus = _.bind(this._onFocus, this);\r\n onKeydown = _.bind(this._onKeydown, this);\r\n onInput = _.bind(this._onInput, this);\r\n this.$input.on(\"blur.tt\", onBlur).on(\"focus.tt\", onFocus).on(\"keydown.tt\", onKeydown);\r\n if (!_.isMsie() || _.isMsie() > 9) {\r\n this.$input.on(\"input.tt\", onInput);\r\n } else {\r\n this.$input.on(\"keydown.tt keypress.tt cut.tt paste.tt\", function($e) {\r\n if (specialKeyCodeMap[$e.which || $e.keyCode]) {\r\n return;\r\n }\r\n _.defer(_.bind(that._onInput, that, $e));\r\n });\r\n }\r\n return this;\r\n },\r\n focus: function focus() {\r\n this.$input.focus();\r\n },\r\n blur: function blur() {\r\n this.$input.blur();\r\n },\r\n getLangDir: function getLangDir() {\r\n return this.dir;\r\n },\r\n getQuery: function getQuery() {\r\n return this.query || \"\";\r\n },\r\n setQuery: function setQuery(val, silent) {\r\n this.setInputValue(val);\r\n this._setQuery(val, silent);\r\n },\r\n hasQueryChangedSinceLastFocus: function hasQueryChangedSinceLastFocus() {\r\n return this.query !== this.queryWhenFocused;\r\n },\r\n getInputValue: function getInputValue() {\r\n return this.$input.val();\r\n },\r\n setInputValue: function setInputValue(value) {\r\n this.$input.val(value);\r\n this.clearHintIfInvalid();\r\n this._checkLanguageDirection();\r\n },\r\n resetInputValue: function resetInputValue() {\r\n this.setInputValue(this.query);\r\n },\r\n getHint: function getHint() {\r\n return this.$hint.val();\r\n },\r\n setHint: function setHint(value) {\r\n this.$hint.val(value);\r\n },\r\n clearHint: function clearHint() {\r\n this.setHint(\"\");\r\n },\r\n clearHintIfInvalid: function clearHintIfInvalid() {\r\n var val, hint, valIsPrefixOfHint, isValid;\r\n val = this.getInputValue();\r\n hint = this.getHint();\r\n valIsPrefixOfHint = val !== hint && hint.indexOf(val) === 0;\r\n isValid = val !== \"\" && valIsPrefixOfHint && !this.hasOverflow();\r\n !isValid && this.clearHint();\r\n },\r\n hasFocus: function hasFocus() {\r\n return this.$input.is(\":focus\");\r\n },\r\n hasOverflow: function hasOverflow() {\r\n var constraint = this.$input.width() - 2;\r\n this.$overflowHelper.text(this.getInputValue());\r\n return this.$overflowHelper.width() >= constraint;\r\n },\r\n isCursorAtEnd: function() {\r\n var valueLength, selectionStart, range;\r\n valueLength = this.$input.val().length;\r\n selectionStart = this.$input[0].selectionStart;\r\n if (_.isNumber(selectionStart)) {\r\n return selectionStart === valueLength;\r\n } else if (document.selection) {\r\n range = document.selection.createRange();\r\n range.moveStart(\"character\", -valueLength);\r\n return valueLength === range.text.length;\r\n }\r\n return true;\r\n },\r\n destroy: function destroy() {\r\n this.$hint.off(\".tt\");\r\n this.$input.off(\".tt\");\r\n this.$overflowHelper.remove();\r\n this.$hint = this.$input = this.$overflowHelper = $(\"
\");\r\n }\r\n });\r\n return Input;\r\n function buildOverflowHelper($input) {\r\n return $('
').css({\r\n                position: \"absolute\",\r\n                visibility: \"hidden\",\r\n                whiteSpace: \"pre\",\r\n                fontFamily: $input.css(\"font-family\"),\r\n                fontSize: $input.css(\"font-size\"),\r\n                fontStyle: $input.css(\"font-style\"),\r\n                fontVariant: $input.css(\"font-variant\"),\r\n                fontWeight: $input.css(\"font-weight\"),\r\n                wordSpacing: $input.css(\"word-spacing\"),\r\n                letterSpacing: $input.css(\"letter-spacing\"),\r\n                textIndent: $input.css(\"text-indent\"),\r\n                textRendering: $input.css(\"text-rendering\"),\r\n                textTransform: $input.css(\"text-transform\")\r\n            }).insertAfter($input);\r\n        }\r\n        function areQueriesEquivalent(a, b) {\r\n            return Input.normalizeQuery(a) === Input.normalizeQuery(b);\r\n        }\r\n        function withModifier($e) {\r\n            return $e.altKey || $e.ctrlKey || $e.metaKey || $e.shiftKey;\r\n        }\r\n    }();\r\n    var Dataset = function() {\r\n        \"use strict\";\r\n        var keys, nameGenerator;\r\n        keys = {\r\n            val: \"tt-selectable-display\",\r\n            obj: \"tt-selectable-object\"\r\n        };\r\n        nameGenerator = _.getIdGenerator();\r\n        function Dataset(o, www) {\r\n            o = o || {};\r\n            o.templates = o.templates || {};\r\n            o.templates.notFound = o.templates.notFound || o.templates.empty;\r\n            if (!o.source) {\r\n                $.error(\"missing source\");\r\n            }\r\n            if (!o.node) {\r\n                $.error(\"missing node\");\r\n            }\r\n            if (o.name && !isValidName(o.name)) {\r\n                $.error(\"invalid dataset name: \" + o.name);\r\n            }\r\n            www.mixin(this);\r\n            this.highlight = !!o.highlight;\r\n            this.name = o.name || nameGenerator();\r\n            this.limit = o.limit || 5;\r\n            this.displayFn = getDisplayFn(o.display || o.displayKey);\r\n            this.templates = getTemplates(o.templates, this.displayFn);\r\n            this.source = o.source.__ttAdapter ? o.source.__ttAdapter() : o.source;\r\n            this.async = _.isUndefined(o.async) ? this.source.length > 2 : !!o.async;\r\n            this._resetLastSuggestion();\r\n            this.$el = $(o.node).addClass(this.classes.dataset).addClass(this.classes.dataset + \"-\" + this.name);\r\n        }\r\n        Dataset.extractData = function extractData(el) {\r\n            var $el = $(el);\r\n            if ($el.data(keys.obj)) {\r\n                return {\r\n                    val: $el.data(keys.val) || \"\",\r\n                    obj: $el.data(keys.obj) || null\r\n                };\r\n            }\r\n            return null;\r\n        };\r\n        _.mixin(Dataset.prototype, EventEmitter, {\r\n            _overwrite: function overwrite(query, suggestions) {\r\n                suggestions = suggestions || [];\r\n                if (suggestions.length) {\r\n                    this._renderSuggestions(query, suggestions);\r\n                } else if (this.async && this.templates.pending) {\r\n                    this._renderPending(query);\r\n                } else if (!this.async && this.templates.notFound) {\r\n                    this._renderNotFound(query);\r\n                } else {\r\n                    this._empty();\r\n                }\r\n                this.trigger(\"rendered\", this.name, suggestions, false);\r\n            },\r\n            _append: function append(query, suggestions) {\r\n                suggestions = suggestions || [];\r\n                if (suggestions.length && this.$lastSuggestion.length) {\r\n                    this._appendSuggestions(query, suggestions);\r\n                } else if (suggestions.length) {\r\n                    this._renderSuggestions(query, suggestions);\r\n                } else if (!this.$lastSuggestion.length && this.templates.notFound) {\r\n                    this._renderNotFound(query);\r\n                }\r\n                this.trigger(\"rendered\", this.name, suggestions, true);\r\n            },\r\n            _renderSuggestions: function renderSuggestions(query, suggestions) {\r\n                var $fragment;\r\n                $fragment = this._getSuggestionsFragment(query, suggestions);\r\n                this.$lastSuggestion = $fragment.children().last();\r\n                this.$el.html($fragment).prepend(this._getHeader(query, suggestions)).append(this._getFooter(query, suggestions));\r\n            },\r\n            _appendSuggestions: function appendSuggestions(query, suggestions) {\r\n                var $fragment, $lastSuggestion;\r\n                $fragment = this._getSuggestionsFragment(query, suggestions);\r\n                $lastSuggestion = $fragment.children().last();\r\n                this.$lastSuggestion.after($fragment);\r\n                this.$lastSuggestion = $lastSuggestion;\r\n            },\r\n            _renderPending: function renderPending(query) {\r\n                var template = this.templates.pending;\r\n                this._resetLastSuggestion();\r\n                template && this.$el.html(template({\r\n                    query: query,\r\n                    dataset: this.name\r\n                }));\r\n            },\r\n            _renderNotFound: function renderNotFound(query) {\r\n                var template = this.templates.notFound;\r\n                this._resetLastSuggestion();\r\n                template && this.$el.html(template({\r\n                    query: query,\r\n                    dataset: this.name\r\n                }));\r\n            },\r\n            _empty: function empty() {\r\n                this.$el.empty();\r\n                this._resetLastSuggestion();\r\n            },\r\n            _getSuggestionsFragment: function getSuggestionsFragment(query, suggestions) {\r\n                var that = this, fragment;\r\n                fragment = document.createDocumentFragment();\r\n                _.each(suggestions, function getSuggestionNode(suggestion) {\r\n                    var $el, context;\r\n                    context = that._injectQuery(query, suggestion);\r\n                    $el = $(that.templates.suggestion(context)).data(keys.obj, suggestion).data(keys.val, that.displayFn(suggestion)).addClass(that.classes.suggestion + \" \" + that.classes.selectable);\r\n                    fragment.appendChild($el[0]);\r\n                });\r\n                this.highlight && highlight({\r\n                    className: this.classes.highlight,\r\n                    node: fragment,\r\n                    pattern: query\r\n                });\r\n                return $(fragment);\r\n            },\r\n            _getFooter: function getFooter(query, suggestions) {\r\n                return this.templates.footer ? this.templates.footer({\r\n                    query: query,\r\n                    suggestions: suggestions,\r\n                    dataset: this.name\r\n                }) : null;\r\n            },\r\n            _getHeader: function getHeader(query, suggestions) {\r\n                return this.templates.header ? this.templates.header({\r\n                    query: query,\r\n                    suggestions: suggestions,\r\n                    dataset: this.name\r\n                }) : null;\r\n            },\r\n            _resetLastSuggestion: function resetLastSuggestion() {\r\n                this.$lastSuggestion = $();\r\n            },\r\n            _injectQuery: function injectQuery(query, obj) {\r\n                return _.isObject(obj) ? _.mixin({\r\n                    _query: query\r\n                }, obj) : obj;\r\n            },\r\n            update: function update(query) {\r\n                var that = this, canceled = false, syncCalled = false, rendered = 0;\r\n                this.cancel();\r\n                this.cancel = function cancel() {\r\n                    canceled = true;\r\n                    that.cancel = $.noop;\r\n                    that.async && that.trigger(\"asyncCanceled\", query);\r\n                };\r\n                this.source(query, sync, async);\r\n                !syncCalled && sync([]);\r\n                function sync(suggestions) {\r\n                    if (syncCalled) {\r\n                        return;\r\n                    }\r\n                    syncCalled = true;\r\n                    suggestions = (suggestions || []).slice(0, that.limit);\r\n                    rendered = suggestions.length;\r\n                    that._overwrite(query, suggestions);\r\n                    if (rendered < that.limit && that.async) {\r\n                        that.trigger(\"asyncRequested\", query);\r\n                    }\r\n                }\r\n                function async(suggestions) {\r\n                    suggestions = suggestions || [];\r\n                    if (!canceled && rendered < that.limit) {\r\n                        that.cancel = $.noop;\r\n                        rendered += suggestions.length;\r\n                        that._append(query, suggestions.slice(0, that.limit - rendered));\r\n                        that.async && that.trigger(\"asyncReceived\", query);\r\n                    }\r\n                }\r\n            },\r\n            cancel: $.noop,\r\n            clear: function clear() {\r\n                this._empty();\r\n                this.cancel();\r\n                this.trigger(\"cleared\");\r\n            },\r\n            isEmpty: function isEmpty() {\r\n                return this.$el.is(\":empty\");\r\n            },\r\n            destroy: function destroy() {\r\n                this.$el = $(\"
\");\r\n }\r\n });\r\n return Dataset;\r\n function getDisplayFn(display) {\r\n display = display || _.stringify;\r\n return _.isFunction(display) ? display : displayFn;\r\n function displayFn(obj) {\r\n return obj[display];\r\n }\r\n }\r\n function getTemplates(templates, displayFn) {\r\n return {\r\n notFound: templates.notFound && _.templatify(templates.notFound),\r\n pending: templates.pending && _.templatify(templates.pending),\r\n header: templates.header && _.templatify(templates.header),\r\n footer: templates.footer && _.templatify(templates.footer),\r\n suggestion: templates.suggestion || suggestionTemplate\r\n };\r\n function suggestionTemplate(context) {\r\n return $(\"
\").text(displayFn(context));\r\n }\r\n }\r\n function isValidName(str) {\r\n return /^[_a-zA-Z0-9-]+$/.test(str);\r\n }\r\n }();\r\n var Menu = function() {\r\n \"use strict\";\r\n function Menu(o, www) {\r\n var that = this;\r\n o = o || {};\r\n if (!o.node) {\r\n $.error(\"node is required\");\r\n }\r\n www.mixin(this);\r\n this.$node = $(o.node);\r\n this.query = null;\r\n this.datasets = _.map(o.datasets, initializeDataset);\r\n function initializeDataset(oDataset) {\r\n var node = that.$node.find(oDataset.node).first();\r\n oDataset.node = node.length ? node : $(\"
\").appendTo(that.$node);\r\n return new Dataset(oDataset, www);\r\n }\r\n }\r\n _.mixin(Menu.prototype, EventEmitter, {\r\n _onSelectableClick: function onSelectableClick($e) {\r\n this.trigger(\"selectableClicked\", $($e.currentTarget));\r\n },\r\n _onRendered: function onRendered(type, dataset, suggestions, async) {\r\n this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty());\r\n this.trigger(\"datasetRendered\", dataset, suggestions, async);\r\n },\r\n _onCleared: function onCleared() {\r\n this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty());\r\n this.trigger(\"datasetCleared\");\r\n },\r\n _propagate: function propagate() {\r\n this.trigger.apply(this, arguments);\r\n },\r\n _allDatasetsEmpty: function allDatasetsEmpty() {\r\n return _.every(this.datasets, isDatasetEmpty);\r\n function isDatasetEmpty(dataset) {\r\n return dataset.isEmpty();\r\n }\r\n },\r\n _getSelectables: function getSelectables() {\r\n return this.$node.find(this.selectors.selectable);\r\n },\r\n _removeCursor: function _removeCursor() {\r\n var $selectable = this.getActiveSelectable();\r\n $selectable && $selectable.removeClass(this.classes.cursor);\r\n },\r\n _ensureVisible: function ensureVisible($el) {\r\n var elTop, elBottom, nodeScrollTop, nodeHeight;\r\n elTop = $el.position().top;\r\n elBottom = elTop + $el.outerHeight(true);\r\n nodeScrollTop = this.$node.scrollTop();\r\n nodeHeight = this.$node.height() + parseInt(this.$node.css(\"paddingTop\"), 10) + parseInt(this.$node.css(\"paddingBottom\"), 10);\r\n if (elTop < 0) {\r\n this.$node.scrollTop(nodeScrollTop + elTop);\r\n } else if (nodeHeight < elBottom) {\r\n this.$node.scrollTop(nodeScrollTop + (elBottom - nodeHeight));\r\n }\r\n },\r\n bind: function() {\r\n var that = this, onSelectableClick;\r\n onSelectableClick = _.bind(this._onSelectableClick, this);\r\n this.$node.on(\"click.tt\", this.selectors.selectable, onSelectableClick);\r\n _.each(this.datasets, function(dataset) {\r\n dataset.onSync(\"asyncRequested\", that._propagate, that).onSync(\"asyncCanceled\", that._propagate, that).onSync(\"asyncReceived\", that._propagate, that).onSync(\"rendered\", that._onRendered, that).onSync(\"cleared\", that._onCleared, that);\r\n });\r\n return this;\r\n },\r\n isOpen: function isOpen() {\r\n return this.$node.hasClass(this.classes.open);\r\n },\r\n open: function open() {\r\n this.$node.addClass(this.classes.open);\r\n },\r\n close: function close() {\r\n this.$node.removeClass(this.classes.open);\r\n this._removeCursor();\r\n },\r\n setLanguageDirection: function setLanguageDirection(dir) {\r\n this.$node.attr(\"dir\", dir);\r\n },\r\n selectableRelativeToCursor: function selectableRelativeToCursor(delta) {\r\n var $selectables, $oldCursor, oldIndex, newIndex;\r\n $oldCursor = this.getActiveSelectable();\r\n $selectables = this._getSelectables();\r\n oldIndex = $oldCursor ? $selectables.index($oldCursor) : -1;\r\n newIndex = oldIndex + delta;\r\n newIndex = (newIndex + 1) % ($selectables.length + 1) - 1;\r\n newIndex = newIndex < -1 ? $selectables.length - 1 : newIndex;\r\n return newIndex === -1 ? null : $selectables.eq(newIndex);\r\n },\r\n setCursor: function setCursor($selectable) {\r\n this._removeCursor();\r\n if ($selectable = $selectable && $selectable.first()) {\r\n $selectable.addClass(this.classes.cursor);\r\n this._ensureVisible($selectable);\r\n }\r\n },\r\n getSelectableData: function getSelectableData($el) {\r\n return $el && $el.length ? Dataset.extractData($el) : null;\r\n },\r\n getActiveSelectable: function getActiveSelectable() {\r\n var $selectable = this._getSelectables().filter(this.selectors.cursor).first();\r\n return $selectable.length ? $selectable : null;\r\n },\r\n getTopSelectable: function getTopSelectable() {\r\n var $selectable = this._getSelectables().first();\r\n return $selectable.length ? $selectable : null;\r\n },\r\n update: function update(query) {\r\n var isValidUpdate = query !== this.query;\r\n if (isValidUpdate) {\r\n this.query = query;\r\n _.each(this.datasets, updateDataset);\r\n }\r\n return isValidUpdate;\r\n function updateDataset(dataset) {\r\n dataset.update(query);\r\n }\r\n },\r\n empty: function empty() {\r\n _.each(this.datasets, clearDataset);\r\n this.query = null;\r\n this.$node.addClass(this.classes.empty);\r\n function clearDataset(dataset) {\r\n dataset.clear();\r\n }\r\n },\r\n destroy: function destroy() {\r\n this.$node.off(\".tt\");\r\n this.$node = $(\"
\");\r\n _.each(this.datasets, destroyDataset);\r\n function destroyDataset(dataset) {\r\n dataset.destroy();\r\n }\r\n }\r\n });\r\n return Menu;\r\n }();\r\n var DefaultMenu = function() {\r\n \"use strict\";\r\n var s = Menu.prototype;\r\n function DefaultMenu() {\r\n Menu.apply(this, [].slice.call(arguments, 0));\r\n }\r\n _.mixin(DefaultMenu.prototype, Menu.prototype, {\r\n open: function open() {\r\n !this._allDatasetsEmpty() && this._show();\r\n return s.open.apply(this, [].slice.call(arguments, 0));\r\n },\r\n close: function close() {\r\n this._hide();\r\n return s.close.apply(this, [].slice.call(arguments, 0));\r\n },\r\n _onRendered: function onRendered() {\r\n if (this._allDatasetsEmpty()) {\r\n this._hide();\r\n } else {\r\n this.isOpen() && this._show();\r\n }\r\n return s._onRendered.apply(this, [].slice.call(arguments, 0));\r\n },\r\n _onCleared: function onCleared() {\r\n if (this._allDatasetsEmpty()) {\r\n this._hide();\r\n } else {\r\n this.isOpen() && this._show();\r\n }\r\n return s._onCleared.apply(this, [].slice.call(arguments, 0));\r\n },\r\n setLanguageDirection: function setLanguageDirection(dir) {\r\n this.$node.css(dir === \"ltr\" ? this.css.ltr : this.css.rtl);\r\n return s.setLanguageDirection.apply(this, [].slice.call(arguments, 0));\r\n },\r\n _hide: function hide() {\r\n this.$node.hide();\r\n },\r\n _show: function show() {\r\n this.$node.css(\"display\", \"block\");\r\n }\r\n });\r\n return DefaultMenu;\r\n }();\r\n var Typeahead = function() {\r\n \"use strict\";\r\n function Typeahead(o, www) {\r\n var onFocused, onBlurred, onEnterKeyed, onTabKeyed, onEscKeyed, onUpKeyed, onDownKeyed, onLeftKeyed, onRightKeyed, onQueryChanged, onWhitespaceChanged;\r\n o = o || {};\r\n if (!o.input) {\r\n $.error(\"missing input\");\r\n }\r\n if (!o.menu) {\r\n $.error(\"missing menu\");\r\n }\r\n if (!o.eventBus) {\r\n $.error(\"missing event bus\");\r\n }\r\n www.mixin(this);\r\n this.eventBus = o.eventBus;\r\n this.minLength = _.isNumber(o.minLength) ? o.minLength : 1;\r\n this.input = o.input;\r\n this.menu = o.menu;\r\n this.enabled = true;\r\n this.active = false;\r\n this.input.hasFocus() && this.activate();\r\n this.dir = this.input.getLangDir();\r\n this._hacks();\r\n this.menu.bind().onSync(\"selectableClicked\", this._onSelectableClicked, this).onSync(\"asyncRequested\", this._onAsyncRequested, this).onSync(\"asyncCanceled\", this._onAsyncCanceled, this).onSync(\"asyncReceived\", this._onAsyncReceived, this).onSync(\"datasetRendered\", this._onDatasetRendered, this).onSync(\"datasetCleared\", this._onDatasetCleared, this);\r\n onFocused = c(this, \"activate\", \"open\", \"_onFocused\");\r\n onBlurred = c(this, \"deactivate\", \"_onBlurred\");\r\n onEnterKeyed = c(this, \"isActive\", \"isOpen\", \"_onEnterKeyed\");\r\n onTabKeyed = c(this, \"isActive\", \"isOpen\", \"_onTabKeyed\");\r\n onEscKeyed = c(this, \"isActive\", \"_onEscKeyed\");\r\n onUpKeyed = c(this, \"isActive\", \"open\", \"_onUpKeyed\");\r\n onDownKeyed = c(this, \"isActive\", \"open\", \"_onDownKeyed\");\r\n onLeftKeyed = c(this, \"isActive\", \"isOpen\", \"_onLeftKeyed\");\r\n onRightKeyed = c(this, \"isActive\", \"isOpen\", \"_onRightKeyed\");\r\n onQueryChanged = c(this, \"_openIfActive\", \"_onQueryChanged\");\r\n onWhitespaceChanged = c(this, \"_openIfActive\", \"_onWhitespaceChanged\");\r\n this.input.bind().onSync(\"focused\", onFocused, this).onSync(\"blurred\", onBlurred, this).onSync(\"enterKeyed\", onEnterKeyed, this).onSync(\"tabKeyed\", onTabKeyed, this).onSync(\"escKeyed\", onEscKeyed, this).onSync(\"upKeyed\", onUpKeyed, this).onSync(\"downKeyed\", onDownKeyed, this).onSync(\"leftKeyed\", onLeftKeyed, this).onSync(\"rightKeyed\", onRightKeyed, this).onSync(\"queryChanged\", onQueryChanged, this).onSync(\"whitespaceChanged\", onWhitespaceChanged, this).onSync(\"langDirChanged\", this._onLangDirChanged, this);\r\n }\r\n _.mixin(Typeahead.prototype, {\r\n _hacks: function hacks() {\r\n var $input, $menu;\r\n $input = this.input.$input || $(\"
\");\r\n $menu = this.menu.$node || $(\"
\");\r\n $input.on(\"blur.tt\", function($e) {\r\n var active, isActive, hasActive;\r\n active = document.activeElement;\r\n isActive = $menu.is(active);\r\n hasActive = $menu.has(active).length > 0;\r\n if (_.isMsie() && (isActive || hasActive)) {\r\n $e.preventDefault();\r\n $e.stopImmediatePropagation();\r\n _.defer(function() {\r\n $input.focus();\r\n });\r\n }\r\n });\r\n $menu.on(\"mousedown.tt\", function($e) {\r\n $e.preventDefault();\r\n });\r\n },\r\n _onSelectableClicked: function onSelectableClicked(type, $el) {\r\n this.select($el);\r\n },\r\n _onDatasetCleared: function onDatasetCleared() {\r\n this._updateHint();\r\n },\r\n _onDatasetRendered: function onDatasetRendered(type, dataset, suggestions, async) {\r\n this._updateHint();\r\n this.eventBus.trigger(\"render\", suggestions, async, dataset);\r\n },\r\n _onAsyncRequested: function onAsyncRequested(type, dataset, query) {\r\n this.eventBus.trigger(\"asyncrequest\", query, dataset);\r\n },\r\n _onAsyncCanceled: function onAsyncCanceled(type, dataset, query) {\r\n this.eventBus.trigger(\"asynccancel\", query, dataset);\r\n },\r\n _onAsyncReceived: function onAsyncReceived(type, dataset, query) {\r\n this.eventBus.trigger(\"asyncreceive\", query, dataset);\r\n },\r\n _onFocused: function onFocused() {\r\n this._minLengthMet() && this.menu.update(this.input.getQuery());\r\n },\r\n _onBlurred: function onBlurred() {\r\n if (this.input.hasQueryChangedSinceLastFocus()) {\r\n this.eventBus.trigger(\"change\", this.input.getQuery());\r\n }\r\n },\r\n _onEnterKeyed: function onEnterKeyed(type, $e) {\r\n var $selectable;\r\n if ($selectable = this.menu.getActiveSelectable()) {\r\n this.select($selectable) && $e.preventDefault();\r\n }\r\n },\r\n _onTabKeyed: function onTabKeyed(type, $e) {\r\n var $selectable;\r\n if ($selectable = this.menu.getActiveSelectable()) {\r\n this.select($selectable) && $e.preventDefault();\r\n } else if ($selectable = this.menu.getTopSelectable()) {\r\n this.autocomplete($selectable) && $e.preventDefault();\r\n }\r\n },\r\n _onEscKeyed: function onEscKeyed() {\r\n this.close();\r\n },\r\n _onUpKeyed: function onUpKeyed() {\r\n this.moveCursor(-1);\r\n },\r\n _onDownKeyed: function onDownKeyed() {\r\n this.moveCursor(+1);\r\n },\r\n _onLeftKeyed: function onLeftKeyed() {\r\n if (this.dir === \"rtl\" && this.input.isCursorAtEnd()) {\r\n this.autocomplete(this.menu.getTopSelectable());\r\n }\r\n },\r\n _onRightKeyed: function onRightKeyed() {\r\n if (this.dir === \"ltr\" && this.input.isCursorAtEnd()) {\r\n this.autocomplete(this.menu.getTopSelectable());\r\n }\r\n },\r\n _onQueryChanged: function onQueryChanged(e, query) {\r\n this._minLengthMet(query) ? this.menu.update(query) : this.menu.empty();\r\n },\r\n _onWhitespaceChanged: function onWhitespaceChanged() {\r\n this._updateHint();\r\n },\r\n _onLangDirChanged: function onLangDirChanged(e, dir) {\r\n if (this.dir !== dir) {\r\n this.dir = dir;\r\n this.menu.setLanguageDirection(dir);\r\n }\r\n },\r\n _openIfActive: function openIfActive() {\r\n this.isActive() && this.open();\r\n },\r\n _minLengthMet: function minLengthMet(query) {\r\n query = _.isString(query) ? query : this.input.getQuery() || \"\";\r\n return query.length >= this.minLength;\r\n },\r\n _updateHint: function updateHint() {\r\n var $selectable, data, val, query, escapedQuery, frontMatchRegEx, match;\r\n $selectable = this.menu.getTopSelectable();\r\n data = this.menu.getSelectableData($selectable);\r\n val = this.input.getInputValue();\r\n if (data && !_.isBlankString(val) && !this.input.hasOverflow()) {\r\n query = Input.normalizeQuery(val);\r\n escapedQuery = _.escapeRegExChars(query);\r\n frontMatchRegEx = new RegExp(\"^(?:\" + escapedQuery + \")(.+$)\", \"i\");\r\n match = frontMatchRegEx.exec(data.val);\r\n match && this.input.setHint(val + match[1]);\r\n } else {\r\n this.input.clearHint();\r\n }\r\n },\r\n isEnabled: function isEnabled() {\r\n return this.enabled;\r\n },\r\n enable: function enable() {\r\n this.enabled = true;\r\n },\r\n disable: function disable() {\r\n this.enabled = false;\r\n },\r\n isActive: function isActive() {\r\n return this.active;\r\n },\r\n activate: function activate() {\r\n if (this.isActive()) {\r\n return true;\r\n } else if (!this.isEnabled() || this.eventBus.before(\"active\")) {\r\n return false;\r\n } else {\r\n this.active = true;\r\n this.eventBus.trigger(\"active\");\r\n return true;\r\n }\r\n },\r\n deactivate: function deactivate() {\r\n if (!this.isActive()) {\r\n return true;\r\n } else if (this.eventBus.before(\"idle\")) {\r\n return false;\r\n } else {\r\n this.active = false;\r\n this.close();\r\n this.eventBus.trigger(\"idle\");\r\n return true;\r\n }\r\n },\r\n isOpen: function isOpen() {\r\n return this.menu.isOpen();\r\n },\r\n open: function open() {\r\n if (!this.isOpen() && !this.eventBus.before(\"open\")) {\r\n this.menu.open();\r\n this._updateHint();\r\n this.eventBus.trigger(\"open\");\r\n }\r\n return this.isOpen();\r\n },\r\n close: function close() {\r\n if (this.isOpen() && !this.eventBus.before(\"close\")) {\r\n this.menu.close();\r\n this.input.clearHint();\r\n this.input.resetInputValue();\r\n this.eventBus.trigger(\"close\");\r\n }\r\n return !this.isOpen();\r\n },\r\n setVal: function setVal(val) {\r\n this.input.setQuery(_.toStr(val));\r\n },\r\n getVal: function getVal() {\r\n return this.input.getQuery();\r\n },\r\n select: function select($selectable) {\r\n var data = this.menu.getSelectableData($selectable);\r\n if (data && !this.eventBus.before(\"select\", data.obj)) {\r\n this.input.setQuery(data.val, true);\r\n this.eventBus.trigger(\"select\", data.obj);\r\n this.close();\r\n return true;\r\n }\r\n return false;\r\n },\r\n autocomplete: function autocomplete($selectable) {\r\n var query, data, isValid;\r\n query = this.input.getQuery();\r\n data = this.menu.getSelectableData($selectable);\r\n isValid = data && query !== data.val;\r\n if (isValid && !this.eventBus.before(\"autocomplete\", data.obj)) {\r\n this.input.setQuery(data.val);\r\n this.eventBus.trigger(\"autocomplete\", data.obj);\r\n return true;\r\n }\r\n return false;\r\n },\r\n moveCursor: function moveCursor(delta) {\r\n var query, $candidate, data, payload, cancelMove;\r\n query = this.input.getQuery();\r\n $candidate = this.menu.selectableRelativeToCursor(delta);\r\n data = this.menu.getSelectableData($candidate);\r\n payload = data ? data.obj : null;\r\n cancelMove = this._minLengthMet() && this.menu.update(query);\r\n if (!cancelMove && !this.eventBus.before(\"cursorchange\", payload)) {\r\n this.menu.setCursor($candidate);\r\n if (data) {\r\n this.input.setInputValue(data.val);\r\n } else {\r\n this.input.resetInputValue();\r\n this._updateHint();\r\n }\r\n this.eventBus.trigger(\"cursorchange\", payload);\r\n return true;\r\n }\r\n return false;\r\n },\r\n destroy: function destroy() {\r\n this.input.destroy();\r\n this.menu.destroy();\r\n }\r\n });\r\n return Typeahead;\r\n function c(ctx) {\r\n var methods = [].slice.call(arguments, 1);\r\n return function() {\r\n var args = [].slice.call(arguments);\r\n _.each(methods, function(method) {\r\n return ctx[method].apply(ctx, args);\r\n });\r\n };\r\n }\r\n }();\r\n (function() {\r\n \"use strict\";\r\n var old, keys, methods;\r\n old = $.fn.typeahead;\r\n keys = {\r\n www: \"tt-www\",\r\n attrs: \"tt-attrs\",\r\n typeahead: \"tt-typeahead\"\r\n };\r\n methods = {\r\n initialize: function initialize(o, datasets) {\r\n var www;\r\n datasets = _.isArray(datasets) ? datasets : [].slice.call(arguments, 1);\r\n o = o || {};\r\n www = WWW(o.classNames);\r\n return this.each(attach);\r\n function attach() {\r\n var $input, $wrapper, $hint, $menu, defaultHint, defaultMenu, eventBus, input, menu, typeahead, MenuConstructor;\r\n _.each(datasets, function(d) {\r\n d.highlight = !!o.highlight;\r\n });\r\n $input = $(this);\r\n $wrapper = $(www.html.wrapper);\r\n $hint = $elOrNull(o.hint);\r\n $menu = $elOrNull(o.menu);\r\n defaultHint = o.hint !== false && !$hint;\r\n defaultMenu = o.menu !== false && !$menu;\r\n defaultHint && ($hint = buildHintFromInput($input, www));\r\n defaultMenu && ($menu = $(www.html.menu).css(www.css.menu));\r\n $hint && $hint.val(\"\");\r\n $input = prepInput($input, www);\r\n if (defaultHint || defaultMenu) {\r\n $wrapper.css(www.css.wrapper);\r\n $input.css(defaultHint ? www.css.input : www.css.inputWithNoHint);\r\n $input.wrap($wrapper).parent().prepend(defaultHint ? $hint : null).append(defaultMenu ? $menu : null);\r\n }\r\n MenuConstructor = defaultMenu ? DefaultMenu : Menu;\r\n eventBus = new EventBus({\r\n el: $input\r\n });\r\n input = new Input({\r\n hint: $hint,\r\n input: $input\r\n }, www);\r\n menu = new MenuConstructor({\r\n node: $menu,\r\n datasets: datasets\r\n }, www);\r\n typeahead = new Typeahead({\r\n input: input,\r\n menu: menu,\r\n eventBus: eventBus,\r\n minLength: o.minLength\r\n }, www);\r\n $input.data(keys.www, www);\r\n $input.data(keys.typeahead, typeahead);\r\n }\r\n },\r\n isEnabled: function isEnabled() {\r\n var enabled;\r\n ttEach(this.first(), function(t) {\r\n enabled = t.isEnabled();\r\n });\r\n return enabled;\r\n },\r\n enable: function enable() {\r\n ttEach(this, function(t) {\r\n t.enable();\r\n });\r\n return this;\r\n },\r\n disable: function disable() {\r\n ttEach(this, function(t) {\r\n t.disable();\r\n });\r\n return this;\r\n },\r\n isActive: function isActive() {\r\n var active;\r\n ttEach(this.first(), function(t) {\r\n active = t.isActive();\r\n });\r\n return active;\r\n },\r\n activate: function activate() {\r\n ttEach(this, function(t) {\r\n t.activate();\r\n });\r\n return this;\r\n },\r\n deactivate: function deactivate() {\r\n ttEach(this, function(t) {\r\n t.deactivate();\r\n });\r\n return this;\r\n },\r\n isOpen: function isOpen() {\r\n var open;\r\n ttEach(this.first(), function(t) {\r\n open = t.isOpen();\r\n });\r\n return open;\r\n },\r\n open: function open() {\r\n ttEach(this, function(t) {\r\n t.open();\r\n });\r\n return this;\r\n },\r\n close: function close() {\r\n ttEach(this, function(t) {\r\n t.close();\r\n });\r\n return this;\r\n },\r\n select: function select(el) {\r\n var success = false, $el = $(el);\r\n ttEach(this.first(), function(t) {\r\n success = t.select($el);\r\n });\r\n return success;\r\n },\r\n autocomplete: function autocomplete(el) {\r\n var success = false, $el = $(el);\r\n ttEach(this.first(), function(t) {\r\n success = t.autocomplete($el);\r\n });\r\n return success;\r\n },\r\n moveCursor: function moveCursoe(delta) {\r\n var success = false;\r\n ttEach(this.first(), function(t) {\r\n success = t.moveCursor(delta);\r\n });\r\n return success;\r\n },\r\n val: function val(newVal) {\r\n var query;\r\n if (!arguments.length) {\r\n ttEach(this.first(), function(t) {\r\n query = t.getVal();\r\n });\r\n return query;\r\n } else {\r\n ttEach(this, function(t) {\r\n t.setVal(newVal);\r\n });\r\n return this;\r\n }\r\n },\r\n destroy: function destroy() {\r\n ttEach(this, function(typeahead, $input) {\r\n revert($input);\r\n typeahead.destroy();\r\n });\r\n return this;\r\n }\r\n };\r\n $.fn.typeahead = function(method) {\r\n if (methods[method]) {\r\n return methods[method].apply(this, [].slice.call(arguments, 1));\r\n } else {\r\n return methods.initialize.apply(this, arguments);\r\n }\r\n };\r\n $.fn.typeahead.noConflict = function noConflict() {\r\n $.fn.typeahead = old;\r\n return this;\r\n };\r\n function ttEach($els, fn) {\r\n $els.each(function() {\r\n var $input = $(this), typeahead;\r\n (typeahead = $input.data(keys.typeahead)) && fn(typeahead, $input);\r\n });\r\n }\r\n function buildHintFromInput($input, www) {\r\n return $input.clone().addClass(www.classes.hint).removeData().css(www.css.hint).css(getBackgroundStyles($input)).prop(\"readonly\", true).removeAttr(\"id name placeholder required\").attr({\r\n autocomplete: \"off\",\r\n spellcheck: \"false\",\r\n tabindex: -1\r\n });\r\n }\r\n function prepInput($input, www) {\r\n $input.data(keys.attrs, {\r\n dir: $input.attr(\"dir\"),\r\n autocomplete: $input.attr(\"autocomplete\"),\r\n spellcheck: $input.attr(\"spellcheck\"),\r\n style: $input.attr(\"style\")\r\n });\r\n $input.addClass(www.classes.input).attr({\r\n autocomplete: \"off\",\r\n spellcheck: false\r\n });\r\n try {\r\n !$input.attr(\"dir\") && $input.attr(\"dir\", \"auto\");\r\n } catch (e) {}\r\n return $input;\r\n }\r\n function getBackgroundStyles($el) {\r\n return {\r\n backgroundAttachment: $el.css(\"background-attachment\"),\r\n backgroundClip: $el.css(\"background-clip\"),\r\n backgroundColor: $el.css(\"background-color\"),\r\n backgroundImage: $el.css(\"background-image\"),\r\n backgroundOrigin: $el.css(\"background-origin\"),\r\n backgroundPosition: $el.css(\"background-position\"),\r\n backgroundRepeat: $el.css(\"background-repeat\"),\r\n backgroundSize: $el.css(\"background-size\")\r\n };\r\n }\r\n function revert($input) {\r\n var www, $wrapper;\r\n www = $input.data(keys.www);\r\n $wrapper = $input.parent().filter(www.selectors.wrapper);\r\n _.each($input.data(keys.attrs), function(val, key) {\r\n _.isUndefined(val) ? $input.removeAttr(key) : $input.attr(key, val);\r\n });\r\n $input.removeData(keys.typeahead).removeData(keys.www).removeData(keys.attr).removeClass(www.classes.input);\r\n if ($wrapper.length) {\r\n $input.detach().insertAfter($wrapper);\r\n $wrapper.remove();\r\n }\r\n }\r\n function $elOrNull(obj) {\r\n var isValid, $el;\r\n isValid = _.isJQuery(obj) || _.isElement(obj);\r\n $el = isValid ? $(obj).first() : [];\r\n return $el.length ? $el : null;\r\n }\r\n })();\r\n});"]}