Cache evaluated trigger specs (#1540)

* Cache evaluated trigger specs

* Removed spec array copy

* parseAndCacheTrigger func (wrong indentation for more readable diff)

* triggerSpecsCache config property

* Avoid htmx.config.triggerSpecsCache repetition
This commit is contained in:
Vincent 2023-12-14 02:27:58 +01:00 committed by GitHub
parent 73ec692e6c
commit da546050c3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -76,7 +76,8 @@ return (function () {
methodsThatUseUrlParams: ["get"],
selfRequestsOnly: false,
ignoreTitle: false,
scrollIntoViewOnBoost: true
scrollIntoViewOnBoost: true,
triggerSpecsCache: null,
},
parseInterval:parseInterval,
_:internalEval,
@ -1252,12 +1253,11 @@ return (function () {
/**
* @param {HTMLElement} elt
* @param {string} explicitTrigger
* @returns {import("./htmx").HtmxTriggerSpecification[]}
*/
function getTriggerSpecs(elt) {
var explicitTrigger = getAttributeValue(elt, 'hx-trigger');
function parseAndCacheTrigger(elt, explicitTrigger) {
var triggerSpecs = [];
if (explicitTrigger) {
var tokens = tokenizeString(explicitTrigger);
do {
consumeUntil(tokens, NOT_WHITESPACE);
@ -1337,6 +1337,23 @@ return (function () {
}
consumeUntil(tokens, NOT_WHITESPACE);
} while (tokens[0] === "," && tokens.shift())
var cache = htmx.config.triggerSpecsCache
if (cache) {
cache[explicitTrigger] = triggerSpecs
}
return triggerSpecs
}
/**
* @param {HTMLElement} elt
* @returns {import("./htmx").HtmxTriggerSpecification[]}
*/
function getTriggerSpecs(elt) {
var explicitTrigger = getAttributeValue(elt, 'hx-trigger');
var triggerSpecs = [];
if (explicitTrigger) {
var cache = htmx.config.triggerSpecsCache
triggerSpecs = (cache && cache[explicitTrigger]) || parseAndCacheTrigger(elt, explicitTrigger)
}
if (triggerSpecs.length > 0) {