blob: 077a8077cae10f650bf2cd971fbae57613e2a7e7 [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);
}
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
}