| OLD | NEW |
| 1 Sky DOM APIs | 1 Sky DOM APIs |
| 2 ============ | 2 ============ |
| 3 | 3 |
| 4 ```dart | 4 ```dart |
| 5 SKY MODULE |
| 6 <!-- part of sky:core --> |
| 7 |
| 8 <script> |
| 5 // ELEMENT TREE API | 9 // ELEMENT TREE API |
| 6 | 10 |
| 7 abstract class ChildNode { | 11 abstract class ChildNode { |
| 8 @nonnull external TreeScope get ownerScope; // O(1) | 12 @nonnull external TreeScope get ownerScope; // O(1) |
| 9 | 13 |
| 10 external ParentNode get parentNode; // O(1) | 14 external ParentNode get parentNode; // O(1) |
| 11 external Element get parentElement; // O(1) // if parentNode isn't an element,
returns null | 15 external Element get parentElement; // O(1) // if parentNode isn't an element,
returns null |
| 12 external ChildNode get previousSibling; // O(1) | 16 external ChildNode get previousSibling; // O(1) |
| 13 external ChildNode get nextSibling; // O(1) | 17 external ChildNode get nextSibling; // O(1) |
| 14 | 18 |
| (...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 176 Type getLayoutManager() => rootLayoutManager; // O(1) | 180 Type getLayoutManager() => rootLayoutManager; // O(1) |
| 177 } | 181 } |
| 178 | 182 |
| 179 Type rootLayoutManager = BlockLayoutManager; // O(1) | 183 Type rootLayoutManager = BlockLayoutManager; // O(1) |
| 180 | 184 |
| 181 | 185 |
| 182 // BUILT-IN ELEMENTS | 186 // BUILT-IN ELEMENTS |
| 183 | 187 |
| 184 @tagname('import') | 188 @tagname('import') |
| 185 class ImportElement extends Element { | 189 class ImportElement extends Element { |
| 186 //XXX ImportElement = Element; | 190 ImportElement = Element; |
| 187 | 191 |
| 188 @override | 192 @override |
| 189 Type getLayoutManager() => null; // O(1) | 193 Type getLayoutManager() => null; // O(1) |
| 190 } | 194 } |
| 191 | 195 |
| 192 @tagname('template') | 196 @tagname('template') |
| 193 class TemplateElement extends Element { | 197 class TemplateElement extends Element { |
| 194 //XXX TemplateElement = Element; | 198 TemplateElement = Element; |
| 195 | 199 |
| 196 // TODO(ianh): convert <template> to using a token stream instead of a Documen
tFragment | 200 // TODO(ianh): convert <template> to using a token stream instead of a Documen
tFragment |
| 197 | 201 |
| 198 @nonnull external DocumentFragment get content; // O(1) | 202 @nonnull external DocumentFragment get content; // O(1) |
| 199 | 203 |
| 200 @override | 204 @override |
| 201 Type getLayoutManager() => null; // O(1) | 205 Type getLayoutManager() => null; // O(1) |
| 202 } | 206 } |
| 203 | 207 |
| 204 @tagname('script') | 208 @tagname('script') |
| 205 class ScriptElement extends Element { | 209 class ScriptElement extends Element { |
| 206 //XXX ScriptElement = Element; | 210 ScriptElement = Element; |
| 207 | 211 |
| 208 @override | 212 @override |
| 209 Type getLayoutManager() => null; // O(1) | 213 Type getLayoutManager() => null; // O(1) |
| 210 } | 214 } |
| 211 | 215 |
| 212 @tagname('style') | 216 @tagname('style') |
| 213 class StyleElement extends Element { | 217 class StyleElement extends Element { |
| 214 //XXX StyleElement = Element; | 218 StyleElement = Element; |
| 215 | 219 |
| 216 @nonnull external List</*@nonnull*/ Rule> getRules(); // O(N) in rules | 220 @nonnull external List</*@nonnull*/ Rule> getRules(); // O(N) in rules |
| 217 | 221 |
| 218 @override | 222 @override |
| 219 Type getLayoutManager() => null; // O(1) | 223 Type getLayoutManager() => null; // O(1) |
| 220 } | 224 } |
| 221 | 225 |
| 222 @tagname('content') | 226 @tagname('content') |
| 223 class ContentElement extends Element { | 227 class ContentElement extends Element { |
| 224 //XXX ContentElement = Element; | 228 ContentElement = Element; |
| 225 | 229 |
| 226 @nonnull external List</*@nonnull*/ Node> getDistributedNodes(); // O(N) in di
stributed nodes | 230 @nonnull external List</*@nonnull*/ Node> getDistributedNodes(); // O(N) in di
stributed nodes |
| 227 | 231 |
| 228 @override | 232 @override |
| 229 Type getLayoutManager() => null; // O(1) | 233 Type getLayoutManager() => null; // O(1) |
| 230 } | 234 } |
| 231 | 235 |
| 232 @tagname('img') | 236 @tagname('img') |
| 233 class ImgElement extends Element { | 237 class ImgElement extends Element { |
| 234 //XXX ImgElement = Element; | 238 ImgElement = Element; |
| 235 | 239 |
| 236 @override | 240 @override |
| 237 Type getLayoutManager() => ImgElementLayoutManager; // O(1) | 241 Type getLayoutManager() => ImgElementLayoutManager; // O(1) |
| 238 } | 242 } |
| 239 | 243 |
| 240 @tagname('div') | 244 @tagname('div') |
| 241 class DivElement extends Element { | 245 class DivElement extends Element { |
| 242 //XXX DivElement = Element; | 246 DivElement = Element; |
| 243 } | 247 } |
| 244 | 248 |
| 245 @tagname('span') | 249 @tagname('span') |
| 246 class SpanElement extends Element { | 250 class SpanElement extends Element { |
| 247 //XXX SpanElement = Element; | 251 SpanElement = Element; |
| 248 } | 252 } |
| 249 | 253 |
| 250 @tagname('iframe') | 254 @tagname('iframe') |
| 251 class IframeElement extends Element { | 255 class IframeElement extends Element { |
| 252 //XXX IframeElement = Element; | 256 IframeElement = Element; |
| 253 | 257 |
| 254 @override | 258 @override |
| 255 Type getLayoutManager() => IframeElementLayoutManager; // O(1) | 259 Type getLayoutManager() => IframeElementLayoutManager; // O(1) |
| 256 } | 260 } |
| 257 | 261 |
| 258 @tagname('t') | 262 @tagname('t') |
| 259 class TElement extends Element { | 263 class TElement extends Element { |
| 260 //XXX TElement = Element; | 264 TElement = Element; |
| 261 } | 265 } |
| 262 | 266 |
| 263 @tagname('a') | 267 @tagname('a') |
| 264 class AElement extends Element { | 268 class AElement extends Element { |
| 265 //XXX AElement = Element; | 269 AElement = Element; |
| 266 } | 270 } |
| 267 | 271 |
| 268 @tagname('title') | 272 @tagname('title') |
| 269 class TitleElement extends Element { | 273 class TitleElement extends Element { |
| 270 //XXX TitleElement = Element; | 274 TitleElement = Element; |
| 271 | 275 |
| 272 @override | 276 @override |
| 273 Type getLayoutManager() => null; // O(1) | 277 Type getLayoutManager() => null; // O(1) |
| 274 } | 278 } |
| 275 | 279 |
| 276 class ErrorElement extends Element { | 280 class _ErrorElement extends Element { |
| 277 ErrorElement._create(); | 281 _ErrorElement._create(); |
| 278 | 282 |
| 279 @override | 283 @override |
| 280 Type getLayoutManager() => ErrorElementLayoutManager; // O(1) | 284 Type getLayoutManager() => _ErrorElementLayoutManager; // O(1) |
| 281 } | 285 } |
| 282 | 286 |
| 283 class SelectorQuery { | 287 class SelectorQuery { |
| 284 external SelectorQuery(@nonnull String selector); // O(F()) where F() is the c
omplexity of the selector | 288 external SelectorQuery(@nonnull String selector); // O(F()) where F() is the c
omplexity of the selector |
| 285 | 289 |
| 286 @nonnull external bool matches(@nonnull Element element); // O(F()) | 290 @nonnull external bool matches(@nonnull Element element); // O(F()) |
| 287 external Element find(@nonnull FindRoot root); // O(N*F())+O(M) where N is the
number of descendants and M the average depth of the tree | 291 external Element find(@nonnull FindRoot root); // O(N*F())+O(M) where N is the
number of descendants and M the average depth of the tree |
| 288 @nonnull external List</*@nonnull*/ Element> findAll(FindRoot root); // O(N*F(
))+O(N*M) where N is the number of descendants and M the average depth of the tr
ee | 292 @nonnull external List</*@nonnull*/ Element> findAll(FindRoot root); // O(N*F(
))+O(N*M) where N is the number of descendants and M the average depth of the tr
ee |
| 289 } | 293 } |
| 294 </script> |
| 290 ``` | 295 ``` |
| OLD | NEW |