vsn 0.1.149 → 1.0.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 (587) hide show
  1. package/README.md +7 -6
  2. package/dist/index.cjs +5011 -0
  3. package/dist/index.cjs.map +1 -0
  4. package/dist/index.d.cts +630 -0
  5. package/dist/index.d.ts +630 -0
  6. package/dist/index.js +4942 -0
  7. package/dist/index.js.map +1 -0
  8. package/dist/index.min.js +9 -0
  9. package/dist/index.min.js.map +1 -0
  10. package/package.json +30 -48
  11. package/.gitattributes +0 -2
  12. package/.travis.yml +0 -28
  13. package/demo/demo.html +0 -237
  14. package/demo/examples/cascading-function-sheets.html +0 -39
  15. package/demo/examples/component-slots.html +0 -29
  16. package/demo/examples/events.html +0 -21
  17. package/demo/examples/item-filtering.html +0 -45
  18. package/demo/examples/loop.html +0 -21
  19. package/demo/examples/persist.html +0 -17
  20. package/demo/examples/replace-html.html +0 -19
  21. package/demo/markup-default.html +0 -2
  22. package/demo/markup.html +0 -2
  23. package/demo/memory-leak-test.html +0 -82
  24. package/demo/named-stack.html +0 -34
  25. package/demo/resources/xhr-animations.html +0 -24
  26. package/demo/resources/xhr-cfs.html +0 -1
  27. package/demo/resources/xhr-html.html +0 -1
  28. package/demo/resources/xhr-lazy.html +0 -60
  29. package/demo/resources/xhr-memory-leak-test.html +0 -14
  30. package/demo/resources/xhr-persist.html +0 -40
  31. package/demo/resources/xhr-test-component.html +0 -4
  32. package/demo/service.html +0 -22
  33. package/demo/silly-animations.html +0 -27
  34. package/demo/vsn.js +0 -3
  35. package/demo/xhr-response.html +0 -1
  36. package/demo/xhr-test.html +0 -32
  37. package/dist/AST/ArithmeticNode.d.ts +0 -15
  38. package/dist/AST/ArithmeticNode.js +0 -114
  39. package/dist/AST/ArithmeticNode.js.map +0 -1
  40. package/dist/AST/ArrayNode.d.ts +0 -14
  41. package/dist/AST/ArrayNode.js +0 -166
  42. package/dist/AST/ArrayNode.js.map +0 -1
  43. package/dist/AST/AsNode.d.ts +0 -13
  44. package/dist/AST/AsNode.js +0 -92
  45. package/dist/AST/AsNode.js.map +0 -1
  46. package/dist/AST/AssignmentNode.d.ts +0 -24
  47. package/dist/AST/AssignmentNode.js +0 -392
  48. package/dist/AST/AssignmentNode.js.map +0 -1
  49. package/dist/AST/BlockNode.d.ts +0 -11
  50. package/dist/AST/BlockNode.js +0 -114
  51. package/dist/AST/BlockNode.js.map +0 -1
  52. package/dist/AST/BooleanLiteralNode.d.ts +0 -5
  53. package/dist/AST/BooleanLiteralNode.js +0 -31
  54. package/dist/AST/BooleanLiteralNode.js.map +0 -1
  55. package/dist/AST/ClassNode.d.ts +0 -47
  56. package/dist/AST/ClassNode.js +0 -593
  57. package/dist/AST/ClassNode.js.map +0 -1
  58. package/dist/AST/ComparisonNode.d.ts +0 -15
  59. package/dist/AST/ComparisonNode.js +0 -120
  60. package/dist/AST/ComparisonNode.js.map +0 -1
  61. package/dist/AST/ConditionalNode.d.ts +0 -13
  62. package/dist/AST/ConditionalNode.js +0 -95
  63. package/dist/AST/ConditionalNode.js.map +0 -1
  64. package/dist/AST/DispatchEventNode.d.ts +0 -17
  65. package/dist/AST/DispatchEventNode.js +0 -152
  66. package/dist/AST/DispatchEventNode.js.map +0 -1
  67. package/dist/AST/ElementAttributeNode.d.ts +0 -20
  68. package/dist/AST/ElementAttributeNode.js +0 -242
  69. package/dist/AST/ElementAttributeNode.js.map +0 -1
  70. package/dist/AST/ElementQueryNode.d.ts +0 -17
  71. package/dist/AST/ElementQueryNode.js +0 -148
  72. package/dist/AST/ElementQueryNode.js.map +0 -1
  73. package/dist/AST/ElementStyleNode.d.ts +0 -20
  74. package/dist/AST/ElementStyleNode.js +0 -205
  75. package/dist/AST/ElementStyleNode.js.map +0 -1
  76. package/dist/AST/ForStatementNode.d.ts +0 -17
  77. package/dist/AST/ForStatementNode.js +0 -121
  78. package/dist/AST/ForStatementNode.js.map +0 -1
  79. package/dist/AST/FunctionArgumentNode.d.ts +0 -11
  80. package/dist/AST/FunctionArgumentNode.js +0 -142
  81. package/dist/AST/FunctionArgumentNode.js.map +0 -1
  82. package/dist/AST/FunctionCallNode.d.ts +0 -14
  83. package/dist/AST/FunctionCallNode.js +0 -241
  84. package/dist/AST/FunctionCallNode.js.map +0 -1
  85. package/dist/AST/FunctionNode.d.ts +0 -20
  86. package/dist/AST/FunctionNode.js +0 -220
  87. package/dist/AST/FunctionNode.js.map +0 -1
  88. package/dist/AST/IfStatementNode.d.ts +0 -14
  89. package/dist/AST/IfStatementNode.js +0 -168
  90. package/dist/AST/IfStatementNode.js.map +0 -1
  91. package/dist/AST/InNode.d.ts +0 -15
  92. package/dist/AST/InNode.js +0 -107
  93. package/dist/AST/InNode.js.map +0 -1
  94. package/dist/AST/IndexNode.d.ts +0 -16
  95. package/dist/AST/IndexNode.js +0 -152
  96. package/dist/AST/IndexNode.js.map +0 -1
  97. package/dist/AST/LiteralNode.d.ts +0 -10
  98. package/dist/AST/LiteralNode.js +0 -74
  99. package/dist/AST/LiteralNode.js.map +0 -1
  100. package/dist/AST/LoopNode.d.ts +0 -12
  101. package/dist/AST/LoopNode.js +0 -121
  102. package/dist/AST/LoopNode.js.map +0 -1
  103. package/dist/AST/ModifierNode.d.ts +0 -14
  104. package/dist/AST/ModifierNode.js +0 -90
  105. package/dist/AST/ModifierNode.js.map +0 -1
  106. package/dist/AST/NamedStackNode.d.ts +0 -28
  107. package/dist/AST/NamedStackNode.js +0 -142
  108. package/dist/AST/NamedStackNode.js.map +0 -1
  109. package/dist/AST/Node.d.ts +0 -28
  110. package/dist/AST/Node.js +0 -263
  111. package/dist/AST/Node.js.map +0 -1
  112. package/dist/AST/NotNode.d.ts +0 -12
  113. package/dist/AST/NotNode.js +0 -103
  114. package/dist/AST/NotNode.js.map +0 -1
  115. package/dist/AST/NumberLiteralNode.d.ts +0 -5
  116. package/dist/AST/NumberLiteralNode.js +0 -36
  117. package/dist/AST/NumberLiteralNode.js.map +0 -1
  118. package/dist/AST/ObjectNode.d.ts +0 -14
  119. package/dist/AST/ObjectNode.js +0 -147
  120. package/dist/AST/ObjectNode.js.map +0 -1
  121. package/dist/AST/OnNode.d.ts +0 -9
  122. package/dist/AST/OnNode.js +0 -129
  123. package/dist/AST/OnNode.js.map +0 -1
  124. package/dist/AST/RootScopeMemberNode.d.ts +0 -12
  125. package/dist/AST/RootScopeMemberNode.js +0 -90
  126. package/dist/AST/RootScopeMemberNode.js.map +0 -1
  127. package/dist/AST/ScopeMemberNode.d.ts +0 -13
  128. package/dist/AST/ScopeMemberNode.js +0 -165
  129. package/dist/AST/ScopeMemberNode.js.map +0 -1
  130. package/dist/AST/ScopeNodeAbstract.d.ts +0 -8
  131. package/dist/AST/ScopeNodeAbstract.js +0 -105
  132. package/dist/AST/ScopeNodeAbstract.js.map +0 -1
  133. package/dist/AST/StringFormatNode.d.ts +0 -18
  134. package/dist/AST/StringFormatNode.js +0 -151
  135. package/dist/AST/StringFormatNode.js.map +0 -1
  136. package/dist/AST/UnitLiteralNode.d.ts +0 -15
  137. package/dist/AST/UnitLiteralNode.js +0 -72
  138. package/dist/AST/UnitLiteralNode.js.map +0 -1
  139. package/dist/AST/WASM/Context.d.ts +0 -4
  140. package/dist/AST/WASM/Context.js +0 -18
  141. package/dist/AST/WASM/Context.js.map +0 -1
  142. package/dist/AST/WASM/Function.d.ts +0 -22
  143. package/dist/AST/WASM/Function.js +0 -126
  144. package/dist/AST/WASM/Function.js.map +0 -1
  145. package/dist/AST/WASM/Memory.d.ts +0 -12
  146. package/dist/AST/WASM/Memory.js +0 -22
  147. package/dist/AST/WASM/Memory.js.map +0 -1
  148. package/dist/AST/WASM/Section.d.ts +0 -5
  149. package/dist/AST/WASM/Section.js +0 -11
  150. package/dist/AST/WASM/Section.js.map +0 -1
  151. package/dist/AST/WASM.d.ts +0 -58
  152. package/dist/AST/WASM.js +0 -293
  153. package/dist/AST/WASM.js.map +0 -1
  154. package/dist/AST/WithNode.d.ts +0 -15
  155. package/dist/AST/WithNode.js +0 -197
  156. package/dist/AST/WithNode.js.map +0 -1
  157. package/dist/AST/XHRNode.d.ts +0 -15
  158. package/dist/AST/XHRNode.js +0 -151
  159. package/dist/AST/XHRNode.js.map +0 -1
  160. package/dist/AST.d.ts +0 -160
  161. package/dist/AST.js +0 -1156
  162. package/dist/AST.js.map +0 -1
  163. package/dist/Attribute.d.ts +0 -46
  164. package/dist/Attribute.js +0 -262
  165. package/dist/Attribute.js.map +0 -1
  166. package/dist/Bencmark.d.ts +0 -14
  167. package/dist/Bencmark.js +0 -236
  168. package/dist/Bencmark.js.map +0 -1
  169. package/dist/Component.d.ts +0 -7
  170. package/dist/Component.js +0 -179
  171. package/dist/Component.js.map +0 -1
  172. package/dist/Configuration.d.ts +0 -12
  173. package/dist/Configuration.js +0 -64
  174. package/dist/Configuration.js.map +0 -1
  175. package/dist/Controller.d.ts +0 -13
  176. package/dist/Controller.js +0 -60
  177. package/dist/Controller.js.map +0 -1
  178. package/dist/DOM/AbstractDOM.d.ts +0 -56
  179. package/dist/DOM/AbstractDOM.js +0 -1078
  180. package/dist/DOM/AbstractDOM.js.map +0 -1
  181. package/dist/DOM/DOMObject.d.ts +0 -33
  182. package/dist/DOM/DOMObject.js +0 -152
  183. package/dist/DOM/DOMObject.js.map +0 -1
  184. package/dist/DOM/ShadowDOM.d.ts +0 -5
  185. package/dist/DOM/ShadowDOM.js +0 -32
  186. package/dist/DOM/ShadowDOM.js.map +0 -1
  187. package/dist/DOM/WrappedDocument.d.ts +0 -5
  188. package/dist/DOM/WrappedDocument.js +0 -34
  189. package/dist/DOM/WrappedDocument.js.map +0 -1
  190. package/dist/DOM/WrappedWindow.d.ts +0 -6
  191. package/dist/DOM/WrappedWindow.js +0 -45
  192. package/dist/DOM/WrappedWindow.js.map +0 -1
  193. package/dist/DOM.d.ts +0 -5
  194. package/dist/DOM.js +0 -37
  195. package/dist/DOM.js.map +0 -1
  196. package/dist/EventDispatcher.d.ts +0 -36
  197. package/dist/EventDispatcher.js +0 -393
  198. package/dist/EventDispatcher.js.map +0 -1
  199. package/dist/Formats.d.ts +0 -5
  200. package/dist/Formats.js +0 -47
  201. package/dist/Formats.js.map +0 -1
  202. package/dist/MessageList.d.ts +0 -15
  203. package/dist/MessageList.js +0 -127
  204. package/dist/MessageList.js.map +0 -1
  205. package/dist/Model.d.ts +0 -12
  206. package/dist/Model.js +0 -92
  207. package/dist/Model.js.map +0 -1
  208. package/dist/Modifiers.d.ts +0 -17
  209. package/dist/Modifiers.js +0 -100
  210. package/dist/Modifiers.js.map +0 -1
  211. package/dist/Query.d.ts +0 -4
  212. package/dist/Query.js +0 -66
  213. package/dist/Query.js.map +0 -1
  214. package/dist/Registry.d.ts +0 -41
  215. package/dist/Registry.js +0 -165
  216. package/dist/Registry.js.map +0 -1
  217. package/dist/Scope/DynamicScopeData.d.ts +0 -6
  218. package/dist/Scope/DynamicScopeData.js +0 -83
  219. package/dist/Scope/DynamicScopeData.js.map +0 -1
  220. package/dist/Scope/ObjectAccessor.d.ts +0 -7
  221. package/dist/Scope/ObjectAccessor.js +0 -40
  222. package/dist/Scope/ObjectAccessor.js.map +0 -1
  223. package/dist/Scope/QueryReference.d.ts +0 -10
  224. package/dist/Scope/QueryReference.js +0 -103
  225. package/dist/Scope/QueryReference.js.map +0 -1
  226. package/dist/Scope/ScopeAbstract.d.ts +0 -9
  227. package/dist/Scope/ScopeAbstract.js +0 -28
  228. package/dist/Scope/ScopeAbstract.js.map +0 -1
  229. package/dist/Scope/ScopeData.d.ts +0 -4
  230. package/dist/Scope/ScopeData.js +0 -60
  231. package/dist/Scope/ScopeData.js.map +0 -1
  232. package/dist/Scope/ScopeDataAbstract.d.ts +0 -30
  233. package/dist/Scope/ScopeDataAbstract.js +0 -303
  234. package/dist/Scope/ScopeDataAbstract.js.map +0 -1
  235. package/dist/Scope/ScopeObject.d.ts +0 -3
  236. package/dist/Scope/ScopeObject.js +0 -28
  237. package/dist/Scope/ScopeObject.js.map +0 -1
  238. package/dist/Scope/ScopeReference.d.ts +0 -10
  239. package/dist/Scope/ScopeReference.js +0 -73
  240. package/dist/Scope/ScopeReference.js.map +0 -1
  241. package/dist/Scope/ScopedVariableType.d.ts +0 -6
  242. package/dist/Scope/ScopedVariableType.js +0 -14
  243. package/dist/Scope/ScopedVariableType.js.map +0 -1
  244. package/dist/Scope/WrappedArray.d.ts +0 -21
  245. package/dist/Scope/WrappedArray.js +0 -252
  246. package/dist/Scope/WrappedArray.js.map +0 -1
  247. package/dist/Scope/properties/ArrayProperty.d.ts +0 -12
  248. package/dist/Scope/properties/ArrayProperty.js +0 -88
  249. package/dist/Scope/properties/ArrayProperty.js.map +0 -1
  250. package/dist/Scope/properties/FloatProperty.d.ts +0 -4
  251. package/dist/Scope/properties/FloatProperty.js +0 -30
  252. package/dist/Scope/properties/FloatProperty.js.map +0 -1
  253. package/dist/Scope/properties/IntegerProperty.d.ts +0 -4
  254. package/dist/Scope/properties/IntegerProperty.js +0 -30
  255. package/dist/Scope/properties/IntegerProperty.js.map +0 -1
  256. package/dist/Scope/properties/Property.d.ts +0 -30
  257. package/dist/Scope/properties/Property.js +0 -205
  258. package/dist/Scope/properties/Property.js.map +0 -1
  259. package/dist/Scope/properties/_imports.d.ts +0 -4
  260. package/dist/Scope/properties/_imports.js +0 -13
  261. package/dist/Scope/properties/_imports.js.map +0 -1
  262. package/dist/Scope.d.ts +0 -39
  263. package/dist/Scope.js +0 -434
  264. package/dist/Scope.js.map +0 -1
  265. package/dist/Service.d.ts +0 -9
  266. package/dist/Service.js +0 -49
  267. package/dist/Service.js.map +0 -1
  268. package/dist/Tag/ShadowRootTag.d.ts +0 -3
  269. package/dist/Tag/ShadowRootTag.js +0 -28
  270. package/dist/Tag/ShadowRootTag.js.map +0 -1
  271. package/dist/Tag/SlotTag.d.ts +0 -3
  272. package/dist/Tag/SlotTag.js +0 -28
  273. package/dist/Tag/SlotTag.js.map +0 -1
  274. package/dist/Tag/SlottedTag.d.ts +0 -7
  275. package/dist/Tag/SlottedTag.js +0 -78
  276. package/dist/Tag/SlottedTag.js.map +0 -1
  277. package/dist/Tag/TagList.d.ts +0 -13
  278. package/dist/Tag/TagList.js +0 -104
  279. package/dist/Tag/TagList.js.map +0 -1
  280. package/dist/Tag.d.ts +0 -117
  281. package/dist/Tag.js +0 -1471
  282. package/dist/Tag.js.map +0 -1
  283. package/dist/Types.d.ts +0 -8
  284. package/dist/Types.js +0 -54
  285. package/dist/Types.js.map +0 -1
  286. package/dist/Validators.d.ts +0 -7
  287. package/dist/Validators.js +0 -54
  288. package/dist/Validators.js.map +0 -1
  289. package/dist/attributes/AddClassIf.d.ts +0 -4
  290. package/dist/attributes/AddClassIf.js +0 -93
  291. package/dist/attributes/AddClassIf.js.map +0 -1
  292. package/dist/attributes/Bind.d.ts +0 -24
  293. package/dist/attributes/Bind.js +0 -273
  294. package/dist/attributes/Bind.js.map +0 -1
  295. package/dist/attributes/ComponentAttribute.d.ts +0 -5
  296. package/dist/attributes/ComponentAttribute.js +0 -110
  297. package/dist/attributes/ComponentAttribute.js.map +0 -1
  298. package/dist/attributes/ControllerAttribute.d.ts +0 -11
  299. package/dist/attributes/ControllerAttribute.js +0 -127
  300. package/dist/attributes/ControllerAttribute.js.map +0 -1
  301. package/dist/attributes/DisableIf.d.ts +0 -5
  302. package/dist/attributes/DisableIf.js +0 -94
  303. package/dist/attributes/DisableIf.js.map +0 -1
  304. package/dist/attributes/Exec.d.ts +0 -10
  305. package/dist/attributes/Exec.js +0 -133
  306. package/dist/attributes/Exec.js.map +0 -1
  307. package/dist/attributes/Format.d.ts +0 -5
  308. package/dist/attributes/Format.js +0 -99
  309. package/dist/attributes/Format.js.map +0 -1
  310. package/dist/attributes/If.d.ts +0 -11
  311. package/dist/attributes/If.js +0 -159
  312. package/dist/attributes/If.js.map +0 -1
  313. package/dist/attributes/JSONAttribute.d.ts +0 -5
  314. package/dist/attributes/JSONAttribute.js +0 -119
  315. package/dist/attributes/JSONAttribute.js.map +0 -1
  316. package/dist/attributes/KeyAbstract.d.ts +0 -7
  317. package/dist/attributes/KeyAbstract.js +0 -117
  318. package/dist/attributes/KeyAbstract.js.map +0 -1
  319. package/dist/attributes/KeyDown.d.ts +0 -4
  320. package/dist/attributes/KeyDown.js +0 -88
  321. package/dist/attributes/KeyDown.js.map +0 -1
  322. package/dist/attributes/KeyUp.d.ts +0 -4
  323. package/dist/attributes/KeyUp.js +0 -88
  324. package/dist/attributes/KeyUp.js.map +0 -1
  325. package/dist/attributes/LazyAttribute.d.ts +0 -8
  326. package/dist/attributes/LazyAttribute.js +0 -122
  327. package/dist/attributes/LazyAttribute.js.map +0 -1
  328. package/dist/attributes/List.d.ts +0 -18
  329. package/dist/attributes/List.js +0 -396
  330. package/dist/attributes/List.js.map +0 -1
  331. package/dist/attributes/ListItem.d.ts +0 -12
  332. package/dist/attributes/ListItem.js +0 -119
  333. package/dist/attributes/ListItem.js.map +0 -1
  334. package/dist/attributes/ListItemModel.d.ts +0 -4
  335. package/dist/attributes/ListItemModel.js +0 -39
  336. package/dist/attributes/ListItemModel.js.map +0 -1
  337. package/dist/attributes/ModelAttribute.d.ts +0 -5
  338. package/dist/attributes/ModelAttribute.js +0 -41
  339. package/dist/attributes/ModelAttribute.js.map +0 -1
  340. package/dist/attributes/Name.d.ts +0 -6
  341. package/dist/attributes/Name.js +0 -88
  342. package/dist/attributes/Name.js.map +0 -1
  343. package/dist/attributes/On.d.ts +0 -9
  344. package/dist/attributes/On.js +0 -135
  345. package/dist/attributes/On.js.map +0 -1
  346. package/dist/attributes/PersistAttribute.d.ts +0 -15
  347. package/dist/attributes/PersistAttribute.js +0 -215
  348. package/dist/attributes/PersistAttribute.js.map +0 -1
  349. package/dist/attributes/Referenced.d.ts +0 -3
  350. package/dist/attributes/Referenced.js +0 -38
  351. package/dist/attributes/Referenced.js.map +0 -1
  352. package/dist/attributes/RootAttribute.d.ts +0 -7
  353. package/dist/attributes/RootAttribute.js +0 -141
  354. package/dist/attributes/RootAttribute.js.map +0 -1
  355. package/dist/attributes/ScopeAttribute.d.ts +0 -9
  356. package/dist/attributes/ScopeAttribute.js +0 -152
  357. package/dist/attributes/ScopeAttribute.js.map +0 -1
  358. package/dist/attributes/ScopeChange.d.ts +0 -10
  359. package/dist/attributes/ScopeChange.js +0 -153
  360. package/dist/attributes/ScopeChange.js.map +0 -1
  361. package/dist/attributes/ScriptAttribute.d.ts +0 -4
  362. package/dist/attributes/ScriptAttribute.js +0 -45
  363. package/dist/attributes/ScriptAttribute.js.map +0 -1
  364. package/dist/attributes/ServiceAttribute.d.ts +0 -7
  365. package/dist/attributes/ServiceAttribute.js +0 -45
  366. package/dist/attributes/ServiceAttribute.js.map +0 -1
  367. package/dist/attributes/SetAttribute.d.ts +0 -11
  368. package/dist/attributes/SetAttribute.js +0 -146
  369. package/dist/attributes/SetAttribute.js.map +0 -1
  370. package/dist/attributes/StandardAttribute.d.ts +0 -15
  371. package/dist/attributes/StandardAttribute.js +0 -170
  372. package/dist/attributes/StandardAttribute.js.map +0 -1
  373. package/dist/attributes/StyleAttribute.d.ts +0 -14
  374. package/dist/attributes/StyleAttribute.js +0 -218
  375. package/dist/attributes/StyleAttribute.js.map +0 -1
  376. package/dist/attributes/StyleVarAttribute.d.ts +0 -11
  377. package/dist/attributes/StyleVarAttribute.js +0 -124
  378. package/dist/attributes/StyleVarAttribute.js.map +0 -1
  379. package/dist/attributes/TemplateAttribute.d.ts +0 -5
  380. package/dist/attributes/TemplateAttribute.js +0 -89
  381. package/dist/attributes/TemplateAttribute.js.map +0 -1
  382. package/dist/attributes/TypeAttribute.d.ts +0 -5
  383. package/dist/attributes/TypeAttribute.js +0 -104
  384. package/dist/attributes/TypeAttribute.js.map +0 -1
  385. package/dist/attributes/XHRAttribute.d.ts +0 -14
  386. package/dist/attributes/XHRAttribute.js +0 -242
  387. package/dist/attributes/XHRAttribute.js.map +0 -1
  388. package/dist/attributes/_imports.d.ts +0 -32
  389. package/dist/attributes/_imports.js +0 -68
  390. package/dist/attributes/_imports.js.map +0 -1
  391. package/dist/contrib/XHR.d.ts +0 -21
  392. package/dist/contrib/XHR.js +0 -78
  393. package/dist/contrib/XHR.js.map +0 -1
  394. package/dist/contrib/_imports.d.ts +0 -1
  395. package/dist/contrib/_imports.js +0 -6
  396. package/dist/contrib/_imports.js.map +0 -1
  397. package/dist/custom-elements.d.ts +0 -9
  398. package/dist/custom-elements.js +0 -44
  399. package/dist/custom-elements.js.map +0 -1
  400. package/dist/demo/ServiceDemo.d.ts +0 -5
  401. package/dist/demo/ServiceDemo.js +0 -87
  402. package/dist/demo/ServiceDemo.js.map +0 -1
  403. package/dist/demo.d.ts +0 -2
  404. package/dist/demo.js +0 -17
  405. package/dist/demo.js.map +0 -1
  406. package/dist/helpers/DOMHelper.d.ts +0 -3
  407. package/dist/helpers/DOMHelper.js +0 -81
  408. package/dist/helpers/DOMHelper.js.map +0 -1
  409. package/dist/helpers/ElementHelper.d.ts +0 -4
  410. package/dist/helpers/ElementHelper.js +0 -53
  411. package/dist/helpers/ElementHelper.js.map +0 -1
  412. package/dist/helpers/VisionHelper.d.ts +0 -13
  413. package/dist/helpers/VisionHelper.js +0 -148
  414. package/dist/helpers/VisionHelper.js.map +0 -1
  415. package/dist/helpers/decorators.d.ts +0 -5
  416. package/dist/helpers/decorators.js +0 -59
  417. package/dist/helpers/decorators.js.map +0 -1
  418. package/dist/version.d.ts +0 -1
  419. package/dist/version.js +0 -5
  420. package/dist/version.js.map +0 -1
  421. package/dist/vsn.d.ts +0 -36
  422. package/dist/vsn.js +0 -201
  423. package/dist/vsn.js.map +0 -1
  424. package/karma.conf.js +0 -34
  425. package/src/AST/ArithmeticNode.ts +0 -52
  426. package/src/AST/ArrayNode.ts +0 -39
  427. package/src/AST/AsNode.ts +0 -32
  428. package/src/AST/AssignmentNode.ts +0 -256
  429. package/src/AST/BlockNode.ts +0 -25
  430. package/src/AST/BooleanLiteralNode.ts +0 -10
  431. package/src/AST/ClassNode.ts +0 -267
  432. package/src/AST/ComparisonNode.ts +0 -57
  433. package/src/AST/ConditionalNode.ts +0 -36
  434. package/src/AST/DispatchEventNode.ts +0 -58
  435. package/src/AST/ElementAttributeNode.ts +0 -97
  436. package/src/AST/ElementQueryNode.ts +0 -48
  437. package/src/AST/ElementStyleNode.ts +0 -74
  438. package/src/AST/ForStatementNode.ts +0 -59
  439. package/src/AST/FunctionArgumentNode.ts +0 -27
  440. package/src/AST/FunctionCallNode.ts +0 -93
  441. package/src/AST/FunctionNode.ts +0 -82
  442. package/src/AST/IfStatementNode.ts +0 -67
  443. package/src/AST/InNode.ts +0 -46
  444. package/src/AST/IndexNode.ts +0 -64
  445. package/src/AST/LiteralNode.ts +0 -17
  446. package/src/AST/LoopNode.ts +0 -35
  447. package/src/AST/ModifierNode.ts +0 -32
  448. package/src/AST/NamedStackNode.ts +0 -83
  449. package/src/AST/Node.ts +0 -104
  450. package/src/AST/NotNode.ts +0 -41
  451. package/src/AST/NumberLiteralNode.ts +0 -14
  452. package/src/AST/ObjectNode.ts +0 -55
  453. package/src/AST/OnNode.ts +0 -23
  454. package/src/AST/RootScopeMemberNode.ts +0 -27
  455. package/src/AST/ScopeMemberNode.ts +0 -63
  456. package/src/AST/ScopeNodeAbstract.ts +0 -21
  457. package/src/AST/StringFormatNode.ts +0 -43
  458. package/src/AST/UnitLiteralNode.ts +0 -51
  459. package/src/AST/WASM/Context.ts +0 -12
  460. package/src/AST/WASM/Function.ts +0 -67
  461. package/src/AST/WASM/Memory.ts +0 -21
  462. package/src/AST/WASM/Section.ts +0 -6
  463. package/src/AST/WASM.ts +0 -244
  464. package/src/AST/WithNode.ts +0 -68
  465. package/src/AST/XHRNode.ts +0 -85
  466. package/src/AST.ts +0 -969
  467. package/src/Attribute.ts +0 -130
  468. package/src/Bencmark.ts +0 -184
  469. package/src/Component.ts +0 -63
  470. package/src/Configuration.ts +0 -47
  471. package/src/Controller.ts +0 -36
  472. package/src/DOM/AbstractDOM.ts +0 -465
  473. package/src/DOM/DOMObject.ts +0 -77
  474. package/src/DOM/ShadowDOM.ts +0 -15
  475. package/src/DOM/WrappedDocument.ts +0 -9
  476. package/src/DOM/WrappedWindow.ts +0 -21
  477. package/src/DOM.ts +0 -13
  478. package/src/EventDispatcher.ts +0 -234
  479. package/src/Formats.ts +0 -33
  480. package/src/MessageList.ts +0 -85
  481. package/src/Model.ts +0 -44
  482. package/src/Modifiers.ts +0 -54
  483. package/src/Query.ts +0 -17
  484. package/src/Registry.ts +0 -141
  485. package/src/Scope/DynamicScopeData.ts +0 -27
  486. package/src/Scope/ObjectAccessor.ts +0 -21
  487. package/src/Scope/QueryReference.ts +0 -29
  488. package/src/Scope/ScopeAbstract.ts +0 -11
  489. package/src/Scope/ScopeData.ts +0 -20
  490. package/src/Scope/ScopeDataAbstract.ts +0 -200
  491. package/src/Scope/ScopeObject.ts +0 -3
  492. package/src/Scope/ScopeReference.ts +0 -30
  493. package/src/Scope/ScopedVariableType.ts +0 -7
  494. package/src/Scope/WrappedArray.ts +0 -134
  495. package/src/Scope/properties/ArrayProperty.ts +0 -46
  496. package/src/Scope/properties/FloatProperty.ts +0 -5
  497. package/src/Scope/properties/IntegerProperty.ts +0 -5
  498. package/src/Scope/properties/Property.ts +0 -173
  499. package/src/Scope/properties/_imports.ts +0 -4
  500. package/src/Scope.ts +0 -333
  501. package/src/Service.ts +0 -24
  502. package/src/Tag/ShadowRootTag.ts +0 -5
  503. package/src/Tag/SlotTag.ts +0 -5
  504. package/src/Tag/SlottedTag.ts +0 -17
  505. package/src/Tag/TagList.ts +0 -52
  506. package/src/Tag.ts +0 -838
  507. package/src/Types.ts +0 -34
  508. package/src/Validators.ts +0 -45
  509. package/src/attributes/AddClassIf.ts +0 -14
  510. package/src/attributes/Bind.ts +0 -144
  511. package/src/attributes/ComponentAttribute.ts +0 -23
  512. package/src/attributes/ControllerAttribute.ts +0 -50
  513. package/src/attributes/DisableIf.ts +0 -16
  514. package/src/attributes/Exec.ts +0 -32
  515. package/src/attributes/Format.ts +0 -18
  516. package/src/attributes/If.ts +0 -40
  517. package/src/attributes/JSONAttribute.ts +0 -40
  518. package/src/attributes/KeyAbstract.ts +0 -28
  519. package/src/attributes/KeyDown.ts +0 -10
  520. package/src/attributes/KeyUp.ts +0 -10
  521. package/src/attributes/LazyAttribute.ts +0 -30
  522. package/src/attributes/List.ts +0 -210
  523. package/src/attributes/ListItem.ts +0 -30
  524. package/src/attributes/ListItemModel.ts +0 -7
  525. package/src/attributes/ModelAttribute.ts +0 -8
  526. package/src/attributes/Name.ts +0 -16
  527. package/src/attributes/On.ts +0 -39
  528. package/src/attributes/PersistAttribute.ts +0 -83
  529. package/src/attributes/Referenced.ts +0 -5
  530. package/src/attributes/RootAttribute.ts +0 -24
  531. package/src/attributes/ScopeAttribute.ts +0 -40
  532. package/src/attributes/ScopeChange.ts +0 -35
  533. package/src/attributes/ScriptAttribute.ts +0 -9
  534. package/src/attributes/ServiceAttribute.ts +0 -13
  535. package/src/attributes/SetAttribute.ts +0 -44
  536. package/src/attributes/StandardAttribute.ts +0 -72
  537. package/src/attributes/StyleAttribute.ts +0 -90
  538. package/src/attributes/StyleVarAttribute.ts +0 -40
  539. package/src/attributes/TemplateAttribute.ts +0 -12
  540. package/src/attributes/TypeAttribute.ts +0 -23
  541. package/src/attributes/XHRAttribute.ts +0 -109
  542. package/src/attributes/_imports.ts +0 -32
  543. package/src/contrib/XHR.ts +0 -46
  544. package/src/contrib/_imports.ts +0 -1
  545. package/src/custom-elements.ts +0 -46
  546. package/src/demo/ServiceDemo.ts +0 -12
  547. package/src/demo.ts +0 -2
  548. package/src/helpers/DOMHelper.ts +0 -17
  549. package/src/helpers/ElementHelper.ts +0 -26
  550. package/src/helpers/VisionHelper.ts +0 -88
  551. package/src/helpers/decorators.ts +0 -11
  552. package/src/version.ts +0 -2
  553. package/src/vsn.ts +0 -106
  554. package/test/AST/ArithmeticAssignmentNode.spec.ts +0 -45
  555. package/test/AST/ClassNode.spec.ts +0 -175
  556. package/test/AST/FunctionNode.spec.ts +0 -51
  557. package/test/AST/StringFormatNode.spec.ts +0 -12
  558. package/test/AST/WASM.spec.ts +0 -63
  559. package/test/AST/XHRNode.spec.ts +0 -10
  560. package/test/AST.spec.ts +0 -353
  561. package/test/Controller.spec.ts +0 -42
  562. package/test/DOM.spec.ts +0 -63
  563. package/test/EventDispatcher.spec.ts +0 -191
  564. package/test/MessageList.spec.ts +0 -101
  565. package/test/Model/DataModel.spec.ts +0 -0
  566. package/test/Scope/DynamicScopeData.spec.ts +0 -141
  567. package/test/Scope/ScopeData.spec.ts +0 -58
  568. package/test/Scope/WrappedArray.spec.ts +0 -11
  569. package/test/Scope/properties/ArrayProperty.spec.ts +0 -23
  570. package/test/Scope.spec.ts +0 -69
  571. package/test/Tag/TagList.spec.ts +0 -21
  572. package/test/Tag.spec.ts +0 -4
  573. package/test/attributes/Bind.spec.ts +0 -174
  574. package/test/attributes/JSONAttribute.spec.ts +0 -91
  575. package/test/attributes/ListItem.spec.ts +0 -118
  576. package/test/attributes/ScopeAttribute.spec.ts +0 -35
  577. package/test/attributes/ServiceAttribute.spec.ts +0 -41
  578. package/test/attributes/SetAttribute.spec.ts +0 -55
  579. package/test/attributes/Styles.spec.ts +0 -43
  580. package/test/globals.js +0 -2
  581. package/tsconfig.base.json +0 -17
  582. package/tsconfig.json +0 -6
  583. package/tsconfig.test.json +0 -7
  584. package/types/vsn-component.d.ts +0 -5
  585. package/webpack.config.js +0 -48
  586. package/webpack.development.js +0 -6
  587. package/webpack.production.js +0 -5
