{"version":3,"sources":["jsdelivr-header.js","/npm/typeahead@0.2.2/typeahead.js"],"names":[],"mappings":"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","file":"/npm/typeahead@0.2.2/typeahead.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/typeahead@0.2.2/typeahead.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","// vendor\nvar xtend = require('xtend');\nvar dom = require('dom');\n\nvar defaults = {\n    source: [],\n    items: 8,\n    menu: '<ul class=\"typeahead hidden\"></ul>',\n    item: '<li><a href=\"#\"></a></li>',\n    minLength: 1,\n    autoselect: true\n}\n\nvar Typeahead = function (element, options) {\n    if (!(this instanceof Typeahead)) {\n        return new Typeahead(element, options);\n    }\n\n    var self = this;\n\n    self.element = dom(element);\n    self.options = xtend({}, defaults, options);\n    self.matcher = self.options.matcher || self.matcher\n    self.sorter = self.options.sorter || self.sorter\n    self.highlighter = self.options.highlighter || self.highlighter\n    self.updater = self.options.updater || self.updater\n    self.menu = dom(self.options.menu);\n    dom(document.body).append(self.menu);\n\n    self.source = self.options.source;\n    self.shown = false;\n    self.listen();\n}\n\n// for minification\nvar proto = Typeahead.prototype;\n\nproto.constructor = Typeahead;\n\n// select the current item\nproto.select = function() {\n    var self = this;\n    var val = self.menu.find('.active').attr('data-value');\n\n    self.element\n      .value(self.updater(val))\n      .emit('change');\n\n    return self.hide();\n}\n\nproto.updater = function (item) {\n    return item;\n}\n\n// show the popup menu\nproto.show = function () {\n    var self = this;\n\n    var offset = self.element.offset();\n    var pos = xtend({}, offset, {\n        height: self.element.outerHeight()\n    })\n\n    var scroll = 0\n    var parent = self.element[0]\n    while (parent = parent.parentElement) {\n        // prevent adding window scroll\n        var tag = parent.tagName.toLowerCase();\n        if (tag === 'html' || tag === 'body') {\n            continue;\n        }\n        \n        scroll += parent.scrollTop\n    }\n\n    // if page has scrolled we need real position in viewport\n    var top = pos.top + pos.height - scroll + 'px'\n    var bottom = 'auto'\n    var left = pos.left + 'px'\n\n    if (self.options.position === 'above') {\n        top = 'auto'\n        bottom = document.body.clientHeight - pos.top + 3\n    } else if (self.options.position === 'right') {\n        top = parseInt(top.split('px')[0], 10) - self.element.outerHeight() + 'px'\n        left = parseInt(left.split('px')[0], 10) + self.element.outerWidth() + 'px'\n    }\n\n    self.menu.css({\n        top: top,\n        bottom: bottom,\n        left: left\n    });\n\n    self.menu.removeClass('hidden');\n    self.shown = true;\n    return self;\n}\n\n// hide the popup menu\nproto.hide = function () {\n    this.menu.addClass('hidden');\n    this.shown = false;\n    return this;\n}\n\nproto.lookup = function (event) {\n    var self = this;\n\n    self.query = self.element.value();\n\n    if (!self.query || self.query.length < self.options.minLength) {\n        return self.shown ? self.hide() : self\n    }\n\n    if (self.source instanceof Function) {\n        self.source(self.query, self.process.bind(self));\n    }\n    else {\n        self.process(self.source);\n    }\n\n    return self;\n}\n\nproto.process = function (items) {\n    var self = this;\n\n    items = items.filter(self.matcher.bind(self));\n    items = self.sorter(items)\n\n    if (!items.length) {\n      return self.shown ? self.hide() : self\n    }\n\n    return self.render(items.slice(0, self.options.items)).show()\n}\n\nproto.matcher = function (item) {\n  return ~item.toLowerCase().indexOf(this.query.toLowerCase())\n}\n\nproto.sorter = function (items) {\n    var beginswith = [];\n    var caseSensitive = [];\n    var caseInsensitive = [];\n    var item;\n\n    while (item = items.shift()) {\n      if (!item.toLowerCase().indexOf(this.query.toLowerCase())) beginswith.push(item)\n      else if (~item.indexOf(this.query)) caseSensitive.push(item)\n      else caseInsensitive.push(item)\n    }\n\n    return beginswith.concat(caseSensitive, caseInsensitive)\n}\n\nproto.highlighter = function (item) {\n    var query = this.query.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, '\\\\$&');\n    return item.replace(new RegExp('(' + query + ')', 'ig'), function ($1, match) {\n        return '<strong>' + match + '</strong>'\n    })\n}\n\nproto.render = function (items) {\n    var self = this;\n\n    items = items.map(function (item) {\n        var li = dom(self.options.item);\n        li.attr('data-value', item)\n          .find('a').html(self.highlighter(item));\n        return li;\n    })\n\n    self.options.autoselect && items[0].addClass('active');\n\n    self.menu.empty();\n    items.forEach(function(item) {\n        self.menu.append(item);\n    });\n\n    return this;\n}\n\nproto.next = function (event) {\n    var active = this.menu.find('.active').removeClass('active');\n    var next = active.next();\n\n    if (!next.length) {\n        next = this.menu.find('li').first();\n    }\n\n    next.addClass('active');\n}\n\nproto.prev = function (event) {\n    var active = this.menu.find('.active').removeClass('active');\n    var prev = active.prev();\n\n    if (!prev.length) {\n        prev = this.menu.find('li').last();\n    }\n\n    prev.addClass('active');\n}\n\nproto.listen = function () {\n    var self = this;\n\n    self.element\n      .on('blur', self.blur.bind(self))\n      .on('keypress', self.keypress.bind(self))\n      .on('keyup', self.keyup.bind(self))\n      .on('keydown', self.keydown.bind(self))\n\n    self.menu\n      .on('click', self.click.bind(self))\n      .on('mouseenter', 'li', self.mouseenter.bind(self))\n}\n\nproto.move = function (e) {\n    if (!this.shown) return\n\n    switch(e.keyCode) {\n    case 9: // tab\n    case 13: // enter\n    case 27: // escape\n        e.preventDefault()\n        break\n\n    case 38: // up arrow\n        e.preventDefault()\n        this.prev()\n        break\n\n    case 40: // down arrow\n        e.preventDefault()\n        this.next()\n        break\n    }\n\n    e.stopPropagation()\n}\n\nproto.keydown = function (e) {\n    this.suppressKeyPressRepeat = [40,38,9,13,27].indexOf(e.keyCode) >= 0\n    this.move(e)\n}\n\nproto.keypress = function (e) {\n    if (this.suppressKeyPressRepeat) return\n    this.move(e)\n}\n\nproto.keyup = function (e) {\n    var self = this;\n\n    switch(e.keyCode) {\n    case 40: // down arrow\n    case 38: // up arrow\n            break\n\n    case 9: // tab\n    case 13: // enter\n        if (!self.shown) return\n        self.select()\n        break\n\n    case 27: // escape\n        if (!self.shown) return\n        self.hide()\n        break\n\n    default:\n        self.lookup()\n    }\n\n    e.stopPropagation()\n    e.preventDefault()\n}\n\nproto.blur = function (e) {\n    var self = this;\n    setTimeout(function () { self.hide() }, 150);\n}\n\nproto.click = function (e) {\n    e.stopPropagation();\n    e.preventDefault();\n    this.select();\n}\n\nproto.mouseenter = function (e) {\n    this.menu.find('.active').removeClass('active');\n    dom(e.currentTarget).addClass('active');\n}\n\nmodule.exports = Typeahead;\n"]}