forked from phcostabh/hinclude
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathhinclude.min.js
More file actions
1 lines (1 loc) · 3.66 KB
/
hinclude.min.js
File metadata and controls
1 lines (1 loc) · 3.66 KB
1
var hinclude;!function(){"use strict";var e=function(e,t){var n=e.getBoundingClientRect();return n.top>=0&&n.left>=0&&n.top-t<=(window.innerHeight||document.documentElement.clientHeight)};hinclude={classprefix:"include_",set_content_async:function(e,t){4===t.readyState&&(200!==t.status&&304!==t.status||(e.innerHTML=t.responseText),e.className=hinclude.classprefix+t.status)},buffer:[],set_content_buffered:function(e,t){4===t.readyState&&(hinclude.buffer.push([e,t]),hinclude.outstanding-=1,0===hinclude.outstanding&&hinclude.show_buffered_content())},show_buffered_content:function(){for(var e;hinclude.buffer.length>0;)e=hinclude.buffer.pop(),200!==e[1].status&&304!==e[1].status||(e[0].innerHTML=e[1].responseText),e[0].className=hinclude.classprefix+e[1].status},outstanding:0,includes:[],run:function(){var e,t=0,n=this.get_meta("include_mode","buffered");if(this.includes=document.getElementsByTagName("hx:include"),0===this.includes.length&&(this.includes=document.getElementsByTagName("include")),"async"===n)e=this.set_content_async;else if("buffered"===n){e=this.set_content_buffered;var i=1e3*this.get_meta("include_timeout",2.5);setTimeout(hinclude.show_buffered_content,i)}for(t;t<this.includes.length;t+=1)this.include(this.includes[t],this.includes[t].getAttribute("src"),this.includes[t].getAttribute("media"),e)},include:function(e,t,n,i){if(!n||!window.matchMedia||window.matchMedia(n).matches){if("true"===e.dataset.lazy)return void this.lazy(e,t,n,i);var d=t.substring(0,t.indexOf(":"));if("data"===d.toLowerCase()){var s=decodeURIComponent(t.substring(t.indexOf(",")+1,t.length));return void(e.innerHTML=s)}var a=!1;if(window.XMLHttpRequest)try{a=new XMLHttpRequest}catch(o){a=!1}else if(window.ActiveXObject)try{a=new ActiveXObject("Microsoft.XMLHTTP")}catch(u){a=!1}if(a){this.outstanding+=1,a.onreadystatechange=function(){i(e,a),4===a.readyState&&hinclude.dispatch_loaded_event(e)};try{a.open("GET",t,!0),a.setRequestHeader("X-Hinclude-Requested-With","XMLHttpRequest"),a.send("")}catch(c){this.outstanding-=1,alert("Include error: "+t+" ("+c+")")}}}},lazy:function(t,n,i,d){var s=+t.dataset.threshold||0;if(t.dataset.lazy&&delete t.dataset.lazy,t.dataset.treshhold&&delete t.dataset.threshold,e(t,s))return void this.include(t,n,i,d);var a=this,o=function(){e(t,s)&&(window.removeEventListener("scroll",o),window.removeEventListener("resize",o),a.include(t,n,i,d))};window.addEventListener("scroll",o),window.addEventListener("resize",o)},dispatch_loaded_event:function(e){var t;try{t=new CustomEvent("loaded",{bubbles:!1,cancelable:!1})}catch(n){t=document.createEvent("CustomEvent"),t.initEvent("loaded",!1,!1)}e.dispatchEvent(t)},refresh:function(e){var t,n=0;for(t=this.set_content_buffered,n;n<this.includes.length;n+=1)this.includes[n].getAttribute("id")===e&&this.include(this.includes[n],this.includes[n].getAttribute("src"),this.includes[n].getAttribute("media"),t)},get_meta:function(e,t){var n,i=0,d=document.getElementsByTagName("meta");for(i;i<d.length;i+=1)if(n=d[i].getAttribute("name"),n===e)return d[i].getAttribute("content");return t},addDOMLoadEvent:function(e){if(!window.__load_events){var t=function(){var e=0;if(!hinclude.addDOMLoadEvent.done){for(hinclude.addDOMLoadEvent.done=!0,window.__load_timer&&(clearInterval(window.__load_timer),window.__load_timer=null),e;e<window.__load_events.length;e+=1)window.__load_events[e]();window.__load_events=null}};document.addEventListener&&document.addEventListener("DOMContentLoaded",t,!1),/WebKit/i.test(navigator.userAgent)&&(window.__load_timer=setInterval(function(){/loaded|complete/.test(document.readyState)&&t()},10)),window.onload=t,window.__load_events=[]}window.__load_events.push(e)}},hinclude.addDOMLoadEvent(function(){hinclude.run()})}();