diff options
Diffstat (limited to 'alpinejs/packages/alpinejs/dist/module.cjs.js')
-rw-r--r-- | alpinejs/packages/alpinejs/dist/module.cjs.js | 105 |
1 files changed, 79 insertions, 26 deletions
diff --git a/alpinejs/packages/alpinejs/dist/module.cjs.js b/alpinejs/packages/alpinejs/dist/module.cjs.js index fc40a5e..7813685 100644 --- a/alpinejs/packages/alpinejs/dist/module.cjs.js +++ b/alpinejs/packages/alpinejs/dist/module.cjs.js @@ -1341,6 +1341,7 @@ function elementBoundEffect(el) { el._x_effects.delete(effectReference); release(effectReference); }; + return effectReference; }; return [wrappedEffect, () => { cleanup(); @@ -1692,6 +1693,13 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el); } // packages/alpinejs/src/evaluator.js +var shouldAutoEvaluateFunctions = true; +function dontAutoEvaluateFunctions(callback) { + let cache = shouldAutoEvaluateFunctions; + shouldAutoEvaluateFunctions = false; + callback(); + shouldAutoEvaluateFunctions = cache; +} function evaluate(el, expression, extras = {}) { let result; evaluateLater(el, expression)((value) => result = value, extras); @@ -1763,7 +1771,7 @@ function generateEvaluatorFromString(dataStack, expression, el) { }; } function runIfTypeOfFunction(receiver, value, scope2, params, el) { - if (typeof value === "function") { + if (shouldAutoEvaluateFunctions && typeof value === "function") { let result = value.apply(scope2, params); if (result instanceof Promise) { result.then((i) => runIfTypeOfFunction(receiver, i, scope2, params)).catch((error2) => handleError(error2, el, value)); @@ -1897,6 +1905,7 @@ var directiveOrder = [ "bind", "init", "for", + "mask", "model", "modelable", "transition", @@ -1925,13 +1934,19 @@ function dispatch(el, name, detail = {}) { // packages/alpinejs/src/nextTick.js var tickStack = []; var isHolding = false; -function nextTick(callback) { - tickStack.push(callback); +function nextTick(callback = () => { +}) { queueMicrotask(() => { isHolding || setTimeout(() => { releaseNextTicks(); }); }); + return new Promise((res) => { + tickStack.push(() => { + callback(); + res(); + }); + }); } function releaseNextTicks() { isHolding = false; @@ -2679,8 +2694,9 @@ var Alpine = { get raw() { return raw; }, - version: "3.9.1", + version: "3.10.2", flushAndStopDeferringMutations, + dontAutoEvaluateFunctions, disableEffectScheduling, stopObservingMutations, destroyTree, @@ -2735,7 +2751,7 @@ magic("watch", (el, {evaluateLater: evaluateLater2, effect: effect3}) => (key, c let evaluate2 = evaluateLater2(key); let firstTime = true; let oldValue; - effect3(() => evaluate2((value) => { + let effectReference = effect3(() => evaluate2((value) => { JSON.stringify(value); if (!firstTime) { queueMicrotask(() => { @@ -2747,6 +2763,7 @@ magic("watch", (el, {evaluateLater: evaluateLater2, effect: effect3}) => (key, c } firstTime = false; })); + el._x_effects.delete(effectReference); }); // packages/alpinejs/src/magics/$store.js @@ -2806,8 +2823,15 @@ magic("id", (el) => (name, key = null) => { // packages/alpinejs/src/magics/$el.js magic("el", (el) => el); +// packages/alpinejs/src/magics/index.js +warnMissingPluginMagic("Focus", "focus", "focus"); +warnMissingPluginMagic("Persist", "persist", "persist"); +function warnMissingPluginMagic(name, magicName, slug) { + magic(magicName, (el) => warn(`You can't use [$${directiveName}] without first installing the "${name}" plugin here: https://alpinejs.dev/plugins/${slug}`, el)); +} + // packages/alpinejs/src/directives/x-modelable.js -directive("modelable", (el, {expression}, {effect: effect3, evaluate: evaluate2, evaluateLater: evaluateLater2}) => { +directive("modelable", (el, {expression}, {effect: effect3, evaluateLater: evaluateLater2}) => { let func = evaluateLater2(expression); let innerGet = () => { let result; @@ -2818,12 +2842,11 @@ directive("modelable", (el, {expression}, {effect: effect3, evaluate: evaluate2, let innerSet = (val) => evaluateInnerSet(() => { }, {scope: {__placeholder: val}}); let initialValue = innerGet(); - if (el._x_modelable_hook) - initialValue = el._x_modelable_hook(initialValue); innerSet(initialValue); queueMicrotask(() => { if (!el._x_model) return; + el._x_removeModelListeners["default"](); let outerGet = el._x_model.get; let outerSet = el._x_model.set; effect3(() => innerSet(outerGet())); @@ -2909,6 +2932,8 @@ function on(el, event, modifiers, callback) { handler3 = wrapHandler(handler3, (next, e) => { if (el.contains(e.target)) return; + if (e.target.isConnected === false) + return; if (el.offsetWidth < 1 && el.offsetHeight < 1) return; if (el._x_isShown === false) @@ -2916,6 +2941,12 @@ function on(el, event, modifiers, callback) { next(e); }); } + if (modifiers.includes("once")) { + handler3 = wrapHandler(handler3, (next, e) => { + next(e); + listenerTarget.removeEventListener(event, handler3, options); + }); + } handler3 = wrapHandler(handler3, (next, e) => { if (isKeyEvent(event)) { if (isListeningForASpecificKeyThatHasntBeenPressed(e, modifiers)) { @@ -2934,12 +2965,6 @@ function on(el, event, modifiers, callback) { let wait = isNumeric(nextModifier.split("ms")[0]) ? Number(nextModifier.split("ms")[0]) : 250; handler3 = throttle(handler3, wait); } - if (modifiers.includes("once")) { - handler3 = wrapHandler(handler3, (next, e) => { - next(e); - listenerTarget.removeEventListener(event, handler3, options); - }); - } listenerTarget.addEventListener(event, handler3, options); return () => { listenerTarget.removeEventListener(event, handler3, options); @@ -3027,7 +3052,10 @@ directive("model", (el, {modifiers, expression}, {effect: effect3, cleanup}) => rightSideOfExpression: assigmentFunction }}); }); - cleanup(() => removeListener()); + if (!el._x_removeModelListeners) + el._x_removeModelListeners = {}; + el._x_removeModelListeners["default"] = removeListener; + cleanup(() => el._x_removeModelListeners["default"]()); let evaluateSetModel = evaluateLater(el, `${expression} = __placeholder`); el._x_model = { get() { @@ -3127,7 +3155,12 @@ directive("html", (el, {expression}, {effect: effect3, evaluateLater: evaluateLa let evaluate2 = evaluateLater2(expression); effect3(() => { evaluate2((value) => { - el.innerHTML = value; + mutateDom(() => { + el.innerHTML = value; + el._x_ignoreSelf = true; + initTree(el); + delete el._x_ignoreSelf; + }); }); }); }); @@ -3197,24 +3230,35 @@ directive("data", skipDuringClone((el, {expression}, {cleanup}) => { cleanup1(); cleanup2(); reactiveData["destroy"] && evaluate(el, reactiveData["destroy"]); + undo(); }); })); // packages/alpinejs/src/directives/x-show.js directive("show", (el, {modifiers, expression}, {effect: effect3}) => { let evaluate2 = evaluateLater(el, expression); - let hide = () => mutateDom(() => { - el.style.display = "none"; + if (!el._x_doHide) + el._x_doHide = () => { + mutateDom(() => el.style.display = "none"); + }; + if (!el._x_doShow) + el._x_doShow = () => { + mutateDom(() => { + if (el.style.length === 1 && el.style.display === "none") { + el.removeAttribute("style"); + } else { + el.style.removeProperty("display"); + } + }); + }; + let hide = () => { + el._x_doHide(); el._x_isShown = false; - }); - let show = () => mutateDom(() => { - if (el.style.length === 1 && el.style.display === "none") { - el.removeAttribute("style"); - } else { - el.style.removeProperty("display"); - } + }; + let show = () => { + el._x_doShow(); el._x_isShown = true; - }); + }; let clickAwayCompatibleShow = () => setTimeout(show); let toggle = once((value) => value ? show() : hide(), (value) => { if (typeof el._x_toggleAndCascadeWithTransitions === "function") { @@ -3471,6 +3515,15 @@ directive("on", skipDuringClone((el, {value, modifiers, expression}, {cleanup}) cleanup(() => removeListener()); })); +// packages/alpinejs/src/directives/index.js +warnMissingPluginDirective("Collapse", "collapse", "collapse"); +warnMissingPluginDirective("Intersect", "intersect", "intersect"); +warnMissingPluginDirective("Focus", "trap", "focus"); +warnMissingPluginDirective("Mask", "mask", "mask"); +function warnMissingPluginDirective(name, directiveName2, slug) { + directive(directiveName2, (el) => warn(`You can't use [x-${directiveName2}] without first installing the "${name}" plugin here: https://alpinejs.dev/plugins/${slug}`, el)); +} + // packages/alpinejs/src/index.js alpine_default.setEvaluator(normalEvaluator); alpine_default.setReactivityEngine({reactive: import_reactivity8.reactive, effect: import_reactivity8.effect, release: import_reactivity8.stop, raw: import_reactivity8.toRaw}); |