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