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.
- package/README.md +7 -6
- package/dist/index.cjs +5011 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +630 -0
- package/dist/index.d.ts +630 -0
- package/dist/index.js +4942 -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 +30 -48
- 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 -1038
- 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 -462
- 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/AST/ClassNode.ts
DELETED
|
@@ -1,267 +0,0 @@
|
|
|
1
|
-
import {Scope} from "../Scope";
|
|
2
|
-
import {DOM} from "../DOM";
|
|
3
|
-
import {Tag} from "../Tag";
|
|
4
|
-
import {Token, TokenType, Tree, TreeNode} from "../AST";
|
|
5
|
-
import {INodeMeta, Node} from "./Node";
|
|
6
|
-
import {BlockNode} from "./BlockNode";
|
|
7
|
-
import {Registry} from "../Registry";
|
|
8
|
-
import {OnNode} from "./OnNode";
|
|
9
|
-
import {FunctionNode} from "./FunctionNode";
|
|
10
|
-
|
|
11
|
-
export class ClassNode extends Node implements TreeNode {
|
|
12
|
-
public static readonly ClassesVariable = '_vsn_classes';
|
|
13
|
-
public static readonly classes: {[name: string]: ClassNode} = {};
|
|
14
|
-
public static readonly classParents: {[name: string]: string[]} = {};
|
|
15
|
-
public static readonly classChildren: {[name: string]: string[]} = {}; // List of child class selectors for a given class selector
|
|
16
|
-
public static readonly preppedTags: {[name: string]: Tag[]} = {};
|
|
17
|
-
public static readonly preppingElements: {[name: string]: HTMLElement[]} = {};
|
|
18
|
-
|
|
19
|
-
protected requiresPrep: boolean = true;
|
|
20
|
-
public readonly classScope: Scope = new Scope();
|
|
21
|
-
protected _fullSelector: string;
|
|
22
|
-
protected _parentSelector: string;
|
|
23
|
-
|
|
24
|
-
constructor(
|
|
25
|
-
public readonly selector: string,
|
|
26
|
-
public readonly block: BlockNode
|
|
27
|
-
) {
|
|
28
|
-
super();
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
public get fullSelector(): string {
|
|
32
|
-
return this._fullSelector;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
public updateMeta(meta?: any) {
|
|
36
|
-
meta = meta || {};
|
|
37
|
-
meta['ClassNode'] = this;
|
|
38
|
-
return meta;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
public async prepare(scope: Scope, dom: DOM, tag: Tag = null, meta?: INodeMeta): Promise<void> {
|
|
42
|
-
meta = Object.assign({}, meta) || {};
|
|
43
|
-
const initial = !!meta['initial'];
|
|
44
|
-
let root: boolean = false;
|
|
45
|
-
meta['ClassNodePrepare'] = initial;
|
|
46
|
-
|
|
47
|
-
// Only prepare once during the initial prep, all subsequent prepares are on tag class blocks
|
|
48
|
-
if (initial) {
|
|
49
|
-
if (meta['ClassNodeSelector']) {
|
|
50
|
-
this._parentSelector = meta['ClassNodeSelector'] as string;
|
|
51
|
-
ClassNode.classChildren[meta['ClassNodeSelector'] as string].push(this.selector);
|
|
52
|
-
meta['ClassNodeSelector'] = `${meta['ClassNodeSelector']} ${this.selector}`;
|
|
53
|
-
} else {
|
|
54
|
-
root = true;
|
|
55
|
-
meta['ClassNodeSelector'] = this.selector;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
this._fullSelector = meta['ClassNodeSelector'];
|
|
59
|
-
if (ClassNode.classes[this._fullSelector]) return; // Don't re-prepare same classes
|
|
60
|
-
ClassNode.classes[this._fullSelector] = this;
|
|
61
|
-
ClassNode.classChildren[this._fullSelector] = [];
|
|
62
|
-
ClassNode.preppedTags[this._fullSelector] = [];
|
|
63
|
-
ClassNode.preppingElements[this._fullSelector] = []
|
|
64
|
-
|
|
65
|
-
if (ClassNode.classParents[this.selector] === undefined)
|
|
66
|
-
ClassNode.classParents[this.selector] = [];
|
|
67
|
-
|
|
68
|
-
ClassNode.classParents[this.selector].push(this._fullSelector);
|
|
69
|
-
await this.block.prepare(this.classScope, dom, tag, meta);
|
|
70
|
-
Registry.class(this);
|
|
71
|
-
|
|
72
|
-
if (root) {
|
|
73
|
-
if (dom.built)
|
|
74
|
-
await this.findClassElements(dom);
|
|
75
|
-
dom.on('built', () => this.findClassElements(dom));
|
|
76
|
-
}
|
|
77
|
-
} else if (meta['PrepForSelector'] === this.fullSelector) { // Only prepare top level class if we're prepping for tag
|
|
78
|
-
await this.block.prepare(tag.scope, dom, tag, meta);
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
public async findClassElements(dom: DOM, tag: Tag = null) {
|
|
83
|
-
const tags: Tag[] = [];
|
|
84
|
-
for (const element of Array.from(dom.querySelectorAll(this.fullSelector, tag))) {
|
|
85
|
-
if (ClassNode.preppingElements[this._fullSelector].indexOf(element as HTMLElement) > -1) continue;
|
|
86
|
-
ClassNode.preppingElements[this._fullSelector].push(element as HTMLElement);
|
|
87
|
-
tags.push(await ClassNode.addElementClass(this._fullSelector, element as HTMLElement, dom, element[Tag.TaggedVariable] || null));
|
|
88
|
-
ClassNode.preppingElements[this._fullSelector].splice(ClassNode.preppingElements[this._fullSelector].indexOf(element as HTMLElement), 1);
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
for (const childSelector of ClassNode.classChildren[this._fullSelector]) {
|
|
92
|
-
const node = ClassNode.classes[`${this._fullSelector} ${childSelector}`];
|
|
93
|
-
if (!node) continue;
|
|
94
|
-
for (const _tag of tags) {
|
|
95
|
-
await node.findClassElements(dom, _tag);
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
public async constructTag(tag: Tag, dom: DOM, hasConstruct: boolean | null = null) {
|
|
101
|
-
if (ClassNode.preppedTags[this.fullSelector].indexOf(tag) !== -1) {
|
|
102
|
-
return;
|
|
103
|
-
}
|
|
104
|
-
ClassNode.preppedTags[this.fullSelector].push(tag);
|
|
105
|
-
tag.once('deconstruct', (_tag) => {
|
|
106
|
-
const index = ClassNode.preppedTags[this.fullSelector].indexOf(_tag);
|
|
107
|
-
if (index > -1)
|
|
108
|
-
ClassNode.preppedTags[this.fullSelector].splice(index, 1);
|
|
109
|
-
});
|
|
110
|
-
|
|
111
|
-
if (hasConstruct === null)
|
|
112
|
-
hasConstruct = this.classScope.has('construct');
|
|
113
|
-
|
|
114
|
-
tag.createScope(true);
|
|
115
|
-
const meta = this.updateMeta();
|
|
116
|
-
meta['PrepForSelector'] = this.fullSelector;
|
|
117
|
-
await this.block.prepare(tag.scope, dom, tag, meta);
|
|
118
|
-
if (hasConstruct) {
|
|
119
|
-
const fncCls: FunctionNode = this.classScope.get('construct') as FunctionNode;
|
|
120
|
-
const fnc = await fncCls.getFunction(tag.scope, dom, tag, true);
|
|
121
|
-
await fnc();
|
|
122
|
-
await fncCls.collectGarbage();
|
|
123
|
-
}
|
|
124
|
-
tag.dispatch(`${this.fullSelector}.construct`, tag.element.id);
|
|
125
|
-
ClassNode.addPreparedClassToElement(tag.element, this.fullSelector);
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
public async deconstructTag(tag: Tag, dom: DOM, hasDeconstruct: boolean | null = null) {
|
|
129
|
-
if (hasDeconstruct === null)
|
|
130
|
-
hasDeconstruct = this.classScope.has('deconstruct');
|
|
131
|
-
|
|
132
|
-
if (hasDeconstruct) {
|
|
133
|
-
const fncCls: FunctionNode = this.classScope.get('deconstruct') as FunctionNode;
|
|
134
|
-
const fnc = await fncCls.getFunction(tag.scope, dom, tag, true);
|
|
135
|
-
await fnc();
|
|
136
|
-
await fncCls.collectGarbage();
|
|
137
|
-
}
|
|
138
|
-
for (const key of this.classScope.keys) {
|
|
139
|
-
if (this.classScope.get(key) instanceof OnNode) {
|
|
140
|
-
const on = this.classScope.get(key) as OnNode;
|
|
141
|
-
tag.removeContextEventHandlers(on);
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
tag.dispatch(`${this.fullSelector}.deconstruct`);
|
|
145
|
-
ClassNode.preppedTags[this.fullSelector].splice(ClassNode.preppedTags[this.fullSelector].indexOf(tag), 1);
|
|
146
|
-
ClassNode.removePreparedClassFromElement(tag.element, this.fullSelector);
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
protected async _evaluate(scope: Scope, dom: DOM, tag: Tag = null) {
|
|
150
|
-
return null;
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
public static parse(lastNode, token, tokens: Token[]): ClassNode {
|
|
154
|
-
let selector = tokens.shift().value;
|
|
155
|
-
if (selector.startsWith('>'))
|
|
156
|
-
selector = `:scope ${selector}`;
|
|
157
|
-
const block = Tree.processTokens(Tree.getNextStatementTokens(tokens, true, true));
|
|
158
|
-
return new ClassNode(selector.trim(), block);
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
public getSelectorPath(): string[] {
|
|
162
|
-
const path: string[] = [this.selector];
|
|
163
|
-
let current = this._parentSelector;
|
|
164
|
-
while (current) {
|
|
165
|
-
path.push(ClassNode.classes[current].selector);
|
|
166
|
-
current = ClassNode.classes[current]._parentSelector;
|
|
167
|
-
}
|
|
168
|
-
return path.reverse();
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
public static async checkForClassChanges(element: HTMLElement, dom: DOM, tag: Tag = null) {
|
|
172
|
-
const localSelectors: string[] = [element.tagName.toLowerCase(), ...Array.from(element.classList).map(c => `.${c}`)];
|
|
173
|
-
const fullSelectors: string[] = [...ClassNode.getClassesForElement(element)];
|
|
174
|
-
if (element.id)
|
|
175
|
-
localSelectors.push(`#${element.id}`);
|
|
176
|
-
|
|
177
|
-
for (const selector of localSelectors) {
|
|
178
|
-
const parentSelectors = ClassNode.classParents[selector];
|
|
179
|
-
if (parentSelectors) {
|
|
180
|
-
fullSelectors.push(...parentSelectors.filter(s => !fullSelectors.includes(s)));
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
if (!tag) {
|
|
185
|
-
tag = await dom.getTagForElement(element, true);
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
for (const selector of fullSelectors) {
|
|
189
|
-
const isPrepped = ClassNode.getClassesForElement(element).includes(selector);
|
|
190
|
-
const path = ClassNode.classes[selector]?.getSelectorPath();
|
|
191
|
-
const elements = dom.querySelectPath(path);
|
|
192
|
-
const inElements = elements.includes(element);
|
|
193
|
-
let changed: boolean = false;
|
|
194
|
-
|
|
195
|
-
if (inElements && !isPrepped) {
|
|
196
|
-
await ClassNode.addElementClass(selector, element, dom, tag);
|
|
197
|
-
changed = true;
|
|
198
|
-
} else if (!inElements && isPrepped) {
|
|
199
|
-
await ClassNode.removeElementClass(selector, element, dom, tag);
|
|
200
|
-
changed = true;
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
if (changed && ClassNode.classChildren[selector].length > 0) {
|
|
204
|
-
for (const childSelector of ClassNode.classChildren[selector]) {
|
|
205
|
-
for (const childElement of Array.from(dom.querySelectorAll(childSelector, tag)) as HTMLElement[]) {
|
|
206
|
-
await ClassNode.checkForClassChanges(childElement, dom, childElement[Tag.TaggedVariable] || null);
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
public static getClassesForElement(element: HTMLElement): string[] {
|
|
215
|
-
if (!element[ClassNode.ClassesVariable])
|
|
216
|
-
element[ClassNode.ClassesVariable] = [];
|
|
217
|
-
return element[ClassNode.ClassesVariable];
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
public static addPreparedClassToElement(element: HTMLElement, selector: string) {
|
|
221
|
-
ClassNode.getClassesForElement(element).push(selector);
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
public static removePreparedClassFromElement(element: HTMLElement, selector: string) {
|
|
225
|
-
const classes = ClassNode.getClassesForElement(element);
|
|
226
|
-
classes.splice(classes.indexOf(selector), 1);
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
public static async addElementClass(selector: string, element: HTMLElement, dom: DOM, tag: Tag = null) {
|
|
230
|
-
const classes = ClassNode.getClassesForElement(element);
|
|
231
|
-
if (classes.includes(selector)) return;
|
|
232
|
-
|
|
233
|
-
if (!tag) {
|
|
234
|
-
tag = await dom.getTagForElement(element, true);
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
if (!tag) {
|
|
238
|
-
console.error('no tag found for element', element);
|
|
239
|
-
return;
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
const classNode: ClassNode = Registry.instance.classes.getSynchronous(selector);
|
|
243
|
-
if (classNode) {
|
|
244
|
-
await classNode.constructTag(tag, dom);
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
return tag;
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
public static async removeElementClass(selector: string, element: HTMLElement, dom: DOM, tag: Tag = null) {
|
|
251
|
-
const classes = ClassNode.getClassesForElement(element);
|
|
252
|
-
if (!classes.includes(selector)) return;
|
|
253
|
-
|
|
254
|
-
if (!tag) {
|
|
255
|
-
tag = await dom.getTagForElement(element, true);
|
|
256
|
-
}
|
|
257
|
-
|
|
258
|
-
const classNode: ClassNode = Registry.instance.classes.getSynchronous(selector);
|
|
259
|
-
if (classNode) {
|
|
260
|
-
await classNode.deconstructTag(tag, dom);
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
|
|
264
|
-
public static isClass(cls: string): boolean {
|
|
265
|
-
return !!this.classes[cls];
|
|
266
|
-
}
|
|
267
|
-
}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import {Scope} from "../Scope";
|
|
2
|
-
import {DOM} from "../DOM";
|
|
3
|
-
import {Tag} from "../Tag";
|
|
4
|
-
import {Token, TokenType, Tree, TreeNode} from "../AST";
|
|
5
|
-
import {Node} from "./Node";
|
|
6
|
-
|
|
7
|
-
export class ComparisonNode extends Node implements TreeNode {
|
|
8
|
-
constructor(
|
|
9
|
-
public readonly left: Node,
|
|
10
|
-
public readonly right: Node,
|
|
11
|
-
public readonly type: TokenType
|
|
12
|
-
) {
|
|
13
|
-
super();
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
protected _getChildNodes(): Node[] {
|
|
17
|
-
return [
|
|
18
|
-
this.left as Node,
|
|
19
|
-
this.right as Node
|
|
20
|
-
];
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
protected async _evaluate(scope: Scope, dom: DOM, tag: Tag = null) {
|
|
24
|
-
const left: any = await this.left.evaluate(scope, dom, tag);
|
|
25
|
-
const right: any = await this.right.evaluate(scope, dom, tag);
|
|
26
|
-
switch (this.type) {
|
|
27
|
-
case TokenType.EQUALS:
|
|
28
|
-
return left === right;
|
|
29
|
-
case TokenType.NOT_EQUALS:
|
|
30
|
-
return left !== right;
|
|
31
|
-
case TokenType.GREATER_THAN:
|
|
32
|
-
return left > right;
|
|
33
|
-
case TokenType.LESS_THAN:
|
|
34
|
-
return left < right;
|
|
35
|
-
case TokenType.GREATER_THAN_EQUAL:
|
|
36
|
-
return left >= right;
|
|
37
|
-
case TokenType.LESS_THAN_EQUAL:
|
|
38
|
-
return left <= right;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
public static match(tokens: Token[]): boolean {
|
|
43
|
-
return [
|
|
44
|
-
TokenType.EQUALS,
|
|
45
|
-
TokenType.NOT_EQUALS,
|
|
46
|
-
TokenType.GREATER_THAN,
|
|
47
|
-
TokenType.LESS_THAN,
|
|
48
|
-
TokenType.GREATER_THAN_EQUAL,
|
|
49
|
-
TokenType.LESS_THAN_EQUAL
|
|
50
|
-
].indexOf(tokens[0].type) > -1
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
public static parse(lastNode, token, tokens: Token[]) {
|
|
54
|
-
tokens.splice(0, 1); // Remove comparison operator
|
|
55
|
-
return new ComparisonNode(lastNode, Tree.processTokens(Tree.getNextStatementTokens(tokens)), token.type)
|
|
56
|
-
}
|
|
57
|
-
}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import {Scope} from "../Scope";
|
|
2
|
-
import {DOM} from "../DOM";
|
|
3
|
-
import {Tag} from "../Tag";
|
|
4
|
-
import {WrappedArray} from "../Scope/WrappedArray";
|
|
5
|
-
import {TreeNode} from "../AST";
|
|
6
|
-
import {BlockNode} from "./BlockNode";
|
|
7
|
-
import {Node} from "./Node";
|
|
8
|
-
|
|
9
|
-
export class ConditionalNode extends Node implements TreeNode {
|
|
10
|
-
constructor(
|
|
11
|
-
public readonly condition: Node,
|
|
12
|
-
public readonly block: BlockNode
|
|
13
|
-
) {
|
|
14
|
-
super();
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
protected _getChildNodes(): Node[] {
|
|
18
|
-
return [
|
|
19
|
-
this.condition as Node,
|
|
20
|
-
this.block as Node
|
|
21
|
-
];
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
protected async _evaluate(scope: Scope, dom: DOM, tag: Tag = null) {
|
|
25
|
-
const condition = await this.condition.evaluate(scope, dom, tag);
|
|
26
|
-
let evaluation = false;
|
|
27
|
-
|
|
28
|
-
if (condition instanceof WrappedArray) {
|
|
29
|
-
evaluation = condition.length > 0;
|
|
30
|
-
} else {
|
|
31
|
-
evaluation = !!condition;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
return evaluation;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import {Scope} from "../Scope";
|
|
2
|
-
import {DOM} from "../DOM";
|
|
3
|
-
import {Tag} from "../Tag";
|
|
4
|
-
import {Token, TokenType, Tree, TreeNode} from "../AST";
|
|
5
|
-
import {Node} from "./Node";
|
|
6
|
-
import {ObjectNode} from "./ObjectNode";
|
|
7
|
-
import {ScopeData} from "../Scope/ScopeData";
|
|
8
|
-
import {ElementQueryNode} from "./ElementQueryNode";
|
|
9
|
-
|
|
10
|
-
export class DispatchEventNode extends Node implements TreeNode {
|
|
11
|
-
constructor(
|
|
12
|
-
public readonly name: string,
|
|
13
|
-
public readonly data: ObjectNode | null,
|
|
14
|
-
public readonly bubbles: boolean = false,
|
|
15
|
-
public readonly elementRef: ElementQueryNode | null,
|
|
16
|
-
) {
|
|
17
|
-
super();
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
protected _getChildNodes(): Node[] {
|
|
21
|
-
const nodes: Node[] = [];
|
|
22
|
-
if (this.data)
|
|
23
|
-
nodes.push(this.data);
|
|
24
|
-
return nodes;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
protected async _evaluate(scope: Scope, dom: DOM, tag: Tag = null) {
|
|
28
|
-
let detail = this.data ? (await this.data.evaluate(scope, dom, tag)).objectify : {};
|
|
29
|
-
if (detail instanceof Scope)
|
|
30
|
-
detail = detail.data.getData();
|
|
31
|
-
else if (detail instanceof ScopeData)
|
|
32
|
-
detail = detail.getData();
|
|
33
|
-
|
|
34
|
-
let targets: Tag[] = [tag];
|
|
35
|
-
if (this.elementRef) {
|
|
36
|
-
targets = await this.elementRef.evaluate(scope, dom, tag, true);
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
for (const target of targets) {
|
|
40
|
-
detail['source'] = target.element;
|
|
41
|
-
target.element.dispatchEvent(new CustomEvent(this.name, {
|
|
42
|
-
bubbles: this.bubbles,
|
|
43
|
-
detail: detail
|
|
44
|
-
}));
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
public static parse(lastNode, token, tokens: Token[]) {
|
|
49
|
-
const name = tokens.shift();
|
|
50
|
-
let data: ObjectNode = null;
|
|
51
|
-
if (tokens.length && tokens[0].type === TokenType.L_BRACE) {
|
|
52
|
-
const containedTokens = Tree.getNextStatementTokens(tokens, false, false, true);
|
|
53
|
-
data = Tree.processTokens(containedTokens).statements[0] as ObjectNode;
|
|
54
|
-
}
|
|
55
|
-
const elementRef = lastNode instanceof ElementQueryNode ? lastNode : null;
|
|
56
|
-
return new DispatchEventNode(name.value, data, name.full.startsWith('!!!'), elementRef);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
import {Scope} from "../Scope";
|
|
2
|
-
import {DOM} from "../DOM";
|
|
3
|
-
import {Tag} from "../Tag";
|
|
4
|
-
import {TagList} from "../Tag/TagList";
|
|
5
|
-
import {TreeNode} from "../AST";
|
|
6
|
-
import {Node} from "./Node";
|
|
7
|
-
import {ElementQueryNode} from "./ElementQueryNode";
|
|
8
|
-
import {LiteralNode} from "./LiteralNode";
|
|
9
|
-
import {DOMObject} from "../DOM/DOMObject";
|
|
10
|
-
import {IndexNode} from "./IndexNode";
|
|
11
|
-
import {ScopeMemberNode} from "./ScopeMemberNode";
|
|
12
|
-
import {RootScopeMemberNode} from "./RootScopeMemberNode";
|
|
13
|
-
|
|
14
|
-
export class ElementAttributeNode extends Node implements TreeNode {
|
|
15
|
-
protected requiresPrep: boolean = true;
|
|
16
|
-
|
|
17
|
-
constructor(
|
|
18
|
-
public readonly elementRef: ElementQueryNode | null,
|
|
19
|
-
public readonly attr: string
|
|
20
|
-
) {
|
|
21
|
-
super();
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
public get name(): LiteralNode<string> {
|
|
25
|
-
return new LiteralNode<string>(`@${this.attributeName}`);
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
protected _getChildNodes(): Node[] {
|
|
29
|
-
let nodes = [];
|
|
30
|
-
if (this.elementRef)
|
|
31
|
-
nodes.push(this.elementRef)
|
|
32
|
-
return nodes;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
get attributeName(): string {
|
|
36
|
-
if (this.attr.startsWith('.'))
|
|
37
|
-
return this.attr.substring(2);
|
|
38
|
-
return this.attr.substring(1);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
protected async _evaluate(scope: Scope, dom: DOM, tag: Tag = null) {
|
|
42
|
-
let tags: TagList;
|
|
43
|
-
|
|
44
|
-
if (this.elementRef instanceof ElementQueryNode) {
|
|
45
|
-
tags = await this.elementRef.evaluate(scope, dom, tag, true);
|
|
46
|
-
} else if (this.elementRef as any instanceof IndexNode) {
|
|
47
|
-
const indexResult = await (this.elementRef as any).evaluate(scope, dom, tag, true);
|
|
48
|
-
if (indexResult instanceof TagList) {
|
|
49
|
-
tags = indexResult;
|
|
50
|
-
} else {
|
|
51
|
-
tags = new TagList(indexResult);
|
|
52
|
-
}
|
|
53
|
-
} else if (this.elementRef as any instanceof ScopeMemberNode || this.elementRef as any instanceof RootScopeMemberNode) {
|
|
54
|
-
const scopeEval = await (this.elementRef as any).evaluate(scope, dom, tag, true);
|
|
55
|
-
if (Array.isArray(scopeEval)) {
|
|
56
|
-
tags = scopeEval as any;
|
|
57
|
-
} else {
|
|
58
|
-
tags = new TagList(scopeEval);
|
|
59
|
-
}
|
|
60
|
-
} else if (tag) {
|
|
61
|
-
tags = new TagList(tag)
|
|
62
|
-
} else {
|
|
63
|
-
return;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
if (tags.length === 1) {
|
|
67
|
-
return this.getAttributeScopeValue(tags[0]);
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
return tags.map((tag) => this.getAttributeScopeValue(tag));
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
async getAttributeScopeValue(tag: Tag | DOMObject): Promise<string> {
|
|
74
|
-
if (!(tag instanceof DOMObject)) {
|
|
75
|
-
return '';
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
// Make sure the attribute is being watched
|
|
79
|
-
await tag.watchAttribute(this.attributeName);
|
|
80
|
-
return tag.scope.get(`@${this.attributeName}`) as string;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
async prepare(scope: Scope, dom: DOM, tag: Tag = null, meta: any = null) {
|
|
84
|
-
if (this.elementRef) {
|
|
85
|
-
await this.elementRef.prepare(scope, dom, tag, meta);
|
|
86
|
-
const tags: any = await this.elementRef.evaluate(scope, dom, tag, true);
|
|
87
|
-
if (tags instanceof TagList) {
|
|
88
|
-
for (const t of tags)
|
|
89
|
-
await t?.watchAttribute(this.attributeName);
|
|
90
|
-
} else if (tags instanceof DOMObject) {
|
|
91
|
-
await (tags as DOMObject).watchAttribute(this.attributeName);
|
|
92
|
-
}
|
|
93
|
-
} else if (tag) {
|
|
94
|
-
await tag.watchAttribute(this.attributeName);
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import {Scope} from "../Scope";
|
|
2
|
-
import {DOM} from "../DOM";
|
|
3
|
-
import {Tag, TagState} from "../Tag";
|
|
4
|
-
import {Token, TreeNode} from "../AST";
|
|
5
|
-
import {Node} from "./Node";
|
|
6
|
-
import {EQuerySelectDirection} from "../DOM/AbstractDOM";
|
|
7
|
-
|
|
8
|
-
export class ElementQueryNode extends Node implements TreeNode {
|
|
9
|
-
protected requiresPrep: boolean = true;
|
|
10
|
-
|
|
11
|
-
constructor(
|
|
12
|
-
public readonly query: string,
|
|
13
|
-
public readonly first: boolean = false,
|
|
14
|
-
public readonly direction: EQuerySelectDirection = EQuerySelectDirection.ALL,
|
|
15
|
-
) {
|
|
16
|
-
super();
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
async evaluate(scope: Scope, dom: DOM, tag?: Tag, forceList: boolean = false): Promise<any> {
|
|
20
|
-
if (scope.isGarbage || (tag && tag.state === TagState.Deconstructed))
|
|
21
|
-
return;
|
|
22
|
-
return await this._evaluate(scope, dom, tag, forceList);
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
protected async _evaluate(scope: Scope, dom: DOM, tag: Tag = null, forceList: boolean = false): Promise<any> {
|
|
26
|
-
tag = tag || await dom.getTagForScope(scope);
|
|
27
|
-
const elements = await dom.get(this.query, true, tag, this.direction);
|
|
28
|
-
return this.first && !forceList ? elements[0] : elements;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
async prepare(scope: Scope, dom: DOM, tag: Tag = null, meta: any = null): Promise<any> {
|
|
32
|
-
tag = tag || await dom.getTagForScope(scope);
|
|
33
|
-
await dom.get(this.query, true, tag);
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
public static parse(lastNode, token, tokens: Token[]): ElementQueryNode {
|
|
37
|
-
tokens.shift();
|
|
38
|
-
let first = false;
|
|
39
|
-
let direction = EQuerySelectDirection.ALL;
|
|
40
|
-
if (token.full.startsWith('?>')) {
|
|
41
|
-
direction = EQuerySelectDirection.DOWN;
|
|
42
|
-
} else if (token.full.startsWith('?<')) {
|
|
43
|
-
direction = EQuerySelectDirection.UP;
|
|
44
|
-
first = true;
|
|
45
|
-
}
|
|
46
|
-
return new ElementQueryNode(token.value, first, direction);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import {Scope} from "../Scope";
|
|
2
|
-
import {DOM} from "../DOM";
|
|
3
|
-
import {Tag} from "../Tag";
|
|
4
|
-
import {TagList} from "../Tag/TagList";
|
|
5
|
-
import {TreeNode} from "../AST";
|
|
6
|
-
import {Node} from "./Node";
|
|
7
|
-
import {ElementQueryNode} from "./ElementQueryNode";
|
|
8
|
-
import {LiteralNode} from "./LiteralNode";
|
|
9
|
-
import {DOMObject} from "../DOM/DOMObject";
|
|
10
|
-
|
|
11
|
-
export class ElementStyleNode extends Node implements TreeNode {
|
|
12
|
-
protected requiresPrep: boolean = true;
|
|
13
|
-
|
|
14
|
-
constructor(
|
|
15
|
-
public readonly elementRef: ElementQueryNode | null,
|
|
16
|
-
public readonly attr: string
|
|
17
|
-
) {
|
|
18
|
-
super();
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
public get name(): LiteralNode<string> {
|
|
22
|
-
return new LiteralNode<string>(`$${this.attributeName}`);
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
protected _getChildNodes(): Node[] {
|
|
26
|
-
let nodes = [];
|
|
27
|
-
if (this.elementRef)
|
|
28
|
-
nodes.push(this.elementRef)
|
|
29
|
-
return nodes;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
get attributeName(): string {
|
|
33
|
-
if (this.attr.startsWith('.'))
|
|
34
|
-
return this.attr.substring(2);
|
|
35
|
-
return this.attr.substring(1);
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
protected async _evaluate(scope: Scope, dom: DOM, tag: Tag = null) {
|
|
39
|
-
let tags: TagList;
|
|
40
|
-
if (this.elementRef) {
|
|
41
|
-
tags = await this.elementRef.evaluate(scope, dom, tag, true);
|
|
42
|
-
} else if (tag) {
|
|
43
|
-
tags = new TagList(tag)
|
|
44
|
-
} else {
|
|
45
|
-
return;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
if (tags instanceof DOMObject)
|
|
49
|
-
tags = new TagList(tags);
|
|
50
|
-
|
|
51
|
-
if (tags.length === 1) {
|
|
52
|
-
return this.getAttributeStyleValue(tags[0]);
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
return tags.map((tag) => this.getAttributeStyleValue(tag));
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
async getAttributeStyleValue(tag: Tag | DOMObject): Promise<string> {
|
|
59
|
-
// Make sure we're watching the style
|
|
60
|
-
await tag.watchStyle(this.attributeName);
|
|
61
|
-
return tag.scope.get(`$${this.attributeName}`);
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
async prepare(scope: Scope, dom: DOM, tag: Tag = null, meta: any = null) {
|
|
65
|
-
if (this.elementRef) {
|
|
66
|
-
await this.elementRef.prepare(scope, dom, tag, meta);
|
|
67
|
-
const tags: TagList = await this.elementRef.evaluate(scope, dom, tag, true);
|
|
68
|
-
for (const t of tags)
|
|
69
|
-
await t.watchStyle(this.attributeName);
|
|
70
|
-
} else if(tag) {
|
|
71
|
-
await tag.watchStyle(this.attributeName);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
}
|