htmx.org 2.0.8 → 4.0.0-alpha2

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.
Files changed (48) hide show
  1. package/README.md +2 -2
  2. package/dist/editors/jetbrains/htmx.svg +46 -0
  3. package/dist/editors/jetbrains/htmx_dark.svg +46 -0
  4. package/dist/ext/hx-live.js +624 -0
  5. package/dist/ext/hx-live.min.js +1 -0
  6. package/dist/ext/hx-live.min.js.map +1 -0
  7. package/dist/ext/hx-optimistic.js +81 -0
  8. package/dist/ext/hx-optimistic.min.js +1 -0
  9. package/dist/ext/hx-optimistic.min.js.map +1 -0
  10. package/dist/ext/hx-preload.js +83 -0
  11. package/dist/ext/hx-preload.min.js +1 -0
  12. package/dist/ext/hx-preload.min.js.map +1 -0
  13. package/dist/htmx.esm.js +2093 -5184
  14. package/dist/htmx.esm.min.js +1 -0
  15. package/dist/htmx.esm.min.js.map +1 -0
  16. package/dist/htmx.js +2093 -5185
  17. package/dist/htmx.min.js +1 -1
  18. package/dist/htmx.min.js.map +1 -0
  19. package/package.json +44 -81
  20. package/dist/ext/README.md +0 -9
  21. package/dist/ext/ajax-header.js +0 -11
  22. package/dist/ext/alpine-morph.js +0 -20
  23. package/dist/ext/class-tools.js +0 -97
  24. package/dist/ext/client-side-templates.js +0 -100
  25. package/dist/ext/debug.js +0 -15
  26. package/dist/ext/disable-element.js +0 -20
  27. package/dist/ext/event-header.js +0 -41
  28. package/dist/ext/head-support.js +0 -146
  29. package/dist/ext/include-vals.js +0 -28
  30. package/dist/ext/json-enc.js +0 -16
  31. package/dist/ext/loading-states.js +0 -189
  32. package/dist/ext/method-override.js +0 -15
  33. package/dist/ext/morphdom-swap.js +0 -21
  34. package/dist/ext/multi-swap.js +0 -50
  35. package/dist/ext/path-deps.js +0 -63
  36. package/dist/ext/path-params.js +0 -15
  37. package/dist/ext/preload.js +0 -151
  38. package/dist/ext/rails-method.js +0 -14
  39. package/dist/ext/remove-me.js +0 -31
  40. package/dist/ext/response-targets.js +0 -135
  41. package/dist/ext/restored.js +0 -19
  42. package/dist/ext/sse.js +0 -374
  43. package/dist/ext/ws.js +0 -481
  44. package/dist/htmx.amd.js +0 -5347
  45. package/dist/htmx.cjs.js +0 -5345
  46. package/dist/htmx.esm.d.ts +0 -219
  47. package/dist/htmx.min.js.gz +0 -0
  48. /package/{editors → dist/editors}/jetbrains/htmx.web-types.json +0 -0
