htmx.org 2.0.7 → 4.0.0-alpha1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/htmx.esm.js +1979 -5172
- package/dist/htmx.esm.js.br +0 -0
- package/dist/htmx.esm.min.js +1 -0
- package/dist/htmx.esm.min.js.br +0 -0
- package/dist/htmx.js +1984 -5177
- package/dist/htmx.js.br +0 -0
- package/dist/htmx.min.js +1 -1
- package/dist/htmx.min.js.br +0 -0
- package/package.json +37 -83
- package/{editors → src/editors}/jetbrains/htmx.web-types.json +1 -1
- package/dist/ext/README.md +0 -9
- package/dist/ext/ajax-header.js +0 -11
- package/dist/ext/alpine-morph.js +0 -20
- package/dist/ext/class-tools.js +0 -97
- package/dist/ext/client-side-templates.js +0 -100
- package/dist/ext/debug.js +0 -15
- package/dist/ext/disable-element.js +0 -20
- package/dist/ext/event-header.js +0 -41
- package/dist/ext/head-support.js +0 -146
- package/dist/ext/include-vals.js +0 -28
- package/dist/ext/json-enc.js +0 -16
- package/dist/ext/loading-states.js +0 -189
- package/dist/ext/method-override.js +0 -15
- package/dist/ext/morphdom-swap.js +0 -21
- package/dist/ext/multi-swap.js +0 -50
- package/dist/ext/path-deps.js +0 -63
- package/dist/ext/path-params.js +0 -15
- package/dist/ext/preload.js +0 -151
- package/dist/ext/rails-method.js +0 -14
- package/dist/ext/remove-me.js +0 -31
- package/dist/ext/response-targets.js +0 -135
- package/dist/ext/restored.js +0 -19
- package/dist/ext/sse.js +0 -374
- package/dist/ext/ws.js +0 -481
- package/dist/htmx.amd.js +0 -5335
- package/dist/htmx.cjs.js +0 -5333
- package/dist/htmx.esm.d.ts +0 -213
- package/dist/htmx.min.js.gz +0 -0
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var htmx=(()=>{class e{#e=null;#t=[];issue(e,t){return this.#e?"replace"===t?(this.#t.map(e=>e.status="dropped"),this.#t=[],this.#e&&this.#e.abort(),!0):("queue all"===t?(this.#t.push(e),e.status="queued"):"drop"===t?e.status="dropped":"queue last"===t?(this.#t.map(e=>e.status="dropped"),this.#t=[e],e.status="queued"):0===this.#t.length?(this.#t.push(e),e.status="queued"):e.status="dropped",!1):(this.#e=e,!0)}finish(){this.#e=null}next(){return this.#t.shift()}abort(){this.#e?.abort?.()}more(){return this.#t?.length}}return new class{#r=new Map;#i=new Set;#s;#n;#a="a,form";#o=["get","post","put","patch","delete"];#l;#h;#u;constructor(){this.#d(),this.#c(),this.#n=`[${this.#p("hx-action")}],[${this.#p("hx-get")}],[${this.#p("hx-post")}],[${this.#p("hx-put")}],[${this.#p("hx-patch")}],[${this.#p("hx-delete")}]`,this.#l=(new XPathEvaluator).createExpression(`.//*[@*[ starts-with(name(), "${this.#p("hx-on:")}")]]`),this.#s={attributeValue:this.#f.bind(this),parseTriggerSpecs:this.#m.bind(this),determineMethodAndAction:this.#g.bind(this),createRequestContext:this.#x.bind(this),collectFormData:this.#b.bind(this),handleHxVals:this.#y.bind(this)},document.addEventListener("DOMContentLoaded",()=>{this.#v(),this.process(document.body)})}#d(){this.config={logAll:!1,prefix:"",transitions:!0,history:!0,historyReload:!1,mode:"same-origin",defaultSwap:"innerHTML",indicatorClass:"htmx-indicator",requestClass:"htmx-request",includeIndicatorCSS:!0,defaultTimeout:6e4,extensions:"",streams:{mode:"once",maxRetries:1/0,initialDelay:500,maxDelay:3e4,pauseHidden:!1},morphIgnore:["data-htmx-powered"],noSwap:[204]};let e=document.querySelector('meta[name="htmx:config"]');if(e){let t=JSON.parse(e.content);for(let e in t){let r=t[e];r&&"object"==typeof r&&!Array.isArray(r)&&this.config[e]?Object.assign(this.config[e],r):this.config[e]=r}}this.#i=new Set(this.config.extensions.split(",").map(e=>e.trim()).filter(Boolean))}#c(){if(!1!==this.config.includeIndicatorCSS){let e="";this.config.inlineStyleNonce&&(e=` nonce="${this.config.inlineStyleNonce}"`);let t=this.config.indicatorClass,r=this.config.requestClass;document.head.insertAdjacentHTML("beforeend",`<style${e}>.${t}{opacity:0;visibility: hidden} .${r} .${t}, .${r}.${t}{opacity:1;visibility: visible;transition: opacity 200ms ease-in}</style>`)}}defineExtension(e,t){if(!this.#i.delete(e))return!1;t.init&&t.init(this.#s),Object.entries(t).forEach(([e,t])=>{this.#r.get(e)?.push(t)||this.#r.set(e,[t])})}#S(e){return!e.closest||null!=e.closest(`[${this.#p("hx-ignore")}]`)}#p(e){return this.config.prefix?e.replace("hx-",this.config.prefix):e}#E(e,t){let r=[...e.querySelectorAll(t)];return e.matches?.(t)&&r.unshift(e),r}#w(e){return"before"===e?"beforebegin":"after"===e?"afterend":"prepend"===e?"afterbegin":"append"===e?"beforeend":e}#f(e,t,r){let i=(t=this.#p(t))+":append",s=t+":inherited",n=t+":inherited:append";if(e.hasAttribute(t)||e.hasAttribute(s))return e.getAttribute(t)||e.getAttribute(s);if(e.hasAttribute(i)||e.hasAttribute(n)){let r=e.getAttribute(i)||e.getAttribute(n),a=e.parentNode?.closest?.(`[${CSS.escape(s)}],[${CSS.escape(n)}]`);if(a){let e=this.#f(a,t);return e?e+","+r:r}return r}let a=e.parentNode?.closest?.(`[${CSS.escape(s)}],[${CSS.escape(n)}]`);return a?this.#f(a,t):r}#q(e){let t=[],r=0;for(;r<e.length;){let i=e[r];if('"'===i||"'"===i){let s=i,n=i;for(r++;r<e.length;)if(i=e[r],n+=i,r++,"\\"===i&&r<e.length)n+=e[r],r++;else if(i===s)break;t.push(n)}else if(/\s/.test(i))for(;r<e.length&&/\s/.test(e[r]);)r++;else if(":"===i||","===i)t.push(i),r++;else{let i="";for(;r<e.length&&!/[\s"':,]/.test(e[r]);)i+=e[r++];t.push(i)}}return t}#m(e){let t=[],r=null,i=this.#q(e);for(let e=0;e<i.length;e++){let s=i[e];if(","===s)r=null;else if(r)":"===i[e+1]?r[s]=i[e+=2]:r[s]=!0;else{for(;s.includes("[")&&!s.includes("]")&&e+1<i.length;)s+=i[++e];if(s.includes("[")&&!s.includes("]"))throw"unterminated:"+s;r={name:s},t.push(r)}}return t}#g(e,t){if(this.#A(e))return this.#T(e,t);{let t=this.#f(e,"hx-method")||"get",r=this.#f(e,"hx-action");if(!r)for(let i of this.#o){let s=this.#f(e,"hx-"+i);if(s){r=s,t=i;break}}return t=t.toUpperCase(),{action:r,method:t}}}#T(e,t){if(e.matches("a"))return{action:e.getAttribute("href"),method:"GET"};return{action:t.submitter?.getAttribute?.("formAction")||e.getAttribute("action"),method:t.submitter?.getAttribute?.("formMethod")||e.getAttribute("method")||"GET"}}#C(e){this.#N(e)&&this.#H(e,"htmx:before:init",{},!0)&&(e._htmx={eventHandler:this.#M(e)},e.setAttribute("data-htmx-powered","true"),this.#O(e),this.#I(e),this.#k(e),this.#H(e,"htmx:after:init",{},!0),this.#H(e,"load",{},!1))}#M(e){return async t=>{try{let r=this.#x(e,t);await this.#_(r)}catch(e){console.error(e)}}}#x(e,t){let{action:r,method:i}=this.#g(e,t),s={sourceElement:e,sourceEvent:t,status:"created",select:this.#f(e,"hx-select"),selectOOB:this.#f(e,"hx-select-oob"),target:this.#f(e,"hx-target"),swap:this.#f(e,"hx-swap",this.config.defaultSwap),push:this.#f(e,"hx-push-url"),replace:this.#f(e,"hx-replace-url"),transition:this.config.transitions,request:{validate:"true"===this.#f(e,"hx-validate",e.matches("form")?"true":"false"),action:r,method:i,headers:this.#L(e)}},n=this.#f(e,"hx-config");if(n){let e=JSON.parse(n),t=s.request;for(let r in e)if(r.startsWith("+")){let i=r.substring(1);t[i]&&"object"==typeof s[i]?Object.assign(s[i],e[r]):t[i]=e[r]}else t[r]=e[r]}return s}#L(e){let t={"HX-Request":"true",Accept:"text/html, text/event-stream"};this.#A(e)&&(t["HX-Boosted"]="true");let r=this.#f(e,"hx-headers");return r&&Object.assign(t,JSON.parse(r)),t}#V(e,t){return t instanceof Element?t:"this"===t?e.hasAttribute(this.#p("hx-target"))?e:e.closest(`[${this.#p("hx-target")}\\:inherited='this']`):null!=t?this.find(e,t):this.#A(e)?document.body:e}#A(e){return e._htmx?.boosted}async __handleTriggerEvent(e){let t=e.sourceElement,r=e.sourceEvent;if(!t.isConnected)return;if(this.#D(r))return;this.#R(r)&&r.preventDefault(),e.target=this.#V(t,e.target);let i=t.form||t.closest("form"),s=this.#b(t,i,r.submitter);if(this.#y(t,s),e.values)for(let t in e.values)s.delete(t),s.append(t,e.values[t]);let n=new AbortController,a=e.request.action.replace?.(/#.*$/,"");if(Object.assign(e.request,{originalAction:e.request.action,action:a,form:i,submitter:r.submitter,abort:n.abort.bind(n),body:s,credentials:"same-origin",signal:n.signal,mode:this.config.mode}),!this.#H(t,"htmx:config:request",{ctx:e}))return;if(!this.#o.includes(e.request.method.toLowerCase()))return;if(e.request.validate&&e.request.form&&!e.request.form.reportValidity())return;let o=this.#B(e.request.action);if(o){let t=Object.fromEntries(e.request.body);return void await this.#j(e.sourceElement,t,o,!1)}if(/GET|DELETE/.test(e.request.method)){let t=new URLSearchParams(e.request.body);t.size&&(e.request.action+=(/\?/.test(e.request.action)?"&":"?")+t),e.request.body=null}else"multipart/form-data"!==this.#f(t,"hx-encoding")&&(e.request.body=new URLSearchParams(e.request.body));await this.#$(e)}async __issueRequest(e){let t=e.sourceElement,r=this.#z(t),i=this.#P(t);if(!i.issue(e,r))return;e.status="issuing",this.#F(e);let s=this.#f(t,"hx-indicator"),n=this.#Q(t,s),a=this.#f(t,"hx-disable"),o=this.#U(t,a);try{let r=this.#f(t,"hx-confirm");if(r){let t=this.#B(r);if(t){if(!await this.#j(e.elt,{},t,!0))return}else if(!window.confirm(r))return}if(e.fetch||=window.fetch,!this.#H(t,"htmx:before:request",{ctx:e}))return;let i=await(e.fetchOverride||e.fetch(e.request.action,e.request));if(e.response={raw:i,status:i.status,headers:i.headers},this.#W(e),!this.#H(t,"htmx:after:request",{ctx:e}))return;if(this.#J(e))return;let s=i.headers.get("Content-Type")?.includes("text/event-stream");s?await this.#G(e,t,i):(e.text=await i.text(),"issuing"===e.status&&(e.hx.retarget&&(e.target=this.#V(t,e.hx.retarget)),e.hx.reswap&&(e.swap=e.hx.reswap),e.hx.reselect&&(e.select=e.hx.reselect),e.status="response received",this.#K(e),this.#X(e),await this.swap(e),this.#Y(e),e.status="swapped"))}catch(r){e.status="error: "+r,this.#H(t,"htmx:error",{ctx:e,error:r})}finally{this.#Z(n),this.#ee(o),this.#H(t,"htmx:finally:request",{ctx:e}),i.finish(),i.more()&&this.#$(i.next())}}#W(e,t){e.hx={};for(let[t,r]of e.response.raw.headers)t.toLowerCase().startsWith("hx-")&&(e.hx[t.slice(3).toLowerCase().replace(/-/g,"")]=r)}#J(e){if(e.hx.trigger&&this.#te(e.hx.trigger,e.sourceElement),"true"===e.hx.refresh)return location.reload(),!0;if(e.hx.redirect)return location.href=e.hx.redirect,!0;if(e.hx.location){let t=e.hx.location,r={};return"{"===t[0]&&(r=JSON.parse(t),t=r.path,delete r.path),r.push=r.push||"true",this.ajax("GET",t,r),!0}}async __handleSSE(e,t,r){let i=t._htmx?.streamConfig||{...this.config.streams},s=()=>new Promise(e=>{let t=()=>!document.hidden&&(document.removeEventListener("visibilitychange",t),e());document.addEventListener("visibilitychange",t)}),n=null,a=0,o=r;for(;t.isConnected;){if(a>0){if("continuous"!==i.mode||a>i.maxRetries)break;if(i.pauseHidden&&document.hidden&&(await s(),!t.isConnected))break;let r={attempt:a,delay:Math.min(i.initialDelay*Math.pow(2,a-1),i.maxDelay),lastEventId:n,cancelled:!1};if(e.status="reconnecting to stream",!this.#H(t,"htmx:before:sse:reconnect",{ctx:e,reconnect:r})||r.cancelled)break;if(await new Promise(e=>setTimeout(e,r.delay)),!t.isConnected)break;try{n&&((e.request.headers=e.request.headers||{})["Last-Event-ID"]=n),o=await fetch(e.request.action,e.request)}catch(r){e.status="stream error",this.#H(t,"htmx:error",{ctx:e,error:r}),a++;continue}}if(!this.#H(t,"htmx:before:sse:stream",{ctx:e}))break;e.status="streaming",a=0;try{for await(const r of this.#re(o)){if(!t.isConnected)break;if(i.pauseHidden&&document.hidden&&(await s(),!t.isConnected))break;let a={data:r.data,event:r.event,id:r.id,cancelled:!1};this.#H(t,"htmx:before:sse:message",{ctx:e,message:a})&&!a.cancelled&&(r.id&&(n=r.id),r.event?(this.#H(t,r.event,{data:r.data,id:r.id}),this.#H(t,"htmx:after:sse:message",{ctx:e,message:a})):(e.text=r.data,e.status="stream message received",e.response.cancelled||(this.#X(e),await this.swap(e),this.#Y(e),e.status="swapped"),this.#H(t,"htmx:after:sse:message",{ctx:e,message:a})))}}catch(r){e.status="stream error",this.#H(t,"htmx:error",{ctx:e,error:r})}if(!t.isConnected)break;this.#H(t,"htmx:after:sse:stream",{ctx:e}),a++}}async*__parseSSE(e){let t,r,i,s,n,a=e.body.getReader(),o=new TextDecoder,l="",h={data:"",event:"",id:"",retry:null};try{for(;;){let{done:e,value:u}=await a.read();if(e)break;for(let e of(l+=o.decode(u,{stream:1}),t=l.split("\n"),l=t.pop()||"",t))e&&"\r"!==e?(r=e.indexOf(":"))>0&&(s=e.slice(0,r),n=e.slice(r+1).trimStart(),"data"===s?h.data+=(h.data?"\n":"")+n:"event"===s?h.event=n:"id"===s?h.id=n:"retry"===s&&(i=parseInt(n,10),!isNaN(i))&&(h.retry=i)):h.data&&(yield h,h={data:"",event:"",id:"",retry:null})}}finally{a.releaseLock()}}#F(e){let t;t=e.request.timeout?"string"==typeof e.request.timeout?this.parseInterval(e.request.timeout):e.request.timeout:this.config.defaultTimeout,e.requestTimeout=setTimeout(()=>e.abort?.(),t)}#z(e){let t=this.#f(e,"hx-sync");return t?.split(":")[1]||"queue first"}#P(t){let r=this.#f(t,"hx-sync"),i=t;if(r&&r.includes(":")){let e=r.split(":")[0];i=this.#ie(e)}return i._htmxRequestQueue||=new e}#D(e){return"click"===e.type&&(e.ctrlKey||e.metaKey||e.shiftKey)}#R(e){let t=e.currentTarget;if("submit"===e.type&&"FORM"===t?.tagName)return!0;if(!("click"===e.type&&0===e.button))return!1;let r=t?.closest?.('button, input[type="submit"], input[type="image"]'),i=r?.form||r?.closest("form");if(r&&!r.disabled&&i&&("submit"===r.type||"image"===r.type||!r.type&&"BUTTON"===r.tagName))return!0;let s=t?.closest?.("a");if(!s||!s.href)return!1;let n=s.getAttribute("href");return!(n&&n.startsWith("#")&&n.length>1)}#O(e,t=e._htmx.eventHandler){let r=this.#f(e,"hx-trigger");r||(r=e.matches("form")?"submit":e.matches("input:not([type=button]),select,textarea")?"change":"click"),e._htmx.triggerSpecs=this.#m(r),e._htmx.listeners=[];for(let r of e._htmx.triggerSpecs){r.handler=t,r.listeners=[],r.values={};let[i,s]=this.#se(r.name);if(r.once){let e=r.handler;r.handler=t=>{e(t);for(let e of r.listeners)e.fromElt.removeEventListener(e.eventName,e.handler)}}if("intersect"===i||"revealed"===i){let t={};r.opts?.root&&(t.root=this.#ie(e,r.opts.root)),r.opts?.threshold&&(t.threshold=parseFloat(r.opts.threshold));let s="revealed"===i;r.observer=new IntersectionObserver(t=>{for(let i=0;i<t.length;i++){if(t[i].isIntersecting){this.trigger(e,"intersect",{},!1),s&&r.observer.disconnect();break}}},t),i="intersect",r.observer.observe(e)}if(r.delay){let e=r.handler;r.handler=t=>{clearTimeout(r.timeout),r.timeout=setTimeout(()=>e(t),this.parseInterval(r.delay))}}if(r.throttle){let e=r.handler;r.handler=t=>{r.throttled?r.throttledEvent=t:(r.throttled=!0,e(t),r.throttleTimeout=setTimeout(()=>{if(r.throttled=!1,r.throttledEvent){let e=r.throttledEvent;r.throttledEvent=null,r.handler(e)}},this.parseInterval(r.throttle)))}}if(r.target){let e=r.handler;r.handler=t=>{t.target?.matches?.(r.target)&&e(t)}}if("every"===i){let t=Object.keys(r).find(e=>"name"!==e);r.interval=setInterval(()=>{e.isConnected?this.#H(e,"every",{},!1):clearInterval(r.interval)},this.parseInterval(t))}if(s){let t=r.handler;r.handler=r=>{this.#R(r)&&r.preventDefault(),this.#ne(e,r,s)&&t(r)}}let n=[e];if(r.from&&(n=this.#ae(e,r.from)),r.consume){let e=r.handler;r.handler=t=>{t.stopPropagation(),e(t)}}if(r.changed){let e=r.handler;r.handler=t=>{let i=!1;for(let e of n)r.values[e]!==e.value&&(i=!0,r.values[e]=e.value);i&&e(t)}}for(let t of n){let s={fromElt:t,eventName:i,handler:r.handler};e._htmx.listeners.push(s),r.listeners.push(s),t.addEventListener(i,r.handler)}}}#I(e){let t=this.#f(e,"hx-stream");if(!t)return;let r={...this.config.streams},i=this.#q(t);for(let e=0;e<i.length;e++){let t=i[e];if("once"===t||"continuous"===t)r.mode=t;else if("pauseHidden"===t)r.pauseHidden=!0;else if(":"===i[e+1]){let s=t,n=i[e+2];"mode"===s?r.mode=n:"maxRetries"===s?r.maxRetries=parseInt(n):"initialDelay"===s?r.initialDelay=this.parseInterval(n):"maxDelay"===s?r.maxDelay=this.parseInterval(n):"pauseHidden"===s&&(r.pauseHidden="true"===n),e+=2}}e._htmx||(e._htmx={}),e._htmx.streamConfig=r}#se(e){let t=e.match(/^([^\[]*)\[([^\]]*)]/);return t?[t[1],t[2]]:[e,null]}#te(e,t){if("{"===e[0]){let r=JSON.parse(e);for(let e in r){let i=r[e];i?.target&&(t=this.find(i.target)||t),this.trigger(t,e,"object"==typeof i?i:{value:i})}}else e.split(",").forEach(e=>this.trigger(t,e.trim(),{}))}#oe(e){let t={},r=Object.getPrototypeOf(this);for(let i of Object.getOwnPropertyNames(r))"constructor"!==i&&"function"==typeof this[i]&&(["find","findAll"].includes(i)?t[i]=(t,r)=>void 0===r?this[i](e,t):this[i](t,r):t[i]=this[i].bind(this));return t}async __executeJavaScriptAsync(e,t,r,i=!0){let s={};Object.assign(s,this.#oe(e)),Object.assign(s,t);let n=Object.keys(s),a=Object.values(s),o=new(0,Object.getPrototypeOf(async function(){}).constructor)(...n,i?`return (${r})`:r);return await o.call(e,...a)}#ne(e,t,r){let i={};Object.assign(i,this.#oe(e));for(let e in t)i[e]=t[e];let s=Object.keys(i),n=Object.values(i);return new Function(...s,`return (${r})`).call(e,...n)}process(e){if(!e||this.#S(e))return;if(!this.#H(e,"htmx:before:process"))return;for(let t of this.#E(e,this.#n))this.#C(t);for(let t of this.#E(e,this.#a))this.#le(t);this.#he(e);let t=this.#l.evaluate(e),r=null;for(;r=t.iterateNext();)this.#he(r);this.#H(e,"htmx:after:process")}#le(e){"true"===this.#f(e,"hx-boost")&&this.#N(e)&&(e._htmx={eventHandler:this.#M(e),requests:[],boosted:!0},e.setAttribute("data-htmx-powered","true"),e.matches("a")&&!e.hasAttribute("target")?e.addEventListener("click",t=>{e._htmx.eventHandler(t)}):e.addEventListener("submit",t=>{e._htmx.eventHandler(t)}))}#N(e){return!e._htmx&&!this.#S(e)}#ue(e){if(e._htmx){this.#H(e,"htmx:before:cleanup"),e._htmx.interval&&clearInterval(e._htmx.interval);for(let t of e._htmx.triggerSpecs||[])t.interval&&clearInterval(t.interval),t.timeout&&clearTimeout(t.timeout);for(let t of e._htmx.listeners||[])t.fromElt.removeEventListener(t.eventName,t.handler);this.#H(e,"htmx:after:cleanup")}for(let t of e.querySelectorAll("[data-htmx-powered]"))this.#ue(t)}#de(e){let t=document.createElement("div");t.style.display="none",document.body.appendChild(t);let r=e.querySelectorAll?.(`[${this.#p("hx-preserve")}]`)||[];for(let e of r){let r=document.getElementById(e.id);t.moveBefore?t.moveBefore(r,null):t.appendChild(r)}return t}#ce(e){for(let t of e.children){let e=document.getElementById(t.id);e.parentNode.moveBefore?e.parentNode.moveBefore(t,e):e.replaceWith(t),this.#ue(e),e.remove()}e.remove()}#pe(e){return Document.parseHTMLUnsafe?.(e)||(new DOMParser).parseFromString(e,"text/html")}#fe(e){let t,r,i=e.replace(/<partial(\s+|>)/gi,"<template partial$1").replace(/<\/partial>/gi,"</template>"),s=i.replace(/<head(\s[^>]*)?>[\s\S]*?<\/head>/i,""),n=s.match(/<([a-z][^\/>\x20\t\r\n\f]*)/i)?.[1]?.toLowerCase();return"html"===n?(t=this.#pe(i),r=t.body):"body"===n?(t=this.#pe(s),r=t.body):(t=this.#pe(`<template>${s}</template>`),r=t.querySelector("template").content),{fragment:r,title:t.title}}#me(e,t,r,i){let s=t.id?"#"+CSS.escape(t.id):null;if("true"!==r&&r&&!r.includes(" ")){let e=r.indexOf(":");-1!==e&&(s=r.substring(e+1),r=r.substring(0,e))}"true"!==r&&r||(r="outerHTML");let n=this.#ge(r);n.target&&(s=n.target);let a,o=t.cloneNode(!0);void 0===n.strip&&"outerHTML"!==n.style&&(n.strip=!0),n.strip?a=o.content||o:(a=document.createDocumentFragment(),a.appendChild(o)),t.remove(),(s||r.includes("target:"))&&e.push({type:"oob",fragment:a,target:s,swapSpec:n,sourceElement:i})}#xe(e,t,r){let i=[];if(r)for(let s of r.split(",")){let[r,...n]=s.split(":"),a=n.length?n.join(":"):"true";for(let s of e.querySelectorAll(r))this.#me(i,s,a,t)}for(let r of e.querySelectorAll(`[${this.#p("hx-swap-oob")}]`)){let e=r.getAttribute(this.#p("hx-swap-oob"));r.removeAttribute(this.#p("hx-swap-oob")),this.#me(i,r,e,t)}return i}#be(e,t,r){t?t.before(...r.childNodes):e.append(...r.childNodes)}#ge(e){let t=this.#q(e),r={style:":"===t[1]?this.config.defaultSwap:t[0]||this.config.defaultSwap};r.style=this.#w(r.style);for(let e=":"===t[1]?0:1;e<t.length;e++)if(":"===t[e+1]){let i=t[e],s=t[e+=2];if("swap"===i)r.swapDelay=this.parseInterval(s);else if("transition"===i||"ignoreTitle"===i||"strip"===i)r[i]="true"===s;else if("focus-scroll"===i)r.focusScroll="true"===s;else if("scroll"===i||"show"===i){let n=[s];for(;":"===t[e+1];)n.push(t[e+2]),e+=2;r[i]=1===n.length?n[0]:n.pop(),n.length>1&&(r[i+"Target"]=n.join(":"))}else if("target"===i){let n=[s];for(;e+1<t.length&&":"!==t[e+1]&&":"!==t[e+2];)n.push(t[e+1]),e++;r[i]=n.join(" ")}}return r}#ye(e,t){let r=[];for(let i of e.querySelectorAll("template[partial]")){let e=this.#ge(i.getAttribute(this.#p("hx-swap"))||this.config.defaultSwap);r.push({type:"partial",fragment:i.content.cloneNode(!0),target:i.getAttribute(this.#p("hx-target")),swapSpec:e,sourceElement:t}),i.remove()}return r}#ve(e,t){"top"===t?e.scrollTop=0:"bottom"===t&&(e.scrollTop=e.scrollHeight)}#Y(e){let t=e.request.originalAction?.split("#")[1];t&&document.getElementById(t)?.scrollIntoView({block:"start",behavior:"auto"})}#Se(e){let t=this.#E(e,"script");for(let e of t){let t=document.createElement("script");for(let r of e.attributes)t.setAttribute(r.name,r.value);this.config.inlineScriptNonce&&(t.nonce=this.config.inlineScriptNonce),t.textContent=e.textContent,e.replaceWith(t)}}async swap(e){let{fragment:t,title:r}=this.#fe(e.text),i=[],s=this.#xe(t,e.sourceElement,e.selectOOB),n=this.#ye(t,e.sourceElement);i.push(...s,...n);let a=this.#Ee(e,t,n,r);if(a&&i.push(a),0===i.length)return;let o=i.filter(e=>e.transition),l=i.filter(e=>!e.transition);if(this.#H(document,"htmx:before:swap",{ctx:e,tasks:i})){for(let e of l)e.swapSpec?.swapDelay?setTimeout(()=>this.#we(e),e.swapSpec.swapDelay):this.#we(e);if(o.length>0){let e=()=>{for(let e of o)this.#we(e)};await this.#qe(e)}this.#H(document,"htmx:after:swap",{ctx:e}),a?.title&&(document.title=a.title),await this.timeout(1);for(let e of i)for(let t of e.restoreTasks||[])t();this.#H(document,"htmx:after:restore",{ctx:e})}}#Ee(e,t,r,i){let s=this.#ge(e.swap||this.config.defaultSwap);if("delete"===s.style||/\S/.test(t.innerHTML||"")||!r.length){let r=document.createDocumentFragment();if(e.select){let i=t.querySelector(e.select);i&&(!1===s.strip?r.append(i):r.append(...i.childNodes))}else r.append(...t.childNodes);return{type:"main",fragment:r,target:s.target||e.target,swapSpec:s,sourceElement:e.sourceElement,transition:!1!==e.transition&&!1!==s.transition,title:i}}}#we(e){let{target:t,swapSpec:r,fragment:i}=e;if("string"==typeof t&&(t=document.querySelector(t)),!t)return;let s=this.#de(i);this.#Se(i);let n=t.parentNode,a=[...i.childNodes];if("innerHTML"===r.style){this.#Ae(e,t);for(const e of t.children)this.#ue(e);t.replaceChildren(...i.childNodes)}else if("outerHTML"===r.style)n&&(this.#Ae(e,n),this.#be(n,t,i),this.#ue(t),n.removeChild(t));else if("innerMorph"===r.style)this.#Te(t,i,!0);else if("outerMorph"===r.style)this.#Te(t,i,!1);else if("beforebegin"===r.style)n&&this.#be(n,t,i);else if("afterbegin"===r.style)this.#be(t,t.firstChild,i);else if("beforeend"===r.style)this.#be(t,null,i);else{if("afterend"!==r.style){if("delete"===r.style)return void(n&&(this.#ue(t),n.removeChild(t)));if("none"===r.style)return;if(this.#Ce(t,"htmx:handle:swap",e))throw new Error(`Unknown swap style: ${r.style}`);return}n&&this.#be(n,t.nextSibling,i)}this.#ce(s);for(const e of a)this.process(e);r.scroll&&this.#ve(t,r.scroll)}#H(e,t,r={},i=!0){return this.config.logAll&&console.log(t,r,e),this.trigger(e,t,r,i)}#Ce(e,t,r={}){let i=this.#r.get(t.replace(/:/g,"_"));if(i){r.cancelled=!1;for(const t of i)if(!1===t(e,r)||r.cancelled)return r.cancelled=!0,!1}return!0}timeout(e){if("string"==typeof e&&(e=this.parseInterval(e)),e>0)return new Promise(t=>setTimeout(t,e))}forEvent(e,t,r=document){return new Promise((i,s)=>{let n=e=>{clearTimeout(a),i(e)},a=t&&setTimeout(()=>{r.removeEventListener(e,n),i(null)},t);r.addEventListener(e,n,{once:!0})})}on(e,t,r){let i,s=document;return void 0===r?(i=e,r=t):(s=this.#Ne(e),i=t),s.addEventListener(i,r),r}find(e,t){return this.#ie(e,t)}findAll(e,t){return this.#ae(e,t)}parseInterval(e){let[,t,r]=e?.match(/^([\d.]+)(ms|s|m)?$/)||[],i=parseFloat(t)*({ms:1,s:1e3,m:6e4}[r]||1);return isNaN(i)?void 0:i}trigger(e,t,r={},i=!0){e=this.#Ne(e),this.#Ce(e,t,r);let s=new CustomEvent(t,{detail:r,cancelable:!0,bubbles:i,composed:!0,originalTarget:e}),n=e.isConnected?e:document;return!r.cancelled&&n.dispatchEvent(s)}ajax(e,t,r){(!r||r instanceof Element||"string"==typeof r)&&(r={target:r});let i="string"==typeof r.source?document.querySelector(r.source):r.source,s=r.target?this.#V(i||document.body,r.target):i;if(r.target&&!s||r.source&&!i)return Promise.reject(new Error("Element not found"));i=i||s||document.body;let n=this.#x(i,r.event||{});return Object.assign(n,r,{target:s}),Object.assign(n.request,{action:t,method:e.toUpperCase()}),r.headers&&Object.assign(n.request.headers,r.headers),this.#_(n)}#v(){this.config.history&&window.addEventListener("popstate",e=>{e.state&&e.state.htmx&&this.#He()})}#Me(e){this.config.history&&(history.pushState({htmx:!0},"",e),this.#H(document,"htmx:after:push:into:history",{path:e}))}#Oe(e){this.config.history&&(history.replaceState({htmx:!0},"",e),this.#H(document,"htmx:after:replace:into:history",{path:e}))}#He(e){e=e||location.pathname+location.search,this.#H(document,"htmx:before:restore:history",{path:e,cacheMiss:!0})&&(this.config.historyReload?location.reload():this.ajax("GET",e,{target:"body",swap:"outerHTML",request:{headers:{"HX-History-Restore-Request":"true"}}}))}#X(e){let{sourceElement:t,push:r,replace:i,hx:s,response:n}=e;(s?.push||s?.pushurl||s?.replaceurl)&&(r=s.push||s.pushurl,i=s.replaceurl),r||i||!this.#A(t)||(r="true");let a=r||i;if(!a||"false"===a)return;"true"===a&&(a=e.request.originalAction);let o=r?"push":"replace",l={history:{type:o,path:a},sourceElement:t,response:n};this.#H(document,"htmx:before:history:update",l)&&("push"===o?this.#Me(a):this.#Oe(a),this.#H(document,"htmx:after:history:update",l))}#he(e){for(let t of e.getAttributeNames())if(t.startsWith(this.#p("hx-on:"))){let r=t.substring(this.#p("hx-on:").length),i=e.getAttribute(t);e.addEventListener(r,async t=>{try{await this.#j(e,{event:t},i,!1)}catch(e){console.log(e)}})}}#Q(e,t){let r=[];if(t){r=[e,...this.#E(e,t)];for(const e of r)e._htmxReqCount||=0,e._htmxReqCount++,e.classList.add(this.config.requestClass)}return r}#Z(e){for(let t of e)t._htmxReqCount&&(t._htmxReqCount--,t._htmxReqCount<=0&&(t.classList.remove(this.config.requestClass),delete t._htmxReqCount))}#U(e,t){let r=[];if(t){r=this.#E(e,t);for(let e of r)e._htmxDisableCount||=0,e._htmxDisableCount++,e.disabled=!0}return r}#ee(e){for(const t of e)t._htmxDisableCount&&(t._htmxDisableCount--,t._htmxDisableCount<=0&&(t.disabled=!1,delete t._htmxDisableCount))}#b(e,t,r){let i=new FormData,s=new Set;t?this.#Ie(t,s,i):e.name&&(i.append(e.name,e.value),s.add(e)),r&&r.name&&(i.append(r.name,r.value),s.add(r));let n=this.#f(e,"hx-include");if(n){let t=this.#ae(e,n);for(let e of t)this.#Ie(e,s,i)}return i}#Ie(e,t,r){let i=this.#E(e,"input:not([disabled]), select:not([disabled]), textarea:not([disabled])");for(let e of i)if(e.name&&!t.has(e))if(t.add(e),e.matches("input[type=checkbox], input[type=radio]"))e.checked&&r.append(e.name,e.value);else if(e.matches("input[type=file]"))for(let t of e.files)r.append(e.name,t);else if(e.matches("select[multiple]"))for(let t of e.selectedOptions)r.append(e.name,t.value);else e.matches("select, textarea, input")&&r.append(e.name,e.value)}#y(e,t){let r=this.#f(e,"hx-vals");if(r){r.includes("{")||(r=`{${r}}`);let e=JSON.parse(r);for(let r in e)t.append(r,e[r])}}#ke(e){let t=e.trim();return t.startsWith("<")&&t.endsWith("/>")?t.slice(1,-2):t}#ae(e,t,r){let[i,s]=this.#_e(e,t);if(s.startsWith("global "))return this.#ae(i,s.slice(7),!0);let n=this.#Le(s),a=[],o=[];for(const e of n){let t,s=this.#ke(e);s.startsWith("closest ")?t=i.closest(s.slice(8)):s.startsWith("find ")?t=document.querySelector(i,s.slice(5)):"next"===s||"nextElementSibling"===s?t=i.nextElementSibling:s.startsWith("next ")?t=this.#Ve(i,s.slice(5),!!r):"previous"===s||"previousElementSibling"===s?t=i.previousElementSibling:s.startsWith("previous ")?t=this.#De(i,s.slice(9),!!r):"document"===s?t=document:"window"===s?t=window:"body"===s?t=document.body:"root"===s?t=this.#Re(i,!!r):"host"===s?t=i.getRootNode().host:o.push(s),t&&a.push(t)}if(o.length>0){let e=o.join(","),t=this.#Re(i,!!r);a.push(...t.querySelectorAll(e))}return a}#_e(e,t){return void 0===t?[document,e]:[this.#Ne(e),t]}#Le(e){let t=[],r=0,i=0;for(let s=0;s<=e.length;s++){let n=e[s];"<"===n?r++:"/"===n&&">"===e[s+1]?r--:(","===n&&!r||s===e.length)&&(s>i&&t.push(e.substring(i,s)),i=s+1)}return t}#Ve(e,t,r){return this.#Be(this.#Re(e,r).querySelectorAll(t),e,Node.DOCUMENT_POSITION_PRECEDING)}#De(e,t,r){let i=[...this.#Re(e,r).querySelectorAll(t)].reverse();return this.#Be(i,e,Node.DOCUMENT_POSITION_FOLLOWING)}#Be(e,t,r){for(const i of e)if(i.compareDocumentPosition(t)===r)return i}#Re(e,t){return e.isConnected&&e.getRootNode?e.getRootNode?.({composed:t}):document}#ie(e,t){return this.#ae(e,t)[0]}#B(e){if(null!=e){if(e.startsWith("js:"))return e.substring(3);if(e.startsWith("javascript:"))return e.substring(11)}}#k(e){e.addEventListener("htmx:abort",()=>{this.#P(e).abort()})}#Te(e,t,r){let{persistentIds:i,idMap:s}=this.#je(e,t),n=document.createElement("div");n.hidden=!0,document.body.after(n);let a={target:e,idMap:s,persistentIds:i,pantry:n};r?this.#$e(a,e,t):this.#$e(a,e.parentNode,t,e,e.nextSibling),this.#ue(n),n.remove()}#$e(e,t,r,i=null,s=null){t instanceof HTMLTemplateElement&&r instanceof HTMLTemplateElement&&(t=t.content,r=r.content),i||=t.firstChild;for(const n of r.childNodes){if(i&&i!=s){let t=this.#ze(e,n,i,s);if(t){if(t!==i){let r=i;for(;r&&r!==t;){let t=r;r=r.nextSibling,this.#Pe(e,t)}}this.#Fe(t,n,e),i=t.nextSibling;continue}}if(n instanceof Element&&e.persistentIds.has(n.id)){let r=e.target.id===n.id&&e.target||e.target.querySelector(`[id="${n.id}"]`)||e.pantry.querySelector(`[id="${n.id}"]`),s=r.id,a=r;for(;a=a.parentNode;){let t=e.idMap.get(a);t&&(t.delete(s),t.size||e.idMap.delete(a))}this.#Qe(t,r,i),this.#Fe(r,n,e),i=r.nextSibling;continue}let r;e.idMap.has(n)?(r=document.createElement(n.tagName),t.insertBefore(r,i),this.#Fe(r,n,e)):(r=document.importNode(n,!0),t.insertBefore(r,i)),i=r.nextSibling}for(;i&&i!=s;){let t=i;i=i.nextSibling,this.#Pe(e,t)}}#ze(e,t,r,i){let s=null,n=t.nextSibling,a=0,o=0,l=e.idMap.get(t),h=l?.size||0,u=r;for(;u&&u!=i;){let r=e.idMap.get(u);if(this.#Ue(u,t)){if(r&&l&&[...r].some(e=>l.has(e)))return u;if(null===s&&!r){if(!h)return u;s=u}}if(o+=r?.size||0,o>h)break;if(null===s&&n&&this.#Ue(u,n)&&(a++,n=n.nextSibling,a>=2&&(s=void 0)),u.contains(document.activeElement))break;u=u.nextSibling}return s||null}#Ue(e,t){return e.nodeType===t.nodeType&&e.tagName===t.tagName&&(!e.id||e.id===t.id)}#Pe(e,t){e.idMap.has(t)?this.#Qe(e.pantry,t,null):(this.#ue(t),t.remove())}#Qe(e,t,r){if(e.moveBefore)try{return void e.moveBefore(t,r)}catch(e){}e.insertBefore(t,r)}#Fe(e,t,r){let i=t.nodeType;if(1===i){let r=this.config.morphIgnore||[];this.#We(e,t,r),e instanceof HTMLTextAreaElement&&e.defaultValue!=t.defaultValue&&(e.value=t.value)}8!==i&&3!==i||e.nodeValue===t.nodeValue||(e.nodeValue=t.nodeValue),e.isEqualNode(t)||this.#$e(r,e,t)}#We(e,t,r=[]){for(const i of t.attributes)r.includes(i.name)||e.getAttribute(i.name)===i.value||(e.setAttribute(i.name,i.value),"value"===i.name&&e instanceof HTMLInputElement&&"file"!==e.type&&(e.value=i.value));for(let i=e.attributes.length-1;i>=0;i--){let s=e.attributes[i];!s||t.hasAttribute(s.name)||r.includes(s.name)||e.removeAttribute(s.name)}}#Je(e,t,r,i){for(const s of i)if(t.has(s.id)){let t=s;for(;t&&t!==r;){let r=e.get(t);null==r&&(r=new Set,e.set(t,r)),r.add(s.id),t=t.parentElement}}}#je(e,t){let r=this.#E(e,"[id]"),i=t.querySelectorAll("[id]"),s=this.#Ge(r,i),n=new Map;return this.#Je(n,s,e.parentElement,r),this.#Je(n,s,t,i),{persistentIds:s,idMap:n}}#Ge(e,t){let r=new Set,i=new Map;for(const{id:t,tagName:s}of e)i.has(t)?r.add(t):i.set(t,s);let s=new Set;for(const{id:e,tagName:n}of t)s.has(e)?r.add(e):i.get(e)===n&&s.add(e);for(const e of r)s.delete(e);return s}#K(e){let t=e.response.raw.status;this.config.noSwap.includes(t)&&(e.swap="none");let r=t+"";for(let t of[r,r.slice(0,2)+"x",r[0]+"xx"]){let r=this.#f(e.sourceElement,"hx-status:"+t);if(r)return void(e.swap=r)}}#qe(e){return new Promise(t=>{this.#h||=[],this.#h.push({task:e,resolve:t}),this.#u||this.#Ke()})}async __processTransitionQueue(){if(0===this.#h.length||this.#u)return;this.#u=!0;let{task:e,resolve:t}=this.#h.shift();try{if(document.startViewTransition){let t=document.startViewTransition(e).finished;this.#H(document,"htmx:before:viewTransition",{task:e,finished:t}),await t,this.#H(document,"htmx:after:viewTransition",{task:e})}else e()}catch(e){}finally{this.#u=!1,t(),this.#Ke()}}#Ae(e,t){let r=t.querySelectorAll("[id]"),i=Object.fromEntries([...r].map(e=>[e.id,e])),s=e.fragment.querySelectorAll("[id]");e.restoreTasks=[];for(let t of s){let r=i[t.id];if(r?.tagName===t.tagName){let i=t.cloneNode(!1);this.#We(t,r,this.config.morphIgnore),e.restoreTasks.push(()=>{this.#We(t,i,this.config.morphIgnore)})}}}#Ne(e){return"string"==typeof e?this.find(e):e}}})();export default htmx;
|
|
Binary file
|