@velarscript/web 0.31.0 → 0.32.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 (385) hide show
  1. package/README.md +1 -1
  2. package/dist/analysis/calls/intrinsics/config.d.ts +10 -0
  3. package/dist/analysis/calls/intrinsics/config.d.ts.map +1 -0
  4. package/dist/analysis/calls/intrinsics/config.js +19 -0
  5. package/dist/analysis/calls/intrinsics/config.js.map +1 -0
  6. package/dist/analysis/calls/intrinsics/forms.d.ts +10 -0
  7. package/dist/analysis/calls/intrinsics/forms.d.ts.map +1 -0
  8. package/dist/analysis/calls/intrinsics/forms.js +38 -0
  9. package/dist/analysis/calls/intrinsics/forms.js.map +1 -0
  10. package/dist/analysis/calls/intrinsics/http.d.ts +10 -0
  11. package/dist/analysis/calls/intrinsics/http.d.ts.map +1 -0
  12. package/dist/analysis/calls/intrinsics/http.js +37 -0
  13. package/dist/analysis/calls/intrinsics/http.js.map +1 -0
  14. package/dist/analysis/calls/intrinsics/reactive.d.ts +10 -0
  15. package/dist/analysis/calls/intrinsics/reactive.d.ts.map +1 -0
  16. package/dist/analysis/calls/intrinsics/reactive.js +30 -0
  17. package/dist/analysis/calls/intrinsics/reactive.js.map +1 -0
  18. package/dist/analysis/calls/intrinsics/storage.d.ts +12 -0
  19. package/dist/analysis/calls/intrinsics/storage.d.ts.map +1 -0
  20. package/dist/analysis/calls/intrinsics/storage.js +86 -0
  21. package/dist/analysis/calls/intrinsics/storage.js.map +1 -0
  22. package/dist/analysis/calls/intrinsics/web.d.ts +10 -0
  23. package/dist/analysis/calls/intrinsics/web.d.ts.map +1 -0
  24. package/dist/analysis/calls/intrinsics/web.js +100 -0
  25. package/dist/analysis/calls/intrinsics/web.js.map +1 -0
  26. package/dist/analysis/calls/intrinsics.d.ts +13 -0
  27. package/dist/analysis/calls/intrinsics.d.ts.map +1 -0
  28. package/dist/analysis/calls/intrinsics.js +31 -0
  29. package/dist/analysis/calls/intrinsics.js.map +1 -0
  30. package/dist/analysis/components/contracts.d.ts +19 -0
  31. package/dist/analysis/components/contracts.d.ts.map +1 -0
  32. package/dist/analysis/components/contracts.js +83 -0
  33. package/dist/analysis/components/contracts.js.map +1 -0
  34. package/dist/analysis/components/declaration.d.ts +4 -0
  35. package/dist/analysis/components/declaration.d.ts.map +1 -0
  36. package/dist/analysis/components/declaration.js +163 -0
  37. package/dist/analysis/components/declaration.js.map +1 -0
  38. package/dist/analysis/components/host.d.ts +61 -0
  39. package/dist/analysis/components/host.d.ts.map +1 -0
  40. package/dist/analysis/components/host.js +22 -0
  41. package/dist/analysis/components/host.js.map +1 -0
  42. package/dist/analysis/components/lifecycle.d.ts +22 -0
  43. package/dist/analysis/components/lifecycle.d.ts.map +1 -0
  44. package/dist/analysis/components/lifecycle.js +33 -0
  45. package/dist/analysis/components/lifecycle.js.map +1 -0
  46. package/dist/analysis/components/ownership.d.ts +74 -0
  47. package/dist/analysis/components/ownership.d.ts.map +1 -0
  48. package/dist/analysis/components/ownership.js +106 -0
  49. package/dist/analysis/components/ownership.js.map +1 -0
  50. package/dist/analysis/declarations.d.ts +99 -0
  51. package/dist/analysis/declarations.d.ts.map +1 -0
  52. package/dist/analysis/declarations.js +176 -0
  53. package/dist/analysis/declarations.js.map +1 -0
  54. package/dist/analysis/inference.d.ts +67 -0
  55. package/dist/analysis/inference.d.ts.map +1 -0
  56. package/dist/analysis/inference.js +236 -0
  57. package/dist/analysis/inference.js.map +1 -0
  58. package/dist/analysis/jsx/attributes.d.ts +103 -0
  59. package/dist/analysis/jsx/attributes.d.ts.map +1 -0
  60. package/dist/analysis/jsx/attributes.js +601 -0
  61. package/dist/analysis/jsx/attributes.js.map +1 -0
  62. package/dist/analysis/jsx/elements.d.ts +17 -0
  63. package/dist/analysis/jsx/elements.d.ts.map +1 -0
  64. package/dist/analysis/jsx/elements.js +213 -0
  65. package/dist/analysis/jsx/elements.js.map +1 -0
  66. package/dist/analysis/jsx/host.d.ts +61 -0
  67. package/dist/analysis/jsx/host.d.ts.map +1 -0
  68. package/dist/analysis/jsx/host.js +15 -0
  69. package/dist/analysis/jsx/host.js.map +1 -0
  70. package/dist/analysis/jsx/keys.d.ts +15 -0
  71. package/dist/analysis/jsx/keys.d.ts.map +1 -0
  72. package/dist/analysis/jsx/keys.js +67 -0
  73. package/dist/analysis/jsx/keys.js.map +1 -0
  74. package/dist/analysis/jsx/security.d.ts +29 -0
  75. package/dist/analysis/jsx/security.d.ts.map +1 -0
  76. package/dist/analysis/jsx/security.js +61 -0
  77. package/dist/analysis/jsx/security.js.map +1 -0
  78. package/dist/analysis/jsx-detection.d.ts +49 -0
  79. package/dist/analysis/jsx-detection.d.ts.map +1 -0
  80. package/dist/analysis/jsx-detection.js +196 -0
  81. package/dist/analysis/jsx-detection.js.map +1 -0
  82. package/dist/analysis/keyed-rebuild.d.ts +148 -0
  83. package/dist/analysis/keyed-rebuild.d.ts.map +1 -0
  84. package/dist/analysis/keyed-rebuild.js +299 -0
  85. package/dist/analysis/keyed-rebuild.js.map +1 -0
  86. package/dist/analysis/keyframes-analysis.d.ts +6 -0
  87. package/dist/analysis/keyframes-analysis.d.ts.map +1 -0
  88. package/dist/analysis/keyframes-analysis.js +79 -0
  89. package/dist/analysis/keyframes-analysis.js.map +1 -0
  90. package/dist/analysis/look/builders.d.ts +29 -0
  91. package/dist/analysis/look/builders.d.ts.map +1 -0
  92. package/dist/analysis/look/builders.js +168 -0
  93. package/dist/analysis/look/builders.js.map +1 -0
  94. package/dist/analysis/look/conditions.d.ts +13 -0
  95. package/dist/analysis/look/conditions.d.ts.map +1 -0
  96. package/dist/analysis/look/conditions.js +84 -0
  97. package/dist/analysis/look/conditions.js.map +1 -0
  98. package/dist/analysis/look/edits.d.ts +25 -0
  99. package/dist/analysis/look/edits.d.ts.map +1 -0
  100. package/dist/analysis/look/edits.js +57 -0
  101. package/dist/analysis/look/edits.js.map +1 -0
  102. package/dist/analysis/look/entries.d.ts +56 -0
  103. package/dist/analysis/look/entries.d.ts.map +1 -0
  104. package/dist/analysis/look/entries.js +223 -0
  105. package/dist/analysis/look/entries.js.map +1 -0
  106. package/dist/analysis/look/host.d.ts +47 -0
  107. package/dist/analysis/look/host.d.ts.map +1 -0
  108. package/dist/analysis/look/host.js +16 -0
  109. package/dist/analysis/look/host.js.map +1 -0
  110. package/dist/analysis/look/tokens.d.ts +75 -0
  111. package/dist/analysis/look/tokens.d.ts.map +1 -0
  112. package/dist/analysis/look/tokens.js +151 -0
  113. package/dist/analysis/look/tokens.js.map +1 -0
  114. package/dist/analysis/look/values.d.ts +45 -0
  115. package/dist/analysis/look/values.d.ts.map +1 -0
  116. package/dist/analysis/look/values.js +148 -0
  117. package/dist/analysis/look/values.js.map +1 -0
  118. package/dist/analysis/look-conditions.d.ts +47 -0
  119. package/dist/analysis/look-conditions.d.ts.map +1 -0
  120. package/dist/analysis/look-conditions.js +157 -0
  121. package/dist/analysis/look-conditions.js.map +1 -0
  122. package/dist/analysis/look-sites.d.ts +54 -0
  123. package/dist/analysis/look-sites.d.ts.map +1 -0
  124. package/dist/analysis/look-sites.js +104 -0
  125. package/dist/analysis/look-sites.js.map +1 -0
  126. package/dist/analysis/look-vocabulary-guidance.d.ts +76 -0
  127. package/dist/analysis/look-vocabulary-guidance.d.ts.map +1 -0
  128. package/dist/analysis/look-vocabulary-guidance.js +338 -0
  129. package/dist/analysis/look-vocabulary-guidance.js.map +1 -0
  130. package/dist/analysis/media-conditions.d.ts +33 -0
  131. package/dist/analysis/media-conditions.d.ts.map +1 -0
  132. package/dist/analysis/media-conditions.js +92 -0
  133. package/dist/analysis/media-conditions.js.map +1 -0
  134. package/dist/analysis/program-passes.d.ts +106 -0
  135. package/dist/analysis/program-passes.d.ts.map +1 -0
  136. package/dist/analysis/program-passes.js +149 -0
  137. package/dist/analysis/program-passes.js.map +1 -0
  138. package/dist/analysis/reactivity/bindings.d.ts +37 -0
  139. package/dist/analysis/reactivity/bindings.d.ts.map +1 -0
  140. package/dist/analysis/reactivity/bindings.js +88 -0
  141. package/dist/analysis/reactivity/bindings.js.map +1 -0
  142. package/dist/analysis/reactivity/derived.d.ts +39 -0
  143. package/dist/analysis/reactivity/derived.d.ts.map +1 -0
  144. package/dist/analysis/reactivity/derived.js +80 -0
  145. package/dist/analysis/reactivity/derived.js.map +1 -0
  146. package/dist/analysis/reactivity/host.d.ts +38 -0
  147. package/dist/analysis/reactivity/host.d.ts.map +1 -0
  148. package/dist/analysis/reactivity/host.js +14 -0
  149. package/dist/analysis/reactivity/host.js.map +1 -0
  150. package/dist/analysis/reactivity/retired-accessors.d.ts +82 -0
  151. package/dist/analysis/reactivity/retired-accessors.d.ts.map +1 -0
  152. package/dist/analysis/reactivity/retired-accessors.js +118 -0
  153. package/dist/analysis/reactivity/retired-accessors.js.map +1 -0
  154. package/dist/analysis/renderable.d.ts +47 -0
  155. package/dist/analysis/renderable.d.ts.map +1 -0
  156. package/dist/analysis/renderable.js +105 -0
  157. package/dist/analysis/renderable.js.map +1 -0
  158. package/dist/analysis/routes.d.ts +64 -0
  159. package/dist/analysis/routes.d.ts.map +1 -0
  160. package/dist/analysis/routes.js +182 -0
  161. package/dist/analysis/routes.js.map +1 -0
  162. package/dist/analysis/url-attributes.d.ts +12 -0
  163. package/dist/analysis/url-attributes.d.ts.map +1 -0
  164. package/dist/analysis/url-attributes.js +48 -0
  165. package/dist/analysis/url-attributes.js.map +1 -0
  166. package/dist/analysis/watch-cycles.d.ts +102 -0
  167. package/dist/analysis/watch-cycles.d.ts.map +1 -1
  168. package/dist/analysis/watch-cycles.js +240 -1
  169. package/dist/analysis/watch-cycles.js.map +1 -1
  170. package/dist/analysis/watch-subject.d.ts +45 -0
  171. package/dist/analysis/watch-subject.d.ts.map +1 -0
  172. package/dist/analysis/watch-subject.js +272 -0
  173. package/dist/analysis/watch-subject.js.map +1 -0
  174. package/dist/analysis/web-types.d.ts +27 -0
  175. package/dist/analysis/web-types.d.ts.map +1 -0
  176. package/dist/analysis/web-types.js +170 -0
  177. package/dist/analysis/web-types.js.map +1 -0
  178. package/dist/analyzer.d.ts +18 -617
  179. package/dist/analyzer.d.ts.map +1 -1
  180. package/dist/analyzer.js +208 -4853
  181. package/dist/analyzer.js.map +1 -1
  182. package/dist/compiler.d.ts +20 -0
  183. package/dist/compiler.d.ts.map +1 -1
  184. package/dist/compiler.js +29 -864
  185. package/dist/compiler.js.map +1 -1
  186. package/dist/documentation.d.ts +28 -0
  187. package/dist/documentation.d.ts.map +1 -0
  188. package/dist/documentation.js +67 -0
  189. package/dist/documentation.js.map +1 -0
  190. package/dist/editor/completions.d.ts +12 -0
  191. package/dist/editor/completions.d.ts.map +1 -0
  192. package/dist/editor/completions.js +6 -0
  193. package/dist/editor/completions.js.map +1 -0
  194. package/dist/editor/jsx-completion.d.ts +12 -0
  195. package/dist/editor/jsx-completion.d.ts.map +1 -0
  196. package/dist/editor/jsx-completion.js +137 -0
  197. package/dist/editor/jsx-completion.js.map +1 -0
  198. package/dist/editor/look-completion.d.ts +29 -0
  199. package/dist/editor/look-completion.d.ts.map +1 -0
  200. package/dist/editor/look-completion.js +159 -0
  201. package/dist/editor/look-completion.js.map +1 -0
  202. package/dist/editor.d.ts.map +1 -1
  203. package/dist/editor.js +12 -288
  204. package/dist/editor.js.map +1 -1
  205. package/dist/emit/components.d.ts +33 -0
  206. package/dist/emit/components.d.ts.map +1 -0
  207. package/dist/emit/components.js +135 -0
  208. package/dist/emit/components.js.map +1 -0
  209. package/dist/emit/jsx.d.ts +57 -0
  210. package/dist/emit/jsx.d.ts.map +1 -0
  211. package/dist/emit/jsx.js +384 -0
  212. package/dist/emit/jsx.js.map +1 -0
  213. package/dist/emit/look-css.d.ts +44 -0
  214. package/dist/emit/look-css.d.ts.map +1 -0
  215. package/dist/emit/look-css.js +177 -0
  216. package/dist/emit/look-css.js.map +1 -0
  217. package/dist/emit/look.d.ts +39 -0
  218. package/dist/emit/look.d.ts.map +1 -0
  219. package/dist/emit/look.js +218 -0
  220. package/dist/emit/look.js.map +1 -0
  221. package/dist/emit/runtime-imports.d.ts +40 -0
  222. package/dist/emit/runtime-imports.d.ts.map +1 -0
  223. package/dist/emit/runtime-imports.js +184 -0
  224. package/dist/emit/runtime-imports.js.map +1 -0
  225. package/dist/emitter.d.ts +15 -68
  226. package/dist/emitter.d.ts.map +1 -1
  227. package/dist/emitter.js +79 -1008
  228. package/dist/emitter.js.map +1 -1
  229. package/dist/look/animation.d.ts +7 -0
  230. package/dist/look/animation.d.ts.map +1 -0
  231. package/dist/look/animation.js +13 -0
  232. package/dist/look/animation.js.map +1 -0
  233. package/dist/look/builders.d.ts +35 -0
  234. package/dist/look/builders.d.ts.map +1 -0
  235. package/dist/look/builders.js +74 -0
  236. package/dist/look/builders.js.map +1 -0
  237. package/dist/look/css-functions.d.ts +28 -0
  238. package/dist/look/css-functions.d.ts.map +1 -0
  239. package/dist/look/css-functions.js +54 -0
  240. package/dist/look/css-functions.js.map +1 -0
  241. package/dist/look/keyword-sets.d.ts +41 -0
  242. package/dist/look/keyword-sets.d.ts.map +1 -0
  243. package/dist/look/keyword-sets.js +117 -0
  244. package/dist/look/keyword-sets.js.map +1 -0
  245. package/dist/look/keywords.d.ts +55 -0
  246. package/dist/look/keywords.d.ts.map +1 -0
  247. package/dist/look/keywords.js +387 -0
  248. package/dist/look/keywords.js.map +1 -0
  249. package/dist/look/media.d.ts +19 -0
  250. package/dist/look/media.d.ts.map +1 -0
  251. package/dist/look/media.js +27 -0
  252. package/dist/look/media.js.map +1 -0
  253. package/dist/look/naming.d.ts +9 -0
  254. package/dist/look/naming.d.ts.map +1 -0
  255. package/dist/look/naming.js +45 -0
  256. package/dist/look/naming.js.map +1 -0
  257. package/dist/look/properties.d.ts +16 -0
  258. package/dist/look/properties.d.ts.map +1 -0
  259. package/dist/look/properties.js +52 -0
  260. package/dist/look/properties.js.map +1 -0
  261. package/dist/look/shorthands.d.ts +25 -0
  262. package/dist/look/shorthands.d.ts.map +1 -0
  263. package/dist/look/shorthands.js +130 -0
  264. package/dist/look/shorthands.js.map +1 -0
  265. package/dist/look/tokens.d.ts +38 -0
  266. package/dist/look/tokens.d.ts.map +1 -0
  267. package/dist/look/tokens.js +59 -0
  268. package/dist/look/tokens.js.map +1 -0
  269. package/dist/look/units.d.ts +24 -0
  270. package/dist/look/units.d.ts.map +1 -0
  271. package/dist/look/units.js +33 -0
  272. package/dist/look/units.js.map +1 -0
  273. package/dist/look.d.ts +32 -227
  274. package/dist/look.d.ts.map +1 -1
  275. package/dist/look.js +28 -933
  276. package/dist/look.js.map +1 -1
  277. package/dist/module-roster.d.ts +16 -0
  278. package/dist/module-roster.d.ts.map +1 -0
  279. package/dist/module-roster.js +28 -0
  280. package/dist/module-roster.js.map +1 -0
  281. package/dist/modules/app.d.ts +9 -0
  282. package/dist/modules/app.d.ts.map +1 -0
  283. package/dist/modules/app.js +20 -0
  284. package/dist/modules/app.js.map +1 -0
  285. package/dist/modules/browser-test.d.ts +9 -0
  286. package/dist/modules/browser-test.d.ts.map +1 -0
  287. package/dist/modules/browser-test.js +67 -0
  288. package/dist/modules/browser-test.js.map +1 -0
  289. package/dist/modules/browser.d.ts +10 -0
  290. package/dist/modules/browser.d.ts.map +1 -0
  291. package/dist/modules/browser.js +89 -0
  292. package/dist/modules/browser.js.map +1 -0
  293. package/dist/modules/config.d.ts +9 -0
  294. package/dist/modules/config.d.ts.map +1 -0
  295. package/dist/modules/config.js +14 -0
  296. package/dist/modules/config.js.map +1 -0
  297. package/dist/modules/files.d.ts +9 -0
  298. package/dist/modules/files.d.ts.map +1 -0
  299. package/dist/modules/files.js +16 -0
  300. package/dist/modules/files.js.map +1 -0
  301. package/dist/modules/forms.d.ts +9 -0
  302. package/dist/modules/forms.d.ts.map +1 -0
  303. package/dist/modules/forms.js +26 -0
  304. package/dist/modules/forms.js.map +1 -0
  305. package/dist/modules/http.d.ts +9 -0
  306. package/dist/modules/http.d.ts.map +1 -0
  307. package/dist/modules/http.js +127 -0
  308. package/dist/modules/http.js.map +1 -0
  309. package/dist/modules/look.d.ts +9 -0
  310. package/dist/modules/look.d.ts.map +1 -0
  311. package/dist/modules/look.js +58 -0
  312. package/dist/modules/look.js.map +1 -0
  313. package/dist/modules/realtime.d.ts +9 -0
  314. package/dist/modules/realtime.d.ts.map +1 -0
  315. package/dist/modules/realtime.js +163 -0
  316. package/dist/modules/realtime.js.map +1 -0
  317. package/dist/modules/storage.d.ts +9 -0
  318. package/dist/modules/storage.d.ts.map +1 -0
  319. package/dist/modules/storage.js +59 -0
  320. package/dist/modules/storage.js.map +1 -0
  321. package/dist/modules/types.d.ts +78 -0
  322. package/dist/modules/types.d.ts.map +1 -0
  323. package/dist/modules/types.js +154 -0
  324. package/dist/modules/types.js.map +1 -0
  325. package/dist/modules/web.d.ts +9 -0
  326. package/dist/modules/web.d.ts.map +1 -0
  327. package/dist/modules/web.js +63 -0
  328. package/dist/modules/web.js.map +1 -0
  329. package/dist/modules/websocket.d.ts +11 -0
  330. package/dist/modules/websocket.d.ts.map +1 -0
  331. package/dist/modules/websocket.js +75 -0
  332. package/dist/modules/websocket.js.map +1 -0
  333. package/dist/parser/expressions/jsx.d.ts +17 -0
  334. package/dist/parser/expressions/jsx.d.ts.map +1 -0
  335. package/dist/parser/expressions/jsx.js +43 -0
  336. package/dist/parser/expressions/jsx.js.map +1 -0
  337. package/dist/parser/expressions/keyframes.d.ts +15 -0
  338. package/dist/parser/expressions/keyframes.d.ts.map +1 -0
  339. package/dist/parser/expressions/keyframes.js +33 -0
  340. package/dist/parser/expressions/keyframes.js.map +1 -0
  341. package/dist/parser/expressions/look.d.ts +16 -0
  342. package/dist/parser/expressions/look.d.ts.map +1 -0
  343. package/dist/parser/expressions/look.js +37 -0
  344. package/dist/parser/expressions/look.js.map +1 -0
  345. package/dist/parser/expressions/visual-block.d.ts +17 -0
  346. package/dist/parser/expressions/visual-block.d.ts.map +1 -0
  347. package/dist/parser/expressions/visual-block.js +21 -0
  348. package/dist/parser/expressions/visual-block.js.map +1 -0
  349. package/dist/parser/keyframes-source.d.ts +24 -0
  350. package/dist/parser/keyframes-source.d.ts.map +1 -0
  351. package/dist/parser/keyframes-source.js +133 -0
  352. package/dist/parser/keyframes-source.js.map +1 -0
  353. package/dist/parser/look-source.d.ts +25 -0
  354. package/dist/parser/look-source.d.ts.map +1 -0
  355. package/dist/parser/look-source.js +189 -0
  356. package/dist/parser/look-source.js.map +1 -0
  357. package/dist/parser/spans.d.ts +24 -0
  358. package/dist/parser/spans.d.ts.map +1 -0
  359. package/dist/parser/spans.js +113 -0
  360. package/dist/parser/spans.js.map +1 -0
  361. package/dist/parser/statements/components.d.ts +37 -0
  362. package/dist/parser/statements/components.d.ts.map +1 -0
  363. package/dist/parser/statements/components.js +185 -0
  364. package/dist/parser/statements/components.js.map +1 -0
  365. package/dist/parser/statements/heads.d.ts +38 -0
  366. package/dist/parser/statements/heads.d.ts.map +1 -0
  367. package/dist/parser/statements/heads.js +55 -0
  368. package/dist/parser/statements/heads.js.map +1 -0
  369. package/dist/parser/statements/imports.d.ts +9 -0
  370. package/dist/parser/statements/imports.d.ts.map +1 -0
  371. package/dist/parser/statements/imports.js +31 -0
  372. package/dist/parser/statements/imports.js.map +1 -0
  373. package/dist/parser/statements/reactive.d.ts +31 -0
  374. package/dist/parser/statements/reactive.d.ts.map +1 -0
  375. package/dist/parser/statements/reactive.js +68 -0
  376. package/dist/parser/statements/reactive.js.map +1 -0
  377. package/dist/parser/statements/unsafe-css.d.ts +21 -0
  378. package/dist/parser/statements/unsafe-css.d.ts.map +1 -0
  379. package/dist/parser/statements/unsafe-css.js +42 -0
  380. package/dist/parser/statements/unsafe-css.js.map +1 -0
  381. package/dist/parser.d.ts +37 -50
  382. package/dist/parser.d.ts.map +1 -1
  383. package/dist/parser.js +98 -882
  384. package/dist/parser.js.map +1 -1
  385. package/package.json +2 -2
