{"version":3,"sources":["jsdelivr-header.js","/gh/AlpineJS/alpine@2.8.2/dist/alpine.js"],"names":[],"mappings":"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","file":"/gh/AlpineJS/alpine@2.8.2/dist/alpine.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /gh/AlpineJS/alpine@2.8.2/dist/alpine.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n  typeof define === 'function' && define.amd ? define(factory) :\n  (global = global || self, global.Alpine = factory());\n}(this, (function () { 'use strict';\n\n  function _defineProperty(obj, key, value) {\n    if (key in obj) {\n      Object.defineProperty(obj, key, {\n        value: value,\n        enumerable: true,\n        configurable: true,\n        writable: true\n      });\n    } else {\n      obj[key] = value;\n    }\n\n    return obj;\n  }\n\n  function ownKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\n\n    if (Object.getOwnPropertySymbols) {\n      var symbols = Object.getOwnPropertySymbols(object);\n      if (enumerableOnly) symbols = symbols.filter(function (sym) {\n        return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n      });\n      keys.push.apply(keys, symbols);\n    }\n\n    return keys;\n  }\n\n  function _objectSpread2(target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i] != null ? arguments[i] : {};\n\n      if (i % 2) {\n        ownKeys(Object(source), true).forEach(function (key) {\n          _defineProperty(target, key, source[key]);\n        });\n      } else if (Object.getOwnPropertyDescriptors) {\n        Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n      } else {\n        ownKeys(Object(source)).forEach(function (key) {\n          Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n      }\n    }\n\n    return target;\n  }\n\n  // Thanks @stimulus:\n  // https://github.com/stimulusjs/stimulus/blob/master/packages/%40stimulus/core/src/application.ts\n  function domReady() {\n    return new Promise(resolve => {\n      if (document.readyState == \"loading\") {\n        document.addEventListener(\"DOMContentLoaded\", resolve);\n      } else {\n        resolve();\n      }\n    });\n  }\n  function arrayUnique(array) {\n    return Array.from(new Set(array));\n  }\n  function isTesting() {\n    return navigator.userAgent.includes(\"Node.js\") || navigator.userAgent.includes(\"jsdom\");\n  }\n  function checkedAttrLooseCompare(valueA, valueB) {\n    return valueA == valueB;\n  }\n  function warnIfMalformedTemplate(el, directive) {\n    if (el.tagName.toLowerCase() !== 'template') {\n      console.warn(`Alpine: [${directive}] directive should only be added to <template> tags. See https://github.com/alpinejs/alpine#${directive}`);\n    } else if (el.content.childElementCount !== 1) {\n      console.warn(`Alpine: <template> tag with [${directive}] encountered with an unexpected number of root elements. Make sure <template> has a single root element. `);\n    }\n  }\n  function kebabCase(subject) {\n    return subject.replace(/([a-z])([A-Z])/g, '$1-$2').replace(/[_\\s]/, '-').toLowerCase();\n  }\n  function camelCase(subject) {\n    return subject.toLowerCase().replace(/-(\\w)/g, (match, char) => char.toUpperCase());\n  }\n  function walk(el, callback) {\n    if (callback(el) === false) return;\n    let node = el.firstElementChild;\n\n    while (node) {\n      walk(node, callback);\n      node = node.nextElementSibling;\n    }\n  }\n  function debounce(func, wait) {\n    var timeout;\n    return function () {\n      var context = this,\n          args = arguments;\n\n      var later = function later() {\n        timeout = null;\n        func.apply(context, args);\n      };\n\n      clearTimeout(timeout);\n      timeout = setTimeout(later, wait);\n    };\n  }\n\n  const handleError = (el, expression, error) => {\n    console.warn(`Alpine Error: \"${error}\"\\n\\nExpression: \"${expression}\"\\nElement:`, el);\n\n    if (!isTesting()) {\n      Object.assign(error, {\n        el,\n        expression\n      });\n      throw error;\n    }\n  };\n\n  function tryCatch(cb, {\n    el,\n    expression\n  }) {\n    try {\n      const value = cb();\n      return value instanceof Promise ? value.catch(e => handleError(el, expression, e)) : value;\n    } catch (e) {\n      handleError(el, expression, e);\n    }\n  }\n\n  function saferEval(el, expression, dataContext, additionalHelperVariables = {}) {\n    return tryCatch(() => {\n      if (typeof expression === 'function') {\n        return expression.call(dataContext);\n      }\n\n      return new Function(['$data', ...Object.keys(additionalHelperVariables)], `var __alpine_result; with($data) { __alpine_result = ${expression} }; return __alpine_result`)(dataContext, ...Object.values(additionalHelperVariables));\n    }, {\n      el,\n      expression\n    });\n  }\n  function saferEvalNoReturn(el, expression, dataContext, additionalHelperVariables = {}) {\n    return tryCatch(() => {\n      if (typeof expression === 'function') {\n        return Promise.resolve(expression.call(dataContext, additionalHelperVariables['$event']));\n      }\n\n      let AsyncFunction = Function;\n      /* MODERN-ONLY:START */\n\n      AsyncFunction = Object.getPrototypeOf(async function () {}).constructor;\n      /* MODERN-ONLY:END */\n      // For the cases when users pass only a function reference to the caller: `x-on:click=\"foo\"`\n      // Where \"foo\" is a function. Also, we'll pass the function the event instance when we call it.\n\n      if (Object.keys(dataContext).includes(expression)) {\n        let methodReference = new Function(['dataContext', ...Object.keys(additionalHelperVariables)], `with(dataContext) { return ${expression} }`)(dataContext, ...Object.values(additionalHelperVariables));\n\n        if (typeof methodReference === 'function') {\n          return Promise.resolve(methodReference.call(dataContext, additionalHelperVariables['$event']));\n        } else {\n          return Promise.resolve();\n        }\n      }\n\n      return Promise.resolve(new AsyncFunction(['dataContext', ...Object.keys(additionalHelperVariables)], `with(dataContext) { ${expression} }`)(dataContext, ...Object.values(additionalHelperVariables)));\n    }, {\n      el,\n      expression\n    });\n  }\n  const xAttrRE = /^x-(on|bind|data|text|html|model|if|for|show|cloak|transition|ref|spread)\\b/;\n  function isXAttr(attr) {\n    const name = replaceAtAndColonWithStandardSyntax(attr.name);\n    return xAttrRE.test(name);\n  }\n  function getXAttrs(el, component, type) {\n    let directives = Array.from(el.attributes).filter(isXAttr).map(parseHtmlAttribute); // Get an object of directives from x-spread.\n\n    let spreadDirective = directives.filter(directive => directive.type === 'spread')[0];\n\n    if (spreadDirective) {\n      let spreadObject = saferEval(el, spreadDirective.expression, component.$data); // Add x-spread directives to the pile of existing directives.\n\n      directives = directives.concat(Object.entries(spreadObject).map(([name, value]) => parseHtmlAttribute({\n        name,\n        value\n      })));\n    }\n\n    if (type) return directives.filter(i => i.type === type);\n    return sortDirectives(directives);\n  }\n\n  function sortDirectives(directives) {\n    let directiveOrder = ['bind', 'model', 'show', 'catch-all'];\n    return directives.sort((a, b) => {\n      let typeA = directiveOrder.indexOf(a.type) === -1 ? 'catch-all' : a.type;\n      let typeB = directiveOrder.indexOf(b.type) === -1 ? 'catch-all' : b.type;\n      return directiveOrder.indexOf(typeA) - directiveOrder.indexOf(typeB);\n    });\n  }\n\n  function parseHtmlAttribute({\n    name,\n    value\n  }) {\n    const normalizedName = replaceAtAndColonWithStandardSyntax(name);\n    const typeMatch = normalizedName.match(xAttrRE);\n    const valueMatch = normalizedName.match(/:([a-zA-Z0-9\\-:]+)/);\n    const modifiers = normalizedName.match(/\\.[^.\\]]+(?=[^\\]]*$)/g) || [];\n    return {\n      type: typeMatch ? typeMatch[1] : null,\n      value: valueMatch ? valueMatch[1] : null,\n      modifiers: modifiers.map(i => i.replace('.', '')),\n      expression: value\n    };\n  }\n  function isBooleanAttr(attrName) {\n    // As per HTML spec table https://html.spec.whatwg.org/multipage/indices.html#attributes-3:boolean-attribute\n    // Array roughly ordered by estimated usage\n    const booleanAttributes = ['disabled', 'checked', 'required', 'readonly', 'hidden', 'open', 'selected', 'autofocus', 'itemscope', 'multiple', 'novalidate', 'allowfullscreen', 'allowpaymentrequest', 'formnovalidate', 'autoplay', 'controls', 'loop', 'muted', 'playsinline', 'default', 'ismap', 'reversed', 'async', 'defer', 'nomodule'];\n    return booleanAttributes.includes(attrName);\n  }\n  function replaceAtAndColonWithStandardSyntax(name) {\n    if (name.startsWith('@')) {\n      return name.replace('@', 'x-on:');\n    } else if (name.startsWith(':')) {\n      return name.replace(':', 'x-bind:');\n    }\n\n    return name;\n  }\n  function convertClassStringToArray(classList, filterFn = Boolean) {\n    return classList.split(' ').filter(filterFn);\n  }\n  const TRANSITION_TYPE_IN = 'in';\n  const TRANSITION_TYPE_OUT = 'out';\n  const TRANSITION_CANCELLED = 'cancelled';\n  function transitionIn(el, show, reject, component, forceSkip = false) {\n    // We don't want to transition on the initial page load.\n    if (forceSkip) return show();\n\n    if (el.__x_transition && el.__x_transition.type === TRANSITION_TYPE_IN) {\n      // there is already a similar transition going on, this was probably triggered by\n      // a change in a different property, let's just leave the previous one doing its job\n      return;\n    }\n\n    const attrs = getXAttrs(el, component, 'transition');\n    const showAttr = getXAttrs(el, component, 'show')[0]; // If this is triggered by a x-show.transition.\n\n    if (showAttr && showAttr.modifiers.includes('transition')) {\n      let modifiers = showAttr.modifiers; // If x-show.transition.out, we'll skip the \"in\" transition.\n\n      if (modifiers.includes('out') && !modifiers.includes('in')) return show();\n      const settingBothSidesOfTransition = modifiers.includes('in') && modifiers.includes('out'); // If x-show.transition.in...out... only use \"in\" related modifiers for this transition.\n\n      modifiers = settingBothSidesOfTransition ? modifiers.filter((i, index) => index < modifiers.indexOf('out')) : modifiers;\n      transitionHelperIn(el, modifiers, show, reject); // Otherwise, we can assume x-transition:enter.\n    } else if (attrs.some(attr => ['enter', 'enter-start', 'enter-end'].includes(attr.value))) {\n      transitionClassesIn(el, component, attrs, show, reject);\n    } else {\n      // If neither, just show that damn thing.\n      show();\n    }\n  }\n  function transitionOut(el, hide, reject, component, forceSkip = false) {\n    // We don't want to transition on the initial page load.\n    if (forceSkip) return hide();\n\n    if (el.__x_transition && el.__x_transition.type === TRANSITION_TYPE_OUT) {\n      // there is already a similar transition going on, this was probably triggered by\n      // a change in a different property, let's just leave the previous one doing its job\n      return;\n    }\n\n    const attrs = getXAttrs(el, component, 'transition');\n    const showAttr = getXAttrs(el, component, 'show')[0];\n\n    if (showAttr && showAttr.modifiers.includes('transition')) {\n      let modifiers = showAttr.modifiers;\n      if (modifiers.includes('in') && !modifiers.includes('out')) return hide();\n      const settingBothSidesOfTransition = modifiers.includes('in') && modifiers.includes('out');\n      modifiers = settingBothSidesOfTransition ? modifiers.filter((i, index) => index > modifiers.indexOf('out')) : modifiers;\n      transitionHelperOut(el, modifiers, settingBothSidesOfTransition, hide, reject);\n    } else if (attrs.some(attr => ['leave', 'leave-start', 'leave-end'].includes(attr.value))) {\n      transitionClassesOut(el, component, attrs, hide, reject);\n    } else {\n      hide();\n    }\n  }\n  function transitionHelperIn(el, modifiers, showCallback, reject) {\n    // Default values inspired by: https://material.io/design/motion/speed.html#duration\n    const styleValues = {\n      duration: modifierValue(modifiers, 'duration', 150),\n      origin: modifierValue(modifiers, 'origin', 'center'),\n      first: {\n        opacity: 0,\n        scale: modifierValue(modifiers, 'scale', 95)\n      },\n      second: {\n        opacity: 1,\n        scale: 100\n      }\n    };\n    transitionHelper(el, modifiers, showCallback, () => {}, reject, styleValues, TRANSITION_TYPE_IN);\n  }\n  function transitionHelperOut(el, modifiers, settingBothSidesOfTransition, hideCallback, reject) {\n    // Make the \"out\" transition .5x slower than the \"in\". (Visually better)\n    // HOWEVER, if they explicitly set a duration for the \"out\" transition,\n    // use that.\n    const duration = settingBothSidesOfTransition ? modifierValue(modifiers, 'duration', 150) : modifierValue(modifiers, 'duration', 150) / 2;\n    const styleValues = {\n      duration: duration,\n      origin: modifierValue(modifiers, 'origin', 'center'),\n      first: {\n        opacity: 1,\n        scale: 100\n      },\n      second: {\n        opacity: 0,\n        scale: modifierValue(modifiers, 'scale', 95)\n      }\n    };\n    transitionHelper(el, modifiers, () => {}, hideCallback, reject, styleValues, TRANSITION_TYPE_OUT);\n  }\n\n  function modifierValue(modifiers, key, fallback) {\n    // If the modifier isn't present, use the default.\n    if (modifiers.indexOf(key) === -1) return fallback; // If it IS present, grab the value after it: x-show.transition.duration.500ms\n\n    const rawValue = modifiers[modifiers.indexOf(key) + 1];\n    if (!rawValue) return fallback;\n\n    if (key === 'scale') {\n      // Check if the very next value is NOT a number and return the fallback.\n      // If x-show.transition.scale, we'll use the default scale value.\n      // That is how a user opts out of the opacity transition.\n      if (!isNumeric(rawValue)) return fallback;\n    }\n\n    if (key === 'duration') {\n      // Support x-show.transition.duration.500ms && duration.500\n      let match = rawValue.match(/([0-9]+)ms/);\n      if (match) return match[1];\n    }\n\n    if (key === 'origin') {\n      // Support chaining origin directions: x-show.transition.top.right\n      if (['top', 'right', 'left', 'center', 'bottom'].includes(modifiers[modifiers.indexOf(key) + 2])) {\n        return [rawValue, modifiers[modifiers.indexOf(key) + 2]].join(' ');\n      }\n    }\n\n    return rawValue;\n  }\n\n  function transitionHelper(el, modifiers, hook1, hook2, reject, styleValues, type) {\n    // clear the previous transition if exists to avoid caching the wrong styles\n    if (el.__x_transition) {\n      el.__x_transition.cancel && el.__x_transition.cancel();\n    } // If the user set these style values, we'll put them back when we're done with them.\n\n\n    const opacityCache = el.style.opacity;\n    const transformCache = el.style.transform;\n    const transformOriginCache = el.style.transformOrigin; // If no modifiers are present: x-show.transition, we'll default to both opacity and scale.\n\n    const noModifiers = !modifiers.includes('opacity') && !modifiers.includes('scale');\n    const transitionOpacity = noModifiers || modifiers.includes('opacity');\n    const transitionScale = noModifiers || modifiers.includes('scale'); // These are the explicit stages of a transition (same stages for in and for out).\n    // This way you can get a birds eye view of the hooks, and the differences\n    // between them.\n\n    const stages = {\n      start() {\n        if (transitionOpacity) el.style.opacity = styleValues.first.opacity;\n        if (transitionScale) el.style.transform = `scale(${styleValues.first.scale / 100})`;\n      },\n\n      during() {\n        if (transitionScale) el.style.transformOrigin = styleValues.origin;\n        el.style.transitionProperty = [transitionOpacity ? `opacity` : ``, transitionScale ? `transform` : ``].join(' ').trim();\n        el.style.transitionDuration = `${styleValues.duration / 1000}s`;\n        el.style.transitionTimingFunction = `cubic-bezier(0.4, 0.0, 0.2, 1)`;\n      },\n\n      show() {\n        hook1();\n      },\n\n      end() {\n        if (transitionOpacity) el.style.opacity = styleValues.second.opacity;\n        if (transitionScale) el.style.transform = `scale(${styleValues.second.scale / 100})`;\n      },\n\n      hide() {\n        hook2();\n      },\n\n      cleanup() {\n        if (transitionOpacity) el.style.opacity = opacityCache;\n        if (transitionScale) el.style.transform = transformCache;\n        if (transitionScale) el.style.transformOrigin = transformOriginCache;\n        el.style.transitionProperty = null;\n        el.style.transitionDuration = null;\n        el.style.transitionTimingFunction = null;\n      }\n\n    };\n    transition(el, stages, type, reject);\n  }\n\n  const ensureStringExpression = (expression, el, component) => {\n    return typeof expression === 'function' ? component.evaluateReturnExpression(el, expression) : expression;\n  };\n\n  function transitionClassesIn(el, component, directives, showCallback, reject) {\n    const enter = convertClassStringToArray(ensureStringExpression((directives.find(i => i.value === 'enter') || {\n      expression: ''\n    }).expression, el, component));\n    const enterStart = convertClassStringToArray(ensureStringExpression((directives.find(i => i.value === 'enter-start') || {\n      expression: ''\n    }).expression, el, component));\n    const enterEnd = convertClassStringToArray(ensureStringExpression((directives.find(i => i.value === 'enter-end') || {\n      expression: ''\n    }).expression, el, component));\n    transitionClasses(el, enter, enterStart, enterEnd, showCallback, () => {}, TRANSITION_TYPE_IN, reject);\n  }\n  function transitionClassesOut(el, component, directives, hideCallback, reject) {\n    const leave = convertClassStringToArray(ensureStringExpression((directives.find(i => i.value === 'leave') || {\n      expression: ''\n    }).expression, el, component));\n    const leaveStart = convertClassStringToArray(ensureStringExpression((directives.find(i => i.value === 'leave-start') || {\n      expression: ''\n    }).expression, el, component));\n    const leaveEnd = convertClassStringToArray(ensureStringExpression((directives.find(i => i.value === 'leave-end') || {\n      expression: ''\n    }).expression, el, component));\n    transitionClasses(el, leave, leaveStart, leaveEnd, () => {}, hideCallback, TRANSITION_TYPE_OUT, reject);\n  }\n  function transitionClasses(el, classesDuring, classesStart, classesEnd, hook1, hook2, type, reject) {\n    // clear the previous transition if exists to avoid caching the wrong classes\n    if (el.__x_transition) {\n      el.__x_transition.cancel && el.__x_transition.cancel();\n    }\n\n    const originalClasses = el.__x_original_classes || [];\n    const stages = {\n      start() {\n        el.classList.add(...classesStart);\n      },\n\n      during() {\n        el.classList.add(...classesDuring);\n      },\n\n      show() {\n        hook1();\n      },\n\n      end() {\n        // Don't remove classes that were in the original class attribute.\n        el.classList.remove(...classesStart.filter(i => !originalClasses.includes(i)));\n        el.classList.add(...classesEnd);\n      },\n\n      hide() {\n        hook2();\n      },\n\n      cleanup() {\n        el.classList.remove(...classesDuring.filter(i => !originalClasses.includes(i)));\n        el.classList.remove(...classesEnd.filter(i => !originalClasses.includes(i)));\n      }\n\n    };\n    transition(el, stages, type, reject);\n  }\n  function transition(el, stages, type, reject) {\n    const finish = once(() => {\n      stages.hide(); // Adding an \"isConnected\" check, in case the callback\n      // removed the element from the DOM.\n\n      if (el.isConnected) {\n        stages.cleanup();\n      }\n\n      delete el.__x_transition;\n    });\n    el.__x_transition = {\n      // Set transition type so we can avoid clearing transition if the direction is the same\n      type: type,\n      // create a callback for the last stages of the transition so we can call it\n      // from different point and early terminate it. Once will ensure that function\n      // is only called one time.\n      cancel: once(() => {\n        reject(TRANSITION_CANCELLED);\n        finish();\n      }),\n      finish,\n      // This store the next animation frame so we can cancel it\n      nextFrame: null\n    };\n    stages.start();\n    stages.during();\n    el.__x_transition.nextFrame = requestAnimationFrame(() => {\n      // Note: Safari's transitionDuration property will list out comma separated transition durations\n      // for every single transition property. Let's grab the first one and call it a day.\n      let duration = Number(getComputedStyle(el).transitionDuration.replace(/,.*/, '').replace('s', '')) * 1000;\n\n      if (duration === 0) {\n        duration = Number(getComputedStyle(el).animationDuration.replace('s', '')) * 1000;\n      }\n\n      stages.show();\n      el.__x_transition.nextFrame = requestAnimationFrame(() => {\n        stages.end();\n        setTimeout(el.__x_transition.finish, duration);\n      });\n    });\n  }\n  function isNumeric(subject) {\n    return !Array.isArray(subject) && !isNaN(subject);\n  } // Thanks @vuejs\n  // https://github.com/vuejs/vue/blob/4de4649d9637262a9b007720b59f80ac72a5620c/src/shared/util.js\n\n  function once(callback) {\n    let called = false;\n    return function () {\n      if (!called) {\n        called = true;\n        callback.apply(this, arguments);\n      }\n    };\n  }\n\n  function handleForDirective(component, templateEl, expression, initialUpdate, extraVars) {\n    warnIfMalformedTemplate(templateEl, 'x-for');\n    let iteratorNames = typeof expression === 'function' ? parseForExpression(component.evaluateReturnExpression(templateEl, expression)) : parseForExpression(expression);\n    let items = evaluateItemsAndReturnEmptyIfXIfIsPresentAndFalseOnElement(component, templateEl, iteratorNames, extraVars); // As we walk the array, we'll also walk the DOM (updating/creating as we go).\n\n    let currentEl = templateEl;\n    items.forEach((item, index) => {\n      let iterationScopeVariables = getIterationScopeVariables(iteratorNames, item, index, items, extraVars());\n      let currentKey = generateKeyForIteration(component, templateEl, index, iterationScopeVariables);\n      let nextEl = lookAheadForMatchingKeyedElementAndMoveItIfFound(currentEl.nextElementSibling, currentKey); // If we haven't found a matching key, insert the element at the current position.\n\n      if (!nextEl) {\n        nextEl = addElementInLoopAfterCurrentEl(templateEl, currentEl); // And transition it in if it's not the first page load.\n\n        transitionIn(nextEl, () => {}, () => {}, component, initialUpdate);\n        nextEl.__x_for = iterationScopeVariables;\n        component.initializeElements(nextEl, () => nextEl.__x_for); // Otherwise update the element we found.\n      } else {\n        // Temporarily remove the key indicator to allow the normal \"updateElements\" to work.\n        delete nextEl.__x_for_key;\n        nextEl.__x_for = iterationScopeVariables;\n        component.updateElements(nextEl, () => nextEl.__x_for);\n      }\n\n      currentEl = nextEl;\n      currentEl.__x_for_key = currentKey;\n    });\n    removeAnyLeftOverElementsFromPreviousUpdate(currentEl, component);\n  } // This was taken from VueJS 2.* core. Thanks Vue!\n\n  function parseForExpression(expression) {\n    let forIteratorRE = /,([^,\\}\\]]*)(?:,([^,\\}\\]]*))?$/;\n    let stripParensRE = /^\\(|\\)$/g;\n    let forAliasRE = /([\\s\\S]*?)\\s+(?:in|of)\\s+([\\s\\S]*)/;\n    let inMatch = String(expression).match(forAliasRE);\n    if (!inMatch) return;\n    let res = {};\n    res.items = inMatch[2].trim();\n    let item = inMatch[1].trim().replace(stripParensRE, '');\n    let iteratorMatch = item.match(forIteratorRE);\n\n    if (iteratorMatch) {\n      res.item = item.replace(forIteratorRE, '').trim();\n      res.index = iteratorMatch[1].trim();\n\n      if (iteratorMatch[2]) {\n        res.collection = iteratorMatch[2].trim();\n      }\n    } else {\n      res.item = item;\n    }\n\n    return res;\n  }\n\n  function getIterationScopeVariables(iteratorNames, item, index, items, extraVars) {\n    // We must create a new object, so each iteration has a new scope\n    let scopeVariables = extraVars ? _objectSpread2({}, extraVars) : {};\n    scopeVariables[iteratorNames.item] = item;\n    if (iteratorNames.index) scopeVariables[iteratorNames.index] = index;\n    if (iteratorNames.collection) scopeVariables[iteratorNames.collection] = items;\n    return scopeVariables;\n  }\n\n  function generateKeyForIteration(component, el, index, iterationScopeVariables) {\n    let bindKeyAttribute = getXAttrs(el, component, 'bind').filter(attr => attr.value === 'key')[0]; // If the dev hasn't specified a key, just return the index of the iteration.\n\n    if (!bindKeyAttribute) return index;\n    return component.evaluateReturnExpression(el, bindKeyAttribute.expression, () => iterationScopeVariables);\n  }\n\n  function evaluateItemsAndReturnEmptyIfXIfIsPresentAndFalseOnElement(component, el, iteratorNames, extraVars) {\n    let ifAttribute = getXAttrs(el, component, 'if')[0];\n\n    if (ifAttribute && !component.evaluateReturnExpression(el, ifAttribute.expression)) {\n      return [];\n    }\n\n    let items = component.evaluateReturnExpression(el, iteratorNames.items, extraVars); // This adds support for the `i in n` syntax.\n\n    if (isNumeric(items) && items >= 0) {\n      items = Array.from(Array(items).keys(), i => i + 1);\n    }\n\n    return items;\n  }\n\n  function addElementInLoopAfterCurrentEl(templateEl, currentEl) {\n    let clone = document.importNode(templateEl.content, true);\n    currentEl.parentElement.insertBefore(clone, currentEl.nextElementSibling);\n    return currentEl.nextElementSibling;\n  }\n\n  function lookAheadForMatchingKeyedElementAndMoveItIfFound(nextEl, currentKey) {\n    if (!nextEl) return; // If we are already past the x-for generated elements, we don't need to look ahead.\n\n    if (nextEl.__x_for_key === undefined) return; // If the the key's DO match, no need to look ahead.\n\n    if (nextEl.__x_for_key === currentKey) return nextEl; // If they don't, we'll look ahead for a match.\n    // If we find it, we'll move it to the current position in the loop.\n\n    let tmpNextEl = nextEl;\n\n    while (tmpNextEl) {\n      if (tmpNextEl.__x_for_key === currentKey) {\n        return tmpNextEl.parentElement.insertBefore(tmpNextEl, nextEl);\n      }\n\n      tmpNextEl = tmpNextEl.nextElementSibling && tmpNextEl.nextElementSibling.__x_for_key !== undefined ? tmpNextEl.nextElementSibling : false;\n    }\n  }\n\n  function removeAnyLeftOverElementsFromPreviousUpdate(currentEl, component) {\n    var nextElementFromOldLoop = currentEl.nextElementSibling && currentEl.nextElementSibling.__x_for_key !== undefined ? currentEl.nextElementSibling : false;\n\n    while (nextElementFromOldLoop) {\n      let nextElementFromOldLoopImmutable = nextElementFromOldLoop;\n      let nextSibling = nextElementFromOldLoop.nextElementSibling;\n      transitionOut(nextElementFromOldLoop, () => {\n        nextElementFromOldLoopImmutable.remove();\n      }, () => {}, component);\n      nextElementFromOldLoop = nextSibling && nextSibling.__x_for_key !== undefined ? nextSibling : false;\n    }\n  }\n\n  function handleAttributeBindingDirective(component, el, attrName, expression, extraVars, attrType, modifiers) {\n    var value = component.evaluateReturnExpression(el, expression, extraVars);\n\n    if (attrName === 'value') {\n      if (Alpine.ignoreFocusedForValueBinding && document.activeElement.isSameNode(el)) return; // If nested model key is undefined, set the default value to empty string.\n\n      if (value === undefined && String(expression).match(/\\./)) {\n        value = '';\n      }\n\n      if (el.type === 'radio') {\n        // Set radio value from x-bind:value, if no \"value\" attribute exists.\n        // If there are any initial state values, radio will have a correct\n        // \"checked\" value since x-bind:value is processed before x-model.\n        if (el.attributes.value === undefined && attrType === 'bind') {\n          el.value = value;\n        } else if (attrType !== 'bind') {\n          el.checked = checkedAttrLooseCompare(el.value, value);\n        }\n      } else if (el.type === 'checkbox') {\n        // If we are explicitly binding a string to the :value, set the string,\n        // If the value is a boolean, leave it alone, it will be set to \"on\"\n        // automatically.\n        if (typeof value !== 'boolean' && ![null, undefined].includes(value) && attrType === 'bind') {\n          el.value = String(value);\n        } else if (attrType !== 'bind') {\n          if (Array.isArray(value)) {\n            // I'm purposely not using Array.includes here because it's\n            // strict, and because of Numeric/String mis-casting, I\n            // want the \"includes\" to be \"fuzzy\".\n            el.checked = value.some(val => checkedAttrLooseCompare(val, el.value));\n          } else {\n            el.checked = !!value;\n          }\n        }\n      } else if (el.tagName === 'SELECT') {\n        updateSelect(el, value);\n      } else {\n        if (el.value === value) return;\n        el.value = value;\n      }\n    } else if (attrName === 'class') {\n      if (Array.isArray(value)) {\n        const originalClasses = el.__x_original_classes || [];\n        el.setAttribute('class', arrayUnique(originalClasses.concat(value)).join(' '));\n      } else if (typeof value === 'object') {\n        // Sorting the keys / class names by their boolean value will ensure that\n        // anything that evaluates to `false` and needs to remove classes is run first.\n        const keysSortedByBooleanValue = Object.keys(value).sort((a, b) => value[a] - value[b]);\n        keysSortedByBooleanValue.forEach(classNames => {\n          if (value[classNames]) {\n            convertClassStringToArray(classNames).forEach(className => el.classList.add(className));\n          } else {\n            convertClassStringToArray(classNames).forEach(className => el.classList.remove(className));\n          }\n        });\n      } else {\n        const originalClasses = el.__x_original_classes || [];\n        const newClasses = value ? convertClassStringToArray(value) : [];\n        el.setAttribute('class', arrayUnique(originalClasses.concat(newClasses)).join(' '));\n      }\n    } else {\n      attrName = modifiers.includes('camel') ? camelCase(attrName) : attrName; // If an attribute's bound value is null, undefined or false, remove the attribute\n\n      if ([null, undefined, false].includes(value)) {\n        el.removeAttribute(attrName);\n      } else {\n        isBooleanAttr(attrName) ? setIfChanged(el, attrName, attrName) : setIfChanged(el, attrName, value);\n      }\n    }\n  }\n\n  function setIfChanged(el, attrName, value) {\n    if (el.getAttribute(attrName) != value) {\n      el.setAttribute(attrName, value);\n    }\n  }\n\n  function updateSelect(el, value) {\n    const arrayWrappedValue = [].concat(value).map(value => {\n      return value + '';\n    });\n    Array.from(el.options).forEach(option => {\n      option.selected = arrayWrappedValue.includes(option.value || option.text);\n    });\n  }\n\n  function handleTextDirective(el, output, expression) {\n    // If nested model key is undefined, set the default value to empty string.\n    if (output === undefined && String(expression).match(/\\./)) {\n      output = '';\n    }\n\n    el.textContent = output;\n  }\n\n  function handleHtmlDirective(component, el, expression, extraVars) {\n    el.innerHTML = component.evaluateReturnExpression(el, expression, extraVars);\n  }\n\n  function handleShowDirective(component, el, value, modifiers, initialUpdate = false) {\n    const hide = () => {\n      el.style.display = 'none';\n      el.__x_is_shown = false;\n    };\n\n    const show = () => {\n      if (el.style.length === 1 && el.style.display === 'none') {\n        el.removeAttribute('style');\n      } else {\n        el.style.removeProperty('display');\n      }\n\n      el.__x_is_shown = true;\n    };\n\n    if (initialUpdate === true) {\n      if (value) {\n        show();\n      } else {\n        hide();\n      }\n\n      return;\n    }\n\n    const handle = (resolve, reject) => {\n      if (value) {\n        if (el.style.display === 'none' || el.__x_transition) {\n          transitionIn(el, () => {\n            show();\n          }, reject, component);\n        }\n\n        resolve(() => {});\n      } else {\n        if (el.style.display !== 'none') {\n          transitionOut(el, () => {\n            resolve(() => {\n              hide();\n            });\n          }, reject, component);\n        } else {\n          resolve(() => {});\n        }\n      }\n    }; // The working of x-show is a bit complex because we need to\n    // wait for any child transitions to finish before hiding\n    // some element. Also, this has to be done recursively.\n    // If x-show.immediate, foregoe the waiting.\n\n\n    if (modifiers.includes('immediate')) {\n      handle(finish => finish(), () => {});\n      return;\n    } // x-show is encountered during a DOM tree walk. If an element\n    // we encounter is NOT a child of another x-show element we\n    // can execute the previous x-show stack (if one exists).\n\n\n    if (component.showDirectiveLastElement && !component.showDirectiveLastElement.contains(el)) {\n      component.executeAndClearRemainingShowDirectiveStack();\n    }\n\n    component.showDirectiveStack.push(handle);\n    component.showDirectiveLastElement = el;\n  }\n\n  function handleIfDirective(component, el, expressionResult, initialUpdate, extraVars) {\n    warnIfMalformedTemplate(el, 'x-if');\n    const elementHasAlreadyBeenAdded = el.nextElementSibling && el.nextElementSibling.__x_inserted_me === true;\n\n    if (expressionResult && (!elementHasAlreadyBeenAdded || el.__x_transition)) {\n      const clone = document.importNode(el.content, true);\n      el.parentElement.insertBefore(clone, el.nextElementSibling);\n      transitionIn(el.nextElementSibling, () => {}, () => {}, component, initialUpdate);\n      component.initializeElements(el.nextElementSibling, extraVars);\n      el.nextElementSibling.__x_inserted_me = true;\n    } else if (!expressionResult && elementHasAlreadyBeenAdded) {\n      transitionOut(el.nextElementSibling, () => {\n        el.nextElementSibling.remove();\n      }, () => {}, component, initialUpdate);\n    }\n  }\n\n  function registerListener(component, el, event, modifiers, expression, extraVars = {}) {\n    const options = {\n      passive: modifiers.includes('passive')\n    };\n\n    if (modifiers.includes('camel')) {\n      event = camelCase(event);\n    }\n\n    let handler, listenerTarget;\n\n    if (modifiers.includes('away')) {\n      listenerTarget = document;\n\n      handler = e => {\n        // Don't do anything if the click came from the element or within it.\n        if (el.contains(e.target)) return; // Don't do anything if this element isn't currently visible.\n\n        if (el.offsetWidth < 1 && el.offsetHeight < 1) return; // Now that we are sure the element is visible, AND the click\n        // is from outside it, let's run the expression.\n\n        runListenerHandler(component, expression, e, extraVars);\n\n        if (modifiers.includes('once')) {\n          document.removeEventListener(event, handler, options);\n        }\n      };\n    } else {\n      listenerTarget = modifiers.includes('window') ? window : modifiers.includes('document') ? document : el;\n\n      handler = e => {\n        // Remove this global event handler if the element that declared it\n        // has been removed. It's now stale.\n        if (listenerTarget === window || listenerTarget === document) {\n          if (!document.body.contains(el)) {\n            listenerTarget.removeEventListener(event, handler, options);\n            return;\n          }\n        }\n\n        if (isKeyEvent(event)) {\n          if (isListeningForASpecificKeyThatHasntBeenPressed(e, modifiers)) {\n            return;\n          }\n        }\n\n        if (modifiers.includes('prevent')) e.preventDefault();\n        if (modifiers.includes('stop')) e.stopPropagation(); // If the .self modifier isn't present, or if it is present and\n        // the target element matches the element we are registering the\n        // event on, run the handler\n\n        if (!modifiers.includes('self') || e.target === el) {\n          const returnValue = runListenerHandler(component, expression, e, extraVars);\n          returnValue.then(value => {\n            if (value === false) {\n              e.preventDefault();\n            } else {\n              if (modifiers.includes('once')) {\n                listenerTarget.removeEventListener(event, handler, options);\n              }\n            }\n          });\n        }\n      };\n    }\n\n    if (modifiers.includes('debounce')) {\n      let nextModifier = modifiers[modifiers.indexOf('debounce') + 1] || 'invalid-wait';\n      let wait = isNumeric(nextModifier.split('ms')[0]) ? Number(nextModifier.split('ms')[0]) : 250;\n      handler = debounce(handler, wait);\n    }\n\n    listenerTarget.addEventListener(event, handler, options);\n  }\n\n  function runListenerHandler(component, expression, e, extraVars) {\n    return component.evaluateCommandExpression(e.target, expression, () => {\n      return _objectSpread2(_objectSpread2({}, extraVars()), {}, {\n        '$event': e\n      });\n    });\n  }\n\n  function isKeyEvent(event) {\n    return ['keydown', 'keyup'].includes(event);\n  }\n\n  function isListeningForASpecificKeyThatHasntBeenPressed(e, modifiers) {\n    let keyModifiers = modifiers.filter(i => {\n      return !['window', 'document', 'prevent', 'stop'].includes(i);\n    });\n\n    if (keyModifiers.includes('debounce')) {\n      let debounceIndex = keyModifiers.indexOf('debounce');\n      keyModifiers.splice(debounceIndex, isNumeric((keyModifiers[debounceIndex + 1] || 'invalid-wait').split('ms')[0]) ? 2 : 1);\n    } // If no modifier is specified, we'll call it a press.\n\n\n    if (keyModifiers.length === 0) return false; // If one is passed, AND it matches the key pressed, we'll call it a press.\n\n    if (keyModifiers.length === 1 && keyModifiers[0] === keyToModifier(e.key)) return false; // The user is listening for key combinations.\n\n    const systemKeyModifiers = ['ctrl', 'shift', 'alt', 'meta', 'cmd', 'super'];\n    const selectedSystemKeyModifiers = systemKeyModifiers.filter(modifier => keyModifiers.includes(modifier));\n    keyModifiers = keyModifiers.filter(i => !selectedSystemKeyModifiers.includes(i));\n\n    if (selectedSystemKeyModifiers.length > 0) {\n      const activelyPressedKeyModifiers = selectedSystemKeyModifiers.filter(modifier => {\n        // Alias \"cmd\" and \"super\" to \"meta\"\n        if (modifier === 'cmd' || modifier === 'super') modifier = 'meta';\n        return e[`${modifier}Key`];\n      }); // If all the modifiers selected are pressed, ...\n\n      if (activelyPressedKeyModifiers.length === selectedSystemKeyModifiers.length) {\n        // AND the remaining key is pressed as well. It's a press.\n        if (keyModifiers[0] === keyToModifier(e.key)) return false;\n      }\n    } // We'll call it NOT a valid keypress.\n\n\n    return true;\n  }\n\n  function keyToModifier(key) {\n    switch (key) {\n      case '/':\n        return 'slash';\n\n      case ' ':\n      case 'Spacebar':\n        return 'space';\n\n      default:\n        return key && kebabCase(key);\n    }\n  }\n\n  function registerModelListener(component, el, modifiers, expression, extraVars) {\n    // If the element we are binding to is a select, a radio, or checkbox\n    // we'll listen for the change event instead of the \"input\" event.\n    var event = el.tagName.toLowerCase() === 'select' || ['checkbox', 'radio'].includes(el.type) || modifiers.includes('lazy') ? 'change' : 'input';\n    const listenerExpression = `${expression} = rightSideOfExpression($event, ${expression})`;\n    registerListener(component, el, event, modifiers, listenerExpression, () => {\n      return _objectSpread2(_objectSpread2({}, extraVars()), {}, {\n        rightSideOfExpression: generateModelAssignmentFunction(el, modifiers, expression)\n      });\n    });\n  }\n\n  function generateModelAssignmentFunction(el, modifiers, expression) {\n    if (el.type === 'radio') {\n      // Radio buttons only work properly when they share a name attribute.\n      // People might assume we take care of that for them, because\n      // they already set a shared \"x-model\" attribute.\n      if (!el.hasAttribute('name')) el.setAttribute('name', expression);\n    }\n\n    return (event, currentValue) => {\n      // Check for event.detail due to an issue where IE11 handles other events as a CustomEvent.\n      if (event instanceof CustomEvent && event.detail) {\n        return event.detail;\n      } else if (el.type === 'checkbox') {\n        // If the data we are binding to is an array, toggle its value inside the array.\n        if (Array.isArray(currentValue)) {\n          const newValue = modifiers.includes('number') ? safeParseNumber(event.target.value) : event.target.value;\n          return event.target.checked ? currentValue.concat([newValue]) : currentValue.filter(el => !checkedAttrLooseCompare(el, newValue));\n        } else {\n          return event.target.checked;\n        }\n      } else if (el.tagName.toLowerCase() === 'select' && el.multiple) {\n        return modifiers.includes('number') ? Array.from(event.target.selectedOptions).map(option => {\n          const rawValue = option.value || option.text;\n          return safeParseNumber(rawValue);\n        }) : Array.from(event.target.selectedOptions).map(option => {\n          return option.value || option.text;\n        });\n      } else {\n        const rawValue = event.target.value;\n        return modifiers.includes('number') ? safeParseNumber(rawValue) : modifiers.includes('trim') ? rawValue.trim() : rawValue;\n      }\n    };\n  }\n\n  function safeParseNumber(rawValue) {\n    const number = rawValue ? parseFloat(rawValue) : null;\n    return isNumeric(number) ? number : rawValue;\n  }\n\n  /**\n   * Copyright (C) 2017 salesforce.com, inc.\n   */\n  const { isArray } = Array;\n  const { getPrototypeOf, create: ObjectCreate, defineProperty: ObjectDefineProperty, defineProperties: ObjectDefineProperties, isExtensible, getOwnPropertyDescriptor, getOwnPropertyNames, getOwnPropertySymbols, preventExtensions, hasOwnProperty, } = Object;\n  const { push: ArrayPush, concat: ArrayConcat, map: ArrayMap, } = Array.prototype;\n  function isUndefined(obj) {\n      return obj === undefined;\n  }\n  function isFunction(obj) {\n      return typeof obj === 'function';\n  }\n  function isObject(obj) {\n      return typeof obj === 'object';\n  }\n  const proxyToValueMap = new WeakMap();\n  function registerProxy(proxy, value) {\n      proxyToValueMap.set(proxy, value);\n  }\n  const unwrap = (replicaOrAny) => proxyToValueMap.get(replicaOrAny) || replicaOrAny;\n\n  function wrapValue(membrane, value) {\n      return membrane.valueIsObservable(value) ? membrane.getProxy(value) : value;\n  }\n  /**\n   * Unwrap property descriptors will set value on original descriptor\n   * We only need to unwrap if value is specified\n   * @param descriptor external descrpitor provided to define new property on original value\n   */\n  function unwrapDescriptor(descriptor) {\n      if (hasOwnProperty.call(descriptor, 'value')) {\n          descriptor.value = unwrap(descriptor.value);\n      }\n      return descriptor;\n  }\n  function lockShadowTarget(membrane, shadowTarget, originalTarget) {\n      const targetKeys = ArrayConcat.call(getOwnPropertyNames(originalTarget), getOwnPropertySymbols(originalTarget));\n      targetKeys.forEach((key) => {\n          let descriptor = getOwnPropertyDescriptor(originalTarget, key);\n          // We do not need to wrap the descriptor if configurable\n          // Because we can deal with wrapping it when user goes through\n          // Get own property descriptor. There is also a chance that this descriptor\n          // could change sometime in the future, so we can defer wrapping\n          // until we need to\n          if (!descriptor.configurable) {\n              descriptor = wrapDescriptor(membrane, descriptor, wrapValue);\n          }\n          ObjectDefineProperty(shadowTarget, key, descriptor);\n      });\n      preventExtensions(shadowTarget);\n  }\n  class ReactiveProxyHandler {\n      constructor(membrane, value) {\n          this.originalTarget = value;\n          this.membrane = membrane;\n      }\n      get(shadowTarget, key) {\n          const { originalTarget, membrane } = this;\n          const value = originalTarget[key];\n          const { valueObserved } = membrane;\n          valueObserved(originalTarget, key);\n          return membrane.getProxy(value);\n      }\n      set(shadowTarget, key, value) {\n          const { originalTarget, membrane: { valueMutated } } = this;\n          const oldValue = originalTarget[key];\n          if (oldValue !== value) {\n              originalTarget[key] = value;\n              valueMutated(originalTarget, key);\n          }\n          else if (key === 'length' && isArray(originalTarget)) {\n              // fix for issue #236: push will add the new index, and by the time length\n              // is updated, the internal length is already equal to the new length value\n              // therefore, the oldValue is equal to the value. This is the forking logic\n              // to support this use case.\n              valueMutated(originalTarget, key);\n          }\n          return true;\n      }\n      deleteProperty(shadowTarget, key) {\n          const { originalTarget, membrane: { valueMutated } } = this;\n          delete originalTarget[key];\n          valueMutated(originalTarget, key);\n          return true;\n      }\n      apply(shadowTarget, thisArg, argArray) {\n          /* No op */\n      }\n      construct(target, argArray, newTarget) {\n          /* No op */\n      }\n      has(shadowTarget, key) {\n          const { originalTarget, membrane: { valueObserved } } = this;\n          valueObserved(originalTarget, key);\n          return key in originalTarget;\n      }\n      ownKeys(shadowTarget) {\n          const { originalTarget } = this;\n          return ArrayConcat.call(getOwnPropertyNames(originalTarget), getOwnPropertySymbols(originalTarget));\n      }\n      isExtensible(shadowTarget) {\n          const shadowIsExtensible = isExtensible(shadowTarget);\n          if (!shadowIsExtensible) {\n              return shadowIsExtensible;\n          }\n          const { originalTarget, membrane } = this;\n          const targetIsExtensible = isExtensible(originalTarget);\n          if (!targetIsExtensible) {\n              lockShadowTarget(membrane, shadowTarget, originalTarget);\n          }\n          return targetIsExtensible;\n      }\n      setPrototypeOf(shadowTarget, prototype) {\n      }\n      getPrototypeOf(shadowTarget) {\n          const { originalTarget } = this;\n          return getPrototypeOf(originalTarget);\n      }\n      getOwnPropertyDescriptor(shadowTarget, key) {\n          const { originalTarget, membrane } = this;\n          const { valueObserved } = this.membrane;\n          // keys looked up via hasOwnProperty need to be reactive\n          valueObserved(originalTarget, key);\n          let desc = getOwnPropertyDescriptor(originalTarget, key);\n          if (isUndefined(desc)) {\n              return desc;\n          }\n          const shadowDescriptor = getOwnPropertyDescriptor(shadowTarget, key);\n          if (!isUndefined(shadowDescriptor)) {\n              return shadowDescriptor;\n          }\n          // Note: by accessing the descriptor, the key is marked as observed\n          // but access to the value, setter or getter (if available) cannot observe\n          // mutations, just like regular methods, in which case we just do nothing.\n          desc = wrapDescriptor(membrane, desc, wrapValue);\n          if (!desc.configurable) {\n              // If descriptor from original target is not configurable,\n              // We must copy the wrapped descriptor over to the shadow target.\n              // Otherwise, proxy will throw an invariant error.\n              // This is our last chance to lock the value.\n              // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler/getOwnPropertyDescriptor#Invariants\n              ObjectDefineProperty(shadowTarget, key, desc);\n          }\n          return desc;\n      }\n      preventExtensions(shadowTarget) {\n          const { originalTarget, membrane } = this;\n          lockShadowTarget(membrane, shadowTarget, originalTarget);\n          preventExtensions(originalTarget);\n          return true;\n      }\n      defineProperty(shadowTarget, key, descriptor) {\n          const { originalTarget, membrane } = this;\n          const { valueMutated } = membrane;\n          const { configurable } = descriptor;\n          // We have to check for value in descriptor\n          // because Object.freeze(proxy) calls this method\n          // with only { configurable: false, writeable: false }\n          // Additionally, method will only be called with writeable:false\n          // if the descriptor has a value, as opposed to getter/setter\n          // So we can just check if writable is present and then see if\n          // value is present. This eliminates getter and setter descriptors\n          if (hasOwnProperty.call(descriptor, 'writable') && !hasOwnProperty.call(descriptor, 'value')) {\n              const originalDescriptor = getOwnPropertyDescriptor(originalTarget, key);\n              descriptor.value = originalDescriptor.value;\n          }\n          ObjectDefineProperty(originalTarget, key, unwrapDescriptor(descriptor));\n          if (configurable === false) {\n              ObjectDefineProperty(shadowTarget, key, wrapDescriptor(membrane, descriptor, wrapValue));\n          }\n          valueMutated(originalTarget, key);\n          return true;\n      }\n  }\n\n  function wrapReadOnlyValue(membrane, value) {\n      return membrane.valueIsObservable(value) ? membrane.getReadOnlyProxy(value) : value;\n  }\n  class ReadOnlyHandler {\n      constructor(membrane, value) {\n          this.originalTarget = value;\n          this.membrane = membrane;\n      }\n      get(shadowTarget, key) {\n          const { membrane, originalTarget } = this;\n          const value = originalTarget[key];\n          const { valueObserved } = membrane;\n          valueObserved(originalTarget, key);\n          return membrane.getReadOnlyProxy(value);\n      }\n      set(shadowTarget, key, value) {\n          return false;\n      }\n      deleteProperty(shadowTarget, key) {\n          return false;\n      }\n      apply(shadowTarget, thisArg, argArray) {\n          /* No op */\n      }\n      construct(target, argArray, newTarget) {\n          /* No op */\n      }\n      has(shadowTarget, key) {\n          const { originalTarget, membrane: { valueObserved } } = this;\n          valueObserved(originalTarget, key);\n          return key in originalTarget;\n      }\n      ownKeys(shadowTarget) {\n          const { originalTarget } = this;\n          return ArrayConcat.call(getOwnPropertyNames(originalTarget), getOwnPropertySymbols(originalTarget));\n      }\n      setPrototypeOf(shadowTarget, prototype) {\n      }\n      getOwnPropertyDescriptor(shadowTarget, key) {\n          const { originalTarget, membrane } = this;\n          const { valueObserved } = membrane;\n          // keys looked up via hasOwnProperty need to be reactive\n          valueObserved(originalTarget, key);\n          let desc = getOwnPropertyDescriptor(originalTarget, key);\n          if (isUndefined(desc)) {\n              return desc;\n          }\n          const shadowDescriptor = getOwnPropertyDescriptor(shadowTarget, key);\n          if (!isUndefined(shadowDescriptor)) {\n              return shadowDescriptor;\n          }\n          // Note: by accessing the descriptor, the key is marked as observed\n          // but access to the value or getter (if available) cannot be observed,\n          // just like regular methods, in which case we just do nothing.\n          desc = wrapDescriptor(membrane, desc, wrapReadOnlyValue);\n          if (hasOwnProperty.call(desc, 'set')) {\n              desc.set = undefined; // readOnly membrane does not allow setters\n          }\n          if (!desc.configurable) {\n              // If descriptor from original target is not configurable,\n              // We must copy the wrapped descriptor over to the shadow target.\n              // Otherwise, proxy will throw an invariant error.\n              // This is our last chance to lock the value.\n              // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler/getOwnPropertyDescriptor#Invariants\n              ObjectDefineProperty(shadowTarget, key, desc);\n          }\n          return desc;\n      }\n      preventExtensions(shadowTarget) {\n          return false;\n      }\n      defineProperty(shadowTarget, key, descriptor) {\n          return false;\n      }\n  }\n  function createShadowTarget(value) {\n      let shadowTarget = undefined;\n      if (isArray(value)) {\n          shadowTarget = [];\n      }\n      else if (isObject(value)) {\n          shadowTarget = {};\n      }\n      return shadowTarget;\n  }\n  const ObjectDotPrototype = Object.prototype;\n  function defaultValueIsObservable(value) {\n      // intentionally checking for null\n      if (value === null) {\n          return false;\n      }\n      // treat all non-object types, including undefined, as non-observable values\n      if (typeof value !== 'object') {\n          return false;\n      }\n      if (isArray(value)) {\n          return true;\n      }\n      const proto = getPrototypeOf(value);\n      return (proto === ObjectDotPrototype || proto === null || getPrototypeOf(proto) === null);\n  }\n  const defaultValueObserved = (obj, key) => {\n      /* do nothing */\n  };\n  const defaultValueMutated = (obj, key) => {\n      /* do nothing */\n  };\n  const defaultValueDistortion = (value) => value;\n  function wrapDescriptor(membrane, descriptor, getValue) {\n      const { set, get } = descriptor;\n      if (hasOwnProperty.call(descriptor, 'value')) {\n          descriptor.value = getValue(membrane, descriptor.value);\n      }\n      else {\n          if (!isUndefined(get)) {\n              descriptor.get = function () {\n                  // invoking the original getter with the original target\n                  return getValue(membrane, get.call(unwrap(this)));\n              };\n          }\n          if (!isUndefined(set)) {\n              descriptor.set = function (value) {\n                  // At this point we don't have a clear indication of whether\n                  // or not a valid mutation will occur, we don't have the key,\n                  // and we are not sure why and how they are invoking this setter.\n                  // Nevertheless we preserve the original semantics by invoking the\n                  // original setter with the original target and the unwrapped value\n                  set.call(unwrap(this), membrane.unwrapProxy(value));\n              };\n          }\n      }\n      return descriptor;\n  }\n  class ReactiveMembrane {\n      constructor(options) {\n          this.valueDistortion = defaultValueDistortion;\n          this.valueMutated = defaultValueMutated;\n          this.valueObserved = defaultValueObserved;\n          this.valueIsObservable = defaultValueIsObservable;\n          this.objectGraph = new WeakMap();\n          if (!isUndefined(options)) {\n              const { valueDistortion, valueMutated, valueObserved, valueIsObservable } = options;\n              this.valueDistortion = isFunction(valueDistortion) ? valueDistortion : defaultValueDistortion;\n              this.valueMutated = isFunction(valueMutated) ? valueMutated : defaultValueMutated;\n              this.valueObserved = isFunction(valueObserved) ? valueObserved : defaultValueObserved;\n              this.valueIsObservable = isFunction(valueIsObservable) ? valueIsObservable : defaultValueIsObservable;\n          }\n      }\n      getProxy(value) {\n          const unwrappedValue = unwrap(value);\n          const distorted = this.valueDistortion(unwrappedValue);\n          if (this.valueIsObservable(distorted)) {\n              const o = this.getReactiveState(unwrappedValue, distorted);\n              // when trying to extract the writable version of a readonly\n              // we return the readonly.\n              return o.readOnly === value ? value : o.reactive;\n          }\n          return distorted;\n      }\n      getReadOnlyProxy(value) {\n          value = unwrap(value);\n          const distorted = this.valueDistortion(value);\n          if (this.valueIsObservable(distorted)) {\n              return this.getReactiveState(value, distorted).readOnly;\n          }\n          return distorted;\n      }\n      unwrapProxy(p) {\n          return unwrap(p);\n      }\n      getReactiveState(value, distortedValue) {\n          const { objectGraph, } = this;\n          let reactiveState = objectGraph.get(distortedValue);\n          if (reactiveState) {\n              return reactiveState;\n          }\n          const membrane = this;\n          reactiveState = {\n              get reactive() {\n                  const reactiveHandler = new ReactiveProxyHandler(membrane, distortedValue);\n                  // caching the reactive proxy after the first time it is accessed\n                  const proxy = new Proxy(createShadowTarget(distortedValue), reactiveHandler);\n                  registerProxy(proxy, value);\n                  ObjectDefineProperty(this, 'reactive', { value: proxy });\n                  return proxy;\n              },\n              get readOnly() {\n                  const readOnlyHandler = new ReadOnlyHandler(membrane, distortedValue);\n                  // caching the readOnly proxy after the first time it is accessed\n                  const proxy = new Proxy(createShadowTarget(distortedValue), readOnlyHandler);\n                  registerProxy(proxy, value);\n                  ObjectDefineProperty(this, 'readOnly', { value: proxy });\n                  return proxy;\n              }\n          };\n          objectGraph.set(distortedValue, reactiveState);\n          return reactiveState;\n      }\n  }\n  /** version: 0.26.0 */\n\n  function wrap(data, mutationCallback) {\n\n    let membrane = new ReactiveMembrane({\n      valueMutated(target, key) {\n        mutationCallback(target, key);\n      }\n\n    });\n    return {\n      data: membrane.getProxy(data),\n      membrane: membrane\n    };\n  }\n  function unwrap$1(membrane, observable) {\n    let unwrappedData = membrane.unwrapProxy(observable);\n    let copy = {};\n    Object.keys(unwrappedData).forEach(key => {\n      if (['$el', '$refs', '$nextTick', '$watch'].includes(key)) return;\n      copy[key] = unwrappedData[key];\n    });\n    return copy;\n  }\n\n  class Component {\n    constructor(el, componentForClone = null) {\n      this.$el = el;\n      const dataAttr = this.$el.getAttribute('x-data');\n      const dataExpression = dataAttr === '' ? '{}' : dataAttr;\n      const initExpression = this.$el.getAttribute('x-init');\n      let dataExtras = {\n        $el: this.$el\n      };\n      let canonicalComponentElementReference = componentForClone ? componentForClone.$el : this.$el;\n      Object.entries(Alpine.magicProperties).forEach(([name, callback]) => {\n        Object.defineProperty(dataExtras, `$${name}`, {\n          get: function get() {\n            return callback(canonicalComponentElementReference);\n          }\n        });\n      });\n      this.unobservedData = componentForClone ? componentForClone.getUnobservedData() : saferEval(el, dataExpression, dataExtras);\n      // Construct a Proxy-based observable. This will be used to handle reactivity.\n\n      let {\n        membrane,\n        data\n      } = this.wrapDataInObservable(this.unobservedData);\n      this.$data = data;\n      this.membrane = membrane; // After making user-supplied data methods reactive, we can now add\n      // our magic properties to the original data for access.\n\n      this.unobservedData.$el = this.$el;\n      this.unobservedData.$refs = this.getRefsProxy();\n      this.nextTickStack = [];\n\n      this.unobservedData.$nextTick = callback => {\n        this.nextTickStack.push(callback);\n      };\n\n      this.watchers = {};\n\n      this.unobservedData.$watch = (property, callback) => {\n        if (!this.watchers[property]) this.watchers[property] = [];\n        this.watchers[property].push(callback);\n      };\n      /* MODERN-ONLY:START */\n      // We remove this piece of code from the legacy build.\n      // In IE11, we have already defined our helpers at this point.\n      // Register custom magic properties.\n\n\n      Object.entries(Alpine.magicProperties).forEach(([name, callback]) => {\n        Object.defineProperty(this.unobservedData, `$${name}`, {\n          get: function get() {\n            return callback(canonicalComponentElementReference, this.$el);\n          }\n        });\n      });\n      /* MODERN-ONLY:END */\n\n      this.showDirectiveStack = [];\n      this.showDirectiveLastElement;\n      componentForClone || Alpine.onBeforeComponentInitializeds.forEach(callback => callback(this));\n      var initReturnedCallback; // If x-init is present AND we aren't cloning (skip x-init on clone)\n\n      if (initExpression && !componentForClone) {\n        // We want to allow data manipulation, but not trigger DOM updates just yet.\n        // We haven't even initialized the elements with their Alpine bindings. I mean c'mon.\n        this.pauseReactivity = true;\n        initReturnedCallback = this.evaluateReturnExpression(this.$el, initExpression);\n        this.pauseReactivity = false;\n      } // Register all our listeners and set all our attribute bindings.\n      // If we're cloning a component, the third parameter ensures no duplicate\n      // event listeners are registered (the mutation observer will take care of them)\n\n\n      this.initializeElements(this.$el, () => {}, componentForClone); // Use mutation observer to detect new elements being added within this component at run-time.\n      // Alpine's just so darn flexible amirite?\n\n      this.listenForNewElementsToInitialize();\n\n      if (typeof initReturnedCallback === 'function') {\n        // Run the callback returned from the \"x-init\" hook to allow the user to do stuff after\n        // Alpine's got it's grubby little paws all over everything.\n        initReturnedCallback.call(this.$data);\n      }\n\n      componentForClone || setTimeout(() => {\n        Alpine.onComponentInitializeds.forEach(callback => callback(this));\n      }, 0);\n    }\n\n    getUnobservedData() {\n      return unwrap$1(this.membrane, this.$data);\n    }\n\n    wrapDataInObservable(data) {\n      var self = this;\n      let updateDom = debounce(function () {\n        self.updateElements(self.$el);\n      }, 0);\n      return wrap(data, (target, key) => {\n        if (self.watchers[key]) {\n          // If there's a watcher for this specific key, run it.\n          self.watchers[key].forEach(callback => callback(target[key]));\n        } else if (Array.isArray(target)) {\n          // Arrays are special cases, if any of the items change, we consider the array as mutated.\n          Object.keys(self.watchers).forEach(fullDotNotationKey => {\n            let dotNotationParts = fullDotNotationKey.split('.'); // Ignore length mutations since they would result in duplicate calls.\n            // For example, when calling push, we would get a mutation for the item's key\n            // and a second mutation for the length property.\n\n            if (key === 'length') return;\n            dotNotationParts.reduce((comparisonData, part) => {\n              if (Object.is(target, comparisonData[part])) {\n                self.watchers[fullDotNotationKey].forEach(callback => callback(target));\n              }\n\n              return comparisonData[part];\n            }, self.unobservedData);\n          });\n        } else {\n          // Let's walk through the watchers with \"dot-notation\" (foo.bar) and see\n          // if this mutation fits any of them.\n          Object.keys(self.watchers).filter(i => i.includes('.')).forEach(fullDotNotationKey => {\n            let dotNotationParts = fullDotNotationKey.split('.'); // If this dot-notation watcher's last \"part\" doesn't match the current\n            // key, then skip it early for performance reasons.\n\n            if (key !== dotNotationParts[dotNotationParts.length - 1]) return; // Now, walk through the dot-notation \"parts\" recursively to find\n            // a match, and call the watcher if one's found.\n\n            dotNotationParts.reduce((comparisonData, part) => {\n              if (Object.is(target, comparisonData)) {\n                // Run the watchers.\n                self.watchers[fullDotNotationKey].forEach(callback => callback(target[key]));\n              }\n\n              return comparisonData[part];\n            }, self.unobservedData);\n          });\n        } // Don't react to data changes for cases like the `x-created` hook.\n\n\n        if (self.pauseReactivity) return;\n        updateDom();\n      });\n    }\n\n    walkAndSkipNestedComponents(el, callback, initializeComponentCallback = () => {}) {\n      walk(el, el => {\n        // We've hit a component.\n        if (el.hasAttribute('x-data')) {\n          // If it's not the current one.\n          if (!el.isSameNode(this.$el)) {\n            // Initialize it if it's not.\n            if (!el.__x) initializeComponentCallback(el); // Now we'll let that sub-component deal with itself.\n\n            return false;\n          }\n        }\n\n        return callback(el);\n      });\n    }\n\n    initializeElements(rootEl, extraVars = () => {}, componentForClone = false) {\n      this.walkAndSkipNestedComponents(rootEl, el => {\n        // Don't touch spawns from for loop\n        if (el.__x_for_key !== undefined) return false; // Don't touch spawns from if directives\n\n        if (el.__x_inserted_me !== undefined) return false;\n        this.initializeElement(el, extraVars, componentForClone ? false : true);\n      }, el => {\n        if (!componentForClone) el.__x = new Component(el);\n      });\n      this.executeAndClearRemainingShowDirectiveStack();\n      this.executeAndClearNextTickStack(rootEl);\n    }\n\n    initializeElement(el, extraVars, shouldRegisterListeners = true) {\n      // To support class attribute merging, we have to know what the element's\n      // original class attribute looked like for reference.\n      if (el.hasAttribute('class') && getXAttrs(el, this).length > 0) {\n        el.__x_original_classes = convertClassStringToArray(el.getAttribute('class'));\n      }\n\n      shouldRegisterListeners && this.registerListeners(el, extraVars);\n      this.resolveBoundAttributes(el, true, extraVars);\n    }\n\n    updateElements(rootEl, extraVars = () => {}) {\n      this.walkAndSkipNestedComponents(rootEl, el => {\n        // Don't touch spawns from for loop (and check if the root is actually a for loop in a parent, don't skip it.)\n        if (el.__x_for_key !== undefined && !el.isSameNode(this.$el)) return false;\n        this.updateElement(el, extraVars);\n      }, el => {\n        el.__x = new Component(el);\n      });\n      this.executeAndClearRemainingShowDirectiveStack();\n      this.executeAndClearNextTickStack(rootEl);\n    }\n\n    executeAndClearNextTickStack(el) {\n      // Skip spawns from alpine directives\n      if (el === this.$el && this.nextTickStack.length > 0) {\n        // We run the tick stack after the next frame to allow any\n        // running transitions to pass the initial show stage.\n        requestAnimationFrame(() => {\n          while (this.nextTickStack.length > 0) {\n            this.nextTickStack.shift()();\n          }\n        });\n      }\n    }\n\n    executeAndClearRemainingShowDirectiveStack() {\n      // The goal here is to start all the x-show transitions\n      // and build a nested promise chain so that elements\n      // only hide when the children are finished hiding.\n      this.showDirectiveStack.reverse().map(handler => {\n        return new Promise((resolve, reject) => {\n          handler(resolve, reject);\n        });\n      }).reduce((promiseChain, promise) => {\n        return promiseChain.then(() => {\n          return promise.then(finishElement => {\n            finishElement();\n          });\n        });\n      }, Promise.resolve(() => {})).catch(e => {\n        if (e !== TRANSITION_CANCELLED) throw e;\n      }); // We've processed the handler stack. let's clear it.\n\n      this.showDirectiveStack = [];\n      this.showDirectiveLastElement = undefined;\n    }\n\n    updateElement(el, extraVars) {\n      this.resolveBoundAttributes(el, false, extraVars);\n    }\n\n    registerListeners(el, extraVars) {\n      getXAttrs(el, this).forEach(({\n        type,\n        value,\n        modifiers,\n        expression\n      }) => {\n        switch (type) {\n          case 'on':\n            registerListener(this, el, value, modifiers, expression, extraVars);\n            break;\n\n          case 'model':\n            registerModelListener(this, el, modifiers, expression, extraVars);\n            break;\n        }\n      });\n    }\n\n    resolveBoundAttributes(el, initialUpdate = false, extraVars) {\n      let attrs = getXAttrs(el, this);\n      attrs.forEach(({\n        type,\n        value,\n        modifiers,\n        expression\n      }) => {\n        switch (type) {\n          case 'model':\n            handleAttributeBindingDirective(this, el, 'value', expression, extraVars, type, modifiers);\n            break;\n\n          case 'bind':\n            // The :key binding on an x-for is special, ignore it.\n            if (el.tagName.toLowerCase() === 'template' && value === 'key') return;\n            handleAttributeBindingDirective(this, el, value, expression, extraVars, type, modifiers);\n            break;\n\n          case 'text':\n            var output = this.evaluateReturnExpression(el, expression, extraVars);\n            handleTextDirective(el, output, expression);\n            break;\n\n          case 'html':\n            handleHtmlDirective(this, el, expression, extraVars);\n            break;\n\n          case 'show':\n            var output = this.evaluateReturnExpression(el, expression, extraVars);\n            handleShowDirective(this, el, output, modifiers, initialUpdate);\n            break;\n\n          case 'if':\n            // If this element also has x-for on it, don't process x-if.\n            // We will let the \"x-for\" directive handle the \"if\"ing.\n            if (attrs.some(i => i.type === 'for')) return;\n            var output = this.evaluateReturnExpression(el, expression, extraVars);\n            handleIfDirective(this, el, output, initialUpdate, extraVars);\n            break;\n\n          case 'for':\n            handleForDirective(this, el, expression, initialUpdate, extraVars);\n            break;\n\n          case 'cloak':\n            el.removeAttribute('x-cloak');\n            break;\n        }\n      });\n    }\n\n    evaluateReturnExpression(el, expression, extraVars = () => {}) {\n      return saferEval(el, expression, this.$data, _objectSpread2(_objectSpread2({}, extraVars()), {}, {\n        $dispatch: this.getDispatchFunction(el)\n      }));\n    }\n\n    evaluateCommandExpression(el, expression, extraVars = () => {}) {\n      return saferEvalNoReturn(el, expression, this.$data, _objectSpread2(_objectSpread2({}, extraVars()), {}, {\n        $dispatch: this.getDispatchFunction(el)\n      }));\n    }\n\n    getDispatchFunction(el) {\n      return (event, detail = {}) => {\n        el.dispatchEvent(new CustomEvent(event, {\n          detail,\n          bubbles: true\n        }));\n      };\n    }\n\n    listenForNewElementsToInitialize() {\n      const targetNode = this.$el;\n      const observerOptions = {\n        childList: true,\n        attributes: true,\n        subtree: true\n      };\n      const observer = new MutationObserver(mutations => {\n        for (let i = 0; i < mutations.length; i++) {\n          // Filter out mutations triggered from child components.\n          const closestParentComponent = mutations[i].target.closest('[x-data]');\n          if (!(closestParentComponent && closestParentComponent.isSameNode(this.$el))) continue;\n\n          if (mutations[i].type === 'attributes' && mutations[i].attributeName === 'x-data') {\n            const xAttr = mutations[i].target.getAttribute('x-data') || '{}';\n            const rawData = saferEval(this.$el, xAttr, {\n              $el: this.$el\n            });\n            Object.keys(rawData).forEach(key => {\n              if (this.$data[key] !== rawData[key]) {\n                this.$data[key] = rawData[key];\n              }\n            });\n          }\n\n          if (mutations[i].addedNodes.length > 0) {\n            mutations[i].addedNodes.forEach(node => {\n              if (node.nodeType !== 1 || node.__x_inserted_me) return;\n\n              if (node.matches('[x-data]') && !node.__x) {\n                node.__x = new Component(node);\n                return;\n              }\n\n              this.initializeElements(node);\n            });\n          }\n        }\n      });\n      observer.observe(targetNode, observerOptions);\n    }\n\n    getRefsProxy() {\n      var self = this;\n      var refObj = {};\n      // One of the goals of this is to not hold elements in memory, but rather re-evaluate\n      // the DOM when the system needs something from it. This way, the framework is flexible and\n      // friendly to outside DOM changes from libraries like Vue/Livewire.\n      // For this reason, I'm using an \"on-demand\" proxy to fake a \"$refs\" object.\n\n      return new Proxy(refObj, {\n        get(object, property) {\n          if (property === '$isAlpineProxy') return true;\n          var ref; // We can't just query the DOM because it's hard to filter out refs in\n          // nested components.\n\n          self.walkAndSkipNestedComponents(self.$el, el => {\n            if (el.hasAttribute('x-ref') && el.getAttribute('x-ref') === property) {\n              ref = el;\n            }\n          });\n          return ref;\n        }\n\n      });\n    }\n\n  }\n\n  const Alpine = {\n    version: \"2.8.2\",\n    pauseMutationObserver: false,\n    magicProperties: {},\n    onComponentInitializeds: [],\n    onBeforeComponentInitializeds: [],\n    ignoreFocusedForValueBinding: false,\n    start: async function start() {\n      if (!isTesting()) {\n        await domReady();\n      }\n\n      this.discoverComponents(el => {\n        this.initializeComponent(el);\n      }); // It's easier and more performant to just support Turbolinks than listen\n      // to MutationObserver mutations at the document level.\n\n      document.addEventListener(\"turbolinks:load\", () => {\n        this.discoverUninitializedComponents(el => {\n          this.initializeComponent(el);\n        });\n      });\n      this.listenForNewUninitializedComponentsAtRunTime();\n    },\n    discoverComponents: function discoverComponents(callback) {\n      const rootEls = document.querySelectorAll('[x-data]');\n      rootEls.forEach(rootEl => {\n        callback(rootEl);\n      });\n    },\n    discoverUninitializedComponents: function discoverUninitializedComponents(callback, el = null) {\n      const rootEls = (el || document).querySelectorAll('[x-data]');\n      Array.from(rootEls).filter(el => el.__x === undefined).forEach(rootEl => {\n        callback(rootEl);\n      });\n    },\n    listenForNewUninitializedComponentsAtRunTime: function listenForNewUninitializedComponentsAtRunTime() {\n      const targetNode = document.querySelector('body');\n      const observerOptions = {\n        childList: true,\n        attributes: true,\n        subtree: true\n      };\n      const observer = new MutationObserver(mutations => {\n        if (this.pauseMutationObserver) return;\n\n        for (let i = 0; i < mutations.length; i++) {\n          if (mutations[i].addedNodes.length > 0) {\n            mutations[i].addedNodes.forEach(node => {\n              // Discard non-element nodes (like line-breaks)\n              if (node.nodeType !== 1) return; // Discard any changes happening within an existing component.\n              // They will take care of themselves.\n\n              if (node.parentElement && node.parentElement.closest('[x-data]')) return;\n              this.discoverUninitializedComponents(el => {\n                this.initializeComponent(el);\n              }, node.parentElement);\n            });\n          }\n        }\n      });\n      observer.observe(targetNode, observerOptions);\n    },\n    initializeComponent: function initializeComponent(el) {\n      if (!el.__x) {\n        // Wrap in a try/catch so that we don't prevent other components\n        // from initializing when one component contains an error.\n        try {\n          el.__x = new Component(el);\n        } catch (error) {\n          setTimeout(() => {\n            throw error;\n          }, 0);\n        }\n      }\n    },\n    clone: function clone(component, newEl) {\n      if (!newEl.__x) {\n        newEl.__x = new Component(newEl, component);\n      }\n    },\n    addMagicProperty: function addMagicProperty(name, callback) {\n      this.magicProperties[name] = callback;\n    },\n    onComponentInitialized: function onComponentInitialized(callback) {\n      this.onComponentInitializeds.push(callback);\n    },\n    onBeforeComponentInitialized: function onBeforeComponentInitialized(callback) {\n      this.onBeforeComponentInitializeds.push(callback);\n    }\n  };\n\n  if (!isTesting()) {\n    window.Alpine = Alpine;\n\n    if (window.deferLoadingAlpine) {\n      window.deferLoadingAlpine(function () {\n        window.Alpine.start();\n      });\n    } else {\n      window.Alpine.start();\n    }\n  }\n\n  return Alpine;\n\n})));\n"]}