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