diff options
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(); }; |