Ei kuvausta

module.esm.js 96KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234
  1. // packages/alpinejs/src/scheduler.js
  2. var flushPending = false;
  3. var flushing = false;
  4. var queue = [];
  5. var lastFlushedIndex = -1;
  6. function scheduler(callback) {
  7. queueJob(callback);
  8. }
  9. function queueJob(job) {
  10. if (!queue.includes(job))
  11. queue.push(job);
  12. queueFlush();
  13. }
  14. function dequeueJob(job) {
  15. let index = queue.indexOf(job);
  16. if (index !== -1 && index > lastFlushedIndex)
  17. queue.splice(index, 1);
  18. }
  19. function queueFlush() {
  20. if (!flushing && !flushPending) {
  21. flushPending = true;
  22. queueMicrotask(flushJobs);
  23. }
  24. }
  25. function flushJobs() {
  26. flushPending = false;
  27. flushing = true;
  28. for (let i = 0; i < queue.length; i++) {
  29. queue[i]();
  30. lastFlushedIndex = i;
  31. }
  32. queue.length = 0;
  33. lastFlushedIndex = -1;
  34. flushing = false;
  35. }
  36. // packages/alpinejs/src/reactivity.js
  37. var reactive;
  38. var effect;
  39. var release;
  40. var raw;
  41. var shouldSchedule = true;
  42. function disableEffectScheduling(callback) {
  43. shouldSchedule = false;
  44. callback();
  45. shouldSchedule = true;
  46. }
  47. function setReactivityEngine(engine) {
  48. reactive = engine.reactive;
  49. release = engine.release;
  50. effect = (callback) => engine.effect(callback, { scheduler: (task) => {
  51. if (shouldSchedule) {
  52. scheduler(task);
  53. } else {
  54. task();
  55. }
  56. } });
  57. raw = engine.raw;
  58. }
  59. function overrideEffect(override) {
  60. effect = override;
  61. }
  62. function elementBoundEffect(el) {
  63. let cleanup2 = () => {
  64. };
  65. let wrappedEffect = (callback) => {
  66. let effectReference = effect(callback);
  67. if (!el._x_effects) {
  68. el._x_effects = /* @__PURE__ */ new Set();
  69. el._x_runEffects = () => {
  70. el._x_effects.forEach((i) => i());
  71. };
  72. }
  73. el._x_effects.add(effectReference);
  74. cleanup2 = () => {
  75. if (effectReference === void 0)
  76. return;
  77. el._x_effects.delete(effectReference);
  78. release(effectReference);
  79. };
  80. return effectReference;
  81. };
  82. return [wrappedEffect, () => {
  83. cleanup2();
  84. }];
  85. }
  86. // packages/alpinejs/src/utils/dispatch.js
  87. function dispatch(el, name, detail = {}) {
  88. el.dispatchEvent(
  89. new CustomEvent(name, {
  90. detail,
  91. bubbles: true,
  92. // Allows events to pass the shadow DOM barrier.
  93. composed: true,
  94. cancelable: true
  95. })
  96. );
  97. }
  98. // packages/alpinejs/src/utils/walk.js
  99. function walk(el, callback) {
  100. if (typeof ShadowRoot === "function" && el instanceof ShadowRoot) {
  101. Array.from(el.children).forEach((el2) => walk(el2, callback));
  102. return;
  103. }
  104. let skip = false;
  105. callback(el, () => skip = true);
  106. if (skip)
  107. return;
  108. let node = el.firstElementChild;
  109. while (node) {
  110. walk(node, callback, false);
  111. node = node.nextElementSibling;
  112. }
  113. }
  114. // packages/alpinejs/src/utils/warn.js
  115. function warn(message, ...args) {
  116. console.warn(`Alpine Warning: ${message}`, ...args);
  117. }
  118. // packages/alpinejs/src/lifecycle.js
  119. var started = false;
  120. function start() {
  121. if (started)
  122. warn("Alpine has already been initialized on this page. Calling Alpine.start() more than once can cause problems.");
  123. started = true;
  124. if (!document.body)
  125. warn("Unable to initialize. Trying to load Alpine before `<body>` is available. Did you forget to add `defer` in Alpine's `<script>` tag?");
  126. dispatch(document, "alpine:init");
  127. dispatch(document, "alpine:initializing");
  128. startObservingMutations();
  129. onElAdded((el) => initTree(el, walk));
  130. onElRemoved((el) => destroyTree(el));
  131. onAttributesAdded((el, attrs) => {
  132. directives(el, attrs).forEach((handle) => handle());
  133. });
  134. let outNestedComponents = (el) => !closestRoot(el.parentElement, true);
  135. Array.from(document.querySelectorAll(allSelectors())).filter(outNestedComponents).forEach((el) => {
  136. initTree(el);
  137. });
  138. dispatch(document, "alpine:initialized");
  139. }
  140. var rootSelectorCallbacks = [];
  141. var initSelectorCallbacks = [];
  142. function rootSelectors() {
  143. return rootSelectorCallbacks.map((fn) => fn());
  144. }
  145. function allSelectors() {
  146. return rootSelectorCallbacks.concat(initSelectorCallbacks).map((fn) => fn());
  147. }
  148. function addRootSelector(selectorCallback) {
  149. rootSelectorCallbacks.push(selectorCallback);
  150. }
  151. function addInitSelector(selectorCallback) {
  152. initSelectorCallbacks.push(selectorCallback);
  153. }
  154. function closestRoot(el, includeInitSelectors = false) {
  155. return findClosest(el, (element) => {
  156. const selectors = includeInitSelectors ? allSelectors() : rootSelectors();
  157. if (selectors.some((selector) => element.matches(selector)))
  158. return true;
  159. });
  160. }
  161. function findClosest(el, callback) {
  162. if (!el)
  163. return;
  164. if (callback(el))
  165. return el;
  166. if (el._x_teleportBack)
  167. el = el._x_teleportBack;
  168. if (!el.parentElement)
  169. return;
  170. return findClosest(el.parentElement, callback);
  171. }
  172. function isRoot(el) {
  173. return rootSelectors().some((selector) => el.matches(selector));
  174. }
  175. var initInterceptors = [];
  176. function interceptInit(callback) {
  177. initInterceptors.push(callback);
  178. }
  179. function initTree(el, walker = walk, intercept = () => {
  180. }) {
  181. deferHandlingDirectives(() => {
  182. walker(el, (el2, skip) => {
  183. intercept(el2, skip);
  184. initInterceptors.forEach((i) => i(el2, skip));
  185. directives(el2, el2.attributes).forEach((handle) => handle());
  186. el2._x_ignore && skip();
  187. });
  188. });
  189. }
  190. function destroyTree(root) {
  191. walk(root, (el) => {
  192. cleanupAttributes(el);
  193. cleanupElement(el);
  194. });
  195. }
  196. // packages/alpinejs/src/mutation.js
  197. var onAttributeAddeds = [];
  198. var onElRemoveds = [];
  199. var onElAddeds = [];
  200. function onElAdded(callback) {
  201. onElAddeds.push(callback);
  202. }
  203. function onElRemoved(el, callback) {
  204. if (typeof callback === "function") {
  205. if (!el._x_cleanups)
  206. el._x_cleanups = [];
  207. el._x_cleanups.push(callback);
  208. } else {
  209. callback = el;
  210. onElRemoveds.push(callback);
  211. }
  212. }
  213. function onAttributesAdded(callback) {
  214. onAttributeAddeds.push(callback);
  215. }
  216. function onAttributeRemoved(el, name, callback) {
  217. if (!el._x_attributeCleanups)
  218. el._x_attributeCleanups = {};
  219. if (!el._x_attributeCleanups[name])
  220. el._x_attributeCleanups[name] = [];
  221. el._x_attributeCleanups[name].push(callback);
  222. }
  223. function cleanupAttributes(el, names) {
  224. if (!el._x_attributeCleanups)
  225. return;
  226. Object.entries(el._x_attributeCleanups).forEach(([name, value]) => {
  227. if (names === void 0 || names.includes(name)) {
  228. value.forEach((i) => i());
  229. delete el._x_attributeCleanups[name];
  230. }
  231. });
  232. }
  233. function cleanupElement(el) {
  234. if (el._x_cleanups) {
  235. while (el._x_cleanups.length)
  236. el._x_cleanups.pop()();
  237. }
  238. }
  239. var observer = new MutationObserver(onMutate);
  240. var currentlyObserving = false;
  241. function startObservingMutations() {
  242. observer.observe(document, { subtree: true, childList: true, attributes: true, attributeOldValue: true });
  243. currentlyObserving = true;
  244. }
  245. function stopObservingMutations() {
  246. flushObserver();
  247. observer.disconnect();
  248. currentlyObserving = false;
  249. }
  250. var recordQueue = [];
  251. var willProcessRecordQueue = false;
  252. function flushObserver() {
  253. recordQueue = recordQueue.concat(observer.takeRecords());
  254. if (recordQueue.length && !willProcessRecordQueue) {
  255. willProcessRecordQueue = true;
  256. queueMicrotask(() => {
  257. processRecordQueue();
  258. willProcessRecordQueue = false;
  259. });
  260. }
  261. }
  262. function processRecordQueue() {
  263. onMutate(recordQueue);
  264. recordQueue.length = 0;
  265. }
  266. function mutateDom(callback) {
  267. if (!currentlyObserving)
  268. return callback();
  269. stopObservingMutations();
  270. let result = callback();
  271. startObservingMutations();
  272. return result;
  273. }
  274. var isCollecting = false;
  275. var deferredMutations = [];
  276. function deferMutations() {
  277. isCollecting = true;
  278. }
  279. function flushAndStopDeferringMutations() {
  280. isCollecting = false;
  281. onMutate(deferredMutations);
  282. deferredMutations = [];
  283. }
  284. function onMutate(mutations) {
  285. if (isCollecting) {
  286. deferredMutations = deferredMutations.concat(mutations);
  287. return;
  288. }
  289. let addedNodes = [];
  290. let removedNodes = [];
  291. let addedAttributes = /* @__PURE__ */ new Map();
  292. let removedAttributes = /* @__PURE__ */ new Map();
  293. for (let i = 0; i < mutations.length; i++) {
  294. if (mutations[i].target._x_ignoreMutationObserver)
  295. continue;
  296. if (mutations[i].type === "childList") {
  297. mutations[i].addedNodes.forEach((node) => node.nodeType === 1 && addedNodes.push(node));
  298. mutations[i].removedNodes.forEach((node) => node.nodeType === 1 && removedNodes.push(node));
  299. }
  300. if (mutations[i].type === "attributes") {
  301. let el = mutations[i].target;
  302. let name = mutations[i].attributeName;
  303. let oldValue = mutations[i].oldValue;
  304. let add2 = () => {
  305. if (!addedAttributes.has(el))
  306. addedAttributes.set(el, []);
  307. addedAttributes.get(el).push({ name, value: el.getAttribute(name) });
  308. };
  309. let remove = () => {
  310. if (!removedAttributes.has(el))
  311. removedAttributes.set(el, []);
  312. removedAttributes.get(el).push(name);
  313. };
  314. if (el.hasAttribute(name) && oldValue === null) {
  315. add2();
  316. } else if (el.hasAttribute(name)) {
  317. remove();
  318. add2();
  319. } else {
  320. remove();
  321. }
  322. }
  323. }
  324. removedAttributes.forEach((attrs, el) => {
  325. cleanupAttributes(el, attrs);
  326. });
  327. addedAttributes.forEach((attrs, el) => {
  328. onAttributeAddeds.forEach((i) => i(el, attrs));
  329. });
  330. for (let node of removedNodes) {
  331. if (addedNodes.includes(node))
  332. continue;
  333. onElRemoveds.forEach((i) => i(node));
  334. destroyTree(node);
  335. }
  336. addedNodes.forEach((node) => {
  337. node._x_ignoreSelf = true;
  338. node._x_ignore = true;
  339. });
  340. for (let node of addedNodes) {
  341. if (removedNodes.includes(node))
  342. continue;
  343. if (!node.isConnected)
  344. continue;
  345. delete node._x_ignoreSelf;
  346. delete node._x_ignore;
  347. onElAddeds.forEach((i) => i(node));
  348. node._x_ignore = true;
  349. node._x_ignoreSelf = true;
  350. }
  351. addedNodes.forEach((node) => {
  352. delete node._x_ignoreSelf;
  353. delete node._x_ignore;
  354. });
  355. addedNodes = null;
  356. removedNodes = null;
  357. addedAttributes = null;
  358. removedAttributes = null;
  359. }
  360. // packages/alpinejs/src/scope.js
  361. function scope(node) {
  362. return mergeProxies(closestDataStack(node));
  363. }
  364. function addScopeToNode(node, data2, referenceNode) {
  365. node._x_dataStack = [data2, ...closestDataStack(referenceNode || node)];
  366. return () => {
  367. node._x_dataStack = node._x_dataStack.filter((i) => i !== data2);
  368. };
  369. }
  370. function closestDataStack(node) {
  371. if (node._x_dataStack)
  372. return node._x_dataStack;
  373. if (typeof ShadowRoot === "function" && node instanceof ShadowRoot) {
  374. return closestDataStack(node.host);
  375. }
  376. if (!node.parentNode) {
  377. return [];
  378. }
  379. return closestDataStack(node.parentNode);
  380. }
  381. function mergeProxies(objects) {
  382. let thisProxy = new Proxy({}, {
  383. ownKeys: () => {
  384. return Array.from(new Set(objects.flatMap((i) => Object.keys(i))));
  385. },
  386. has: (target, name) => {
  387. return objects.some((obj) => obj.hasOwnProperty(name));
  388. },
  389. get: (target, name) => {
  390. return (objects.find((obj) => {
  391. if (obj.hasOwnProperty(name)) {
  392. let descriptor = Object.getOwnPropertyDescriptor(obj, name);
  393. if (descriptor.get && descriptor.get._x_alreadyBound || descriptor.set && descriptor.set._x_alreadyBound) {
  394. return true;
  395. }
  396. if ((descriptor.get || descriptor.set) && descriptor.enumerable) {
  397. let getter = descriptor.get;
  398. let setter = descriptor.set;
  399. let property = descriptor;
  400. getter = getter && getter.bind(thisProxy);
  401. setter = setter && setter.bind(thisProxy);
  402. if (getter)
  403. getter._x_alreadyBound = true;
  404. if (setter)
  405. setter._x_alreadyBound = true;
  406. Object.defineProperty(obj, name, {
  407. ...property,
  408. get: getter,
  409. set: setter
  410. });
  411. }
  412. return true;
  413. }
  414. return false;
  415. }) || {})[name];
  416. },
  417. set: (target, name, value) => {
  418. let closestObjectWithKey = objects.find((obj) => obj.hasOwnProperty(name));
  419. if (closestObjectWithKey) {
  420. closestObjectWithKey[name] = value;
  421. } else {
  422. objects[objects.length - 1][name] = value;
  423. }
  424. return true;
  425. }
  426. });
  427. return thisProxy;
  428. }
  429. // packages/alpinejs/src/interceptor.js
  430. function initInterceptors2(data2) {
  431. let isObject2 = (val) => typeof val === "object" && !Array.isArray(val) && val !== null;
  432. let recurse = (obj, basePath = "") => {
  433. Object.entries(Object.getOwnPropertyDescriptors(obj)).forEach(([key, { value, enumerable }]) => {
  434. if (enumerable === false || value === void 0)
  435. return;
  436. let path = basePath === "" ? key : `${basePath}.${key}`;
  437. if (typeof value === "object" && value !== null && value._x_interceptor) {
  438. obj[key] = value.initialize(data2, path, key);
  439. } else {
  440. if (isObject2(value) && value !== obj && !(value instanceof Element)) {
  441. recurse(value, path);
  442. }
  443. }
  444. });
  445. };
  446. return recurse(data2);
  447. }
  448. function interceptor(callback, mutateObj = () => {
  449. }) {
  450. let obj = {
  451. initialValue: void 0,
  452. _x_interceptor: true,
  453. initialize(data2, path, key) {
  454. return callback(this.initialValue, () => get(data2, path), (value) => set(data2, path, value), path, key);
  455. }
  456. };
  457. mutateObj(obj);
  458. return (initialValue) => {
  459. if (typeof initialValue === "object" && initialValue !== null && initialValue._x_interceptor) {
  460. let initialize = obj.initialize.bind(obj);
  461. obj.initialize = (data2, path, key) => {
  462. let innerValue = initialValue.initialize(data2, path, key);
  463. obj.initialValue = innerValue;
  464. return initialize(data2, path, key);
  465. };
  466. } else {
  467. obj.initialValue = initialValue;
  468. }
  469. return obj;
  470. };
  471. }
  472. function get(obj, path) {
  473. return path.split(".").reduce((carry, segment) => carry[segment], obj);
  474. }
  475. function set(obj, path, value) {
  476. if (typeof path === "string")
  477. path = path.split(".");
  478. if (path.length === 1)
  479. obj[path[0]] = value;
  480. else if (path.length === 0)
  481. throw error;
  482. else {
  483. if (obj[path[0]])
  484. return set(obj[path[0]], path.slice(1), value);
  485. else {
  486. obj[path[0]] = {};
  487. return set(obj[path[0]], path.slice(1), value);
  488. }
  489. }
  490. }
  491. // packages/alpinejs/src/magics.js
  492. var magics = {};
  493. function magic(name, callback) {
  494. magics[name] = callback;
  495. }
  496. function injectMagics(obj, el) {
  497. Object.entries(magics).forEach(([name, callback]) => {
  498. let memoizedUtilities = null;
  499. function getUtilities() {
  500. if (memoizedUtilities) {
  501. return memoizedUtilities;
  502. } else {
  503. let [utilities, cleanup2] = getElementBoundUtilities(el);
  504. memoizedUtilities = { interceptor, ...utilities };
  505. onElRemoved(el, cleanup2);
  506. return memoizedUtilities;
  507. }
  508. }
  509. Object.defineProperty(obj, `$${name}`, {
  510. get() {
  511. return callback(el, getUtilities());
  512. },
  513. enumerable: false
  514. });
  515. });
  516. return obj;
  517. }
  518. // packages/alpinejs/src/utils/error.js
  519. function tryCatch(el, expression, callback, ...args) {
  520. try {
  521. return callback(...args);
  522. } catch (e) {
  523. handleError(e, el, expression);
  524. }
  525. }
  526. function handleError(error2, el, expression = void 0) {
  527. Object.assign(error2, { el, expression });
  528. console.warn(`Alpine Expression Error: ${error2.message}
  529. ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
  530. setTimeout(() => {
  531. throw error2;
  532. }, 0);
  533. }
  534. // packages/alpinejs/src/evaluator.js
  535. var shouldAutoEvaluateFunctions = true;
  536. function dontAutoEvaluateFunctions(callback) {
  537. let cache = shouldAutoEvaluateFunctions;
  538. shouldAutoEvaluateFunctions = false;
  539. let result = callback();
  540. shouldAutoEvaluateFunctions = cache;
  541. return result;
  542. }
  543. function evaluate(el, expression, extras = {}) {
  544. let result;
  545. evaluateLater(el, expression)((value) => result = value, extras);
  546. return result;
  547. }
  548. function evaluateLater(...args) {
  549. return theEvaluatorFunction(...args);
  550. }
  551. var theEvaluatorFunction = normalEvaluator;
  552. function setEvaluator(newEvaluator) {
  553. theEvaluatorFunction = newEvaluator;
  554. }
  555. function normalEvaluator(el, expression) {
  556. let overriddenMagics = {};
  557. injectMagics(overriddenMagics, el);
  558. let dataStack = [overriddenMagics, ...closestDataStack(el)];
  559. let evaluator = typeof expression === "function" ? generateEvaluatorFromFunction(dataStack, expression) : generateEvaluatorFromString(dataStack, expression, el);
  560. return tryCatch.bind(null, el, expression, evaluator);
  561. }
  562. function generateEvaluatorFromFunction(dataStack, func) {
  563. return (receiver = () => {
  564. }, { scope: scope2 = {}, params = [] } = {}) => {
  565. let result = func.apply(mergeProxies([scope2, ...dataStack]), params);
  566. runIfTypeOfFunction(receiver, result);
  567. };
  568. }
  569. var evaluatorMemo = {};
  570. function generateFunctionFromString(expression, el) {
  571. if (evaluatorMemo[expression]) {
  572. return evaluatorMemo[expression];
  573. }
  574. let AsyncFunction = Object.getPrototypeOf(async function() {
  575. }).constructor;
  576. let rightSideSafeExpression = /^[\n\s]*if.*\(.*\)/.test(expression.trim()) || /^(let|const)\s/.test(expression.trim()) ? `(async()=>{ ${expression} })()` : expression;
  577. const safeAsyncFunction = () => {
  578. try {
  579. return new AsyncFunction(["__self", "scope"], `with (scope) { __self.result = ${rightSideSafeExpression} }; __self.finished = true; return __self.result;`);
  580. } catch (error2) {
  581. handleError(error2, el, expression);
  582. return Promise.resolve();
  583. }
  584. };
  585. let func = safeAsyncFunction();
  586. evaluatorMemo[expression] = func;
  587. return func;
  588. }
  589. function generateEvaluatorFromString(dataStack, expression, el) {
  590. let func = generateFunctionFromString(expression, el);
  591. return (receiver = () => {
  592. }, { scope: scope2 = {}, params = [] } = {}) => {
  593. func.result = void 0;
  594. func.finished = false;
  595. let completeScope = mergeProxies([scope2, ...dataStack]);
  596. if (typeof func === "function") {
  597. let promise = func(func, completeScope).catch((error2) => handleError(error2, el, expression));
  598. if (func.finished) {
  599. runIfTypeOfFunction(receiver, func.result, completeScope, params, el);
  600. func.result = void 0;
  601. } else {
  602. promise.then((result) => {
  603. runIfTypeOfFunction(receiver, result, completeScope, params, el);
  604. }).catch((error2) => handleError(error2, el, expression)).finally(() => func.result = void 0);
  605. }
  606. }
  607. };
  608. }
  609. function runIfTypeOfFunction(receiver, value, scope2, params, el) {
  610. if (shouldAutoEvaluateFunctions && typeof value === "function") {
  611. let result = value.apply(scope2, params);
  612. if (result instanceof Promise) {
  613. result.then((i) => runIfTypeOfFunction(receiver, i, scope2, params)).catch((error2) => handleError(error2, el, value));
  614. } else {
  615. receiver(result);
  616. }
  617. } else if (typeof value === "object" && value instanceof Promise) {
  618. value.then((i) => receiver(i));
  619. } else {
  620. receiver(value);
  621. }
  622. }
  623. // packages/alpinejs/src/directives.js
  624. var prefixAsString = "x-";
  625. function prefix(subject = "") {
  626. return prefixAsString + subject;
  627. }
  628. function setPrefix(newPrefix) {
  629. prefixAsString = newPrefix;
  630. }
  631. var directiveHandlers = {};
  632. function directive(name, callback) {
  633. directiveHandlers[name] = callback;
  634. return {
  635. before(directive2) {
  636. if (!directiveHandlers[directive2]) {
  637. console.warn(
  638. "Cannot find directive `${directive}`. `${name}` will use the default order of execution"
  639. );
  640. return;
  641. }
  642. const pos = directiveOrder.indexOf(directive2);
  643. directiveOrder.splice(pos >= 0 ? pos : directiveOrder.indexOf("DEFAULT"), 0, name);
  644. }
  645. };
  646. }
  647. function directives(el, attributes, originalAttributeOverride) {
  648. attributes = Array.from(attributes);
  649. if (el._x_virtualDirectives) {
  650. let vAttributes = Object.entries(el._x_virtualDirectives).map(([name, value]) => ({ name, value }));
  651. let staticAttributes = attributesOnly(vAttributes);
  652. vAttributes = vAttributes.map((attribute) => {
  653. if (staticAttributes.find((attr) => attr.name === attribute.name)) {
  654. return {
  655. name: `x-bind:${attribute.name}`,
  656. value: `"${attribute.value}"`
  657. };
  658. }
  659. return attribute;
  660. });
  661. attributes = attributes.concat(vAttributes);
  662. }
  663. let transformedAttributeMap = {};
  664. let directives2 = attributes.map(toTransformedAttributes((newName, oldName) => transformedAttributeMap[newName] = oldName)).filter(outNonAlpineAttributes).map(toParsedDirectives(transformedAttributeMap, originalAttributeOverride)).sort(byPriority);
  665. return directives2.map((directive2) => {
  666. return getDirectiveHandler(el, directive2);
  667. });
  668. }
  669. function attributesOnly(attributes) {
  670. return Array.from(attributes).map(toTransformedAttributes()).filter((attr) => !outNonAlpineAttributes(attr));
  671. }
  672. var isDeferringHandlers = false;
  673. var directiveHandlerStacks = /* @__PURE__ */ new Map();
  674. var currentHandlerStackKey = Symbol();
  675. function deferHandlingDirectives(callback) {
  676. isDeferringHandlers = true;
  677. let key = Symbol();
  678. currentHandlerStackKey = key;
  679. directiveHandlerStacks.set(key, []);
  680. let flushHandlers = () => {
  681. while (directiveHandlerStacks.get(key).length)
  682. directiveHandlerStacks.get(key).shift()();
  683. directiveHandlerStacks.delete(key);
  684. };
  685. let stopDeferring = () => {
  686. isDeferringHandlers = false;
  687. flushHandlers();
  688. };
  689. callback(flushHandlers);
  690. stopDeferring();
  691. }
  692. function getElementBoundUtilities(el) {
  693. let cleanups = [];
  694. let cleanup2 = (callback) => cleanups.push(callback);
  695. let [effect3, cleanupEffect] = elementBoundEffect(el);
  696. cleanups.push(cleanupEffect);
  697. let utilities = {
  698. Alpine: alpine_default,
  699. effect: effect3,
  700. cleanup: cleanup2,
  701. evaluateLater: evaluateLater.bind(evaluateLater, el),
  702. evaluate: evaluate.bind(evaluate, el)
  703. };
  704. let doCleanup = () => cleanups.forEach((i) => i());
  705. return [utilities, doCleanup];
  706. }
  707. function getDirectiveHandler(el, directive2) {
  708. let noop = () => {
  709. };
  710. let handler4 = directiveHandlers[directive2.type] || noop;
  711. let [utilities, cleanup2] = getElementBoundUtilities(el);
  712. onAttributeRemoved(el, directive2.original, cleanup2);
  713. let fullHandler = () => {
  714. if (el._x_ignore || el._x_ignoreSelf)
  715. return;
  716. handler4.inline && handler4.inline(el, directive2, utilities);
  717. handler4 = handler4.bind(handler4, el, directive2, utilities);
  718. isDeferringHandlers ? directiveHandlerStacks.get(currentHandlerStackKey).push(handler4) : handler4();
  719. };
  720. fullHandler.runCleanups = cleanup2;
  721. return fullHandler;
  722. }
  723. var startingWith = (subject, replacement) => ({ name, value }) => {
  724. if (name.startsWith(subject))
  725. name = name.replace(subject, replacement);
  726. return { name, value };
  727. };
  728. var into = (i) => i;
  729. function toTransformedAttributes(callback = () => {
  730. }) {
  731. return ({ name, value }) => {
  732. let { name: newName, value: newValue } = attributeTransformers.reduce((carry, transform) => {
  733. return transform(carry);
  734. }, { name, value });
  735. if (newName !== name)
  736. callback(newName, name);
  737. return { name: newName, value: newValue };
  738. };
  739. }
  740. var attributeTransformers = [];
  741. function mapAttributes(callback) {
  742. attributeTransformers.push(callback);
  743. }
  744. function outNonAlpineAttributes({ name }) {
  745. return alpineAttributeRegex().test(name);
  746. }
  747. var alpineAttributeRegex = () => new RegExp(`^${prefixAsString}([^:^.]+)\\b`);
  748. function toParsedDirectives(transformedAttributeMap, originalAttributeOverride) {
  749. return ({ name, value }) => {
  750. let typeMatch = name.match(alpineAttributeRegex());
  751. let valueMatch = name.match(/:([a-zA-Z0-9\-:]+)/);
  752. let modifiers = name.match(/\.[^.\]]+(?=[^\]]*$)/g) || [];
  753. let original = originalAttributeOverride || transformedAttributeMap[name] || name;
  754. return {
  755. type: typeMatch ? typeMatch[1] : null,
  756. value: valueMatch ? valueMatch[1] : null,
  757. modifiers: modifiers.map((i) => i.replace(".", "")),
  758. expression: value,
  759. original
  760. };
  761. };
  762. }
  763. var DEFAULT = "DEFAULT";
  764. var directiveOrder = [
  765. "ignore",
  766. "ref",
  767. "data",
  768. "id",
  769. "bind",
  770. "init",
  771. "for",
  772. "model",
  773. "modelable",
  774. "transition",
  775. "show",
  776. "if",
  777. DEFAULT,
  778. "teleport"
  779. ];
  780. function byPriority(a, b) {
  781. let typeA = directiveOrder.indexOf(a.type) === -1 ? DEFAULT : a.type;
  782. let typeB = directiveOrder.indexOf(b.type) === -1 ? DEFAULT : b.type;
  783. return directiveOrder.indexOf(typeA) - directiveOrder.indexOf(typeB);
  784. }
  785. // packages/alpinejs/src/nextTick.js
  786. var tickStack = [];
  787. var isHolding = false;
  788. function nextTick(callback = () => {
  789. }) {
  790. queueMicrotask(() => {
  791. isHolding || setTimeout(() => {
  792. releaseNextTicks();
  793. });
  794. });
  795. return new Promise((res) => {
  796. tickStack.push(() => {
  797. callback();
  798. res();
  799. });
  800. });
  801. }
  802. function releaseNextTicks() {
  803. isHolding = false;
  804. while (tickStack.length)
  805. tickStack.shift()();
  806. }
  807. function holdNextTicks() {
  808. isHolding = true;
  809. }
  810. // packages/alpinejs/src/utils/classes.js
  811. function setClasses(el, value) {
  812. if (Array.isArray(value)) {
  813. return setClassesFromString(el, value.join(" "));
  814. } else if (typeof value === "object" && value !== null) {
  815. return setClassesFromObject(el, value);
  816. } else if (typeof value === "function") {
  817. return setClasses(el, value());
  818. }
  819. return setClassesFromString(el, value);
  820. }
  821. function setClassesFromString(el, classString) {
  822. let split = (classString2) => classString2.split(" ").filter(Boolean);
  823. let missingClasses = (classString2) => classString2.split(" ").filter((i) => !el.classList.contains(i)).filter(Boolean);
  824. let addClassesAndReturnUndo = (classes) => {
  825. el.classList.add(...classes);
  826. return () => {
  827. el.classList.remove(...classes);
  828. };
  829. };
  830. classString = classString === true ? classString = "" : classString || "";
  831. return addClassesAndReturnUndo(missingClasses(classString));
  832. }
  833. function setClassesFromObject(el, classObject) {
  834. let split = (classString) => classString.split(" ").filter(Boolean);
  835. let forAdd = Object.entries(classObject).flatMap(([classString, bool]) => bool ? split(classString) : false).filter(Boolean);
  836. let forRemove = Object.entries(classObject).flatMap(([classString, bool]) => !bool ? split(classString) : false).filter(Boolean);
  837. let added = [];
  838. let removed = [];
  839. forRemove.forEach((i) => {
  840. if (el.classList.contains(i)) {
  841. el.classList.remove(i);
  842. removed.push(i);
  843. }
  844. });
  845. forAdd.forEach((i) => {
  846. if (!el.classList.contains(i)) {
  847. el.classList.add(i);
  848. added.push(i);
  849. }
  850. });
  851. return () => {
  852. removed.forEach((i) => el.classList.add(i));
  853. added.forEach((i) => el.classList.remove(i));
  854. };
  855. }
  856. // packages/alpinejs/src/utils/styles.js
  857. function setStyles(el, value) {
  858. if (typeof value === "object" && value !== null) {
  859. return setStylesFromObject(el, value);
  860. }
  861. return setStylesFromString(el, value);
  862. }
  863. function setStylesFromObject(el, value) {
  864. let previousStyles = {};
  865. Object.entries(value).forEach(([key, value2]) => {
  866. previousStyles[key] = el.style[key];
  867. if (!key.startsWith("--")) {
  868. key = kebabCase(key);
  869. }
  870. el.style.setProperty(key, value2);
  871. });
  872. setTimeout(() => {
  873. if (el.style.length === 0) {
  874. el.removeAttribute("style");
  875. }
  876. });
  877. return () => {
  878. setStyles(el, previousStyles);
  879. };
  880. }
  881. function setStylesFromString(el, value) {
  882. let cache = el.getAttribute("style", value);
  883. el.setAttribute("style", value);
  884. return () => {
  885. el.setAttribute("style", cache || "");
  886. };
  887. }
  888. function kebabCase(subject) {
  889. return subject.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase();
  890. }
  891. // packages/alpinejs/src/utils/once.js
  892. function once(callback, fallback = () => {
  893. }) {
  894. let called = false;
  895. return function() {
  896. if (!called) {
  897. called = true;
  898. callback.apply(this, arguments);
  899. } else {
  900. fallback.apply(this, arguments);
  901. }
  902. };
  903. }
  904. // packages/alpinejs/src/directives/x-transition.js
  905. directive("transition", (el, { value, modifiers, expression }, { evaluate: evaluate2 }) => {
  906. if (typeof expression === "function")
  907. expression = evaluate2(expression);
  908. if (expression === false)
  909. return;
  910. if (!expression || typeof expression === "boolean") {
  911. registerTransitionsFromHelper(el, modifiers, value);
  912. } else {
  913. registerTransitionsFromClassString(el, expression, value);
  914. }
  915. });
  916. function registerTransitionsFromClassString(el, classString, stage) {
  917. registerTransitionObject(el, setClasses, "");
  918. let directiveStorageMap = {
  919. "enter": (classes) => {
  920. el._x_transition.enter.during = classes;
  921. },
  922. "enter-start": (classes) => {
  923. el._x_transition.enter.start = classes;
  924. },
  925. "enter-end": (classes) => {
  926. el._x_transition.enter.end = classes;
  927. },
  928. "leave": (classes) => {
  929. el._x_transition.leave.during = classes;
  930. },
  931. "leave-start": (classes) => {
  932. el._x_transition.leave.start = classes;
  933. },
  934. "leave-end": (classes) => {
  935. el._x_transition.leave.end = classes;
  936. }
  937. };
  938. directiveStorageMap[stage](classString);
  939. }
  940. function registerTransitionsFromHelper(el, modifiers, stage) {
  941. registerTransitionObject(el, setStyles);
  942. let doesntSpecify = !modifiers.includes("in") && !modifiers.includes("out") && !stage;
  943. let transitioningIn = doesntSpecify || modifiers.includes("in") || ["enter"].includes(stage);
  944. let transitioningOut = doesntSpecify || modifiers.includes("out") || ["leave"].includes(stage);
  945. if (modifiers.includes("in") && !doesntSpecify) {
  946. modifiers = modifiers.filter((i, index) => index < modifiers.indexOf("out"));
  947. }
  948. if (modifiers.includes("out") && !doesntSpecify) {
  949. modifiers = modifiers.filter((i, index) => index > modifiers.indexOf("out"));
  950. }
  951. let wantsAll = !modifiers.includes("opacity") && !modifiers.includes("scale");
  952. let wantsOpacity = wantsAll || modifiers.includes("opacity");
  953. let wantsScale = wantsAll || modifiers.includes("scale");
  954. let opacityValue = wantsOpacity ? 0 : 1;
  955. let scaleValue = wantsScale ? modifierValue(modifiers, "scale", 95) / 100 : 1;
  956. let delay = modifierValue(modifiers, "delay", 0) / 1e3;
  957. let origin = modifierValue(modifiers, "origin", "center");
  958. let property = "opacity, transform";
  959. let durationIn = modifierValue(modifiers, "duration", 150) / 1e3;
  960. let durationOut = modifierValue(modifiers, "duration", 75) / 1e3;
  961. let easing = `cubic-bezier(0.4, 0.0, 0.2, 1)`;
  962. if (transitioningIn) {
  963. el._x_transition.enter.during = {
  964. transformOrigin: origin,
  965. transitionDelay: `${delay}s`,
  966. transitionProperty: property,
  967. transitionDuration: `${durationIn}s`,
  968. transitionTimingFunction: easing
  969. };
  970. el._x_transition.enter.start = {
  971. opacity: opacityValue,
  972. transform: `scale(${scaleValue})`
  973. };
  974. el._x_transition.enter.end = {
  975. opacity: 1,
  976. transform: `scale(1)`
  977. };
  978. }
  979. if (transitioningOut) {
  980. el._x_transition.leave.during = {
  981. transformOrigin: origin,
  982. transitionDelay: `${delay}s`,
  983. transitionProperty: property,
  984. transitionDuration: `${durationOut}s`,
  985. transitionTimingFunction: easing
  986. };
  987. el._x_transition.leave.start = {
  988. opacity: 1,
  989. transform: `scale(1)`
  990. };
  991. el._x_transition.leave.end = {
  992. opacity: opacityValue,
  993. transform: `scale(${scaleValue})`
  994. };
  995. }
  996. }
  997. function registerTransitionObject(el, setFunction, defaultValue = {}) {
  998. if (!el._x_transition)
  999. el._x_transition = {
  1000. enter: { during: defaultValue, start: defaultValue, end: defaultValue },
  1001. leave: { during: defaultValue, start: defaultValue, end: defaultValue },
  1002. in(before = () => {
  1003. }, after = () => {
  1004. }) {
  1005. transition(el, setFunction, {
  1006. during: this.enter.during,
  1007. start: this.enter.start,
  1008. end: this.enter.end
  1009. }, before, after);
  1010. },
  1011. out(before = () => {
  1012. }, after = () => {
  1013. }) {
  1014. transition(el, setFunction, {
  1015. during: this.leave.during,
  1016. start: this.leave.start,
  1017. end: this.leave.end
  1018. }, before, after);
  1019. }
  1020. };
  1021. }
  1022. window.Element.prototype._x_toggleAndCascadeWithTransitions = function(el, value, show, hide) {
  1023. const nextTick2 = document.visibilityState === "visible" ? requestAnimationFrame : setTimeout;
  1024. let clickAwayCompatibleShow = () => nextTick2(show);
  1025. if (value) {
  1026. if (el._x_transition && (el._x_transition.enter || el._x_transition.leave)) {
  1027. 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();
  1028. } else {
  1029. el._x_transition ? el._x_transition.in(show) : clickAwayCompatibleShow();
  1030. }
  1031. return;
  1032. }
  1033. el._x_hidePromise = el._x_transition ? new Promise((resolve, reject) => {
  1034. el._x_transition.out(() => {
  1035. }, () => resolve(hide));
  1036. el._x_transitioning.beforeCancel(() => reject({ isFromCancelledTransition: true }));
  1037. }) : Promise.resolve(hide);
  1038. queueMicrotask(() => {
  1039. let closest = closestHide(el);
  1040. if (closest) {
  1041. if (!closest._x_hideChildren)
  1042. closest._x_hideChildren = [];
  1043. closest._x_hideChildren.push(el);
  1044. } else {
  1045. nextTick2(() => {
  1046. let hideAfterChildren = (el2) => {
  1047. let carry = Promise.all([
  1048. el2._x_hidePromise,
  1049. ...(el2._x_hideChildren || []).map(hideAfterChildren)
  1050. ]).then(([i]) => i());
  1051. delete el2._x_hidePromise;
  1052. delete el2._x_hideChildren;
  1053. return carry;
  1054. };
  1055. hideAfterChildren(el).catch((e) => {
  1056. if (!e.isFromCancelledTransition)
  1057. throw e;
  1058. });
  1059. });
  1060. }
  1061. });
  1062. };
  1063. function closestHide(el) {
  1064. let parent = el.parentNode;
  1065. if (!parent)
  1066. return;
  1067. return parent._x_hidePromise ? parent : closestHide(parent);
  1068. }
  1069. function transition(el, setFunction, { during, start: start2, end } = {}, before = () => {
  1070. }, after = () => {
  1071. }) {
  1072. if (el._x_transitioning)
  1073. el._x_transitioning.cancel();
  1074. if (Object.keys(during).length === 0 && Object.keys(start2).length === 0 && Object.keys(end).length === 0) {
  1075. before();
  1076. after();
  1077. return;
  1078. }
  1079. let undoStart, undoDuring, undoEnd;
  1080. performTransition(el, {
  1081. start() {
  1082. undoStart = setFunction(el, start2);
  1083. },
  1084. during() {
  1085. undoDuring = setFunction(el, during);
  1086. },
  1087. before,
  1088. end() {
  1089. undoStart();
  1090. undoEnd = setFunction(el, end);
  1091. },
  1092. after,
  1093. cleanup() {
  1094. undoDuring();
  1095. undoEnd();
  1096. }
  1097. });
  1098. }
  1099. function performTransition(el, stages) {
  1100. let interrupted, reachedBefore, reachedEnd;
  1101. let finish = once(() => {
  1102. mutateDom(() => {
  1103. interrupted = true;
  1104. if (!reachedBefore)
  1105. stages.before();
  1106. if (!reachedEnd) {
  1107. stages.end();
  1108. releaseNextTicks();
  1109. }
  1110. stages.after();
  1111. if (el.isConnected)
  1112. stages.cleanup();
  1113. delete el._x_transitioning;
  1114. });
  1115. });
  1116. el._x_transitioning = {
  1117. beforeCancels: [],
  1118. beforeCancel(callback) {
  1119. this.beforeCancels.push(callback);
  1120. },
  1121. cancel: once(function() {
  1122. while (this.beforeCancels.length) {
  1123. this.beforeCancels.shift()();
  1124. }
  1125. ;
  1126. finish();
  1127. }),
  1128. finish
  1129. };
  1130. mutateDom(() => {
  1131. stages.start();
  1132. stages.during();
  1133. });
  1134. holdNextTicks();
  1135. requestAnimationFrame(() => {
  1136. if (interrupted)
  1137. return;
  1138. let duration = Number(getComputedStyle(el).transitionDuration.replace(/,.*/, "").replace("s", "")) * 1e3;
  1139. let delay = Number(getComputedStyle(el).transitionDelay.replace(/,.*/, "").replace("s", "")) * 1e3;
  1140. if (duration === 0)
  1141. duration = Number(getComputedStyle(el).animationDuration.replace("s", "")) * 1e3;
  1142. mutateDom(() => {
  1143. stages.before();
  1144. });
  1145. reachedBefore = true;
  1146. requestAnimationFrame(() => {
  1147. if (interrupted)
  1148. return;
  1149. mutateDom(() => {
  1150. stages.end();
  1151. });
  1152. releaseNextTicks();
  1153. setTimeout(el._x_transitioning.finish, duration + delay);
  1154. reachedEnd = true;
  1155. });
  1156. });
  1157. }
  1158. function modifierValue(modifiers, key, fallback) {
  1159. if (modifiers.indexOf(key) === -1)
  1160. return fallback;
  1161. const rawValue = modifiers[modifiers.indexOf(key) + 1];
  1162. if (!rawValue)
  1163. return fallback;
  1164. if (key === "scale") {
  1165. if (isNaN(rawValue))
  1166. return fallback;
  1167. }
  1168. if (key === "duration" || key === "delay") {
  1169. let match = rawValue.match(/([0-9]+)ms/);
  1170. if (match)
  1171. return match[1];
  1172. }
  1173. if (key === "origin") {
  1174. if (["top", "right", "left", "center", "bottom"].includes(modifiers[modifiers.indexOf(key) + 2])) {
  1175. return [rawValue, modifiers[modifiers.indexOf(key) + 2]].join(" ");
  1176. }
  1177. }
  1178. return rawValue;
  1179. }
  1180. // packages/alpinejs/src/clone.js
  1181. var isCloning = false;
  1182. function skipDuringClone(callback, fallback = () => {
  1183. }) {
  1184. return (...args) => isCloning ? fallback(...args) : callback(...args);
  1185. }
  1186. function onlyDuringClone(callback) {
  1187. return (...args) => isCloning && callback(...args);
  1188. }
  1189. function cloneNode(from, to) {
  1190. if (from._x_dataStack) {
  1191. to._x_dataStack = from._x_dataStack;
  1192. to.setAttribute("data-has-alpine-state", true);
  1193. }
  1194. isCloning = true;
  1195. dontRegisterReactiveSideEffects(() => {
  1196. initTree(to, (el, callback) => {
  1197. callback(el, () => {
  1198. });
  1199. });
  1200. });
  1201. isCloning = false;
  1202. }
  1203. var isCloningLegacy = false;
  1204. function clone(oldEl, newEl) {
  1205. if (!newEl._x_dataStack)
  1206. newEl._x_dataStack = oldEl._x_dataStack;
  1207. isCloning = true;
  1208. isCloningLegacy = true;
  1209. dontRegisterReactiveSideEffects(() => {
  1210. cloneTree(newEl);
  1211. });
  1212. isCloning = false;
  1213. isCloningLegacy = false;
  1214. }
  1215. function cloneTree(el) {
  1216. let hasRunThroughFirstEl = false;
  1217. let shallowWalker = (el2, callback) => {
  1218. walk(el2, (el3, skip) => {
  1219. if (hasRunThroughFirstEl && isRoot(el3))
  1220. return skip();
  1221. hasRunThroughFirstEl = true;
  1222. callback(el3, skip);
  1223. });
  1224. };
  1225. initTree(el, shallowWalker);
  1226. }
  1227. function dontRegisterReactiveSideEffects(callback) {
  1228. let cache = effect;
  1229. overrideEffect((callback2, el) => {
  1230. let storedEffect = cache(callback2);
  1231. release(storedEffect);
  1232. return () => {
  1233. };
  1234. });
  1235. callback();
  1236. overrideEffect(cache);
  1237. }
  1238. function shouldSkipRegisteringDataDuringClone(el) {
  1239. if (!isCloning)
  1240. return false;
  1241. if (isCloningLegacy)
  1242. return true;
  1243. return el.hasAttribute("data-has-alpine-state");
  1244. }
  1245. // packages/alpinejs/src/utils/bind.js
  1246. function bind(el, name, value, modifiers = []) {
  1247. if (!el._x_bindings)
  1248. el._x_bindings = reactive({});
  1249. el._x_bindings[name] = value;
  1250. name = modifiers.includes("camel") ? camelCase(name) : name;
  1251. switch (name) {
  1252. case "value":
  1253. bindInputValue(el, value);
  1254. break;
  1255. case "style":
  1256. bindStyles(el, value);
  1257. break;
  1258. case "class":
  1259. bindClasses(el, value);
  1260. break;
  1261. case "selected":
  1262. case "checked":
  1263. bindAttributeAndProperty(el, name, value);
  1264. break;
  1265. default:
  1266. bindAttribute(el, name, value);
  1267. break;
  1268. }
  1269. }
  1270. function bindInputValue(el, value) {
  1271. if (el.type === "radio") {
  1272. if (el.attributes.value === void 0) {
  1273. el.value = value;
  1274. }
  1275. if (window.fromModel) {
  1276. el.checked = checkedAttrLooseCompare(el.value, value);
  1277. }
  1278. } else if (el.type === "checkbox") {
  1279. if (Number.isInteger(value)) {
  1280. el.value = value;
  1281. } else if (!Array.isArray(value) && typeof value !== "boolean" && ![null, void 0].includes(value)) {
  1282. el.value = String(value);
  1283. } else {
  1284. if (Array.isArray(value)) {
  1285. el.checked = value.some((val) => checkedAttrLooseCompare(val, el.value));
  1286. } else {
  1287. el.checked = !!value;
  1288. }
  1289. }
  1290. } else if (el.tagName === "SELECT") {
  1291. updateSelect(el, value);
  1292. } else {
  1293. if (el.value === value)
  1294. return;
  1295. el.value = value === void 0 ? "" : value;
  1296. }
  1297. }
  1298. function bindClasses(el, value) {
  1299. if (el._x_undoAddedClasses)
  1300. el._x_undoAddedClasses();
  1301. el._x_undoAddedClasses = setClasses(el, value);
  1302. }
  1303. function bindStyles(el, value) {
  1304. if (el._x_undoAddedStyles)
  1305. el._x_undoAddedStyles();
  1306. el._x_undoAddedStyles = setStyles(el, value);
  1307. }
  1308. function bindAttributeAndProperty(el, name, value) {
  1309. bindAttribute(el, name, value);
  1310. setPropertyIfChanged(el, name, value);
  1311. }
  1312. function bindAttribute(el, name, value) {
  1313. if ([null, void 0, false].includes(value) && attributeShouldntBePreservedIfFalsy(name)) {
  1314. el.removeAttribute(name);
  1315. } else {
  1316. if (isBooleanAttr(name))
  1317. value = name;
  1318. setIfChanged(el, name, value);
  1319. }
  1320. }
  1321. function setIfChanged(el, attrName, value) {
  1322. if (el.getAttribute(attrName) != value) {
  1323. el.setAttribute(attrName, value);
  1324. }
  1325. }
  1326. function setPropertyIfChanged(el, propName, value) {
  1327. if (el[propName] !== value) {
  1328. el[propName] = value;
  1329. }
  1330. }
  1331. function updateSelect(el, value) {
  1332. const arrayWrappedValue = [].concat(value).map((value2) => {
  1333. return value2 + "";
  1334. });
  1335. Array.from(el.options).forEach((option) => {
  1336. option.selected = arrayWrappedValue.includes(option.value);
  1337. });
  1338. }
  1339. function camelCase(subject) {
  1340. return subject.toLowerCase().replace(/-(\w)/g, (match, char) => char.toUpperCase());
  1341. }
  1342. function checkedAttrLooseCompare(valueA, valueB) {
  1343. return valueA == valueB;
  1344. }
  1345. function isBooleanAttr(attrName) {
  1346. const booleanAttributes = [
  1347. "disabled",
  1348. "checked",
  1349. "required",
  1350. "readonly",
  1351. "hidden",
  1352. "open",
  1353. "selected",
  1354. "autofocus",
  1355. "itemscope",
  1356. "multiple",
  1357. "novalidate",
  1358. "allowfullscreen",
  1359. "allowpaymentrequest",
  1360. "formnovalidate",
  1361. "autoplay",
  1362. "controls",
  1363. "loop",
  1364. "muted",
  1365. "playsinline",
  1366. "default",
  1367. "ismap",
  1368. "reversed",
  1369. "async",
  1370. "defer",
  1371. "nomodule"
  1372. ];
  1373. return booleanAttributes.includes(attrName);
  1374. }
  1375. function attributeShouldntBePreservedIfFalsy(name) {
  1376. return !["aria-pressed", "aria-checked", "aria-expanded", "aria-selected"].includes(name);
  1377. }
  1378. function getBinding(el, name, fallback) {
  1379. if (el._x_bindings && el._x_bindings[name] !== void 0)
  1380. return el._x_bindings[name];
  1381. return getAttributeBinding(el, name, fallback);
  1382. }
  1383. function extractProp(el, name, fallback, extract = true) {
  1384. if (el._x_bindings && el._x_bindings[name] !== void 0)
  1385. return el._x_bindings[name];
  1386. if (el._x_inlineBindings && el._x_inlineBindings[name] !== void 0) {
  1387. let binding = el._x_inlineBindings[name];
  1388. binding.extract = extract;
  1389. return dontAutoEvaluateFunctions(() => {
  1390. return evaluate(el, binding.expression);
  1391. });
  1392. }
  1393. return getAttributeBinding(el, name, fallback);
  1394. }
  1395. function getAttributeBinding(el, name, fallback) {
  1396. let attr = el.getAttribute(name);
  1397. if (attr === null)
  1398. return typeof fallback === "function" ? fallback() : fallback;
  1399. if (attr === "")
  1400. return true;
  1401. if (isBooleanAttr(name)) {
  1402. return !![name, "true"].includes(attr);
  1403. }
  1404. return attr;
  1405. }
  1406. // packages/alpinejs/src/utils/debounce.js
  1407. function debounce(func, wait) {
  1408. var timeout;
  1409. return function() {
  1410. var context = this, args = arguments;
  1411. var later = function() {
  1412. timeout = null;
  1413. func.apply(context, args);
  1414. };
  1415. clearTimeout(timeout);
  1416. timeout = setTimeout(later, wait);
  1417. };
  1418. }
  1419. // packages/alpinejs/src/utils/throttle.js
  1420. function throttle(func, limit) {
  1421. let inThrottle;
  1422. return function() {
  1423. let context = this, args = arguments;
  1424. if (!inThrottle) {
  1425. func.apply(context, args);
  1426. inThrottle = true;
  1427. setTimeout(() => inThrottle = false, limit);
  1428. }
  1429. };
  1430. }
  1431. // packages/alpinejs/src/entangle.js
  1432. function entangle({ get: outerGet, set: outerSet }, { get: innerGet, set: innerSet }) {
  1433. let firstRun = true;
  1434. let outerHash, innerHash, outerHashLatest, innerHashLatest;
  1435. let reference = effect(() => {
  1436. let outer, inner;
  1437. if (firstRun) {
  1438. outer = outerGet();
  1439. innerSet(JSON.parse(JSON.stringify(outer)));
  1440. inner = innerGet();
  1441. firstRun = false;
  1442. } else {
  1443. outer = outerGet();
  1444. inner = innerGet();
  1445. outerHashLatest = JSON.stringify(outer);
  1446. innerHashLatest = JSON.stringify(inner);
  1447. if (outerHashLatest !== outerHash) {
  1448. inner = innerGet();
  1449. innerSet(outer);
  1450. inner = outer;
  1451. } else {
  1452. outerSet(JSON.parse(innerHashLatest ?? null));
  1453. outer = inner;
  1454. }
  1455. }
  1456. outerHash = JSON.stringify(outer);
  1457. innerHash = JSON.stringify(inner);
  1458. });
  1459. return () => {
  1460. release(reference);
  1461. };
  1462. }
  1463. // packages/alpinejs/src/plugin.js
  1464. function plugin(callback) {
  1465. let callbacks = Array.isArray(callback) ? callback : [callback];
  1466. callbacks.forEach((i) => i(alpine_default));
  1467. }
  1468. // packages/alpinejs/src/store.js
  1469. var stores = {};
  1470. var isReactive = false;
  1471. function store(name, value) {
  1472. if (!isReactive) {
  1473. stores = reactive(stores);
  1474. isReactive = true;
  1475. }
  1476. if (value === void 0) {
  1477. return stores[name];
  1478. }
  1479. stores[name] = value;
  1480. if (typeof value === "object" && value !== null && value.hasOwnProperty("init") && typeof value.init === "function") {
  1481. stores[name].init();
  1482. }
  1483. initInterceptors2(stores[name]);
  1484. }
  1485. function getStores() {
  1486. return stores;
  1487. }
  1488. // packages/alpinejs/src/binds.js
  1489. var binds = {};
  1490. function bind2(name, bindings) {
  1491. let getBindings = typeof bindings !== "function" ? () => bindings : bindings;
  1492. if (name instanceof Element) {
  1493. return applyBindingsObject(name, getBindings());
  1494. } else {
  1495. binds[name] = getBindings;
  1496. }
  1497. return () => {
  1498. };
  1499. }
  1500. function injectBindingProviders(obj) {
  1501. Object.entries(binds).forEach(([name, callback]) => {
  1502. Object.defineProperty(obj, name, {
  1503. get() {
  1504. return (...args) => {
  1505. return callback(...args);
  1506. };
  1507. }
  1508. });
  1509. });
  1510. return obj;
  1511. }
  1512. function applyBindingsObject(el, obj, original) {
  1513. let cleanupRunners = [];
  1514. while (cleanupRunners.length)
  1515. cleanupRunners.pop()();
  1516. let attributes = Object.entries(obj).map(([name, value]) => ({ name, value }));
  1517. let staticAttributes = attributesOnly(attributes);
  1518. attributes = attributes.map((attribute) => {
  1519. if (staticAttributes.find((attr) => attr.name === attribute.name)) {
  1520. return {
  1521. name: `x-bind:${attribute.name}`,
  1522. value: `"${attribute.value}"`
  1523. };
  1524. }
  1525. return attribute;
  1526. });
  1527. directives(el, attributes, original).map((handle) => {
  1528. cleanupRunners.push(handle.runCleanups);
  1529. handle();
  1530. });
  1531. return () => {
  1532. while (cleanupRunners.length)
  1533. cleanupRunners.pop()();
  1534. };
  1535. }
  1536. // packages/alpinejs/src/datas.js
  1537. var datas = {};
  1538. function data(name, callback) {
  1539. datas[name] = callback;
  1540. }
  1541. function injectDataProviders(obj, context) {
  1542. Object.entries(datas).forEach(([name, callback]) => {
  1543. Object.defineProperty(obj, name, {
  1544. get() {
  1545. return (...args) => {
  1546. return callback.bind(context)(...args);
  1547. };
  1548. },
  1549. enumerable: false
  1550. });
  1551. });
  1552. return obj;
  1553. }
  1554. // packages/alpinejs/src/alpine.js
  1555. var Alpine = {
  1556. get reactive() {
  1557. return reactive;
  1558. },
  1559. get release() {
  1560. return release;
  1561. },
  1562. get effect() {
  1563. return effect;
  1564. },
  1565. get raw() {
  1566. return raw;
  1567. },
  1568. version: "3.13.0",
  1569. flushAndStopDeferringMutations,
  1570. dontAutoEvaluateFunctions,
  1571. disableEffectScheduling,
  1572. startObservingMutations,
  1573. stopObservingMutations,
  1574. setReactivityEngine,
  1575. onAttributeRemoved,
  1576. onAttributesAdded,
  1577. closestDataStack,
  1578. skipDuringClone,
  1579. onlyDuringClone,
  1580. addRootSelector,
  1581. addInitSelector,
  1582. addScopeToNode,
  1583. deferMutations,
  1584. mapAttributes,
  1585. evaluateLater,
  1586. interceptInit,
  1587. setEvaluator,
  1588. mergeProxies,
  1589. extractProp,
  1590. findClosest,
  1591. onElRemoved,
  1592. closestRoot,
  1593. destroyTree,
  1594. interceptor,
  1595. // INTERNAL: not public API and is subject to change without major release.
  1596. transition,
  1597. // INTERNAL
  1598. setStyles,
  1599. // INTERNAL
  1600. mutateDom,
  1601. directive,
  1602. entangle,
  1603. throttle,
  1604. debounce,
  1605. evaluate,
  1606. initTree,
  1607. nextTick,
  1608. prefixed: prefix,
  1609. prefix: setPrefix,
  1610. plugin,
  1611. magic,
  1612. store,
  1613. start,
  1614. clone,
  1615. // INTERNAL
  1616. cloneNode,
  1617. // INTERNAL
  1618. bound: getBinding,
  1619. $data: scope,
  1620. walk,
  1621. data,
  1622. bind: bind2
  1623. };
  1624. var alpine_default = Alpine;
  1625. // node_modules/@vue/shared/dist/shared.esm-bundler.js
  1626. function makeMap(str, expectsLowerCase) {
  1627. const map = /* @__PURE__ */ Object.create(null);
  1628. const list = str.split(",");
  1629. for (let i = 0; i < list.length; i++) {
  1630. map[list[i]] = true;
  1631. }
  1632. return expectsLowerCase ? (val) => !!map[val.toLowerCase()] : (val) => !!map[val];
  1633. }
  1634. var specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;
  1635. var isBooleanAttr2 = /* @__PURE__ */ makeMap(specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected`);
  1636. var EMPTY_OBJ = true ? Object.freeze({}) : {};
  1637. var EMPTY_ARR = true ? Object.freeze([]) : [];
  1638. var hasOwnProperty = Object.prototype.hasOwnProperty;
  1639. var hasOwn = (val, key) => hasOwnProperty.call(val, key);
  1640. var isArray = Array.isArray;
  1641. var isMap = (val) => toTypeString(val) === "[object Map]";
  1642. var isString = (val) => typeof val === "string";
  1643. var isSymbol = (val) => typeof val === "symbol";
  1644. var isObject = (val) => val !== null && typeof val === "object";
  1645. var objectToString = Object.prototype.toString;
  1646. var toTypeString = (value) => objectToString.call(value);
  1647. var toRawType = (value) => {
  1648. return toTypeString(value).slice(8, -1);
  1649. };
  1650. var isIntegerKey = (key) => isString(key) && key !== "NaN" && key[0] !== "-" && "" + parseInt(key, 10) === key;
  1651. var cacheStringFunction = (fn) => {
  1652. const cache = /* @__PURE__ */ Object.create(null);
  1653. return (str) => {
  1654. const hit = cache[str];
  1655. return hit || (cache[str] = fn(str));
  1656. };
  1657. };
  1658. var camelizeRE = /-(\w)/g;
  1659. var camelize = cacheStringFunction((str) => {
  1660. return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : "");
  1661. });
  1662. var hyphenateRE = /\B([A-Z])/g;
  1663. var hyphenate = cacheStringFunction((str) => str.replace(hyphenateRE, "-$1").toLowerCase());
  1664. var capitalize = cacheStringFunction((str) => str.charAt(0).toUpperCase() + str.slice(1));
  1665. var toHandlerKey = cacheStringFunction((str) => str ? `on${capitalize(str)}` : ``);
  1666. var hasChanged = (value, oldValue) => value !== oldValue && (value === value || oldValue === oldValue);
  1667. // node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js
  1668. var targetMap = /* @__PURE__ */ new WeakMap();
  1669. var effectStack = [];
  1670. var activeEffect;
  1671. var ITERATE_KEY = Symbol(true ? "iterate" : "");
  1672. var MAP_KEY_ITERATE_KEY = Symbol(true ? "Map key iterate" : "");
  1673. function isEffect(fn) {
  1674. return fn && fn._isEffect === true;
  1675. }
  1676. function effect2(fn, options = EMPTY_OBJ) {
  1677. if (isEffect(fn)) {
  1678. fn = fn.raw;
  1679. }
  1680. const effect3 = createReactiveEffect(fn, options);
  1681. if (!options.lazy) {
  1682. effect3();
  1683. }
  1684. return effect3;
  1685. }
  1686. function stop(effect3) {
  1687. if (effect3.active) {
  1688. cleanup(effect3);
  1689. if (effect3.options.onStop) {
  1690. effect3.options.onStop();
  1691. }
  1692. effect3.active = false;
  1693. }
  1694. }
  1695. var uid = 0;
  1696. function createReactiveEffect(fn, options) {
  1697. const effect3 = function reactiveEffect() {
  1698. if (!effect3.active) {
  1699. return fn();
  1700. }
  1701. if (!effectStack.includes(effect3)) {
  1702. cleanup(effect3);
  1703. try {
  1704. enableTracking();
  1705. effectStack.push(effect3);
  1706. activeEffect = effect3;
  1707. return fn();
  1708. } finally {
  1709. effectStack.pop();
  1710. resetTracking();
  1711. activeEffect = effectStack[effectStack.length - 1];
  1712. }
  1713. }
  1714. };
  1715. effect3.id = uid++;
  1716. effect3.allowRecurse = !!options.allowRecurse;
  1717. effect3._isEffect = true;
  1718. effect3.active = true;
  1719. effect3.raw = fn;
  1720. effect3.deps = [];
  1721. effect3.options = options;
  1722. return effect3;
  1723. }
  1724. function cleanup(effect3) {
  1725. const { deps } = effect3;
  1726. if (deps.length) {
  1727. for (let i = 0; i < deps.length; i++) {
  1728. deps[i].delete(effect3);
  1729. }
  1730. deps.length = 0;
  1731. }
  1732. }
  1733. var shouldTrack = true;
  1734. var trackStack = [];
  1735. function pauseTracking() {
  1736. trackStack.push(shouldTrack);
  1737. shouldTrack = false;
  1738. }
  1739. function enableTracking() {
  1740. trackStack.push(shouldTrack);
  1741. shouldTrack = true;
  1742. }
  1743. function resetTracking() {
  1744. const last = trackStack.pop();
  1745. shouldTrack = last === void 0 ? true : last;
  1746. }
  1747. function track(target, type, key) {
  1748. if (!shouldTrack || activeEffect === void 0) {
  1749. return;
  1750. }
  1751. let depsMap = targetMap.get(target);
  1752. if (!depsMap) {
  1753. targetMap.set(target, depsMap = /* @__PURE__ */ new Map());
  1754. }
  1755. let dep = depsMap.get(key);
  1756. if (!dep) {
  1757. depsMap.set(key, dep = /* @__PURE__ */ new Set());
  1758. }
  1759. if (!dep.has(activeEffect)) {
  1760. dep.add(activeEffect);
  1761. activeEffect.deps.push(dep);
  1762. if (activeEffect.options.onTrack) {
  1763. activeEffect.options.onTrack({
  1764. effect: activeEffect,
  1765. target,
  1766. type,
  1767. key
  1768. });
  1769. }
  1770. }
  1771. }
  1772. function trigger(target, type, key, newValue, oldValue, oldTarget) {
  1773. const depsMap = targetMap.get(target);
  1774. if (!depsMap) {
  1775. return;
  1776. }
  1777. const effects = /* @__PURE__ */ new Set();
  1778. const add2 = (effectsToAdd) => {
  1779. if (effectsToAdd) {
  1780. effectsToAdd.forEach((effect3) => {
  1781. if (effect3 !== activeEffect || effect3.allowRecurse) {
  1782. effects.add(effect3);
  1783. }
  1784. });
  1785. }
  1786. };
  1787. if (type === "clear") {
  1788. depsMap.forEach(add2);
  1789. } else if (key === "length" && isArray(target)) {
  1790. depsMap.forEach((dep, key2) => {
  1791. if (key2 === "length" || key2 >= newValue) {
  1792. add2(dep);
  1793. }
  1794. });
  1795. } else {
  1796. if (key !== void 0) {
  1797. add2(depsMap.get(key));
  1798. }
  1799. switch (type) {
  1800. case "add":
  1801. if (!isArray(target)) {
  1802. add2(depsMap.get(ITERATE_KEY));
  1803. if (isMap(target)) {
  1804. add2(depsMap.get(MAP_KEY_ITERATE_KEY));
  1805. }
  1806. } else if (isIntegerKey(key)) {
  1807. add2(depsMap.get("length"));
  1808. }
  1809. break;
  1810. case "delete":
  1811. if (!isArray(target)) {
  1812. add2(depsMap.get(ITERATE_KEY));
  1813. if (isMap(target)) {
  1814. add2(depsMap.get(MAP_KEY_ITERATE_KEY));
  1815. }
  1816. }
  1817. break;
  1818. case "set":
  1819. if (isMap(target)) {
  1820. add2(depsMap.get(ITERATE_KEY));
  1821. }
  1822. break;
  1823. }
  1824. }
  1825. const run = (effect3) => {
  1826. if (effect3.options.onTrigger) {
  1827. effect3.options.onTrigger({
  1828. effect: effect3,
  1829. target,
  1830. key,
  1831. type,
  1832. newValue,
  1833. oldValue,
  1834. oldTarget
  1835. });
  1836. }
  1837. if (effect3.options.scheduler) {
  1838. effect3.options.scheduler(effect3);
  1839. } else {
  1840. effect3();
  1841. }
  1842. };
  1843. effects.forEach(run);
  1844. }
  1845. var isNonTrackableKeys = /* @__PURE__ */ makeMap(`__proto__,__v_isRef,__isVue`);
  1846. var builtInSymbols = new Set(Object.getOwnPropertyNames(Symbol).map((key) => Symbol[key]).filter(isSymbol));
  1847. var get2 = /* @__PURE__ */ createGetter();
  1848. var readonlyGet = /* @__PURE__ */ createGetter(true);
  1849. var arrayInstrumentations = /* @__PURE__ */ createArrayInstrumentations();
  1850. function createArrayInstrumentations() {
  1851. const instrumentations = {};
  1852. ["includes", "indexOf", "lastIndexOf"].forEach((key) => {
  1853. instrumentations[key] = function(...args) {
  1854. const arr = toRaw(this);
  1855. for (let i = 0, l = this.length; i < l; i++) {
  1856. track(arr, "get", i + "");
  1857. }
  1858. const res = arr[key](...args);
  1859. if (res === -1 || res === false) {
  1860. return arr[key](...args.map(toRaw));
  1861. } else {
  1862. return res;
  1863. }
  1864. };
  1865. });
  1866. ["push", "pop", "shift", "unshift", "splice"].forEach((key) => {
  1867. instrumentations[key] = function(...args) {
  1868. pauseTracking();
  1869. const res = toRaw(this)[key].apply(this, args);
  1870. resetTracking();
  1871. return res;
  1872. };
  1873. });
  1874. return instrumentations;
  1875. }
  1876. function createGetter(isReadonly = false, shallow = false) {
  1877. return function get3(target, key, receiver) {
  1878. if (key === "__v_isReactive") {
  1879. return !isReadonly;
  1880. } else if (key === "__v_isReadonly") {
  1881. return isReadonly;
  1882. } else if (key === "__v_raw" && receiver === (isReadonly ? shallow ? shallowReadonlyMap : readonlyMap : shallow ? shallowReactiveMap : reactiveMap).get(target)) {
  1883. return target;
  1884. }
  1885. const targetIsArray = isArray(target);
  1886. if (!isReadonly && targetIsArray && hasOwn(arrayInstrumentations, key)) {
  1887. return Reflect.get(arrayInstrumentations, key, receiver);
  1888. }
  1889. const res = Reflect.get(target, key, receiver);
  1890. if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) {
  1891. return res;
  1892. }
  1893. if (!isReadonly) {
  1894. track(target, "get", key);
  1895. }
  1896. if (shallow) {
  1897. return res;
  1898. }
  1899. if (isRef(res)) {
  1900. const shouldUnwrap = !targetIsArray || !isIntegerKey(key);
  1901. return shouldUnwrap ? res.value : res;
  1902. }
  1903. if (isObject(res)) {
  1904. return isReadonly ? readonly(res) : reactive2(res);
  1905. }
  1906. return res;
  1907. };
  1908. }
  1909. var set2 = /* @__PURE__ */ createSetter();
  1910. function createSetter(shallow = false) {
  1911. return function set3(target, key, value, receiver) {
  1912. let oldValue = target[key];
  1913. if (!shallow) {
  1914. value = toRaw(value);
  1915. oldValue = toRaw(oldValue);
  1916. if (!isArray(target) && isRef(oldValue) && !isRef(value)) {
  1917. oldValue.value = value;
  1918. return true;
  1919. }
  1920. }
  1921. const hadKey = isArray(target) && isIntegerKey(key) ? Number(key) < target.length : hasOwn(target, key);
  1922. const result = Reflect.set(target, key, value, receiver);
  1923. if (target === toRaw(receiver)) {
  1924. if (!hadKey) {
  1925. trigger(target, "add", key, value);
  1926. } else if (hasChanged(value, oldValue)) {
  1927. trigger(target, "set", key, value, oldValue);
  1928. }
  1929. }
  1930. return result;
  1931. };
  1932. }
  1933. function deleteProperty(target, key) {
  1934. const hadKey = hasOwn(target, key);
  1935. const oldValue = target[key];
  1936. const result = Reflect.deleteProperty(target, key);
  1937. if (result && hadKey) {
  1938. trigger(target, "delete", key, void 0, oldValue);
  1939. }
  1940. return result;
  1941. }
  1942. function has(target, key) {
  1943. const result = Reflect.has(target, key);
  1944. if (!isSymbol(key) || !builtInSymbols.has(key)) {
  1945. track(target, "has", key);
  1946. }
  1947. return result;
  1948. }
  1949. function ownKeys(target) {
  1950. track(target, "iterate", isArray(target) ? "length" : ITERATE_KEY);
  1951. return Reflect.ownKeys(target);
  1952. }
  1953. var mutableHandlers = {
  1954. get: get2,
  1955. set: set2,
  1956. deleteProperty,
  1957. has,
  1958. ownKeys
  1959. };
  1960. var readonlyHandlers = {
  1961. get: readonlyGet,
  1962. set(target, key) {
  1963. if (true) {
  1964. console.warn(`Set operation on key "${String(key)}" failed: target is readonly.`, target);
  1965. }
  1966. return true;
  1967. },
  1968. deleteProperty(target, key) {
  1969. if (true) {
  1970. console.warn(`Delete operation on key "${String(key)}" failed: target is readonly.`, target);
  1971. }
  1972. return true;
  1973. }
  1974. };
  1975. var toReactive = (value) => isObject(value) ? reactive2(value) : value;
  1976. var toReadonly = (value) => isObject(value) ? readonly(value) : value;
  1977. var toShallow = (value) => value;
  1978. var getProto = (v) => Reflect.getPrototypeOf(v);
  1979. function get$1(target, key, isReadonly = false, isShallow = false) {
  1980. target = target[
  1981. "__v_raw"
  1982. /* RAW */
  1983. ];
  1984. const rawTarget = toRaw(target);
  1985. const rawKey = toRaw(key);
  1986. if (key !== rawKey) {
  1987. !isReadonly && track(rawTarget, "get", key);
  1988. }
  1989. !isReadonly && track(rawTarget, "get", rawKey);
  1990. const { has: has2 } = getProto(rawTarget);
  1991. const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;
  1992. if (has2.call(rawTarget, key)) {
  1993. return wrap(target.get(key));
  1994. } else if (has2.call(rawTarget, rawKey)) {
  1995. return wrap(target.get(rawKey));
  1996. } else if (target !== rawTarget) {
  1997. target.get(key);
  1998. }
  1999. }
  2000. function has$1(key, isReadonly = false) {
  2001. const target = this[
  2002. "__v_raw"
  2003. /* RAW */
  2004. ];
  2005. const rawTarget = toRaw(target);
  2006. const rawKey = toRaw(key);
  2007. if (key !== rawKey) {
  2008. !isReadonly && track(rawTarget, "has", key);
  2009. }
  2010. !isReadonly && track(rawTarget, "has", rawKey);
  2011. return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey);
  2012. }
  2013. function size(target, isReadonly = false) {
  2014. target = target[
  2015. "__v_raw"
  2016. /* RAW */
  2017. ];
  2018. !isReadonly && track(toRaw(target), "iterate", ITERATE_KEY);
  2019. return Reflect.get(target, "size", target);
  2020. }
  2021. function add(value) {
  2022. value = toRaw(value);
  2023. const target = toRaw(this);
  2024. const proto = getProto(target);
  2025. const hadKey = proto.has.call(target, value);
  2026. if (!hadKey) {
  2027. target.add(value);
  2028. trigger(target, "add", value, value);
  2029. }
  2030. return this;
  2031. }
  2032. function set$1(key, value) {
  2033. value = toRaw(value);
  2034. const target = toRaw(this);
  2035. const { has: has2, get: get3 } = getProto(target);
  2036. let hadKey = has2.call(target, key);
  2037. if (!hadKey) {
  2038. key = toRaw(key);
  2039. hadKey = has2.call(target, key);
  2040. } else if (true) {
  2041. checkIdentityKeys(target, has2, key);
  2042. }
  2043. const oldValue = get3.call(target, key);
  2044. target.set(key, value);
  2045. if (!hadKey) {
  2046. trigger(target, "add", key, value);
  2047. } else if (hasChanged(value, oldValue)) {
  2048. trigger(target, "set", key, value, oldValue);
  2049. }
  2050. return this;
  2051. }
  2052. function deleteEntry(key) {
  2053. const target = toRaw(this);
  2054. const { has: has2, get: get3 } = getProto(target);
  2055. let hadKey = has2.call(target, key);
  2056. if (!hadKey) {
  2057. key = toRaw(key);
  2058. hadKey = has2.call(target, key);
  2059. } else if (true) {
  2060. checkIdentityKeys(target, has2, key);
  2061. }
  2062. const oldValue = get3 ? get3.call(target, key) : void 0;
  2063. const result = target.delete(key);
  2064. if (hadKey) {
  2065. trigger(target, "delete", key, void 0, oldValue);
  2066. }
  2067. return result;
  2068. }
  2069. function clear() {
  2070. const target = toRaw(this);
  2071. const hadItems = target.size !== 0;
  2072. const oldTarget = true ? isMap(target) ? new Map(target) : new Set(target) : void 0;
  2073. const result = target.clear();
  2074. if (hadItems) {
  2075. trigger(target, "clear", void 0, void 0, oldTarget);
  2076. }
  2077. return result;
  2078. }
  2079. function createForEach(isReadonly, isShallow) {
  2080. return function forEach(callback, thisArg) {
  2081. const observed = this;
  2082. const target = observed[
  2083. "__v_raw"
  2084. /* RAW */
  2085. ];
  2086. const rawTarget = toRaw(target);
  2087. const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;
  2088. !isReadonly && track(rawTarget, "iterate", ITERATE_KEY);
  2089. return target.forEach((value, key) => {
  2090. return callback.call(thisArg, wrap(value), wrap(key), observed);
  2091. });
  2092. };
  2093. }
  2094. function createIterableMethod(method, isReadonly, isShallow) {
  2095. return function(...args) {
  2096. const target = this[
  2097. "__v_raw"
  2098. /* RAW */
  2099. ];
  2100. const rawTarget = toRaw(target);
  2101. const targetIsMap = isMap(rawTarget);
  2102. const isPair = method === "entries" || method === Symbol.iterator && targetIsMap;
  2103. const isKeyOnly = method === "keys" && targetIsMap;
  2104. const innerIterator = target[method](...args);
  2105. const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;
  2106. !isReadonly && track(rawTarget, "iterate", isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY);
  2107. return {
  2108. // iterator protocol
  2109. next() {
  2110. const { value, done } = innerIterator.next();
  2111. return done ? { value, done } : {
  2112. value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value),
  2113. done
  2114. };
  2115. },
  2116. // iterable protocol
  2117. [Symbol.iterator]() {
  2118. return this;
  2119. }
  2120. };
  2121. };
  2122. }
  2123. function createReadonlyMethod(type) {
  2124. return function(...args) {
  2125. if (true) {
  2126. const key = args[0] ? `on key "${args[0]}" ` : ``;
  2127. console.warn(`${capitalize(type)} operation ${key}failed: target is readonly.`, toRaw(this));
  2128. }
  2129. return type === "delete" ? false : this;
  2130. };
  2131. }
  2132. function createInstrumentations() {
  2133. const mutableInstrumentations2 = {
  2134. get(key) {
  2135. return get$1(this, key);
  2136. },
  2137. get size() {
  2138. return size(this);
  2139. },
  2140. has: has$1,
  2141. add,
  2142. set: set$1,
  2143. delete: deleteEntry,
  2144. clear,
  2145. forEach: createForEach(false, false)
  2146. };
  2147. const shallowInstrumentations2 = {
  2148. get(key) {
  2149. return get$1(this, key, false, true);
  2150. },
  2151. get size() {
  2152. return size(this);
  2153. },
  2154. has: has$1,
  2155. add,
  2156. set: set$1,
  2157. delete: deleteEntry,
  2158. clear,
  2159. forEach: createForEach(false, true)
  2160. };
  2161. const readonlyInstrumentations2 = {
  2162. get(key) {
  2163. return get$1(this, key, true);
  2164. },
  2165. get size() {
  2166. return size(this, true);
  2167. },
  2168. has(key) {
  2169. return has$1.call(this, key, true);
  2170. },
  2171. add: createReadonlyMethod(
  2172. "add"
  2173. /* ADD */
  2174. ),
  2175. set: createReadonlyMethod(
  2176. "set"
  2177. /* SET */
  2178. ),
  2179. delete: createReadonlyMethod(
  2180. "delete"
  2181. /* DELETE */
  2182. ),
  2183. clear: createReadonlyMethod(
  2184. "clear"
  2185. /* CLEAR */
  2186. ),
  2187. forEach: createForEach(true, false)
  2188. };
  2189. const shallowReadonlyInstrumentations2 = {
  2190. get(key) {
  2191. return get$1(this, key, true, true);
  2192. },
  2193. get size() {
  2194. return size(this, true);
  2195. },
  2196. has(key) {
  2197. return has$1.call(this, key, true);
  2198. },
  2199. add: createReadonlyMethod(
  2200. "add"
  2201. /* ADD */
  2202. ),
  2203. set: createReadonlyMethod(
  2204. "set"
  2205. /* SET */
  2206. ),
  2207. delete: createReadonlyMethod(
  2208. "delete"
  2209. /* DELETE */
  2210. ),
  2211. clear: createReadonlyMethod(
  2212. "clear"
  2213. /* CLEAR */
  2214. ),
  2215. forEach: createForEach(true, true)
  2216. };
  2217. const iteratorMethods = ["keys", "values", "entries", Symbol.iterator];
  2218. iteratorMethods.forEach((method) => {
  2219. mutableInstrumentations2[method] = createIterableMethod(method, false, false);
  2220. readonlyInstrumentations2[method] = createIterableMethod(method, true, false);
  2221. shallowInstrumentations2[method] = createIterableMethod(method, false, true);
  2222. shallowReadonlyInstrumentations2[method] = createIterableMethod(method, true, true);
  2223. });
  2224. return [
  2225. mutableInstrumentations2,
  2226. readonlyInstrumentations2,
  2227. shallowInstrumentations2,
  2228. shallowReadonlyInstrumentations2
  2229. ];
  2230. }
  2231. var [mutableInstrumentations, readonlyInstrumentations, shallowInstrumentations, shallowReadonlyInstrumentations] = /* @__PURE__ */ createInstrumentations();
  2232. function createInstrumentationGetter(isReadonly, shallow) {
  2233. const instrumentations = shallow ? isReadonly ? shallowReadonlyInstrumentations : shallowInstrumentations : isReadonly ? readonlyInstrumentations : mutableInstrumentations;
  2234. return (target, key, receiver) => {
  2235. if (key === "__v_isReactive") {
  2236. return !isReadonly;
  2237. } else if (key === "__v_isReadonly") {
  2238. return isReadonly;
  2239. } else if (key === "__v_raw") {
  2240. return target;
  2241. }
  2242. return Reflect.get(hasOwn(instrumentations, key) && key in target ? instrumentations : target, key, receiver);
  2243. };
  2244. }
  2245. var mutableCollectionHandlers = {
  2246. get: /* @__PURE__ */ createInstrumentationGetter(false, false)
  2247. };
  2248. var readonlyCollectionHandlers = {
  2249. get: /* @__PURE__ */ createInstrumentationGetter(true, false)
  2250. };
  2251. function checkIdentityKeys(target, has2, key) {
  2252. const rawKey = toRaw(key);
  2253. if (rawKey !== key && has2.call(target, rawKey)) {
  2254. const type = toRawType(target);
  2255. 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.`);
  2256. }
  2257. }
  2258. var reactiveMap = /* @__PURE__ */ new WeakMap();
  2259. var shallowReactiveMap = /* @__PURE__ */ new WeakMap();
  2260. var readonlyMap = /* @__PURE__ */ new WeakMap();
  2261. var shallowReadonlyMap = /* @__PURE__ */ new WeakMap();
  2262. function targetTypeMap(rawType) {
  2263. switch (rawType) {
  2264. case "Object":
  2265. case "Array":
  2266. return 1;
  2267. case "Map":
  2268. case "Set":
  2269. case "WeakMap":
  2270. case "WeakSet":
  2271. return 2;
  2272. default:
  2273. return 0;
  2274. }
  2275. }
  2276. function getTargetType(value) {
  2277. return value[
  2278. "__v_skip"
  2279. /* SKIP */
  2280. ] || !Object.isExtensible(value) ? 0 : targetTypeMap(toRawType(value));
  2281. }
  2282. function reactive2(target) {
  2283. if (target && target[
  2284. "__v_isReadonly"
  2285. /* IS_READONLY */
  2286. ]) {
  2287. return target;
  2288. }
  2289. return createReactiveObject(target, false, mutableHandlers, mutableCollectionHandlers, reactiveMap);
  2290. }
  2291. function readonly(target) {
  2292. return createReactiveObject(target, true, readonlyHandlers, readonlyCollectionHandlers, readonlyMap);
  2293. }
  2294. function createReactiveObject(target, isReadonly, baseHandlers, collectionHandlers, proxyMap) {
  2295. if (!isObject(target)) {
  2296. if (true) {
  2297. console.warn(`value cannot be made reactive: ${String(target)}`);
  2298. }
  2299. return target;
  2300. }
  2301. if (target[
  2302. "__v_raw"
  2303. /* RAW */
  2304. ] && !(isReadonly && target[
  2305. "__v_isReactive"
  2306. /* IS_REACTIVE */
  2307. ])) {
  2308. return target;
  2309. }
  2310. const existingProxy = proxyMap.get(target);
  2311. if (existingProxy) {
  2312. return existingProxy;
  2313. }
  2314. const targetType = getTargetType(target);
  2315. if (targetType === 0) {
  2316. return target;
  2317. }
  2318. const proxy = new Proxy(target, targetType === 2 ? collectionHandlers : baseHandlers);
  2319. proxyMap.set(target, proxy);
  2320. return proxy;
  2321. }
  2322. function toRaw(observed) {
  2323. return observed && toRaw(observed[
  2324. "__v_raw"
  2325. /* RAW */
  2326. ]) || observed;
  2327. }
  2328. function isRef(r) {
  2329. return Boolean(r && r.__v_isRef === true);
  2330. }
  2331. // packages/alpinejs/src/magics/$nextTick.js
  2332. magic("nextTick", () => nextTick);
  2333. // packages/alpinejs/src/magics/$dispatch.js
  2334. magic("dispatch", (el) => dispatch.bind(dispatch, el));
  2335. // packages/alpinejs/src/magics/$watch.js
  2336. magic("watch", (el, { evaluateLater: evaluateLater2, effect: effect3 }) => (key, callback) => {
  2337. let evaluate2 = evaluateLater2(key);
  2338. let firstTime = true;
  2339. let oldValue;
  2340. let effectReference = effect3(() => evaluate2((value) => {
  2341. JSON.stringify(value);
  2342. if (!firstTime) {
  2343. queueMicrotask(() => {
  2344. callback(value, oldValue);
  2345. oldValue = value;
  2346. });
  2347. } else {
  2348. oldValue = value;
  2349. }
  2350. firstTime = false;
  2351. }));
  2352. el._x_effects.delete(effectReference);
  2353. });
  2354. // packages/alpinejs/src/magics/$store.js
  2355. magic("store", getStores);
  2356. // packages/alpinejs/src/magics/$data.js
  2357. magic("data", (el) => scope(el));
  2358. // packages/alpinejs/src/magics/$root.js
  2359. magic("root", (el) => closestRoot(el));
  2360. // packages/alpinejs/src/magics/$refs.js
  2361. magic("refs", (el) => {
  2362. if (el._x_refs_proxy)
  2363. return el._x_refs_proxy;
  2364. el._x_refs_proxy = mergeProxies(getArrayOfRefObject(el));
  2365. return el._x_refs_proxy;
  2366. });
  2367. function getArrayOfRefObject(el) {
  2368. let refObjects = [];
  2369. let currentEl = el;
  2370. while (currentEl) {
  2371. if (currentEl._x_refs)
  2372. refObjects.push(currentEl._x_refs);
  2373. currentEl = currentEl.parentNode;
  2374. }
  2375. return refObjects;
  2376. }
  2377. // packages/alpinejs/src/ids.js
  2378. var globalIdMemo = {};
  2379. function findAndIncrementId(name) {
  2380. if (!globalIdMemo[name])
  2381. globalIdMemo[name] = 0;
  2382. return ++globalIdMemo[name];
  2383. }
  2384. function closestIdRoot(el, name) {
  2385. return findClosest(el, (element) => {
  2386. if (element._x_ids && element._x_ids[name])
  2387. return true;
  2388. });
  2389. }
  2390. function setIdRoot(el, name) {
  2391. if (!el._x_ids)
  2392. el._x_ids = {};
  2393. if (!el._x_ids[name])
  2394. el._x_ids[name] = findAndIncrementId(name);
  2395. }
  2396. // packages/alpinejs/src/magics/$id.js
  2397. magic("id", (el) => (name, key = null) => {
  2398. let root = closestIdRoot(el, name);
  2399. let id = root ? root._x_ids[name] : findAndIncrementId(name);
  2400. return key ? `${name}-${id}-${key}` : `${name}-${id}`;
  2401. });
  2402. // packages/alpinejs/src/magics/$el.js
  2403. magic("el", (el) => el);
  2404. // packages/alpinejs/src/magics/index.js
  2405. warnMissingPluginMagic("Focus", "focus", "focus");
  2406. warnMissingPluginMagic("Persist", "persist", "persist");
  2407. function warnMissingPluginMagic(name, magicName, slug) {
  2408. magic(magicName, (el) => warn(`You can't use [$${directiveName}] without first installing the "${name}" plugin here: https://alpinejs.dev/plugins/${slug}`, el));
  2409. }
  2410. // packages/alpinejs/src/directives/x-modelable.js
  2411. directive("modelable", (el, { expression }, { effect: effect3, evaluateLater: evaluateLater2, cleanup: cleanup2 }) => {
  2412. let func = evaluateLater2(expression);
  2413. let innerGet = () => {
  2414. let result;
  2415. func((i) => result = i);
  2416. return result;
  2417. };
  2418. let evaluateInnerSet = evaluateLater2(`${expression} = __placeholder`);
  2419. let innerSet = (val) => evaluateInnerSet(() => {
  2420. }, { scope: { "__placeholder": val } });
  2421. let initialValue = innerGet();
  2422. innerSet(initialValue);
  2423. queueMicrotask(() => {
  2424. if (!el._x_model)
  2425. return;
  2426. el._x_removeModelListeners["default"]();
  2427. let outerGet = el._x_model.get;
  2428. let outerSet = el._x_model.set;
  2429. let releaseEntanglement = entangle(
  2430. {
  2431. get() {
  2432. return outerGet();
  2433. },
  2434. set(value) {
  2435. outerSet(value);
  2436. }
  2437. },
  2438. {
  2439. get() {
  2440. return innerGet();
  2441. },
  2442. set(value) {
  2443. innerSet(value);
  2444. }
  2445. }
  2446. );
  2447. cleanup2(releaseEntanglement);
  2448. });
  2449. });
  2450. // packages/alpinejs/src/directives/x-teleport.js
  2451. var teleportContainerDuringClone = document.createElement("div");
  2452. directive("teleport", (el, { modifiers, expression }, { cleanup: cleanup2 }) => {
  2453. if (el.tagName.toLowerCase() !== "template")
  2454. warn("x-teleport can only be used on a <template> tag", el);
  2455. let target = skipDuringClone(() => {
  2456. return document.querySelector(expression);
  2457. }, () => {
  2458. return teleportContainerDuringClone;
  2459. })();
  2460. if (!target)
  2461. warn(`Cannot find x-teleport element for selector: "${expression}"`);
  2462. let clone2 = el.content.cloneNode(true).firstElementChild;
  2463. el._x_teleport = clone2;
  2464. clone2._x_teleportBack = el;
  2465. if (el._x_forwardEvents) {
  2466. el._x_forwardEvents.forEach((eventName) => {
  2467. clone2.addEventListener(eventName, (e) => {
  2468. e.stopPropagation();
  2469. el.dispatchEvent(new e.constructor(e.type, e));
  2470. });
  2471. });
  2472. }
  2473. addScopeToNode(clone2, {}, el);
  2474. mutateDom(() => {
  2475. if (modifiers.includes("prepend")) {
  2476. target.parentNode.insertBefore(clone2, target);
  2477. } else if (modifiers.includes("append")) {
  2478. target.parentNode.insertBefore(clone2, target.nextSibling);
  2479. } else {
  2480. target.appendChild(clone2);
  2481. }
  2482. initTree(clone2);
  2483. clone2._x_ignore = true;
  2484. });
  2485. cleanup2(() => clone2.remove());
  2486. });
  2487. // packages/alpinejs/src/directives/x-ignore.js
  2488. var handler = () => {
  2489. };
  2490. handler.inline = (el, { modifiers }, { cleanup: cleanup2 }) => {
  2491. modifiers.includes("self") ? el._x_ignoreSelf = true : el._x_ignore = true;
  2492. cleanup2(() => {
  2493. modifiers.includes("self") ? delete el._x_ignoreSelf : delete el._x_ignore;
  2494. });
  2495. };
  2496. directive("ignore", handler);
  2497. // packages/alpinejs/src/directives/x-effect.js
  2498. directive("effect", (el, { expression }, { effect: effect3 }) => effect3(evaluateLater(el, expression)));
  2499. // packages/alpinejs/src/utils/on.js
  2500. function on(el, event, modifiers, callback) {
  2501. let listenerTarget = el;
  2502. let handler4 = (e) => callback(e);
  2503. let options = {};
  2504. let wrapHandler = (callback2, wrapper) => (e) => wrapper(callback2, e);
  2505. if (modifiers.includes("dot"))
  2506. event = dotSyntax(event);
  2507. if (modifiers.includes("camel"))
  2508. event = camelCase2(event);
  2509. if (modifiers.includes("passive"))
  2510. options.passive = true;
  2511. if (modifiers.includes("capture"))
  2512. options.capture = true;
  2513. if (modifiers.includes("window"))
  2514. listenerTarget = window;
  2515. if (modifiers.includes("document"))
  2516. listenerTarget = document;
  2517. if (modifiers.includes("debounce")) {
  2518. let nextModifier = modifiers[modifiers.indexOf("debounce") + 1] || "invalid-wait";
  2519. let wait = isNumeric(nextModifier.split("ms")[0]) ? Number(nextModifier.split("ms")[0]) : 250;
  2520. handler4 = debounce(handler4, wait);
  2521. }
  2522. if (modifiers.includes("throttle")) {
  2523. let nextModifier = modifiers[modifiers.indexOf("throttle") + 1] || "invalid-wait";
  2524. let wait = isNumeric(nextModifier.split("ms")[0]) ? Number(nextModifier.split("ms")[0]) : 250;
  2525. handler4 = throttle(handler4, wait);
  2526. }
  2527. if (modifiers.includes("prevent"))
  2528. handler4 = wrapHandler(handler4, (next, e) => {
  2529. e.preventDefault();
  2530. next(e);
  2531. });
  2532. if (modifiers.includes("stop"))
  2533. handler4 = wrapHandler(handler4, (next, e) => {
  2534. e.stopPropagation();
  2535. next(e);
  2536. });
  2537. if (modifiers.includes("self"))
  2538. handler4 = wrapHandler(handler4, (next, e) => {
  2539. e.target === el && next(e);
  2540. });
  2541. if (modifiers.includes("away") || modifiers.includes("outside")) {
  2542. listenerTarget = document;
  2543. handler4 = wrapHandler(handler4, (next, e) => {
  2544. if (el.contains(e.target))
  2545. return;
  2546. if (e.target.isConnected === false)
  2547. return;
  2548. if (el.offsetWidth < 1 && el.offsetHeight < 1)
  2549. return;
  2550. if (el._x_isShown === false)
  2551. return;
  2552. next(e);
  2553. });
  2554. }
  2555. if (modifiers.includes("once")) {
  2556. handler4 = wrapHandler(handler4, (next, e) => {
  2557. next(e);
  2558. listenerTarget.removeEventListener(event, handler4, options);
  2559. });
  2560. }
  2561. handler4 = wrapHandler(handler4, (next, e) => {
  2562. if (isKeyEvent(event)) {
  2563. if (isListeningForASpecificKeyThatHasntBeenPressed(e, modifiers)) {
  2564. return;
  2565. }
  2566. }
  2567. next(e);
  2568. });
  2569. listenerTarget.addEventListener(event, handler4, options);
  2570. return () => {
  2571. listenerTarget.removeEventListener(event, handler4, options);
  2572. };
  2573. }
  2574. function dotSyntax(subject) {
  2575. return subject.replace(/-/g, ".");
  2576. }
  2577. function camelCase2(subject) {
  2578. return subject.toLowerCase().replace(/-(\w)/g, (match, char) => char.toUpperCase());
  2579. }
  2580. function isNumeric(subject) {
  2581. return !Array.isArray(subject) && !isNaN(subject);
  2582. }
  2583. function kebabCase2(subject) {
  2584. if ([" ", "_"].includes(
  2585. subject
  2586. ))
  2587. return subject;
  2588. return subject.replace(/([a-z])([A-Z])/g, "$1-$2").replace(/[_\s]/, "-").toLowerCase();
  2589. }
  2590. function isKeyEvent(event) {
  2591. return ["keydown", "keyup"].includes(event);
  2592. }
  2593. function isListeningForASpecificKeyThatHasntBeenPressed(e, modifiers) {
  2594. let keyModifiers = modifiers.filter((i) => {
  2595. return !["window", "document", "prevent", "stop", "once", "capture"].includes(i);
  2596. });
  2597. if (keyModifiers.includes("debounce")) {
  2598. let debounceIndex = keyModifiers.indexOf("debounce");
  2599. keyModifiers.splice(debounceIndex, isNumeric((keyModifiers[debounceIndex + 1] || "invalid-wait").split("ms")[0]) ? 2 : 1);
  2600. }
  2601. if (keyModifiers.includes("throttle")) {
  2602. let debounceIndex = keyModifiers.indexOf("throttle");
  2603. keyModifiers.splice(debounceIndex, isNumeric((keyModifiers[debounceIndex + 1] || "invalid-wait").split("ms")[0]) ? 2 : 1);
  2604. }
  2605. if (keyModifiers.length === 0)
  2606. return false;
  2607. if (keyModifiers.length === 1 && keyToModifiers(e.key).includes(keyModifiers[0]))
  2608. return false;
  2609. const systemKeyModifiers = ["ctrl", "shift", "alt", "meta", "cmd", "super"];
  2610. const selectedSystemKeyModifiers = systemKeyModifiers.filter((modifier) => keyModifiers.includes(modifier));
  2611. keyModifiers = keyModifiers.filter((i) => !selectedSystemKeyModifiers.includes(i));
  2612. if (selectedSystemKeyModifiers.length > 0) {
  2613. const activelyPressedKeyModifiers = selectedSystemKeyModifiers.filter((modifier) => {
  2614. if (modifier === "cmd" || modifier === "super")
  2615. modifier = "meta";
  2616. return e[`${modifier}Key`];
  2617. });
  2618. if (activelyPressedKeyModifiers.length === selectedSystemKeyModifiers.length) {
  2619. if (keyToModifiers(e.key).includes(keyModifiers[0]))
  2620. return false;
  2621. }
  2622. }
  2623. return true;
  2624. }
  2625. function keyToModifiers(key) {
  2626. if (!key)
  2627. return [];
  2628. key = kebabCase2(key);
  2629. let modifierToKeyMap = {
  2630. "ctrl": "control",
  2631. "slash": "/",
  2632. "space": " ",
  2633. "spacebar": " ",
  2634. "cmd": "meta",
  2635. "esc": "escape",
  2636. "up": "arrow-up",
  2637. "down": "arrow-down",
  2638. "left": "arrow-left",
  2639. "right": "arrow-right",
  2640. "period": ".",
  2641. "equal": "=",
  2642. "minus": "-",
  2643. "underscore": "_"
  2644. };
  2645. modifierToKeyMap[key] = key;
  2646. return Object.keys(modifierToKeyMap).map((modifier) => {
  2647. if (modifierToKeyMap[modifier] === key)
  2648. return modifier;
  2649. }).filter((modifier) => modifier);
  2650. }
  2651. // packages/alpinejs/src/directives/x-model.js
  2652. directive("model", (el, { modifiers, expression }, { effect: effect3, cleanup: cleanup2 }) => {
  2653. let scopeTarget = el;
  2654. if (modifiers.includes("parent")) {
  2655. scopeTarget = el.parentNode;
  2656. }
  2657. let evaluateGet = evaluateLater(scopeTarget, expression);
  2658. let evaluateSet;
  2659. if (typeof expression === "string") {
  2660. evaluateSet = evaluateLater(scopeTarget, `${expression} = __placeholder`);
  2661. } else if (typeof expression === "function" && typeof expression() === "string") {
  2662. evaluateSet = evaluateLater(scopeTarget, `${expression()} = __placeholder`);
  2663. } else {
  2664. evaluateSet = () => {
  2665. };
  2666. }
  2667. let getValue = () => {
  2668. let result;
  2669. evaluateGet((value) => result = value);
  2670. return isGetterSetter(result) ? result.get() : result;
  2671. };
  2672. let setValue = (value) => {
  2673. let result;
  2674. evaluateGet((value2) => result = value2);
  2675. if (isGetterSetter(result)) {
  2676. result.set(value);
  2677. } else {
  2678. evaluateSet(() => {
  2679. }, {
  2680. scope: { "__placeholder": value }
  2681. });
  2682. }
  2683. };
  2684. if (typeof expression === "string" && el.type === "radio") {
  2685. mutateDom(() => {
  2686. if (!el.hasAttribute("name"))
  2687. el.setAttribute("name", expression);
  2688. });
  2689. }
  2690. var event = el.tagName.toLowerCase() === "select" || ["checkbox", "radio"].includes(el.type) || modifiers.includes("lazy") ? "change" : "input";
  2691. let removeListener = isCloning ? () => {
  2692. } : on(el, event, modifiers, (e) => {
  2693. setValue(getInputValue(el, modifiers, e, getValue()));
  2694. });
  2695. if (modifiers.includes("fill")) {
  2696. if ([null, ""].includes(getValue()) || el.type === "checkbox" && Array.isArray(getValue())) {
  2697. el.dispatchEvent(new Event(event, {}));
  2698. }
  2699. }
  2700. if (!el._x_removeModelListeners)
  2701. el._x_removeModelListeners = {};
  2702. el._x_removeModelListeners["default"] = removeListener;
  2703. cleanup2(() => el._x_removeModelListeners["default"]());
  2704. if (el.form) {
  2705. let removeResetListener = on(el.form, "reset", [], (e) => {
  2706. nextTick(() => el._x_model && el._x_model.set(el.value));
  2707. });
  2708. cleanup2(() => removeResetListener());
  2709. }
  2710. el._x_model = {
  2711. get() {
  2712. return getValue();
  2713. },
  2714. set(value) {
  2715. setValue(value);
  2716. }
  2717. };
  2718. el._x_forceModelUpdate = (value) => {
  2719. if (value === void 0 && typeof expression === "string" && expression.match(/\./))
  2720. value = "";
  2721. window.fromModel = true;
  2722. mutateDom(() => bind(el, "value", value));
  2723. delete window.fromModel;
  2724. };
  2725. effect3(() => {
  2726. let value = getValue();
  2727. if (modifiers.includes("unintrusive") && document.activeElement.isSameNode(el))
  2728. return;
  2729. el._x_forceModelUpdate(value);
  2730. });
  2731. });
  2732. function getInputValue(el, modifiers, event, currentValue) {
  2733. return mutateDom(() => {
  2734. if (event instanceof CustomEvent && event.detail !== void 0)
  2735. return event.detail ?? event.target.value;
  2736. else if (el.type === "checkbox") {
  2737. if (Array.isArray(currentValue)) {
  2738. let newValue = modifiers.includes("number") ? safeParseNumber(event.target.value) : event.target.value;
  2739. return event.target.checked ? currentValue.concat([newValue]) : currentValue.filter((el2) => !checkedAttrLooseCompare2(el2, newValue));
  2740. } else {
  2741. return event.target.checked;
  2742. }
  2743. } else if (el.tagName.toLowerCase() === "select" && el.multiple) {
  2744. return modifiers.includes("number") ? Array.from(event.target.selectedOptions).map((option) => {
  2745. let rawValue = option.value || option.text;
  2746. return safeParseNumber(rawValue);
  2747. }) : Array.from(event.target.selectedOptions).map((option) => {
  2748. return option.value || option.text;
  2749. });
  2750. } else {
  2751. let rawValue = event.target.value;
  2752. return modifiers.includes("number") ? safeParseNumber(rawValue) : modifiers.includes("trim") ? rawValue.trim() : rawValue;
  2753. }
  2754. });
  2755. }
  2756. function safeParseNumber(rawValue) {
  2757. let number = rawValue ? parseFloat(rawValue) : null;
  2758. return isNumeric2(number) ? number : rawValue;
  2759. }
  2760. function checkedAttrLooseCompare2(valueA, valueB) {
  2761. return valueA == valueB;
  2762. }
  2763. function isNumeric2(subject) {
  2764. return !Array.isArray(subject) && !isNaN(subject);
  2765. }
  2766. function isGetterSetter(value) {
  2767. return value !== null && typeof value === "object" && typeof value.get === "function" && typeof value.set === "function";
  2768. }
  2769. // packages/alpinejs/src/directives/x-cloak.js
  2770. directive("cloak", (el) => queueMicrotask(() => mutateDom(() => el.removeAttribute(prefix("cloak")))));
  2771. // packages/alpinejs/src/directives/x-init.js
  2772. addInitSelector(() => `[${prefix("init")}]`);
  2773. directive("init", skipDuringClone((el, { expression }, { evaluate: evaluate2 }) => {
  2774. if (typeof expression === "string") {
  2775. return !!expression.trim() && evaluate2(expression, {}, false);
  2776. }
  2777. return evaluate2(expression, {}, false);
  2778. }));
  2779. // packages/alpinejs/src/directives/x-text.js
  2780. directive("text", (el, { expression }, { effect: effect3, evaluateLater: evaluateLater2 }) => {
  2781. let evaluate2 = evaluateLater2(expression);
  2782. effect3(() => {
  2783. evaluate2((value) => {
  2784. mutateDom(() => {
  2785. el.textContent = value;
  2786. });
  2787. });
  2788. });
  2789. });
  2790. // packages/alpinejs/src/directives/x-html.js
  2791. directive("html", (el, { expression }, { effect: effect3, evaluateLater: evaluateLater2 }) => {
  2792. let evaluate2 = evaluateLater2(expression);
  2793. effect3(() => {
  2794. evaluate2((value) => {
  2795. mutateDom(() => {
  2796. el.innerHTML = value;
  2797. el._x_ignoreSelf = true;
  2798. initTree(el);
  2799. delete el._x_ignoreSelf;
  2800. });
  2801. });
  2802. });
  2803. });
  2804. // packages/alpinejs/src/directives/x-bind.js
  2805. mapAttributes(startingWith(":", into(prefix("bind:"))));
  2806. var handler2 = (el, { value, modifiers, expression, original }, { effect: effect3 }) => {
  2807. if (!value) {
  2808. let bindingProviders = {};
  2809. injectBindingProviders(bindingProviders);
  2810. let getBindings = evaluateLater(el, expression);
  2811. getBindings((bindings) => {
  2812. applyBindingsObject(el, bindings, original);
  2813. }, { scope: bindingProviders });
  2814. return;
  2815. }
  2816. if (value === "key")
  2817. return storeKeyForXFor(el, expression);
  2818. if (el._x_inlineBindings && el._x_inlineBindings[value] && el._x_inlineBindings[value].extract) {
  2819. return;
  2820. }
  2821. let evaluate2 = evaluateLater(el, expression);
  2822. effect3(() => evaluate2((result) => {
  2823. if (result === void 0 && typeof expression === "string" && expression.match(/\./)) {
  2824. result = "";
  2825. }
  2826. mutateDom(() => bind(el, value, result, modifiers));
  2827. }));
  2828. };
  2829. handler2.inline = (el, { value, modifiers, expression }) => {
  2830. if (!value)
  2831. return;
  2832. if (!el._x_inlineBindings)
  2833. el._x_inlineBindings = {};
  2834. el._x_inlineBindings[value] = { expression, extract: false };
  2835. };
  2836. directive("bind", handler2);
  2837. function storeKeyForXFor(el, expression) {
  2838. el._x_keyExpression = expression;
  2839. }
  2840. // packages/alpinejs/src/directives/x-data.js
  2841. addRootSelector(() => `[${prefix("data")}]`);
  2842. directive("data", (el, { expression }, { cleanup: cleanup2 }) => {
  2843. if (shouldSkipRegisteringDataDuringClone(el))
  2844. return;
  2845. expression = expression === "" ? "{}" : expression;
  2846. let magicContext = {};
  2847. injectMagics(magicContext, el);
  2848. let dataProviderContext = {};
  2849. injectDataProviders(dataProviderContext, magicContext);
  2850. let data2 = evaluate(el, expression, { scope: dataProviderContext });
  2851. if (data2 === void 0 || data2 === true)
  2852. data2 = {};
  2853. injectMagics(data2, el);
  2854. let reactiveData = reactive(data2);
  2855. initInterceptors2(reactiveData);
  2856. let undo = addScopeToNode(el, reactiveData);
  2857. reactiveData["init"] && evaluate(el, reactiveData["init"]);
  2858. cleanup2(() => {
  2859. reactiveData["destroy"] && evaluate(el, reactiveData["destroy"]);
  2860. undo();
  2861. });
  2862. });
  2863. // packages/alpinejs/src/directives/x-show.js
  2864. directive("show", (el, { modifiers, expression }, { effect: effect3 }) => {
  2865. let evaluate2 = evaluateLater(el, expression);
  2866. if (!el._x_doHide)
  2867. el._x_doHide = () => {
  2868. mutateDom(() => {
  2869. el.style.setProperty("display", "none", modifiers.includes("important") ? "important" : void 0);
  2870. });
  2871. };
  2872. if (!el._x_doShow)
  2873. el._x_doShow = () => {
  2874. mutateDom(() => {
  2875. if (el.style.length === 1 && el.style.display === "none") {
  2876. el.removeAttribute("style");
  2877. } else {
  2878. el.style.removeProperty("display");
  2879. }
  2880. });
  2881. };
  2882. let hide = () => {
  2883. el._x_doHide();
  2884. el._x_isShown = false;
  2885. };
  2886. let show = () => {
  2887. el._x_doShow();
  2888. el._x_isShown = true;
  2889. };
  2890. let clickAwayCompatibleShow = () => setTimeout(show);
  2891. let toggle = once(
  2892. (value) => value ? show() : hide(),
  2893. (value) => {
  2894. if (typeof el._x_toggleAndCascadeWithTransitions === "function") {
  2895. el._x_toggleAndCascadeWithTransitions(el, value, show, hide);
  2896. } else {
  2897. value ? clickAwayCompatibleShow() : hide();
  2898. }
  2899. }
  2900. );
  2901. let oldValue;
  2902. let firstTime = true;
  2903. effect3(() => evaluate2((value) => {
  2904. if (!firstTime && value === oldValue)
  2905. return;
  2906. if (modifiers.includes("immediate"))
  2907. value ? clickAwayCompatibleShow() : hide();
  2908. toggle(value);
  2909. oldValue = value;
  2910. firstTime = false;
  2911. }));
  2912. });
  2913. // packages/alpinejs/src/directives/x-for.js
  2914. directive("for", (el, { expression }, { effect: effect3, cleanup: cleanup2 }) => {
  2915. let iteratorNames = parseForExpression(expression);
  2916. let evaluateItems = evaluateLater(el, iteratorNames.items);
  2917. let evaluateKey = evaluateLater(
  2918. el,
  2919. // the x-bind:key expression is stored for our use instead of evaluated.
  2920. el._x_keyExpression || "index"
  2921. );
  2922. el._x_prevKeys = [];
  2923. el._x_lookup = {};
  2924. effect3(() => loop(el, iteratorNames, evaluateItems, evaluateKey));
  2925. cleanup2(() => {
  2926. Object.values(el._x_lookup).forEach((el2) => el2.remove());
  2927. delete el._x_prevKeys;
  2928. delete el._x_lookup;
  2929. });
  2930. });
  2931. function loop(el, iteratorNames, evaluateItems, evaluateKey) {
  2932. let isObject2 = (i) => typeof i === "object" && !Array.isArray(i);
  2933. let templateEl = el;
  2934. evaluateItems((items) => {
  2935. if (isNumeric3(items) && items >= 0) {
  2936. items = Array.from(Array(items).keys(), (i) => i + 1);
  2937. }
  2938. if (items === void 0)
  2939. items = [];
  2940. let lookup = el._x_lookup;
  2941. let prevKeys = el._x_prevKeys;
  2942. let scopes = [];
  2943. let keys = [];
  2944. if (isObject2(items)) {
  2945. items = Object.entries(items).map(([key, value]) => {
  2946. let scope2 = getIterationScopeVariables(iteratorNames, value, key, items);
  2947. evaluateKey((value2) => keys.push(value2), { scope: { index: key, ...scope2 } });
  2948. scopes.push(scope2);
  2949. });
  2950. } else {
  2951. for (let i = 0; i < items.length; i++) {
  2952. let scope2 = getIterationScopeVariables(iteratorNames, items[i], i, items);
  2953. evaluateKey((value) => keys.push(value), { scope: { index: i, ...scope2 } });
  2954. scopes.push(scope2);
  2955. }
  2956. }
  2957. let adds = [];
  2958. let moves = [];
  2959. let removes = [];
  2960. let sames = [];
  2961. for (let i = 0; i < prevKeys.length; i++) {
  2962. let key = prevKeys[i];
  2963. if (keys.indexOf(key) === -1)
  2964. removes.push(key);
  2965. }
  2966. prevKeys = prevKeys.filter((key) => !removes.includes(key));
  2967. let lastKey = "template";
  2968. for (let i = 0; i < keys.length; i++) {
  2969. let key = keys[i];
  2970. let prevIndex = prevKeys.indexOf(key);
  2971. if (prevIndex === -1) {
  2972. prevKeys.splice(i, 0, key);
  2973. adds.push([lastKey, i]);
  2974. } else if (prevIndex !== i) {
  2975. let keyInSpot = prevKeys.splice(i, 1)[0];
  2976. let keyForSpot = prevKeys.splice(prevIndex - 1, 1)[0];
  2977. prevKeys.splice(i, 0, keyForSpot);
  2978. prevKeys.splice(prevIndex, 0, keyInSpot);
  2979. moves.push([keyInSpot, keyForSpot]);
  2980. } else {
  2981. sames.push(key);
  2982. }
  2983. lastKey = key;
  2984. }
  2985. for (let i = 0; i < removes.length; i++) {
  2986. let key = removes[i];
  2987. if (!!lookup[key]._x_effects) {
  2988. lookup[key]._x_effects.forEach(dequeueJob);
  2989. }
  2990. lookup[key].remove();
  2991. lookup[key] = null;
  2992. delete lookup[key];
  2993. }
  2994. for (let i = 0; i < moves.length; i++) {
  2995. let [keyInSpot, keyForSpot] = moves[i];
  2996. let elInSpot = lookup[keyInSpot];
  2997. let elForSpot = lookup[keyForSpot];
  2998. let marker = document.createElement("div");
  2999. mutateDom(() => {
  3000. if (!elForSpot)
  3001. warn(`x-for ":key" is undefined or invalid`, templateEl);
  3002. elForSpot.after(marker);
  3003. elInSpot.after(elForSpot);
  3004. elForSpot._x_currentIfEl && elForSpot.after(elForSpot._x_currentIfEl);
  3005. marker.before(elInSpot);
  3006. elInSpot._x_currentIfEl && elInSpot.after(elInSpot._x_currentIfEl);
  3007. marker.remove();
  3008. });
  3009. elForSpot._x_refreshXForScope(scopes[keys.indexOf(keyForSpot)]);
  3010. }
  3011. for (let i = 0; i < adds.length; i++) {
  3012. let [lastKey2, index] = adds[i];
  3013. let lastEl = lastKey2 === "template" ? templateEl : lookup[lastKey2];
  3014. if (lastEl._x_currentIfEl)
  3015. lastEl = lastEl._x_currentIfEl;
  3016. let scope2 = scopes[index];
  3017. let key = keys[index];
  3018. let clone2 = document.importNode(templateEl.content, true).firstElementChild;
  3019. let reactiveScope = reactive(scope2);
  3020. addScopeToNode(clone2, reactiveScope, templateEl);
  3021. clone2._x_refreshXForScope = (newScope) => {
  3022. Object.entries(newScope).forEach(([key2, value]) => {
  3023. reactiveScope[key2] = value;
  3024. });
  3025. };
  3026. mutateDom(() => {
  3027. lastEl.after(clone2);
  3028. initTree(clone2);
  3029. });
  3030. if (typeof key === "object") {
  3031. warn("x-for key cannot be an object, it must be a string or an integer", templateEl);
  3032. }
  3033. lookup[key] = clone2;
  3034. }
  3035. for (let i = 0; i < sames.length; i++) {
  3036. lookup[sames[i]]._x_refreshXForScope(scopes[keys.indexOf(sames[i])]);
  3037. }
  3038. templateEl._x_prevKeys = keys;
  3039. });
  3040. }
  3041. function parseForExpression(expression) {
  3042. let forIteratorRE = /,([^,\}\]]*)(?:,([^,\}\]]*))?$/;
  3043. let stripParensRE = /^\s*\(|\)\s*$/g;
  3044. let forAliasRE = /([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/;
  3045. let inMatch = expression.match(forAliasRE);
  3046. if (!inMatch)
  3047. return;
  3048. let res = {};
  3049. res.items = inMatch[2].trim();
  3050. let item = inMatch[1].replace(stripParensRE, "").trim();
  3051. let iteratorMatch = item.match(forIteratorRE);
  3052. if (iteratorMatch) {
  3053. res.item = item.replace(forIteratorRE, "").trim();
  3054. res.index = iteratorMatch[1].trim();
  3055. if (iteratorMatch[2]) {
  3056. res.collection = iteratorMatch[2].trim();
  3057. }
  3058. } else {
  3059. res.item = item;
  3060. }
  3061. return res;
  3062. }
  3063. function getIterationScopeVariables(iteratorNames, item, index, items) {
  3064. let scopeVariables = {};
  3065. if (/^\[.*\]$/.test(iteratorNames.item) && Array.isArray(item)) {
  3066. let names = iteratorNames.item.replace("[", "").replace("]", "").split(",").map((i) => i.trim());
  3067. names.forEach((name, i) => {
  3068. scopeVariables[name] = item[i];
  3069. });
  3070. } else if (/^\{.*\}$/.test(iteratorNames.item) && !Array.isArray(item) && typeof item === "object") {
  3071. let names = iteratorNames.item.replace("{", "").replace("}", "").split(",").map((i) => i.trim());
  3072. names.forEach((name) => {
  3073. scopeVariables[name] = item[name];
  3074. });
  3075. } else {
  3076. scopeVariables[iteratorNames.item] = item;
  3077. }
  3078. if (iteratorNames.index)
  3079. scopeVariables[iteratorNames.index] = index;
  3080. if (iteratorNames.collection)
  3081. scopeVariables[iteratorNames.collection] = items;
  3082. return scopeVariables;
  3083. }
  3084. function isNumeric3(subject) {
  3085. return !Array.isArray(subject) && !isNaN(subject);
  3086. }
  3087. // packages/alpinejs/src/directives/x-ref.js
  3088. function handler3() {
  3089. }
  3090. handler3.inline = (el, { expression }, { cleanup: cleanup2 }) => {
  3091. let root = closestRoot(el);
  3092. if (!root._x_refs)
  3093. root._x_refs = {};
  3094. root._x_refs[expression] = el;
  3095. cleanup2(() => delete root._x_refs[expression]);
  3096. };
  3097. directive("ref", handler3);
  3098. // packages/alpinejs/src/directives/x-if.js
  3099. directive("if", (el, { expression }, { effect: effect3, cleanup: cleanup2 }) => {
  3100. let evaluate2 = evaluateLater(el, expression);
  3101. let show = () => {
  3102. if (el._x_currentIfEl)
  3103. return el._x_currentIfEl;
  3104. let clone2 = el.content.cloneNode(true).firstElementChild;
  3105. addScopeToNode(clone2, {}, el);
  3106. mutateDom(() => {
  3107. el.after(clone2);
  3108. initTree(clone2);
  3109. });
  3110. el._x_currentIfEl = clone2;
  3111. el._x_undoIf = () => {
  3112. walk(clone2, (node) => {
  3113. if (!!node._x_effects) {
  3114. node._x_effects.forEach(dequeueJob);
  3115. }
  3116. });
  3117. clone2.remove();
  3118. delete el._x_currentIfEl;
  3119. };
  3120. return clone2;
  3121. };
  3122. let hide = () => {
  3123. if (!el._x_undoIf)
  3124. return;
  3125. el._x_undoIf();
  3126. delete el._x_undoIf;
  3127. };
  3128. effect3(() => evaluate2((value) => {
  3129. value ? show() : hide();
  3130. }));
  3131. cleanup2(() => el._x_undoIf && el._x_undoIf());
  3132. });
  3133. // packages/alpinejs/src/directives/x-id.js
  3134. directive("id", (el, { expression }, { evaluate: evaluate2 }) => {
  3135. let names = evaluate2(expression);
  3136. names.forEach((name) => setIdRoot(el, name));
  3137. });
  3138. // packages/alpinejs/src/directives/x-on.js
  3139. mapAttributes(startingWith("@", into(prefix("on:"))));
  3140. directive("on", skipDuringClone((el, { value, modifiers, expression }, { cleanup: cleanup2 }) => {
  3141. let evaluate2 = expression ? evaluateLater(el, expression) : () => {
  3142. };
  3143. if (el.tagName.toLowerCase() === "template") {
  3144. if (!el._x_forwardEvents)
  3145. el._x_forwardEvents = [];
  3146. if (!el._x_forwardEvents.includes(value))
  3147. el._x_forwardEvents.push(value);
  3148. }
  3149. let removeListener = on(el, value, modifiers, (e) => {
  3150. evaluate2(() => {
  3151. }, { scope: { "$event": e }, params: [e] });
  3152. });
  3153. cleanup2(() => removeListener());
  3154. }));
  3155. // packages/alpinejs/src/directives/index.js
  3156. warnMissingPluginDirective("Collapse", "collapse", "collapse");
  3157. warnMissingPluginDirective("Intersect", "intersect", "intersect");
  3158. warnMissingPluginDirective("Focus", "trap", "focus");
  3159. warnMissingPluginDirective("Mask", "mask", "mask");
  3160. function warnMissingPluginDirective(name, directiveName2, slug) {
  3161. directive(directiveName2, (el) => warn(`You can't use [x-${directiveName2}] without first installing the "${name}" plugin here: https://alpinejs.dev/plugins/${slug}`, el));
  3162. }
  3163. // packages/alpinejs/src/index.js
  3164. alpine_default.setEvaluator(normalEvaluator);
  3165. alpine_default.setReactivityEngine({ reactive: reactive2, effect: effect2, release: stop, raw: toRaw });
  3166. var src_default = alpine_default;
  3167. // packages/alpinejs/builds/module.js
  3168. var module_default = src_default;
  3169. export {
  3170. module_default as default
  3171. };