vsn 0.1.149 → 1.0.1
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.
- package/README.md +7 -6
- package/dist/index.cjs +5181 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +650 -0
- package/dist/index.d.ts +650 -0
- package/dist/index.js +5112 -0
- package/dist/index.js.map +1 -0
- package/dist/index.min.js +9 -0
- package/dist/index.min.js.map +1 -0
- package/package.json +31 -35
- package/.gitattributes +0 -2
- package/.travis.yml +0 -28
- package/demo/demo.html +0 -237
- package/demo/examples/cascading-function-sheets.html +0 -39
- package/demo/examples/component-slots.html +0 -29
- package/demo/examples/events.html +0 -21
- package/demo/examples/item-filtering.html +0 -45
- package/demo/examples/loop.html +0 -21
- package/demo/examples/persist.html +0 -17
- package/demo/examples/replace-html.html +0 -19
- package/demo/markup-default.html +0 -2
- package/demo/markup.html +0 -2
- package/demo/memory-leak-test.html +0 -82
- package/demo/named-stack.html +0 -34
- package/demo/resources/xhr-animations.html +0 -24
- package/demo/resources/xhr-cfs.html +0 -1
- package/demo/resources/xhr-html.html +0 -1
- package/demo/resources/xhr-lazy.html +0 -60
- package/demo/resources/xhr-memory-leak-test.html +0 -14
- package/demo/resources/xhr-persist.html +0 -40
- package/demo/resources/xhr-test-component.html +0 -4
- package/demo/service.html +0 -22
- package/demo/silly-animations.html +0 -27
- package/demo/vsn.js +0 -3
- package/demo/xhr-response.html +0 -1
- package/demo/xhr-test.html +0 -32
- package/dist/AST/ArithmeticNode.d.ts +0 -15
- package/dist/AST/ArithmeticNode.js +0 -114
- package/dist/AST/ArithmeticNode.js.map +0 -1
- package/dist/AST/ArrayNode.d.ts +0 -14
- package/dist/AST/ArrayNode.js +0 -166
- package/dist/AST/ArrayNode.js.map +0 -1
- package/dist/AST/AsNode.d.ts +0 -13
- package/dist/AST/AsNode.js +0 -92
- package/dist/AST/AsNode.js.map +0 -1
- package/dist/AST/AssignmentNode.d.ts +0 -24
- package/dist/AST/AssignmentNode.js +0 -392
- package/dist/AST/AssignmentNode.js.map +0 -1
- package/dist/AST/BlockNode.d.ts +0 -11
- package/dist/AST/BlockNode.js +0 -114
- package/dist/AST/BlockNode.js.map +0 -1
- package/dist/AST/BooleanLiteralNode.d.ts +0 -5
- package/dist/AST/BooleanLiteralNode.js +0 -31
- package/dist/AST/BooleanLiteralNode.js.map +0 -1
- package/dist/AST/ClassNode.d.ts +0 -47
- package/dist/AST/ClassNode.js +0 -593
- package/dist/AST/ClassNode.js.map +0 -1
- package/dist/AST/ComparisonNode.d.ts +0 -15
- package/dist/AST/ComparisonNode.js +0 -120
- package/dist/AST/ComparisonNode.js.map +0 -1
- package/dist/AST/ConditionalNode.d.ts +0 -13
- package/dist/AST/ConditionalNode.js +0 -95
- package/dist/AST/ConditionalNode.js.map +0 -1
- package/dist/AST/DispatchEventNode.d.ts +0 -17
- package/dist/AST/DispatchEventNode.js +0 -152
- package/dist/AST/DispatchEventNode.js.map +0 -1
- package/dist/AST/ElementAttributeNode.d.ts +0 -20
- package/dist/AST/ElementAttributeNode.js +0 -242
- package/dist/AST/ElementAttributeNode.js.map +0 -1
- package/dist/AST/ElementQueryNode.d.ts +0 -17
- package/dist/AST/ElementQueryNode.js +0 -148
- package/dist/AST/ElementQueryNode.js.map +0 -1
- package/dist/AST/ElementStyleNode.d.ts +0 -20
- package/dist/AST/ElementStyleNode.js +0 -205
- package/dist/AST/ElementStyleNode.js.map +0 -1
- package/dist/AST/ForStatementNode.d.ts +0 -17
- package/dist/AST/ForStatementNode.js +0 -121
- package/dist/AST/ForStatementNode.js.map +0 -1
- package/dist/AST/FunctionArgumentNode.d.ts +0 -11
- package/dist/AST/FunctionArgumentNode.js +0 -142
- package/dist/AST/FunctionArgumentNode.js.map +0 -1
- package/dist/AST/FunctionCallNode.d.ts +0 -14
- package/dist/AST/FunctionCallNode.js +0 -241
- package/dist/AST/FunctionCallNode.js.map +0 -1
- package/dist/AST/FunctionNode.d.ts +0 -20
- package/dist/AST/FunctionNode.js +0 -220
- package/dist/AST/FunctionNode.js.map +0 -1
- package/dist/AST/IfStatementNode.d.ts +0 -14
- package/dist/AST/IfStatementNode.js +0 -168
- package/dist/AST/IfStatementNode.js.map +0 -1
- package/dist/AST/InNode.d.ts +0 -15
- package/dist/AST/InNode.js +0 -107
- package/dist/AST/InNode.js.map +0 -1
- package/dist/AST/IndexNode.d.ts +0 -16
- package/dist/AST/IndexNode.js +0 -152
- package/dist/AST/IndexNode.js.map +0 -1
- package/dist/AST/LiteralNode.d.ts +0 -10
- package/dist/AST/LiteralNode.js +0 -74
- package/dist/AST/LiteralNode.js.map +0 -1
- package/dist/AST/LoopNode.d.ts +0 -12
- package/dist/AST/LoopNode.js +0 -121
- package/dist/AST/LoopNode.js.map +0 -1
- package/dist/AST/ModifierNode.d.ts +0 -14
- package/dist/AST/ModifierNode.js +0 -90
- package/dist/AST/ModifierNode.js.map +0 -1
- package/dist/AST/NamedStackNode.d.ts +0 -28
- package/dist/AST/NamedStackNode.js +0 -142
- package/dist/AST/NamedStackNode.js.map +0 -1
- package/dist/AST/Node.d.ts +0 -28
- package/dist/AST/Node.js +0 -263
- package/dist/AST/Node.js.map +0 -1
- package/dist/AST/NotNode.d.ts +0 -12
- package/dist/AST/NotNode.js +0 -103
- package/dist/AST/NotNode.js.map +0 -1
- package/dist/AST/NumberLiteralNode.d.ts +0 -5
- package/dist/AST/NumberLiteralNode.js +0 -36
- package/dist/AST/NumberLiteralNode.js.map +0 -1
- package/dist/AST/ObjectNode.d.ts +0 -14
- package/dist/AST/ObjectNode.js +0 -147
- package/dist/AST/ObjectNode.js.map +0 -1
- package/dist/AST/OnNode.d.ts +0 -9
- package/dist/AST/OnNode.js +0 -129
- package/dist/AST/OnNode.js.map +0 -1
- package/dist/AST/RootScopeMemberNode.d.ts +0 -12
- package/dist/AST/RootScopeMemberNode.js +0 -90
- package/dist/AST/RootScopeMemberNode.js.map +0 -1
- package/dist/AST/ScopeMemberNode.d.ts +0 -13
- package/dist/AST/ScopeMemberNode.js +0 -165
- package/dist/AST/ScopeMemberNode.js.map +0 -1
- package/dist/AST/ScopeNodeAbstract.d.ts +0 -8
- package/dist/AST/ScopeNodeAbstract.js +0 -105
- package/dist/AST/ScopeNodeAbstract.js.map +0 -1
- package/dist/AST/StringFormatNode.d.ts +0 -18
- package/dist/AST/StringFormatNode.js +0 -151
- package/dist/AST/StringFormatNode.js.map +0 -1
- package/dist/AST/UnitLiteralNode.d.ts +0 -15
- package/dist/AST/UnitLiteralNode.js +0 -72
- package/dist/AST/UnitLiteralNode.js.map +0 -1
- package/dist/AST/WASM/Context.d.ts +0 -4
- package/dist/AST/WASM/Context.js +0 -18
- package/dist/AST/WASM/Context.js.map +0 -1
- package/dist/AST/WASM/Function.d.ts +0 -22
- package/dist/AST/WASM/Function.js +0 -126
- package/dist/AST/WASM/Function.js.map +0 -1
- package/dist/AST/WASM/Memory.d.ts +0 -12
- package/dist/AST/WASM/Memory.js +0 -22
- package/dist/AST/WASM/Memory.js.map +0 -1
- package/dist/AST/WASM/Section.d.ts +0 -5
- package/dist/AST/WASM/Section.js +0 -11
- package/dist/AST/WASM/Section.js.map +0 -1
- package/dist/AST/WASM.d.ts +0 -58
- package/dist/AST/WASM.js +0 -293
- package/dist/AST/WASM.js.map +0 -1
- package/dist/AST/WithNode.d.ts +0 -15
- package/dist/AST/WithNode.js +0 -197
- package/dist/AST/WithNode.js.map +0 -1
- package/dist/AST/XHRNode.d.ts +0 -15
- package/dist/AST/XHRNode.js +0 -151
- package/dist/AST/XHRNode.js.map +0 -1
- package/dist/AST.d.ts +0 -160
- package/dist/AST.js +0 -1156
- package/dist/AST.js.map +0 -1
- package/dist/Attribute.d.ts +0 -46
- package/dist/Attribute.js +0 -262
- package/dist/Attribute.js.map +0 -1
- package/dist/Bencmark.d.ts +0 -14
- package/dist/Bencmark.js +0 -236
- package/dist/Bencmark.js.map +0 -1
- package/dist/Component.d.ts +0 -7
- package/dist/Component.js +0 -179
- package/dist/Component.js.map +0 -1
- package/dist/Configuration.d.ts +0 -12
- package/dist/Configuration.js +0 -64
- package/dist/Configuration.js.map +0 -1
- package/dist/Controller.d.ts +0 -13
- package/dist/Controller.js +0 -60
- package/dist/Controller.js.map +0 -1
- package/dist/DOM/AbstractDOM.d.ts +0 -56
- package/dist/DOM/AbstractDOM.js +0 -1078
- package/dist/DOM/AbstractDOM.js.map +0 -1
- package/dist/DOM/DOMObject.d.ts +0 -33
- package/dist/DOM/DOMObject.js +0 -152
- package/dist/DOM/DOMObject.js.map +0 -1
- package/dist/DOM/ShadowDOM.d.ts +0 -5
- package/dist/DOM/ShadowDOM.js +0 -32
- package/dist/DOM/ShadowDOM.js.map +0 -1
- package/dist/DOM/WrappedDocument.d.ts +0 -5
- package/dist/DOM/WrappedDocument.js +0 -34
- package/dist/DOM/WrappedDocument.js.map +0 -1
- package/dist/DOM/WrappedWindow.d.ts +0 -6
- package/dist/DOM/WrappedWindow.js +0 -45
- package/dist/DOM/WrappedWindow.js.map +0 -1
- package/dist/DOM.d.ts +0 -5
- package/dist/DOM.js +0 -37
- package/dist/DOM.js.map +0 -1
- package/dist/EventDispatcher.d.ts +0 -36
- package/dist/EventDispatcher.js +0 -393
- package/dist/EventDispatcher.js.map +0 -1
- package/dist/Formats.d.ts +0 -5
- package/dist/Formats.js +0 -47
- package/dist/Formats.js.map +0 -1
- package/dist/MessageList.d.ts +0 -15
- package/dist/MessageList.js +0 -127
- package/dist/MessageList.js.map +0 -1
- package/dist/Model.d.ts +0 -12
- package/dist/Model.js +0 -92
- package/dist/Model.js.map +0 -1
- package/dist/Modifiers.d.ts +0 -17
- package/dist/Modifiers.js +0 -100
- package/dist/Modifiers.js.map +0 -1
- package/dist/Query.d.ts +0 -4
- package/dist/Query.js +0 -66
- package/dist/Query.js.map +0 -1
- package/dist/Registry.d.ts +0 -41
- package/dist/Registry.js +0 -165
- package/dist/Registry.js.map +0 -1
- package/dist/Scope/DynamicScopeData.d.ts +0 -6
- package/dist/Scope/DynamicScopeData.js +0 -83
- package/dist/Scope/DynamicScopeData.js.map +0 -1
- package/dist/Scope/ObjectAccessor.d.ts +0 -7
- package/dist/Scope/ObjectAccessor.js +0 -40
- package/dist/Scope/ObjectAccessor.js.map +0 -1
- package/dist/Scope/QueryReference.d.ts +0 -10
- package/dist/Scope/QueryReference.js +0 -103
- package/dist/Scope/QueryReference.js.map +0 -1
- package/dist/Scope/ScopeAbstract.d.ts +0 -9
- package/dist/Scope/ScopeAbstract.js +0 -28
- package/dist/Scope/ScopeAbstract.js.map +0 -1
- package/dist/Scope/ScopeData.d.ts +0 -4
- package/dist/Scope/ScopeData.js +0 -60
- package/dist/Scope/ScopeData.js.map +0 -1
- package/dist/Scope/ScopeDataAbstract.d.ts +0 -30
- package/dist/Scope/ScopeDataAbstract.js +0 -303
- package/dist/Scope/ScopeDataAbstract.js.map +0 -1
- package/dist/Scope/ScopeObject.d.ts +0 -3
- package/dist/Scope/ScopeObject.js +0 -28
- package/dist/Scope/ScopeObject.js.map +0 -1
- package/dist/Scope/ScopeReference.d.ts +0 -10
- package/dist/Scope/ScopeReference.js +0 -73
- package/dist/Scope/ScopeReference.js.map +0 -1
- package/dist/Scope/ScopedVariableType.d.ts +0 -6
- package/dist/Scope/ScopedVariableType.js +0 -14
- package/dist/Scope/ScopedVariableType.js.map +0 -1
- package/dist/Scope/WrappedArray.d.ts +0 -21
- package/dist/Scope/WrappedArray.js +0 -252
- package/dist/Scope/WrappedArray.js.map +0 -1
- package/dist/Scope/properties/ArrayProperty.d.ts +0 -12
- package/dist/Scope/properties/ArrayProperty.js +0 -88
- package/dist/Scope/properties/ArrayProperty.js.map +0 -1
- package/dist/Scope/properties/FloatProperty.d.ts +0 -4
- package/dist/Scope/properties/FloatProperty.js +0 -30
- package/dist/Scope/properties/FloatProperty.js.map +0 -1
- package/dist/Scope/properties/IntegerProperty.d.ts +0 -4
- package/dist/Scope/properties/IntegerProperty.js +0 -30
- package/dist/Scope/properties/IntegerProperty.js.map +0 -1
- package/dist/Scope/properties/Property.d.ts +0 -30
- package/dist/Scope/properties/Property.js +0 -205
- package/dist/Scope/properties/Property.js.map +0 -1
- package/dist/Scope/properties/_imports.d.ts +0 -4
- package/dist/Scope/properties/_imports.js +0 -13
- package/dist/Scope/properties/_imports.js.map +0 -1
- package/dist/Scope.d.ts +0 -39
- package/dist/Scope.js +0 -434
- package/dist/Scope.js.map +0 -1
- package/dist/Service.d.ts +0 -9
- package/dist/Service.js +0 -49
- package/dist/Service.js.map +0 -1
- package/dist/Tag/ShadowRootTag.d.ts +0 -3
- package/dist/Tag/ShadowRootTag.js +0 -28
- package/dist/Tag/ShadowRootTag.js.map +0 -1
- package/dist/Tag/SlotTag.d.ts +0 -3
- package/dist/Tag/SlotTag.js +0 -28
- package/dist/Tag/SlotTag.js.map +0 -1
- package/dist/Tag/SlottedTag.d.ts +0 -7
- package/dist/Tag/SlottedTag.js +0 -78
- package/dist/Tag/SlottedTag.js.map +0 -1
- package/dist/Tag/TagList.d.ts +0 -13
- package/dist/Tag/TagList.js +0 -104
- package/dist/Tag/TagList.js.map +0 -1
- package/dist/Tag.d.ts +0 -117
- package/dist/Tag.js +0 -1471
- package/dist/Tag.js.map +0 -1
- package/dist/Types.d.ts +0 -8
- package/dist/Types.js +0 -54
- package/dist/Types.js.map +0 -1
- package/dist/Validators.d.ts +0 -7
- package/dist/Validators.js +0 -54
- package/dist/Validators.js.map +0 -1
- package/dist/attributes/AddClassIf.d.ts +0 -4
- package/dist/attributes/AddClassIf.js +0 -93
- package/dist/attributes/AddClassIf.js.map +0 -1
- package/dist/attributes/Bind.d.ts +0 -24
- package/dist/attributes/Bind.js +0 -273
- package/dist/attributes/Bind.js.map +0 -1
- package/dist/attributes/ComponentAttribute.d.ts +0 -5
- package/dist/attributes/ComponentAttribute.js +0 -110
- package/dist/attributes/ComponentAttribute.js.map +0 -1
- package/dist/attributes/ControllerAttribute.d.ts +0 -11
- package/dist/attributes/ControllerAttribute.js +0 -127
- package/dist/attributes/ControllerAttribute.js.map +0 -1
- package/dist/attributes/DisableIf.d.ts +0 -5
- package/dist/attributes/DisableIf.js +0 -94
- package/dist/attributes/DisableIf.js.map +0 -1
- package/dist/attributes/Exec.d.ts +0 -10
- package/dist/attributes/Exec.js +0 -133
- package/dist/attributes/Exec.js.map +0 -1
- package/dist/attributes/Format.d.ts +0 -5
- package/dist/attributes/Format.js +0 -99
- package/dist/attributes/Format.js.map +0 -1
- package/dist/attributes/If.d.ts +0 -11
- package/dist/attributes/If.js +0 -159
- package/dist/attributes/If.js.map +0 -1
- package/dist/attributes/JSONAttribute.d.ts +0 -5
- package/dist/attributes/JSONAttribute.js +0 -119
- package/dist/attributes/JSONAttribute.js.map +0 -1
- package/dist/attributes/KeyAbstract.d.ts +0 -7
- package/dist/attributes/KeyAbstract.js +0 -117
- package/dist/attributes/KeyAbstract.js.map +0 -1
- package/dist/attributes/KeyDown.d.ts +0 -4
- package/dist/attributes/KeyDown.js +0 -88
- package/dist/attributes/KeyDown.js.map +0 -1
- package/dist/attributes/KeyUp.d.ts +0 -4
- package/dist/attributes/KeyUp.js +0 -88
- package/dist/attributes/KeyUp.js.map +0 -1
- package/dist/attributes/LazyAttribute.d.ts +0 -8
- package/dist/attributes/LazyAttribute.js +0 -122
- package/dist/attributes/LazyAttribute.js.map +0 -1
- package/dist/attributes/List.d.ts +0 -18
- package/dist/attributes/List.js +0 -396
- package/dist/attributes/List.js.map +0 -1
- package/dist/attributes/ListItem.d.ts +0 -12
- package/dist/attributes/ListItem.js +0 -119
- package/dist/attributes/ListItem.js.map +0 -1
- package/dist/attributes/ListItemModel.d.ts +0 -4
- package/dist/attributes/ListItemModel.js +0 -39
- package/dist/attributes/ListItemModel.js.map +0 -1
- package/dist/attributes/ModelAttribute.d.ts +0 -5
- package/dist/attributes/ModelAttribute.js +0 -41
- package/dist/attributes/ModelAttribute.js.map +0 -1
- package/dist/attributes/Name.d.ts +0 -6
- package/dist/attributes/Name.js +0 -88
- package/dist/attributes/Name.js.map +0 -1
- package/dist/attributes/On.d.ts +0 -9
- package/dist/attributes/On.js +0 -135
- package/dist/attributes/On.js.map +0 -1
- package/dist/attributes/PersistAttribute.d.ts +0 -15
- package/dist/attributes/PersistAttribute.js +0 -215
- package/dist/attributes/PersistAttribute.js.map +0 -1
- package/dist/attributes/Referenced.d.ts +0 -3
- package/dist/attributes/Referenced.js +0 -38
- package/dist/attributes/Referenced.js.map +0 -1
- package/dist/attributes/RootAttribute.d.ts +0 -7
- package/dist/attributes/RootAttribute.js +0 -141
- package/dist/attributes/RootAttribute.js.map +0 -1
- package/dist/attributes/ScopeAttribute.d.ts +0 -9
- package/dist/attributes/ScopeAttribute.js +0 -152
- package/dist/attributes/ScopeAttribute.js.map +0 -1
- package/dist/attributes/ScopeChange.d.ts +0 -10
- package/dist/attributes/ScopeChange.js +0 -153
- package/dist/attributes/ScopeChange.js.map +0 -1
- package/dist/attributes/ScriptAttribute.d.ts +0 -4
- package/dist/attributes/ScriptAttribute.js +0 -45
- package/dist/attributes/ScriptAttribute.js.map +0 -1
- package/dist/attributes/ServiceAttribute.d.ts +0 -7
- package/dist/attributes/ServiceAttribute.js +0 -45
- package/dist/attributes/ServiceAttribute.js.map +0 -1
- package/dist/attributes/SetAttribute.d.ts +0 -11
- package/dist/attributes/SetAttribute.js +0 -146
- package/dist/attributes/SetAttribute.js.map +0 -1
- package/dist/attributes/StandardAttribute.d.ts +0 -15
- package/dist/attributes/StandardAttribute.js +0 -170
- package/dist/attributes/StandardAttribute.js.map +0 -1
- package/dist/attributes/StyleAttribute.d.ts +0 -14
- package/dist/attributes/StyleAttribute.js +0 -218
- package/dist/attributes/StyleAttribute.js.map +0 -1
- package/dist/attributes/StyleVarAttribute.d.ts +0 -11
- package/dist/attributes/StyleVarAttribute.js +0 -124
- package/dist/attributes/StyleVarAttribute.js.map +0 -1
- package/dist/attributes/TemplateAttribute.d.ts +0 -5
- package/dist/attributes/TemplateAttribute.js +0 -89
- package/dist/attributes/TemplateAttribute.js.map +0 -1
- package/dist/attributes/TypeAttribute.d.ts +0 -5
- package/dist/attributes/TypeAttribute.js +0 -104
- package/dist/attributes/TypeAttribute.js.map +0 -1
- package/dist/attributes/XHRAttribute.d.ts +0 -14
- package/dist/attributes/XHRAttribute.js +0 -242
- package/dist/attributes/XHRAttribute.js.map +0 -1
- package/dist/attributes/_imports.d.ts +0 -32
- package/dist/attributes/_imports.js +0 -68
- package/dist/attributes/_imports.js.map +0 -1
- package/dist/contrib/XHR.d.ts +0 -21
- package/dist/contrib/XHR.js +0 -78
- package/dist/contrib/XHR.js.map +0 -1
- package/dist/contrib/_imports.d.ts +0 -1
- package/dist/contrib/_imports.js +0 -6
- package/dist/contrib/_imports.js.map +0 -1
- package/dist/custom-elements.d.ts +0 -9
- package/dist/custom-elements.js +0 -44
- package/dist/custom-elements.js.map +0 -1
- package/dist/demo/ServiceDemo.d.ts +0 -5
- package/dist/demo/ServiceDemo.js +0 -87
- package/dist/demo/ServiceDemo.js.map +0 -1
- package/dist/demo.d.ts +0 -2
- package/dist/demo.js +0 -17
- package/dist/demo.js.map +0 -1
- package/dist/helpers/DOMHelper.d.ts +0 -3
- package/dist/helpers/DOMHelper.js +0 -81
- package/dist/helpers/DOMHelper.js.map +0 -1
- package/dist/helpers/ElementHelper.d.ts +0 -4
- package/dist/helpers/ElementHelper.js +0 -53
- package/dist/helpers/ElementHelper.js.map +0 -1
- package/dist/helpers/VisionHelper.d.ts +0 -13
- package/dist/helpers/VisionHelper.js +0 -148
- package/dist/helpers/VisionHelper.js.map +0 -1
- package/dist/helpers/decorators.d.ts +0 -5
- package/dist/helpers/decorators.js +0 -59
- package/dist/helpers/decorators.js.map +0 -1
- package/dist/version.d.ts +0 -1
- package/dist/version.js +0 -5
- package/dist/version.js.map +0 -1
- package/dist/vsn.d.ts +0 -36
- package/dist/vsn.js +0 -201
- package/dist/vsn.js.map +0 -1
- package/karma.conf.js +0 -34
- package/src/AST/ArithmeticNode.ts +0 -52
- package/src/AST/ArrayNode.ts +0 -39
- package/src/AST/AsNode.ts +0 -32
- package/src/AST/AssignmentNode.ts +0 -256
- package/src/AST/BlockNode.ts +0 -25
- package/src/AST/BooleanLiteralNode.ts +0 -10
- package/src/AST/ClassNode.ts +0 -267
- package/src/AST/ComparisonNode.ts +0 -57
- package/src/AST/ConditionalNode.ts +0 -36
- package/src/AST/DispatchEventNode.ts +0 -58
- package/src/AST/ElementAttributeNode.ts +0 -97
- package/src/AST/ElementQueryNode.ts +0 -48
- package/src/AST/ElementStyleNode.ts +0 -74
- package/src/AST/ForStatementNode.ts +0 -59
- package/src/AST/FunctionArgumentNode.ts +0 -27
- package/src/AST/FunctionCallNode.ts +0 -93
- package/src/AST/FunctionNode.ts +0 -82
- package/src/AST/IfStatementNode.ts +0 -67
- package/src/AST/InNode.ts +0 -46
- package/src/AST/IndexNode.ts +0 -64
- package/src/AST/LiteralNode.ts +0 -17
- package/src/AST/LoopNode.ts +0 -35
- package/src/AST/ModifierNode.ts +0 -32
- package/src/AST/NamedStackNode.ts +0 -83
- package/src/AST/Node.ts +0 -104
- package/src/AST/NotNode.ts +0 -41
- package/src/AST/NumberLiteralNode.ts +0 -14
- package/src/AST/ObjectNode.ts +0 -55
- package/src/AST/OnNode.ts +0 -23
- package/src/AST/RootScopeMemberNode.ts +0 -27
- package/src/AST/ScopeMemberNode.ts +0 -63
- package/src/AST/ScopeNodeAbstract.ts +0 -21
- package/src/AST/StringFormatNode.ts +0 -43
- package/src/AST/UnitLiteralNode.ts +0 -51
- package/src/AST/WASM/Context.ts +0 -12
- package/src/AST/WASM/Function.ts +0 -67
- package/src/AST/WASM/Memory.ts +0 -21
- package/src/AST/WASM/Section.ts +0 -6
- package/src/AST/WASM.ts +0 -244
- package/src/AST/WithNode.ts +0 -68
- package/src/AST/XHRNode.ts +0 -85
- package/src/AST.ts +0 -969
- package/src/Attribute.ts +0 -130
- package/src/Bencmark.ts +0 -184
- package/src/Component.ts +0 -63
- package/src/Configuration.ts +0 -47
- package/src/Controller.ts +0 -36
- package/src/DOM/AbstractDOM.ts +0 -465
- package/src/DOM/DOMObject.ts +0 -77
- package/src/DOM/ShadowDOM.ts +0 -15
- package/src/DOM/WrappedDocument.ts +0 -9
- package/src/DOM/WrappedWindow.ts +0 -21
- package/src/DOM.ts +0 -13
- package/src/EventDispatcher.ts +0 -234
- package/src/Formats.ts +0 -33
- package/src/MessageList.ts +0 -85
- package/src/Model.ts +0 -44
- package/src/Modifiers.ts +0 -54
- package/src/Query.ts +0 -17
- package/src/Registry.ts +0 -141
- package/src/Scope/DynamicScopeData.ts +0 -27
- package/src/Scope/ObjectAccessor.ts +0 -21
- package/src/Scope/QueryReference.ts +0 -29
- package/src/Scope/ScopeAbstract.ts +0 -11
- package/src/Scope/ScopeData.ts +0 -20
- package/src/Scope/ScopeDataAbstract.ts +0 -200
- package/src/Scope/ScopeObject.ts +0 -3
- package/src/Scope/ScopeReference.ts +0 -30
- package/src/Scope/ScopedVariableType.ts +0 -7
- package/src/Scope/WrappedArray.ts +0 -134
- package/src/Scope/properties/ArrayProperty.ts +0 -46
- package/src/Scope/properties/FloatProperty.ts +0 -5
- package/src/Scope/properties/IntegerProperty.ts +0 -5
- package/src/Scope/properties/Property.ts +0 -173
- package/src/Scope/properties/_imports.ts +0 -4
- package/src/Scope.ts +0 -333
- package/src/Service.ts +0 -24
- package/src/Tag/ShadowRootTag.ts +0 -5
- package/src/Tag/SlotTag.ts +0 -5
- package/src/Tag/SlottedTag.ts +0 -17
- package/src/Tag/TagList.ts +0 -52
- package/src/Tag.ts +0 -838
- package/src/Types.ts +0 -34
- package/src/Validators.ts +0 -45
- package/src/attributes/AddClassIf.ts +0 -14
- package/src/attributes/Bind.ts +0 -144
- package/src/attributes/ComponentAttribute.ts +0 -23
- package/src/attributes/ControllerAttribute.ts +0 -50
- package/src/attributes/DisableIf.ts +0 -16
- package/src/attributes/Exec.ts +0 -32
- package/src/attributes/Format.ts +0 -18
- package/src/attributes/If.ts +0 -40
- package/src/attributes/JSONAttribute.ts +0 -40
- package/src/attributes/KeyAbstract.ts +0 -28
- package/src/attributes/KeyDown.ts +0 -10
- package/src/attributes/KeyUp.ts +0 -10
- package/src/attributes/LazyAttribute.ts +0 -30
- package/src/attributes/List.ts +0 -210
- package/src/attributes/ListItem.ts +0 -30
- package/src/attributes/ListItemModel.ts +0 -7
- package/src/attributes/ModelAttribute.ts +0 -8
- package/src/attributes/Name.ts +0 -16
- package/src/attributes/On.ts +0 -39
- package/src/attributes/PersistAttribute.ts +0 -83
- package/src/attributes/Referenced.ts +0 -5
- package/src/attributes/RootAttribute.ts +0 -24
- package/src/attributes/ScopeAttribute.ts +0 -40
- package/src/attributes/ScopeChange.ts +0 -35
- package/src/attributes/ScriptAttribute.ts +0 -9
- package/src/attributes/ServiceAttribute.ts +0 -13
- package/src/attributes/SetAttribute.ts +0 -44
- package/src/attributes/StandardAttribute.ts +0 -72
- package/src/attributes/StyleAttribute.ts +0 -90
- package/src/attributes/StyleVarAttribute.ts +0 -40
- package/src/attributes/TemplateAttribute.ts +0 -12
- package/src/attributes/TypeAttribute.ts +0 -23
- package/src/attributes/XHRAttribute.ts +0 -109
- package/src/attributes/_imports.ts +0 -32
- package/src/contrib/XHR.ts +0 -46
- package/src/contrib/_imports.ts +0 -1
- package/src/custom-elements.ts +0 -46
- package/src/demo/ServiceDemo.ts +0 -12
- package/src/demo.ts +0 -2
- package/src/helpers/DOMHelper.ts +0 -17
- package/src/helpers/ElementHelper.ts +0 -26
- package/src/helpers/VisionHelper.ts +0 -88
- package/src/helpers/decorators.ts +0 -11
- package/src/version.ts +0 -2
- package/src/vsn.ts +0 -106
- package/test/AST/ArithmeticAssignmentNode.spec.ts +0 -45
- package/test/AST/ClassNode.spec.ts +0 -175
- package/test/AST/FunctionNode.spec.ts +0 -51
- package/test/AST/StringFormatNode.spec.ts +0 -12
- package/test/AST/WASM.spec.ts +0 -63
- package/test/AST/XHRNode.spec.ts +0 -10
- package/test/AST.spec.ts +0 -353
- package/test/Controller.spec.ts +0 -42
- package/test/DOM.spec.ts +0 -63
- package/test/EventDispatcher.spec.ts +0 -191
- package/test/MessageList.spec.ts +0 -101
- package/test/Model/DataModel.spec.ts +0 -0
- package/test/Scope/DynamicScopeData.spec.ts +0 -141
- package/test/Scope/ScopeData.spec.ts +0 -58
- package/test/Scope/WrappedArray.spec.ts +0 -11
- package/test/Scope/properties/ArrayProperty.spec.ts +0 -23
- package/test/Scope.spec.ts +0 -69
- package/test/Tag/TagList.spec.ts +0 -21
- package/test/Tag.spec.ts +0 -4
- package/test/attributes/Bind.spec.ts +0 -174
- package/test/attributes/JSONAttribute.spec.ts +0 -91
- package/test/attributes/ListItem.spec.ts +0 -118
- package/test/attributes/ScopeAttribute.spec.ts +0 -35
- package/test/attributes/ServiceAttribute.spec.ts +0 -41
- package/test/attributes/SetAttribute.spec.ts +0 -55
- package/test/attributes/Styles.spec.ts +0 -43
- package/test/globals.js +0 -2
- package/tsconfig.base.json +0 -17
- package/tsconfig.json +0 -6
- package/tsconfig.test.json +0 -7
- package/types/vsn-component.d.ts +0 -5
- package/webpack.config.js +0 -48
- package/webpack.development.js +0 -6
- package/webpack.production.js +0 -5
package/src/attributes/List.ts
DELETED
|
@@ -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,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
|
-
}
|
package/src/attributes/Name.ts
DELETED
|
@@ -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
|
-
}
|
package/src/attributes/On.ts
DELETED
|
@@ -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,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,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
|
-
}
|