diff --git a/alpinejs/README.md b/alpinejs/README.md index b1035e8..f1c807f 100644 --- a/alpinejs/README.md +++ b/alpinejs/README.md @@ -28,7 +28,14 @@ import persist from 'jslibs/alpinejs/v3/persist/dist/module.esm.js'; Alpine.start(); })(); +``` + +Note that AlpineJS now requires ES target 2017 or later to work: +```handlebars +{{ $params := dict }} +{{ $opts := dict "sourceMap" $sourceMap "minify" (ne hugo.Environment "development") "target" "es2017" "params" $params }} +{{ $js := $js | js.Build $opts }} ``` Note that this works great in combination with [Turbo](https://github.com/gohugoio/hugo-mod-jslibs/tree/master/turbo), but you would need to set up something like [these listeners](https://gist.github.com/bep/a9809f0cb119e44e8ddbe37dd1e58b50) to make it work properly. diff --git a/alpinejs/packages/alpinejs/dist/cdn.js b/alpinejs/packages/alpinejs/dist/cdn.js index 8efaead..895c485 100644 --- a/alpinejs/packages/alpinejs/dist/cdn.js +++ b/alpinejs/packages/alpinejs/dist/cdn.js @@ -3,6 +3,7 @@ var flushPending = false; var flushing = false; var queue = []; + var lastFlushedIndex = -1; function scheduler(callback) { queueJob(callback); } @@ -13,7 +14,7 @@ } function dequeueJob(job) { let index = queue.indexOf(job); - if (index !== -1) + if (index !== -1 && index > lastFlushedIndex) queue.splice(index, 1); } function queueFlush() { @@ -27,8 +28,10 @@ flushing = true; for (let i = 0; i < queue.length; i++) { queue[i](); + lastFlushedIndex = i; } queue.length = 0; + lastFlushedIndex = -1; flushing = false; } @@ -46,13 +49,13 @@ function setReactivityEngine(engine) { reactive = engine.reactive; release = engine.release; - effect = (callback) => engine.effect(callback, {scheduler: (task) => { + effect = (callback) => engine.effect(callback, { scheduler: (task) => { if (shouldSchedule) { scheduler(task); } else { task(); } - }}); + } }); raw = engine.raw; } function overrideEffect(override) { @@ -64,7 +67,7 @@ let wrappedEffect = (callback) => { let effectReference = effect(callback); if (!el._x_effects) { - el._x_effects = new Set(); + el._x_effects = /* @__PURE__ */ new Set(); el._x_runEffects = () => { el._x_effects.forEach((i) => i()); }; @@ -83,6 +86,120 @@ }]; } + // packages/alpinejs/src/utils/dispatch.js + function dispatch(el, name, detail = {}) { + el.dispatchEvent( + new CustomEvent(name, { + detail, + bubbles: true, + // Allows events to pass the shadow DOM barrier. + composed: true, + cancelable: true + }) + ); + } + + // packages/alpinejs/src/utils/walk.js + function walk(el, callback) { + if (typeof ShadowRoot === "function" && el instanceof ShadowRoot) { + Array.from(el.children).forEach((el2) => walk(el2, callback)); + return; + } + let skip = false; + callback(el, () => skip = true); + if (skip) + return; + let node = el.firstElementChild; + while (node) { + walk(node, callback, false); + node = node.nextElementSibling; + } + } + + // packages/alpinejs/src/utils/warn.js + function warn(message, ...args) { + console.warn(`Alpine Warning: ${message}`, ...args); + } + + // packages/alpinejs/src/lifecycle.js + var started = false; + function start() { + if (started) + warn("Alpine has already been initialized on this page. Calling Alpine.start() more than once can cause problems."); + started = true; + if (!document.body) + warn("Unable to initialize. Trying to load Alpine before `
` is available. Did you forget to add `defer` in Alpine's ` + ``` @@ -29,7 +36,7 @@ Like all Alpine extensions, you can include this either via ` - - ... + + + ...