@excom/quark 0.1.0

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 (130) hide show
  1. package/.rush/temp/chunked-rush-logs/quark.apply-exports.chunks.jsonl +1 -0
  2. package/.rush/temp/chunked-rush-logs/quark.build_package-metas.chunks.jsonl +1 -0
  3. package/.rush/temp/operation/apply-exports/all.log +1 -0
  4. package/.rush/temp/operation/apply-exports/log-chunks.jsonl +1 -0
  5. package/.rush/temp/operation/apply-exports/state.json +3 -0
  6. package/.rush/temp/operation/build_package-metas/all.log +1 -0
  7. package/.rush/temp/operation/build_package-metas/log-chunks.jsonl +1 -0
  8. package/.rush/temp/operation/build_package-metas/state.json +3 -0
  9. package/.rush/temp/shrinkwrap-deps.json +3 -0
  10. package/config/rig.json +6 -0
  11. package/index.ts +4 -0
  12. package/language.ts +7 -0
  13. package/package.json +45 -0
  14. package/rush-logs/quark.apply-exports.cache.log +1 -0
  15. package/rush-logs/quark.apply-exports.log +1 -0
  16. package/rush-logs/quark.build_package-metas.cache.log +1 -0
  17. package/rush-logs/quark.build_package-metas.log +1 -0
  18. package/src/actions.ts +445 -0
  19. package/src/ast.ts +187 -0
  20. package/src/bindings.ts +115 -0
  21. package/src/builtin-modules.ts +401 -0
  22. package/src/constants.ts +47 -0
  23. package/src/cycle-check.ts +121 -0
  24. package/src/devtools-hook.ts +303 -0
  25. package/src/element-api.ts +109 -0
  26. package/src/evaluator.ts +317 -0
  27. package/src/form-controls.ts +69 -0
  28. package/src/language-tables.ts +137 -0
  29. package/src/language.ts +1225 -0
  30. package/src/observer.ts +110 -0
  31. package/src/paint.ts +305 -0
  32. package/src/properties.ts +818 -0
  33. package/src/props.ts +94 -0
  34. package/src/quark-element.ts +7 -0
  35. package/src/quark-internal.ts +365 -0
  36. package/src/quark.ts +817 -0
  37. package/src/resolvers.ts +867 -0
  38. package/src/rule.ts +800 -0
  39. package/src/scope-id.ts +47 -0
  40. package/src/selector-utils.ts +430 -0
  41. package/src/settle.ts +117 -0
  42. package/src/types.ts +155 -0
  43. package/src/utils.ts +79 -0
  44. package/src/variables.ts +359 -0
  45. package/support/demos/css-variables.html +18 -0
  46. package/support/demos/dispatch.html +20 -0
  47. package/support/demos/events.html +9 -0
  48. package/support/demos/iterate.html +13 -0
  49. package/support/demos/js-api.html +17 -0
  50. package/support/demos/provider-list.html +16 -0
  51. package/support/demos/toggle-content.html +14 -0
  52. package/support/demos/unset.html +12 -0
  53. package/support/demos/view-transition.html +36 -0
  54. package/support/docs/ATTRIBUTES.md +37 -0
  55. package/support/docs/AT_RULES.md +45 -0
  56. package/support/docs/BUILTINS.md +57 -0
  57. package/support/docs/CONTENT.md +40 -0
  58. package/support/docs/CSS_VARIABLES.md +16 -0
  59. package/support/docs/DECLARATIONS.md +26 -0
  60. package/support/docs/DELAY.md +37 -0
  61. package/support/docs/DIAGNOSTICS.md +32 -0
  62. package/support/docs/DISPATCH.md +81 -0
  63. package/support/docs/ELEMENT_PROPERTIES.md +34 -0
  64. package/support/docs/EXPRESSIONS.md +31 -0
  65. package/support/docs/INTERNAL.md +8 -0
  66. package/support/docs/JS_API.md +53 -0
  67. package/support/docs/JS_WRITES.md +36 -0
  68. package/support/docs/LIMITATIONS.md +26 -0
  69. package/support/docs/LOOP_GUARD.md +30 -0
  70. package/support/docs/METHODS.md +43 -0
  71. package/support/docs/MODULES.md +111 -0
  72. package/support/docs/NO_REVERSION.md +18 -0
  73. package/support/docs/ON.md +87 -0
  74. package/support/docs/REACTIVITY.md +24 -0
  75. package/support/docs/README.md +143 -0
  76. package/support/docs/SELECTORS.md +87 -0
  77. package/support/docs/SHEETS.md +67 -0
  78. package/support/docs/SYNTAX.md +36 -0
  79. package/support/docs/USE.md +24 -0
  80. package/support/docs/VALUES.md +27 -0
  81. package/support/docs/VARIABLES.md +47 -0
  82. package/support/docs/VIEW_TRANSITION.md +64 -0
  83. package/support/docs-sections.json +65 -0
  84. package/support/package-meta.json +208 -0
  85. package/support/scripts/build-language-docs.mjs +196 -0
  86. package/support/tests/__snapshots__/css-variables.view.test.ts.snap +23 -0
  87. package/support/tests/__snapshots__/dispatch.view.test.ts.snap +23 -0
  88. package/support/tests/__snapshots__/events.view.test.ts.snap +23 -0
  89. package/support/tests/__snapshots__/iterate.view.test.ts.snap +23 -0
  90. package/support/tests/__snapshots__/js-api.view.test.ts.snap +23 -0
  91. package/support/tests/__snapshots__/provider-list.view.test.ts.snap +23 -0
  92. package/support/tests/__snapshots__/quark-features.test.ts.snap +1079 -0
  93. package/support/tests/__snapshots__/quark-with-providers.test.ts.snap +89 -0
  94. package/support/tests/__snapshots__/quark.test.ts.snap +221 -0
  95. package/support/tests/__snapshots__/selectors.test.ts.snap +133 -0
  96. package/support/tests/__snapshots__/toggle-content.view.test.ts.snap +23 -0
  97. package/support/tests/__snapshots__/unset.view.test.ts.snap +23 -0
  98. package/support/tests/__snapshots__/view-transition.view.test.ts.snap +23 -0
  99. package/support/tests/actions.test.ts +437 -0
  100. package/support/tests/builtin-modules.test.ts +337 -0
  101. package/support/tests/builtins.test.ts +189 -0
  102. package/support/tests/css-variables.view.test.ts +35 -0
  103. package/support/tests/delay.test.ts +244 -0
  104. package/support/tests/devtools-hook.test.ts +496 -0
  105. package/support/tests/diagnostics.test.ts +224 -0
  106. package/support/tests/dispatch.view.test.ts +43 -0
  107. package/support/tests/element-api.test.ts +202 -0
  108. package/support/tests/evaluator.test.ts +237 -0
  109. package/support/tests/events.view.test.ts +40 -0
  110. package/support/tests/form-controls.test.ts +452 -0
  111. package/support/tests/helpers.ts +354 -0
  112. package/support/tests/internals.test.ts +568 -0
  113. package/support/tests/iterate.view.test.ts +40 -0
  114. package/support/tests/js-api.view.test.ts +45 -0
  115. package/support/tests/language-docs.test.ts +147 -0
  116. package/support/tests/lifecycle.test.ts +440 -0
  117. package/support/tests/loop-guard.test.ts +323 -0
  118. package/support/tests/provider-list.view.test.ts +47 -0
  119. package/support/tests/quark-features.test.ts +2887 -0
  120. package/support/tests/quark-with-providers.test.ts +169 -0
  121. package/support/tests/quark.test.ts +359 -0
  122. package/support/tests/resolvers.test.ts +346 -0
  123. package/support/tests/selector-analysis.test.ts +281 -0
  124. package/support/tests/selectors.test.ts +670 -0
  125. package/support/tests/toggle-content.view.test.ts +40 -0
  126. package/support/tests/unset.view.test.ts +42 -0
  127. package/support/tests/view-helpers.ts +81 -0
  128. package/support/tests/view-transition.test.ts +1069 -0
  129. package/support/tests/view-transition.view.test.ts +76 -0
  130. package/tsconfig.json +5 -0
