Built-In Elements

SKY MODULE

<script>
import 'dart:sky';

class ImportElement extends Element {
  ImportElement = Element;

  @override
  Type getLayoutManager() => null; // O(1)
}

class TemplateElement extends Element {
  TemplateElement = Element;

  // TODO(ianh): convert <template> to using a token stream instead of a Fragment

  external Fragment get content; // O(1)

  @override
  Type getLayoutManager() => null; // O(1)
}

class ScriptElement extends Element {
  ScriptElement = Element;

  @override
  Type getLayoutManager() => null; // O(1)
}

class StyleElement extends Element {
  StyleElement = Element;

  external List<Rule> getRules(); // O(N) in rules

  @override
  Type getLayoutManager() => null; // O(1)
}

class ContentElement extends Element {
  ContentElement = Element;

  external List<Node> getDistributedNodes(); // O(N) in distributed nodes

  @override
  Type getLayoutManager() => null; // O(1)
}

class ImgElement extends Element {
  ImgElement = Element;

  @override
  Type getLayoutManager() => ImgElementLayoutManager; // O(1)
}

class DivElement extends Element {
  DivElement = Element;
}

class SpanElement extends Element {
  SpanElement = Element;
}

class IframeElement extends Element {
  IframeElement = Element;

  @override
  Type getLayoutManager() => IframeElementLayoutManager; // O(1)
}

class TElement extends Element {
  TElement = Element;
}

class AElement extends Element {
  AElement = Element;
}

class TitleElement extends Element {
  TitleElement = Element;

  @override
  Type getLayoutManager() => null; // O(1)
}

class _ErrorElement extends Element {
  _ErrorElement._create();

  @override
  Type getLayoutManager() => _ErrorElementLayoutManager; // O(1)
}

void _init(script) {
  module.registerElement('import', ImportElement);
  module.registerElement('template', TemplateElement);
  module.registerElement('script', ScriptElement);
  module.registerElement('style', StyleElement);
  module.registerElement('content', ContentElement);
  module.registerElement('img', ImgElement);
  module.registerElement('div', DivElement);
  module.registerElement('span', SpanElement);
  module.registerElement('iframe', IframeElement);
  module.registerElement('t', TElement);
  module.registerElement('a', AElement);
  module.registerElement('title', TitleElement);
}
</script>