OLD | NEW |
1 library dart.dom.svg; | 1 library dart.dom.svg; |
2 | 2 |
3 import 'dart:async'; | 3 import 'dart:async'; |
4 import 'dart:collection'; | 4 import 'dart:collection'; |
5 import 'dart:_collection-dev' hide deprecated; | 5 import 'dart:_collection-dev' hide deprecated; |
6 import 'dart:html'; | 6 import 'dart:html'; |
7 import 'dart:html_common'; | 7 import 'dart:html_common'; |
8 import 'dart:_js_helper' show Creates, Returns, JavaScriptIndexingBehavior, JSNa
me; | 8 import 'dart:_js_helper' show Creates, Returns, JavaScriptIndexingBehavior, JSNa
me; |
9 import 'dart:_foreign_helper' show JS; | 9 import 'dart:_foreign_helper' show JS; |
10 import 'dart:_interceptors' show Interceptor; | 10 import 'dart:_interceptors' show Interceptor; |
11 // DO NOT EDIT - unless you are editing documentation as per: | 11 // DO NOT EDIT - unless you are editing documentation as per: |
12 // https://code.google.com/p/dart/wiki/ContributingHTMLDocumentation | 12 // https://code.google.com/p/dart/wiki/ContributingHTMLDocumentation |
13 // Auto-generated dart:svg library. | 13 // Auto-generated dart:svg library. |
14 | 14 |
15 | 15 |
16 | 16 |
17 | 17 |
18 | 18 |
19 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 19 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
20 // for details. All rights reserved. Use of this source code is governed by a | 20 // for details. All rights reserved. Use of this source code is governed by a |
21 // BSD-style license that can be found in the LICENSE file. | 21 // BSD-style license that can be found in the LICENSE file. |
22 | 22 |
23 | 23 |
24 final _START_TAG_REGEXP = new RegExp('<(\\w+)'); | |
25 | |
26 class _SvgElementFactoryProvider { | 24 class _SvgElementFactoryProvider { |
27 static SvgElement createSvgElement_tag(String tag) { | 25 static SvgElement createSvgElement_tag(String tag) { |
28 final Element temp = | 26 final Element temp = |
29 document.$dom_createElementNS("http://www.w3.org/2000/svg", tag); | 27 document.$dom_createElementNS("http://www.w3.org/2000/svg", tag); |
30 return temp; | 28 return temp; |
31 } | 29 } |
32 | |
33 static SvgElement createSvgElement_svg(String svg) { | |
34 Element parentTag; | |
35 final match = _START_TAG_REGEXP.firstMatch(svg); | |
36 if (match != null && match.group(1).toLowerCase() == 'svg') { | |
37 parentTag = new Element.tag('div'); | |
38 } else { | |
39 parentTag = new SvgSvgElement(); | |
40 } | |
41 | |
42 parentTag.innerHtml = svg; | |
43 if (parentTag.children.length == 1) return parentTag.children.removeLast(); | |
44 | |
45 throw new ArgumentError( | |
46 'SVG had ${parentTag.children.length} ' | |
47 'top-level children but 1 expected'); | |
48 } | |
49 } | |
50 | |
51 class _SvgSvgElementFactoryProvider { | |
52 static SvgSvgElement createSvgSvgElement() { | |
53 final el = new SvgElement.tag("svg"); | |
54 // The SVG spec requires the version attribute to match the spec version | |
55 el.attributes['version'] = "1.1"; | |
56 return el; | |
57 } | |
58 } | 30 } |
59 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 31 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
60 // for details. All rights reserved. Use of this source code is governed by a | 32 // for details. All rights reserved. Use of this source code is governed by a |
61 // BSD-style license that can be found in the LICENSE file. | 33 // BSD-style license that can be found in the LICENSE file. |
62 | 34 |
63 | 35 |
64 @DocsEditable() | 36 @DocsEditable() |
65 @DomName('SVGAElement') | 37 @DomName('SVGAElement') |
66 @Unstable() | 38 @Unstable() |
67 class AElement extends GraphicsElement implements UriReference, ExternalResource
sRequired native "SVGAElement" { | 39 class AElement extends GraphicsElement implements UriReference, ExternalResource
sRequired native "SVGAElement" { |
(...skipping 4682 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4750 } | 4722 } |
4751 | 4723 |
4752 void writeClasses(Set s) { | 4724 void writeClasses(Set s) { |
4753 _element.attributes['class'] = s.join(' '); | 4725 _element.attributes['class'] = s.join(' '); |
4754 } | 4726 } |
4755 } | 4727 } |
4756 | 4728 |
4757 @DomName('SVGElement') | 4729 @DomName('SVGElement') |
4758 @Unstable() | 4730 @Unstable() |
4759 class SvgElement extends Element native "SVGElement" { | 4731 class SvgElement extends Element native "SVGElement" { |
| 4732 static final _START_TAG_REGEXP = new RegExp('<(\\w+)'); |
| 4733 |
4760 factory SvgElement.tag(String tag) => | 4734 factory SvgElement.tag(String tag) => |
4761 _SvgElementFactoryProvider.createSvgElement_tag(tag); | 4735 document.$dom_createElementNS("http://www.w3.org/2000/svg", tag); |
4762 factory SvgElement.svg(String svg) => | 4736 factory SvgElement.svg(String svg, |
4763 _SvgElementFactoryProvider.createSvgElement_svg(svg); | 4737 {NodeValidator validator, NodeTreeSanitizer treeSanitizer}) { |
| 4738 |
| 4739 if (validator == null && treeSanitizer == null) { |
| 4740 validator = new NodeValidatorBuilder.common()..allowSvg(); |
| 4741 } |
| 4742 |
| 4743 final match = _START_TAG_REGEXP.firstMatch(svg); |
| 4744 var parentElement; |
| 4745 if (match != null && match.group(1).toLowerCase() == 'svg') { |
| 4746 parentElement = document.body; |
| 4747 } else { |
| 4748 parentElement = new SvgSvgElement(); |
| 4749 } |
| 4750 var fragment = parentElement.createFragment(svg, validator: validator, |
| 4751 treeSanitizer: treeSanitizer); |
| 4752 return fragment.nodes.where((e) => e is SvgElement).single; |
| 4753 } |
4764 | 4754 |
4765 _AttributeClassSet _cssClassSet; | 4755 _AttributeClassSet _cssClassSet; |
4766 CssClassSet get classes { | 4756 CssClassSet get classes { |
4767 if (_cssClassSet == null) { | 4757 if (_cssClassSet == null) { |
4768 _cssClassSet = new _AttributeClassSet(this); | 4758 _cssClassSet = new _AttributeClassSet(this); |
4769 } | 4759 } |
4770 return _cssClassSet; | 4760 return _cssClassSet; |
4771 } | 4761 } |
4772 | 4762 |
4773 List<Element> get children => new FilteredElementList<Element>(this); | 4763 List<Element> get children => new FilteredElementList<Element>(this); |
(...skipping 11 matching lines...) Expand all Loading... |
4785 return container.innerHtml; | 4775 return container.innerHtml; |
4786 } | 4776 } |
4787 | 4777 |
4788 String get innerHtml { | 4778 String get innerHtml { |
4789 final container = new Element.tag("div"); | 4779 final container = new Element.tag("div"); |
4790 final SvgElement cloned = this.clone(true); | 4780 final SvgElement cloned = this.clone(true); |
4791 container.children.addAll(cloned.children); | 4781 container.children.addAll(cloned.children); |
4792 return container.innerHtml; | 4782 return container.innerHtml; |
4793 } | 4783 } |
4794 | 4784 |
4795 void set innerHtml(String svg) { | 4785 void set innerHtml(String value) { |
4796 final container = new Element.tag("div"); | 4786 this.setInnerHtml(value); |
4797 // Wrap the SVG string in <svg> so that SvgElements are created, rather than | 4787 } |
4798 // HTMLElements. | 4788 |
4799 container.innerHtml = '<svg version="1.1">$svg</svg>'; | 4789 DocumentFragment createFragment(String svg, |
4800 this.children = container.children[0].children; | 4790 {NodeValidator validator, NodeTreeSanitizer treeSanitizer}) { |
| 4791 |
| 4792 if (treeSanitizer == null) { |
| 4793 if (validator == null) { |
| 4794 validator = new NodeValidatorBuilder.common() |
| 4795 ..allowSvg(); |
| 4796 } |
| 4797 treeSanitizer = new NodeTreeSanitizer(validator); |
| 4798 } |
| 4799 |
| 4800 // We create a fragment which will parse in the HTML parser |
| 4801 var html = '<svg version="1.1">$svg</svg>'; |
| 4802 var fragment = document.body.createFragment(html, |
| 4803 treeSanitizer: treeSanitizer); |
| 4804 |
| 4805 var svgFragment = new DocumentFragment(); |
| 4806 // The root is the <svg/> element, need to pull out the contents. |
| 4807 var root = fragment.nodes.single; |
| 4808 while (root.firstChild != null) { |
| 4809 svgFragment.append(root.firstChild); |
| 4810 } |
| 4811 return svgFragment; |
4801 } | 4812 } |
4802 | 4813 |
4803 // Unsupported methods inherited from Element. | 4814 // Unsupported methods inherited from Element. |
4804 | 4815 |
4805 @DomName('Element.insertAdjacentText') | 4816 @DomName('Element.insertAdjacentText') |
4806 void insertAdjacentText(String where, String text) { | 4817 void insertAdjacentText(String where, String text) { |
4807 throw new UnsupportedError("Cannot invoke insertAdjacentText on SVG."); | 4818 throw new UnsupportedError("Cannot invoke insertAdjacentText on SVG."); |
4808 } | 4819 } |
4809 | 4820 |
4810 @DomName('Element.insertAdjacentHTML') | 4821 @DomName('Element.insertAdjacentHTML') |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4869 | 4880 |
4870 } | 4881 } |
4871 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 4882 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
4872 // for details. All rights reserved. Use of this source code is governed by a | 4883 // for details. All rights reserved. Use of this source code is governed by a |
4873 // BSD-style license that can be found in the LICENSE file. | 4884 // BSD-style license that can be found in the LICENSE file. |
4874 | 4885 |
4875 | 4886 |
4876 @DomName('SVGSVGElement') | 4887 @DomName('SVGSVGElement') |
4877 @Unstable() | 4888 @Unstable() |
4878 class SvgSvgElement extends GraphicsElement implements FitToViewBox, ExternalRes
ourcesRequired, ZoomAndPan native "SVGSVGElement" { | 4889 class SvgSvgElement extends GraphicsElement implements FitToViewBox, ExternalRes
ourcesRequired, ZoomAndPan native "SVGSVGElement" { |
4879 factory SvgSvgElement() => _SvgSvgElementFactoryProvider.createSvgSvgElement()
; | 4890 factory SvgSvgElement() { |
| 4891 final el = new SvgElement.tag("svg"); |
| 4892 // The SVG spec requires the version attribute to match the spec version |
| 4893 el.attributes['version'] = "1.1"; |
| 4894 return el; |
| 4895 } |
4880 | 4896 |
4881 // To suppress missing implicit constructor warnings. | 4897 // To suppress missing implicit constructor warnings. |
4882 factory SvgSvgElement._() { throw new UnsupportedError("Not supported"); } | 4898 factory SvgSvgElement._() { throw new UnsupportedError("Not supported"); } |
4883 | 4899 |
4884 @DomName('SVGSVGElement.contentScriptType') | 4900 @DomName('SVGSVGElement.contentScriptType') |
4885 @DocsEditable() | 4901 @DocsEditable() |
4886 String contentScriptType; | 4902 String contentScriptType; |
4887 | 4903 |
4888 @DomName('SVGSVGElement.contentStyleType') | 4904 @DomName('SVGSVGElement.contentStyleType') |
4889 @DocsEditable() | 4905 @DocsEditable() |
(...skipping 1284 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6174 @DomName('SVGVKernElement') | 6190 @DomName('SVGVKernElement') |
6175 @Unstable() | 6191 @Unstable() |
6176 abstract class _SVGVKernElement extends SvgElement native "SVGVKernElement" { | 6192 abstract class _SVGVKernElement extends SvgElement native "SVGVKernElement" { |
6177 // To suppress missing implicit constructor warnings. | 6193 // To suppress missing implicit constructor warnings. |
6178 factory _SVGVKernElement._() { throw new UnsupportedError("Not supported"); } | 6194 factory _SVGVKernElement._() { throw new UnsupportedError("Not supported"); } |
6179 | 6195 |
6180 @DomName('SVGVKernElement.SVGVKernElement') | 6196 @DomName('SVGVKernElement.SVGVKernElement') |
6181 @DocsEditable() | 6197 @DocsEditable() |
6182 factory _SVGVKernElement() => _SvgElementFactoryProvider.createSvgElement_tag(
"vkern"); | 6198 factory _SVGVKernElement() => _SvgElementFactoryProvider.createSvgElement_tag(
"vkern"); |
6183 } | 6199 } |
OLD | NEW |