| Index: pkg/template_binding/lib/template_binding.dart
|
| diff --git a/pkg/template_binding/lib/template_binding.dart b/pkg/template_binding/lib/template_binding.dart
|
| index 1e8b3a8509b17a9e30101a58b4bfc2522c2e0de1..88fa17be58e0e39b9ecd6a56c467314e9dfb88e1 100644
|
| --- a/pkg/template_binding/lib/template_binding.dart
|
| +++ b/pkg/template_binding/lib/template_binding.dart
|
| @@ -21,22 +21,18 @@ library template_binding;
|
| import 'dart:async';
|
| import 'dart:collection';
|
| import 'dart:html';
|
| +import 'dart:js' as js show context;
|
| +import 'dart:js' show JsObject;
|
| import 'dart:svg' show SvgSvgElement;
|
| import 'package:observe/observe.dart';
|
|
|
| import 'src/mustache_tokens.dart';
|
|
|
| part 'src/binding_delegate.dart';
|
| -part 'src/element.dart';
|
| -part 'src/input_bindings.dart';
|
| -part 'src/input_element.dart';
|
| part 'src/instance_binding_map.dart';
|
| part 'src/node.dart';
|
| -part 'src/select_element.dart';
|
| part 'src/template.dart';
|
| part 'src/template_iterator.dart';
|
| -part 'src/text.dart';
|
| -part 'src/text_area_element.dart';
|
|
|
| // TODO(jmesserly): ideally we would split TemplateBinding and Node.bind into
|
| // two packages, but this is not easy when we are faking extension methods.
|
| @@ -108,25 +104,11 @@ NodeBindExtension nodeBindFallback(Node node) {
|
| var extension = _expando[node];
|
| if (extension != null) return extension;
|
|
|
| - // TODO(jmesserly): switch on localName?
|
| - if (node is InputElement) {
|
| - extension = new _InputElementExtension(node);
|
| - } else if (node is SelectElement) {
|
| - extension = new _SelectElementExtension(node);
|
| - } else if (node is TextAreaElement) {
|
| - extension = new _TextAreaElementExtension(node);
|
| - } else if (node is Element) {
|
| - if (isSemanticTemplate(node)) {
|
| - extension = new TemplateBindExtension._(node);
|
| - } else {
|
| - extension = new _ElementExtension(node);
|
| - }
|
| - } else if (node is Text) {
|
| - extension = new _TextExtension(node);
|
| + if (isSemanticTemplate(node)) {
|
| + extension = new TemplateBindExtension._(node);
|
| } else {
|
| extension = new NodeBindExtension._(node);
|
| }
|
| -
|
| _expando[node] = extension;
|
| return extension;
|
| }
|
| @@ -147,7 +129,7 @@ bool _isHtmlTemplate(Element el) => el.tagName == 'TEMPLATE' &&
|
| * A node is a template if [tagName] is TEMPLATE, or the node has the
|
| * 'template' attribute and this tag supports attribute form for backwards
|
| * compatibility with existing HTML parsers. The nodes that can use attribute
|
| - * form are table elments (THEAD, TBODY, TFOOT, TH, TR, TD, CAPTION, COLGROUP
|
| + * form are table elements (THEAD, TBODY, TFOOT, TH, TR, TD, CAPTION, COLGROUP
|
| * and COL), OPTION, and OPTGROUP.
|
| */
|
| bool isSemanticTemplate(Node n) => n is Element &&
|
| @@ -162,7 +144,12 @@ bool isTemplateStagingDocument(Document d) => _isStagingDocument[d] == true;
|
| * such as UI builders to easily inspect live bindings. Defaults to false for
|
| * performance reasons.
|
| */
|
| -bool enableBindingsReflection = false;
|
| +bool get enableBindingsReflection =>
|
| + js.context['Platform']['enableBindingsReflection'] == true;
|
| +
|
| +set enableBindingsReflection(bool value) {
|
| + js.context['Platform']['enableBindingsReflection'] = value;
|
| +}
|
|
|
| // TODO(jmesserly): const set would be better
|
| const _SEMANTIC_TEMPLATE_TAGS = const {
|
|
|