@@ -1,267 +0,0 @@
1
- import {Scope} from "../Scope";
2
- import {DOM} from "../DOM";
3
- import {Tag} from "../Tag";
4
- import {Token, TokenType, Tree, TreeNode} from "../AST";
5
- import {INodeMeta, Node} from "./Node";
6
- import {BlockNode} from "./BlockNode";
7
- import {Registry} from "../Registry";
8
- import {OnNode} from "./OnNode";
9
- import {FunctionNode} from "./FunctionNode";
10
-
11
- export class ClassNode extends Node implements TreeNode {
12
- public static readonly ClassesVariable = '_vsn_classes';
13
- public static readonly classes: {[name: string]: ClassNode} = {};
14
- public static readonly classParents: {[name: string]: string[]} = {};
15
- public static readonly classChildren: {[name: string]: string[]} = {}; // List of child class selectors for a given class selector
16
- public static readonly preppedTags: {[name: string]: Tag[]} = {};
17
- public static readonly preppingElements: {[name: string]: HTMLElement[]} = {};
18
-
19
- protected requiresPrep: boolean = true;
20
- public readonly classScope: Scope = new Scope();
21
- protected _fullSelector: string;
22
- protected _parentSelector: string;
23
-
24
- constructor(
25
- public readonly selector: string,
26
- public readonly block: BlockNode
27
- ) {
28
- super();
29
- }
30
-
31
- public get fullSelector(): string {
32
- return this._fullSelector;
33
- }
34
-
35
- public updateMeta(meta?: any) {
36
- meta = meta || {};
37
- meta['ClassNode'] = this;
38
- return meta;
39
- }
40
-
41
- public async prepare(scope: Scope, dom: DOM, tag: Tag = null, meta?: INodeMeta): Promise<void> {
42
- meta = Object.assign({}, meta) || {};
43
- const initial = !!meta['initial'];
44
- let root: boolean = false;
45
- meta['ClassNodePrepare'] = initial;
46
-
47
- // Only prepare once during the initial prep, all subsequent prepares are on tag class blocks
48
- if (initial) {
49
- if (meta['ClassNodeSelector']) {
50
- this._parentSelector = meta['ClassNodeSelector'] as string;
51
- ClassNode.classChildren[meta['ClassNodeSelector'] as string].push(this.selector);
52
- meta['ClassNodeSelector'] = `${meta['ClassNodeSelector']} ${this.selector}`;
53
- } else {
54
- root = true;
55
- meta['ClassNodeSelector'] = this.selector;
56
- }
57
-
58
- this._fullSelector = meta['ClassNodeSelector'];
59
- if (ClassNode.classes[this._fullSelector]) return; // Don't re-prepare same classes
60
- ClassNode.classes[this._fullSelector] = this;
61
- ClassNode.classChildren[this._fullSelector] = [];
62
- ClassNode.preppedTags[this._fullSelector] = [];
63
- ClassNode.preppingElements[this._fullSelector] = []
64
-
65
- if (ClassNode.classParents[this.selector] === undefined)
66
- ClassNode.classParents[this.selector] = [];
67
-
68
- ClassNode.classParents[this.selector].push(this._fullSelector);
69
- await this.block.prepare(this.classScope, dom, tag, meta);
70
- Registry.class(this);
71
-
72
- if (root) {
73
- if (dom.built)
74
- await this.findClassElements(dom);
75
- dom.on('built', () => this.findClassElements(dom));
76
- }
77
- } else if (meta['PrepForSelector'] === this.fullSelector) { // Only prepare top level class if we're prepping for tag
78
- await this.block.prepare(tag.scope, dom, tag, meta);
79
- }
80
- }
81
-
82
- public async findClassElements(dom: DOM, tag: Tag = null) {
83
- const tags: Tag[] = [];
84
- for (const element of Array.from(dom.querySelectorAll(this.fullSelector, tag))) {
85
- if (ClassNode.preppingElements[this._fullSelector].indexOf(element as HTMLElement) > -1) continue;
86
- ClassNode.preppingElements[this._fullSelector].push(element as HTMLElement);
87
- tags.push(await ClassNode.addElementClass(this._fullSelector, element as HTMLElement, dom, element[Tag.TaggedVariable] || null));
88
- ClassNode.preppingElements[this._fullSelector].splice(ClassNode.preppingElements[this._fullSelector].indexOf(element as HTMLElement), 1);
89
- }
90
-
91
- for (const childSelector of ClassNode.classChildren[this._fullSelector]) {
92
- const node = ClassNode.classes[`${this._fullSelector} ${childSelector}`];
93
- if (!node) continue;
94
- for (const _tag of tags) {
95
- await node.findClassElements(dom, _tag);
96
- }
97
- }
98
- }
99
-
100
- public async constructTag(tag: Tag, dom: DOM, hasConstruct: boolean | null = null) {
101
- if (ClassNode.preppedTags[this.fullSelector].indexOf(tag) !== -1) {
102
- return;
103
- }
104
- ClassNode.preppedTags[this.fullSelector].push(tag);
105
- tag.once('deconstruct', (_tag) => {
106
- const index = ClassNode.preppedTags[this.fullSelector].indexOf(_tag);
107
- if (index > -1)
108
- ClassNode.preppedTags[this.fullSelector].splice(index, 1);
109
- });
110
-
111
- if (hasConstruct === null)
112
- hasConstruct = this.classScope.has('construct');
113
-
114
- tag.createScope(true);
115
- const meta = this.updateMeta();
116
- meta['PrepForSelector'] = this.fullSelector;
117
- await this.block.prepare(tag.scope, dom, tag, meta);
118
- if (hasConstruct) {
119
- const fncCls: FunctionNode = this.classScope.get('construct') as FunctionNode;
120
- const fnc = await fncCls.getFunction(tag.scope, dom, tag, true);
121
- await fnc();
122
- await fncCls.collectGarbage();
123
- }
124
- tag.dispatch(`${this.fullSelector}.construct`, tag.element.id);
125
- ClassNode.addPreparedClassToElement(tag.element, this.fullSelector);
126
- }
127
-
128
- public async deconstructTag(tag: Tag, dom: DOM, hasDeconstruct: boolean | null = null) {
129
- if (hasDeconstruct === null)
130
- hasDeconstruct = this.classScope.has('deconstruct');
131
-
132
- if (hasDeconstruct) {
133
- const fncCls: FunctionNode = this.classScope.get('deconstruct') as FunctionNode;
134
- const fnc = await fncCls.getFunction(tag.scope, dom, tag, true);
135
- await fnc();
136
- await fncCls.collectGarbage();
137
- }
138
- for (const key of this.classScope.keys) {
139
- if (this.classScope.get(key) instanceof OnNode) {
140
- const on = this.classScope.get(key) as OnNode;
141
- tag.removeContextEventHandlers(on);
142
- }
143
- }
144
- tag.dispatch(`${this.fullSelector}.deconstruct`);
145
- ClassNode.preppedTags[this.fullSelector].splice(ClassNode.preppedTags[this.fullSelector].indexOf(tag), 1);
146
- ClassNode.removePreparedClassFromElement(tag.element, this.fullSelector);
147
- }
148
-
149
- protected async _evaluate(scope: Scope, dom: DOM, tag: Tag = null) {
150
- return null;
151
- }
152
-
153
- public static parse(lastNode, token, tokens: Token[]): ClassNode {
154
- let selector = tokens.shift().value;
155
- if (selector.startsWith('>'))
156
- selector = `:scope ${selector}`;
157
- const block = Tree.processTokens(Tree.getNextStatementTokens(tokens, true, true));
158
- return new ClassNode(selector.trim(), block);
159
- }
160
-
161
- public getSelectorPath(): string[] {
162
- const path: string[] = [this.selector];
163
- let current = this._parentSelector;
164
- while (current) {
165
- path.push(ClassNode.classes[current].selector);
166
- current = ClassNode.classes[current]._parentSelector;
167
- }
168
- return path.reverse();
169
- }
170
-
171
- public static async checkForClassChanges(element: HTMLElement, dom: DOM, tag: Tag = null) {
172
- const localSelectors: string[] = [element.tagName.toLowerCase(), ...Array.from(element.classList).map(c => `.${c}`)];
173
- const fullSelectors: string[] = [...ClassNode.getClassesForElement(element)];
174
- if (element.id)
175
- localSelectors.push(`#${element.id}`);
176
-
177
- for (const selector of localSelectors) {
178
- const parentSelectors = ClassNode.classParents[selector];
179
- if (parentSelectors) {
180
- fullSelectors.push(...parentSelectors.filter(s => !fullSelectors.includes(s)));
181
- }
182
- }
183
-
184
- if (!tag) {
185
- tag = await dom.getTagForElement(element, true);
186
- }
187
-
188
- for (const selector of fullSelectors) {
189
- const isPrepped = ClassNode.getClassesForElement(element).includes(selector);
190
- const path = ClassNode.classes[selector]?.getSelectorPath();
191
- const elements = dom.querySelectPath(path);
192
- const inElements = elements.includes(element);
193
- let changed: boolean = false;
194
-
195
- if (inElements && !isPrepped) {
196
- await ClassNode.addElementClass(selector, element, dom, tag);
197
- changed = true;
198
- } else if (!inElements && isPrepped) {
199
- await ClassNode.removeElementClass(selector, element, dom, tag);
200
- changed = true;
201
- }
202
-
203
- if (changed && ClassNode.classChildren[selector].length > 0) {
204
- for (const childSelector of ClassNode.classChildren[selector]) {
205
- for (const childElement of Array.from(dom.querySelectorAll(childSelector, tag)) as HTMLElement[]) {
206
- await ClassNode.checkForClassChanges(childElement, dom, childElement[Tag.TaggedVariable] || null);
207
- }
208
- }
209
- }
210
-
211
- }
212
- }
213
-
214
- public static getClassesForElement(element: HTMLElement): string[] {
215
- if (!element[ClassNode.ClassesVariable])
216
- element[ClassNode.ClassesVariable] = [];
217
- return element[ClassNode.ClassesVariable];
218
- }
219
-
220
- public static addPreparedClassToElement(element: HTMLElement, selector: string) {
221
- ClassNode.getClassesForElement(element).push(selector);
222
- }
223
-
224
- public static removePreparedClassFromElement(element: HTMLElement, selector: string) {
225
- const classes = ClassNode.getClassesForElement(element);
226
- classes.splice(classes.indexOf(selector), 1);
227
- }
228
-
229
- public static async addElementClass(selector: string, element: HTMLElement, dom: DOM, tag: Tag = null) {
230
- const classes = ClassNode.getClassesForElement(element);
231
- if (classes.includes(selector)) return;
232
-
233
- if (!tag) {
234
- tag = await dom.getTagForElement(element, true);
235
- }
236
-
237
- if (!tag) {
238
- console.error('no tag found for element', element);
239
- return;
240
- }
241
-
242
- const classNode: ClassNode = Registry.instance.classes.getSynchronous(selector);
243
- if (classNode) {
244
- await classNode.constructTag(tag, dom);
245
- }
246
-
247
- return tag;
248
- }
249
-
250
- public static async removeElementClass(selector: string, element: HTMLElement, dom: DOM, tag: Tag = null) {
251
- const classes = ClassNode.getClassesForElement(element);
252
- if (!classes.includes(selector)) return;
253
-
254
- if (!tag) {
255
- tag = await dom.getTagForElement(element, true);
256
- }
257
-
258
- const classNode: ClassNode = Registry.instance.classes.getSynchronous(selector);
259
- if (classNode) {
260
- await classNode.deconstructTag(tag, dom);
261
- }
262
- }
263
-
264
- public static isClass(cls: string): boolean {
265
- return !!this.classes[cls];
266
- }
267
- }
@@ -1,57 +0,0 @@
1
- import {Scope} from "../Scope";
2
- import {DOM} from "../DOM";
3
- import {Tag} from "../Tag";
4
- import {Token, TokenType, Tree, TreeNode} from "../AST";
5
- import {Node} from "./Node";
6
-
7
- export class ComparisonNode extends Node implements TreeNode {
8
- constructor(
9
- public readonly left: Node,
10
- public readonly right: Node,
11
- public readonly type: TokenType
12
- ) {
13
- super();
14
- }
15
-
16
- protected _getChildNodes(): Node[] {
17
- return [
18
- this.left as Node,
19
- this.right as Node
20
- ];
21
- }
22
-
23
- protected async _evaluate(scope: Scope, dom: DOM, tag: Tag = null) {
24
- const left: any = await this.left.evaluate(scope, dom, tag);
25
- const right: any = await this.right.evaluate(scope, dom, tag);
26
- switch (this.type) {
27
- case TokenType.EQUALS:
28
- return left === right;
29
- case TokenType.NOT_EQUALS:
30
- return left !== right;
31
- case TokenType.GREATER_THAN:
32
- return left > right;
33
- case TokenType.LESS_THAN:
34
- return left < right;
35
- case TokenType.GREATER_THAN_EQUAL:
36
- return left >= right;
37
- case TokenType.LESS_THAN_EQUAL:
38
- return left <= right;
39
- }
40
- }
41
-
42
- public static match(tokens: Token[]): boolean {
43
- return [
44
- TokenType.EQUALS,
45
- TokenType.NOT_EQUALS,
46
- TokenType.GREATER_THAN,
47
- TokenType.LESS_THAN,
48
- TokenType.GREATER_THAN_EQUAL,
49
- TokenType.LESS_THAN_EQUAL
50
- ].indexOf(tokens[0].type) > -1
51
- }
52
-
53
- public static parse(lastNode, token, tokens: Token[]) {
54
- tokens.splice(0, 1); // Remove comparison operator
55
- return new ComparisonNode(lastNode, Tree.processTokens(Tree.getNextStatementTokens(tokens)), token.type)
56
- }
57
- }
@@ -1,36 +0,0 @@
1
- import {Scope} from "../Scope";
2
- import {DOM} from "../DOM";
3
- import {Tag} from "../Tag";
4
- import {WrappedArray} from "../Scope/WrappedArray";
5
- import {TreeNode} from "../AST";
6
- import {BlockNode} from "./BlockNode";
7
- import {Node} from "./Node";
8
-
9
- export class ConditionalNode extends Node implements TreeNode {
10
- constructor(
11
- public readonly condition: Node,
12
- public readonly block: BlockNode
13
- ) {
14
- super();
15
- }
16
-
17
- protected _getChildNodes(): Node[] {
18
- return [
19
- this.condition as Node,
20
- this.block as Node
21
- ];
22
- }
23
-
24
- protected async _evaluate(scope: Scope, dom: DOM, tag: Tag = null) {
25
- const condition = await this.condition.evaluate(scope, dom, tag);
26
- let evaluation = false;
27
-
28
- if (condition instanceof WrappedArray) {
29
- evaluation = condition.length > 0;
30
- } else {
31
- evaluation = !!condition;
32
- }
33
-
34
- return evaluation;
35
- }
36
- }
@@ -1,58 +0,0 @@
1
- import {Scope} from "../Scope";
2
- import {DOM} from "../DOM";
3
- import {Tag} from "../Tag";
4
- import {Token, TokenType, Tree, TreeNode} from "../AST";
5
- import {Node} from "./Node";
6
- import {ObjectNode} from "./ObjectNode";
7
- import {ScopeData} from "../Scope/ScopeData";
8
- import {ElementQueryNode} from "./ElementQueryNode";
9
-
10
- export class DispatchEventNode extends Node implements TreeNode {
11
- constructor(
12
- public readonly name: string,
13
- public readonly data: ObjectNode | null,
14
- public readonly bubbles: boolean = false,
15
- public readonly elementRef: ElementQueryNode | null,
16
- ) {
17
- super();
18
- }
19
-
20
- protected _getChildNodes(): Node[] {
21
- const nodes: Node[] = [];
22
- if (this.data)
23
- nodes.push(this.data);
24
- return nodes;
25
- }
26
-
27
- protected async _evaluate(scope: Scope, dom: DOM, tag: Tag = null) {
28
- let detail = this.data ? (await this.data.evaluate(scope, dom, tag)).objectify : {};
29
- if (detail instanceof Scope)
30
- detail = detail.data.getData();
31
- else if (detail instanceof ScopeData)
32
- detail = detail.getData();
33
-
34
- let targets: Tag[] = [tag];
35
- if (this.elementRef) {
36
- targets = await this.elementRef.evaluate(scope, dom, tag, true);
37
- }
38
-
39
- for (const target of targets) {
40
- detail['source'] = target.element;
41
- target.element.dispatchEvent(new CustomEvent(this.name, {
42
- bubbles: this.bubbles,
43
- detail: detail
44
- }));
45
- }
46
- }
47
-
48
- public static parse(lastNode, token, tokens: Token[]) {
49
- const name = tokens.shift();
50
- let data: ObjectNode = null;
51
- if (tokens.length && tokens[0].type === TokenType.L_BRACE) {
52
- const containedTokens = Tree.getNextStatementTokens(tokens, false, false, true);
53
- data = Tree.processTokens(containedTokens).statements[0] as ObjectNode;
54
- }
55
- const elementRef = lastNode instanceof ElementQueryNode ? lastNode : null;
56
- return new DispatchEventNode(name.value, data, name.full.startsWith('!!!'), elementRef);
57
- }
58
- }
@@ -1,97 +0,0 @@
1
- import {Scope} from "../Scope";
2
- import {DOM} from "../DOM";
3
- import {Tag} from "../Tag";
4
- import {TagList} from "../Tag/TagList";
5
- import {TreeNode} from "../AST";
6
- import {Node} from "./Node";
7
- import {ElementQueryNode} from "./ElementQueryNode";
8
- import {LiteralNode} from "./LiteralNode";
9
- import {DOMObject} from "../DOM/DOMObject";
10
- import {IndexNode} from "./IndexNode";
11
- import {ScopeMemberNode} from "./ScopeMemberNode";
12
- import {RootScopeMemberNode} from "./RootScopeMemberNode";
13
-
14
- export class ElementAttributeNode extends Node implements TreeNode {
15
- protected requiresPrep: boolean = true;
16
-
17
- constructor(
18
- public readonly elementRef: ElementQueryNode | null,
19
- public readonly attr: string
20
- ) {
21
- super();
22
- }
23
-
24
- public get name(): LiteralNode<string> {
25
- return new LiteralNode<string>(`@${this.attributeName}`);
26
- }
27
-
28
- protected _getChildNodes(): Node[] {
29
- let nodes = [];
30
- if (this.elementRef)
31
- nodes.push(this.elementRef)
32
- return nodes;
33
- }
34
-
35
- get attributeName(): string {
36
- if (this.attr.startsWith('.'))
37
- return this.attr.substring(2);
38
- return this.attr.substring(1);
39
- }
40
-
41
- protected async _evaluate(scope: Scope, dom: DOM, tag: Tag = null) {
42
- let tags: TagList;
43
-
44
- if (this.elementRef instanceof ElementQueryNode) {
45
- tags = await this.elementRef.evaluate(scope, dom, tag, true);
46
- } else if (this.elementRef as any instanceof IndexNode) {
47
- const indexResult = await (this.elementRef as any).evaluate(scope, dom, tag, true);
48
- if (indexResult instanceof TagList) {
49
- tags = indexResult;
50
- } else {
51
- tags = new TagList(indexResult);
52
- }
53
- } else if (this.elementRef as any instanceof ScopeMemberNode || this.elementRef as any instanceof RootScopeMemberNode) {
54
- const scopeEval = await (this.elementRef as any).evaluate(scope, dom, tag, true);
55
- if (Array.isArray(scopeEval)) {
56
- tags = scopeEval as any;
57
- } else {
58
- tags = new TagList(scopeEval);
59
- }
60
- } else if (tag) {
61
- tags = new TagList(tag)
62
- } else {
63
- return;
64
- }
65
-
66
- if (tags.length === 1) {
67
- return this.getAttributeScopeValue(tags[0]);
68
- }
69
-
70
- return tags.map((tag) => this.getAttributeScopeValue(tag));
71
- }
72
-
73
- async getAttributeScopeValue(tag: Tag | DOMObject): Promise<string> {
74
- if (!(tag instanceof DOMObject)) {
75
- return '';
76
- }
77
-
78
- // Make sure the attribute is being watched
79
- await tag.watchAttribute(this.attributeName);
80
- return tag.scope.get(`@${this.attributeName}`) as string;
81
- }
82
-
83
- async prepare(scope: Scope, dom: DOM, tag: Tag = null, meta: any = null) {
84
- if (this.elementRef) {
85
- await this.elementRef.prepare(scope, dom, tag, meta);
86
- const tags: any = await this.elementRef.evaluate(scope, dom, tag, true);
87
- if (tags instanceof TagList) {
88
- for (const t of tags)
89
- await t?.watchAttribute(this.attributeName);
90
- } else if (tags instanceof DOMObject) {
91
- await (tags as DOMObject).watchAttribute(this.attributeName);
92
- }
93
- } else if (tag) {
94
- await tag.watchAttribute(this.attributeName);
95
- }
96
- }
97
- }
@@ -1,48 +0,0 @@
1
- import {Scope} from "../Scope";
2
- import {DOM} from "../DOM";
3
- import {Tag, TagState} from "../Tag";
4
- import {Token, TreeNode} from "../AST";
5
- import {Node} from "./Node";
6
- import {EQuerySelectDirection} from "../DOM/AbstractDOM";
7
-
8
- export class ElementQueryNode extends Node implements TreeNode {
9
- protected requiresPrep: boolean = true;
10
-
11
- constructor(
12
- public readonly query: string,
13
- public readonly first: boolean = false,
14
- public readonly direction: EQuerySelectDirection = EQuerySelectDirection.ALL,
15
- ) {
16
- super();
17
- }
18
-
19
- async evaluate(scope: Scope, dom: DOM, tag?: Tag, forceList: boolean = false): Promise<any> {
20
- if (scope.isGarbage || (tag && tag.state === TagState.Deconstructed))
21
- return;
22
- return await this._evaluate(scope, dom, tag, forceList);
23
- }
24
-
25
- protected async _evaluate(scope: Scope, dom: DOM, tag: Tag = null, forceList: boolean = false): Promise<any> {
26
- tag = tag || await dom.getTagForScope(scope);
27
- const elements = await dom.get(this.query, true, tag, this.direction);
28
- return this.first && !forceList ? elements[0] : elements;
29
- }
30
-
31
- async prepare(scope: Scope, dom: DOM, tag: Tag = null, meta: any = null): Promise<any> {
32
- tag = tag || await dom.getTagForScope(scope);
33
- await dom.get(this.query, true, tag);
34
- }
35
-
36
- public static parse(lastNode, token, tokens: Token[]): ElementQueryNode {
37
- tokens.shift();
38
- let first = false;
39
- let direction = EQuerySelectDirection.ALL;
40
- if (token.full.startsWith('?>')) {
41
- direction = EQuerySelectDirection.DOWN;
42
- } else if (token.full.startsWith('?<')) {
43
- direction = EQuerySelectDirection.UP;
44
- first = true;
45
- }
46
- return new ElementQueryNode(token.value, first, direction);
47
- }
48
- }
@@ -1,74 +0,0 @@
1
- import {Scope} from "../Scope";
2
- import {DOM} from "../DOM";
3
- import {Tag} from "../Tag";
4
- import {TagList} from "../Tag/TagList";
5
- import {TreeNode} from "../AST";
6
- import {Node} from "./Node";
7
- import {ElementQueryNode} from "./ElementQueryNode";
8
- import {LiteralNode} from "./LiteralNode";
9
- import {DOMObject} from "../DOM/DOMObject";
10
-
11
- export class ElementStyleNode extends Node implements TreeNode {
12
- protected requiresPrep: boolean = true;
13
-
14
- constructor(
15
- public readonly elementRef: ElementQueryNode | null,
16
- public readonly attr: string
17
- ) {
18
- super();
19
- }
20
-
21
- public get name(): LiteralNode<string> {
22
- return new LiteralNode<string>(`$${this.attributeName}`);
23
- }
24
-
25
- protected _getChildNodes(): Node[] {
26
- let nodes = [];
27
- if (this.elementRef)
28
- nodes.push(this.elementRef)
29
- return nodes;
30
- }
31
-
32
- get attributeName(): string {
33
- if (this.attr.startsWith('.'))
34
- return this.attr.substring(2);
35
- return this.attr.substring(1);
36
- }
37
-
38
- protected async _evaluate(scope: Scope, dom: DOM, tag: Tag = null) {
39
- let tags: TagList;
40
- if (this.elementRef) {
41
- tags = await this.elementRef.evaluate(scope, dom, tag, true);
42
- } else if (tag) {
43
- tags = new TagList(tag)
44
- } else {
45
- return;
46
- }
47
-
48
- if (tags instanceof DOMObject)
49
- tags = new TagList(tags);
50
-
51
- if (tags.length === 1) {
52
- return this.getAttributeStyleValue(tags[0]);
53
- }
54
-
55
- return tags.map((tag) => this.getAttributeStyleValue(tag));
56
- }
57
-
58
- async getAttributeStyleValue(tag: Tag | DOMObject): Promise<string> {
59
- // Make sure we're watching the style
60
- await tag.watchStyle(this.attributeName);
61
- return tag.scope.get(`$${this.attributeName}`);
62
- }
63
-
64
- async prepare(scope: Scope, dom: DOM, tag: Tag = null, meta: any = null) {
65
- if (this.elementRef) {
66
- await this.elementRef.prepare(scope, dom, tag, meta);
67
- const tags: TagList = await this.elementRef.evaluate(scope, dom, tag, true);
68
- for (const t of tags)
69
- await t.watchStyle(this.attributeName);
70
- } else if(tag) {
71
- await tag.watchStyle(this.attributeName);
72
- }
73
- }
74
- }