htmx/dist/htmx.min.js
2020-05-22 19:52:55 -07:00

1 line
17 KiB
JavaScript

var htmx=htmx||function(){"use strict";var e=["get","post","put","delete","patch"];function u(e){if(e==="null"||e==="false"||e===""){return null}else if(e.lastIndexOf("ms")===e.length-2){return parseFloat(e.substr(0,e.length-2))}else if(e.lastIndexOf("s")===e.length-1){return parseFloat(e.substr(0,e.length-1))*1e3}else{return parseFloat(e)}}function w(e,t){return e.getAttribute&&e.getAttribute(t)}function l(e,t){return w(e,t)||w(e,"data-"+t)}function n(e){return e.parentElement}function E(){return document}function o(e,t){if(t(e)){return e}else if(n(e)){return o(n(e),t)}else{return null}}function C(e,t){var r=null;o(e,function(e){return r=w(e,t)});return r}function s(e,t){var r=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.oMatchesSelector;return r&&r.call(e,t)}function r(e){var t=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i;var r=t.exec(e);if(r){return r[1].toLowerCase()}else{return""}}function i(e,t){var r=new DOMParser;var n=r.parseFromString(e,"text/html");var i=n.body;while(t>0){t--;i=i.firstChild}return i}function f(e){var t=r(e);switch(t){case"thead":case"tbody":case"tfoot":case"colgroup":case"caption":return i("<table>"+e+"</table>",1);case"col":return i("<table><colgroup>"+e+"</colgroup></table>",2);case"tr":return i("<table><tbody>"+e+"</tbody></table>",2);case"td":case"th":return i("<table><tbody><tr>"+e+"</tr></tbody></table>",3);default:return i(e,0)}}function t(e,t){return Object.prototype.toString.call(e)==="[object "+t+"]"}function a(e){return t(e,"Function")}function c(e){return t(e,"Object")}function O(e){var t="htmx-internal-data";var r=e[t];if(!r){r=e[t]={}}return r}function h(e){var t=[];if(e){for(var r=0;r<e.length;r++){t.push(e[r])}}return t}function L(e,t){if(e){for(var r=0;r<e.length;r++){t(e[r])}}}function v(e){var t=e.getBoundingClientRect();var r=t.top;var n=t.bottom;return r<window.innerHeight&&n>=0}function d(e){return E().body.contains(e)}function m(e,t){return e.concat(t)}function g(e){return e.split(/\s+/)}function p(e,t){for(var r in t){if(t.hasOwnProperty(r)){e[r]=t[r]}}return e}function y(e){return eval(e)}function x(t){var e=htmx.on("load.htmx",function(e){t(e.detail.elt)});return e}function b(){htmx.logger=function(e,t,r){if(console){console.log(t,e,r)}}}function S(e,t){if(t){return e.querySelector(t)}else{return E().body.querySelector(e)}}function T(e,t){if(t){return e.querySelectorAll(t)}else{return E().body.querySelectorAll(e)}}function q(e,t){if(t){setTimeout(function(){q(e)},t)}else{e.parentElement.removeChild(e)}}function H(e,t,r){if(r){setTimeout(function(){H(e,t)},r)}else{e.classList.add(t)}}function X(e,t,r){if(r){setTimeout(function(){X(e,t)},r)}else{e.classList.remove(t)}}function A(e,t){e.classList.toggle(t)}function N(e,t){L(e.parentElement.children,function(e){X(e,t)});H(e,t)}function R(e,t){do{if(e==null||s(e,t))return e}while(e=e&&n(e))}function M(e,t,r){if(a(t)){return{target:E().body,event:e,listener:t}}else{return{target:e,event:t,listener:r}}}function D(t,r,n){_e(function(){var e=M(t,r,n);e.target.addEventListener(e.event,e.listener)});var e=a(r);return e?r:n}function I(t,r,n){_e(function(){var e=M(t,r,n);e.target.removeEventListener(e.event,e.listener)});return a(r)?r:n}function F(e){var t=o(e,function(e){return w(e,"hx-target")!==null});if(t){var r=w(t,"hx-target");if(r==="this"){return t}else if(r.indexOf("closest ")===0){return R(e,r.substr(8))}else{return E().querySelector(r)}}else{var n=O(e);if(n.boosted){return E().body}else{return e}}}function P(t,r){L(t.attributes,function(e){if(!r.hasAttribute(e.name)){t.removeAttribute(e.name)}});L(r.attributes,function(e){t.setAttribute(e.name,e.value)})}function k(e){var n=[];L(h(e.children),function(e){if(l(e,"hx-swap-oob")==="true"){var t=E().getElementById(e.id);if(t){var r=E().createDocumentFragment();r.appendChild(e);n=n.concat(U(t,r))}else{e.parentNode.removeChild(e);pe(E().body,"oobErrorNoTarget.htmx",{content:e})}}});return n}function j(n,e){var i=[];L(e.querySelectorAll("[id]"),function(e){var t=n.querySelector(e.tagName+"[id="+e.id+"]");if(t){var r=e.cloneNode();P(e,t);i.push(function(){P(e,r)})}});return i}function J(e,t,r){var n=j(e,r);while(r.childNodes.length>0){var i=r.firstChild;e.insertBefore(i,t);if(i.nodeType!==Node.TEXT_NODE){ye(i,"load.htmx",{});de(i)}}return n}function U(e,t){if(e.tagName==="BODY"){return Y(e,t)}else{var r=J(n(e),e,t);n(e).removeChild(e);return r}}function z(e,t){return J(e,e.firstChild,t)}function B(e,t){return J(n(e),e,t)}function V(e,t){return J(e,null,t)}function G(e,t){return J(n(e),e.nextSibling,t)}function Y(e,t){var r=e.firstChild;var n=J(e,r,t);if(r){while(r.nextSibling){e.removeChild(r.nextSibling)}e.removeChild(r)}return n}function _(e,t){var r=C(e,"hx-select");if(r){var n=E().createDocumentFragment();L(t.querySelectorAll(r),function(e){n.appendChild(e)});t=n}return t}function K(t,r,e,n,i){switch(t){case"outerHTML":return m(r,U(n,i));case"afterbegin":return m(r,z(n,i));case"beforebegin":return m(r,B(n,i));case"beforeend":return m(r,V(n,i));case"afterend":return m(r,G(n,i));default:var r=null;L(Ye(e),function(e){if(r==null){r=e.handleSwap(t,n,i)}});if(r==null){r=Y(n,i)}return m(r,r)}}function Q(e,t,r,n){var i=f(n);if(i){var a=k(i);i=_(r,i);return K(e,a,r,t,i)}}function W(e,t){if(t){if(t.indexOf("{")===0){var r=JSON.parse(t);for(var n in r){if(r.hasOwnProperty(n)){var i=r[n];if(!c(i)){i={value:i}}ye(e,n,i)}}}else{ye(e,t,[])}}}function Z(e){var t={trigger:"click"};var r=l(e,"hx-trigger");if(r){var n=g(r);if(n.length>0){var i=n[0];if(i==="every"){t.pollInterval=u(n[1])}else if(i.indexOf("sse:")===0){t.sseEvent=i.substr(4)}else{t["trigger"]=i;for(var a=1;a<n.length;a++){var o=n[a].trim();if(o==="changed"){t.changed=true}if(o==="once"){t.once=true}if(o.indexOf("delay:")===0){t.delay=u(o.substr(6))}}}}}else{if(s(e,"form")){t["trigger"]="submit"}else if(s(e,"input, textarea, select")){t["trigger"]="change"}}return t}function $(e){var t=g(e);if(t.length>1){var r=t[0];var n=t[1].trim();var i;var a;if(n.indexOf(":")>0){var o=n.split(":");i=o[0];a=u(o[1])}else{i=n;a=100}return{operation:r,cssClass:i,delay:a}}else{return null}}function ee(i,e){L(e.split("&"),function(e){var n=0;L(e.split(","),function(e){var t=e.trim();var r=$(t);if(r){if(r.operation==="toggle"){setTimeout(function(){setInterval(function(){i.classList[r.operation].call(i.classList,r.cssClass)},r.delay)},n);n=n+r.delay}else{n=n+r.delay;setTimeout(function(){i.classList[r.operation].call(i.classList,r.cssClass)},n)}}})})}function te(e){O(e).cancelled=true}function re(e,t,r,n){var i=O(e);i.timeout=setTimeout(function(){if(d(e)&&i.cancelled!==true){Ue(e,t,r);re(e,t,l(e,"hx-"+t),n)}},n)}function ne(e){return location.hostname===e.hostname&&w(e,"href")&&w(e,"href").indexOf("#")!==0}function ie(e,t,r){if(e.tagName==="A"&&ne(e)||e.tagName==="FORM"){t.boosted=true;var n,i;if(e.tagName==="A"){n="get";i=w(e,"href")}else{var a=w(e,"method");n=a?a.toLowerCase():"get";i=w(e,"action")}oe(e,n,i,t,r,true)}}function ae(e){return e.tagName==="FORM"||s(e,'input[type="submit"], button')&&R(e,"form")!==null||e.tagName==="A"&&e.href&&e.href.indexOf("#")!==0}function oe(i,a,o,e,u,l){var t=function(e){if(l||ae(i))e.preventDefault();var t=O(e);var r=O(i);if(!t.handled){t.handled=true;if(u.once){if(r.triggeredOnce){return}else{r.triggeredOnce=true}}if(u.changed){if(r.lastValue===i.value){return}else{r.lastValue=i.value}}if(r.delayed){clearTimeout(r.delayed)}var n=function(){Ue(i,a,o,e.target)};if(u.delay){r.delayed=setTimeout(n,u.delay)}else{n()}}};e.trigger=u.trigger;e.eventListener=t;i.addEventListener(u.trigger,t)}function ue(){if(!window["htmxScrollHandler"]){var e=function(){L(E().querySelectorAll("[hx-trigger='revealed']"),function(e){le(e)})};window["htmxScrollHandler"]=e;window.addEventListener("scroll",e)}}function le(e){var t=O(e);if(!t.revealed&&v(e)){t.revealed=true;Ue(e,t.verb,t.path)}}function se(e){if(!d(e)){e.sseSource.close();return true}}function fe(t,e){var r={config:{withCredentials:true}};ye(t,"initSSE.htmx",r);var n=new EventSource(e,r.config);n.onerror=function(e){pe(t,"sseError.htmx",{error:e,source:n});se(t)};O(t).sseSource=n}function ce(e,t,r,n){var i=o(e,function(e){return e.sseSource});if(i){var a=function(){if(!se(i)){if(d(e)){Ue(e,t,r)}else{i.sseSource.removeEventListener(n,a)}}};i.sseSource.addEventListener(n,a)}else{pe(e,"noSSESourceError.htmx")}}function he(e,t,r,n,i){var a=function(){if(!n.loaded){n.loaded=true;Ue(e,t,r)}};if(i){setTimeout(a,i)}else{a()}}function ve(r,n,i){var a=false;L(e,function(e){var t=l(r,"hx-"+e);if(t){a=true;n.path=t;n.verb=e;if(i.sseEvent){ce(r,e,t,i.sseEvent)}else if(i.trigger==="revealed"){ue();le(r)}else if(i.trigger==="load"){he(r,e,t,n,i.delay)}else if(i.pollInterval){n.polling=true;re(r,e,t,i.pollInterval)}else{oe(r,e,t,n,i)}}});return a}function de(e){var t=O(e);if(!t.processed){t.processed=true;var r=Z(e);var n=ve(e,t,r);if(!n&&C(e,"hx-boost")==="true"){ie(e,t,r)}var i=l(e,"hx-sse-source");if(i){fe(e,i)}var a=l(e,"hx-classes");if(a){ee(e,a)}}if(e.children){L(e.children,function(e){de(e)})}}function me(e,t,r){var n=C(e,"hx-error-url");if(n){var i=new XMLHttpRequest;i.open("POST",n);i.setRequestHeader("Content-Type","application/json;charset=UTF-8");i.send(JSON.stringify({elt:e.id,event:t,detail:r}))}}function ge(e,t){var r;if(window.CustomEvent&&typeof window.CustomEvent==="function"){r=new CustomEvent(e,{bubbles:true,cancelable:true,detail:t})}else{r=E().createEvent("CustomEvent");r.initCustomEvent(e,true,true,t)}return r}function pe(e,t,r){ye(e,t,p({isError:true},r))}function ye(e,t,r){r["elt"]=e;var n=ge(t,r);if(htmx.logger){htmx.logger(e,t,r);if(r.isError){me(e,t,r)}}var i=e.dispatchEvent(n);L(Ye(e),function(e){i=i&&e.onEvent(t,n)!==false});return i}var xe=null;function be(){var e=E().querySelector("[hx-history-elt]");return e||E().body}function Se(e,t,r,n){var i=JSON.parse(localStorage.getItem("htmx-history-cache"))||[];for(var a=0;a<i.length;a++){if(i[a].url===e){i=i.slice(a,1);break}}i.push({url:e,content:t,title:r,scroll:n});while(i.length>htmx.config.historyCacheSize){i.shift()}localStorage.setItem("htmx-history-cache",JSON.stringify(i))}function we(e){var t=JSON.parse(localStorage.getItem("htmx-history-cache"))||[];for(var r=0;r<t.length;r++){if(t[r].url===e){return t[r]}}return null}function Ee(){var e=be();var t=xe||location.pathname+location.search;ye(E().body,"beforeHistorySave.htmx",{path:t,historyElt:e});if(htmx.config.historyEnabled)history.replaceState({},E().title,window.location.href);Se(t,e.innerHTML,E().title,window.scrollY)}function Ce(e){if(htmx.config.historyEnabled)history.pushState({},"",e);xe=e}function Oe(e){L(e,function(e){e.call()})}function Le(t){var e=new XMLHttpRequest;var r={path:t,xhr:e};ye(E().body,"historyCacheMiss.htmx",r);e.open("GET",t,true);e.onload=function(){if(this.status>=200&&this.status<400){ye(E().body,"historyCacheMissLoad.htmx",r);var e=f(this.response);e=e.querySelector("[hx-history-elt]")||e;Oe(Y(be(),e));xe=t}else{pe(E().body,"historyCacheMissLoadError.htmx",r)}};e.send()}function Te(e){Ee(xe);e=e||location.pathname+location.search;ye(E().body,"historyRestore.htmx",{path:e});var t=we(e);if(t){Oe(Y(be(),f(t.content)));document.title=t.title;window.scrollTo(0,t.scroll);xe=e}else{Le(e)}}function qe(e){return C(e,"hx-push-url")==="true"||e.tagName==="A"&&O(e).boosted}function He(e){Ae(e,"add")}function Xe(e){Ae(e,"remove")}function Ae(e,t){var r=C(e,"hx-indicator");if(r){var n=E().querySelectorAll(r)}else{n=[e]}L(n,function(e){e.classList[t].call(e.classList,"htmx-request")})}function Ne(e,t){for(var r=0;r<e.length;r++){var n=e[r];if(n.isSameNode(t)){return true}}return false}function Re(e){if(e.name===""||e.name==null||e.disabled){return false}if(e.type==="button"||e.type==="submit"||e.tagName==="image"||e.tagName==="reset"||e.tagName==="file"){return false}if(e.type==="checkbox"||e.type==="radio"){return e.checked}return true}function Me(t,r,e){if(e==null||Ne(t,e)){return}else{t.push(e)}if(Re(e)){var n=w(e,"name");var i=e.value;if(n&&i){var a=r[n];if(a){if(Array.isArray(a)){a.push(i)}else{r[n]=[a,i]}}else{r[n]=i}}}if(s(e,"form")){var o=e.elements;L(o,function(e){Me(t,r,e)})}}function De(e,t){var r=[];var n={};if(t!=="get"){Me(r,n,R(e,"form"))}Me(r,n,e);var i=C(e,"hx-include");if(i){var a=E().querySelectorAll(i);L(a,function(e){Me(r,n,e)})}return n}function Ie(e,t,r){if(e!==""){e+="&"}e+=encodeURIComponent(t)+"="+encodeURIComponent(r);return e}function Fe(e){var t="";for(var r in e){if(e.hasOwnProperty(r)){var n=e[r];if(Array.isArray(n)){L(n,function(e){t=Ie(t,r,e)})}else{t=Ie(t,r,n)}}}return t}function Pe(e,t,r,n){var i={"X-HX-Request":"true","X-HX-Trigger":w(e,"id"),"X-HX-Trigger-Name":w(e,"name"),"X-HX-Target":w(t,"id"),"Current-URL":E().location.href};if(r!==undefined){i["X-HX-Prompt"]=r}if(n){i["X-HX-Event-Target"]=w(n,"id")}if(E().activeElement){i["X-HX-Active-Element"]=w(E().activeElement,"id");i["X-HX-Active-Element-Name"]=w(E().activeElement,"name");if(E().activeElement.value){i["X-HX-Active-Element-Value"]=w(E().activeElement,"value")}}return i}function ke(t,e,r){var n=C(e,"hx-params");if(n){if(n==="none"){return{}}else if(n==="*"){return t}else if(n.indexOf("not ")===0){L(n.substr(4).split(","),function(e){e=e.trim();delete t[e]});return t}else{var i={};L(n.split(","),function(e){e=e.trim();i[e]=t[e]});return i}}else{return t}}function je(e){var t=C(e,"hx-swap");var r={swapStyle:htmx.config.defaultSwapStyle,swapDelay:htmx.config.defaultSwapDelay,settleDelay:htmx.config.defaultSettleDelay};if(t){var n=g(t);if(n.length>0){r["swapStyle"]=n[0];for(var i=1;i<n.length;i++){var a=n[i];if(a.indexOf("swap:")===0){r["swapDelay"]=u(a.substr(5))}if(a.indexOf("settle:")===0){r["settleDelay"]=u(a.substr(7))}}}}return r}function Je(t,r,n){var i=null;L(Ye(r),function(e){if(i==null){i=e.encodeParameters(t,n,r)}});if(i!=null){return i}else{return Fe(n)}}function Ue(o,e,u,t){var l=F(o);if(l==null){pe(o,"targetError.htmx",{target:w(o,"hx-target")});return}var r=O(o);if(r.requestInFlight){return}else{r.requestInFlight=true}var s=function(){r.requestInFlight=false};var n=C(o,"hx-prompt");if(n){var i=prompt(n);if(i===null||!ye(o,"prompt.htmx",{prompt:i,target:l}))return s()}var a=C(o,"hx-confirm");if(a){if(!confirm(a))return s()}var f=new XMLHttpRequest;var c=Pe(o,l,i,t);var h=De(o,e);var v=ke(h,o,e);if(e!=="get"){c["Content-Type"]="application/x-www-form-urlencoded; charset=UTF-8";if(e!=="post"){c["X-HTTP-Method-Override"]=e.toUpperCase()}}if(u==null||u===""){u=E().location.href}var d={parameters:v,unfilteredParameters:h,headers:c,target:l,verb:e};if(!ye(o,"configRequest.htmx",d))return s();var m=u.split("#");var g=m[0];var p=m[1];if(e==="get"){var y=g;var x=Object.keys(v).length!==0;if(x){if(y.indexOf("?")<0){y+="?"}else{y+="&"}y+=Fe(v);if(p){y+="#"+p}}f.open("GET",y,true)}else{f.open("POST",u,true)}f.overrideMimeType("text/html");for(var b in c){if(c.hasOwnProperty(b)){if(c[b]!==null)f.setRequestHeader(b,c[b])}}var S={xhr:f,target:l};f.onload=function(){try{if(!ye(o,"beforeOnLoad.htmx",S))return;W(o,this.getResponseHeader("X-HX-Trigger"));var r=this.getResponseHeader("X-HX-Push");var n=qe(o)||r;if(this.status>=200&&this.status<400){if(this.status===286){te(o)}if(this.status!==204){if(!ye(o,"beforeSwap.htmx",S))return;var i=this.response;L(Ye(o),function(e){i=e.transformResponse(i,f,o)});if(n){Ee()}var a=je(o);l.classList.add("htmx-swapping");var e=function(){try{var e=Q(a.swapStyle,l,o,i);l.classList.remove("htmx-swapping");l.classList.add("htmx-settling");ye(o,"afterSwap.htmx",S);if(p){location.hash=p}var t=function(){L(e,function(e){e.call()});l.classList.remove("htmx-settling");if(n){Ce(r||u)}ye(o,"afterSettle.htmx",S)};if(a.settleDelay>0){setTimeout(t,a.settleDelay)}else{t()}}catch(e){pe(o,"swapError.htmx",S);throw e}};if(a.swapDelay>0){setTimeout(e,a.swapDelay)}else{e()}}}else{pe(o,"responseError.htmx",S)}}catch(e){S["exception"]=e;pe(o,"onLoadError.htmx",S);throw e}finally{Xe(o);pe(o,"afterRequest.htmx",S);ye(o,"afterOnLoad.htmx",S);s()}};f.onerror=function(){Xe(o);pe(o,"afterRequest.htmx",S);pe(o,"sendError.htmx",S);s()};if(!ye(o,"beforeRequest.htmx",S))return s();He(o);f.send(e==="get"?null:Je(f,o,v))}var ze={};function Be(){return{onEvent:function(e,t){return true},transformResponse:function(e,t,r){return e},handleSwap:function(e,t,r){return null},encodeParameters:function(e,t,r){return null}}}function Ve(e,t){ze[e]=p(Be(),t)}function Ge(e){delete ze[e]}function Ye(e,r){if(e==null){return r}if(r==null){r=[]}var t=l(e,"hx-ext");if(t){L(t.split(","),function(e){e=e.replace(/ /g,"");var t=ze[e];if(t&&!r.includes(t)){r.push(t)}})}return Ye(n(e),r)}function _e(e){if(E().readyState!=="loading"){e()}else{E().addEventListener("DOMContentLoaded",e)}}(function(){var e=Ke();if(e===null||e.includeIndicatorStyles!==false){E().head.insertAdjacentHTML("beforeend","<style> .htmx-indicator{opacity:0;transition: opacity 200ms ease-in;} .htmx-request .htmx-indicator{opacity:1} .htmx-request.htmx-indicator{opacity:1} </style>")}})();function Ke(){var e=E().querySelector('meta[name="htmx-config"]');if(e){return JSON.parse(e.content)}else{return null}}function Qe(){var e=Ke();if(e){htmx.config=p(htmx.config,e)}}_e(function(){Qe();var e=E().body;de(e);ye(e,"load.htmx",{});window.onpopstate=function(){Te()}});return{onLoad:x,process:de,on:D,off:I,trigger:ye,find:S,findAll:T,closest:R,remove:q,addClass:H,removeClass:X,toggleClass:A,takeClass:N,defineExtension:Ve,removeExtension:Ge,logAll:b,logger:null,config:{historyEnabled:true,historyCacheSize:10,defaultSwapStyle:"innerHTML",defaultSwapDelay:0,defaultSettleDelay:100,includeIndicatorStyles:true},_:y}}();