diff options
Diffstat (limited to 'alpinejs/packages/alpinejs/dist/cdn.js')
-rw-r--r-- | alpinejs/packages/alpinejs/dist/cdn.js | 124 |
1 files changed, 88 insertions, 36 deletions
diff --git a/alpinejs/packages/alpinejs/dist/cdn.js b/alpinejs/packages/alpinejs/dist/cdn.js index 50d3328..800464c 100644 --- a/alpinejs/packages/alpinejs/dist/cdn.js +++ b/alpinejs/packages/alpinejs/dist/cdn.js @@ -372,6 +372,24 @@ }; } + // packages/alpinejs/src/utils/error.js + function tryCatch(el, expression, callback, ...args) { + try { + return callback(...args); + } catch (e) { + handleError(e, el, expression); + } + } + function handleError(error2, el, expression = void 0) { + Object.assign(error2, {el, expression}); + console.warn(`Alpine Expression Error: ${error2.message} + +${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el); + setTimeout(() => { + throw error2; + }, 0); + } + // packages/alpinejs/src/evaluator.js function evaluate(el, expression, extras = {}) { let result; @@ -393,7 +411,7 @@ if (typeof expression === "function") { return generateEvaluatorFromFunction(dataStack, expression); } - let evaluator = generateEvaluatorFromString(dataStack, expression); + let evaluator = generateEvaluatorFromString(dataStack, expression, el); return tryCatch.bind(null, el, expression, evaluator); } function generateEvaluatorFromFunction(dataStack, func) { @@ -404,39 +422,49 @@ }; } var evaluatorMemo = {}; - function generateFunctionFromString(expression) { + function generateFunctionFromString(expression, el) { if (evaluatorMemo[expression]) { return evaluatorMemo[expression]; } let AsyncFunction = Object.getPrototypeOf(async function() { }).constructor; - let rightSideSafeExpression = /^[\n\s]*if.*\(.*\)/.test(expression) || /^(let|const)/.test(expression) ? `(() => { ${expression} })()` : expression; - let func = new AsyncFunction(["__self", "scope"], `with (scope) { __self.result = ${rightSideSafeExpression} }; __self.finished = true; return __self.result;`); + let rightSideSafeExpression = /^[\n\s]*if.*\(.*\)/.test(expression) || /^(let|const)\s/.test(expression) ? `(() => { ${expression} })()` : expression; + const safeAsyncFunction = () => { + try { + return new AsyncFunction(["__self", "scope"], `with (scope) { __self.result = ${rightSideSafeExpression} }; __self.finished = true; return __self.result;`); + } catch (error2) { + handleError(error2, el, expression); + return Promise.resolve(); + } + }; + let func = safeAsyncFunction(); evaluatorMemo[expression] = func; return func; } - function generateEvaluatorFromString(dataStack, expression) { - let func = generateFunctionFromString(expression); + function generateEvaluatorFromString(dataStack, expression, el) { + let func = generateFunctionFromString(expression, el); return (receiver = () => { }, {scope = {}, params = []} = {}) => { func.result = void 0; func.finished = false; let completeScope = mergeProxies([scope, ...dataStack]); - let promise = func(func, completeScope); - if (func.finished) { - runIfTypeOfFunction(receiver, func.result, completeScope, params); - } else { - promise.then((result) => { - runIfTypeOfFunction(receiver, result, completeScope, params); - }); + if (typeof func === "function") { + let promise = func(func, completeScope).catch((error2) => handleError(error2, el, expression)); + if (func.finished) { + runIfTypeOfFunction(receiver, func.result, completeScope, params, el); + } else { + promise.then((result) => { + runIfTypeOfFunction(receiver, result, completeScope, params, el); + }).catch((error2) => handleError(error2, el, expression)); + } } }; } - function runIfTypeOfFunction(receiver, value, scope, params) { + function runIfTypeOfFunction(receiver, value, scope, params, el) { if (typeof value === "function") { let result = value.apply(scope, params); if (result instanceof Promise) { - result.then((i) => runIfTypeOfFunction(receiver, i, scope, params)); + result.then((i) => runIfTypeOfFunction(receiver, i, scope, params)).catch((error2) => handleError(error2, el, value)); } else { receiver(result); } @@ -444,18 +472,6 @@ receiver(value); } } - function tryCatch(el, expression, callback, ...args) { - try { - return callback(...args); - } catch (e) { - console.warn(`Alpine Expression Error: ${e.message} - -Expression: "${expression}" - -`, el); - throw e; - } - } // packages/alpinejs/src/directives.js var prefixAsString = "x-"; @@ -911,7 +927,11 @@ Expression: "${expression}" document.visibilityState === "visible" ? requestAnimationFrame(show) : setTimeout(show); }; if (value) { - el._x_transition ? el._x_transition.in(show) : clickAwayCompatibleShow(); + if (el._x_transition && (el._x_transition.enter || el._x_transition.leave)) { + el._x_transition.enter && (Object.entries(el._x_transition.enter.during).length || Object.entries(el._x_transition.enter.start).length || Object.entries(el._x_transition.enter.end).length) ? el._x_transition.in(show) : clickAwayCompatibleShow(); + } else { + el._x_transition ? el._x_transition.in(show) : clickAwayCompatibleShow(); + } return; } el._x_hidePromise = el._x_transition ? new Promise((resolve, reject) => { @@ -1109,6 +1129,7 @@ Expression: "${expression}" if (typeof value === "object" && value !== null && value.hasOwnProperty("init") && typeof value.init === "function") { stores[name].init(); } + initInterceptors(stores[name]); } function getStores() { return stores; @@ -1116,8 +1137,9 @@ Expression: "${expression}" // packages/alpinejs/src/clone.js var isCloning = false; - function skipDuringClone(callback) { - return (...args) => isCloning || callback(...args); + function skipDuringClone(callback, fallback = () => { + }) { + return (...args) => isCloning ? fallback(...args) : callback(...args); } function clone(oldEl, newEl) { newEl._x_dataStack = oldEl._x_dataStack; @@ -1184,16 +1206,18 @@ Expression: "${expression}" get raw() { return raw; }, - version: "3.4.2", + version: "3.5.1", flushAndStopDeferringMutations, disableEffectScheduling, stopObservingMutations, setReactivityEngine, + skipDuringClone, addRootSelector, deferMutations, mapAttributes, evaluateLater, setEvaluator, + mergeProxies, destroyTree, closestRoot, interceptor, @@ -1926,6 +1950,11 @@ Expression: "${expression}" // packages/alpinejs/src/magics/$store.js magic("store", getStores); + // packages/alpinejs/src/magics/$data.js + magic("data", (el) => { + return mergeProxies(closestDataStack(el)); + }); + // packages/alpinejs/src/magics/$root.js magic("root", (el) => closestRoot(el)); @@ -2124,6 +2153,8 @@ Expression: "${expression}" return; if (el.offsetWidth < 1 && el.offsetHeight < 1) return; + if (el._x_isShown === false) + return; next(e); }); } @@ -2239,6 +2270,18 @@ Expression: "${expression}" }}); }); cleanup2(() => removeListener()); + let evaluateSetModel = evaluateLater(el, `${expression} = __placeholder`); + el._x_model = { + get() { + let result; + evaluate2((value) => result = value); + return result; + }, + set(value) { + evaluateSetModel(() => { + }, {scope: {__placeholder: value}}); + } + }; el._x_forceModelUpdate = () => { evaluate2((value) => { if (value === void 0 && expression.match(/\./)) @@ -2353,11 +2396,18 @@ Expression: "${expression}" cleanupRunners.pop()(); getBindings((bindings) => { let attributes = Object.entries(bindings).map(([name, value]) => ({name, value})); - attributesOnly(attributes).forEach(({name, value}, index) => { - attributes[index] = { - name: `x-bind:${name}`, - value: `"${value}"` - }; + attributes = attributes.filter((attr) => { + return !(typeof attr.value === "object" && !Array.isArray(attr.value) && attr.value !== null); + }); + let staticAttributes = attributesOnly(attributes); + attributes = attributes.map((attribute) => { + if (staticAttributes.find((attr) => attr.name === attribute.name)) { + return { + name: `x-bind:${attribute.name}`, + value: `"${attribute.value}"` + }; + } + return attribute; }); directives(el, attributes, original).map((handle) => { cleanupRunners.push(handle.runCleanups); @@ -2379,6 +2429,8 @@ Expression: "${expression}" let dataProviderContext = {}; injectDataProviders(dataProviderContext, magicContext); let data2 = evaluate(el, expression, {scope: dataProviderContext}); + if (data2 === void 0) + data2 = {}; let cleanup22 = injectMagics(data2, el).cleanup; let reactiveData = reactive(data2); initInterceptors(reactiveData); |