OLD | NEW |
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 part of $LIBRARYNAME; | 5 part of $LIBRARYNAME; |
6 | 6 |
7 class _AttributeClassSet extends CssClassSetImpl { | 7 class _AttributeClassSet extends CssClassSetImpl { |
8 final Element _element; | 8 final Element _element; |
9 | 9 |
10 _AttributeClassSet(this._element); | 10 _AttributeClassSet(this._element); |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
51 } | 51 } |
52 var fragment = parentElement.createFragment(svg, validator: validator, | 52 var fragment = parentElement.createFragment(svg, validator: validator, |
53 treeSanitizer: treeSanitizer); | 53 treeSanitizer: treeSanitizer); |
54 return fragment.nodes.where((e) => e is SvgElement).single; | 54 return fragment.nodes.where((e) => e is SvgElement).single; |
55 } | 55 } |
56 | 56 |
57 CssClassSet get classes => new _AttributeClassSet(this); | 57 CssClassSet get classes => new _AttributeClassSet(this); |
58 | 58 |
59 List<Element> get children => new FilteredElementList(this); | 59 List<Element> get children => new FilteredElementList(this); |
60 | 60 |
61 void set children(List<Element> value) { | 61 set children(List<Element> value) { |
62 final children = this.children; | 62 final children = this.children; |
63 children.clear(); | 63 children.clear(); |
64 children.addAll(value); | 64 children.addAll(value); |
65 } | 65 } |
66 | 66 |
67 String get outerHtml { | 67 String get outerHtml { |
68 final container = new Element.tag("div"); | 68 final container = new Element.tag("div"); |
69 final SvgElement cloned = this.clone(true); | 69 final SvgElement cloned = this.clone(true); |
70 container.children.add(cloned); | 70 container.children.add(cloned); |
71 return container.innerHtml; | 71 return container.innerHtml; |
72 } | 72 } |
73 | 73 |
74 String get innerHtml { | 74 String get innerHtml { |
75 final container = new Element.tag("div"); | 75 final container = new Element.tag("div"); |
76 final SvgElement cloned = this.clone(true); | 76 final SvgElement cloned = this.clone(true); |
77 container.children.addAll(cloned.children); | 77 container.children.addAll(cloned.children); |
78 return container.innerHtml; | 78 return container.innerHtml; |
79 } | 79 } |
80 | 80 |
81 void set innerHtml(String value) { | 81 set innerHtml(String value) { |
82 this.setInnerHtml(value); | 82 this.setInnerHtml(value); |
83 } | 83 } |
84 | 84 |
85 DocumentFragment createFragment(String svg, | 85 DocumentFragment createFragment(String svg, |
86 {NodeValidator validator, NodeTreeSanitizer treeSanitizer}) { | 86 {NodeValidator validator, NodeTreeSanitizer treeSanitizer}) { |
87 | 87 |
88 if (treeSanitizer == null) { | 88 if (treeSanitizer == null) { |
89 if (validator == null) { | 89 if (validator == null) { |
90 validator = new NodeValidatorBuilder.common() | 90 validator = new NodeValidatorBuilder.common() |
91 ..allowSvg(); | 91 ..allowSvg(); |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
136 | 136 |
137 /** | 137 /** |
138 * Checks to see if the SVG element type is supported by the current platform. | 138 * Checks to see if the SVG element type is supported by the current platform. |
139 * | 139 * |
140 * The tag should be a valid SVG element tag name. | 140 * The tag should be a valid SVG element tag name. |
141 */ | 141 */ |
142 static bool isTagSupported(String tag) { | 142 static bool isTagSupported(String tag) { |
143 var e = new $CLASSNAME.tag(tag); | 143 var e = new $CLASSNAME.tag(tag); |
144 return e is $CLASSNAME && !(e is UnknownElement); | 144 return e is $CLASSNAME && !(e is UnknownElement); |
145 } | 145 } |
| 146 |
| 147 $if JSINTEROP |
| 148 set _svgClassName(AnimatedString value) => |
| 149 _blink.BlinkSVGElement.instance.className_Setter_(unwrap_jso(this), unwrap
_jso(value)); |
| 150 |
| 151 String get className => _svgClassName.baseVal; |
| 152 |
| 153 // Unbelievable hack. We can't create an SvgAnimatedString, but we can get |
| 154 // the existing one and change its baseVal. Then we call the blink setter dire
ctly |
| 155 // TODO(alanknight): Handle suppressing the SVGAnimated<*> better |
| 156 set className(String s) { |
| 157 var oldClass = _svgClassName; |
| 158 oldClass.baseVal = s; |
| 159 _svgClassName = oldClass; |
| 160 } |
| 161 $endif |
146 $!MEMBERS | 162 $!MEMBERS |
147 } | 163 } |
OLD | NEW |