vsn 0.1.148 → 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 -1038
  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 -462
  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,210 +0,0 @@
1
- import {Attribute} from "../Attribute";
2
- import {Tag} from "../Tag";
3
- import {WrappedArray} from "../Scope/WrappedArray";
4
- import {ElementHelper} from "../helpers/ElementHelper";
5
- import {Registry} from "../Registry";
6
- import {DOM} from "../DOM";
7
- import {Scope} from "../Scope";
8
- import {ScopeData} from "../Scope/ScopeData";
9
-
10
- @Registry.attribute('vsn-list')
11
- export class List extends Attribute {
12
- public static readonly MetaItemSetupFlag = 'vsn-list-item-setup';
13
- public static readonly canDefer: boolean = false;
14
- public static readonly scoped: boolean = true;
15
-
16
- public items: any[];
17
- public tags: Tag[];
18
- protected template: Node;
19
-
20
- public async setup() {
21
- if (this.tag.element.children.length > 0) {
22
- const template = this.tag.element.children[0];
23
- const templateTag: Tag = await this.tag.dom.getTagForElement(template);
24
-
25
- if (template) {
26
- if (template.hasAttribute('vsn-template')) {
27
- templateTag.parentTag = this.tag; // Set parentTag before removing from DOM
28
- template.removeAttribute('vsn-template');
29
- this.tag.element.removeChild(template);
30
- this.template = template;
31
- } else {
32
- this.template = template.cloneNode(true);
33
- }
34
- }
35
- } else {
36
- if (this.tag.hasRawAttribute('template')) {
37
- let templateNode = await DOM.instance.exec(this.tag.getRawAttributeValue('template'));
38
- if (templateNode instanceof Array && templateNode.length === 1)
39
- templateNode = templateNode[0];
40
-
41
- this.template = templateNode.element.content.cloneNode(true);
42
- }
43
- }
44
- await super.setup();
45
- }
46
-
47
- public async extract() {
48
- const listAttr: string = this.getAttributeBinding('items');
49
- const ref = this.tag.scope.getReference(listAttr);
50
- const listScope: Scope = await ref.getScope();
51
- const listKey: string = await ref.getKey();
52
- const items = listScope.get(listKey);
53
- await this.addExistingItems(items);
54
-
55
- listScope.on(`change:${listKey}`, (e) => {
56
- if (e?.oldValue) {
57
- if (e.oldValue instanceof WrappedArray) {
58
- e.oldValue.map((item) => {
59
- this.remove(item);
60
- });
61
- e.oldValue.offWithContext('add', this);
62
- e.oldValue.offWithContext('remove', this);
63
- }
64
- this.addExistingItems(e.value);
65
- }
66
- });
67
-
68
- if (this.tag.hasRawAttribute('initial-items')) {
69
- const toAdd: number = parseInt(this.tag.getRawAttributeValue('initial-items'));
70
- for (let i = 0; i < toAdd; i++) {
71
- await this.add({});
72
- }
73
- }
74
- await super.extract();
75
- }
76
-
77
- protected async addExistingItems(defaultList: any[] | null) {
78
- this.items = defaultList || new WrappedArray();
79
-
80
- if (this.tags?.length > 0) {
81
- for (const tag of this.tags) {
82
- tag.deconstruct();
83
- tag.removeFromDOM();
84
- }
85
- }
86
-
87
- this.tags = this.tags || [];
88
- this.tags.length = 0;
89
-
90
- if (defaultList)
91
- for (const existingItem of defaultList) {
92
- await this.add(existingItem);
93
- }
94
-
95
- for (const element of Array.from(this.tag.element.querySelectorAll('*'))) {
96
- if (!ElementHelper.hasVisionAttribute(element, 'vsn-list-item'))
97
- continue;
98
-
99
- const tag: Tag = await this.tag.dom.getTagForElement(element);
100
- if (tag) {
101
- this.tags.push(tag);
102
- let listModel = tag.scope.get(this.listItemName);
103
- this.items.push(listModel?.wrapped || listModel || tag.scope.wrapped || tag.scope);
104
- }
105
- }
106
-
107
- if (!(this.items instanceof WrappedArray)) {
108
- this.items = new WrappedArray(this.items);
109
- }
110
-
111
- (this.items as WrappedArray<any>).on('add', this.add, this);
112
- (this.items as WrappedArray<any>).on('remove', this.remove, this);
113
-
114
- this.tag.scope.set('add', this.add.bind(this));
115
- this.tag.scope.set('remove', this.remove.bind(this));
116
- }
117
-
118
- public get listItemName(): string {
119
- return this.tag.getRawAttributeValue('list-item-name', 'item');
120
- }
121
-
122
- public get listItemModel(): string {
123
- return this.tag.getRawAttributeValue('list-item-model');
124
- }
125
-
126
- public remove(item: any) {
127
- for (let i: number = 0; i < this.tags.length; i++) {
128
- const tag: Tag = this.tags[i];
129
- const listItem = tag.scope.get(this.listItemName);
130
- if ([listItem, listItem.data, listItem.wrapped].indexOf(item) > -1) {
131
- tag.deconstruct();
132
- tag.removeFromDOM();
133
- this.tags.splice(i, 1);
134
-
135
- return;
136
- }
137
- }
138
- }
139
-
140
- protected async add(obj) {
141
- // Setup new HTML element
142
- const clone = this.template.cloneNode(true);
143
- let element: HTMLElement;
144
- if (clone instanceof DocumentFragment) {
145
- element = clone.children[0] as HTMLElement;
146
- } else {
147
- element = clone as HTMLElement;
148
- }
149
- delete element[Tag.TaggedVariable];
150
-
151
- // Collect raw data
152
- let data;
153
- if (obj instanceof ScopeData)
154
- data = obj.getData();
155
- else
156
- data = Object.assign({}, obj);
157
-
158
- // Setup new tag
159
- const tag = await this.tag.dom.buildTag(element, true);
160
- await this.setupTagScope(tag, obj);
161
-
162
- // Add to DOM & build
163
- this.tag.element.appendChild(element);
164
- await this.tag.dom.setupTags([tag]);
165
- await this.tag.dom.buildFrom(this.tag.element);
166
-
167
- // Make sure we're using the correct data (Template may have vsn-bind values that are not desired)
168
- const itemScope = tag.scope.get(this.listItemName);
169
- if (itemScope instanceof Scope && data) {
170
- itemScope.data.setData(data);
171
- }
172
-
173
- this.tags.push(tag);
174
- this.tag.dispatch('add', obj);
175
- }
176
-
177
- async setupTagScope(tag: Tag, obj: any) {
178
- if (tag.meta[List.MetaItemSetupFlag])
179
- return;
180
-
181
- tag.createScope(true);
182
- const itemScope = new Scope(tag.scope);
183
-
184
- // Setup new scope & model class, if defined
185
- const modelName: string = this.listItemModel;
186
- let cls;
187
- if (modelName)
188
- cls = await Registry.instance.models.get(modelName);
189
-
190
- if (cls) {
191
- if (!obj || !(obj instanceof cls)) {
192
- obj = new cls(obj);
193
- this.tag.once('$built', () => {
194
- if (obj['$built'])
195
- obj['$built'](this.tag, this.tag.scope, this.tag.element);
196
- });
197
- }
198
- }
199
-
200
- // Check if the class is set up already
201
- if (!cls || (!(itemScope.data instanceof cls) && !(itemScope.wrapped instanceof cls))) {
202
- if (itemScope.wrapped)
203
- itemScope.unwrap();
204
- itemScope.wrap(obj, true, true);
205
- }
206
-
207
- tag.scope.set(this.listItemName, itemScope);
208
- tag.meta[List.MetaItemSetupFlag] = true;
209
- }
210
- }
@@ -1,30 +0,0 @@
1
- import {Attribute} from "../Attribute";
2
- import {Tag} from "../Tag";
3
- import {List} from "./List";
4
- import {Registry} from "../Registry";
5
-
6
- @Registry.attribute('vsn-list-item')
7
- export class ListItem extends Attribute {
8
- public static readonly canDefer: boolean = false;
9
- public static readonly scoped: boolean = true;
10
- public static readonly ERROR_NO_PARENT = "Cannot find list parent.";
11
- protected _list: Tag;
12
-
13
- public get list(): Tag {
14
- return this._list;
15
- }
16
-
17
- public async setup() {
18
- this._list = this.tag.findAncestorByAttribute('vsn-list');
19
- if (!this._list)
20
- throw Error(ListItem.ERROR_NO_PARENT);
21
-
22
- const listAttr = await this.getListAttribute();
23
- await listAttr.setupTagScope(this.tag, {});
24
- await super.setup();
25
- }
26
-
27
- public async getListAttribute(): Promise<List> {
28
- return await this._list.getAttribute<List>('vsn-list');
29
- }
30
- }
@@ -1,7 +0,0 @@
1
- import {Registry} from "../Registry";
2
- import {Attribute} from "../Attribute";
3
-
4
- @Registry.attribute('vsn-list-item-model')
5
- export class ListItemModel extends Attribute {
6
- public static readonly canDefer: boolean = false;
7
- }
@@ -1,8 +0,0 @@
1
- import {ControllerAttribute} from "./ControllerAttribute";
2
- import {Registry} from "../Registry";
3
-
4
- @Registry.attribute('vsn-model')
5
- export class ModelAttribute extends ControllerAttribute {
6
- public static readonly canDefer: boolean = false;
7
- public readonly registryName: string = 'models'
8
- }
@@ -1,16 +0,0 @@
1
- import {Attribute} from "../Attribute";
2
- import {Scope} from "../Scope";
3
- import {Registry} from "../Registry";
4
-
5
- @Registry.attribute('vsn-name')
6
- export class Name extends Attribute {
7
- public static readonly canDefer: boolean = false;
8
- public static readonly scoped: boolean = true;
9
-
10
- public async setup() {
11
- const parentScope: Scope = this.tag.scope.parentScope;
12
- if (parentScope) {
13
- parentScope.set(this.getAttributeValue(), this.tag.scope);
14
- }
15
- }
16
- }
@@ -1,39 +0,0 @@
1
- import {Attribute} from "../Attribute";
2
- import {Tree} from "../AST";
3
- import {Registry} from "../Registry";
4
-
5
- @Registry.attribute('vsn-on')
6
- export abstract class On extends Attribute {
7
- protected handler: Tree;
8
- public static readonly WindowEvents: string[] = [
9
- 'abort',
10
- 'afterprint',
11
- 'beforeprint',
12
- 'error',
13
- 'hashchange',
14
- 'load',
15
- 'popstate',
16
- 'resize',
17
- 'scroll',
18
- 'unload',
19
- ];
20
-
21
- protected async getTree(): Promise<Tree> {
22
- if (!this.handler) {
23
- const code: string = this.getAttributeValue();
24
- this.handler = new Tree(code);
25
- await this.handler.prepare(this.tag.scope, this.tag.dom, this.tag);
26
- }
27
- return this.handler;
28
- }
29
-
30
- async handleEvent(e) {
31
- const tree = await this.getTree();
32
- await tree.evaluate(this.tag.scope, this.tag.dom, this.tag);
33
- }
34
-
35
- public async connect() {
36
- this.tag.addEventHandler(this.getAttributeBinding(), this.modifiers, this.handleEvent, this);
37
- await super.connect();
38
- }
39
- }
@@ -1,83 +0,0 @@
1
- import {Registry} from "../Registry";
2
- import {Attribute} from "../Attribute";
3
- import {TagState} from "../Tag";
4
-
5
-
6
- export interface IPersistedValue {
7
- attribute: string,
8
- value: string
9
- }
10
-
11
- @Registry.attribute('vsn-persist')
12
- export class PersistAttribute extends Attribute {
13
- public static readonly persistedValues: Map<string, Map<string, string | string[]>> = new Map<string, Map<string, string | string[]>>();
14
- public static readonly canDefer: boolean = true;
15
-
16
- protected valueKeys: string[] = [];
17
-
18
- public async extract() {
19
- this.valueKeys = this.getAttributeValue().split(' ').map((v: string) => v.trim()).filter((v: string) => v.length > 0);
20
- await super.extract();
21
- }
22
-
23
- public async connect() {
24
- const elementId = this.tag.element.id;
25
-
26
- if (!elementId)
27
- throw new Error('vsn-persist requires an id attribute on the element');
28
-
29
- const persistedValues = PersistAttribute.getPersistedValueStore(elementId);
30
- for (const key of this.valueKeys) {
31
- if (persistedValues.has(key)) {
32
- if (key === '@class') {
33
- const classes = persistedValues.get(key);
34
- this.tag.element.classList.remove(...Array.from(this.tag.element.classList));
35
- this.tag.element.classList.add(...classes);
36
- } else if (key.startsWith('@')) {
37
- this.tag.element.setAttribute(key.substring(1), persistedValues.get(key) as string);
38
- if (this.tag.isInput) {
39
- this.tag.once('$built', () => {
40
- this.tag.element.dispatchEvent(new Event('input'));
41
- });
42
- }
43
- } else {
44
-
45
- }
46
- }
47
- }
48
- await super.connect();
49
- }
50
-
51
- public mutate(mutation: MutationRecord) {
52
- if (this.tag.state !== TagState.Built)
53
- return;
54
-
55
- this.updateFrom();
56
- }
57
-
58
- protected updateFrom() {
59
- const elementId = this.tag.element.id;
60
- const persistedValues = PersistAttribute.getPersistedValueStore(elementId);
61
-
62
- for (const key of this.valueKeys) {
63
- if (key === '@class') {
64
- const classes = Array.from(this.tag.element.classList);
65
- persistedValues.set(key, classes);
66
- } else if (key.startsWith('@')) {
67
- persistedValues.set(key, this.tag.element.getAttribute(key.substring(1)));
68
- if (this.tag.isInput) {
69
- this.tag.dispatch('input');
70
- }
71
- } else {
72
-
73
- }
74
- }
75
- }
76
-
77
- public static getPersistedValueStore(elementId: string) {
78
- if (!PersistAttribute.persistedValues.has(elementId))
79
- PersistAttribute.persistedValues.set(elementId, new Map<string, string>());
80
-
81
- return PersistAttribute.persistedValues.get(elementId);
82
- }
83
- }
@@ -1,5 +0,0 @@
1
- import {Registry} from "../Registry";
2
- import {Attribute} from "../Attribute";
3
-
4
- @Registry.attribute('vsn-ref')
5
- export class Referenced extends Attribute {}
@@ -1,24 +0,0 @@
1
- import {Attribute} from "../Attribute";
2
- import {VisionHelper} from "../helpers/VisionHelper";
3
- import {Registry} from "../Registry";
4
-
5
- @Registry.attribute('vsn-root')
6
- export class RootAttribute extends Attribute {
7
- public static readonly canDefer: boolean = false;
8
- public static readonly scoped: boolean = true;
9
-
10
- public async setup() {
11
- this.tag.scope.set('$mobile', VisionHelper.isMobile());
12
- for (const key of Registry.instance.functions.keys) {
13
- const fn = await Registry.instance.functions.get(key);
14
- this.tag.scope.set(key, fn);
15
- }
16
-
17
- Registry.instance.functions.on('register', this.registerFunction, this);
18
- await super.setup();
19
- }
20
-
21
- public async registerFunction(name: string, fn: Function) {
22
- this.tag.scope.set(name, fn);
23
- }
24
- }
@@ -1,40 +0,0 @@
1
- import {Attribute} from "../Attribute";
2
- import {Registry} from "../Registry";
3
- import {Tree} from "../AST";
4
- import {Scope} from "../Scope";
5
-
6
- @Registry.attribute('vsn-scope')
7
- export class ScopeAttribute extends Attribute {
8
- public static readonly canDefer: boolean = false;
9
- public static readonly scoped: boolean = true;
10
- protected tree: Tree;
11
-
12
- public async compile() {
13
- const code = this.getAttributeValue();
14
- if (code) {
15
- this.tree = new Tree(code);
16
- await this.tree.prepare(this.tag.scope, this.tag.dom, this.tag);
17
- }
18
- await super.compile();
19
- }
20
-
21
- public async extract() {
22
- if (this.tree) {
23
- const binding = this.getAttributeBinding();
24
-
25
- const scope = await this.tree.evaluate(this.tag.scope, this.tag.dom, this.tag);
26
- if (!(scope instanceof Scope)) {
27
- throw new Error(`vsn-scope value must be an object, got ${typeof scope}`);
28
- }
29
-
30
- if (binding) {
31
- this.tag.scope.set(binding, scope);
32
- } else {
33
- for (const key of scope.data.keys) {
34
- this.tag.scope.set(key, scope.data[key]);
35
- }
36
- }
37
- }
38
- await super.extract();
39
- }
40
- }
@@ -1,35 +0,0 @@
1
- import {Attribute} from "../Attribute";
2
- import {Tree} from "../AST";
3
- import {ScopeReference} from "../Scope/ScopeReference";
4
- import {Registry} from "../Registry";
5
-
6
- @Registry.attribute('vsn-scope-change')
7
- export abstract class ScopeChange extends Attribute {
8
- public static readonly canDefer: boolean = false;
9
- protected handler: Tree;
10
-
11
- public async compile() {
12
- const code: string = this.getAttributeValue();
13
- this.handler = new Tree(code);
14
- await this.handler.prepare(this.tag.scope, this.tag.dom, this.tag);
15
- await super.compile();
16
- }
17
-
18
- public async connect() {
19
- const binding = this.getAttributeBinding();
20
- const ref: ScopeReference = this.tag.scope.getReference(binding, false);
21
- (await ref.getScope()).on(`change:${await ref.getKey()}`, this.handleEvent.bind(this));
22
- await super.connect();
23
- }
24
-
25
- public async disconnect() {
26
- const binding = this.getAttributeBinding();
27
- const ref: ScopeReference = this.tag.scope.getReference(binding, false);
28
- (await ref.getScope()).offWithContext(`change:${await ref.getKey()}`, this);
29
- await super.disconnect();
30
- }
31
-
32
- async handleEvent(e) {
33
- await this.handler.evaluate(this.tag.scope, this.tag.dom, this.tag);
34
- }
35
- }
@@ -1,9 +0,0 @@
1
- import {Registry} from "../Registry";
2
- import {Exec} from "./Exec";
3
-
4
- @Registry.attribute('vsn-script')
5
- export class ScriptAttribute extends Exec {
6
- public get code() {
7
- return this.tag.element.innerText;
8
- }
9
- }
@@ -1,13 +0,0 @@
1
- import {ControllerAttribute} from "./ControllerAttribute";
2
- import {Registry} from "../Registry";
3
-
4
- @Registry.attribute('vsn-service')
5
- export class ServiceAttribute extends ControllerAttribute {
6
- public static readonly canDefer: boolean = false;
7
- public readonly registryName: string = 'services'
8
- public readonly assignToParent: boolean = false;
9
-
10
- protected instantiateClass(cls): any {
11
- return cls.instance.scope;
12
- }
13
- }
@@ -1,44 +0,0 @@
1
- import {Scope} from "../Scope";
2
- import {Attribute} from "../Attribute";
3
- import {Registry} from "../Registry";
4
- import {ScopeReference} from "../Scope/ScopeReference";
5
-
6
- @Registry.attribute('vsn-set')
7
- export class SetAttribute extends Attribute {
8
- public static readonly canDefer: boolean = false;
9
- protected key?: string;
10
- protected property?: string;
11
- protected boundScope?: Scope;
12
-
13
- public set value(v: any) {
14
- if (this.boundScope) {
15
- this.boundScope.set(this.key, v);
16
- }
17
- }
18
-
19
- public get value(): any {
20
- if (!this.boundScope) return null;
21
- return this.boundScope.get(this.key, false);
22
- }
23
-
24
- public async extract() {
25
- this.property = this.getAttributeBinding();
26
- let ref: ScopeReference;
27
- try {
28
- ref = this.tag.scope.getReference(this.property);
29
- } catch (e) {
30
- return;
31
- }
32
- this.key = await ref.getKey();
33
- this.boundScope = await ref.getScope();
34
- let value = this.getAttributeValue(null);
35
- for (const m of this.getAttributeModifiers()) {
36
- const t = Registry.instance.types.getSynchronous(m);
37
- if (t) {
38
- this.boundScope.setType(this.key, m);
39
- break;
40
- }
41
- }
42
- this.boundScope.set(this.key, value);
43
- }
44
- }
@@ -1,72 +0,0 @@
1
- import {Attribute} from "../Attribute";
2
-
3
- export class StandardAttribute extends Attribute {
4
- public static readonly canDefer: boolean = false;
5
-
6
- public async setup() {
7
- if (!this.tag.isMagicAttribute(this.key) && !this.tag.element.hasAttribute(this.attributeName)) {
8
- this.tag.element.setAttribute(this.attributeName, '');
9
- }
10
- await super.setup();
11
- }
12
-
13
- public async extract() {
14
- this.updateFrom();
15
- await super.extract();
16
- }
17
-
18
- public async connect() {
19
- this.tag.scope.on(`change:${this.key}`, this.updateTo, this);
20
- await super.connect();
21
- }
22
-
23
- public async disconnect() {
24
- this.tag.scope.offWithContext(`change:${this.key}`, this);
25
- await super.disconnect();
26
- }
27
-
28
- public mutate(mutation: MutationRecord) {
29
- super.mutate(mutation);
30
- this.updateFrom();
31
- }
32
-
33
- public get needsToBeSynced(): boolean {
34
- let currentScopeValue = this.tag.scope.get(this.key) || '';
35
- let value = this.value;
36
- if (currentScopeValue && currentScopeValue.trim)
37
- currentScopeValue = currentScopeValue.trim();
38
-
39
- if (value && value.trim)
40
- value = value.trim();
41
-
42
- if (currentScopeValue instanceof Array) {
43
- if (!(value instanceof Array) || currentScopeValue.length !== value.length)
44
- return true;
45
-
46
- return currentScopeValue.map(v => value.indexOf(v) > -1).indexOf(false) > -1;
47
- }
48
- return currentScopeValue !== value;
49
- }
50
-
51
- public updateTo() {
52
- if (this.needsToBeSynced)
53
- this.value = this.tag.scope.get(this.key);
54
- }
55
-
56
- public updateFrom() {
57
- if (this.needsToBeSynced)
58
- this.tag.scope.set(this.key, this.value);
59
- }
60
-
61
- public get key(): string {
62
- return `@${this.attributeName}`;
63
- }
64
-
65
- public set value(value: any) {
66
- this.tag.setElementAttribute(this.tag.isMagicAttribute(this.key) ? this.key : this.attributeName, value);
67
- }
68
-
69
- public get value(): any {
70
- return this.tag.getElementAttribute(this.tag.isMagicAttribute(this.key) ? this.key : this.attributeName);
71
- }
72
- }