PageSourceSearch

https://europeanforum.museum/livewire/livewire.js?id=07f22875

js europeanforum.museum collected 2026-10-02 10:25:23 UTC 335,813 bytes, 9,905 lines download raw bytes

1(() => {
2  var __create = Object.create;
3  var __defProp = Object.defineProperty;
4  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5  var __getOwnPropNames = Object.getOwnPropertyNames;
6  var __getProtoOf = Object.getPrototypeOf;
7  var __hasOwnProp = Object.prototype.hasOwnProperty;
8  var __commonJS = (cb, mod) => function __require() {
9    return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
10  };
11  var __copyProps = (to, from, except, desc) => {
12    if (from && typeof from === "object" || typeof from === "function") {
13      for (let key of __getOwnPropNames(from))
14        if (!__hasOwnProp.call(to, key) && key !== except)
15          __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16    }
17    return to;
18  };
19  var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod));
20
21  
vendor: 10,237 bytes, lines 21-298
21// node_modules/nprogress/nprogress.js
22  var require_nprogress = __commonJS({
23    "node_modules/nprogress/nprogress.js"(exports, module) {
24      (function(root, factory) {
25        if (typeof define === "function" && define.amd) {
26          define(factory);
27        } else if (typeof exports === "object") {
28          module.exports = factory();
29        } else {
30          root.NProgress = factory();
31        }
32      })(exports, function() {
33        var NProgress2 = {};
34        NProgress2.version = "0.2.0";
35        var Settings = NProgress2.settings = {
36          minimum: 0.08,
37          easing: "ease",
38          positionUsing: "",
39          speed: 200,
40          trickle: true,
41          trickleRate: 0.02,
42          trickleSpeed: 800,
43          showSpinner: true,
44          barSelector: '[role="bar"]',
45          spinnerSelector: '[role="spinner"]',
46          parent: "body",
47          template: '<div class="bar" role="bar"><div class="peg"></div></div><div class="spinner" role="spinner"><div class="spinner-icon"></div></div>'
48        };
49        NProgress2.configure = function(options) {
50          var key, value;
51          for (key in options) {
52            value = options[key];
53            if (value !== void 0 && options.hasOwnProperty(key))
54              Settings[key] = value;
55          }
56          return this;
57        };
58        NProgress2.status = null;
59        NProgress2.set = function(n) {
60          var started2 = NProgress2.isStarted();
61          n = clamp2(n, Settings.minimum, 1);
62          NProgress2.status = n === 1 ? null : n;
63          var progress = NProgress2.render(!started2), bar = progress.querySelector(Settings.barSelector), speed = Settings.speed, ease = Settings.easing;
64          progress.offsetWidth;
65          queue2(function(next) {
66            if (Settings.positionUsing === "")
67              Settings.positionUsing = NProgress2.getPositioningCSS();
68            css(bar, barPositionCSS(n, speed, ease));
69            if (n === 1) {
70              css(progress, {
71                transition: "none",
72                opacity: 1
73              });
74              progress.offsetWidth;
75              setTimeout(function() {
76                css(progress, {
77                  transition: "all " + speed + "ms linear",
78                  opacity: 0
79                });
80                setTimeout(function() {
81                  NProgress2.remove();
82                  next();
83                }, speed);
84              }, speed);
85            } else {
86              setTimeout(next, speed);
87            }
88          });
89          return this;
90        };
91        NProgress2.isStarted = function() {
92          return typeof NProgress2.status === "number";
93        };
94        NProgress2.start = function() {
95          if (!NProgress2.status)
96            NProgress2.set(0);
97          var work = function() {
98            setTimeout(function() {
99              if (!NProgress2.status)
100                return;
101              NProgress2.trickle();
102              work();
103            }, Settings.trickleSpeed);
104          };
105          if (Settings.trickle)
106            work();
107          return this;
108        };
109        NProgress2.done = function(force) {
110          if (!force && !NProgress2.status)
111            return this;
112          return NProgress2.inc(0.3 + 0.5 * Math.random()).set(1);
113        };
114        NProgress2.inc = function(amount) {
115          var n = NProgress2.status;
116          if (!n) {
117            return NProgress2.start();
118          } else {
119            if (typeof amount !== "number") {
120              amount = (1 - n) * clamp2(Math.random() * n, 0.1, 0.95);
121            }
122            n = clamp2(n + amount, 0, 0.994);
123            return NProgress2.set(n);
124          }
125        };
126        NProgress2.trickle = function() {
127          return NProgress2.inc(Math.random() * Settings.trickleRate);
128        };
129        (function() {
130          var initial = 0, current = 0;
131          NProgress2.promise = function($promise) {
132            if (!$promise || $promise.state() === "resolved") {
133              return this;
134            }
135            if (current === 0) {
136              NProgress2.start();
137            }
138            initial++;
139            current++;
140            $promise.always(function() {
141              current--;
142              if (current === 0) {
143                initial = 0;
144                NProgress2.done();
145              } else {
146                NProgress2.set((initial - current) / initial);
147              }
148            });
149            return this;
150          };
151        })();
152        NProgress2.render = function(fromStart) {
153          if (NProgress2.isRendered())
154            return document.getElementById("nprogress");
155          addClass(document.documentElement, "nprogress-busy");
156          var progress = document.createElement("div");
157          progress.id = "nprogress";
158          progress.innerHTML = Settings.template;
159          var bar = progress.querySelector(Settings.barSelector), perc = fromStart ? "-100" : toBarPerc(NProgress2.status || 0), parent = document.querySelector(Settings.parent), spinner;
160          css(bar, {
161            transition: "all 0 linear",
162            transform: "translate3d(" + perc + "%,0,0)"
163          });
164          if (!Settings.showSpinner) {
165            spinner = progress.querySelector(Settings.spinnerSelector);
166            spinner && removeElement(spinner);
167          }
168          if (parent != document.body) {
169            addClass(parent, "nprogress-custom-parent");
170          }
171          parent.appendChild(progress);
172          return progress;
173        };
174        NProgress2.remove = function() {
175          removeClass(document.documentElement, "nprogress-busy");
176          removeClass(document.querySelector(Settings.parent), "nprogress-custom-parent");
177          var progress = document.getElementById("nprogress");
178          progress && removeElement(progress);
179        };
180        NProgress2.isRendered = function() {
181          return !!document.getElementById("nprogress");
182        };
183        NProgress2.getPositioningCSS = function() {
184          var bodyStyle = document.body.style;
185          var vendorPrefix = "WebkitTransform" in bodyStyle ? "Webkit" : "MozTransform" in bodyStyle ? "Moz" : "msTransform" in bodyStyle ? "ms" : "OTransform" in bodyStyle ? "O" : "";
186          if (vendorPrefix + "Perspective" in bodyStyle) {
187            return "translate3d";
188          } else if (vendorPrefix + "Transform" in bodyStyle) {
189            return "translate";
190          } else {
191            return "margin";
192          }
193        };
194        function clamp2(n, min2, max2) {
195          if (n < min2)
196            return min2;
197          if (n > max2)
198            return max2;
199          return n;
200        }
201        function toBarPerc(n) {
202          return (-1 + n) * 100;
203        }
204        function barPositionCSS(n, speed, ease) {
205          var barCSS;
206          if (Settings.positionUsing === "translate3d") {
207            barCSS = { transform: "translate3d(" + toBarPerc(n) + "%,0,0)" };
208          } else if (Settings.positionUsing === "translate") {
209            barCSS = { transform: "translate(" + toBarPerc(n) + "%,0)" };
210          } else {
211            barCSS = { "margin-left": toBarPerc(n) + "%" };
212          }
213          barCSS.transition = "all " + speed + "ms " + ease;
214          return barCSS;
215        }
216        var queue2 = function() {
217          var pending = [];
218          function next() {
219            var fn = pending.shift();
220            if (fn) {
221              fn(next);
222            }
223          }
224          return function(fn) {
225            pending.push(fn);
226            if (pending.length == 1)
227              next();
228          };
229        }();
230        var css = function() {
231          var cssPrefixes = ["Webkit", "O", "Moz", "ms"], cssProps = {};
232          function camelCase3(string) {
233            return string.replace(/^-ms-/, "ms-").replace(/-([\da-z])/gi, function(match, letter) {
234              return letter.toUpperCase();
235            });
236          }
237          function getVendorProp(name) {
238            var style = document.body.style;
239            if (name in style)
240              return name;
241            var i = cssPrefixes.length, capName = name.charAt(0).toUpperCase() + name.slice(1), vendorName;
242            while (i--) {
243              vendorName = cssPrefixes[i] + capName;
244              if (vendorName in style)
245                return vendorName;
246            }
247            return name;
248          }
249          function getStyleProp(name) {
250            name = camelCase3(name);
251            return cssProps[name] || (cssProps[name] = getVendorProp(name));
252          }
253          function applyCss(element, prop, value) {
254            prop = getStyleProp(prop);
255            element.style[prop] = value;
256          }
257          return function(element, properties2) {
258            var args = arguments, prop, value;
259            if (args.length == 2) {
260              for (prop in properties2) {
261                value = properties2[prop];
262                if (value !== void 0 && properties2.hasOwnProperty(prop))
263                  applyCss(element, prop, value);
264              }
265            } else {
266              applyCss(element, args[1], args[2]);
267            }
268          };
269        }();
270        function hasClass(element, name) {
271          var list = typeof element == "string" ? element : classList(element);
272          return list.indexOf(" " + name + " ") >= 0;
273        }
274        function addClass(element, name) {
275          var oldList = classList(element), newList = oldList + name;
276          if (hasClass(oldList, name))
277            return;
278          element.className = newList.substring(1);
279        }
280        function removeClass(element, name) {
281          var oldList = classList(element), newList;
282          if (!hasClass(element, name))
283            return;
284          newList = oldList.replace(" " + name + " ", " ");
285          element.className = newList.substring(1, newList.length - 1);
286        }
287        function classList(element) {
288          return (" " + (element.className || "") + " ").replace(/\s+/gi, " ");
289        }
290        function removeElement(element) {
291          element && element.parentNode && element.parentNode.removeChild(element);
292        }
293        return NProgress2;
294      });
295    }
296  });
297
298  
298// js/utils.js
299  var Bag = class {
300    constructor() {
301      this.arrays = {};
302    }
303    add(key, value) {
304      if (!this.arrays[key])
305        this.arrays[key] = [];
306      this.arrays[key].push(value);
307    }
308    remove(key) {
309      if (this.arrays[key])
310        delete this.arrays[key];
311    }
312    get(key) {
313      return this.arrays[key] || [];
314    }
315    each(key, callback) {
316      return this.get(key).forEach(callback);
317    }
318  };
319  var WeakBag = class {
320    constructor() {
321      this.arrays = /* @__PURE__ */ new WeakMap();
322    }
323    add(key, value) {
324      if (!this.arrays.has(key))
325        this.arrays.set(key, []);
326      this.arrays.get(key).push(value);
327    }
328    remove(key) {
329      if (this.arrays.has(key))
330        this.arrays.delete(key, []);
331    }
332    get(key) {
333      return this.arrays.has(key) ? this.arrays.get(key) : [];
334    }
335    each(key, callback) {
336      return this.get(key).forEach(callback);
337    }
338  };
339  function dispatch(target, name, detail = {}, bubbles = true) {
340    target.dispatchEvent(new CustomEvent(name, {
341      detail,
342      bubbles,
343      composed: true,
344      cancelable: true
345    }));
346  }
347  function listen(target, name, handler4) {
348    target.addEventListener(name, handler4);
349    return () => target.removeEventListener(name, handler4);
350  }
351  function isObjecty(subject) {
352    return typeof subject === "object" && subject !== null;
353  }
354  function isObject(subject) {
355    return isObjecty(subject) && !isArray(subject);
356  }
357  function isArray(subject) {
358    return Array.isArray(subject);
359  }
360  function isFunction(subject) {
361    return typeof subject === "function";
362  }
363  function isPrimitive(subject) {
364    return typeof subject !== "object" || subject === null;
365  }
366  function deepClone(obj) {
367    return JSON.parse(JSON.stringify(obj));
368  }
369  function dataGet(object, key) {
370    if (key === "")
371      return object;
372    return key.split(".").reduce((carry, i) => {
373      if (carry === void 0)
374        return void 0;
375      return carry[i];
376    }, object);
377  }
378  function dataSet(object, key, value) {
379    let segments = key.split(".");
380    if (segments.length === 1) {
381      return object[key] = value;
382    }
383    let firstSegment = segments.shift();
384    let restOfSegments = segments.join(".");
385    if (object[firstSegment] === void 0) {
386      object[firstSegment] = {};
387    }
388    dataSet(object[firstSegment], restOfSegments, value);
389  }
390  function diff(left, right, diffs = {}, path = "") {
391    if (left === right)
392      return diffs;
393    if (typeof left !== typeof right || isObject(left) && isArray(right) || isArray(left) && isObject(right)) {
394      diffs[path] = right;
395      return diffs;
396    }
397    if (isPrimitive(left) || isPrimitive(right)) {
398      diffs[path] = right;
399      return diffs;
400    }
401    let leftKeys = Object.keys(left);
402    Object.entries(right).forEach(([key, value]) => {
403      diffs = { ...diffs, ...diff(left[key], right[key], diffs, path === "" ? key : `${path}.${key}`) };
404      leftKeys = leftKeys.filter((i) => i !== key);
405    });
406    leftKeys.forEach((key) => {
407      diffs[`${path}.${key}`] = "__rm__";
408    });
409    return diffs;
410  }
411  function extractData(payload) {
412    let value = isSynthetic(payload) ? payload[0] : payload;
413    let meta = isSynthetic(payload) ? payload[1] : void 0;
414    if (isObjecty(value)) {
415      Object.entries(value).forEach(([key, iValue]) => {
416        value[key] = extractData(iValue);
417      });
418    }
419    return value;
420  }
421  function isSynthetic(subject) {
422    return Array.isArray(subject) && subject.length === 2 && typeof subject[1] === "object" && Object.keys(subject[1]).includes("s");
423  }
424  function getCsrfToken() {
425    if (document.querySelector('meta[name="csrf-token"]')) {
426      return document.querySelector('meta[name="csrf-token"]').getAttribute("content");
427    }
428    if (document.querySelector("[data-csrf]")) {
429      return document.querySelector("[data-csrf]").getAttribute("data-csrf");
430    }
431    if (window.livewireScriptConfig["csrf"] ?? false) {
432      return window.livewireScriptConfig["csrf"];
433    }
434    throw "Livewire: No CSRF token detected";
435  }
436  var nonce;
437  function getNonce() {
438    if (nonce)
439      return nonce;
440    if (window.livewireScriptConfig && (window.livewireScriptConfig["nonce"] ?? false)) {
441      nonce = window.livewireScriptConfig["nonce"];
442      return nonce;
443    }
444    const elWithNonce = document.querySelector("style[data-livewire-style][nonce]");
445    if (elWithNonce) {
446      nonce = elWithNonce.nonce;
447      return nonce;
448    }
449    return null;
450  }
451  function getUpdateUri() {
452    return document.querySelector("[data-update-uri]")?.getAttribute("data-update-uri") ?? window.livewireScriptConfig["uri"] ?? null;
453  }
454  function contentIsFromDump(content) {
455    return !!content.match(/<script>Sfdump\(".+"\)<\/script>/);
456  }
457  function splitDumpFromContent(content) {
458    let dump = content.match(/.*<script>Sfdump\(".+"\)<\/script>/s);
459    return [dump, content.replace(dump, "")];
460  }
461
462  
462// js/features/supportFileUploads.js
463  var uploadManagers = /* @__PURE__ */ new WeakMap();
464  function getUploadManager(component) {
465    if (!uploadManagers.has(component)) {
466      let manager = new UploadManager(component);
467      uploadManagers.set(component, manager);
468      manager.registerListeners();
469    }
470    return uploadManagers.get(component);
471  }
472  function handleFileUpload(el, property, component, cleanup2) {
473    let manager = getUploadManager(component);
474    let start3 = () => el.dispatchEvent(new CustomEvent("livewire-upload-start", { bubbles: true, detail: { id: component.id, property } }));
475    let finish = () => el.dispatchEvent(new CustomEvent("livewire-upload-finish", { bubbles: true, detail: { id: component.id, property } }));
476    let error2 = () => el.dispatchEvent(new CustomEvent("livewire-upload-error", { bubbles: true, detail: { id: component.id, property } }));
477    let cancel = () => el.dispatchEvent(new CustomEvent("livewire-upload-cancel", { bubbles: true, detail: { id: component.id, property } }));
478    let progress = (progressEvent) => {
479      var percentCompleted = Math.round(progressEvent.loaded * 100 / progressEvent.total);
480      el.dispatchEvent(new CustomEvent("livewire-upload-progress", {
481        bubbles: true,
482        detail: { progress: percentCompleted }
483      }));
484    };
485    let eventHandler = (e) => {
486      if (e.target.files.length === 0)
487        return;
488      start3();
489      if (e.target.multiple) {
490        manager.uploadMultiple(property, e.target.files, finish, error2, progress, cancel);
491      } else {
492        manager.upload(property, e.target.files[0], finish, error2, progress, cancel);
493      }
494    };
495    el.addEventListener("change", eventHandler);
496    component.$wire.$watch(property, (value) => {
497      if (!el.isConnected)
498        return;
499      if (value === null || value === "") {
500        el.value = "";
501      }
502    });
503    let clearFileInputValue = () => {
504      el.value = null;
505    };
506    el.addEventListener("click", clearFileInputValue);
507    el.addEventListener("livewire-upload-cancel", clearFileInputValue);
508    cleanup2(() => {
509      el.removeEventListener("change", eventHandler);
510      el.removeEventListener("click", clearFileInputValue);
511    });
512  }
513  var UploadManager = class {
514    constructor(component) {
515      this.component = component;
516      this.uploadBag = new MessageBag();
517      this.removeBag = new MessageBag();
518    }
519    registerListeners() {
520      this.component.$wire.$on("upload:generatedSignedUrl", ({ name, url }) => {
521        setUploadLoading(this.component, name);
522        this.handleSignedUrl(name, url);
523      });
524      this.component.$wire.$on("upload:generatedSignedUrlForS3", ({ name, payload }) => {
525        setUploadLoading(this.component, name);
526        this.handleS3PreSignedUrl(name, payload);
527      });
528      this.component.$wire.$on("upload:finished", ({ name, tmpFilenames }) => this.markUploadFinished(name, tmpFilenames));
529      this.component.$wire.$on("upload:errored", ({ name }) => this.markUploadErrored(name));
530      this.component.$wire.$on("upload:removed", ({ name, tmpFilename }) => this.removeBag.shift(name).finishCallback(tmpFilename));
531    }
532    upload(name, file, finishCallback, errorCallback, progressCallback, cancelledCallback) {
533      this.setUpload(name, {
534        files: [file],
535        multiple: false,
536        finishCallback,
537        errorCallback,
538        progressCallback,
539        cancelledCallback
540      });
541    }
542    uploadMultiple(name, files, finishCallback, errorCallback, progressCallback, cancelledCallback) {
543      this.setUpload(name, {
544        files: Array.from(files),
545        multiple: true,
546        finishCallback,
547        errorCallback,
548        progressCallback,
549        cancelledCallback
550      });
551    }
552    removeUpload(name, tmpFilename, finishCallback) {
553      this.removeBag.push(name, {
554        tmpFilename,
555        finishCallback
556      });
557      this.component.$wire.call("_removeUpload", name, tmpFilename);
558    }
559    setUpload(name, uploadObject) {
560      this.uploadBag.add(name, uploadObject);
561      if (this.uploadBag.get(name).length === 1) {
562        this.startUpload(name, uploadObject);
563      }
564    }
565    handleSignedUrl(name, url) {
566      let formData = new FormData();
567      Array.from(this.uploadBag.first(name).files).forEach((file) => formData.append("files[]", file, file.name));
568      let headers = {
569        "Accept": "application/json"
570      };
571      let csrfToken = getCsrfToken();
572      if (csrfToken)
573        headers["X-CSRF-TOKEN"] = csrfToken;
574      this.makeRequest(name, formData, "post", url, headers, (response) => {
575        return response.paths;
576      });
577    }
578    handleS3PreSignedUrl(name, payload) {
579      let formData = this.uploadBag.first(name).files[0];
580      let headers = payload.headers;
581      if ("Host" in headers)
582        delete headers.Host;
583      let url = payload.url;
584      this.makeRequest(name, formData, "put", url, headers, (response) => {
585        return [payload.path];
586      });
587    }
588    makeRequest(name, formData, method, url, headers, retrievePaths) {
589      let request = new XMLHttpRequest();
590      request.open(method, url);
591      Object.entries(headers).forEach(([key, value]) => {
592        request.setRequestHeader(key, value);
593      });
594      request.upload.addEventListener("progress", (e) => {
595        e.detail = {};
596        e.detail.progress = Math.floor(e.loaded * 100 / e.total);
597        this.uploadBag.first(name).progressCallback(e);
598      });
599      request.addEventListener("load", () => {
600        if ((request.status + "")[0] === "2") {
601          let paths = retrievePaths(request.response && JSON.parse(request.response));
602          this.component.$wire.call("_finishUpload", name, paths, this.uploadBag.first(name).multiple);
603          return;
604        }
605        let errors = null;
606        if (request.status === 422) {
607          errors = request.response;
608        }
609        this.component.$wire.call("_uploadErrored", name, errors, this.uploadBag.first(name).multiple);
610      });
611      this.uploadBag.first(name).request = request;
612      request.send(formData);
613    }
614    startUpload(name, uploadObject) {
615      let fileInfos = uploadObject.files.map((file) => {
616        return { name: file.name, size: file.size, type: file.type };
617      });
618      this.component.$wire.call("_startUpload", name, fileInfos, uploadObject.multiple);
619      setUploadLoading(this.component, name);
620    }
621    markUploadFinished(name, tmpFilenames) {
622      unsetUploadLoading(this.component);
623      let uploadObject = this.uploadBag.shift(name);
624      uploadObject.finishCallback(uploadObject.multiple ? tmpFilenames : tmpFilenames[0]);
625      if (this.uploadBag.get(name).length > 0)
626        this.startUpload(name, this.uploadBag.last(name));
627    }
628    markUploadErrored(name) {
629      unsetUploadLoading(this.component);
630      this.uploadBag.shift(name).errorCallback();
631      if (this.uploadBag.get(name).length > 0)
632        this.startUpload(name, this.uploadBag.last(name));
633    }
634    cancelUpload(name, cancelledCallback = null) {
635      unsetUploadLoading(this.component);
636      let uploadItem = this.uploadBag.first(name);
637      if (uploadItem) {
638        uploadItem.request.abort();
639        this.uploadBag.shift(name).cancelledCallback();
640        if (cancelledCallback)
641          cancelledCallback();
642      }
643    }
644  };
645  var MessageBag = class {
646    constructor() {
647      this.bag = {};
648    }
649    add(name, thing) {
650      if (!this.bag[name]) {
651        this.bag[name] = [];
652      }
653      this.bag[name].push(thing);
654    }
655    push(name, thing) {
656      this.add(name, thing);
657    }
658    first(name) {
659      if (!this.bag[name])
660        return null;
661      return this.bag[name][0];
662    }
663    last(name) {
664      return this.bag[name].slice(-1)[0];
665    }
666    get(name) {
667      return this.bag[name];
668    }
669    shift(name) {
670      return this.bag[name].shift();
671    }
672    call(name, ...params) {
673      (this.listeners[name] || []).forEach((callback) => {
674        callback(...params);
675      });
676    }
677    has(name) {
678      return Object.keys(this.listeners).includes(name);
679    }
680  };
681  function setUploadLoading() {
682  }
683  function unsetUploadLoading() {
684  }
685  function upload(component, name, file, finishCallback = () => {
686  }, errorCallback = () => {
687  }, progressCallback = () => {
688  }, cancelledCallback = () => {
689  }) {
690    let uploadManager = getUploadManager(component);
691    uploadManager.upload(name, file, finishCallback, errorCallback, progressCallback, cancelledCallback);
692  }
693  function uploadMultiple(component, name, files, finishCallback = () => {
694  }, errorCallback = () => {
695  }, progressCallback = () => {
696  }, cancelledCallback = () => {
697  }) {
698    let uploadManager = getUploadManager(component);
699    uploadManager.uploadMultiple(name, files, finishCallback, errorCallback, progressCallback, cancelledCallback);
700  }
701  function removeUpload(component, name, tmpFilename, finishCallback = () => {
702  }, errorCallback = () => {
703  }) {
704    let uploadManager = getUploadManager(component);
705    uploadManager.removeUpload(name, tmpFilename, finishCallback, errorCallback);
706  }
707  function cancelUpload(component, name, cancelledCallback = () => {
708  }) {
709    let uploadManager = getUploadManager(component);
710    uploadManager.cancelUpload(name, cancelledCallback);
711  }
712
713  
713// ../alpine/packages/alpinejs/dist/module.esm.js
714  var flushPending = false;
715  var flushing = false;
716  var queue = [];
717  var lastFlushedIndex = -1;
718  function scheduler(callback) {
719    queueJob(callback);
720  }
721  function queueJob(job) {
722    if (!queue.includes(job))
723      queue.push(job);
724    queueFlush();
725  }
726  function dequeueJob(job) {
727    let index = queue.indexOf(job);
728    if (index !== -1 && index > lastFlushedIndex)
729      queue.splice(index, 1);
730  }
731  function queueFlush() {
732    if (!flushing && !flushPending) {
733      flushPending = true;
734      queueMicrotask(flushJobs);
735    }
736  }
737  function flushJobs() {
738    flushPending = false;
739    flushing = true;
740    for (let i = 0; i < queue.length; i++) {
741      queue[i]();
742      lastFlushedIndex = i;
743    }
744    queue.length = 0;
745    lastFlushedIndex = -1;
746    flushing = false;
747  }
748  var reactive;
749  var effect;
750  var release;
751  var raw;
752  var shouldSchedule = true;
753  function disableEffectScheduling(callback) {
754    shouldSchedule = false;
755    callback();
756    shouldSchedule = true;
757  }
758  function setReactivityEngine(engine) {
759    reactive = engine.reactive;
760    release = engine.release;
761    effect = (callback) => engine.effect(callback, { scheduler: (task) => {
762      if (shouldSchedule) {
763        scheduler(task);
764      } else {
765        task();
766      }
767    } });
768    raw = engine.raw;
769  }
770  function overrideEffect(override) {
771    effect = override;
772  }
773  function elementBoundEffect(el) {
774    let cleanup2 = () => {
775    };
776    let wrappedEffect = (callback) => {
777      let effectReference = effect(callback);
778      if (!el._x_effects) {
779        el._x_effects = /* @__PURE__ */ new Set();
780        el._x_runEffects = () => {
781          el._x_effects.forEach((i) => i());
782        };
783      }
784      el._x_effects.add(effectReference);
785      cleanup2 = () => {
786        if (effectReference === void 0)
787          return;
788        el._x_effects.delete(effectReference);
789        release(effectReference);
790      };
791      return effectReference;
792    };
793    return [wrappedEffect, () => {
794      cleanup2();
795    }];
796  }
797  function watch(getter, callback) {
798    let firstTime = true;
799    let oldValue;
800    let effectReference = effect(() => {
801      let value = getter();
802      JSON.stringify(value);
803      if (!firstTime) {
804        queueMicrotask(() => {
805          callback(value, oldValue);
806          oldValue = value;
807        });
808      } else {
809        oldValue = value;
810      }
811      firstTime = false;
812    });
813    return () => release(effectReference);
814  }
815  var onAttributeAddeds = [];
816  var onElRemoveds = [];
817  var onElAddeds = [];
818  function onElAdded(callback) {
819    onElAddeds.push(callback);
820  }
821  function onElRemoved(el, callback) {
822    if (typeof callback === "function") {
823      if (!el._x_cleanups)
824        el._x_cleanups = [];
825      el._x_cleanups.push(callback);
826    } else {
827      callback = el;
828      onElRemoveds.push(callback);
829    }
830  }
831  function onAttributesAdded(callback) {
832    onAttributeAddeds.push(callback);
833  }
834  function onAttributeRemoved(el, name, callback) {
835    if (!el._x_attributeCleanups)
836      el._x_attributeCleanups = {};
837    if (!el._x_attributeCleanups[name])
838      el._x_attributeCleanups[name] = [];
839    el._x_attributeCleanups[name].push(callback);
840  }
841  function cleanupAttributes(el, names) {
842    if (!el._x_attributeCleanups)
843      return;
844    Object.entries(el._x_attributeCleanups).forEach(([name, value]) => {
845      if (names === void 0 || names.includes(name)) {
846        value.forEach((i) => i());
847        delete el._x_attributeCleanups[name];
848      }
849    });
850  }
851  function cleanupElement(el) {
852    if (el._x_cleanups) {
853      while (el._x_cleanups.length)
854        el._x_cleanups.pop()();
855    }
856  }
857  var observer = new MutationObserver(onMutate);
858  var currentlyObserving = false;
859  function startObservingMutations() {
860    observer.observe(document, { subtree: true, childList: true, attributes: true, attributeOldValue: true });
861    currentlyObserving = true;
862  }
863  function stopObservingMutations() {
864    flushObserver();
865    observer.disconnect();
866    currentlyObserving = false;
867  }
868  var queuedMutations = [];
869  function flushObserver() {
870    let records = observer.takeRecords();
871    queuedMutations.push(() => records.length > 0 && onMutate(records));
872    let queueLengthWhenTriggered = queuedMutations.length;
873    queueMicrotask(() => {
874      if (queuedMutations.length === queueLengthWhenTriggered) {
875        while (queuedMutations.length > 0)
876          queuedMutations.shift()();
877      }
878    });
879  }
880  function mutateDom(callback) {
881    if (!currentlyObserving)
882      return callback();
883    stopObservingMutations();
884    let result = callback();
885    startObservingMutations();
886    return result;
887  }
888  var isCollecting = false;
889  var deferredMutations = [];
890  function deferMutations() {
891    isCollecting = true;
892  }
893  function flushAndStopDeferringMutations() {
894    isCollecting = false;
895    onMutate(deferredMutations);
896    deferredMutations = [];
897  }
898  function onMutate(mutations) {
899    if (isCollecting) {
900      deferredMutations = deferredMutations.concat(mutations);
901      return;
902    }
903    let addedNodes = /* @__PURE__ */ new Set();
904    let removedNodes = /* @__PURE__ */ new Set();
905    let addedAttributes = /* @__PURE__ */ new Map();
906    let removedAttributes = /* @__PURE__ */ new Map();
907    for (let i = 0; i < mutations.length; i++) {
908      if (mutations[i].target._x_ignoreMutationObserver)
909        continue;
910      if (mutations[i].type === "childList") {
911        mutations[i].addedNodes.forEach((node) => node.nodeType === 1 && addedNodes.add(node));
912        mutations[i].removedNodes.forEach((node) => node.nodeType === 1 && removedNodes.add(node));
913      }
914      if (mutations[i].type === "attributes") {
915        let el = mutations[i].target;
916        let name = mutations[i].attributeName;
917        let oldValue = mutations[i].oldValue;
918        let add2 = () => {
919          if (!addedAttributes.has(el))
920            addedAttributes.set(el, []);
921          addedAttributes.get(el).push({ name, value: el.getAttribute(name) });
922        };
923        let remove = () => {
924          if (!removedAttributes.has(el))
925            removedAttributes.set(el, []);
926          removedAttributes.get(el).push(name);
927        };
928        if (el.hasAttribute(name) && oldValue === null) {
929          add2();
930        } else if (el.hasAttribute(name)) {
931          remove();
932          add2();
933        } else {
934          remove();
935        }
936      }
937    }
938    removedAttributes.forEach((attrs, el) => {
939      cleanupAttributes(el, attrs);
940    });
941    addedAttributes.forEach((attrs, el) => {
942      onAttributeAddeds.forEach((i) => i(el, attrs));
943    });
944    for (let node of removedNodes) {
945      if (addedNodes.has(node))
946        continue;
947      onElRemoveds.forEach((i) => i(node));
948    }
949    addedNodes.forEach((node) => {
950      node._x_ignoreSelf = true;
951      node._x_ignore = true;
952    });
953    for (let node of addedNodes) {
954      if (removedNodes.has(node))
955        continue;
956      if (!node.isConnected)
957        continue;
958      delete node._x_ignoreSelf;
959      delete node._x_ignore;
960      onElAddeds.forEach((i) => i(node));
961      node._x_ignore = true;
962      node._x_ignoreSelf = true;
963    }
964    addedNodes.forEach((node) => {
965      delete node._x_ignoreSelf;
966      delete node._x_ignore;
967    });
968    addedNodes = null;
969    removedNodes = null;
970    addedAttributes = null;
971    removedAttributes = null;
972  }
973  function scope(node) {
974    return mergeProxies(closestDataStack(node));
975  }
976  function addScopeToNode(node, data2, referenceNode) {
977    node._x_dataStack = [data2, ...closestDataStack(referenceNode || node)];
978    return () => {
979      node._x_dataStack = node._x_dataStack.filter((i) => i !== data2);
980    };
981  }
982  function closestDataStack(node) {
983    if (node._x_dataStack)
984      return node._x_dataStack;
985    if (typeof ShadowRoot === "function" && node instanceof ShadowRoot) {
986      return closestDataStack(node.host);
987    }
988    if (!node.parentNode) {
989      return [];
990    }
991    return closestDataStack(node.parentNode);
992  }
993  function mergeProxies(objects) {
994    return new Proxy({ objects }, mergeProxyTrap);
995  }
996  var mergeProxyTrap = {
997    ownKeys({ objects }) {
998      return Array.from(new Set(objects.flatMap((i) => Object.keys(i))));
999    },
1000    has({ objects }, name) {
1001      if (name == Symbol.unscopables)
1002        return false;
1003      return objects.some((obj) => Object.prototype.hasOwnProperty.call(obj, name) || Reflect.has(obj, name));
1004    },
1005    get({ objects }, name, thisProxy) {
1006      if (name == "toJSON")
1007        return collapseProxies;
1008      return Reflect.get(objects.find((obj) => Reflect.has(obj, name)) || {}, name, thisProxy);
1009    },
1010    set({ objects }, name, value, thisProxy) {
1011      const target = objects.find((obj) => Object.prototype.hasOwnProperty.call(obj, name)) || objects[objects.length - 1];
1012      const descriptor = Object.getOwnPropertyDescriptor(target, name);
1013      if (descriptor?.set && descriptor?.get)
1014        return Reflect.set(target, name, value, thisProxy);
1015      return Reflect.set(target, name, value);
1016    }
1017  };
1018  function collapseProxies() {
1019    let keys = Reflect.ownKeys(this);
1020    return keys.reduce((acc, key) => {
1021      acc[key] = Reflect.get(this, key);
1022      return acc;
1023    }, {});
1024  }
1025  function initInterceptors(data2) {
1026    let isObject22 = (val) => typeof val === "object" && !Array.isArray(val) && val !== null;
1027    let recurse = (obj, basePath = "") => {
1028      Object.entries(Object.getOwnPropertyDescriptors(obj)).forEac
1028h(([key, { value, enumerable }]) => {
1029        if (enumerable === false || value === void 0)
1030          return;
1031        if (typeof value === "object" && value !== null && value.__v_skip)
1032          return;
1033        let path = basePath === "" ? key : `${basePath}.${key}`;
1034        if (typeof value === "object" && value !== null && value._x_interceptor) {
1035          obj[key] = value.initialize(data2, path, key);
1036        } else {
1037          if (isObject22(value) && value !== obj && !(value instanceof Element)) {
1038            recurse(value, path);
1039          }
1040        }
1041      });
1042    };
1043    return recurse(data2);
1044  }
1045  function interceptor(callback, mutateObj = () => {
1046  }) {
1047    let obj = {
1048      initialValue: void 0,
1049      _x_interceptor: true,
1050      initialize(data2, path, key) {
1051        return callback(this.initialValue, () => get(data2, path), (value) => set(data2, path, value), path, key);
1052      }
1053    };
1054    mutateObj(obj);
1055    return (initialValue) => {
1056      if (typeof initialValue === "object" && initialValue !== null && initialValue._x_interceptor) {
1057        let initialize = obj.initialize.bind(obj);
1058        obj.initialize = (data2, path, key) => {
1059          let innerValue = initialValue.initialize(data2, path, key);
1060          obj.initialValue = innerValue;
1061          return initialize(data2, path, key);
1062        };
1063      } else {
1064        obj.initialValue = initialValue;
1065      }
1066      return obj;
1067    };
1068  }
1069  function get(obj, path) {
1070    return path.split(".").reduce((carry, segment) => carry[segment], obj);
1071  }
1072  function set(obj, path, value) {
1073    if (typeof path === "string")
1074      path = path.split(".");
1075    if (path.length === 1)
1076      obj[path[0]] = value;
1077    else if (path.length === 0)
1078      throw error;
1079    else {
1080      if (obj[path[0]])
1081        return set(obj[path[0]], path.slice(1), value);
1082      else {
1083        obj[path[0]] = {};
1084        return set(obj[path[0]], path.slice(1), value);
1085      }
1086    }
1087  }
1088  var magics = {};
1089  function magic(name, callback) {
1090    magics[name] = callback;
1091  }
1092  function injectMagics(obj, el) {
1093    Object.entries(magics).forEach(([name, callback]) => {
1094      let memoizedUtilities = null;
1095      function getUtilities() {
1096        if (memoizedUtilities) {
1097          return memoizedUtilities;
1098        } else {
1099          let [utilities, cleanup2] = getElementBoundUtilities(el);
1100          memoizedUtilities = { interceptor, ...utilities };
1101          onElRemoved(el, cleanup2);
1102          return memoizedUtilities;
1103        }
1104      }
1105      Object.defineProperty(obj, `$${name}`, {
1106        get() {
1107          return callback(el, getUtilities());
1108        },
1109        enumerable: false
1110      });
1111    });
1112    return obj;
1113  }
1114  function tryCatch(el, expression, callback, ...args) {
1115    try {
1116      return callback(...args);
1117    } catch (e) {
1118      handleError(e, el, expression);
1119    }
1120  }
1121  function handleError(error2, el, expression = void 0) {
1122    error2 = Object.assign(error2 ?? { message: "No error message given." }, { el, expression });
1123    console.warn(`Alpine Expression Error: ${error2.message}
1124
1125${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
1126    setTimeout(() => {
1127      throw error2;
1128    }, 0);
1129  }
1130  var shouldAutoEvaluateFunctions = true;
1131  function dontAutoEvaluateFunctions(callback) {
vendor: 27,772 bytes, lines 1132-1945
1132    let cache = shouldAutoEvaluateFunctions;
1133    shouldAutoEvaluateFunctions = false;
1134    let result = callback();
1135    shouldAutoEvaluateFunctions = cache;
1136    return result;
1137  }
1138  function evaluate(el, expression, extras = {}) {
1139    let result;
1140    evaluateLater(el, expression)((value) => result = value, extras);
1141    return result;
1142  }
1143  function evaluateLater(...args) {
1144    return theEvaluatorFunction(...args);
1145  }
1146  var theEvaluatorFunction = normalEvaluator;
1147  function setEvaluator(newEvaluator) {
1148    theEvaluatorFunction = newEvaluator;
1149  }
1150  function normalEvaluator(el, expression) {
1151    let overriddenMagics = {};
1152    injectMagics(overriddenMagics, el);
1153    let dataStack = [overriddenMagics, ...closestDataStack(el)];
1154    let evaluator = typeof expression === "function" ? generateEvaluatorFromFunction(dataStack, expression) : generateEvaluatorFromString(dataStack, expression, el);
1155    return tryCatch.bind(null, el, expression, evaluator);
1156  }
1157  function generateEvaluatorFromFunction(dataStack, func) {
1158    return (receiver = () => {
1159    }, { scope: scope2 = {}, params = [] } = {}) => {
1160      let result = func.apply(mergeProxies([scope2, ...dataStack]), params);
1161      runIfTypeOfFunction(receiver, result);
1162    };
1163  }
1164  var evaluatorMemo = {};
1165  function generateFunctionFromString(expression, el) {
1166    if (evaluatorMemo[expression]) {
1167      return evaluatorMemo[expression];
1168    }
1169    let AsyncFunction = Object.getPrototypeOf(async function() {
1170    }).constructor;
1171    let rightSideSafeExpression = /^[\n\s]*if.*\(.*\)/.test(expression.trim()) || /^(let|const)\s/.test(expression.trim()) ? `(async()=>{ ${expression} })()` : expression;
1172    const safeAsyncFunction = () => {
1173      try {
1174        let func2 = new AsyncFunction(["__self", "scope"], `with (scope) { __self.result = ${rightSideSafeExpression} }; __self.finished = true; return __self.result;`);
1175        Object.defineProperty(func2, "name", {
1176          value: `[Alpine] ${expression}`
1177        });
1178        return func2;
1179      } catch (error2) {
1180        handleError(error2, el, expression);
1181        return Promise.resolve();
1182      }
1183    };
1184    let func = safeAsyncFunction();
1185    evaluatorMemo[expression] = func;
1186    return func;
1187  }
1188  function generateEvaluatorFromString(dataStack, expression, el) {
1189    let func = generateFunctionFromString(expression, el);
1190    return (receiver = () => {
1191    }, { scope: scope2 = {}, params = [] } = {}) => {
1192      func.result = void 0;
1193      func.finished = false;
1194      let completeScope = mergeProxies([scope2, ...dataStack]);
1195      if (typeof func === "function") {
1196        let promise = func(func, completeScope).catch((error2) => handleError(error2, el, expression));
1197        if (func.finished) {
1198          runIfTypeOfFunction(receiver, func.result, completeScope, params, el);
1199          func.result = void 0;
1200        } else {
1201          promise.then((result) => {
1202            runIfTypeOfFunction(receiver, result, completeScope, params, el);
1203          }).catch((error2) => handleError(error2, el, expression)).finally(() => func.result = void 0);
1204        }
1205      }
1206    };
1207  }
1208  function runIfTypeOfFunction(receiver, value, scope2, params, el) {
1209    if (shouldAutoEvaluateFunctions && typeof value === "function") {
1210      let result = value.apply(scope2, params);
1211      if (result instanceof Promise) {
1212        result.then((i) => runIfTypeOfFunction(receiver, i, scope2, params)).catch((error2) => handleError(error2, el, value));
1213      } else {
1214        receiver(result);
1215      }
1216    } else if (typeof value === "object" && value instanceof Promise) {
1217      value.then((i) => receiver(i));
1218    } else {
1219      receiver(value);
1220    }
1221  }
1222  var prefixAsString = "x-";
1223  function prefix(subject = "") {
1224    return prefixAsString + subject;
1225  }
1226  function setPrefix(newPrefix) {
1227    prefixAsString = newPrefix;
1228  }
1229  var directiveHandlers = {};
1230  function directive(name, callback) {
1231    directiveHandlers[name] = callback;
1232    return {
1233      before(directive22) {
1234        if (!directiveHandlers[directive22]) {
1235          console.warn(String.raw`Cannot find directive \`${directive22}\`. \`${name}\` will use the default order of execution`);
1236          return;
1237        }
1238        const pos = directiveOrder.indexOf(directive22);
1239        directiveOrder.splice(pos >= 0 ? pos : directiveOrder.indexOf("DEFAULT"), 0, name);
1240      }
1241    };
1242  }
1243  function directiveExists(name) {
1244    return Object.keys(directiveHandlers).includes(name);
1245  }
1246  function directives(el, attributes, originalAttributeOverride) {
1247    attributes = Array.from(attributes);
1248    if (el._x_virtualDirectives) {
1249      let vAttributes = Object.entries(el._x_virtualDirectives).map(([name, value]) => ({ name, value }));
1250      let staticAttributes = attributesOnly(vAttributes);
1251      vAttributes = vAttributes.map((attribute) => {
1252        if (staticAttributes.find((attr) => attr.name === attribute.name)) {
1253          return {
1254            name: `x-bind:${attribute.name}`,
1255            value: `"${attribute.value}"`
1256          };
1257        }
1258        return attribute;
1259      });
1260      attributes = attributes.concat(vAttributes);
1261    }
1262    let transformedAttributeMap = {};
1263    let directives2 = attributes.map(toTransformedAttributes((newName, oldName) => transformedAttributeMap[newName] = oldName)).filter(outNonAlpineAttributes).map(toParsedDirectives(transformedAttributeMap, originalAttributeOverride)).sort(byPriority);
1264    return directives2.map((directive22) => {
1265      return getDirectiveHandler(el, directive22);
1266    });
1267  }
1268  function attributesOnly(attributes) {
1269    return Array.from(attributes).map(toTransformedAttributes()).filter((attr) => !outNonAlpineAttributes(attr));
1270  }
1271  var isDeferringHandlers = false;
1272  var directiveHandlerStacks = /* @__PURE__ */ new Map();
1273  var currentHandlerStackKey = Symbol();
1274  function deferHandlingDirectives(callback) {
1275    isDeferringHandlers = true;
1276    let key = Symbol();
1277    currentHandlerStackKey = key;
1278    directiveHandlerStacks.set(key, []);
1279    let flushHandlers = () => {
1280      while (directiveHandlerStacks.get(key).length)
1281        directiveHandlerStacks.get(key).shift()();
1282      directiveHandlerStacks.delete(key);
1283    };
1284    let stopDeferring = () => {
1285      isDeferringHandlers = false;
1286      flushHandlers();
1287    };
1288    callback(flushHandlers);
1289    stopDeferring();
1290  }
1291  function getElementBoundUtilities(el) {
1292    let cleanups2 = [];
1293    let cleanup2 = (callback) => cleanups2.push(callback);
1294    let [effect3, cleanupEffect] = elementBoundEffect(el);
1295    cleanups2.push(cleanupEffect);
1296    let utilities = {
1297      Alpine: alpine_default,
1298      effect: effect3,
1299      cleanup: cleanup2,
1300      evaluateLater: evaluateLater.bind(evaluateLater, el),
1301      evaluate: evaluate.bind(evaluate, el)
1302    };
1303    let doCleanup = () => cleanups2.forEach((i) => i());
1304    return [utilities, doCleanup];
1305  }
1306  function getDirectiveHandler(el, directive22) {
1307    let noop = () => {
1308    };
1309    let handler4 = directiveHandlers[directive22.type] || noop;
1310    let [utilities, cleanup2] = getElementBoundUtilities(el);
1311    onAttributeRemoved(el, directive22.original, cleanup2);
1312    let fullHandler = () => {
1313      if (el._x_ignore || el._x_ignoreSelf)
1314        return;
1315      handler4.inline && handler4.inline(el, directive22, utilities);
1316      handler4 = handler4.bind(handler4, el, directive22, utilities);
1317      isDeferringHandlers ? directiveHandlerStacks.get(currentHandlerStackKey).push(handler4) : handler4();
1318    };
1319    fullHandler.runCleanups = cleanup2;
1320    return fullHandler;
1321  }
1322  var startingWith = (subject, replacement) => ({ name, value }) => {
1323    if (name.startsWith(subject))
1324      name = name.replace(subject, replacement);
1325    return { name, value };
1326  };
1327  var into = (i) => i;
1328  function toTransformedAttributes(callback = () => {
1329  }) {
1330    return ({ name, value }) => {
1331      let { name: newName, value: newValue } = attributeTransformers.reduce((carry, transform) => {
1332        return transform(carry);
1333      }, { name, value });
1334      if (newName !== name)
1335        callback(newName, name);
1336      return { name: newName, value: newValue };
1337    };
1338  }
1339  var attributeTransformers = [];
1340  function mapAttributes(callback) {
1341    attributeTransformers.push(callback);
1342  }
1343  function outNonAlpineAttributes({ name }) {
1344    return alpineAttributeRegex().test(name);
1345  }
1346  var alpineAttributeRegex = () => new RegExp(`^${prefixAsString}([^:^.]+)\\b`);
1347  function toParsedDirectives(transformedAttributeMap, originalAttributeOverride) {
1348    return ({ name, value }) => {
1349      let typeMatch = name.match(alpineAttributeRegex());
1350      let valueMatch = name.match(/:([a-zA-Z0-9\-_:]+)/);
1351      let modifiers = name.match(/\.[^.\]]+(?=[^\]]*$)/g) || [];
1352      let original = originalAttributeOverride || transformedAttributeMap[name] || name;
1353      return {
1354        type: typeMatch ? typeMatch[1] : null,
1355        value: valueMatch ? valueMatch[1] : null,
1356        modifiers: modifiers.map((i) => i.replace(".", "")),
1357        expression: value,
1358        original
1359      };
1360    };
1361  }
1362  var DEFAULT = "DEFAULT";
1363  var directiveOrder = [
1364    "ignore",
1365    "ref",
1366    "data",
1367    "id",
1368    "anchor",
1369    "bind",
1370    "init",
1371    "for",
1372    "model",
1373    "modelable",
1374    "transition",
1375    "show",
1376    "if",
1377    DEFAULT,
1378    "teleport"
1379  ];
1380  function byPriority(a, b) {
1381    let typeA = directiveOrder.indexOf(a.type) === -1 ? DEFAULT : a.type;
1382    let typeB = directiveOrder.indexOf(b.type) === -1 ? DEFAULT : b.type;
1383    return directiveOrder.indexOf(typeA) - directiveOrder.indexOf(typeB);
1384  }
1385  function dispatch2(el, name, detail = {}) {
1386    el.dispatchEvent(new CustomEvent(name, {
1387      detail,
1388      bubbles: true,
1389      composed: true,
1390      cancelable: true
1391    }));
1392  }
1393  function walk(el, callback) {
1394    if (typeof ShadowRoot === "function" && el instanceof ShadowRoot) {
1395      Array.from(el.children).forEach((el2) => walk(el2, callback));
1396      return;
1397    }
1398    let skip = false;
1399    callback(el, () => skip = true);
1400    if (skip)
1401      return;
1402    let node = el.firstElementChild;
1403    while (node) {
1404      walk(node, callback, false);
1405      node = node.nextElementSibling;
1406    }
1407  }
1408  function warn(message, ...args) {
1409    console.warn(`Alpine Warning: ${message}`, ...args);
1410  }
1411  var started = false;
1412  function start() {
1413    if (started)
1414      warn("Alpine has already been initialized on this page. Calling Alpine.start() more than once can cause problems.");
1415    started = true;
1416    if (!document.body)
1417      warn("Unable to initialize. Trying to load Alpine before `<body>` is available. Did you forget to add `defer` in Alpine's `<script>` tag?");
1418    dispatch2(document, "alpine:init");
1419    dispatch2(document, "alpine:initializing");
1420    startObservingMutations();
1421    onElAdded((el) => initTree(el, walk));
1422    onElRemoved((el) => destroyTree(el));
1423    onAttributesAdded((el, attrs) => {
1424      directives(el, attrs).forEach((handle) => handle());
1425    });
1426    let outNestedComponents = (el) => !closestRoot(el.parentElement, true);
1427    Array.from(document.querySelectorAll(allSelectors().join(","))).filter(outNestedComponents).forEach((el) => {
1428      initTree(el);
1429    });
1430    dispatch2(document, "alpine:initialized");
1431    setTimeout(() => {
1432      warnAboutMissingPlugins();
1433    });
1434  }
1435  var rootSelectorCallbacks = [];
1436  var initSelectorCallbacks = [];
1437  function rootSelectors() {
1438    return rootSelectorCallbacks.map((fn) => fn());
1439  }
1440  function allSelectors() {
1441    return rootSelectorCallbacks.concat(initSelectorCallbacks).map((fn) => fn());
1442  }
1443  function addRootSelector(selectorCallback) {
1444    rootSelectorCallbacks.push(selectorCallback);
1445  }
1446  function addInitSelector(selectorCallback) {
1447    initSelectorCallbacks.push(selectorCallback);
1448  }
1449  function closestRoot(el, includeInitSelectors = false) {
1450    return findClosest(el, (element) => {
1451      const selectors = includeInitSelectors ? allSelectors() : rootSelectors();
1452      if (selectors.some((selector) => element.matches(selector)))
1453        return true;
1454    });
1455  }
1456  function findClosest(el, callback) {
1457    if (!el)
1458      return;
1459    if (callback(el))
1460      return el;
1461    if (el._x_teleportBack)
1462      el = el._x_teleportBack;
1463    if (!el.parentElement)
1464      return;
1465    return findClosest(el.parentElement, callback);
1466  }
1467  function isRoot(el) {
1468    return rootSelectors().some((selector) => el.matches(selector));
1469  }
1470  var initInterceptors2 = [];
1471  function interceptInit(callback) {
1472    initInterceptors2.push(callback);
1473  }
1474  function initTree(el, walker = walk, intercept = () => {
1475  }) {
1476    deferHandlingDirectives(() => {
1477      walker(el, (el2, skip) => {
1478        intercept(el2, skip);
1479        initInterceptors2.forEach((i) => i(el2, skip));
1480        directives(el2, el2.attributes).forEach((handle) => handle());
1481        el2._x_ignore && skip();
1482      });
1483    });
1484  }
1485  function destroyTree(root, walker = walk) {
1486    walker(root, (el) => {
1487      cleanupAttributes(el);
1488      cleanupElement(el);
1489    });
1490  }
1491  function warnAboutMissingPlugins() {
1492    let pluginDirectives = [
1493      ["ui", "dialog", ["[x-dialog], [x-popover]"]],
1494      ["anchor", "anchor", ["[x-anchor]"]],
1495      ["sort", "sort", ["[x-sort]"]]
1496    ];
1497    pluginDirectives.forEach(([plugin2, directive22, selectors]) => {
1498      if (directiveExists(directive22))
1499        return;
1500      selectors.some((selector) => {
1501        if (document.querySelector(selector)) {
1502          warn(`found "${selector}", but missing ${plugin2} plugin`);
1503          return true;
1504        }
1505      });
1506    });
1507  }
1508  var tickStack = [];
1509  var isHolding = false;
1510  function nextTick(callback = () => {
1511  }) {
1512    queueMicrotask(() => {
1513      isHolding || setTimeout(() => {
1514        releaseNextTicks();
1515      });
1516    });
1517    return new Promise((res) => {
1518      tickStack.push(() => {
1519        callback();
1520        res();
1521      });
1522    });
1523  }
1524  function releaseNextTicks() {
1525    isHolding = false;
1526    while (tickStack.length)
1527      tickStack.shift()();
1528  }
1529  function holdNextTicks() {
1530    isHolding = true;
1531  }
1532  function setClasses(el, value) {
1533    if (Array.isArray(value)) {
1534      return setClassesFromString(el, value.join(" "));
1535    } else if (typeof value === "object" && value !== null) {
1536      return setClassesFromObject(el, value);
1537    } else if (typeof value === "function") {
1538      return setClasses(el, value());
1539    }
1540    return setClassesFromString(el, value);
1541  }
1542  function setClassesFromString(el, classString) {
1543    let split = (classString2) => classString2.split(" ").filter(Boolean);
1544    let missingClasses = (classString2) => classString2.split(" ").filter((i) => !el.classList.contains(i)).filter(Boolean);
1545    let addClassesAndReturnUndo = (classes) => {
1546      el.classList.add(...classes);
1547      return () => {
1548        el.classList.remove(...classes);
1549      };
1550    };
1551    classString = classString === true ? classString = "" : classString || "";
1552    return addClassesAndReturnUndo(missingClasses(classString));
1553  }
1554  function setClassesFromObject(el, classObject) {
1555    let split = (classString) => classString.split(" ").filter(Boolean);
1556    let forAdd = Object.entries(classObject).flatMap(([classString, bool]) => bool ? split(classString) : false).filter(Boolean);
1557    let forRemove = Object.entries(classObject).flatMap(([classString, bool]) => !bool ? split(classString) : false).filter(Boolean);
1558    let added = [];
1559    let removed = [];
1560    forRemove.forEach((i) => {
1561      if (el.classList.contains(i)) {
1562        el.classList.remove(i);
1563        removed.push(i);
1564      }
1565    });
1566    forAdd.forEach((i) => {
1567      if (!el.classList.contains(i)) {
1568        el.classList.add(i);
1569        added.push(i);
1570      }
1571    });
1572    return () => {
1573      removed.forEach((i) => el.classList.add(i));
1574      added.forEach((i) => el.classList.remove(i));
1575    };
1576  }
1577  function setStyles(el, value) {
1578    if (typeof value === "object" && value !== null) {
1579      return setStylesFromObject(el, value);
1580    }
1581    return setStylesFromString(el, value);
1582  }
1583  function setStylesFromObject(el, value) {
1584    let previousStyles = {};
1585    Object.entries(value).forEach(([key, value2]) => {
1586      previousStyles[key] = el.style[key];
1587      if (!key.startsWith("--")) {
1588        key = kebabCase(key);
1589      }
1590      el.style.setProperty(key, value2);
1591    });
1592    setTimeout(() => {
1593      if (el.style.length === 0) {
1594        el.removeAttribute("style");
1595      }
1596    });
1597    return () => {
1598      setStyles(el, previousStyles);
1599    };
1600  }
1601  function setStylesFromString(el, value) {
1602    let cache = el.getAttribute("style", value);
1603    el.setAttribute("style", value);
1604    return () => {
1605      el.setAttribute("style", cache || "");
1606    };
1607  }
1608  function kebabCase(subject) {
1609    return subject.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase();
1610  }
1611  function once(callback, fallback2 = () => {
1612  }) {
1613    let called = false;
1614    return function() {
1615      if (!called) {
1616        called = true;
1617        callback.apply(this, arguments);
1618      } else {
1619        fallback2.apply(this, arguments);
1620      }
1621    };
1622  }
1623  directive("transition", (el, { value, modifiers, expression }, { evaluate: evaluate22 }) => {
1624    if (typeof expression === "function")
1625      expression = evaluate22(expression);
1626    if (expression === false)
1627      return;
1628    if (!expression || typeof expression === "boolean") {
1629      registerTransitionsFromHelper(el, modifiers, value);
1630    } else {
1631      registerTransitionsFromClassString(el, expression, value);
1632    }
1633  });
1634  function registerTransitionsFromClassString(el, classString, stage) {
1635    registerTransitionObject(el, setClasses, "");
1636    let directiveStorageMap = {
1637      "enter": (classes) => {
1638        el._x_transition.enter.during = classes;
1639      },
1640      "enter-start": (classes) => {
1641        el._x_transition.enter.start = classes;
1642      },
1643      "enter-end": (classes) => {
1644        el._x_transition.enter.end = classes;
1645      },
1646      "leave": (classes) => {
1647        el._x_transition.leave.during = classes;
1648      },
1649      "leave-start": (classes) => {
1650        el._x_transition.leave.start = classes;
1651      },
1652      "leave-end": (classes) => {
1653        el._x_transition.leave.end = classes;
1654      }
1655    };
1656    directiveStorageMap[stage](classString);
1657  }
1658  function registerTransitionsFromHelper(el, modifiers, stage) {
1659    registerTransitionObject(el, setStyles);
1660    let doesntSpecify = !modifiers.includes("in") && !modifiers.includes("out") && !stage;
1661    let transitioningIn = doesntSpecify || modifiers.includes("in") || ["enter"].includes(stage);
1662    let transitioningOut = doesntSpecify || modifiers.includes("out") || ["leave"].includes(stage);
1663    if (modifiers.includes("in") && !doesntSpecify) {
1664      modifiers = modifiers.filter((i, index) => index < modifiers.indexOf("out"));
1665    }
1666    if (modifiers.includes("out") && !doesntSpecify) {
1667      modifiers = modifiers.filter((i, index) => index > modifiers.indexOf("out"));
1668    }
1669    let wantsAll = !modifiers.includes("opacity") && !modifiers.includes("scale");
1670    let wantsOpacity = wantsAll || modifiers.includes("opacity");
1671    let wantsScale = wantsAll || modifiers.includes("scale");
1672    let opacityValue = wantsOpacity ? 0 : 1;
1673    let scaleValue = wantsScale ? modifierValue(modifiers, "scale", 95) / 100 : 1;
1674    let delay3 = modifierValue(modifiers, "delay", 0) / 1e3;
1675    let origin = modifierValue(modifiers, "origin", "center");
1676    let property = "opacity, transform";
1677    let durationIn = modifierValue(modifiers, "duration", 150) / 1e3;
1678    let durationOut = modifierValue(modifiers, "duration", 75) / 1e3;
1679    let easing = `cubic-bezier(0.4, 0.0, 0.2, 1)`;
1680    if (transitioningIn) {
1681      el._x_transition.enter.during = {
1682        transformOrigin: origin,
1683        transitionDelay: `${delay3}s`,
1684        transitionProperty: property,
1685        transitionDuration: `${durationIn}s`,
1686        transitionTimingFunction: easing
1687      };
1688      el._x_transition.enter.start = {
1689        opacity: opacityValue,
1690        transform: `scale(${scaleValue})`
1691      };
1692      el._x_transition.enter.end = {
1693        opacity: 1,
1694        transform: `scale(1)`
1695      };
1696    }
1697    if (transitioningOut) {
1698      el._x_transition.leave.during = {
1699        transformOrigin: origin,
1700        transitionDelay: `${delay3}s`,
1701        transitionProperty: property,
1702        transitionDuration: `${durationOut}s`,
1703        transitionTimingFunction: easing
1704      };
1705      el._x_transition.leave.start = {
1706        opacity: 1,
1707        transform: `scale(1)`
1708      };
1709      el._x_transition.leave.end = {
1710        opacity: opacityValue,
1711        transform: `scale(${scaleValue})`
1712      };
1713    }
1714  }
1715  function registerTransitionObject(el, setFunction, defaultValue = {}) {
1716    if (!el._x_transition)
1717      el._x_transition = {
1718        enter: { during: defaultValue, start: defaultValue, end: defaultValue },
1719        leave: { during: defaultValue, start: defaultValue, end: defaultValue },
1720        in(before = () => {
1721        }, after = () => {
1722        }) {
1723          transition(el, setFunction, {
1724            during: this.enter.during,
1725            start: this.enter.start,
1726            end: this.enter.end
1727          }, before, after);
1728        },
1729        out(before = () => {
1730        }, after = () => {
1731        }) {
1732          transition(el, setFunction, {
1733            during: this.leave.during,
1734            start: this.leave.start,
1735            end: this.leave.end
1736          }, before, after);
1737        }
1738      };
1739  }
1740  window.Element.prototype._x_toggleAndCascadeWithTransitions = function(el, value, show, hide) {
1741    const nextTick2 = document.visibilityState === "visible" ? requestAnimationFrame : setTimeout;
1742    let clickAwayCompatibleShow = () => nextTick2(show);
1743    if (value) {
1744      if (el._x_transition && (el._x_transition.enter || el._x_transition.leave)) {
1745        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();
1746      } else {
1747        el._x_transition ? el._x_transition.in(show) : clickAwayCompatibleShow();
1748      }
1749      return;
1750    }
1751    el._x_hidePromise = el._x_transition ? new Promise((resolve, reject) => {
1752      el._x_transition.out(() => {
1753      }, () => resolve(hide));
1754      el._x_transitioning && el._x_transitioning.beforeCancel(() => reject({ isFromCancelledTransition: true }));
1755    }) : Promise.resolve(hide);
1756    queueMicrotask(() => {
1757      let closest = closestHide(el);
1758      if (closest) {
1759        if (!closest._x_hideChildren)
1760          closest._x_hideChildren = [];
1761        closest._x_hideChildren.push(el);
1762      } else {
1763        nextTick2(() => {
1764          let hideAfterChildren = (el2) => {
1765            let carry = Promise.all([
1766              el2._x_hidePromise,
1767              ...(el2._x_hideChildren || []).map(hideAfterChildren)
1768            ]).then(([i]) => i?.());
1769            delete el2._x_hidePromise;
1770            delete el2._x_hideChildren;
1771            return carry;
1772          };
1773          hideAfterChildren(el).catch((e) => {
1774            if (!e.isFromCancelledTransition)
1775              throw e;
1776          });
1777        });
1778      }
1779    });
1780  };
1781  function closestHide(el) {
1782    let parent = el.parentNode;
1783    if (!parent)
1784      return;
1785    return parent._x_hidePromise ? parent : closestHide(parent);
1786  }
1787  function transition(el, setFunction, { during, start: start22, end } = {}, before = () => {
1788  }, after = () => {
1789  }) {
1790    if (el._x_transitioning)
1791      el._x_transitioning.cancel();
1792    if (Object.keys(during).length === 0 && Object.keys(start22).length === 0 && Object.keys(end).length === 0) {
1793      before();
1794      after();
1795      return;
1796    }
1797    let undoStart, undoDuring, undoEnd;
1798    performTransition(el, {
1799      start() {
1800        undoStart = setFunction(el, start22);
1801      },
1802      during() {
1803        undoDuring = setFunction(el, during);
1804      },
1805      before,
1806      end() {
1807        undoStart();
1808        undoEnd = setFunction(el, end);
1809      },
1810      after,
1811      cleanup() {
1812        undoDuring();
1813        undoEnd();
1814      }
1815    });
1816  }
1817  function performTransition(el, stages) {
1818    let interrupted, reachedBefore, reachedEnd;
1819    let finish = once(() => {
1820      mutateDom(() => {
1821        interrupted = true;
1822        if (!reachedBefore)
1823          stages.before();
1824        if (!reachedEnd) {
1825          stages.end();
1826          releaseNextTicks();
1827        }
1828        stages.after();
1829        if (el.isConnected)
1830          stages.cleanup();
1831        delete el._x_transitioning;
1832      });
1833    });
1834    el._x_transitioning = {
1835      beforeCancels: [],
1836      beforeCancel(callback) {
1837        this.beforeCancels.push(callback);
1838      },
1839      cancel: once(function() {
1840        while (this.beforeCancels.length) {
1841          this.beforeCancels.shift()();
1842        }
1843        ;
1844        finish();
1845      }),
1846      finish
1847    };
1848    mutateDom(() => {
1849      stages.start();
1850      stages.during();
1851    });
1852    holdNextTicks();
1853    requestAnimationFrame(() => {
1854      if (interrupted)
1855        return;
1856      let duration = Number(getComputedStyle(el).transitionDuration.replace(/,.*/, "").replace("s", "")) * 1e3;
1857      let delay3 = Number(getComputedStyle(el).transitionDelay.replace(/,.*/, "").replace("s", "")) * 1e3;
1858      if (duration === 0)
1859        duration = Number(getComputedStyle(el).animationDuration.replace("s", "")) * 1e3;
1860      mutateDom(() => {
1861        stages.before();
1862      });
1863      reachedBefore = true;
1864      requestAnimationFrame(() => {
1865        if (interrupted)
1866          return;
1867        mutateDom(() => {
1868          stages.end();
1869        });
1870        releaseNextTicks();
1871        setTimeout(el._x_transitioning.finish, duration + delay3);
1872        reachedEnd = true;
1873      });
1874    });
1875  }
1876  function modifierValue(modifiers, key, fallback2) {
1877    if (modifiers.indexOf(key) === -1)
1878      return fallback2;
1879    const rawValue = modifiers[modifiers.indexOf(key) + 1];
1880    if (!rawValue)
1881      return fallback2;
1882    if (key === "scale") {
1883      if (isNaN(rawValue))
1884        return fallback2;
1885    }
1886    if (key === "duration" || key === "delay") {
1887      let match = rawValue.match(/([0-9]+)ms/);
1888      if (match)
1889        return match[1];
1890    }
1891    if (key === "origin") {
1892      if (["top", "right", "left", "center", "bottom"].includes(modifiers[modifiers.indexOf(key) + 2])) {
1893        return [rawValue, modifiers[modifiers.indexOf(key) + 2]].join(" ");
1894      }
1895    }
1896    return rawValue;
1897  }
1898  var isCloning = false;
1899  function skipDuringClone(callback, fallback2 = () => {
1900  }) {
1901    return (...args) => isCloning ? fallback2(...args) : callback(...args);
1902  }
1903  function onlyDuringClone(callback) {
1904    return (...args) => isCloning && callback(...args);
1905  }
1906  var interceptors = [];
1907  function interceptClone(callback) {
1908    interceptors.push(callback);
1909  }
1910  function cloneNode(from, to) {
1911    interceptors.forEach((i) => i(from, to));
1912    isCloning = true;
1913    dontRegisterReactiveSideEffects(() => {
1914      initTree(to, (el, callback) => {
1915        callback(el, () => {
1916        });
1917      });
1918    });
1919    isCloning = false;
1920  }
1921  var isCloningLegacy = false;
1922  function clone(oldEl, newEl) {
1923    if (!newEl._x_dataStack)
1924      newEl._x_dataStack = oldEl._x_dataStack;
1925    isCloning = true;
1926    isCloningLegacy = true;
1927    dontRegisterReactiveSideEffects(() => {
1928      cloneTree(newEl);
1929    });
1930    isCloning = false;
1931    isCloningLegacy = false;
1932  }
1933  function cloneTree(el) {
1934    let hasRunThroughFirstEl = false;
1935    let shallowWalker = (el2, callback) => {
1936      walk(el2, (el3, skip) => {
1937        if (hasRunThroughFirstEl && isRoot(el3))
1938          return skip();
1939        hasRunThroughFirstEl = true;
1940        callback(el3, skip);
1941      });
1942    };
1943    initTree(el, shallowWalker);
1944  }
1945  function dontRegisterReactiveSideEffects(callback) {
1946    let cache = effect;
1947    overrideEffect((callback2, el) => {
1948      let storedEffect = cache(callback2);
1949      release(storedEffect);
1950      return () => {
1951      };
1952    });
1953    callback();
1954    overrideEffect(cache);
1955  }
1956  function bind(el, name, value, modifiers = []) {
1957    if (!el._x_bindings)
1958      el._x_bindings = reactive({});
1959    el._x_bindings[name] = value;
1960    name = modifiers.includes("camel") ? camelCase(name) : name;
1961    switch (name) {
1962      case "value":
1963        bindInputValue(el, value);
1964        break;
1965      case "style":
1966        bindStyles(el, value);
1967        break;
1968      case "class":
1969        bindClasses(el, value);
1970        break;
1971      case "selected":
1972      case "checked":
1973        bindAttributeAndProperty(el, name, value);
1974        break;
1975      default:
1976        bindAttribute(el, name, value);
1977        break;
1978    }
1979  }
1980  function bindInputValue(el, value) {
1981    if (el.type === "radio") {
1982      if (el.attributes.value === void 0) {
1983        el.value = value;
1984      }
1985      if (window.fromModel) {
1986        if (typeof value === "boolean") {
1987          el.checked = safeParseBoolean(el.value) === value;
1988        } else {
1989          el.checked = checkedAttrLooseCompare(el.value, value);
1990        }
1991      }
1992    } else if (el.type === "checkbox") {
1993      if (Number.isInteger(value)) {
1994        el.value = value;
1995      } else if (!Array.isArray(value) && typeof value !== "boolean" && ![null, void 0].includes(value)) {
1996        el.value = String(value);
1997      } else {
1998        if (Array.isArray(value)) {
1999          el.checked = value.some((val) => checkedAttrLooseCompare(val, el.value));
2000        } else {
2001          el.checked = !!value;
2002        }
2003      }
2004    } else if (el.tagName === "SELECT") {
2005      updateSelect(el, value);
2006    } else {
2007      if (el.value === value)
2008        return;
2009      el.value = value === void 0 ? "" : value;
2010    }
2011  }
2012  function bindClasses(el, value) {
2013    if (el._x_undoAddedClasses)
2014      el._x_undoAddedClasses();
2015    el._x_undoAddedClasses = setClasses(el, value);
2016  }
2017  function bindStyles(el, value) {
2018    if (el._x_undoAddedStyles)
2019      el._x_undoAddedStyles();
2020    el._x_undoAddedStyles = setStyles(el, value);
2021  }
2022  function bindAttributeAndProperty(el, name, value) {
2023    bindAttribute(el, name, value);
2024    setPropertyIfChanged(el, name, value);
2025  }
2026  function bindAttribute(el, name, value) {
2027    if ([null, void 0, false].includes(value) && attributeShouldntBePreservedIfFalsy(name)) {
2028      el.removeAttribute(name);
2029    } else {
2030      if (isBooleanAttr(name))
2031        value = name;
2032      setIfChanged(el, name, value);
2033    }
2034  }
2035  function setIfChanged(el, attrName, value) {
2036    if (el.getAttribute(attrName) != value) {
2037      el.setAttribute(attrName, value);
2038    }
2039  }
2040  function setPropertyIfChanged(el, propName, value) {
2041    if (el[propName] !== value) {
2042      el[propName] = value;
2043    }
2044  }
2045  function updateSelect(el, value) {
2046    const arrayWrappedValue = [].concat(value).map((value2) => {
2047      return value2 + "";
2048    });
2049    Array.from(el.options).forEach((option) => {
2050      option.selected = arrayWrappedValue.includes(option.value);
2051    });
2052  }
2053  function camelCase(subject) {
2054    return subject.toLowerCase().replace(/-(\w)/g, (match, char) => char.toUpperCase());
2055  }
2056  function checkedAttrLooseCompare(valueA, valueB) {
2057    return valueA == valueB;
2058  }
2059  function safeParseBoolean(rawValue) {
2060    if ([1, "1", "true", "on", "yes", true].includes(rawValue)) {
2061      return true;
2062    }
2063    if ([0, "0", "false", "off", "no", false].includes(rawValue)) {
2064      return false;
2065    }
2066    return rawValue ? Boolean(rawValue) : null;
2067  }
2068  function isBooleanAttr(attrName) {
2069    const booleanAttributes = [
2070      "disabled",
2071      "checked",
2072      "required",
2073      "readonly",
2074      "open",
2075      "selected",
2076      "autofocus",
2077      "itemscope",
2078      "multiple",
2079      "novalidate",
2080      "allowfullscreen",
2081      "allowpaymentrequest",
2082      "formnovalidate",
2083      "autoplay",
2084      "controls",
2085      "loop",
2086      "muted",
2087      "playsinline",
2088      "default",
2089      "ismap",
2090      "reversed",
2091      "async",
2092      "defer",
2093      "nomodule"
2094    ];
2095    return booleanAttributes.includes(attrName);
2096  }
2097  function attributeShouldntBePreservedIfFalsy(name) {
2098    return !["aria-pressed", "aria-checked", "aria-expanded", "aria-selected"].includes(name);
2099  }
2100  function getBinding(el, name, fallback2) {
2101    if (el._x_bindings && el._x_bindings[name] !== void 0)
2102      return el._x_bindings[name];
2103    return getAttributeBinding(el, name, fallback2);
2104  }
2105  function extractProp(el, name, fallback2, extract = true) {
2106    if (el._x_bindings && el._x_bindings[name] !== void 0)
2107      return el._x_bindings[name];
2108    if (el._x_inlineBindings && el._x_inlineBindings[name] !== void 0) {
2109      let binding = el._x_inlineBindings[name];
2110      binding.extract = extract;
2111      return dontAutoEvaluateFunctions(() => {
2112        return evaluate(el, binding.expression);
2113      });
2114    }
2115    return getAttributeBinding(el, name, fallback2);
2116  }
2117  function getAttributeBinding(el, name, fallback2) {
2118    let attr = el.getAttribute(name);
2119    if (attr === null)
2120      return typeof fallback2 === "function" ? fallback2() : fallback2;
2121    if (attr === "")
2122      return true;
2123    if (isBooleanAttr(name)) {
2124      return !![name, "true"].includes(attr);
2125    }
2126    return attr;
2127  }
2128  function debounce(func, wait) {
2129    var timeout;
2130    return function() {
2131      var context = this, args = arguments;
2132      var later = function() {
2133        timeout = null;
vendor: 1,392 bytes, lines 2134-2181
2134        func.apply(context, args);
2135      };
2136      clearTimeout(timeout);
2137      timeout = setTimeout(later, wait);
2138    };
2139  }
2140  function throttle(func, limit) {
2141    let inThrottle;
2142    return function() {
2143      let context = this, args = arguments;
2144      if (!inThrottle) {
2145        func.apply(context, args);
2146        inThrottle = true;
2147        setTimeout(() => inThrottle = false, limit);
2148      }
2149    };
2150  }
2151  function entangle({ get: outerGet, set: outerSet }, { get: innerGet, set: innerSet }) {
2152    let firstRun = true;
2153    let outerHash;
2154    let innerHash;
2155    let reference = effect(() => {
2156      let outer = outerGet();
2157      let inner = innerGet();
2158      if (firstRun) {
2159        innerSet(cloneIfObject(outer));
2160        firstRun = false;
2161      } else {
2162        let outerHashLatest = JSON.stringify(outer);
2163        let innerHashLatest = JSON.stringify(inner);
2164        if (outerHashLatest !== outerHash) {
2165          innerSet(cloneIfObject(outer));
2166        } else if (outerHashLatest !== innerHashLatest) {
2167          outerSet(cloneIfObject(inner));
2168        } else {
2169        }
2170      }
2171      outerHash = JSON.stringify(outerGet());
2172      innerHash = JSON.stringify(innerGet());
2173    });
2174    return () => {
2175      release(reference);
2176    };
2177  }
2178  function cloneIfObject(value) {
2179    return typeof value === "object" ? JSON.parse(JSON.stringify(value)) : value;
2180  }
2181  function plugin(callback) {
2182    let callbacks = Array.isArray(callback) ? callback : [callback];
2183    callbacks.forEach((i) => i(alpine_default));
2184  }
2185  var stores = {};
2186  var isReactive = false;
2187  function store(name, value) {
2188    if (!isReactive) {
2189      stores = reactive(stores);
2190      isReactive = true;
2191    }
2192    if (value === void 0) {
2193      return stores[name];
2194    }
2195    stores[name] = value;
2196    if (typeof value === "object" && value !== null && value.hasOwnProperty("init") && typeof value.init === "function") {
2197      stores[name].init();
2198    }
2199    initInterceptors(stores[name]);
2200  }
2201  function getStores() {
2202    return stores;
2203  }
2204  var binds = {};
2205  function bind2(name, bindings) {
2206    let getBindings = typeof bindings !== "function" ? () => bindings : bindings;
2207    if (name instanceof Element) {
2208      return applyBindingsObject(name, getBindings());
2209    } else {
2210      binds[name] = getBindings;
2211    }
2212    return () => {
2213    };
2214  }
2215  function injectBindingProviders(obj) {
2216    Object.entries(binds).forEach(([name, callback]) => {
2217      Object.defineProperty(obj, name, {
2218        get() {
2219          return (...args) => {
2220            return callback(...args);
2221          };
2222        }
2223      });
2224    });
2225    return obj;
2226  }
2227  function applyBindingsObject(el, obj, original) {
2228    let cleanupRunners = [];
2229    while (cleanupRunners.length)
2230      cleanupRunners.pop()();
2231    let attributes = Object.entries(obj).map(([name, value]) => ({ name, value }));
2232    let staticAttributes = attributesOnly(attributes);
2233    attributes = attributes.map((attribute) => {
2234      if (staticAttributes.find((attr) => attr.name === attribute.name)) {
2235        return {
2236          name: `x-bind:${attribute.name}`,
2237          value: `"${attribute.value}"`
2238        };
2239      }
2240      return attribute;
2241    });
2242    directives(el, attributes, original).map((handle) => {
2243      cleanupRunners.push(handle.runCleanups);
2244      handle();
2245    });
2246    return () => {
2247      while (cleanupRunners.length)
2248        cleanupRunners.pop()();
2249    };
2250  }
2251  var datas = {};
2252  function data(name, callback) {
2253    datas[name] = callback;
2254  }
2255  function injectDataProviders(obj, context) {
2256    Object.entries(datas).forEach(([name, callback]) => {
2257      Object.defineProperty(obj, name, {
2258        get() {
2259          return (...args) => {
2260            return callback.bind(context)(...args);
2261          };
2262        },
2263        enumerable: false
2264      });
2265    });
2266    return obj;
2267  }
2268  var Alpine2 = {
2269    get reactive() {
2270      return reactive;
2271    },
2272    get release() {
2273      return release;
2274    },
2275    get effect() {
2276      return effect;
2277    },
2278    get raw() {
2279      return raw;
2280    },
2281    version: "3.14.0",
2282    flushAndStopDeferringMutations,
2283    dontAutoEvaluateFunctions,
2284    disableEffectScheduling,
2285    startObservingMutations,
2286    stopObservingMutations,
2287    setReactivityEngine,
2288    onAttributeRemoved,
2289    onAttributesAdded,
2290    closestDataStack,
2291    skipDuringClone,
2292    onlyDuringClone,
2293    addRootSelector,
2294    addInitSelector,
2295    interceptClone,
2296    addScopeToNode,
2297    deferMutations,
2298    mapAttributes,
2299    evaluateLater,
2300    interceptInit,
2301    setEvaluator,
2302    mergeProxies,
2303    extractProp,
2304    findClosest,
2305    onElRemoved,
2306    closestRoot,
2307    destroyTree,
2308    interceptor,
2309    transition,
2310    setStyles,
2311    mutateDom,
2312    directive,
2313    entangle,
2314    throttle,
2315    debounce,
2316    evaluate,
2317    initTree,
2318    nextTick,
2319    prefixed: prefix,
2320    prefix: setPrefix,
2321    plugin,
2322    magic,
2323    store,
2324    start,
2325    clone,
2326    cloneNode,
2327    bound: getBinding,
2328    $data: scope,
2329    watch,
2330    walk,
2331    data,
2332    bind: bind2
2333  };
2334  var alpine_default = Alpine2;
2335  function makeMap(str, expectsLowerCase) {
2336    const map = /* @__PURE__ */ Object.create(null);
2337    const list = str.split(",");
2338    for (let i = 0; i < list.length; i++) {
2339      map[list[i]] = true;
2340    }
2341    return expectsLowerCase ? (val) => !!map[val.toLowerCase()] : (val) => !!map[val];
2342  }
2343  var specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;
2344  var isBooleanAttr2 = /* @__PURE__ */ makeMap(specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,loop,open,required,reversed,scoped,seamless,
2344checked,muted,multiple,selected`);
2345  var EMPTY_OBJ = true ? Object.freeze({}) : {};
2346  var EMPTY_ARR = true ? Object.freeze([]) : [];
2347  var hasOwnProperty = Object.prototype.hasOwnProperty;
2348  var hasOwn = (val, key) => hasOwnProperty.call(val, key);
2349  var isArray2 = Array.isArray;
2350  var isMap = (val) => toTypeString(val) === "[object Map]";
2351  var isString = (val) => typeof val === "string";
2352  var isSymbol = (val) => typeof val === "symbol";
2353  var isObject2 = (val) => val !== null && typeof val === "object";
2354  var objectToString = Object.prototype.toString;
2355  var toTypeString = (value) => objectToString.call(value);
2356  var toRawType = (value) => {
2357    return toTypeString(value).slice(8, -1);
2358  };
2359  var isIntegerKey = (key) => isString(key) && key !== "NaN" && key[0] !== "-" && "" + parseInt(key, 10) === key;
2360  var cacheStringFunction = (fn) => {
2361    const cache = /* @__PURE__ */ Object.create(null);
2362    return (str) => {
2363      const hit = cache[str];
2364      return hit || (cache[str] = fn(str));
2365    };
2366  };
2367  var camelizeRE = /-(\w)/g;
2368  var camelize = cacheStringFunction((str) => {
2369    return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : "");
2370  });
2371  var hyphenateRE = /\B([A-Z])/g;
2372  var hyphenate = cacheStringFunction((str) => str.replace(hyphenateRE, "-$1").toLowerCase());
2373  var capitalize = cacheStringFunction((str) => str.charAt(0).toUpperCase() + str.slice(1));
2374  var toHandlerKey = cacheStringFunction((str) => str ? `on${capitalize(str)}` : ``);
2375  var hasChanged = (value, oldValue) => value !== oldValue && (value === value || oldValue === oldValue);
2376  var targetMap = /* @__PURE__ */ new WeakMap();
2377  var effectStack = [];
2378  var activeEffect;
2379  var ITERATE_KEY = Symbol(true ? "iterate" : "");
2380  var MAP_KEY_ITERATE_KEY = Symbol(true ? "Map key iterate" : "");
2381  function isEffect(fn) {
2382    return fn && fn._isEffect === true;
2383  }
2384  function effect2(fn, options = EMPTY_OBJ) {
2385    if (isEffect(fn)) {
2386      fn = fn.raw;
2387    }
2388    const effect3 = createReactiveEffect(fn, options);
2389    if (!options.lazy) {
2390      effect3();
2391    }
2392    return effect3;
2393  }
2394  function stop(effect3) {
2395    if (effect3.active) {
2396      cleanup(effect3);
2397      if (effect3.options.onStop) {
2398        effect3.options.onStop();
2399      }
2400      effect3.active = false;
2401    }
2402  }
2403  var uid = 0;
2404  function createReactiveEffect(fn, options) {
2405    const effect3 = function reactiveEffect() {
2406      if (!effect3.active) {
2407        return fn();
2408      }
2409      if (!effectStack.includes(effect3)) {
2410        cleanup(effect3);
2411        try {
2412          enableTracking();
2413          effectStack.push(effect3);
2414          activeEffect = effect3;
2415          return fn();
2416        } finally {
2417          effectStack.pop();
2418          resetTracking();
2419          activeEffect = effectStack[effectStack.length - 1];
2420        }
2421      }
2422    };
2423    effect3.id = uid++;
2424    effect3.allowRecurse = !!options.allowRecurse;
2425    effect3._isEffect = true;
2426    effect3.active = true;
2427    effect3.raw = fn;
2428    effect3.deps = [];
2429    effect3.options = options;
2430    return effect3;
2431  }
2432  function cleanup(effect3) {
2433    const { deps } = effect3;
2434    if (deps.length) {
2435      for (let i = 0; i < deps.length; i++) {
2436        deps[i].delete(effect3);
2437      }
2438      deps.length = 0;
2439    }
2440  }
2441  var shouldTrack = true;
2442  var trackStack = [];
2443  function pauseTracking() {
2444    trackStack.push(shouldTrack);
2445    shouldTrack = false;
2446  }
2447  function enableTracking() {
2448    trackStack.push(shouldTrack);
2449    shouldTrack = true;
2450  }
2451  function resetTracking() {
2452    const last = trackStack.pop();
2453    shouldTrack = last === void 0 ? true : last;
2454  }
2455  function track(target, type, key) {
2456    if (!shouldTrack || activeEffect === void 0) {
2457      return;
2458    }
2459    let depsMap = targetMap.get(target);
2460    if (!depsMap) {
2461      targetMap.set(target, depsMap = /* @__PURE__ */ new Map());
2462    }
2463    let dep = depsMap.get(key);
2464    if (!dep) {
2465      depsMap.set(key, dep = /* @__PURE__ */ new Set());
2466    }
2467    if (!dep.has(activeEffect)) {
2468      dep.add(activeEffect);
2469      activeEffect.deps.push(dep);
2470      if (activeEffect.options.onTrack) {
2471        activeEffect.options.onTrack({
2472          effect: activeEffect,
2473          target,
2474          type,
2475          key
2476        });
2477      }
2478    }
2479  }
2480  function trigger(target, type, key, newValue, oldValue, oldTarget) {
2481    const depsMap = targetMap.get(target);
2482    if (!depsMap) {
2483      return;
2484    }
2485    const effects = /* @__PURE__ */ new Set();
2486    const add2 = (effectsToAdd) => {
2487      if (effectsToAdd) {
2488        effectsToAdd.forEach((effect3) => {
2489          if (effect3 !== activeEffect || effect3.allowRecurse) {
2490            effects.add(effect3);
2491          }
2492        });
2493      }
2494    };
2495    if (type === "clear") {
2496      depsMap.forEach(add2);
2497    } else if (key === "length" && isArray2(target)) {
2498      depsMap.forEach((dep, key2) => {
2499        if (key2 === "length" || key2 >= newValue) {
2500          add2(dep);
2501        }
2502      });
2503    } else {
2504      if (key !== void 0) {
2505        add2(depsMap.get(key));
2506      }
2507      switch (type) {
2508        case "add":
2509          if (!isArray2(target)) {
2510            add2(depsMap.get(ITERATE_KEY));
2511            if (isMap(target)) {
2512              add2(depsMap.get(MAP_KEY_ITERATE_KEY));
2513            }
2514          } else if (isIntegerKey(key)) {
2515            add2(depsMap.get("length"));
2516          }
2517          break;
2518        case "delete":
2519          if (!isArray2(target)) {
2520            add2(depsMap.get(ITERATE_KEY));
2521            if (isMap(target)) {
2522              add2(depsMap.get(MAP_KEY_ITERATE_KEY));
2523            }
2524          }
2525          break;
2526        case "set":
2527          if (isMap(target)) {
2528            add2(depsMap.get(ITERATE_KEY));
2529          }
2530          break;
2531      }
2532    }
2533    const run = (effect3) => {
2534      if (effect3.options.onTrigger) {
2535        effect3.options.onTrigger({
2536          effect: effect3,
2537          target,
2538          key,
2539          type,
2540          newValue,
2541          oldValue,
2542          oldTarget
2543        });
2544      }
2545      if (effect3.options.scheduler) {
2546        effect3.options.scheduler(effect3);
2547      } else {
2548        effect3();
2549      }
2550    };
2551    effects.forEach(run);
2552  }
2553  var isNonTrackableKeys = /* @__PURE__ */ makeMap(`__proto__,__v_isRef,__isVue`);
2554  var builtInSymbols = new Set(Object.getOwnPropertyNames(Symbol).map((key) => Symbol[key]).filter(isSymbol));
2555  var get2 = /* @__PURE__ */ createGetter();
2556  var readonlyGet = /* @__PURE__ */ createGetter(true);
2557  var arrayInstrumentations = /* @__PURE__ */ createArrayInstrumentations();
2558  function createArrayInstrumentations() {
2559    const instrumentations = {};
2560    ["includes", "indexOf", "lastIndexOf"].forEach((key) => {
2561      instrumentations[key] = function(...args) {
2562        const arr = toRaw(this);
2563        for (let i = 0, l = this.length; i < l; i++) {
2564          track(arr, "get", i + "");
2565        }
2566        const res = arr[key](...args);
2567        if (res === -1 || res === false) {
2568          return arr[key](...args.map(toRaw));
2569        } else {
2570          return res;
2571        }
2572      };
2573    });
2574    ["push", "pop", "shift", "unshift", "splice"].forEach((key) => {
2575      instrumentations[key] = function(...args) {
2576        pauseTracking();
2577        const res = toRaw(this)[key].apply(this, args);
2578        resetTracking();
2579        return res;
2580      };
2581    });
2582    return instrumentations;
2583  }
2584  function createGetter(isReadonly = false, shallow = false) {
2585    return function get3(target, key, receiver) {
2586      if (key === "__v_isReactive") {
2587        return !isReadonly;
2588      } else if (key === "__v_isReadonly") {
2589        return isReadonly;
2590      } else if (key === "__v_raw" && receiver === (isReadonly ? shallow ? shallowReadonlyMap : readonlyMap : shallow ? shallowReactiveMap : reactiveMap).get(target)) {
2591        return target;
2592      }
2593      const targetIsArray = isArray2(target);
2594      if (!isReadonly && targetIsArray && hasOwn(arrayInstrumentations, key)) {
2595        return Reflect.get(arrayInstrumentations, key, receiver);
2596      }
2597      const res = Reflect.get(target, key, receiver);
2598      if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) {
2599        return res;
2600      }
2601      if (!isReadonly) {
2602        track(target, "get", key);
2603      }
2604      if (shallow) {
2605        return res;
2606      }
2607      if (isRef(res)) {
2608        const shouldUnwrap = !targetIsArray || !isIntegerKey(key);
2609        return shouldUnwrap ? res.value : res;
2610      }
2611      if (isObject2(res)) {
2612        return isReadonly ? readonly(res) : reactive2(res);
2613      }
2614      return res;
2615    };
2616  }
2617  var set2 = /* @__PURE__ */ createSetter();
2618  function createSetter(shallow = false) {
2619    return function set3(target, key, value, receiver) {
2620      let oldValue = target[key];
2621      if (!shallow) {
2622        value = toRaw(value);
2623        oldValue = toRaw(oldValue);
2624        if (!isArray2(target) && isRef(oldValue) && !isRef(value)) {
2625          oldValue.value = value;
2626          return true;
2627        }
2628      }
2629      const hadKey = isArray2(target) && isIntegerKey(key) ? Number(key) < target.length : hasOwn(target, key);
2630      const result = Reflect.set(target, key, value, receiver);
2631      if (target === toRaw(receiver)) {
2632        if (!hadKey) {
2633          trigger(target, "add", key, value);
2634        } else if (hasChanged(value, oldValue)) {
2635          trigger(target, "set", key, value, oldValue);
2636        }
2637      }
2638      return result;
2639    };
2640  }
2641  function deleteProperty(target, key) {
2642    const hadKey = hasOwn(target, key);
2643    const oldValue = target[key];
2644    const result = Reflect.deleteProperty(target, key);
2645    if (result && hadKey) {
2646      trigger(target, "delete", key, void 0, oldValue);
2647    }
2648    return result;
2649  }
2650  function has(target, key) {
2651    const result = Reflect.has(target, key);
2652    if (!isSymbol(key) || !builtInSymbols.has(key)) {
2653      track(target, "has", key);
2654    }
2655    return result;
2656  }
2657  function ownKeys(target) {
2658    track(target, "iterate", isArray2(target) ? "length" : ITERATE_KEY);
2659    return Reflect.ownKeys(target);
2660  }
2661  var mutableHandlers = {
2662    get: get2,
2663    set: set2,
2664    deleteProperty,
2665    has,
2666    ownKeys
2667  };
2668  var readonlyHandlers = {
2669    get: readonlyGet,
2670    set(target, key) {
2671      if (true) {
2672        console.warn(`Set operation on key "${String(key)}" failed: target is readonly.`, target);
2673      }
2674      return true;
2675    },
2676    deleteProperty(target, key) {
2677      if (true) {
2678        console.warn(`Delete operation on key "${String(key)}" failed: target is readonly.`, target);
2679      }
2680      return true;
2681    }
2682  };
2683  var toReactive = (value) => isObject2(value) ? reactive2(value) : value;
2684  var toReadonly = (value) => isObject2(value) ? readonly(value) : value;
2685  var toShallow = (value) => value;
2686  var getProto = (v) => Reflect.getPrototypeOf(v);
2687  function get$1(target, key, isReadonly = false, isShallow = false) {
2688    target = target["__v_raw"];
2689    const rawTarget = toRaw(target);
2690    const rawKey = toRaw(key);
2691    if (key !== rawKey) {
2692      !isReadonly && track(rawTarget, "get", key);
2693    }
2694    !isReadonly && track(rawTarget, "get", rawKey);
2695    const { has: has2 } = getProto(rawTarget);
2696    const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;
2697    if (has2.call(rawTarget, key)) {
2698      return wrap(target.get(key));
2699    } else if (has2.call(rawTarget, rawKey)) {
2700      return wrap(target.get(rawKey));
2701    } else if (target !== rawTarget) {
2702      target.get(key);
2703    }
2704  }
2705  function has$1(key, isReadonly = false) {
2706    const target = this["__v_raw"];
2707    const rawTarget = toRaw(target);
2708    const rawKey = toRaw(key);
2709    if (key !== rawKey) {
2710      !isReadonly && track(rawTarget, "has", key);
2711    }
2712    !isReadonly && track(rawTarget, "has", rawKey);
2713    return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey);
2714  }
2715  function size(target, isReadonly = false) {
2716    target = target["__v_raw"];
2717    !isReadonly && track(toRaw(target), "iterate", ITERATE_KEY);
2718    return Reflect.get(target, "size", target);
2719  }
2720  function add(value) {
2721    value = toRaw(value);
2722    const target = toRaw(this);
2723    const proto = getProto(target);
2724    const hadKey = proto.has.call(target, value);
2725    if (!hadKey) {
2726      target.add(value);
2727      trigger(target, "add", value, value);
2728    }
2729    return this;
2730  }
2731  function set$1(key, value) {
2732    value = toRaw(value);
2733    const target = toRaw(this);
2734    const { has: has2, get: get3 } = getProto(target);
2735    let hadKey = has2.call(target, key);
2736    if (!hadKey) {
2737      key = toRaw(key);
2738      hadKey = has2.call(target, key);
2739    } else if (true) {
2740      checkIdentityKeys(target, has2, key);
2741    }
2742    const oldValue = get3.call(target, key);
2743    target.set(key, value);
2744    if (!hadKey) {
2745      trigger(target, "add", key, value);
2746    } else if (hasChanged(value, oldValue)) {
2747      trigger(target, "set", key, value, oldValue);
2748    }
2749    return this;
2750  }
2751  function deleteEntry(key) {
2752    const target = toRaw(this);
2753    const { has: has2, get: get3 } = getProto(target);
2754    let hadKey = has2.call(target, key);
2755    if (!hadKey) {
2756      key = toRaw(key);
2757      hadKey = has2.call(target, key);
2758    } else if (true) {
2759      checkIdentityKeys(target, has2, key);
2760    }
2761    const oldValue = get3 ? get3.call(target, key) : void 0;
2762    const result = target.delete(key);
2763    if (hadKey) {
2764      trigger(target, "delete", key, void 0, oldValue);
2765    }
2766    return result;
2767  }
2768  function clear() {
2769    const target = toRaw(this);
2770    const hadItems = target.size !== 0;
2771    const oldTarget = true ? isMap(target) ? new Map(target) : new Set(target) : void 0;
2772    const result = target.clear();
2773    if (hadItems) {
2774      trigger(target, "clear", void 0, void 0, oldTarget);
2775    }
2776    return result;
2777  }
2778  function createForEach(isReadonly, isShallow) {
2779    return function forEach(callback, thisArg) {
2780      const observed = this;
2781      const target = observed["__v_raw"];
2782      const rawTarget = toRaw(target);
2783      const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;
2784      !isReadonly && track(rawTarget, "iterate", ITERATE_KEY);
2785      return target.forEach((value, key) => {
2786        return callback.call(thisArg, wrap(value), wrap(key), observed);
2787      });
2788    };
2789  }
2790  function createIterableMethod(method, isReadonly, isShallow) {
2791    return function(...args) {
2792      const target = this["__v_raw"];
2793      const rawTarget = toRaw(target);
2794      const targetIsMap = isMap(rawTarget);
2795      const isPair = method === "entries" || method === Symbol.iterator && targetIsMap;
2796      const isKeyOnly = method === "keys" && targetIsMap;
2797      const innerIterator = target[method](...args);
2798      const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;
2799      !isReadonly && track(rawTarget, "iterate", isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY);
2800      return {
2801        next() {
2802          const { value, done } = innerIterator.next();
2803          return done ? { value, done } : {
2804            value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value),
2805            done
2806          };
2807        },
2808        [Symbol.iterator]() {
2809          return this;
2810        }
2811      };
2812    };
2813  }
2814  function createReadonlyMethod(type) {
2815    return function(...args) {
2816      if (true) {
2817        const key = args[0] ? `on key "${args[0]}" ` : ``;
2818        console.warn(`${capitalize(type)} operation ${key}failed: target is readonly.`, toRaw(this));
2819      }
2820      return type === "delete" ? false : this;
2821    };
2822  }
2823  function createInstrumentations() {
2824    const mutableInstrumentations2 = {
2825      get(key) {
2826        return get$1(this, key);
2827      },
2828      get size() {
2829        return size(this);
2830      },
2831      has: has$1,
2832      add,
2833      set: set$1,
2834      delete: deleteEntry,
2835      clear,
2836      forEach: createForEach(false, false)
2837    };
2838    const shallowInstrumentations2 = {
2839      get(key) {
2840        return get$1(this, key, false, true);
2841      },
2842      get size() {
2843        return size(this);
2844      },
2845      has: has$1,
2846      add,
2847      set: set$1,
2848      delete: deleteEntry,
2849      clear,
2850      forEach: createForEach(false, true)
2851    };
2852    const readonlyInstrumentations2 = {
2853      get(key) {
2854        return get$1(this, key, true);
2855      },
2856      get size() {
2857        return size(this, true);
2858      },
2859      has(key) {
2860        return has$1.call(this, key, true);
2861      },
2862      add: createReadonlyMethod("add"),
2863      set: createReadonlyMethod("set"),
2864      delete: createReadonlyMethod("delete"),
2865      clear: createReadonlyMethod("clear"),
2866      forEach: createForEach(true, false)
2867    };
2868    const shallowReadonlyInstrumentations2 = {
2869      get(key) {
2870        return get$1(this, key, true, true);
2871      },
2872      get size() {
2873        return size(this, true);
2874      },
2875      has(key) {
2876        return has$1.call(this, key, true);
2877      },
2878      add: createReadonlyMethod("add"),
2879      set: createReadonlyMethod("set"),
2880      delete: createReadonlyMethod("delete"),
2881      clear: createReadonlyMethod("clear"),
2882      forEach: createForEach(true, true)
2883    };
2884    const iteratorMethods = ["keys", "values", "entries", Symbol.iterator];
2885    iteratorMethods.forEach((method) => {
2886      mutableInstrumentations2[method] = createIterableMethod(method, false, false);
2887      readonlyInstrumentations2[method] = createIterableMethod(method, true, false);
2888      shallowInstrumentations2[method] = createIterableMethod(method, false, true);
2889      shallowReadonlyInstrumentations2[method] = createIterableMethod(method, true, true);
2890    });
2891    return [
2892      mutableInstrumentations2,
2893      readonlyInstrumentations2,
2894      shallowInstrumentations2,
2895      shallowReadonlyInstrumentations2
2896    ];
2897  }
2898  var [mutableInstrumentations, readonlyInstrumentations, shallowInstrumentations, shallowReadonlyInstrumentations] = /* @__PURE__ */ createInstrumentations();
2899  function createInstrumentationGetter(isReadonly, shallow) {
2900    const instrumentations = shallow ? isReadonly ? shallowReadonlyInstrumentations : shallowInstrumentations : isReadonly ? readonlyInstrumentations : mutableInstrumentations;
2901    return (target, key, receiver) => {
2902      if (key === "__v_isReactive") {
2903        return !isReadonly;
2904      } else if (key === "__v_isReadonly") {
2905        return isReadonly;
2906      } else if (key === "__v_raw") {
2907        return target;
2908      }
2909      return Reflect.get(hasOwn(instrumentations, key) && key in target ? instrumentations : target, key, receiver);
2910    };
2911  }
2912  var mutableCollectionHandlers = {
2913    get: /* @__PURE__ */ createInstrumentationGetter(false, false)
2914  };
2915  var readonlyCollectionHandlers = {
2916    get: /* @__PURE__ */ createInstrumentationGetter(true, false)
2917  };
2918  function checkIdentityKeys(target, has2, key) {
2919    const rawKey = toRaw(key);
2920    if (rawKey !== key && has2.call(target, rawKey)) {
2921      const type = toRawType(target);
2922      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.`);
2923    }
2924  }
2925  var reactiveMap = /* @__PURE__ */ new WeakMap();
2926  var shallowReactiveMap = /* @__PURE__ */ new WeakMap();
2927  var readonlyMap = /* @__PURE__ */ new WeakMap();
2928  var shallowReadonlyMap = /* @__PURE__ */ new WeakMap();
2929  function targetTypeMap(rawType) {
2930    switch (rawType) {
2931      case "Object":
2932      case "Array":
2933        return 1;
2934      case "Map":
2935      case "Set":
2936      case "WeakMap":
2937      case "WeakSet":
2938        return 2;
2939      default:
2940        return 0;
2941    }
2942  }
2943  function getTargetType(value) {
2944    return value["__v_skip"] || !Object.isExtensible(value) ? 0 : targetTypeMap(toRawType(value));
2945  }
2946  function reactive2(target) {
2947    if (target && target["__v_isReadonly"]) {
2948      return target;
2949    }
2950    return createReactiveObject(target, false, mutableHandlers, mutableCollectionHandlers, reactiveMap);
2951  }
2952  function readonly(target) {
2953    return createReactiveObject(target, true, readonlyHandlers, readonlyCollectionHandlers, readonlyMap);
2954  }
2955  function createReactiveObject(target, isReadonly, baseHandlers, collectionHandlers, proxyMap) {
2956    if (!isObject2(target)) {
2957      if (true) {
2958        console.warn(`value cannot be made reactive: ${String(target)}`);
2959      }
2960      return target;
2961    }
2962    if (target["__v_raw"] && !(isReadonly && target["__v_isReactive"])) {
2963      return target;
2964    }
2965    const existingProxy = proxyMap.get(target);
2966    if (existingProxy) {
2967      return existingProxy;
2968    }
2969    const targetType = getTargetType(target);
2970    if (targetType === 0) {
2971      return target;
2972    }
2973    const proxy = new Proxy(target, targetType === 2 ? collectionHandlers : baseHandlers);
2974    proxyMap.set(target, proxy);
2975    return proxy;
2976  }
2977  function toRaw(observed) {
2978    return observed && toRaw(observed["__v_raw"]) || observed;
2979  }
2980  function isRef(r) {
2981    return Boolean(r && r.__v_isRef === true);
2982  }
2983  magic("nextTick", () => nextTick);
2984  magic("dispatch", (el) => dispatch2.bind(dispatch2, el));
2985  magic("watch", (el, { evaluateLater: evaluateLater2, cleanup: cleanup2 }) => (key, callback) => {
2986    let evaluate22 = evaluateLater2(key);
2987    let getter = () => {
2988      let value;
2989      evaluate22((i) => value = i);
2990      return value;
2991    };
2992    let unwatch = watch(getter, callback);
2993    cleanup2(unwatch);
2994  });
vendor: 18,946 bytes, lines 2995-3520
2995  magic("store", getStores);
2996  magic("data", (el) => scope(el));
2997  magic("root", (el) => closestRoot(el));
2998  magic("refs", (el) => {
2999    if (el._x_refs_proxy)
3000      return el._x_refs_proxy;
3001    el._x_refs_proxy = mergeProxies(getArrayOfRefObject(el));
3002    return el._x_refs_proxy;
3003  });
3004  function getArrayOfRefObject(el) {
3005    let refObjects = [];
3006    findClosest(el, (i) => {
3007      if (i._x_refs)
3008        refObjects.push(i._x_refs);
3009    });
3010    return refObjects;
3011  }
3012  var globalIdMemo = {};
3013  function findAndIncrementId(name) {
3014    if (!globalIdMemo[name])
3015      globalIdMemo[name] = 0;
3016    return ++globalIdMemo[name];
3017  }
3018  function closestIdRoot(el, name) {
3019    return findClosest(el, (element) => {
3020      if (element._x_ids && element._x_ids[name])
3021        return true;
3022    });
3023  }
3024  function setIdRoot(el, name) {
3025    if (!el._x_ids)
3026      el._x_ids = {};
3027    if (!el._x_ids[name])
3028      el._x_ids[name] = findAndIncrementId(name);
3029  }
3030  magic("id", (el, { cleanup: cleanup2 }) => (name, key = null) => {
3031    let cacheKey = `${name}${key ? `-${key}` : ""}`;
3032    return cacheIdByNameOnElement(el, cacheKey, cleanup2, () => {
3033      let root = closestIdRoot(el, name);
3034      let id = root ? root._x_ids[name] : findAndIncrementId(name);
3035      return key ? `${name}-${id}-${key}` : `${name}-${id}`;
3036    });
3037  });
3038  interceptClone((from, to) => {
3039    if (from._x_id) {
3040      to._x_id = from._x_id;
3041    }
3042  });
3043  function cacheIdByNameOnElement(el, cacheKey, cleanup2, callback) {
3044    if (!el._x_id)
3045      el._x_id = {};
3046    if (el._x_id[cacheKey])
3047      return el._x_id[cacheKey];
3048    let output = callback();
3049    el._x_id[cacheKey] = output;
3050    cleanup2(() => {
3051      delete el._x_id[cacheKey];
3052    });
3053    return output;
3054  }
3055  magic("el", (el) => el);
3056  warnMissingPluginMagic("Focus", "focus", "focus");
3057  warnMissingPluginMagic("Persist", "persist", "persist");
3058  function warnMissingPluginMagic(name, magicName, slug) {
3059    magic(magicName, (el) => warn(`You can't use [$${magicName}] without first installing the "${name}" plugin here: https://alpinejs.dev/plugins/${slug}`, el));
3060  }
3061  directive("modelable", (el, { expression }, { effect: effect3, evaluateLater: evaluateLater2, cleanup: cleanup2 }) => {
3062    let func = evaluateLater2(expression);
3063    let innerGet = () => {
3064      let result;
3065      func((i) => result = i);
3066      return result;
3067    };
3068    let evaluateInnerSet = evaluateLater2(`${expression} = __placeholder`);
3069    let innerSet = (val) => evaluateInnerSet(() => {
3070    }, { scope: { "__placeholder": val } });
3071    let initialValue = innerGet();
3072    innerSet(initialValue);
3073    queueMicrotask(() => {
3074      if (!el._x_model)
3075        return;
3076      el._x_removeModelListeners["default"]();
3077      let outerGet = el._x_model.get;
3078      let outerSet = el._x_model.set;
3079      let releaseEntanglement = entangle({
3080        get() {
3081          return outerGet();
3082        },
3083        set(value) {
3084          outerSet(value);
3085        }
3086      }, {
3087        get() {
3088          return innerGet();
3089        },
3090        set(value) {
3091          innerSet(value);
3092        }
3093      });
3094      cleanup2(releaseEntanglement);
3095    });
3096  });
3097  directive("teleport", (el, { modifiers, expression }, { cleanup: cleanup2 }) => {
3098    if (el.tagName.toLowerCase() !== "template")
3099      warn("x-teleport can only be used on a <template> tag", el);
3100    let target = getTarget(expression);
3101    let clone2 = el.content.cloneNode(true).firstElementChild;
3102    el._x_teleport = clone2;
3103    clone2._x_teleportBack = el;
3104    el.setAttribute("data-teleport-template", true);
3105    clone2.setAttribute("data-teleport-target", true);
3106    if (el._x_forwardEvents) {
3107      el._x_forwardEvents.forEach((eventName) => {
3108        clone2.addEventListener(eventName, (e) => {
3109          e.stopPropagation();
3110          el.dispatchEvent(new e.constructor(e.type, e));
3111        });
3112      });
3113    }
3114    addScopeToNode(clone2, {}, el);
3115    let placeInDom = (clone3, target2, modifiers2) => {
3116      if (modifiers2.includes("prepend")) {
3117        target2.parentNode.insertBefore(clone3, target2);
3118      } else if (modifiers2.includes("append")) {
3119        target2.parentNode.insertBefore(clone3, target2.nextSibling);
3120      } else {
3121        target2.appendChild(clone3);
3122      }
3123    };
3124    mutateDom(() => {
3125      placeInDom(clone2, target, modifiers);
3126      skipDuringClone(() => {
3127        initTree(clone2);
3128        clone2._x_ignore = true;
3129      })();
3130    });
3131    el._x_teleportPutBack = () => {
3132      let target2 = getTarget(expression);
3133      mutateDom(() => {
3134        placeInDom(el._x_teleport, target2, modifiers);
3135      });
3136    };
3137    cleanup2(() => clone2.remove());
3138  });
3139  var teleportContainerDuringClone = document.createElement("div");
3140  function getTarget(expression) {
3141    let target = skipDuringClone(() => {
3142      return document.querySelector(expression);
3143    }, () => {
3144      return teleportContainerDuringClone;
3145    })();
3146    if (!target)
3147      warn(`Cannot find x-teleport element for selector: "${expression}"`);
3148    return target;
3149  }
3150  var handler = () => {
3151  };
3152  handler.inline = (el, { modifiers }, { cleanup: cleanup2 }) => {
3153    modifiers.includes("self") ? el._x_ignoreSelf = true : el._x_ignore = true;
3154    cleanup2(() => {
3155      modifiers.includes("self") ? delete el._x_ignoreSelf : delete el._x_ignore;
3156    });
3157  };
3158  directive("ignore", handler);
3159  directive("effect", skipDuringClone((el, { expression }, { effect: effect3 }) => {
3160    effect3(evaluateLater(el, expression));
3161  }));
3162  function on(el, event, modifiers, callback) {
3163    let listenerTarget = el;
3164    let handler4 = (e) => callback(e);
3165    let options = {};
3166    let wrapHandler = (callback2, wrapper) => (e) => wrapper(callback2, e);
3167    if (modifiers.includes("dot"))
3168      event = dotSyntax(event);
3169    if (modifiers.includes("camel"))
3170      event = camelCase2(event);
3171    if (modifiers.includes("passive"))
3172      options.passive = true;
3173    if (modifiers.includes("capture"))
3174      options.capture = true;
3175    if (modifiers.includes("window"))
3176      listenerTarget = window;
3177    if (modifiers.includes("document"))
3178      listenerTarget = document;
3179    if (modifiers.includes("debounce")) {
3180      let nextModifier = modifiers[modifiers.indexOf("debounce") + 1] || "invalid-wait";
3181      let wait = isNumeric(nextModifier.split("ms")[0]) ? Number(nextModifier.split("ms")[0]) : 250;
3182      handler4 = debounce(handler4, wait);
3183    }
3184    if (modifiers.includes("throttle")) {
3185      let nextModifier = modifiers[modifiers.indexOf("throttle") + 1] || "invalid-wait";
3186      let wait = isNumeric(nextModifier.split("ms")[0]) ? Number(nextModifier.split("ms")[0]) : 250;
3187      handler4 = throttle(handler4, wait);
3188    }
3189    if (modifiers.includes("prevent"))
3190      handler4 = wrapHandler(handler4, (next, e) => {
3191        e.preventDefault();
3192        next(e);
3193      });
3194    if (modifiers.includes("stop"))
3195      handler4 = wrapHandler(handler4, (next, e) => {
3196        e.stopPropagation();
3197        next(e);
3198      });
3199    if (modifiers.includes("once")) {
3200      handler4 = wrapHandler(handler4, (next, e) => {
3201        next(e);
3202        listenerTarget.removeEventListener(event, handler4, options);
3203      });
3204    }
3205    if (modifiers.includes("away") || modifiers.includes("outside")) {
3206      listenerTarget = document;
3207      handler4 = wrapHandler(handler4, (next, e) => {
3208        if (el.contains(e.target))
3209          return;
3210        if (e.target.isConnected === false)
3211          return;
3212        if (el.offsetWidth < 1 && el.offsetHeight < 1)
3213          return;
3214        if (el._x_isShown === false)
3215          return;
3216        next(e);
3217      });
3218    }
3219    if (modifiers.includes("self"))
3220      handler4 = wrapHandler(handler4, (next, e) => {
3221        e.target === el && next(e);
3222      });
3223    if (isKeyEvent(event) || isClickEvent(event)) {
3224      handler4 = wrapHandler(handler4, (next, e) => {
3225        if (isListeningForASpecificKeyThatHasntBeenPressed(e, modifiers)) {
3226          return;
3227        }
3228        next(e);
3229      });
3230    }
3231    listenerTarget.addEventListener(event, handler4, options);
3232    return () => {
3233      listenerTarget.removeEventListener(event, handler4, options);
3234    };
3235  }
3236  function dotSyntax(subject) {
3237    return subject.replace(/-/g, ".");
3238  }
3239  function camelCase2(subject) {
3240    return subject.toLowerCase().replace(/-(\w)/g, (match, char) => char.toUpperCase());
3241  }
3242  function isNumeric(subject) {
3243    return !Array.isArray(subject) && !isNaN(subject);
3244  }
3245  function kebabCase2(subject) {
3246    if ([" ", "_"].includes(subject))
3247      return subject;
3248    return subject.replace(/([a-z])([A-Z])/g, "$1-$2").replace(/[_\s]/, "-").toLowerCase();
3249  }
3250  function isKeyEvent(event) {
3251    return ["keydown", "keyup"].includes(event);
3252  }
3253  function isClickEvent(event) {
3254    return ["contextmenu", "click", "mouse"].some((i) => event.includes(i));
3255  }
3256  function isListeningForASpecificKeyThatHasntBeenPressed(e, modifiers) {
3257    let keyModifiers = modifiers.filter((i) => {
3258      return !["window", "document", "prevent", "stop", "once", "capture", "self", "away", "outside", "passive"].includes(i);
3259    });
3260    if (keyModifiers.includes("debounce")) {
3261      let debounceIndex = keyModifiers.indexOf("debounce");
3262      keyModifiers.splice(debounceIndex, isNumeric((keyModifiers[debounceIndex + 1] || "invalid-wait").split("ms")[0]) ? 2 : 1);
3263    }
3264    if (keyModifiers.includes("throttle")) {
3265      let debounceIndex = keyModifiers.indexOf("throttle");
3266      keyModifiers.splice(debounceIndex, isNumeric((keyModifiers[debounceIndex + 1] || "invalid-wait").split("ms")[0]) ? 2 : 1);
3267    }
3268    if (keyModifiers.length === 0)
3269      return false;
3270    if (keyModifiers.length === 1 && keyToModifiers(e.key).includes(keyModifiers[0]))
3271      return false;
3272    const systemKeyModifiers = ["ctrl", "shift", "alt", "meta", "cmd", "super"];
3273    const selectedSystemKeyModifiers = systemKeyModifiers.filter((modifier) => keyModifiers.includes(modifier));
3274    keyModifiers = keyModifiers.filter((i) => !selectedSystemKeyModifiers.includes(i));
3275    if (selectedSystemKeyModifiers.length > 0) {
3276      const activelyPressedKeyModifiers = selectedSystemKeyModifiers.filter((modifier) => {
3277        if (modifier === "cmd" || modifier === "super")
3278          modifier = "meta";
3279        return e[`${modifier}Key`];
3280      });
3281      if (activelyPressedKeyModifiers.length === selectedSystemKeyModifiers.length) {
3282        if (isClickEvent(e.type))
3283          return false;
3284        if (keyToModifiers(e.key).includes(keyModifiers[0]))
3285          return false;
3286      }
3287    }
3288    return true;
3289  }
3290  function keyToModifiers(key) {
3291    if (!key)
3292      return [];
3293    key = kebabCase2(key);
3294    let modifierToKeyMap = {
3295      "ctrl": "control",
3296      "slash": "/",
3297      "space": " ",
3298      "spacebar": " ",
3299      "cmd": "meta",
3300      "esc": "escape",
3301      "up": "arrow-up",
3302      "down": "arrow-down",
3303      "left": "arrow-left",
3304      "right": "arrow-right",
3305      "period": ".",
3306      "comma": ",",
3307      "equal": "=",
3308      "minus": "-",
3309      "underscore": "_"
3310    };
3311    modifierToKeyMap[key] = key;
3312    return Object.keys(modifierToKeyMap).map((modifier) => {
3313      if (modifierToKeyMap[modifier] === key)
3314        return modifier;
3315    }).filter((modifier) => modifier);
3316  }
3317  directive("model", (el, { modifiers, expression }, { effect: effect3, cleanup: cleanup2 }) => {
3318    let scopeTarget = el;
3319    if (modifiers.includes("parent")) {
3320      scopeTarget = el.parentNode;
3321    }
3322    let evaluateGet = evaluateLater(scopeTarget, expression);
3323    let evaluateSet;
3324    if (typeof expression === "string") {
3325      evaluateSet = evaluateLater(scopeTarget, `${expression} = __placeholder`);
3326    } else if (typeof expression === "function" && typeof expression() === "string") {
3327      evaluateSet = evaluateLater(scopeTarget, `${expression()} = __placeholder`);
3328    } else {
3329      evaluateSet = () => {
3330      };
3331    }
3332    let getValue = () => {
3333      let result;
3334      evaluateGet((value) => result = value);
3335      return isGetterSetter(result) ? result.get() : result;
3336    };
3337    let setValue = (value) => {
3338      let result;
3339      evaluateGet((value2) => result = value2);
3340      if (isGetterSetter(result)) {
3341        result.set(value);
3342      } else {
3343        evaluateSet(() => {
3344        }, {
3345          scope: { "__placeholder": value }
3346        });
3347      }
3348    };
3349    if (typeof expression === "string" && el.type === "radio") {
3350      mutateDom(() => {
3351        if (!el.hasAttribute("name"))
3352          el.setAttribute("name", expression);
3353      });
3354    }
3355    var event = el.tagName.toLowerCase() === "select" || ["checkbox", "radio"].includes(el.type) || modifiers.includes("lazy") ? "change" : "input";
3356    let removeListener = isCloning ? () => {
3357    } : on(el, event, modifiers, (e) => {
3358      setValue(getInputValue(el, modifiers, e, getValue()));
3359    });
3360    if (modifiers.includes("fill")) {
3361      if ([void 0, null, ""].includes(getValue()) || el.type === "checkbox" && Array.isArray(getValue()) || el.tagName.toLowerCase() === "select" && el.multiple) {
3362        setValue(getInputValue(el, modifiers, { target: el }, getValue()));
3363      }
3364    }
3365    if (!el._x_removeModelListeners)
3366      el._x_removeModelListeners = {};
3367    el._x_removeModelListeners["default"] = removeListener;
3368    cleanup2(() => el._x_removeModelListeners["default"]());
3369    if (el.form) {
3370      let removeResetListener = on(el.form, "reset", [], (e) => {
3371        nextTick(() => el._x_model && el._x_model.set(getInputValue(el, modifiers, { target: el }, getValue())));
3372      });
3373      cleanup2(() => removeResetListener());
3374    }
3375    el._x_model = {
3376      get() {
3377        return getValue();
3378      },
3379      set(value) {
3380        setValue(value);
3381      }
3382    };
3383    el._x_forceModelUpdate = (value) => {
3384      if (value === void 0 && typeof expression === "string" && expression.match(/\./))
3385        value = "";
3386      window.fromModel = true;
3387      mutateDom(() => bind(el, "value", value));
3388      delete window.fromModel;
3389    };
3390    effect3(() => {
3391      let value = getValue();
3392      if (modifiers.includes("unintrusive") && document.activeElement.isSameNode(el))
3393        return;
3394      el._x_forceModelUpdate(value);
3395    });
3396  });
3397  function getInputValue(el, modifiers, event, currentValue) {
3398    return mutateDom(() => {
3399      if (event instanceof CustomEvent && event.detail !== void 0)
3400        return event.detail !== null && event.detail !== void 0 ? event.detail : event.target.value;
3401      else if (el.type === "checkbox") {
3402        if (Array.isArray(currentValue)) {
3403          let newValue = null;
3404          if (modifiers.includes("number")) {
3405            newValue = safeParseNumber(event.target.value);
3406          } else if (modifiers.includes("boolean")) {
3407            newValue = safeParseBoolean(event.target.value);
3408          } else {
3409            newValue = event.target.value;
3410          }
3411          return event.target.checked ? currentValue.includes(newValue) ? currentValue : currentValue.concat([newValue]) : currentValue.filter((el2) => !checkedAttrLooseCompare2(el2, newValue));
3412        } else {
3413          return event.target.checked;
3414        }
3415      } else if (el.tagName.toLowerCase() === "select" && el.multiple) {
3416        if (modifiers.includes("number")) {
3417          return Array.from(event.target.selectedOptions).map((option) => {
3418            let rawValue = option.value || option.text;
3419            return safeParseNumber(rawValue);
3420          });
3421        } else if (modifiers.includes("boolean")) {
3422          return Array.from(event.target.selectedOptions).map((option) => {
3423            let rawValue = option.value || option.text;
3424            return safeParseBoolean(rawValue);
3425          });
3426        }
3427        return Array.from(event.target.selectedOptions).map((option) => {
3428          return option.value || option.text;
3429        });
3430      } else {
3431        let newValue;
3432        if (el.type === "radio") {
3433          if (event.target.checked) {
3434            newValue = event.target.value;
3435          } else {
3436            newValue = currentValue;
3437          }
3438        } else {
3439          newValue = event.target.value;
3440        }
3441        if (modifiers.includes("number")) {
3442          return safeParseNumber(newValue);
3443        } else if (modifiers.includes("boolean")) {
3444          return safeParseBoolean(newValue);
3445        } else if (modifiers.includes("trim")) {
3446          return newValue.trim();
3447        } else {
3448          return newValue;
3449        }
3450      }
3451    });
3452  }
3453  function safeParseNumber(rawValue) {
3454    let number = rawValue ? parseFloat(rawValue) : null;
3455    return isNumeric2(number) ? number : rawValue;
3456  }
3457  function checkedAttrLooseCompare2(valueA, valueB) {
3458    return valueA == valueB;
3459  }
3460  function isNumeric2(subject) {
3461    return !Array.isArray(subject) && !isNaN(subject);
3462  }
3463  function isGetterSetter(value) {
3464    return value !== null && typeof value === "object" && typeof value.get === "function" && typeof value.set === "function";
3465  }
3466  directive("cloak", (el) => queueMicrotask(() => mutateDom(() => el.removeAttribute(prefix("cloak")))));
3467  addInitSelector(() => `[${prefix("init")}]`);
3468  directive("init", skipDuringClone((el, { expression }, { evaluate: evaluate22 }) => {
3469    if (typeof expression === "string") {
3470      return !!expression.trim() && evaluate22(expression, {}, false);
3471    }
3472    return evaluate22(expression, {}, false);
3473  }));
3474  directive("text", (el, { expression }, { effect: effect3, evaluateLater: evaluateLater2 }) => {
3475    let evaluate22 = evaluateLater2(expression);
3476    effect3(() => {
3477      evaluate22((value) => {
3478        mutateDom(() => {
3479          el.textContent = value;
3480        });
3481      });
3482    });
3483  });
3484  directive("html", (el, { expression }, { effect: effect3, evaluateLater: evaluateLater2 }) => {
3485    let evaluate22 = evaluateLater2(expression);
3486    effect3(() => {
3487      evaluate22((value) => {
3488        mutateDom(() => {
3489          el.innerHTML = value;
3490          el._x_ignoreSelf = true;
3491          initTree(el);
3492          delete el._x_ignoreSelf;
3493        });
3494      });
3495    });
3496  });
3497  mapAttributes(startingWith(":", into(prefix("bind:"))));
3498  var handler2 = (el, { value, modifiers, expression, original }, { effect: effect3, cleanup: cleanup2 }) => {
3499    if (!value) {
3500      let bindingProviders = {};
3501      injectBindingProviders(bindingProviders);
3502      let getBindings = evaluateLater(el, expression);
3503      getBindings((bindings) => {
3504        applyBindingsObject(el, bindings, original);
3505      }, { scope: bindingProviders });
3506      return;
3507    }
3508    if (value === "key")
3509      return storeKeyForXFor(el, expression);
3510    if (el._x_inlineBindings && el._x_inlineBindings[value] && el._x_inlineBindings[value].extract) {
3511      return;
3512    }
3513    let evaluate22 = evaluateLater(el, expression);
3514    effect3(() => evaluate22((result) => {
3515      if (result === void 0 && typeof expression === "string" && expression.match(/\./)) {
3516        result = "";
3517      }
3518      mutateDom(() => bind(el, value, result, modifiers));
3519    }));
3520    cleanup2(() => {
3521      el._x_undoAddedClasses && el._x_undoAddedClasses();
3522      el._x_undoAddedStyles && el._x_undoAddedStyles();
3523    });
3524  };
3525  handler2.inline = (el, { value, modifiers, expression }) => {
3526    if (!value)
3527      return;
3528    if (!el._x_inlineBindings)
3529      el._x_inlineBindings = {};
3530    el._x_inlineBindings[value] = { expression, extract: false };
3531  };
3532  directive("bind", handler2);
3533  function storeKeyForXFor(el, expression) {
3534    el._x_keyExpression = expression;
3535  }
3536  addRootSelector(() => `[${prefix("data")}]`);
3537  directive("data", (el, { expression }, { cleanup: cleanup2 }) => {
3538    if (shouldSkipRegisteringDataDuringClone(el))
3539      return;
3540    expression = expression === "" ? "{}" : expression;
3541    let magicContext = {};
3542    injectMagics(magicContext, el);
3543    let dataProviderContext = {};
3544    injectDataProviders(dataProviderContext, magicContext);
3545    let data2 = evaluate(el, expression, { scope: dataProviderContext });
3546    if (data2 === void 0 || data2 === true)
3547      data2 = {};
3548    injectMagics(data2, el);
3549    let reactiveData = reactive(data2);
3550    initInterceptors(reactiveData);
3551    let undo = addScopeToNode(el, reactiveData);
3552    reactiveData["init"] && evaluate(el, reactiveData["init"]);
3553    cleanup2(() => {
3554      reactiveData["destroy"] && evaluate(el, reactiveData["destroy"]);
3555      undo();
3556    });
3557  });
3558  interceptClone((from, to) => {
3559    if (from._x_dataStack) {
3560      to._x_dataStack = from._x_dataStack;
3561      to.setAttribute("data-has-alpine-state", true);
3562    }
3563  });
3564  function shouldSkipRegisteringDataDuringClone(el) {
3565    if (!isCloning)
3566      return false;
3567    if (isCloningLegacy)
3568      return true;
3569    return el.hasAttribute("data-has-alpine-state");
3570  }
3571  directive("show", (el, { modifiers, expression }, { effect: effect3 }) => {
3572    let evaluate22 = evaluateLater(el, expression);
3573    if (!el._x_doHide)
3574      el._x_doHide = () => {
3575        mutateDom(() => {
3576          el.style.setProperty("display", "none", modifiers.includes("important") ? "important" : void 0);
3577        });
3578      };
3579    if (!el._x_doShow)
3580      el._x_doShow = () => {
3581        mutateDom(() => {
3582          if (el.style.length === 1 && el.style.display === "none") {
3583            el.removeAttribute("style");
3584          } else {
3585            el.style.removeProperty("display");
3586          }
3587        });
3588      };
3589    let hide = () => {
3590      el._x_doHide();
3591      el._x_isShown = false;
3592    };
3593    let show = () => {
3594      el._x_doShow();
3595      el._x_isShown = true;
3596    };
3597    let clickAwayCompatibleShow = () => setTimeout(show);
3598    let toggle = once((value) => value ? show() : hide(), (value) => {
3599      if (typeof el._x_toggleAndCascadeWithTransitions === "function") {
3600        el._x_toggleAndCascadeWithTransitions(el, value, show, hide);
3601      } else {
3602        value ? clickAwayCompatibleShow() : hide();
3603      }
3604    });
3605    let oldValue;
3606    let firstTime = true;
3607    effect3(() => evaluate22((value) => {
3608      if (!firstTime && value === oldValue)
3609        return;
3610      if (modifiers.includes("immediate"))
3611        value ? clickAwayCompatibleShow() : hide();
3612      toggle(value);
3613      oldValue = value;
3614      firstTime = false;
3615    }));
3616  });
3617  directive("for", (el, { expression }, { effect: effect3, cleanup: cleanup2 }) => {
3618    let iteratorNames = parseForExpression(expression);
3619    let evaluateItems = evaluateLater(el, iteratorNames.items);
3620    let evaluateKey = evaluateLater(el, el._x_keyExpression || "index");
3621    el._x_prevKeys = [];
3622    el._x_lookup = {};
3623    effect3(() => loop(el, iteratorNames, evaluateItems, evaluateKey));
3624    cleanup2(() => {
3625      Object.values(el._x_lookup).forEach((el2) => el2.remove());
3626      delete el._x_prevKeys;
3627      delete el._x_lookup;
3628    });
3629  });
3630  function loop(el, iteratorNames, evaluateItems, evaluateKey) {
3631    let isObject22 = (i) => typeof i === "object" && !Array.isArray(i);
3632    let templateEl = el;
3633    evaluateItems((items) => {
3634      if (isNumeric3(items) && items >= 0) {
3635        items = Array.from(Array(items).keys(), (i) => i + 1);
3636      }
3637      if (items === void 0)
3638        items = [];
3639      let lookup = el._x_lookup;
3640      let prevKeys = el._x_prevKeys;
3641      let scopes = [];
3642      let keys = [];
3643      if (isObject22(items)) {
3644        items = Object.entries(items).map(([key, value]) => {
3645          let scope2 = getIterationScopeVariables(iteratorNames, value, key, items);
3646          evaluateKey((value2) => {
3647            if (keys.includes(value2))
3648              warn("Duplicate key on x-for", el);
3649            keys.push(value2);
3650          }, { scope: { index: key, ...scope2 } });
3651          scopes.push(scope2);
3652        });
3653      } else {
3654        for (let i = 0; i < items.length; i++) {
3655          let scope2 = getIterationScopeVariables(iteratorNames, items[i], i, items);
3656          evaluateKey((value) => {
3657            if (keys.includes(value))
3658              warn("Duplicate key on x-for", el);
3659            keys.push(value);
3660          }, { scope: { index: i, ...scope2 } });
3661          scopes.push(scope2);
3662        }
3663      }
3664      let adds = [];
3665      let moves = [];
3666      let removes = [];
3667      let sames = [];
3668      for (let i = 0; i < prevKeys.length; i++) {
3669        let key = prevKeys[i];
3670        if (keys.indexOf(key) === -1)
3671          removes.push(key);
3672      }
3673      prevKeys = prevKeys.filter((key) => !removes.includes(key));
3674      let lastKey = "template";
3675      for (let i = 0; i < keys.length; i++) {
3676        let key = keys[i];
3677        let prevIndex = prevKeys.indexOf(key);
3678        if (prevIndex === -1) {
3679          prevKeys.splice(i, 0, key);
3680          adds.push([lastKey, i]);
3681        } else if (prevIndex !== i) {
3682          let keyInSpot = prevKeys.splice(i, 1)[0];
3683          let keyForSpot = prevKeys.splice(prevIndex - 1, 1)[0];
3684          prevKeys.splice(i, 0, keyForSpot);
3685          prevKeys.splice(prevIndex, 0, keyInSpot);
3686          moves.push([keyInSpot, keyForSpot]);
3687        } else {
3688          sames.push(key);
3689        }
3690        lastKey = key;
3691      }
3692      for (let i = 0; i < removes.length; i++) {
3693        let key = removes[i];
3694        if (!!lookup[key]._x_effects) {
3695          lookup[key]._x_effects.forEach(dequeueJob);
3696        }
3697        lookup[key].remove();
3698        lookup[key] = null;
3699        delete lookup[key];
3700      }
3701      for (let i = 0; i < moves.length; i++) {
3702        let [keyInSpot, keyForSpot] = moves[i];
3703        let elInSpot = lookup[keyInSpot];
3704        let elForSpot = lookup[keyForSpot];
3705        let marker = document.createElement("div");
3706        mutateDom(() => {
3707          if (!elForSpot)
3708            warn(`x-for ":key" is undefined or invalid`, templateEl, keyForSpot, lookup);
3709          elForSpot.after(marker);
3710          elInSpot.after(elForSpot);
3711          elForSpot._x_currentIfEl && elForSpot.after(elForSpot._x_currentIfEl);
3712          marker.before(elInSpot);
3713          elInSpot._x_currentIfEl && elInSpot.after(elInSpot._x_currentIfEl);
3714          marker.remove();
3715        });
3716        elForSpot._x_refreshXForScope(scopes[keys.indexOf(keyForSpot)]);
3717      }
3718      for (let i = 0; i < adds.length; i++) {
3719        let [lastKey2, index] = adds[i];
3720        let lastEl = lastKey2 === "template" ? templateEl : lookup[lastKey2];
3721        if (lastEl._x_currentIfEl)
3722          lastEl = lastEl._x_currentIfEl;
3723        let scope2 = scopes[index];
3724        let key = keys[index];
3725        let clone2 = document.importNode(templateEl.content, true).firstElementChild;
3726        let reactiveScope = reactive(scope2);
3727        addScopeToNode(clone2, reactiveScope, templateEl);
3728        clone2._x_refreshXForScope = (newScope) => {
3729          Object.entries(newScope).forEach(([key2, value]) => {
3730            reactiveScope[key2] = value;
3731          });
3732        };
3733        mutateDom(() => {
3734          lastEl.after(clone2);
3735          skipDuringClone(() => initTree(clone2))();
3736        });
3737        if (typeof key === "object") {
3738          warn("x-for key cannot be an object, it must be a string or an integer", templateEl);
3739        }
3740        lookup[key] = clone2;
3741      }
3742      for (let i = 0; i < sames.length; i++) {
3743        lookup[sames[i]]._x_refreshXForScope(scopes[keys.indexOf(sames[i])]);
3744      }
3745      templateEl._x_prevKeys = keys;
3746    });
3747  }
3748  function parseForExpression(expression) {
3749    let forIteratorRE = /,([^,\}\]]*)(?:,([^,\}\]]*))?$/;
3750    let stripParensRE = /^\s*\(|\)\s*$/g;
3751    let forAliasRE = /([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/;
3752    let inMatch = expression.match(forAliasRE);
3753    if (!inMatch)
3754      return;
3755    let res = {};
3756    res.items = inMatch[2].trim();
3757    let item = inMatch[1].replace(stripParensRE, "").trim();
3758    let iteratorMatch = item.match(forIteratorRE);
3759    if (iteratorMatch) {
3760      res.item = item.replace(forIteratorRE, "").trim();
3761      res.index = iteratorMatch[1].trim();
3762      if (iteratorMatch[2]) {
3763        res.collection = iteratorMatch[2].trim();
3764      }
3765    } else {
3766      res.item = item;
3767    }
3768    return res;
3769  }
3770  function getIterationScopeVariables(iteratorNames, item, index, items) {
3771    let scopeVariables = {};
3772    if (/^\[.*\]$/.test(iteratorNames.item) && Array.isArray(item)) {
3773      let names = iteratorNames.item.replace("[", "").replace("]", "").split(",").map((i) => i.trim());
3774      names.forEach((name, i) => {
3775        scopeVariables[name] = item[i];
3776      });
3777    } else if (/^\{.*\}$/.test(iteratorNames.item) && !Array.isArray(item) && typeof item === "object") {
3778      let names = iteratorNames.item.replace("{", "").replace("}", "").split(",").map((i) => i.trim());
3779      names.forEach((name) => {
3780        scopeVariables[name] = item[name];
3781      });
3782    } else {
3783      scopeVariables[iteratorNames.item] = item;
3784    }
3785    if (iteratorNames.index)
3786      scopeVariables[iteratorNames.index] = index;
3787    if (iteratorNames.collection)
3788      scopeVariables[iteratorNames.collection] = items;
3789    return scopeVariables;
3790  }
3791  function isNumeric3(subject) {
3792    return !Array.isArray(subject) && !isNaN(subject);
3793  }
3794  function handler3() {
3795  }
3796  handler3.inline = (el, { expression }, { cleanup: cleanup2 }) => {
3797    let root = closestRoot(el);
3798    if (!root._x_refs)
3799      root._x_refs = {};
3800    root._x_refs[expression] = el;
3801    cleanup2(() => delete root._x_refs[expression]);
3802  };
3803  directive("ref", handler3);
3804  directive("if", (el, { expression }, { effect: effect3, cleanup: cleanup2 }) => {
3805    if (el.tagName.toLowerCase() !== "template")
3806      warn("x-if can only be used on a <template> tag", el);
3807    let evaluate22 = evaluateLater(el, expression);
3808    let show = () => {
3809      if (el._x_currentIfEl)
3810        return el._x_currentIfEl;
3811      let clone2 = el.content.cloneNode(true).firstElementChild;
3812      addScopeToNode(clone2, {}, el);
3813      mutateDom(() => {
3814        el.after(clone2);
3815        skipDuringClone(() => initTree(clone2))();
3816      });
3817      el._x_currentIfEl = clone2;
3818      el._x_undoIf = () => {
3819        walk(clone2, (node) => {
3820          if (!!node._x_effects) {
3821            node._x_effects.forEach(dequeueJob);
3822          }
3823        });
3824        clone2.remove();
3825        delete el._x_currentIfEl;
3826      };
3827      return clone2;
3828    };
3829    let hide = () => {
3830      if (!el._x_undoIf)
3831        return;
3832      el._x_undoIf();
3833      delete el._x_undoIf;
3834    };
3835    effect3(() => evaluate22((value) => {
3836      value ? show() : hide();
3837    }));
3838    cleanup2(() => el._x_undoIf && el._x_undoIf());
3839  });
3840  directive("id", (el, { expression }, { evaluate: evaluate22 }) => {
3841    let names = evaluate22(expression);
3842    names.forEach((name) => setIdRoot(el, name));
3843  });
3844  interceptClone((from, to) => {
3845    if (from._x_ids) {
3846      to._x_ids = from._x_ids;
3847    }
3848  });
3849  mapAttributes(startingWith("@", into(prefix("on:"))));
3850  directive("on", skipDuringClone((el, { value, modifiers, expression }, { cleanup: cleanup2 }) => {
3851    let evaluate22 = expression ? evaluateLater(el, expression) : () => {
3852    };
3853    if (el.tagName.toLowerCase() === "template") {
3854      if (!el._x_forwardEvents)
3855        el._x_forwardEvents = [];
3856      if (!el._x_forwardEvents.includes(value))
3857        el._x_forwardEvents.push(value);
3858    }
3859    let removeListener = on(el, value, modifiers, (e) => {
3860      evaluate22(() => {
3861      }, { scope: { "$event": e }, params: [e] });
3862    });
3863    cleanup2(() => removeListener());
3864  }));
3865  warnMissingPluginDirective("Collapse", "collapse", "collapse");
3866  warnMissingPluginDirective("Intersect", "intersect", "intersect");
3867  warnMissingPluginDirective("Focus", "trap", "focus");
3868  warnMissingPluginDirective("Mask", "mask", "mask");
3869  function warnMissingPluginDirective(name, directiveName, slug) {
3870    directive(directiveName, (el) => warn(`You can't use [x-${directiveName}] without first installing the "${name}" plugin here: https://alpinejs.dev/plugins/${slug}`, el));
3871  }
3872  alpine_default.setEvaluator(normalEvaluator);
3873  alpine_default.setReactivityEngine({ reactive: reactive2, effect: effect2, release: stop, raw: toRaw });
3874  var src_default = alpine_default;
3875  var module_default = src_default;
3876
3877  
3877// js/features/supportEntangle.js
3878  function generateEntangleFunction(component, cleanup2) {
3879    if (!cleanup2)
3880      cleanup2 = () => {
3881      };
3882    return (name, live = false) => {
3883      let isLive = live;
3884      let livewireProperty = name;
3885      let livewireComponent = component.$wire;
3886      let livewirePropertyValue = livewireComponent.get(livewireProperty);
3887      let interceptor2 = module_default.interceptor((initialValue, getter, setter, path, key) => {
3888        if (typeof livewirePropertyValue === "undefined") {
3889          console.error(`Livewire Entangle Error: Livewire property ['${livewireProperty}'] cannot be found on component: ['${component.name}']`);
3890          return;
3891        }
3892        let release2 = module_default.entangle({
3893          get() {
3894            return livewireComponent.get(name);
3895          },
3896          set(value) {
3897            livewireComponent.set(name, value, isLive);
3898          }
3899        }, {
3900          get() {
3901            return getter();
3902          },
3903          set(value) {
3904            setter(value);
3905          }
3906        });
3907        cleanup2(() => release2());
3908        return cloneIfObject2(livewireComponent.get(name));
3909      }, (obj) => {
3910        Object.defineProperty(obj, "live", {
3911          get() {
3912            isLive = true;
3913            return obj;
3914          }
3915        });
3916      });
3917      return interceptor2(livewirePropertyValue);
3918    };
3919  }
3920  function cloneIfObject2(value) {
3921    return typeof value === "object" ? JSON.parse(JSON.stringify(value)) : value;
3922  }
3923
3924  
3924// js/hooks.js
3925  var listeners = [];
3926  function on2(name, callback) {
3927    if (!listeners[name])
3928      listeners[name] = [];
3929    listeners[name].push(callback);
3930    return () => {
3931      listeners[name] = listeners[name].filter((i) => i !== callback);
3932    };
3933  }
3934  function trigger2(name, ...params) {
3935    let callbacks = listeners[name] || [];
3936    let finishers = [];
3937    for (let i = 0; i < callbacks.length; i++) {
3938      let finisher = callbacks[i](...params);
3939      if (isFunction(finisher))
3940        finishers.push(finisher);
3941    }
3942    return (result) => {
3943      return runFinishers(finishers, result);
3944    };
3945  }
3946  async function triggerAsync(name, ...params) {
3947    let callbacks = listeners[name] || [];
3948    let finishers = [];
3949    for (let i = 0; i < callbacks.length; i++) {
3950      let finisher = await callbacks[i](...params);
3951      if (isFunction(finisher))
3952        finishers.push(finisher);
3953    }
3954    return (result) => {
3955      return runFinishers(finishers, result);
3956    };
3957  }
3958  function runFinishers(finishers, result) {
3959    let latest = result;
3960    for (let i = 0; i < finishers.length; i++) {
3961      let iResult = finishers[i](latest);
3962      if (iResult !== void 0) {
3963        latest = iResult;
3964      }
3965    }
3966    return latest;
3967  }
3968
3969  
3969// js/request/modal.js
3970  function showHtmlModal(html) {
3971    let page = document.createElement("html");
3972    page.innerHTML = html;
3973    page.querySelectorAll("a").forEach((a) => a.setAttribute("target", "_top"));
3974    let modal = document.getElementById("livewire-error");
3975    if (typeof modal != "undefined" && modal != null) {
3976      modal.innerHTML = "";
3977    } else {
3978      modal = document.createElement("div");
3979      modal.id = "livewire-error";
3980      modal.style.position = "fixed";
3981      modal.style.width = "100vw";
3982      modal.style.height = "100vh";
3983      modal.style.padding = "50px";
3984      modal.style.backgroundColor = "rgba(0, 0, 0, .6)";
3985      modal.style.zIndex = 2e5;
3986    }
3987    let iframe = document.createElement("iframe");
3988    iframe.style.backgroundColor = "#17161A";
3989    iframe.style.borderRadius = "5px";
3990    iframe.style.width = "100%";
3991    iframe.style.height = "100%";
3992    modal.appendChild(iframe);
3993    document.body.prepend(modal);
3994    document.body.style.overflow = "hidden";
3995    iframe.contentWindow.document.open();
3996    iframe.contentWindow.document.write(page.outerHTML);
3997    iframe.contentWindow.document.close();
3998    modal.addEventListener("click", () => hideHtmlModal(modal));
3999    modal.setAttribute("tabindex", 0);
4000    modal.addEventListener("keydown", (e) => {
4001      if (e.key === "Escape")
4002        hideHtmlModal(modal);
4003    });
4004    modal.focus();
4005  }
4006  function hideHtmlModal(modal) {
4007    modal.outerHTML = "";
4008    document.body.style.overflow = "visible";
4009  }
4010
4011  
4011// js/request/pool.js
4012  var RequestPool = class {
4013    constructor() {
4014      this.commits = /* @__PURE__ */ new Set();
4015    }
4016    add(commit) {
4017      this.commits.add(commit);
4018    }
4019    delete(commit) {
4020      this.commits.delete(commit);
4021    }
4022    hasCommitFor(component) {
4023      return !!this.findCommitByComponent(component);
4024    }
4025    findCommitByComponent(component) {
4026      for (let [idx, commit] of this.commits.entries()) {
4027        if (commit.component === component)
4028          return commit;
4029      }
4030    }
4031    shouldHoldCommit(commit) {
4032      return !commit.isolate;
4033    }
4034    empty() {
4035      return this.commits.size === 0;
4036    }
4037    async send() {
4038      this.prepare();
4039      await sendRequest(this);
4040    }
4041    prepare() {
4042      this.commits.forEach((i) => i.prepare());
4043    }
4044    payload() {
4045      let commitPayloads = [];
4046      let successReceivers = [];
4047      let failureReceivers = [];
4048      this.commits.forEach((commit) => {
4049        let [payload, succeed2, fail2] = commit.toRequestPayload();
4050        commitPayloads.push(payload);
4051        successReceivers.push(succeed2);
4052        failureReceivers.push(fail2);
4053      });
4054      let succeed = (components2) => successReceivers.forEach((receiver) => receiver(components2.shift()));
4055      let fail = () => failureReceivers.forEach((receiver) => receiver());
4056      return [commitPayloads, succeed, fail];
4057    }
4058  };
4059
4060  
4060// js/request/commit.js
4061  var Commit = class {
4062    constructor(component) {
4063      this.component = component;
4064      this.isolate = false;
4065      this.calls = [];
4066      this.receivers = [];
4067      this.resolvers = [];
4068    }
4069    addResolver(resolver) {
4070      this.resolvers.push(resolver);
4071    }
4072    addCall(method, params, receiver) {
4073      this.calls.push({
4074        path: "",
4075        method,
4076        params,
4077        handleReturn(value) {
4078          receiver(value);
4079        }
4080      });
4081    }
4082    prepare() {
4083      trigger2("commit.prepare", { component: this.component });
4084    }
4085    toRequestPayload() {
4086      let propertiesDiff = diff(this.component.canonical, this.component.ephemeral);
4087      let updates = this.component.mergeQueuedUpdates(propertiesDiff);
4088      let payload = {
4089        snapshot: this.component.snapshotEncoded,
4090        updates,
4091        calls: this.calls.map((i) => ({
4092          path: i.path,
4093          method: i.method,
4094          params: i.params
4095        }))
4096      };
4097      let succeedCallbacks = [];
4098      let failCallbacks = [];
4099      let respondCallbacks = [];
4100      let succeed = (fwd) => succeedCallbacks.forEach((i) => i(fwd));
4101      let fail = () => failCallbacks.forEach((i) => i());
4102      let respond = () => respondCallbacks.forEach((i) => i());
4103      let finishTarget = trigger2("commit", {
4104        component: this.component,
4105        commit: payload,
4106        succeed: (callback) => {
4107          succeedCallbacks.push(callback);
4108        },
4109        fail: (callback) => {
4110          failCallbacks.push(callback);
4111        },
4112        respond: (callback) => {
4113          respondCallbacks.push(callback);
4114        }
4115      });
4116      let handleResponse = (response) => {
4117        let { snapshot, effects } = response;
4118        respond();
4119        this.component.mergeNewSnapshot(snapshot, effects, updates);
4120        this.component.processEffects(this.component.effects);
4121        if (effects["returns"]) {
4122          let returns = effects["returns"];
4123          let returnHandlerStack = this.calls.map(({ handleReturn }) => handleReturn);
4124          returnHandlerStack.forEach((handleReturn, index) => {
4125            handleReturn(returns[index]);
4126          });
4127        }
4128        let parsedSnapshot = JSON.parse(snapshot);
4129        finishTarget({ snapshot: parsedSnapshot, effects });
4130        this.resolvers.forEach((i) => i());
4131        succeed(response);
4132      };
4133      let handleFailure = () => {
4134        respond();
4135        fail();
4136      };
4137      return [payload, handleResponse, handleFailure];
4138    }
4139  };
4140
4141  
4141// js/request/bus.js
4142  var CommitBus = class {
4143    constructor() {
4144      this.commits = /* @__PURE__ */ new Set();
4145      this.pools = /* @__PURE__ */ new Set();
4146    }
4147    add(component) {
4148      let commit = this.findCommitOr(component, () => {
4149        let newCommit = new Commit(component);
4150        this.commits.add(newCommit);
4151        return newCommit;
4152      });
4153      bufferPoolingForFiveMs(commit, () => {
4154        let pool = this.findPoolWithComponent(commit.component);
4155        if (!pool) {
4156          this.createAndSendNewPool();
4157        }
4158      });
4159      return commit;
4160    }
4161    findCommitOr(component, callback) {
4162      for (let [idx, commit] of this.commits.entries()) {
4163        if (commit.component === component) {
4164          return commit;
4165        }
4166      }
4167      return callback();
4168    }
4169    findPoolWithComponent(component) {
4170      for (let [idx, pool] of this.pools.entries()) {
4171        if (pool.hasCommitFor(component))
4172          return pool;
4173      }
4174    }
4175    createAndSendNewPool() {
4176      trigger2("commit.pooling", { commits: this.commits });
4177      let pools = this.corraleCommitsIntoPools();
4178      this.commits.clear();
4179      trigger2("commit.pooled", { pools });
4180      pools.forEach((pool) => {
4181        if (pool.empty())
4182          return;
4183        this.pools.add(pool);
4184        pool.send().then(() => {
4185          this.pools.delete(pool);
4186          this.sendAnyQueuedCommits();
4187        });
4188      });
4189    }
4190    corraleCommitsIntoPools() {
4191      let pools = /* @__PURE__ */ new Set();
4192      for (let [idx, commit] of this.commits.entries()) {
4193        let hasFoundPool = false;
4194        pools.forEach((pool) => {
4195          if (pool.shouldHoldCommit(commit)) {
4196            pool.add(commit);
4197            hasFoundPool = true;
4198          }
4199        });
4200        if (!hasFoundPool) {
4201          let newPool = new RequestPool();
4202          newPool.add(commit);
4203          pools.add(newPool);
4204        }
4205      }
4206      return pools;
4207    }
4208    sendAnyQueuedCommits() {
4209      if (this.commits.size > 0) {
4210        this.createAndSendNewPool();
4211      }
4212    }
4213  };
4214  var buffersByCommit = /* @__PURE__ */ new WeakMap();
4215  function bufferPoolingForFiveMs(commit, callback) {
4216    if (buffersByCommit.has(commit))
4217      return;
4218    buffersByCommit.set(commit, setTimeout(() => {
4219      callback();
4220      buffersByCommit.delete(commit);
4221    }, 5));
4222  }
4223
4224  
4224// js/request/index.js
4225  var commitBus = new CommitBus();
4226  async function requestCommit(component) {
4227    let commit = commitBus.add(component);
4228    let promise = new Promise((resolve) => {
4229      commit.addResolver(resolve);
4230    });
4231    promise.commit = commit;
4232    return promise;
4233  }
4234  async function requestCall(component, method, params) {
4235    let commit = commitBus.add(component);
4236    let promise = new Promise((resolve) => {
4237      commit.addCall(method, params, (value) => resolve(value));
4238    });
4239    promise.commit = commit;
4240    return promise;
4241  }
4242  async function sendRequest(pool) {
4243    let [payload, handleSuccess, handleFailure] = pool.payload();
4244    let options = {
4245      method: "POST",
4246      body: JSON.stringify({
4247        _token: getCsrfToken(),
4248        components: payload
4249      }),
4250      headers: {
4251        "Content-type": "application/json",
4252        "X-Livewire": ""
4253      }
4254    };
4255    let succeedCallbacks = [];
4256    let failCallbacks = [];
4257    let respondCallbacks = [];
4258    let succeed = (fwd) => succeedCallbacks.forEach((i) => i(fwd));
4259    let fail = (fwd) => failCallbacks.forEach((i) => i(fwd));
4260    let respond = (fwd) => respondCallbacks.forEach((i) => i(fwd));
4261    let finishProfile = trigger2("request.profile", options);
4262    let updateUri = getUpdateUri();
4263    trigger2("request", {
4264      url: updateUri,
4265      options,
4266      payload: options.body,
4267      respond: (i) => respondCallbacks.push(i),
4268      succeed: (i) => succeedCallbacks.push(i),
4269      fail: (i) => failCallbacks.push(i)
4270    });
4271    let response;
4272    try {
4273      response = await fetch(updateUri, options);
4274    } catch (e) {
4275      finishProfile({ content: "{}", failed: true });
4276      handleFailure();
4277      fail({
4278        status: 503,
4279        content: null,
4280        preventDefault: () => {
4281        }
4282      });
4283      return;
4284    }
4285    let mutableObject = {
4286      status: response.status,
4287      response
4288    };
4289    respond(mutableObject);
4290    response = mutableObject.response;
4291    let content = await response.text();
4292    if (!response.ok) {
4293      finishProfile({ content: "{}", failed: true });
4294      let preventDefault = false;
4295      handleFailure();
4296      fail({
4297        status: response.status,
4298        content,
4299        preventDefault: () => preventDefault = true
4300      });
4301      if (preventDefault)
4302        return;
4303      if (response.status === 419) {
4304        handlePageExpiry();
4305      }
4306      return showFailureModal(content);
4307    }
4308    if (response.redirected) {
4309      window.location.href = response.url;
4310    }
4311    if (contentIsFromDump(content)) {
4312      let dump;
4313      [dump, content] = splitDumpFromContent(content);
4314      showHtmlModal(dump);
4315      finishProfile({ content: "{}", failed: true });
4316    } else {
4317      finishProfile({ content, failed: false });
4318    }
4319    let { components: components2, assets } = JSON.parse(content);
4320    await triggerAsync("payload.intercept", { components: components2, assets });
4321    await handleSuccess(components2);
4322    succeed({ status: response.status, json: JSON.parse(content) });
4323  }
4324  function handlePageExpiry() {
4325    confirm("This page has expired.\nWould you like to refresh the page?") && window.location.reload();
4326  }
4327  function showFailureModal(content) {
4328    let html = content;
4329    showHtmlModal(html);
4330  }
4331
4332  // js/$wire.js
4333  var properties = {};
4334  var fallback;
4335  function wireProperty(name, callback, component = null) {
4336    properties[name] = callback;
4337  }
4338  function wireFallback(callback) {
4339    fallback = callback;
4340  }
4341  var aliases = {
4342    "on": "$on",
4343    "el": "$el",
4344    "id": "$id",
4345    "get": "$get",
4346    "set": "$set",
4347    "call": "$call",
4348    "commit": "$commit",
4349    "watch": "$watch",
4350    "entangle": "$entangle",
4351    "dispatch": "$dispatch",
4352    "dispatchTo": "$dispatchTo",
4353    "dispatchSelf": "$dispatchSelf",
4354    "upload": "$upload",
4355    "uploadMultiple": "$uploadMultiple",
4356    "removeUpload": "$removeUpload",
4357    "cancelUpload": "$cancelUpload"
4358  };
4359  function generateWireObject(component, state) {
4360    return new Proxy({}, {
4361      get(target, property) {
4362        if (property === "__instance")
4363          return component;
4364        if (property in aliases) {
4365          return getProperty(component, aliases[property]);
4366        } else if (property in properties) {
4367          return getProperty(component, property);
4368        } else if (property in state) {
4369          return state[property];
4370        } else if (!["then"].includes(property)) {
4371          return getFallback(component)(property);
4372        }
4373      },
4374      set(target, property, value) {
4375        if (property in state) {
4376          state[property] = value;
4377        }
4378        return true;
4379      }
4380    });
4381  }
4382  function getProperty(component, name) {
4383    return properties[name](component);
4384  }
4385  function getFallback(component) {
4386    return fallback(component);
4387  }
4388  module_default.magic("wire", (el, { cleanup: cleanup2 }) => {
4389    let component;
4390    return new Proxy({}, {
4391      get(target, property) {
4392        if (!component)
4393          component = closestComponent(el);
4394        if (["$entangle", "entangle"].includes(property)) {
4395          return generateEntangleFunction(component, cleanup2);
4396        }
4397        return component.$wire[property];
4398      },
4399      set(target, property, value) {
4400        if (!component)
4401          component = closestComponent(el);
4402        component.$wire[property] = value;
4403        return true;
4404      }
4405    });
4406  });
4407  wireProperty("__instance", (component) => component);
4408  wireProperty("$get", (component) => (property, reactive3 = true) => dataGet(reactive3 ? component.reactive : component.ephemeral, property));
4409  wireProperty("$el", (component) => {
4410    return component.el;
4411  });
4412  wireProperty("$id", (component) => {
4413    return component.id;
4414  });
4415  wireProperty("$set", (component) => async (property, value, live = true) => {
4416    dataSet(component.reactive, property, value);
4417    if (live) {
4418      component.queueUpdate(property, value);
4419      return await requestCommit(component);
4420    }
4421    return Promise.resolve();
4422  });
4423  wireProperty("$call", (component) => async (method, ...params) => {
4424    return await component.$wire[method](...params);
4425  });
4426  wireProperty("$entangle", (component) => (name, live = false) => {
4427    return generateEntangleFunction(component)(name, live);
4428  });
4429  wireProperty("$toggle", (component) => (name, live = true) => {
4430    return component.$wire.set(name, !component.$wire.get(name), live);
4431  });
4432  wireProperty("$watch", (component) => (path, callback) => {
4433    let getter = () => {
4434      return dataGet(component.reactive, path);
4435    };
4436    let unwatch = module_default.watch(getter, callback);
4437    component.addCleanup(unwatch);
4438  });
4439  wireProperty("$refresh", (component) => component.$wire.$commit);
4440  wireProperty("$commit", (component) => async () => await requestCommit(component));
4441  wireProperty("$on", (component) => (...params) => listen2(component, ...params));
4442  wireProperty("$dispatch", (component) => (...params) => dispatch3(component, ...params));
4443  wireProperty("$dispatchSelf", (component) => (...params) => dispatchSelf(component, ...params));
4444  wireProperty("$dispatchTo", () => (...params) => dispatchTo(...params));
4445  wireProperty("$upload", (component) => (...params) => upload(component, ...params));
4446  wireProperty("$uploadMultiple", (component) => (...params) => uploadMultiple(component, ...params));
4447  wireProperty("$removeUpload", (component) => (...params) => removeUpload(component, ...params));
4448  wireProperty("$cancelUpload", (component) => (...params) => cancelUpload(component, ...params));
4449  var parentMemo = /* @__PURE__ */ new WeakMap();
4450  wireProperty("$parent", (component) => {
4451    if (parentMemo.has(component))
4452      return parentMemo.get(component).$wire;
4453    let parent = component.parent;
4454    parentMemo.set(component, parent);
4455    return parent.$wire;
4456  });
4457  var overriddenMethods = /* @__PURE__ */ new WeakMap();
4458  function overrideMethod(component, method, callback) {
4459    if (!overriddenMethods.has(component)) {
4460      overriddenMethods.set(component, {});
4461    }
4462    let obj = overriddenMethods.get(component);
4463    obj[method] = callback;
4464    overriddenMethods.set(component, obj);
4465  }
4466  wireFallback((component) => (property) => async (...params) => {
4467    if (params.length === 1 && params[0] instanceof Event) {
4468      params = [];
4469    }
4470    if (overriddenMethods.has(component)) {
4471      let overrides = overriddenMethods.get(component);
4472      if (typeof overrides[property] === "function") {
4473        return overrides[property](params);
4474      }
4475    }
4476    return await requestCall(component, property, params);
4477  });
4478
4479  
4479// js/component.js
4480  var Component = class {
4481    constructor(el) {
4482      if (el.__livewire)
4483        throw "Component already initialized";
4484      el.__livewire = this;
4485      this.el = el;
4486      this.id = el.getAttribute("wire:id");
4487      this.__livewireId = this.id;
4488      this.snapshotEncoded = el.getAttribute("wire:snapshot");
4489      this.snapshot = JSON.parse(this.snapshotEncoded);
4490      if (!this.snapshot) {
4491        throw `Snapshot missing on Livewire component with id: ` + this.id;
4492      }
4493      this.name = this.snapshot.memo.name;
4494      this.effects = JSON.parse(el.getAttribute("wire:effects"));
4495      this.originalEffects = deepClone(this.effects);
4496      this.canonical = extractData(deepClone(this.snapshot.data));
4497      this.ephemeral = extractData(deepClone(this.snapshot.data));
4498      this.reactive = Alpine.reactive(this.ephemeral);
4499      this.queuedUpdates = {};
4500      this.$wire = generateWireObject(this, this.reactive);
4501      this.cleanups = [];
4502      this.processEffects(this.effects);
4503    }
4504    mergeNewSnapshot(snapshotEncoded, effects, updates = {}) {
4505      let snapshot = JSON.parse(snapshotEncoded);
4506      let oldCanonical = deepClone(this.canonical);
4507      let updatedOldCanonical = this.applyUpdates(oldCanonical, updates);
4508      let newCanonical = extractData(deepClone(snapshot.data));
4509      let dirty = diff(updatedOldCanonical, newCanonical);
4510      this.snapshotEncoded = snapshotEncoded;
4511      this.snapshot = snapshot;
4512      this.effects = effects;
4513      this.canonical = extractData(deepClone(snapshot.data));
4514      let newData = extractData(deepClone(snapshot.data));
4515      Object.entries(dirty).forEach(([key, value]) => {
4516        let rootKey = key.split(".")[0];
4517        this.reactive[rootKey] = newData[rootKey];
4518      });
4519      return dirty;
4520    }
4521    queueUpdate(propertyName, value) {
4522      this.queuedUpdates[propertyName] = value;
4523    }
4524    mergeQueuedUpdates(diff2) {
4525      Object.entries(this.queuedUpdates).forEach(([updateKey, updateValue]) => {
4526        Object.entries(diff2).forEach(([diffKey, diffValue]) => {
4527          if (diffKey.startsWith(updateValue)) {
4528            delete diff2[diffKey];
4529          }
4530        });
4531        diff2[updateKey] = updateValue;
4532      });
4533      this.queuedUpdates = [];
4534      return diff2;
4535    }
4536    applyUpdates(object, updates) {
4537      for (let key in updates) {
4538        dataSet(object, key, updates[key]);
4539      }
4540      return object;
4541    }
4542    replayUpdate(snapshot, html) {
4543      let effects = { ...this.effects, html };
4544      this.mergeNewSnapshot(JSON.stringify(snapshot), effects);
4545      this.processEffects({ html });
4546    }
4547    processEffects(effects) {
4548      trigger2("effects", this, effects);
4549      trigger2("effect", {
4550        component: this,
4551        effects,
4552        cleanup: (i) => this.addCleanup(i)
4553      });
4554    }
4555    get children() {
4556      let meta = this.snapshot.memo;
4557      let childIds = Object.values(meta.children).map((i) => i[1]);
4558      return childIds.map((id) => findComponent(id));
4559    }
4560    get parent() {
4561      return closestComponent(this.el.parentElement);
4562    }
4563    inscribeSnapshotAndEffectsOnElement() {
4564      let el = this.el;
4565      el.setAttribute("wire:snapshot", this.snapshotEncoded);
4566      let effects = this.originalEffects.listeners ? { listeners: this.originalEffects.listeners } : {};
4567      if (this.originalEffects.url) {
4568        effects.url = this.originalEffects.url;
4569      }
4570      el.setAttribute("wire:effects", JSON.stringify(effects));
4571    }
4572    addCleanup(cleanup2) {
4573      this.cleanups.push(cleanup2);
4574    }
4575    cleanup() {
4576      delete this.el.__livewire;
4577      while (this.cleanups.length > 0) {
4578        this.cleanups.pop()();
4579      }
4580    }
4581  };
4582
4583  
4583// js/store.js
4584  var components = {};
4585  function initComponent(el) {
4586    let component = new Component(el);
4587    if (components[component.id])
4588      throw "Component already registered";
4589    let cleanup2 = (i) => component.addCleanup(i);
4590    trigger2("component.init", { component, cleanup: cleanup2 });
4591    components[component.id] = component;
4592    return component;
4593  }
4594  function destroyComponent(id) {
4595    let component = components[id];
4596    if (!component)
4597      return;
4598    component.cleanup();
4599    delete components[id];
4600  }
4601  function findComponent(id) {
4602    let component = components[id];
4603    if (!component)
4604      throw "Component not found: " + id;
4605    return component;
4606  }
4607  function closestComponent(el, strict = true) {
4608    let closestRoot2 = Alpine.findClosest(el, (i) => i.__livewire);
4609    if (!closestRoot2) {
4610      if (strict)
4611        throw "Could not find Livewire component in DOM tree";
4612      return;
4613    }
4614    return closestRoot2.__livewire;
4615  }
4616  function componentsByName(name) {
4617    return Object.values(components).filter((component) => {
4618      return name == component.name;
4619    });
4620  }
4621  function getByName(name) {
4622    return componentsByName(name).map((i) => i.$wire);
4623  }
4624  function find(id) {
4625    let component = components[id];
4626    return component && component.$wire;
4627  }
4628  function first() {
4629    return Object.values(components)[0].$wire;
4630  }
4631  function all() {
4632    return Object.values(components);
4633  }
4634
4635  
4635// js/events.js
4636  function dispatch3(component, name, params) {
4637    dispatchEvent(component.el, name, params);
4638  }
4639  function dispatchGlobal(name, params) {
4640    dispatchEvent(window, name, params);
4641  }
4642  function dispatchSelf(component, name, params) {
4643    dispatchEvent(component.el, name, params, false);
4644  }
4645  function dispatchTo(componentName, name, params) {
4646    let targets = componentsByName(componentName);
4647    targets.forEach((target) => {
4648      dispatchEvent(target.el, name, params, false);
4649    });
4650  }
4651  function listen2(component, name, callback) {
4652    component.el.addEventListener(name, (e) => {
4653      callback(e.detail);
4654    });
4655  }
4656  function on3(eventName, callback) {
4657    let handler4 = (e) => {
4658      if (!e.__livewire)
4659        return;
4660      callback(e.detail);
4661    };
4662    window.addEventListener(eventName, handler4);
4663    return () => {
4664      window.removeEventListener(eventName, handler4);
4665    };
4666  }
4667  function dispatchEvent(target, name, params, bubbles = true) {
4668    let e = new CustomEvent(name, { bubbles, detail: params });
4669    e.__livewire = { name, params, receivedBy: [] };
4670    target.dispatchEvent(e);
4671  }
4672
4673  
4673// js/directives.js
4674  var customDirectiveNames = /* @__PURE__ */ new Set();
4675  function matchesForLivewireDirective(attributeName) {
4676    return attributeName.match(new RegExp("wire:"));
4677  }
4678  function extractDirective(el, name) {
4679    let [value, ...modifiers] = name.replace(new RegExp("wire:"), "").split(".");
4680    return new Directive(value, modifiers, name, el);
4681  }
4682  function directive2(name, callback) {
4683    if (customDirectiveNames.has(name))
4684      return;
4685    customDirectiveNames.add(name);
4686    on2("directive.init", ({ el, component, directive: directive3, cleanup: cleanup2 }) => {
4687      if (directive3.value === name) {
4688        callback({
4689          el,
4690          directive: directive3,
4691          component,
4692          $wire: component.$wire,
4693          cleanup: cleanup2
4694        });
4695      }
4696    });
4697  }
4698  function getDirectives(el) {
4699    return new DirectiveManager(el);
4700  }
4701  function customDirectiveHasBeenRegistered(name) {
4702    return customDirectiveNames.has(name);
4703  }
4704  var DirectiveManager = class {
4705    constructor(el) {
4706      this.el = el;
4707      this.directives = this.extractTypeModifiersAndValue();
4708    }
4709    all() {
4710      return this.directives;
4711    }
4712    has(value) {
4713      return this.directives.map((directive3) => directive3.value).includes(value);
4714    }
4715    missing(value) {
4716      return !this.has(value);
4717    }
4718    get(value) {
4719      return this.directives.find((directive3) => directive3.value === value);
4720    }
4721    extractTypeModifiersAndValue() {
4722      return Array.from(this.el.getAttributeNames().filter((name) => matchesForLivewireDirective(name)).map((name) => extractDirective(this.el, name)));
4723    }
4724  };
4725  var Directive = class {
4726    constructor(value, modifiers, rawName, el) {
4727      this.rawName = this.raw = rawName;
4728      this.el = el;
4729      this.eventContext;
4730      this.value = value;
4731      this.modifiers = modifiers;
4732      this.expression = this.el.getAttribute(this.rawName);
4733    }
4734    get method() {
4735      const { method } = this.parseOutMethodAndParams(this.expression);
4736      return method;
4737    }
4738    get params() {
4739      const { params } = this.parseOutMethodAndParams(this.expression);
4740      return params;
4741    }
4742    parseOutMethodAndParams(rawMethod) {
4743      let method = rawMethod;
4744      let params = [];
4745      const methodAndParamString = method.match(/(.*?)\((.*)\)/s);
4746      if (methodAndParamString) {
4747        method = methodAndParamString[1];
4748        let func = new Function("$event", `return (function () {
4749                for (var l=arguments.length, p=new Array(l), k=0; k<l; k++) {
4750                    p[k] = arguments[k];
4751                }
4752                return [].concat(p);
4753            })(${methodAndParamString[2]})`);
4754        params = func(this.eventContext);
4755      }
4756      return { method, params };
4757    }
4758  };
4759
4760  
vendor: 3,040 bytes, lines 4760-4854
4760// ../alpine/packages/collapse/dist/module.esm.js
4761  function src_default2(Alpine3) {
4762    Alpine3.directive("collapse", collapse);
4763    collapse.inline = (el, { modifiers }) => {
4764      if (!modifiers.includes("min"))
4765        return;
4766      el._x_doShow = () => {
4767      };
4768      el._x_doHide = () => {
4769      };
4770    };
4771    function collapse(el, { modifiers }) {
4772      let duration = modifierValue2(modifiers, "duration", 250) / 1e3;
4773      let floor2 = modifierValue2(modifiers, "min", 0);
4774      let fullyHide = !modifiers.includes("min");
4775      if (!el._x_isShown)
4776        el.style.height = `${floor2}px`;
4777      if (!el._x_isShown && fullyHide)
4778        el.hidden = true;
4779      if (!el._x_isShown)
4780        el.style.overflow = "hidden";
4781      let setFunction = (el2, styles) => {
4782        let revertFunction = Alpine3.setStyles(el2, styles);
4783        return styles.height ? () => {
4784        } : revertFunction;
4785      };
4786      let transitionStyles = {
4787        transitionProperty: "height",
4788        transitionDuration: `${duration}s`,
4789        transitionTimingFunction: "cubic-bezier(0.4, 0.0, 0.2, 1)"
4790      };
4791      el._x_transition = {
4792        in(before = () => {
4793        }, after = () => {
4794        }) {
4795          if (fullyHide)
4796            el.hidden = false;
4797          if (fullyHide)
4798            el.style.display = null;
4799          let current = el.getBoundingClientRect().height;
4800          el.style.height = "auto";
4801          let full = el.getBoundingClientRect().height;
4802          if (current === full) {
4803            current = floor2;
4804          }
4805          Alpine3.transition(el, Alpine3.setStyles, {
4806            during: transitionStyles,
4807            start: { height: current + "px" },
4808            end: { height: full + "px" }
4809          }, () => el._x_isShown = true, () => {
4810            if (Math.abs(el.getBoundingClientRect().height - full) < 1) {
4811              el.style.overflow = null;
4812            }
4813          });
4814        },
4815        out(before = () => {
4816        }, after = () => {
4817        }) {
4818          let full = el.getBoundingClientRect().height;
4819          Alpine3.transition(el, setFunction, {
4820            during: transitionStyles,
4821            start: { height: full + "px" },
4822            end: { height: floor2 + "px" }
4823          }, () => el.style.overflow = "hidden", () => {
4824            el._x_isShown = false;
4825            if (el.style.height == `${floor2}px` && fullyHide) {
4826              el.style.display = "none";
4827              el.hidden = true;
4828            }
4829          });
4830        }
4831      };
4832    }
4833  }
4834  function modifierValue2(modifiers, key, fallback2) {
4835    if (modifiers.indexOf(key) === -1)
4836      return fallback2;
4837    const rawValue = modifiers[modifiers.indexOf(key) + 1];
4838    if (!rawValue)
4839      return fallback2;
4840    if (key === "duration") {
4841      let match = rawValue.match(/([0-9]+)ms/);
4842      if (match)
4843        return match[1];
4844    }
4845    if (key === "min") {
4846      let match = rawValue.match(/([0-9]+)px/);
4847      if (match)
4848        return match[1];
4849    }
4850    return rawValue;
4851  }
4852  var module_default2 = src_default2;
4853
4854  
4854// ../alpine/packages/focus/dist/module.esm.js
4855  var candidateSelectors = ["input", "select", "textarea", "a[href]", "button", "[tabindex]:not(slot)", "audio[controls]", "video[controls]", '[contenteditable]:not([contenteditable="false"])', "details>summary:first-of-type", "details"];
4856  var candidateSelector = /* @__PURE__ */ candidateSelectors.join(",");
4857  var NoElement = typeof Element === "undefined";
4858  var matches = NoElement ? function() {
4859  } : Element.prototype.matches || Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;
4860  var getRootNode = !NoElement && Element.prototype.getRootNode ? function(element) {
4861    return element.getRootNode();
4862  } : function(element) {
4863    return element.ownerDocument;
4864  };
4865  var getCandidates = function getCandidates2(el, includeContainer, filter) {
4866    var candidates = Array.prototype.slice.apply(el.querySelectorAll(candidateSelector));
4867    if (includeContainer && matches.call(el, candidateSelector)) {
4868      candidates.unshift(el);
4869    }
4870    candidates = candidates.filter(filter);
4871    return candidates;
4872  };
4873  var getCandidatesIteratively = function getCandidatesIteratively2(elements, includeContainer, options) {
4874    var candidates = [];
4875    var elementsToCheck = Array.from(elements);
4876    while (elementsToCheck.length) {
4877      var element = elementsToCheck.shift();
4878      if (element.tagName === "SLOT") {
4879        var assigned = element.assignedElements();
4880        var content = assigned.length ? assigned : element.children;
4881        var nestedCandidates = getCandidatesIteratively2(content, true, options);
4882        if (options.flatten) {
4883          candidates.push.apply(candidates, nestedCandidates);
4884        } else {
4885          candidates.push({
4886            scope: element,
4887            candidates: nestedCandidates
4888          });
4889        }
4890      } else {
4891        var validCandidate = matches.call(element, candidateSelector);
4892        if (validCandidate && options.filter(element) && (includeContainer || !elements.includes(element))) {
4893          candidates.push(element);
4894        }
4895        var shadowRoot = element.shadowRoot || typeof options.getShadowRoot === "function" && options.getShadowRoot(element);
4896        var validShadowRoot = !options.shadowRootFilter || options.shadowRootFilter(element);
4897        if (shadowRoot && validShadowRoot) {
4898          var _nestedCandidates = getCandidatesIteratively2(shadowRoot === true ? element.children : shadowRoot.children, true, options);
4899          if (options.flatten) {
4900            candidates.push.apply(candidates, _nestedCandidates);
4901          } else {
4902            candidates.push({
4903              scope: element,
4904              candidates: _nestedCandidates
4905            });
4906          }
4907        } else {
4908          elementsToCheck.unshift.apply(elementsToCheck, element.children);
4909        }
4910      }
4911    }
4912    return candidates;
4913  };
4914  var getTabindex = function getTabindex2(node, isScope) {
4915    if (node.tabIndex < 0) {
4916      if ((isScope || /^(AUDIO|VIDEO|DETAILS)$/.test(node.tagName) || node.isContentEditable) && isNaN(parseInt(node.getAttribute("tabindex"), 10))) {
4917        return 0;
4918      }
4919    }
4920    return node.tabIndex;
4921  };
4922  var sortOrderedTabbables = function sortOrderedTabbables2(a, b) {
4923    return a.tabIndex === b.tabIndex ? a.documentOrder - b.documentOrder : a.tabIndex - b.tabIndex;
4924  };
4925  var isInput = function isInput2(node) {
4926    return node.tagName === "INPUT";
4927  };
4928  var isHiddenInput = function isHiddenInput2(node) {
4929    return isInput(node) && node.type === "hidden";
4930  };
4931  var isDetailsWithSummary = function isDetailsWithSummary2(node) {
4932    var r = node.tagName === "DETAILS" && Array.prototype.slice.apply(node.children).some(function(child) {
4933      return child.tagName === "SUMMARY";
4934    });
4935    return r;
4936  };
4937  var getCheckedRadio = function getCheckedRadio2(nodes, form) {
4938    for (var i = 0; i < nodes.length; i++) {
4939      if (nodes[i].checked && nodes[i].form === form) {
4940        return nodes[i];
4941      }
4942    }
4943  };
4944  var isTabbableRadio = function isTabbableRadio2(node) {
4945    if (!node.name) {
4946      return true;
4947    }
4948    var radioScope = node.form || getRootNode(node);
4949    var queryRadios = function queryRadios2(name) {
4950      return radioScope.querySelectorAll('input[type="radio"][name="' + name + '"]');
4951    };
4952    var radioSet;
4953    if (typeof window !== "undefined" && typeof window.CSS !== "undefined" && typeof window.CSS.escape === "function") {
4954      radioSet = queryRadios(window.CSS.escape(node.name));
4955    } else {
4956      try {
4957        radioSet = queryRadios(node.name);
4958      } catch (err) {
4959        console.error("Looks like you have a radio button with a name attribute containing invalid CSS selector characters and need the CSS.escape polyfill: %s", err.message);
4960        return false;
4961      }
4962    }
4963    var checked = getCheckedRadio(radioSet, node.form);
4964    return !checked || checked === node;
4965  };
4966  var isRadio = function isRadio2(node) {
4967    return isInput(node) && node.type === "radio";
4968  };
4969  var isNonTabbableRadio = function isNonTabbableRadio2(node) {
4970    return isRadio(node) && !isTabbableRadio(node);
4971  };
4972  var isZeroArea = function isZeroArea2(node) {
4973    var _node$getBoundingClie = node.getBoundingClientRect(), width = _node$getBoundingClie.width, height = _node$getBoundingClie.height;
4974    return width === 0 && height === 0;
4975  };
4976  var isHidden = function isHidden2(node, _ref) {
4977    var displayCheck = _ref.displayCheck, getShadowRoot = _ref.getShadowRoot;
4978    if (getComputedStyle(node).visibility === "hidden") {
4979      return true;
4980    }
4981    var isDirectSummary = matches.call(node, "details>summary:first-of-type");
4982    var nodeUnderDetails = isDirectSummary ? node.parentElement : node;
4983    if (matches.call(nodeUnderDetails, "details:not([open]) *")) {
4984      return true;
4985    }
4986    var nodeRootHost = getRootNode(node).host;
4987    var nodeIsAttached = (nodeRootHost === null || nodeRootHost === void 0 ? void 0 : nodeRootHost.ownerDocument.contains(nodeRootHost)) || node.ownerDocument.contains(node);
4988    if (!displayCheck || displayCheck === "full") {
4989      if (typeof getShadowRoot === "function") {
4990        var originalNode = node;
4991        while (node) {
4992          var parentElement = node.parentElement;
4993          var rootNode = getRootNode(node);
4994          if (parentElement && !parentElement.shadowRoot && getShadowRoot(parentElement) === true) {
4995            return isZeroArea(node);
4996          } else if (node.assignedSlot) {
4997            node = node.assignedSlot;
4998          } else if (!parentElement && rootNode !== node.ownerDocument) {
4999            node = rootNode.host;
5000          } else {
5001            node = parentElement;
5002          }
5003        }
5004        node = originalNode;
5005      }
5006      if (nodeIsAttached) {
5007        return !node.getClientRects().length;
5008      }
5009    } else if (displayCheck === "non-zero-area") {
5010      return isZeroArea(node);
5011    }
5012    return false;
5013  };
5014  var isDisabledFromFieldset = function isDisabledFromFieldset2(node) {
5015    if (/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(node.tagName)) {
5016      var parentNode = node.parentElement;
5017      while (parentNode) {
5018        if (parentNode.tagName === "FIELDSET" && parentNode.disabled) {
5019          for (var i = 0; i < parentNode.children.length; i++) {
5020            var child = parentNode.children.item(i);
5021            if (child.tagName === "LEGEND") {
5022              return matches.call(parentNode, "fieldset[disabled] *") ? true : !child.contains(node);
5023            }
5024          }
5025          return true;
5026        }
5027        parentNode = parentNode.parentElement;
5028      }
5029    }
5030    return false;
5031  };
5032  var isNodeMatchingSelectorFocusable = function isNodeMatchingSelectorFocusable2(options, node) {
5033    if (node.disabled || isHiddenInput(node) || isHidden(node, options) || isDetailsWithSummary(node) || isDisabledFromFieldset(node)) {
5034      return false;
5035    }
5036    return true;
5037  };
5038  var isNodeMatchingSelectorTabbable = function isNodeMatchingSelectorTabbable2(options, node) {
5039    if (isNonTabbableRadio(node) || getTabindex(node) < 0 || !isNodeMatchingSelectorFocusable(options, node)) {
5040      return false;
5041    }
5042    return true;
5043  };
5044  var isValidShadowRootTabbable = function isValidShadowRootTabbable2(shadowHostNode) {
5045    var tabIndex = parseInt(shadowHostNode.getAttribute("tabindex"), 10);
5046    if (isNaN(tabIndex) || tabIndex >= 0) {
5047      return true;
5048    }
5049    return false;
5050  };
5051  var sortByOrder = function sortByOrder2(candidates) {
5052    var regularTabbables = [];
5053    var orderedTabbables = [];
5054    candidates.forEach(function(item, i) {
5055      var isScope = !!item.scope;
5056      var element = isScope ? item.scope : item;
5057      var candidateTabindex = getTabindex(element, isScope);
5058      var elements = isScope ? sortByOrder2(item.candidates) : element;
5059      if (candidateTabindex === 0) {
5060        isScope ? regularTabbables.push.apply(regularTabbables, elements) : regularTabbables.push(element);
5061      } else {
5062        orderedTabbables.push({
5063          documentOrder: i,
5064          tabIndex: candidateTabindex,
5065          item,
5066          isScope,
5067          content: elements
5068        });
5069      }
5070    });
5071    return orderedTabbables.sort(sortOrderedTabbables).reduce(function(acc, sortable) {
5072      sortable.isScope ? acc.push.apply(acc, sortable.content) : acc.push(sortable.content);
5073      return acc;
5074    }, []).concat(regularTabbables);
5075  };
5076  var tabbable = function tabbable2(el, options) {
5077    options = options || {};
5078    var candidates;
5079    if (options.getShadowRoot) {
5080      candidates = getCandidatesIteratively([el], options.includeContainer, {
5081        filter: isNodeMatchingSelectorTabbable.bind(null, options),
5082        flatten: false,
5083        getShadowRoot: options.getShadowRoot,
5084        shadowRootFilter: isValidShadowRootTabbable
5085      });
5086    } else {
5087      candidates = getCandidates(el, options.includeContainer, isNodeMatchingSelectorTabbable.bind(null, options));
5088    }
5089    return sortByOrder(candidates);
5090  };
5091  var focusable = function focusable2(el, options) {
5092    options = options || {};
5093    var candidates;
5094    if (options.getShadowRoot) {
5095      candidates = getCandidatesIteratively([el], options.includeContainer, {
5096        filter: isNodeMatchingSelectorFocusable.bind(null, options),
5097        flatten: true,
5098        getShadowRoot: options.getShadowRoot
5099      });
5100    } else {
5101      candidates = getCandidates(el, options.includeContainer, isNodeMatchingSelectorFocusable.bind(null, options));
5102    }
5103    return candidates;
5104  };
5105  var isTabbable = function isTabbable2(node, options) {
5106    options = options || {};
5107    if (!node) {
5108      throw new Error("No node provided");
5109    }
5110    if (matches.call(node, candidateSelector) === false) {
5111      return false;
5112    }
5113    return isNodeMatchingSelectorTabbable(options, node);
5114  };
5115  var focusableCandidateSelector = /* @__PURE__ */ candidateSelectors.concat("iframe").join(",");
5116  var isFocusable = function isFocusable2(node, options) {
5117    options = options || {};
5118    if (!node) {
5119      throw new Error("No node provided");
5120    }
5121    if (matches.call(node, focusableCandidateSelector) === false) {
5122      return false;
5123    }
5124    return isNodeMatchingSelectorFocusable(options, node);
5125  };
5126  function ownKeys2(object, enumerableOnly) {
5127    var keys = Object.keys(object);
5128    if (Object.getOwnPropertySymbols) {
5129      var symbols = Object.getOwnPropertySymbols(object);
5130      enumerableOnly && (symbols = symbols.filter(function(sym) {
5131        return Object.getOwnPropertyDescriptor(object, sym).enumerable;
5132      })), keys.push.apply(keys, symbols);
5133    }
5134    return keys;
5135  }
5136  function _objectSpread2(target) {
5137    for (var i = 1; i < arguments.length; i++) {
5138      var source = null != arguments[i] ? arguments[i] : {};
5139      i % 2 ? ownKeys2(Object(source), true).forEach(function(key) {
5140        _defineProperty(target, key, source[key]);
5141      }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys2(Object(source)).forEach(function(key) {
5142        Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
5143      });
5144    }
5145    return target;
5146  }
5147  function _defineProperty(obj, key, value) {
5148    if (key in obj) {
5149      Object.defineProperty(obj, key, {
5150        value,
5151        enumerable: true,
5152        configurable: true,
5153        writable: true
5154      });
5155    } else {
5156      obj[key] = value;
5157    }
5158    return obj;
5159  }
5160  var activeFocusTraps = function() {
5161    var trapQueue = [];
5162    return {
5163      activateTrap: function activateTrap(trap) {
5164        if (trapQueue.length > 0) {
5165          var activeTrap = trapQueue[trapQueue.length - 1];
5166          if (activeTrap !== trap) {
5167            activeTrap.pause();
5168          }
5169        }
5170        var trapIndex = trapQueue.indexOf(trap);
5171        if (trapIndex === -1) {
5172          trapQueue.push(trap);
5173        } else {
5174          trapQueue.splice(trapIndex, 1);
5175          trapQueue.push(trap);
5176        }
5177      },
5178      deactivateTrap: function deactivateTrap(trap) {
5179        var trapIndex = trapQueue.indexOf(trap);
5180        if (trapIndex !== -1) {
5181          trapQueue.splice(trapIndex, 1);
5182        }
5183        if (trapQueue.length > 0) {
5184          trapQueue[trapQueue.length - 1].unpause();
5185        }
5186      }
5187    };
5188  }();
5189  var isSelectableInput = function isSelectableInput2(node) {
5190    return node.tagName && node.tagName.toLowerCase() === "input" && typeof node.select === "function";
5191  };
5192  var isEscapeEvent = function isEscapeEvent2(e) {
5193    return e.key === "Escape" || e.key === "Esc" || e.keyCode === 27;
5194  };
5195  var isTabEvent = function isTabEvent2(e) {
5196    return e.key === "Tab" || e.keyCode === 9;
5197  };
5198  var delay = function delay2(fn) {
5199    return setTimeout(fn, 0);
5200  };
5201  var findIndex = function findIndex2(arr, fn) {
5202    var idx = -1;
5203    arr.every(function(value, i) {
5204      if (fn(value)) {
5205        idx = i;
5206        return false;
5207      }
5208      return true;
5209    });
5210    return idx;
5211  };
5212  var valueOrHandler = function valueOrHandler2(value) {
5213    for (var _len = arguments.length, params = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
5214      params[_key - 1] = arguments[_key];
5215    }
5216    return typeof value === "function" ? value.apply(void 0, params) : value;
5217  };
5218  var getActualTarget = function getActualTarget2(event) {
5219    return event.target.shadowRoot && typeof event.composedPath === "function" ? event.composedPath()[0] : event.target;
5220  };
5221  var createFocusTrap = function createFocusTrap2(elements, userOptions) {
5222    var doc = (userOptions === null || userOptions === void 0 ? void 0 : userOptions.document) || document;
5223    var config = _objectSpread2({
5224      returnFocusOnDeactivate: true,
5225      escapeDeactivates: true,
5226      delayInitialFocus: true
5227    }, userOptions);
5228    var state = {
5229      containers: [],
5230      containerGroups: [],
5231      tabbableGroups: [],
5232      nodeFocusedBeforeActivation: null,
5233      mostRecentlyFocusedNode: null,
5234      active: false,
5235      paused: false,
5236      delayInitialFocusTimer: void 0
5237    };
5238    var trap;
5239    var getOption = function getOption2(configOverrideOptions, optionName, configOptionName) {
5240      return configOverrideOptions && configOverrideOptions[optionName] !== void 0 ? configOverrideOptions[optionName] : config[configOptionName || optionName];
5241    };
5242    var findContainerIndex = function findContainerIndex2(element) {
5243      return state.containerGroups.findIndex(function(_ref) {
5244        var container = _ref.container, tabbableNodes = _ref.tabbableNodes;
5245        return container.contains(element) || tabbableNodes.find(function(node) {
5246          return node === element;
5247        });
5248      });
5249    };
5250    var getNodeForOption = function getNodeForOption2(optionName) {
5251      var optionValue = config[optionName];
5252      if (typeof optionValue === "function") {
5253        for (var _len2 = arguments.length, params = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
5254          params[_key2 - 1] = arguments[_key2];
5255        }
5256        optionValue = optionValue.apply(void 0, params);
5257      }
5258      if (optionValue === true) {
5259        optionValue = void 0;
5260      }
5261      if (!optionValue) {
5262        if (optionValue === void 0 || optionValue === false) {
5263          return optionValue;
5264        }
5265        throw new Error("`".concat(optionName, "` was specified but was not a node, or did not return a node"));
5266      }
5267      var node = optionValue;
5268      if (typeof optionValue === "string") {
5269        node = doc.querySelector(optionValue);
5270        if (!node) {
5271          throw new Error("`".concat(optionName, "` as selector refers to no known node"));
5272        }
5273      }
5274      return node;
5275    };
5276    var getInitialFocusNode = function getInitialFocusNode2() {
5277      var node = getNodeForOption("initialFocus");
5278      if (node === false) {
5279        return false;
5280      }
5281      if (node === void 0) {
5282        if (findContainerIndex(doc.activeElement) >= 0) {
5283          node = doc.activeElement;
5284        } else {
5285          var firstTabbableGroup = state.tabbableGroups[0];
5286          var firstTabbableNode = firstTabbableGroup && firstTabbableGroup.firstTabbableNode;
5287          node = firstTabbableNode || getNodeForOption("fallbackFocus");
5288        }
5289      }
5290      if (!node) {
5291        throw new Error("Your focus-trap needs to have at least one focusable element");
5292      }
5293      return node;
5294    };
5295    var updateTabbableNodes = function updateTabbableNodes2() {
5296      state.containerGroups = state.containers.map(function(container) {
5297        var tabbableNodes = tabbable(container, config.tabbableOptions);
5298        var focusableNodes = focusable(container, config.tabbableOptions);
5299        return {
5300          container,
5301          tabbableNodes,
5302          focusableNodes,
5303          firstTabbableNode: tabbableNodes.length > 0 ? tabbableNodes[0] : null,
5304          lastTabbableNode: tabbableNodes.length > 0 ? tabbableNodes[tabbableNodes.length - 1] : null,
5305          nextTabbableNode: function nextTabbableNode(node) {
5306            var forward = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true;
5307            var nodeIdx = focusableNodes.findIndex(function(n) {
5308              return n === node;
5309            });
5310            if (nodeIdx < 0) {
5311              return void 0;
5312            }
5313            if (forward) {
5314              return focusableNodes.slice(nodeIdx + 1).find(function(n) {
5315                return isTabbable(n, config.tabbableOptions);
5316              });
5317            }
5318            return focusableNodes.slice(0, nodeIdx).reverse().find(function(n) {
5319              return isTabbable(n, config.tabbableOptions);
5320            });
5321          }
5322        };
5323      });
5324      state.tabbableGroups = state.containerGroups.filter(function(group) {
5325        return group.tabbableNodes.length > 0;
5326      });
5327      if (state.tabbableGroups.length <= 0 && !getNodeForOption("fallbackFocus")) {
5328        throw new Error("Your focus-trap must have at least one container with at least one tabbable node in it at all times");
5329      }
5330    };
5331    var tryFocus = function tryFocus2(node) {
5332      if (node === false) {
5333        return;
5334      }
5335      if (node === doc.activeElement) {
5336        return;
5337      }
5338      if (!node || !node.focus) {
5339        tryFocus2(getInitialFocusNode());
5340        return;
5341      }
5342      node.focus({
5343        preventScroll: !!config.preventScroll
5344      });
5345      state.mostRecentlyFocusedNode = node;
5346      if (isSelectableInput(node)) {
5347        node.select();
5348      }
5349    };
5350    var getReturnFocusNode = function getReturnFocusNode2(previousActiveElement) {
5351      var node = getNodeForOption("setReturnFocus", previousActiveElement);
5352      return node ? node : node === false ? false : previousActiveElement;
5353    };
5354    var checkPointerDown = function checkPointerDown2(e) {
5355      var target = getActualTarget(e);
5356      if (findContainerIndex(target) >= 0) {
5357        return;
5358      }
5359      if (valueOrHandler(config.clickOutsideDeactivates, e)) {
5360        trap.deactivate({
5361          returnFocus: config.returnFocusOnDeactivate && !isFocusable(target, config.tabbableOptions)
5362        });
5363        return;
5364      }
5365      if (valueOrHandler(config.allowOutsideClick, e)) {
5366        return;
5367      }
5368      e.preventDefault();
5369    };
5370    var checkFocusIn = function checkFocusIn2(e) {
5371      var target = getActualTarget(e);
5372      var targetContained = findContainerIndex(target) >= 0;
5373      if (targetContained || target instanceof Document) {
5374        if (targetContained) {
5375          state.mostRecentlyFocusedNode = target;
5376        }
5377      } else {
5378        e.stopImmediatePropagation();
5379        tryFocus(state.mostRecentlyFocusedNode || getInitialFocusNode());
5380      }
5381    };
5382    var checkTab = function checkTab2(e) {
5383      var target = getActualTarget(e);
5384      updateTabbableNodes();
5385      var destinationNode = null;
5386      if (state.tabbableGroups.length > 0) {
5387        var containerIndex = findContainerIndex(target);
5388        var containerGroup = containerIndex >= 0 ? state.containerGroups[containerIndex] : void 0;
5389        if (containerIndex < 0) {
5390          if (e.shiftKey) {
5391            destinationNode = state.tabbableGroups[state.tabbableGroups.length - 1].lastTabbableNode;
5392          } else {
5393            destinationNode = state.tabbableGroups[0].firstTabbableNode;
5394          }
5395        } else if (e.shiftKey) {
5396          var startOfGroupIndex = findIndex(state.tabbableGroups, function(_ref2) {
5397            var firstTabbableNode = _ref2.firstTabbableNode;
5398            return target === firstTabbableNode;
5399          });
5400          if (startOfGroupIndex < 0 && (containerGroup.container === target || isFocusable(target, config.tabbableOptions) && !isTabbable(target, config.tabbableOptions) && !containerGroup.nextTabbableNode(target, false))) {
5401            startOfGroupIndex = containerIndex;
5402          }
5403          if (startOfGroupIndex >= 0) {
5404            var destinationGroupIndex = startOfGroupIndex === 0 ? state.tabbableGroups.length - 1 : startOfGroupIndex - 1;
5405            var destinationGroup = state.tabbableGroups[destinationGroupIndex];
5406            destinationNode = destinationGroup.lastTabbableNode;
5407          }
5408        } else {
5409          var lastOfGroupIndex = findIndex(state.tabbableGroups, function(_ref3) {
5410            var lastTabbableNode = _ref3.lastTabbableNode;
5411            return target === lastTabbableNode;
5412          });
5413          if (lastOfGroupIndex < 0 && (containerGroup.container === target || isFocusable(target, config.tabbableOptions) && !isTabbable(target, config.tabbableOptions) && !containerGroup.nextTabbableNode(target))) {
5414            lastOfGroupIndex = containerIndex;
5415          }
5416          if (lastOfGroupIndex >= 0) {
5417            var _destinationGroupIndex = lastOfGroupIndex === state.tabbableGroups.length - 1 ? 0 : lastOfGroupIndex + 1;
5418            var _destinationGroup = state.tabbableGroups[_destinationGroupIndex];
5419            destinationNode = _destinationGroup.firstTabbableNode;
5420          }
5421        }
5422      } else {
5423        destinationNode = getNodeForOption("fallbackFocus");
5424      }
5425      if (destinationNode) {
5426        e.preventDefault();
5427        tryFocus(destinationNode);
5428      }
5429    };
5430    var checkKey = function checkKey2(e) {
5431      if (isEscapeEvent(e) && valueOrHandler(config.escapeDeactivates, e) !== false) {
5432        e.preventDefault();
5433        trap.deactivate();
5434        return;
5435      }
5436      if (isTabEvent(e)) {
5437        checkTab(e);
5438        return;
5439      }
5440    };
5441    var checkClick = function checkClick2(e) {
5442      var target = getActualTarget(e);
5443      if (findContainerIndex(target) >= 0) {
5444        return;
5445      }
5446      if (valueOrHandler(config.clickOutsideDeactivates, e)) {
5447        return;
5448      }
5449      if (valueOrHandler(config.allowOutsideClick, e)) {
5450        return;
5451      }
5452      e.preventDefault();
5453      e.stopImmediatePropagation();
5454    };
5455    var addListeners = function addListeners2() {
5456      if (!state.active) {
5457        return;
5458      }
5459      activeFocusTraps.activateTrap(trap);
5460      state.delayInitialFocusTimer = config.delayInitialFocus ? delay(function() {
5461        tryFocus(getInitialFocusNode());
5462      }) : tryFocus(getInitialFocusNode());
5463      doc.addEventListener("focusin", checkFocusIn, true);
5464      doc.addEventListener("mousedown", checkPointerDown, {
5465        capture: true,
5466        passive: false
5467      });
5468      doc.addEventListener("touchstart", checkPointerDown, {
5469        capture: true,
5470        passive: false
5471      });
5472      doc.addEventListener("click", checkClick, {
5473        capture: true,
5474        passive: false
5475      });
5476      doc.addEventListener("keydown", checkKey, {
5477        capture: true,
5478        passive: false
5479      });
5480      return trap;
5481    };
5482    var removeListeners = function removeListeners2() {
5483      if (!state.active) {
5484        return;
5485      }
5486      doc.removeEventListener("focusin", checkFocusIn, true);
5487      doc.removeEventListener("mousedown", checkPointerDown, true);
5488      doc.removeEventListener("touchstart", checkPointerDown, true);
5489      doc.removeEventListener("click", checkClick, true);
5490      doc.removeEventListener("keydown", checkKey, true);
5491      return trap;
5492    };
5493    trap = {
5494      get active() {
5495        return state.active;
5496      },
5497      get paused() {
5498        return state.paused;
5499      },
5500      activate: function activate(activateOptions) {
5501        if (state.active) {
5502          return this;
5503        }
5504        var onActivate = getOption(activateOptions, "onActivate");
5505        var onPostActivate = getOption(activateOptions, "onPostActivate");
5506        var checkCanFocusTrap = getOption(activateOptions, "checkCanFocusTrap");
5507        if (!checkCanFocusTrap) {
5508          updateTabbableNodes();
5509        }
5510        state.active = true;
5511        state.paused = false;
5512        state.nodeFocusedBeforeActivation = doc.activeElement;
5513        if (onActivate) {
5514          onActivate();
5515        }
5516        var finishActivation = function finishActivation2() {
5517          if (checkCanFocusTrap) {
5518            updateTabbableNodes();
5519          }
5520          addListeners();
5521          if (onPostActivate) {
5522            onPostActivate();
5523          }
5524        };
5525        if (checkCanFocusTrap) {
5526          checkCanFocusTrap(state.containers.concat()).then(finishActivation, finishActivation);
5527          return this;
5528        }
5529        finishActivation();
5530        return this;
5531      },
5532      deactivate: function deactivate(deactivateOptions) {
5533        if (!state.active) {
5534          return this;
5535        }
5536        var options = _objectSpread2({
5537          onDeactivate: config.onDeactivate,
5538          onPostDeactivate: config.onPostDeactivate,
5539          checkCanReturnFocus: config.checkCanReturnFocus
5540        }, deactivateOptions);
5541        clearTimeout(state.delayInitialFocusTimer);
5542        state.delayInitialFocusTimer = void 0;
5543        removeListeners();
5544        state.active = false;
5545        state.paused = false;
5546        activeFocusTraps.deactivateTrap(trap);
5547        var onDeactivate = getOption(options, "onDeactivate");
5548        var onPostDeactivate = getOption(options, "onPostDeactivate");
5549        var checkCanReturnFocus = getOption(options, "checkCanReturnFocus");
5550        var returnFocus = getOption(options, "returnFocus", "returnFocusOnDeactivate");
5551        if (onDeactivate) {
5552          onDeactivate();
5553        }
5554        var finishDeactivation = function finishDeactivation2() {
5555          delay(function() {
5556            if (returnFocus) {
5557              tryFocus(getReturnFocusNode(state.nodeFocusedBeforeActivation));
5558            }
5559            if (onPostDeactivate) {
5560              onPostDeactivate();
5561            }
5562          });
5563        };
5564        if (returnFocus && checkCanReturnFocus) {
5565          checkCanReturnFocus(getReturnFocusNode(state.nodeFocusedBeforeActivation)).then(finishDeactivation, finishDeactivation);
5566          return this;
5567        }
5568        finishDeactivation();
5569        return this;
5570      },
5571      pause: function pause() {
5572        if (state.paused || !state.active) {
5573          return this;
5574        }
5575        state.paused = true;
5576        removeListeners();
5577        return this;
5578      },
5579      unpause: function unpause() {
5580        if (!state.paused || !state.active) {
5581          return this;
5582        }
5583        state.paused = false;
5584        updateTabbableNodes();
5585        addListeners();
5586        return this;
5587      },
5588      updateContainerElements: function updateContainerElements(containerElements) {
5589        var elementsAsArray = [].concat(containerElements).filter(
vendor: 5,515 bytes, lines 5589-5781
5589Boolean);
5590        state.containers = elementsAsArray.map(function(element) {
5591          return typeof element === "string" ? doc.querySelector(element) : element;
5592        });
5593        if (state.active) {
5594          updateTabbableNodes();
5595        }
5596        return this;
5597      }
5598    };
5599    trap.updateContainerElements(elements);
5600    return trap;
5601  };
5602  function src_default3(Alpine3) {
5603    let lastFocused;
5604    let currentFocused;
5605    window.addEventListener("focusin", () => {
5606      lastFocused = currentFocused;
5607      currentFocused = document.activeElement;
5608    });
5609    Alpine3.magic("focus", (el) => {
5610      let within = el;
5611      return {
5612        __noscroll: false,
5613        __wrapAround: false,
5614        within(el2) {
5615          within = el2;
5616          return this;
5617        },
5618        withoutScrolling() {
5619          this.__noscroll = true;
5620          return this;
5621        },
5622        noscroll() {
5623          this.__noscroll = true;
5624          return this;
5625        },
5626        withWrapAround() {
5627          this.__wrapAround = true;
5628          return this;
5629        },
5630        wrap() {
5631          return this.withWrapAround();
5632        },
5633        focusable(el2) {
5634          return isFocusable(el2);
5635        },
5636        previouslyFocused() {
5637          return lastFocused;
5638        },
5639        lastFocused() {
5640          return lastFocused;
5641        },
5642        focused() {
5643          return currentFocused;
5644        },
5645        focusables() {
5646          if (Array.isArray(within))
5647            return within;
5648          return focusable(within, { displayCheck: "none" });
5649        },
5650        all() {
5651          return this.focusables();
5652        },
5653        isFirst(el2) {
5654          let els2 = this.all();
5655          return els2[0] && els2[0].isSameNode(el2);
5656        },
5657        isLast(el2) {
5658          let els2 = this.all();
5659          return els2.length && els2.slice(-1)[0].isSameNode(el2);
5660        },
5661        getFirst() {
5662          return this.all()[0];
5663        },
5664        getLast() {
5665          return this.all().slice(-1)[0];
5666        },
5667        getNext() {
5668          let list = this.all();
5669          let current = document.activeElement;
5670          if (list.indexOf(current) === -1)
5671            return;
5672          if (this.__wrapAround && list.indexOf(current) === list.length - 1) {
5673            return list[0];
5674          }
5675          return list[list.indexOf(current) + 1];
5676        },
5677        getPrevious() {
5678          let list = this.all();
5679          let current = document.activeElement;
5680          if (list.indexOf(current) === -1)
5681            return;
5682          if (this.__wrapAround && list.indexOf(current) === 0) {
5683            return list.slice(-1)[0];
5684          }
5685          return list[list.indexOf(current) - 1];
5686        },
5687        first() {
5688          this.focus(this.getFirst());
5689        },
5690        last() {
5691          this.focus(this.getLast());
5692        },
5693        next() {
5694          this.focus(this.getNext());
5695        },
5696        previous() {
5697          this.focus(this.getPrevious());
5698        },
5699        prev() {
5700          return this.previous();
5701        },
5702        focus(el2) {
5703          if (!el2)
5704            return;
5705          setTimeout(() => {
5706            if (!el2.hasAttribute("tabindex"))
5707              el2.setAttribute("tabindex", "0");
5708            el2.focus({ preventScroll: this.__noscroll });
5709          });
5710        }
5711      };
5712    });
5713    Alpine3.directive("trap", Alpine3.skipDuringClone((el, { expression, modifiers }, { effect: effect3, evaluateLater: evaluateLater2, cleanup: cleanup2 }) => {
5714      let evaluator = evaluateLater2(expression);
5715      let oldValue = false;
5716      let options = {
5717        escapeDeactivates: false,
5718        allowOutsideClick: true,
5719        fallbackFocus: () => el
5720      };
5721      if (modifiers.includes("noautofocus")) {
5722        options.initialFocus = false;
5723      } else {
5724        let autofocusEl = el.querySelector("[autofocus]");
5725        if (autofocusEl)
5726          options.initialFocus = autofocusEl;
5727      }
5728      let trap = createFocusTrap(el, options);
5729      let undoInert = () => {
5730      };
5731      let undoDisableScrolling = () => {
5732      };
5733      const releaseFocus = () => {
5734        undoInert();
5735        undoInert = () => {
5736        };
5737        undoDisableScrolling();
5738        undoDisableScrolling = () => {
5739        };
5740        trap.deactivate({
5741          returnFocus: !modifiers.includes("noreturn")
5742        });
5743      };
5744      effect3(() => evaluator((value) => {
5745        if (oldValue === value)
5746          return;
5747        if (value && !oldValue) {
5748          if (modifiers.includes("noscroll"))
5749            undoDisableScrolling = disableScrolling();
5750          if (modifiers.includes("inert"))
5751            undoInert = setInert(el);
5752          setTimeout(() => {
5753            trap.activate();
5754          }, 15);
5755        }
5756        if (!value && oldValue) {
5757          releaseFocus();
5758        }
5759        oldValue = !!value;
5760      }));
5761      cleanup2(releaseFocus);
5762    }, (el, { expression, modifiers }, { evaluate: evaluate3 }) => {
5763      if (modifiers.includes("inert") && evaluate3(expression))
5764        setInert(el);
5765    }));
5766  }
5767  function setInert(el) {
5768    let undos = [];
5769    crawlSiblingsUp(el, (sibling) => {
5770      let cache = sibling.hasAttribute("aria-hidden");
5771      sibling.setAttribute("aria-hidden", "true");
5772      undos.push(() => cache || sibling.removeAttribute("aria-hidden"));
5773    });
5774    return () => {
5775      while (undos.length)
5776        undos.pop()();
5777    };
5778  }
5779  function crawlSiblingsUp(el, callback) {
5780    if (el.isSameNode(document.body) || !el.parentNode)
5781      return;
5782    Array.from(el.parentNode.children).forEach((sibling) => {
5783      if (sibling.isSameNode(el)) {
5784        crawlSiblingsUp(el.parentNode, callback);
5785      } else {
5786        callback(sibling);
5787      }
5788    });
5789  }
5790  function disableScrolling() {
5791    let overflow = document.documentElement.style.overflow;
5792    let paddingRight = document.documentElement.style.paddingRight;
5793    let scrollbarWidth = window.innerWidth - document.documentElement.clientWidth;
5794    document.documentElement.style.overflow = "hidden";
5795    document.documentElement.style.paddingRight = `${scrollbarWidth}px`;
5796    return () => {
5797      document.documentElement.style.overflow = overflow;
5798      document.documentElement.style.paddingRight = paddingRight;
5799    };
5800  }
5801  var module_default3 = src_default3;
5802
5803  
5803// ../alpine/packages/persist/dist/module.esm.js
5804  function src_default4(Alpine3) {
5805    let persist = () => {
5806      let alias;
5807      let storage;
5808      try {
5809        storage = localStorage;
5810      } catch (e) {
5811        console.error(e);
5812        console.warn("Alpine: $persist is using temporary storage since localStorage is unavailable.");
5813        let dummy = /* @__PURE__ */ new Map();
5814        storage = {
5815          getItem: dummy.get.bind(dummy),
5816          setItem: dummy.set.bind(dummy)
5817        };
5818      }
5819      return Alpine3.interceptor((initialValue, getter, setter, path, key) => {
5820        let lookup = alias || `_x_${path}`;
5821        let initial = storageHas(lookup, storage) ? storageGet(lookup, storage) : initialValue;
5822        setter(initial);
5823        Alpine3.effect(() => {
5824          let value = getter();
5825          storageSet(lookup, value, storage);
5826          setter(value);
5827        });
5828        return initial;
5829      }, (func) => {
5830        func.as = (key) => {
5831          alias = key;
5832          return func;
5833        }, func.using = (target) => {
5834          storage = target;
5835          return func;
5836        };
5837      });
5838    };
5839    Object.defineProperty(Alpine3, "$persist", { get: () => persist() });
5840    Alpine3.magic("persist", persist);
5841    Alpine3.persist = (key, { get: get3, set: set3 }, storage = localStorage) => {
5842      let initial = storageHas(key, storage) ? storageGet(key, storage) : get3();
5843      set3(initial);
5844      Alpine3.effect(() => {
5845        let value = get3();
5846        storageSet(key, value, storage);
5847        set3(value);
5848      });
5849    };
5850  }
5851  function storageHas(key, storage) {
5852    return storage.getItem(key) !== null;
5853  }
5854  function storageGet(key, storage) {
5855    let value = storage.getItem(key, storage);
5856    if (value === void 0)
5857      return;
5858    return JSON.parse(value);
5859  }
5860  function storageSet(key, value, storage) {
5861    storage.setItem(key, JSON.stringify(value));
5862  }
5863  var module_default4 = src_default4;
5864
5865  
5865// ../alpine/packages/intersect/dist/module.esm.js
5866  function src_default5(Alpine3) {
5867    Alpine3.directive("intersect", Alpine3.skipDuringClone((el, { value, expression, modifiers }, { evaluateLater: evaluateLater2, cleanup: cleanup2 }) => {
5868      let evaluate3 = evaluateLater2(expression);
5869      let options = {
5870        rootMargin: getRootMargin(modifiers),
5871        threshold: getThreshold(modifiers)
5872      };
5873      let observer2 = new IntersectionObserver((entries) => {
5874        entries.forEach((entry) => {
5875          if (entry.isIntersecting === (value === "leave"))
5876            return;
5877          evaluate3();
5878          modifiers.includes("once") && observer2.disconnect();
5879        });
5880      }, options);
5881      observer2.observe(el);
5882      cleanup2(() => {
5883        observer2.disconnect();
5884      });
5885    }));
5886  }
5887  function getThreshold(modifiers) {
5888    if (modifiers.includes("full"))
5889      return 0.99;
5890    if (modifiers.includes("half"))
5891      return 0.5;
5892    if (!modifiers.includes("threshold"))
5893      return 0;
5894    let threshold = modifiers[modifiers.indexOf("threshold") + 1];
5895    if (threshold === "100")
5896      return 1;
5897    if (threshold === "0")
5898      return 0;
5899    return Number(`.${threshold}`);
5900  }
5901  function getLengthValue(rawValue) {
5902    let match = rawValue.match(/^(-?[0-9]+)(px|%)?$/);
5903    return match ? match[1] + (match[2] || "px") : void 0;
5904  }
5905  function getRootMargin(modifiers) {
5906    const key = "margin";
5907    const fallback2 = "0px 0px 0px 0px";
5908    const index = modifiers.indexOf(key);
5909    if (index === -1)
5910      return fallback2;
5911    let values = [];
5912    for (let i = 1; i < 5; i++) {
5913      values.push(getLengthValue(modifiers[index + i] || ""));
5914    }
5915    values = values.filter((v) => v !== void 0);
5916    return values.length ? values.join(" ").trim() : fallback2;
5917  }
5918  var module_default5 = src_default5;
5919
5920  
vendor: 22,871 bytes, lines 5920-6615
5920// ../alpine/packages/anchor/dist/module.esm.js
5921  var min = Math.min;
5922  var max = Math.max;
5923  var round = Math.round;
5924  var floor = Math.floor;
5925  var createCoords = (v) => ({
5926    x: v,
5927    y: v
5928  });
5929  var oppositeSideMap = {
5930    left: "right",
5931    right: "left",
5932    bottom: "top",
5933    top: "bottom"
5934  };
5935  var oppositeAlignmentMap = {
5936    start: "end",
5937    end: "start"
5938  };
5939  function clamp(start3, value, end) {
5940    return max(start3, min(value, end));
5941  }
5942  function evaluate2(value, param) {
5943    return typeof value === "function" ? value(param) : value;
5944  }
5945  function getSide(placement) {
5946    return placement.split("-")[0];
5947  }
5948  function getAlignment(placement) {
5949    return placement.split("-")[1];
5950  }
5951  function getOppositeAxis(axis) {
5952    return axis === "x" ? "y" : "x";
5953  }
5954  function getAxisLength(axis) {
5955    return axis === "y" ? "height" : "width";
5956  }
5957  function getSideAxis(placement) {
5958    return ["top", "bottom"].includes(getSide(placement)) ? "y" : "x";
5959  }
5960  function getAlignmentAxis(placement) {
5961    return getOppositeAxis(getSideAxis(placement));
5962  }
5963  function getAlignmentSides(placement, rects, rtl) {
5964    if (rtl === void 0) {
5965      rtl = false;
5966    }
5967    const alignment = getAlignment(placement);
5968    const alignmentAxis = getAlignmentAxis(placement);
5969    const length = getAxisLength(alignmentAxis);
5970    let mainAlignmentSide = alignmentAxis === "x" ? alignment === (rtl ? "end" : "start") ? "right" : "left" : alignment === "start" ? "bottom" : "top";
5971    if (rects.reference[length] > rects.floating[length]) {
5972      mainAlignmentSide = getOppositePlacement(mainAlignmentSide);
5973    }
5974    return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];
5975  }
5976  function getExpandedPlacements(placement) {
5977    const oppositePlacement = getOppositePlacement(placement);
5978    return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];
5979  }
5980  function getOppositeAlignmentPlacement(placement) {
5981    return placement.replace(/start|end/g, (alignment) => oppositeAlignmentMap[alignment]);
5982  }
5983  function getSideList(side, isStart, rtl) {
5984    const lr = ["left", "right"];
5985    const rl = ["right", "left"];
5986    const tb = ["top", "bottom"];
5987    const bt = ["bottom", "top"];
5988    switch (side) {
5989      case "top":
5990      case "bottom":
5991        if (rtl)
5992          return isStart ? rl : lr;
5993        return isStart ? lr : rl;
5994      case "left":
5995      case "right":
5996        return isStart ? tb : bt;
5997      default:
5998        return [];
5999    }
6000  }
6001  function getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {
6002    const alignment = getAlignment(placement);
6003    let list = getSideList(getSide(placement), direction === "start", rtl);
6004    if (alignment) {
6005      list = list.map((side) => side + "-" + alignment);
6006      if (flipAlignment) {
6007        list = list.concat(list.map(getOppositeAlignmentPlacement));
6008      }
6009    }
6010    return list;
6011  }
6012  function getOppositePlacement(placement) {
6013    return placement.replace(/left|right|bottom|top/g, (side) => oppositeSideMap[side]);
6014  }
6015  function expandPaddingObject(padding) {
6016    return {
6017      top: 0,
6018      right: 0,
6019      bottom: 0,
6020      left: 0,
6021      ...padding
6022    };
6023  }
6024  function getPaddingObject(padding) {
6025    return typeof padding !== "number" ? expandPaddingObject(padding) : {
6026      top: padding,
6027      right: padding,
6028      bottom: padding,
6029      left: padding
6030    };
6031  }
6032  function rectToClientRect(rect) {
6033    return {
6034      ...rect,
6035      top: rect.y,
6036      left: rect.x,
6037      right: rect.x + rect.width,
6038      bottom: rect.y + rect.height
6039    };
6040  }
6041  function computeCoordsFromPlacement(_ref, placement, rtl) {
6042    let {
6043      reference,
6044      floating
6045    } = _ref;
6046    const sideAxis = getSideAxis(placement);
6047    const alignmentAxis = getAlignmentAxis(placement);
6048    const alignLength = getAxisLength(alignmentAxis);
6049    const side = getSide(placement);
6050    const isVertical = sideAxis === "y";
6051    const commonX = reference.x + reference.width / 2 - floating.width / 2;
6052    const commonY = reference.y + reference.height / 2 - floating.height / 2;
6053    const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;
6054    let coords;
6055    switch (side) {
6056      case "top":
6057        coords = {
6058          x: commonX,
6059          y: reference.y - floating.height
6060        };
6061        break;
6062      case "bottom":
6063        coords = {
6064          x: commonX,
6065          y: reference.y + reference.height
6066        };
6067        break;
6068      case "right":
6069        coords = {
6070          x: reference.x + reference.width,
6071          y: commonY
6072        };
6073        break;
6074      case "left":
6075        coords = {
6076          x: reference.x - floating.width,
6077          y: commonY
6078        };
6079        break;
6080      default:
6081        coords = {
6082          x: reference.x,
6083          y: reference.y
6084        };
6085    }
6086    switch (getAlignment(placement)) {
6087      case "start":
6088        coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);
6089        break;
6090      case "end":
6091        coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);
6092        break;
6093    }
6094    return coords;
6095  }
6096  var computePosition = async (reference, floating, config) => {
6097    const {
6098      placement = "bottom",
6099      strategy = "absolute",
6100      middleware = [],
6101      platform: platform2
6102    } = config;
6103    const validMiddleware = middleware.filter(Boolean);
6104    const rtl = await (platform2.isRTL == null ? void 0 : platform2.isRTL(floating));
6105    let rects = await platform2.getElementRects({
6106      reference,
6107      floating,
6108      strategy
6109    });
6110    let {
6111      x,
6112      y
6113    } = computeCoordsFromPlacement(rects, placement, rtl);
6114    let statefulPlacement = placement;
6115    let middlewareData = {};
6116    let resetCount = 0;
6117    for (let i = 0; i < validMiddleware.length; i++) {
6118      const {
6119        name,
6120        fn
6121      } = validMiddleware[i];
6122      const {
6123        x: nextX,
6124        y: nextY,
6125        data: data2,
6126        reset
6127      } = await fn({
6128        x,
6129        y,
6130        initialPlacement: placement,
6131        placement: statefulPlacement,
6132        strategy,
6133        middlewareData,
6134        rects,
6135        platform: platform2,
6136        elements: {
6137          reference,
6138          floating
6139        }
6140      });
6141      x = nextX != null ? nextX : x;
6142      y = nextY != null ? nextY : y;
6143      middlewareData = {
6144        ...middlewareData,
6145        [name]: {
6146          ...middlewareData[name],
6147          ...data2
6148        }
6149      };
6150      if (reset && resetCount <= 50) {
6151        resetCount++;
6152        if (typeof reset === "object") {
6153          if (reset.placement) {
6154            statefulPlacement = reset.placement;
6155          }
6156          if (reset.rects) {
6157            rects = reset.rects === true ? await platform2.getElementRects({
6158              reference,
6159              floating,
6160              strategy
6161            }) : reset.rects;
6162          }
6163          ({
6164            x,
6165            y
6166          } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));
6167        }
6168        i = -1;
6169        continue;
6170      }
6171    }
6172    return {
6173      x,
6174      y,
6175      placement: statefulPlacement,
6176      strategy,
6177      middlewareData
6178    };
6179  };
6180  async function detectOverflow(state, options) {
6181    var _await$platform$isEle;
6182    if (options === void 0) {
6183      options = {};
6184    }
6185    const {
6186      x,
6187      y,
6188      platform: platform2,
6189      rects,
6190      elements,
6191      strategy
6192    } = state;
6193    const {
6194      boundary = "clippingAncestors",
6195      rootBoundary = "viewport",
6196      elementContext = "floating",
6197      altBoundary = false,
6198      padding = 0
6199    } = evaluate2(options, state);
6200    const paddingObject = getPaddingObject(padding);
6201    const altContext = elementContext === "floating" ? "reference" : "floating";
6202    const element = elements[altBoundary ? altContext : elementContext];
6203    const clippingClientRect = rectToClientRect(await platform2.getClippingRect({
6204      element: ((_await$platform$isEle = await (platform2.isElement == null ? void 0 : platform2.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || await (platform2.getDocumentElement == null ? void 0 : platform2.getDocumentElement(elements.floating)),
6205      boundary,
6206      rootBoundary,
6207      strategy
6208    }));
6209    const rect = elementContext === "floating" ? {
6210      ...rects.floating,
6211      x,
6212      y
6213    } : rects.reference;
6214    const offsetParent = await (platform2.getOffsetParent == null ? void 0 : platform2.getOffsetParent(elements.floating));
6215    const offsetScale = await (platform2.isElement == null ? void 0 : platform2.isElement(offsetParent)) ? await (platform2.getScale == null ? void 0 : platform2.getScale(offsetParent)) || {
6216      x: 1,
6217      y: 1
6218    } : {
6219      x: 1,
6220      y: 1
6221    };
6222    const elementClientRect = rectToClientRect(platform2.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform2.convertOffsetParentRelativeRectToViewportRelativeRect({
6223      rect,
6224      offsetParent,
6225      strategy
6226    }) : rect);
6227    return {
6228      top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,
6229      bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,
6230      left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,
6231      right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x
6232    };
6233  }
6234  var flip = function(options) {
6235    if (options === void 0) {
6236      options = {};
6237    }
6238    return {
6239      name: "flip",
6240      options,
6241      async fn(state) {
6242        var _middlewareData$arrow, _middlewareData$flip;
6243        const {
6244          placement,
6245          middlewareData,
6246          rects,
6247          initialPlacement,
6248          platform: platform2,
6249          elements
6250        } = state;
6251        const {
6252          mainAxis: checkMainAxis = true,
6253          crossAxis: checkCrossAxis = true,
6254          fallbackPlacements: specifiedFallbackPlacements,
6255          fallbackStrategy = "bestFit",
6256          fallbackAxisSideDirection = "none",
6257          flipAlignment = true,
6258          ...detectOverflowOptions
6259        } = evaluate2(options, state);
6260        if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {
6261          return {};
6262        }
6263        const side = getSide(placement);
6264        const isBasePlacement = getSide(initialPlacement) === initialPlacement;
6265        const rtl = await (platform2.isRTL == null ? void 0 : platform2.isRTL(elements.floating));
6266        const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));
6267        if (!specifiedFallbackPlacements && fallbackAxisSideDirection !== "none") {
6268          fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));
6269        }
6270        const placements2 = [initialPlacement, ...fallbackPlacements];
6271        const overflow = await detectOverflow(state, detectOverflowOptions);
6272        const overflows = [];
6273        let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];
6274        if (checkMainAxis) {
6275          overflows.push(overflow[side]);
6276        }
6277        if (checkCrossAxis) {
6278          const sides2 = getAlignmentSides(placement, rects, rtl);
6279          overflows.push(overflow[sides2[0]], overflow[sides2[1]]);
6280        }
6281        overflowsData = [...overflowsData, {
6282          placement,
6283          overflows
6284        }];
6285        if (!overflows.every((side2) => side2 <= 0)) {
6286          var _middlewareData$flip2, _overflowsData$filter;
6287          const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;
6288          const nextPlacement = placements2[nextIndex];
6289          if (nextPlacement) {
6290            return {
6291              data: {
6292                index: nextIndex,
6293                overflows: overflowsData
6294              },
6295              reset: {
6296                placement: nextPlacement
6297              }
6298            };
6299          }
6300          let resetPlacement = (_overflowsData$filter = overflowsData.filter((d) => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;
6301          if (!resetPlacement) {
6302            switch (fallbackStrategy) {
6303              case "bestFit": {
6304                var _overflowsData$map$so;
6305                const placement2 = (_overflowsData$map$so = overflowsData.map((d) => [d.placement, d.overflows.filter((overflow2) => overflow2 > 0).reduce((acc, overflow2) => acc + overflow2, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$map$so[0];
6306                if (placement2) {
6307                  resetPlacement = placement2;
6308                }
6309                break;
6310              }
6311              case "initialPlacement":
6312                resetPlacement = initialPlacement;
6313                break;
6314            }
6315          }
6316          if (placement !== resetPlacement) {
6317            return {
6318              reset: {
6319                placement: resetPlacement
6320              }
6321            };
6322          }
6323        }
6324        return {};
6325      }
6326    };
6327  };
6328  async function convertValueToCoords(state, options) {
6329    const {
6330      placement,
6331      platform: platform2,
6332      elements
6333    } = state;
6334    const rtl = await (platform2.isRTL == null ? void 0 : platform2.isRTL(elements.floating));
6335    const side = getSide(placement);
6336    const alignment = getAlignment(placement);
6337    const isVertical = getSideAxis(placement) === "y";
6338    const mainAxisMulti = ["left", "top"].includes(side) ? -1 : 1;
6339    const crossAxisMulti = rtl && isVertical ? -1 : 1;
6340    const rawValue = evaluate2(options, state);
6341    let {
6342      mainAxis,
6343      crossAxis,
6344      alignmentAxis
6345    } = typeof rawValue === "number" ? {
6346      mainAxis: rawValue,
6347      crossAxis: 0,
6348      alignmentAxis: null
6349    } : {
6350      mainAxis: 0,
6351      crossAxis: 0,
6352      alignmentAxis: null,
6353      ...rawValue
6354    };
6355    if (alignment && typeof alignmentAxis === "number") {
6356      crossAxis = alignment === "end" ? alignmentAxis * -1 : alignmentAxis;
6357    }
6358    return isVertical ? {
6359      x: crossAxis * crossAxisMulti,
6360      y: mainAxis * mainAxisMulti
6361    } : {
6362      x: mainAxis * mainAxisMulti,
6363      y: crossAxis * crossAxisMulti
6364    };
6365  }
6366  var offset = function(options) {
6367    if (options === void 0) {
6368      options = 0;
6369    }
6370    return {
6371      name: "offset",
6372      options,
6373      async fn(state) {
6374        const {
6375          x,
6376          y
6377        } = state;
6378        const diffCoords = await convertValueToCoords(state, options);
6379        return {
6380          x: x + diffCoords.x,
6381          y: y + diffCoords.y,
6382          data: diffCoords
6383        };
6384      }
6385    };
6386  };
6387  var shift = function(options) {
6388    if (options === void 0) {
6389      options = {};
6390    }
6391    return {
6392      name: "shift",
6393      options,
6394      async fn(state) {
6395        const {
6396          x,
6397          y,
6398          placement
6399        } = state;
6400        const {
6401          mainAxis: checkMainAxis = true,
6402          crossAxis: checkCrossAxis = false,
6403          limiter = {
6404            fn: (_ref) => {
6405              let {
6406                x: x2,
6407                y: y2
6408              } = _ref;
6409              return {
6410                x: x2,
6411                y: y2
6412              };
6413            }
6414          },
6415          ...detectOverflowOptions
6416        } = evaluate2(options, state);
6417        const coords = {
6418          x,
6419          y
6420        };
6421        const overflow = await detectOverflow(state, detectOverflowOptions);
6422        const crossAxis = getSideAxis(getSide(placement));
6423        const mainAxis = getOppositeAxis(crossAxis);
6424        let mainAxisCoord = coords[mainAxis];
6425        let crossAxisCoord = coords[crossAxis];
6426        if (checkMainAxis) {
6427          const minSide = mainAxis === "y" ? "top" : "left";
6428          const maxSide = mainAxis === "y" ? "bottom" : "right";
6429          const min2 = mainAxisCoord + overflow[minSide];
6430          const max2 = mainAxisCoord - overflow[maxSide];
6431          mainAxisCoord = clamp(min2, mainAxisCoord, max2);
6432        }
6433        if (checkCrossAxis) {
6434          const minSide = crossAxis === "y" ? "top" : "left";
6435          const maxSide = crossAxis === "y" ? "bottom" : "right";
6436          const min2 = crossAxisCoord + overflow[minSide];
6437          const max2 = crossAxisCoord - overflow[maxSide];
6438          crossAxisCoord = clamp(min2, crossAxisCoord, max2);
6439        }
6440        const limitedCoords = limiter.fn({
6441          ...state,
6442          [mainAxis]: mainAxisCoord,
6443          [crossAxis]: crossAxisCoord
6444        });
6445        return {
6446          ...limitedCoords,
6447          data: {
6448            x: limitedCoords.x - x,
6449            y: limitedCoords.y - y
6450          }
6451        };
6452      }
6453    };
6454  };
6455  function getNodeName(node) {
6456    if (isNode(node)) {
6457      return (node.nodeName || "").toLowerCase();
6458    }
6459    return "#document";
6460  }
6461  function getWindow(node) {
6462    var _node$ownerDocument;
6463    return (node == null ? void 0 : (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;
6464  }
6465  function getDocumentElement(node) {
6466    var _ref;
6467    return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;
6468  }
6469  function isNode(value) {
6470    return value instanceof Node || value instanceof getWindow(value).Node;
6471  }
6472  function isElement(value) {
6473    return value instanceof Element || value instanceof getWindow(value).Element;
6474  }
6475  function isHTMLElement(value) {
6476    return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;
6477  }
6478  function isShadowRoot(value) {
6479    if (typeof ShadowRoot === "undefined") {
6480      return false;
6481    }
6482    return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;
6483  }
6484  function isOverflowElement(element) {
6485    const {
6486      overflow,
6487      overflowX,
6488      overflowY,
6489      display
6490    } = getComputedStyle2(element);
6491    return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !["inline", "contents"].includes(display);
6492  }
6493  function isTableElement(element) {
6494    return ["table", "td", "th"].includes(getNodeName(element));
6495  }
6496  function isContainingBlock(element) {
6497    const webkit = isWebKit();
6498    const css = getComputedStyle2(element);
6499    return css.transform !== "none" || css.perspective !== "none" || (css.containerType ? css.containerType !== "normal" : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== "none" : false) || !webkit && (css.filter ? css.filter !== "none" : false) || ["transform", "perspective", "filter"].some((value) => (css.willChange || "").includes(value)) || ["paint", "layout", "strict", "content"].some((value) => (css.contain || "").includes(value));
6500  }
6501  function getContainingBlock(element) {
6502    let currentNode = getParentNode(element);
6503    while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {
6504      if (isContainingBlock(currentNode)) {
6505        return currentNode;
6506      } else {
6507        currentNode = getParentNode(currentNode);
6508      }
6509    }
6510    return null;
6511  }
6512  function isWebKit() {
6513    if (typeof CSS === "undefined" || !CSS.supports)
6514      return false;
6515    return CSS.supports("-webkit-backdrop-filter", "none");
6516  }
6517  function isLastTraversableNode(node) {
6518    return ["html", "body", "#document"].includes(getNodeName(node));
6519  }
6520  function getComputedStyle2(element) {
6521    return getWindow(element).getComputedStyle(element);
6522  }
6523  function getNodeScroll(element) {
6524    if (isElement(element)) {
6525      return {
6526        scrollLeft: element.scrollLeft,
6527        scrollTop: element.scrollTop
6528      };
6529    }
6530    return {
6531      scrollLeft: element.pageXOffset,
6532      scrollTop: element.pageYOffset
6533    };
6534  }
6535  function getParentNode(node) {
6536    if (getNodeName(node) === "html") {
6537      return node;
6538    }
6539    const result = node.assignedSlot || node.parentNode || isShadowRoot(node) && node.host || getDocumentElement(node);
6540    return isShadowRoot(result) ? result.host : result;
6541  }
6542  function getNearestOverflowAncestor(node) {
6543    const parentNode = getParentNode(node);
6544    if (isLastTraversableNode(parentNode)) {
6545      return node.ownerDocument ? node.ownerDocument.body : node.body;
6546    }
6547    if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {
6548      return parentNode;
6549    }
6550    return getNearestOverflowAncestor(parentNode);
6551  }
6552  function getOverflowAncestors(node, list, traverseIframes) {
6553    var _node$ownerDocument2;
6554    if (list === void 0) {
6555      list = [];
6556    }
6557    if (traverseIframes === void 0) {
6558      traverseIframes = true;
6559    }
6560    const scrollableAncestor = getNearestOverflowAncestor(node);
6561    const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);
6562    const win = getWindow(scrollableAncestor);
6563    if (isBody) {
6564      return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], win.frameElement && traverseIframes ? getOverflowAncestors(win.frameElement) : []);
6565    }
6566    return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));
6567  }
6568  function getCssDimensions(element) {
6569    const css = getComputedStyle2(element);
6570    let width = parseFloat(css.width) || 0;
6571    let height = parseFloat(css.height) || 0;
6572    const hasOffset = isHTMLElement(element);
6573    const offsetWidth = hasOffset ? element.offsetWidth : width;
6574    const offsetHeight = hasOffset ? element.offsetHeight : height;
6575    const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;
6576    if (shouldFallback) {
6577      width = offsetWidth;
6578      height = offsetHeight;
6579    }
6580    return {
6581      width,
6582      height,
6583      $: shouldFallback
6584    };
6585  }
6586  function unwrapElement(element) {
6587    return !isElement(element) ? element.contextElement : element;
6588  }
6589  function getScale(element) {
6590    const domElement = unwrapElement(element);
6591    if (!isHTMLElement(domElement)) {
6592      return createCoords(1);
6593    }
6594    const rect = domElement.getBoundingClientRect();
6595    const {
6596      width,
6597      height,
6598      $
6599    } = getCssDimensions(domElement);
6600    let x = ($ ? round(rect.width) : rect.width) / width;
6601    let y = ($ ? round(rect.height) : rect.height) / height;
6602    if (!x || !Number.isFinite(x)) {
6603      x = 1;
6604    }
6605    if (!y || !Number.isFinite(y)) {
6606      y = 1;
6607    }
6608    return {
6609      x,
6610      y
6611    };
6612  }
6613  var noOffsets = /* @__PURE__ */ createCoords(0);
6614  function getVisualOffsets(element) {
6615    const win = getWindow(element);
vendor: 4,610 bytes, lines 6616-6744
6616    if (!isWebKit() || !win.visualViewport) {
6617      return noOffsets;
6618    }
6619    return {
6620      x: win.visualViewport.offsetLeft,
6621      y: win.visualViewport.offsetTop
6622    };
6623  }
6624  function shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {
6625    if (isFixed === void 0) {
6626      isFixed = false;
6627    }
6628    if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {
6629      return false;
6630    }
6631    return isFixed;
6632  }
6633  function getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {
6634    if (includeScale === void 0) {
6635      includeScale = false;
6636    }
6637    if (isFixedStrategy === void 0) {
6638      isFixedStrategy = false;
6639    }
6640    const clientRect = element.getBoundingClientRect();
6641    const domElement = unwrapElement(element);
6642    let scale = createCoords(1);
6643    if (includeScale) {
6644      if (offsetParent) {
6645        if (isElement(offsetParent)) {
6646          scale = getScale(offsetParent);
6647        }
6648      } else {
6649        scale = getScale(element);
6650      }
6651    }
6652    const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);
6653    let x = (clientRect.left + visualOffsets.x) / scale.x;
6654    let y = (clientRect.top + visualOffsets.y) / scale.y;
6655    let width = clientRect.width / scale.x;
6656    let height = clientRect.height / scale.y;
6657    if (domElement) {
6658      const win = getWindow(domElement);
6659      const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;
6660      let currentIFrame = win.frameElement;
6661      while (currentIFrame && offsetParent && offsetWin !== win) {
6662        const iframeScale = getScale(currentIFrame);
6663        const iframeRect = currentIFrame.getBoundingClientRect();
6664        const css = getComputedStyle2(currentIFrame);
6665        const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;
6666        const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;
6667        x *= iframeScale.x;
6668        y *= iframeScale.y;
6669        width *= iframeScale.x;
6670        height *= iframeScale.y;
6671        x += left;
6672        y += top;
6673        currentIFrame = getWindow(currentIFrame).frameElement;
6674      }
6675    }
6676    return rectToClientRect({
6677      width,
6678      height,
6679      x,
6680      y
6681    });
6682  }
6683  function convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {
6684    let {
6685      rect,
6686      offsetParent,
6687      strategy
6688    } = _ref;
6689    const isOffsetParentAnElement = isHTMLElement(offsetParent);
6690    const documentElement = getDocumentElement(offsetParent);
6691    if (offsetParent === documentElement) {
6692      return rect;
6693    }
6694    let scroll = {
6695      scrollLeft: 0,
6696      scrollTop: 0
6697    };
6698    let scale = createCoords(1);
6699    const offsets = createCoords(0);
6700    if (isOffsetParentAnElement || !isOffsetParentAnElement && strategy !== "fixed") {
6701      if (getNodeName(offsetParent) !== "body" || isOverflowElement(documentElement)) {
6702        scroll = getNodeScroll(offsetParent);
6703      }
6704      if (isHTMLElement(offsetParent)) {
6705        const offsetRect = getBoundingClientRect(offsetParent);
6706        scale = getScale(offsetParent);
6707        offsets.x = offsetRect.x + offsetParent.clientLeft;
6708        offsets.y = offsetRect.y + offsetParent.clientTop;
6709      }
6710    }
6711    return {
6712      width: rect.width * scale.x,
6713      height: rect.height * scale.y,
6714      x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x,
6715      y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y
6716    };
6717  }
6718  function getClientRects(element) {
6719    return Array.from(element.getClientRects());
6720  }
6721  function getWindowScrollBarX(element) {
6722    return getBoundingClientRect(getDocumentElement(element)).left + getNodeScroll(element).scrollLeft;
6723  }
6724  function getDocumentRect(element) {
6725    const html = getDocumentElement(element);
6726    const scroll = getNodeScroll(element);
6727    const body = element.ownerDocument.body;
6728    const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);
6729    const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);
6730    let x = -scroll.scrollLeft + getWindowScrollBarX(element);
6731    const y = -scroll.scrollTop;
6732    if (getComputedStyle2(body).direction === "rtl") {
6733      x += max(html.clientWidth, body.clientWidth) - width;
6734    }
6735    return {
6736      width,
6737      height,
6738      x,
6739      y
6740    };
6741  }
6742  function getViewportRect(element, strategy) {
6743    const win = getWindow(element);
6744    const html = getDocumentElement(element);
vendor: 12,549 bytes, lines 6745-7096
6745    const visualViewport = win.visualViewport;
6746    let width = html.clientWidth;
6747    let height = html.clientHeight;
6748    let x = 0;
6749    let y = 0;
6750    if (visualViewport) {
6751      width = visualViewport.width;
6752      height = visualViewport.height;
6753      const visualViewportBased = isWebKit();
6754      if (!visualViewportBased || visualViewportBased && strategy === "fixed") {
6755        x = visualViewport.offsetLeft;
6756        y = visualViewport.offsetTop;
6757      }
6758    }
6759    return {
6760      width,
6761      height,
6762      x,
6763      y
6764    };
6765  }
6766  function getInnerBoundingClientRect(element, strategy) {
6767    const clientRect = getBoundingClientRect(element, true, strategy === "fixed");
6768    const top = clientRect.top + element.clientTop;
6769    const left = clientRect.left + element.clientLeft;
6770    const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);
6771    const width = element.clientWidth * scale.x;
6772    const height = element.clientHeight * scale.y;
6773    const x = left * scale.x;
6774    const y = top * scale.y;
6775    return {
6776      width,
6777      height,
6778      x,
6779      y
6780    };
6781  }
6782  function getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {
6783    let rect;
6784    if (clippingAncestor === "viewport") {
6785      rect = getViewportRect(element, strategy);
6786    } else if (clippingAncestor === "document") {
6787      rect = getDocumentRect(getDocumentElement(element));
6788    } else if (isElement(clippingAncestor)) {
6789      rect = getInnerBoundingClientRect(clippingAncestor, strategy);
6790    } else {
6791      const visualOffsets = getVisualOffsets(element);
6792      rect = {
6793        ...clippingAncestor,
6794        x: clippingAncestor.x - visualOffsets.x,
6795        y: clippingAncestor.y - visualOffsets.y
6796      };
6797    }
6798    return rectToClientRect(rect);
6799  }
6800  function hasFixedPositionAncestor(element, stopNode) {
6801    const parentNode = getParentNode(element);
6802    if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {
6803      return false;
6804    }
6805    return getComputedStyle2(parentNode).position === "fixed" || hasFixedPositionAncestor(parentNode, stopNode);
6806  }
6807  function getClippingElementAncestors(element, cache) {
6808    const cachedResult = cache.get(element);
6809    if (cachedResult) {
6810      return cachedResult;
6811    }
6812    let result = getOverflowAncestors(element, [], false).filter((el) => isElement(el) && getNodeName(el) !== "body");
6813    let currentContainingBlockComputedStyle = null;
6814    const elementIsFixed = getComputedStyle2(element).position === "fixed";
6815    let currentNode = elementIsFixed ? getParentNode(element) : element;
6816    while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {
6817      const computedStyle = getComputedStyle2(currentNode);
6818      const currentNodeIsContaining = isContainingBlock(currentNode);
6819      if (!currentNodeIsContaining && computedStyle.position === "fixed") {
6820        currentContainingBlockComputedStyle = null;
6821      }
6822      const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === "static" && !!currentContainingBlockComputedStyle && ["absolute", "fixed"].includes(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);
6823      if (shouldDropCurrentNode) {
6824        result = result.filter((ancestor) => ancestor !== currentNode);
6825      } else {
6826        currentContainingBlockComputedStyle = computedStyle;
6827      }
6828      currentNode = getParentNode(currentNode);
6829    }
6830    cache.set(element, result);
6831    return result;
6832  }
6833  function getClippingRect(_ref) {
6834    let {
6835      element,
6836      boundary,
6837      rootBoundary,
6838      strategy
6839    } = _ref;
6840    const elementClippingAncestors = boundary === "clippingAncestors" ? getClippingElementAncestors(element, this._c) : [].concat(boundary);
6841    const clippingAncestors = [...elementClippingAncestors, rootBoundary];
6842    const firstClippingAncestor = clippingAncestors[0];
6843    const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {
6844      const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);
6845      accRect.top = max(rect.top, accRect.top);
6846      accRect.right = min(rect.right, accRect.right);
6847      accRect.bottom = min(rect.bottom, accRect.bottom);
6848      accRect.left = max(rect.left, accRect.left);
6849      return accRect;
6850    }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));
6851    return {
6852      width: clippingRect.right - clippingRect.left,
6853      height: clippingRect.bottom - clippingRect.top,
6854      x: clippingRect.left,
6855      y: clippingRect.top
6856    };
6857  }
6858  function getDimensions(element) {
6859    return getCssDimensions(element);
6860  }
6861  function getRectRelativeToOffsetParent(element, offsetParent, strategy) {
6862    const isOffsetParentAnElement = isHTMLElement(offsetParent);
6863    const documentElement = getDocumentElement(offsetParent);
6864    const isFixed = strategy === "fixed";
6865    const rect = getBoundingClientRect(element, true, isFixed, offsetParent);
6866    let scroll = {
6867      scrollLeft: 0,
6868      scrollTop: 0
6869    };
6870    const offsets = createCoords(0);
6871    if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
6872      if (getNodeName(offsetParent) !== "body" || isOverflowElement(documentElement)) {
6873        scroll = getNodeScroll(offsetParent);
6874      }
6875      if (isOffsetParentAnElement) {
6876        const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);
6877        offsets.x = offsetRect.x + offsetParent.clientLeft;
6878        offsets.y = offsetRect.y + offsetParent.clientTop;
6879      } else if (documentElement) {
6880        offsets.x = getWindowScrollBarX(documentElement);
6881      }
6882    }
6883    return {
6884      x: rect.left + scroll.scrollLeft - offsets.x,
6885      y: rect.top + scroll.scrollTop - offsets.y,
6886      width: rect.width,
6887      height: rect.height
6888    };
6889  }
6890  function getTrueOffsetParent(element, polyfill) {
6891    if (!isHTMLElement(element) || getComputedStyle2(element).position === "fixed") {
6892      return null;
6893    }
6894    if (polyfill) {
6895      return polyfill(element);
6896    }
6897    return element.offsetParent;
6898  }
6899  function getOffsetParent(element, polyfill) {
6900    const window2 = getWindow(element);
6901    if (!isHTMLElement(element)) {
6902      return window2;
6903    }
6904    let offsetParent = getTrueOffsetParent(element, polyfill);
6905    while (offsetParent && isTableElement(offsetParent) && getComputedStyle2(offsetParent).position === "static") {
6906      offsetParent = getTrueOffsetParent(offsetParent, polyfill);
6907    }
6908    if (offsetParent && (getNodeName(offsetParent) === "html" || getNodeName(offsetParent) === "body" && getComputedStyle2(offsetParent).position === "static" && !isContainingBlock(offsetParent))) {
6909      return window2;
6910    }
6911    return offsetParent || getContainingBlock(element) || window2;
6912  }
6913  var getElementRects = async function(_ref) {
6914    let {
6915      reference,
6916      floating,
6917      strategy
6918    } = _ref;
6919    const getOffsetParentFn = this.getOffsetParent || getOffsetParent;
6920    const getDimensionsFn = this.getDimensions;
6921    return {
6922      reference: getRectRelativeToOffsetParent(reference, await getOffsetParentFn(floating), strategy),
6923      floating: {
6924        x: 0,
6925        y: 0,
6926        ...await getDimensionsFn(floating)
6927      }
6928    };
6929  };
6930  function isRTL(element) {
6931    return getComputedStyle2(element).direction === "rtl";
6932  }
6933  var platform = {
6934    convertOffsetParentRelativeRectToViewportRelativeRect,
6935    getDocumentElement,
6936    getClippingRect,
6937    getOffsetParent,
6938    getElementRects,
6939    getClientRects,
6940    getDimensions,
6941    getScale,
6942    isElement,
6943    isRTL
6944  };
6945  function observeMove(element, onMove) {
6946    let io = null;
6947    let timeoutId;
6948    const root = getDocumentElement(element);
6949    function cleanup2() {
6950      clearTimeout(timeoutId);
6951      io && io.disconnect();
6952      io = null;
6953    }
6954    function refresh(skip, threshold) {
6955      if (skip === void 0) {
6956        skip = false;
6957      }
6958      if (threshold === void 0) {
6959        threshold = 1;
6960      }
6961      cleanup2();
6962      const {
6963        left,
6964        top,
6965        width,
6966        height
6967      } = element.getBoundingClientRect();
6968      if (!skip) {
6969        onMove();
6970      }
6971      if (!width || !height) {
6972        return;
6973      }
6974      const insetTop = floor(top);
6975      const insetRight = floor(root.clientWidth - (left + width));
6976      const insetBottom = floor(root.clientHeight - (top + height));
6977      const insetLeft = floor(left);
6978      const rootMargin = -insetTop + "px " + -insetRight + "px " + -insetBottom + "px " + -insetLeft + "px";
6979      const options = {
6980        rootMargin,
6981        threshold: max(0, min(1, threshold)) || 1
6982      };
6983      let isFirstUpdate = true;
6984      function handleObserve(entries) {
6985        const ratio = entries[0].intersectionRatio;
6986        if (ratio !== threshold) {
6987          if (!isFirstUpdate) {
6988            return refresh();
6989          }
6990          if (!ratio) {
6991            timeoutId = setTimeout(() => {
6992              refresh(false, 1e-7);
6993            }, 100);
6994          } else {
6995            refresh(false, ratio);
6996          }
6997        }
6998        isFirstUpdate = false;
6999      }
7000      try {
7001        io = new IntersectionObserver(handleObserve, {
7002          ...options,
7003          root: root.ownerDocument
7004        });
7005      } catch (e) {
7006        io = new IntersectionObserver(handleObserve, options);
7007      }
7008      io.observe(element);
7009    }
7010    refresh(true);
7011    return cleanup2;
7012  }
7013  function autoUpdate(reference, floating, update, options) {
7014    if (options === void 0) {
7015      options = {};
7016    }
7017    const {
7018      ancestorScroll = true,
7019      ancestorResize = true,
7020      elementResize = typeof ResizeObserver === "function",
7021      layoutShift = typeof IntersectionObserver === "function",
7022      animationFrame = false
7023    } = options;
7024    const referenceEl = unwrapElement(reference);
7025    const ancestors = ancestorScroll || ancestorResize ? [...referenceEl ? getOverflowAncestors(referenceEl) : [], ...getOverflowAncestors(floating)] : [];
7026    ancestors.forEach((ancestor) => {
7027      ancestorScroll && ancestor.addEventListener("scroll", update, {
7028        passive: true
7029      });
7030      ancestorResize && ancestor.addEventListener("resize", update);
7031    });
7032    const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;
7033    let reobserveFrame = -1;
7034    let resizeObserver = null;
7035    if (elementResize) {
7036      resizeObserver = new ResizeObserver((_ref) => {
7037        let [firstEntry] = _ref;
7038        if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {
7039          resizeObserver.unobserve(floating);
7040          cancelAnimationFrame(reobserveFrame);
7041          reobserveFrame = requestAnimationFrame(() => {
7042            resizeObserver && resizeObserver.observe(floating);
7043          });
7044        }
7045        update();
7046      });
7047      if (referenceEl && !animationFrame) {
7048        resizeObserver.observe(referenceEl);
7049      }
7050      resizeObserver.observe(floating);
7051    }
7052    let frameId;
7053    let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;
7054    if (animationFrame) {
7055      frameLoop();
7056    }
7057    function frameLoop() {
7058      const nextRefRect = getBoundingClientRect(reference);
7059      if (prevRefRect && (nextRefRect.x !== prevRefRect.x || nextRefRect.y !== prevRefRect.y || nextRefRect.width !== prevRefRect.width || nextRefRect.height !== prevRefRect.height)) {
7060        update();
7061      }
7062      prevRefRect = nextRefRect;
7063      frameId = requestAnimationFrame(frameLoop);
7064    }
7065    update();
7066    return () => {
7067      ancestors.forEach((ancestor) => {
7068        ancestorScroll && ancestor.removeEventListener("scroll", update);
7069        ancestorResize && ancestor.removeEventListener("resize", update);
7070      });
7071      cleanupIo && cleanupIo();
7072      resizeObserver && resizeObserver.disconnect();
7073      resizeObserver = null;
7074      if (animationFrame) {
7075        cancelAnimationFrame(frameId);
7076      }
7077    };
7078  }
7079  var computePosition2 = (reference, floating, options) => {
7080    const cache = /* @__PURE__ */ new Map();
7081    const mergedOptions = {
7082      platform,
7083      ...options
7084    };
7085    const platformWithCache = {
7086      ...mergedOptions.platform,
7087      _c: cache
7088    };
7089    return computePosition(reference, floating, {
7090      ...mergedOptions,
7091      platform: platformWithCache
7092    });
7093  };
7094  function src_default6(Alpine3) {
7095    Alpine3.magic("anchor", (el) => {
7096      if (!el._x_anchor)
7097        throw "Alpine: No x-anchor directive found on element using $anchor...";
7098      return el._x_anchor;
7099    });
7100    Alpine3.interceptClone((from, to) => {
7101      if (from && from._x_anchor && !to._x_anchor) {
7102        to._x_anchor = from._x_anchor;
7103      }
7104    });
7105    Alpine3.directive("anchor", Alpine3.skipDuringClone((el, { expression, modifiers, value }, { cleanup: cleanup2, evaluate: evaluate22 }) => {
7106      let { placement, offsetValue, unstyled } = getOptions(modifiers);
7107      el._x_anchor = Alpine3.reactive({ x: 0, y: 0 });
7108      let reference = evaluate22(expression);
7109      if (!reference)
7110        throw "Alpine: no element provided to x-anchor...";
7111      let compute = () => {
7112        let previousValue;
7113        computePosition2(reference, el, {
7114          placement,
7115          middleware: [flip(), shift({ padding: 5 }), offset(offsetValue)]
7116        }).then(({ x, y }) => {
7117          unstyled || setStyles2(el, x, y);
7118          if (JSON.stringify({ x, y }) !== previousValue) {
7119            el._x_anchor.x = x;
7120            el._x_anchor.y = y;
7121          }
7122          previousValue = JSON.stringify({ x, y });
7123        });
7124      };
7125      let release2 = autoUpdate(reference, el, () => compute());
7126      cleanup2(() => release2());
7127    }, (el, { expression, modifiers, value }, { cleanup: cleanup2, evaluate: evaluate22 }) => {
7128      let { placement, offsetValue, unstyled } = getOptions(modifiers);
7129      if (el._x_anchor) {
7130        unstyled || setStyles2(el, el._x_anchor.x, el._x_anchor.y);
7131      }
7132    }));
7133  }
7134  function setStyles2(el, x, y) {
7135    Object.assign(el.style, {
7136      left: x + "px",
7137      top: y + "px",
7138      position: "absolute"
7139    });
7140  }
7141  function getOptions(modifiers) {
7142    let positions = ["top", "top-start", "top-end", "right", "right-start", "right-end", "bottom", "bottom-start", "bottom-end", "left", "left-start", "left-end"];
7143    let placement = positions.find((i) => modifiers.includes(i));
7144    let offsetValue = 0;
7145    if (modifiers.includes("offset")) {
7146      let idx = modifiers.findIndex((i) => i === "offset");
7147      offsetValue = modifiers[idx + 1] !== void 0 ? Number(modifiers[idx + 1]) : offsetValue;
7148    }
7149    let unstyled = modifiers.includes("no-style");
7150    return { placement, offsetValue, unstyled };
7151  }
7152  var module_default6 = src_default6;
7153
7154  
7154// js/plugins/navigate/history.js
7155  var Snapshot = class {
7156    constructor(url, html) {
7157      this.url = url;
7158      this.html = html;
7159    }
7160  };
7161  var snapshotCache = {
7162    currentKey: null,
7163    currentUrl: null,
7164    keys: [],
7165    lookup: {},
7166    limit: 10,
7167    has(location) {
7168      return this.lookup[location] !== void 0;
7169    },
7170    retrieve(location) {
7171      let snapshot = this.lookup[location];
7172      if (snapshot === void 0)
7173        throw "No back button cache found for current location: " + location;
7174      return snapshot;
7175    },
7176    replace(key, snapshot) {
7177      if (this.has(key)) {
7178        this.lookup[key] = snapshot;
7179      } else {
7180        this.push(key, snapshot);
7181      }
7182    },
7183    push(key, snapshot) {
7184      this.lookup[key] = snapshot;
7185      let index = this.keys.indexOf(key);
7186      if (index > -1)
7187        this.keys.splice(index, 1);
7188      this.keys.unshift(key);
7189      this.trim();
7190    },
7191    trim() {
7192      for (let key of this.keys.splice(this.limit)) {
7193        delete this.lookup[key];
7194      }
7195    }
7196  };
7197  function updateCurrentPageHtmlInHistoryStateForLaterBackButtonClicks() {
7198    let url = new URL(window.location.href, document.baseURI);
7199    replaceUrl(url, document.documentElement.outerHTML);
7200  }
7201  function updateCurrentPageHtmlInSnapshotCacheForLaterBackButtonClicks(key, url) {
7202    let html = document.documentElement.outerHTML;
7203    snapshotCache.replace(key, new Snapshot(url, html));
7204  }
7205  function whenTheBackOrForwardButtonIsClicked(registerFallback, handleHtml) {
7206    let fallback2;
7207    registerFallback((i) => fallback2 = i);
7208    window.addEventListener("popstate", (e) => {
7209      let state = e.state || {};
7210      let alpine = state.alpine || {};
7211      if (Object.keys(state).length === 0)
7212        return;
7213      if (!alpine.snapshotIdx)
7214        return;
7215      if (snapshotCache.has(alpine.snapshotIdx)) {
7216        let snapshot = snapshotCache.retrieve(alpine.snapshotIdx);
7217        handleHtml(snapshot.html, snapshot.url, snapshotCache.currentUrl, snapshotCache.currentKey);
7218      } else {
7219        fallback2(alpine.url);
7220      }
7221    });
7222  }
7223  function updateUrlAndStoreLatestHtmlForFutureBackButtons(html, destination) {
7224    pushUrl(destination, html);
7225  }
7226  function pushUrl(url, html) {
7227    updateUrl("pushState", url, html);
7228  }
7229  function replaceUrl(url, html) {
7230    updateUrl("replaceState", url, html);
7231  }
7232  function updateUrl(method, url, html) {
7233    let key = url.toString() + "-" + Math.random();
7234    method === "pushState" ? snapshotCache.push(key, new Snapshot(url, html)) : snapshotCache.replace(key = snapshotCache.currentKey ?? key, new Snapshot(url, html));
7235    let state = history.state || {};
7236    if (!state.alpine)
7237      state.alpine = {};
7238    state.alpine.snapshotIdx = key;
7239    state.alpine.url = url.toString();
7240    try {
7241      history[method](state, JSON.stringify(document.title), url);
7242      snapshotCache.currentKey = key;
7243      snapshotCache.currentUrl = url;
7244    } catch (error2) {
7245      if (error2 instanceof DOMException && error2.name === "SecurityError") {
7246        console.error("Livewire: You can't use wire:navigate with a link to a different root domain: " + url);
7247      }
7248      console.error(error2);
7249    }
7250  }
7251
7252  
7252// js/plugins/navigate/links.js
7253  function whenThisLinkIsPressed(el, callback) {
7254    let isProgrammaticClick = (e) => !e.isTrusted;
7255    let isNotPlainLeftClick = (e) => e.which > 1 || e.altKey || e.ctrlKey || e.metaKey || e.shiftKey;
7256    let isNotPlainEnterKey = (e) => e.which !== 13 || e.altKey || e.ctrlKey || e.metaKey || e.shiftKey;
7257    el.addEventListener("click", (e) => {
7258      if (isProgrammaticClick(e)) {
7259        e.preventDefault();
7260        callback((whenReleased) => whenReleased());
7261        return;
7262      }
7263      if (isNotPlainLeftClick(e))
7264        return;
7265      e.preventDefault();
7266    });
7267    el.addEventListener("mousedown", (e) => {
7268      if (isNotPlainLeftClick(e))
7269        return;
7270      e.preventDefault();
7271      callback((whenReleased) => {
7272        let handler4 = (e2) => {
7273          e2.preventDefault();
7274          whenReleased();
7275          el.removeEventListener("mouseup", handler4);
7276        };
7277        el.addEventListener("mouseup", handler4);
7278      });
7279    });
7280    el.addEventListener("keydown", (e) => {
7281      if (isNotPlainEnterKey(e))
7282        return;
7283      e.preventDefault();
7284      callback((whenReleased) => whenReleased());
7285    });
7286  }
7287  function whenThisLinkIsHoveredFor(el, ms = 60, callback) {
7288    el.addEventListener("mouseenter", (e) => {
7289      let timeout = setTimeout(() => {
7290        callback(e);
7291      }, ms);
7292      let handler4 = () => {
7293        clearTimeout(timeout);
7294        el.removeEventListener("mouseleave", handler4);
7295      };
7296      el.addEventListener("mouseleave", handler4);
7297    });
7298  }
7299  function extractDestinationFromLink(linkEl) {
7300    return createUrlObjectFromString(linkEl.getAttribute("href"));
7301  }
7302  function createUrlObjectFromString(urlString) {
7303    return new URL(urlString, document.baseURI);
7304  }
7305  function getUriStringFromUrlObject(urlObject) {
7306    return urlObject.pathname + urlObject.search + urlObject.hash;
7307  }
7308
7309  
7309// js/plugins/navigate/fetch.js
7310  function fetchHtml(destination, callback) {
7311    let uri = getUriStringFromUrlObject(destination);
7312    performFetch(uri, (html, finalDestination) => {
7313      callback(html, finalDestination);
7314    });
7315  }
7316  function performFetch(uri, callback) {
7317    let options = {
7318      headers: {
7319        "X-Livewire-Navigate": ""
7320      }
7321    };
7322    trigger2("navigate.request", {
7323      url: uri,
7324      options
7325    });
7326    let finalDestination;
7327    fetch(uri, options).then((response) => {
7328      let destination = createUrlObjectFromString(uri);
7329      finalDestination = createUrlObjectFromString(response.url);
7330      if (destination.pathname + destination.search === finalDestination.pathname + finalDestination.search) {
7331        finalDestination.hash = destination.hash;
7332      }
7333      return response.text();
7334    }).then((html) => {
7335      callback(html, finalDestination);
7336    });
7337  }
7338
7339  
7339// js/plugins/navigate/prefetch.js
7340  var prefetches = {};
7341  function prefetchHtml(destination, callback) {
7342    let uri = getUriStringFromUrlObject(destination);
7343    if (prefetches[uri])
7344      return;
7345    prefetches[uri] = { finished: false, html: null, whenFinished: () => {
7346    } };
7347    performFetch(uri, (html, routedUri) => {
7348      callback(html, routedUri);
7349    });
7350  }
7351  function storeThePrefetchedHtmlForWhenALinkIsClicked(html, destination, finalDestination) {
7352    let state = prefetches[getUriStringFromUrlObject(destination)];
7353    state.html = html;
7354    state.finished = true;
7355    state.finalDestination = finalDestination;
7356    state.whenFinished();
7357  }
7358  function getPretchedHtmlOr(destination, receive, ifNoPrefetchExists) {
7359    let uri = getUriStringFromUrlObject(destination);
7360    if (!prefetches[uri])
7361      return ifNoPrefetchExists();
7362    if (prefetches[uri].finished) {
7363      let html = prefetches[uri].html;
7364      let finalDestination = prefetches[uri].finalDestination;
7365      delete prefetches[uri];
7366      return receive(html, finalDestination);
7367    } else {
7368      prefetches[uri].whenFinished = () => {
7369        let html = prefetches[uri].html;
7370        let finalDestination = prefetches[uri].finalDestination;
7371        delete prefetches[uri];
7372        receive(html, finalDestination);
7373      };
7374    }
7375  }
7376
7377  
7377// js/plugins/navigate/teleport.js
7378  function packUpPersistedTeleports(persistedEl) {
7379    module_default.mutateDom(() => {
7380      persistedEl.querySelectorAll("[data-teleport-template]").forEach((i) => i._x_teleport.remove());
7381    });
7382  }
7383  function removeAnyLeftOverStaleTeleportTargets(body) {
7384    module_default.mutateDom(() => {
7385      body.querySelectorAll("[data-teleport-target]").forEach((i) => i.remove());
7386    });
7387  }
7388  function unPackPersistedTeleports(persistedEl) {
7389    module_default.walk(persistedEl, (el, skip) => {
7390      if (!el._x_teleport)
7391        return;
7392      el._x_teleportPutBack();
7393      skip();
7394    });
7395  }
7396  function isTeleportTarget(el) {
7397    return el.hasAttribute("data-teleport-target");
7398  }
7399
7400  
7400// js/plugins/navigate/scroll.js
7401  function storeScrollInformationInHtmlBeforeNavigatingAway() {
7402    document.body.setAttribute("data-scroll-x", document.body.scrollLeft);
7403    document.body.setAttribute("data-scroll-y", document.body.scrollTop);
7404    document.querySelectorAll(["[x-navigate\\:scroll]", "[wire\\:scroll]"]).forEach((el) => {
7405      el.setAttribute("data-scroll-x", el.scrollLeft);
7406      el.setAttribute("data-scroll-y", el.scrollTop);
7407    });
7408  }
7409  function restoreScrollPositionOrScrollToTop() {
7410    let scroll = (el) => {
7411      if (!el.hasAttribute("data-scroll-x")) {
7412        window.scrollTo({ top: 0, left: 0, behavior: "instant" });
7413      } else {
7414        el.scrollTo({
7415          top: Number(el.getAttribute("data-scroll-y")),
7416          left: Number(el.getAttribute("data-scroll-x")),
7417          behavior: "instant"
7418        });
7419        el.removeAttribute("data-scroll-x");
7420        el.removeAttribute("data-scroll-y");
7421      }
7422    };
7423    queueMicrotask(() => {
7424      scroll(document.body);
7425      document.querySelectorAll(["[x-navigate\\:scroll]", "[wire\\:scroll]"]).forEach(scroll);
7426    });
7427  }
7428
7429  
7429// js/plugins/navigate/persist.js
7430  var els = {};
7431  function storePersistantElementsForLater(callback) {
7432    els = {};
7433    document.querySelectorAll("[x-persist]").forEach((i) => {
7434      els[i.getAttribute("x-persist")] = i;
7435      callback(i);
7436      module_default.mutateDom(() => {
7437        i.remove();
7438      });
7439    });
7440  }
7441  function putPersistantElementsBack(callback) {
7442    let usedPersists = [];
7443    document.querySelectorAll("[x-persist]").forEach((i) => {
7444      let old = els[i.getAttribute("x-persist")];
7445      if (!old)
7446        return;
7447      usedPersists.push(i.getAttribute("x-persist"));
7448      old._x_wasPersisted = true;
7449      callback(old, i);
7450      module_default.mutateDom(() => {
7451        i.replaceWith(old);
7452      });
7453    });
7454    Object.entries(els).forEach(([key, el]) => {
7455      if (usedPersists.includes(key))
7456        return;
7457      module_default.destroyTree(el);
7458    });
7459    els = {};
7460  }
7461  function isPersistedElement(el) {
7462    return el.hasAttribute("x-persist");
7463  }
7464
7465  
7465// js/plugins/navigate/bar.js
7466  var import_nprogress = __toESM(require_nprogress());
7467  import_nprogress.default.configure({
7468    minimum: 0.1,
7469    trickleSpeed: 200,
7470    showSpinner: false,
7471    parent: "body"
7472  });
7473  injectStyles();
7474  var inProgress = false;
7475  function showAndStartProgressBar() {
7476    inProgress = true;
7477    setTimeout(() => {
7478      if (!inProgress)
7479        return;
7480      import_nprogress.default.start();
7481    }, 150);
7482  }
7483  function finishAndHideProgressBar() {
7484    inProgress = false;
7485    import_nprogress.default.done();
7486  }
7487  function removeAnyLeftOverStaleProgressBars() {
7488    import_nprogress.default.remove();
7489  }
7490  function injectStyles() {
7491    let style = document.createElement("style");
7492    style.innerHTML = `/* Make clicks pass-through */
7493
7494    #nprogress {
7495      pointer-events: none;
7496    }
7497
7498    #nprogress .bar {
7499      background: var(--livewire-progress-bar-color, #29d);
7500
7501      position: fixed;
7502      z-index: 1031;
7503      top: 0;
7504      left: 0;
7505
7506      width: 100%;
7507      height: 2px;
7508    }
7509
7510    /* Fancy blur effect */
7511    #nprogress .peg {
7512      display: block;
7513      position: absolute;
7514      right: 0px;
7515      width: 100px;
7516      height: 100%;
7517      box-shadow: 0 0 10px var(--livewire-progress-bar-color, #29d), 0 0 5px var(--livewire-progress-bar-color, #29d);
7518      opacity: 1.0;
7519
7520      -webkit-transform: rotate(3deg) translate(0px, -4px);
7521          -ms-transform: rotate(3deg) translate(0px, -4px);
7522              transform: rotate(3deg) translate(0px, -4px);
7523    }
7524
7525    /* Remove these to get rid of the spinner */
7526    #nprogress .spinner {
7527      display: block;
7528      position: fixed;
7529      z-index: 1031;
7530      top: 15px;
7531      right: 15px;
7532    }
7533
7534    #nprogress .spinner-icon {
7535      width: 18px;
7536      height: 18px;
7537      box-sizing: border-box;
7538
7539      border: solid 2px transparent;
7540      border-top-color: var(--livewire-progress-bar-color, #29d);
7541      border-left-color: var(--livewire-progress-bar-color, #29d);
7542      border-radius: 50%;
7543
7544      -webkit-animation: nprogress-spinner 400ms linear infinite;
7545              animation: nprogress-spinner 400ms linear infinite;
7546    }
7547
7548    .nprogress-custom-parent {
7549      overflow: hidden;
7550      position: relative;
7551    }
7552
7553    .nprogress-custom-parent #nprogress .spinner,
7554    .nprogress-custom-parent #nprogress .bar {
7555      position: absolute;
7556    }
7557
7558    @-webkit-keyframes nprogress-spinner {
7559      0%   { -webkit-transform: rotate(0deg); }
7560      100% { -webkit-transform: rotate(360deg); }
7561    }
7562    @keyframes nprogress-spinner {
7563      0%   { transform: rotate(0deg); }
7564      100% { transform: rotate(360deg); }
7565    }
7566    `;
7567    let nonce2 = getNonce();
7568    if (nonce2)
7569      style.nonce = nonce2;
7570    document.head.appendChild(style);
7571  }
7572
7573  
7573// js/plugins/navigate/page.js
7574  var oldBodyScriptTagHashes = [];
7575  var attributesExemptFromScriptTagHashing = [
7576    "data-csrf",
7577    "aria-hidden"
7578  ];
7579  function swapCurrentPageWithNewHtml(html, andThen) {
7580    let newDocument = new DOMParser().parseFromString(html, "text/html");
7581    let newBody = document.adoptNode(newDocument.body);
7582    let newHead = document.adoptNode(newDocument.head);
7583    oldBodyScriptTagHashes = oldBodyScriptTagHashes.concat(Array.from(document.body.querySelectorAll("script")).map((i) => {
7584      return simpleHash(ignoreAttributes(i.outerHTML, attributesExemptFromScriptTagHashing));
7585    }));
7586    let afterRemoteScriptsHaveLoaded = () => {
7587    };
7588    mergeNewHead(newHead).finally(() => {
7589      afterRemoteScriptsHaveLoaded();
7590    });
7591    prepNewBodyScriptTagsToRun(newBody, oldBodyScriptTagHashes);
7592    let oldBody = document.body;
7593    document.body.replaceWith(newBody);
7594    Alpine.destroyTree(oldBody);
7595    andThen((i) => afterRemoteScriptsHaveLoaded = i);
7596  }
7597  function prepNewBodyScriptTagsToRun(newBody, oldBodyScriptTagHashes2) {
7598    newBody.querySelectorAll("script").forEach((i) => {
7599      if (i.hasAttribute("data-navigate-once")) {
7600        let hash = simpleHash(ignoreAttributes(i.outerHTML, attributesExemptFromScriptTagHashing));
7601        if (oldBodyScriptTagHashes2.includes(hash))
7602          return;
7603      }
7604      i.replaceWith(cloneScriptTag(i));
7605    });
7606  }
7607  function mergeNewHead(newHead) {
7608    let children = Array.from(document.head.children);
7609    let headChildrenHtmlLookup = children.map((i) => i.outerHTML);
7610    let garbageCollector = document.createDocumentFragment();
7611    let touchedHeadElements = [];
7612    let remoteScriptsPromises = [];
7613    for (let child of Array.from(newHead.children)) {
7614      if (isAsset(child)) {
7615        if (!headChildrenHtmlLookup.includes(child.outerHTML)) {
7616          if (isTracked(child)) {
7617            if (ifTheQueryStringChangedSinceLastRequest(child, children)) {
7618              setTimeout(() => window.location.reload());
7619            }
7620          }
7621          if (isScript(child)) {
7622            try {
7623              remoteScriptsPromises.push(injectScriptTagAndWaitForItToFullyLoad(cloneScriptTag(child)));
7624            } catch (error2) {
7625            }
7626          } else {
7627            document.head.appendChild(child);
7628          }
7629        } else {
7630          garbageCollector.appendChild(child);
7631        }
7632        touchedHeadElements.push(child);
7633      }
7634    }
7635    for (let child of Array.from(document.head.children)) {
7636      if (!isAsset(child))
7637        child.remove();
7638    }
7639    for (let child of Array.from(newHead.children)) {
7640      document.head.appendChild(child);
7641    }
7642    return Promise.all(remoteScriptsPromises);
7643  }
7644  async function injectScriptTagAndWaitForItToFullyLoad(script) {
7645    return new Promise((resolve, reject) => {
7646      if (script.src) {
7647        script.onload = () => resolve();
7648        script.onerror = () => reject();
7649      } else {
7650        resolve();
7651      }
7652      document.head.appendChild(script);
7653    });
7654  }
7655  function cloneScriptTag(el) {
7656    let script = document.createElement("script");
7657    script.textContent = el.textContent;
7658    script.async = el.async;
7659    for (let attr of el.attributes) {
7660      script.setAttribute(attr.name, attr.value);
7661    }
7662    return script;
7663  }
7664  function isTracked(el) {
7665    return el.hasAttribute("data-navigate-track");
7666  }
7667  function ifTheQueryStringChangedSinceLastRequest(el, currentHeadChildren) {
7668    let [uri, queryString] = extractUriAndQueryString(el);
7669    return currentHeadChildren.some((child) => {
7670      if (!isTracked(child))
7671        return false;
7672      let [currentUri, currentQueryString] = extractUriAndQueryString(child);
7673      if (currentUri === uri && queryString !== currentQueryString)
7674        return true;
7675    });
7676  }
7677  function extractUriAndQueryString(el) {
7678    let url = isScript(el) ? el.src : el.href;
7679    return url.split("?");
7680  }
7681  function isAsset(el) {
7682    return el.tagName.toLowerCase() === "link" && el.getAttribute("rel").toLowerCase() === "stylesheet" || el.tagName.toLowerCase() === "style" || el.tagName.toLowerCase() === "script";
7683  }
7684  function isScript(el) {
7685    return el.tagName.toLowerCase() === "script";
7686  }
7687  function simpleHash(str) {
7688    return str.split("").reduce((a, b) => {
7689      a = (a << 5) - a + b.charCodeAt(0);
7690      return a & a;
7691    }, 0);
7692  }
7693  function ignoreAttributes(subject, attributesToRemove) {
7694    let result = subject;
7695    attributesToRemove.forEach((attr) => {
7696      const regex = new RegExp(`${attr}="[^"]*"|${attr}='[^']*'`, "g");
7697      result = result.replace(regex, "");
7698    });
7699    result = result.replaceAll(" ", "");
7700    return result.trim();
7701  }
7702
7703  
7703// js/plugins/navigate/index.js
7704  var enablePersist = true;
7705  var showProgressBar = true;
7706  var restoreScroll = true;
7707  var autofocus = false;
7708  function navigate_default(Alpine3) {
7709    Alpine3.navigate = (url) => {
7710      let destination = createUrlObjectFromString(url);
7711      let prevented = fireEventForOtherLibariesToHookInto("alpine:navigate", {
7712        url: destination,
7713        history: false,
7714        cached: false
7715      });
7716      if (prevented)
7717        return;
7718      navigateTo(destination);
7719    };
7720    Alpine3.navigate.disableProgressBar = () => {
7721      showProgressBar = false;
7722    };
7723    Alpine3.addInitSelector(() => `[${Alpine3.prefixed("navigate")}]`);
7724    Alpine3.directive("navigate", (el, { modifiers }) => {
7725      let shouldPrefetchOnHover = modifiers.includes("hover");
7726      shouldPrefetchOnHover && whenThisLinkIsHoveredFor(el, 60, () => {
7727        let destination = extractDestinationFromLink(el);
7728        prefetchHtml(destination, (html, finalDestination) => {
7729          storeThePrefetchedHtmlForWhenALinkIsClicked(html, destination, finalDestination);
7730        });
7731      });
7732      whenThisLinkIsPressed(el, (whenItIsReleased) => {
7733        let destination = extractDestinationFromLink(el);
7734        prefetchHtml(destination, (html, finalDestination) => {
7735          storeThePrefetchedHtmlForWhenALinkIsClicked(html, destination, finalDestination);
7736        });
7737        whenItIsReleased(() => {
7738          let prevented = fireEventForOtherLibariesToHookInto("alpine:navigate", {
7739            url: destination,
7740            history: false,
7741            cached: false
7742          });
7743          if (prevented)
7744            return;
7745          navigateTo(destination);
7746        });
7747      });
7748    });
7749    function navigateTo(destination, shouldPushToHistoryState = true) {
7750      showProgressBar && showAndStartProgressBar();
7751      fetchHtmlOrUsePrefetchedHtml(destination, (html, finalDestination) => {
7752        fireEventForOtherLibariesToHookInto("alpine:navigating");
7753        restoreScroll && storeScrollInformationInHtmlBeforeNavigatingAway();
7754        showProgressBar && finishAndHideProgressBar();
7755        cleanupAlpineElementsOnThePageThatArentInsideAPersistedElement();
7756        updateCurrentPageHtmlInHistoryStateForLaterBackButtonClicks();
7757        preventAlpineFromPickingUpDomChanges(Alpine3, (andAfterAllThis) => {
7758          enablePersist && storePersistantElementsForLater((persistedEl) => {
7759            packUpPersistedTeleports(persistedEl);
7760          });
7761          if (shouldPushToHistoryState) {
7762            updateUrlAndStoreLatestHtmlForFutureBackButtons(html, finalDestination);
7763          } else {
7764            replaceUrl(finalDestination, html);
7765          }
7766          swapCurrentPageWithNewHtml(html, (afterNewScriptsAreDoneLoading) => {
7767            removeAnyLeftOverStaleTeleportTargets(document.body);
7768            enablePersist && putPersistantElementsBack((persistedEl, newStub) => {
7769              unPackPersistedTeleports(persistedEl);
7770            });
7771            restoreScrollPositionOrScrollToTop();
7772            afterNewScriptsAreDoneLoading(() => {
7773              andAfterAllThis(() => {
7774                setTimeout(() => {
7775                  autofocus && autofocusElementsWithTheAutofocusAttribute();
7776                });
7777                nowInitializeAlpineOnTheNewPage(Alpine3);
7778                fireEventForOtherLibariesToHookInto("alpine:navigated");
7779              });
7780            });
7781          });
7782        });
7783      });
7784    }
7785    whenTheBackOrForwardButtonIsClicked((ifThePageBeingVisitedHasntBeenCached) => {
7786      ifThePageBeingVisitedHasntBeenCached((url) => {
7787        let destination = createUrlObjectFromString(url);
7788        let prevented = fireEventForOtherLibariesToHookInto("alpine:navigate", {
7789          url: destination,
7790          history: true,
7791          cached: false
7792        });
7793        if (prevented)
7794          return;
7795        let shouldPushToHistoryState = false;
7796        navigateTo(destination, shouldPushToHistoryState);
7797      });
7798    }, (html, url, currentPageUrl, currentPageKey) => {
7799      let destination = createUrlObjectFromString(url);
7800      let prevented = fireEventForOtherLibariesToHookInto("alpine:navigate", {
7801        url: destination,
7802        history: true,
7803        cached: true
7804      });
7805      if (prevented)
7806        return;
7807      storeScrollInformationInHtmlBeforeNavigatingAway();
7808      fireEventForOtherLibariesToHookInto("alpine:navigating");
7809      updateCurrentPageHtmlInSnapshotCacheForLaterBackButtonClicks(currentPageUrl, currentPageKey);
7810      preventAlpineFromPickingUpDomChanges(Alpine3, (andAfterAllThis) => {
7811        enablePersist && storePersistantElementsForLater((persistedEl) => {
7812          packUpPersistedTeleports(persistedEl);
7813        });
7814        swapCurrentPageWithNewHtml(html, () => {
7815          removeAnyLeftOverStaleProgressBars();
7816          removeAnyLeftOverStaleTeleportTargets(document.body);
7817          enablePersist && putPersistantElementsBack((persistedEl, newStub) => {
7818            unPackPersistedTeleports(persistedEl);
7819          });
7820          restoreScrollPositionOrScrollToTop();
7821          andAfterAllThis(() => {
7822            autofocus && autofocusElementsWithTheAutofocusAttribute();
7823            nowInitializeAlpineOnTheNewPage(Alpine3);
7824            fireEventForOtherLibariesToHookInto("alpine:navigated");
7825          });
7826        });
7827      });
7828    });
7829    setTimeout(() => {
7830      fireEventForOtherLibariesToHookInto("alpine:navigated");
7831    });
7832  }
7833  function fetchHtmlOrUsePrefetchedHtml(fromDestination, callback) {
7834    getPretchedHtmlOr(fromDestination, callback, () => {
7835      fetchHtml(fromDestination, callback);
7836    });
7837  }
7838  function preventAlpineFromPickingUpDomChanges(Alpine3, callback) {
7839    Alpine3.stopObservingMutations();
7840    callback((afterAllThis) => {
7841      Alpine3.startObservingMutations();
7842      queueMicrotask(() => {
7843        afterAllThis();
7844      });
7845    });
7846  }
7847  function fireEventForOtherLibariesToHookInto(name, detail) {
7848    let event = new CustomEvent(name, {
7849      cancelable: true,
7850      bubbles: true,
7851      detail
7852    });
7853    document.dispatchEvent(event);
7854    return event.defaultPrevented;
7855  }
7856  function nowInitializeAlpineOnTheNewPage(Alpine3) {
7857    Alpine3.initTree(document.body, void 0, (el, skip) => {
7858      if (el._x_wasPersisted)
7859        skip();
7860    });
7861  }
7862  function autofocusElementsWithTheAutofocusAttribute() {
7863    document.querySelector("[autofocus]") && document.querySelector("[autofocus]").focus();
7864  }
7865  function cleanupAlpineElementsOnThePageThatArentInsideAPersistedElement() {
7866    let walker = function(root, callback) {
7867      Alpine.walk(root, (el, skip) => {
7868        if (isPersistedElement(el))
7869          skip();
7870        if (isTeleportTarget(el))
7871          skip();
7872        else
7873          callback(el, skip);
7874      });
7875    };
7876    Alpine.destroyTree(document.body, walker);
7877  }
7878
7879  
7879// js/plugins/history/index.js
7880  function history2(Alpine3) {
7881    Alpine3.magic("queryString", (el, { interceptor: interceptor2 }) => {
7882      let alias;
7883      let alwaysShow = false;
7884      let usePush = false;
7885      return interceptor2((initialSeedValue, getter, setter, path, key) => {
7886        let queryKey = alias || path;
7887        let { initial, replace: replace2, push: push2, pop } = track2(queryKey, initialSeedValue, alwaysShow);
7888        setter(initial);
7889        if (!usePush) {
7890          Alpine3.effect(() => replace2(getter()));
7891        } else {
7892          Alpine3.effect(() => push2(getter()));
7893          pop(async (newValue) => {
7894            setter(newValue);
7895            let tillTheEndOfTheMicrotaskQueue = () => Promise.resolve();
7896            await tillTheEndOfTheMicrotaskQueue();
7897          });
7898        }
7899        return initial;
7900      }, (func) => {
7901        func.alwaysShow = () => {
7902          alwaysShow = true;
7903          return func;
7904        };
7905        func.usePush = () => {
7906          usePush = true;
7907          return func;
7908        };
7909        func.as = (key) => {
7910          alias = key;
7911          return func;
7912        };
7913      });
7914    });
7915    Alpine3.history = { track: track2 };
7916  }
7917  function track2(name, initialSeedValue, alwaysShow = false) {
7918    let { has: has2, get: get3, set: set3, remove } = queryStringUtils();
7919    let url = new URL(window.location.href);
7920    let isInitiallyPresentInUrl = has2(url, name);
7921    let initialValue = isInitiallyPresentInUrl ? get3(url, name) : initialSeedValue;
7922    let initialValueMemo = JSON.stringify(initialValue);
7923    let hasReturnedToInitialValue = (newValue) => JSON.stringify(newValue) === initialValueMemo;
7924    if (alwaysShow)
7925      url = set3(url, name, initialValue);
7926    replace(url, name, { value: initialValue });
7927    let lock = false;
7928    let update = (strategy, newValue) => {
7929      if (lock)
7930        return;
7931      let url2 = new URL(window.location.href);
7932      if (!alwaysShow && !isInitiallyPresentInUrl && hasReturnedToInitialValue(newValue)) {
7933        url2 = remove(url2, name);
7934      } else if (newValue === void 0) {
7935        url2 = remove(url2, name);
7936      } else {
7937        url2 = set3(url2, name, newValue);
7938      }
7939      strategy(url2, name, { value: newValue });
7940    };
7941    return {
7942      initial: initialValue,
7943      replace(newValue) {
7944        update(replace, newValue);
7945      },
7946      push(newValue) {
7947        update(push, newValue);
7948      },
7949      pop(receiver) {
7950        let handler4 = (e) => {
7951          if (!e.state || !e.state.alpine)
7952            return;
7953          Object.entries(e.state.alpine).forEach(([iName, { value: newValue }]) => {
7954            if (iName !== name)
7955              return;
7956            lock = true;
7957            let result = receiver(newValue);
7958            if (result instanceof Promise) {
7959              result.finally(() => lock = false);
7960            } else {
7961              lock = false;
7962            }
7963          });
7964        };
7965        window.addEventListener("popstate", handler4);
7966        return () => window.removeEventListener("popstate", handler4);
7967      }
7968    };
7969  }
7970  function replace(url, key, object) {
7971    let state = window.history.state || {};
7972    if (!state.alpine)
7973      state.alpine = {};
7974    state.alpine[key] = unwrap(object);
7975    window.history.replaceState(state, "", url.toString());
7976  }
7977  function push(url, key, object) {
7978    let state = window.history.state || {};
7979    if (!state.alpine)
7980      state.alpine = {};
7981    state = { alpine: { ...state.alpine, ...{ [key]: unwrap(object) } } };
7982    window.history.pushState(state, "", url.toString());
7983  }
7984  function unwrap(object) {
7985    if (object === void 0)
7986      return void 0;
7987    return JSON.parse(JSON.stringify(object));
7988  }
7989  function queryStringUtils() {
7990    return {
7991      has(url, key) {
7992        let search = url.search;
7993        if (!search)
7994          return false;
7995        let data2 = fromQueryString(search);
7996        return Object.keys(data2).includes(key);
7997      },
7998      get(url, key) {
7999        let search = url.search;
8000        if (!search)
8001          return false;
8002        let data2 = fromQueryString(search);
8003        return data2[key];
8004      },
8005      set(url, key, value) {
8006        let data2 = fromQueryString(url.search);
8007        data2[key] = stripNulls(unwrap(value));
8008        url.search = toQueryString(data2);
8009        return url;
8010      },
8011      remove(url, key) {
8012        let data2 = fromQueryString(url.search);
8013        delete data2[key];
8014        url.search = toQueryString(data2);
8015        return url;
8016      }
8017    };
8018  }
8019  function stripNulls(value) {
8020    if (!isObjecty(value))
8021      return value;
8022    for (let key in value) {
8023      if (value[key] === null)
8024        delete value[key];
8025      else
8026        value[key] = stripNulls(value[key]);
8027    }
8028    return value;
8029  }
8030  function toQueryString(data2) {
8031    let isObjecty2 = (subject) => typeof subject === "object" && subject !== null;
8032    let buildQueryStringEntries = (data3, entries2 = {}, baseKey = "") => {
8033      Object.entries(data3).forEach(([iKey, iValue]) => {
8034        let key = baseKey === "" ? iKey : `${baseKey}[${iKey}]`;
8035        if (iValue === null) {
8036          entries2[key] = "";
8037        } else if (!isObjecty2(iValue)) {
8038          entries2[key] = encodeURIComponent(iValue).replaceAll("%20", "+").replaceAll("%2C", ",");
8039        } else {
8040          entries2 = { ...entries2, ...buildQueryStringEntries(iValue, entries2, key) };
8041        }
8042      });
8043      return entries2;
8044    };
8045    let entries = buildQueryStringEntries(data2);
8046    return Object.entries(entries).map(([key, value]) => `${key}=${value}`).join("&");
8047  }
8048  function fromQueryString(search) {
8049    search = search.replace("?", "");
8050    if (search === "")
8051      return {};
8052    let insertDotNotatedValueIntoData = (key, value, data3) => {
8053      let [first2, second, ...rest] = key.split(".");
8054      if (!second)
8055        return data3[key] = value;
8056      if (data3[first2] === void 0) {
8057        data3[first2] = isNaN(second) ? {} : [];
8058      }
8059      insertDotNotatedValueIntoData([second, ...rest].join("."), value, data3[first2]);
8060    };
8061    let entries = search.split("&").map((i) => i.split("="));
8062    let data2 = /* @__PURE__ */ Object.create(null);
8063    entries.forEach(([key, value]) => {
8064      if (typeof value == "undefined")
8065        return;
8066      value = decodeURIComponent(value.replaceAll("+", "%20"));
8067      if (!key.includes("[")) {
8068        data2[key] = value;
8069      } else {
8070        let dotNotatedKey = key.replaceAll("[", ".").replaceAll("]", "");
8071        insertDotNotatedValueIntoData(dotNotatedKey, value, data2);
8072      }
8073    });
8074    return data2;
8075  }
8076
8077  
8077// ../alpine/packages/morph/dist/module.esm.js
8078  function morph(from, toHtml, options) {
8079    monkeyPatchDomSetAttributeToAllowAtSymbols();
8080    let fromEl;
8081    let toEl;
8082    let key, lookahead, updating, updated, removing, removed, adding, added;
8083    function assignOptions(options2 = {}) {
8084      let defaultGetKey = (el) => el.getAttribute("key");
8085      let noop = () => {
8086      };
8087      updating = options2.updating || noop;
8088      updated = options2.updated || noop;
8089      removing = options2.removing || noop;
8090      removed = options2.removed || noop;
8091      adding = options2.adding || noop;
8092      added = options2.added || noop;
8093      key = options2.key || defaultGetKey;
8094      lookahead = options2.lookahead || false;
8095    }
8096    function patch(from2, to) {
8097      if (differentElementNamesTypesOrKeys(from2, to)) {
8098        return swapElements(from2, to);
8099      }
8100      let updateChildrenOnly = false;
8101      if (shouldSkip(updating, from2, to, () => updateChildrenOnly = true))
8102        return;
8103      if (from2.nodeType === 1 && window.Alpine) {
8104        window.Alpine.cloneNode(from2, to);
8105        if (from2._x_teleport && to._x_teleport) {
8106          patch(from2._x_teleport, to._x_teleport);
8107        }
8108      }
8109      if (textOrComment(to)) {
8110        patchNodeValue(from2, to);
8111        updated(from2, to);
8112        return;
8113      }
8114      if (!updateChildrenOnly) {
8115        patchAttributes(from2, to);
8116      }
8117      updated(from2, to);
8118      patchChildren(from2, to);
8119    }
8120    function differentElementNamesTypesOrKeys(from2, to) {
8121      return from2.nodeType != to.nodeType || from2.nodeName != to.nodeName || getKey(from2) != getKey(to);
8122    }
8123    function swapElements(from2, to) {
8124      if (shouldSkip(removing, from2))
8125        return;
8126      let toCloned = to.cloneNode(true);
8127      if (shouldSkip(adding, toCloned))
8128        return;
8129      from2.replaceWith(toCloned);
8130      removed(from2);
8131      added(toCloned);
8132    }
8133    function patchNodeValue(from2, to) {
8134      let value = to.nodeValue;
8135      if (from2.nodeValue !== value) {
8136        from2.nodeValue = value;
8137      }
8138    }
8139    function patchAttributes(from2, to) {
8140      if (from2._x_transitioning)
8141        return;
8142      if (from2._x_isShown && !to._x_isShown) {
8143        return;
8144      }
8145      if (!from2._x_isShown && to._x_isShown) {
8146        return;
8147      }
8148      let domAttributes = Array.from(from2.attributes);
8149      let toAttributes = Array.from(to.attributes);
8150      for (let i = domAttributes.length - 1; i >= 0; i--) {
8151        let name = domAttributes[i].name;
8152        if (!to.hasAttribute(name)) {
8153          from2.removeAttribute(name);
8154        }
8155      }
8156      for (let i = toAttributes.length - 1; i >= 0; i--) {
8157        let name = toAttributes[i].name;
8158        let value = toAttributes[i].value;
8159        if (from2.getAttribute(name) !== value) {
8160          from2.setAttribute(name, value);
8161        }
8162      }
8163    }
8164    function patchChildren(from2, to) {
8165      let fromKeys = keyToMap(from2.children);
8166      let fromKeyHoldovers = {};
8167      let currentTo = getFirstNode(to);
8168      let currentFrom = getFirstNode(from2);
8169      while (currentTo) {
8170        seedingMatchingId(currentTo, currentFrom);
8171        let toKey = getKey(currentTo);
8172        let fromKey = getKey(currentFrom);
8173        if (!currentFrom) {
8174          if (toKey && fromKeyHoldovers[toKey]) {
8175            let holdover = fromKeyHoldovers[toKey];
8176            from2.appendChild(holdover);
8177            currentFrom = holdover;
8178          } else {
8179            if (!shouldSkip(adding, currentTo)) {
8180              let clone2 = currentTo.cloneNode(true);
8181              from2.appendChild(clone2);
8182              added(clone2);
8183            }
8184            currentTo = getNextSibling(to, currentTo);
8185            continue;
8186          }
8187        }
8188        let isIf = (node) => node && node.nodeType === 8 && node.textContent === "[if BLOCK]><![endif]";
8189        let isEnd = (node) => node && node.nodeType === 8 && node.textContent === "[if ENDBLOCK]><![endif]";
8190        if (isIf(currentTo) && isIf(currentFrom)) {
8191          let nestedIfCount = 0;
8192          let fromBlockStart = currentFrom;
8193          while (currentFrom) {
8194            let next = getNextSibling(from2, currentFrom);
8195            if (isIf(next)) {
8196              nestedIfCount++;
8197            } else if (isEnd(next) && nestedIfCount > 0) {
8198              nestedIfCount--;
8199            } else if (isEnd(next) && nestedIfCount === 0) {
8200              currentFrom = next;
8201              break;
8202            }
8203            currentFrom = next;
8204          }
8205          let fromBlockEnd = currentFrom;
8206          nestedIfCount = 0;
8207          let toBlockStart = currentTo;
8208          while (currentTo) {
8209            let next = getNextSibling(to, currentTo);
8210            if (isIf(next)) {
8211              nestedIfCount++;
8212            } else if (isEnd(next) && nestedIfCount > 0) {
8213              nestedIfCount--;
8214            } else if (isEnd(next) && nestedIfCount === 0) {
8215              currentTo = next;
8216              break;
8217            }
8218            currentTo = next;
8219          }
8220          let toBlockEnd = currentTo;
8221          let fromBlock = new Block(fromBlockStart, fromBlockEnd);
8222          let toBlock = new Block(toBlockStart, toBlockEnd);
8223          patchChildren(fromBlock, toBlock);
8224          continue;
8225        }
8226        if (currentFrom.nodeType === 1 && lookahead && !currentFrom.isEqualNode(currentTo)) {
8227          let nextToElementSibling = getNextSibling(to, currentTo);
8228          let found = false;
8229          while (!found && nextToElementSibling) {
8230            if (nextToElementSibling.nodeType === 1 && currentFrom.isEqualNode(nextToElementSibling)) {
8231              found = true;
8232              currentFrom = addNodeBefore(from2, currentTo, currentFrom);
8233              fromKey = getKey(currentFrom);
8234            }
8235            nextToElementSibling = getNextSibling(to, nextToElementSibling);
8236          }
8237        }
8238        if (toKey !== fromKey) {
8239          if (!toKey && fromKey) {
8240            fromKeyHoldovers[fromKey] = currentFrom;
8241            currentFrom = addNodeBefore(from2, currentTo, currentFrom);
8242            fromKeyHoldovers[fromKey].remove();
8243            currentFrom = getNextSibling(from2, currentFrom);
8244            currentTo = getNextSibling(to, currentTo);
8245            continue;
8246          }
8247          if (toKey && !fromKey) {
8248            if (fromKeys[toKey]) {
8249              currentFrom.replaceWith(fromKeys[toKey]);
8250              currentFrom = fromKeys[toKey];
8251            }
8252          }
8253          if (toKey && fromKey) {
8254            let fromKeyNode = fromKeys[toKey];
8255            if (fromKeyNode) {
8256              fromKeyHoldovers[fromKey] = currentFrom;
8257              currentFrom.replaceWith(fromKeyNode);
8258              currentFrom = fromKeyNode;
8259            } else {
8260              fromKeyHoldovers[fromKey] = currentFrom;
8261              currentFrom = addNodeBefore(from2, currentTo, currentFrom);
8262              fromKeyHoldovers[fromKey].remove();
8263              currentFrom = getNextSibling(from2, currentFrom);
8264              currentTo = getNextSibling(to, currentTo);
8265              continue;
8266            }
8267          }
8268        }
8269        let currentFromNext = currentFrom && getNextSibling(from2, currentFrom);
8270        patch(currentFrom, currentTo);
8271        currentTo = currentTo && getNextSibling(to, currentTo);
8272        currentFrom = currentFromNext;
8273      }
8274      let removals = [];
8275      while (currentFrom) {
8276        if (!shouldSkip(removing, currentFrom))
8277          removals.push(currentFrom);
8278        currentFrom = getNextSibling(from2, currentFrom);
8279      }
8280      while (removals.length) {
8281        let domForRemoval = removals.shift();
8282        domForRemoval.remove();
8283        removed(domForRemoval);
8284      }
8285    }
8286    function getKey(el) {
8287      return el && el.nodeType === 1 && key(el);
8288    }
8289    function keyToMap(els2) {
8290      let map = {};
8291      for (let el of els2) {
8292        let theKey = getKey(el);
8293        if (theKey) {
8294          map[theKey] = el;
8295        }
8296      }
8297      return map;
8298    }
8299    function addNodeBefore(parent, node, beforeMe) {
8300      if (!shouldSkip(adding, node)) {
8301        let clone2 = node.cloneNode(true);
8302        parent.insertBefore(clone2, beforeMe);
8303        added(clone2);
8304        return clone2;
8305      }
8306      return node;
8307    }
8308    assignOptions(options);
8309    fromEl = from;
8310    toEl = typeof toHtml === "string" ? createElement(toHtml) : toHtml;
8311    if (window.Alpine && window.Alpine.closestDataStack && !from._x_dataStack) {
8312      toEl._x_dataStack = window.Alpine.closestDataStack(from);
8313      toEl._x_dataStack && window.Alpine.cloneNode(from, toEl);
8314    }
8315    patch(from, toEl);
8316    fromEl = void 0;
8317    toEl = void 0;
8318    return from;
8319  }
8320  morph.step = () => {
8321  };
8322  morph.log = () => {
8323  };
8324  function shouldSkip(hook, ...args) {
8325    let skip = false;
8326    hook(...args, () => skip = true);
8327    return skip;
8328  }
8329  var patched = false;
8330  function createElement(html) {
8331    const template = document.createElement("template");
8332    template.innerHTML = html;
8333    return template.content.firstElementChild;
8334  }
8335  function textOrComment(el) {
8336    return el.nodeType === 3 || el.nodeType === 8;
8337  }
8338  var Block = class {
8339    constructor(start3, end) {
8340      this.startComment = start3;
8341      this.endComment = end;
8342    }
8343    get children() {
8344      let children = [];
8345      let currentNode = this.startComment.nextSibling;
8346      while (currentNode && currentNode !== this.endComment) {
8347        children.push(currentNode);
8348        currentNode = currentNode.nextSibling;
8349      }
8350      return children;
8351    }
8352    appendChild(child) {
8353      this.endComment.before(child);
8354    }
8355    get firstChild() {
8356      let first2 = this.startComment.nextSibling;
8357      if (first2 === this.endComment)
8358        return;
8359      return first2;
8360    }
8361    nextNode(reference) {
8362      let next = reference.nextSibling;
8363      if (next === this.endComment)
8364        return;
8365      return next;
8366    }
8367    insertBefore(newNode, reference) {
8368      reference.before(newNode);
8369      return newNode;
8370    }
8371  };
8372  function getFirstNode(parent) {
8373    return parent.firstChild;
8374  }
8375  function getNextSibling(parent, reference) {
8376    let next;
8377    if (parent instanceof Block) {
8378      next = parent.nextNode(reference);
8379    } else {
8380      next = reference.nextSibling;
8381    }
8382    return next;
8383  }
8384  function monkeyPatchDomSetAttributeToAllowAtSymbols() {
8385    if (patched)
8386      return;
8387    patched = true;
8388    let original = Element.prototype.setAttribute;
8389    let hostDiv = document.createElement("div");
8390    Element.prototype.setAttribute = function newSetAttribute(name, value) {
8391      if (!name.includes("@")) {
8392        return original.call(this, name, value);
8393      }
8394      hostDiv.innerHTML = `<span ${name}="${value}"></span>`;
8395      let attr = hostDiv.firstElementChild.getAttributeNode(name);
8396      hostDiv.firstElementChild.removeAttributeNode(attr);
8397      this.setAttributeNode(attr);
8398    };
8399  }
8400  function seedingMatchingId(to, from) {
8401    let fromId = from && from._x_bindings && from._x_bindings.id;
8402    if (!fromId)
8403      return;
8404    to.setAttribute("id", fromId);
8405    to.id = fromId;
8406  }
8407  function src_default7(Alpine3) {
8408    Alpine3.morph = morph;
8409  }
8410  var module_default7 = src_default7;
8411
8412  
8412// ../alpine/packages/mask/dist/module.esm.js
8413  function src_default8(Alpine3) {
8414    Alpine3.directive("mask", (el, { value, expression }, { effect: effect3, evaluateLater: evaluateLater2, cleanup: cleanup2 }) => {
8415      let templateFn = () => expression;
8416      let lastInputValue = "";
8417      queueMicrotask(() => {
8418        if (["function", "dynamic"].includes(value)) {
8419          let evaluator = evaluateLater2(expression);
8420          effect3(() => {
8421            templateFn = (input) => {
8422              let result;
8423              Alpine3.dontAutoEvaluateFunctions(() => {
8424                evaluator((value2) => {
8425                  result = typeof value2 === "function" ? value2(input) : value2;
8426                }, { scope: {
8427                  "$input": input,
8428                  "$money": formatMoney.bind({ el })
8429                } });
8430              });
8431              return result;
8432            };
8433            processInputValue(el, false);
8434          });
8435        } else {
8436          processInputValue(el, false);
8437        }
8438        if (el._x_model)
8439          el._x_model.set(el.value);
8440      });
8441      const controller = new AbortController();
8442      cleanup2(() => {
8443        controller.abort();
8444      });
8445      el.addEventListener("input", () => processInputValue(el), {
8446        signal: controller.signal,
8447        capture: true
8448      });
8449      el.addEventListener("blur", () => processInputValue(el, false), { signal: controller.signal });
8450      function processInputValue(el2, shouldRestoreCursor = true) {
8451        let input = el2.value;
8452        let template = templateFn(input);
8453        if (!template || template === "false")
8454          return false;
8455        if (lastInputValue.length - el2.value.length === 1) {
8456          return lastInputValue = el2.value;
8457        }
8458        let setInput = () => {
8459          lastInputValue = el2.value = formatInput(input, template);
8460        };
8461        if (shouldRestoreCursor) {
8462          restoreCursorPosition(el2, template, () => {
8463            setInput();
8464          });
8465        } else {
8466          setInput();
8467        }
8468      }
8469      function formatInput(input, template) {
8470        if (input === "")
8471          return "";
8472        let strippedDownInput = stripDown(template, input);
8473        let rebuiltInput = buildUp(template, strippedDownInput);
8474        return rebuiltInput;
8475      }
8476    }).before("model");
8477  }
8478  function restoreCursorPosition(el, template, callback) {
8479    let cursorPosition = el.selectionStart;
8480    let unformattedValue = el.value;
8481    callback();
8482    let beforeLeftOfCursorBeforeFormatting = unformattedValue.slice(0, cursorPosition);
8483    let newPosition = buildUp(template, stripDown(template, beforeLeftOfCursorBeforeFormatting)).length;
8484    el.setSelectionRange(newPosition, newPosition);
8485  }
8486  function stripDown(template, input) {
8487    let inputToBeStripped = input;
8488    let output = "";
8489    let regexes = {
8490      "9": /[0-9]/,
8491      "a": /[a-zA-Z]/,
8492      "*": /[a-zA-Z0-9]/
8493    };
8494    let wildcardTemplate = "";
8495    for (let i = 0; i < template.length; i++) {
8496      if (["9", "a", "*"].includes(template[i])) {
8497        wildcardTemplate += template[i];
8498        continue;
8499      }
8500      for (let j = 0; j < inputToBeStripped.length; j++) {
8501        if (inputToBeStripped[j] === template[i]) {
8502          inputToBeStripped = inputToBeStripped.slice(0, j) + inputToBeStripped.slice(j + 1);
8503          break;
8504        }
8505      }
8506    }
8507    for (let i = 0; i < wildcardTemplate.length; i++) {
8508      let found = false;
8509      for (let j = 0; j < inputToBeStripped.length; j++) {
8510        if (regexes[wildcardTemplate[i]].test(inputToBeStripped[j])) {
8511          output += inputToBeStripped[j];
8512          inputToBeStripped = inputToBeStripped.slice(0, j) + inputToBeStripped.slice(j + 1);
8513          found = true;
8514          break;
8515        }
8516      }
8517      if (!found)
8518        break;
8519    }
8520    return output;
8521  }
8522  function buildUp(template, input) {
8523    let clean = Array.from(input);
8524    let output = "";
8525    for (let i = 0; i < template.length; i++) {
8526      if (!["9", "a", "*"].includes(template[i])) {
8527        output += template[i];
8528        continue;
8529      }
8530      if (clean.length === 0)
8531        break;
8532      output += clean.shift();
8533    }
8534    return output;
8535  }
8536  function formatMoney(input, delimiter = ".", thousands, precision = 2) {
8537    if (input === "-")
8538      return "-";
8539    if (/^\D+$/.test(input))
8540      return "9";
8541    if (thousands === null || thousands === void 0) {
8542      thousands = delimiter === "," ? "." : ",";
8543    }
8544    let addThousands = (input2, thousands2) => {
8545      let output = "";
8546      let counter = 0;
8547      for (let i = input2.length - 1; i >= 0; i--) {
8548        if (input2[i] === thousands2)
8549          continue;
8550        if (counter === 3) {
8551          output = input2[i] + thousands2 + output;
8552          counter = 0;
8553        } else {
8554          output = input2[i] + output;
8555        }
8556        counter++;
8557      }
8558      return output;
8559    };
8560    let minus = input.startsWith("-") ? "-" : "";
8561    let strippedInput = input.replaceAll(new RegExp(`[^0-9\\${delimiter}]`, "g"), "");
8562    let template = Array.from({ length: strippedInput.split(delimiter)[0].length }).fill("9").join("");
8563    template = `${minus}${addThousands(template, thousands)}`;
8564    if (precision > 0 && input.includes(delimiter))
8565      template += `${delimiter}` + "9".repeat(precision);
8566    queueMicrotask(() => {
8567      if (this.el.value.endsWith(delimiter))
8568        return;
8569      if (this.el.value[this.el.selectionStart - 1] === delimiter) {
8570        this.el.setSelectionRange(this.el.selectionStart - 1, this.el.selectionStart - 1);
8571      }
8572    });
8573    return template;
8574  }
8575  var module_default8 = src_default8;
8576
8577  
8577// js/lifecycle.js
8578  function start2() {
8579    setTimeout(() => ensureLivewireScriptIsntMisplaced());
8580    dispatch(document, "livewire:init");
8581    dispatch(document, "livewire:initializing");
8582    module_default.plugin(module_default7);
8583    module_default.plugin(history2);
8584    module_default.plugin(module_default5);
8585    module_default.plugin(module_default2);
8586    module_default.plugin(module_default6);
8587    module_default.plugin(module_default3);
8588    module_default.plugin(module_default4);
8589    module_default.plugin(navigate_default);
8590    module_default.plugin(module_default8);
8591    module_default.addRootSelector(() => "[wire\\:id]");
8592    module_default.onAttributesAdded((el, attributes) => {
8593      if (!Array.from(attributes).some((attribute) => matchesForLivewireDirective(attribute.name)))
8594        return;
8595      let component = closestComponent(el, false);
8596      if (!component)
8597        return;
8598      attributes.forEach((attribute) => {
8599        if (!matchesForLivewireDirective(attribute.name))
8600          return;
8601        let directive3 = extractDirective(el, attribute.name);
8602        trigger2("directive.init", { el, component, directive: directive3, cleanup: (callback) => {
8603          module_default.onAttributeRemoved(el, directive3.raw, callback);
8604        } });
8605      });
8606    });
8607    module_default.interceptInit(module_default.skipDuringClone((el) => {
8608      if (!Array.from(el.attributes).some((attribute) => matchesForLivewireDirective(attribute.name)))
8609        return;
8610      if (el.hasAttribute("wire:id")) {
8611        let component2 = initComponent(el);
8612        module_default.onAttributeRemoved(el, "wire:id", () => {
8613          destroyComponent(component2.id);
8614        });
8615      }
8616      let component = closestComponent(el, false);
8617      if (component) {
8618        trigger2("element.init", { el, component });
8619        let directives2 = Array.from(el.getAttributeNames()).filter((name) => matchesForLivewireDirective(name)).map((name) => extractDirective(el, name));
8620        directives2.forEach((directive3) => {
8621          trigger2("directive.init", { el, component, directive: directive3, cleanup: (callback) => {
8622            module_default.onAttributeRemoved(el, directive3.raw, callback);
8623          } });
8624        });
8625      }
8626    }));
8627    module_default.start();
8628    setTimeout(() => window.Livewire.initialRenderIsFinished = true);
8629    dispatch(document, "livewire:initialized");
8630  }
8631  function ensureLivewireScriptIsntMisplaced() {
8632    let el = document.querySelector("script[data-update-uri][data-csrf]");
8633    if (!el)
8634      return;
8635    let livewireEl = el.closest("[wire\\:id]");
8636    if (livewireEl) {
8637      console.warn("Livewire: missing closing tags found. Ensure your template elements contain matching closing tags.", livewireEl);
8638    }
8639  }
8640
8641  
8641// js/features/supportListeners.js
8642  on2("effect", ({ component, effects }) => {
8643    registerListeners(component, effects.listeners || []);
8644  });
8645  function registerListeners(component, listeners2) {
8646    listeners2.forEach((name) => {
8647      let handler4 = (e) => {
8648        if (e.__livewire)
8649          e.__livewire.receivedBy.push(component);
8650        component.$wire.call("__dispatch", name, e.detail || {});
8651      };
8652      window.addEventListener(name, handler4);
8653      component.addCleanup(() => window.removeEventListener(name, handler4));
8654      component.el.addEventListener(name, (e) => {
8655        if (!e.__livewire)
8656          return;
8657        if (e.bubbles)
8658          return;
8659        if (e.__livewire)
8660          e.__livewire.receivedBy.push(component.id);
8661        component.$wire.call("__dispatch", name, e.detail || {});
8662      });
8663    });
8664  }
8665
8666  
8666// js/features/supportScriptsAndAssets.js
8667  var executedScripts = /* @__PURE__ */ new WeakMap();
8668  var executedAssets = /* @__PURE__ */ new Set();
8669  on2("payload.intercept", async ({ assets }) => {
8670    if (!assets)
8671      return;
8672    for (let [key, asset] of Object.entries(assets)) {
8673      await onlyIfAssetsHaventBeenLoadedAlreadyOnThisPage(key, async () => {
8674        await addAssetsToHeadTagOfPage(asset);
8675      });
8676    }
8677  });
8678  on2("component.init", ({ component }) => {
8679    let assets = component.snapshot.memo.assets;
8680    if (assets) {
8681      assets.forEach((key) => {
8682        if (executedAssets.has(key))
8683          return;
8684        executedAssets.add(key);
8685      });
8686    }
8687  });
8688  on2("effect", ({ component, effects }) => {
8689    let scripts = effects.scripts;
8690    if (scripts) {
8691      Object.entries(scripts).forEach(([key, content]) => {
8692        onlyIfScriptHasntBeenRunAlreadyForThisComponent(component, key, () => {
8693          let scriptContent = extractScriptTagContent(content);
8694          module_default.dontAutoEvaluateFunctions(() => {
8695            module_default.evaluate(component.el, scriptContent, { "$wire": component.$wire });
8696          });
8697        });
8698      });
8699    }
8700  });
8701  function onlyIfScriptHasntBeenRunAlreadyForThisComponent(component, key, callback) {
8702    if (executedScripts.has(component)) {
8703      let alreadyRunKeys2 = executedScripts.get(component);
8704      if (alreadyRunKeys2.includes(key))
8705        return;
8706    }
8707    callback();
8708    if (!executedScripts.has(component))
8709      executedScripts.set(component, []);
8710    let alreadyRunKeys = executedScripts.get(component);
8711    alreadyRunKeys.push(key);
8712    executedScripts.set(component, alreadyRunKeys);
8713  }
8714  function extractScriptTagContent(rawHtml) {
8715    let scriptRegex = /<script\b[^>]*>([\s\S]*?)<\/script>/gm;
8716    let matches2 = scriptRegex.exec(rawHtml);
8717    let innards = matches2 && matches2[1] ? matches2[1].trim() : "";
8718    return innards;
8719  }
8720  async function onlyIfAssetsHaventBeenLoadedAlreadyOnThisPage(key, callback) {
8721    if (executedAssets.has(key))
8722      return;
8723    await callback();
8724    executedAssets.add(key);
8725  }
8726  async function addAssetsToHeadTagOfPage(rawHtml) {
8727    let newDocument = new DOMParser().parseFromString(rawHtml, "text/html");
8728    let newHead = document.adoptNode(newDocument.head);
8729    for (let child of newHead.children) {
8730      try {
8731        await runAssetSynchronously(child);
8732      } catch (error2) {
8733      }
8734    }
8735  }
8736  async function runAssetSynchronously(child) {
8737    return new Promise((resolve, reject) => {
8738      if (isScript2(child)) {
8739        let script = cloneScriptTag2(child);
8740        if (script.src) {
8741          script.onload = () => resolve();
8742          script.onerror = () => reject();
8743        } else {
8744          resolve();
8745        }
8746        document.head.appendChild(script);
8747      } else {
8748        document.head.appendChild(child);
8749        resolve();
8750      }
8751    });
8752  }
8753  function isScript2(el) {
8754    return el.tagName.toLowerCase() === "script";
8755  }
8756  function cloneScriptTag2(el) {
8757    let script = document.createElement("script");
8758    script.textContent = el.textContent;
8759    script.async = el.async;
8760    for (let attr of el.attributes) {
8761      script.setAttribute(attr.name, attr.value);
8762    }
8763    return script;
8764  }
8765
8766  
8766// js/features/supportJsEvaluation.js
8767  on2("effect", ({ component, effects }) => {
8768    let js = effects.js;
8769    let xjs = effects.xjs;
8770    if (js) {
8771      Object.entries(js).forEach(([method, body]) => {
8772        overrideMethod(component, method, () => {
8773          module_default.evaluate(component.el, body);
8774        });
8775      });
8776    }
8777    if (xjs) {
8778      xjs.forEach((expression) => {
8779        module_default.evaluate(component.el, expression);
8780      });
8781    }
8782  });
8783
8784  
8784// js/morph.js
8785  function morph2(component, el, html) {
8786    let wrapperTag = el.parentElement ? el.parentElement.tagName.toLowerCase() : "div";
8787    let wrapper = document.createElement(wrapperTag);
8788    wrapper.innerHTML = html;
8789    let parentComponent;
8790    try {
8791      parentComponent = closestComponent(el.parentElement);
8792    } catch (e) {
8793    }
8794    parentComponent && (wrapper.__livewire = parentComponent);
8795    let to = wrapper.firstElementChild;
8796    to.__livewire = component;
8797    trigger2("morph", { el, toEl: to, component });
8798    module_default.morph(el, to, {
8799      updating: (el2, toEl, childrenOnly, skip) => {
8800        if (isntElement(el2))
8801          return;
8802        trigger2("morph.updating", { el: el2, toEl, component, skip, childrenOnly });
8803        if (el2.__livewire_replace === true)
8804          el2.innerHTML = toEl.innerHTML;
8805        if (el2.__livewire_replace_self === true) {
8806          el2.outerHTML = toEl.outerHTML;
8807          return skip();
8808        }
8809        if (el2.__livewire_ignore === true)
8810          return skip();
8811        if (el2.__livewire_ignore_self === true)
8812          childrenOnly();
8813        if (isComponentRootEl(el2) && el2.getAttribute("wire:id") !== component.id)
8814          return skip();
8815        if (isComponentRootEl(el2))
8816          toEl.__livewire = component;
8817      },
8818      updated: (el2) => {
8819        if (isntElement(el2))
8820          return;
8821        trigger2("morph.updated", { el: el2, component });
8822      },
8823      removing: (el2, skip) => {
8824        if (isntElement(el2))
8825          return;
8826        trigger2("morph.removing", { el: el2, component, skip });
8827      },
8828      removed: (el2) => {
8829        if (isntElement(el2))
8830          return;
8831        trigger2("morph.removed", { el: el2, component });
8832      },
8833      adding: (el2) => {
8834        trigger2("morph.adding", { el: el2, component });
8835      },
8836      added: (el2) => {
8837        if (isntElement(el2))
8838          return;
8839        const closestComponentId = closestComponent(el2).id;
8840        trigger2("morph.added", { el: el2 });
8841      },
8842      key: (el2) => {
8843        if (isntElement(el2))
8844          return;
8845        return el2.hasAttribute(`wire:key`) ? el2.getAttribute(`wire:key`) : el2.hasAttribute(`wire:id`) ? el2.getAttribute(`wire:id`) : el2.id;
8846      },
8847      lookahead: false
8848    });
8849  }
8850  function isntElement(el) {
8851    return typeof el.hasAttribute !== "function";
8852  }
8853  function isComponentRootEl(el) {
8854    return el.hasAttribute("wire:id");
8855  }
8856
8857  
8857// js/features/supportMorphDom.js
8858  on2("effect", ({ component, effects }) => {
8859    let html = effects.html;
8860    if (!html)
8861      return;
8862    queueMicrotask(() => {
8863      queueMicrotask(() => {
8864        morph2(component, component.el, html);
8865      });
8866    });
8867  });
8868
8869  
8869// js/features/supportDispatches.js
8870  on2("effect", ({ component, effects }) => {
8871    dispatchEvents(component, effects.dispatches || []);
8872  });
8873  function dispatchEvents(component, dispatches) {
8874    dispatches.forEach(({ name, params = {}, self = false, to }) => {
8875      if (self)
8876        dispatchSelf(component, name, params);
8877      else if (to)
8878        dispatchTo(to, name, params);
8879      else
8880        dispatch3(component, name, params);
8881    });
8882  }
8883
8884  
8884// js/features/supportDisablingFormsDuringRequest.js
8885  var cleanups = new Bag();
8886  on2("directive.init", ({ el, directive: directive3, cleanup: cleanup2, component }) => setTimeout(() => {
8887    if (directive3.value !== "submit")
8888      return;
8889    el.addEventListener("submit", () => {
8890      let componentId = directive3.expression.startsWith("$parent") ? component.parent.id : component.id;
8891      let cleanup3 = disableForm(el);
8892      cleanups.add(componentId, cleanup3);
8893    });
8894  }));
8895  on2("commit", ({ component, respond }) => {
8896    respond(() => {
8897      cleanups.each(component.id, (i) => i());
8898      cleanups.remove(component.id);
8899    });
8900  });
8901  function disableForm(formEl) {
8902    let undos = [];
8903    module_default.walk(formEl, (el, skip) => {
8904      if (!formEl.contains(el))
8905        return;
8906      if (el.hasAttribute("wire:ignore"))
8907        return skip();
8908      if (shouldMarkDisabled(el)) {
8909        undos.push(markDisabled(el));
8910      } else if (shouldMarkReadOnly(el)) {
8911        undos.push(markReadOnly(el));
8912      }
8913    });
8914    return () => {
8915      while (undos.length > 0)
8916        undos.shift()();
8917    };
8918  }
8919  function shouldMarkDisabled(el) {
8920    let tag = el.tagName.toLowerCase();
8921    if (tag === "select")
8922      return true;
8923    if (tag === "button" && el.type === "submit")
8924      return true;
8925    if (tag === "input" && (el.type === "checkbox" || el.type === "radio"))
8926      return true;
8927    return false;
8928  }
8929  function shouldMarkReadOnly(el) {
8930    return ["input", "textarea"].includes(el.tagName.toLowerCase());
8931  }
8932  function markDisabled(el) {
8933    let undo = el.disabled ? () => {
8934    } : () => el.disabled = false;
8935    el.disabled = true;
8936    return undo;
8937  }
8938  function markReadOnly(el) {
8939    let undo = el.readOnly ? () => {
8940    } : () => el.readOnly = false;
8941    el.readOnly = true;
8942    return undo;
8943  }
8944
8945  
8945// js/features/supportPropsAndModelables.js
8946  on2("commit.pooling", ({ commits }) => {
8947    commits.forEach((commit) => {
8948      let component = commit.component;
8949      getDeepChildrenWithBindings(component, (child) => {
8950        child.$wire.$commit();
8951      });
8952    });
8953  });
8954  on2("commit.pooled", ({ pools }) => {
8955    let commits = getPooledCommits(pools);
8956    commits.forEach((commit) => {
8957      let component = commit.component;
8958      getDeepChildrenWithBindings(component, (child) => {
8959        colocateCommitsByComponent(pools, component, child);
8960      });
8961    });
8962  });
8963  function getPooledCommits(pools) {
8964    let commits = [];
8965    pools.forEach((pool) => {
8966      pool.commits.forEach((commit) => {
8967        commits.push(commit);
8968      });
8969    });
8970    return commits;
8971  }
8972  function colocateCommitsByComponent(pools, component, foreignComponent) {
8973    let pool = findPoolWithComponent(pools, component);
8974    let foreignPool = findPoolWithComponent(pools, foreignComponent);
8975    let foreignCommit = foreignPool.findCommitByComponent(foreignComponent);
8976    foreignPool.delete(foreignCommit);
8977    pool.add(foreignCommit);
8978    pools.forEach((pool2) => {
8979      if (pool2.empty())
8980        pools.delete(pool2);
8981    });
8982  }
8983  function findPoolWithComponent(pools, component) {
8984    for (let [idx, pool] of pools.entries()) {
8985      if (pool.hasCommitFor(component))
8986        return pool;
8987    }
8988  }
8989  function getDeepChildrenWithBindings(component, callback) {
8990    getDeepChildren(component, (child) => {
8991      if (hasReactiveProps(child) || hasWireModelableBindings(child)) {
8992        callback(child);
8993      }
8994    });
8995  }
8996  function hasReactiveProps(component) {
8997    let meta = component.snapshot.memo;
8998    let props = meta.props;
8999    return !!props;
9000  }
9001  function hasWireModelableBindings(component) {
9002    let meta = component.snapshot.memo;
9003    let bindings = meta.bindings;
9004    return !!bindings;
9005  }
9006  function getDeepChildren(component, callback) {
9007    component.children.forEach((child) => {
9008      callback(child);
9009      getDeepChildren(child, callback);
9010    });
9011  }
9012
9013  
9013// js/features/supportFileDownloads.js
9014  on2("commit", ({ succeed }) => {
9015    succeed(({ effects }) => {
9016      let download = effects.download;
9017      if (!download)
9018        return;
9019      let urlObject = window.webkitURL || window.URL;
9020      let url = urlObject.createObjectURL(base64toBlob(download.content, download.contentType));
9021      let invisibleLink = document.createElement("a");
9022      invisibleLink.style.display = "none";
9023      invisibleLink.href = url;
9024      invisibleLink.download = download.name;
9025      document.body.appendChild(invisibleLink);
9026      invisibleLink.click();
9027      setTimeout(function() {
9028        urlObject.revokeObjectURL(url);
9029      }, 0);
9030    });
9031  });
9032  function base64toBlob(b64Data, contentType = "", sliceSize = 512) {
9033    const byteCharacters = atob(b64Data);
9034    const byteArrays = [];
9035    if (contentType === null)
9036      contentType = "";
9037    for (let offset2 = 0; offset2 < byteCharacters.length; offset2 += sliceSize) {
9038      let slice = byteCharacters.slice(offset2, offset2 + sliceSize);
9039      let byteNumbers = new Array(slice.length);
9040      for (let i = 0; i < slice.length; i++) {
9041        byteNumbers[i] = slice.charCodeAt(i);
9042      }
9043      let byteArray = new Uint8Array(byteNumbers);
9044      byteArrays.push(byteArray);
9045    }
9046    return new Blob(byteArrays, { type: contentType });
9047  }
9048
9049  
9049// js/features/supportLazyLoading.js
9050  var componentsThatWantToBeBundled = /* @__PURE__ */ new WeakSet();
9051  var componentsThatAreLazy = /* @__PURE__ */ new WeakSet();
9052  on2("component.init", ({ component }) => {
9053    let memo = component.snapshot.memo;
9054    if (memo.lazyLoaded === void 0)
9055      return;
9056    componentsThatAreLazy.add(component);
9057    if (memo.lazyIsolated !== void 0 && memo.lazyIsolated === false) {
9058      componentsThatWantToBeBundled.add(component);
9059    }
9060  });
9061  on2("commit.pooling", ({ commits }) => {
9062    commits.forEach((commit) => {
9063      if (!componentsThatAreLazy.has(commit.component))
9064        return;
9065      if (componentsThatWantToBeBundled.has(commit.component)) {
9066        commit.isolate = false;
9067        componentsThatWantToBeBundled.delete(commit.component);
9068      } else {
9069        commit.isolate = true;
9070      }
9071      componentsThatAreLazy.delete(commit.component);
9072    });
9073  });
9074
9075  
9075// js/features/supportQueryString.js
9076  on2("effect", ({ component, effects, cleanup: cleanup2 }) => {
9077    let queryString = effects["url"];
9078    if (!queryString)
9079      return;
9080    Object.entries(queryString).forEach(([key, value]) => {
9081      let { name, as, use, alwaysShow, except } = normalizeQueryStringEntry(key, value);
9082      if (!as)
9083        as = name;
9084      let initialValue = [false, null, void 0].includes(except) ? dataGet(component.ephemeral, name) : except;
9085      let { replace: replace2, push: push2, pop } = track2(as, initialValue, alwaysShow);
9086      if (use === "replace") {
9087        let effectReference = module_default.effect(() => {
9088          replace2(dataGet(component.reactive, name));
9089        });
9090        cleanup2(() => module_default.release(effectReference));
9091      } else if (use === "push") {
9092        let forgetCommitHandler = on2("commit", ({ component: commitComponent, succeed }) => {
9093          if (component !== commitComponent)
9094            return;
9095          let beforeValue = dataGet(component.canonical, name);
9096          succeed(() => {
9097            let afterValue = dataGet(component.canonical, name);
9098            if (JSON.stringify(beforeValue) === JSON.stringify(afterValue))
9099              return;
9100            push2(afterValue);
9101          });
9102        });
9103        let forgetPopHandler = pop(async (newValue) => {
9104          await component.$wire.set(name, newValue);
9105          document.querySelectorAll("input").forEach((el) => {
9106            el._x_forceModelUpdate && el._x_forceModelUpdate(el._x_model.get());
9107          });
9108        });
9109        cleanup2(() => {
9110          forgetCommitHandler();
9111          forgetPopHandler();
9112        });
9113      }
9114    });
9115  });
9116  function normalizeQueryStringEntry(key, value) {
9117    let defaults = { use: "replace", alwaysShow: false };
9118    if (typeof value === "string") {
9119      return { ...defaults, name: value, as: value };
9120    } else {
9121      let fullerDefaults = { ...defaults, name: key, as: key };
9122      return { ...fullerDefaults, ...value };
9123    }
9124  }
9125
9126  
9126// js/features/supportLaravelEcho.js
9127  on2("request", ({ options }) => {
9128    if (window.Echo) {
9129      options.headers["X-Socket-ID"] = window.Echo.socketId();
9130    }
9131  });
9132  on2("effect", ({ component, effects }) => {
9133    let listeners2 = effects.listeners || [];
9134    listeners2.forEach((event) => {
9135      if (event.startsWith("echo")) {
9136        if (typeof window.Echo === "undefined") {
9137          console.warn("Laravel Echo cannot be found");
9138          return;
9139        }
9140        let event_parts = event.split(/(echo:|echo-)|:|,/);
9141        if (event_parts[1] == "echo:") {
9142          event_parts.splice(2, 0, "channel", void 0);
9143        }
9144        if (event_parts[2] == "notification") {
9145          event_parts.push(void 0, void 0);
9146        }
9147        let [
9148          s1,
9149          signature,
9150          channel_type,
9151          s2,
9152          channel,
9153          s3,
9154          event_name
9155        ] = event_parts;
9156        if (["channel", "private", "encryptedPrivate"].includes(channel_type)) {
9157          let handler4 = (e) => dispatchSelf(component, event, [e]);
9158          window.Echo[channel_type](channel).listen(event_name, handler4);
9159          component.addCleanup(() => {
9160            window.Echo[channel_type](channel).stopListening(event_name, handler4);
9161          });
9162        } else if (channel_type == "presence") {
9163          if (["here", "joining", "leaving"].includes(event_name)) {
9164            window.Echo.join(channel)[event_name]((e) => {
9165              dispatchSelf(component, event, [e]);
9166            });
9167          } else {
9168            let handler4 = (e) => dispatchSelf(component, event, [e]);
9169            window.Echo.join(channel).listen(event_name, handler4);
9170            component.addCleanup(() => {
9171              window.Echo.leaveChannel(channel);
9172            });
9173          }
9174        } else if (channel_type == "notification") {
9175          window.Echo.private(channel).notification((notification) => {
9176            dispatchSelf(component, event, [notification]);
9177          });
9178        } else {
9179          console.warn("Echo channel type not yet supported");
9180        }
9181      }
9182    });
9183  });
9184
9185  
9185// js/features/supportIsolating.js
9186  var componentsThatAreIsolated = /* @__PURE__ */ new WeakSet();
9187  on2("component.init", ({ component }) => {
9188    let memo = component.snapshot.memo;
9189    if (memo.isolate !== true)
9190      return;
9191    componentsThatAreIsolated.add(component);
9192  });
9193  on2("commit.pooling", ({ commits }) => {
9194    commits.forEach((commit) => {
9195      if (!componentsThatAreIsolated.has(commit.component))
9196        return;
9197      commit.isolate = true;
9198    });
9199  });
9200
9201  
9201// js/features/supportNavigate.js
9202  shouldHideProgressBar() && Alpine.navigate.disableProgressBar();
9203  document.addEventListener("alpine:navigate", (e) => forwardEvent("livewire:navigate", e));
9204  document.addEventListener("alpine:navigating", (e) => forwardEvent("livewire:navigating", e));
9205  document.addEventListener("alpine:navigated", (e) => forwardEvent("livewire:navigated", e));
9206  function forwardEvent(name, original) {
9207    let event = new CustomEvent(name, { cancelable: true, bubbles: true, detail: original.detail });
9208    document.dispatchEvent(event);
9209    if (event.defaultPrevented) {
9210      original.preventDefault();
9211    }
9212  }
9213  function shouldRedirectUsingNavigateOr(effects, url, or) {
9214    let forceNavigate = effects.redirectUsingNavigate;
9215    if (forceNavigate) {
9216      Alpine.navigate(url);
9217    } else {
9218      or();
9219    }
9220  }
9221  function shouldHideProgressBar() {
9222    if (!!document.querySelector("[data-no-progress-bar]"))
9223      return true;
9224    if (window.livewireScriptConfig && window.livewireScriptConfig.progressBar === false)
9225      return true;
9226    return false;
9227  }
9228
9229  
9229// js/features/supportRedirects.js
9230  on2("effect", ({ effects }) => {
9231    if (!effects["redirect"])
9232      return;
9233    let url = effects["redirect"];
9234    shouldRedirectUsingNavigateOr(effects, url, () => {
9235      window.location.href = url;
9236    });
9237  });
9238
9239  
9239// js/directives/wire-transition.js
9240  on2("morph.added", ({ el }) => {
9241    el.__addedByMorph = true;
9242  });
9243  directive2("transition", ({ el, directive: directive3, component, cleanup: cleanup2 }) => {
9244    let visibility = module_default.reactive({ state: el.__addedByMorph ? false : true });
9245    module_default.bind(el, {
9246      [directive3.rawName.replace("wire:", "x-")]: "",
9247      "x-show"() {
9248        return visibility.state;
9249      }
9250    });
9251    el.__addedByMorph && setTimeout(() => visibility.state = true);
9252    let cleanups2 = [];
9253    cleanups2.push(on2("morph.removing", ({ el: el2, skip }) => {
9254      skip();
9255      el2.addEventListener("transitionend", () => {
9256        el2.remove();
9257      });
9258      visibility.state = false;
9259      cleanups2.push(on2("morph", ({ component: morphComponent }) => {
9260        if (morphComponent !== component)
9261          return;
9262        el2.remove();
9263        cleanups2.forEach((i) => i());
9264      }));
9265    }));
9266    cleanup2(() => cleanups2.forEach((i) => i()));
9267  });
9268
9269  
9269// js/debounce.js
9270  var callbacksByComponent = new WeakBag();
9271  function callAndClearComponentDebounces(component, callback) {
9272    callbacksByComponent.each(component, (callbackRegister) => {
9273      callbackRegister.callback();
9274      callbackRegister.callback = () => {
9275      };
9276    });
9277    callback();
9278  }
9279
9280  
9280// js/directives/wire-wildcard.js
9281  on2("directive.init", ({ el, directive: directive3, cleanup: cleanup2, component }) => {
9282    if (["snapshot", "effects", "model", "init", "loading", "poll", "ignore", "id", "data", "key", "target", "dirty"].includes(directive3.value))
9283      return;
9284    if (customDirectiveHasBeenRegistered(directive3.value))
9285      return;
9286    let attribute = directive3.rawName.replace("wire:", "x-on:");
9287    if (directive3.value === "submit" && !directive3.modifiers.includes("prevent")) {
9288      attribute = attribute + ".prevent";
9289    }
9290    let cleanupBinding = module_default.bind(el, {
9291      [attribute](e) {
9292        let execute = () => {
9293          callAndClearComponentDebounces(component, () => {
9294            module_default.evaluate(el, "$wire." + directive3.expression, { scope: { $event: e } });
9295          });
9296        };
9297        if (el.__livewire_confirm) {
9298          el.__livewire_confirm(() => {
9299            execute();
9300          }, () => {
9301            e.stopImmediatePropagation();
9302          });
9303        } else {
9304          execute();
9305        }
9306      }
9307    });
9308    cleanup2(cleanupBinding);
9309  });
9310
9311  
9311// js/directives/wire-navigate.js
9312  module_default.addInitSelector(() => `[wire\\:navigate]`);
9313  module_default.addInitSelector(() => `[wire\\:navigate\\.hover]`);
9314  module_default.interceptInit(module_default.skipDuringClone((el) => {
9315    if (el.hasAttribute("wire:navigate")) {
9316      module_default.bind(el, { ["x-navigate"]: true });
9317    } else if (el.hasAttribute("wire:navigate.hover")) {
9318      module_default.bind(el, { ["x-navigate.hover"]: true });
9319    }
9320  }));
9321  document.addEventListener("alpine:navigating", () => {
9322    Livewire.all().forEach((component) => {
9323      component.inscribeSnapshotAndEffectsOnElement();
9324    });
9325  });
9326
9327  
9327// js/directives/wire-confirm.js
9328  directive2("confirm", ({ el, directive: directive3 }) => {
9329    let message = directive3.expression;
9330    let shouldPrompt = directive3.modifiers.includes("prompt");
9331    message = message.replaceAll("\\n", "\n");
9332    if (message === "")
9333      message = "Are you sure?";
9334    el.__livewire_confirm = (action, instead) => {
9335      if (shouldPrompt) {
9336        let [question, expected] = message.split("|");
9337        if (!expected) {
9338          console.warn("Livewire: Must provide expectation with wire:confirm.prompt");
9339        } else {
9340          let input = prompt(question);
9341          if (input === expected) {
9342            action();
9343          } else {
9344            instead();
9345          }
9346        }
9347      } else {
9348        if (confirm(message))
9349          action();
9350        else
9351          instead();
9352      }
9353    };
9354  });
9355
9356  
9356// js/directives/shared.js
9357  function toggleBooleanStateDirective(el, directive3, isTruthy, cachedDisplay = null) {
9358    isTruthy = directive3.modifiers.includes("remove") ? !isTruthy : isTruthy;
9359    if (directive3.modifiers.includes("class")) {
9360      let classes = directive3.expression.split(" ").filter(String);
9361      if (isTruthy) {
9362        el.classList.add(...classes);
9363      } else {
9364        el.classList.remove(...classes);
9365      }
9366    } else if (directive3.modifiers.includes("attr")) {
9367      if (isTruthy) {
9368        el.setAttribute(directive3.expression, true);
9369      } else {
9370        el.removeAttribute(directive3.expression);
9371      }
9372    } else {
9373      let cache = cachedDisplay ?? window.getComputedStyle(el, null).getPropertyValue("display");
9374      let display = ["inline", "block", "table", "flex", "grid", "inline-flex"].filter((i) => directive3.modifiers.includes(i))[0] || "inline-block";
9375      display = directive3.modifiers.includes("remove") && !isTruthy ? cache : display;
9376      el.style.display = isTruthy ? display : "none";
9377    }
9378  }
9379
9380  
9380// js/directives/wire-offline.js
9381  var offlineHandlers = /* @__PURE__ */ new Set();
9382  var onlineHandlers = /* @__PURE__ */ new Set();
9383  window.addEventListener("offline", () => offlineHandlers.forEach((i) => i()));
9384  window.addEventListener("online", () => onlineHandlers.forEach((i) => i()));
9385  directive2("offline", ({ el, directive: directive3, cleanup: cleanup2 }) => {
9386    let setOffline = () => toggleBooleanStateDirective(el, directive3, true);
9387    let setOnline = () => toggleBooleanStateDirective(el, directive3, false);
9388    offlineHandlers.add(setOffline);
9389    onlineHandlers.add(setOnline);
9390    cleanup2(() => {
9391      offlineHandlers.delete(setOffline);
9392      onlineHandlers.delete(setOnline);
9393    });
9394  });
9395
9396  
9396// js/directives/wire-loading.js
9397  directive2("loading", ({ el, directive: directive3, component, cleanup: cleanup2 }) => {
9398    let { targets, inverted } = getTargets(el);
9399    let [delay3, abortDelay] = applyDelay(directive3);
9400    let cleanupA = whenTargetsArePartOfRequest(component, targets, inverted, [
9401      () => delay3(() => toggleBooleanStateDirective(el, directive3, true)),
9402      () => abortDelay(() => toggleBooleanStateDirective(el, directive3, false))
9403    ]);
9404    let cleanupB = whenTargetsArePartOfFileUpload(component, targets, [
9405      () => delay3(() => toggleBooleanStateDirective(el, directive3, true)),
9406      () => abortDelay(() => toggleBooleanStateDirective(el, directive3, false))
9407    ]);
9408    cleanup2(() => {
9409      cleanupA();
9410      cleanupB();
9411    });
9412  });
9413  function applyDelay(directive3) {
9414    if (!directive3.modifiers.includes("delay") || directive3.modifiers.includes("none"))
9415      return [(i) => i(), (i) => i()];
9416    let duration = 200;
9417    let delayModifiers = {
9418      "shortest": 50,
9419      "shorter": 100,
9420      "short": 150,
9421      "default": 200,
9422      "long": 300,
9423      "longer": 500,
9424      "longest": 1e3
9425    };
9426    Object.keys(delayModifiers).some((key) => {
9427      if (directive3.modifiers.includes(key)) {
9428        duration = delayModifiers[key];
9429        return true;
9430      }
9431    });
9432    let timeout;
9433    let started2 = false;
9434    return [
9435      (callback) => {
9436        timeout = setTimeout(() => {
9437          callback();
9438          started2 = true;
9439        }, duration);
9440      },
9441      async (callback) => {
9442        if (started2) {
9443          await callback();
9444          started2 = false;
9445        } else {
9446          clearTimeout(timeout);
9447        }
9448      }
9449    ];
9450  }
9451  function whenTargetsArePartOfRequest(component, targets, inverted, [startLoading, endLoading]) {
9452    return on2("commit", ({ component: iComponent, commit: payload, respond }) => {
9453      if (iComponent !== component)
9454        return;
9455      if (targets.length > 0 && containsTargets(payload, targets) === inverted)
9456        return;
9457      startLoading();
9458      respond(() => {
9459        endLoading();
9460      });
9461    });
9462  }
9463  function whenTargetsArePartOfFileUpload(component, targets, [startLoading, endLoading]) {
9464    let eventMismatch = (e) => {
9465      let { id, property } = e.detail;
9466      if (id !== component.id)
9467        return true;
9468      if (targets.length > 0 && !targets.map((i) => i.target).includes(property))
9469        return true;
9470      return false;
9471    };
9472    let cleanupA = listen(window, "livewire-upload-start", (e) => {
9473      if (eventMismatch(e))
9474        return;
9475      startLoading();
9476    });
9477    let cleanupB = listen(window, "livewire-upload-finish", (e) => {
9478      if (eventMismatch(e))
9479        return;
9480      endLoading();
9481    });
9482    let cleanupC = listen(window, "livewire-upload-error", (e) => {
9483      if (eventMismatch(e))
9484        return;
9485      endLoading();
9486    });
9487    return () => {
9488      cleanupA();
9489      cleanupB();
9490      cleanupC();
9491    };
9492  }
9493  function containsTargets(payload, targets) {
9494    let { updates, calls } = payload;
9495    return targets.some(({ target, params }) => {
9496      if (params) {
9497        return calls.some(({ method, params: methodParams }) => {
9498          return target === method && params === quickHash(JSON.stringify(methodParams));
9499        });
9500      }
9501      let hasMatchingUpdate = Object.keys(updates).some((property) => {
9502        if (property.includes(".")) {
9503          let propertyRoot = property.split(".")[0];
9504          if (propertyRoot === target)
9505            return true;
9506        }
9507        return property === target;
9508      });
9509      if (hasMatchingUpdate)
9510        return true;
9511      if (calls.map((i) => i.method).includes(target))
9512        return true;
9513    });
9514  }
9515  function getTargets(el) {
9516    let directives2 = getDirectives(el);
9517    let targets = [];
9518    let inverted = false;
9519    if (directives2.has("target")) {
9520      let directive3 = directives2.get("target");
9521      let raw2 = directive3.expression;
9522      if (directive3.modifiers.includes("except"))
9523        inverted = true;
9524      if (raw2.includes("(") && raw2.includes(")")) {
9525        targets.push({ target: directive3.method, params: quickHash(JSON.stringify(directive3.params)) });
9526      } else if (raw2.includes(",")) {
9527        raw2.split(",").map((i) =>
9527 i.trim()).forEach((target) => {
9528          targets.push({ target });
9529        });
9530      } else {
9531        targets.push({ target: raw2 });
9532      }
9533    } else {
9534      let nonActionOrModelLivewireDirectives = ["init", "dirty", "offline", "target", "loading", "poll", "ignore", "key", "id"];
9535      directives2.all().filter((i) => !nonActionOrModelLivewireDirectives.includes(i.value)).map((i) => i.expression.split("(")[0]).forEach((target) => targets.push({ target }));
9536    }
9537    return { targets, inverted };
9538  }
9539  function quickHash(subject) {
9540    return btoa(encodeURIComponent(subject));
9541  }
9542
9543  
9543// js/directives/wire-stream.js
9544  directive2("stream", ({ el, directive: directive3, cleanup: cleanup2 }) => {
9545    let { expression, modifiers } = directive3;
9546    let off = on2("stream", ({ name, content, replace: replace2 }) => {
9547      if (name !== expression)
9548        return;
9549      if (modifiers.includes("replace") || replace2) {
9550        el.innerHTML = content;
9551      } else {
9552        el.innerHTML = el.innerHTML + content;
9553      }
9554    });
9555    cleanup2(off);
9556  });
9557  on2("request", ({ respond }) => {
9558    respond((mutableObject) => {
9559      let response = mutableObject.response;
9560      if (!response.headers.has("X-Livewire-Stream"))
9561        return;
9562      mutableObject.response = {
9563        ok: true,
9564        redirected: false,
9565        status: 200,
9566        async text() {
9567          let finalResponse = await interceptStreamAndReturnFinalResponse(response, (streamed) => {
9568            trigger2("stream", streamed);
9569          });
9570          if (contentIsFromDump(finalResponse)) {
9571            this.ok = false;
9572          }
9573          return finalResponse;
9574        }
9575      };
9576    });
9577  });
9578  async function interceptStreamAndReturnFinalResponse(response, callback) {
9579    let reader = response.body.getReader();
9580    let remainingResponse = "";
9581    while (true) {
9582      let { done, value: chunk } = await reader.read();
9583      let decoder = new TextDecoder();
9584      let output = decoder.decode(chunk);
9585      let [streams, remaining] = extractStreamObjects(remainingResponse + output);
9586      streams.forEach((stream) => {
9587        callback(stream);
9588      });
9589      remainingResponse = remaining;
9590      if (done)
9591        return remainingResponse;
9592    }
9593  }
9594  function extractStreamObjects(raw2) {
9595    let regex = /({"stream":true.*?"endStream":true})/g;
9596    let matches2 = raw2.match(regex);
9597    let parsed = [];
9598    if (matches2) {
9599      for (let i = 0; i < matches2.length; i++) {
9600        parsed.push(JSON.parse(matches2[i]).body);
9601      }
9602    }
9603    let remaining = raw2.replace(regex, "");
9604    return [parsed, remaining];
9605  }
9606
9607  
9607// js/directives/wire-replace.js
9608  directive2("replace", ({ el, directive: directive3 }) => {
9609    if (directive3.modifiers.includes("self")) {
9610      el.__livewire_replace_self = true;
9611    } else {
9612      el.__livewire_replace = true;
9613    }
9614  });
9615
9616  
9616// js/directives/wire-ignore.js
9617  directive2("ignore", ({ el, directive: directive3 }) => {
9618    if (directive3.modifiers.includes("self")) {
9619      el.__livewire_ignore_self = true;
9620    } else {
9621      el.__livewire_ignore = true;
9622    }
9623  });
9624
9625  
9625// js/directives/wire-dirty.js
9626  var refreshDirtyStatesByComponent = new WeakBag();
9627  on2("commit", ({ component, respond }) => {
9628    respond(() => {
9629      setTimeout(() => {
9630        refreshDirtyStatesByComponent.each(component, (i) => i(false));
9631      });
9632    });
9633  });
9634  directive2("dirty", ({ el, directive: directive3, component }) => {
9635    let targets = dirtyTargets(el);
9636    let dirty = Alpine.reactive({ state: false });
9637    let oldIsDirty = false;
9638    let initialDisplay = el.style.display;
9639    let refreshDirtyState = (isDirty) => {
9640      toggleBooleanStateDirective(el, directive3, isDirty, initialDisplay);
9641      oldIsDirty = isDirty;
9642    };
9643    refreshDirtyStatesByComponent.add(component, refreshDirtyState);
9644    Alpine.effect(() => {
9645      let isDirty = false;
9646      if (targets.length === 0) {
9647        isDirty = JSON.stringify(component.canonical) !== JSON.stringify(component.reactive);
9648      } else {
9649        for (let i = 0; i < targets.length; i++) {
9650          if (isDirty)
9651            break;
9652          let target = targets[i];
9653          isDirty = JSON.stringify(dataGet(component.canonical, target)) !== JSON.stringify(dataGet(component.reactive, target));
9654        }
9655      }
9656      if (oldIsDirty !== isDirty) {
9657        refreshDirtyState(isDirty);
9658      }
9659      oldIsDirty = isDirty;
9660    });
9661  });
9662  function dirtyTargets(el) {
9663    let directives2 = getDirectives(el);
9664    let targets = [];
9665    if (directives2.has("model")) {
9666      targets.push(directives2.get("model").expression);
9667    }
9668    if (directives2.has("target")) {
9669      targets = targets.concat(directives2.get("target").expression.split(",").map((s) => s.trim()));
9670    }
9671    return targets;
9672  }
9673
9674  
9674// js/directives/wire-model.js
9675  directive2("model", ({ el, directive: directive3, component, cleanup: cleanup2 }) => {
9676    let { expression, modifiers } = directive3;
9677    if (!expression) {
9678      return console.warn("Livewire: [wire:model] is missing a value.", el);
9679    }
9680    if (componentIsMissingProperty(component, expression)) {
9681      return console.warn('Livewire: [wire:model="' + expression + '"] property does not exist on component: [' + component.name + "]", el);
9682    }
9683    if (el.type && el.type.toLowerCase() === "file") {
9684      return handleFileUpload(el, expression, component, cleanup2);
9685    }
9686    let isLive = modifiers.includes("live");
9687    let isLazy = modifiers.includes("lazy") || modifiers.includes("change");
9688    let onBlur = modifiers.includes("blur");
9689    let isDebounced = modifiers.includes("debounce");
9690    let update = expression.startsWith("$parent") ? () => component.$wire.$parent.$commit() : () => component.$wire.$commit();
9691    let debouncedUpdate = isTextInput(el) && !isDebounced && isLive ? debounce2(update, 150) : update;
9692    module_default.bind(el, {
9693      ["@change"]() {
9694        isLazy && update();
9695      },
9696      ["@blur"]() {
9697        onBlur && update();
9698      },
9699      ["x-model" + getModifierTail(modifiers)]() {
9700        return {
9701          get() {
9702            return dataGet(component.$wire, expression);
9703          },
9704          set(value) {
9705            dataSet(component.$wire, expression, value);
9706            isLive && !isLazy && !onBlur && debouncedUpdate();
9707          }
9708        };
9709      }
9710    });
9711  });
9712  function getModifierTail(modifiers) {
9713    modifiers = modifiers.filter((i) => ![
9714      "lazy",
9715      "defer"
9716    ].includes(i));
9717    if (modifiers.length === 0)
9718      return "";
9719    return "." + modifiers.join(".");
9720  }
9721  function isTextInput(el) {
9722    return ["INPUT", "TEXTAREA"].includes(el.tagName.toUpperCase()) && !["checkbox", "radio"].includes(el.type);
9723  }
9724  function componentIsMissingProperty(component, property) {
9725    if (property.startsWith("$parent")) {
9726      let parent = closestComponent(component.el.parentElement, false);
9727      if (!parent)
9728        return true;
9729      return componentIsMissingProperty(parent, property.split("$parent.")[1]);
9730    }
9731    let baseProperty = property.split(".")[0];
9732    return !Object.keys(component.canonical).includes(baseProperty);
9733  }
9734  function debounce2(func, wait) {
9735    var timeout;
9736    return function() {
9737      var context = this, args = arguments;
9738      var later = function() {
9739        timeout = null;
9740        func.apply(context, args);
9741      };
9742      clearTimeout(timeout);
9743      timeout = setTimeout(later, wait);
9744    };
9745  }
9746
9747  
9747// js/directives/wire-init.js
9748  directive2("init", ({ el, directive: directive3 }) => {
9749    let fullMethod = directive3.expression ?? "$refresh";
9750    module_default.evaluate(el, `$wire.${fullMethod}`);
9751  });
9752
9753  
9753// js/directives/wire-poll.js
9754  directive2("poll", ({ el, directive: directive3 }) => {
9755    let interval = extractDurationFrom(directive3.modifiers, 2e3);
9756    let { start: start3, pauseWhile, throttleWhile, stopWhen } = poll(() => {
9757      triggerComponentRequest(el, directive3);
9758    }, interval);
9759    start3();
9760    throttleWhile(() => theTabIsInTheBackground() && theDirectiveIsMissingKeepAlive(directive3));
9761    pauseWhile(() => theDirectiveHasVisible(directive3) && theElementIsNotInTheViewport(el));
9762    pauseWhile(() => theDirectiveIsOffTheElement(el));
9763    pauseWhile(() => livewireIsOffline());
9764    stopWhen(() => theElementIsDisconnected(el));
9765  });
9766  function triggerComponentRequest(el, directive3) {
9767    module_default.evaluate(el, directive3.expression ? "$wire." + directive3.expression : "$wire.$commit()");
9768  }
9769  function poll(callback, interval = 2e3) {
9770    let pauseConditions = [];
9771    let throttleConditions = [];
9772    let stopConditions = [];
9773    return {
9774      start() {
9775        let clear2 = syncronizedInterval(interval, () => {
9776          if (stopConditions.some((i) => i()))
9777            return clear2();
9778          if (pauseConditions.some((i) => i()))
9779            return;
9780          if (throttleConditions.some((i) => i()) && Math.random() < 0.95)
9781            return;
9782          callback();
9783        });
9784      },
9785      pauseWhile(condition) {
9786        pauseConditions.push(condition);
9787      },
9788      throttleWhile(condition) {
9789        throttleConditions.push(condition);
9790      },
9791      stopWhen(condition) {
9792        stopConditions.push(condition);
9793      }
9794    };
9795  }
9796  var clocks = [];
9797  function syncronizedInterval(ms, callback) {
9798    if (!clocks[ms]) {
9799      let clock = {
9800        timer: setInterval(() => clock.callbacks.forEach((i) => i()), ms),
9801        callbacks: /* @__PURE__ */ new Set()
9802      };
9803      clocks[ms] = clock;
9804    }
9805    clocks[ms].callbacks.add(callback);
9806    return () => {
9807      clocks[ms].callbacks.delete(callback);
9808      if (clocks[ms].callbacks.size === 0) {
9809        clearInterval(clocks[ms].timer);
9810        delete clocks[ms];
9811      }
9812    };
9813  }
9814  var isOffline = false;
9815  window.addEventListener("offline", () => isOffline = true);
9816  window.addEventListener("online", () => isOffline = false);
9817  function livewireIsOffline() {
9818    return isOffline;
9819  }
9820  var inBackground = false;
9821  document.addEventListener("visibilitychange", () => {
9822    inBackground = document.hidden;
9823  }, false);
9824  function theTabIsInTheBackground() {
9825    return inBackground;
9826  }
9827  function theDirectiveIsOffTheElement(el) {
9828    return !getDirectives(el).has("poll");
9829  }
9830  function theDirectiveIsMissingKeepAlive(directive3) {
9831    return !directive3.modifiers.includes("keep-alive");
9832  }
9833  function theDirectiveHasVisible(directive3) {
9834    return directive3.modifiers.includes("visible");
9835  }
9836  function theElementIsNotInTheViewport(el) {
9837    let bounding = el.getBoundingClientRect();
9838    return !(bounding.top < (window.innerHeight || document.documentElement.clientHeight) && bounding.left < (window.innerWidth || document.documentElement.clientWidth) && bounding.bottom > 0 && bounding.right > 0);
9839  }
9840  function theElementIsDisconnected(el) {
9841    return el.isConnected === false;
9842  }
9843  function extractDurationFrom(modifiers, defaultDuration) {
9844    let durationInMilliSeconds;
9845    let durationInMilliSecondsString = modifiers.find((mod) => mod.match(/([0-9]+)ms/));
9846    let durationInSecondsString = modifiers.find((mod) => mod.match(/([0-9]+)s/));
9847    if (durationInMilliSecondsString) {
9848      durationInMilliSeconds = Number(durationInMilliSecondsString.replace("ms", ""));
9849    } else if (durationInSecondsString) {
9850      durationInMilliSeconds = Number(durationInSecondsString.replace("s", "")) * 1e3;
9851    }
9852    return durationInMilliSeconds || defaultDuration;
9853  }
9854
9855  
9855// js/index.js
9856  var Livewire2 = {
9857    directive: directive2,
9858    dispatchTo,
9859    start: start2,
9860    first,
9861    find,
9862    getByName,
9863    all,
9864    hook: on2,
9865    trigger: trigger2,
9866    triggerAsync,
9867    dispatch: dispatchGlobal,
9868    on: on3,
9869    get navigate() {
9870      return module_default.navigate;
9871    }
9872  };
9873  var warnAboutMultipleInstancesOf = (entity) => console.warn(`Detected multiple instances of ${entity} running`);
9874  if (window.Livewire)
9875    warnAboutMultipleInstancesOf("Livewire");
9876  if (window.Alpine)
9877    warnAboutMultipleInstancesOf("Alpine");
9878  window.Livewire = Livewire2;
9879  window.Alpine = module_default;
9880  if (window.livewireScriptConfig === void 0) {
9881    window.Alpine.__fromLivewire = true;
9882    document.addEventListener("DOMContentLoaded", () => {
9883      if (window.Alpine.__fromLivewire === void 0) {
9884        warnAboutMultipleInstancesOf("Alpine");
9885      }
9886      Livewire2.start();
9887    });
9888  }
9889})();
9890/* NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress
9891 * @license MIT */
9892/*! Bundled license information:
9893
9894tabbable/dist/index.esm.js:
9895  (*!
9896  * tabbable 5.3.3
9897  * @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE
9898  *)
9899
9900focus-trap/dist/focus-trap.esm.js:
9901  (*!
9902  * focus-trap 6.9.4
9903  * @license MIT, https://github.com/focus-trap/focus-trap/blob/master/LICENSE
9904  *)
9905*/

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.