UNPKG

domainr-search-box

Version:
1 lines 8.75 kB
!function(t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).domainr=t()}(function(){return function i(n,r,a){function o(e,t){if(!r[e]){if(!n[e]){var s="function"==typeof require&&require;if(!t&&s)return s(e,!0);if(u)return u(e,!0);throw(t=new Error("Cannot find module '"+e+"'")).code="MODULE_NOT_FOUND",t}s=r[e]={exports:{}},n[e][0].call(s.exports,function(t){return o(n[e][1][t]||t)},s,s.exports,i,n,r,a)}return r[e].exports}for(var u="function"==typeof require&&require,t=0;t<a.length;t++)o(a[t]);return o}({1:[function(t,e,s){"use strict";var f=t("./util"),_=0,m=!1;function p(){try{return new(window.XMLHttpRequest||window.ActiveXObject)("MSXML2.XMLHTTP.3.0")}catch(t){return{}}}"withCredentials"in p()&&(m=!0),e.exports={getJSON:function(t,e,s){if(!e)throw new Error("[domainr] Missing callback");var i,n,r,a,o,u,h,c,l,d;m?(h=t,i=e,n=(n=s)||function(){},(r=p()).onreadystatechange=function(){var e,t;if(4==r.readyState)if(200!=r.status)e="Error fetching data: "+r.responseText,f.error(e),n({message:e});else{try{t=JSON.parse(r.responseText)}catch(t){return e="Unable to parse data: "+r.responseText+"; "+t,f.error(e),void n({message:e})}i(t)}},r.open("GET",h,!0),r.send()):(a=t,o=e,u=s,(h=document.createElement("script")).async=!0,c="_jsonp"+_++,l=!1,d=setTimeout(function(){var t="Timeout trying to retrieve "+a;f.error(t),u&&(u({message:t}),l=!0)},5e3),window[c]=function(t){clearTimeout(d),setTimeout(function(){var t=document.getElementById(c);t.parentNode.removeChild(t),window[c]=void 0;try{delete window[c]}catch(t){}},0),l||o(t)},t=0<=a.indexOf("?")?"&":"?",h.setAttribute("src",a+t+"callback="+c),h.id=c,(t=document.head||document.getElementsByTagName("head")[0]||document.documentElement).insertBefore(h,t.firstChild))}}},{"./util":6}],2:[function(t,e,s){"use strict";var n=t("./ajax"),u=t("./util");function i(t){if(this.clientId=(t=t||{}).clientId,this.mashapeKey=t.mashapeKey,!this.clientId&&!this.mashapeKey)throw new Error("[domainr] Missing mashapeKey or clientId");this.baseURL=t.baseURL||(this.clientId?"https://api.domainr.com/v2":"https://domainr.p.rapidapi.com/v2")}i.prototype={search:function(t,e){this._get("/search",this.searchParams(t),e)},searchParams:function(t){return u.extract(t,["query","registrar","location","defaults"])},status:function(t,e){var s=this;if(!t)throw new Error("[domainr] domains array is required");u.uniq(t);for(var i,n={status:[]},r=0,a=function(){++r===t.length&&e(n)},o=0;o<t.length;o++)i=t[o],s._get("/status",{domain:i},function(t){t&&t.status&&t.status[0]?n.status.push(t.status[0]):u.error("Empty status result",t),a()},a)},options:function(t,e){this._get("/options",{domain:t},e)},zones:function(t){this._get("/zones",{},t)},registerURL:function(t,e){e=u.extract(e,["registrar"]);return e.domain=t,this._url("/register",e)},_get:function(t,e,s,i){t=this.baseURL+t+"?"+u.qs(e||{},this._key());n.getJSON(t,s,i)},_url:function(t,e){return this.baseURL+t+"?"+u.qs(e||{},this._key())},_key:function(){return this.clientId?{client_id:this.clientId}:{"mashape-key":this.mashapeKey}}},e.exports=i},{"./ajax":1,"./util":6}],3:[function(t,e,s){"use strict";var i=t("./client"),n=t("./search-box");t("./jquery"),e.exports={Client:i,SearchBox:n}},{"./client":2,"./jquery":4,"./search-box":5}],4:[function(t,e,s){"use strict";t("./search-box");var n,r=t("./util");window.jQuery&&((n=window.jQuery).fn.domainrSearchBox=function(i){return this.each(function(t,e){var s=r.extract(i,["clientId","mashapeKey","renderWith","limit","registrar","defaults","onSelect"]);s.observe=e,i.renderTo&&0<(e=n(i.renderTo)).length&&(s.renderTo=e[0]),new domainr.SearchBox(s)}),this})},{"./search-box":5,"./util":6}],5:[function(t,e,s){"use strict";function i(t){var e,s,i=this;if(!(t=t||{}).observe)throw new Error('[domainr] "observe" is required');this._client=new n(a.extract(t,["clientId","mashapeKey"])),this._state={query:"",results:[],limit:20,selection:-1},this._seq=0,this._last=0,this._cache={},this._listeners={},this._searchTimeout=null,this._searchDelay=250,this._renderer=r,this._in=t.observe,o(this._in,"keyup",this._input,this),o(this._in,"input",this._input,this),o(this._in,"change",this._input,this),o(this._in,"keydown",this._keydown,this),void 0!==t.renderTo&&(this._out=t.renderTo,e=this._out,s="domainr-results-container",e.classList?e.classList.add(s):e.className+=" "+s,o(this._out,"click",this._click,this)),void 0!==t.renderWith&&(this._renderer=t.renderWith),void 0!==t.limit&&(this._state.limit=t.limit),void 0!==t.registrar&&(this._state.registrar=t.registrar),void 0!==t.defaults&&(this._state.defaults=t.defaults.join(",")),void 0!==t.searchDelay&&(this._searchDelay=t.searchDelay),void 0!==t.onSelect?this._onSelect=t.onSelect:this._onSelect=function(t){i._in.value=t.domain,window.open(i._client.registerURL(t.domain))},this._input()}var n=t("./client"),a=t("./util");function r(t){var e=t.results,s=e.length;if(0===s)return"";for(var i=['<div class="domainr-results">'],n=0;n<s;n++){var r=e[n],a=["domainr-result",r.status];t.selection===n&&a.push("selected"),i.push('<div class="'+a.join(" ")+'" data-domain="'+r.domain+'"><span class="domainr-result-domain"><span class="domainr-result-host">'+r.host+'</span><span class="domainr-result-subdomain">'+r.subdomain+'</span><span class="domainr-result-zone">'+r.zone+'</span></span><span class="domainr-result-path">'+r.path+"</span></div>")}return i.push("</div>"),i.join("")}function o(t,e,s,i){var n;i&&(n=s,s=function(){return n.apply(i,arguments)}),t.addEventListener?t.addEventListener(e,s,!1):t.attachEvent?t.attachEvent("on"+e,s):t["on"+e]=s}i.prototype={_input:function(){this._state.query!=this._in.value&&(""===this._in.value?(this._state.results=[],this._update()):(this._state.query=this._in.value,window.clearTimeout(this._searchTimeout),this._searchTimeout=window.setTimeout(this._search.bind(this),this._searchDelay)))},_keydown:function(t){var e=!1;38===(t=t||window.event).keyCode?(e=!0,this._state.selection--,this._state.selection<0&&(this._state.selection=this._state.results.length-1),this._update()):40===t.keyCode?(e=!0,this._state.selection++,this._state.selection>=this._state.results.length&&(this._state.selection=0),this._update()):13===t.keyCode&&-1!==this._state.selection&&(e=!0,this._choose(this._state.results[this._state.selection])),e&&t.preventDefault&&t.preventDefault()},_click:function(t){t=t||window.event;for(var e=this._state.results,s=t.target||t.srcElement;s&&s!=document;s=s.parentNode){var i=s.getAttribute("data-domain");if(i)for(var n=0;n<e.length;n++){var r=e[n];if(r.domain==i)return void this._choose(r)}}},_render:function(){if(this._out)return this._out.innerHTML=this._renderer(this._state),this},_search:function(){var e,s=this,i=(this._state.selection=-1,a.qs(this._client.searchParams(this._state))),t=this._cache[i];void 0!==t?(this._state.results=t.results,this._update()):(e=this._seq++,this._client.search(this._state,function(t){s._cache[i]=t,s._last>e||(s._last=e,s._state.results=t.results,s._update())}))},_update:function(){this._sort(),this._limit(),this._status(),this._render()},_sort:function(){var n;this._state.defaults&&this._state.results&&(n=this._state.defaults.split(","),this._state.results.sort(function(t,e){var s=a.indexOf(n,t.zone),i=(-1===s&&(s=n.length),a.indexOf(n,e.zone));return s!==(i=-1===i?n.length:i)?s-i:t.domain-e.domain}))},_limit:function(){0<=this._state.limit&&this._state.results.length>this._state.limit&&(this._state.results.length=this._state.limit)},_status:function(){var e=this,t=[],s=this._state.results;for(r=0;r<s.length&&t.length<10;r++){var i=s[r];i.status=this._cache[i.domain+":status"]||i.status,i.status||(i.status="unknown",t.push(i.domain))}if(0!==t.length){a.uniq(t);for(var n,r=0;r<t.length;r++)n=t[r],e._client.status([n],function(t){t=t.status[0];t&&(e._cache[t.domain+":status"]=t.status,e._update())})}},_choose:function(t){this._onSelect&&this._onSelect(t)}},e.exports=i},{"./client":2,"./util":6}],6:[function(t,e,s){"use strict";var n=encodeURIComponent;e.exports={euc:n,extract:function(t,e){var s={};if(t)for(var i=0;i<e.length;i++){var n=e[i];void 0!==t[n]&&(s[n]=t[n])}return s},qs:function(){for(var t=[],e=0;e<arguments.length;e++){var s,i=arguments[e];for(s in i)t.push(n(s)+"="+n(i[s]))}return t.sort().join("&")},error:function(t){window.console&&window.console.error&&window.console.error("[domainr] "+t)},uniq:function(t){if(t)for(var e,s=0;s<t.length;s++)for(e=s+1;e<t.length;e++)t[s]===t[e]&&(t.splice(e,1),e--)},indexOf:function(t,e){if(t)for(var s=0;s<t.length;s++)if(t[s]===e)return s;return-1}}},{}]},{},[3])(3)});