diff --git a/dist/htmx.js b/dist/htmx.js
index 7a3fef2b..113da9ee 100644
--- a/dist/htmx.js
+++ b/dist/htmx.js
@@ -603,9 +603,16 @@ var htmx = htmx || (function () {
(elt.tagName === "A" && elt.href && elt.href.indexOf('#') !== 0);
}
+ function ignoreBoostedAnchorCtrlClick(elt, evt) {
+ return getInternalData(elt).boosted && elt.tagName === "A" && evt.type === "click" && evt.ctrlKey;
+ }
+
function addEventListener(elt, verb, path, nodeData, triggerSpec, explicitCancel) {
var eventListener = function (evt) {
- if(explicitCancel || shouldCancel(elt)) evt.preventDefault();
+ if (ignoreBoostedAnchorCtrlClick(elt, evt)) {
+ return;
+ }
+ if(explicitCancel || shouldCancel(elt)) {}evt.preventDefault();
var eventData = getInternalData(evt);
var elementData = getInternalData(elt);
if (!eventData.handled) {
diff --git a/dist/htmx.min.js b/dist/htmx.min.js
index 1a4d90dd..7a3b814f 100644
--- a/dist/htmx.min.js
+++ b/dist/htmx.min.js
@@ -1 +1 @@
-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("
",1);case"col":return i("",2);case"tr":return i("",2);case"td":case"th":return i("",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=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;a1){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;ahtmx.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=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;r0){r["swapStyle"]=n[0];for(var i=1;i=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","")}})();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}}();
\ No newline at end of file
+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("",1);case"col":return i("",2);case"tr":return i("",2);case"td":case"th":return i("",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=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 A(e,t,r){if(r){setTimeout(function(){A(e,t)},r)}else{e.classList.add(t)}}function H(e,t,r){if(r){setTimeout(function(){H(e,t)},r)}else{e.classList.remove(t)}}function N(e,t){e.classList.toggle(t)}function X(e,t){L(e.parentElement.children,function(e){H(e,t)});A(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){Ke(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){Ke(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);ye(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){xe(i,"load.htmx",{});me(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(_e(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}}xe(e,n,i)}}}else{xe(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;a1){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){ze(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")}ue(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(e,t){return O(e).boosted&&e.tagName==="A"&&t.type==="click"&&t.ctrlKey}function ue(i,a,o,e,u,l){var t=function(e){if(oe(i,e)){return}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(){ze(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 le(){if(!window["htmxScrollHandler"]){var e=function(){L(E().querySelectorAll("[hx-trigger='revealed']"),function(e){se(e)})};window["htmxScrollHandler"]=e;window.addEventListener("scroll",e)}}function se(e){var t=O(e);if(!t.revealed&&v(e)){t.revealed=true;ze(e,t.verb,t.path)}}function fe(e){if(!d(e)){e.sseSource.close();return true}}function ce(t,e){var r={config:{withCredentials:true}};xe(t,"initSSE.htmx",r);var n=new EventSource(e,r.config);n.onerror=function(e){ye(t,"sseError.htmx",{error:e,source:n});fe(t)};O(t).sseSource=n}function he(e,t,r,n){var i=o(e,function(e){return e.sseSource});if(i){var a=function(){if(!fe(i)){if(d(e)){ze(e,t,r)}else{i.sseSource.removeEventListener(n,a)}}};i.sseSource.addEventListener(n,a)}else{ye(e,"noSSESourceError.htmx")}}function ve(e,t,r,n,i){var a=function(){if(!n.loaded){n.loaded=true;ze(e,t,r)}};if(i){setTimeout(a,i)}else{a()}}function de(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){he(r,e,t,i.sseEvent)}else if(i.trigger==="revealed"){le();se(r)}else if(i.trigger==="load"){ve(r,e,t,n,i.delay)}else if(i.pollInterval){n.polling=true;re(r,e,t,i.pollInterval)}else{ue(r,e,t,n,i)}}});return a}function me(e){var t=O(e);if(!t.processed){t.processed=true;var r=Z(e);var n=de(e,t,r);if(!n&&C(e,"hx-boost")==="true"){ie(e,t,r)}var i=l(e,"hx-sse-source");if(i){ce(e,i)}var a=l(e,"hx-classes");if(a){ee(e,a)}}if(e.children){L(e.children,function(e){me(e)})}}function ge(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 pe(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 ye(e,t,r){xe(e,t,p({isError:true},r))}function xe(e,t,r){r["elt"]=e;var n=pe(t,r);if(htmx.logger){htmx.logger(e,t,r);if(r.isError){ge(e,t,r)}}var i=e.dispatchEvent(n);L(_e(e),function(e){i=i&&e.onEvent(t,n)!==false});return i}var be=null;function Se(){var e=E().querySelector("[hx-history-elt]");return e||E().body}function we(e,t,r,n){var i=JSON.parse(localStorage.getItem("htmx-history-cache"))||[];for(var a=0;ahtmx.config.historyCacheSize){i.shift()}localStorage.setItem("htmx-history-cache",JSON.stringify(i))}function Ee(e){var t=JSON.parse(localStorage.getItem("htmx-history-cache"))||[];for(var r=0;r=200&&this.status<400){xe(E().body,"historyCacheMissLoad.htmx",r);var e=f(this.response);e=e.querySelector("[hx-history-elt]")||e;Le(Y(Se(),e));be=t}else{ye(E().body,"historyCacheMissLoadError.htmx",r)}};e.send()}function qe(e){Ce(be);e=e||location.pathname+location.search;xe(E().body,"historyRestore.htmx",{path:e});var t=Ee(e);if(t){Le(Y(Se(),f(t.content)));document.title=t.title;window.scrollTo(0,t.scroll);be=e}else{Te(e)}}function Ae(e){return C(e,"hx-push-url")==="true"||e.tagName==="A"&&O(e).boosted}function He(e){Xe(e,"add")}function Ne(e){Xe(e,"remove")}function Xe(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 Re(e,t){for(var r=0;r0){r["swapStyle"]=n[0];for(var i=1;i=200&&this.status<400){if(this.status===286){te(o)}if(this.status!==204){if(!xe(o,"beforeSwap.htmx",S))return;var i=this.response;L(_e(o),function(e){i=e.transformResponse(i,f,o)});if(n){Ce()}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");xe(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){Oe(r||u)}xe(o,"afterSettle.htmx",S)};if(a.settleDelay>0){setTimeout(t,a.settleDelay)}else{t()}}catch(e){ye(o,"swapError.htmx",S);throw e}};if(a.swapDelay>0){setTimeout(e,a.swapDelay)}else{e()}}}else{ye(o,"responseError.htmx",S)}}catch(e){S["exception"]=e;ye(o,"onLoadError.htmx",S);throw e}finally{Ne(o);ye(o,"afterRequest.htmx",S);xe(o,"afterOnLoad.htmx",S);s()}};f.onerror=function(){Ne(o);ye(o,"afterRequest.htmx",S);ye(o,"sendError.htmx",S);s()};if(!xe(o,"beforeRequest.htmx",S))return s();He(o);f.send(e==="get"?null:Ue(f,o,v))}var Be={};function Ve(){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 Ge(e,t){Be[e]=p(Ve(),t)}function Ye(e){delete Be[e]}function _e(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=Be[e];if(t&&!r.includes(t)){r.push(t)}})}return _e(n(e),r)}function Ke(e){if(E().readyState!=="loading"){e()}else{E().addEventListener("DOMContentLoaded",e)}}(function(){var e=Qe();if(e===null||e.includeIndicatorStyles!==false){E().head.insertAdjacentHTML("beforeend","")}})();function Qe(){var e=E().querySelector('meta[name="htmx-config"]');if(e){return JSON.parse(e.content)}else{return null}}function We(){var e=Qe();if(e){htmx.config=p(htmx.config,e)}}Ke(function(){We();var e=E().body;me(e);xe(e,"load.htmx",{});window.onpopstate=function(){qe()}});return{onLoad:x,process:me,on:D,off:I,trigger:xe,find:S,findAll:T,closest:R,remove:q,addClass:A,removeClass:H,toggleClass:N,takeClass:X,defineExtension:Ge,removeExtension:Ye,logAll:b,logger:null,config:{historyEnabled:true,historyCacheSize:10,defaultSwapStyle:"innerHTML",defaultSwapDelay:0,defaultSettleDelay:100,includeIndicatorStyles:true},_:y}}();
\ No newline at end of file
diff --git a/dist/htmx.min.js.gz b/dist/htmx.min.js.gz
index d523886e..dec99686 100644
Binary files a/dist/htmx.min.js.gz and b/dist/htmx.min.js.gz differ
diff --git a/src/htmx.js b/src/htmx.js
index 7a3fef2b..113da9ee 100644
--- a/src/htmx.js
+++ b/src/htmx.js
@@ -603,9 +603,16 @@ var htmx = htmx || (function () {
(elt.tagName === "A" && elt.href && elt.href.indexOf('#') !== 0);
}
+ function ignoreBoostedAnchorCtrlClick(elt, evt) {
+ return getInternalData(elt).boosted && elt.tagName === "A" && evt.type === "click" && evt.ctrlKey;
+ }
+
function addEventListener(elt, verb, path, nodeData, triggerSpec, explicitCancel) {
var eventListener = function (evt) {
- if(explicitCancel || shouldCancel(elt)) evt.preventDefault();
+ if (ignoreBoostedAnchorCtrlClick(elt, evt)) {
+ return;
+ }
+ if(explicitCancel || shouldCancel(elt)) {}evt.preventDefault();
var eventData = getInternalData(evt);
var elementData = getInternalData(elt);
if (!eventData.handled) {
diff --git a/www/js/htmx.js b/www/js/htmx.js
index 7a3fef2b..113da9ee 100644
--- a/www/js/htmx.js
+++ b/www/js/htmx.js
@@ -603,9 +603,16 @@ var htmx = htmx || (function () {
(elt.tagName === "A" && elt.href && elt.href.indexOf('#') !== 0);
}
+ function ignoreBoostedAnchorCtrlClick(elt, evt) {
+ return getInternalData(elt).boosted && elt.tagName === "A" && evt.type === "click" && evt.ctrlKey;
+ }
+
function addEventListener(elt, verb, path, nodeData, triggerSpec, explicitCancel) {
var eventListener = function (evt) {
- if(explicitCancel || shouldCancel(elt)) evt.preventDefault();
+ if (ignoreBoostedAnchorCtrlClick(elt, evt)) {
+ return;
+ }
+ if(explicitCancel || shouldCancel(elt)) {}evt.preventDefault();
var eventData = getInternalData(evt);
var elementData = getInternalData(elt);
if (!eventData.handled) {
diff --git a/www/test/0.0.4/src/htmx.js b/www/test/0.0.4/src/htmx.js
index 7a3fef2b..113da9ee 100644
--- a/www/test/0.0.4/src/htmx.js
+++ b/www/test/0.0.4/src/htmx.js
@@ -603,9 +603,16 @@ var htmx = htmx || (function () {
(elt.tagName === "A" && elt.href && elt.href.indexOf('#') !== 0);
}
+ function ignoreBoostedAnchorCtrlClick(elt, evt) {
+ return getInternalData(elt).boosted && elt.tagName === "A" && evt.type === "click" && evt.ctrlKey;
+ }
+
function addEventListener(elt, verb, path, nodeData, triggerSpec, explicitCancel) {
var eventListener = function (evt) {
- if(explicitCancel || shouldCancel(elt)) evt.preventDefault();
+ if (ignoreBoostedAnchorCtrlClick(elt, evt)) {
+ return;
+ }
+ if(explicitCancel || shouldCancel(elt)) {}evt.preventDefault();
var eventData = getInternalData(evt);
var elementData = getInternalData(elt);
if (!eventData.handled) {