Skip to content

Commit 4f95de2

Browse files
committed
prep 2.0.5 release
1 parent e2353e2 commit 4f95de2

File tree

14 files changed

+222
-136
lines changed

14 files changed

+222
-136
lines changed

dist/htmx.amd.js

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3915,9 +3915,9 @@ var htmx = (function() {
39153915
if (evaluateValue) {
39163916
varsValues = maybeEval(elt, function() {
39173917
if (event) {
3918-
return Function('event', 'return (' + str + ')')(event)
3918+
return Function('event', 'return (' + str + ')').call(elt, event)
39193919
} else { // allow window.event to be accessible
3920-
return Function('return (' + str + ')')()
3920+
return Function('return (' + str + ')').call(elt)
39213921
}
39223922
}, {})
39233923
} else {
@@ -4753,20 +4753,21 @@ var htmx = (function() {
47534753
}
47544754

47554755
/**
4756-
* Updates the responseInfo's target property if an HX-Retarget header is present
4757-
*
4758-
* @param {XMLHttpRequest} xhr
4759-
* @param {HtmxResponseInfo} responseInfo
4756+
* Resove the Retarget selector and throw if not found
47604757
* @param {Element} elt
4758+
* @param {String} target
4759+
* @returns {Element}
47614760
*/
4762-
function handleRetargetHeader(xhr, responseInfo, elt) {
4763-
if (hasHeader(xhr, /HX-Retarget:/i)) {
4764-
if (xhr.getResponseHeader('HX-Retarget') === 'this') {
4765-
responseInfo.target = elt
4766-
} else {
4767-
responseInfo.target = asElement(querySelectorExt(elt, xhr.getResponseHeader('HX-Retarget')))
4768-
}
4761+
function resolveRetarget(elt, target) {
4762+
if (target === 'this') {
4763+
return elt
4764+
}
4765+
const resolvedTarget = asElement(querySelectorExt(elt, target))
4766+
if (resolvedTarget == null) {
4767+
triggerErrorEvent(elt, 'htmx:targetError', { target })
4768+
throw new Error(`Invalid re-target ${target}`)
47694769
}
4770+
return resolvedTarget
47704771
}
47714772

47724773
/**
@@ -4817,9 +4818,6 @@ var htmx = (function() {
48174818
return
48184819
}
48194820

4820-
// handle retargeting before determining history updates/resolving response handling
4821-
handleRetargetHeader(xhr, responseInfo, elt)
4822-
48234821
const historyUpdate = determineHistoryUpdates(elt, responseInfo)
48244822

48254823
const responseHandling = resolveResponseHandling(xhr)
@@ -4828,15 +4826,17 @@ var htmx = (function() {
48284826
let ignoreTitle = htmx.config.ignoreTitle || responseHandling.ignoreTitle
48294827
let selectOverride = responseHandling.select
48304828
if (responseHandling.target) {
4831-
responseInfo.target = asElement(querySelectorExt(elt, responseHandling.target))
4829+
responseInfo.target = resolveRetarget(elt, responseHandling.target)
48324830
}
48334831
var swapOverride = etc.swapOverride
48344832
if (swapOverride == null && responseHandling.swapOverride) {
48354833
swapOverride = responseHandling.swapOverride
48364834
}
48374835

48384836
// response headers override response handling config
4839-
handleRetargetHeader(xhr, responseInfo, elt)
4837+
if (hasHeader(xhr, /HX-Retarget:/i)) {
4838+
responseInfo.target = resolveRetarget(elt, xhr.getResponseHeader('HX-Retarget'))
4839+
}
48404840

48414841
if (hasHeader(xhr, /HX-Reswap:/i)) {
48424842
swapOverride = xhr.getResponseHeader('HX-Reswap')

dist/htmx.cjs.js

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3914,9 +3914,9 @@ var htmx = (function() {
39143914
if (evaluateValue) {
39153915
varsValues = maybeEval(elt, function() {
39163916
if (event) {
3917-
return Function('event', 'return (' + str + ')')(event)
3917+
return Function('event', 'return (' + str + ')').call(elt, event)
39183918
} else { // allow window.event to be accessible
3919-
return Function('return (' + str + ')')()
3919+
return Function('return (' + str + ')').call(elt)
39203920
}
39213921
}, {})
39223922
} else {
@@ -4752,20 +4752,21 @@ var htmx = (function() {
47524752
}
47534753

47544754
/**
4755-
* Updates the responseInfo's target property if an HX-Retarget header is present
4756-
*
4757-
* @param {XMLHttpRequest} xhr
4758-
* @param {HtmxResponseInfo} responseInfo
4755+
* Resove the Retarget selector and throw if not found
47594756
* @param {Element} elt
4757+
* @param {String} target
4758+
* @returns {Element}
47604759
*/
4761-
function handleRetargetHeader(xhr, responseInfo, elt) {
4762-
if (hasHeader(xhr, /HX-Retarget:/i)) {
4763-
if (xhr.getResponseHeader('HX-Retarget') === 'this') {
4764-
responseInfo.target = elt
4765-
} else {
4766-
responseInfo.target = asElement(querySelectorExt(elt, xhr.getResponseHeader('HX-Retarget')))
4767-
}
4760+
function resolveRetarget(elt, target) {
4761+
if (target === 'this') {
4762+
return elt
4763+
}
4764+
const resolvedTarget = asElement(querySelectorExt(elt, target))
4765+
if (resolvedTarget == null) {
4766+
triggerErrorEvent(elt, 'htmx:targetError', { target })
4767+
throw new Error(`Invalid re-target ${target}`)
47684768
}
4769+
return resolvedTarget
47694770
}
47704771

47714772
/**
@@ -4816,9 +4817,6 @@ var htmx = (function() {
48164817
return
48174818
}
48184819

4819-
// handle retargeting before determining history updates/resolving response handling
4820-
handleRetargetHeader(xhr, responseInfo, elt)
4821-
48224820
const historyUpdate = determineHistoryUpdates(elt, responseInfo)
48234821

48244822
const responseHandling = resolveResponseHandling(xhr)
@@ -4827,15 +4825,17 @@ var htmx = (function() {
48274825
let ignoreTitle = htmx.config.ignoreTitle || responseHandling.ignoreTitle
48284826
let selectOverride = responseHandling.select
48294827
if (responseHandling.target) {
4830-
responseInfo.target = asElement(querySelectorExt(elt, responseHandling.target))
4828+
responseInfo.target = resolveRetarget(elt, responseHandling.target)
48314829
}
48324830
var swapOverride = etc.swapOverride
48334831
if (swapOverride == null && responseHandling.swapOverride) {
48344832
swapOverride = responseHandling.swapOverride
48354833
}
48364834

48374835
// response headers override response handling config
4838-
handleRetargetHeader(xhr, responseInfo, elt)
4836+
if (hasHeader(xhr, /HX-Retarget:/i)) {
4837+
responseInfo.target = resolveRetarget(elt, xhr.getResponseHeader('HX-Retarget'))
4838+
}
48394839

48404840
if (hasHeader(xhr, /HX-Reswap:/i)) {
48414841
swapOverride = xhr.getResponseHeader('HX-Reswap')

dist/htmx.esm.js

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3914,9 +3914,9 @@ var htmx = (function() {
39143914
if (evaluateValue) {
39153915
varsValues = maybeEval(elt, function() {
39163916
if (event) {
3917-
return Function('event', 'return (' + str + ')')(event)
3917+
return Function('event', 'return (' + str + ')').call(elt, event)
39183918
} else { // allow window.event to be accessible
3919-
return Function('return (' + str + ')')()
3919+
return Function('return (' + str + ')').call(elt)
39203920
}
39213921
}, {})
39223922
} else {
@@ -4752,20 +4752,21 @@ var htmx = (function() {
47524752
}
47534753

47544754
/**
4755-
* Updates the responseInfo's target property if an HX-Retarget header is present
4756-
*
4757-
* @param {XMLHttpRequest} xhr
4758-
* @param {HtmxResponseInfo} responseInfo
4755+
* Resove the Retarget selector and throw if not found
47594756
* @param {Element} elt
4757+
* @param {String} target
4758+
* @returns {Element}
47604759
*/
4761-
function handleRetargetHeader(xhr, responseInfo, elt) {
4762-
if (hasHeader(xhr, /HX-Retarget:/i)) {
4763-
if (xhr.getResponseHeader('HX-Retarget') === 'this') {
4764-
responseInfo.target = elt
4765-
} else {
4766-
responseInfo.target = asElement(querySelectorExt(elt, xhr.getResponseHeader('HX-Retarget')))
4767-
}
4760+
function resolveRetarget(elt, target) {
4761+
if (target === 'this') {
4762+
return elt
4763+
}
4764+
const resolvedTarget = asElement(querySelectorExt(elt, target))
4765+
if (resolvedTarget == null) {
4766+
triggerErrorEvent(elt, 'htmx:targetError', { target })
4767+
throw new Error(`Invalid re-target ${target}`)
47684768
}
4769+
return resolvedTarget
47694770
}
47704771

47714772
/**
@@ -4816,9 +4817,6 @@ var htmx = (function() {
48164817
return
48174818
}
48184819

4819-
// handle retargeting before determining history updates/resolving response handling
4820-
handleRetargetHeader(xhr, responseInfo, elt)
4821-
48224820
const historyUpdate = determineHistoryUpdates(elt, responseInfo)
48234821

48244822
const responseHandling = resolveResponseHandling(xhr)
@@ -4827,15 +4825,17 @@ var htmx = (function() {
48274825
let ignoreTitle = htmx.config.ignoreTitle || responseHandling.ignoreTitle
48284826
let selectOverride = responseHandling.select
48294827
if (responseHandling.target) {
4830-
responseInfo.target = asElement(querySelectorExt(elt, responseHandling.target))
4828+
responseInfo.target = resolveRetarget(elt, responseHandling.target)
48314829
}
48324830
var swapOverride = etc.swapOverride
48334831
if (swapOverride == null && responseHandling.swapOverride) {
48344832
swapOverride = responseHandling.swapOverride
48354833
}
48364834

48374835
// response headers override response handling config
4838-
handleRetargetHeader(xhr, responseInfo, elt)
4836+
if (hasHeader(xhr, /HX-Retarget:/i)) {
4837+
responseInfo.target = resolveRetarget(elt, xhr.getResponseHeader('HX-Retarget'))
4838+
}
48394839

48404840
if (hasHeader(xhr, /HX-Reswap:/i)) {
48414841
swapOverride = xhr.getResponseHeader('HX-Reswap')

dist/htmx.js

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3914,9 +3914,9 @@ var htmx = (function() {
39143914
if (evaluateValue) {
39153915
varsValues = maybeEval(elt, function() {
39163916
if (event) {
3917-
return Function('event', 'return (' + str + ')')(event)
3917+
return Function('event', 'return (' + str + ')').call(elt, event)
39183918
} else { // allow window.event to be accessible
3919-
return Function('return (' + str + ')')()
3919+
return Function('return (' + str + ')').call(elt)
39203920
}
39213921
}, {})
39223922
} else {
@@ -4752,20 +4752,21 @@ var htmx = (function() {
47524752
}
47534753

47544754
/**
4755-
* Updates the responseInfo's target property if an HX-Retarget header is present
4756-
*
4757-
* @param {XMLHttpRequest} xhr
4758-
* @param {HtmxResponseInfo} responseInfo
4755+
* Resove the Retarget selector and throw if not found
47594756
* @param {Element} elt
4757+
* @param {String} target
4758+
* @returns {Element}
47604759
*/
4761-
function handleRetargetHeader(xhr, responseInfo, elt) {
4762-
if (hasHeader(xhr, /HX-Retarget:/i)) {
4763-
if (xhr.getResponseHeader('HX-Retarget') === 'this') {
4764-
responseInfo.target = elt
4765-
} else {
4766-
responseInfo.target = asElement(querySelectorExt(elt, xhr.getResponseHeader('HX-Retarget')))
4767-
}
4760+
function resolveRetarget(elt, target) {
4761+
if (target === 'this') {
4762+
return elt
4763+
}
4764+
const resolvedTarget = asElement(querySelectorExt(elt, target))
4765+
if (resolvedTarget == null) {
4766+
triggerErrorEvent(elt, 'htmx:targetError', { target })
4767+
throw new Error(`Invalid re-target ${target}`)
47684768
}
4769+
return resolvedTarget
47694770
}
47704771

47714772
/**
@@ -4816,9 +4817,6 @@ var htmx = (function() {
48164817
return
48174818
}
48184819

4819-
// handle retargeting before determining history updates/resolving response handling
4820-
handleRetargetHeader(xhr, responseInfo, elt)
4821-
48224820
const historyUpdate = determineHistoryUpdates(elt, responseInfo)
48234821

48244822
const responseHandling = resolveResponseHandling(xhr)
@@ -4827,15 +4825,17 @@ var htmx = (function() {
48274825
let ignoreTitle = htmx.config.ignoreTitle || responseHandling.ignoreTitle
48284826
let selectOverride = responseHandling.select
48294827
if (responseHandling.target) {
4830-
responseInfo.target = asElement(querySelectorExt(elt, responseHandling.target))
4828+
responseInfo.target = resolveRetarget(elt, responseHandling.target)
48314829
}
48324830
var swapOverride = etc.swapOverride
48334831
if (swapOverride == null && responseHandling.swapOverride) {
48344832
swapOverride = responseHandling.swapOverride
48354833
}
48364834

48374835
// response headers override response handling config
4838-
handleRetargetHeader(xhr, responseInfo, elt)
4836+
if (hasHeader(xhr, /HX-Retarget:/i)) {
4837+
responseInfo.target = resolveRetarget(elt, xhr.getResponseHeader('HX-Retarget'))
4838+
}
48394839

48404840
if (hasHeader(xhr, /HX-Reswap:/i)) {
48414841
swapOverride = xhr.getResponseHeader('HX-Reswap')

dist/htmx.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/htmx.min.js.gz

24 Bytes
Binary file not shown.

www/content/docs.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1140,8 +1140,8 @@ You can see all available extensions on the [Extensions](/extensions) page.
11401140
The fastest way to install htmx extensions created by others is to load them via a CDN. Remember to always include the core htmx library before the extensions and [enable the extension](#enabling-extensions). For example, if you would like to use the [response-targets](/extensions/response-targets) extension, you can add this to your head tag:
11411141
```HTML
11421142
<head>
1143-
<script src="https://cdn.jsdelivr.net/npm/htmx.org@2.0.4/dist/htmx.min.js" integrity="sha384-rgDUNhY6z4THDY2kCpmYI4f0WFGAFfN30Byo3z/PjHF0/OxDN/EJ28TV8sYZ2W74" crossorigin="anonymous"></script>
1144-
<script src="https://cdn.jsdelivr.net/npm/htmx-ext-response-targets@2.0.2" integrity="sha384-UMuM7P2CPg9i2/dfvBlAeqjXITmEWe9k17Mp9X07Z4jXPN21Ychng569t+sUL8oa" crossorigin="anonymous"></script>
1143+
<script src="https://cdn.jsdelivr.net/npm/htmx.org@2.0.4/dist/htmx.min.js" integrity="sha384-vUOEodGs2gFRTWstEF8qT0K41FEOcnzd0O0cP69j2pwZRleQcMQ1TAaG90A4m1O0" crossorigin="anonymous"></script>
1144+
<script src="https://cdn.jsdelivr.net/npm/htmx-ext-response-targets@2.0.2" integrity="sha384-SUG/p27C6PgjnQC/89fkpr4HjNPrcZ0ye/Fy1IX0H2HeV4Amto6a157+SBuuZPw8" crossorigin="anonymous"></script>
11451145
</head>
11461146
<body hx-ext="extension-name">
11471147
...

www/static/src/htmx.js

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3914,9 +3914,9 @@ var htmx = (function() {
39143914
if (evaluateValue) {
39153915
varsValues = maybeEval(elt, function() {
39163916
if (event) {
3917-
return Function('event', 'return (' + str + ')')(event)
3917+
return Function('event', 'return (' + str + ')').call(elt, event)
39183918
} else { // allow window.event to be accessible
3919-
return Function('return (' + str + ')')()
3919+
return Function('return (' + str + ')').call(elt)
39203920
}
39213921
}, {})
39223922
} else {
@@ -4752,20 +4752,21 @@ var htmx = (function() {
47524752
}
47534753

47544754
/**
4755-
* Updates the responseInfo's target property if an HX-Retarget header is present
4756-
*
4757-
* @param {XMLHttpRequest} xhr
4758-
* @param {HtmxResponseInfo} responseInfo
4755+
* Resove the Retarget selector and throw if not found
47594756
* @param {Element} elt
4757+
* @param {String} target
4758+
* @returns {Element}
47604759
*/
4761-
function handleRetargetHeader(xhr, responseInfo, elt) {
4762-
if (hasHeader(xhr, /HX-Retarget:/i)) {
4763-
if (xhr.getResponseHeader('HX-Retarget') === 'this') {
4764-
responseInfo.target = elt
4765-
} else {
4766-
responseInfo.target = asElement(querySelectorExt(elt, xhr.getResponseHeader('HX-Retarget')))
4767-
}
4760+
function resolveRetarget(elt, target) {
4761+
if (target === 'this') {
4762+
return elt
4763+
}
4764+
const resolvedTarget = asElement(querySelectorExt(elt, target))
4765+
if (resolvedTarget == null) {
4766+
triggerErrorEvent(elt, 'htmx:targetError', { target })
4767+
throw new Error(`Invalid re-target ${target}`)
47684768
}
4769+
return resolvedTarget
47694770
}
47704771

47714772
/**
@@ -4816,9 +4817,6 @@ var htmx = (function() {
48164817
return
48174818
}
48184819

4819-
// handle retargeting before determining history updates/resolving response handling
4820-
handleRetargetHeader(xhr, responseInfo, elt)
4821-
48224820
const historyUpdate = determineHistoryUpdates(elt, responseInfo)
48234821

48244822
const responseHandling = resolveResponseHandling(xhr)
@@ -4827,15 +4825,17 @@ var htmx = (function() {
48274825
let ignoreTitle = htmx.config.ignoreTitle || responseHandling.ignoreTitle
48284826
let selectOverride = responseHandling.select
48294827
if (responseHandling.target) {
4830-
responseInfo.target = asElement(querySelectorExt(elt, responseHandling.target))
4828+
responseInfo.target = resolveRetarget(elt, responseHandling.target)
48314829
}
48324830
var swapOverride = etc.swapOverride
48334831
if (swapOverride == null && responseHandling.swapOverride) {
48344832
swapOverride = responseHandling.swapOverride
48354833
}
48364834

48374835
// response headers override response handling config
4838-
handleRetargetHeader(xhr, responseInfo, elt)
4836+
if (hasHeader(xhr, /HX-Retarget:/i)) {
4837+
responseInfo.target = resolveRetarget(elt, xhr.getResponseHeader('HX-Retarget'))
4838+
}
48394839

48404840
if (hasHeader(xhr, /HX-Reswap:/i)) {
48414841
swapOverride = xhr.getResponseHeader('HX-Reswap')

0 commit comments

Comments
 (0)