@@ -0,0 +1,44 @@
1
+ /**
2
+ * The CSS a `look:` value lowers to: the condition terms a Look condition
3
+ * decomposes into, the token that names one lowered rule, and the selector,
4
+ * media query and declaration that rule is written as.
5
+ *
6
+ * D115 P4 R3d: these are pure functions over the Look AST and the module's
7
+ * static values — no emitter state reaches them — so both `emit/look.ts` (the
8
+ * stylesheet) and `emit/jsx.ts` (an inline `look:` attribute) read the same
9
+ * lowering rather than two spellings of it.
10
+ */
11
+ import type { Expression } from "@velarscript/compiler/extension";
12
+ import { type LookStaticValue } from "../look-static.ts";
13
+ export interface LookStaticAtom {
14
+ readonly kind: "hook" | "media" | "scheme" | "motion";
15
+ readonly name: string;
16
+ readonly operator?: "<" | "<=" | ">" | ">=";
17
+ readonly value?: string;
18
+ readonly negated: boolean;
19
+ }
20
+ export interface LookRuntimeAtom {
21
+ readonly expression: Expression;
22
+ readonly negated: boolean;
23
+ }
24
+ export interface LookConditionTerm {
25
+ readonly staticAtoms: readonly LookStaticAtom[];
26
+ readonly runtimeAtoms: readonly LookRuntimeAtom[];
27
+ }
28
+ export interface LookRule {
29
+ readonly token: string;
30
+ readonly property: string;
31
+ readonly target: string;
32
+ readonly staticAtoms: readonly LookStaticAtom[];
33
+ /** Declaration order of the token's first appearance, the last tie-break. */
34
+ readonly sequence: number;
35
+ }
36
+ export declare const EMPTY_LOOK_TERM: LookConditionTerm;
37
+ export declare function lookConditionTerms(expression: Expression, negated?: boolean, staticValues?: ReadonlyMap<string, LookStaticValue>): readonly LookConditionTerm[];
38
+ export declare function combineLookTerms(left: readonly LookConditionTerm[], right: readonly LookConditionTerm[]): readonly LookConditionTerm[];
39
+ export declare function lookToken(atoms: readonly LookStaticAtom[], target: string, property: string): string;
40
+ export declare function lookConditionDepth(atoms: readonly LookStaticAtom[]): number;
41
+ export declare function lookDeclaration(token: string, property: string): string;
42
+ export declare function lookMediaQuery(atom: LookStaticAtom): string;
43
+ export declare function lookSelectors(base: string, atoms: readonly LookStaticAtom[], target: string): readonly string[];
44
+ //# sourceMappingURL=look-css.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"look-css.d.ts","sourceRoot":"","sources":["../../src/emit/look-css.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAElE,OAAO,EAA+C,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGtG,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACtD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC;IAC5C,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,WAAW,EAAE,SAAS,cAAc,EAAE,CAAC;IAChD,QAAQ,CAAC,YAAY,EAAE,SAAS,eAAe,EAAE,CAAC;CACnD;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,SAAS,cAAc,EAAE,CAAC;IAChD,6EAA6E;IAC7E,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,eAAO,MAAM,eAAe,EAAE,iBAAwE,CAAC;AAGvG,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,UAAU,EACtB,OAAO,UAAQ,EACf,YAAY,GAAE,WAAW,CAAC,MAAM,EAAE,eAAe,CAAa,GAC7D,SAAS,iBAAiB,EAAE,CAc9B;AA4CD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,SAAS,iBAAiB,EAAE,EAAE,KAAK,EAAE,SAAS,iBAAiB,EAAE,GAAG,SAAS,iBAAiB,EAAE,CAYtI;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,SAAS,cAAc,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CASpG;AAsBD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,cAAc,EAAE,GAAG,MAAM,CAM3E;AAMD,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGvE;AAMD,wBAAgB,cAAc,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAI3D;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,cAAc,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAa/G"}
@@ -0,0 +1,177 @@
1
+ import { LOOK_MEDIA_LENGTH_UNITS } from "../look.js";
2
+ import { evaluateLookStaticExpression, lookStaticCss } from "../look-static.js";
3
+ import { isWebExpression } from "../ast.js";
4
+ export const EMPTY_LOOK_TERM = Object.freeze({ staticAtoms: [], runtimeAtoms: [] });
5
+ const LOOK_CONDITION_TERM_LIMIT = 32;
6
+ export function lookConditionTerms(expression, negated = false, staticValues = new Map()) {
7
+ if (expression.kind === "UnaryExpression" && expression.operator === "not")
8
+ return lookConditionTerms(expression.operand, !negated, staticValues);
9
+ if (expression.kind === "BinaryExpression" && (expression.operator === "and" || expression.operator === "or")) {
10
+ const conjunction = (expression.operator === "and") !== negated;
11
+ const left = lookConditionTerms(expression.left, negated, staticValues);
12
+ const right = lookConditionTerms(expression.right, negated, staticValues);
13
+ return conjunction ? combineLookTerms(left, right) : [...left, ...right].slice(0, LOOK_CONDITION_TERM_LIMIT);
14
+ }
15
+ if (isWebExpression(expression) && expression.kind === "ExtensionExpression:web:look-hook") {
16
+ return [{ staticAtoms: [{ kind: "hook", name: expression.name, negated }], runtimeAtoms: [] }];
17
+ }
18
+ const media = viewportAtom(expression, negated, staticValues) ?? schemeAtom(expression, negated);
19
+ if (media)
20
+ return [{ staticAtoms: [media], runtimeAtoms: [] }];
21
+ return [{ staticAtoms: [], runtimeAtoms: [{ expression, negated }] }];
22
+ }
23
+ // A breakpoint is complementary the way the schemes and the motion preference
24
+ // are: `not (width <= X)` is `width > X`, one condition with one media query.
25
+ // The atom therefore folds the negation into its operator at construction, so
26
+ // the two spellings reach `lookToken` as the same token instead of as two
27
+ // rules that tie on specificity and are separated by source order.
28
+ const LOOK_NEGATED_MEDIA_OPERATORS = new Map([
29
+ ["<", ">="], ["<=", ">"], [">", "<="], [">=", "<"],
30
+ ]);
31
+ function viewportAtom(expression, negated, staticValues) {
32
+ if (expression.kind !== "BinaryExpression" || !["<", "<=", ">", ">="].includes(expression.operator))
33
+ return null;
34
+ if (expression.left.kind !== "MemberExpression" || expression.left.object.kind !== "IdentifierExpression" || expression.left.object.name !== "viewport")
35
+ return null;
36
+ if (expression.left.property !== "width" && expression.left.property !== "height")
37
+ return null;
38
+ const threshold = evaluateLookStaticExpression(expression.right, staticValues);
39
+ if (threshold?.kind !== "unit" || !LOOK_MEDIA_LENGTH_UNITS.has(threshold.unit))
40
+ return null;
41
+ const written = expression.operator;
42
+ return {
43
+ kind: "media",
44
+ name: expression.left.property,
45
+ operator: negated ? LOOK_NEGATED_MEDIA_OPERATORS.get(written) : written,
46
+ value: lookStaticCss(threshold),
47
+ negated: false,
48
+ };
49
+ }
50
+ // 'scheme.dark' / 'scheme.light' lower to prefers-color-scheme media atoms.
51
+ // The two subjects are complementary, so negation flips to the other scheme
52
+ // and the atom itself stays canonical.
53
+ function schemeAtom(expression, negated) {
54
+ if (expression.kind !== "MemberExpression" || expression.object.kind !== "IdentifierExpression")
55
+ return null;
56
+ // LOK-U3: 'motion.reduced' joins the media subjects. prefers-reduced-motion is
57
+ // complementary in the same way the schemes are, so negation names the other
58
+ // side of the query rather than wrapping it.
59
+ if (expression.object.name === "motion") {
60
+ return expression.property === "reduced" ? { kind: "motion", name: negated ? "no-preference" : "reduce", negated: false } : null;
61
+ }
62
+ if (expression.object.name !== "scheme")
63
+ return null;
64
+ if (expression.property !== "dark" && expression.property !== "light")
65
+ return null;
66
+ const scheme = negated ? (expression.property === "dark" ? "light" : "dark") : expression.property;
67
+ return { kind: "scheme", name: scheme, negated: false };
68
+ }
69
+ export function combineLookTerms(left, right) {
70
+ const combined = [];
71
+ for (const first of left) {
72
+ for (const second of right) {
73
+ combined.push({
74
+ staticAtoms: [...first.staticAtoms, ...second.staticAtoms],
75
+ runtimeAtoms: [...first.runtimeAtoms, ...second.runtimeAtoms],
76
+ });
77
+ if (combined.length >= LOOK_CONDITION_TERM_LIMIT)
78
+ return combined;
79
+ }
80
+ }
81
+ return combined;
82
+ }
83
+ export function lookToken(atoms, target, property) {
84
+ const conditions = atoms.map((atom) => {
85
+ if (atom.kind === "hook")
86
+ return `${atom.negated ? "not-" : ""}${kebab(atom.name)}`;
87
+ if (atom.kind === "scheme")
88
+ return `scheme-${atom.name}`;
89
+ if (atom.kind === "motion")
90
+ return `motion-${atom.name}`;
91
+ return `viewport-${atom.name}-${lookOperatorName(atom.operator)}-${atom.value}`;
92
+ }).sort();
93
+ const prefix = [target ? kebab(target) : "", conditions.length > 0 ? conditions.join("+") : "base"].filter(Boolean).join(":");
94
+ return `${prefix}:${property}`;
95
+ }
96
+ /**
97
+ * How many extra `[data-velar-look]` selectors a rule carries, so that the
98
+ * winner between two Look rules is decided by the conditions they name rather
99
+ * than by their position in the sheet.
100
+ *
101
+ * The bump used to be a single flat `+1` for any non-empty condition set, which
102
+ * made every conditional rule specificity `(0,2,0)`: a state rule tied with a
103
+ * media rule, and a two-condition refinement tied with the one-condition
104
+ * fallback it refines. Ties then fell through to source order, and source order
105
+ * is per-module concatenation order, which the CLI sorts by filename — so the
106
+ * rendered colour could change when a file was renamed (LOK-U8, LOK-U10,
107
+ * LOK-U12).
108
+ *
109
+ * The rank is base < media < state < media+state, and within a rank a rule that
110
+ * names more conditions outranks one that names fewer. The per-rank span is
111
+ * bounded so a pathological condition count cannot cross a rank boundary; rules
112
+ * that saturate it fall back to declaration order, which is stable.
113
+ */
114
+ const LOOK_RANK_SPAN = 3;
115
+ export function lookConditionDepth(atoms) {
116
+ if (atoms.length === 0)
117
+ return 0;
118
+ const hooks = atoms.filter((atom) => atom.kind === "hook").length;
119
+ const media = atoms.length - hooks;
120
+ const rank = hooks > 0 ? (media > 0 ? 2 : 1) : 0;
121
+ return rank * LOOK_RANK_SPAN + Math.min(atoms.length, LOOK_RANK_SPAN);
122
+ }
123
+ function lookVariable(token) {
124
+ return `--velar-look-${token.replace(/[^A-Za-z0-9_-]+/gu, "-")}`;
125
+ }
126
+ export function lookDeclaration(token, property) {
127
+ const value = `var(${lookVariable(token)})`;
128
+ return `${property}:${value}`;
129
+ }
130
+ function lookOperatorName(operator) {
131
+ return operator === "<" ? "lt" : operator === "<=" ? "lte" : operator === ">" ? "gt" : "gte";
132
+ }
133
+ export function lookMediaQuery(atom) {
134
+ if (atom.kind === "scheme")
135
+ return `(prefers-color-scheme: ${atom.name})`;
136
+ if (atom.kind === "motion")
137
+ return `(prefers-reduced-motion: ${atom.name})`;
138
+ return `(${atom.name} ${atom.operator} ${atom.value})`;
139
+ }
140
+ export function lookSelectors(base, atoms, target) {
141
+ let selectors = [base];
142
+ for (const atom of atoms) {
143
+ const states = lookHookSelectors(atom.name);
144
+ if (atom.negated) {
145
+ const condition = states.map((state) => `:not(${state})`).join("");
146
+ selectors = selectors.map((selector) => `${selector}:where(${condition})`);
147
+ }
148
+ else {
149
+ selectors = selectors.flatMap((selector) => states.map((state) => `${selector}:where(${state})`));
150
+ }
151
+ }
152
+ const suffix = target ? LOOK_TARGET_SELECTORS.get(target) ?? `::${kebab(target)}` : "";
153
+ return selectors.map((selector) => `${selector}${suffix}`);
154
+ }
155
+ function lookHookSelectors(name) {
156
+ if (name === "focusVisible")
157
+ return [":focus-visible"];
158
+ if (name === "current")
159
+ return ["[aria-current=\"page\"]"];
160
+ if (name === "disabled")
161
+ return [":disabled", "[aria-disabled=\"true\"]"];
162
+ if (name === "checked")
163
+ return [":checked", "[aria-checked=\"true\"]"];
164
+ if (name === "invalid")
165
+ return [":invalid", "[aria-invalid=\"true\"]"];
166
+ if (name === "open")
167
+ return [":open", "[open]", "[aria-expanded=\"true\"]"];
168
+ return [`:${kebab(name)}`];
169
+ }
170
+ const LOOK_TARGET_SELECTORS = new Map([
171
+ ["before", "::before"], ["after", "::after"], ["backdrop", "::backdrop"], ["placeholder", "::placeholder"], ["selection", "::selection"],
172
+ ["marker", "::marker"], ["fileSelectorButton", "::file-selector-button"],
173
+ ]);
174
+ function kebab(value) {
175
+ return value.replace(/[A-Z]/gu, (character) => `-${character.toLowerCase()}`);
176
+ }
177
+ //# sourceMappingURL=look-css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"look-css.js","sourceRoot":"","sources":["../../src/emit/look-css.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * What a module's `look:` values become: the runtime value a `look:` expression
3
+ * evaluates to, and the stylesheet the module ships beside its JavaScript.
4
+ *
5
+ * D115 P4 R3d: the family owns both halves because they are one lowering read
6
+ * twice — `emitLook` writes the token a rule is addressed by, and `prepareLooks`
7
+ * writes the rule that token selects. `emit/look-css.ts` holds the token itself,
8
+ * so neither half can drift from the other.
9
+ */
10
+ import type { CompilerStyleSegments, Expression, Program } from "@velarscript/compiler/extension";
11
+ import { type WebLookExpression as LookExpression } from "../ast.ts";
12
+ import { type LookStaticValue } from "../look-static.ts";
13
+ /**
14
+ * What Look emission reads and writes on the emitter. `lookStaticValues`,
15
+ * `cssSegments` and `cssOutput` are live: `prepareLooks` assigns them and the
16
+ * emitter's `css()` / `styleSegments()` answer with what it assigned.
17
+ */
18
+ export interface LookEmitHost {
19
+ cssOutput: string;
20
+ cssSegments: CompilerStyleSegments;
21
+ readonly importedLookStaticValues: ReadonlyMap<string, LookStaticValue>;
22
+ readonly keyframeNames: Map<string, string>;
23
+ readonly lookKeywordProperties: Set<string>;
24
+ lookStaticValues: ReadonlyMap<string, LookStaticValue>;
25
+ readonly resourceContents: ReadonlyMap<string, string>;
26
+ emitCondition(expression: Expression): string;
27
+ emitMappedExpression(expression: Expression): string;
28
+ }
29
+ export declare function emitLook(host: LookEmitHost, expression: LookExpression): string;
30
+ export declare function emitLookArithmetic(host: LookEmitHost, expression: Extract<Expression, {
31
+ readonly kind: "BinaryExpression";
32
+ }>): string;
33
+ /**
34
+ * The module's Look state, prepared before a single statement is emitted: the
35
+ * static values a condition may fold against, the stylesheet, and the keyframe
36
+ * name every `keyframes:` expression will be emitted as.
37
+ */
38
+ export declare function prepareLooks(host: LookEmitHost, program: Program): void;
39
+ //# sourceMappingURL=look.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"look.d.ts","sourceRoot":"","sources":["../../src/emit/look.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,qBAAqB,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAC;AAElG,OAAO,EAKL,KAAK,iBAAiB,IAAI,cAAc,EACzC,MAAM,WAAW,CAAC;AAGnB,OAAO,EAA2B,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAgBlF;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,qBAAqB,CAAC;IACnC,QAAQ,CAAC,wBAAwB,EAAE,WAAW,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACxE,QAAQ,CAAC,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5C,QAAQ,CAAC,qBAAqB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5C,gBAAgB,EAAE,WAAW,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACvD,QAAQ,CAAC,gBAAgB,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvD,aAAa,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAAC;IAC9C,oBAAoB,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAAC;CACtD;AAcD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,GAAG,MAAM,CAE/E;AAsCD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAA;CAAE,CAAC,GAAG,MAAM,CAErI;AAkJD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAYvE"}
@@ -0,0 +1,218 @@
1
+ import { spanIdentity } from "@velarscript/compiler/extension";
2
+ import { isWebStatement, } from "../ast.js";
3
+ import { isCssDeclarationValue } from "../css-tokens.js";
4
+ import { keyframeCssValue, keyframesCanonical, keyframesName } from "../keyframes.js";
5
+ import { collectLookStaticValues } from "../look-static.js";
6
+ import { cssPropertyName, LOOK_PROPERTIES, LOOK_PROPERTY_VALUE_KINDS } from "../look.js";
7
+ import { combineLookTerms, EMPTY_LOOK_TERM, lookConditionDepth, lookConditionTerms, lookDeclaration, lookMediaQuery, lookSelectors, lookToken, } from "./look-css.js";
8
+ export function emitLook(host, expression) {
9
+ return `__velarLook([${emitLookEntries(host, expression.entries, [EMPTY_LOOK_TERM], "").join(", ")}])`;
10
+ }
11
+ function emitLookEntries(host, entries, contexts, target) {
12
+ const parts = [];
13
+ for (const entry of entries) {
14
+ if (entry.kind === "LookSpread") {
15
+ parts.push(host.emitMappedExpression(entry.value));
16
+ continue;
17
+ }
18
+ if (entry.kind === "LookIf") {
19
+ const thenContexts = combineLookTerms(contexts, lookConditionTerms(entry.condition, false, host.lookStaticValues));
20
+ const elseContexts = combineLookTerms(contexts, lookConditionTerms(entry.condition, true, host.lookStaticValues));
21
+ parts.push(...emitLookEntries(host, entry.thenEntries, thenContexts, target));
22
+ parts.push(...emitLookEntries(host, entry.elseEntries, elseContexts, target));
23
+ continue;
24
+ }
25
+ if (entry.kind === "LookTarget") {
26
+ parts.push(...emitLookEntries(host, entry.entries, contexts, entry.name));
27
+ continue;
28
+ }
29
+ const property = cssPropertyName(entry.name);
30
+ for (const context of contexts) {
31
+ const token = lookToken(context.staticAtoms, target, property);
32
+ const rule = `{ rules: { ${JSON.stringify(token)}: ${emitLookValue(host, entry.value)} } }`;
33
+ const runtime = context.runtimeAtoms.map((atom) => {
34
+ const value = host.emitCondition(atom.expression);
35
+ return atom.negated ? `!(${value})` : `(${value})`;
36
+ }).join(" && ");
37
+ parts.push(runtime ? `(${runtime} ? ${rule} : null)` : rule);
38
+ }
39
+ }
40
+ return parts;
41
+ }
42
+ function emitLookValue(host, expression) {
43
+ return host.emitMappedExpression(expression);
44
+ }
45
+ export function emitLookArithmetic(host, expression) {
46
+ return `__velarLookMath(${JSON.stringify(expression.operator)}, ${host.emitMappedExpression(expression.left)}, ${host.emitMappedExpression(expression.right)})`;
47
+ }
48
+ /**
49
+ * Every Look rule and `@keyframes` block this module declares, in one walk of
50
+ * the program. The walk also records the two facts later phases need: the
51
+ * generated name each `keyframes:` expression compiles to, and the closed
52
+ * keyword sets the runtime guard has to carry.
53
+ */
54
+ function collectLookRules(host, program) {
55
+ const rules = new Map();
56
+ const keyframeRules = new Map();
57
+ const keyframeCanonicals = new Map();
58
+ host.keyframeNames.clear();
59
+ host.lookKeywordProperties.clear();
60
+ // A token's stylesheet position used to be wherever it first appeared
61
+ // anywhere in the module, because a Map keeps first-insertion order. The
62
+ // sequence records that first appearance explicitly so emission can sort by
63
+ // condition rank first and fall back to declaration order, rather than
64
+ // letting an unrelated earlier look decide a later one's winner (LOK-U8).
65
+ let sequence = 0;
66
+ const addRule = (token, property, target, staticAtoms) => {
67
+ if (rules.has(token))
68
+ return;
69
+ rules.set(token, { token, property, target, staticAtoms, sequence: sequence += 1 });
70
+ };
71
+ const noteKeywordProperty = (name) => {
72
+ if (LOOK_PROPERTY_VALUE_KINDS.get(name) === "keyword")
73
+ host.lookKeywordProperties.add(name);
74
+ };
75
+ const visit = (value) => {
76
+ if (!value || typeof value !== "object")
77
+ return;
78
+ const record = value;
79
+ if (record.kind === "ExtensionExpression:web:jsx") {
80
+ const element = record;
81
+ for (const attribute of element.attributes) {
82
+ if (!attribute.name.startsWith("look:") && !attribute.name.startsWith("style:"))
83
+ continue;
84
+ const name = attribute.name.slice(attribute.name.indexOf(":") + 1);
85
+ if (!LOOK_PROPERTIES.has(name))
86
+ continue;
87
+ noteKeywordProperty(name);
88
+ if (!attribute.name.startsWith("look:"))
89
+ continue;
90
+ const property = cssPropertyName(name);
91
+ addRule(lookToken([], "", property), property, "", []);
92
+ }
93
+ }
94
+ if (record.kind === "ExtensionExpression:web:look") {
95
+ const collect = (entries, contexts = [EMPTY_LOOK_TERM], target = "") => {
96
+ for (const entry of entries) {
97
+ if (entry.kind === "LookProperty") {
98
+ const property = cssPropertyName(entry.name);
99
+ noteKeywordProperty(entry.name);
100
+ for (const context of contexts) {
101
+ addRule(lookToken(context.staticAtoms, target, property), property, target, context.staticAtoms);
102
+ }
103
+ }
104
+ else if (entry.kind === "LookIf") {
105
+ collect(entry.thenEntries, combineLookTerms(contexts, lookConditionTerms(entry.condition, false, host.lookStaticValues)), target);
106
+ collect(entry.elseEntries, combineLookTerms(contexts, lookConditionTerms(entry.condition, true, host.lookStaticValues)), target);
107
+ }
108
+ else if (entry.kind === "LookTarget") {
109
+ collect(entry.entries, contexts, entry.name);
110
+ }
111
+ }
112
+ };
113
+ collect(record.entries);
114
+ }
115
+ if (record.kind === "ExtensionExpression:web:keyframes") {
116
+ const expression = record;
117
+ const canonical = keyframesCanonical(expression, host.lookStaticValues);
118
+ const name = keyframesName(canonical);
119
+ host.keyframeNames.set(spanIdentity(expression.span), name);
120
+ const reused = keyframeCanonicals.get(name);
121
+ // The name is a promise that equal structures share one rule. Reusing
122
+ // it for a structure that is not equal would make one animation play
123
+ // another's motion, so the reuse path proves the identity rather than
124
+ // trusting the digest (LOK-U11).
125
+ if (reused !== undefined && reused !== canonical) {
126
+ throw new Error(`Generated keyframes name ${name} collides between two different keyframe structures`);
127
+ }
128
+ if (reused === undefined) {
129
+ keyframeCanonicals.set(name, canonical);
130
+ const stops = [...expression.stops]
131
+ .sort((left, right) => Math.min(...left.offsets) - Math.min(...right.offsets))
132
+ .map((stop) => {
133
+ const selectors = [...stop.offsets].sort((left, right) => left - right)
134
+ .map((offset) => offset === 0 ? "from" : offset === 100 ? "to" : `${offset}%`)
135
+ .join(",");
136
+ const declarations = stop.entries.map((entry) => {
137
+ const css = keyframeCssValue(entry.value, host.lookStaticValues);
138
+ // A value the lowering could not prove is one balanced
139
+ // declaration never reaches the concatenation: `}` in a stop
140
+ // closed the at-rule and turned the rest into author-owned CSS
141
+ // in the compiler-owned segment (LOK-U9). The analyzer already
142
+ // reports the same null as a diagnostic, so emission only has
143
+ // to stay structurally incapable of writing the escape.
144
+ return css === null || !isCssDeclarationValue(css) ? "" : `${cssPropertyName(entry.name)}:${css}`;
145
+ }).filter(Boolean).join(";");
146
+ return `${selectors}{${declarations}}`;
147
+ }).join("");
148
+ keyframeRules.set(name, `@keyframes ${name}{${stops}}`);
149
+ }
150
+ }
151
+ for (const child of Object.values(record)) {
152
+ if (Array.isArray(child))
153
+ child.forEach(visit);
154
+ else
155
+ visit(child);
156
+ }
157
+ };
158
+ visit(program);
159
+ return { rules, keyframeRules };
160
+ }
161
+ /**
162
+ * The compiler-owned half of the stylesheet: one CSS rule per Look token, in
163
+ * the order the cascade has to read them.
164
+ */
165
+ function lookRuleCss(rules) {
166
+ return [...rules.values()]
167
+ .map((rule) => ({ rule, depth: lookConditionDepth(rule.staticAtoms) }))
168
+ // Rank decides, and declaration order only separates rules that share a
169
+ // rank. Emission used to follow the Map, so the sheet's byte order — and
170
+ // through it the per-module concatenation order the CLI sorts by
171
+ // filename — could pick the winner of a tie (LOK-U8, LOK-U10).
172
+ .sort((left, right) => left.depth - right.depth || left.rule.sequence - right.rule.sequence)
173
+ .map(({ rule, depth }) => {
174
+ const hookAtoms = rule.staticAtoms.filter((atom) => atom.kind === "hook");
175
+ const mediaAtoms = rule.staticAtoms.filter((atom) => atom.kind === "media" || atom.kind === "scheme" || atom.kind === "motion");
176
+ const base = `[data-velar-look~=${JSON.stringify(rule.token)}]${"[data-velar-look]".repeat(depth)}`;
177
+ const selectors = lookSelectors(base, hookAtoms, rule.target);
178
+ const css = `${selectors.join(",")}{${lookDeclaration(rule.token, rule.property)}}`;
179
+ const query = mediaAtoms.map(lookMediaQuery).join(" and ");
180
+ return query ? `@media ${query}{${css}}` : css;
181
+ });
182
+ }
183
+ /**
184
+ * The author-owned CSS either side of the compiler's own, in declaration order.
185
+ */
186
+ function unsafeCssSegments(host, program) {
187
+ const before = [];
188
+ const after = [];
189
+ for (const statement of program.body) {
190
+ if (!isWebStatement(statement) || statement.kind !== "ExtensionStatement:web:unsafe-css")
191
+ continue;
192
+ const source = statement.source.kind === "inline"
193
+ ? statement.source.css
194
+ : host.resourceContents.get(statement.source.path) ?? "";
195
+ (statement.placement === "after" ? after : before).push(source.trim());
196
+ }
197
+ return { before: before.filter(Boolean).join("\n\n"), after: after.filter(Boolean).join("\n\n") };
198
+ }
199
+ /**
200
+ * The module's Look state, prepared before a single statement is emitted: the
201
+ * static values a condition may fold against, the stylesheet, and the keyframe
202
+ * name every `keyframes:` expression will be emitted as.
203
+ */
204
+ export function prepareLooks(host, program) {
205
+ host.lookStaticValues = collectLookStaticValues(program, host.importedLookStaticValues);
206
+ const { rules, keyframeRules } = collectLookRules(host, program);
207
+ const lookCss = lookRuleCss(rules);
208
+ const unsafe = unsafeCssSegments(host, program);
209
+ host.cssSegments = {
210
+ before: unsafe.before,
211
+ controlled: [...keyframeRules.values(), ...lookCss].filter(Boolean).join("\n\n"),
212
+ after: unsafe.after,
213
+ };
214
+ host.cssOutput = [host.cssSegments.before, host.cssSegments.controlled, host.cssSegments.after].filter(Boolean).join("\n\n");
215
+ if (host.cssOutput)
216
+ host.cssOutput += "\n";
217
+ }
218
+ //# sourceMappingURL=look.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"look.js","sourceRoot":"","sources":["../../src/emit/look.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Which runtime a Web program carries, and which of the compiler's own helpers
3
+ * a Web lowering replaces.
4
+ *
5
+ * D115 P4 R3d: every one of these is a seam `JavaScriptEmitter` already asks
6
+ * about — "does this module need the file-type helper", "what does an `is`
7
+ * check on `Element` compile to" — so the family answers for Web and leaves the
8
+ * base's answer to the host, which is the one thing a collaborator cannot call
9
+ * for itself.
10
+ */
11
+ import type { Expression, ValueType } from "@velarscript/compiler/extension";
12
+ import { type WebLookEntry as LookEntry } from "../ast.ts";
13
+ /**
14
+ * What runtime-import selection reads on the emitter, plus the four base-class
15
+ * answers a collaborator has no `super` of its own to ask for. `webOutput` and
16
+ * the two `needs…` flags are live: `emitTypeCheck` sets one while statements
17
+ * are still being emitted, and `additionalHelpers` reads it afterwards.
18
+ */
19
+ export interface RuntimeImportHost {
20
+ readonly lookKeywordProperties: ReadonlySet<string>;
21
+ needsFileTypeHelper: boolean;
22
+ readonly needsLookArithmeticRuntime: boolean;
23
+ readonly webOutput: boolean;
24
+ baseDetachedTaskHelpers(): readonly string[];
25
+ baseIsCheck(type: ValueType, value: string): string;
26
+ baseReactiveBridgeHelpers(needsJavaScriptCallBoundary: boolean, needsCollections: boolean, usedIdentifiers: ReadonlySet<string>): readonly string[];
27
+ baseTypeCheck(type: ValueType, value: string, state: string): string;
28
+ requireRuntimeModule(source: string): void;
29
+ usesSharedRuntimeModules(): boolean;
30
+ }
31
+ export declare function emitTypeCheck(host: RuntimeImportHost, type: ValueType, value: string, state: string): string;
32
+ export declare function emitIsCheck(host: RuntimeImportHost, type: ValueType, value: string): string;
33
+ export declare function additionalHelpers(host: RuntimeImportHost): readonly string[];
34
+ export declare function reactiveBridgeHelpers(host: RuntimeImportHost, needsJavaScriptCallBoundary: boolean, needsCollections: boolean, usedIdentifiers: ReadonlySet<string>): readonly string[];
35
+ export declare function includesErrorNormalizationRuntime(host: RuntimeImportHost): boolean;
36
+ export declare function detachedTaskHelpers(host: RuntimeImportHost): readonly string[];
37
+ export declare function visitLookExpressions(entries: readonly LookEntry[], visit: (expression: Expression) => void): void;
38
+ export declare function containsUnitLiteral(value: unknown): boolean;
39
+ export declare function containsWebSyntax(value: unknown): boolean;
40
+ //# sourceMappingURL=runtime-imports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-imports.d.ts","sourceRoot":"","sources":["../../src/emit/runtime-imports.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAE7E,OAAO,EAAE,KAAK,YAAY,IAAI,SAAS,EAAE,MAAM,WAAW,CAAC;AAQ3D;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,qBAAqB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACpD,mBAAmB,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,0BAA0B,EAAE,OAAO,CAAC;IAC7C,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,uBAAuB,IAAI,SAAS,MAAM,EAAE,CAAC;IAC7C,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACpD,yBAAyB,CACvB,2BAA2B,EAAE,OAAO,EACpC,gBAAgB,EAAE,OAAO,EACzB,eAAe,EAAE,WAAW,CAAC,MAAM,CAAC,GACnC,SAAS,MAAM,EAAE,CAAC;IACrB,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACrE,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C,wBAAwB,IAAI,OAAO,CAAC;CACrC;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAmB5G;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAiB3F;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,iBAAiB,GAAG,SAAS,MAAM,EAAE,CAM5E;AAyBD,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,iBAAiB,EACvB,2BAA2B,EAAE,OAAO,EACpC,gBAAgB,EAAE,OAAO,EACzB,eAAe,EAAE,WAAW,CAAC,MAAM,CAAC,GACnC,SAAS,MAAM,EAAE,CAKnB;AAED,wBAAgB,iCAAiC,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAElF;AASD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,iBAAiB,GAAG,SAAS,MAAM,EAAE,CAoC9E;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,IAAI,GAAG,IAAI,CASjH;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAU3D;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAOzD"}