summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/htmx.js (renamed from src/kutty.js)168
1 files changed, 84 insertions, 84 deletions
diff --git a/src/kutty.js b/src/htmx.js
index dee25f72..1d0137cd 100644
--- a/src/kutty.js
+++ b/src/htmx.js
@@ -1,5 +1,5 @@
// noinspection JSUnusedAssignment
-var kutty = kutty || (function () {
+var htmx = htmx || (function () {
'use strict';
var VERBS = ['get', 'post', 'put', 'delete', 'patch']
@@ -118,7 +118,7 @@ var kutty = kutty || (function () {
}
function getInternalData(elt) {
- var dataProp = 'kutty-internal-data';
+ var dataProp = 'htmx-internal-data';
var data = elt[dataProp];
if (!data) {
data = elt[dataProp] = {};
@@ -181,14 +181,14 @@ var kutty = kutty || (function () {
}
function onLoadHelper(callback) {
- var value = kutty.on("load.kutty", function(evt) {
+ var value = htmx.on("load.htmx", function(evt) {
callback(evt.detail.elt);
});
return value;
}
function logAll(){
- kutty.logger = function(elt, event, data) {
+ htmx.logger = function(elt, event, data) {
if(console) {
console.log(event, elt, data);
}
@@ -290,9 +290,9 @@ var kutty = kutty || (function () {
//====================================================================
function getTarget(elt) {
- var explicitTarget = getClosestMatch(elt, function(e){return getRawAttribute(e,"kt-target") !== null});
+ var explicitTarget = getClosestMatch(elt, function(e){return getRawAttribute(e,"hx-target") !== null});
if (explicitTarget) {
- var targetStr = getRawAttribute(explicitTarget, "kt-target");
+ var targetStr = getRawAttribute(explicitTarget, "hx-target");
if (targetStr === "this") {
return explicitTarget;
} else if (targetStr.indexOf("closest ") === 0) {
@@ -324,7 +324,7 @@ var kutty = kutty || (function () {
function handleOutOfBandSwaps(fragment) {
var settleTasks = [];
forEach(toArray(fragment.children), function (child) {
- if (getAttributeValue(child, "kt-swap-oob") === "true") {
+ if (getAttributeValue(child, "hx-swap-oob") === "true") {
var target = getDocument().getElementById(child.id);
if (target) {
var fragment = getDocument().createDocumentFragment();
@@ -332,7 +332,7 @@ var kutty = kutty || (function () {
settleTasks = settleTasks.concat(swapOuterHTML(target, fragment));
} else {
child.parentNode.removeChild(child);
- triggerErrorEvent(getDocument().body, "oobErrorNoTarget.kutty", {content: child})
+ triggerErrorEvent(getDocument().body, "oobErrorNoTarget.htmx", {content: child})
}
}
});
@@ -360,7 +360,7 @@ var kutty = kutty || (function () {
var child = fragment.firstChild;
parentNode.insertBefore(child, insertBefore);
if (child.nodeType !== Node.TEXT_NODE) {
- triggerEvent(child, 'load.kutty', {});
+ triggerEvent(child, 'load.htmx', {});
processNode(child);
}
}
@@ -406,7 +406,7 @@ var kutty = kutty || (function () {
}
function maybeSelectFromResponse(elt, fragment) {
- var selector = getClosestAttributeValue(elt, "kt-select");
+ var selector = getClosestAttributeValue(elt, "hx-select");
if (selector) {
var newFragment = getDocument().createDocumentFragment();
forEach(fragment.querySelectorAll(selector), function (node) {
@@ -459,7 +459,7 @@ var kutty = kutty || (function () {
var triggerSpec = {
"trigger" : "click"
}
- var explicitTrigger = getAttributeValue(elt, 'kt-trigger');
+ var explicitTrigger = getAttributeValue(elt, 'hx-trigger');
if (explicitTrigger) {
var tokens = splitOnWhitespace(explicitTrigger);
if (tokens.length > 0) {
@@ -553,7 +553,7 @@ var kutty = kutty || (function () {
nodeData.timeout = setTimeout(function () {
if (bodyContains(elt) && nodeData.cancelled !== true) {
issueAjaxRequest(elt, verb, path);
- processPolling(elt, verb, getAttributeValue(elt, "kt-" + verb), interval);
+ processPolling(elt, verb, getAttributeValue(elt, "hx-" + verb), interval);
}
}, interval);
}
@@ -626,13 +626,13 @@ var kutty = kutty || (function () {
}
function initScrollHandler() {
- if (!window['kuttyScrollHandler']) {
+ if (!window['htmxScrollHandler']) {
var scrollHandler = function() {
- forEach(getDocument().querySelectorAll("[kt-trigger='revealed']"), function (elt) {
+ forEach(getDocument().querySelectorAll("[hx-trigger='revealed']"), function (elt) {
maybeReveal(elt);
});
};
- window['kuttyScrollHandler'] = scrollHandler;
+ window['htmxScrollHandler'] = scrollHandler;
window.addEventListener("scroll", scrollHandler)
}
}
@@ -656,10 +656,10 @@ var kutty = kutty || (function () {
var detail = {
config:{withCredentials: true}
};
- triggerEvent(elt, "initSSE.kutty", detail);
+ triggerEvent(elt, "initSSE.htmx", detail);
var source = new EventSource(sseSrc, detail.config);
source.onerror = function (e) {
- triggerErrorEvent(elt, "sseError.kutty", {error:e, source:source});
+ triggerErrorEvent(elt, "sseError.htmx", {error:e, source:source});
maybeCloseSSESource(elt);
};
getInternalData(elt).sseSource = source;
@@ -681,7 +681,7 @@ var kutty = kutty || (function () {
};
sseSource.sseSource.addEventListener(sseEventName, sseListener);
} else {
- triggerErrorEvent(elt, "noSSESourceError.kutty")
+ triggerErrorEvent(elt, "noSSESourceError.htmx")
}
}
@@ -702,7 +702,7 @@ var kutty = kutty || (function () {
function processVerbs(elt, nodeData, triggerSpec) {
var explicitAction = false;
forEach(VERBS, function (verb) {
- var path = getAttributeValue(elt, 'kt-' + verb);
+ var path = getAttributeValue(elt, 'hx-' + verb);
if (path) {
explicitAction = true;
nodeData.path = path;
@@ -733,14 +733,14 @@ var kutty = kutty || (function () {
var triggerSpec = getTriggerSpec(elt);
var explicitAction = processVerbs(elt, nodeData, triggerSpec);
- if (!explicitAction && getClosestAttributeValue(elt, "kt-boost") === "true") {
+ if (!explicitAction && getClosestAttributeValue(elt, "hx-boost") === "true") {
boostElement(elt, nodeData, triggerSpec);
}
- var sseSrc = getAttributeValue(elt, 'kt-sse-source');
+ var sseSrc = getAttributeValue(elt, 'hx-sse-source');
if (sseSrc) {
initSSESource(elt, sseSrc);
}
- var addClass = getAttributeValue(elt, 'kt-classes');
+ var addClass = getAttributeValue(elt, 'hx-classes');
if (addClass) {
processClassList(elt, addClass);
}
@@ -755,7 +755,7 @@ var kutty = kutty || (function () {
//====================================================================
function sendError(elt, eventName, detail) {
- var errorURL = getClosestAttributeValue(elt, "kt-error-url");
+ var errorURL = getClosestAttributeValue(elt, "hx-error-url");
if (errorURL) {
var xhr = new XMLHttpRequest();
xhr.open("POST", errorURL);
@@ -782,8 +782,8 @@ var kutty = kutty || (function () {
function triggerEvent(elt, eventName, detail) {
detail["elt"] = elt;
var event = makeEvent(eventName, detail);
- if (kutty.logger) {
- kutty.logger(elt, eventName, detail);
+ if (htmx.logger) {
+ htmx.logger(elt, eventName, detail);
if (detail.isError) {
sendError(elt, eventName, detail);
}
@@ -798,12 +798,12 @@ var kutty = kutty || (function () {
var currentPathForHistory = null;
function getHistoryElement() {
- var historyElt = getDocument().querySelector('[kt-history-elt]');
+ var historyElt = getDocument().querySelector('[hx-history-elt]');
return historyElt || getDocument().body;
}
function saveToHistoryCache(url, content, title, scroll) {
- var historyCache = JSON.parse(localStorage.getItem("kutty-history-cache")) || [];
+ var historyCache = JSON.parse(localStorage.getItem("htmx-history-cache")) || [];
for (var i = 0; i < historyCache.length; i++) {
if (historyCache[i].url === url) {
historyCache = historyCache.slice(i, 1);
@@ -811,14 +811,14 @@ var kutty = kutty || (function () {
}
}
historyCache.push({url:url, content: content, title:title, scroll:scroll})
- while (historyCache.length > kutty.config.historyCacheSize) {
+ while (historyCache.length > htmx.config.historyCacheSize) {
historyCache.shift();
}
- localStorage.setItem("kutty-history-cache", JSON.stringify(historyCache));
+ localStorage.setItem("htmx-history-cache", JSON.stringify(historyCache));
}
function getCachedHistory(url) {
- var historyCache = JSON.parse(localStorage.getItem("kutty-history-cache")) || [];
+ var historyCache = JSON.parse(localStorage.getItem("htmx-history-cache")) || [];
for (var i = 0; i < historyCache.length; i++) {
if (historyCache[i].url === url) {
return historyCache[i];
@@ -830,13 +830,13 @@ var kutty = kutty || (function () {
function saveHistory() {
var elt = getHistoryElement();
var path = currentPathForHistory || location.pathname+location.search;
- triggerEvent(getDocument().body, "beforeHistorySave.kutty", {path:path, historyElt:elt});
- if(kutty.config.historyEnabled) history.replaceState({}, getDocument().title, window.location.href);
+ triggerEvent(getDocument().body, "beforeHistorySave.htmx", {path:path, historyElt:elt});
+ if(htmx.config.historyEnabled) history.replaceState({}, getDocument().title, window.location.href);
saveToHistoryCache(path, elt.innerHTML, getDocument().title, window.scrollY);
}
function pushUrlIntoHistory(path) {
- if(kutty.config.historyEnabled) history.pushState({}, "", path);
+ if(htmx.config.historyEnabled) history.pushState({}, "", path);
currentPathForHistory = path;
}
@@ -849,17 +849,17 @@ var kutty = kutty || (function () {
function loadHistoryFromServer(path) {
var request = new XMLHttpRequest();
var details = {path: path, xhr:request};
- triggerEvent(getDocument().body, "historyCacheMiss.kutty", details);
+ triggerEvent(getDocument().body, "historyCacheMiss.htmx", details);
request.open('GET', path, true);
request.onload = function () {
if (this.status >= 200 && this.status < 400) {
- triggerEvent(getDocument().body, "historyCacheMissLoad.kutty", details);
+ triggerEvent(getDocument().body, "historyCacheMissLoad.htmx", details);
var fragment = makeFragment(this.response);
- fragment = fragment.querySelector('[kt-history-elt]') || fragment;
+ fragment = fragment.querySelector('[hx-history-elt]') || fragment;
settleImmediately(swapInnerHTML(getHistoryElement(), fragment));
currentPathForHistory = path;
} else {
- triggerErrorEvent(getDocument().body, "historyCacheMissLoadError.kutty", details);
+ triggerErrorEvent(getDocument().body, "historyCacheMissLoadError.htmx", details);
}
};
request.send();
@@ -868,7 +868,7 @@ var kutty = kutty || (function () {
function restoreHistory(path) {
saveHistory(currentPathForHistory);
path = path || location.pathname+location.search;
- triggerEvent(getDocument().body, "historyRestore.kutty", {path:path});
+ triggerEvent(getDocument().body, "historyRestore.htmx", {path:path});
var cached = getCachedHistory(path);
if (cached) {
settleImmediately(swapInnerHTML(getHistoryElement(), makeFragment(cached.content)));
@@ -881,7 +881,7 @@ var kutty = kutty || (function () {
}
function shouldPush(elt) {
- return getClosestAttributeValue(elt, "kt-push-url") === "true" ||
+ return getClosestAttributeValue(elt, "hx-push-url") === "true" ||
(elt.tagName === "A" && getInternalData(elt).boosted);
}
@@ -894,14 +894,14 @@ var kutty = kutty || (function () {
}
function mutateRequestIndicatorClasses(elt, action) {
- var indicator = getClosestAttributeValue(elt, 'kt-indicator');
+ var indicator = getClosestAttributeValue(elt, 'hx-indicator');
if (indicator) {
var indicators = getDocument().querySelectorAll(indicator);
} else {
indicators = [elt];
}
forEach(indicators, function(ic) {
- ic.classList[action].call(ic.classList, "kutty-request");
+ ic.classList[action].call(ic.classList, "htmx-request");
});
}
@@ -970,7 +970,7 @@ var kutty = kutty || (function () {
processInputValue(processed, values, elt);
// include any explicit includes
- var includes = getClosestAttributeValue(elt, "kt-include");
+ var includes = getClosestAttributeValue(elt, "hx-include");
if (includes) {
var nodes = getDocument().querySelectorAll(includes);
forEach(nodes, function(node) {
@@ -1016,30 +1016,30 @@ var kutty = kutty || (function () {
function getHeaders(elt, target, prompt, eventTarget) {
var headers = {
- "X-KT-Request" : "true",
- "X-KT-Trigger" : getRawAttribute(elt, "id"),
- "X-KT-Trigger-Name" : getRawAttribute(elt, "name"),
- "X-KT-Target" : getRawAttribute(target, "id"),
+ "X-HX-Request" : "true",
+ "X-HX-Trigger" : getRawAttribute(elt, "id"),
+ "X-HX-Trigger-Name" : getRawAttribute(elt, "name"),
+ "X-HX-Target" : getRawAttribute(target, "id"),
"Current-URL" : getDocument().location.href,
}
if (prompt) {
- headers["X-KT-Prompt"] = prompt;
+ headers["X-HX-Prompt"] = prompt;
}
if (eventTarget) {
- headers["X-KT-Event-Target"] = getRawAttribute(eventTarget, "id");
+ headers["X-HX-Event-Target"] = getRawAttribute(eventTarget, "id");
}
if (getDocument().activeElement) {
- headers["X-KT-Active-Element"] = getRawAttribute(getDocument().activeElement, "id");
- headers["X-KT-Active-Element-Name"] = getRawAttribute(getDocument().activeElement, "name");
+ headers["X-HX-Active-Element"] = getRawAttribute(getDocument().activeElement, "id");
+ headers["X-HX-Active-Element-Name"] = getRawAttribute(getDocument().activeElement, "name");
if (getDocument().activeElement.value) {
- headers["X-KT-Active-Element-Value"] = getRawAttribute(getDocument().activeElement, "value");
+ headers["X-HX-Active-Element-Value"] = getRawAttribute(getDocument().activeElement, "value");
}
}
return headers;
}
function filterValues(inputValues, elt, verb) {
- var paramsValue = getClosestAttributeValue(elt, "kt-params");
+ var paramsValue = getClosestAttributeValue(elt, "hx-params");
if (paramsValue) {
if (paramsValue === "none") {
return {};
@@ -1065,11 +1065,11 @@ var kutty = kutty || (function () {
}
function getSwapSpecification(elt) {
- var swapInfo = getClosestAttributeValue(elt, "kt-swap");
+ var swapInfo = getClosestAttributeValue(elt, "hx-swap");
var swapSpec = {
- "swapStyle" : kutty.config.defaultSwapStyle,
- "swapDelay" : kutty.config.defaultSwapDelay,
- "settleDelay" : kutty.config.defaultSettleDelay
+ "swapStyle" : htmx.config.defaultSwapStyle,
+ "swapDelay" : htmx.config.defaultSwapDelay,
+ "settleDelay" : htmx.config.defaultSettleDelay
}
if (swapInfo) {
var split = splitOnWhitespace(swapInfo);
@@ -1092,7 +1092,7 @@ var kutty = kutty || (function () {
function issueAjaxRequest(elt, verb, path, eventTarget) {
var target = getTarget(elt);
if (target == null) {
- triggerErrorEvent(elt, 'targetError.kutty', {target: getRawAttribute(elt, "kt-target")});
+ triggerErrorEvent(elt, 'targetError.htmx', {target: getRawAttribute(elt, "hx-target")});
return;
}
var eltData = getInternalData(elt);
@@ -1104,13 +1104,13 @@ var kutty = kutty || (function () {
var endRequestLock = function(){
eltData.requestInFlight = false
}
- var promptQuestion = getClosestAttributeValue(elt, "kt-prompt");
+ var promptQuestion = getClosestAttributeValue(elt, "hx-prompt");
if (promptQuestion) {
var promptResponse = prompt(promptQuestion);
- if(!triggerEvent(elt, 'prompt.kutty', {prompt: promptResponse, target:target})) return endRequestLock();
+ if(!triggerEvent(elt, 'prompt.htmx', {prompt: promptResponse, target:target})) return endRequestLock();
}
- var confirmQuestion = getClosestAttributeValue(elt, "kt-confirm");
+ var confirmQuestion = getClosestAttributeValue(elt, "hx-confirm");
if (confirmQuestion) {
if(!confirm(confirmQuestion)) return endRequestLock();
}
@@ -1135,7 +1135,7 @@ var kutty = kutty || (function () {
target:target,
verb:verb
};
- if(!triggerEvent(elt, 'configRequest.kutty', requestConfig)) return endRequestLock();
+ if(!triggerEvent(elt, 'configRequest.htmx', requestConfig)) return endRequestLock();
// request type
var requestURL;
@@ -1160,10 +1160,10 @@ var kutty = kutty || (function () {
var eventDetail = {xhr: xhr, target: target};
xhr.onload = function () {
try {
- if (!triggerEvent(elt, 'beforeOnLoad.kutty', eventDetail)) return;
+ if (!triggerEvent(elt, 'beforeOnLoad.htmx', eventDetail)) return;
- handleTrigger(elt, this.getResponseHeader("X-KT-Trigger"));
- var pushedUrl = this.getResponseHeader("X-KT-Push");
+ handleTrigger(elt, this.getResponseHeader("X-HX-Trigger"));
+ var pushedUrl = this.getResponseHeader("X-HX-Push");
var shouldSaveHistory = shouldPush(elt) || pushedUrl;
@@ -1173,7 +1173,7 @@ var kutty = kutty || (function () {
}
// don't process 'No Content' response
if (this.status !== 204) {
- if (!triggerEvent(elt, 'beforeSwap.kutty', eventDetail)) return;
+ if (!triggerEvent(elt, 'beforeSwap.htmx', eventDetail)) return;
var resp = this.response;
@@ -1184,24 +1184,24 @@ var kutty = kutty || (function () {
var swapSpec = getSwapSpecification(elt);
- target.classList.add("kutty-swapping");
+ target.classList.add("htmx-swapping");
var doSwap = function () {
try {
var settleTasks = swapResponse(swapSpec.swapStyle, target, elt, resp);
- target.classList.remove("kutty-swapping");
- target.classList.add("kutty-settling");
- triggerEvent(elt, 'afterSwap.kutty', eventDetail);
+ target.classList.remove("htmx-swapping");
+ target.classList.add("htmx-settling");
+ triggerEvent(elt, 'afterSwap.htmx', eventDetail);
var doSettle = function(){
forEach(settleTasks, function (settleTask) {
settleTask.call();
});
- target.classList.remove("kutty-settling");
+ target.classList.remove("htmx-settling");
// push URL and save new page
if (shouldSaveHistory) {
pushUrlIntoHistory(pushedUrl || requestURL );
}
- triggerEvent(elt, 'afterSettle.kutty', eventDetail);
+ triggerEvent(elt, 'afterSettle.htmx', eventDetail);
}
if (swapSpec.settleDelay > 0) {
@@ -1210,7 +1210,7 @@ var kutty = kutty || (function () {
doSettle();
}
} catch (e) {
- triggerErrorEvent(elt, 'swapError.kutty', eventDetail);
+ triggerErrorEvent(elt, 'swapError.htmx', eventDetail);
throw e;
}
};
@@ -1222,24 +1222,24 @@ var kutty = kutty || (function () {
}
}
} else {
- triggerErrorEvent(elt, 'responseError.kutty', eventDetail);
+ triggerErrorEvent(elt, 'responseError.htmx', eventDetail);
}
} catch (e) {
eventDetail['exception'] = e;
- triggerErrorEvent(elt, 'onLoadError.kutty', eventDetail);
+ triggerErrorEvent(elt, 'onLoadError.htmx', eventDetail);
throw e;
} finally {
removeRequestIndicatorClasses(elt);
endRequestLock();
- triggerEvent(elt, 'afterOnLoad.kutty', eventDetail);
+ triggerEvent(elt, 'afterOnLoad.htmx', eventDetail);
}
}
xhr.onerror = function () {
removeRequestIndicatorClasses(elt);
- triggerErrorEvent(elt, 'sendError.kutty', eventDetail);
+ triggerErrorEvent(elt, 'sendError.htmx', eventDetail);
endRequestLock();
}
- if(!triggerEvent(elt, 'beforeRequest.kutty', eventDetail)) return endRequestLock();
+ if(!triggerEvent(elt, 'beforeRequest.htmx', eventDetail)) return endRequestLock();
addRequestIndicatorClasses(elt);
xhr.send(verb === 'get' ? null : urlEncode(filteredParameters));
}
@@ -1256,21 +1256,21 @@ var kutty = kutty || (function () {
}
}
- // insert kutty-indicator css rules immediate, if not configured otherwise
+ // insert htmx-indicator css rules immediate, if not configured otherwise
(function() {
var metaConfig = getMetaConfig();
if (metaConfig === null || metaConfig.includeIndicatorStyles !== false) {
getDocument().head.insertAdjacentHTML("beforeend",
"<style>\
- .kutty-indicator{opacity:0;transition: opacity 200ms ease-in;}\
- .kutty-request .kutty-indicator{opacity:1}\
- .kutty-request.kutty-indicator{opacity:1}\
+ .htmx-indicator{opacity:0;transition: opacity 200ms ease-in;}\
+ .htmx-request .htmx-indicator{opacity:1}\
+ .htmx-request.htmx-indicator{opacity:1}\
</style>");
}
})();
function getMetaConfig() {
- var element = getDocument().querySelector('meta[name="kutty-config"]');
+ var element = getDocument().querySelector('meta[name="htmx-config"]');
if (element) {
return JSON.parse(element.content);
} else {
@@ -1281,7 +1281,7 @@ var kutty = kutty || (function () {
function mergeMetaConfig() {
var metaConfig = getMetaConfig();
if (metaConfig) {
- kutty.config = mergeObjects(kutty.config , metaConfig)
+ htmx.config = mergeObjects(htmx.config , metaConfig)
}
}
@@ -1290,7 +1290,7 @@ var kutty = kutty || (function () {
mergeMetaConfig();
var body = getDocument().body;
processNode(body);
- triggerEvent(body, 'load.kutty', {});
+ triggerEvent(body, 'load.htmx', {});
window.onpopstate = function () {
restoreHistory();
};