Download apps/core/static/admin/js/alpine.js from jun2024/fc: direct link, hf CLI and curl.
- Browser
- Download file 111 kB
-
https://huggingface.co/spaces/jun2024/fc/resolve/main/apps/core/static/admin/js/alpine.js
- Command line
-
hf download hf://spaces/jun2024/fc/apps/core/static/admin/js/alpine.js
-
curl -L -o alpine.js https://huggingface.co/spaces/jun2024/fc/resolve/main/apps/core/static/admin/js/alpine.js
111 kB
| (() => { | |
| // packages/alpinejs/src/scheduler.js | |
| var flushPending = false; | |
| var flushing = false; | |
| var queue = []; | |
| var lastFlushedIndex = -1; | |
| function scheduler(callback) { | |
| queueJob(callback); | |
| } | |
| function queueJob(job) { | |
| if (!queue.includes(job)) | |
| queue.push(job); | |
| queueFlush(); | |
| } | |
| function dequeueJob(job) { | |
| let index = queue.indexOf(job); | |
| if (index !== -1 && index > lastFlushedIndex) | |
| queue.splice(index, 1); | |
| } | |
| function queueFlush() { | |
| if (!flushing && !flushPending) { | |
| flushPending = true; | |
| queueMicrotask(flushJobs); | |
| } | |
| } | |
| function flushJobs() { | |
| flushPending = false; | |
| flushing = true; | |
| for (let i = 0; i < queue.length; i++) { | |
| queue[i](); | |
| lastFlushedIndex = i; | |
| } | |
| queue.length = 0; | |
| lastFlushedIndex = -1; | |
| flushing = false; | |
| } | |
| // packages/alpinejs/src/reactivity.js | |
| var reactive; | |
| var effect; | |
| var release; | |
| var raw; | |
| var shouldSchedule = true; | |
| function disableEffectScheduling(callback) { | |
| shouldSchedule = false; | |
| callback(); | |
| shouldSchedule = true; | |
| } | |
| function setReactivityEngine(engine) { | |
| reactive = engine.reactive; | |
| release = engine.release; | |
| effect = (callback) => engine.effect(callback, { scheduler: (task) => { | |
| if (shouldSchedule) { | |
| scheduler(task); | |
| } else { | |
| task(); | |
| } | |
| } }); | |
| raw = engine.raw; | |
| } | |
| function overrideEffect(override) { | |
| effect = override; | |
| } | |
| function elementBoundEffect(el) { | |
| let cleanup2 = () => { | |
| }; | |
| let wrappedEffect = (callback) => { | |
| let effectReference = effect(callback); | |
| if (!el._x_effects) { | |
| el._x_effects = /* @__PURE__ */ new Set(); | |
| el._x_runEffects = () => { | |
| el._x_effects.forEach((i) => i()); | |
| }; | |
| } | |
| el._x_effects.add(effectReference); | |
| cleanup2 = () => { | |
| if (effectReference === void 0) | |
| return; | |
| el._x_effects.delete(effectReference); | |
| release(effectReference); | |
| }; | |
| return effectReference; | |
| }; | |
| return [wrappedEffect, () => { | |
| cleanup2(); | |
| }]; | |
| } | |
| function watch(getter, callback) { | |
| let firstTime = true; | |
| let oldValue; | |
| let effectReference = effect(() => { | |
| let value = getter(); | |
| JSON.stringify(value); | |
| if (!firstTime) { | |
| queueMicrotask(() => { | |
| callback(value, oldValue); | |
| oldValue = value; | |
| }); | |
| } else { | |
| oldValue = value; | |
| } | |
| firstTime = false; | |
| }); | |
| return () => release(effectReference); | |
| } | |
| // packages/alpinejs/src/mutation.js | |
| var onAttributeAddeds = []; | |
| var onElRemoveds = []; | |
| var onElAddeds = []; | |
| function onElAdded(callback) { | |
| onElAddeds.push(callback); | |
| } | |
| function onElRemoved(el, callback) { | |
| if (typeof callback === "function") { | |
| if (!el._x_cleanups) | |
| el._x_cleanups = []; | |
| el._x_cleanups.push(callback); | |
| } else { | |
| callback = el; | |
| onElRemoveds.push(callback); | |
| } | |
| } | |
| function onAttributesAdded(callback) { | |
| onAttributeAddeds.push(callback); | |
| } | |
| function onAttributeRemoved(el, name, callback) { | |
| if (!el._x_attributeCleanups) | |
| el._x_attributeCleanups = {}; | |
| if (!el._x_attributeCleanups[name]) | |
| el._x_attributeCleanups[name] = []; | |
| el._x_attributeCleanups[name].push(callback); | |
| } | |
| function cleanupAttributes(el, names) { | |
| if (!el._x_attributeCleanups) | |
| return; | |
| Object.entries(el._x_attributeCleanups).forEach(([name, value]) => { | |
| if (names === void 0 || names.includes(name)) { | |
| value.forEach((i) => i()); | |
| delete el._x_attributeCleanups[name]; | |
| } | |
| }); | |
| } | |
| function cleanupElement(el) { | |
| el._x_effects?.forEach(dequeueJob); | |
| while (el._x_cleanups?.length) | |
| el._x_cleanups.pop()(); | |
| } | |
| var observer = new MutationObserver(onMutate); | |
| var currentlyObserving = false; | |
| function startObservingMutations() { | |
| observer.observe(document, { subtree: true, childList: true, attributes: true, attributeOldValue: true }); | |
| currentlyObserving = true; | |
| } | |
| function stopObservingMutations() { | |
| flushObserver(); | |
| observer.disconnect(); | |
| currentlyObserving = false; | |
| } | |
| var queuedMutations = []; | |
| function flushObserver() { | |
| let records = observer.takeRecords(); | |
| queuedMutations.push(() => records.length > 0 && onMutate(records)); | |
| let queueLengthWhenTriggered = queuedMutations.length; | |
| queueMicrotask(() => { | |
| if (queuedMutations.length === queueLengthWhenTriggered) { | |
| while (queuedMutations.length > 0) | |
| queuedMutations.shift()(); | |
| } | |
| }); | |
| } | |
| function mutateDom(callback) { | |
| if (!currentlyObserving) | |
| return callback(); | |
| stopObservingMutations(); | |
| let result = callback(); | |
| startObservingMutations(); | |
| return result; | |
| } | |
| var isCollecting = false; | |
| var deferredMutations = []; | |
| function deferMutations() { | |
| isCollecting = true; | |
| } | |
| function flushAndStopDeferringMutations() { | |
| isCollecting = false; | |
| onMutate(deferredMutations); | |
| deferredMutations = []; | |
| } | |
| function onMutate(mutations) { | |
| if (isCollecting) { | |
| deferredMutations = deferredMutations.concat(mutations); | |
| return; | |
| } | |
| let addedNodes = []; | |
| let removedNodes = /* @__PURE__ */ new Set(); | |
| let addedAttributes = /* @__PURE__ */ new Map(); | |
| let removedAttributes = /* @__PURE__ */ new Map(); | |
| for (let i = 0; i < mutations.length; i++) { | |
| if (mutations[i].target._x_ignoreMutationObserver) | |
| continue; | |
| if (mutations[i].type === "childList") { | |
| mutations[i].removedNodes.forEach((node) => { | |
| if (node.nodeType !== 1) | |
| return; | |
| if (!node._x_marker) | |
| return; | |
| removedNodes.add(node); | |
| }); | |
| mutations[i].addedNodes.forEach((node) => { | |
| if (node.nodeType !== 1) | |
| return; | |
| if (removedNodes.has(node)) { | |
| removedNodes.delete(node); | |
| return; | |
| } | |
| if (node._x_marker) | |
| return; | |
| addedNodes.push(node); | |
| }); | |
| } | |
| if (mutations[i].type === "attributes") { | |
| let el = mutations[i].target; | |
| let name = mutations[i].attributeName; | |
| let oldValue = mutations[i].oldValue; | |
| let add2 = () => { | |
| if (!addedAttributes.has(el)) | |
| addedAttributes.set(el, []); | |
| addedAttributes.get(el).push({ name, value: el.getAttribute(name) }); | |
| }; | |
| let remove = () => { | |
| if (!removedAttributes.has(el)) | |
| removedAttributes.set(el, []); | |
| removedAttributes.get(el).push(name); | |
| }; | |
| if (el.hasAttribute(name) && oldValue === null) { | |
| add2(); | |
| } else if (el.hasAttribute(name)) { | |
| remove(); | |
| add2(); | |
| } else { | |
| remove(); | |
| } | |
| } | |
| } | |
| removedAttributes.forEach((attrs, el) => { | |
| cleanupAttributes(el, attrs); | |
| }); | |
| addedAttributes.forEach((attrs, el) => { | |
| onAttributeAddeds.forEach((i) => i(el, attrs)); | |
| }); | |
| for (let node of removedNodes) { | |
| if (addedNodes.some((i) => i.contains(node))) | |
| continue; | |
| onElRemoveds.forEach((i) => i(node)); | |
| } | |
| for (let node of addedNodes) { | |
| if (!node.isConnected) | |
| continue; | |
| onElAddeds.forEach((i) => i(node)); | |
| } | |
| addedNodes = null; | |
| removedNodes = null; | |
| addedAttributes = null; | |
| removedAttributes = null; | |
| } | |
| // packages/alpinejs/src/scope.js | |
| function scope(node) { | |
| return mergeProxies(closestDataStack(node)); | |
| } | |
| function addScopeToNode(node, data2, referenceNode) { | |
| node._x_dataStack = [data2, ...closestDataStack(referenceNode || node)]; | |
| return () => { | |
| node._x_dataStack = node._x_dataStack.filter((i) => i !== data2); | |
| }; | |
| } | |
| function closestDataStack(node) { | |
| if (node._x_dataStack) | |
| return node._x_dataStack; | |
| if (typeof ShadowRoot === "function" && node instanceof ShadowRoot) { | |
| return closestDataStack(node.host); | |
| } | |
| if (!node.parentNode) { | |
| return []; | |
| } | |
| return closestDataStack(node.parentNode); | |
| } | |
| function mergeProxies(objects) { | |
| return new Proxy({ objects }, mergeProxyTrap); | |
| } | |
| var mergeProxyTrap = { | |
| ownKeys({ objects }) { | |
| return Array.from( | |
| new Set(objects.flatMap((i) => Object.keys(i))) | |
| ); | |
| }, | |
| has({ objects }, name) { | |
| if (name == Symbol.unscopables) | |
| return false; | |
| return objects.some( | |
| (obj) => Object.prototype.hasOwnProperty.call(obj, name) || Reflect.has(obj, name) | |
| ); | |
| }, | |
| get({ objects }, name, thisProxy) { | |
| if (name == "toJSON") | |
| return collapseProxies; | |
| return Reflect.get( | |
| objects.find( | |
| (obj) => Reflect.has(obj, name) | |
| ) || {}, | |
| name, | |
| thisProxy | |
| ); | |
| }, | |
| set({ objects }, name, value, thisProxy) { | |
| const target = objects.find( | |
| (obj) => Object.prototype.hasOwnProperty.call(obj, name) | |
| ) || objects[objects.length - 1]; | |
| const descriptor = Object.getOwnPropertyDescriptor(target, name); | |
| if (descriptor?.set && descriptor?.get) | |
| return descriptor.set.call(thisProxy, value) || true; | |
| return Reflect.set(target, name, value); | |
| } | |
| }; | |
| function collapseProxies() { | |
| let keys = Reflect.ownKeys(this); | |
| return keys.reduce((acc, key) => { | |
| acc[key] = Reflect.get(this, key); | |
| return acc; | |
| }, {}); | |
| } | |
| // packages/alpinejs/src/interceptor.js | |
| function initInterceptors(data2) { | |
| let isObject2 = (val) => typeof val === "object" && !Array.isArray(val) && val !== null; | |
| let recurse = (obj, basePath = "") => { | |
| Object.entries(Object.getOwnPropertyDescriptors(obj)).forEach(([key, { value, enumerable }]) => { | |
| if (enumerable === false || value === void 0) | |
| return; | |
| if (typeof value === "object" && value !== null && value.__v_skip) | |
| return; | |
| let path = basePath === "" ? key : `${basePath}.${key}`; | |
| if (typeof value === "object" && value !== null && value._x_interceptor) { | |
| obj[key] = value.initialize(data2, path, key); | |
| } else { | |
| if (isObject2(value) && value !== obj && !(value instanceof Element)) { | |
| recurse(value, path); | |
| } | |
| } | |
| }); | |
| }; | |
| return recurse(data2); | |
| } | |
| function interceptor(callback, mutateObj = () => { | |
| }) { | |
| let obj = { | |
| initialValue: void 0, | |
| _x_interceptor: true, | |
| initialize(data2, path, key) { | |
| return callback(this.initialValue, () => get(data2, path), (value) => set(data2, path, value), path, key); | |
| } | |
| }; | |
| mutateObj(obj); | |
| return (initialValue) => { | |
| if (typeof initialValue === "object" && initialValue !== null && initialValue._x_interceptor) { | |
| let initialize = obj.initialize.bind(obj); | |
| obj.initialize = (data2, path, key) => { | |
| let innerValue = initialValue.initialize(data2, path, key); | |
| obj.initialValue = innerValue; | |
| return initialize(data2, path, key); | |
| }; | |
| } else { | |
| obj.initialValue = initialValue; | |
| } | |
| return obj; | |
| }; | |
| } | |
| function get(obj, path) { | |
| return path.split(".").reduce((carry, segment) => carry[segment], obj); | |
| } | |
| function set(obj, path, value) { | |
| if (typeof path === "string") | |
| path = path.split("."); | |
| if (path.length === 1) | |
| obj[path[0]] = value; | |
| else if (path.length === 0) | |
| throw error; | |
| else { | |
| if (obj[path[0]]) | |
| return set(obj[path[0]], path.slice(1), value); | |
| else { | |
| obj[path[0]] = {}; | |
| return set(obj[path[0]], path.slice(1), value); | |
| } | |
| } | |
| } | |
| // packages/alpinejs/src/magics.js | |
| var magics = {}; | |
| function magic(name, callback) { | |
| magics[name] = callback; | |
| } | |
| function injectMagics(obj, el) { | |
| let memoizedUtilities = getUtilities(el); | |
| Object.entries(magics).forEach(([name, callback]) => { | |
| Object.defineProperty(obj, `$${name}`, { | |
| get() { | |
| return callback(el, memoizedUtilities); | |
| }, | |
| enumerable: false | |
| }); | |
| }); | |
| return obj; | |
| } | |
| function getUtilities(el) { | |
| let [utilities, cleanup2] = getElementBoundUtilities(el); | |
| let utils = { interceptor, ...utilities }; | |
| onElRemoved(el, cleanup2); | |
| return utils; | |
| } | |
| // packages/alpinejs/src/utils/error.js | |
| function tryCatch(el, expression, callback, ...args) { | |
| try { | |
| return callback(...args); | |
| } catch (e) { | |
| handleError(e, el, expression); | |
| } | |
| } | |
| function handleError(...args) { | |
| return errorHandler(...args); | |
| } | |
| var errorHandler = normalErrorHandler; | |
| function setErrorHandler(handler4) { | |
| errorHandler = handler4; | |
| } | |
| function normalErrorHandler(error2, el, expression = void 0) { | |
| error2 = Object.assign( | |
| error2 ?? { message: "No error message given." }, | |
| { el, expression } | |
| ); | |
| console.warn(`Alpine Expression Error: ${error2.message} | |
| ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el); | |
| setTimeout(() => { | |
| throw error2; | |
| }, 0); | |
| } | |
| // packages/alpinejs/src/evaluator.js | |
| var shouldAutoEvaluateFunctions = true; | |
| function dontAutoEvaluateFunctions(callback) { | |
| let cache = shouldAutoEvaluateFunctions; | |
| shouldAutoEvaluateFunctions = false; | |
| let result = callback(); | |
| shouldAutoEvaluateFunctions = cache; | |
| return result; | |
| } | |
| function evaluate(el, expression, extras = {}) { | |
| let result; | |
| evaluateLater(el, expression)((value) => result = value, extras); | |
| return result; | |
| } | |
| function evaluateLater(...args) { | |
| return theEvaluatorFunction(...args); | |
| } | |
| var theEvaluatorFunction = normalEvaluator; | |
| function setEvaluator(newEvaluator) { | |
| theEvaluatorFunction = newEvaluator; | |
| } | |
| var theRawEvaluatorFunction; | |
| function setRawEvaluator(newEvaluator) { | |
| theRawEvaluatorFunction = newEvaluator; | |
| } | |
| function normalEvaluator(el, expression) { | |
| let overriddenMagics = {}; | |
| injectMagics(overriddenMagics, el); | |
| let dataStack = [overriddenMagics, ...closestDataStack(el)]; | |
| let evaluator = typeof expression === "function" ? generateEvaluatorFromFunction(dataStack, expression) : generateEvaluatorFromString(dataStack, expression, el); | |
| return tryCatch.bind(null, el, expression, evaluator); | |
| } | |
| function generateEvaluatorFromFunction(dataStack, func) { | |
| return (receiver = () => { | |
| }, { scope: scope2 = {}, params = [], context } = {}) => { | |
| if (!shouldAutoEvaluateFunctions) { | |
| runIfTypeOfFunction(receiver, func, mergeProxies([scope2, ...dataStack]), params); | |
| return; | |
| } | |
| let result = func.apply(mergeProxies([scope2, ...dataStack]), params); | |
| runIfTypeOfFunction(receiver, result); | |
| }; | |
| } | |
| var evaluatorMemo = {}; | |
| function generateFunctionFromString(expression, el) { | |
| if (evaluatorMemo[expression]) { | |
| return evaluatorMemo[expression]; | |
| } | |
| let AsyncFunction = Object.getPrototypeOf(async function() { | |
| }).constructor; | |
| let rightSideSafeExpression = /^[\n\s]*if.*\(.*\)/.test(expression.trim()) || /^(let|const)\s/.test(expression.trim()) ? `(async()=>{ ${expression} })()` : expression; | |
| const safeAsyncFunction = () => { | |
| try { | |
| let func2 = new AsyncFunction( | |
| ["__self", "scope"], | |
| `with (scope) { __self.result = ${rightSideSafeExpression} }; __self.finished = true; return __self.result;` | |
| ); | |
| Object.defineProperty(func2, "name", { | |
| value: `[Alpine] ${expression}` | |
| }); | |
| return func2; | |
| } catch (error2) { | |
| handleError(error2, el, expression); | |
| return Promise.resolve(); | |
| } | |
| }; | |
| let func = safeAsyncFunction(); | |
| evaluatorMemo[expression] = func; | |
| return func; | |
| } | |
| function generateEvaluatorFromString(dataStack, expression, el) { | |
| let func = generateFunctionFromString(expression, el); | |
| return (receiver = () => { | |
| }, { scope: scope2 = {}, params = [], context } = {}) => { | |
| func.result = void 0; | |
| func.finished = false; | |
| let completeScope = mergeProxies([scope2, ...dataStack]); | |
| if (typeof func === "function") { | |
| let promise = func.call(context, func, completeScope).catch((error2) => handleError(error2, el, expression)); | |
| if (func.finished) { | |
| runIfTypeOfFunction(receiver, func.result, completeScope, params, el); | |
| func.result = void 0; | |
| } else { | |
| promise.then((result) => { | |
| runIfTypeOfFunction(receiver, result, completeScope, params, el); | |
| }).catch((error2) => handleError(error2, el, expression)).finally(() => func.result = void 0); | |
| } | |
| } | |
| }; | |
| } | |
| function runIfTypeOfFunction(receiver, value, scope2, params, el) { | |
| 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)); | |
| } else { | |
| receiver(result); | |
| } | |
| } else if (typeof value === "object" && value instanceof Promise) { | |
| value.then((i) => receiver(i)); | |
| } else { | |
| receiver(value); | |
| } | |
| } | |
| function evaluateRaw(...args) { | |
| return theRawEvaluatorFunction(...args); | |
| } | |
| function normalRawEvaluator(el, expression, extras = {}) { | |
| let overriddenMagics = {}; | |
| injectMagics(overriddenMagics, el); | |
| let dataStack = [overriddenMagics, ...closestDataStack(el)]; | |
| let scope2 = mergeProxies([extras.scope ?? {}, ...dataStack]); | |
| let params = extras.params ?? []; | |
| if (expression.includes("await")) { | |
| let AsyncFunction = Object.getPrototypeOf(async function() { | |
| }).constructor; | |
| let rightSideSafeExpression = /^[\n\s]*if.*\(.*\)/.test(expression.trim()) || /^(let|const)\s/.test(expression.trim()) ? `(async()=>{ ${expression} })()` : expression; | |
| let func = new AsyncFunction( | |
| ["scope"], | |
| `with (scope) { let __result = ${rightSideSafeExpression}; return __result }` | |
| ); | |
| let result = func.call(extras.context, scope2); | |
| return result; | |
| } else { | |
| let rightSideSafeExpression = /^[\n\s]*if.*\(.*\)/.test(expression.trim()) || /^(let|const)\s/.test(expression.trim()) ? `(()=>{ ${expression} })()` : expression; | |
| let func = new Function( | |
| ["scope"], | |
| `with (scope) { let __result = ${rightSideSafeExpression}; return __result }` | |
| ); | |
| let result = func.call(extras.context, scope2); | |
| if (typeof result === "function" && shouldAutoEvaluateFunctions) { | |
| return result.apply(scope2, params); | |
| } | |
| return result; | |
| } | |
| } | |
| // packages/alpinejs/src/directives.js | |
| var prefixAsString = "x-"; | |
| function prefix(subject = "") { | |
| return prefixAsString + subject; | |
| } | |
| function setPrefix(newPrefix) { | |
| prefixAsString = newPrefix; | |
| } | |
| var directiveHandlers = {}; | |
| function directive(name, callback) { | |
| directiveHandlers[name] = callback; | |
| return { | |
| before(directive2) { | |
| if (!directiveHandlers[directive2]) { | |
| console.warn(String.raw`Cannot find directive \`${directive2}\`. \`${name}\` will use the default order of execution`); | |
| return; | |
| } | |
| const pos = directiveOrder.indexOf(directive2); | |
| directiveOrder.splice(pos >= 0 ? pos : directiveOrder.indexOf("DEFAULT"), 0, name); | |
| } | |
| }; | |
| } | |
| function directiveExists(name) { | |
| return Object.keys(directiveHandlers).includes(name); | |
| } | |
| function directives(el, attributes, originalAttributeOverride) { | |
| attributes = Array.from(attributes); | |
| if (el._x_virtualDirectives) { | |
| let vAttributes = Object.entries(el._x_virtualDirectives).map(([name, value]) => ({ name, value })); | |
| let staticAttributes = attributesOnly(vAttributes); | |
| vAttributes = vAttributes.map((attribute) => { | |
| if (staticAttributes.find((attr) => attr.name === attribute.name)) { | |
| return { | |
| name: `x-bind:${attribute.name}`, | |
| value: `"${attribute.value}"` | |
| }; | |
| } | |
| return attribute; | |
| }); | |
| attributes = attributes.concat(vAttributes); | |
| } | |
| let transformedAttributeMap = {}; | |
| let directives2 = attributes.map(toTransformedAttributes((newName, oldName) => transformedAttributeMap[newName] = oldName)).filter(outNonAlpineAttributes).map(toParsedDirectives(transformedAttributeMap, originalAttributeOverride)).sort(byPriority); | |
| return directives2.map((directive2) => { | |
| return getDirectiveHandler(el, directive2); | |
| }); | |
| } | |
| function attributesOnly(attributes) { | |
| return Array.from(attributes).map(toTransformedAttributes()).filter((attr) => !outNonAlpineAttributes(attr)); | |
| } | |
| var isDeferringHandlers = false; | |
| var directiveHandlerStacks = /* @__PURE__ */ new Map(); | |
| var currentHandlerStackKey = Symbol(); | |
| function deferHandlingDirectives(callback) { | |
| isDeferringHandlers = true; | |
| let key = Symbol(); | |
| currentHandlerStackKey = key; | |
| directiveHandlerStacks.set(key, []); | |
| let flushHandlers = () => { | |
| while (directiveHandlerStacks.get(key).length) | |
| directiveHandlerStacks.get(key).shift()(); | |
| directiveHandlerStacks.delete(key); | |
| }; | |
| let stopDeferring = () => { | |
| isDeferringHandlers = false; | |
| flushHandlers(); | |
| }; | |
| callback(flushHandlers); | |
| stopDeferring(); | |
| } | |
| function getElementBoundUtilities(el) { | |
| let cleanups = []; | |
| let cleanup2 = (callback) => cleanups.push(callback); | |
| let [effect3, cleanupEffect] = elementBoundEffect(el); | |
| cleanups.push(cleanupEffect); | |
| let utilities = { | |
| Alpine: alpine_default, | |
| effect: effect3, | |
| cleanup: cleanup2, | |
| evaluateLater: evaluateLater.bind(evaluateLater, el), | |
| evaluate: evaluate.bind(evaluate, el) | |
| }; | |
| let doCleanup = () => cleanups.forEach((i) => i()); | |
| return [utilities, doCleanup]; | |
| } | |
| function getDirectiveHandler(el, directive2) { | |
| let noop = () => { | |
| }; | |
| let handler4 = directiveHandlers[directive2.type] || noop; | |
| let [utilities, cleanup2] = getElementBoundUtilities(el); | |
| onAttributeRemoved(el, directive2.original, cleanup2); | |
| let fullHandler = () => { | |
| if (el._x_ignore || el._x_ignoreSelf) | |
| return; | |
| handler4.inline && handler4.inline(el, directive2, utilities); | |
| handler4 = handler4.bind(handler4, el, directive2, utilities); | |
| isDeferringHandlers ? directiveHandlerStacks.get(currentHandlerStackKey).push(handler4) : handler4(); | |
| }; | |
| fullHandler.runCleanups = cleanup2; | |
| return fullHandler; | |
| } | |
| var startingWith = (subject, replacement) => ({ name, value }) => { | |
| if (name.startsWith(subject)) | |
| name = name.replace(subject, replacement); | |
| return { name, value }; | |
| }; | |
| var into = (i) => i; | |
| function toTransformedAttributes(callback = () => { | |
| }) { | |
| return ({ name, value }) => { | |
| let { name: newName, value: newValue } = attributeTransformers.reduce((carry, transform) => { | |
| return transform(carry); | |
| }, { name, value }); | |
| if (newName !== name) | |
| callback(newName, name); | |
| return { name: newName, value: newValue }; | |
| }; | |
| } | |
| var attributeTransformers = []; | |
| function mapAttributes(callback) { | |
| attributeTransformers.push(callback); | |
| } | |
| function outNonAlpineAttributes({ name }) { | |
| return alpineAttributeRegex().test(name); | |
| } | |
| var alpineAttributeRegex = () => new RegExp(`^${prefixAsString}([^:^.]+)\\b`); | |
| function toParsedDirectives(transformedAttributeMap, originalAttributeOverride) { | |
| return ({ name, value }) => { | |
| let typeMatch = name.match(alpineAttributeRegex()); | |
| let valueMatch = name.match(/:([a-zA-Z0-9\-_:]+)/); | |
| let modifiers = name.match(/\.[^.\]]+(?=[^\]]*$)/g) || []; | |
| let original = originalAttributeOverride || transformedAttributeMap[name] || name; | |
| return { | |
| type: typeMatch ? typeMatch[1] : null, | |
| value: valueMatch ? valueMatch[1] : null, | |
| modifiers: modifiers.map((i) => i.replace(".", "")), | |
| expression: value, | |
| original | |
| }; | |
| }; | |
| } | |
| var DEFAULT = "DEFAULT"; | |
| var directiveOrder = [ | |
| "ignore", | |
| "ref", | |
| "data", | |
| "id", | |
| "anchor", | |
| "bind", | |
| "init", | |
| "for", | |
| "model", | |
| "modelable", | |
| "transition", | |
| "show", | |
| "if", | |
| DEFAULT, | |
| "teleport" | |
| ]; | |
| function byPriority(a, b) { | |
| let typeA = directiveOrder.indexOf(a.type) === -1 ? DEFAULT : a.type; | |
| let typeB = directiveOrder.indexOf(b.type) === -1 ? DEFAULT : b.type; | |
| return directiveOrder.indexOf(typeA) - directiveOrder.indexOf(typeB); | |
| } | |
| // 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 `<body>` is available. Did you forget to add `defer` in Alpine's `<script>` tag?"); | |
| dispatch(document, "alpine:init"); | |
| dispatch(document, "alpine:initializing"); | |
| startObservingMutations(); | |
| onElAdded((el) => initTree(el, walk)); | |
| onElRemoved((el) => destroyTree(el)); | |
| onAttributesAdded((el, attrs) => { | |
| directives(el, attrs).forEach((handle) => handle()); | |
| }); | |
| let outNestedComponents = (el) => !closestRoot(el.parentElement, true); | |
| Array.from(document.querySelectorAll(allSelectors().join(","))).filter(outNestedComponents).forEach((el) => { | |
| initTree(el); | |
| }); | |
| dispatch(document, "alpine:initialized"); | |
| setTimeout(() => { | |
| warnAboutMissingPlugins(); | |
| }); | |
| } | |
| var rootSelectorCallbacks = []; | |
| var initSelectorCallbacks = []; | |
| function rootSelectors() { | |
| return rootSelectorCallbacks.map((fn) => fn()); | |
| } | |
| function allSelectors() { | |
| return rootSelectorCallbacks.concat(initSelectorCallbacks).map((fn) => fn()); | |
| } | |
| function addRootSelector(selectorCallback) { | |
| rootSelectorCallbacks.push(selectorCallback); | |
| } | |
| function addInitSelector(selectorCallback) { | |
| initSelectorCallbacks.push(selectorCallback); | |
| } | |
| function closestRoot(el, includeInitSelectors = false) { | |
| return findClosest(el, (element) => { | |
| const selectors = includeInitSelectors ? allSelectors() : rootSelectors(); | |
| if (selectors.some((selector) => element.matches(selector))) | |
| return true; | |
| }); | |
| } | |
| function findClosest(el, callback) { | |
| if (!el) | |
| return; | |
| if (callback(el)) | |
| return el; | |
| if (el._x_teleportBack) | |
| el = el._x_teleportBack; | |
| if (el.parentNode instanceof ShadowRoot) { | |
| return findClosest(el.parentNode.host, callback); | |
| } | |
| if (!el.parentElement) | |
| return; | |
| return findClosest(el.parentElement, callback); | |
| } | |
| function isRoot(el) { | |
| return rootSelectors().some((selector) => el.matches(selector)); | |
| } | |
| var initInterceptors2 = []; | |
| function interceptInit(callback) { | |
| initInterceptors2.push(callback); | |
| } | |
| var markerDispenser = 1; | |
| function initTree(el, walker = walk, intercept = () => { | |
| }) { | |
| if (findClosest(el, (i) => i._x_ignore)) | |
| return; | |
| deferHandlingDirectives(() => { | |
| walker(el, (el2, skip) => { | |
| if (el2._x_marker) | |
| return; | |
| intercept(el2, skip); | |
| initInterceptors2.forEach((i) => i(el2, skip)); | |
| directives(el2, el2.attributes).forEach((handle) => handle()); | |
| if (!el2._x_ignore) | |
| el2._x_marker = markerDispenser++; | |
| el2._x_ignore && skip(); | |
| }); | |
| }); | |
| } | |
| function destroyTree(root, walker = walk) { | |
| walker(root, (el) => { | |
| cleanupElement(el); | |
| cleanupAttributes(el); | |
| delete el._x_marker; | |
| }); | |
| } | |
| function warnAboutMissingPlugins() { | |
| let pluginDirectives = [ | |
| ["ui", "dialog", ["[x-dialog], [x-popover]"]], | |
| ["anchor", "anchor", ["[x-anchor]"]], | |
| ["sort", "sort", ["[x-sort]"]] | |
| ]; | |
| pluginDirectives.forEach(([plugin2, directive2, selectors]) => { | |
| if (directiveExists(directive2)) | |
| return; | |
| selectors.some((selector) => { | |
| if (document.querySelector(selector)) { | |
| warn(`found "${selector}", but missing ${plugin2} plugin`); | |
| return true; | |
| } | |
| }); | |
| }); | |
| } | |
| // packages/alpinejs/src/nextTick.js | |
| var tickStack = []; | |
| var isHolding = false; | |
| function nextTick(callback = () => { | |
| }) { | |
| queueMicrotask(() => { | |
| isHolding || setTimeout(() => { | |
| releaseNextTicks(); | |
| }); | |
| }); | |
| return new Promise((res) => { | |
| tickStack.push(() => { | |
| callback(); | |
| res(); | |
| }); | |
| }); | |
| } | |
| function releaseNextTicks() { | |
| isHolding = false; | |
| while (tickStack.length) | |
| tickStack.shift()(); | |
| } | |
| function holdNextTicks() { | |
| isHolding = true; | |
| } | |
| // packages/alpinejs/src/utils/classes.js | |
| function setClasses(el, value) { | |
| if (Array.isArray(value)) { | |
| return setClassesFromString(el, value.join(" ")); | |
| } else if (typeof value === "object" && value !== null) { | |
| return setClassesFromObject(el, value); | |
| } else if (typeof value === "function") { | |
| return setClasses(el, value()); | |
| } | |
| return setClassesFromString(el, value); | |
| } | |
| function setClassesFromString(el, classString) { | |
| let split = (classString2) => classString2.split(" ").filter(Boolean); | |
| let missingClasses = (classString2) => classString2.split(" ").filter((i) => !el.classList.contains(i)).filter(Boolean); | |
| let addClassesAndReturnUndo = (classes) => { | |
| el.classList.add(...classes); | |
| return () => { | |
| el.classList.remove(...classes); | |
| }; | |
| }; | |
| classString = classString === true ? classString = "" : classString || ""; | |
| return addClassesAndReturnUndo(missingClasses(classString)); | |
| } | |
| function setClassesFromObject(el, classObject) { | |
| let split = (classString) => classString.split(" ").filter(Boolean); | |
| let forAdd = Object.entries(classObject).flatMap(([classString, bool]) => bool ? split(classString) : false).filter(Boolean); | |
| let forRemove = Object.entries(classObject).flatMap(([classString, bool]) => !bool ? split(classString) : false).filter(Boolean); | |
| let added = []; | |
| let removed = []; | |
| forRemove.forEach((i) => { | |
| if (el.classList.contains(i)) { | |
| el.classList.remove(i); | |
| removed.push(i); | |
| } | |
| }); | |
| forAdd.forEach((i) => { | |
| if (!el.classList.contains(i)) { | |
| el.classList.add(i); | |
| added.push(i); | |
| } | |
| }); | |
| return () => { | |
| removed.forEach((i) => el.classList.add(i)); | |
| added.forEach((i) => el.classList.remove(i)); | |
| }; | |
| } | |
| // packages/alpinejs/src/utils/styles.js | |
| function setStyles(el, value) { | |
| if (typeof value === "object" && value !== null) { | |
| return setStylesFromObject(el, value); | |
| } | |
| return setStylesFromString(el, value); | |
| } | |
| function setStylesFromObject(el, value) { | |
| let previousStyles = {}; | |
| Object.entries(value).forEach(([key, value2]) => { | |
| previousStyles[key] = el.style[key]; | |
| if (!key.startsWith("--")) { | |
| key = kebabCase(key); | |
| } | |
| el.style.setProperty(key, value2); | |
| }); | |
| setTimeout(() => { | |
| if (el.style.length === 0) { | |
| el.removeAttribute("style"); | |
| } | |
| }); | |
| return () => { | |
| setStyles(el, previousStyles); | |
| }; | |
| } | |
| function setStylesFromString(el, value) { | |
| let cache = el.getAttribute("style", value); | |
| el.setAttribute("style", value); | |
| return () => { | |
| el.setAttribute("style", cache || ""); | |
| }; | |
| } | |
| function kebabCase(subject) { | |
| return subject.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase(); | |
| } | |
| // packages/alpinejs/src/utils/once.js | |
| function once(callback, fallback = () => { | |
| }) { | |
| let called = false; | |
| return function() { | |
| if (!called) { | |
| called = true; | |
| callback.apply(this, arguments); | |
| } else { | |
| fallback.apply(this, arguments); | |
| } | |
| }; | |
| } | |
| // packages/alpinejs/src/directives/x-transition.js | |
| directive("transition", (el, { value, modifiers, expression }, { evaluate: evaluate2 }) => { | |
| if (typeof expression === "function") | |
| expression = evaluate2(expression); | |
| if (expression === false) | |
| return; | |
| if (!expression || typeof expression === "boolean") { | |
| registerTransitionsFromHelper(el, modifiers, value); | |
| } else { | |
| registerTransitionsFromClassString(el, expression, value); | |
| } | |
| }); | |
| function registerTransitionsFromClassString(el, classString, stage) { | |
| registerTransitionObject(el, setClasses, ""); | |
| let directiveStorageMap = { | |
| "enter": (classes) => { | |
| el._x_transition.enter.during = classes; | |
| }, | |
| "enter-start": (classes) => { | |
| el._x_transition.enter.start = classes; | |
| }, | |
| "enter-end": (classes) => { | |
| el._x_transition.enter.end = classes; | |
| }, | |
| "leave": (classes) => { | |
| el._x_transition.leave.during = classes; | |
| }, | |
| "leave-start": (classes) => { | |
| el._x_transition.leave.start = classes; | |
| }, | |
| "leave-end": (classes) => { | |
| el._x_transition.leave.end = classes; | |
| } | |
| }; | |
| directiveStorageMap[stage](classString); | |
| } | |
| function registerTransitionsFromHelper(el, modifiers, stage) { | |
| registerTransitionObject(el, setStyles); | |
| let doesntSpecify = !modifiers.includes("in") && !modifiers.includes("out") && !stage; | |
| let transitioningIn = doesntSpecify || modifiers.includes("in") || ["enter"].includes(stage); | |
| let transitioningOut = doesntSpecify || modifiers.includes("out") || ["leave"].includes(stage); | |
| if (modifiers.includes("in") && !doesntSpecify) { | |
| modifiers = modifiers.filter((i, index) => index < modifiers.indexOf("out")); | |
| } | |
| if (modifiers.includes("out") && !doesntSpecify) { | |
| modifiers = modifiers.filter((i, index) => index > modifiers.indexOf("out")); | |
| } | |
| let wantsAll = !modifiers.includes("opacity") && !modifiers.includes("scale"); | |
| let wantsOpacity = wantsAll || modifiers.includes("opacity"); | |
| let wantsScale = wantsAll || modifiers.includes("scale"); | |
| let opacityValue = wantsOpacity ? 0 : 1; | |
| let scaleValue = wantsScale ? modifierValue(modifiers, "scale", 95) / 100 : 1; | |
| let delay = modifierValue(modifiers, "delay", 0) / 1e3; | |
| let origin = modifierValue(modifiers, "origin", "center"); | |
| let property = "opacity, transform"; | |
| let durationIn = modifierValue(modifiers, "duration", 150) / 1e3; | |
| let durationOut = modifierValue(modifiers, "duration", 75) / 1e3; | |
| let easing = `cubic-bezier(0.4, 0.0, 0.2, 1)`; | |
| if (transitioningIn) { | |
| el._x_transition.enter.during = { | |
| transformOrigin: origin, | |
| transitionDelay: `${delay}s`, | |
| transitionProperty: property, | |
| transitionDuration: `${durationIn}s`, | |
| transitionTimingFunction: easing | |
| }; | |
| el._x_transition.enter.start = { | |
| opacity: opacityValue, | |
| transform: `scale(${scaleValue})` | |
| }; | |
| el._x_transition.enter.end = { | |
| opacity: 1, | |
| transform: `scale(1)` | |
| }; | |
| } | |
| if (transitioningOut) { | |
| el._x_transition.leave.during = { | |
| transformOrigin: origin, | |
| transitionDelay: `${delay}s`, | |
| transitionProperty: property, | |
| transitionDuration: `${durationOut}s`, | |
| transitionTimingFunction: easing | |
| }; | |
| el._x_transition.leave.start = { | |
| opacity: 1, | |
| transform: `scale(1)` | |
| }; | |
| el._x_transition.leave.end = { | |
| opacity: opacityValue, | |
| transform: `scale(${scaleValue})` | |
| }; | |
| } | |
| } | |
| function registerTransitionObject(el, setFunction, defaultValue = {}) { | |
| if (!el._x_transition) | |
| el._x_transition = { | |
| enter: { during: defaultValue, start: defaultValue, end: defaultValue }, | |
| leave: { during: defaultValue, start: defaultValue, end: defaultValue }, | |
| in(before = () => { | |
| }, after = () => { | |
| }) { | |
| transition(el, setFunction, { | |
| during: this.enter.during, | |
| start: this.enter.start, | |
| end: this.enter.end | |
| }, before, after); | |
| }, | |
| out(before = () => { | |
| }, after = () => { | |
| }) { | |
| transition(el, setFunction, { | |
| during: this.leave.during, | |
| start: this.leave.start, | |
| end: this.leave.end | |
| }, before, after); | |
| } | |
| }; | |
| } | |
| window.Element.prototype._x_toggleAndCascadeWithTransitions = function(el, value, show, hide) { | |
| const nextTick2 = document.visibilityState === "visible" ? requestAnimationFrame : setTimeout; | |
| let clickAwayCompatibleShow = () => nextTick2(show); | |
| if (value) { | |
| 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) => { | |
| el._x_transition.out(() => { | |
| }, () => resolve(hide)); | |
| el._x_transitioning && el._x_transitioning.beforeCancel(() => reject({ isFromCancelledTransition: true })); | |
| }) : Promise.resolve(hide); | |
| queueMicrotask(() => { | |
| let closest = closestHide(el); | |
| if (closest) { | |
| if (!closest._x_hideChildren) | |
| closest._x_hideChildren = []; | |
| closest._x_hideChildren.push(el); | |
| } else { | |
| nextTick2(() => { | |
| let hideAfterChildren = (el2) => { | |
| let carry = Promise.all([ | |
| el2._x_hidePromise, | |
| ...(el2._x_hideChildren || []).map(hideAfterChildren) | |
| ]).then(([i]) => i?.()); | |
| delete el2._x_hidePromise; | |
| delete el2._x_hideChildren; | |
| return carry; | |
| }; | |
| hideAfterChildren(el).catch((e) => { | |
| if (!e.isFromCancelledTransition) | |
| throw e; | |
| }); | |
| }); | |
| } | |
| }); | |
| }; | |
| function closestHide(el) { | |
| let parent = el.parentNode; | |
| if (!parent) | |
| return; | |
| return parent._x_hidePromise ? parent : closestHide(parent); | |
| } | |
| function transition(el, setFunction, { during, start: start2, end } = {}, before = () => { | |
| }, after = () => { | |
| }) { | |
| if (el._x_transitioning) | |
| el._x_transitioning.cancel(); | |
| if (Object.keys(during).length === 0 && Object.keys(start2).length === 0 && Object.keys(end).length === 0) { | |
| before(); | |
| after(); | |
| return; | |
| } | |
| let undoStart, undoDuring, undoEnd; | |
| performTransition(el, { | |
| start() { | |
| undoStart = setFunction(el, start2); | |
| }, | |
| during() { | |
| undoDuring = setFunction(el, during); | |
| }, | |
| before, | |
| end() { | |
| undoStart(); | |
| undoEnd = setFunction(el, end); | |
| }, | |
| after, | |
| cleanup() { | |
| undoDuring(); | |
| undoEnd(); | |
| } | |
| }); | |
| } | |
| function performTransition(el, stages) { | |
| let interrupted, reachedBefore, reachedEnd; | |
| let finish = once(() => { | |
| mutateDom(() => { | |
| interrupted = true; | |
| if (!reachedBefore) | |
| stages.before(); | |
| if (!reachedEnd) { | |
| stages.end(); | |
| releaseNextTicks(); | |
| } | |
| stages.after(); | |
| if (el.isConnected) | |
| stages.cleanup(); | |
| delete el._x_transitioning; | |
| }); | |
| }); | |
| el._x_transitioning = { | |
| beforeCancels: [], | |
| beforeCancel(callback) { | |
| this.beforeCancels.push(callback); | |
| }, | |
| cancel: once(function() { | |
| while (this.beforeCancels.length) { | |
| this.beforeCancels.shift()(); | |
| } | |
| ; | |
| finish(); | |
| }), | |
| finish | |
| }; | |
| mutateDom(() => { | |
| stages.start(); | |
| stages.during(); | |
| }); | |
| holdNextTicks(); | |
| requestAnimationFrame(() => { | |
| if (interrupted) | |
| return; | |
| let duration = Number(getComputedStyle(el).transitionDuration.replace(/,.*/, "").replace("s", "")) * 1e3; | |
| let delay = Number(getComputedStyle(el).transitionDelay.replace(/,.*/, "").replace("s", "")) * 1e3; | |
| if (duration === 0) | |
| duration = Number(getComputedStyle(el).animationDuration.replace("s", "")) * 1e3; | |
| mutateDom(() => { | |
| stages.before(); | |
| }); | |
| reachedBefore = true; | |
| requestAnimationFrame(() => { | |
| if (interrupted) | |
| return; | |
| mutateDom(() => { | |
| stages.end(); | |
| }); | |
| releaseNextTicks(); | |
| setTimeout(el._x_transitioning.finish, duration + delay); | |
| reachedEnd = true; | |
| }); | |
| }); | |
| } | |
| function modifierValue(modifiers, key, fallback) { | |
| if (modifiers.indexOf(key) === -1) | |
| return fallback; | |
| const rawValue = modifiers[modifiers.indexOf(key) + 1]; | |
| if (!rawValue) | |
| return fallback; | |
| if (key === "scale") { | |
| if (isNaN(rawValue)) | |
| return fallback; | |
| } | |
| if (key === "duration" || key === "delay") { | |
| let match = rawValue.match(/([0-9]+)ms/); | |
| if (match) | |
| return match[1]; | |
| } | |
| if (key === "origin") { | |
| if (["top", "right", "left", "center", "bottom"].includes(modifiers[modifiers.indexOf(key) + 2])) { | |
| return [rawValue, modifiers[modifiers.indexOf(key) + 2]].join(" "); | |
| } | |
| } | |
| return rawValue; | |
| } | |
| // packages/alpinejs/src/clone.js | |
| var isCloning = false; | |
| function skipDuringClone(callback, fallback = () => { | |
| }) { | |
| return (...args) => isCloning ? fallback(...args) : callback(...args); | |
| } | |
| function onlyDuringClone(callback) { | |
| return (...args) => isCloning && callback(...args); | |
| } | |
| var interceptors = []; | |
| function interceptClone(callback) { | |
| interceptors.push(callback); | |
| } | |
| function cloneNode(from, to) { | |
| interceptors.forEach((i) => i(from, to)); | |
| isCloning = true; | |
| dontRegisterReactiveSideEffects(() => { | |
| initTree(to, (el, callback) => { | |
| callback(el, () => { | |
| }); | |
| }); | |
| }); | |
| isCloning = false; | |
| } | |
| var isCloningLegacy = false; | |
| function clone(oldEl, newEl) { | |
| if (!newEl._x_dataStack) | |
| newEl._x_dataStack = oldEl._x_dataStack; | |
| isCloning = true; | |
| isCloningLegacy = true; | |
| dontRegisterReactiveSideEffects(() => { | |
| cloneTree(newEl); | |
| }); | |
| isCloning = false; | |
| isCloningLegacy = false; | |
| } | |
| function cloneTree(el) { | |
| let hasRunThroughFirstEl = false; | |
| let shallowWalker = (el2, callback) => { | |
| walk(el2, (el3, skip) => { | |
| if (hasRunThroughFirstEl && isRoot(el3)) | |
| return skip(); | |
| hasRunThroughFirstEl = true; | |
| callback(el3, skip); | |
| }); | |
| }; | |
| initTree(el, shallowWalker); | |
| } | |
| function dontRegisterReactiveSideEffects(callback) { | |
| let cache = effect; | |
| overrideEffect((callback2, el) => { | |
| let storedEffect = cache(callback2); | |
| release(storedEffect); | |
| return () => { | |
| }; | |
| }); | |
| callback(); | |
| overrideEffect(cache); | |
| } | |
| // packages/alpinejs/src/utils/bind.js | |
| function bind(el, name, value, modifiers = []) { | |
| if (!el._x_bindings) | |
| el._x_bindings = reactive({}); | |
| el._x_bindings[name] = value; | |
| name = modifiers.includes("camel") ? camelCase(name) : name; | |
| switch (name) { | |
| case "value": | |
| bindInputValue(el, value); | |
| break; | |
| case "style": | |
| bindStyles(el, value); | |
| break; | |
| case "class": | |
| bindClasses(el, value); | |
| break; | |
| case "selected": | |
| case "checked": | |
| bindAttributeAndProperty(el, name, value); | |
| break; | |
| default: | |
| bindAttribute(el, name, value); | |
| break; | |
| } | |
| } | |
| function bindInputValue(el, value) { | |
| if (isRadio(el)) { | |
| if (el.attributes.value === void 0) { | |
| el.value = value; | |
| } | |
| if (window.fromModel) { | |
| if (typeof value === "boolean") { | |
| el.checked = safeParseBoolean(el.value) === value; | |
| } else { | |
| el.checked = checkedAttrLooseCompare(el.value, value); | |
| } | |
| } | |
| } else if (isCheckbox(el)) { | |
| if (Number.isInteger(value)) { | |
| el.value = value; | |
| } else if (!Array.isArray(value) && typeof value !== "boolean" && ![null, void 0].includes(value)) { | |
| el.value = String(value); | |
| } else { | |
| if (Array.isArray(value)) { | |
| el.checked = value.some((val) => checkedAttrLooseCompare(val, el.value)); | |
| } else { | |
| el.checked = !!value; | |
| } | |
| } | |
| } else if (el.tagName === "SELECT") { | |
| updateSelect(el, value); | |
| } else { | |
| if (el.value === value) | |
| return; | |
| el.value = value === void 0 ? "" : value; | |
| } | |
| } | |
| function bindClasses(el, value) { | |
| if (el._x_undoAddedClasses) | |
| el._x_undoAddedClasses(); | |
| el._x_undoAddedClasses = setClasses(el, value); | |
| } | |
| function bindStyles(el, value) { | |
| if (el._x_undoAddedStyles) | |
| el._x_undoAddedStyles(); | |
| el._x_undoAddedStyles = setStyles(el, value); | |
| } | |
| function bindAttributeAndProperty(el, name, value) { | |
| bindAttribute(el, name, value); | |
| setPropertyIfChanged(el, name, value); | |
| } | |
| function bindAttribute(el, name, value) { | |
| if ([null, void 0, false].includes(value) && attributeShouldntBePreservedIfFalsy(name)) { | |
| el.removeAttribute(name); | |
| } else { | |
| if (isBooleanAttr(name)) | |
| value = name; | |
| setIfChanged(el, name, value); | |
| } | |
| } | |
| function setIfChanged(el, attrName, value) { | |
| if (el.getAttribute(attrName) != value) { | |
| el.setAttribute(attrName, value); | |
| } | |
| } | |
| function setPropertyIfChanged(el, propName, value) { | |
| if (el[propName] !== value) { | |
| el[propName] = value; | |
| } | |
| } | |
| function updateSelect(el, value) { | |
| const arrayWrappedValue = [].concat(value).map((value2) => { | |
| return value2 + ""; | |
| }); | |
| Array.from(el.options).forEach((option) => { | |
| option.selected = arrayWrappedValue.includes(option.value); | |
| }); | |
| } | |
| function camelCase(subject) { | |
| return subject.toLowerCase().replace(/-(\w)/g, (match, char) => char.toUpperCase()); | |
| } | |
| function checkedAttrLooseCompare(valueA, valueB) { | |
| return valueA == valueB; | |
| } | |
| function safeParseBoolean(rawValue) { | |
| if ([1, "1", "true", "on", "yes", true].includes(rawValue)) { | |
| return true; | |
| } | |
| if ([0, "0", "false", "off", "no", false].includes(rawValue)) { | |
| return false; | |
| } | |
| return rawValue ? Boolean(rawValue) : null; | |
| } | |
| var booleanAttributes = /* @__PURE__ */ new Set([ | |
| "allowfullscreen", | |
| "async", | |
| "autofocus", | |
| "autoplay", | |
| "checked", | |
| "controls", | |
| "default", | |
| "defer", | |
| "disabled", | |
| "formnovalidate", | |
| "inert", | |
| "ismap", | |
| "itemscope", | |
| "loop", | |
| "multiple", | |
| "muted", | |
| "nomodule", | |
| "novalidate", | |
| "open", | |
| "playsinline", | |
| "readonly", | |
| "required", | |
| "reversed", | |
| "selected", | |
| "shadowrootclonable", | |
| "shadowrootdelegatesfocus", | |
| "shadowrootserializable" | |
| ]); | |
| function isBooleanAttr(attrName) { | |
| return booleanAttributes.has(attrName); | |
| } | |
| function attributeShouldntBePreservedIfFalsy(name) { | |
| return !["aria-pressed", "aria-checked", "aria-expanded", "aria-selected"].includes(name); | |
| } | |
| function getBinding(el, name, fallback) { | |
| if (el._x_bindings && el._x_bindings[name] !== void 0) | |
| return el._x_bindings[name]; | |
| return getAttributeBinding(el, name, fallback); | |
| } | |
| function extractProp(el, name, fallback, extract = true) { | |
| if (el._x_bindings && el._x_bindings[name] !== void 0) | |
| return el._x_bindings[name]; | |
| if (el._x_inlineBindings && el._x_inlineBindings[name] !== void 0) { | |
| let binding = el._x_inlineBindings[name]; | |
| binding.extract = extract; | |
| return dontAutoEvaluateFunctions(() => { | |
| return evaluate(el, binding.expression); | |
| }); | |
| } | |
| return getAttributeBinding(el, name, fallback); | |
| } | |
| function getAttributeBinding(el, name, fallback) { | |
| let attr = el.getAttribute(name); | |
| if (attr === null) | |
| return typeof fallback === "function" ? fallback() : fallback; | |
| if (attr === "") | |
| return true; | |
| if (isBooleanAttr(name)) { | |
| return !![name, "true"].includes(attr); | |
| } | |
| return attr; | |
| } | |
| function isCheckbox(el) { | |
| return el.type === "checkbox" || el.localName === "ui-checkbox" || el.localName === "ui-switch"; | |
| } | |
| function isRadio(el) { | |
| return el.type === "radio" || el.localName === "ui-radio"; | |
| } | |
| // packages/alpinejs/src/utils/debounce.js | |
| function debounce(func, wait) { | |
| let timeout; | |
| return function() { | |
| const context = this, args = arguments; | |
| const later = function() { | |
| timeout = null; | |
| func.apply(context, args); | |
| }; | |
| clearTimeout(timeout); | |
| timeout = setTimeout(later, wait); | |
| }; | |
| } | |
| // packages/alpinejs/src/utils/throttle.js | |
| function throttle(func, limit) { | |
| let inThrottle; | |
| return function() { | |
| let context = this, args = arguments; | |
| if (!inThrottle) { | |
| func.apply(context, args); | |
| inThrottle = true; | |
| setTimeout(() => inThrottle = false, limit); | |
| } | |
| }; | |
| } | |
| // packages/alpinejs/src/entangle.js | |
| function entangle({ get: outerGet, set: outerSet }, { get: innerGet, set: innerSet }) { | |
| let firstRun = true; | |
| let outerHash; | |
| let innerHash; | |
| let reference = effect(() => { | |
| let outer = outerGet(); | |
| let inner = innerGet(); | |
| if (firstRun) { | |
| innerSet(cloneIfObject(outer)); | |
| firstRun = false; | |
| } else { | |
| let outerHashLatest = JSON.stringify(outer); | |
| let innerHashLatest = JSON.stringify(inner); | |
| if (outerHashLatest !== outerHash) { | |
| innerSet(cloneIfObject(outer)); | |
| } else if (outerHashLatest !== innerHashLatest) { | |
| outerSet(cloneIfObject(inner)); | |
| } else { | |
| } | |
| } | |
| outerHash = JSON.stringify(outerGet()); | |
| innerHash = JSON.stringify(innerGet()); | |
| }); | |
| return () => { | |
| release(reference); | |
| }; | |
| } | |
| function cloneIfObject(value) { | |
| return typeof value === "object" ? JSON.parse(JSON.stringify(value)) : value; | |
| } | |
| // packages/alpinejs/src/plugin.js | |
| function plugin(callback) { | |
| let callbacks = Array.isArray(callback) ? callback : [callback]; | |
| callbacks.forEach((i) => i(alpine_default)); | |
| } | |
| // packages/alpinejs/src/store.js | |
| var stores = {}; | |
| var isReactive = false; | |
| function store(name, value) { | |
| if (!isReactive) { | |
| stores = reactive(stores); | |
| isReactive = true; | |
| } | |
| if (value === void 0) { | |
| return stores[name]; | |
| } | |
| stores[name] = value; | |
| initInterceptors(stores[name]); | |
| if (typeof value === "object" && value !== null && value.hasOwnProperty("init") && typeof value.init === "function") { | |
| stores[name].init(); | |
| } | |
| } | |
| function getStores() { | |
| return stores; | |
| } | |
| // packages/alpinejs/src/binds.js | |
| var binds = {}; | |
| function bind2(name, bindings) { | |
| let getBindings = typeof bindings !== "function" ? () => bindings : bindings; | |
| if (name instanceof Element) { | |
| return applyBindingsObject(name, getBindings()); | |
| } else { | |
| binds[name] = getBindings; | |
| } | |
| return () => { | |
| }; | |
| } | |
| function injectBindingProviders(obj) { | |
| Object.entries(binds).forEach(([name, callback]) => { | |
| Object.defineProperty(obj, name, { | |
| get() { | |
| return (...args) => { | |
| return callback(...args); | |
| }; | |
| } | |
| }); | |
| }); | |
| return obj; | |
| } | |
| function applyBindingsObject(el, obj, original) { | |
| let cleanupRunners = []; | |
| while (cleanupRunners.length) | |
| cleanupRunners.pop()(); | |
| let attributes = Object.entries(obj).map(([name, value]) => ({ name, value })); | |
| 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); | |
| handle(); | |
| }); | |
| return () => { | |
| while (cleanupRunners.length) | |
| cleanupRunners.pop()(); | |
| }; | |
| } | |
| // packages/alpinejs/src/datas.js | |
| var datas = {}; | |
| function data(name, callback) { | |
| datas[name] = callback; | |
| } | |
| function injectDataProviders(obj, context) { | |
| Object.entries(datas).forEach(([name, callback]) => { | |
| Object.defineProperty(obj, name, { | |
| get() { | |
| return (...args) => { | |
| return callback.bind(context)(...args); | |
| }; | |
| }, | |
| enumerable: false | |
| }); | |
| }); | |
| return obj; | |
| } | |
| // packages/alpinejs/src/alpine.js | |
| var Alpine = { | |
| get reactive() { | |
| return reactive; | |
| }, | |
| get release() { | |
| return release; | |
| }, | |
| get effect() { | |
| return effect; | |
| }, | |
| get raw() { | |
| return raw; | |
| }, | |
| version: "3.15.3", | |
| flushAndStopDeferringMutations, | |
| dontAutoEvaluateFunctions, | |
| disableEffectScheduling, | |
| startObservingMutations, | |
| stopObservingMutations, | |
| setReactivityEngine, | |
| onAttributeRemoved, | |
| onAttributesAdded, | |
| closestDataStack, | |
| skipDuringClone, | |
| onlyDuringClone, | |
| addRootSelector, | |
| addInitSelector, | |
| setErrorHandler, | |
| interceptClone, | |
| addScopeToNode, | |
| deferMutations, | |
| mapAttributes, | |
| evaluateLater, | |
| interceptInit, | |
| initInterceptors, | |
| injectMagics, | |
| setEvaluator, | |
| setRawEvaluator, | |
| mergeProxies, | |
| extractProp, | |
| findClosest, | |
| onElRemoved, | |
| closestRoot, | |
| destroyTree, | |
| interceptor, | |
| // INTERNAL: not public API and is subject to change without major release. | |
| transition, | |
| // INTERNAL | |
| setStyles, | |
| // INTERNAL | |
| mutateDom, | |
| directive, | |
| entangle, | |
| throttle, | |
| debounce, | |
| evaluate, | |
| evaluateRaw, | |
| initTree, | |
| nextTick, | |
| prefixed: prefix, | |
| prefix: setPrefix, | |
| plugin, | |
| magic, | |
| store, | |
| start, | |
| clone, | |
| // INTERNAL | |
| cloneNode, | |
| // INTERNAL | |
| bound: getBinding, | |
| $data: scope, | |
| watch, | |
| walk, | |
| data, | |
| bind: bind2 | |
| }; | |
| var alpine_default = Alpine; | |
| // node_modules/@vue/shared/dist/shared.esm-bundler.js | |
| function makeMap(str, expectsLowerCase) { | |
| const map = /* @__PURE__ */ Object.create(null); | |
| const list = str.split(","); | |
| for (let i = 0; i < list.length; i++) { | |
| map[list[i]] = true; | |
| } | |
| return expectsLowerCase ? (val) => !!map[val.toLowerCase()] : (val) => !!map[val]; | |
| } | |
| var specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`; | |
| var isBooleanAttr2 = /* @__PURE__ */ makeMap(specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected`); | |
| var EMPTY_OBJ = true ? Object.freeze({}) : {}; | |
| var EMPTY_ARR = true ? Object.freeze([]) : []; | |
| var hasOwnProperty = Object.prototype.hasOwnProperty; | |
| var hasOwn = (val, key) => hasOwnProperty.call(val, key); | |
| var isArray = Array.isArray; | |
| var isMap = (val) => toTypeString(val) === "[object Map]"; | |
| var isString = (val) => typeof val === "string"; | |
| var isSymbol = (val) => typeof val === "symbol"; | |
| var isObject = (val) => val !== null && typeof val === "object"; | |
| var objectToString = Object.prototype.toString; | |
| var toTypeString = (value) => objectToString.call(value); | |
| var toRawType = (value) => { | |
| return toTypeString(value).slice(8, -1); | |
| }; | |
| var isIntegerKey = (key) => isString(key) && key !== "NaN" && key[0] !== "-" && "" + parseInt(key, 10) === key; | |
| var cacheStringFunction = (fn) => { | |
| const cache = /* @__PURE__ */ Object.create(null); | |
| return (str) => { | |
| const hit = cache[str]; | |
| return hit || (cache[str] = fn(str)); | |
| }; | |
| }; | |
| var camelizeRE = /-(\w)/g; | |
| var camelize = cacheStringFunction((str) => { | |
| return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : ""); | |
| }); | |
| var hyphenateRE = /\B([A-Z])/g; | |
| var hyphenate = cacheStringFunction((str) => str.replace(hyphenateRE, "-$1").toLowerCase()); | |
| var capitalize = cacheStringFunction((str) => str.charAt(0).toUpperCase() + str.slice(1)); | |
| var toHandlerKey = cacheStringFunction((str) => str ? `on${capitalize(str)}` : ``); | |
| var hasChanged = (value, oldValue) => value !== oldValue && (value === value || oldValue === oldValue); | |
| // node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js | |
| var targetMap = /* @__PURE__ */ new WeakMap(); | |
| var effectStack = []; | |
| var activeEffect; | |
| var ITERATE_KEY = Symbol(true ? "iterate" : ""); | |
| var MAP_KEY_ITERATE_KEY = Symbol(true ? "Map key iterate" : ""); | |
| function isEffect(fn) { | |
| return fn && fn._isEffect === true; | |
| } | |
| function effect2(fn, options = EMPTY_OBJ) { | |
| if (isEffect(fn)) { | |
| fn = fn.raw; | |
| } | |
| const effect3 = createReactiveEffect(fn, options); | |
| if (!options.lazy) { | |
| effect3(); | |
| } | |
| return effect3; | |
| } | |
| function stop(effect3) { | |
| if (effect3.active) { | |
| cleanup(effect3); | |
| if (effect3.options.onStop) { | |
| effect3.options.onStop(); | |
| } | |
| effect3.active = false; | |
| } | |
| } | |
| var uid = 0; | |
| function createReactiveEffect(fn, options) { | |
| const effect3 = function reactiveEffect() { | |
| if (!effect3.active) { | |
| return fn(); | |
| } | |
| if (!effectStack.includes(effect3)) { | |
| cleanup(effect3); | |
| try { | |
| enableTracking(); | |
| effectStack.push(effect3); | |
| activeEffect = effect3; | |
| return fn(); | |
| } finally { | |
| effectStack.pop(); | |
| resetTracking(); | |
| activeEffect = effectStack[effectStack.length - 1]; | |
| } | |
| } | |
| }; | |
| effect3.id = uid++; | |
| effect3.allowRecurse = !!options.allowRecurse; | |
| effect3._isEffect = true; | |
| effect3.active = true; | |
| effect3.raw = fn; | |
| effect3.deps = []; | |
| effect3.options = options; | |
| return effect3; | |
| } | |
| function cleanup(effect3) { | |
| const { deps } = effect3; | |
| if (deps.length) { | |
| for (let i = 0; i < deps.length; i++) { | |
| deps[i].delete(effect3); | |
| } | |
| deps.length = 0; | |
| } | |
| } | |
| var shouldTrack = true; | |
| var trackStack = []; | |
| function pauseTracking() { | |
| trackStack.push(shouldTrack); | |
| shouldTrack = false; | |
| } | |
| function enableTracking() { | |
| trackStack.push(shouldTrack); | |
| shouldTrack = true; | |
| } | |
| function resetTracking() { | |
| const last = trackStack.pop(); | |
| shouldTrack = last === void 0 ? true : last; | |
| } | |
| function track(target, type, key) { | |
| if (!shouldTrack || activeEffect === void 0) { | |
| return; | |
| } | |
| let depsMap = targetMap.get(target); | |
| if (!depsMap) { | |
| targetMap.set(target, depsMap = /* @__PURE__ */ new Map()); | |
| } | |
| let dep = depsMap.get(key); | |
| if (!dep) { | |
| depsMap.set(key, dep = /* @__PURE__ */ new Set()); | |
| } | |
| if (!dep.has(activeEffect)) { | |
| dep.add(activeEffect); | |
| activeEffect.deps.push(dep); | |
| if (activeEffect.options.onTrack) { | |
| activeEffect.options.onTrack({ | |
| effect: activeEffect, | |
| target, | |
| type, | |
| key | |
| }); | |
| } | |
| } | |
| } | |
| function trigger(target, type, key, newValue, oldValue, oldTarget) { | |
| const depsMap = targetMap.get(target); | |
| if (!depsMap) { | |
| return; | |
| } | |
| const effects = /* @__PURE__ */ new Set(); | |
| const add2 = (effectsToAdd) => { | |
| if (effectsToAdd) { | |
| effectsToAdd.forEach((effect3) => { | |
| if (effect3 !== activeEffect || effect3.allowRecurse) { | |
| effects.add(effect3); | |
| } | |
| }); | |
| } | |
| }; | |
| if (type === "clear") { | |
| depsMap.forEach(add2); | |
| } else if (key === "length" && isArray(target)) { | |
| depsMap.forEach((dep, key2) => { | |
| if (key2 === "length" || key2 >= newValue) { | |
| add2(dep); | |
| } | |
| }); | |
| } else { | |
| if (key !== void 0) { | |
| add2(depsMap.get(key)); | |
| } | |
| switch (type) { | |
| case "add": | |
| if (!isArray(target)) { | |
| add2(depsMap.get(ITERATE_KEY)); | |
| if (isMap(target)) { | |
| add2(depsMap.get(MAP_KEY_ITERATE_KEY)); | |
| } | |
| } else if (isIntegerKey(key)) { | |
| add2(depsMap.get("length")); | |
| } | |
| break; | |
| case "delete": | |
| if (!isArray(target)) { | |
| add2(depsMap.get(ITERATE_KEY)); | |
| if (isMap(target)) { | |
| add2(depsMap.get(MAP_KEY_ITERATE_KEY)); | |
| } | |
| } | |
| break; | |
| case "set": | |
| if (isMap(target)) { | |
| add2(depsMap.get(ITERATE_KEY)); | |
| } | |
| break; | |
| } | |
| } | |
| const run = (effect3) => { | |
| if (effect3.options.onTrigger) { | |
| effect3.options.onTrigger({ | |
| effect: effect3, | |
| target, | |
| key, | |
| type, | |
| newValue, | |
| oldValue, | |
| oldTarget | |
| }); | |
| } | |
| if (effect3.options.scheduler) { | |
| effect3.options.scheduler(effect3); | |
| } else { | |
| effect3(); | |
| } | |
| }; | |
| effects.forEach(run); | |
| } | |
| var isNonTrackableKeys = /* @__PURE__ */ makeMap(`__proto__,__v_isRef,__isVue`); | |
| var builtInSymbols = new Set(Object.getOwnPropertyNames(Symbol).map((key) => Symbol[key]).filter(isSymbol)); | |
| var get2 = /* @__PURE__ */ createGetter(); | |
| var readonlyGet = /* @__PURE__ */ createGetter(true); | |
| var arrayInstrumentations = /* @__PURE__ */ createArrayInstrumentations(); | |
| function createArrayInstrumentations() { | |
| const instrumentations = {}; | |
| ["includes", "indexOf", "lastIndexOf"].forEach((key) => { | |
| instrumentations[key] = function(...args) { | |
| const arr = toRaw(this); | |
| for (let i = 0, l = this.length; i < l; i++) { | |
| track(arr, "get", i + ""); | |
| } | |
| const res = arr[key](...args); | |
| if (res === -1 || res === false) { | |
| return arr[key](...args.map(toRaw)); | |
| } else { | |
| return res; | |
| } | |
| }; | |
| }); | |
| ["push", "pop", "shift", "unshift", "splice"].forEach((key) => { | |
| instrumentations[key] = function(...args) { | |
| pauseTracking(); | |
| const res = toRaw(this)[key].apply(this, args); | |
| resetTracking(); | |
| return res; | |
| }; | |
| }); | |
| return instrumentations; | |
| } | |
| function createGetter(isReadonly = false, shallow = false) { | |
| return function get3(target, key, receiver) { | |
| if (key === "__v_isReactive") { | |
| return !isReadonly; | |
| } else if (key === "__v_isReadonly") { | |
| return isReadonly; | |
| } else if (key === "__v_raw" && receiver === (isReadonly ? shallow ? shallowReadonlyMap : readonlyMap : shallow ? shallowReactiveMap : reactiveMap).get(target)) { | |
| return target; | |
| } | |
| const targetIsArray = isArray(target); | |
| if (!isReadonly && targetIsArray && hasOwn(arrayInstrumentations, key)) { | |
| return Reflect.get(arrayInstrumentations, key, receiver); | |
| } | |
| const res = Reflect.get(target, key, receiver); | |
| if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) { | |
| return res; | |
| } | |
| if (!isReadonly) { | |
| track(target, "get", key); | |
| } | |
| if (shallow) { | |
| return res; | |
| } | |
| if (isRef(res)) { | |
| const shouldUnwrap = !targetIsArray || !isIntegerKey(key); | |
| return shouldUnwrap ? res.value : res; | |
| } | |
| if (isObject(res)) { | |
| return isReadonly ? readonly(res) : reactive2(res); | |
| } | |
| return res; | |
| }; | |
| } | |
| var set2 = /* @__PURE__ */ createSetter(); | |
| function createSetter(shallow = false) { | |
| return function set3(target, key, value, receiver) { | |
| let oldValue = target[key]; | |
| if (!shallow) { | |
| value = toRaw(value); | |
| oldValue = toRaw(oldValue); | |
| if (!isArray(target) && isRef(oldValue) && !isRef(value)) { | |
| oldValue.value = value; | |
| return true; | |
| } | |
| } | |
| const hadKey = isArray(target) && isIntegerKey(key) ? Number(key) < target.length : hasOwn(target, key); | |
| const result = Reflect.set(target, key, value, receiver); | |
| if (target === toRaw(receiver)) { | |
| if (!hadKey) { | |
| trigger(target, "add", key, value); | |
| } else if (hasChanged(value, oldValue)) { | |
| trigger(target, "set", key, value, oldValue); | |
| } | |
| } | |
| return result; | |
| }; | |
| } | |
| function deleteProperty(target, key) { | |
| const hadKey = hasOwn(target, key); | |
| const oldValue = target[key]; | |
| const result = Reflect.deleteProperty(target, key); | |
| if (result && hadKey) { | |
| trigger(target, "delete", key, void 0, oldValue); | |
| } | |
| return result; | |
| } | |
| function has(target, key) { | |
| const result = Reflect.has(target, key); | |
| if (!isSymbol(key) || !builtInSymbols.has(key)) { | |
| track(target, "has", key); | |
| } | |
| return result; | |
| } | |
| function ownKeys(target) { | |
| track(target, "iterate", isArray(target) ? "length" : ITERATE_KEY); | |
| return Reflect.ownKeys(target); | |
| } | |
| var mutableHandlers = { | |
| get: get2, | |
| set: set2, | |
| deleteProperty, | |
| has, | |
| ownKeys | |
| }; | |
| var readonlyHandlers = { | |
| get: readonlyGet, | |
| set(target, key) { | |
| if (true) { | |
| console.warn(`Set operation on key "${String(key)}" failed: target is readonly.`, target); | |
| } | |
| return true; | |
| }, | |
| deleteProperty(target, key) { | |
| if (true) { | |
| console.warn(`Delete operation on key "${String(key)}" failed: target is readonly.`, target); | |
| } | |
| return true; | |
| } | |
| }; | |
| var toReactive = (value) => isObject(value) ? reactive2(value) : value; | |
| var toReadonly = (value) => isObject(value) ? readonly(value) : value; | |
| var toShallow = (value) => value; | |
| var getProto = (v) => Reflect.getPrototypeOf(v); | |
| function get$1(target, key, isReadonly = false, isShallow = false) { | |
| target = target[ | |
| "__v_raw" | |
| /* RAW */ | |
| ]; | |
| const rawTarget = toRaw(target); | |
| const rawKey = toRaw(key); | |
| if (key !== rawKey) { | |
| !isReadonly && track(rawTarget, "get", key); | |
| } | |
| !isReadonly && track(rawTarget, "get", rawKey); | |
| const { has: has2 } = getProto(rawTarget); | |
| const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive; | |
| if (has2.call(rawTarget, key)) { | |
| return wrap(target.get(key)); | |
| } else if (has2.call(rawTarget, rawKey)) { | |
| return wrap(target.get(rawKey)); | |
| } else if (target !== rawTarget) { | |
| target.get(key); | |
| } | |
| } | |
| function has$1(key, isReadonly = false) { | |
| const target = this[ | |
| "__v_raw" | |
| /* RAW */ | |
| ]; | |
| const rawTarget = toRaw(target); | |
| const rawKey = toRaw(key); | |
| if (key !== rawKey) { | |
| !isReadonly && track(rawTarget, "has", key); | |
| } | |
| !isReadonly && track(rawTarget, "has", rawKey); | |
| return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey); | |
| } | |
| function size(target, isReadonly = false) { | |
| target = target[ | |
| "__v_raw" | |
| /* RAW */ | |
| ]; | |
| !isReadonly && track(toRaw(target), "iterate", ITERATE_KEY); | |
| return Reflect.get(target, "size", target); | |
| } | |
| function add(value) { | |
| value = toRaw(value); | |
| const target = toRaw(this); | |
| const proto = getProto(target); | |
| const hadKey = proto.has.call(target, value); | |
| if (!hadKey) { | |
| target.add(value); | |
| trigger(target, "add", value, value); | |
| } | |
| return this; | |
| } | |
| function set$1(key, value) { | |
| value = toRaw(value); | |
| const target = toRaw(this); | |
| const { has: has2, get: get3 } = getProto(target); | |
| let hadKey = has2.call(target, key); | |
| if (!hadKey) { | |
| key = toRaw(key); | |
| hadKey = has2.call(target, key); | |
| } else if (true) { | |
| checkIdentityKeys(target, has2, key); | |
| } | |
| const oldValue = get3.call(target, key); | |
| target.set(key, value); | |
| if (!hadKey) { | |
| trigger(target, "add", key, value); | |
| } else if (hasChanged(value, oldValue)) { | |
| trigger(target, "set", key, value, oldValue); | |
| } | |
| return this; | |
| } | |
| function deleteEntry(key) { | |
| const target = toRaw(this); | |
| const { has: has2, get: get3 } = getProto(target); | |
| let hadKey = has2.call(target, key); | |
| if (!hadKey) { | |
| key = toRaw(key); | |
| hadKey = has2.call(target, key); | |
| } else if (true) { | |
| checkIdentityKeys(target, has2, key); | |
| } | |
| const oldValue = get3 ? get3.call(target, key) : void 0; | |
| const result = target.delete(key); | |
| if (hadKey) { | |
| trigger(target, "delete", key, void 0, oldValue); | |
| } | |
| return result; | |
| } | |
| function clear() { | |
| const target = toRaw(this); | |
| const hadItems = target.size !== 0; | |
| const oldTarget = true ? isMap(target) ? new Map(target) : new Set(target) : void 0; | |
| const result = target.clear(); | |
| if (hadItems) { | |
| trigger(target, "clear", void 0, void 0, oldTarget); | |
| } | |
| return result; | |
| } | |
| function createForEach(isReadonly, isShallow) { | |
| return function forEach(callback, thisArg) { | |
| const observed = this; | |
| const target = observed[ | |
| "__v_raw" | |
| /* RAW */ | |
| ]; | |
| const rawTarget = toRaw(target); | |
| const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive; | |
| !isReadonly && track(rawTarget, "iterate", ITERATE_KEY); | |
| return target.forEach((value, key) => { | |
| return callback.call(thisArg, wrap(value), wrap(key), observed); | |
| }); | |
| }; | |
| } | |
| function createIterableMethod(method, isReadonly, isShallow) { | |
| return function(...args) { | |
| const target = this[ | |
| "__v_raw" | |
| /* RAW */ | |
| ]; | |
| const rawTarget = toRaw(target); | |
| const targetIsMap = isMap(rawTarget); | |
| const isPair = method === "entries" || method === Symbol.iterator && targetIsMap; | |
| const isKeyOnly = method === "keys" && targetIsMap; | |
| const innerIterator = target[method](...args); | |
| const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive; | |
| !isReadonly && track(rawTarget, "iterate", isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY); | |
| return { | |
| // iterator protocol | |
| next() { | |
| const { value, done } = innerIterator.next(); | |
| return done ? { value, done } : { | |
| value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value), | |
| done | |
| }; | |
| }, | |
| // iterable protocol | |
| [Symbol.iterator]() { | |
| return this; | |
| } | |
| }; | |
| }; | |
| } | |
| function createReadonlyMethod(type) { | |
| return function(...args) { | |
| if (true) { | |
| const key = args[0] ? `on key "${args[0]}" ` : ``; | |
| console.warn(`${capitalize(type)} operation ${key}failed: target is readonly.`, toRaw(this)); | |
| } | |
| return type === "delete" ? false : this; | |
| }; | |
| } | |
| function createInstrumentations() { | |
| const mutableInstrumentations2 = { | |
| get(key) { | |
| return get$1(this, key); | |
| }, | |
| get size() { | |
| return size(this); | |
| }, | |
| has: has$1, | |
| add, | |
| set: set$1, | |
| delete: deleteEntry, | |
| clear, | |
| forEach: createForEach(false, false) | |
| }; | |
| const shallowInstrumentations2 = { | |
| get(key) { | |
| return get$1(this, key, false, true); | |
| }, | |
| get size() { | |
| return size(this); | |
| }, | |
| has: has$1, | |
| add, | |
| set: set$1, | |
| delete: deleteEntry, | |
| clear, | |
| forEach: createForEach(false, true) | |
| }; | |
| const readonlyInstrumentations2 = { | |
| get(key) { | |
| return get$1(this, key, true); | |
| }, | |
| get size() { | |
| return size(this, true); | |
| }, | |
| has(key) { | |
| return has$1.call(this, key, true); | |
| }, | |
| add: createReadonlyMethod( | |
| "add" | |
| /* ADD */ | |
| ), | |
| set: createReadonlyMethod( | |
| "set" | |
| /* SET */ | |
| ), | |
| delete: createReadonlyMethod( | |
| "delete" | |
| /* DELETE */ | |
| ), | |
| clear: createReadonlyMethod( | |
| "clear" | |
| /* CLEAR */ | |
| ), | |
| forEach: createForEach(true, false) | |
| }; | |
| const shallowReadonlyInstrumentations2 = { | |
| get(key) { | |
| return get$1(this, key, true, true); | |
| }, | |
| get size() { | |
| return size(this, true); | |
| }, | |
| has(key) { | |
| return has$1.call(this, key, true); | |
| }, | |
| add: createReadonlyMethod( | |
| "add" | |
| /* ADD */ | |
| ), | |
| set: createReadonlyMethod( | |
| "set" | |
| /* SET */ | |
| ), | |
| delete: createReadonlyMethod( | |
| "delete" | |
| /* DELETE */ | |
| ), | |
| clear: createReadonlyMethod( | |
| "clear" | |
| /* CLEAR */ | |
| ), | |
| forEach: createForEach(true, true) | |
| }; | |
| const iteratorMethods = ["keys", "values", "entries", Symbol.iterator]; | |
| iteratorMethods.forEach((method) => { | |
| mutableInstrumentations2[method] = createIterableMethod(method, false, false); | |
| readonlyInstrumentations2[method] = createIterableMethod(method, true, false); | |
| shallowInstrumentations2[method] = createIterableMethod(method, false, true); | |
| shallowReadonlyInstrumentations2[method] = createIterableMethod(method, true, true); | |
| }); | |
| return [ | |
| mutableInstrumentations2, | |
| readonlyInstrumentations2, | |
| shallowInstrumentations2, | |
| shallowReadonlyInstrumentations2 | |
| ]; | |
| } | |
| var [mutableInstrumentations, readonlyInstrumentations, shallowInstrumentations, shallowReadonlyInstrumentations] = /* @__PURE__ */ createInstrumentations(); | |
| function createInstrumentationGetter(isReadonly, shallow) { | |
| const instrumentations = shallow ? isReadonly ? shallowReadonlyInstrumentations : shallowInstrumentations : isReadonly ? readonlyInstrumentations : mutableInstrumentations; | |
| return (target, key, receiver) => { | |
| if (key === "__v_isReactive") { | |
| return !isReadonly; | |
| } else if (key === "__v_isReadonly") { | |
| return isReadonly; | |
| } else if (key === "__v_raw") { | |
| return target; | |
| } | |
| return Reflect.get(hasOwn(instrumentations, key) && key in target ? instrumentations : target, key, receiver); | |
| }; | |
| } | |
| var mutableCollectionHandlers = { | |
| get: /* @__PURE__ */ createInstrumentationGetter(false, false) | |
| }; | |
| var readonlyCollectionHandlers = { | |
| get: /* @__PURE__ */ createInstrumentationGetter(true, false) | |
| }; | |
| function checkIdentityKeys(target, has2, key) { | |
| const rawKey = toRaw(key); | |
| if (rawKey !== key && has2.call(target, rawKey)) { | |
| const type = toRawType(target); | |
| console.warn(`Reactive ${type} contains both the raw and reactive versions of the same object${type === `Map` ? ` as keys` : ``}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.`); | |
| } | |
| } | |
| var reactiveMap = /* @__PURE__ */ new WeakMap(); | |
| var shallowReactiveMap = /* @__PURE__ */ new WeakMap(); | |
| var readonlyMap = /* @__PURE__ */ new WeakMap(); | |
| var shallowReadonlyMap = /* @__PURE__ */ new WeakMap(); | |
| function targetTypeMap(rawType) { | |
| switch (rawType) { | |
| case "Object": | |
| case "Array": | |
| return 1; | |
| case "Map": | |
| case "Set": | |
| case "WeakMap": | |
| case "WeakSet": | |
| return 2; | |
| default: | |
| return 0; | |
| } | |
| } | |
| function getTargetType(value) { | |
| return value[ | |
| "__v_skip" | |
| /* SKIP */ | |
| ] || !Object.isExtensible(value) ? 0 : targetTypeMap(toRawType(value)); | |
| } | |
| function reactive2(target) { | |
| if (target && target[ | |
| "__v_isReadonly" | |
| /* IS_READONLY */ | |
| ]) { | |
| return target; | |
| } | |
| return createReactiveObject(target, false, mutableHandlers, mutableCollectionHandlers, reactiveMap); | |
| } | |
| function readonly(target) { | |
| return createReactiveObject(target, true, readonlyHandlers, readonlyCollectionHandlers, readonlyMap); | |
| } | |
| function createReactiveObject(target, isReadonly, baseHandlers, collectionHandlers, proxyMap) { | |
| if (!isObject(target)) { | |
| if (true) { | |
| console.warn(`value cannot be made reactive: ${String(target)}`); | |
| } | |
| return target; | |
| } | |
| if (target[ | |
| "__v_raw" | |
| /* RAW */ | |
| ] && !(isReadonly && target[ | |
| "__v_isReactive" | |
| /* IS_REACTIVE */ | |
| ])) { | |
| return target; | |
| } | |
| const existingProxy = proxyMap.get(target); | |
| if (existingProxy) { | |
| return existingProxy; | |
| } | |
| const targetType = getTargetType(target); | |
| if (targetType === 0) { | |
| return target; | |
| } | |
| const proxy = new Proxy(target, targetType === 2 ? collectionHandlers : baseHandlers); | |
| proxyMap.set(target, proxy); | |
| return proxy; | |
| } | |
| function toRaw(observed) { | |
| return observed && toRaw(observed[ | |
| "__v_raw" | |
| /* RAW */ | |
| ]) || observed; | |
| } | |
| function isRef(r) { | |
| return Boolean(r && r.__v_isRef === true); | |
| } | |
| // packages/alpinejs/src/magics/$nextTick.js | |
| magic("nextTick", () => nextTick); | |
| // packages/alpinejs/src/magics/$dispatch.js | |
| magic("dispatch", (el) => dispatch.bind(dispatch, el)); | |
| // packages/alpinejs/src/magics/$watch.js | |
| magic("watch", (el, { evaluateLater: evaluateLater2, cleanup: cleanup2 }) => (key, callback) => { | |
| let evaluate2 = evaluateLater2(key); | |
| let getter = () => { | |
| let value; | |
| evaluate2((i) => value = i); | |
| return value; | |
| }; | |
| let unwatch = watch(getter, callback); | |
| cleanup2(unwatch); | |
| }); | |
| // packages/alpinejs/src/magics/$store.js | |
| magic("store", getStores); | |
| // packages/alpinejs/src/magics/$data.js | |
| magic("data", (el) => scope(el)); | |
| // packages/alpinejs/src/magics/$root.js | |
| magic("root", (el) => closestRoot(el)); | |
| // packages/alpinejs/src/magics/$refs.js | |
| magic("refs", (el) => { | |
| if (el._x_refs_proxy) | |
| return el._x_refs_proxy; | |
| el._x_refs_proxy = mergeProxies(getArrayOfRefObject(el)); | |
| return el._x_refs_proxy; | |
| }); | |
| function getArrayOfRefObject(el) { | |
| let refObjects = []; | |
| findClosest(el, (i) => { | |
| if (i._x_refs) | |
| refObjects.push(i._x_refs); | |
| }); | |
| return refObjects; | |
| } | |
| // packages/alpinejs/src/ids.js | |
| var globalIdMemo = {}; | |
| function findAndIncrementId(name) { | |
| if (!globalIdMemo[name]) | |
| globalIdMemo[name] = 0; | |
| return ++globalIdMemo[name]; | |
| } | |
| function closestIdRoot(el, name) { | |
| return findClosest(el, (element) => { | |
| if (element._x_ids && element._x_ids[name]) | |
| return true; | |
| }); | |
| } | |
| function setIdRoot(el, name) { | |
| if (!el._x_ids) | |
| el._x_ids = {}; | |
| if (!el._x_ids[name]) | |
| el._x_ids[name] = findAndIncrementId(name); | |
| } | |
| // packages/alpinejs/src/magics/$id.js | |
| magic("id", (el, { cleanup: cleanup2 }) => (name, key = null) => { | |
| let cacheKey = `${name}${key ? `-${key}` : ""}`; | |
| return cacheIdByNameOnElement(el, cacheKey, cleanup2, () => { | |
| let root = closestIdRoot(el, name); | |
| let id = root ? root._x_ids[name] : findAndIncrementId(name); | |
| return key ? `${name}-${id}-${key}` : `${name}-${id}`; | |
| }); | |
| }); | |
| interceptClone((from, to) => { | |
| if (from._x_id) { | |
| to._x_id = from._x_id; | |
| } | |
| }); | |
| function cacheIdByNameOnElement(el, cacheKey, cleanup2, callback) { | |
| if (!el._x_id) | |
| el._x_id = {}; | |
| if (el._x_id[cacheKey]) | |
| return el._x_id[cacheKey]; | |
| let output = callback(); | |
| el._x_id[cacheKey] = output; | |
| cleanup2(() => { | |
| delete el._x_id[cacheKey]; | |
| }); | |
| return output; | |
| } | |
| // 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 [$${magicName}] 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, evaluateLater: evaluateLater2, cleanup: cleanup2 }) => { | |
| let func = evaluateLater2(expression); | |
| let innerGet = () => { | |
| let result; | |
| func((i) => result = i); | |
| return result; | |
| }; | |
| let evaluateInnerSet = evaluateLater2(`${expression} = __placeholder`); | |
| let innerSet = (val) => evaluateInnerSet(() => { | |
| }, { scope: { "__placeholder": val } }); | |
| let initialValue = innerGet(); | |
| innerSet(initialValue); | |
| queueMicrotask(() => { | |
| if (!el._x_model) | |
| return; | |
| el._x_removeModelListeners["default"](); | |
| let outerGet = el._x_model.get; | |
| let outerSet = el._x_model.set; | |
| let releaseEntanglement = entangle( | |
| { | |
| get() { | |
| return outerGet(); | |
| }, | |
| set(value) { | |
| outerSet(value); | |
| } | |
| }, | |
| { | |
| get() { | |
| return innerGet(); | |
| }, | |
| set(value) { | |
| innerSet(value); | |
| } | |
| } | |
| ); | |
| cleanup2(releaseEntanglement); | |
| }); | |
| }); | |
| // packages/alpinejs/src/directives/x-teleport.js | |
| directive("teleport", (el, { modifiers, expression }, { cleanup: cleanup2 }) => { | |
| if (el.tagName.toLowerCase() !== "template") | |
| warn("x-teleport can only be used on a <template> tag", el); | |
| let target = getTarget(expression); | |
| let clone2 = el.content.cloneNode(true).firstElementChild; | |
| el._x_teleport = clone2; | |
| clone2._x_teleportBack = el; | |
| el.setAttribute("data-teleport-template", true); | |
| clone2.setAttribute("data-teleport-target", true); | |
| if (el._x_forwardEvents) { | |
| el._x_forwardEvents.forEach((eventName) => { | |
| clone2.addEventListener(eventName, (e) => { | |
| e.stopPropagation(); | |
| el.dispatchEvent(new e.constructor(e.type, e)); | |
| }); | |
| }); | |
| } | |
| addScopeToNode(clone2, {}, el); | |
| let placeInDom = (clone3, target2, modifiers2) => { | |
| if (modifiers2.includes("prepend")) { | |
| target2.parentNode.insertBefore(clone3, target2); | |
| } else if (modifiers2.includes("append")) { | |
| target2.parentNode.insertBefore(clone3, target2.nextSibling); | |
| } else { | |
| target2.appendChild(clone3); | |
| } | |
| }; | |
| mutateDom(() => { | |
| placeInDom(clone2, target, modifiers); | |
| skipDuringClone(() => { | |
| initTree(clone2); | |
| })(); | |
| }); | |
| el._x_teleportPutBack = () => { | |
| let target2 = getTarget(expression); | |
| mutateDom(() => { | |
| placeInDom(el._x_teleport, target2, modifiers); | |
| }); | |
| }; | |
| cleanup2( | |
| () => mutateDom(() => { | |
| clone2.remove(); | |
| destroyTree(clone2); | |
| }) | |
| ); | |
| }); | |
| var teleportContainerDuringClone = document.createElement("div"); | |
| function getTarget(expression) { | |
| let target = skipDuringClone(() => { | |
| return document.querySelector(expression); | |
| }, () => { | |
| return teleportContainerDuringClone; | |
| })(); | |
| if (!target) | |
| warn(`Cannot find x-teleport element for selector: "${expression}"`); | |
| return target; | |
| } | |
| // packages/alpinejs/src/directives/x-ignore.js | |
| var handler = () => { | |
| }; | |
| handler.inline = (el, { modifiers }, { cleanup: cleanup2 }) => { | |
| modifiers.includes("self") ? el._x_ignoreSelf = true : el._x_ignore = true; | |
| cleanup2(() => { | |
| modifiers.includes("self") ? delete el._x_ignoreSelf : delete el._x_ignore; | |
| }); | |
| }; | |
| directive("ignore", handler); | |
| // packages/alpinejs/src/directives/x-effect.js | |
| directive("effect", skipDuringClone((el, { expression }, { effect: effect3 }) => { | |
| effect3(evaluateLater(el, expression)); | |
| })); | |
| // packages/alpinejs/src/utils/on.js | |
| function on(el, event, modifiers, callback) { | |
| let listenerTarget = el; | |
| let handler4 = (e) => callback(e); | |
| let options = {}; | |
| let wrapHandler = (callback2, wrapper) => (e) => wrapper(callback2, e); | |
| if (modifiers.includes("dot")) | |
| event = dotSyntax(event); | |
| if (modifiers.includes("camel")) | |
| event = camelCase2(event); | |
| if (modifiers.includes("passive")) | |
| options.passive = true; | |
| if (modifiers.includes("capture")) | |
| options.capture = true; | |
| if (modifiers.includes("window")) | |
| listenerTarget = window; | |
| if (modifiers.includes("document")) | |
| listenerTarget = document; | |
| if (modifiers.includes("debounce")) { | |
| let nextModifier = modifiers[modifiers.indexOf("debounce") + 1] || "invalid-wait"; | |
| let wait = isNumeric(nextModifier.split("ms")[0]) ? Number(nextModifier.split("ms")[0]) : 250; | |
| handler4 = debounce(handler4, wait); | |
| } | |
| if (modifiers.includes("throttle")) { | |
| let nextModifier = modifiers[modifiers.indexOf("throttle") + 1] || "invalid-wait"; | |
| let wait = isNumeric(nextModifier.split("ms")[0]) ? Number(nextModifier.split("ms")[0]) : 250; | |
| handler4 = throttle(handler4, wait); | |
| } | |
| if (modifiers.includes("prevent")) | |
| handler4 = wrapHandler(handler4, (next, e) => { | |
| e.preventDefault(); | |
| next(e); | |
| }); | |
| if (modifiers.includes("stop")) | |
| handler4 = wrapHandler(handler4, (next, e) => { | |
| e.stopPropagation(); | |
| next(e); | |
| }); | |
| if (modifiers.includes("once")) { | |
| handler4 = wrapHandler(handler4, (next, e) => { | |
| next(e); | |
| listenerTarget.removeEventListener(event, handler4, options); | |
| }); | |
| } | |
| if (modifiers.includes("away") || modifiers.includes("outside")) { | |
| listenerTarget = document; | |
| handler4 = wrapHandler(handler4, (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) | |
| return; | |
| next(e); | |
| }); | |
| } | |
| if (modifiers.includes("self")) | |
| handler4 = wrapHandler(handler4, (next, e) => { | |
| e.target === el && next(e); | |
| }); | |
| if (isKeyEvent(event) || isClickEvent(event)) { | |
| handler4 = wrapHandler(handler4, (next, e) => { | |
| if (isListeningForASpecificKeyThatHasntBeenPressed(e, modifiers)) { | |
| return; | |
| } | |
| next(e); | |
| }); | |
| } | |
| listenerTarget.addEventListener(event, handler4, options); | |
| return () => { | |
| listenerTarget.removeEventListener(event, handler4, options); | |
| }; | |
| } | |
| function dotSyntax(subject) { | |
| return subject.replace(/-/g, "."); | |
| } | |
| function camelCase2(subject) { | |
| return subject.toLowerCase().replace(/-(\w)/g, (match, char) => char.toUpperCase()); | |
| } | |
| function isNumeric(subject) { | |
| return !Array.isArray(subject) && !isNaN(subject); | |
| } | |
| function kebabCase2(subject) { | |
| if ([" ", "_"].includes( | |
| subject | |
| )) | |
| return subject; | |
| return subject.replace(/([a-z])([A-Z])/g, "$1-$2").replace(/[_\s]/, "-").toLowerCase(); | |
| } | |
| function isKeyEvent(event) { | |
| return ["keydown", "keyup"].includes(event); | |
| } | |
| function isClickEvent(event) { | |
| return ["contextmenu", "click", "mouse"].some((i) => event.includes(i)); | |
| } | |
| function isListeningForASpecificKeyThatHasntBeenPressed(e, modifiers) { | |
| let keyModifiers = modifiers.filter((i) => { | |
| return !["window", "document", "prevent", "stop", "once", "capture", "self", "away", "outside", "passive", "preserve-scroll"].includes(i); | |
| }); | |
| if (keyModifiers.includes("debounce")) { | |
| let debounceIndex = keyModifiers.indexOf("debounce"); | |
| keyModifiers.splice(debounceIndex, isNumeric((keyModifiers[debounceIndex + 1] || "invalid-wait").split("ms")[0]) ? 2 : 1); | |
| } | |
| if (keyModifiers.includes("throttle")) { | |
| let debounceIndex = keyModifiers.indexOf("throttle"); | |
| keyModifiers.splice(debounceIndex, isNumeric((keyModifiers[debounceIndex + 1] || "invalid-wait").split("ms")[0]) ? 2 : 1); | |
| } | |
| if (keyModifiers.length === 0) | |
| return false; | |
| if (keyModifiers.length === 1 && keyToModifiers(e.key).includes(keyModifiers[0])) | |
| return false; | |
| const systemKeyModifiers = ["ctrl", "shift", "alt", "meta", "cmd", "super"]; | |
| const selectedSystemKeyModifiers = systemKeyModifiers.filter((modifier) => keyModifiers.includes(modifier)); | |
| keyModifiers = keyModifiers.filter((i) => !selectedSystemKeyModifiers.includes(i)); | |
| if (selectedSystemKeyModifiers.length > 0) { | |
| const activelyPressedKeyModifiers = selectedSystemKeyModifiers.filter((modifier) => { | |
| if (modifier === "cmd" || modifier === "super") | |
| modifier = "meta"; | |
| return e[`${modifier}Key`]; | |
| }); | |
| if (activelyPressedKeyModifiers.length === selectedSystemKeyModifiers.length) { | |
| if (isClickEvent(e.type)) | |
| return false; | |
| if (keyToModifiers(e.key).includes(keyModifiers[0])) | |
| return false; | |
| } | |
| } | |
| return true; | |
| } | |
| function keyToModifiers(key) { | |
| if (!key) | |
| return []; | |
| key = kebabCase2(key); | |
| let modifierToKeyMap = { | |
| "ctrl": "control", | |
| "slash": "/", | |
| "space": " ", | |
| "spacebar": " ", | |
| "cmd": "meta", | |
| "esc": "escape", | |
| "up": "arrow-up", | |
| "down": "arrow-down", | |
| "left": "arrow-left", | |
| "right": "arrow-right", | |
| "period": ".", | |
| "comma": ",", | |
| "equal": "=", | |
| "minus": "-", | |
| "underscore": "_" | |
| }; | |
| modifierToKeyMap[key] = key; | |
| return Object.keys(modifierToKeyMap).map((modifier) => { | |
| if (modifierToKeyMap[modifier] === key) | |
| return modifier; | |
| }).filter((modifier) => modifier); | |
| } | |
| // packages/alpinejs/src/directives/x-model.js | |
| directive("model", (el, { modifiers, expression }, { effect: effect3, cleanup: cleanup2 }) => { | |
| let scopeTarget = el; | |
| if (modifiers.includes("parent")) { | |
| scopeTarget = el.parentNode; | |
| } | |
| let evaluateGet = evaluateLater(scopeTarget, expression); | |
| let evaluateSet; | |
| if (typeof expression === "string") { | |
| evaluateSet = evaluateLater(scopeTarget, `${expression} = __placeholder`); | |
| } else if (typeof expression === "function" && typeof expression() === "string") { | |
| evaluateSet = evaluateLater(scopeTarget, `${expression()} = __placeholder`); | |
| } else { | |
| evaluateSet = () => { | |
| }; | |
| } | |
| let getValue = () => { | |
| let result; | |
| evaluateGet((value) => result = value); | |
| return isGetterSetter(result) ? result.get() : result; | |
| }; | |
| let setValue = (value) => { | |
| let result; | |
| evaluateGet((value2) => result = value2); | |
| if (isGetterSetter(result)) { | |
| result.set(value); | |
| } else { | |
| evaluateSet(() => { | |
| }, { | |
| scope: { "__placeholder": value } | |
| }); | |
| } | |
| }; | |
| if (typeof expression === "string" && el.type === "radio") { | |
| mutateDom(() => { | |
| if (!el.hasAttribute("name")) | |
| el.setAttribute("name", expression); | |
| }); | |
| } | |
| let event = el.tagName.toLowerCase() === "select" || ["checkbox", "radio"].includes(el.type) || modifiers.includes("lazy") ? "change" : "input"; | |
| let removeListener = isCloning ? () => { | |
| } : on(el, event, modifiers, (e) => { | |
| setValue(getInputValue(el, modifiers, e, getValue())); | |
| }); | |
| if (modifiers.includes("fill")) { | |
| if ([void 0, null, ""].includes(getValue()) || isCheckbox(el) && Array.isArray(getValue()) || el.tagName.toLowerCase() === "select" && el.multiple) { | |
| setValue( | |
| getInputValue(el, modifiers, { target: el }, getValue()) | |
| ); | |
| } | |
| } | |
| if (!el._x_removeModelListeners) | |
| el._x_removeModelListeners = {}; | |
| el._x_removeModelListeners["default"] = removeListener; | |
| cleanup2(() => el._x_removeModelListeners["default"]()); | |
| if (el.form) { | |
| let removeResetListener = on(el.form, "reset", [], (e) => { | |
| nextTick(() => el._x_model && el._x_model.set(getInputValue(el, modifiers, { target: el }, getValue()))); | |
| }); | |
| cleanup2(() => removeResetListener()); | |
| } | |
| el._x_model = { | |
| get() { | |
| return getValue(); | |
| }, | |
| set(value) { | |
| setValue(value); | |
| } | |
| }; | |
| el._x_forceModelUpdate = (value) => { | |
| if (value === void 0 && typeof expression === "string" && expression.match(/\./)) | |
| value = ""; | |
| window.fromModel = true; | |
| mutateDom(() => bind(el, "value", value)); | |
| delete window.fromModel; | |
| }; | |
| effect3(() => { | |
| let value = getValue(); | |
| if (modifiers.includes("unintrusive") && document.activeElement.isSameNode(el)) | |
| return; | |
| el._x_forceModelUpdate(value); | |
| }); | |
| }); | |
| function getInputValue(el, modifiers, event, currentValue) { | |
| return mutateDom(() => { | |
| if (event instanceof CustomEvent && event.detail !== void 0) | |
| return event.detail !== null && event.detail !== void 0 ? event.detail : event.target.value; | |
| else if (isCheckbox(el)) { | |
| if (Array.isArray(currentValue)) { | |
| let newValue = null; | |
| if (modifiers.includes("number")) { | |
| newValue = safeParseNumber(event.target.value); | |
| } else if (modifiers.includes("boolean")) { | |
| newValue = safeParseBoolean(event.target.value); | |
| } else { | |
| newValue = event.target.value; | |
| } | |
| return event.target.checked ? currentValue.includes(newValue) ? currentValue : currentValue.concat([newValue]) : currentValue.filter((el2) => !checkedAttrLooseCompare2(el2, newValue)); | |
| } else { | |
| return event.target.checked; | |
| } | |
| } else if (el.tagName.toLowerCase() === "select" && el.multiple) { | |
| if (modifiers.includes("number")) { | |
| return Array.from(event.target.selectedOptions).map((option) => { | |
| let rawValue = option.value || option.text; | |
| return safeParseNumber(rawValue); | |
| }); | |
| } else if (modifiers.includes("boolean")) { | |
| return Array.from(event.target.selectedOptions).map((option) => { | |
| let rawValue = option.value || option.text; | |
| return safeParseBoolean(rawValue); | |
| }); | |
| } | |
| return Array.from(event.target.selectedOptions).map((option) => { | |
| return option.value || option.text; | |
| }); | |
| } else { | |
| let newValue; | |
| if (isRadio(el)) { | |
| if (event.target.checked) { | |
| newValue = event.target.value; | |
| } else { | |
| newValue = currentValue; | |
| } | |
| } else { | |
| newValue = event.target.value; | |
| } | |
| if (modifiers.includes("number")) { | |
| return safeParseNumber(newValue); | |
| } else if (modifiers.includes("boolean")) { | |
| return safeParseBoolean(newValue); | |
| } else if (modifiers.includes("trim")) { | |
| return newValue.trim(); | |
| } else { | |
| return newValue; | |
| } | |
| } | |
| }); | |
| } | |
| function safeParseNumber(rawValue) { | |
| let number = rawValue ? parseFloat(rawValue) : null; | |
| return isNumeric2(number) ? number : rawValue; | |
| } | |
| function checkedAttrLooseCompare2(valueA, valueB) { | |
| return valueA == valueB; | |
| } | |
| function isNumeric2(subject) { | |
| return !Array.isArray(subject) && !isNaN(subject); | |
| } | |
| function isGetterSetter(value) { | |
| return value !== null && typeof value === "object" && typeof value.get === "function" && typeof value.set === "function"; | |
| } | |
| // packages/alpinejs/src/directives/x-cloak.js | |
| directive("cloak", (el) => queueMicrotask(() => mutateDom(() => el.removeAttribute(prefix("cloak"))))); | |
| // packages/alpinejs/src/directives/x-init.js | |
| addInitSelector(() => `[${prefix("init")}]`); | |
| directive("init", skipDuringClone((el, { expression }, { evaluate: evaluate2 }) => { | |
| if (typeof expression === "string") { | |
| return !!expression.trim() && evaluate2(expression, {}, false); | |
| } | |
| return evaluate2(expression, {}, false); | |
| })); | |
| // packages/alpinejs/src/directives/x-text.js | |
| directive("text", (el, { expression }, { effect: effect3, evaluateLater: evaluateLater2 }) => { | |
| let evaluate2 = evaluateLater2(expression); | |
| effect3(() => { | |
| evaluate2((value) => { | |
| mutateDom(() => { | |
| el.textContent = value; | |
| }); | |
| }); | |
| }); | |
| }); | |
| // packages/alpinejs/src/directives/x-html.js | |
| directive("html", (el, { expression }, { effect: effect3, evaluateLater: evaluateLater2 }) => { | |
| let evaluate2 = evaluateLater2(expression); | |
| effect3(() => { | |
| evaluate2((value) => { | |
| mutateDom(() => { | |
| el.innerHTML = value; | |
| el._x_ignoreSelf = true; | |
| initTree(el); | |
| delete el._x_ignoreSelf; | |
| }); | |
| }); | |
| }); | |
| }); | |
| // packages/alpinejs/src/directives/x-bind.js | |
| mapAttributes(startingWith(":", into(prefix("bind:")))); | |
| var handler2 = (el, { value, modifiers, expression, original }, { effect: effect3, cleanup: cleanup2 }) => { | |
| if (!value) { | |
| let bindingProviders = {}; | |
| injectBindingProviders(bindingProviders); | |
| let getBindings = evaluateLater(el, expression); | |
| getBindings((bindings) => { | |
| applyBindingsObject(el, bindings, original); | |
| }, { scope: bindingProviders }); | |
| return; | |
| } | |
| if (value === "key") | |
| return storeKeyForXFor(el, expression); | |
| if (el._x_inlineBindings && el._x_inlineBindings[value] && el._x_inlineBindings[value].extract) { | |
| return; | |
| } | |
| let evaluate2 = evaluateLater(el, expression); | |
| effect3(() => evaluate2((result) => { | |
| if (result === void 0 && typeof expression === "string" && expression.match(/\./)) { | |
| result = ""; | |
| } | |
| mutateDom(() => bind(el, value, result, modifiers)); | |
| })); | |
| cleanup2(() => { | |
| el._x_undoAddedClasses && el._x_undoAddedClasses(); | |
| el._x_undoAddedStyles && el._x_undoAddedStyles(); | |
| }); | |
| }; | |
| handler2.inline = (el, { value, modifiers, expression }) => { | |
| if (!value) | |
| return; | |
| if (!el._x_inlineBindings) | |
| el._x_inlineBindings = {}; | |
| el._x_inlineBindings[value] = { expression, extract: false }; | |
| }; | |
| directive("bind", handler2); | |
| function storeKeyForXFor(el, expression) { | |
| el._x_keyExpression = expression; | |
| } | |
| // packages/alpinejs/src/directives/x-data.js | |
| addRootSelector(() => `[${prefix("data")}]`); | |
| directive("data", (el, { expression }, { cleanup: cleanup2 }) => { | |
| if (shouldSkipRegisteringDataDuringClone(el)) | |
| return; | |
| expression = expression === "" ? "{}" : expression; | |
| let magicContext = {}; | |
| injectMagics(magicContext, el); | |
| let dataProviderContext = {}; | |
| injectDataProviders(dataProviderContext, magicContext); | |
| let data2 = evaluate(el, expression, { scope: dataProviderContext }); | |
| if (data2 === void 0 || data2 === true) | |
| data2 = {}; | |
| injectMagics(data2, el); | |
| let reactiveData = reactive(data2); | |
| initInterceptors(reactiveData); | |
| let undo = addScopeToNode(el, reactiveData); | |
| reactiveData["init"] && evaluate(el, reactiveData["init"]); | |
| cleanup2(() => { | |
| reactiveData["destroy"] && evaluate(el, reactiveData["destroy"]); | |
| undo(); | |
| }); | |
| }); | |
| interceptClone((from, to) => { | |
| if (from._x_dataStack) { | |
| to._x_dataStack = from._x_dataStack; | |
| to.setAttribute("data-has-alpine-state", true); | |
| } | |
| }); | |
| function shouldSkipRegisteringDataDuringClone(el) { | |
| if (!isCloning) | |
| return false; | |
| if (isCloningLegacy) | |
| return true; | |
| return el.hasAttribute("data-has-alpine-state"); | |
| } | |
| // packages/alpinejs/src/directives/x-show.js | |
| directive("show", (el, { modifiers, expression }, { effect: effect3 }) => { | |
| let evaluate2 = evaluateLater(el, expression); | |
| if (!el._x_doHide) | |
| el._x_doHide = () => { | |
| mutateDom(() => { | |
| el.style.setProperty("display", "none", modifiers.includes("important") ? "important" : void 0); | |
| }); | |
| }; | |
| 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 = () => { | |
| 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") { | |
| el._x_toggleAndCascadeWithTransitions(el, value, show, hide); | |
| } else { | |
| value ? clickAwayCompatibleShow() : hide(); | |
| } | |
| } | |
| ); | |
| let oldValue; | |
| let firstTime = true; | |
| effect3(() => evaluate2((value) => { | |
| if (!firstTime && value === oldValue) | |
| return; | |
| if (modifiers.includes("immediate")) | |
| value ? clickAwayCompatibleShow() : hide(); | |
| toggle(value); | |
| oldValue = value; | |
| firstTime = false; | |
| })); | |
| }); | |
| // packages/alpinejs/src/directives/x-for.js | |
| directive("for", (el, { expression }, { effect: effect3, cleanup: cleanup2 }) => { | |
| let iteratorNames = parseForExpression(expression); | |
| let evaluateItems = evaluateLater(el, iteratorNames.items); | |
| let evaluateKey = evaluateLater( | |
| el, | |
| // the x-bind:key expression is stored for our use instead of evaluated. | |
| el._x_keyExpression || "index" | |
| ); | |
| el._x_prevKeys = []; | |
| el._x_lookup = {}; | |
| effect3(() => loop(el, iteratorNames, evaluateItems, evaluateKey)); | |
| cleanup2(() => { | |
| Object.values(el._x_lookup).forEach((el2) => mutateDom( | |
| () => { | |
| destroyTree(el2); | |
| el2.remove(); | |
| } | |
| )); | |
| delete el._x_prevKeys; | |
| delete el._x_lookup; | |
| }); | |
| }); | |
| function loop(el, iteratorNames, evaluateItems, evaluateKey) { | |
| let isObject2 = (i) => typeof i === "object" && !Array.isArray(i); | |
| let templateEl = el; | |
| evaluateItems((items) => { | |
| if (isNumeric3(items) && items >= 0) { | |
| items = Array.from(Array(items).keys(), (i) => i + 1); | |
| } | |
| if (items === void 0) | |
| items = []; | |
| let lookup = el._x_lookup; | |
| let prevKeys = el._x_prevKeys; | |
| let scopes = []; | |
| let keys = []; | |
| if (isObject2(items)) { | |
| items = Object.entries(items).map(([key, value]) => { | |
| let scope2 = getIterationScopeVariables(iteratorNames, value, key, items); | |
| evaluateKey((value2) => { | |
| if (keys.includes(value2)) | |
| warn("Duplicate key on x-for", el); | |
| keys.push(value2); | |
| }, { scope: { index: key, ...scope2 } }); | |
| scopes.push(scope2); | |
| }); | |
| } else { | |
| for (let i = 0; i < items.length; i++) { | |
| let scope2 = getIterationScopeVariables(iteratorNames, items[i], i, items); | |
| evaluateKey((value) => { | |
| if (keys.includes(value)) | |
| warn("Duplicate key on x-for", el); | |
| keys.push(value); | |
| }, { scope: { index: i, ...scope2 } }); | |
| scopes.push(scope2); | |
| } | |
| } | |
| let adds = []; | |
| let moves = []; | |
| let removes = []; | |
| let sames = []; | |
| for (let i = 0; i < prevKeys.length; i++) { | |
| let key = prevKeys[i]; | |
| if (keys.indexOf(key) === -1) | |
| removes.push(key); | |
| } | |
| prevKeys = prevKeys.filter((key) => !removes.includes(key)); | |
| let lastKey = "template"; | |
| for (let i = 0; i < keys.length; i++) { | |
| let key = keys[i]; | |
| let prevIndex = prevKeys.indexOf(key); | |
| if (prevIndex === -1) { | |
| prevKeys.splice(i, 0, key); | |
| adds.push([lastKey, i]); | |
| } else if (prevIndex !== i) { | |
| let keyInSpot = prevKeys.splice(i, 1)[0]; | |
| let keyForSpot = prevKeys.splice(prevIndex - 1, 1)[0]; | |
| prevKeys.splice(i, 0, keyForSpot); | |
| prevKeys.splice(prevIndex, 0, keyInSpot); | |
| moves.push([keyInSpot, keyForSpot]); | |
| } else { | |
| sames.push(key); | |
| } | |
| lastKey = key; | |
| } | |
| for (let i = 0; i < removes.length; i++) { | |
| let key = removes[i]; | |
| if (!(key in lookup)) | |
| continue; | |
| mutateDom(() => { | |
| destroyTree(lookup[key]); | |
| lookup[key].remove(); | |
| }); | |
| delete lookup[key]; | |
| } | |
| for (let i = 0; i < moves.length; i++) { | |
| let [keyInSpot, keyForSpot] = moves[i]; | |
| let elInSpot = lookup[keyInSpot]; | |
| let elForSpot = lookup[keyForSpot]; | |
| let marker = document.createElement("div"); | |
| mutateDom(() => { | |
| if (!elForSpot) | |
| warn(`x-for ":key" is undefined or invalid`, templateEl, keyForSpot, lookup); | |
| elForSpot.after(marker); | |
| elInSpot.after(elForSpot); | |
| elForSpot._x_currentIfEl && elForSpot.after(elForSpot._x_currentIfEl); | |
| marker.before(elInSpot); | |
| elInSpot._x_currentIfEl && elInSpot.after(elInSpot._x_currentIfEl); | |
| marker.remove(); | |
| }); | |
| elForSpot._x_refreshXForScope(scopes[keys.indexOf(keyForSpot)]); | |
| } | |
| for (let i = 0; i < adds.length; i++) { | |
| let [lastKey2, index] = adds[i]; | |
| let lastEl = lastKey2 === "template" ? templateEl : lookup[lastKey2]; | |
| if (lastEl._x_currentIfEl) | |
| lastEl = lastEl._x_currentIfEl; | |
| let scope2 = scopes[index]; | |
| let key = keys[index]; | |
| let clone2 = document.importNode(templateEl.content, true).firstElementChild; | |
| let reactiveScope = reactive(scope2); | |
| addScopeToNode(clone2, reactiveScope, templateEl); | |
| clone2._x_refreshXForScope = (newScope) => { | |
| Object.entries(newScope).forEach(([key2, value]) => { | |
| reactiveScope[key2] = value; | |
| }); | |
| }; | |
| mutateDom(() => { | |
| lastEl.after(clone2); | |
| skipDuringClone(() => initTree(clone2))(); | |
| }); | |
| if (typeof key === "object") { | |
| warn("x-for key cannot be an object, it must be a string or an integer", templateEl); | |
| } | |
| lookup[key] = clone2; | |
| } | |
| for (let i = 0; i < sames.length; i++) { | |
| lookup[sames[i]]._x_refreshXForScope(scopes[keys.indexOf(sames[i])]); | |
| } | |
| templateEl._x_prevKeys = keys; | |
| }); | |
| } | |
| function parseForExpression(expression) { | |
| let forIteratorRE = /,([^,\}\]]*)(?:,([^,\}\]]*))?$/; | |
| let stripParensRE = /^\s*\(|\)\s*$/g; | |
| let forAliasRE = /([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/; | |
| let inMatch = expression.match(forAliasRE); | |
| if (!inMatch) | |
| return; | |
| let res = {}; | |
| res.items = inMatch[2].trim(); | |
| let item = inMatch[1].replace(stripParensRE, "").trim(); | |
| let iteratorMatch = item.match(forIteratorRE); | |
| if (iteratorMatch) { | |
| res.item = item.replace(forIteratorRE, "").trim(); | |
| res.index = iteratorMatch[1].trim(); | |
| if (iteratorMatch[2]) { | |
| res.collection = iteratorMatch[2].trim(); | |
| } | |
| } else { | |
| res.item = item; | |
| } | |
| return res; | |
| } | |
| function getIterationScopeVariables(iteratorNames, item, index, items) { | |
| let scopeVariables = {}; | |
| if (/^\[.*\]$/.test(iteratorNames.item) && Array.isArray(item)) { | |
| let names = iteratorNames.item.replace("[", "").replace("]", "").split(",").map((i) => i.trim()); | |
| names.forEach((name, i) => { | |
| scopeVariables[name] = item[i]; | |
| }); | |
| } else if (/^\{.*\}$/.test(iteratorNames.item) && !Array.isArray(item) && typeof item === "object") { | |
| let names = iteratorNames.item.replace("{", "").replace("}", "").split(",").map((i) => i.trim()); | |
| names.forEach((name) => { | |
| scopeVariables[name] = item[name]; | |
| }); | |
| } else { | |
| scopeVariables[iteratorNames.item] = item; | |
| } | |
| if (iteratorNames.index) | |
| scopeVariables[iteratorNames.index] = index; | |
| if (iteratorNames.collection) | |
| scopeVariables[iteratorNames.collection] = items; | |
| return scopeVariables; | |
| } | |
| function isNumeric3(subject) { | |
| return !Array.isArray(subject) && !isNaN(subject); | |
| } | |
| // packages/alpinejs/src/directives/x-ref.js | |
| function handler3() { | |
| } | |
| handler3.inline = (el, { expression }, { cleanup: cleanup2 }) => { | |
| let root = closestRoot(el); | |
| if (!root._x_refs) | |
| root._x_refs = {}; | |
| root._x_refs[expression] = el; | |
| cleanup2(() => delete root._x_refs[expression]); | |
| }; | |
| directive("ref", handler3); | |
| // packages/alpinejs/src/directives/x-if.js | |
| directive("if", (el, { expression }, { effect: effect3, cleanup: cleanup2 }) => { | |
| if (el.tagName.toLowerCase() !== "template") | |
| warn("x-if can only be used on a <template> tag", el); | |
| let evaluate2 = evaluateLater(el, expression); | |
| let show = () => { | |
| if (el._x_currentIfEl) | |
| return el._x_currentIfEl; | |
| let clone2 = el.content.cloneNode(true).firstElementChild; | |
| addScopeToNode(clone2, {}, el); | |
| mutateDom(() => { | |
| el.after(clone2); | |
| skipDuringClone(() => initTree(clone2))(); | |
| }); | |
| el._x_currentIfEl = clone2; | |
| el._x_undoIf = () => { | |
| mutateDom(() => { | |
| destroyTree(clone2); | |
| clone2.remove(); | |
| }); | |
| delete el._x_currentIfEl; | |
| }; | |
| return clone2; | |
| }; | |
| let hide = () => { | |
| if (!el._x_undoIf) | |
| return; | |
| el._x_undoIf(); | |
| delete el._x_undoIf; | |
| }; | |
| effect3(() => evaluate2((value) => { | |
| value ? show() : hide(); | |
| })); | |
| cleanup2(() => el._x_undoIf && el._x_undoIf()); | |
| }); | |
| // packages/alpinejs/src/directives/x-id.js | |
| directive("id", (el, { expression }, { evaluate: evaluate2 }) => { | |
| let names = evaluate2(expression); | |
| names.forEach((name) => setIdRoot(el, name)); | |
| }); | |
| interceptClone((from, to) => { | |
| if (from._x_ids) { | |
| to._x_ids = from._x_ids; | |
| } | |
| }); | |
| // packages/alpinejs/src/directives/x-on.js | |
| mapAttributes(startingWith("@", into(prefix("on:")))); | |
| directive("on", skipDuringClone((el, { value, modifiers, expression }, { cleanup: cleanup2 }) => { | |
| let evaluate2 = expression ? evaluateLater(el, expression) : () => { | |
| }; | |
| if (el.tagName.toLowerCase() === "template") { | |
| if (!el._x_forwardEvents) | |
| el._x_forwardEvents = []; | |
| if (!el._x_forwardEvents.includes(value)) | |
| el._x_forwardEvents.push(value); | |
| } | |
| let removeListener = on(el, value, modifiers, (e) => { | |
| evaluate2(() => { | |
| }, { scope: { "$event": e }, params: [e] }); | |
| }); | |
| cleanup2(() => 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, directiveName, slug) { | |
| directive(directiveName, (el) => warn(`You can't use [x-${directiveName}] without first installing the "${name}" plugin here: https://alpinejs.dev/plugins/${slug}`, el)); | |
| } | |
| // packages/alpinejs/src/index.js | |
| alpine_default.setEvaluator(normalEvaluator); | |
| alpine_default.setRawEvaluator(normalRawEvaluator); | |
| alpine_default.setReactivityEngine({ reactive: reactive2, effect: effect2, release: stop, raw: toRaw }); | |
| var src_default = alpine_default; | |
| // packages/alpinejs/builds/cdn.js | |
| window.Alpine = src_default; | |
| queueMicrotask(() => { | |
| src_default.start(); | |
| }); | |
| })(); | |