blob: 1c15a0fa64f51ae266b292705510728274cba759 [file] [log] [blame]
// 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);
}
List<Element> get children => new FilteredElementList(this);
void set children(Collection<Element> value) {
final children = this.children;
children.clear();
children.addAll(value);
}
String get outerHTML {
final container = new Element.tag("div");
final SvgElement cloned = this.clone(true);
container.children.add(cloned);
return container.innerHTML;
}
String get innerHTML {
final container = new Element.tag("div");
final SvgElement cloned = this.clone(true);
container.children.addAll(cloned.children);
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.children = container.children[0].children;
}
$!MEMBERS
}