Файл: domAjax.min.js
Строк: 461
<?php
(function(){function r(a){for(var b=document.querySelectorAll("[data-ajax-repeat]"),c=0;c<b.length;c++)if(dNode=b[c],dNode.style.display="none",dNode.hasAttribute("data-ajax-url")||dNode.hasAttribute("data-ajax-config"))console.log("domAjax - Warning - data-ajax-repeat should not be used on domAjax nodes");else{if(rootObjString=dNode.getAttribute("data-ajax-repeat")||!1)if(rootObject=w(rootObjString,a),Array.isArray(rootObject)&&0<rootObject.length)for(key in rootObject)if(currentObj=rootObject[key],
"object"===typeof currentObj){newNode=dNode.cloneNode(!0);newNode.style.display="inherit";newNode.removeAttribute("data-ajax-repeat");var d=n(currentObj),g=p(currentObj),e=newNode,f=t(e,d),e=f,k=d,h=g;for(lKey in e)for(loopArrKey in curNode=e[lKey],curTxt=curNode.nodeValue,k)if(cKey="{{"+k[loopArrKey]+"}}",-1!==cKey.search("domAjax-html")&&-1!==curTxt.search(cKey)){tmpTxt=curTxt;thisHtml=h[cKey];tmpTxt=tmpTxt.replace(cKey,thisHtml);divNode=document.createElement("div");for(divNode.innerHTML=tmpTxt;divNode.firstChild;)curNode.parentNode.insertBefore(divNode.firstChild,
curNode);curNode.parentNode.removeChild(curNode)}k=void 0;for(k in f){e=f[k];curText=e.nodeValue;for(itr in d)tmpKey="{{"+d[itr]+"}}",-1!==curText.search(tmpKey)&&(curText=txtTemp=curText.replace(tmpKey,g[tmpKey]));e.nodeValue=curText}dNode.parentNode.insertBefore(newNode,dNode)}delete dNode}}function l(a){try{JSON.parse(a)}catch(b){return!1}return!0}function h(a,b){if("string"===typeof a)if(-1<a.indexOf(".")){parts=a.split(".");if(1===b)return parts[0];if(2===b)return parts[1]}else{if(1===b)return a;
if(2===b)return!1}}function n(a){var b=[],c;for(c in a)if("object"==typeof a[c]&&null!==a[c]){var d=n(a[c]),g;for(g in d)b[b.length]=c+"."+d[g]}else"function"!==typeof a[c]&&(b[b.length]=c);return b}function p(a,b){var c=[],d={};b||(b=1);var g=b+1,e;for(e in a)if("object"==typeof a[e]&&null!==a[e]){var f=p(a[e],g),k;for(k in f)c[c.length]={key:e+"."+f[k].key,val:f[k].val}}else"function"!==typeof a[e]&&(c[c.length]={key:e,val:a[e]});if(1===b){for(k in c)g=c[k],d["{{"+g.key+"}}"]=g.val;return d}return c}
function w(a,b){if("string"===typeof a)if(-1<a.indexOf(".")){parts=a.split(".");if(2===parts.length)return b[parts[0]][parts[1]];if(3===parts.length)return b[parts[0]][parts[1]][parts[2]];if(4===parts.length)return b[parts[0]][parts[1]][parts[2]][parts[3]]}else return b[a]?b[a]:!1}function t(a,b,c){var d=[];if(document.createTreeWalker)for(a=document.createTreeWalker(a,NodeFilter.SHOW_TEXT,{acceptNode:function(a){if(!b||!Array.isArray(b))return NodeFilter.FILTER_SKIP;try{if(a.parentNode.hasAttribute("data-ajax-repeat")&&
c)return NodeFilter.FILTER_REJECT;if("undefined"!==typeof a.parentNode.parentNode){if(a.parentNode.parentNode.hasAttribute("data-ajax-repeat")&&c)return NodeFilter.FILTER_REJECT}else if("undefined"!==typeof a.parentNode.parentNode.parentNode&&a.parentNode.parentNode.parentNode.hasAttribute("data-ajax-repeat")&&c)return NodeFilter.FILTER_REJECT}catch(d){return NodeFilter.FILTER_REJECT}a=a.nodeValue;for(var f in b)if(-1!==a.search(b[f]))return NodeFilter.FILTER_ACCEPT;return NodeFilter.FILTER_SKIP}});a.nextNode();)d.push(a.currentNode);
else d=u(a,b,function(a,b,c){if(!c||!Array.isArray(c))return!1;try{if(a.parentNode.hasAttribute("data-ajax-repeat")||a.parentNode.parentNode&&a.parentNode.parentNode.hasAttribute("data-ajax-repeat")||a.parentNode.parentNode.parentNode&&a.parentNode.parentNode.parentNode.hasAttribute("data-ajax-repeat"))return!1}catch(d){return!1}a=a.nodeValue;for(var h in c)if(a.search(c[h]))return!0;return!1});return d}this.map=[];this.version="1.0.1";this.mapPointer=0;this.useDefaultCallback=!0;var v=function(){for(var a=
this.mapPointer;a<this.map.length;a++)entry=this.map[a],entry.id&&(entry.event?(dom=document.getElementById(entry.id),dom.addEventListener&&dom.addEventListener(entry.event,function(a){m(this.url,this.method,this.params,this.callback,this.id,a)}.bind(entry))):entry.interval?(intval=entry.interval,ref=this.map[a],entry.maxRequests&&(this.map[a].curRequest=1),m(ref.url,ref.method,ref.params,ref.callback,ref.id,!1),this.map[a].intervalReference=setInterval(function(a){m(this.url,this.method,this.params,
this.callback,this.id,!1);a.curRequest++;a.curRequest>a.maxRequests&&clearInterval(a.intervalReference)}.bind(entry),intval,ref)):(eid=entry.id,url=entry.url,method=entry.method,params=entry.params,callback=entry.callback,m(url,method,params,callback,eid,!1))),delete entry,this.mapPointer=a;this.mapPointer++},x=function(a){var b=!1;if(a.constructor&&a.constructor===Array)for(var c=0;c<a.length;c++)singleConfig=a[c],null!==singleConfig&&"object"===typeof singleConfig?(singleConfig.event&&-1<singleConfig.event.indexOf(".")&&
(ev=singleConfig.event,singleConfig.event=h(ev,2),singleConfig.id=h(ev,1)),singleConfig.interval&&-1<singleConfig.interval.indexOf(".")&&(iv=singleConfig.interval,singleConfig.interval=h(iv,1),singleConfig.maxRequests=h(iv,2)),singleConfig.method||(singleConfig.method="get"),this.map[this.map.length]=singleConfig,b=!0):console.log("domAjax - error - Parameter in config array is not an object");else console.log("domAjax - error - config param passed to domAjax is not an array"),b=!1;return b},m=function(a,
b,c,d,g,e){var f=new XMLHttpRequest;f.open(b.toUpperCase(),encodeURI(a),!0);f.onload=function(){if(200===f.status){resp=f.responseText;if(l(resp)){if(jsn=JSON.parse(resp),jsn.hasOwnProperty("domAjax-redirect")){loc=jsn["domAjax-redirect"];location.href=loc;return}}else tmpJson={data:f.responseText},resp=JSON.stringify(tmpJson);if("function"===typeof d)d===q?(d(JSON.parse(resp),e,g),r(JSON.parse(resp))):d(JSON.parse(resp),e,g);else{var a=window[d];if("function"===typeof a)a(JSON.parse(resp),e,g);else{if("string"===
typeof d&&-1<d.indexOf("."))if(parts=d.split("."),2>parts.length)cbref2=!1;else{if(2===parts.length){p1=parts[0];p2=parts[1];var b=window[p1][p2]}else 3===parts.length?(p1=parts[0],p2=parts[1],p3=parts[2],b=window[p1][p2][p3]):4===parts.length&&(p1=parts[0],p2=parts[1],p3=parts[2],p4=parts[3],b=window[p1][p2][p3][p4]);cbref2="function"===typeof b?b:!1}else cbref2=!1;"function"===typeof cbref2?cbref2(JSON.parse(resp),e,g):this.useDefaultCallback?(a="domAjax - error - invalid callback for element with ID "+
(g+". Fallback to default"),console.log(a),q(JSON.parse(resp),e,g),r(JSON.parse(resp))):(a="domAjax - error - invalid callback for element with ID "+(g+". Default CallBack Disabled"),console.log(a))}}}}.bind(this);"POST"===b.toUpperCase()&&l(c)?(f.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),a="data="+encodeURIComponent(JSON.stringify(c)),f.send(a)):c&&l(c)?(f.setRequestHeader("Content-Type","application/json"),f.send(JSON.stringify(c))):f.send()},q=function(a,b,c){if("string"===
typeof c)var d=document.getElementById(c);else"object"===typeof c&&(d=c);if(null===d)console.log("domAjax - error - could not get element with id "+c);else{b=n(a);a=p(a);c=[];for(key in b)c[c.length]="{{"+b[key]+"}}";d=t(d,c,!0);for(nkey in d){node=d[nkey];curText=node.nodeValue;for(itr in c)tmpKey=c[itr],-1!==curText.search(tmpKey)&&(curText=curText.replace(tmpKey,a[tmpKey]));node.nodeValue=curText}}},u=function(a,b,c){var d=[];if(a)for(var g=a.childNodes,e=g.length;e--;){var f=g[e],h=f.nodeType;
if(3==h)c&&!c(f,a,b)||d.push(f);else if(1==h||9==h||11==h)d=d.concat(u(f,b,c))}return d};(function(){for(var a=document.querySelectorAll("[data-ajax-url]"),b=0;b<a.length;b++)dom=a[b],entry={},entry.id=dom.getAttribute("id")||!1,entry.url=dom.getAttribute("data-ajax-url")||!1,entry.method=dom.getAttribute("data-ajax-method")||"get",entry.event=dom.getAttribute("data-ajax-event")||!1,"string"===typeof entry.event&&-1<entry.event.indexOf(".")&&(ev=entry.event,entry.event=h(ev,2),entry.id=h(ev,1)),entry.callback=
dom.getAttribute("data-ajax-callback")||q,entry.params=dom.getAttribute("data-ajax-params")||!1,entry.interval=dom.getAttribute("data-ajax-interval")||!1,"string"===typeof entry.interval&&-1<entry.interval.indexOf(".")&&(iv=entry.interval,entry.interval=h(iv,1),entry.maxRequests=h(iv,2)),this.map[this.map.length]=entry,delete entry;a=document.querySelectorAll("[data-ajax-config]");for(b=0;b<a.length;b++)dom2=a[b],config=dom2.getAttribute("data-ajax-config"),l(config)?(entry={},configJson=JSON.parse(config),
entry.id=dom2.getAttribute("id"),entry.url=configJson.url,entry.method=configJson.method,entry.event=configJson.event,"string"===typeof entry.event&&-1<entry.event.indexOf(".")&&(ev=entry.event,entry.event=h(ev,2),entry.id=h(ev,1)),entry.callback=configJson.callback,entry.params=configJson.params,entry.interval=configJson.interval,"string"===typeof entry.interval&&-1<entry.interval.indexOf(".")&&(iv=entry.interval,entry.interval=h(iv,1),entry.maxRequests=h(iv,2)),this.map[this.map.length]=entry,delete entry):
console.log("domAjax - error - data-ajax-config does not have valid JSON")})();v();window.domAjax=function(a,b){if("string"===typeof a)switch(a){case "version":return this.version;case "map":return this.map.slice();case "useDefaultCallback":if(b&&"boolean"===typeof b)this.useDefaultCallback=b;else return this.useDefaultCallback;break;default:return this.version}else x(a)&&v()}.bind(this);Array.isArray||(Array.isArray=function(a){return"[object Array]"===Object.prototype.toString.call(a)})})();
?>