@@ -0,0 +1,1079 @@
1
+ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2
+
3
+ exports[`Quark features > attributes and special fields > applies ariaset from an object > complexity 1`] = `
4
+ {
5
+ "attributeRuns": 1,
6
+ "closest": 0,
7
+ "getVar": 0,
8
+ "importNode": 0,
9
+ "listenerRuns": 0,
10
+ "matches": 1,
11
+ "parentElement": 1,
12
+ "quarkRuns": 1,
13
+ "queryScopeCost": 2,
14
+ "querySelectorAll": 1,
15
+ "removeAttribute": 0,
16
+ "ruleRuns": 1,
17
+ "schedulePaint": 1,
18
+ "setAttribute": 3,
19
+ "setVar": 0,
20
+ "textContent": 0,
21
+ "variableRuns": 0,
22
+ }
23
+ `;
24
+
25
+ exports[`Quark features > attributes and special fields > applies dataset from an object > complexity 1`] = `
26
+ {
27
+ "attributeRuns": 1,
28
+ "closest": 0,
29
+ "getVar": 0,
30
+ "importNode": 0,
31
+ "listenerRuns": 0,
32
+ "matches": 1,
33
+ "parentElement": 1,
34
+ "quarkRuns": 1,
35
+ "queryScopeCost": 2,
36
+ "querySelectorAll": 1,
37
+ "removeAttribute": 0,
38
+ "ruleRuns": 1,
39
+ "schedulePaint": 1,
40
+ "setAttribute": 3,
41
+ "setVar": 0,
42
+ "textContent": 0,
43
+ "variableRuns": 0,
44
+ }
45
+ `;
46
+
47
+ exports[`Quark features > attributes and special fields > sets boolean-ish empty attributes > complexity 1`] = `
48
+ {
49
+ "attributeRuns": 1,
50
+ "closest": 0,
51
+ "getVar": 0,
52
+ "importNode": 0,
53
+ "listenerRuns": 0,
54
+ "matches": 1,
55
+ "parentElement": 1,
56
+ "quarkRuns": 1,
57
+ "queryScopeCost": 2,
58
+ "querySelectorAll": 1,
59
+ "removeAttribute": 0,
60
+ "ruleRuns": 1,
61
+ "schedulePaint": 1,
62
+ "setAttribute": 2,
63
+ "setVar": 0,
64
+ "textContent": 0,
65
+ "variableRuns": 0,
66
+ }
67
+ `;
68
+
69
+ exports[`Quark features > attributes and special fields > sets class from a string > complexity 1`] = `
70
+ {
71
+ "attributeRuns": 2,
72
+ "closest": 0,
73
+ "getVar": 0,
74
+ "importNode": 0,
75
+ "listenerRuns": 0,
76
+ "matches": 1,
77
+ "parentElement": 1,
78
+ "quarkRuns": 1,
79
+ "queryScopeCost": 2,
80
+ "querySelectorAll": 1,
81
+ "removeAttribute": 0,
82
+ "ruleRuns": 1,
83
+ "schedulePaint": 2,
84
+ "setAttribute": 3,
85
+ "setVar": 0,
86
+ "textContent": 0,
87
+ "variableRuns": 0,
88
+ }
89
+ `;
90
+
91
+ exports[`Quark features > content > clears text with content: none > complexity 1`] = `
92
+ {
93
+ "attributeRuns": 1,
94
+ "closest": 0,
95
+ "getVar": 0,
96
+ "importNode": 0,
97
+ "listenerRuns": 0,
98
+ "matches": 1,
99
+ "parentElement": 1,
100
+ "quarkRuns": 1,
101
+ "queryScopeCost": 2,
102
+ "querySelectorAll": 1,
103
+ "removeAttribute": 0,
104
+ "ruleRuns": 1,
105
+ "schedulePaint": 1,
106
+ "setAttribute": 1,
107
+ "setVar": 0,
108
+ "textContent": 1,
109
+ "variableRuns": 0,
110
+ }
111
+ `;
112
+
113
+ exports[`Quark features > content > injects markup via dangerous-html() > complexity 1`] = `
114
+ {
115
+ "attributeRuns": 1,
116
+ "closest": 0,
117
+ "getVar": 0,
118
+ "importNode": 0,
119
+ "listenerRuns": 0,
120
+ "matches": 1,
121
+ "parentElement": 1,
122
+ "quarkRuns": 2,
123
+ "queryScopeCost": 4,
124
+ "querySelectorAll": 2,
125
+ "removeAttribute": 0,
126
+ "ruleRuns": 2,
127
+ "schedulePaint": 1,
128
+ "setAttribute": 1,
129
+ "setVar": 0,
130
+ "textContent": 0,
131
+ "variableRuns": 0,
132
+ }
133
+ `;
134
+
135
+ exports[`Quark features > content > rendering into a <template> host > clones template() onto a template host without requeueing rules > complexity 1`] = `
136
+ {
137
+ "attributeRuns": 1,
138
+ "closest": 0,
139
+ "getVar": 0,
140
+ "importNode": 2,
141
+ "listenerRuns": 0,
142
+ "matches": 1,
143
+ "parentElement": 1,
144
+ "quarkRuns": 1,
145
+ "queryScopeCost": 3,
146
+ "querySelectorAll": 1,
147
+ "removeAttribute": 0,
148
+ "ruleRuns": 1,
149
+ "schedulePaint": 1,
150
+ "setAttribute": 1,
151
+ "setVar": 0,
152
+ "textContent": 0,
153
+ "variableRuns": 0,
154
+ }
155
+ `;
156
+
157
+ exports[`Quark features > content > rendering into a <template> host > injects dangerous-html() into the fragment without requeueing rules > complexity 1`] = `
158
+ {
159
+ "attributeRuns": 1,
160
+ "closest": 0,
161
+ "getVar": 0,
162
+ "importNode": 0,
163
+ "listenerRuns": 0,
164
+ "matches": 1,
165
+ "parentElement": 1,
166
+ "quarkRuns": 1,
167
+ "queryScopeCost": 2,
168
+ "querySelectorAll": 1,
169
+ "removeAttribute": 0,
170
+ "ruleRuns": 1,
171
+ "schedulePaint": 1,
172
+ "setAttribute": 1,
173
+ "setVar": 0,
174
+ "textContent": 0,
175
+ "variableRuns": 0,
176
+ }
177
+ `;
178
+
179
+ exports[`Quark features > content > rendering into a <template> host > paints a Node into a template host without requeueing rules > complexity 1`] = `
180
+ {
181
+ "attributeRuns": 1,
182
+ "closest": 0,
183
+ "getVar": 0,
184
+ "importNode": 0,
185
+ "listenerRuns": 0,
186
+ "matches": 1,
187
+ "parentElement": 1,
188
+ "quarkRuns": 1,
189
+ "queryScopeCost": 2,
190
+ "querySelectorAll": 1,
191
+ "removeAttribute": 0,
192
+ "ruleRuns": 1,
193
+ "schedulePaint": 1,
194
+ "setAttribute": 1,
195
+ "setVar": 0,
196
+ "textContent": 0,
197
+ "variableRuns": 0,
198
+ }
199
+ `;
200
+
201
+ exports[`Quark features > content > rendering into a <template> host > paints a NodeList into a template host without requeueing rules > complexity 1`] = `
202
+ {
203
+ "attributeRuns": 1,
204
+ "closest": 0,
205
+ "getVar": 0,
206
+ "importNode": 0,
207
+ "listenerRuns": 0,
208
+ "matches": 1,
209
+ "parentElement": 1,
210
+ "quarkRuns": 1,
211
+ "queryScopeCost": 2,
212
+ "querySelectorAll": 1,
213
+ "removeAttribute": 0,
214
+ "ruleRuns": 1,
215
+ "schedulePaint": 1,
216
+ "setAttribute": 1,
217
+ "setVar": 0,
218
+ "textContent": 0,
219
+ "variableRuns": 0,
220
+ }
221
+ `;
222
+
223
+ exports[`Quark features > content > rendering into a <template> host > writes a settled string into the template's document fragment > complexity 1`] = `
224
+ {
225
+ "attributeRuns": 1,
226
+ "closest": 0,
227
+ "getVar": 0,
228
+ "importNode": 0,
229
+ "listenerRuns": 0,
230
+ "matches": 1,
231
+ "parentElement": 1,
232
+ "quarkRuns": 1,
233
+ "queryScopeCost": 2,
234
+ "querySelectorAll": 1,
235
+ "removeAttribute": 0,
236
+ "ruleRuns": 1,
237
+ "schedulePaint": 1,
238
+ "setAttribute": 1,
239
+ "setVar": 0,
240
+ "textContent": 0,
241
+ "variableRuns": 0,
242
+ }
243
+ `;
244
+
245
+ exports[`Quark features > content > rendering into a <template> host > writes a string into the template's document fragment > complexity 1`] = `
246
+ {
247
+ "attributeRuns": 1,
248
+ "closest": 0,
249
+ "getVar": 0,
250
+ "importNode": 0,
251
+ "listenerRuns": 0,
252
+ "matches": 1,
253
+ "parentElement": 1,
254
+ "quarkRuns": 1,
255
+ "queryScopeCost": 2,
256
+ "querySelectorAll": 1,
257
+ "removeAttribute": 0,
258
+ "ruleRuns": 1,
259
+ "schedulePaint": 1,
260
+ "setAttribute": 1,
261
+ "setVar": 0,
262
+ "textContent": 0,
263
+ "variableRuns": 0,
264
+ }
265
+ `;
266
+
267
+ exports[`Quark features > content > renders a DOM template via template(#id) > complexity 1`] = `
268
+ {
269
+ "attributeRuns": 1,
270
+ "closest": 0,
271
+ "getVar": 0,
272
+ "importNode": 2,
273
+ "listenerRuns": 0,
274
+ "matches": 1,
275
+ "parentElement": 1,
276
+ "quarkRuns": 2,
277
+ "queryScopeCost": 5,
278
+ "querySelectorAll": 2,
279
+ "removeAttribute": 0,
280
+ "ruleRuns": 2,
281
+ "schedulePaint": 1,
282
+ "setAttribute": 1,
283
+ "setVar": 0,
284
+ "textContent": 0,
285
+ "variableRuns": 0,
286
+ }
287
+ `;
288
+
289
+ exports[`Quark features > content > renders a fetched template via template(url) > complexity 1`] = `
290
+ {
291
+ "attributeRuns": 1,
292
+ "closest": 0,
293
+ "getVar": 0,
294
+ "importNode": 2,
295
+ "listenerRuns": 0,
296
+ "matches": 1,
297
+ "parentElement": 1,
298
+ "quarkRuns": 2,
299
+ "queryScopeCost": 4,
300
+ "querySelectorAll": 2,
301
+ "removeAttribute": 0,
302
+ "ruleRuns": 2,
303
+ "schedulePaint": 1,
304
+ "setAttribute": 1,
305
+ "setVar": 0,
306
+ "textContent": 0,
307
+ "variableRuns": 0,
308
+ }
309
+ `;
310
+
311
+ exports[`Quark features > content > toggles content from open state (details) > complexity 1`] = `
312
+ {
313
+ "attributeRuns": 2,
314
+ "closest": 0,
315
+ "getVar": 0,
316
+ "importNode": 0,
317
+ "listenerRuns": 0,
318
+ "matches": 4,
319
+ "parentElement": 0,
320
+ "quarkRuns": 2,
321
+ "queryScopeCost": 2,
322
+ "querySelectorAll": 2,
323
+ "removeAttribute": 1,
324
+ "ruleRuns": 2,
325
+ "schedulePaint": 2,
326
+ "setAttribute": 1,
327
+ "setVar": 0,
328
+ "textContent": 2,
329
+ "variableRuns": 0,
330
+ }
331
+ `;
332
+
333
+ exports[`Quark features > dynamics > chains rules: a quark-set attribute triggers another rule > complexity 1`] = `
334
+ {
335
+ "attributeRuns": 2,
336
+ "closest": 0,
337
+ "getVar": 0,
338
+ "importNode": 0,
339
+ "listenerRuns": 0,
340
+ "matches": 3,
341
+ "parentElement": 2,
342
+ "quarkRuns": 2,
343
+ "queryScopeCost": 4,
344
+ "querySelectorAll": 2,
345
+ "removeAttribute": 0,
346
+ "ruleRuns": 3,
347
+ "schedulePaint": 2,
348
+ "setAttribute": 2,
349
+ "setVar": 0,
350
+ "textContent": 1,
351
+ "variableRuns": 0,
352
+ }
353
+ `;
354
+
355
+ exports[`Quark features > dynamics > does not fan out a def to readers the same run already reached > complexity 1`] = `
356
+ {
357
+ "attributeRuns": 5,
358
+ "closest": 4,
359
+ "getVar": 5,
360
+ "importNode": 5,
361
+ "listenerRuns": 0,
362
+ "matches": 4,
363
+ "parentElement": 23,
364
+ "quarkRuns": 2,
365
+ "queryScopeCost": 60,
366
+ "querySelectorAll": 6,
367
+ "removeAttribute": 1,
368
+ "ruleRuns": 9,
369
+ "schedulePaint": 5,
370
+ "setAttribute": 3,
371
+ "setVar": 5,
372
+ "textContent": 4,
373
+ "variableRuns": 5,
374
+ }
375
+ `;
376
+
377
+ exports[`Quark features > dynamics > propagates async variable updates to consumers in sibling rules > complexity 1`] = `
378
+ {
379
+ "attributeRuns": 1,
380
+ "closest": 0,
381
+ "getVar": 1,
382
+ "importNode": 0,
383
+ "listenerRuns": 0,
384
+ "matches": 2,
385
+ "parentElement": 2,
386
+ "quarkRuns": 2,
387
+ "queryScopeCost": 1,
388
+ "querySelectorAll": 1,
389
+ "removeAttribute": 0,
390
+ "ruleRuns": 2,
391
+ "schedulePaint": 1,
392
+ "setAttribute": 0,
393
+ "setVar": 1,
394
+ "textContent": 1,
395
+ "variableRuns": 1,
396
+ }
397
+ `;
398
+
399
+ exports[`Quark features > dynamics > re-runs another sheet's consumers when a binding changes > complexity 1`] = `
400
+ {
401
+ "attributeRuns": 1,
402
+ "closest": 0,
403
+ "getVar": 1,
404
+ "importNode": 0,
405
+ "listenerRuns": 0,
406
+ "matches": 2,
407
+ "parentElement": 2,
408
+ "quarkRuns": 1,
409
+ "queryScopeCost": 1,
410
+ "querySelectorAll": 1,
411
+ "removeAttribute": 0,
412
+ "ruleRuns": 1,
413
+ "schedulePaint": 1,
414
+ "setAttribute": 0,
415
+ "setVar": 1,
416
+ "textContent": 1,
417
+ "variableRuns": 1,
418
+ }
419
+ `;
420
+
421
+ exports[`Quark features > dynamics > re-runs chained variables when the source provision changes > complexity 1`] = `
422
+ {
423
+ "attributeRuns": 1,
424
+ "closest": 0,
425
+ "getVar": 2,
426
+ "importNode": 0,
427
+ "listenerRuns": 0,
428
+ "matches": 3,
429
+ "parentElement": 2,
430
+ "quarkRuns": 3,
431
+ "queryScopeCost": 1,
432
+ "querySelectorAll": 1,
433
+ "removeAttribute": 0,
434
+ "ruleRuns": 3,
435
+ "schedulePaint": 1,
436
+ "setAttribute": 0,
437
+ "setVar": 2,
438
+ "textContent": 1,
439
+ "variableRuns": 2,
440
+ }
441
+ `;
442
+
443
+ exports[`Quark features > dynamics > reacts when a custom element toggles its own state attribute > complexity 1`] = `
444
+ {
445
+ "attributeRuns": 1,
446
+ "closest": 0,
447
+ "getVar": 1,
448
+ "importNode": 0,
449
+ "listenerRuns": 0,
450
+ "matches": 3,
451
+ "parentElement": 8,
452
+ "quarkRuns": 1,
453
+ "queryScopeCost": 1,
454
+ "querySelectorAll": 1,
455
+ "removeAttribute": 0,
456
+ "ruleRuns": 2,
457
+ "schedulePaint": 1,
458
+ "setAttribute": 1,
459
+ "setVar": 1,
460
+ "textContent": 1,
461
+ "variableRuns": 1,
462
+ }
463
+ `;
464
+
465
+ exports[`Quark features > dynamics > skips dependent re-runs when a provision carries the same value > complexity 1`] = `
466
+ {
467
+ "attributeRuns": 0,
468
+ "closest": 0,
469
+ "getVar": 0,
470
+ "importNode": 0,
471
+ "listenerRuns": 0,
472
+ "matches": 1,
473
+ "parentElement": 1,
474
+ "quarkRuns": 1,
475
+ "queryScopeCost": 0,
476
+ "querySelectorAll": 0,
477
+ "removeAttribute": 0,
478
+ "ruleRuns": 1,
479
+ "schedulePaint": 0,
480
+ "setAttribute": 0,
481
+ "setVar": 1,
482
+ "textContent": 0,
483
+ "variableRuns": 1,
484
+ }
485
+ `;
486
+
487
+ exports[`Quark features > dynamics > skips re-runs when a farther (shadowed) binding owner changes > complexity 1`] = `
488
+ {
489
+ "attributeRuns": 0,
490
+ "closest": 0,
491
+ "getVar": 0,
492
+ "importNode": 0,
493
+ "listenerRuns": 0,
494
+ "matches": 3,
495
+ "parentElement": 1,
496
+ "quarkRuns": 2,
497
+ "queryScopeCost": 2,
498
+ "querySelectorAll": 1,
499
+ "removeAttribute": 0,
500
+ "ruleRuns": 2,
501
+ "schedulePaint": 0,
502
+ "setAttribute": 0,
503
+ "setVar": 1,
504
+ "textContent": 0,
505
+ "variableRuns": 1,
506
+ }
507
+ `;
508
+
509
+ exports[`Quark features > iterate > binds both index and item for array rows > complexity 1`] = `
510
+ {
511
+ "attributeRuns": 3,
512
+ "closest": 4,
513
+ "getVar": 1,
514
+ "importNode": 3,
515
+ "listenerRuns": 0,
516
+ "matches": 3,
517
+ "parentElement": 6,
518
+ "quarkRuns": 2,
519
+ "queryScopeCost": 27,
520
+ "querySelectorAll": 7,
521
+ "removeAttribute": 1,
522
+ "ruleRuns": 6,
523
+ "schedulePaint": 3,
524
+ "setAttribute": 3,
525
+ "setVar": 1,
526
+ "textContent": 2,
527
+ "variableRuns": 1,
528
+ }
529
+ `;
530
+
531
+ exports[`Quark features > iterate > clears iterated children when the list becomes empty > complexity 1`] = `
532
+ {
533
+ "attributeRuns": 1,
534
+ "closest": 0,
535
+ "getVar": 1,
536
+ "importNode": 1,
537
+ "listenerRuns": 0,
538
+ "matches": 2,
539
+ "parentElement": 2,
540
+ "quarkRuns": 2,
541
+ "queryScopeCost": 2,
542
+ "querySelectorAll": 1,
543
+ "removeAttribute": 1,
544
+ "ruleRuns": 2,
545
+ "schedulePaint": 1,
546
+ "setAttribute": 2,
547
+ "setVar": 1,
548
+ "textContent": 0,
549
+ "variableRuns": 1,
550
+ }
551
+ `;
552
+
553
+ exports[`Quark features > iterate > iterates a plain object (index=key, item=value) > complexity 1`] = `
554
+ {
555
+ "attributeRuns": 3,
556
+ "closest": 4,
557
+ "getVar": 1,
558
+ "importNode": 3,
559
+ "listenerRuns": 0,
560
+ "matches": 3,
561
+ "parentElement": 6,
562
+ "quarkRuns": 2,
563
+ "queryScopeCost": 27,
564
+ "querySelectorAll": 7,
565
+ "removeAttribute": 1,
566
+ "ruleRuns": 6,
567
+ "schedulePaint": 3,
568
+ "setAttribute": 3,
569
+ "setVar": 1,
570
+ "textContent": 2,
571
+ "variableRuns": 1,
572
+ }
573
+ `;
574
+
575
+ exports[`Quark features > iterate > reuses rows across provisions when a key property is provided > complexity 1`] = `
576
+ {
577
+ "attributeRuns": 3,
578
+ "closest": 2,
579
+ "getVar": 1,
580
+ "importNode": 1,
581
+ "listenerRuns": 0,
582
+ "matches": 2,
583
+ "parentElement": 6,
584
+ "quarkRuns": 3,
585
+ "queryScopeCost": 13,
586
+ "querySelectorAll": 5,
587
+ "removeAttribute": 1,
588
+ "ruleRuns": 5,
589
+ "schedulePaint": 3,
590
+ "setAttribute": 2,
591
+ "setVar": 1,
592
+ "textContent": 2,
593
+ "variableRuns": 1,
594
+ }
595
+ `;
596
+
597
+ exports[`Quark features > lifecycle > stops reacting after unregister > complexity 1`] = `
598
+ {
599
+ "attributeRuns": 0,
600
+ "closest": 0,
601
+ "getVar": 0,
602
+ "importNode": 0,
603
+ "listenerRuns": 0,
604
+ "matches": 0,
605
+ "parentElement": 0,
606
+ "quarkRuns": 0,
607
+ "queryScopeCost": 0,
608
+ "querySelectorAll": 0,
609
+ "removeAttribute": 0,
610
+ "ruleRuns": 0,
611
+ "schedulePaint": 0,
612
+ "setAttribute": 1,
613
+ "setVar": 0,
614
+ "textContent": 0,
615
+ "variableRuns": 0,
616
+ }
617
+ `;
618
+
619
+ exports[`Quark features > lifecycle > supports two sheets on the same host > complexity 1`] = `
620
+ {
621
+ "attributeRuns": 2,
622
+ "closest": 0,
623
+ "getVar": 0,
624
+ "importNode": 0,
625
+ "listenerRuns": 0,
626
+ "matches": 2,
627
+ "parentElement": 2,
628
+ "quarkRuns": 1,
629
+ "queryScopeCost": 4,
630
+ "querySelectorAll": 2,
631
+ "removeAttribute": 0,
632
+ "ruleRuns": 1,
633
+ "schedulePaint": 2,
634
+ "setAttribute": 1,
635
+ "setVar": 0,
636
+ "textContent": 2,
637
+ "variableRuns": 0,
638
+ }
639
+ `;
640
+
641
+ exports[`Quark features > lifecycle > supports two sheets on the same host > complexity 2`] = `
642
+ {
643
+ "attributeRuns": 2,
644
+ "closest": 0,
645
+ "getVar": 0,
646
+ "importNode": 0,
647
+ "listenerRuns": 0,
648
+ "matches": 2,
649
+ "parentElement": 2,
650
+ "quarkRuns": 1,
651
+ "queryScopeCost": 4,
652
+ "querySelectorAll": 2,
653
+ "removeAttribute": 0,
654
+ "ruleRuns": 1,
655
+ "schedulePaint": 2,
656
+ "setAttribute": 1,
657
+ "setVar": 0,
658
+ "textContent": 2,
659
+ "variableRuns": 0,
660
+ }
661
+ `;
662
+
663
+ exports[`Quark features > listeners > calls the handle function, and a handle list in order, with the event and the element as \`this\` > complexity 1`] = `
664
+ {
665
+ "attributeRuns": 0,
666
+ "closest": 0,
667
+ "getVar": 0,
668
+ "importNode": 0,
669
+ "listenerRuns": 2,
670
+ "matches": 2,
671
+ "parentElement": 1,
672
+ "quarkRuns": 1,
673
+ "queryScopeCost": 6,
674
+ "querySelectorAll": 2,
675
+ "removeAttribute": 0,
676
+ "ruleRuns": 2,
677
+ "schedulePaint": 0,
678
+ "setAttribute": 1,
679
+ "setVar": 0,
680
+ "textContent": 0,
681
+ "variableRuns": 0,
682
+ }
683
+ `;
684
+
685
+ exports[`Quark features > listeners > prevent-default: the flag and the handle built-in both cancel the event > complexity 1`] = `
686
+ {
687
+ "attributeRuns": 0,
688
+ "closest": 0,
689
+ "getVar": 0,
690
+ "importNode": 0,
691
+ "listenerRuns": 2,
692
+ "matches": 2,
693
+ "parentElement": 1,
694
+ "quarkRuns": 1,
695
+ "queryScopeCost": 6,
696
+ "querySelectorAll": 2,
697
+ "removeAttribute": 0,
698
+ "ruleRuns": 2,
699
+ "schedulePaint": 0,
700
+ "setAttribute": 1,
701
+ "setVar": 0,
702
+ "textContent": 0,
703
+ "variableRuns": 0,
704
+ }
705
+ `;
706
+
707
+ exports[`Quark features > listeners > stop-propagation / stop-immediate-propagation flags act before any timing > complexity 1`] = `
708
+ {
709
+ "attributeRuns": 0,
710
+ "closest": 0,
711
+ "getVar": 0,
712
+ "importNode": 0,
713
+ "listenerRuns": 2,
714
+ "matches": 2,
715
+ "parentElement": 1,
716
+ "quarkRuns": 1,
717
+ "queryScopeCost": 8,
718
+ "querySelectorAll": 2,
719
+ "removeAttribute": 0,
720
+ "ruleRuns": 2,
721
+ "schedulePaint": 0,
722
+ "setAttribute": 1,
723
+ "setVar": 0,
724
+ "textContent": 0,
725
+ "variableRuns": 0,
726
+ }
727
+ `;
728
+
729
+ exports[`Quark features > prop() > reads a provision through a binding defined on the provider > complexity 1`] = `
730
+ {
731
+ "attributeRuns": 1,
732
+ "closest": 0,
733
+ "getVar": 1,
734
+ "importNode": 0,
735
+ "listenerRuns": 0,
736
+ "matches": 2,
737
+ "parentElement": 6,
738
+ "quarkRuns": 1,
739
+ "queryScopeCost": 8,
740
+ "querySelectorAll": 2,
741
+ "removeAttribute": 0,
742
+ "ruleRuns": 2,
743
+ "schedulePaint": 1,
744
+ "setAttribute": 1,
745
+ "setVar": 1,
746
+ "textContent": 1,
747
+ "variableRuns": 1,
748
+ }
749
+ `;
750
+
751
+ exports[`Quark features > selectors and nesting > applies autofocus only while dialog is open > complexity 1`] = `
752
+ {
753
+ "attributeRuns": 2,
754
+ "closest": 0,
755
+ "getVar": 0,
756
+ "importNode": 0,
757
+ "listenerRuns": 0,
758
+ "matches": 4,
759
+ "parentElement": 0,
760
+ "quarkRuns": 2,
761
+ "queryScopeCost": 2,
762
+ "querySelectorAll": 2,
763
+ "removeAttribute": 2,
764
+ "ruleRuns": 2,
765
+ "schedulePaint": 2,
766
+ "setAttribute": 2,
767
+ "setVar": 0,
768
+ "textContent": 0,
769
+ "variableRuns": 0,
770
+ }
771
+ `;
772
+
773
+ exports[`Quark features > selectors and nesting > inherits a parent variable through nested rules > complexity 1`] = `
774
+ {
775
+ "attributeRuns": 1,
776
+ "closest": 0,
777
+ "getVar": 1,
778
+ "importNode": 0,
779
+ "listenerRuns": 0,
780
+ "matches": 2,
781
+ "parentElement": 6,
782
+ "quarkRuns": 1,
783
+ "queryScopeCost": 8,
784
+ "querySelectorAll": 2,
785
+ "removeAttribute": 0,
786
+ "ruleRuns": 2,
787
+ "schedulePaint": 1,
788
+ "setAttribute": 1,
789
+ "setVar": 1,
790
+ "textContent": 1,
791
+ "variableRuns": 1,
792
+ }
793
+ `;
794
+
795
+ exports[`Quark features > selectors and nesting > targets by id > complexity 1`] = `
796
+ {
797
+ "attributeRuns": 1,
798
+ "closest": 0,
799
+ "getVar": 0,
800
+ "importNode": 0,
801
+ "listenerRuns": 0,
802
+ "matches": 1,
803
+ "parentElement": 1,
804
+ "quarkRuns": 1,
805
+ "queryScopeCost": 2,
806
+ "querySelectorAll": 1,
807
+ "removeAttribute": 0,
808
+ "ruleRuns": 1,
809
+ "schedulePaint": 1,
810
+ "setAttribute": 1,
811
+ "setVar": 0,
812
+ "textContent": 1,
813
+ "variableRuns": 0,
814
+ }
815
+ `;
816
+
817
+ exports[`Quark features > variables and expressions > concatenates simple string expressions > complexity 1`] = `
818
+ {
819
+ "attributeRuns": 1,
820
+ "closest": 0,
821
+ "getVar": 0,
822
+ "importNode": 0,
823
+ "listenerRuns": 0,
824
+ "matches": 1,
825
+ "parentElement": 1,
826
+ "quarkRuns": 1,
827
+ "queryScopeCost": 2,
828
+ "querySelectorAll": 1,
829
+ "removeAttribute": 0,
830
+ "ruleRuns": 1,
831
+ "schedulePaint": 1,
832
+ "setAttribute": 1,
833
+ "setVar": 0,
834
+ "textContent": 1,
835
+ "variableRuns": 0,
836
+ }
837
+ `;
838
+
839
+ exports[`Quark features > variables and expressions > falls back to the else arm in if() > complexity 1`] = `
840
+ {
841
+ "attributeRuns": 1,
842
+ "closest": 0,
843
+ "getVar": 0,
844
+ "importNode": 0,
845
+ "listenerRuns": 0,
846
+ "matches": 1,
847
+ "parentElement": 1,
848
+ "quarkRuns": 1,
849
+ "queryScopeCost": 2,
850
+ "querySelectorAll": 1,
851
+ "removeAttribute": 0,
852
+ "ruleRuns": 1,
853
+ "schedulePaint": 1,
854
+ "setAttribute": 1,
855
+ "setVar": 0,
856
+ "textContent": 1,
857
+ "variableRuns": 0,
858
+ }
859
+ `;
860
+
861
+ exports[`Quark features > variables and expressions > propagates null silently through accessors > complexity 1`] = `
862
+ {
863
+ "attributeRuns": 3,
864
+ "closest": 0,
865
+ "getVar": 3,
866
+ "importNode": 0,
867
+ "listenerRuns": 0,
868
+ "matches": 1,
869
+ "parentElement": 4,
870
+ "quarkRuns": 1,
871
+ "queryScopeCost": 2,
872
+ "querySelectorAll": 1,
873
+ "removeAttribute": 0,
874
+ "ruleRuns": 1,
875
+ "schedulePaint": 3,
876
+ "setAttribute": 3,
877
+ "setVar": 1,
878
+ "textContent": 1,
879
+ "variableRuns": 1,
880
+ }
881
+ `;
882
+
883
+ exports[`Quark features > variables and expressions > re-runs when an attr() attribute changes without a selector gate > complexity 1`] = `
884
+ {
885
+ "attributeRuns": 1,
886
+ "closest": 0,
887
+ "getVar": 1,
888
+ "importNode": 0,
889
+ "listenerRuns": 0,
890
+ "matches": 1,
891
+ "parentElement": 1,
892
+ "quarkRuns": 2,
893
+ "queryScopeCost": 2,
894
+ "querySelectorAll": 1,
895
+ "removeAttribute": 0,
896
+ "ruleRuns": 2,
897
+ "schedulePaint": 1,
898
+ "setAttribute": 0,
899
+ "setVar": 1,
900
+ "textContent": 1,
901
+ "variableRuns": 1,
902
+ }
903
+ `;
904
+
905
+ exports[`Quark features > variables and expressions > reads attributes via attr() > complexity 1`] = `
906
+ {
907
+ "attributeRuns": 1,
908
+ "closest": 0,
909
+ "getVar": 0,
910
+ "importNode": 0,
911
+ "listenerRuns": 0,
912
+ "matches": 1,
913
+ "parentElement": 1,
914
+ "quarkRuns": 1,
915
+ "queryScopeCost": 2,
916
+ "querySelectorAll": 1,
917
+ "removeAttribute": 0,
918
+ "ruleRuns": 1,
919
+ "schedulePaint": 1,
920
+ "setAttribute": 1,
921
+ "setVar": 0,
922
+ "textContent": 1,
923
+ "variableRuns": 0,
924
+ }
925
+ `;
926
+
927
+ exports[`Quark features > variables and expressions > reads nested object fields from a JS module value > complexity 1`] = `
928
+ {
929
+ "attributeRuns": 1,
930
+ "closest": 0,
931
+ "getVar": 1,
932
+ "importNode": 0,
933
+ "listenerRuns": 0,
934
+ "matches": 2,
935
+ "parentElement": 4,
936
+ "quarkRuns": 1,
937
+ "queryScopeCost": 6,
938
+ "querySelectorAll": 2,
939
+ "removeAttribute": 0,
940
+ "ruleRuns": 2,
941
+ "schedulePaint": 1,
942
+ "setAttribute": 1,
943
+ "setVar": 1,
944
+ "textContent": 1,
945
+ "variableRuns": 1,
946
+ }
947
+ `;
948
+
949
+ exports[`Quark features > variables and expressions > resolves CSS-style if() to the first truthy arm > complexity 1`] = `
950
+ {
951
+ "attributeRuns": 1,
952
+ "closest": 0,
953
+ "getVar": 2,
954
+ "importNode": 0,
955
+ "listenerRuns": 0,
956
+ "matches": 1,
957
+ "parentElement": 2,
958
+ "quarkRuns": 1,
959
+ "queryScopeCost": 2,
960
+ "querySelectorAll": 1,
961
+ "removeAttribute": 0,
962
+ "ruleRuns": 1,
963
+ "schedulePaint": 1,
964
+ "setAttribute": 1,
965
+ "setVar": 1,
966
+ "textContent": 1,
967
+ "variableRuns": 1,
968
+ }
969
+ `;
970
+
971
+ exports[`Quark features > variables and expressions > resolves a variable from a DOM ancestor set by a sibling rule > complexity 1`] = `
972
+ {
973
+ "attributeRuns": 2,
974
+ "closest": 0,
975
+ "getVar": 1,
976
+ "importNode": 0,
977
+ "listenerRuns": 0,
978
+ "matches": 2,
979
+ "parentElement": 4,
980
+ "quarkRuns": 1,
981
+ "queryScopeCost": 6,
982
+ "querySelectorAll": 2,
983
+ "removeAttribute": 0,
984
+ "ruleRuns": 2,
985
+ "schedulePaint": 2,
986
+ "setAttribute": 2,
987
+ "setVar": 1,
988
+ "textContent": 1,
989
+ "variableRuns": 1,
990
+ }
991
+ `;
992
+
993
+ exports[`Quark features > variables and expressions > resolves closest() to an ancestor element > complexity 1`] = `
994
+ {
995
+ "attributeRuns": 1,
996
+ "closest": 1,
997
+ "getVar": 1,
998
+ "importNode": 0,
999
+ "listenerRuns": 0,
1000
+ "matches": 1,
1001
+ "parentElement": 4,
1002
+ "quarkRuns": 1,
1003
+ "queryScopeCost": 3,
1004
+ "querySelectorAll": 1,
1005
+ "removeAttribute": 0,
1006
+ "ruleRuns": 1,
1007
+ "schedulePaint": 1,
1008
+ "setAttribute": 1,
1009
+ "setVar": 1,
1010
+ "textContent": 1,
1011
+ "variableRuns": 1,
1012
+ }
1013
+ `;
1014
+
1015
+ exports[`Quark features > variables and expressions > resolves ternary() > complexity 1`] = `
1016
+ {
1017
+ "attributeRuns": 1,
1018
+ "closest": 0,
1019
+ "getVar": 0,
1020
+ "importNode": 0,
1021
+ "listenerRuns": 0,
1022
+ "matches": 1,
1023
+ "parentElement": 1,
1024
+ "quarkRuns": 1,
1025
+ "queryScopeCost": 2,
1026
+ "querySelectorAll": 1,
1027
+ "removeAttribute": 0,
1028
+ "ruleRuns": 1,
1029
+ "schedulePaint": 1,
1030
+ "setAttribute": 1,
1031
+ "setVar": 0,
1032
+ "textContent": 1,
1033
+ "variableRuns": 0,
1034
+ }
1035
+ `;
1036
+
1037
+ exports[`Quark features > variables and expressions > uses list.find() to pick a record from an array > complexity 1`] = `
1038
+ {
1039
+ "attributeRuns": 1,
1040
+ "closest": 0,
1041
+ "getVar": 1,
1042
+ "importNode": 0,
1043
+ "listenerRuns": 0,
1044
+ "matches": 2,
1045
+ "parentElement": 4,
1046
+ "quarkRuns": 1,
1047
+ "queryScopeCost": 6,
1048
+ "querySelectorAll": 2,
1049
+ "removeAttribute": 0,
1050
+ "ruleRuns": 2,
1051
+ "schedulePaint": 1,
1052
+ "setAttribute": 1,
1053
+ "setVar": 1,
1054
+ "textContent": 1,
1055
+ "variableRuns": 1,
1056
+ }
1057
+ `;
1058
+
1059
+ exports[`Quark features > variables and expressions > uses list.reverse() on an array before iterate > complexity 1`] = `
1060
+ {
1061
+ "attributeRuns": 4,
1062
+ "closest": 3,
1063
+ "getVar": 1,
1064
+ "importNode": 4,
1065
+ "listenerRuns": 0,
1066
+ "matches": 3,
1067
+ "parentElement": 7,
1068
+ "quarkRuns": 2,
1069
+ "queryScopeCost": 33,
1070
+ "querySelectorAll": 7,
1071
+ "removeAttribute": 1,
1072
+ "ruleRuns": 6,
1073
+ "schedulePaint": 4,
1074
+ "setAttribute": 3,
1075
+ "setVar": 1,
1076
+ "textContent": 3,
1077
+ "variableRuns": 1,
1078
+ }
1079
+ `;