| // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| part of svg; |
| |
| class _AttributeClassSet extends CssClassSet { |
| final Element _element; |
| |
| _AttributeClassSet(this._element); |
| |
| Set<String> readClasses() { |
| var classname = _element.attributes['class']; |
| |
| Set<String> s = new Set<String>(); |
| if (classname == null) { |
| return s; |
| } |
| for (String name in classname.split(' ')) { |
| String trimmed = name.trim(); |
| if (!trimmed.isEmpty) { |
| s.add(trimmed); |
| } |
| } |
| return s; |
| } |
| |
| void writeClasses(Set s) { |
| List list = new List.from(s); |
| _element.attributes['class'] = Strings.join(list, ' '); |
| } |
| } |
| |
| class $CLASSNAME$EXTENDS$IMPLEMENTS$NATIVESPEC { |
| factory $CLASSNAME.tag(String tag) => |
| _$(CLASSNAME)FactoryProvider.create$(CLASSNAME)_tag(tag); |
| factory $CLASSNAME.svg(String svg) => |
| _$(CLASSNAME)FactoryProvider.create$(CLASSNAME)_svg(svg); |
| |
| _AttributeClassSet _cssClassSet; |
| CssClassSet get classes { |
| if (_cssClassSet == null) { |
| _cssClassSet = new _AttributeClassSet(this); |
| } |
| return _cssClassSet; |
| } |
| |
| List<Element> get elements => new FilteredElementList(this); |
| |
| void set elements(Collection<Element> value) { |
| final elements = this.elements; |
| elements.clear(); |
| elements.addAll(value); |
| } |
| |
| String get outerHTML { |
| final container = new Element.tag("div"); |
| final SVGElement cloned = this.clone(true); |
| container.elements.add(cloned); |
| return container.innerHTML; |
| } |
| |
| String get innerHTML { |
| final container = new Element.tag("div"); |
| final SVGElement cloned = this.clone(true); |
| container.elements.addAll(cloned.elements); |
| return container.innerHTML; |
| } |
| |
| void set innerHTML(String svg) { |
| final container = new Element.tag("div"); |
| // Wrap the SVG string in <svg> so that SVGElements are created, rather than |
| // HTMLElements. |
| container.innerHTML = '<svg version="1.1">$svg</svg>'; |
| this.elements = container.elements[0].elements; |
| } |
| |
| $!MEMBERS |
| } |