@@ -0,0 +1,624 @@
1
+ htmxLive = (()=>{
2
+
3
+ class HtmxLive {
4
+ #mutationObserver = new MutationObserver((records) => this.#onMutation(records));
5
+ #dependencies = []
6
+ #actionSelector = "[hx-live]"
7
+
8
+ constructor() {
9
+ this.#initInternals()
10
+ }
11
+
12
+ observe(elt, properties, prototype) {
13
+ if (!elt.__htmxLiveObserved) {
14
+ elt.__htmxLiveObserved = true
15
+ for (const property of properties) {
16
+ let descriptor = Object.getOwnPropertyDescriptor(prototype, property);
17
+ Object.defineProperty(elt, property, {
18
+ get() {
19
+ return descriptor.get.call(this);
20
+ },
21
+ set(newValue) {
22
+ descriptor.set.call(this, newValue);
23
+ htmxLive.updated(this)
24
+ }
25
+ });
26
+ }
27
+
28
+ }
29
+ }
30
+
31
+ #process(elt) {
32
+ if (elt.matches) {
33
+ if (elt.matches(this.#actionSelector)) {
34
+ this.#init(elt)
35
+ }
36
+ if (elt.matches('input')) {
37
+ this.observeInput(elt);
38
+ }
39
+ if (elt.matches('select')) {
40
+ this.observeSelect(elt);
41
+ }
42
+ }
43
+ if (elt.querySelectorAll) {
44
+ elt.querySelectorAll(this.#actionSelector).forEach((elt) => this.#init(elt))
45
+ elt.querySelectorAll('input').forEach((elt) => this.observeInput(elt))
46
+ elt.querySelectorAll('select').forEach((elt) => this.observeSelect(elt))
47
+ }
48
+ }
49
+
50
+ observeSelect(elt) {
51
+ this.observe(elt, ['value', 'disabled'], HTMLSelectElement.prototype)
52
+ }
53
+
54
+ observeInput(elt) {
55
+ this.observe(elt, ['value', 'checked', 'disabled'], HTMLInputElement.prototype)
56
+ }
57
+
58
+ #init(elt) {
59
+ if (!elt.__htmxLiveCode) {
60
+ elt.__htmxLiveCode = true
61
+ let liveCode = elt.getAttribute("hx-live");
62
+ let tokenizer = new Tokenizer(liveCode);
63
+ let parser = new Parser(tokenizer.tokenize());
64
+ let features = parser.parseFeatures();
65
+ for (const feature of features) {
66
+ feature.install(elt);
67
+ }
68
+ }
69
+ }
70
+
71
+ registerDependency(bindFeature) {
72
+ this.#dependencies.push(bindFeature)
73
+ }
74
+
75
+ #onMutation(records) {
76
+
77
+ for (let record of records) {
78
+ if(record.addedNodes.length > 0) {
79
+ this.#process(document.documentElement)
80
+ break
81
+ }
82
+ }
83
+
84
+ let toRefresh = []
85
+ outer:
86
+ for (const dependency of this.#dependencies) {
87
+ for (let record of records) {
88
+ if (dependency.dependsOn(record.target)) {
89
+ toRefresh.push(dependency);
90
+ break outer;
91
+ }
92
+ for (const elt of record.addedNodes) {
93
+ if (dependency.dependsOn(elt)) {
94
+ toRefresh.push(dependency)
95
+ break outer;
96
+ }
97
+ }
98
+ for (const elt of record.removedNodes) {
99
+ if (dependency.dependsOn(elt)) {
100
+ toRefresh.push(dependency)
101
+ break outer;
102
+ }
103
+ }
104
+ }
105
+ }
106
+ setTimeout(() => {
107
+ for (const dependency of toRefresh) {
108
+ dependency.refresh()
109
+ }
110
+ })
111
+ }
112
+
113
+ updated(elt) {
114
+ let toRefresh = []
115
+ for (const dependency of this.#dependencies) {
116
+ if (dependency.dependsOn(elt)) {
117
+ toRefresh.push(dependency)
118
+ }
119
+ }
120
+ for (const dependency of toRefresh) {
121
+ dependency.refresh()
122
+ }
123
+ }
124
+
125
+ #initInternals() {
126
+ document.addEventListener("DOMContentLoaded", () => {
127
+ document.addEventListener("input", (evt) => {
128
+ this.updated(evt.target);
129
+ })
130
+ this.#mutationObserver.observe(document.documentElement, {
131
+ childList: true,
132
+ subtree: true,
133
+ attributes: true,
134
+ characterData: true
135
+ })
136
+ this.#process(document.body)
137
+ })
138
+ }
139
+ }
140
+
141
+ let htmxLive = new HtmxLive();
142
+
143
+ class Tokenizer {
144
+ WHITESPACE = /\s/
145
+ SYNTAX = /[.()<>[\]+\-*\/]/
146
+ ALPHA = /[a-zA-Z]/
147
+ NUMERIC = /[0-9]/
148
+
149
+ constructor(src) {
150
+ this.src = src
151
+ this.offset = 0
152
+ this.prev = ''
153
+ }
154
+
155
+ tokenize() {
156
+ let tokens = []
157
+ while (this.more()) {
158
+ let token = this.nextToken()
159
+ if(token) tokens.push(token)
160
+ }
161
+ return tokens
162
+ }
163
+
164
+ more() {
165
+ return this.offset < this.src.length;
166
+ }
167
+
168
+ peek(off = 0) {
169
+ return this.src[this.offset + off]
170
+ }
171
+
172
+ match(thing, char = this.peek()) {
173
+ if (this.more()) {
174
+ if(thing.test) {
175
+ return thing.test(char)
176
+ } else {
177
+ return thing === char
178
+ }
179
+ }
180
+ }
181
+
182
+ consume() {
183
+ this.prev = this.peek()
184
+ this.offset++
185
+ return this.prev
186
+ }
187
+
188
+ nextToken() {
189
+ // consume whitespace
190
+ if (this.match(this.WHITESPACE)) {
191
+ return this.consumeWhitespace();
192
+ } else if (!this.ALPHA.test(this.prev) &&
193
+ this.match('.') &&
194
+ this.match(this.ALPHA, this.peek(1))) {
195
+ return this.consumeClass();
196
+ } else if (this.match(this.SYNTAX)) {
197
+ return this.consumeSyntax();
198
+ } else if ("#" === this.peek()) {
199
+ return this.consumeId();
200
+ } else if (this.match(this.ALPHA)) {
201
+ return this.consumeSymbol();
202
+ } else if (this.match(this.NUMERIC)) {
203
+ return this.consumeNumber();
204
+ } else if (this.match('"') || this.match("'")) {
205
+ return this.consumeString();
206
+ } else {
207
+ throw "Unknown token : " + this.peek()
208
+ }
209
+ }
210
+
211
+ consumeSyntax() {
212
+ return {type:'syntax', val: this.consume()}
213
+ }
214
+
215
+ consumeWhitespace() {
216
+ while (this.match(this.WHITESPACE)) {
217
+ this.consume();
218
+ }
219
+ return null
220
+ }
221
+
222
+ consumeId() {
223
+ let token = this.consume()
224
+ while (this.validCss(this.peek())) {
225
+ token += this.consume();
226
+ }
227
+ return {type:"id", val:token}
228
+ }
229
+
230
+ consumeSymbol() {
231
+ let token = this.consume()
232
+ while (this.match(this.ALPHA)) {
233
+ token += this.consume();
234
+ }
235
+ return {type:"sym", val:token}
236
+ }
237
+
238
+ consumeString() {
239
+ let start = this.consume()
240
+ let val = ""
241
+ while (!this.match(start) && this.more()) {
242
+ val += this.consume();
243
+ }
244
+ if(this.consume() !== start) throw "Unterminated string!";
245
+ return {type:"str", val:val}
246
+ }
247
+
248
+ consumeNumber() {
249
+ let token = this.consume()
250
+ while (this.match(this.NUMERIC)) {
251
+ token += this.consume();
252
+ }
253
+ if (this.match(".")) {
254
+ token += this.consume();
255
+ while (this.match(this.NUMERIC)) {
256
+ token += this.consume();
257
+ }
258
+ return {type:"num", val:Number.parseFloat(token)};
259
+ } else {
260
+ return {type:"num", val:Number.parseInt(token)};
261
+ }
262
+ }
263
+
264
+ consumeClass() {
265
+ let token = this.consume()
266
+ while (this.validCss(this.peek())) {
267
+ token += this.consume();
268
+ }
269
+ return {type:"class", val:token}
270
+ }
271
+
272
+ validCss(c) {
273
+ return this.match(this.ALPHA, c) || this.match(this.NUMERIC, c) || c === "-" || c === "_" || c === ":";
274
+ }
275
+ }
276
+
277
+ //========================================================================================
278
+ // Live Features
279
+ //========================================================================================
280
+ class BindFeature {
281
+ constructor(lhs, rhs) {
282
+ this.lhs = lhs
283
+ this.rhs = rhs
284
+ this.cssDependences = []
285
+ rhs.deps(this.cssDependences)
286
+ }
287
+
288
+ install(elt) {
289
+ this.elt = elt
290
+ htmxLive.registerDependency(this)
291
+ }
292
+
293
+ async refresh() {
294
+ let runtime = {"this": this.elt}
295
+ this.elt[this.lhs.property.val] = await this.rhs.eval(runtime)
296
+ }
297
+
298
+ dependsOn(elt) {
299
+ for (const css of this.cssDependences) {
300
+ if (elt.matches?.(css)) {
301
+ return true
302
+ }
303
+ }
304
+ return false
305
+ }
306
+ }
307
+
308
+ class OnFeature {
309
+ constructor(event, commands) {
310
+ this.event = event
311
+ this.commands = commands
312
+ }
313
+ install(elt) {
314
+ this.elt = elt
315
+ elt.addEventListener(this.event.val, async (evt) => {
316
+ let runtime = {}
317
+ for (const command of this.commands) {
318
+ await command.execute(runtime)
319
+ }
320
+ })
321
+ }
322
+ }
323
+
324
+ class Bindable {
325
+ constructor(property) {
326
+ this.property = property
327
+ }
328
+ }
329
+
330
+ //========================================================================================
331
+ // Commands
332
+ //========================================================================================
333
+
334
+ class CallCommand {
335
+ constructor(functionCall) {
336
+ this.call = functionCall
337
+ }
338
+ execute(runtime) {
339
+ this.call.eval(runtime)
340
+ }
341
+ }
342
+
343
+ //========================================================================================
344
+ // Expressions
345
+ //========================================================================================
346
+ class AdditiveExpression {
347
+ constructor(token, lhs, rhs) {
348
+ this.token = token
349
+ this.lhs = lhs
350
+ this.rhs = rhs
351
+ }
352
+
353
+ async eval(runtime) {
354
+ let result = await this.lhs.eval(runtime) + await this.rhs.eval(runtime);
355
+ return result
356
+ }
357
+
358
+ deps(deps) {
359
+ this.lhs.deps?.(deps);
360
+ this.rhs.deps?.(deps);
361
+ }
362
+ }
363
+
364
+ class StringLiteral {
365
+ constructor(token) {
366
+ this.token = token
367
+ }
368
+
369
+ async eval(runtime) {
370
+ return this.token.val
371
+ }
372
+ }
373
+
374
+ class IdLiteral {
375
+ constructor(token) {
376
+ this.token = token
377
+ }
378
+
379
+ async eval(runtime) {
380
+ return htmx.find(this.token.val)
381
+ }
382
+
383
+ deps(deps) {
384
+ deps.push(this.token.val);
385
+ }
386
+ }
387
+
388
+ class Identifier {
389
+ constructor(token) {
390
+ this.token = token
391
+ }
392
+
393
+ async eval(runtime) {
394
+ return runtime[this.token.val] || window[this.token.val]
395
+ }
396
+ }
397
+
398
+ class PropertyAccess {
399
+ constructor(root, property) {
400
+ this.root = root
401
+ this.property = property
402
+ }
403
+
404
+ async eval(runtime) {
405
+ let root = await this.root.eval(runtime);
406
+ return root[this.property.val]
407
+ }
408
+
409
+ deps(deps) {
410
+ this.root?.deps(deps);
411
+ }
412
+ }
413
+
414
+ class FunctionCall {
415
+ constructor(root, args) {
416
+ this.root = root
417
+ this.rootRoot = root.root
418
+ this.args = args
419
+ }
420
+
421
+ async eval(runtime) {
422
+ let rootRoot = null;
423
+ let func;
424
+ if (this.rootRoot) {
425
+ rootRoot = await this.rootRoot.eval(runtime);
426
+ func = rootRoot[this.root.property.val].bind(rootRoot);
427
+ } else {
428
+ func = await this.root.eval(runtime)
429
+ }
430
+ let args = []
431
+ for (const arg of this.args) {
432
+ args.push(await arg.eval(runtime))
433
+ }
434
+ return func.call(rootRoot, args)
435
+ }
436
+
437
+ deps(deps) {
438
+ this.root?.deps(deps);
439
+ }
440
+ }
441
+
442
+
443
+ //========================================================================================
444
+ // Parser
445
+ //========================================================================================
446
+ class Parser {
447
+ constructor(tokens) {
448
+ this.tokens = tokens
449
+ this.current = 0
450
+ }
451
+
452
+ moreTokens() {
453
+ return this.current < this.tokens.length
454
+ }
455
+
456
+ matchAndConsume(term, type = "sym") {
457
+ if (this.match(term, type)) {
458
+ return this.consumeToken()
459
+ }
460
+ }
461
+
462
+ match(term, type) {
463
+ return (this.currentToken().val === term || term === null) &&
464
+ (this.currentToken().type === type || type === null);
465
+ }
466
+
467
+ require(term, type = "sym") {
468
+ let match = this.matchAndConsume(term, type);
469
+ if (!match) throw "Expected: " + (term ? term : type) + " found " + JSON.stringify(this.currentToken());
470
+ return match
471
+ }
472
+
473
+ currentToken() {
474
+ let token = this.tokens[this.current];
475
+ return token || {type:null, val:null};
476
+ }
477
+
478
+ consumeToken() {
479
+ this.lastToken = this.currentToken();
480
+ this.current++
481
+ return this.lastToken
482
+ }
483
+
484
+ //======================================================
485
+ // Entry Point
486
+ //======================================================
487
+ parseFeatures() {
488
+ let features = []
489
+ while (this.moreTokens()) {
490
+ features.push(this.parseFeature())
491
+ }
492
+ return features
493
+ }
494
+
495
+ parseFeature() {
496
+ let bind = this.parseBind();
497
+ if(bind){
498
+ return bind;
499
+ }
500
+ let on = this.parseOn();
501
+ if(on){
502
+ return on;
503
+ }
504
+ throw "Unknown token: " + JSON.stringify(this.currentToken());
505
+ }
506
+
507
+ parseBind() {
508
+ if (this.matchAndConsume("bind")) {
509
+ let lhs = this.parseBindable();
510
+ this.require("to");
511
+ let rhs = this.parseExpression();
512
+ return new BindFeature(lhs, rhs)
513
+ }
514
+ }
515
+
516
+ parseOn() {
517
+ if (this.matchAndConsume("on")) {
518
+ let event = this.require(null, "sym");
519
+ let commands = this.parseCommands();
520
+ return new OnFeature(event, commands)
521
+ }
522
+ }
523
+
524
+ parseBindable() {
525
+ let property = this.require(null, "sym");
526
+ return new Bindable(property)
527
+ }
528
+
529
+ //======================================================
530
+ // Commands
531
+ //======================================================
532
+
533
+ parseCommands() {
534
+ let commands = []
535
+ while (this.moreTokens() && !this.endOfCommands()) {
536
+ commands.push(this.parseCommand())
537
+ }
538
+ return commands
539
+ }
540
+
541
+ endOfCommands() {
542
+ return this.matchAndConsume("end", "sym") ||
543
+ this.match("on") ||
544
+ this.match("bind");
545
+ }
546
+
547
+ parseCommand() {
548
+ let call = this.callCommand()
549
+ if(call) {
550
+ return call
551
+ }
552
+ throw "Unknown token: " + JSON.stringify(this.currentToken());
553
+ }
554
+
555
+ callCommand() {
556
+ if (this.matchAndConsume("call")) {
557
+ let expression = this.parseExpression();
558
+ if (expression instanceof FunctionCall) {
559
+ return new CallCommand(expression)
560
+ }
561
+ }
562
+ }
563
+
564
+ //======================================================
565
+ // Expressions
566
+ //======================================================
567
+
568
+ parseExpression() {
569
+ return this.parseAdditiveExpression();
570
+ }
571
+
572
+ parseAdditiveExpression() {
573
+ let lhs = this.parseIndirectExpression();
574
+ while (this.matchAndConsume("+", "syntax") || this.matchAndConsume("+", "syntax")) {
575
+ let rhs = this.parseIndirectExpression()
576
+ lhs = new AdditiveExpression(this.lastToken, lhs, rhs)
577
+ }
578
+ return lhs;
579
+ }
580
+
581
+ parseIndirectExpression() {
582
+ let root = this.parsePrimaryExpression();
583
+ while (true) {
584
+ if (this.matchAndConsume(".", "syntax")) {
585
+ let property = this.require(null, "sym");
586
+ root = new PropertyAccess(root, property)
587
+ } else if (this.matchAndConsume("(", "syntax")) {
588
+ let args = []
589
+ if (!this.match(")")) {
590
+ do {
591
+ args.push(this.parseExpression());
592
+ } while (this.matchAndConsume(",", "syntax"))
593
+ }
594
+ this.require(")", "syntax")
595
+ root = new FunctionCall(root, args);
596
+ } else {
597
+ break
598
+ }
599
+ }
600
+ return root
601
+ }
602
+
603
+ parsePrimaryExpression() {
604
+ if (this.currentToken()?.type === "str") {
605
+ return new StringLiteral(this.consumeToken());
606
+ }
607
+ if (this.currentToken()?.type === "id") {
608
+ return new IdLiteral(this.consumeToken());
609
+ }
610
+ if (this.currentToken()?.type === "sym") {
611
+ return new Identifier(this.consumeToken());
612
+ }
613
+ if (this.matchAndConsume("(", "syntax")) {
614
+ let expr = this.parseExpression();
615
+ this.require(")", "syntax");
616
+ return expr;
617
+ }
618
+ throw "Unknown token: " + JSON.stringify(this.currentToken());
619
+ }
620
+
621
+ }
622
+
623
+ return htmxLive
624
+ })()
@@ -0,0 +1 @@
1
+ htmxLive=(()=>{let t=new class{#t=new MutationObserver(t=>this.#e(t));#s=[];#n="[hx-live]";constructor(){this.#r()}observe(e,s,n){if(!e.__htmxLiveObserved){e.__htmxLiveObserved=!0;for(const r of s){let s=Object.getOwnPropertyDescriptor(n,r);Object.defineProperty(e,r,{get(){return s.get.call(this)},set(e){s.set.call(this,e),t.updated(this)}})}}}#i(t){t.matches&&(t.matches(this.#n)&&this.#o(t),t.matches("input")&&this.observeInput(t),t.matches("select")&&this.observeSelect(t)),t.querySelectorAll&&(t.querySelectorAll(this.#n).forEach(t=>this.#o(t)),t.querySelectorAll("input").forEach(t=>this.observeInput(t)),t.querySelectorAll("select").forEach(t=>this.observeSelect(t)))}observeSelect(t){this.observe(t,["value","disabled"],HTMLSelectElement.prototype)}observeInput(t){this.observe(t,["value","checked","disabled"],HTMLInputElement.prototype)}#o(t){if(!t.__htmxLiveCode){t.__htmxLiveCode=!0;let s=t.getAttribute("hx-live"),n=new e(s),r=new m(n.tokenize()).parseFeatures();for(const e of r)e.install(t)}}registerDependency(t){this.#s.push(t)}#e(t){for(let e of t)if(e.addedNodes.length>0){this.#i(document.documentElement);break}let e=[];t:for(const s of this.#s)for(let n of t){if(s.dependsOn(n.target)){e.push(s);break t}for(const t of n.addedNodes)if(s.dependsOn(t)){e.push(s);break t}for(const t of n.removedNodes)if(s.dependsOn(t)){e.push(s);break t}}setTimeout(()=>{for(const t of e)t.refresh()})}updated(t){let e=[];for(const s of this.#s)s.dependsOn(t)&&e.push(s);for(const t of e)t.refresh()}#r(){document.addEventListener("DOMContentLoaded",()=>{document.addEventListener("input",t=>{this.updated(t.target)}),this.#t.observe(document.documentElement,{childList:!0,subtree:!0,attributes:!0,characterData:!0}),this.#i(document.body)})}};class e{WHITESPACE=/\s/;SYNTAX=/[.()<>[\]+\-*\/]/;ALPHA=/[a-zA-Z]/;NUMERIC=/[0-9]/;constructor(t){this.src=t,this.offset=0,this.prev=""}tokenize(){let t=[];for(;this.more();){let e=this.nextToken();e&&t.push(e)}return t}more(){return this.offset<this.src.length}peek(t=0){return this.src[this.offset+t]}match(t,e=this.peek()){if(this.more())return t.test?t.test(e):t===e}consume(){return this.prev=this.peek(),this.offset++,this.prev}nextToken(){if(this.match(this.WHITESPACE))return this.consumeWhitespace();if(!this.ALPHA.test(this.prev)&&this.match(".")&&this.match(this.ALPHA,this.peek(1)))return this.consumeClass();if(this.match(this.SYNTAX))return this.consumeSyntax();if("#"===this.peek())return this.consumeId();if(this.match(this.ALPHA))return this.consumeSymbol();if(this.match(this.NUMERIC))return this.consumeNumber();if(this.match('"')||this.match("'"))return this.consumeString();throw"Unknown token : "+this.peek()}consumeSyntax(){return{type:"syntax",val:this.consume()}}consumeWhitespace(){for(;this.match(this.WHITESPACE);)this.consume();return null}consumeId(){let t=this.consume();for(;this.validCss(this.peek());)t+=this.consume();return{type:"id",val:t}}consumeSymbol(){let t=this.consume();for(;this.match(this.ALPHA);)t+=this.consume();return{type:"sym",val:t}}consumeString(){let t=this.consume(),e="";for(;!this.match(t)&&this.more();)e+=this.consume();if(this.consume()!==t)throw"Unterminated string!";return{type:"str",val:e}}consumeNumber(){let t=this.consume();for(;this.match(this.NUMERIC);)t+=this.consume();if(this.match(".")){for(t+=this.consume();this.match(this.NUMERIC);)t+=this.consume();return{type:"num",val:Number.parseFloat(t)}}return{type:"num",val:Number.parseInt(t)}}consumeClass(){let t=this.consume();for(;this.validCss(this.peek());)t+=this.consume();return{type:"class",val:t}}validCss(t){return this.match(this.ALPHA,t)||this.match(this.NUMERIC,t)||"-"===t||"_"===t||":"===t}}class s{constructor(t,e){this.lhs=t,this.rhs=e,this.cssDependences=[],e.deps(this.cssDependences)}install(e){this.elt=e,t.registerDependency(this)}async refresh(){let t={this:this.elt};this.elt[this.lhs.property.val]=await this.rhs.eval(t)}dependsOn(t){for(const e of this.cssDependences)if(t.matches?.(e))return!0;return!1}}class n{constructor(t,e){this.event=t,this.commands=e}install(t){this.elt=t,t.addEventListener(this.event.val,async t=>{let e={};for(const t of this.commands)await t.execute(e)})}}class r{constructor(t){this.property=t}}class i{constructor(t){this.call=t}execute(t){this.call.eval(t)}}class o{constructor(t,e,s){this.token=t,this.lhs=e,this.rhs=s}async eval(t){return await this.lhs.eval(t)+await this.rhs.eval(t)}deps(t){this.lhs.deps?.(t),this.rhs.deps?.(t)}}class h{constructor(t){this.token=t}async eval(t){return this.token.val}}class a{constructor(t){this.token=t}async eval(t){return htmx.find(this.token.val)}deps(t){t.push(this.token.val)}}class c{constructor(t){this.token=t}async eval(t){return t[this.token.val]||window[this.token.val]}}class u{constructor(t,e){this.root=t,this.property=e}async eval(t){return(await this.root.eval(t))[this.property.val]}deps(t){this.root?.deps(t)}}class l{constructor(t,e){this.root=t,this.rootRoot=t.root,this.args=e}async eval(t){let e,s=null;this.rootRoot?(s=await this.rootRoot.eval(t),e=s[this.root.property.val].bind(s)):e=await this.root.eval(t);let n=[];for(const e of this.args)n.push(await e.eval(t));return e.call(s,n)}deps(t){this.root?.deps(t)}}class m{constructor(t){this.tokens=t,this.current=0}moreTokens(){return this.current<this.tokens.length}matchAndConsume(t,e="sym"){if(this.match(t,e))return this.consumeToken()}match(t,e){return!(this.currentToken().val!==t&&null!==t||this.currentToken().type!==e&&null!==e)}require(t,e="sym"){let s=this.matchAndConsume(t,e);if(!s)throw"Expected: "+(t||e)+" found "+JSON.stringify(this.currentToken());return s}currentToken(){return this.tokens[this.current]||{type:null,val:null}}consumeToken(){return this.lastToken=this.currentToken(),this.current++,this.lastToken}parseFeatures(){let t=[];for(;this.moreTokens();)t.push(this.parseFeature());return t}parseFeature(){let t=this.parseBind();if(t)return t;let e=this.parseOn();if(e)return e;throw"Unknown token: "+JSON.stringify(this.currentToken())}parseBind(){if(this.matchAndConsume("bind")){let t=this.parseBindable();this.require("to");let e=this.parseExpression();return new s(t,e)}}parseOn(){if(this.matchAndConsume("on")){let t=this.require(null,"sym"),e=this.parseCommands();return new n(t,e)}}parseBindable(){let t=this.require(null,"sym");return new r(t)}parseCommands(){let t=[];for(;this.moreTokens()&&!this.endOfCommands();)t.push(this.parseCommand());return t}endOfCommands(){return this.matchAndConsume("end","sym")||this.match("on")||this.match("bind")}parseCommand(){let t=this.callCommand();if(t)return t;throw"Unknown token: "+JSON.stringify(this.currentToken())}callCommand(){if(this.matchAndConsume("call")){let t=this.parseExpression();if(t instanceof l)return new i(t)}}parseExpression(){return this.parseAdditiveExpression()}parseAdditiveExpression(){let t=this.parseIndirectExpression();for(;this.matchAndConsume("+","syntax")||this.matchAndConsume("+","syntax");){let e=this.parseIndirectExpression();t=new o(this.lastToken,t,e)}return t}parseIndirectExpression(){let t=this.parsePrimaryExpression();for(;;)if(this.matchAndConsume(".","syntax")){let e=this.require(null,"sym");t=new u(t,e)}else{if(!this.matchAndConsume("(","syntax"))break;{let e=[];if(!this.match(")"))do{e.push(this.parseExpression())}while(this.matchAndConsume(",","syntax"));this.require(")","syntax"),t=new l(t,e)}}return t}parsePrimaryExpression(){if("str"===this.currentToken()?.type)return new h(this.consumeToken());if("id"===this.currentToken()?.type)return new a(this.consumeToken());if("sym"===this.currentToken()?.type)return new c(this.consumeToken());if(this.matchAndConsume("(","syntax")){let t=this.parseExpression();return this.require(")","syntax"),t}throw"Unknown token: "+JSON.stringify(this.currentToken())}}return t})();
@@ -0,0 +1 @@
1
+ {"version":3,"names":["htmxLive","mutationObserver","MutationObserver","records","this","onMutation","dependencies","actionSelector","constructor","initInternals","observe","elt","properties","prototype","__htmxLiveObserved","property","descriptor","Object","getOwnPropertyDescriptor","defineProperty","get","call","set","newValue","updated","process","matches","init","observeInput","observeSelect","querySelectorAll","forEach","HTMLSelectElement","HTMLInputElement","__htmxLiveCode","liveCode","getAttribute","tokenizer","Tokenizer","features","Parser","tokenize","parseFeatures","feature","install","registerDependency","bindFeature","push","record","addedNodes","length","document","documentElement","toRefresh","outer","dependency","dependsOn","target","removedNodes","setTimeout","refresh","addEventListener","evt","childList","subtree","attributes","characterData","body","WHITESPACE","SYNTAX","ALPHA","NUMERIC","src","offset","prev","tokens","more","token","nextToken","peek","off","match","thing","char","test","consume","consumeWhitespace","consumeClass","consumeSyntax","consumeId","consumeSymbol","consumeNumber","consumeString","type","val","validCss","start","Number","parseFloat","parseInt","c","BindFeature","lhs","rhs","cssDependences","deps","runtime","eval","css","OnFeature","event","commands","async","command","execute","Bindable","CallCommand","functionCall","AdditiveExpression","StringLiteral","IdLiteral","htmx","find","Identifier","window","PropertyAccess","root","FunctionCall","args","rootRoot","func","bind","arg","current","moreTokens","matchAndConsume","term","consumeToken","currentToken","require","JSON","stringify","lastToken","parseFeature","parseBind","on","parseOn","parseBindable","parseExpression","parseCommands","endOfCommands","parseCommand","callCommand","expression","parseAdditiveExpression","parseIndirectExpression","parsePrimaryExpression","expr"],"sources":["dist/ext/hx-live.js"],"mappings":"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","ignoreList":[]}