OLD | NEW |
1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
2 <html><body> | 2 <html> |
3 <element name="x-doc-link" constructor="DocLink" extends="span"> | 3 <head> |
| 4 <link rel="components" href="doc_link.html"> |
| 5 </head> |
| 6 |
| 7 <body> |
| 8 <element name="x-member-blocks" extends="div"> |
4 <template> | 9 <template> |
5 <template instantiate="if ref.refId != 'void'"> | 10 <template iterate='block in blocks'> |
6 <a href="{{permalink(ref)}}">{{ref.name}}</a> | 11 <div> |
7 </template> | 12 <h3>{{block.kindTitle}}</h3> |
8 <template instantiate="if ref.refId == 'void'"> | 13 <template iterate='element in block.elements'> |
9 {{ref.name}} | 14 <x-element-summary element="{{element}}"></x-element-summary> |
| 15 </template> |
| 16 </div> |
10 </template> | 17 </template> |
11 </template> | 18 </template> |
12 <script type="application/dart"> | 19 <script type="application/dart"> |
13 import 'package:web_ui/web_ui.dart'; | 20 import 'package:web_ui/web_ui.dart'; |
14 import 'ast.dart'; | 21 import 'ast.dart'; |
15 import 'model.dart'; | 22 import 'model.dart'; |
16 | |
17 class DocLink extends WebComponent { | |
18 /// Must be a Reference or Element. | |
19 var ref; | |
20 } | |
21 </script> | |
22 </element> | |
23 | |
24 <element name="x-member-blocks" constructor="MemberBlocks" extends="div"> | |
25 <template> | |
26 <template iterate='block in blocks'> | |
27 <div> | |
28 <h3>{{block.kindTitle}}</h3> | |
29 <ul> | |
30 <template iterate='element in block.elements'> | |
31 <li class="{{kindCssClass(element)}}"> | |
32 <x-element-summary element="{{element}}"></x-element-summary> | |
33 </li> | |
34 </template> | |
35 </ul> | |
36 </div> | |
37 </template> | |
38 </template> | |
39 <script type="application/dart"> | |
40 // TODO(jacobr): this is kinda a rediculous way to do this | |
41 import 'package:web_ui/web_ui.dart'; | |
42 import 'ast.dart'; | |
43 import 'model.dart'; | |
44 | 23 |
45 class MemberBlocks extends WebComponent { | 24 class MemberBlocks extends WebComponent { |
46 List<ElementBlock> blocks; | 25 List<ElementBlock> blocks; |
47 } | 26 } |
48 </script> | 27 </script> |
49 </element> | 28 </element> |
50 | 29 |
51 <element name="x-element-signature" constructor="ElementSignature" extends="sp
an"> | 30 <element name="x-element-signature" extends="span"> |
52 <template> | 31 <template> |
53 <span class="element-class"> | 32 <span class="element-class"> |
54 <template instantiate="if (element is MethodElementBase || element is Ty
pedefElement) && element.returnType != null"> | 33 <template instantiate="if hasReturnType"> |
55 <x-doc-link ref="{{element.returnType}}"></x-doc-link> | 34 <x-doc-link ref="{{element.returnType}}"></x-doc-link> |
56 </template> | 35 </template> |
57 </span> | 36 </span> |
58 <span class="element-definition"> | 37 <span class="element-definition"> |
59 <span class="element-name"><x-doc-link ref="{{element}}"></x-doc-link></
span> | 38 <span class="element-name"> |
60 <template instantiate="if element is MethodElement || element is Constru
ctorElement || element is TypedefElement"> | 39 <x-doc-link ref="{{element}}" short="{{true}}"></x-doc-link> |
| 40 </span> |
| 41 <template instantiate="if hasArguments"> |
61 <span class="args">( | 42 <span class="args">( |
62 <template iterate="param in element.parameters"> | 43 <template iterate="param in element.parameters"> |
63 <span class="arg"> | 44 <span class="arg"> |
64 <template instantiate="if param.type != null"> | 45 <template instantiate="if param.type != null"> |
65 <span class = "arg-type"> | 46 <span class="arg-type"> |
66 <x-doc-link ref="{{param.type}}"></x-doc-link> | 47 <x-doc-link ref="{{param.type}}"></x-doc-link> |
67 </span> | 48 </span> |
68 </template> | 49 </template> |
69 <span class="arg-name">{{param.name}}</span> | 50 <span class="arg-name">{{param.name}}</span> |
70 </span> | 51 </span> |
71 </template>) | 52 </template>) |
72 </span> | 53 </span> |
73 </template> | 54 </template> |
74 </span> | 55 </span> |
75 </template> | 56 </template> |
76 <script type="application/dart"> | 57 <script type="application/dart"> |
77 import 'package:web_ui/web_ui.dart'; | 58 import 'package:web_ui/web_ui.dart'; |
78 import 'ast.dart'; | 59 import 'ast.dart'; |
79 import 'model.dart'; | 60 import 'model.dart'; |
80 | 61 |
81 class ElementSignature extends WebComponent { | 62 class ElementSignature extends WebComponent { |
82 Element element; | 63 Element element; |
| 64 |
| 65 bool get hasReturnType => |
| 66 (element is MethodLikeElement || element is TypedefElement) |
| 67 && element.returnType != null; |
| 68 |
| 69 bool get hasArguments => |
| 70 element is MethodElement || element is ConstructorElement |
| 71 || element is TypedefElement; |
83 } | 72 } |
84 </script> | 73 </script> |
85 </element> | 74 </element> |
86 | 75 |
87 <element name="x-element-summary" constructor="ElementSummary" extends="div"> | 76 <element name="x-element-summary" extends="div"> |
88 <template> | 77 <template> |
89 <!--TODO(jacobr): use id instead of data-id and use a different escaping s
cheme--> | 78 <!--TODO(jacobr): use id instead of data-id and use a different escaping s
cheme--> |
90 <details class="element-details {{(element is MethodElementBase) ? 'member
-details' : 'type-details'}}" data-id="{{element.id}}" open="{{currentMember !=
null && element.id == currentMember.id}}"> | 79 <details class="element-details {{kindClass}} {{memberOrTypeClass}}" |
91 <summary> | 80 data-id="{{element.id}}" |
| 81 open="{{isOpen}}"> |
| 82 <summary> |
92 <div class="overflow-shadow"></div> | 83 <div class="overflow-shadow"></div> |
93 <template instantiate="if element is! ClassElement"> | 84 <template instantiate="if element is! ClassElement"> |
94 <x-element-signature element="{{element}}"> | 85 <x-element-signature element="{{element}}"> |
95 </x-element-signature> | 86 </x-element-signature> |
96 </template> | 87 </template> |
97 <template instantiate="if element is ClassElement"> | 88 <template instantiate="if element is ClassElement"> |
98 <x-doc-link class="element-name element-definition" ref="{{element}}
"></x-doc-link> | 89 <x-doc-link class="element-name element-definition" |
| 90 ref="{{element}}"> |
| 91 </x-doc-link> |
99 </template> | 92 </template> |
100 <div class="documentation"> | 93 <div class="documentation">{{element.commentHtml}}</div> |
101 {{element.commentHtml}} | |
102 </div> | |
103 </summary> | 94 </summary> |
104 <details class="extended-element-info"> | 95 <details class="extended-element-info"> |
105 <summary>View ?? comments.</summary> | 96 <summary>View ?? comments.</summary> |
106 TODO(jacobr): implement. | 97 TODO(jacobr): implement. |
107 </details> | 98 </details> |
108 </details> | 99 </details> |
109 </template> | 100 </template> |
110 <script type="application/dart"> | 101 <script type="application/dart"> |
111 // TODO(jacobr): this is kinda a rediculous way to do this | 102 // TODO(jacobr): this is kinda a rediculous way to do this |
112 import 'package:web_ui/web_ui.dart'; | 103 import 'package:web_ui/web_ui.dart'; |
113 import 'ast.dart'; | 104 import 'ast.dart'; |
114 import 'model.dart'; | 105 import 'model.dart'; |
115 | 106 |
116 class ElementSummary extends WebComponent { | 107 class ElementSummary extends WebComponent { |
117 Element element; | 108 Element element; |
| 109 |
| 110 String get kindClass => kindCssClass(element); |
| 111 String get memberOrTypeClass => |
| 112 (element is MethodLikeElement) ? 'member-details' : 'type-details'; |
| 113 |
| 114 bool get isOpen => |
| 115 currentMember != null && element.id == currentMember.id; |
118 } | 116 } |
119 </script> | 117 </script> |
120 </element> | 118 </element> |
121 | 119 |
122 <element name="x-class-hierarchy-subtree" constructor="ClassHierarchySubtree"
extends="div"> | 120 <element name="x-class-hierarchy-subtree" extends="div"> |
123 <template> | 121 <template> |
124 <template instantiate="if (index < clazz.superclasses.length)"> | 122 <template instantiate="if (index < clazz.superclasses.length)"> |
125 <div><x-doc-link ref={{clazz.superclasses[index]}}></x-doc-link></div> | 123 <div><x-doc-link ref={{clazz.superclasses[index]}}></x-doc-link></div> |
126 <div style="padding-left: 15px"> | 124 <!-- TODO(jacobr): why doesn't it work to just put this class on the |
| 125 x-class-hierarchy-subtree node? --> |
| 126 <div class="child-subtree"> |
127 <x-class-hierarchy-subtree clazz="{{clazz}}" index="{{index+1}}"> | 127 <x-class-hierarchy-subtree clazz="{{clazz}}" index="{{index+1}}"> |
128 </x-class-hierarchy-subtree> | 128 </x-class-hierarchy-subtree> |
129 </div> | 129 </div> |
130 </template> | 130 </template> |
131 <template instantiate="if index == clazz.superclasses.length"> | 131 <template instantiate="if index == clazz.superclasses.length"> |
132 <div><strong>{{clazz.name}}</strong></div> | 132 <div><strong>{{clazz.shortDescription}}</strong></div> |
133 </template> | 133 </template> |
134 </template> | 134 </template> |
135 <script type="application/dart"> | 135 <script type="application/dart"> |
136 // TODO(jacobr): this is kinda a rediculous way to do this | 136 // TODO(jacobr): this is kinda a rediculous way to do this |
137 import 'package:web_ui/web_ui.dart'; | 137 import 'package:web_ui/web_ui.dart'; |
138 import 'ast.dart'; | 138 import 'ast.dart'; |
139 import 'model.dart'; | 139 import 'model.dart'; |
140 | 140 |
141 class ClassHierarchySubtree extends WebComponent { | 141 class ClassHierarchySubtree extends WebComponent { |
142 ClassElement clazz; | 142 ClassElement clazz; |
143 int index; | 143 int index; |
144 } | 144 } |
145 </script> | 145 </script> |
146 </element> | 146 </element> |
147 | 147 |
148 <element name="x-class-hierarchy" constructor="ClassHierarchy" extends="div"> | 148 <element name="x-class-hierarchy" extends="div"> |
149 <template> | 149 <template> |
150 <x-class-hierarchy-subtree clazz="{{clazz}}" index="{{0}}"> | 150 <x-class-hierarchy-subtree clazz="{{clazz}}" index="{{0}}"> |
151 </x-class-hierarchy-subtree> | 151 </x-class-hierarchy-subtree> |
152 </template> | 152 </template> |
153 <script type="application/dart"> | 153 <script type="application/dart"> |
154 import 'package:web_ui/web_ui.dart'; | 154 import 'package:web_ui/web_ui.dart'; |
155 import 'ast.dart'; | 155 import 'ast.dart'; |
156 import 'model.dart'; | 156 import 'model.dart'; |
157 | 157 |
158 class ClassHierarchy extends WebComponent { | 158 class ClassHierarchy extends WebComponent { |
159 ClassElement clazz; | 159 ClassElement clazz; |
160 } | 160 } |
161 </script> | 161 </script> |
162 </element> | 162 </element> |
163 <!-- more below... --> | |
164 </body></html> | 163 </body></html> |
OLD | NEW |