manuel
Version:
A super customizable VDOM autocomplete with *production ready* defaults.
2 lines (1 loc) • 4.21 kB
JavaScript
!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).manuel=e()}}(function(){return function e(n,t,o){function r(u,s){if(!t[u]){if(!n[u]){var a="function"==typeof require&&require;if(!s&&a)return a(u,!0);if(i)return i(u,!0);var d=new Error("Cannot find module '"+u+"'");throw d.code="MODULE_NOT_FOUND",d}var f=t[u]={exports:{}};n[u][0].call(f.exports,function(e){var t=n[u][1][e];return r(t||e)},f,f.exports,e,n,t,o)}return t[u].exports}for(var i="function"==typeof require&&require,u=0;u<o.length;u++)r(o[u]);return r}({1:[function(e,n,t){function o(e,n){return!e.trim().length||RegExp(r(e.trim()),"i").test(n)}function r(e){return e.replace(/[-\\^$*+?.()|[\]{}]/g,"\\$&")}function i(e,n){return e.length!==n.length?e.length-n.length:e<n?-1:1}var u={submit:function(e,n){return 13==e&&n?[n]:[]},dismiss:function(e){return 27==e?[!0]:[]},navigate:function(e,n,t,o){var r=t.indexOf(n),i=-1==r,u=t.length-1,s=r>=-1,a=r+1,d=r-1;return!e||38!=o&&40!=o?[]:38!=o||!i&&0!=r?38==o&&s?[t[d]]:40!=o||!i&&r!=u?[t[a]]:[t[0]]:[t[u]]}};n.exports=function(e){var n=e.hyperscript,t=e.get,r=e.set;return function(e,s){var a=s||{},d=e.list,f=e.input,l=e.chosen,c=e.open,m=e.highlighted,v=t(f),h=void 0!==a.minChars?a.minChars:2,p=void 0!==a.maxItems?a.maxItems:10,g=void 0!==a.sort?a.sort:i,b=void 0!==a.filter?a.filter:o,y=void 0!==a.filteredList?a.filteredList:t(d).filter(function(e){return b(v,e)}).sort(g).slice(0,p);-1==y.indexOf(t(m))&&r(m,null);var k={filteredList:y,showingDrawer:void 0!==a.showingDrawer?a.showingDrawer:t(c)&&v.length>=h&&y.length>0,choose:void 0!==a.choose?a.choose:function(e){r(l,e),r(f,e),k.close()},clickItem:void 0!==a.clickItem?a.clickItem:function(e){return k.choose(e)},PATTERN_INPUT:void 0!==a.PATTERN_INPUT?a.PATTERN_INPUT:v?new RegExp(v,"gi"):null,mark:void 0!==a.mark?a.mark:function(e){return n("mark",e)},highlight:void 0!==a.highlight?a.highlight:function(e){var n=null!=k.PATTERN_INPUT?e.match(k.PATTERN_INPUT):null,t=null!=n?n.reduce(function(e,n){var t=e.buffer.indexOf(n);return{buffer:e.buffer.slice(t+n.length),output:e.output.concat(0===t?[]:e.buffer.slice(0,t),[k.mark(e.buffer.slice(t,t+n.length))])}},{buffer:e,output:[]}):{output:e,buffer:""};return t.output.concat(t.buffer||[])},oninput:void 0!==a.oninput?a.oninput:function(e){var n=e.currentTarget.value;r(f,n),t(c)||r(c,!0),t(l)!=n&&r(l,null)},onfocus:void 0!==a.onfocus?a.onfocus:function(){t(c)||r(c,!0)},close:void 0!==a.close?a.close:function(){t(c)&&r(c,!1)},onblur:void 0!==a.onblur?a.onblur:function(){k.close()},renderInput:void 0!==a.renderInput?a.renderInput:function(){return n("input",{value:v,oninput:k.oninput,onfocus:k.onfocus,onblur:k.onblur})},itemClassNames:void 0!==a.itemClassNames?a.itemClassNames:function(e){return e==t(m)?"highlight":""},renderItem:void 0!==a.renderItem?a.renderItem:function(e,t){return n("li",{className:t.itemClassNames(e,t),onmousedown:function(n){t.clickItem(e),n.stopPropagation()}},t.highlight(e))},renderItems:void 0!==a.renderItems?a.renderItems:function(e){return n("ul",e.filteredList.map(function(n){return e.renderItem(n,e)}))},classNames:void 0!==a.classNames?a.classNames:function(){return["manuel-complete"].concat(k.showingDrawer?["open"]:[],v.length>0?["not-empty"]:[],t(d).length>0?["loaded"]:[]).join(" ")},renderRoot:void 0!==a.renderRoot?a.renderRoot:function(e){return n("div",{className:e.classNames(),onkeydown:e.onkeydown},e.renderInput(e),e.renderItems(e))},keyboardSubmit:void 0!==a.keyboardSubmit?a.keyboardSubmit:u.submit,keyboardDismiss:void 0!==a.keyboardDismiss?a.keyboardDismiss:u.dismiss,keyboardNavigate:void 0!==a.keyboardNavigate?a.keyboardNavigate:u.navigate,onkeydown:void 0!==a.onkeydown?a.onkeydown:function(e){var n=k.keyboardSubmit(e.keyCode,t(m)),o=k.keyboardDismiss(e.keyCode),i=k.keyboardNavigate(k.showingDrawer,t(m),k.filteredList,e.keyCode);n.map(k.choose),i.map(function(e){return r(m,e)}),o.map(k.close),[].concat(n,o,i).slice(0,1).map(function(){return e.preventDefault(),null})}};return k.renderRoot(k)}}},{}]},{},[1])(1)});