@elementor/alpinejs 3.33.0-238

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js ADDED
@@ -0,0 +1,4106 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/index.ts
21
+ var index_exports = {};
22
+ __export(index_exports, {
23
+ Alpine: () => src_default,
24
+ init: () => init
25
+ });
26
+ module.exports = __toCommonJS(index_exports);
27
+
28
+ // ../../../node_modules/@alpinejs/csp/dist/module.esm.js
29
+ var flushPending = false;
30
+ var flushing = false;
31
+ var queue = [];
32
+ var lastFlushedIndex = -1;
33
+ function scheduler(callback) {
34
+ queueJob(callback);
35
+ }
36
+ function queueJob(job) {
37
+ if (!queue.includes(job))
38
+ queue.push(job);
39
+ queueFlush();
40
+ }
41
+ function dequeueJob(job) {
42
+ let index = queue.indexOf(job);
43
+ if (index !== -1 && index > lastFlushedIndex)
44
+ queue.splice(index, 1);
45
+ }
46
+ function queueFlush() {
47
+ if (!flushing && !flushPending) {
48
+ flushPending = true;
49
+ queueMicrotask(flushJobs);
50
+ }
51
+ }
52
+ function flushJobs() {
53
+ flushPending = false;
54
+ flushing = true;
55
+ for (let i = 0; i < queue.length; i++) {
56
+ queue[i]();
57
+ lastFlushedIndex = i;
58
+ }
59
+ queue.length = 0;
60
+ lastFlushedIndex = -1;
61
+ flushing = false;
62
+ }
63
+ var reactive;
64
+ var effect;
65
+ var release;
66
+ var raw;
67
+ var shouldSchedule = true;
68
+ function disableEffectScheduling(callback) {
69
+ shouldSchedule = false;
70
+ callback();
71
+ shouldSchedule = true;
72
+ }
73
+ function setReactivityEngine(engine) {
74
+ reactive = engine.reactive;
75
+ release = engine.release;
76
+ effect = (callback) => engine.effect(callback, { scheduler: (task) => {
77
+ if (shouldSchedule) {
78
+ scheduler(task);
79
+ } else {
80
+ task();
81
+ }
82
+ } });
83
+ raw = engine.raw;
84
+ }
85
+ function overrideEffect(override) {
86
+ effect = override;
87
+ }
88
+ function elementBoundEffect(el) {
89
+ let cleanup2 = () => {
90
+ };
91
+ let wrappedEffect = (callback) => {
92
+ let effectReference = effect(callback);
93
+ if (!el._x_effects) {
94
+ el._x_effects = /* @__PURE__ */ new Set();
95
+ el._x_runEffects = () => {
96
+ el._x_effects.forEach((i) => i());
97
+ };
98
+ }
99
+ el._x_effects.add(effectReference);
100
+ cleanup2 = () => {
101
+ if (effectReference === void 0)
102
+ return;
103
+ el._x_effects.delete(effectReference);
104
+ release(effectReference);
105
+ };
106
+ return effectReference;
107
+ };
108
+ return [wrappedEffect, () => {
109
+ cleanup2();
110
+ }];
111
+ }
112
+ function watch(getter, callback) {
113
+ let firstTime = true;
114
+ let oldValue;
115
+ let effectReference = effect(() => {
116
+ let value = getter();
117
+ JSON.stringify(value);
118
+ if (!firstTime) {
119
+ queueMicrotask(() => {
120
+ callback(value, oldValue);
121
+ oldValue = value;
122
+ });
123
+ } else {
124
+ oldValue = value;
125
+ }
126
+ firstTime = false;
127
+ });
128
+ return () => release(effectReference);
129
+ }
130
+ var onAttributeAddeds = [];
131
+ var onElRemoveds = [];
132
+ var onElAddeds = [];
133
+ function onElAdded(callback) {
134
+ onElAddeds.push(callback);
135
+ }
136
+ function onElRemoved(el, callback) {
137
+ if (typeof callback === "function") {
138
+ if (!el._x_cleanups)
139
+ el._x_cleanups = [];
140
+ el._x_cleanups.push(callback);
141
+ } else {
142
+ callback = el;
143
+ onElRemoveds.push(callback);
144
+ }
145
+ }
146
+ function onAttributesAdded(callback) {
147
+ onAttributeAddeds.push(callback);
148
+ }
149
+ function onAttributeRemoved(el, name, callback) {
150
+ if (!el._x_attributeCleanups)
151
+ el._x_attributeCleanups = {};
152
+ if (!el._x_attributeCleanups[name])
153
+ el._x_attributeCleanups[name] = [];
154
+ el._x_attributeCleanups[name].push(callback);
155
+ }
156
+ function cleanupAttributes(el, names) {
157
+ if (!el._x_attributeCleanups)
158
+ return;
159
+ Object.entries(el._x_attributeCleanups).forEach(([name, value]) => {
160
+ if (names === void 0 || names.includes(name)) {
161
+ value.forEach((i) => i());
162
+ delete el._x_attributeCleanups[name];
163
+ }
164
+ });
165
+ }
166
+ function cleanupElement(el) {
167
+ el._x_effects?.forEach(dequeueJob);
168
+ while (el._x_cleanups?.length)
169
+ el._x_cleanups.pop()();
170
+ }
171
+ var observer = new MutationObserver(onMutate);
172
+ var currentlyObserving = false;
173
+ function startObservingMutations() {
174
+ observer.observe(document, { subtree: true, childList: true, attributes: true, attributeOldValue: true });
175
+ currentlyObserving = true;
176
+ }
177
+ function stopObservingMutations() {
178
+ flushObserver();
179
+ observer.disconnect();
180
+ currentlyObserving = false;
181
+ }
182
+ var queuedMutations = [];
183
+ function flushObserver() {
184
+ let records = observer.takeRecords();
185
+ queuedMutations.push(() => records.length > 0 && onMutate(records));
186
+ let queueLengthWhenTriggered = queuedMutations.length;
187
+ queueMicrotask(() => {
188
+ if (queuedMutations.length === queueLengthWhenTriggered) {
189
+ while (queuedMutations.length > 0)
190
+ queuedMutations.shift()();
191
+ }
192
+ });
193
+ }
194
+ function mutateDom(callback) {
195
+ if (!currentlyObserving)
196
+ return callback();
197
+ stopObservingMutations();
198
+ let result = callback();
199
+ startObservingMutations();
200
+ return result;
201
+ }
202
+ var isCollecting = false;
203
+ var deferredMutations = [];
204
+ function deferMutations() {
205
+ isCollecting = true;
206
+ }
207
+ function flushAndStopDeferringMutations() {
208
+ isCollecting = false;
209
+ onMutate(deferredMutations);
210
+ deferredMutations = [];
211
+ }
212
+ function onMutate(mutations) {
213
+ if (isCollecting) {
214
+ deferredMutations = deferredMutations.concat(mutations);
215
+ return;
216
+ }
217
+ let addedNodes = [];
218
+ let removedNodes = /* @__PURE__ */ new Set();
219
+ let addedAttributes = /* @__PURE__ */ new Map();
220
+ let removedAttributes = /* @__PURE__ */ new Map();
221
+ for (let i = 0; i < mutations.length; i++) {
222
+ if (mutations[i].target._x_ignoreMutationObserver)
223
+ continue;
224
+ if (mutations[i].type === "childList") {
225
+ mutations[i].removedNodes.forEach((node) => {
226
+ if (node.nodeType !== 1)
227
+ return;
228
+ if (!node._x_marker)
229
+ return;
230
+ removedNodes.add(node);
231
+ });
232
+ mutations[i].addedNodes.forEach((node) => {
233
+ if (node.nodeType !== 1)
234
+ return;
235
+ if (removedNodes.has(node)) {
236
+ removedNodes.delete(node);
237
+ return;
238
+ }
239
+ if (node._x_marker)
240
+ return;
241
+ addedNodes.push(node);
242
+ });
243
+ }
244
+ if (mutations[i].type === "attributes") {
245
+ let el = mutations[i].target;
246
+ let name = mutations[i].attributeName;
247
+ let oldValue = mutations[i].oldValue;
248
+ let add2 = () => {
249
+ if (!addedAttributes.has(el))
250
+ addedAttributes.set(el, []);
251
+ addedAttributes.get(el).push({ name, value: el.getAttribute(name) });
252
+ };
253
+ let remove = () => {
254
+ if (!removedAttributes.has(el))
255
+ removedAttributes.set(el, []);
256
+ removedAttributes.get(el).push(name);
257
+ };
258
+ if (el.hasAttribute(name) && oldValue === null) {
259
+ add2();
260
+ } else if (el.hasAttribute(name)) {
261
+ remove();
262
+ add2();
263
+ } else {
264
+ remove();
265
+ }
266
+ }
267
+ }
268
+ removedAttributes.forEach((attrs, el) => {
269
+ cleanupAttributes(el, attrs);
270
+ });
271
+ addedAttributes.forEach((attrs, el) => {
272
+ onAttributeAddeds.forEach((i) => i(el, attrs));
273
+ });
274
+ for (let node of removedNodes) {
275
+ if (addedNodes.some((i) => i.contains(node)))
276
+ continue;
277
+ onElRemoveds.forEach((i) => i(node));
278
+ }
279
+ for (let node of addedNodes) {
280
+ if (!node.isConnected)
281
+ continue;
282
+ onElAddeds.forEach((i) => i(node));
283
+ }
284
+ addedNodes = null;
285
+ removedNodes = null;
286
+ addedAttributes = null;
287
+ removedAttributes = null;
288
+ }
289
+ function scope(node) {
290
+ return mergeProxies(closestDataStack(node));
291
+ }
292
+ function addScopeToNode(node, data2, referenceNode) {
293
+ node._x_dataStack = [data2, ...closestDataStack(referenceNode || node)];
294
+ return () => {
295
+ node._x_dataStack = node._x_dataStack.filter((i) => i !== data2);
296
+ };
297
+ }
298
+ function closestDataStack(node) {
299
+ if (node._x_dataStack)
300
+ return node._x_dataStack;
301
+ if (typeof ShadowRoot === "function" && node instanceof ShadowRoot) {
302
+ return closestDataStack(node.host);
303
+ }
304
+ if (!node.parentNode) {
305
+ return [];
306
+ }
307
+ return closestDataStack(node.parentNode);
308
+ }
309
+ function mergeProxies(objects) {
310
+ return new Proxy({ objects }, mergeProxyTrap);
311
+ }
312
+ var mergeProxyTrap = {
313
+ ownKeys({ objects }) {
314
+ return Array.from(
315
+ new Set(objects.flatMap((i) => Object.keys(i)))
316
+ );
317
+ },
318
+ has({ objects }, name) {
319
+ if (name == Symbol.unscopables)
320
+ return false;
321
+ return objects.some(
322
+ (obj) => Object.prototype.hasOwnProperty.call(obj, name) || Reflect.has(obj, name)
323
+ );
324
+ },
325
+ get({ objects }, name, thisProxy) {
326
+ if (name == "toJSON")
327
+ return collapseProxies;
328
+ return Reflect.get(
329
+ objects.find(
330
+ (obj) => Reflect.has(obj, name)
331
+ ) || {},
332
+ name,
333
+ thisProxy
334
+ );
335
+ },
336
+ set({ objects }, name, value, thisProxy) {
337
+ const target = objects.find(
338
+ (obj) => Object.prototype.hasOwnProperty.call(obj, name)
339
+ ) || objects[objects.length - 1];
340
+ const descriptor = Object.getOwnPropertyDescriptor(target, name);
341
+ if (descriptor?.set && descriptor?.get)
342
+ return descriptor.set.call(thisProxy, value) || true;
343
+ return Reflect.set(target, name, value);
344
+ }
345
+ };
346
+ function collapseProxies() {
347
+ let keys = Reflect.ownKeys(this);
348
+ return keys.reduce((acc, key) => {
349
+ acc[key] = Reflect.get(this, key);
350
+ return acc;
351
+ }, {});
352
+ }
353
+ function initInterceptors(data2) {
354
+ let isObject2 = (val) => typeof val === "object" && !Array.isArray(val) && val !== null;
355
+ let recurse = (obj, basePath = "") => {
356
+ Object.entries(Object.getOwnPropertyDescriptors(obj)).forEach(([key, { value, enumerable }]) => {
357
+ if (enumerable === false || value === void 0)
358
+ return;
359
+ if (typeof value === "object" && value !== null && value.__v_skip)
360
+ return;
361
+ let path = basePath === "" ? key : `${basePath}.${key}`;
362
+ if (typeof value === "object" && value !== null && value._x_interceptor) {
363
+ obj[key] = value.initialize(data2, path, key);
364
+ } else {
365
+ if (isObject2(value) && value !== obj && !(value instanceof Element)) {
366
+ recurse(value, path);
367
+ }
368
+ }
369
+ });
370
+ };
371
+ return recurse(data2);
372
+ }
373
+ function interceptor(callback, mutateObj = () => {
374
+ }) {
375
+ let obj = {
376
+ initialValue: void 0,
377
+ _x_interceptor: true,
378
+ initialize(data2, path, key) {
379
+ return callback(this.initialValue, () => get(data2, path), (value) => set(data2, path, value), path, key);
380
+ }
381
+ };
382
+ mutateObj(obj);
383
+ return (initialValue) => {
384
+ if (typeof initialValue === "object" && initialValue !== null && initialValue._x_interceptor) {
385
+ let initialize = obj.initialize.bind(obj);
386
+ obj.initialize = (data2, path, key) => {
387
+ let innerValue = initialValue.initialize(data2, path, key);
388
+ obj.initialValue = innerValue;
389
+ return initialize(data2, path, key);
390
+ };
391
+ } else {
392
+ obj.initialValue = initialValue;
393
+ }
394
+ return obj;
395
+ };
396
+ }
397
+ function get(obj, path) {
398
+ return path.split(".").reduce((carry, segment) => carry[segment], obj);
399
+ }
400
+ function set(obj, path, value) {
401
+ if (typeof path === "string")
402
+ path = path.split(".");
403
+ if (path.length === 1)
404
+ obj[path[0]] = value;
405
+ else if (path.length === 0)
406
+ throw error;
407
+ else {
408
+ if (obj[path[0]])
409
+ return set(obj[path[0]], path.slice(1), value);
410
+ else {
411
+ obj[path[0]] = {};
412
+ return set(obj[path[0]], path.slice(1), value);
413
+ }
414
+ }
415
+ }
416
+ var magics = {};
417
+ function magic(name, callback) {
418
+ magics[name] = callback;
419
+ }
420
+ function injectMagics(obj, el) {
421
+ let memoizedUtilities = getUtilities(el);
422
+ Object.entries(magics).forEach(([name, callback]) => {
423
+ Object.defineProperty(obj, `$${name}`, {
424
+ get() {
425
+ return callback(el, memoizedUtilities);
426
+ },
427
+ enumerable: false
428
+ });
429
+ });
430
+ return obj;
431
+ }
432
+ function getUtilities(el) {
433
+ let [utilities, cleanup2] = getElementBoundUtilities(el);
434
+ let utils = { interceptor, ...utilities };
435
+ onElRemoved(el, cleanup2);
436
+ return utils;
437
+ }
438
+ function tryCatch(el, expression, callback, ...args) {
439
+ try {
440
+ return callback(...args);
441
+ } catch (e) {
442
+ handleError(e, el, expression);
443
+ }
444
+ }
445
+ function handleError(error2, el, expression = void 0) {
446
+ error2 = Object.assign(
447
+ error2 ?? { message: "No error message given." },
448
+ { el, expression }
449
+ );
450
+ console.warn(`Alpine Expression Error: ${error2.message}
451
+
452
+ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
453
+ setTimeout(() => {
454
+ throw error2;
455
+ }, 0);
456
+ }
457
+ var shouldAutoEvaluateFunctions = true;
458
+ function dontAutoEvaluateFunctions(callback) {
459
+ let cache = shouldAutoEvaluateFunctions;
460
+ shouldAutoEvaluateFunctions = false;
461
+ let result = callback();
462
+ shouldAutoEvaluateFunctions = cache;
463
+ return result;
464
+ }
465
+ function evaluate(el, expression, extras = {}) {
466
+ let result;
467
+ evaluateLater(el, expression)((value) => result = value, extras);
468
+ return result;
469
+ }
470
+ function evaluateLater(...args) {
471
+ return theEvaluatorFunction(...args);
472
+ }
473
+ var theEvaluatorFunction = normalEvaluator;
474
+ function setEvaluator(newEvaluator) {
475
+ theEvaluatorFunction = newEvaluator;
476
+ }
477
+ function normalEvaluator(el, expression) {
478
+ let overriddenMagics = {};
479
+ injectMagics(overriddenMagics, el);
480
+ let dataStack = [overriddenMagics, ...closestDataStack(el)];
481
+ let evaluator = typeof expression === "function" ? generateEvaluatorFromFunction(dataStack, expression) : generateEvaluatorFromString(dataStack, expression, el);
482
+ return tryCatch.bind(null, el, expression, evaluator);
483
+ }
484
+ function generateEvaluatorFromFunction(dataStack, func) {
485
+ return (receiver = () => {
486
+ }, { scope: scope2 = {}, params = [], context } = {}) => {
487
+ let result = func.apply(mergeProxies([scope2, ...dataStack]), params);
488
+ runIfTypeOfFunction(receiver, result);
489
+ };
490
+ }
491
+ var evaluatorMemo = {};
492
+ function generateFunctionFromString(expression, el) {
493
+ if (evaluatorMemo[expression]) {
494
+ return evaluatorMemo[expression];
495
+ }
496
+ let AsyncFunction = Object.getPrototypeOf(async function() {
497
+ }).constructor;
498
+ let rightSideSafeExpression = /^[\n\s]*if.*\(.*\)/.test(expression.trim()) || /^(let|const)\s/.test(expression.trim()) ? `(async()=>{ ${expression} })()` : expression;
499
+ const safeAsyncFunction = () => {
500
+ try {
501
+ let func2 = new AsyncFunction(
502
+ ["__self", "scope"],
503
+ `with (scope) { __self.result = ${rightSideSafeExpression} }; __self.finished = true; return __self.result;`
504
+ );
505
+ Object.defineProperty(func2, "name", {
506
+ value: `[Alpine] ${expression}`
507
+ });
508
+ return func2;
509
+ } catch (error2) {
510
+ handleError(error2, el, expression);
511
+ return Promise.resolve();
512
+ }
513
+ };
514
+ let func = safeAsyncFunction();
515
+ evaluatorMemo[expression] = func;
516
+ return func;
517
+ }
518
+ function generateEvaluatorFromString(dataStack, expression, el) {
519
+ let func = generateFunctionFromString(expression, el);
520
+ return (receiver = () => {
521
+ }, { scope: scope2 = {}, params = [], context } = {}) => {
522
+ func.result = void 0;
523
+ func.finished = false;
524
+ let completeScope = mergeProxies([scope2, ...dataStack]);
525
+ if (typeof func === "function") {
526
+ let promise = func.call(context, func, completeScope).catch((error2) => handleError(error2, el, expression));
527
+ if (func.finished) {
528
+ runIfTypeOfFunction(receiver, func.result, completeScope, params, el);
529
+ func.result = void 0;
530
+ } else {
531
+ promise.then((result) => {
532
+ runIfTypeOfFunction(receiver, result, completeScope, params, el);
533
+ }).catch((error2) => handleError(error2, el, expression)).finally(() => func.result = void 0);
534
+ }
535
+ }
536
+ };
537
+ }
538
+ function runIfTypeOfFunction(receiver, value, scope2, params, el) {
539
+ if (shouldAutoEvaluateFunctions && typeof value === "function") {
540
+ let result = value.apply(scope2, params);
541
+ if (result instanceof Promise) {
542
+ result.then((i) => runIfTypeOfFunction(receiver, i, scope2, params)).catch((error2) => handleError(error2, el, value));
543
+ } else {
544
+ receiver(result);
545
+ }
546
+ } else if (typeof value === "object" && value instanceof Promise) {
547
+ value.then((i) => receiver(i));
548
+ } else {
549
+ receiver(value);
550
+ }
551
+ }
552
+ var prefixAsString = "x-";
553
+ function prefix(subject = "") {
554
+ return prefixAsString + subject;
555
+ }
556
+ function setPrefix(newPrefix) {
557
+ prefixAsString = newPrefix;
558
+ }
559
+ var directiveHandlers = {};
560
+ function directive(name, callback) {
561
+ directiveHandlers[name] = callback;
562
+ return {
563
+ before(directive2) {
564
+ if (!directiveHandlers[directive2]) {
565
+ console.warn(String.raw`Cannot find directive \`${directive2}\`. \`${name}\` will use the default order of execution`);
566
+ return;
567
+ }
568
+ const pos = directiveOrder.indexOf(directive2);
569
+ directiveOrder.splice(pos >= 0 ? pos : directiveOrder.indexOf("DEFAULT"), 0, name);
570
+ }
571
+ };
572
+ }
573
+ function directiveExists(name) {
574
+ return Object.keys(directiveHandlers).includes(name);
575
+ }
576
+ function directives(el, attributes, originalAttributeOverride) {
577
+ attributes = Array.from(attributes);
578
+ if (el._x_virtualDirectives) {
579
+ let vAttributes = Object.entries(el._x_virtualDirectives).map(([name, value]) => ({ name, value }));
580
+ let staticAttributes = attributesOnly(vAttributes);
581
+ vAttributes = vAttributes.map((attribute) => {
582
+ if (staticAttributes.find((attr) => attr.name === attribute.name)) {
583
+ return {
584
+ name: `x-bind:${attribute.name}`,
585
+ value: `"${attribute.value}"`
586
+ };
587
+ }
588
+ return attribute;
589
+ });
590
+ attributes = attributes.concat(vAttributes);
591
+ }
592
+ let transformedAttributeMap = {};
593
+ let directives2 = attributes.map(toTransformedAttributes((newName, oldName) => transformedAttributeMap[newName] = oldName)).filter(outNonAlpineAttributes).map(toParsedDirectives(transformedAttributeMap, originalAttributeOverride)).sort(byPriority);
594
+ return directives2.map((directive2) => {
595
+ return getDirectiveHandler(el, directive2);
596
+ });
597
+ }
598
+ function attributesOnly(attributes) {
599
+ return Array.from(attributes).map(toTransformedAttributes()).filter((attr) => !outNonAlpineAttributes(attr));
600
+ }
601
+ var isDeferringHandlers = false;
602
+ var directiveHandlerStacks = /* @__PURE__ */ new Map();
603
+ var currentHandlerStackKey = Symbol();
604
+ function deferHandlingDirectives(callback) {
605
+ isDeferringHandlers = true;
606
+ let key = Symbol();
607
+ currentHandlerStackKey = key;
608
+ directiveHandlerStacks.set(key, []);
609
+ let flushHandlers = () => {
610
+ while (directiveHandlerStacks.get(key).length)
611
+ directiveHandlerStacks.get(key).shift()();
612
+ directiveHandlerStacks.delete(key);
613
+ };
614
+ let stopDeferring = () => {
615
+ isDeferringHandlers = false;
616
+ flushHandlers();
617
+ };
618
+ callback(flushHandlers);
619
+ stopDeferring();
620
+ }
621
+ function getElementBoundUtilities(el) {
622
+ let cleanups = [];
623
+ let cleanup2 = (callback) => cleanups.push(callback);
624
+ let [effect3, cleanupEffect] = elementBoundEffect(el);
625
+ cleanups.push(cleanupEffect);
626
+ let utilities = {
627
+ Alpine: alpine_default,
628
+ effect: effect3,
629
+ cleanup: cleanup2,
630
+ evaluateLater: evaluateLater.bind(evaluateLater, el),
631
+ evaluate: evaluate.bind(evaluate, el)
632
+ };
633
+ let doCleanup = () => cleanups.forEach((i) => i());
634
+ return [utilities, doCleanup];
635
+ }
636
+ function getDirectiveHandler(el, directive2) {
637
+ let noop = () => {
638
+ };
639
+ let handler4 = directiveHandlers[directive2.type] || noop;
640
+ let [utilities, cleanup2] = getElementBoundUtilities(el);
641
+ onAttributeRemoved(el, directive2.original, cleanup2);
642
+ let fullHandler = () => {
643
+ if (el._x_ignore || el._x_ignoreSelf)
644
+ return;
645
+ handler4.inline && handler4.inline(el, directive2, utilities);
646
+ handler4 = handler4.bind(handler4, el, directive2, utilities);
647
+ isDeferringHandlers ? directiveHandlerStacks.get(currentHandlerStackKey).push(handler4) : handler4();
648
+ };
649
+ fullHandler.runCleanups = cleanup2;
650
+ return fullHandler;
651
+ }
652
+ var startingWith = (subject, replacement) => ({ name, value }) => {
653
+ if (name.startsWith(subject))
654
+ name = name.replace(subject, replacement);
655
+ return { name, value };
656
+ };
657
+ var into = (i) => i;
658
+ function toTransformedAttributes(callback = () => {
659
+ }) {
660
+ return ({ name, value }) => {
661
+ let { name: newName, value: newValue } = attributeTransformers.reduce((carry, transform) => {
662
+ return transform(carry);
663
+ }, { name, value });
664
+ if (newName !== name)
665
+ callback(newName, name);
666
+ return { name: newName, value: newValue };
667
+ };
668
+ }
669
+ var attributeTransformers = [];
670
+ function mapAttributes(callback) {
671
+ attributeTransformers.push(callback);
672
+ }
673
+ function outNonAlpineAttributes({ name }) {
674
+ return alpineAttributeRegex().test(name);
675
+ }
676
+ var alpineAttributeRegex = () => new RegExp(`^${prefixAsString}([^:^.]+)\\b`);
677
+ function toParsedDirectives(transformedAttributeMap, originalAttributeOverride) {
678
+ return ({ name, value }) => {
679
+ let typeMatch = name.match(alpineAttributeRegex());
680
+ let valueMatch = name.match(/:([a-zA-Z0-9\-_:]+)/);
681
+ let modifiers = name.match(/\.[^.\]]+(?=[^\]]*$)/g) || [];
682
+ let original = originalAttributeOverride || transformedAttributeMap[name] || name;
683
+ return {
684
+ type: typeMatch ? typeMatch[1] : null,
685
+ value: valueMatch ? valueMatch[1] : null,
686
+ modifiers: modifiers.map((i) => i.replace(".", "")),
687
+ expression: value,
688
+ original
689
+ };
690
+ };
691
+ }
692
+ var DEFAULT = "DEFAULT";
693
+ var directiveOrder = [
694
+ "ignore",
695
+ "ref",
696
+ "data",
697
+ "id",
698
+ "anchor",
699
+ "bind",
700
+ "init",
701
+ "for",
702
+ "model",
703
+ "modelable",
704
+ "transition",
705
+ "show",
706
+ "if",
707
+ DEFAULT,
708
+ "teleport"
709
+ ];
710
+ function byPriority(a, b) {
711
+ let typeA = directiveOrder.indexOf(a.type) === -1 ? DEFAULT : a.type;
712
+ let typeB = directiveOrder.indexOf(b.type) === -1 ? DEFAULT : b.type;
713
+ return directiveOrder.indexOf(typeA) - directiveOrder.indexOf(typeB);
714
+ }
715
+ function dispatch(el, name, detail = {}) {
716
+ el.dispatchEvent(
717
+ new CustomEvent(name, {
718
+ detail,
719
+ bubbles: true,
720
+ // Allows events to pass the shadow DOM barrier.
721
+ composed: true,
722
+ cancelable: true
723
+ })
724
+ );
725
+ }
726
+ function walk(el, callback) {
727
+ if (typeof ShadowRoot === "function" && el instanceof ShadowRoot) {
728
+ Array.from(el.children).forEach((el2) => walk(el2, callback));
729
+ return;
730
+ }
731
+ let skip = false;
732
+ callback(el, () => skip = true);
733
+ if (skip)
734
+ return;
735
+ let node = el.firstElementChild;
736
+ while (node) {
737
+ walk(node, callback, false);
738
+ node = node.nextElementSibling;
739
+ }
740
+ }
741
+ function warn(message, ...args) {
742
+ console.warn(`Alpine Warning: ${message}`, ...args);
743
+ }
744
+ var started = false;
745
+ function start() {
746
+ if (started)
747
+ warn("Alpine has already been initialized on this page. Calling Alpine.start() more than once can cause problems.");
748
+ started = true;
749
+ if (!document.body)
750
+ warn("Unable to initialize. Trying to load Alpine before `<body>` is available. Did you forget to add `defer` in Alpine's `<script>` tag?");
751
+ dispatch(document, "alpine:init");
752
+ dispatch(document, "alpine:initializing");
753
+ startObservingMutations();
754
+ onElAdded((el) => initTree(el, walk));
755
+ onElRemoved((el) => destroyTree(el));
756
+ onAttributesAdded((el, attrs) => {
757
+ directives(el, attrs).forEach((handle) => handle());
758
+ });
759
+ let outNestedComponents = (el) => !closestRoot(el.parentElement, true);
760
+ Array.from(document.querySelectorAll(allSelectors().join(","))).filter(outNestedComponents).forEach((el) => {
761
+ initTree(el);
762
+ });
763
+ dispatch(document, "alpine:initialized");
764
+ setTimeout(() => {
765
+ warnAboutMissingPlugins();
766
+ });
767
+ }
768
+ var rootSelectorCallbacks = [];
769
+ var initSelectorCallbacks = [];
770
+ function rootSelectors() {
771
+ return rootSelectorCallbacks.map((fn) => fn());
772
+ }
773
+ function allSelectors() {
774
+ return rootSelectorCallbacks.concat(initSelectorCallbacks).map((fn) => fn());
775
+ }
776
+ function addRootSelector(selectorCallback) {
777
+ rootSelectorCallbacks.push(selectorCallback);
778
+ }
779
+ function addInitSelector(selectorCallback) {
780
+ initSelectorCallbacks.push(selectorCallback);
781
+ }
782
+ function closestRoot(el, includeInitSelectors = false) {
783
+ return findClosest(el, (element) => {
784
+ const selectors = includeInitSelectors ? allSelectors() : rootSelectors();
785
+ if (selectors.some((selector) => element.matches(selector)))
786
+ return true;
787
+ });
788
+ }
789
+ function findClosest(el, callback) {
790
+ if (!el)
791
+ return;
792
+ if (callback(el))
793
+ return el;
794
+ if (el._x_teleportBack)
795
+ el = el._x_teleportBack;
796
+ if (!el.parentElement)
797
+ return;
798
+ return findClosest(el.parentElement, callback);
799
+ }
800
+ function isRoot(el) {
801
+ return rootSelectors().some((selector) => el.matches(selector));
802
+ }
803
+ var initInterceptors2 = [];
804
+ function interceptInit(callback) {
805
+ initInterceptors2.push(callback);
806
+ }
807
+ var markerDispenser = 1;
808
+ function initTree(el, walker = walk, intercept = () => {
809
+ }) {
810
+ if (findClosest(el, (i) => i._x_ignore))
811
+ return;
812
+ deferHandlingDirectives(() => {
813
+ walker(el, (el2, skip) => {
814
+ if (el2._x_marker)
815
+ return;
816
+ intercept(el2, skip);
817
+ initInterceptors2.forEach((i) => i(el2, skip));
818
+ directives(el2, el2.attributes).forEach((handle) => handle());
819
+ if (!el2._x_ignore)
820
+ el2._x_marker = markerDispenser++;
821
+ el2._x_ignore && skip();
822
+ });
823
+ });
824
+ }
825
+ function destroyTree(root, walker = walk) {
826
+ walker(root, (el) => {
827
+ cleanupElement(el);
828
+ cleanupAttributes(el);
829
+ delete el._x_marker;
830
+ });
831
+ }
832
+ function warnAboutMissingPlugins() {
833
+ let pluginDirectives = [
834
+ ["ui", "dialog", ["[x-dialog], [x-popover]"]],
835
+ ["anchor", "anchor", ["[x-anchor]"]],
836
+ ["sort", "sort", ["[x-sort]"]]
837
+ ];
838
+ pluginDirectives.forEach(([plugin2, directive2, selectors]) => {
839
+ if (directiveExists(directive2))
840
+ return;
841
+ selectors.some((selector) => {
842
+ if (document.querySelector(selector)) {
843
+ warn(`found "${selector}", but missing ${plugin2} plugin`);
844
+ return true;
845
+ }
846
+ });
847
+ });
848
+ }
849
+ var tickStack = [];
850
+ var isHolding = false;
851
+ function nextTick(callback = () => {
852
+ }) {
853
+ queueMicrotask(() => {
854
+ isHolding || setTimeout(() => {
855
+ releaseNextTicks();
856
+ });
857
+ });
858
+ return new Promise((res) => {
859
+ tickStack.push(() => {
860
+ callback();
861
+ res();
862
+ });
863
+ });
864
+ }
865
+ function releaseNextTicks() {
866
+ isHolding = false;
867
+ while (tickStack.length)
868
+ tickStack.shift()();
869
+ }
870
+ function holdNextTicks() {
871
+ isHolding = true;
872
+ }
873
+ function setClasses(el, value) {
874
+ if (Array.isArray(value)) {
875
+ return setClassesFromString(el, value.join(" "));
876
+ } else if (typeof value === "object" && value !== null) {
877
+ return setClassesFromObject(el, value);
878
+ } else if (typeof value === "function") {
879
+ return setClasses(el, value());
880
+ }
881
+ return setClassesFromString(el, value);
882
+ }
883
+ function setClassesFromString(el, classString) {
884
+ let split = (classString2) => classString2.split(" ").filter(Boolean);
885
+ let missingClasses = (classString2) => classString2.split(" ").filter((i) => !el.classList.contains(i)).filter(Boolean);
886
+ let addClassesAndReturnUndo = (classes) => {
887
+ el.classList.add(...classes);
888
+ return () => {
889
+ el.classList.remove(...classes);
890
+ };
891
+ };
892
+ classString = classString === true ? classString = "" : classString || "";
893
+ return addClassesAndReturnUndo(missingClasses(classString));
894
+ }
895
+ function setClassesFromObject(el, classObject) {
896
+ let split = (classString) => classString.split(" ").filter(Boolean);
897
+ let forAdd = Object.entries(classObject).flatMap(([classString, bool]) => bool ? split(classString) : false).filter(Boolean);
898
+ let forRemove = Object.entries(classObject).flatMap(([classString, bool]) => !bool ? split(classString) : false).filter(Boolean);
899
+ let added = [];
900
+ let removed = [];
901
+ forRemove.forEach((i) => {
902
+ if (el.classList.contains(i)) {
903
+ el.classList.remove(i);
904
+ removed.push(i);
905
+ }
906
+ });
907
+ forAdd.forEach((i) => {
908
+ if (!el.classList.contains(i)) {
909
+ el.classList.add(i);
910
+ added.push(i);
911
+ }
912
+ });
913
+ return () => {
914
+ removed.forEach((i) => el.classList.add(i));
915
+ added.forEach((i) => el.classList.remove(i));
916
+ };
917
+ }
918
+ function setStyles(el, value) {
919
+ if (typeof value === "object" && value !== null) {
920
+ return setStylesFromObject(el, value);
921
+ }
922
+ return setStylesFromString(el, value);
923
+ }
924
+ function setStylesFromObject(el, value) {
925
+ let previousStyles = {};
926
+ Object.entries(value).forEach(([key, value2]) => {
927
+ previousStyles[key] = el.style[key];
928
+ if (!key.startsWith("--")) {
929
+ key = kebabCase(key);
930
+ }
931
+ el.style.setProperty(key, value2);
932
+ });
933
+ setTimeout(() => {
934
+ if (el.style.length === 0) {
935
+ el.removeAttribute("style");
936
+ }
937
+ });
938
+ return () => {
939
+ setStyles(el, previousStyles);
940
+ };
941
+ }
942
+ function setStylesFromString(el, value) {
943
+ let cache = el.getAttribute("style", value);
944
+ el.setAttribute("style", value);
945
+ return () => {
946
+ el.setAttribute("style", cache || "");
947
+ };
948
+ }
949
+ function kebabCase(subject) {
950
+ return subject.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase();
951
+ }
952
+ function once(callback, fallback = () => {
953
+ }) {
954
+ let called = false;
955
+ return function() {
956
+ if (!called) {
957
+ called = true;
958
+ callback.apply(this, arguments);
959
+ } else {
960
+ fallback.apply(this, arguments);
961
+ }
962
+ };
963
+ }
964
+ directive("transition", (el, { value, modifiers, expression }, { evaluate: evaluate2 }) => {
965
+ if (typeof expression === "function")
966
+ expression = evaluate2(expression);
967
+ if (expression === false)
968
+ return;
969
+ if (!expression || typeof expression === "boolean") {
970
+ registerTransitionsFromHelper(el, modifiers, value);
971
+ } else {
972
+ registerTransitionsFromClassString(el, expression, value);
973
+ }
974
+ });
975
+ function registerTransitionsFromClassString(el, classString, stage) {
976
+ registerTransitionObject(el, setClasses, "");
977
+ let directiveStorageMap = {
978
+ "enter": (classes) => {
979
+ el._x_transition.enter.during = classes;
980
+ },
981
+ "enter-start": (classes) => {
982
+ el._x_transition.enter.start = classes;
983
+ },
984
+ "enter-end": (classes) => {
985
+ el._x_transition.enter.end = classes;
986
+ },
987
+ "leave": (classes) => {
988
+ el._x_transition.leave.during = classes;
989
+ },
990
+ "leave-start": (classes) => {
991
+ el._x_transition.leave.start = classes;
992
+ },
993
+ "leave-end": (classes) => {
994
+ el._x_transition.leave.end = classes;
995
+ }
996
+ };
997
+ directiveStorageMap[stage](classString);
998
+ }
999
+ function registerTransitionsFromHelper(el, modifiers, stage) {
1000
+ registerTransitionObject(el, setStyles);
1001
+ let doesntSpecify = !modifiers.includes("in") && !modifiers.includes("out") && !stage;
1002
+ let transitioningIn = doesntSpecify || modifiers.includes("in") || ["enter"].includes(stage);
1003
+ let transitioningOut = doesntSpecify || modifiers.includes("out") || ["leave"].includes(stage);
1004
+ if (modifiers.includes("in") && !doesntSpecify) {
1005
+ modifiers = modifiers.filter((i, index) => index < modifiers.indexOf("out"));
1006
+ }
1007
+ if (modifiers.includes("out") && !doesntSpecify) {
1008
+ modifiers = modifiers.filter((i, index) => index > modifiers.indexOf("out"));
1009
+ }
1010
+ let wantsAll = !modifiers.includes("opacity") && !modifiers.includes("scale");
1011
+ let wantsOpacity = wantsAll || modifiers.includes("opacity");
1012
+ let wantsScale = wantsAll || modifiers.includes("scale");
1013
+ let opacityValue = wantsOpacity ? 0 : 1;
1014
+ let scaleValue = wantsScale ? modifierValue(modifiers, "scale", 95) / 100 : 1;
1015
+ let delay = modifierValue(modifiers, "delay", 0) / 1e3;
1016
+ let origin = modifierValue(modifiers, "origin", "center");
1017
+ let property = "opacity, transform";
1018
+ let durationIn = modifierValue(modifiers, "duration", 150) / 1e3;
1019
+ let durationOut = modifierValue(modifiers, "duration", 75) / 1e3;
1020
+ let easing = `cubic-bezier(0.4, 0.0, 0.2, 1)`;
1021
+ if (transitioningIn) {
1022
+ el._x_transition.enter.during = {
1023
+ transformOrigin: origin,
1024
+ transitionDelay: `${delay}s`,
1025
+ transitionProperty: property,
1026
+ transitionDuration: `${durationIn}s`,
1027
+ transitionTimingFunction: easing
1028
+ };
1029
+ el._x_transition.enter.start = {
1030
+ opacity: opacityValue,
1031
+ transform: `scale(${scaleValue})`
1032
+ };
1033
+ el._x_transition.enter.end = {
1034
+ opacity: 1,
1035
+ transform: `scale(1)`
1036
+ };
1037
+ }
1038
+ if (transitioningOut) {
1039
+ el._x_transition.leave.during = {
1040
+ transformOrigin: origin,
1041
+ transitionDelay: `${delay}s`,
1042
+ transitionProperty: property,
1043
+ transitionDuration: `${durationOut}s`,
1044
+ transitionTimingFunction: easing
1045
+ };
1046
+ el._x_transition.leave.start = {
1047
+ opacity: 1,
1048
+ transform: `scale(1)`
1049
+ };
1050
+ el._x_transition.leave.end = {
1051
+ opacity: opacityValue,
1052
+ transform: `scale(${scaleValue})`
1053
+ };
1054
+ }
1055
+ }
1056
+ function registerTransitionObject(el, setFunction, defaultValue = {}) {
1057
+ if (!el._x_transition)
1058
+ el._x_transition = {
1059
+ enter: { during: defaultValue, start: defaultValue, end: defaultValue },
1060
+ leave: { during: defaultValue, start: defaultValue, end: defaultValue },
1061
+ in(before = () => {
1062
+ }, after = () => {
1063
+ }) {
1064
+ transition(el, setFunction, {
1065
+ during: this.enter.during,
1066
+ start: this.enter.start,
1067
+ end: this.enter.end
1068
+ }, before, after);
1069
+ },
1070
+ out(before = () => {
1071
+ }, after = () => {
1072
+ }) {
1073
+ transition(el, setFunction, {
1074
+ during: this.leave.during,
1075
+ start: this.leave.start,
1076
+ end: this.leave.end
1077
+ }, before, after);
1078
+ }
1079
+ };
1080
+ }
1081
+ window.Element.prototype._x_toggleAndCascadeWithTransitions = function(el, value, show, hide) {
1082
+ const nextTick2 = document.visibilityState === "visible" ? requestAnimationFrame : setTimeout;
1083
+ let clickAwayCompatibleShow = () => nextTick2(show);
1084
+ if (value) {
1085
+ if (el._x_transition && (el._x_transition.enter || el._x_transition.leave)) {
1086
+ 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();
1087
+ } else {
1088
+ el._x_transition ? el._x_transition.in(show) : clickAwayCompatibleShow();
1089
+ }
1090
+ return;
1091
+ }
1092
+ el._x_hidePromise = el._x_transition ? new Promise((resolve, reject) => {
1093
+ el._x_transition.out(() => {
1094
+ }, () => resolve(hide));
1095
+ el._x_transitioning && el._x_transitioning.beforeCancel(() => reject({ isFromCancelledTransition: true }));
1096
+ }) : Promise.resolve(hide);
1097
+ queueMicrotask(() => {
1098
+ let closest = closestHide(el);
1099
+ if (closest) {
1100
+ if (!closest._x_hideChildren)
1101
+ closest._x_hideChildren = [];
1102
+ closest._x_hideChildren.push(el);
1103
+ } else {
1104
+ nextTick2(() => {
1105
+ let hideAfterChildren = (el2) => {
1106
+ let carry = Promise.all([
1107
+ el2._x_hidePromise,
1108
+ ...(el2._x_hideChildren || []).map(hideAfterChildren)
1109
+ ]).then(([i]) => i?.());
1110
+ delete el2._x_hidePromise;
1111
+ delete el2._x_hideChildren;
1112
+ return carry;
1113
+ };
1114
+ hideAfterChildren(el).catch((e) => {
1115
+ if (!e.isFromCancelledTransition)
1116
+ throw e;
1117
+ });
1118
+ });
1119
+ }
1120
+ });
1121
+ };
1122
+ function closestHide(el) {
1123
+ let parent = el.parentNode;
1124
+ if (!parent)
1125
+ return;
1126
+ return parent._x_hidePromise ? parent : closestHide(parent);
1127
+ }
1128
+ function transition(el, setFunction, { during, start: start2, end } = {}, before = () => {
1129
+ }, after = () => {
1130
+ }) {
1131
+ if (el._x_transitioning)
1132
+ el._x_transitioning.cancel();
1133
+ if (Object.keys(during).length === 0 && Object.keys(start2).length === 0 && Object.keys(end).length === 0) {
1134
+ before();
1135
+ after();
1136
+ return;
1137
+ }
1138
+ let undoStart, undoDuring, undoEnd;
1139
+ performTransition(el, {
1140
+ start() {
1141
+ undoStart = setFunction(el, start2);
1142
+ },
1143
+ during() {
1144
+ undoDuring = setFunction(el, during);
1145
+ },
1146
+ before,
1147
+ end() {
1148
+ undoStart();
1149
+ undoEnd = setFunction(el, end);
1150
+ },
1151
+ after,
1152
+ cleanup() {
1153
+ undoDuring();
1154
+ undoEnd();
1155
+ }
1156
+ });
1157
+ }
1158
+ function performTransition(el, stages) {
1159
+ let interrupted, reachedBefore, reachedEnd;
1160
+ let finish = once(() => {
1161
+ mutateDom(() => {
1162
+ interrupted = true;
1163
+ if (!reachedBefore)
1164
+ stages.before();
1165
+ if (!reachedEnd) {
1166
+ stages.end();
1167
+ releaseNextTicks();
1168
+ }
1169
+ stages.after();
1170
+ if (el.isConnected)
1171
+ stages.cleanup();
1172
+ delete el._x_transitioning;
1173
+ });
1174
+ });
1175
+ el._x_transitioning = {
1176
+ beforeCancels: [],
1177
+ beforeCancel(callback) {
1178
+ this.beforeCancels.push(callback);
1179
+ },
1180
+ cancel: once(function() {
1181
+ while (this.beforeCancels.length) {
1182
+ this.beforeCancels.shift()();
1183
+ }
1184
+ ;
1185
+ finish();
1186
+ }),
1187
+ finish
1188
+ };
1189
+ mutateDom(() => {
1190
+ stages.start();
1191
+ stages.during();
1192
+ });
1193
+ holdNextTicks();
1194
+ requestAnimationFrame(() => {
1195
+ if (interrupted)
1196
+ return;
1197
+ let duration = Number(getComputedStyle(el).transitionDuration.replace(/,.*/, "").replace("s", "")) * 1e3;
1198
+ let delay = Number(getComputedStyle(el).transitionDelay.replace(/,.*/, "").replace("s", "")) * 1e3;
1199
+ if (duration === 0)
1200
+ duration = Number(getComputedStyle(el).animationDuration.replace("s", "")) * 1e3;
1201
+ mutateDom(() => {
1202
+ stages.before();
1203
+ });
1204
+ reachedBefore = true;
1205
+ requestAnimationFrame(() => {
1206
+ if (interrupted)
1207
+ return;
1208
+ mutateDom(() => {
1209
+ stages.end();
1210
+ });
1211
+ releaseNextTicks();
1212
+ setTimeout(el._x_transitioning.finish, duration + delay);
1213
+ reachedEnd = true;
1214
+ });
1215
+ });
1216
+ }
1217
+ function modifierValue(modifiers, key, fallback) {
1218
+ if (modifiers.indexOf(key) === -1)
1219
+ return fallback;
1220
+ const rawValue = modifiers[modifiers.indexOf(key) + 1];
1221
+ if (!rawValue)
1222
+ return fallback;
1223
+ if (key === "scale") {
1224
+ if (isNaN(rawValue))
1225
+ return fallback;
1226
+ }
1227
+ if (key === "duration" || key === "delay") {
1228
+ let match = rawValue.match(/([0-9]+)ms/);
1229
+ if (match)
1230
+ return match[1];
1231
+ }
1232
+ if (key === "origin") {
1233
+ if (["top", "right", "left", "center", "bottom"].includes(modifiers[modifiers.indexOf(key) + 2])) {
1234
+ return [rawValue, modifiers[modifiers.indexOf(key) + 2]].join(" ");
1235
+ }
1236
+ }
1237
+ return rawValue;
1238
+ }
1239
+ var isCloning = false;
1240
+ function skipDuringClone(callback, fallback = () => {
1241
+ }) {
1242
+ return (...args) => isCloning ? fallback(...args) : callback(...args);
1243
+ }
1244
+ function onlyDuringClone(callback) {
1245
+ return (...args) => isCloning && callback(...args);
1246
+ }
1247
+ var interceptors = [];
1248
+ function interceptClone(callback) {
1249
+ interceptors.push(callback);
1250
+ }
1251
+ function cloneNode(from, to) {
1252
+ interceptors.forEach((i) => i(from, to));
1253
+ isCloning = true;
1254
+ dontRegisterReactiveSideEffects(() => {
1255
+ initTree(to, (el, callback) => {
1256
+ callback(el, () => {
1257
+ });
1258
+ });
1259
+ });
1260
+ isCloning = false;
1261
+ }
1262
+ var isCloningLegacy = false;
1263
+ function clone(oldEl, newEl) {
1264
+ if (!newEl._x_dataStack)
1265
+ newEl._x_dataStack = oldEl._x_dataStack;
1266
+ isCloning = true;
1267
+ isCloningLegacy = true;
1268
+ dontRegisterReactiveSideEffects(() => {
1269
+ cloneTree(newEl);
1270
+ });
1271
+ isCloning = false;
1272
+ isCloningLegacy = false;
1273
+ }
1274
+ function cloneTree(el) {
1275
+ let hasRunThroughFirstEl = false;
1276
+ let shallowWalker = (el2, callback) => {
1277
+ walk(el2, (el3, skip) => {
1278
+ if (hasRunThroughFirstEl && isRoot(el3))
1279
+ return skip();
1280
+ hasRunThroughFirstEl = true;
1281
+ callback(el3, skip);
1282
+ });
1283
+ };
1284
+ initTree(el, shallowWalker);
1285
+ }
1286
+ function dontRegisterReactiveSideEffects(callback) {
1287
+ let cache = effect;
1288
+ overrideEffect((callback2, el) => {
1289
+ let storedEffect = cache(callback2);
1290
+ release(storedEffect);
1291
+ return () => {
1292
+ };
1293
+ });
1294
+ callback();
1295
+ overrideEffect(cache);
1296
+ }
1297
+ function bind(el, name, value, modifiers = []) {
1298
+ if (!el._x_bindings)
1299
+ el._x_bindings = reactive({});
1300
+ el._x_bindings[name] = value;
1301
+ name = modifiers.includes("camel") ? camelCase(name) : name;
1302
+ switch (name) {
1303
+ case "value":
1304
+ bindInputValue(el, value);
1305
+ break;
1306
+ case "style":
1307
+ bindStyles(el, value);
1308
+ break;
1309
+ case "class":
1310
+ bindClasses(el, value);
1311
+ break;
1312
+ case "selected":
1313
+ case "checked":
1314
+ bindAttributeAndProperty(el, name, value);
1315
+ break;
1316
+ default:
1317
+ bindAttribute(el, name, value);
1318
+ break;
1319
+ }
1320
+ }
1321
+ function bindInputValue(el, value) {
1322
+ if (isRadio(el)) {
1323
+ if (el.attributes.value === void 0) {
1324
+ el.value = value;
1325
+ }
1326
+ if (window.fromModel) {
1327
+ if (typeof value === "boolean") {
1328
+ el.checked = safeParseBoolean(el.value) === value;
1329
+ } else {
1330
+ el.checked = checkedAttrLooseCompare(el.value, value);
1331
+ }
1332
+ }
1333
+ } else if (isCheckbox(el)) {
1334
+ if (Number.isInteger(value)) {
1335
+ el.value = value;
1336
+ } else if (!Array.isArray(value) && typeof value !== "boolean" && ![null, void 0].includes(value)) {
1337
+ el.value = String(value);
1338
+ } else {
1339
+ if (Array.isArray(value)) {
1340
+ el.checked = value.some((val) => checkedAttrLooseCompare(val, el.value));
1341
+ } else {
1342
+ el.checked = !!value;
1343
+ }
1344
+ }
1345
+ } else if (el.tagName === "SELECT") {
1346
+ updateSelect(el, value);
1347
+ } else {
1348
+ if (el.value === value)
1349
+ return;
1350
+ el.value = value === void 0 ? "" : value;
1351
+ }
1352
+ }
1353
+ function bindClasses(el, value) {
1354
+ if (el._x_undoAddedClasses)
1355
+ el._x_undoAddedClasses();
1356
+ el._x_undoAddedClasses = setClasses(el, value);
1357
+ }
1358
+ function bindStyles(el, value) {
1359
+ if (el._x_undoAddedStyles)
1360
+ el._x_undoAddedStyles();
1361
+ el._x_undoAddedStyles = setStyles(el, value);
1362
+ }
1363
+ function bindAttributeAndProperty(el, name, value) {
1364
+ bindAttribute(el, name, value);
1365
+ setPropertyIfChanged(el, name, value);
1366
+ }
1367
+ function bindAttribute(el, name, value) {
1368
+ if ([null, void 0, false].includes(value) && attributeShouldntBePreservedIfFalsy(name)) {
1369
+ el.removeAttribute(name);
1370
+ } else {
1371
+ if (isBooleanAttr(name))
1372
+ value = name;
1373
+ setIfChanged(el, name, value);
1374
+ }
1375
+ }
1376
+ function setIfChanged(el, attrName, value) {
1377
+ if (el.getAttribute(attrName) != value) {
1378
+ el.setAttribute(attrName, value);
1379
+ }
1380
+ }
1381
+ function setPropertyIfChanged(el, propName, value) {
1382
+ if (el[propName] !== value) {
1383
+ el[propName] = value;
1384
+ }
1385
+ }
1386
+ function updateSelect(el, value) {
1387
+ const arrayWrappedValue = [].concat(value).map((value2) => {
1388
+ return value2 + "";
1389
+ });
1390
+ Array.from(el.options).forEach((option) => {
1391
+ option.selected = arrayWrappedValue.includes(option.value);
1392
+ });
1393
+ }
1394
+ function camelCase(subject) {
1395
+ return subject.toLowerCase().replace(/-(\w)/g, (match, char) => char.toUpperCase());
1396
+ }
1397
+ function checkedAttrLooseCompare(valueA, valueB) {
1398
+ return valueA == valueB;
1399
+ }
1400
+ function safeParseBoolean(rawValue) {
1401
+ if ([1, "1", "true", "on", "yes", true].includes(rawValue)) {
1402
+ return true;
1403
+ }
1404
+ if ([0, "0", "false", "off", "no", false].includes(rawValue)) {
1405
+ return false;
1406
+ }
1407
+ return rawValue ? Boolean(rawValue) : null;
1408
+ }
1409
+ var booleanAttributes = /* @__PURE__ */ new Set([
1410
+ "allowfullscreen",
1411
+ "async",
1412
+ "autofocus",
1413
+ "autoplay",
1414
+ "checked",
1415
+ "controls",
1416
+ "default",
1417
+ "defer",
1418
+ "disabled",
1419
+ "formnovalidate",
1420
+ "inert",
1421
+ "ismap",
1422
+ "itemscope",
1423
+ "loop",
1424
+ "multiple",
1425
+ "muted",
1426
+ "nomodule",
1427
+ "novalidate",
1428
+ "open",
1429
+ "playsinline",
1430
+ "readonly",
1431
+ "required",
1432
+ "reversed",
1433
+ "selected",
1434
+ "shadowrootclonable",
1435
+ "shadowrootdelegatesfocus",
1436
+ "shadowrootserializable"
1437
+ ]);
1438
+ function isBooleanAttr(attrName) {
1439
+ return booleanAttributes.has(attrName);
1440
+ }
1441
+ function attributeShouldntBePreservedIfFalsy(name) {
1442
+ return !["aria-pressed", "aria-checked", "aria-expanded", "aria-selected"].includes(name);
1443
+ }
1444
+ function getBinding(el, name, fallback) {
1445
+ if (el._x_bindings && el._x_bindings[name] !== void 0)
1446
+ return el._x_bindings[name];
1447
+ return getAttributeBinding(el, name, fallback);
1448
+ }
1449
+ function extractProp(el, name, fallback, extract = true) {
1450
+ if (el._x_bindings && el._x_bindings[name] !== void 0)
1451
+ return el._x_bindings[name];
1452
+ if (el._x_inlineBindings && el._x_inlineBindings[name] !== void 0) {
1453
+ let binding = el._x_inlineBindings[name];
1454
+ binding.extract = extract;
1455
+ return dontAutoEvaluateFunctions(() => {
1456
+ return evaluate(el, binding.expression);
1457
+ });
1458
+ }
1459
+ return getAttributeBinding(el, name, fallback);
1460
+ }
1461
+ function getAttributeBinding(el, name, fallback) {
1462
+ let attr = el.getAttribute(name);
1463
+ if (attr === null)
1464
+ return typeof fallback === "function" ? fallback() : fallback;
1465
+ if (attr === "")
1466
+ return true;
1467
+ if (isBooleanAttr(name)) {
1468
+ return !![name, "true"].includes(attr);
1469
+ }
1470
+ return attr;
1471
+ }
1472
+ function isCheckbox(el) {
1473
+ return el.type === "checkbox" || el.localName === "ui-checkbox" || el.localName === "ui-switch";
1474
+ }
1475
+ function isRadio(el) {
1476
+ return el.type === "radio" || el.localName === "ui-radio";
1477
+ }
1478
+ function debounce(func, wait) {
1479
+ let timeout;
1480
+ return function() {
1481
+ const context = this, args = arguments;
1482
+ const later = function() {
1483
+ timeout = null;
1484
+ func.apply(context, args);
1485
+ };
1486
+ clearTimeout(timeout);
1487
+ timeout = setTimeout(later, wait);
1488
+ };
1489
+ }
1490
+ function throttle(func, limit) {
1491
+ let inThrottle;
1492
+ return function() {
1493
+ let context = this, args = arguments;
1494
+ if (!inThrottle) {
1495
+ func.apply(context, args);
1496
+ inThrottle = true;
1497
+ setTimeout(() => inThrottle = false, limit);
1498
+ }
1499
+ };
1500
+ }
1501
+ function entangle({ get: outerGet, set: outerSet }, { get: innerGet, set: innerSet }) {
1502
+ let firstRun = true;
1503
+ let outerHash;
1504
+ let innerHash;
1505
+ let reference = effect(() => {
1506
+ let outer = outerGet();
1507
+ let inner = innerGet();
1508
+ if (firstRun) {
1509
+ innerSet(cloneIfObject(outer));
1510
+ firstRun = false;
1511
+ } else {
1512
+ let outerHashLatest = JSON.stringify(outer);
1513
+ let innerHashLatest = JSON.stringify(inner);
1514
+ if (outerHashLatest !== outerHash) {
1515
+ innerSet(cloneIfObject(outer));
1516
+ } else if (outerHashLatest !== innerHashLatest) {
1517
+ outerSet(cloneIfObject(inner));
1518
+ } else {
1519
+ }
1520
+ }
1521
+ outerHash = JSON.stringify(outerGet());
1522
+ innerHash = JSON.stringify(innerGet());
1523
+ });
1524
+ return () => {
1525
+ release(reference);
1526
+ };
1527
+ }
1528
+ function cloneIfObject(value) {
1529
+ return typeof value === "object" ? JSON.parse(JSON.stringify(value)) : value;
1530
+ }
1531
+ function plugin(callback) {
1532
+ let callbacks = Array.isArray(callback) ? callback : [callback];
1533
+ callbacks.forEach((i) => i(alpine_default));
1534
+ }
1535
+ var stores = {};
1536
+ var isReactive = false;
1537
+ function store(name, value) {
1538
+ if (!isReactive) {
1539
+ stores = reactive(stores);
1540
+ isReactive = true;
1541
+ }
1542
+ if (value === void 0) {
1543
+ return stores[name];
1544
+ }
1545
+ stores[name] = value;
1546
+ initInterceptors(stores[name]);
1547
+ if (typeof value === "object" && value !== null && value.hasOwnProperty("init") && typeof value.init === "function") {
1548
+ stores[name].init();
1549
+ }
1550
+ }
1551
+ function getStores() {
1552
+ return stores;
1553
+ }
1554
+ var binds = {};
1555
+ function bind2(name, bindings) {
1556
+ let getBindings = typeof bindings !== "function" ? () => bindings : bindings;
1557
+ if (name instanceof Element) {
1558
+ return applyBindingsObject(name, getBindings());
1559
+ } else {
1560
+ binds[name] = getBindings;
1561
+ }
1562
+ return () => {
1563
+ };
1564
+ }
1565
+ function injectBindingProviders(obj) {
1566
+ Object.entries(binds).forEach(([name, callback]) => {
1567
+ Object.defineProperty(obj, name, {
1568
+ get() {
1569
+ return (...args) => {
1570
+ return callback(...args);
1571
+ };
1572
+ }
1573
+ });
1574
+ });
1575
+ return obj;
1576
+ }
1577
+ function applyBindingsObject(el, obj, original) {
1578
+ let cleanupRunners = [];
1579
+ while (cleanupRunners.length)
1580
+ cleanupRunners.pop()();
1581
+ let attributes = Object.entries(obj).map(([name, value]) => ({ name, value }));
1582
+ let staticAttributes = attributesOnly(attributes);
1583
+ attributes = attributes.map((attribute) => {
1584
+ if (staticAttributes.find((attr) => attr.name === attribute.name)) {
1585
+ return {
1586
+ name: `x-bind:${attribute.name}`,
1587
+ value: `"${attribute.value}"`
1588
+ };
1589
+ }
1590
+ return attribute;
1591
+ });
1592
+ directives(el, attributes, original).map((handle) => {
1593
+ cleanupRunners.push(handle.runCleanups);
1594
+ handle();
1595
+ });
1596
+ return () => {
1597
+ while (cleanupRunners.length)
1598
+ cleanupRunners.pop()();
1599
+ };
1600
+ }
1601
+ var datas = {};
1602
+ function data(name, callback) {
1603
+ datas[name] = callback;
1604
+ }
1605
+ function injectDataProviders(obj, context) {
1606
+ Object.entries(datas).forEach(([name, callback]) => {
1607
+ Object.defineProperty(obj, name, {
1608
+ get() {
1609
+ return (...args) => {
1610
+ return callback.bind(context)(...args);
1611
+ };
1612
+ },
1613
+ enumerable: false
1614
+ });
1615
+ });
1616
+ return obj;
1617
+ }
1618
+ var Alpine = {
1619
+ get reactive() {
1620
+ return reactive;
1621
+ },
1622
+ get release() {
1623
+ return release;
1624
+ },
1625
+ get effect() {
1626
+ return effect;
1627
+ },
1628
+ get raw() {
1629
+ return raw;
1630
+ },
1631
+ version: "3.15.0",
1632
+ flushAndStopDeferringMutations,
1633
+ dontAutoEvaluateFunctions,
1634
+ disableEffectScheduling,
1635
+ startObservingMutations,
1636
+ stopObservingMutations,
1637
+ setReactivityEngine,
1638
+ onAttributeRemoved,
1639
+ onAttributesAdded,
1640
+ closestDataStack,
1641
+ skipDuringClone,
1642
+ onlyDuringClone,
1643
+ addRootSelector,
1644
+ addInitSelector,
1645
+ interceptClone,
1646
+ addScopeToNode,
1647
+ deferMutations,
1648
+ mapAttributes,
1649
+ evaluateLater,
1650
+ interceptInit,
1651
+ setEvaluator,
1652
+ mergeProxies,
1653
+ extractProp,
1654
+ findClosest,
1655
+ onElRemoved,
1656
+ closestRoot,
1657
+ destroyTree,
1658
+ interceptor,
1659
+ // INTERNAL: not public API and is subject to change without major release.
1660
+ transition,
1661
+ // INTERNAL
1662
+ setStyles,
1663
+ // INTERNAL
1664
+ mutateDom,
1665
+ directive,
1666
+ entangle,
1667
+ throttle,
1668
+ debounce,
1669
+ evaluate,
1670
+ initTree,
1671
+ nextTick,
1672
+ prefixed: prefix,
1673
+ prefix: setPrefix,
1674
+ plugin,
1675
+ magic,
1676
+ store,
1677
+ start,
1678
+ clone,
1679
+ // INTERNAL
1680
+ cloneNode,
1681
+ // INTERNAL
1682
+ bound: getBinding,
1683
+ $data: scope,
1684
+ watch,
1685
+ walk,
1686
+ data,
1687
+ bind: bind2
1688
+ };
1689
+ var alpine_default = Alpine;
1690
+ var Token = class {
1691
+ constructor(type, value, start2, end) {
1692
+ this.type = type;
1693
+ this.value = value;
1694
+ this.start = start2;
1695
+ this.end = end;
1696
+ }
1697
+ };
1698
+ var Tokenizer = class {
1699
+ constructor(input) {
1700
+ this.input = input;
1701
+ this.position = 0;
1702
+ this.tokens = [];
1703
+ }
1704
+ tokenize() {
1705
+ while (this.position < this.input.length) {
1706
+ this.skipWhitespace();
1707
+ if (this.position >= this.input.length)
1708
+ break;
1709
+ const char = this.input[this.position];
1710
+ if (this.isDigit(char)) {
1711
+ this.readNumber();
1712
+ } else if (this.isAlpha(char) || char === "_" || char === "$") {
1713
+ this.readIdentifierOrKeyword();
1714
+ } else if (char === '"' || char === "'") {
1715
+ this.readString();
1716
+ } else if (char === "/" && this.peek() === "/") {
1717
+ this.skipLineComment();
1718
+ } else {
1719
+ this.readOperatorOrPunctuation();
1720
+ }
1721
+ }
1722
+ this.tokens.push(new Token("EOF", null, this.position, this.position));
1723
+ return this.tokens;
1724
+ }
1725
+ skipWhitespace() {
1726
+ while (this.position < this.input.length && /\s/.test(this.input[this.position])) {
1727
+ this.position++;
1728
+ }
1729
+ }
1730
+ skipLineComment() {
1731
+ while (this.position < this.input.length && this.input[this.position] !== "\n") {
1732
+ this.position++;
1733
+ }
1734
+ }
1735
+ isDigit(char) {
1736
+ return /[0-9]/.test(char);
1737
+ }
1738
+ isAlpha(char) {
1739
+ return /[a-zA-Z]/.test(char);
1740
+ }
1741
+ isAlphaNumeric(char) {
1742
+ return /[a-zA-Z0-9_$]/.test(char);
1743
+ }
1744
+ peek(offset = 1) {
1745
+ return this.input[this.position + offset] || "";
1746
+ }
1747
+ readNumber() {
1748
+ const start2 = this.position;
1749
+ let hasDecimal = false;
1750
+ while (this.position < this.input.length) {
1751
+ const char = this.input[this.position];
1752
+ if (this.isDigit(char)) {
1753
+ this.position++;
1754
+ } else if (char === "." && !hasDecimal) {
1755
+ hasDecimal = true;
1756
+ this.position++;
1757
+ } else {
1758
+ break;
1759
+ }
1760
+ }
1761
+ const value = this.input.slice(start2, this.position);
1762
+ this.tokens.push(new Token("NUMBER", parseFloat(value), start2, this.position));
1763
+ }
1764
+ readIdentifierOrKeyword() {
1765
+ const start2 = this.position;
1766
+ while (this.position < this.input.length && this.isAlphaNumeric(this.input[this.position])) {
1767
+ this.position++;
1768
+ }
1769
+ const value = this.input.slice(start2, this.position);
1770
+ const keywords = ["true", "false", "null", "undefined", "new", "typeof", "void", "delete", "in", "instanceof"];
1771
+ if (keywords.includes(value)) {
1772
+ if (value === "true" || value === "false") {
1773
+ this.tokens.push(new Token("BOOLEAN", value === "true", start2, this.position));
1774
+ } else if (value === "null") {
1775
+ this.tokens.push(new Token("NULL", null, start2, this.position));
1776
+ } else if (value === "undefined") {
1777
+ this.tokens.push(new Token("UNDEFINED", void 0, start2, this.position));
1778
+ } else {
1779
+ this.tokens.push(new Token("KEYWORD", value, start2, this.position));
1780
+ }
1781
+ } else {
1782
+ this.tokens.push(new Token("IDENTIFIER", value, start2, this.position));
1783
+ }
1784
+ }
1785
+ readString() {
1786
+ const start2 = this.position;
1787
+ const quote = this.input[this.position];
1788
+ this.position++;
1789
+ let value = "";
1790
+ let escaped = false;
1791
+ while (this.position < this.input.length) {
1792
+ const char = this.input[this.position];
1793
+ if (escaped) {
1794
+ switch (char) {
1795
+ case "n":
1796
+ value += "\n";
1797
+ break;
1798
+ case "t":
1799
+ value += " ";
1800
+ break;
1801
+ case "r":
1802
+ value += "\r";
1803
+ break;
1804
+ case "\\":
1805
+ value += "\\";
1806
+ break;
1807
+ case quote:
1808
+ value += quote;
1809
+ break;
1810
+ default:
1811
+ value += char;
1812
+ }
1813
+ escaped = false;
1814
+ } else if (char === "\\") {
1815
+ escaped = true;
1816
+ } else if (char === quote) {
1817
+ this.position++;
1818
+ this.tokens.push(new Token("STRING", value, start2, this.position));
1819
+ return;
1820
+ } else {
1821
+ value += char;
1822
+ }
1823
+ this.position++;
1824
+ }
1825
+ throw new Error(`Unterminated string starting at position ${start2}`);
1826
+ }
1827
+ readOperatorOrPunctuation() {
1828
+ const start2 = this.position;
1829
+ const char = this.input[this.position];
1830
+ const next = this.peek();
1831
+ const nextNext = this.peek(2);
1832
+ if (char === "=" && next === "=" && nextNext === "=") {
1833
+ this.position += 3;
1834
+ this.tokens.push(new Token("OPERATOR", "===", start2, this.position));
1835
+ } else if (char === "!" && next === "=" && nextNext === "=") {
1836
+ this.position += 3;
1837
+ this.tokens.push(new Token("OPERATOR", "!==", start2, this.position));
1838
+ } else if (char === "=" && next === "=") {
1839
+ this.position += 2;
1840
+ this.tokens.push(new Token("OPERATOR", "==", start2, this.position));
1841
+ } else if (char === "!" && next === "=") {
1842
+ this.position += 2;
1843
+ this.tokens.push(new Token("OPERATOR", "!=", start2, this.position));
1844
+ } else if (char === "<" && next === "=") {
1845
+ this.position += 2;
1846
+ this.tokens.push(new Token("OPERATOR", "<=", start2, this.position));
1847
+ } else if (char === ">" && next === "=") {
1848
+ this.position += 2;
1849
+ this.tokens.push(new Token("OPERATOR", ">=", start2, this.position));
1850
+ } else if (char === "&" && next === "&") {
1851
+ this.position += 2;
1852
+ this.tokens.push(new Token("OPERATOR", "&&", start2, this.position));
1853
+ } else if (char === "|" && next === "|") {
1854
+ this.position += 2;
1855
+ this.tokens.push(new Token("OPERATOR", "||", start2, this.position));
1856
+ } else if (char === "+" && next === "+") {
1857
+ this.position += 2;
1858
+ this.tokens.push(new Token("OPERATOR", "++", start2, this.position));
1859
+ } else if (char === "-" && next === "-") {
1860
+ this.position += 2;
1861
+ this.tokens.push(new Token("OPERATOR", "--", start2, this.position));
1862
+ } else {
1863
+ this.position++;
1864
+ const type = "()[]{},.;:?".includes(char) ? "PUNCTUATION" : "OPERATOR";
1865
+ this.tokens.push(new Token(type, char, start2, this.position));
1866
+ }
1867
+ }
1868
+ };
1869
+ var Parser = class {
1870
+ constructor(tokens) {
1871
+ this.tokens = tokens;
1872
+ this.position = 0;
1873
+ }
1874
+ parse() {
1875
+ if (this.isAtEnd()) {
1876
+ throw new Error("Empty expression");
1877
+ }
1878
+ const expr = this.parseExpression();
1879
+ this.match("PUNCTUATION", ";");
1880
+ if (!this.isAtEnd()) {
1881
+ throw new Error(`Unexpected token: ${this.current().value}`);
1882
+ }
1883
+ return expr;
1884
+ }
1885
+ parseExpression() {
1886
+ return this.parseAssignment();
1887
+ }
1888
+ parseAssignment() {
1889
+ const expr = this.parseTernary();
1890
+ if (this.match("OPERATOR", "=")) {
1891
+ const value = this.parseAssignment();
1892
+ if (expr.type === "Identifier" || expr.type === "MemberExpression") {
1893
+ return {
1894
+ type: "AssignmentExpression",
1895
+ left: expr,
1896
+ operator: "=",
1897
+ right: value
1898
+ };
1899
+ }
1900
+ throw new Error("Invalid assignment target");
1901
+ }
1902
+ return expr;
1903
+ }
1904
+ parseTernary() {
1905
+ const expr = this.parseLogicalOr();
1906
+ if (this.match("PUNCTUATION", "?")) {
1907
+ const consequent = this.parseExpression();
1908
+ this.consume("PUNCTUATION", ":");
1909
+ const alternate = this.parseExpression();
1910
+ return {
1911
+ type: "ConditionalExpression",
1912
+ test: expr,
1913
+ consequent,
1914
+ alternate
1915
+ };
1916
+ }
1917
+ return expr;
1918
+ }
1919
+ parseLogicalOr() {
1920
+ let expr = this.parseLogicalAnd();
1921
+ while (this.match("OPERATOR", "||")) {
1922
+ const operator = this.previous().value;
1923
+ const right = this.parseLogicalAnd();
1924
+ expr = {
1925
+ type: "BinaryExpression",
1926
+ operator,
1927
+ left: expr,
1928
+ right
1929
+ };
1930
+ }
1931
+ return expr;
1932
+ }
1933
+ parseLogicalAnd() {
1934
+ let expr = this.parseEquality();
1935
+ while (this.match("OPERATOR", "&&")) {
1936
+ const operator = this.previous().value;
1937
+ const right = this.parseEquality();
1938
+ expr = {
1939
+ type: "BinaryExpression",
1940
+ operator,
1941
+ left: expr,
1942
+ right
1943
+ };
1944
+ }
1945
+ return expr;
1946
+ }
1947
+ parseEquality() {
1948
+ let expr = this.parseRelational();
1949
+ while (this.match("OPERATOR", "==", "!=", "===", "!==")) {
1950
+ const operator = this.previous().value;
1951
+ const right = this.parseRelational();
1952
+ expr = {
1953
+ type: "BinaryExpression",
1954
+ operator,
1955
+ left: expr,
1956
+ right
1957
+ };
1958
+ }
1959
+ return expr;
1960
+ }
1961
+ parseRelational() {
1962
+ let expr = this.parseAdditive();
1963
+ while (this.match("OPERATOR", "<", ">", "<=", ">=")) {
1964
+ const operator = this.previous().value;
1965
+ const right = this.parseAdditive();
1966
+ expr = {
1967
+ type: "BinaryExpression",
1968
+ operator,
1969
+ left: expr,
1970
+ right
1971
+ };
1972
+ }
1973
+ return expr;
1974
+ }
1975
+ parseAdditive() {
1976
+ let expr = this.parseMultiplicative();
1977
+ while (this.match("OPERATOR", "+", "-")) {
1978
+ const operator = this.previous().value;
1979
+ const right = this.parseMultiplicative();
1980
+ expr = {
1981
+ type: "BinaryExpression",
1982
+ operator,
1983
+ left: expr,
1984
+ right
1985
+ };
1986
+ }
1987
+ return expr;
1988
+ }
1989
+ parseMultiplicative() {
1990
+ let expr = this.parseUnary();
1991
+ while (this.match("OPERATOR", "*", "/", "%")) {
1992
+ const operator = this.previous().value;
1993
+ const right = this.parseUnary();
1994
+ expr = {
1995
+ type: "BinaryExpression",
1996
+ operator,
1997
+ left: expr,
1998
+ right
1999
+ };
2000
+ }
2001
+ return expr;
2002
+ }
2003
+ parseUnary() {
2004
+ if (this.match("OPERATOR", "++", "--")) {
2005
+ const operator = this.previous().value;
2006
+ const argument = this.parseUnary();
2007
+ return {
2008
+ type: "UpdateExpression",
2009
+ operator,
2010
+ argument,
2011
+ prefix: true
2012
+ };
2013
+ }
2014
+ if (this.match("OPERATOR", "!", "-", "+")) {
2015
+ const operator = this.previous().value;
2016
+ const argument = this.parseUnary();
2017
+ return {
2018
+ type: "UnaryExpression",
2019
+ operator,
2020
+ argument,
2021
+ prefix: true
2022
+ };
2023
+ }
2024
+ return this.parsePostfix();
2025
+ }
2026
+ parsePostfix() {
2027
+ let expr = this.parseMember();
2028
+ if (this.match("OPERATOR", "++", "--")) {
2029
+ const operator = this.previous().value;
2030
+ return {
2031
+ type: "UpdateExpression",
2032
+ operator,
2033
+ argument: expr,
2034
+ prefix: false
2035
+ };
2036
+ }
2037
+ return expr;
2038
+ }
2039
+ parseMember() {
2040
+ let expr = this.parsePrimary();
2041
+ while (true) {
2042
+ if (this.match("PUNCTUATION", ".")) {
2043
+ const property = this.consume("IDENTIFIER");
2044
+ expr = {
2045
+ type: "MemberExpression",
2046
+ object: expr,
2047
+ property: { type: "Identifier", name: property.value },
2048
+ computed: false
2049
+ };
2050
+ } else if (this.match("PUNCTUATION", "[")) {
2051
+ const property = this.parseExpression();
2052
+ this.consume("PUNCTUATION", "]");
2053
+ expr = {
2054
+ type: "MemberExpression",
2055
+ object: expr,
2056
+ property,
2057
+ computed: true
2058
+ };
2059
+ } else if (this.match("PUNCTUATION", "(")) {
2060
+ const args = this.parseArguments();
2061
+ expr = {
2062
+ type: "CallExpression",
2063
+ callee: expr,
2064
+ arguments: args
2065
+ };
2066
+ } else {
2067
+ break;
2068
+ }
2069
+ }
2070
+ return expr;
2071
+ }
2072
+ parseArguments() {
2073
+ const args = [];
2074
+ if (!this.check("PUNCTUATION", ")")) {
2075
+ do {
2076
+ args.push(this.parseExpression());
2077
+ } while (this.match("PUNCTUATION", ","));
2078
+ }
2079
+ this.consume("PUNCTUATION", ")");
2080
+ return args;
2081
+ }
2082
+ parsePrimary() {
2083
+ if (this.match("NUMBER")) {
2084
+ return { type: "Literal", value: this.previous().value };
2085
+ }
2086
+ if (this.match("STRING")) {
2087
+ return { type: "Literal", value: this.previous().value };
2088
+ }
2089
+ if (this.match("BOOLEAN")) {
2090
+ return { type: "Literal", value: this.previous().value };
2091
+ }
2092
+ if (this.match("NULL")) {
2093
+ return { type: "Literal", value: null };
2094
+ }
2095
+ if (this.match("UNDEFINED")) {
2096
+ return { type: "Literal", value: void 0 };
2097
+ }
2098
+ if (this.match("IDENTIFIER")) {
2099
+ return { type: "Identifier", name: this.previous().value };
2100
+ }
2101
+ if (this.match("PUNCTUATION", "(")) {
2102
+ const expr = this.parseExpression();
2103
+ this.consume("PUNCTUATION", ")");
2104
+ return expr;
2105
+ }
2106
+ if (this.match("PUNCTUATION", "[")) {
2107
+ return this.parseArrayLiteral();
2108
+ }
2109
+ if (this.match("PUNCTUATION", "{")) {
2110
+ return this.parseObjectLiteral();
2111
+ }
2112
+ throw new Error(`Unexpected token: ${this.current().type} "${this.current().value}"`);
2113
+ }
2114
+ parseArrayLiteral() {
2115
+ const elements = [];
2116
+ while (!this.check("PUNCTUATION", "]") && !this.isAtEnd()) {
2117
+ elements.push(this.parseExpression());
2118
+ if (this.match("PUNCTUATION", ",")) {
2119
+ if (this.check("PUNCTUATION", "]")) {
2120
+ break;
2121
+ }
2122
+ } else {
2123
+ break;
2124
+ }
2125
+ }
2126
+ this.consume("PUNCTUATION", "]");
2127
+ return {
2128
+ type: "ArrayExpression",
2129
+ elements
2130
+ };
2131
+ }
2132
+ parseObjectLiteral() {
2133
+ const properties = [];
2134
+ while (!this.check("PUNCTUATION", "}") && !this.isAtEnd()) {
2135
+ let key;
2136
+ let computed = false;
2137
+ if (this.match("STRING")) {
2138
+ key = { type: "Literal", value: this.previous().value };
2139
+ } else if (this.match("IDENTIFIER")) {
2140
+ const name = this.previous().value;
2141
+ key = { type: "Identifier", name };
2142
+ } else if (this.match("PUNCTUATION", "[")) {
2143
+ key = this.parseExpression();
2144
+ computed = true;
2145
+ this.consume("PUNCTUATION", "]");
2146
+ } else {
2147
+ throw new Error("Expected property key");
2148
+ }
2149
+ this.consume("PUNCTUATION", ":");
2150
+ const value = this.parseExpression();
2151
+ properties.push({
2152
+ type: "Property",
2153
+ key,
2154
+ value,
2155
+ computed,
2156
+ shorthand: false
2157
+ });
2158
+ if (this.match("PUNCTUATION", ",")) {
2159
+ if (this.check("PUNCTUATION", "}")) {
2160
+ break;
2161
+ }
2162
+ } else {
2163
+ break;
2164
+ }
2165
+ }
2166
+ this.consume("PUNCTUATION", "}");
2167
+ return {
2168
+ type: "ObjectExpression",
2169
+ properties
2170
+ };
2171
+ }
2172
+ match(...args) {
2173
+ for (let i = 0; i < args.length; i++) {
2174
+ const arg = args[i];
2175
+ if (i === 0 && args.length > 1) {
2176
+ const type = arg;
2177
+ for (let j = 1; j < args.length; j++) {
2178
+ if (this.check(type, args[j])) {
2179
+ this.advance();
2180
+ return true;
2181
+ }
2182
+ }
2183
+ return false;
2184
+ } else if (args.length === 1) {
2185
+ if (this.checkType(arg)) {
2186
+ this.advance();
2187
+ return true;
2188
+ }
2189
+ return false;
2190
+ }
2191
+ }
2192
+ return false;
2193
+ }
2194
+ check(type, value) {
2195
+ if (this.isAtEnd())
2196
+ return false;
2197
+ if (value !== void 0) {
2198
+ return this.current().type === type && this.current().value === value;
2199
+ }
2200
+ return this.current().type === type;
2201
+ }
2202
+ checkType(type) {
2203
+ if (this.isAtEnd())
2204
+ return false;
2205
+ return this.current().type === type;
2206
+ }
2207
+ advance() {
2208
+ if (!this.isAtEnd())
2209
+ this.position++;
2210
+ return this.previous();
2211
+ }
2212
+ isAtEnd() {
2213
+ return this.current().type === "EOF";
2214
+ }
2215
+ current() {
2216
+ return this.tokens[this.position];
2217
+ }
2218
+ previous() {
2219
+ return this.tokens[this.position - 1];
2220
+ }
2221
+ consume(type, value) {
2222
+ if (value !== void 0) {
2223
+ if (this.check(type, value))
2224
+ return this.advance();
2225
+ throw new Error(`Expected ${type} "${value}" but got ${this.current().type} "${this.current().value}"`);
2226
+ }
2227
+ if (this.check(type))
2228
+ return this.advance();
2229
+ throw new Error(`Expected ${type} but got ${this.current().type} "${this.current().value}"`);
2230
+ }
2231
+ };
2232
+ var Evaluator = class {
2233
+ evaluate({ node, scope: scope2 = {}, context = null, allowGlobal = false, forceBindingRootScopeToFunctions = true }) {
2234
+ switch (node.type) {
2235
+ case "Literal":
2236
+ return node.value;
2237
+ case "Identifier":
2238
+ if (node.name in scope2) {
2239
+ const value2 = scope2[node.name];
2240
+ if (typeof value2 === "function") {
2241
+ return value2.bind(scope2);
2242
+ }
2243
+ return value2;
2244
+ }
2245
+ if (allowGlobal && typeof globalThis[node.name] !== "undefined") {
2246
+ const value2 = globalThis[node.name];
2247
+ if (typeof value2 === "function") {
2248
+ return value2.bind(globalThis);
2249
+ }
2250
+ return value2;
2251
+ }
2252
+ throw new Error(`Undefined variable: ${node.name}`);
2253
+ case "MemberExpression":
2254
+ const object = this.evaluate({ node: node.object, scope: scope2, context, allowGlobal, forceBindingRootScopeToFunctions });
2255
+ if (object == null) {
2256
+ throw new Error("Cannot read property of null or undefined");
2257
+ }
2258
+ let memberValue;
2259
+ if (node.computed) {
2260
+ const property = this.evaluate({ node: node.property, scope: scope2, context, allowGlobal, forceBindingRootScopeToFunctions });
2261
+ memberValue = object[property];
2262
+ } else {
2263
+ memberValue = object[node.property.name];
2264
+ }
2265
+ if (typeof memberValue === "function") {
2266
+ if (forceBindingRootScopeToFunctions) {
2267
+ return memberValue.bind(scope2);
2268
+ } else {
2269
+ return memberValue.bind(object);
2270
+ }
2271
+ }
2272
+ return memberValue;
2273
+ case "CallExpression":
2274
+ const args = node.arguments.map((arg) => this.evaluate({ node: arg, scope: scope2, context, allowGlobal, forceBindingRootScopeToFunctions }));
2275
+ if (node.callee.type === "MemberExpression") {
2276
+ const obj = this.evaluate({ node: node.callee.object, scope: scope2, context, allowGlobal, forceBindingRootScopeToFunctions });
2277
+ let func;
2278
+ if (node.callee.computed) {
2279
+ const prop = this.evaluate({ node: node.callee.property, scope: scope2, context, allowGlobal, forceBindingRootScopeToFunctions });
2280
+ func = obj[prop];
2281
+ } else {
2282
+ func = obj[node.callee.property.name];
2283
+ }
2284
+ if (typeof func !== "function") {
2285
+ throw new Error("Value is not a function");
2286
+ }
2287
+ return func.apply(obj, args);
2288
+ } else {
2289
+ if (node.callee.type === "Identifier") {
2290
+ const name = node.callee.name;
2291
+ let func;
2292
+ if (name in scope2) {
2293
+ func = scope2[name];
2294
+ } else if (allowGlobal && typeof globalThis[name] !== "undefined") {
2295
+ func = globalThis[name];
2296
+ } else {
2297
+ throw new Error(`Undefined variable: ${name}`);
2298
+ }
2299
+ if (typeof func !== "function") {
2300
+ throw new Error("Value is not a function");
2301
+ }
2302
+ const thisContext = context !== null ? context : scope2;
2303
+ return func.apply(thisContext, args);
2304
+ } else {
2305
+ const callee = this.evaluate({ node: node.callee, scope: scope2, context, allowGlobal, forceBindingRootScopeToFunctions });
2306
+ if (typeof callee !== "function") {
2307
+ throw new Error("Value is not a function");
2308
+ }
2309
+ return callee.apply(context, args);
2310
+ }
2311
+ }
2312
+ case "UnaryExpression":
2313
+ const argument = this.evaluate({ node: node.argument, scope: scope2, context, allowGlobal, forceBindingRootScopeToFunctions });
2314
+ switch (node.operator) {
2315
+ case "!":
2316
+ return !argument;
2317
+ case "-":
2318
+ return -argument;
2319
+ case "+":
2320
+ return +argument;
2321
+ default:
2322
+ throw new Error(`Unknown unary operator: ${node.operator}`);
2323
+ }
2324
+ case "UpdateExpression":
2325
+ if (node.argument.type === "Identifier") {
2326
+ const name = node.argument.name;
2327
+ if (!(name in scope2)) {
2328
+ throw new Error(`Undefined variable: ${name}`);
2329
+ }
2330
+ const oldValue = scope2[name];
2331
+ if (node.operator === "++") {
2332
+ scope2[name] = oldValue + 1;
2333
+ } else if (node.operator === "--") {
2334
+ scope2[name] = oldValue - 1;
2335
+ }
2336
+ return node.prefix ? scope2[name] : oldValue;
2337
+ } else if (node.argument.type === "MemberExpression") {
2338
+ const obj = this.evaluate({ node: node.argument.object, scope: scope2, context, allowGlobal, forceBindingRootScopeToFunctions });
2339
+ const prop = node.argument.computed ? this.evaluate({ node: node.argument.property, scope: scope2, context, allowGlobal, forceBindingRootScopeToFunctions }) : node.argument.property.name;
2340
+ const oldValue = obj[prop];
2341
+ if (node.operator === "++") {
2342
+ obj[prop] = oldValue + 1;
2343
+ } else if (node.operator === "--") {
2344
+ obj[prop] = oldValue - 1;
2345
+ }
2346
+ return node.prefix ? obj[prop] : oldValue;
2347
+ }
2348
+ throw new Error("Invalid update expression target");
2349
+ case "BinaryExpression":
2350
+ const left = this.evaluate({ node: node.left, scope: scope2, context, allowGlobal, forceBindingRootScopeToFunctions });
2351
+ const right = this.evaluate({ node: node.right, scope: scope2, context, allowGlobal, forceBindingRootScopeToFunctions });
2352
+ switch (node.operator) {
2353
+ case "+":
2354
+ return left + right;
2355
+ case "-":
2356
+ return left - right;
2357
+ case "*":
2358
+ return left * right;
2359
+ case "/":
2360
+ return left / right;
2361
+ case "%":
2362
+ return left % right;
2363
+ case "==":
2364
+ return left == right;
2365
+ case "!=":
2366
+ return left != right;
2367
+ case "===":
2368
+ return left === right;
2369
+ case "!==":
2370
+ return left !== right;
2371
+ case "<":
2372
+ return left < right;
2373
+ case ">":
2374
+ return left > right;
2375
+ case "<=":
2376
+ return left <= right;
2377
+ case ">=":
2378
+ return left >= right;
2379
+ case "&&":
2380
+ return left && right;
2381
+ case "||":
2382
+ return left || right;
2383
+ default:
2384
+ throw new Error(`Unknown binary operator: ${node.operator}`);
2385
+ }
2386
+ case "ConditionalExpression":
2387
+ const test = this.evaluate({ node: node.test, scope: scope2, context, allowGlobal, forceBindingRootScopeToFunctions });
2388
+ return test ? this.evaluate({ node: node.consequent, scope: scope2, context, allowGlobal, forceBindingRootScopeToFunctions }) : this.evaluate({ node: node.alternate, scope: scope2, context, allowGlobal, forceBindingRootScopeToFunctions });
2389
+ case "AssignmentExpression":
2390
+ const value = this.evaluate({ node: node.right, scope: scope2, context, allowGlobal, forceBindingRootScopeToFunctions });
2391
+ if (node.left.type === "Identifier") {
2392
+ scope2[node.left.name] = value;
2393
+ return value;
2394
+ } else if (node.left.type === "MemberExpression") {
2395
+ const obj = this.evaluate({ node: node.left.object, scope: scope2, context, allowGlobal, forceBindingRootScopeToFunctions });
2396
+ if (node.left.computed) {
2397
+ const prop = this.evaluate({ node: node.left.property, scope: scope2, context, allowGlobal, forceBindingRootScopeToFunctions });
2398
+ obj[prop] = value;
2399
+ } else {
2400
+ obj[node.left.property.name] = value;
2401
+ }
2402
+ return value;
2403
+ }
2404
+ throw new Error("Invalid assignment target");
2405
+ case "ArrayExpression":
2406
+ return node.elements.map((el) => this.evaluate({ node: el, scope: scope2, context, allowGlobal, forceBindingRootScopeToFunctions }));
2407
+ case "ObjectExpression":
2408
+ const result = {};
2409
+ for (const prop of node.properties) {
2410
+ const key = prop.computed ? this.evaluate({ node: prop.key, scope: scope2, context, allowGlobal, forceBindingRootScopeToFunctions }) : prop.key.type === "Identifier" ? prop.key.name : this.evaluate({ node: prop.key, scope: scope2, context, allowGlobal, forceBindingRootScopeToFunctions });
2411
+ const value2 = this.evaluate({ node: prop.value, scope: scope2, context, allowGlobal, forceBindingRootScopeToFunctions });
2412
+ result[key] = value2;
2413
+ }
2414
+ return result;
2415
+ default:
2416
+ throw new Error(`Unknown node type: ${node.type}`);
2417
+ }
2418
+ }
2419
+ };
2420
+ function generateRuntimeFunction(expression) {
2421
+ try {
2422
+ const tokenizer = new Tokenizer(expression);
2423
+ const tokens = tokenizer.tokenize();
2424
+ const parser = new Parser(tokens);
2425
+ const ast = parser.parse();
2426
+ const evaluator = new Evaluator();
2427
+ return function(options = {}) {
2428
+ const { scope: scope2 = {}, context = null, allowGlobal = false, forceBindingRootScopeToFunctions = false } = options;
2429
+ return evaluator.evaluate({ node: ast, scope: scope2, context, allowGlobal, forceBindingRootScopeToFunctions });
2430
+ };
2431
+ } catch (error2) {
2432
+ throw new Error(`CSP Parser Error: ${error2.message}`);
2433
+ }
2434
+ }
2435
+ function cspEvaluator(el, expression) {
2436
+ let dataStack = generateDataStack(el);
2437
+ if (typeof expression === "function") {
2438
+ return generateEvaluatorFromFunction(dataStack, expression);
2439
+ }
2440
+ let evaluator = generateEvaluator(el, expression, dataStack);
2441
+ return tryCatch.bind(null, el, expression, evaluator);
2442
+ }
2443
+ function generateDataStack(el) {
2444
+ let overriddenMagics = {};
2445
+ injectMagics(overriddenMagics, el);
2446
+ return [overriddenMagics, ...closestDataStack(el)];
2447
+ }
2448
+ function generateEvaluator(el, expression, dataStack) {
2449
+ return (receiver = () => {
2450
+ }, { scope: scope2 = {}, params = [] } = {}) => {
2451
+ let completeScope = mergeProxies([scope2, ...dataStack]);
2452
+ let evaluate2 = generateRuntimeFunction(expression);
2453
+ let returnValue = evaluate2({
2454
+ scope: completeScope,
2455
+ allowGlobal: true,
2456
+ forceBindingRootScopeToFunctions: true
2457
+ });
2458
+ if (shouldAutoEvaluateFunctions && typeof returnValue === "function") {
2459
+ let nextReturnValue = returnValue.apply(returnValue, params);
2460
+ if (nextReturnValue instanceof Promise) {
2461
+ nextReturnValue.then((i) => receiver(i));
2462
+ } else {
2463
+ receiver(nextReturnValue);
2464
+ }
2465
+ } else if (typeof returnValue === "object" && returnValue instanceof Promise) {
2466
+ returnValue.then((i) => receiver(i));
2467
+ } else {
2468
+ receiver(returnValue);
2469
+ }
2470
+ };
2471
+ }
2472
+ function makeMap(str, expectsLowerCase) {
2473
+ const map = /* @__PURE__ */ Object.create(null);
2474
+ const list = str.split(",");
2475
+ for (let i = 0; i < list.length; i++) {
2476
+ map[list[i]] = true;
2477
+ }
2478
+ return expectsLowerCase ? (val) => !!map[val.toLowerCase()] : (val) => !!map[val];
2479
+ }
2480
+ var specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;
2481
+ var isBooleanAttr2 = /* @__PURE__ */ makeMap(specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected`);
2482
+ var EMPTY_OBJ = true ? Object.freeze({}) : {};
2483
+ var EMPTY_ARR = true ? Object.freeze([]) : [];
2484
+ var hasOwnProperty = Object.prototype.hasOwnProperty;
2485
+ var hasOwn = (val, key) => hasOwnProperty.call(val, key);
2486
+ var isArray = Array.isArray;
2487
+ var isMap = (val) => toTypeString(val) === "[object Map]";
2488
+ var isString = (val) => typeof val === "string";
2489
+ var isSymbol = (val) => typeof val === "symbol";
2490
+ var isObject = (val) => val !== null && typeof val === "object";
2491
+ var objectToString = Object.prototype.toString;
2492
+ var toTypeString = (value) => objectToString.call(value);
2493
+ var toRawType = (value) => {
2494
+ return toTypeString(value).slice(8, -1);
2495
+ };
2496
+ var isIntegerKey = (key) => isString(key) && key !== "NaN" && key[0] !== "-" && "" + parseInt(key, 10) === key;
2497
+ var cacheStringFunction = (fn) => {
2498
+ const cache = /* @__PURE__ */ Object.create(null);
2499
+ return (str) => {
2500
+ const hit = cache[str];
2501
+ return hit || (cache[str] = fn(str));
2502
+ };
2503
+ };
2504
+ var camelizeRE = /-(\w)/g;
2505
+ var camelize = cacheStringFunction((str) => {
2506
+ return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : "");
2507
+ });
2508
+ var hyphenateRE = /\B([A-Z])/g;
2509
+ var hyphenate = cacheStringFunction((str) => str.replace(hyphenateRE, "-$1").toLowerCase());
2510
+ var capitalize = cacheStringFunction((str) => str.charAt(0).toUpperCase() + str.slice(1));
2511
+ var toHandlerKey = cacheStringFunction((str) => str ? `on${capitalize(str)}` : ``);
2512
+ var hasChanged = (value, oldValue) => value !== oldValue && (value === value || oldValue === oldValue);
2513
+ var targetMap = /* @__PURE__ */ new WeakMap();
2514
+ var effectStack = [];
2515
+ var activeEffect;
2516
+ var ITERATE_KEY = Symbol(true ? "iterate" : "");
2517
+ var MAP_KEY_ITERATE_KEY = Symbol(true ? "Map key iterate" : "");
2518
+ function isEffect(fn) {
2519
+ return fn && fn._isEffect === true;
2520
+ }
2521
+ function effect2(fn, options = EMPTY_OBJ) {
2522
+ if (isEffect(fn)) {
2523
+ fn = fn.raw;
2524
+ }
2525
+ const effect3 = createReactiveEffect(fn, options);
2526
+ if (!options.lazy) {
2527
+ effect3();
2528
+ }
2529
+ return effect3;
2530
+ }
2531
+ function stop(effect3) {
2532
+ if (effect3.active) {
2533
+ cleanup(effect3);
2534
+ if (effect3.options.onStop) {
2535
+ effect3.options.onStop();
2536
+ }
2537
+ effect3.active = false;
2538
+ }
2539
+ }
2540
+ var uid = 0;
2541
+ function createReactiveEffect(fn, options) {
2542
+ const effect3 = function reactiveEffect() {
2543
+ if (!effect3.active) {
2544
+ return fn();
2545
+ }
2546
+ if (!effectStack.includes(effect3)) {
2547
+ cleanup(effect3);
2548
+ try {
2549
+ enableTracking();
2550
+ effectStack.push(effect3);
2551
+ activeEffect = effect3;
2552
+ return fn();
2553
+ } finally {
2554
+ effectStack.pop();
2555
+ resetTracking();
2556
+ activeEffect = effectStack[effectStack.length - 1];
2557
+ }
2558
+ }
2559
+ };
2560
+ effect3.id = uid++;
2561
+ effect3.allowRecurse = !!options.allowRecurse;
2562
+ effect3._isEffect = true;
2563
+ effect3.active = true;
2564
+ effect3.raw = fn;
2565
+ effect3.deps = [];
2566
+ effect3.options = options;
2567
+ return effect3;
2568
+ }
2569
+ function cleanup(effect3) {
2570
+ const { deps } = effect3;
2571
+ if (deps.length) {
2572
+ for (let i = 0; i < deps.length; i++) {
2573
+ deps[i].delete(effect3);
2574
+ }
2575
+ deps.length = 0;
2576
+ }
2577
+ }
2578
+ var shouldTrack = true;
2579
+ var trackStack = [];
2580
+ function pauseTracking() {
2581
+ trackStack.push(shouldTrack);
2582
+ shouldTrack = false;
2583
+ }
2584
+ function enableTracking() {
2585
+ trackStack.push(shouldTrack);
2586
+ shouldTrack = true;
2587
+ }
2588
+ function resetTracking() {
2589
+ const last = trackStack.pop();
2590
+ shouldTrack = last === void 0 ? true : last;
2591
+ }
2592
+ function track(target, type, key) {
2593
+ if (!shouldTrack || activeEffect === void 0) {
2594
+ return;
2595
+ }
2596
+ let depsMap = targetMap.get(target);
2597
+ if (!depsMap) {
2598
+ targetMap.set(target, depsMap = /* @__PURE__ */ new Map());
2599
+ }
2600
+ let dep = depsMap.get(key);
2601
+ if (!dep) {
2602
+ depsMap.set(key, dep = /* @__PURE__ */ new Set());
2603
+ }
2604
+ if (!dep.has(activeEffect)) {
2605
+ dep.add(activeEffect);
2606
+ activeEffect.deps.push(dep);
2607
+ if (activeEffect.options.onTrack) {
2608
+ activeEffect.options.onTrack({
2609
+ effect: activeEffect,
2610
+ target,
2611
+ type,
2612
+ key
2613
+ });
2614
+ }
2615
+ }
2616
+ }
2617
+ function trigger(target, type, key, newValue, oldValue, oldTarget) {
2618
+ const depsMap = targetMap.get(target);
2619
+ if (!depsMap) {
2620
+ return;
2621
+ }
2622
+ const effects = /* @__PURE__ */ new Set();
2623
+ const add2 = (effectsToAdd) => {
2624
+ if (effectsToAdd) {
2625
+ effectsToAdd.forEach((effect3) => {
2626
+ if (effect3 !== activeEffect || effect3.allowRecurse) {
2627
+ effects.add(effect3);
2628
+ }
2629
+ });
2630
+ }
2631
+ };
2632
+ if (type === "clear") {
2633
+ depsMap.forEach(add2);
2634
+ } else if (key === "length" && isArray(target)) {
2635
+ depsMap.forEach((dep, key2) => {
2636
+ if (key2 === "length" || key2 >= newValue) {
2637
+ add2(dep);
2638
+ }
2639
+ });
2640
+ } else {
2641
+ if (key !== void 0) {
2642
+ add2(depsMap.get(key));
2643
+ }
2644
+ switch (type) {
2645
+ case "add":
2646
+ if (!isArray(target)) {
2647
+ add2(depsMap.get(ITERATE_KEY));
2648
+ if (isMap(target)) {
2649
+ add2(depsMap.get(MAP_KEY_ITERATE_KEY));
2650
+ }
2651
+ } else if (isIntegerKey(key)) {
2652
+ add2(depsMap.get("length"));
2653
+ }
2654
+ break;
2655
+ case "delete":
2656
+ if (!isArray(target)) {
2657
+ add2(depsMap.get(ITERATE_KEY));
2658
+ if (isMap(target)) {
2659
+ add2(depsMap.get(MAP_KEY_ITERATE_KEY));
2660
+ }
2661
+ }
2662
+ break;
2663
+ case "set":
2664
+ if (isMap(target)) {
2665
+ add2(depsMap.get(ITERATE_KEY));
2666
+ }
2667
+ break;
2668
+ }
2669
+ }
2670
+ const run = (effect3) => {
2671
+ if (effect3.options.onTrigger) {
2672
+ effect3.options.onTrigger({
2673
+ effect: effect3,
2674
+ target,
2675
+ key,
2676
+ type,
2677
+ newValue,
2678
+ oldValue,
2679
+ oldTarget
2680
+ });
2681
+ }
2682
+ if (effect3.options.scheduler) {
2683
+ effect3.options.scheduler(effect3);
2684
+ } else {
2685
+ effect3();
2686
+ }
2687
+ };
2688
+ effects.forEach(run);
2689
+ }
2690
+ var isNonTrackableKeys = /* @__PURE__ */ makeMap(`__proto__,__v_isRef,__isVue`);
2691
+ var builtInSymbols = new Set(Object.getOwnPropertyNames(Symbol).map((key) => Symbol[key]).filter(isSymbol));
2692
+ var get2 = /* @__PURE__ */ createGetter();
2693
+ var readonlyGet = /* @__PURE__ */ createGetter(true);
2694
+ var arrayInstrumentations = /* @__PURE__ */ createArrayInstrumentations();
2695
+ function createArrayInstrumentations() {
2696
+ const instrumentations = {};
2697
+ ["includes", "indexOf", "lastIndexOf"].forEach((key) => {
2698
+ instrumentations[key] = function(...args) {
2699
+ const arr = toRaw(this);
2700
+ for (let i = 0, l = this.length; i < l; i++) {
2701
+ track(arr, "get", i + "");
2702
+ }
2703
+ const res = arr[key](...args);
2704
+ if (res === -1 || res === false) {
2705
+ return arr[key](...args.map(toRaw));
2706
+ } else {
2707
+ return res;
2708
+ }
2709
+ };
2710
+ });
2711
+ ["push", "pop", "shift", "unshift", "splice"].forEach((key) => {
2712
+ instrumentations[key] = function(...args) {
2713
+ pauseTracking();
2714
+ const res = toRaw(this)[key].apply(this, args);
2715
+ resetTracking();
2716
+ return res;
2717
+ };
2718
+ });
2719
+ return instrumentations;
2720
+ }
2721
+ function createGetter(isReadonly = false, shallow = false) {
2722
+ return function get3(target, key, receiver) {
2723
+ if (key === "__v_isReactive") {
2724
+ return !isReadonly;
2725
+ } else if (key === "__v_isReadonly") {
2726
+ return isReadonly;
2727
+ } else if (key === "__v_raw" && receiver === (isReadonly ? shallow ? shallowReadonlyMap : readonlyMap : shallow ? shallowReactiveMap : reactiveMap).get(target)) {
2728
+ return target;
2729
+ }
2730
+ const targetIsArray = isArray(target);
2731
+ if (!isReadonly && targetIsArray && hasOwn(arrayInstrumentations, key)) {
2732
+ return Reflect.get(arrayInstrumentations, key, receiver);
2733
+ }
2734
+ const res = Reflect.get(target, key, receiver);
2735
+ if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) {
2736
+ return res;
2737
+ }
2738
+ if (!isReadonly) {
2739
+ track(target, "get", key);
2740
+ }
2741
+ if (shallow) {
2742
+ return res;
2743
+ }
2744
+ if (isRef(res)) {
2745
+ const shouldUnwrap = !targetIsArray || !isIntegerKey(key);
2746
+ return shouldUnwrap ? res.value : res;
2747
+ }
2748
+ if (isObject(res)) {
2749
+ return isReadonly ? readonly(res) : reactive2(res);
2750
+ }
2751
+ return res;
2752
+ };
2753
+ }
2754
+ var set2 = /* @__PURE__ */ createSetter();
2755
+ function createSetter(shallow = false) {
2756
+ return function set3(target, key, value, receiver) {
2757
+ let oldValue = target[key];
2758
+ if (!shallow) {
2759
+ value = toRaw(value);
2760
+ oldValue = toRaw(oldValue);
2761
+ if (!isArray(target) && isRef(oldValue) && !isRef(value)) {
2762
+ oldValue.value = value;
2763
+ return true;
2764
+ }
2765
+ }
2766
+ const hadKey = isArray(target) && isIntegerKey(key) ? Number(key) < target.length : hasOwn(target, key);
2767
+ const result = Reflect.set(target, key, value, receiver);
2768
+ if (target === toRaw(receiver)) {
2769
+ if (!hadKey) {
2770
+ trigger(target, "add", key, value);
2771
+ } else if (hasChanged(value, oldValue)) {
2772
+ trigger(target, "set", key, value, oldValue);
2773
+ }
2774
+ }
2775
+ return result;
2776
+ };
2777
+ }
2778
+ function deleteProperty(target, key) {
2779
+ const hadKey = hasOwn(target, key);
2780
+ const oldValue = target[key];
2781
+ const result = Reflect.deleteProperty(target, key);
2782
+ if (result && hadKey) {
2783
+ trigger(target, "delete", key, void 0, oldValue);
2784
+ }
2785
+ return result;
2786
+ }
2787
+ function has(target, key) {
2788
+ const result = Reflect.has(target, key);
2789
+ if (!isSymbol(key) || !builtInSymbols.has(key)) {
2790
+ track(target, "has", key);
2791
+ }
2792
+ return result;
2793
+ }
2794
+ function ownKeys(target) {
2795
+ track(target, "iterate", isArray(target) ? "length" : ITERATE_KEY);
2796
+ return Reflect.ownKeys(target);
2797
+ }
2798
+ var mutableHandlers = {
2799
+ get: get2,
2800
+ set: set2,
2801
+ deleteProperty,
2802
+ has,
2803
+ ownKeys
2804
+ };
2805
+ var readonlyHandlers = {
2806
+ get: readonlyGet,
2807
+ set(target, key) {
2808
+ if (true) {
2809
+ console.warn(`Set operation on key "${String(key)}" failed: target is readonly.`, target);
2810
+ }
2811
+ return true;
2812
+ },
2813
+ deleteProperty(target, key) {
2814
+ if (true) {
2815
+ console.warn(`Delete operation on key "${String(key)}" failed: target is readonly.`, target);
2816
+ }
2817
+ return true;
2818
+ }
2819
+ };
2820
+ var toReactive = (value) => isObject(value) ? reactive2(value) : value;
2821
+ var toReadonly = (value) => isObject(value) ? readonly(value) : value;
2822
+ var toShallow = (value) => value;
2823
+ var getProto = (v) => Reflect.getPrototypeOf(v);
2824
+ function get$1(target, key, isReadonly = false, isShallow = false) {
2825
+ target = target[
2826
+ "__v_raw"
2827
+ /* RAW */
2828
+ ];
2829
+ const rawTarget = toRaw(target);
2830
+ const rawKey = toRaw(key);
2831
+ if (key !== rawKey) {
2832
+ !isReadonly && track(rawTarget, "get", key);
2833
+ }
2834
+ !isReadonly && track(rawTarget, "get", rawKey);
2835
+ const { has: has2 } = getProto(rawTarget);
2836
+ const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;
2837
+ if (has2.call(rawTarget, key)) {
2838
+ return wrap(target.get(key));
2839
+ } else if (has2.call(rawTarget, rawKey)) {
2840
+ return wrap(target.get(rawKey));
2841
+ } else if (target !== rawTarget) {
2842
+ target.get(key);
2843
+ }
2844
+ }
2845
+ function has$1(key, isReadonly = false) {
2846
+ const target = this[
2847
+ "__v_raw"
2848
+ /* RAW */
2849
+ ];
2850
+ const rawTarget = toRaw(target);
2851
+ const rawKey = toRaw(key);
2852
+ if (key !== rawKey) {
2853
+ !isReadonly && track(rawTarget, "has", key);
2854
+ }
2855
+ !isReadonly && track(rawTarget, "has", rawKey);
2856
+ return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey);
2857
+ }
2858
+ function size(target, isReadonly = false) {
2859
+ target = target[
2860
+ "__v_raw"
2861
+ /* RAW */
2862
+ ];
2863
+ !isReadonly && track(toRaw(target), "iterate", ITERATE_KEY);
2864
+ return Reflect.get(target, "size", target);
2865
+ }
2866
+ function add(value) {
2867
+ value = toRaw(value);
2868
+ const target = toRaw(this);
2869
+ const proto = getProto(target);
2870
+ const hadKey = proto.has.call(target, value);
2871
+ if (!hadKey) {
2872
+ target.add(value);
2873
+ trigger(target, "add", value, value);
2874
+ }
2875
+ return this;
2876
+ }
2877
+ function set$1(key, value) {
2878
+ value = toRaw(value);
2879
+ const target = toRaw(this);
2880
+ const { has: has2, get: get3 } = getProto(target);
2881
+ let hadKey = has2.call(target, key);
2882
+ if (!hadKey) {
2883
+ key = toRaw(key);
2884
+ hadKey = has2.call(target, key);
2885
+ } else if (true) {
2886
+ checkIdentityKeys(target, has2, key);
2887
+ }
2888
+ const oldValue = get3.call(target, key);
2889
+ target.set(key, value);
2890
+ if (!hadKey) {
2891
+ trigger(target, "add", key, value);
2892
+ } else if (hasChanged(value, oldValue)) {
2893
+ trigger(target, "set", key, value, oldValue);
2894
+ }
2895
+ return this;
2896
+ }
2897
+ function deleteEntry(key) {
2898
+ const target = toRaw(this);
2899
+ const { has: has2, get: get3 } = getProto(target);
2900
+ let hadKey = has2.call(target, key);
2901
+ if (!hadKey) {
2902
+ key = toRaw(key);
2903
+ hadKey = has2.call(target, key);
2904
+ } else if (true) {
2905
+ checkIdentityKeys(target, has2, key);
2906
+ }
2907
+ const oldValue = get3 ? get3.call(target, key) : void 0;
2908
+ const result = target.delete(key);
2909
+ if (hadKey) {
2910
+ trigger(target, "delete", key, void 0, oldValue);
2911
+ }
2912
+ return result;
2913
+ }
2914
+ function clear() {
2915
+ const target = toRaw(this);
2916
+ const hadItems = target.size !== 0;
2917
+ const oldTarget = true ? isMap(target) ? new Map(target) : new Set(target) : void 0;
2918
+ const result = target.clear();
2919
+ if (hadItems) {
2920
+ trigger(target, "clear", void 0, void 0, oldTarget);
2921
+ }
2922
+ return result;
2923
+ }
2924
+ function createForEach(isReadonly, isShallow) {
2925
+ return function forEach(callback, thisArg) {
2926
+ const observed = this;
2927
+ const target = observed[
2928
+ "__v_raw"
2929
+ /* RAW */
2930
+ ];
2931
+ const rawTarget = toRaw(target);
2932
+ const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;
2933
+ !isReadonly && track(rawTarget, "iterate", ITERATE_KEY);
2934
+ return target.forEach((value, key) => {
2935
+ return callback.call(thisArg, wrap(value), wrap(key), observed);
2936
+ });
2937
+ };
2938
+ }
2939
+ function createIterableMethod(method, isReadonly, isShallow) {
2940
+ return function(...args) {
2941
+ const target = this[
2942
+ "__v_raw"
2943
+ /* RAW */
2944
+ ];
2945
+ const rawTarget = toRaw(target);
2946
+ const targetIsMap = isMap(rawTarget);
2947
+ const isPair = method === "entries" || method === Symbol.iterator && targetIsMap;
2948
+ const isKeyOnly = method === "keys" && targetIsMap;
2949
+ const innerIterator = target[method](...args);
2950
+ const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;
2951
+ !isReadonly && track(rawTarget, "iterate", isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY);
2952
+ return {
2953
+ // iterator protocol
2954
+ next() {
2955
+ const { value, done } = innerIterator.next();
2956
+ return done ? { value, done } : {
2957
+ value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value),
2958
+ done
2959
+ };
2960
+ },
2961
+ // iterable protocol
2962
+ [Symbol.iterator]() {
2963
+ return this;
2964
+ }
2965
+ };
2966
+ };
2967
+ }
2968
+ function createReadonlyMethod(type) {
2969
+ return function(...args) {
2970
+ if (true) {
2971
+ const key = args[0] ? `on key "${args[0]}" ` : ``;
2972
+ console.warn(`${capitalize(type)} operation ${key}failed: target is readonly.`, toRaw(this));
2973
+ }
2974
+ return type === "delete" ? false : this;
2975
+ };
2976
+ }
2977
+ function createInstrumentations() {
2978
+ const mutableInstrumentations2 = {
2979
+ get(key) {
2980
+ return get$1(this, key);
2981
+ },
2982
+ get size() {
2983
+ return size(this);
2984
+ },
2985
+ has: has$1,
2986
+ add,
2987
+ set: set$1,
2988
+ delete: deleteEntry,
2989
+ clear,
2990
+ forEach: createForEach(false, false)
2991
+ };
2992
+ const shallowInstrumentations2 = {
2993
+ get(key) {
2994
+ return get$1(this, key, false, true);
2995
+ },
2996
+ get size() {
2997
+ return size(this);
2998
+ },
2999
+ has: has$1,
3000
+ add,
3001
+ set: set$1,
3002
+ delete: deleteEntry,
3003
+ clear,
3004
+ forEach: createForEach(false, true)
3005
+ };
3006
+ const readonlyInstrumentations2 = {
3007
+ get(key) {
3008
+ return get$1(this, key, true);
3009
+ },
3010
+ get size() {
3011
+ return size(this, true);
3012
+ },
3013
+ has(key) {
3014
+ return has$1.call(this, key, true);
3015
+ },
3016
+ add: createReadonlyMethod(
3017
+ "add"
3018
+ /* ADD */
3019
+ ),
3020
+ set: createReadonlyMethod(
3021
+ "set"
3022
+ /* SET */
3023
+ ),
3024
+ delete: createReadonlyMethod(
3025
+ "delete"
3026
+ /* DELETE */
3027
+ ),
3028
+ clear: createReadonlyMethod(
3029
+ "clear"
3030
+ /* CLEAR */
3031
+ ),
3032
+ forEach: createForEach(true, false)
3033
+ };
3034
+ const shallowReadonlyInstrumentations2 = {
3035
+ get(key) {
3036
+ return get$1(this, key, true, true);
3037
+ },
3038
+ get size() {
3039
+ return size(this, true);
3040
+ },
3041
+ has(key) {
3042
+ return has$1.call(this, key, true);
3043
+ },
3044
+ add: createReadonlyMethod(
3045
+ "add"
3046
+ /* ADD */
3047
+ ),
3048
+ set: createReadonlyMethod(
3049
+ "set"
3050
+ /* SET */
3051
+ ),
3052
+ delete: createReadonlyMethod(
3053
+ "delete"
3054
+ /* DELETE */
3055
+ ),
3056
+ clear: createReadonlyMethod(
3057
+ "clear"
3058
+ /* CLEAR */
3059
+ ),
3060
+ forEach: createForEach(true, true)
3061
+ };
3062
+ const iteratorMethods = ["keys", "values", "entries", Symbol.iterator];
3063
+ iteratorMethods.forEach((method) => {
3064
+ mutableInstrumentations2[method] = createIterableMethod(method, false, false);
3065
+ readonlyInstrumentations2[method] = createIterableMethod(method, true, false);
3066
+ shallowInstrumentations2[method] = createIterableMethod(method, false, true);
3067
+ shallowReadonlyInstrumentations2[method] = createIterableMethod(method, true, true);
3068
+ });
3069
+ return [
3070
+ mutableInstrumentations2,
3071
+ readonlyInstrumentations2,
3072
+ shallowInstrumentations2,
3073
+ shallowReadonlyInstrumentations2
3074
+ ];
3075
+ }
3076
+ var [mutableInstrumentations, readonlyInstrumentations, shallowInstrumentations, shallowReadonlyInstrumentations] = /* @__PURE__ */ createInstrumentations();
3077
+ function createInstrumentationGetter(isReadonly, shallow) {
3078
+ const instrumentations = shallow ? isReadonly ? shallowReadonlyInstrumentations : shallowInstrumentations : isReadonly ? readonlyInstrumentations : mutableInstrumentations;
3079
+ return (target, key, receiver) => {
3080
+ if (key === "__v_isReactive") {
3081
+ return !isReadonly;
3082
+ } else if (key === "__v_isReadonly") {
3083
+ return isReadonly;
3084
+ } else if (key === "__v_raw") {
3085
+ return target;
3086
+ }
3087
+ return Reflect.get(hasOwn(instrumentations, key) && key in target ? instrumentations : target, key, receiver);
3088
+ };
3089
+ }
3090
+ var mutableCollectionHandlers = {
3091
+ get: /* @__PURE__ */ createInstrumentationGetter(false, false)
3092
+ };
3093
+ var readonlyCollectionHandlers = {
3094
+ get: /* @__PURE__ */ createInstrumentationGetter(true, false)
3095
+ };
3096
+ function checkIdentityKeys(target, has2, key) {
3097
+ const rawKey = toRaw(key);
3098
+ if (rawKey !== key && has2.call(target, rawKey)) {
3099
+ const type = toRawType(target);
3100
+ 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.`);
3101
+ }
3102
+ }
3103
+ var reactiveMap = /* @__PURE__ */ new WeakMap();
3104
+ var shallowReactiveMap = /* @__PURE__ */ new WeakMap();
3105
+ var readonlyMap = /* @__PURE__ */ new WeakMap();
3106
+ var shallowReadonlyMap = /* @__PURE__ */ new WeakMap();
3107
+ function targetTypeMap(rawType) {
3108
+ switch (rawType) {
3109
+ case "Object":
3110
+ case "Array":
3111
+ return 1;
3112
+ case "Map":
3113
+ case "Set":
3114
+ case "WeakMap":
3115
+ case "WeakSet":
3116
+ return 2;
3117
+ default:
3118
+ return 0;
3119
+ }
3120
+ }
3121
+ function getTargetType(value) {
3122
+ return value[
3123
+ "__v_skip"
3124
+ /* SKIP */
3125
+ ] || !Object.isExtensible(value) ? 0 : targetTypeMap(toRawType(value));
3126
+ }
3127
+ function reactive2(target) {
3128
+ if (target && target[
3129
+ "__v_isReadonly"
3130
+ /* IS_READONLY */
3131
+ ]) {
3132
+ return target;
3133
+ }
3134
+ return createReactiveObject(target, false, mutableHandlers, mutableCollectionHandlers, reactiveMap);
3135
+ }
3136
+ function readonly(target) {
3137
+ return createReactiveObject(target, true, readonlyHandlers, readonlyCollectionHandlers, readonlyMap);
3138
+ }
3139
+ function createReactiveObject(target, isReadonly, baseHandlers, collectionHandlers, proxyMap) {
3140
+ if (!isObject(target)) {
3141
+ if (true) {
3142
+ console.warn(`value cannot be made reactive: ${String(target)}`);
3143
+ }
3144
+ return target;
3145
+ }
3146
+ if (target[
3147
+ "__v_raw"
3148
+ /* RAW */
3149
+ ] && !(isReadonly && target[
3150
+ "__v_isReactive"
3151
+ /* IS_REACTIVE */
3152
+ ])) {
3153
+ return target;
3154
+ }
3155
+ const existingProxy = proxyMap.get(target);
3156
+ if (existingProxy) {
3157
+ return existingProxy;
3158
+ }
3159
+ const targetType = getTargetType(target);
3160
+ if (targetType === 0) {
3161
+ return target;
3162
+ }
3163
+ const proxy = new Proxy(target, targetType === 2 ? collectionHandlers : baseHandlers);
3164
+ proxyMap.set(target, proxy);
3165
+ return proxy;
3166
+ }
3167
+ function toRaw(observed) {
3168
+ return observed && toRaw(observed[
3169
+ "__v_raw"
3170
+ /* RAW */
3171
+ ]) || observed;
3172
+ }
3173
+ function isRef(r) {
3174
+ return Boolean(r && r.__v_isRef === true);
3175
+ }
3176
+ magic("nextTick", () => nextTick);
3177
+ magic("dispatch", (el) => dispatch.bind(dispatch, el));
3178
+ magic("watch", (el, { evaluateLater: evaluateLater2, cleanup: cleanup2 }) => (key, callback) => {
3179
+ let evaluate2 = evaluateLater2(key);
3180
+ let getter = () => {
3181
+ let value;
3182
+ evaluate2((i) => value = i);
3183
+ return value;
3184
+ };
3185
+ let unwatch = watch(getter, callback);
3186
+ cleanup2(unwatch);
3187
+ });
3188
+ magic("store", getStores);
3189
+ magic("data", (el) => scope(el));
3190
+ magic("root", (el) => closestRoot(el));
3191
+ magic("refs", (el) => {
3192
+ if (el._x_refs_proxy)
3193
+ return el._x_refs_proxy;
3194
+ el._x_refs_proxy = mergeProxies(getArrayOfRefObject(el));
3195
+ return el._x_refs_proxy;
3196
+ });
3197
+ function getArrayOfRefObject(el) {
3198
+ let refObjects = [];
3199
+ findClosest(el, (i) => {
3200
+ if (i._x_refs)
3201
+ refObjects.push(i._x_refs);
3202
+ });
3203
+ return refObjects;
3204
+ }
3205
+ var globalIdMemo = {};
3206
+ function findAndIncrementId(name) {
3207
+ if (!globalIdMemo[name])
3208
+ globalIdMemo[name] = 0;
3209
+ return ++globalIdMemo[name];
3210
+ }
3211
+ function closestIdRoot(el, name) {
3212
+ return findClosest(el, (element) => {
3213
+ if (element._x_ids && element._x_ids[name])
3214
+ return true;
3215
+ });
3216
+ }
3217
+ function setIdRoot(el, name) {
3218
+ if (!el._x_ids)
3219
+ el._x_ids = {};
3220
+ if (!el._x_ids[name])
3221
+ el._x_ids[name] = findAndIncrementId(name);
3222
+ }
3223
+ magic("id", (el, { cleanup: cleanup2 }) => (name, key = null) => {
3224
+ let cacheKey = `${name}${key ? `-${key}` : ""}`;
3225
+ return cacheIdByNameOnElement(el, cacheKey, cleanup2, () => {
3226
+ let root = closestIdRoot(el, name);
3227
+ let id = root ? root._x_ids[name] : findAndIncrementId(name);
3228
+ return key ? `${name}-${id}-${key}` : `${name}-${id}`;
3229
+ });
3230
+ });
3231
+ interceptClone((from, to) => {
3232
+ if (from._x_id) {
3233
+ to._x_id = from._x_id;
3234
+ }
3235
+ });
3236
+ function cacheIdByNameOnElement(el, cacheKey, cleanup2, callback) {
3237
+ if (!el._x_id)
3238
+ el._x_id = {};
3239
+ if (el._x_id[cacheKey])
3240
+ return el._x_id[cacheKey];
3241
+ let output = callback();
3242
+ el._x_id[cacheKey] = output;
3243
+ cleanup2(() => {
3244
+ delete el._x_id[cacheKey];
3245
+ });
3246
+ return output;
3247
+ }
3248
+ magic("el", (el) => el);
3249
+ warnMissingPluginMagic("Focus", "focus", "focus");
3250
+ warnMissingPluginMagic("Persist", "persist", "persist");
3251
+ function warnMissingPluginMagic(name, magicName, slug) {
3252
+ magic(magicName, (el) => warn(`You can't use [$${magicName}] without first installing the "${name}" plugin here: https://alpinejs.dev/plugins/${slug}`, el));
3253
+ }
3254
+ directive("modelable", (el, { expression }, { effect: effect3, evaluateLater: evaluateLater2, cleanup: cleanup2 }) => {
3255
+ let func = evaluateLater2(expression);
3256
+ let innerGet = () => {
3257
+ let result;
3258
+ func((i) => result = i);
3259
+ return result;
3260
+ };
3261
+ let evaluateInnerSet = evaluateLater2(`${expression} = __placeholder`);
3262
+ let innerSet = (val) => evaluateInnerSet(() => {
3263
+ }, { scope: { "__placeholder": val } });
3264
+ let initialValue = innerGet();
3265
+ innerSet(initialValue);
3266
+ queueMicrotask(() => {
3267
+ if (!el._x_model)
3268
+ return;
3269
+ el._x_removeModelListeners["default"]();
3270
+ let outerGet = el._x_model.get;
3271
+ let outerSet = el._x_model.set;
3272
+ let releaseEntanglement = entangle(
3273
+ {
3274
+ get() {
3275
+ return outerGet();
3276
+ },
3277
+ set(value) {
3278
+ outerSet(value);
3279
+ }
3280
+ },
3281
+ {
3282
+ get() {
3283
+ return innerGet();
3284
+ },
3285
+ set(value) {
3286
+ innerSet(value);
3287
+ }
3288
+ }
3289
+ );
3290
+ cleanup2(releaseEntanglement);
3291
+ });
3292
+ });
3293
+ directive("teleport", (el, { modifiers, expression }, { cleanup: cleanup2 }) => {
3294
+ if (el.tagName.toLowerCase() !== "template")
3295
+ warn("x-teleport can only be used on a <template> tag", el);
3296
+ let target = getTarget(expression);
3297
+ let clone2 = el.content.cloneNode(true).firstElementChild;
3298
+ el._x_teleport = clone2;
3299
+ clone2._x_teleportBack = el;
3300
+ el.setAttribute("data-teleport-template", true);
3301
+ clone2.setAttribute("data-teleport-target", true);
3302
+ if (el._x_forwardEvents) {
3303
+ el._x_forwardEvents.forEach((eventName) => {
3304
+ clone2.addEventListener(eventName, (e) => {
3305
+ e.stopPropagation();
3306
+ el.dispatchEvent(new e.constructor(e.type, e));
3307
+ });
3308
+ });
3309
+ }
3310
+ addScopeToNode(clone2, {}, el);
3311
+ let placeInDom = (clone3, target2, modifiers2) => {
3312
+ if (modifiers2.includes("prepend")) {
3313
+ target2.parentNode.insertBefore(clone3, target2);
3314
+ } else if (modifiers2.includes("append")) {
3315
+ target2.parentNode.insertBefore(clone3, target2.nextSibling);
3316
+ } else {
3317
+ target2.appendChild(clone3);
3318
+ }
3319
+ };
3320
+ mutateDom(() => {
3321
+ placeInDom(clone2, target, modifiers);
3322
+ skipDuringClone(() => {
3323
+ initTree(clone2);
3324
+ })();
3325
+ });
3326
+ el._x_teleportPutBack = () => {
3327
+ let target2 = getTarget(expression);
3328
+ mutateDom(() => {
3329
+ placeInDom(el._x_teleport, target2, modifiers);
3330
+ });
3331
+ };
3332
+ cleanup2(
3333
+ () => mutateDom(() => {
3334
+ clone2.remove();
3335
+ destroyTree(clone2);
3336
+ })
3337
+ );
3338
+ });
3339
+ var teleportContainerDuringClone = document.createElement("div");
3340
+ function getTarget(expression) {
3341
+ let target = skipDuringClone(() => {
3342
+ return document.querySelector(expression);
3343
+ }, () => {
3344
+ return teleportContainerDuringClone;
3345
+ })();
3346
+ if (!target)
3347
+ warn(`Cannot find x-teleport element for selector: "${expression}"`);
3348
+ return target;
3349
+ }
3350
+ var handler = () => {
3351
+ };
3352
+ handler.inline = (el, { modifiers }, { cleanup: cleanup2 }) => {
3353
+ modifiers.includes("self") ? el._x_ignoreSelf = true : el._x_ignore = true;
3354
+ cleanup2(() => {
3355
+ modifiers.includes("self") ? delete el._x_ignoreSelf : delete el._x_ignore;
3356
+ });
3357
+ };
3358
+ directive("ignore", handler);
3359
+ directive("effect", skipDuringClone((el, { expression }, { effect: effect3 }) => {
3360
+ effect3(evaluateLater(el, expression));
3361
+ }));
3362
+ function on(el, event, modifiers, callback) {
3363
+ let listenerTarget = el;
3364
+ let handler4 = (e) => callback(e);
3365
+ let options = {};
3366
+ let wrapHandler = (callback2, wrapper) => (e) => wrapper(callback2, e);
3367
+ if (modifiers.includes("dot"))
3368
+ event = dotSyntax(event);
3369
+ if (modifiers.includes("camel"))
3370
+ event = camelCase2(event);
3371
+ if (modifiers.includes("passive"))
3372
+ options.passive = true;
3373
+ if (modifiers.includes("capture"))
3374
+ options.capture = true;
3375
+ if (modifiers.includes("window"))
3376
+ listenerTarget = window;
3377
+ if (modifiers.includes("document"))
3378
+ listenerTarget = document;
3379
+ if (modifiers.includes("debounce")) {
3380
+ let nextModifier = modifiers[modifiers.indexOf("debounce") + 1] || "invalid-wait";
3381
+ let wait = isNumeric(nextModifier.split("ms")[0]) ? Number(nextModifier.split("ms")[0]) : 250;
3382
+ handler4 = debounce(handler4, wait);
3383
+ }
3384
+ if (modifiers.includes("throttle")) {
3385
+ let nextModifier = modifiers[modifiers.indexOf("throttle") + 1] || "invalid-wait";
3386
+ let wait = isNumeric(nextModifier.split("ms")[0]) ? Number(nextModifier.split("ms")[0]) : 250;
3387
+ handler4 = throttle(handler4, wait);
3388
+ }
3389
+ if (modifiers.includes("prevent"))
3390
+ handler4 = wrapHandler(handler4, (next, e) => {
3391
+ e.preventDefault();
3392
+ next(e);
3393
+ });
3394
+ if (modifiers.includes("stop"))
3395
+ handler4 = wrapHandler(handler4, (next, e) => {
3396
+ e.stopPropagation();
3397
+ next(e);
3398
+ });
3399
+ if (modifiers.includes("once")) {
3400
+ handler4 = wrapHandler(handler4, (next, e) => {
3401
+ next(e);
3402
+ listenerTarget.removeEventListener(event, handler4, options);
3403
+ });
3404
+ }
3405
+ if (modifiers.includes("away") || modifiers.includes("outside")) {
3406
+ listenerTarget = document;
3407
+ handler4 = wrapHandler(handler4, (next, e) => {
3408
+ if (el.contains(e.target))
3409
+ return;
3410
+ if (e.target.isConnected === false)
3411
+ return;
3412
+ if (el.offsetWidth < 1 && el.offsetHeight < 1)
3413
+ return;
3414
+ if (el._x_isShown === false)
3415
+ return;
3416
+ next(e);
3417
+ });
3418
+ }
3419
+ if (modifiers.includes("self"))
3420
+ handler4 = wrapHandler(handler4, (next, e) => {
3421
+ e.target === el && next(e);
3422
+ });
3423
+ if (isKeyEvent(event) || isClickEvent(event)) {
3424
+ handler4 = wrapHandler(handler4, (next, e) => {
3425
+ if (isListeningForASpecificKeyThatHasntBeenPressed(e, modifiers)) {
3426
+ return;
3427
+ }
3428
+ next(e);
3429
+ });
3430
+ }
3431
+ listenerTarget.addEventListener(event, handler4, options);
3432
+ return () => {
3433
+ listenerTarget.removeEventListener(event, handler4, options);
3434
+ };
3435
+ }
3436
+ function dotSyntax(subject) {
3437
+ return subject.replace(/-/g, ".");
3438
+ }
3439
+ function camelCase2(subject) {
3440
+ return subject.toLowerCase().replace(/-(\w)/g, (match, char) => char.toUpperCase());
3441
+ }
3442
+ function isNumeric(subject) {
3443
+ return !Array.isArray(subject) && !isNaN(subject);
3444
+ }
3445
+ function kebabCase2(subject) {
3446
+ if ([" ", "_"].includes(
3447
+ subject
3448
+ ))
3449
+ return subject;
3450
+ return subject.replace(/([a-z])([A-Z])/g, "$1-$2").replace(/[_\s]/, "-").toLowerCase();
3451
+ }
3452
+ function isKeyEvent(event) {
3453
+ return ["keydown", "keyup"].includes(event);
3454
+ }
3455
+ function isClickEvent(event) {
3456
+ return ["contextmenu", "click", "mouse"].some((i) => event.includes(i));
3457
+ }
3458
+ function isListeningForASpecificKeyThatHasntBeenPressed(e, modifiers) {
3459
+ let keyModifiers = modifiers.filter((i) => {
3460
+ return !["window", "document", "prevent", "stop", "once", "capture", "self", "away", "outside", "passive", "preserve-scroll"].includes(i);
3461
+ });
3462
+ if (keyModifiers.includes("debounce")) {
3463
+ let debounceIndex = keyModifiers.indexOf("debounce");
3464
+ keyModifiers.splice(debounceIndex, isNumeric((keyModifiers[debounceIndex + 1] || "invalid-wait").split("ms")[0]) ? 2 : 1);
3465
+ }
3466
+ if (keyModifiers.includes("throttle")) {
3467
+ let debounceIndex = keyModifiers.indexOf("throttle");
3468
+ keyModifiers.splice(debounceIndex, isNumeric((keyModifiers[debounceIndex + 1] || "invalid-wait").split("ms")[0]) ? 2 : 1);
3469
+ }
3470
+ if (keyModifiers.length === 0)
3471
+ return false;
3472
+ if (keyModifiers.length === 1 && keyToModifiers(e.key).includes(keyModifiers[0]))
3473
+ return false;
3474
+ const systemKeyModifiers = ["ctrl", "shift", "alt", "meta", "cmd", "super"];
3475
+ const selectedSystemKeyModifiers = systemKeyModifiers.filter((modifier) => keyModifiers.includes(modifier));
3476
+ keyModifiers = keyModifiers.filter((i) => !selectedSystemKeyModifiers.includes(i));
3477
+ if (selectedSystemKeyModifiers.length > 0) {
3478
+ const activelyPressedKeyModifiers = selectedSystemKeyModifiers.filter((modifier) => {
3479
+ if (modifier === "cmd" || modifier === "super")
3480
+ modifier = "meta";
3481
+ return e[`${modifier}Key`];
3482
+ });
3483
+ if (activelyPressedKeyModifiers.length === selectedSystemKeyModifiers.length) {
3484
+ if (isClickEvent(e.type))
3485
+ return false;
3486
+ if (keyToModifiers(e.key).includes(keyModifiers[0]))
3487
+ return false;
3488
+ }
3489
+ }
3490
+ return true;
3491
+ }
3492
+ function keyToModifiers(key) {
3493
+ if (!key)
3494
+ return [];
3495
+ key = kebabCase2(key);
3496
+ let modifierToKeyMap = {
3497
+ "ctrl": "control",
3498
+ "slash": "/",
3499
+ "space": " ",
3500
+ "spacebar": " ",
3501
+ "cmd": "meta",
3502
+ "esc": "escape",
3503
+ "up": "arrow-up",
3504
+ "down": "arrow-down",
3505
+ "left": "arrow-left",
3506
+ "right": "arrow-right",
3507
+ "period": ".",
3508
+ "comma": ",",
3509
+ "equal": "=",
3510
+ "minus": "-",
3511
+ "underscore": "_"
3512
+ };
3513
+ modifierToKeyMap[key] = key;
3514
+ return Object.keys(modifierToKeyMap).map((modifier) => {
3515
+ if (modifierToKeyMap[modifier] === key)
3516
+ return modifier;
3517
+ }).filter((modifier) => modifier);
3518
+ }
3519
+ directive("model", (el, { modifiers, expression }, { effect: effect3, cleanup: cleanup2 }) => {
3520
+ let scopeTarget = el;
3521
+ if (modifiers.includes("parent")) {
3522
+ scopeTarget = el.parentNode;
3523
+ }
3524
+ let evaluateGet = evaluateLater(scopeTarget, expression);
3525
+ let evaluateSet;
3526
+ if (typeof expression === "string") {
3527
+ evaluateSet = evaluateLater(scopeTarget, `${expression} = __placeholder`);
3528
+ } else if (typeof expression === "function" && typeof expression() === "string") {
3529
+ evaluateSet = evaluateLater(scopeTarget, `${expression()} = __placeholder`);
3530
+ } else {
3531
+ evaluateSet = () => {
3532
+ };
3533
+ }
3534
+ let getValue = () => {
3535
+ let result;
3536
+ evaluateGet((value) => result = value);
3537
+ return isGetterSetter(result) ? result.get() : result;
3538
+ };
3539
+ let setValue = (value) => {
3540
+ let result;
3541
+ evaluateGet((value2) => result = value2);
3542
+ if (isGetterSetter(result)) {
3543
+ result.set(value);
3544
+ } else {
3545
+ evaluateSet(() => {
3546
+ }, {
3547
+ scope: { "__placeholder": value }
3548
+ });
3549
+ }
3550
+ };
3551
+ if (typeof expression === "string" && el.type === "radio") {
3552
+ mutateDom(() => {
3553
+ if (!el.hasAttribute("name"))
3554
+ el.setAttribute("name", expression);
3555
+ });
3556
+ }
3557
+ let event = el.tagName.toLowerCase() === "select" || ["checkbox", "radio"].includes(el.type) || modifiers.includes("lazy") ? "change" : "input";
3558
+ let removeListener = isCloning ? () => {
3559
+ } : on(el, event, modifiers, (e) => {
3560
+ setValue(getInputValue(el, modifiers, e, getValue()));
3561
+ });
3562
+ if (modifiers.includes("fill")) {
3563
+ if ([void 0, null, ""].includes(getValue()) || isCheckbox(el) && Array.isArray(getValue()) || el.tagName.toLowerCase() === "select" && el.multiple) {
3564
+ setValue(
3565
+ getInputValue(el, modifiers, { target: el }, getValue())
3566
+ );
3567
+ }
3568
+ }
3569
+ if (!el._x_removeModelListeners)
3570
+ el._x_removeModelListeners = {};
3571
+ el._x_removeModelListeners["default"] = removeListener;
3572
+ cleanup2(() => el._x_removeModelListeners["default"]());
3573
+ if (el.form) {
3574
+ let removeResetListener = on(el.form, "reset", [], (e) => {
3575
+ nextTick(() => el._x_model && el._x_model.set(getInputValue(el, modifiers, { target: el }, getValue())));
3576
+ });
3577
+ cleanup2(() => removeResetListener());
3578
+ }
3579
+ el._x_model = {
3580
+ get() {
3581
+ return getValue();
3582
+ },
3583
+ set(value) {
3584
+ setValue(value);
3585
+ }
3586
+ };
3587
+ el._x_forceModelUpdate = (value) => {
3588
+ if (value === void 0 && typeof expression === "string" && expression.match(/\./))
3589
+ value = "";
3590
+ window.fromModel = true;
3591
+ mutateDom(() => bind(el, "value", value));
3592
+ delete window.fromModel;
3593
+ };
3594
+ effect3(() => {
3595
+ let value = getValue();
3596
+ if (modifiers.includes("unintrusive") && document.activeElement.isSameNode(el))
3597
+ return;
3598
+ el._x_forceModelUpdate(value);
3599
+ });
3600
+ });
3601
+ function getInputValue(el, modifiers, event, currentValue) {
3602
+ return mutateDom(() => {
3603
+ if (event instanceof CustomEvent && event.detail !== void 0)
3604
+ return event.detail !== null && event.detail !== void 0 ? event.detail : event.target.value;
3605
+ else if (isCheckbox(el)) {
3606
+ if (Array.isArray(currentValue)) {
3607
+ let newValue = null;
3608
+ if (modifiers.includes("number")) {
3609
+ newValue = safeParseNumber(event.target.value);
3610
+ } else if (modifiers.includes("boolean")) {
3611
+ newValue = safeParseBoolean(event.target.value);
3612
+ } else {
3613
+ newValue = event.target.value;
3614
+ }
3615
+ return event.target.checked ? currentValue.includes(newValue) ? currentValue : currentValue.concat([newValue]) : currentValue.filter((el2) => !checkedAttrLooseCompare2(el2, newValue));
3616
+ } else {
3617
+ return event.target.checked;
3618
+ }
3619
+ } else if (el.tagName.toLowerCase() === "select" && el.multiple) {
3620
+ if (modifiers.includes("number")) {
3621
+ return Array.from(event.target.selectedOptions).map((option) => {
3622
+ let rawValue = option.value || option.text;
3623
+ return safeParseNumber(rawValue);
3624
+ });
3625
+ } else if (modifiers.includes("boolean")) {
3626
+ return Array.from(event.target.selectedOptions).map((option) => {
3627
+ let rawValue = option.value || option.text;
3628
+ return safeParseBoolean(rawValue);
3629
+ });
3630
+ }
3631
+ return Array.from(event.target.selectedOptions).map((option) => {
3632
+ return option.value || option.text;
3633
+ });
3634
+ } else {
3635
+ let newValue;
3636
+ if (isRadio(el)) {
3637
+ if (event.target.checked) {
3638
+ newValue = event.target.value;
3639
+ } else {
3640
+ newValue = currentValue;
3641
+ }
3642
+ } else {
3643
+ newValue = event.target.value;
3644
+ }
3645
+ if (modifiers.includes("number")) {
3646
+ return safeParseNumber(newValue);
3647
+ } else if (modifiers.includes("boolean")) {
3648
+ return safeParseBoolean(newValue);
3649
+ } else if (modifiers.includes("trim")) {
3650
+ return newValue.trim();
3651
+ } else {
3652
+ return newValue;
3653
+ }
3654
+ }
3655
+ });
3656
+ }
3657
+ function safeParseNumber(rawValue) {
3658
+ let number = rawValue ? parseFloat(rawValue) : null;
3659
+ return isNumeric2(number) ? number : rawValue;
3660
+ }
3661
+ function checkedAttrLooseCompare2(valueA, valueB) {
3662
+ return valueA == valueB;
3663
+ }
3664
+ function isNumeric2(subject) {
3665
+ return !Array.isArray(subject) && !isNaN(subject);
3666
+ }
3667
+ function isGetterSetter(value) {
3668
+ return value !== null && typeof value === "object" && typeof value.get === "function" && typeof value.set === "function";
3669
+ }
3670
+ directive("cloak", (el) => queueMicrotask(() => mutateDom(() => el.removeAttribute(prefix("cloak")))));
3671
+ addInitSelector(() => `[${prefix("init")}]`);
3672
+ directive("init", skipDuringClone((el, { expression }, { evaluate: evaluate2 }) => {
3673
+ if (typeof expression === "string") {
3674
+ return !!expression.trim() && evaluate2(expression, {}, false);
3675
+ }
3676
+ return evaluate2(expression, {}, false);
3677
+ }));
3678
+ directive("text", (el, { expression }, { effect: effect3, evaluateLater: evaluateLater2 }) => {
3679
+ let evaluate2 = evaluateLater2(expression);
3680
+ effect3(() => {
3681
+ evaluate2((value) => {
3682
+ mutateDom(() => {
3683
+ el.textContent = value;
3684
+ });
3685
+ });
3686
+ });
3687
+ });
3688
+ directive("html", (el, { expression }, { effect: effect3, evaluateLater: evaluateLater2 }) => {
3689
+ let evaluate2 = evaluateLater2(expression);
3690
+ effect3(() => {
3691
+ evaluate2((value) => {
3692
+ mutateDom(() => {
3693
+ el.innerHTML = value;
3694
+ el._x_ignoreSelf = true;
3695
+ initTree(el);
3696
+ delete el._x_ignoreSelf;
3697
+ });
3698
+ });
3699
+ });
3700
+ });
3701
+ mapAttributes(startingWith(":", into(prefix("bind:"))));
3702
+ var handler2 = (el, { value, modifiers, expression, original }, { effect: effect3, cleanup: cleanup2 }) => {
3703
+ if (!value) {
3704
+ let bindingProviders = {};
3705
+ injectBindingProviders(bindingProviders);
3706
+ let getBindings = evaluateLater(el, expression);
3707
+ getBindings((bindings) => {
3708
+ applyBindingsObject(el, bindings, original);
3709
+ }, { scope: bindingProviders });
3710
+ return;
3711
+ }
3712
+ if (value === "key")
3713
+ return storeKeyForXFor(el, expression);
3714
+ if (el._x_inlineBindings && el._x_inlineBindings[value] && el._x_inlineBindings[value].extract) {
3715
+ return;
3716
+ }
3717
+ let evaluate2 = evaluateLater(el, expression);
3718
+ effect3(() => evaluate2((result) => {
3719
+ if (result === void 0 && typeof expression === "string" && expression.match(/\./)) {
3720
+ result = "";
3721
+ }
3722
+ mutateDom(() => bind(el, value, result, modifiers));
3723
+ }));
3724
+ cleanup2(() => {
3725
+ el._x_undoAddedClasses && el._x_undoAddedClasses();
3726
+ el._x_undoAddedStyles && el._x_undoAddedStyles();
3727
+ });
3728
+ };
3729
+ handler2.inline = (el, { value, modifiers, expression }) => {
3730
+ if (!value)
3731
+ return;
3732
+ if (!el._x_inlineBindings)
3733
+ el._x_inlineBindings = {};
3734
+ el._x_inlineBindings[value] = { expression, extract: false };
3735
+ };
3736
+ directive("bind", handler2);
3737
+ function storeKeyForXFor(el, expression) {
3738
+ el._x_keyExpression = expression;
3739
+ }
3740
+ addRootSelector(() => `[${prefix("data")}]`);
3741
+ directive("data", (el, { expression }, { cleanup: cleanup2 }) => {
3742
+ if (shouldSkipRegisteringDataDuringClone(el))
3743
+ return;
3744
+ expression = expression === "" ? "{}" : expression;
3745
+ let magicContext = {};
3746
+ injectMagics(magicContext, el);
3747
+ let dataProviderContext = {};
3748
+ injectDataProviders(dataProviderContext, magicContext);
3749
+ let data2 = evaluate(el, expression, { scope: dataProviderContext });
3750
+ if (data2 === void 0 || data2 === true)
3751
+ data2 = {};
3752
+ injectMagics(data2, el);
3753
+ let reactiveData = reactive(data2);
3754
+ initInterceptors(reactiveData);
3755
+ let undo = addScopeToNode(el, reactiveData);
3756
+ reactiveData["init"] && evaluate(el, reactiveData["init"]);
3757
+ cleanup2(() => {
3758
+ reactiveData["destroy"] && evaluate(el, reactiveData["destroy"]);
3759
+ undo();
3760
+ });
3761
+ });
3762
+ interceptClone((from, to) => {
3763
+ if (from._x_dataStack) {
3764
+ to._x_dataStack = from._x_dataStack;
3765
+ to.setAttribute("data-has-alpine-state", true);
3766
+ }
3767
+ });
3768
+ function shouldSkipRegisteringDataDuringClone(el) {
3769
+ if (!isCloning)
3770
+ return false;
3771
+ if (isCloningLegacy)
3772
+ return true;
3773
+ return el.hasAttribute("data-has-alpine-state");
3774
+ }
3775
+ directive("show", (el, { modifiers, expression }, { effect: effect3 }) => {
3776
+ let evaluate2 = evaluateLater(el, expression);
3777
+ if (!el._x_doHide)
3778
+ el._x_doHide = () => {
3779
+ mutateDom(() => {
3780
+ el.style.setProperty("display", "none", modifiers.includes("important") ? "important" : void 0);
3781
+ });
3782
+ };
3783
+ if (!el._x_doShow)
3784
+ el._x_doShow = () => {
3785
+ mutateDom(() => {
3786
+ if (el.style.length === 1 && el.style.display === "none") {
3787
+ el.removeAttribute("style");
3788
+ } else {
3789
+ el.style.removeProperty("display");
3790
+ }
3791
+ });
3792
+ };
3793
+ let hide = () => {
3794
+ el._x_doHide();
3795
+ el._x_isShown = false;
3796
+ };
3797
+ let show = () => {
3798
+ el._x_doShow();
3799
+ el._x_isShown = true;
3800
+ };
3801
+ let clickAwayCompatibleShow = () => setTimeout(show);
3802
+ let toggle = once(
3803
+ (value) => value ? show() : hide(),
3804
+ (value) => {
3805
+ if (typeof el._x_toggleAndCascadeWithTransitions === "function") {
3806
+ el._x_toggleAndCascadeWithTransitions(el, value, show, hide);
3807
+ } else {
3808
+ value ? clickAwayCompatibleShow() : hide();
3809
+ }
3810
+ }
3811
+ );
3812
+ let oldValue;
3813
+ let firstTime = true;
3814
+ effect3(() => evaluate2((value) => {
3815
+ if (!firstTime && value === oldValue)
3816
+ return;
3817
+ if (modifiers.includes("immediate"))
3818
+ value ? clickAwayCompatibleShow() : hide();
3819
+ toggle(value);
3820
+ oldValue = value;
3821
+ firstTime = false;
3822
+ }));
3823
+ });
3824
+ directive("for", (el, { expression }, { effect: effect3, cleanup: cleanup2 }) => {
3825
+ let iteratorNames = parseForExpression(expression);
3826
+ let evaluateItems = evaluateLater(el, iteratorNames.items);
3827
+ let evaluateKey = evaluateLater(
3828
+ el,
3829
+ // the x-bind:key expression is stored for our use instead of evaluated.
3830
+ el._x_keyExpression || "index"
3831
+ );
3832
+ el._x_prevKeys = [];
3833
+ el._x_lookup = {};
3834
+ effect3(() => loop(el, iteratorNames, evaluateItems, evaluateKey));
3835
+ cleanup2(() => {
3836
+ Object.values(el._x_lookup).forEach((el2) => mutateDom(
3837
+ () => {
3838
+ destroyTree(el2);
3839
+ el2.remove();
3840
+ }
3841
+ ));
3842
+ delete el._x_prevKeys;
3843
+ delete el._x_lookup;
3844
+ });
3845
+ });
3846
+ function loop(el, iteratorNames, evaluateItems, evaluateKey) {
3847
+ let isObject2 = (i) => typeof i === "object" && !Array.isArray(i);
3848
+ let templateEl = el;
3849
+ evaluateItems((items) => {
3850
+ if (isNumeric3(items) && items >= 0) {
3851
+ items = Array.from(Array(items).keys(), (i) => i + 1);
3852
+ }
3853
+ if (items === void 0)
3854
+ items = [];
3855
+ let lookup = el._x_lookup;
3856
+ let prevKeys = el._x_prevKeys;
3857
+ let scopes = [];
3858
+ let keys = [];
3859
+ if (isObject2(items)) {
3860
+ items = Object.entries(items).map(([key, value]) => {
3861
+ let scope2 = getIterationScopeVariables(iteratorNames, value, key, items);
3862
+ evaluateKey((value2) => {
3863
+ if (keys.includes(value2))
3864
+ warn("Duplicate key on x-for", el);
3865
+ keys.push(value2);
3866
+ }, { scope: { index: key, ...scope2 } });
3867
+ scopes.push(scope2);
3868
+ });
3869
+ } else {
3870
+ for (let i = 0; i < items.length; i++) {
3871
+ let scope2 = getIterationScopeVariables(iteratorNames, items[i], i, items);
3872
+ evaluateKey((value) => {
3873
+ if (keys.includes(value))
3874
+ warn("Duplicate key on x-for", el);
3875
+ keys.push(value);
3876
+ }, { scope: { index: i, ...scope2 } });
3877
+ scopes.push(scope2);
3878
+ }
3879
+ }
3880
+ let adds = [];
3881
+ let moves = [];
3882
+ let removes = [];
3883
+ let sames = [];
3884
+ for (let i = 0; i < prevKeys.length; i++) {
3885
+ let key = prevKeys[i];
3886
+ if (keys.indexOf(key) === -1)
3887
+ removes.push(key);
3888
+ }
3889
+ prevKeys = prevKeys.filter((key) => !removes.includes(key));
3890
+ let lastKey = "template";
3891
+ for (let i = 0; i < keys.length; i++) {
3892
+ let key = keys[i];
3893
+ let prevIndex = prevKeys.indexOf(key);
3894
+ if (prevIndex === -1) {
3895
+ prevKeys.splice(i, 0, key);
3896
+ adds.push([lastKey, i]);
3897
+ } else if (prevIndex !== i) {
3898
+ let keyInSpot = prevKeys.splice(i, 1)[0];
3899
+ let keyForSpot = prevKeys.splice(prevIndex - 1, 1)[0];
3900
+ prevKeys.splice(i, 0, keyForSpot);
3901
+ prevKeys.splice(prevIndex, 0, keyInSpot);
3902
+ moves.push([keyInSpot, keyForSpot]);
3903
+ } else {
3904
+ sames.push(key);
3905
+ }
3906
+ lastKey = key;
3907
+ }
3908
+ for (let i = 0; i < removes.length; i++) {
3909
+ let key = removes[i];
3910
+ if (!(key in lookup))
3911
+ continue;
3912
+ mutateDom(() => {
3913
+ destroyTree(lookup[key]);
3914
+ lookup[key].remove();
3915
+ });
3916
+ delete lookup[key];
3917
+ }
3918
+ for (let i = 0; i < moves.length; i++) {
3919
+ let [keyInSpot, keyForSpot] = moves[i];
3920
+ let elInSpot = lookup[keyInSpot];
3921
+ let elForSpot = lookup[keyForSpot];
3922
+ let marker = document.createElement("div");
3923
+ mutateDom(() => {
3924
+ if (!elForSpot)
3925
+ warn(`x-for ":key" is undefined or invalid`, templateEl, keyForSpot, lookup);
3926
+ elForSpot.after(marker);
3927
+ elInSpot.after(elForSpot);
3928
+ elForSpot._x_currentIfEl && elForSpot.after(elForSpot._x_currentIfEl);
3929
+ marker.before(elInSpot);
3930
+ elInSpot._x_currentIfEl && elInSpot.after(elInSpot._x_currentIfEl);
3931
+ marker.remove();
3932
+ });
3933
+ elForSpot._x_refreshXForScope(scopes[keys.indexOf(keyForSpot)]);
3934
+ }
3935
+ for (let i = 0; i < adds.length; i++) {
3936
+ let [lastKey2, index] = adds[i];
3937
+ let lastEl = lastKey2 === "template" ? templateEl : lookup[lastKey2];
3938
+ if (lastEl._x_currentIfEl)
3939
+ lastEl = lastEl._x_currentIfEl;
3940
+ let scope2 = scopes[index];
3941
+ let key = keys[index];
3942
+ let clone2 = document.importNode(templateEl.content, true).firstElementChild;
3943
+ let reactiveScope = reactive(scope2);
3944
+ addScopeToNode(clone2, reactiveScope, templateEl);
3945
+ clone2._x_refreshXForScope = (newScope) => {
3946
+ Object.entries(newScope).forEach(([key2, value]) => {
3947
+ reactiveScope[key2] = value;
3948
+ });
3949
+ };
3950
+ mutateDom(() => {
3951
+ lastEl.after(clone2);
3952
+ skipDuringClone(() => initTree(clone2))();
3953
+ });
3954
+ if (typeof key === "object") {
3955
+ warn("x-for key cannot be an object, it must be a string or an integer", templateEl);
3956
+ }
3957
+ lookup[key] = clone2;
3958
+ }
3959
+ for (let i = 0; i < sames.length; i++) {
3960
+ lookup[sames[i]]._x_refreshXForScope(scopes[keys.indexOf(sames[i])]);
3961
+ }
3962
+ templateEl._x_prevKeys = keys;
3963
+ });
3964
+ }
3965
+ function parseForExpression(expression) {
3966
+ let forIteratorRE = /,([^,\}\]]*)(?:,([^,\}\]]*))?$/;
3967
+ let stripParensRE = /^\s*\(|\)\s*$/g;
3968
+ let forAliasRE = /([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/;
3969
+ let inMatch = expression.match(forAliasRE);
3970
+ if (!inMatch)
3971
+ return;
3972
+ let res = {};
3973
+ res.items = inMatch[2].trim();
3974
+ let item = inMatch[1].replace(stripParensRE, "").trim();
3975
+ let iteratorMatch = item.match(forIteratorRE);
3976
+ if (iteratorMatch) {
3977
+ res.item = item.replace(forIteratorRE, "").trim();
3978
+ res.index = iteratorMatch[1].trim();
3979
+ if (iteratorMatch[2]) {
3980
+ res.collection = iteratorMatch[2].trim();
3981
+ }
3982
+ } else {
3983
+ res.item = item;
3984
+ }
3985
+ return res;
3986
+ }
3987
+ function getIterationScopeVariables(iteratorNames, item, index, items) {
3988
+ let scopeVariables = {};
3989
+ if (/^\[.*\]$/.test(iteratorNames.item) && Array.isArray(item)) {
3990
+ let names = iteratorNames.item.replace("[", "").replace("]", "").split(",").map((i) => i.trim());
3991
+ names.forEach((name, i) => {
3992
+ scopeVariables[name] = item[i];
3993
+ });
3994
+ } else if (/^\{.*\}$/.test(iteratorNames.item) && !Array.isArray(item) && typeof item === "object") {
3995
+ let names = iteratorNames.item.replace("{", "").replace("}", "").split(",").map((i) => i.trim());
3996
+ names.forEach((name) => {
3997
+ scopeVariables[name] = item[name];
3998
+ });
3999
+ } else {
4000
+ scopeVariables[iteratorNames.item] = item;
4001
+ }
4002
+ if (iteratorNames.index)
4003
+ scopeVariables[iteratorNames.index] = index;
4004
+ if (iteratorNames.collection)
4005
+ scopeVariables[iteratorNames.collection] = items;
4006
+ return scopeVariables;
4007
+ }
4008
+ function isNumeric3(subject) {
4009
+ return !Array.isArray(subject) && !isNaN(subject);
4010
+ }
4011
+ function handler3() {
4012
+ }
4013
+ handler3.inline = (el, { expression }, { cleanup: cleanup2 }) => {
4014
+ let root = closestRoot(el);
4015
+ if (!root._x_refs)
4016
+ root._x_refs = {};
4017
+ root._x_refs[expression] = el;
4018
+ cleanup2(() => delete root._x_refs[expression]);
4019
+ };
4020
+ directive("ref", handler3);
4021
+ directive("if", (el, { expression }, { effect: effect3, cleanup: cleanup2 }) => {
4022
+ if (el.tagName.toLowerCase() !== "template")
4023
+ warn("x-if can only be used on a <template> tag", el);
4024
+ let evaluate2 = evaluateLater(el, expression);
4025
+ let show = () => {
4026
+ if (el._x_currentIfEl)
4027
+ return el._x_currentIfEl;
4028
+ let clone2 = el.content.cloneNode(true).firstElementChild;
4029
+ addScopeToNode(clone2, {}, el);
4030
+ mutateDom(() => {
4031
+ el.after(clone2);
4032
+ skipDuringClone(() => initTree(clone2))();
4033
+ });
4034
+ el._x_currentIfEl = clone2;
4035
+ el._x_undoIf = () => {
4036
+ mutateDom(() => {
4037
+ destroyTree(clone2);
4038
+ clone2.remove();
4039
+ });
4040
+ delete el._x_currentIfEl;
4041
+ };
4042
+ return clone2;
4043
+ };
4044
+ let hide = () => {
4045
+ if (!el._x_undoIf)
4046
+ return;
4047
+ el._x_undoIf();
4048
+ delete el._x_undoIf;
4049
+ };
4050
+ effect3(() => evaluate2((value) => {
4051
+ value ? show() : hide();
4052
+ }));
4053
+ cleanup2(() => el._x_undoIf && el._x_undoIf());
4054
+ });
4055
+ directive("id", (el, { expression }, { evaluate: evaluate2 }) => {
4056
+ let names = evaluate2(expression);
4057
+ names.forEach((name) => setIdRoot(el, name));
4058
+ });
4059
+ interceptClone((from, to) => {
4060
+ if (from._x_ids) {
4061
+ to._x_ids = from._x_ids;
4062
+ }
4063
+ });
4064
+ mapAttributes(startingWith("@", into(prefix("on:"))));
4065
+ directive("on", skipDuringClone((el, { value, modifiers, expression }, { cleanup: cleanup2 }) => {
4066
+ let evaluate2 = expression ? evaluateLater(el, expression) : () => {
4067
+ };
4068
+ if (el.tagName.toLowerCase() === "template") {
4069
+ if (!el._x_forwardEvents)
4070
+ el._x_forwardEvents = [];
4071
+ if (!el._x_forwardEvents.includes(value))
4072
+ el._x_forwardEvents.push(value);
4073
+ }
4074
+ let removeListener = on(el, value, modifiers, (e) => {
4075
+ evaluate2(() => {
4076
+ }, { scope: { "$event": e }, params: [e] });
4077
+ });
4078
+ cleanup2(() => removeListener());
4079
+ }));
4080
+ warnMissingPluginDirective("Collapse", "collapse", "collapse");
4081
+ warnMissingPluginDirective("Intersect", "intersect", "intersect");
4082
+ warnMissingPluginDirective("Focus", "trap", "focus");
4083
+ warnMissingPluginDirective("Mask", "mask", "mask");
4084
+ function warnMissingPluginDirective(name, directiveName, slug) {
4085
+ directive(directiveName, (el) => warn(`You can't use [x-${directiveName}] without first installing the "${name}" plugin here: https://alpinejs.dev/plugins/${slug}`, el));
4086
+ }
4087
+ alpine_default.setEvaluator(cspEvaluator);
4088
+ alpine_default.setReactivityEngine({ reactive: reactive2, effect: effect2, release: stop, raw: toRaw });
4089
+ var src_default = alpine_default;
4090
+
4091
+ // src/init.ts
4092
+ function init() {
4093
+ document.addEventListener(
4094
+ "DOMContentLoaded",
4095
+ () => {
4096
+ src_default.start();
4097
+ },
4098
+ { once: true }
4099
+ );
4100
+ }
4101
+ // Annotate the CommonJS export names for ESM import in node:
4102
+ 0 && (module.exports = {
4103
+ Alpine,
4104
+ init
4105
+ });
4106
+ //# sourceMappingURL=index.js.map