@velarscript/web 0.31.0 → 0.33.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 (393) 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 +16 -0
  19. package/dist/analysis/calls/intrinsics/storage.d.ts.map +1 -0
  20. package/dist/analysis/calls/intrinsics/storage.js +91 -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 +75 -0
  55. package/dist/analysis/inference.d.ts.map +1 -0
  56. package/dist/analysis/inference.js +257 -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 +174 -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 +36 -0
  99. package/dist/analysis/look/edits.d.ts.map +1 -0
  100. package/dist/analysis/look/edits.js +80 -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 +156 -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 +62 -0
  123. package/dist/analysis/look-sites.d.ts.map +1 -0
  124. package/dist/analysis/look-sites.js +121 -0
  125. package/dist/analysis/look-sites.js.map +1 -0
  126. package/dist/analysis/look-values.d.ts +19 -0
  127. package/dist/analysis/look-values.d.ts.map +1 -1
  128. package/dist/analysis/look-values.js +38 -0
  129. package/dist/analysis/look-values.js.map +1 -1
  130. package/dist/analysis/look-vocabulary-guidance.d.ts +76 -0
  131. package/dist/analysis/look-vocabulary-guidance.d.ts.map +1 -0
  132. package/dist/analysis/look-vocabulary-guidance.js +338 -0
  133. package/dist/analysis/look-vocabulary-guidance.js.map +1 -0
  134. package/dist/analysis/media-conditions.d.ts +33 -0
  135. package/dist/analysis/media-conditions.d.ts.map +1 -0
  136. package/dist/analysis/media-conditions.js +92 -0
  137. package/dist/analysis/media-conditions.js.map +1 -0
  138. package/dist/analysis/program-passes.d.ts +106 -0
  139. package/dist/analysis/program-passes.d.ts.map +1 -0
  140. package/dist/analysis/program-passes.js +149 -0
  141. package/dist/analysis/program-passes.js.map +1 -0
  142. package/dist/analysis/reactivity/bindings.d.ts +37 -0
  143. package/dist/analysis/reactivity/bindings.d.ts.map +1 -0
  144. package/dist/analysis/reactivity/bindings.js +88 -0
  145. package/dist/analysis/reactivity/bindings.js.map +1 -0
  146. package/dist/analysis/reactivity/derived.d.ts +39 -0
  147. package/dist/analysis/reactivity/derived.d.ts.map +1 -0
  148. package/dist/analysis/reactivity/derived.js +80 -0
  149. package/dist/analysis/reactivity/derived.js.map +1 -0
  150. package/dist/analysis/reactivity/host.d.ts +38 -0
  151. package/dist/analysis/reactivity/host.d.ts.map +1 -0
  152. package/dist/analysis/reactivity/host.js +14 -0
  153. package/dist/analysis/reactivity/host.js.map +1 -0
  154. package/dist/analysis/reactivity/retired-accessors.d.ts +82 -0
  155. package/dist/analysis/reactivity/retired-accessors.d.ts.map +1 -0
  156. package/dist/analysis/reactivity/retired-accessors.js +118 -0
  157. package/dist/analysis/reactivity/retired-accessors.js.map +1 -0
  158. package/dist/analysis/renderable.d.ts +47 -0
  159. package/dist/analysis/renderable.d.ts.map +1 -0
  160. package/dist/analysis/renderable.js +105 -0
  161. package/dist/analysis/renderable.js.map +1 -0
  162. package/dist/analysis/routes.d.ts +64 -0
  163. package/dist/analysis/routes.d.ts.map +1 -0
  164. package/dist/analysis/routes.js +182 -0
  165. package/dist/analysis/routes.js.map +1 -0
  166. package/dist/analysis/url-attributes.d.ts +12 -0
  167. package/dist/analysis/url-attributes.d.ts.map +1 -0
  168. package/dist/analysis/url-attributes.js +48 -0
  169. package/dist/analysis/url-attributes.js.map +1 -0
  170. package/dist/analysis/watch-cycles.d.ts +102 -0
  171. package/dist/analysis/watch-cycles.d.ts.map +1 -1
  172. package/dist/analysis/watch-cycles.js +240 -1
  173. package/dist/analysis/watch-cycles.js.map +1 -1
  174. package/dist/analysis/watch-subject.d.ts +45 -0
  175. package/dist/analysis/watch-subject.d.ts.map +1 -0
  176. package/dist/analysis/watch-subject.js +272 -0
  177. package/dist/analysis/watch-subject.js.map +1 -0
  178. package/dist/analysis/web-types.d.ts +27 -0
  179. package/dist/analysis/web-types.d.ts.map +1 -0
  180. package/dist/analysis/web-types.js +170 -0
  181. package/dist/analysis/web-types.js.map +1 -0
  182. package/dist/analyzer.d.ts +18 -617
  183. package/dist/analyzer.d.ts.map +1 -1
  184. package/dist/analyzer.js +211 -4853
  185. package/dist/analyzer.js.map +1 -1
  186. package/dist/compiler.d.ts +20 -0
  187. package/dist/compiler.d.ts.map +1 -1
  188. package/dist/compiler.js +31 -864
  189. package/dist/compiler.js.map +1 -1
  190. package/dist/documentation.d.ts +28 -0
  191. package/dist/documentation.d.ts.map +1 -0
  192. package/dist/documentation.js +67 -0
  193. package/dist/documentation.js.map +1 -0
  194. package/dist/editor/completions.d.ts +12 -0
  195. package/dist/editor/completions.d.ts.map +1 -0
  196. package/dist/editor/completions.js +6 -0
  197. package/dist/editor/completions.js.map +1 -0
  198. package/dist/editor/jsx-completion.d.ts +12 -0
  199. package/dist/editor/jsx-completion.d.ts.map +1 -0
  200. package/dist/editor/jsx-completion.js +137 -0
  201. package/dist/editor/jsx-completion.js.map +1 -0
  202. package/dist/editor/look-completion.d.ts +29 -0
  203. package/dist/editor/look-completion.d.ts.map +1 -0
  204. package/dist/editor/look-completion.js +159 -0
  205. package/dist/editor/look-completion.js.map +1 -0
  206. package/dist/editor.d.ts.map +1 -1
  207. package/dist/editor.js +12 -288
  208. package/dist/editor.js.map +1 -1
  209. package/dist/emit/components.d.ts +33 -0
  210. package/dist/emit/components.d.ts.map +1 -0
  211. package/dist/emit/components.js +135 -0
  212. package/dist/emit/components.js.map +1 -0
  213. package/dist/emit/jsx.d.ts +57 -0
  214. package/dist/emit/jsx.d.ts.map +1 -0
  215. package/dist/emit/jsx.js +384 -0
  216. package/dist/emit/jsx.js.map +1 -0
  217. package/dist/emit/look-css.d.ts +44 -0
  218. package/dist/emit/look-css.d.ts.map +1 -0
  219. package/dist/emit/look-css.js +177 -0
  220. package/dist/emit/look-css.js.map +1 -0
  221. package/dist/emit/look.d.ts +39 -0
  222. package/dist/emit/look.d.ts.map +1 -0
  223. package/dist/emit/look.js +218 -0
  224. package/dist/emit/look.js.map +1 -0
  225. package/dist/emit/runtime-imports.d.ts +40 -0
  226. package/dist/emit/runtime-imports.d.ts.map +1 -0
  227. package/dist/emit/runtime-imports.js +188 -0
  228. package/dist/emit/runtime-imports.js.map +1 -0
  229. package/dist/emitter.d.ts +15 -68
  230. package/dist/emitter.d.ts.map +1 -1
  231. package/dist/emitter.js +79 -1008
  232. package/dist/emitter.js.map +1 -1
  233. package/dist/look/animation.d.ts +7 -0
  234. package/dist/look/animation.d.ts.map +1 -0
  235. package/dist/look/animation.js +13 -0
  236. package/dist/look/animation.js.map +1 -0
  237. package/dist/look/builders.d.ts +35 -0
  238. package/dist/look/builders.d.ts.map +1 -0
  239. package/dist/look/builders.js +74 -0
  240. package/dist/look/builders.js.map +1 -0
  241. package/dist/look/css-functions.d.ts +28 -0
  242. package/dist/look/css-functions.d.ts.map +1 -0
  243. package/dist/look/css-functions.js +54 -0
  244. package/dist/look/css-functions.js.map +1 -0
  245. package/dist/look/keyword-sets.d.ts +41 -0
  246. package/dist/look/keyword-sets.d.ts.map +1 -0
  247. package/dist/look/keyword-sets.js +117 -0
  248. package/dist/look/keyword-sets.js.map +1 -0
  249. package/dist/look/keywords.d.ts +55 -0
  250. package/dist/look/keywords.d.ts.map +1 -0
  251. package/dist/look/keywords.js +387 -0
  252. package/dist/look/keywords.js.map +1 -0
  253. package/dist/look/media.d.ts +19 -0
  254. package/dist/look/media.d.ts.map +1 -0
  255. package/dist/look/media.js +27 -0
  256. package/dist/look/media.js.map +1 -0
  257. package/dist/look/naming.d.ts +9 -0
  258. package/dist/look/naming.d.ts.map +1 -0
  259. package/dist/look/naming.js +45 -0
  260. package/dist/look/naming.js.map +1 -0
  261. package/dist/look/properties.d.ts +16 -0
  262. package/dist/look/properties.d.ts.map +1 -0
  263. package/dist/look/properties.js +52 -0
  264. package/dist/look/properties.js.map +1 -0
  265. package/dist/look/shorthands.d.ts +25 -0
  266. package/dist/look/shorthands.d.ts.map +1 -0
  267. package/dist/look/shorthands.js +130 -0
  268. package/dist/look/shorthands.js.map +1 -0
  269. package/dist/look/tokens.d.ts +38 -0
  270. package/dist/look/tokens.d.ts.map +1 -0
  271. package/dist/look/tokens.js +59 -0
  272. package/dist/look/tokens.js.map +1 -0
  273. package/dist/look/units.d.ts +24 -0
  274. package/dist/look/units.d.ts.map +1 -0
  275. package/dist/look/units.js +33 -0
  276. package/dist/look/units.js.map +1 -0
  277. package/dist/look.d.ts +32 -227
  278. package/dist/look.d.ts.map +1 -1
  279. package/dist/look.js +28 -933
  280. package/dist/look.js.map +1 -1
  281. package/dist/module-roster.d.ts +16 -0
  282. package/dist/module-roster.d.ts.map +1 -0
  283. package/dist/module-roster.js +28 -0
  284. package/dist/module-roster.js.map +1 -0
  285. package/dist/modules/app.d.ts +9 -0
  286. package/dist/modules/app.d.ts.map +1 -0
  287. package/dist/modules/app.js +20 -0
  288. package/dist/modules/app.js.map +1 -0
  289. package/dist/modules/browser-test.d.ts +9 -0
  290. package/dist/modules/browser-test.d.ts.map +1 -0
  291. package/dist/modules/browser-test.js +67 -0
  292. package/dist/modules/browser-test.js.map +1 -0
  293. package/dist/modules/browser.d.ts +10 -0
  294. package/dist/modules/browser.d.ts.map +1 -0
  295. package/dist/modules/browser.js +89 -0
  296. package/dist/modules/browser.js.map +1 -0
  297. package/dist/modules/config.d.ts +9 -0
  298. package/dist/modules/config.d.ts.map +1 -0
  299. package/dist/modules/config.js +14 -0
  300. package/dist/modules/config.js.map +1 -0
  301. package/dist/modules/files.d.ts +9 -0
  302. package/dist/modules/files.d.ts.map +1 -0
  303. package/dist/modules/files.js +16 -0
  304. package/dist/modules/files.js.map +1 -0
  305. package/dist/modules/forms.d.ts +9 -0
  306. package/dist/modules/forms.d.ts.map +1 -0
  307. package/dist/modules/forms.js +26 -0
  308. package/dist/modules/forms.js.map +1 -0
  309. package/dist/modules/http.d.ts +9 -0
  310. package/dist/modules/http.d.ts.map +1 -0
  311. package/dist/modules/http.js +127 -0
  312. package/dist/modules/http.js.map +1 -0
  313. package/dist/modules/look.d.ts +9 -0
  314. package/dist/modules/look.d.ts.map +1 -0
  315. package/dist/modules/look.js +58 -0
  316. package/dist/modules/look.js.map +1 -0
  317. package/dist/modules/realtime.d.ts +9 -0
  318. package/dist/modules/realtime.d.ts.map +1 -0
  319. package/dist/modules/realtime.js +163 -0
  320. package/dist/modules/realtime.js.map +1 -0
  321. package/dist/modules/storage.d.ts +9 -0
  322. package/dist/modules/storage.d.ts.map +1 -0
  323. package/dist/modules/storage.js +59 -0
  324. package/dist/modules/storage.js.map +1 -0
  325. package/dist/modules/types.d.ts +78 -0
  326. package/dist/modules/types.d.ts.map +1 -0
  327. package/dist/modules/types.js +154 -0
  328. package/dist/modules/types.js.map +1 -0
  329. package/dist/modules/web.d.ts +9 -0
  330. package/dist/modules/web.d.ts.map +1 -0
  331. package/dist/modules/web.js +63 -0
  332. package/dist/modules/web.js.map +1 -0
  333. package/dist/modules/websocket.d.ts +11 -0
  334. package/dist/modules/websocket.d.ts.map +1 -0
  335. package/dist/modules/websocket.js +75 -0
  336. package/dist/modules/websocket.js.map +1 -0
  337. package/dist/parser/expressions/jsx.d.ts +17 -0
  338. package/dist/parser/expressions/jsx.d.ts.map +1 -0
  339. package/dist/parser/expressions/jsx.js +43 -0
  340. package/dist/parser/expressions/jsx.js.map +1 -0
  341. package/dist/parser/expressions/keyframes.d.ts +15 -0
  342. package/dist/parser/expressions/keyframes.d.ts.map +1 -0
  343. package/dist/parser/expressions/keyframes.js +33 -0
  344. package/dist/parser/expressions/keyframes.js.map +1 -0
  345. package/dist/parser/expressions/look.d.ts +16 -0
  346. package/dist/parser/expressions/look.d.ts.map +1 -0
  347. package/dist/parser/expressions/look.js +37 -0
  348. package/dist/parser/expressions/look.js.map +1 -0
  349. package/dist/parser/expressions/visual-block.d.ts +17 -0
  350. package/dist/parser/expressions/visual-block.d.ts.map +1 -0
  351. package/dist/parser/expressions/visual-block.js +21 -0
  352. package/dist/parser/expressions/visual-block.js.map +1 -0
  353. package/dist/parser/keyframes-source.d.ts +24 -0
  354. package/dist/parser/keyframes-source.d.ts.map +1 -0
  355. package/dist/parser/keyframes-source.js +133 -0
  356. package/dist/parser/keyframes-source.js.map +1 -0
  357. package/dist/parser/look-source.d.ts +25 -0
  358. package/dist/parser/look-source.d.ts.map +1 -0
  359. package/dist/parser/look-source.js +189 -0
  360. package/dist/parser/look-source.js.map +1 -0
  361. package/dist/parser/spans.d.ts +24 -0
  362. package/dist/parser/spans.d.ts.map +1 -0
  363. package/dist/parser/spans.js +113 -0
  364. package/dist/parser/spans.js.map +1 -0
  365. package/dist/parser/statements/components.d.ts +37 -0
  366. package/dist/parser/statements/components.d.ts.map +1 -0
  367. package/dist/parser/statements/components.js +185 -0
  368. package/dist/parser/statements/components.js.map +1 -0
  369. package/dist/parser/statements/heads.d.ts +38 -0
  370. package/dist/parser/statements/heads.d.ts.map +1 -0
  371. package/dist/parser/statements/heads.js +55 -0
  372. package/dist/parser/statements/heads.js.map +1 -0
  373. package/dist/parser/statements/imports.d.ts +9 -0
  374. package/dist/parser/statements/imports.d.ts.map +1 -0
  375. package/dist/parser/statements/imports.js +31 -0
  376. package/dist/parser/statements/imports.js.map +1 -0
  377. package/dist/parser/statements/reactive.d.ts +31 -0
  378. package/dist/parser/statements/reactive.d.ts.map +1 -0
  379. package/dist/parser/statements/reactive.js +68 -0
  380. package/dist/parser/statements/reactive.js.map +1 -0
  381. package/dist/parser/statements/unsafe-css.d.ts +21 -0
  382. package/dist/parser/statements/unsafe-css.d.ts.map +1 -0
  383. package/dist/parser/statements/unsafe-css.js +42 -0
  384. package/dist/parser/statements/unsafe-css.js.map +1 -0
  385. package/dist/parser.d.ts +37 -50
  386. package/dist/parser.d.ts.map +1 -1
  387. package/dist/parser.js +98 -882
  388. package/dist/parser.js.map +1 -1
  389. package/dist/runtime-sources.generated.d.ts +1 -1
  390. package/dist/runtime-sources.generated.d.ts.map +1 -1
  391. package/dist/runtime-sources.generated.js +4 -4
  392. package/dist/runtime-sources.generated.js.map +1 -1
  393. package/package.json +2 -2
@@ -0,0 +1,159 @@
1
+ import { LOOK_HOOKS, LOOK_MEDIA_SUBJECTS, LOOK_PROPERTIES, LOOK_PROPERTY_CSS_FUNCTIONS, LOOK_TARGETS, lookBuilderSupportsProperty, lookPropertyCompletionKeywords, } from "../look.js";
2
+ import { lookPropertyFamilies, unique } from "./completions.js";
3
+ /** What may be written at a caret inside a `look:` block. */
4
+ export function completeLook(look, context) {
5
+ if (look.kind === "property") {
6
+ return {
7
+ context: "look-property",
8
+ completions: [...LOOK_PROPERTIES]
9
+ .filter((property) => property.startsWith(look.prefix))
10
+ .map((property) => ({
11
+ label: property,
12
+ detail: `${lookPropertyFamilies.get(property) ?? "visual"} Look property`,
13
+ kind: "field",
14
+ })),
15
+ };
16
+ }
17
+ if (look.kind === "value") {
18
+ const keywords = lookPropertyCompletionKeywords(look.property)
19
+ .filter((keyword) => keyword.startsWith(look.prefix))
20
+ .map((keyword) => ({
21
+ label: JSON.stringify(keyword),
22
+ detail: `${look.property} keyword`,
23
+ kind: "field",
24
+ filterText: keyword,
25
+ insertText: look.quoted ? keyword : JSON.stringify(keyword),
26
+ }));
27
+ const cssFunctions = [...LOOK_PROPERTY_CSS_FUNCTIONS.get(look.property) ?? []]
28
+ .filter((item) => item.name.startsWith(look.prefix))
29
+ .map((item) => ({
30
+ label: `${item.name}()`,
31
+ detail: `CSS function available for ${look.property}`,
32
+ kind: "function",
33
+ presentationKind: "function",
34
+ filterText: `${item.name}()`,
35
+ insertText: look.quoted ? item.example : JSON.stringify(item.example),
36
+ }));
37
+ const builders = (look.quoted ? [] : context.visibleSymbols)
38
+ .filter((symbol) => symbol.importSource === "velar/look"
39
+ && symbol.importedName !== undefined
40
+ && lookBuilderSupportsProperty(symbol.importedName, look.property)
41
+ && symbol.label.startsWith(look.prefix))
42
+ .map((symbol) => ({
43
+ label: symbol.label,
44
+ detail: `${symbol.detail} · ${symbol.importedName} from velar/look`,
45
+ kind: symbol.kind,
46
+ presentationKind: "function",
47
+ filterText: symbol.label,
48
+ ...(symbol.documentation ? { documentation: symbol.documentation } : {}),
49
+ }));
50
+ return { context: "look-value", completions: unique([...builders, ...keywords, ...cssFunctions]) };
51
+ }
52
+ if (look.kind === "target") {
53
+ return {
54
+ context: "look-target",
55
+ completions: [...LOOK_TARGETS]
56
+ .filter((target) => target.startsWith(look.prefix))
57
+ .map((target) => ({
58
+ label: `@${target}:`,
59
+ detail: "Look pseudo-element target",
60
+ kind: "field",
61
+ filterText: `@${target}`,
62
+ insertText: `@${target}:`,
63
+ })),
64
+ };
65
+ }
66
+ if (look.kind === "hook") {
67
+ return {
68
+ context: "look-hook",
69
+ completions: [...LOOK_HOOKS]
70
+ .filter((hook) => hook.startsWith(look.prefix))
71
+ .map((hook) => ({
72
+ label: `@${hook}`,
73
+ detail: "Look state condition",
74
+ kind: "field",
75
+ filterText: `@${hook}`,
76
+ insertText: `@${hook}:`,
77
+ })),
78
+ };
79
+ }
80
+ if (look.kind === "media") {
81
+ const conditions = [...LOOK_MEDIA_SUBJECTS].flatMap(([subject, features]) => [...features].map((feature) => {
82
+ const label = `${subject}.${feature}`;
83
+ return {
84
+ label,
85
+ detail: "Look media condition",
86
+ kind: "field",
87
+ filterText: label,
88
+ insertText: subject === "viewport" ? `${label} <= ` : `${label}:`,
89
+ };
90
+ }));
91
+ return {
92
+ context: "look-media",
93
+ completions: conditions.filter((condition) => condition.label.startsWith(look.prefix)),
94
+ };
95
+ }
96
+ return undefined;
97
+ }
98
+ export function lookCompletionContextAt(source, offset) {
99
+ const end = Math.min(Math.max(0, offset), source.length);
100
+ const lineStart = end === 0 ? 0 : source.lastIndexOf("\n", end - 1) + 1;
101
+ const linePrefix = source.slice(lineStart, end);
102
+ const indentation = /^[ \t]*/u.exec(linePrefix)?.[0] ?? "";
103
+ if (!insideLookBlock(source, lineStart, indentationWidth(indentation)))
104
+ return null;
105
+ const body = linePrefix.slice(indentation.length);
106
+ const assignment = /^([A-Za-z][A-Za-z0-9]*)\s*=\s*(.*)$/u.exec(body);
107
+ if (assignment) {
108
+ const property = assignment[1];
109
+ if (!LOOK_PROPERTIES.has(property))
110
+ return { kind: "value", property, prefix: "", quoted: false };
111
+ const value = assignment[2];
112
+ const quoted = /^(["'])([^"']*)$/u.exec(value);
113
+ if (quoted)
114
+ return { kind: "value", property, prefix: quoted[2], quoted: true };
115
+ return /^[A-Za-z0-9_-]*$/u.test(value)
116
+ ? { kind: "value", property, prefix: value, quoted: false }
117
+ : null;
118
+ }
119
+ const target = /^@([A-Za-z][A-Za-z0-9]*)?$/u.exec(body);
120
+ if (target)
121
+ return { kind: "target", prefix: target[1] ?? "" };
122
+ const hook = /^if\s+@([A-Za-z][A-Za-z0-9]*)?$/u.exec(body);
123
+ if (hook)
124
+ return { kind: "hook", prefix: hook[1] ?? "" };
125
+ const media = /^if\s+([A-Za-z][A-Za-z0-9.]*)?$/u.exec(body);
126
+ if (media)
127
+ return { kind: "media", prefix: media[1] ?? "" };
128
+ const property = /^([A-Za-z][A-Za-z0-9]*)?$/u.exec(body);
129
+ return property ? { kind: "property", prefix: property[1] ?? "" } : null;
130
+ }
131
+ function insideLookBlock(source, lineStart, currentIndent) {
132
+ const lines = source.slice(0, lineStart).split("\n");
133
+ let childIndent = currentIndent;
134
+ for (let index = lines.length - 2; index >= 0; index -= 1) {
135
+ const line = lines[index];
136
+ if (line.trim().length === 0)
137
+ continue;
138
+ const indentation = /^[ \t]*/u.exec(line)?.[0] ?? "";
139
+ const indent = indentationWidth(indentation);
140
+ if (indent >= childIndent)
141
+ continue;
142
+ const body = line.slice(indentation.length).trimEnd();
143
+ if (/(?:=\s*|\breturn\s+)look\s*:\s*$/u.test(body))
144
+ return true;
145
+ if (/^(?:if\b.+|else|@[A-Za-z][A-Za-z0-9]*)\s*:\s*$/u.test(body)) {
146
+ childIndent = indent;
147
+ continue;
148
+ }
149
+ return false;
150
+ }
151
+ return false;
152
+ }
153
+ function indentationWidth(indentation) {
154
+ let width = 0;
155
+ for (const character of indentation)
156
+ width += character === "\t" ? 4 - (width % 4) : 1;
157
+ return width;
158
+ }
159
+ //# sourceMappingURL=look-completion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"look-completion.js","sourceRoot":"","sources":["../../src/editor/look-completion.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../src/editor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAIV,8BAA8B,EAE/B,MAAM,iCAAiC,CAAC;AA+FzC,eAAO,MAAM,4BAA4B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAExE,CAAC;AAoCH,eAAO,MAAM,8BAA8B,EAAE,8BAG3C,CAAC"}
1
+ {"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../src/editor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,8BAA8B,EAE/B,MAAM,iCAAiC,CAAC;AA8EzC,eAAO,MAAM,4BAA4B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAExE,CAAC;AAEH,eAAO,MAAM,8BAA8B,EAAE,8BAG3C,CAAC"}
package/dist/editor.js CHANGED
@@ -1,16 +1,7 @@
1
- import { LOOK_BUILDER_SIGNATURES, LOOK_LARGE_KEYWORD_SETS, LOOK_PROPERTIES, LOOK_HOOKS, LOOK_MEDIA_SUBJECTS, LOOK_PROPERTY_CSS_FUNCTIONS, LOOK_PROPERTY_GROUPS, LOOK_PROPERTY_VALUE_KINDS, LOOK_TARGETS, lookPropertyDocumentationKey, lookBuilderSupportsProperty, lookPropertyCompletionKeywords, } from "./look.js";
2
- const nativeJsxTags = [
3
- "a", "article", "aside", "button", "canvas", "dialog", "div", "footer", "form", "h1", "h2", "h3",
4
- "header", "img", "input", "label", "li", "main", "nav", "option", "p", "section", "select", "span",
5
- "strong", "textarea", "ul",
6
- ];
7
- const nativeSvgTags = [
8
- "svg", "g", "defs", "symbol", "use", "path", "rect", "circle", "ellipse", "line", "polyline", "polygon",
9
- "text", "tspan", "title", "desc", "clipPath", "mask", "pattern", "linearGradient", "radialGradient", "stop",
10
- "filter", "foreignObject",
11
- ];
12
- const svgElementNames = new Set(nativeSvgTags);
13
- const lookPropertyFamilies = new Map(LOOK_PROPERTY_GROUPS.flatMap((group) => group.properties.map((property) => [property, group.family])));
1
+ import { LOOK_BUILDER_SIGNATURES, LOOK_LARGE_KEYWORD_SETS, LOOK_PROPERTIES, LOOK_PROPERTY_CSS_FUNCTIONS, LOOK_PROPERTY_VALUE_KINDS, lookPropertyDocumentationKey, lookBuilderSupportsProperty, lookPropertyCompletionKeywords, } from "./look.js";
2
+ import { lookPropertyFamilies } from "./editor/completions.js";
3
+ import { completeJsx } from "./editor/jsx-completion.js";
4
+ import { completeLook, lookCompletionContextAt } from "./editor/look-completion.js";
14
5
  const lookPropertyValueTypes = Object.freeze({
15
6
  animation: ["Animation", "List<Animation>"],
16
7
  angle: ["Angle", "listed keyword"],
@@ -71,291 +62,24 @@ function lookPropertyDocumentation(property) {
71
62
  return lines.join("\n");
72
63
  }
73
64
  export const webLookPropertyDocumentation = Object.freeze(Object.fromEntries([...LOOK_PROPERTIES].map((property) => [lookPropertyDocumentationKey(property), lookPropertyDocumentation(property)])));
74
- const jsxControlCompletions = [
75
- { label: "key", detail: "stable JSX list key", kind: "field" },
76
- { label: "ref", detail: "typed Handle exposed by this component", kind: "field" },
77
- ...[...LOOK_PROPERTIES].sort().map((property) => ({
78
- label: `look:${property}`,
79
- detail: "inline checked Look property",
80
- kind: "field",
81
- })),
82
- ...[...LOOK_PROPERTIES].sort().map((property) => ({
83
- label: `style:${property}`,
84
- detail: "high-priority inline Style compatibility override; prefer Look",
85
- kind: "field",
86
- })),
87
- ];
88
- const nativeJsxCompletions = [
89
- ...["id", "class", "title", "role", "aria-label", "aria-labelledby", "ref"].map((label) => ({ label, detail: "native Web attribute", kind: "field" })),
90
- ...["on:click", "on:input", "on:change", "on:keydown", "on:submit.prevent"].map((label) => ({ label, detail: "typed native Web event", kind: "field" })),
91
- { label: "look", detail: "checked Look value", kind: "field" },
92
- { label: "bind:value", detail: "two-way string/number form binding", kind: "field" },
93
- { label: "bind:checked", detail: "two-way boolean form binding", kind: "field" },
94
- { label: "bind:group", detail: "two-way radio or checkbox group binding", kind: "field" },
95
- { label: "class:", detail: "reactive class directive", kind: "field" },
96
- { label: "unsafe:html", detail: "explicit unsafe HTML boundary", kind: "field" },
97
- ...jsxControlCompletions,
98
- ];
99
- const nativeSvgCompletions = [
100
- ...["viewBox", "preserveAspectRatio", "d", "x", "y", "x1", "y1", "x2", "y2", "cx", "cy", "r", "rx", "ry",
101
- "width", "height", "points", "transform", "fill", "stroke", "stroke-width", "text-anchor", "href"]
102
- .map((label) => ({ label, detail: "native SVG attribute", kind: "field" })),
103
- { label: "aria-hidden", detail: "explicit decorative SVG", kind: "field" },
104
- ];
105
65
  export const velarWebProjectEditorExtension = Object.freeze({
106
66
  complete: completeWebProject,
107
67
  protectRename: protectWebRename,
108
68
  });
69
+ /**
70
+ * The caret is inside a `look:` block or it is inside JSX; the two families
71
+ * answer for their own positions and this only says which one is asked.
72
+ */
109
73
  function completeWebProject(context) {
110
74
  const look = lookCompletionContextAt(context.source, context.offset);
111
- if (look?.kind === "property") {
112
- return {
113
- context: "look-property",
114
- completions: [...LOOK_PROPERTIES]
115
- .filter((property) => property.startsWith(look.prefix))
116
- .map((property) => ({
117
- label: property,
118
- detail: `${lookPropertyFamilies.get(property) ?? "visual"} Look property`,
119
- kind: "field",
120
- })),
121
- };
122
- }
123
- if (look?.kind === "value") {
124
- const keywords = lookPropertyCompletionKeywords(look.property)
125
- .filter((keyword) => keyword.startsWith(look.prefix))
126
- .map((keyword) => ({
127
- label: JSON.stringify(keyword),
128
- detail: `${look.property} keyword`,
129
- kind: "field",
130
- filterText: keyword,
131
- insertText: look.quoted ? keyword : JSON.stringify(keyword),
132
- }));
133
- const cssFunctions = [...LOOK_PROPERTY_CSS_FUNCTIONS.get(look.property) ?? []]
134
- .filter((item) => item.name.startsWith(look.prefix))
135
- .map((item) => ({
136
- label: `${item.name}()`,
137
- detail: `CSS function available for ${look.property}`,
138
- kind: "function",
139
- presentationKind: "function",
140
- filterText: `${item.name}()`,
141
- insertText: look.quoted ? item.example : JSON.stringify(item.example),
142
- }));
143
- const builders = (look.quoted ? [] : context.visibleSymbols)
144
- .filter((symbol) => symbol.importSource === "velar/look"
145
- && symbol.importedName !== undefined
146
- && lookBuilderSupportsProperty(symbol.importedName, look.property)
147
- && symbol.label.startsWith(look.prefix))
148
- .map((symbol) => ({
149
- label: symbol.label,
150
- detail: `${symbol.detail} · ${symbol.importedName} from velar/look`,
151
- kind: symbol.kind,
152
- presentationKind: "function",
153
- filterText: symbol.label,
154
- ...(symbol.documentation ? { documentation: symbol.documentation } : {}),
155
- }));
156
- return { context: "look-value", completions: unique([...builders, ...keywords, ...cssFunctions]) };
157
- }
158
- if (look?.kind === "target") {
159
- return {
160
- context: "look-target",
161
- completions: [...LOOK_TARGETS]
162
- .filter((target) => target.startsWith(look.prefix))
163
- .map((target) => ({
164
- label: `@${target}:`,
165
- detail: "Look pseudo-element target",
166
- kind: "field",
167
- filterText: `@${target}`,
168
- insertText: `@${target}:`,
169
- })),
170
- };
171
- }
172
- if (look?.kind === "hook") {
173
- return {
174
- context: "look-hook",
175
- completions: [...LOOK_HOOKS]
176
- .filter((hook) => hook.startsWith(look.prefix))
177
- .map((hook) => ({
178
- label: `@${hook}`,
179
- detail: "Look state condition",
180
- kind: "field",
181
- filterText: `@${hook}`,
182
- insertText: `@${hook}:`,
183
- })),
184
- };
185
- }
186
- if (look?.kind === "media") {
187
- const conditions = [...LOOK_MEDIA_SUBJECTS].flatMap(([subject, features]) => [...features].map((feature) => {
188
- const label = `${subject}.${feature}`;
189
- return {
190
- label,
191
- detail: "Look media condition",
192
- kind: "field",
193
- filterText: label,
194
- insertText: subject === "viewport" ? `${label} <= ` : `${label}:`,
195
- };
196
- }));
197
- return {
198
- context: "look-media",
199
- completions: conditions.filter((condition) => condition.label.startsWith(look.prefix)),
200
- };
201
- }
202
- const tag = jsxTagContextAt(context.source, context.offset);
203
- if (tag) {
204
- const components = context.visibleSymbols.filter((symbol) => symbol.kind === "extension:function:web-component"
205
- || (symbol.kind === "import" && symbol.detail.startsWith("component ")));
206
- return {
207
- context: "jsx-tag",
208
- completions: unique([
209
- ...components,
210
- ...nativeJsxTags.map((label) => ({ label, detail: "native Web element", kind: "extension:function:web-component", presentationKind: "class" })),
211
- ...nativeSvgTags.map((label) => ({ label, detail: "native SVG element", kind: "extension:function:web-component", presentationKind: "class" })),
212
- ]).filter((item) => item.label.startsWith(tag.prefix)),
213
- };
214
- }
215
- const attribute = jsxAttributeContextAt(context.source, context.offset);
216
- if (!attribute)
217
- return undefined;
218
- const common = attribute.component
219
- ? jsxControlCompletions
220
- : svgElementNames.has(attribute.tag)
221
- ? [...nativeSvgCompletions, ...nativeJsxCompletions]
222
- : nativeJsxCompletions;
223
- const component = attribute.component ? context.membersAt(attribute.tagOffset) : [];
224
- return {
225
- context: attribute.component ? "component-attribute" : "native-attribute",
226
- completions: unique([...component, ...common]).filter((item) => !attribute.used.has(item.label)),
227
- };
228
- }
229
- function lookCompletionContextAt(source, offset) {
230
- const end = Math.min(Math.max(0, offset), source.length);
231
- const lineStart = end === 0 ? 0 : source.lastIndexOf("\n", end - 1) + 1;
232
- const linePrefix = source.slice(lineStart, end);
233
- const indentation = /^[ \t]*/u.exec(linePrefix)?.[0] ?? "";
234
- if (!insideLookBlock(source, lineStart, indentationWidth(indentation)))
235
- return null;
236
- const body = linePrefix.slice(indentation.length);
237
- const assignment = /^([A-Za-z][A-Za-z0-9]*)\s*=\s*(.*)$/u.exec(body);
238
- if (assignment) {
239
- const property = assignment[1];
240
- if (!LOOK_PROPERTIES.has(property))
241
- return { kind: "value", property, prefix: "", quoted: false };
242
- const value = assignment[2];
243
- const quoted = /^(["'])([^"']*)$/u.exec(value);
244
- if (quoted)
245
- return { kind: "value", property, prefix: quoted[2], quoted: true };
246
- return /^[A-Za-z0-9_-]*$/u.test(value)
247
- ? { kind: "value", property, prefix: value, quoted: false }
248
- : null;
249
- }
250
- const target = /^@([A-Za-z][A-Za-z0-9]*)?$/u.exec(body);
251
- if (target)
252
- return { kind: "target", prefix: target[1] ?? "" };
253
- const hook = /^if\s+@([A-Za-z][A-Za-z0-9]*)?$/u.exec(body);
254
- if (hook)
255
- return { kind: "hook", prefix: hook[1] ?? "" };
256
- const media = /^if\s+([A-Za-z][A-Za-z0-9.]*)?$/u.exec(body);
257
- if (media)
258
- return { kind: "media", prefix: media[1] ?? "" };
259
- const property = /^([A-Za-z][A-Za-z0-9]*)?$/u.exec(body);
260
- return property ? { kind: "property", prefix: property[1] ?? "" } : null;
261
- }
262
- function insideLookBlock(source, lineStart, currentIndent) {
263
- const lines = source.slice(0, lineStart).split("\n");
264
- let childIndent = currentIndent;
265
- for (let index = lines.length - 2; index >= 0; index -= 1) {
266
- const line = lines[index];
267
- if (line.trim().length === 0)
268
- continue;
269
- const indentation = /^[ \t]*/u.exec(line)?.[0] ?? "";
270
- const indent = indentationWidth(indentation);
271
- if (indent >= childIndent)
272
- continue;
273
- const body = line.slice(indentation.length).trimEnd();
274
- if (/(?:=\s*|\breturn\s+)look\s*:\s*$/u.test(body))
275
- return true;
276
- if (/^(?:if\b.+|else|@[A-Za-z][A-Za-z0-9]*)\s*:\s*$/u.test(body)) {
277
- childIndent = indent;
278
- continue;
279
- }
280
- return false;
281
- }
282
- return false;
283
- }
284
- function indentationWidth(indentation) {
285
- let width = 0;
286
- for (const character of indentation)
287
- width += character === "\t" ? 4 - (width % 4) : 1;
288
- return width;
75
+ const lookCompletion = look ? completeLook(look, context) : undefined;
76
+ if (lookCompletion)
77
+ return lookCompletion;
78
+ return completeJsx(context);
289
79
  }
290
80
  function protectWebRename(context) {
291
81
  return context.kind === "parameter" && context.containerKind === "extension:function:web-component" && context.name === "children"
292
82
  ? "The JSX children prop cannot be renamed"
293
83
  : undefined;
294
84
  }
295
- function jsxTagContextAt(source, offset) {
296
- const end = Math.min(Math.max(0, offset), source.length);
297
- const before = source.slice(0, end);
298
- const opening = before.lastIndexOf("<");
299
- if (opening < 0 || before.lastIndexOf(">") > opening)
300
- return null;
301
- const match = /^<\/?([A-Za-z0-9_]*)$/u.exec(source.slice(opening, end));
302
- return match ? { prefix: match[1] } : null;
303
- }
304
- function jsxAttributeContextAt(source, offset) {
305
- const end = Math.min(Math.max(0, offset), source.length);
306
- const before = source.slice(0, end);
307
- const opening = before.lastIndexOf("<");
308
- if (opening < 0 || before.lastIndexOf(">") > opening || source[opening + 1] === "/")
309
- return null;
310
- const fragment = source.slice(opening, end);
311
- const tag = /^<([A-Za-z][A-Za-z0-9_]*)\b/u.exec(fragment);
312
- if (!tag)
313
- return null;
314
- const attributesStart = tag[0].length;
315
- let quote = null;
316
- let depth = 0;
317
- let escaped = false;
318
- let visible = "";
319
- for (const character of fragment.slice(attributesStart)) {
320
- if (quote) {
321
- visible += " ";
322
- if (!escaped && character === quote)
323
- quote = null;
324
- escaped = !escaped && character === "\\";
325
- if (character !== "\\")
326
- escaped = false;
327
- continue;
328
- }
329
- if (character === '"' || character === "'") {
330
- quote = character;
331
- visible += " ";
332
- continue;
333
- }
334
- if (character === "{") {
335
- depth += 1;
336
- visible += " ";
337
- continue;
338
- }
339
- if (character === "}") {
340
- depth = Math.max(0, depth - 1);
341
- visible += " ";
342
- continue;
343
- }
344
- visible += depth === 0 ? character : " ";
345
- }
346
- if (quote || depth > 0)
347
- return null;
348
- const used = new Set();
349
- for (const match of visible.matchAll(/([A-Za-z_][A-Za-z0-9_.:-]*)\s*(?==|\s|$)/gu))
350
- used.add(match[1]);
351
- return {
352
- component: /^[A-Z]/u.test(tag[1]),
353
- tag: tag[1],
354
- tagOffset: opening + 1,
355
- used,
356
- };
357
- }
358
- function unique(items) {
359
- return items.filter((item, index) => items.findIndex((candidate) => candidate.label === item.label) === index);
360
- }
361
85
  //# sourceMappingURL=editor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"editor.js","sourceRoot":"","sources":["../src/editor.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,eAAe,EACf,UAAU,EACV,mBAAmB,EACnB,2BAA2B,EAC3B,oBAAoB,EACpB,yBAAyB,EACzB,YAAY,EACZ,4BAA4B,EAC5B,2BAA2B,EAC3B,8BAA8B,GAG/B,MAAM,WAAW,CAAC;AAEnB,MAAM,aAAa,GAAG;IACpB,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAChG,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM;IAClG,QAAQ,EAAE,UAAU,EAAE,IAAI;CAClB,CAAC;AAEX,MAAM,aAAa,GAAG;IACpB,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS;IACvG,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM;IAC3G,QAAQ,EAAE,eAAe;CACjB,CAAC;AAEX,MAAM,eAAe,GAAG,IAAI,GAAG,CAAS,aAAa,CAAC,CAAC;AACvD,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAC1E,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAU,CAAC,CAAC,CAAC,CAAC;AAE1E,MAAM,sBAAsB,GAA+D,MAAM,CAAC,MAAM,CAAC;IACvG,SAAS,EAAE,CAAC,WAAW,EAAE,iBAAiB,CAAC;IAC3C,KAAK,EAAE,CAAC,OAAO,EAAE,gBAAgB,CAAC;IAClC,UAAU,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,gBAAgB,CAAC;IAChD,MAAM,EAAE,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IACpC,KAAK,EAAE,CAAC,OAAO,EAAE,gBAAgB,CAAC;IAClC,QAAQ,EAAE,CAAC,UAAU,EAAE,gBAAgB,CAAC;IACxC,MAAM,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC;IAC9B,KAAK,EAAE,CAAC,OAAO,EAAE,gBAAgB,CAAC;IAClC,OAAO,EAAE,CAAC,gBAAgB,CAAC;IAC3B,aAAa,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,CAAC;IACrD,MAAM,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,kBAAkB,EAAE,SAAS,EAAE,gBAAgB,CAAC;IACjF,MAAM,EAAE,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IACpC,gBAAgB,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,gBAAgB,CAAC;IACzD,MAAM,EAAE,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IACpC,IAAI,EAAE,CAAC,UAAU,CAAC;IAClB,KAAK,EAAE,CAAC,WAAW,EAAE,gBAAgB,CAAC;IACtC,SAAS,EAAE,CAAC,oBAAoB,CAAC;IACjC,UAAU,EAAE,CAAC,YAAY,EAAE,gBAAgB,CAAC;CAC7C,CAAC,CAAC;AAEH,SAAS,gBAAgB,CAAC,IAAY,EAAE,SAA+B;IACrE,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE;QAC/D,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;QAClF,MAAM,QAAQ,GAAG,KAAK,IAAI,SAAS,CAAC,QAAQ,CAAC;QAC7C,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAClE,CAAC,CAAC,CAAC;IACH,OAAO,GAAG,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AAC7C,CAAC;AAED,SAAS,UAAU,CAAC,MAAyB;IAC3C,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,yBAAyB,CAAC,QAAgB;IACjD,MAAM,IAAI,GAAG,yBAAyB,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC;IACtD,MAAM,QAAQ,GAAG,8BAA8B,CAAC,QAAQ,CAAC,CAAC;IAC1D,MAAM,QAAQ,GAAG,CAAC,GAAG,uBAAuB,CAAC;SAC1C,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,2BAA2B,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;SAC/D,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,KAAK,gBAAgB,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;IAC1E,MAAM,YAAY,GAAG,CAAC,GAAG,2BAA2B,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;SACtE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,CAAC,IAAI,MAAM,CAAC,CAAC;IACvC,MAAM,eAAe,GAAG,uBAAuB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC9D,MAAM,KAAK,GAAG;QACZ,wBAAwB,sBAAsB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;QACjG,EAAE;QACF,GAAG,oBAAoB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,QAAQ,yCAAyC;KAC3F,CAAC;IACF,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,eAAe;YAC5B,CAAC,CAAC,sBAAsB,eAAe,2CAA2C;YAClF,CAAC,CAAC,sBAAsB,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACrD,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,sCAAsC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtG,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,iCAAiC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzG,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;QACjE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,uIAAuI,CAAC,CAAC;IAC1J,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,CAAC,MAAM,4BAA4B,GAAqC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAC5G,CAAC,GAAG,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,4BAA4B,CAAC,QAAQ,CAAC,EAAE,yBAAyB,CAAC,QAAQ,CAAC,CAAC,CAAC,CACtH,CAAC,CAAC;AAEH,MAAM,qBAAqB,GAA+C;IACxE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,qBAAqB,EAAE,IAAI,EAAE,OAAO,EAAE;IAC9D,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,wCAAwC,EAAE,IAAI,EAAE,OAAO,EAAE;IACjF,GAAG,CAAC,GAAG,eAAe,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAChD,KAAK,EAAE,QAAQ,QAAQ,EAAE;QACzB,MAAM,EAAE,8BAA8B;QACtC,IAAI,EAAE,OAAgB;KACvB,CAAC,CAAC;IACH,GAAG,CAAC,GAAG,eAAe,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAChD,KAAK,EAAE,SAAS,QAAQ,EAAE;QAC1B,MAAM,EAAE,gEAAgE;QACxE,IAAI,EAAE,OAAgB;KACvB,CAAC,CAAC;CACJ,CAAC;AAEF,MAAM,oBAAoB,GAA+C;IACvE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,iBAAiB,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,sBAAsB,EAAE,IAAI,EAAE,OAAgB,EAAE,CAAC,CAAC;IAC/J,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,mBAAmB,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,wBAAwB,EAAE,IAAI,EAAE,OAAgB,EAAE,CAAC,CAAC;IACjK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,oBAAoB,EAAE,IAAI,EAAE,OAAO,EAAE;IAC9D,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,oCAAoC,EAAE,IAAI,EAAE,OAAO,EAAE;IACpF,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,8BAA8B,EAAE,IAAI,EAAE,OAAO,EAAE;IAChF,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,yCAAyC,EAAE,IAAI,EAAE,OAAO,EAAE;IACzF,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,0BAA0B,EAAE,IAAI,EAAE,OAAO,EAAE;IACtE,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,+BAA+B,EAAE,IAAI,EAAE,OAAO,EAAE;IAChF,GAAG,qBAAqB;CACzB,CAAC;AAEF,MAAM,oBAAoB,GAA+C;IACvE,GAAG,CAAC,SAAS,EAAE,qBAAqB,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI;QACtG,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,CAAC;SACjG,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,sBAAsB,EAAE,IAAI,EAAE,OAAgB,EAAE,CAAC,CAAC;IACtF,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,yBAAyB,EAAE,IAAI,EAAE,OAAO,EAAE;CAC3E,CAAC;AAEF,MAAM,CAAC,MAAM,8BAA8B,GAAmC,MAAM,CAAC,MAAM,CAAC;IAC1F,QAAQ,EAAE,kBAAkB;IAC5B,aAAa,EAAE,gBAAgB;CAChC,CAAC,CAAC;AAEH,SAAS,kBAAkB,CAAC,OAA+C;IACzE,MAAM,IAAI,GAAG,uBAAuB,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACrE,IAAI,IAAI,EAAE,IAAI,KAAK,UAAU,EAAE,CAAC;QAC9B,OAAO;YACL,OAAO,EAAE,eAAe;YACxB,WAAW,EAAE,CAAC,GAAG,eAAe,CAAC;iBAC9B,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;iBACtD,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;gBAClB,KAAK,EAAE,QAAQ;gBACf,MAAM,EAAE,GAAG,oBAAoB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,QAAQ,gBAAgB;gBACzE,IAAI,EAAE,OAAgB;aACvB,CAAC,CAAC;SACN,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,EAAE,IAAI,KAAK,OAAO,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAA+C,8BAA8B,CAAC,IAAI,CAAC,QAAQ,CAAC;aACvG,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACpD,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YACjB,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;YAC9B,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,UAAU;YAClC,IAAI,EAAE,OAAgB;YACtB,UAAU,EAAE,OAAO;YACnB,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;SAC5D,CAAC,CAAC,CAAC;QACN,MAAM,YAAY,GAA+C,CAAC,GAAG,2BAA2B,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;aACvH,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACnD,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACd,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI;YACvB,MAAM,EAAE,8BAA8B,IAAI,CAAC,QAAQ,EAAE;YACrD,IAAI,EAAE,UAAmB;YACzB,gBAAgB,EAAE,UAAmB;YACrC,UAAU,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI;YAC5B,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC;SACtE,CAAC,CAAC,CAAC;QACN,MAAM,QAAQ,GAA+C,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC;aACrG,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,KAAK,YAAY;eACnD,MAAM,CAAC,YAAY,KAAK,SAAS;eACjC,2BAA2B,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC;eAC/D,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACzC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YAChB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,MAAM,MAAM,CAAC,YAAY,kBAAkB;YACnE,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,gBAAgB,EAAE,UAAmB;YACrC,UAAU,EAAE,MAAM,CAAC,KAAK;YACxB,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACzE,CAAC,CAAC,CAAC;QACN,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC,GAAG,QAAQ,EAAE,GAAG,QAAQ,EAAE,GAAG,YAAY,CAAC,CAAC,EAAE,CAAC;IACrG,CAAC;IACD,IAAI,IAAI,EAAE,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO;YACL,OAAO,EAAE,aAAa;YACtB,WAAW,EAAE,CAAC,GAAG,YAAY,CAAC;iBAC3B,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;iBAClD,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;gBAChB,KAAK,EAAE,IAAI,MAAM,GAAG;gBACpB,MAAM,EAAE,4BAA4B;gBACpC,IAAI,EAAE,OAAgB;gBACtB,UAAU,EAAE,IAAI,MAAM,EAAE;gBACxB,UAAU,EAAE,IAAI,MAAM,GAAG;aAC1B,CAAC,CAAC;SACN,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,EAAE,IAAI,KAAK,MAAM,EAAE,CAAC;QAC1B,OAAO;YACL,OAAO,EAAE,WAAW;YACpB,WAAW,EAAE,CAAC,GAAG,UAAU,CAAC;iBACzB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;iBAC9C,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBACd,KAAK,EAAE,IAAI,IAAI,EAAE;gBACjB,MAAM,EAAE,sBAAsB;gBAC9B,IAAI,EAAE,OAAgB;gBACtB,UAAU,EAAE,IAAI,IAAI,EAAE;gBACtB,UAAU,EAAE,IAAI,IAAI,GAAG;aACxB,CAAC,CAAC;SACN,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,EAAE,IAAI,KAAK,OAAO,EAAE,CAAC;QAC3B,MAAM,UAAU,GAAG,CAAC,GAAG,mBAAmB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;YACzG,MAAM,KAAK,GAAG,GAAG,OAAO,IAAI,OAAO,EAAE,CAAC;YACtC,OAAO;gBACL,KAAK;gBACL,MAAM,EAAE,sBAAsB;gBAC9B,IAAI,EAAE,OAAgB;gBACtB,UAAU,EAAE,KAAK;gBACjB,UAAU,EAAE,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG;aAClE,CAAC;QACJ,CAAC,CAAC,CAAC,CAAC;QACJ,OAAO;YACL,OAAO,EAAE,YAAY;YACrB,WAAW,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACvF,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,GAAG,eAAe,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5D,IAAI,GAAG,EAAE,CAAC;QACR,MAAM,UAAU,GAAG,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,kCAAkC;eAC1G,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC3E,OAAO;YACL,OAAO,EAAE,SAAS;YAClB,WAAW,EAAE,MAAM,CAAC;gBAClB,GAAG,UAAU;gBACb,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,oBAAoB,EAAE,IAAI,EAAE,kCAA2C,EAAE,gBAAgB,EAAE,OAAgB,EAAE,CAAC,CAAC;gBACjK,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,oBAAoB,EAAE,IAAI,EAAE,kCAA2C,EAAE,gBAAgB,EAAE,OAAgB,EAAE,CAAC,CAAC;aAClK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;SACvD,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,qBAAqB,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACxE,IAAI,CAAC,SAAS;QAAE,OAAO,SAAS,CAAC;IACjC,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS;QAChC,CAAC,CAAC,qBAAqB;QACvB,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC;YAClC,CAAC,CAAC,CAAC,GAAG,oBAAoB,EAAE,GAAG,oBAAoB,CAAC;YACpD,CAAC,CAAC,oBAAoB,CAAC;IAC3B,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACpF,OAAO;QACL,OAAO,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,kBAAkB;QACzE,WAAW,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACjG,CAAC;AACJ,CAAC;AAqBD,SAAS,uBAAuB,CAAC,MAAc,EAAE,MAAc;IAC7D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACzD,MAAM,SAAS,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IACxE,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IAChD,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3D,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACpF,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAClD,MAAM,UAAU,GAAG,sCAAsC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrE,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAE,CAAC;QAChC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC;YAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QAClG,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/C,IAAI,MAAM;YAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QACjF,OAAO,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC;YACpC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;YAC3D,CAAC,CAAC,IAAI,CAAC;IACX,CAAC;IACD,MAAM,MAAM,GAAG,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxD,IAAI,MAAM;QAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;IAC/D,MAAM,IAAI,GAAG,kCAAkC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3D,IAAI,IAAI;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;IACzD,MAAM,KAAK,GAAG,kCAAkC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5D,IAAI,KAAK;QAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;IAC5D,MAAM,QAAQ,GAAG,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzD,OAAO,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3E,CAAC;AAED,SAAS,eAAe,CAAC,MAAc,EAAE,SAAiB,EAAE,aAAqB;IAC/E,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACrD,IAAI,WAAW,GAAG,aAAa,CAAC;IAChC,KAAK,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAC1D,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAE,CAAC;QAC3B,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QACvC,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACrD,MAAM,MAAM,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;QAC7C,IAAI,MAAM,IAAI,WAAW;YAAE,SAAS;QACpC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC;QACtD,IAAI,mCAAmC,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QAChE,IAAI,iDAAiD,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACjE,WAAW,GAAG,MAAM,CAAC;YACrB,SAAS;QACX,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,gBAAgB,CAAC,WAAmB;IAC3C,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,SAAS,IAAI,WAAW;QAAE,KAAK,IAAI,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvF,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,gBAAgB,CAAC,OAA2C;IACnE,OAAO,OAAO,CAAC,IAAI,KAAK,WAAW,IAAI,OAAO,CAAC,aAAa,KAAK,kCAAkC,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU;QAChI,CAAC,CAAC,yCAAyC;QAC3C,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED,SAAS,eAAe,CAAC,MAAc,EAAE,MAAc;IACrD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACpC,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,OAAO,GAAG,CAAC,IAAI,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,OAAO;QAAE,OAAO,IAAI,CAAC;IAClE,MAAM,KAAK,GAAG,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IACxE,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9C,CAAC;AAED,SAAS,qBAAqB,CAAC,MAAc,EAAE,MAAc;IAM3D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACpC,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,OAAO,GAAG,CAAC,IAAI,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,OAAO,IAAI,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC;IACjG,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC5C,MAAM,GAAG,GAAG,8BAA8B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC1D,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,MAAM,eAAe,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACtC,IAAI,KAAK,GAAkB,IAAI,CAAC;IAChC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,KAAK,MAAM,SAAS,IAAI,QAAQ,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC;QACxD,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,IAAI,GAAG,CAAC;YACf,IAAI,CAAC,OAAO,IAAI,SAAS,KAAK,KAAK;gBAAE,KAAK,GAAG,IAAI,CAAC;YAClD,OAAO,GAAG,CAAC,OAAO,IAAI,SAAS,KAAK,IAAI,CAAC;YACzC,IAAI,SAAS,KAAK,IAAI;gBAAE,OAAO,GAAG,KAAK,CAAC;YACxC,SAAS;QACX,CAAC;QACD,IAAI,SAAS,KAAK,GAAG,IAAI,SAAS,KAAK,GAAG,EAAE,CAAC;YAAC,KAAK,GAAG,SAAS,CAAC;YAAC,OAAO,IAAI,GAAG,CAAC;YAAC,SAAS;QAAC,CAAC;QAC5F,IAAI,SAAS,KAAK,GAAG,EAAE,CAAC;YAAC,KAAK,IAAI,CAAC,CAAC;YAAC,OAAO,IAAI,GAAG,CAAC;YAAC,SAAS;QAAC,CAAC;QAChE,IAAI,SAAS,KAAK,GAAG,EAAE,CAAC;YAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;YAAC,OAAO,IAAI,GAAG,CAAC;YAAC,SAAS;QAAC,CAAC;QACpF,OAAO,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC;IAC3C,CAAC;IACD,IAAI,KAAK,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACpC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,QAAQ,CAAC,4CAA4C,CAAC;QAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;IACxG,OAAO;QACL,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC;QAClC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAE;QACZ,SAAS,EAAE,OAAO,GAAG,CAAC;QACtB,IAAI;KACL,CAAC;AACJ,CAAC;AAED,SAAS,MAAM,CAAC,KAAiD;IAC/D,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,CAAC;AACjH,CAAC"}
1
+ {"version":3,"file":"editor.js","sourceRoot":"","sources":["../src/editor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * A `component` declaration, and the assignment to a state cell that lowers to
3
+ * a `set` rather than a store.
4
+ *
5
+ * D115 P4 R3d: the family owns the two statements whose lowering is the
6
+ * component instance itself — everything a component's body declares becomes
7
+ * one setup function, and the reactive assignment is the only statement whose
8
+ * meaning depends on what that body declared.
9
+ */
10
+ import type { Expression, LoweringHints, Statement } from "@velarscript/compiler/extension";
11
+ import { type WebComponentDeclaration as ComponentDeclaration } from "../ast.ts";
12
+ type AssignmentStatement = Extract<Statement, {
13
+ readonly kind: "AssignmentStatement";
14
+ }>;
15
+ /**
16
+ * What component emission reads and writes on the emitter. `currentScope` and
17
+ * `currentJsxNamespace` are live: the body's JSX is emitted while they name the
18
+ * instance's scope, and every path restores what it found.
19
+ */
20
+ export interface ComponentEmitHost {
21
+ currentJsxNamespace: string;
22
+ currentScope: string | null;
23
+ readonly hints: LoweringHints;
24
+ blockAlwaysReturns(statements: readonly Statement[]): boolean;
25
+ emitMappedExpression(expression: Expression): string;
26
+ emitMappedStatement(statement: Statement, depth: number): string;
27
+ emitParameter(name: string, defaultValue: Expression | null, rest?: boolean): string;
28
+ emitStatementLines(statements: readonly Statement[], depth: number): readonly string[];
29
+ }
30
+ export declare function emitComponent(host: ComponentEmitHost, statement: ComponentDeclaration, depth: number): string;
31
+ export declare function emitReactiveAssignment(host: ComponentEmitHost, statement: AssignmentStatement, depth: number): string | null;
32
+ export {};
33
+ //# sourceMappingURL=components.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"components.d.ts","sourceRoot":"","sources":["../../src/emit/components.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAE5F,OAAO,EAGL,KAAK,uBAAuB,IAAI,oBAAoB,EACrD,MAAM,WAAW,CAAC;AAEnB,KAAK,mBAAmB,GAAG,OAAO,CAAC,SAAS,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAA;CAAE,CAAC,CAAC;AAExF;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAC9B,kBAAkB,CAAC,UAAU,EAAE,SAAS,SAAS,EAAE,GAAG,OAAO,CAAC;IAC9D,oBAAoB,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAAC;IACrD,mBAAmB,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACjE,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,GAAG,IAAI,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACrF,kBAAkB,CAAC,UAAU,EAAE,SAAS,SAAS,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC;CACxF;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,iBAAiB,EAAE,SAAS,EAAE,oBAAoB,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CA0G7G;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,iBAAiB,EAAE,SAAS,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAU5H"}