| OLD | NEW |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 part of polymer; | 5 part of polymer; |
| 6 | 6 |
| 7 /** | 7 /** |
| 8 * **Warning**: this class is experiental and subject to change. | 8 * **Warning**: this class is experiental and subject to change. |
| 9 * | 9 * |
| 10 * The implementation for the `polymer-element` element. | 10 * The implementation for the `polymer-element` element. |
| (...skipping 437 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 448 ..text = cssText | 448 ..text = cssText |
| 449 ..attributes[_STYLE_SCOPE_ATTRIBUTE] = '$name-$scopeDescriptor'; | 449 ..attributes[_STYLE_SCOPE_ATTRIBUTE] = '$name-$scopeDescriptor'; |
| 450 } | 450 } |
| 451 | 451 |
| 452 /** | 452 /** |
| 453 * Fetch a list of all *Changed methods so we can observe the associated | 453 * Fetch a list of all *Changed methods so we can observe the associated |
| 454 * properties. | 454 * properties. |
| 455 */ | 455 */ |
| 456 void inferObservers() { | 456 void inferObservers() { |
| 457 var options = const smoke.QueryOptions(includeFields: false, | 457 var options = const smoke.QueryOptions(includeFields: false, |
| 458 includeProperties: false, includeMethods: true, includeInherited: true); | 458 includeProperties: false, includeMethods: true, includeInherited: true, |
| 459 includeUpTo: HtmlElement); |
| 459 for (var decl in smoke.query(_type, options)) { | 460 for (var decl in smoke.query(_type, options)) { |
| 460 String name = smoke.symbolToName(decl.name); | 461 String name = smoke.symbolToName(decl.name); |
| 461 if (name.endsWith(_OBSERVE_SUFFIX) && name != 'attributeChanged') { | 462 if (name.endsWith(_OBSERVE_SUFFIX) && name != 'attributeChanged') { |
| 462 // TODO(jmesserly): now that we have a better system, should we | 463 // TODO(jmesserly): now that we have a better system, should we |
| 463 // deprecate *Changed methods? | 464 // deprecate *Changed methods? |
| 464 if (_observe == null) _observe = new HashMap(); | 465 if (_observe == null) _observe = new HashMap(); |
| 465 name = name.substring(0, name.length - 7); | 466 name = name.substring(0, name.length - 7); |
| 466 _observe[new PropertyPath(name)] = [decl.name]; | 467 _observe[new PropertyPath(name)] = [decl.name]; |
| 467 } | 468 } |
| 468 } | 469 } |
| 469 } | 470 } |
| 470 | 471 |
| 471 /** | 472 /** |
| 472 * Fetch a list of all methods annotated with [ObserveProperty] so we can | 473 * Fetch a list of all methods annotated with [ObserveProperty] so we can |
| 473 * observe the associated properties. | 474 * observe the associated properties. |
| 474 */ | 475 */ |
| 475 void explodeObservers() { | 476 void explodeObservers() { |
| 476 var options = const smoke.QueryOptions(includeFields: false, | 477 var options = const smoke.QueryOptions(includeFields: false, |
| 477 includeProperties: false, includeMethods: true, includeInherited: true, | 478 includeProperties: false, includeMethods: true, includeInherited: true, |
| 478 withAnnotations: const [ObserveProperty]); | 479 includeUpTo: HtmlElement, withAnnotations: const [ObserveProperty]); |
| 479 for (var decl in smoke.query(_type, options)) { | 480 for (var decl in smoke.query(_type, options)) { |
| 480 for (var meta in decl.annotations) { | 481 for (var meta in decl.annotations) { |
| 481 if (meta is! ObserveProperty) continue; | 482 if (meta is! ObserveProperty) continue; |
| 482 if (_observe == null) _observe = new HashMap(); | 483 if (_observe == null) _observe = new HashMap(); |
| 483 for (String name in meta.names) { | 484 for (String name in meta.names) { |
| 484 _observe.putIfAbsent(new PropertyPath(name), () => []).add(decl.name); | 485 _observe.putIfAbsent(new PropertyPath(name), () => []).add(decl.name); |
| 485 } | 486 } |
| 486 } | 487 } |
| 487 } | 488 } |
| 488 } | 489 } |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 528 | 529 |
| 529 /// track document.register'ed tag names and their declarations | 530 /// track document.register'ed tag names and their declarations |
| 530 final Map _declarations = new Map<String, PolymerDeclaration>(); | 531 final Map _declarations = new Map<String, PolymerDeclaration>(); |
| 531 | 532 |
| 532 bool _isRegistered(String name) => _declarations.containsKey(name); | 533 bool _isRegistered(String name) => _declarations.containsKey(name); |
| 533 PolymerDeclaration _getDeclaration(String name) => _declarations[name]; | 534 PolymerDeclaration _getDeclaration(String name) => _declarations[name]; |
| 534 | 535 |
| 535 Map<PropertyPath, smoke.Declaration> _getPublishedProperties( | 536 Map<PropertyPath, smoke.Declaration> _getPublishedProperties( |
| 536 Type type, Map<PropertyPath, smoke.Declaration> props) { | 537 Type type, Map<PropertyPath, smoke.Declaration> props) { |
| 537 var options = const smoke.QueryOptions(includeInherited: true, | 538 var options = const smoke.QueryOptions(includeInherited: true, |
| 538 withAnnotations: const [PublishedProperty]); | 539 includeUpTo: HtmlElement, withAnnotations: const [PublishedProperty]); |
| 539 for (var decl in smoke.query(type, options)) { | 540 for (var decl in smoke.query(type, options)) { |
| 540 if (decl.isFinal) continue; | 541 if (decl.isFinal) continue; |
| 541 if (props == null) props = {}; | 542 if (props == null) props = {}; |
| 542 props[new PropertyPath([decl.name])] = decl; | 543 props[new PropertyPath([decl.name])] = decl; |
| 543 } | 544 } |
| 544 return props; | 545 return props; |
| 545 } | 546 } |
| 546 | 547 |
| 547 /** Attribute prefix used for declarative event handlers. */ | 548 /** Attribute prefix used for declarative event handlers. */ |
| 548 const _EVENT_PREFIX = 'on-'; | 549 const _EVENT_PREFIX = 'on-'; |
| (...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 644 | 645 |
| 645 // Dart note: we need this function because we have additional renames JS does | 646 // Dart note: we need this function because we have additional renames JS does |
| 646 // not have. The JS renames are simply case differences, whereas we have ones | 647 // not have. The JS renames are simply case differences, whereas we have ones |
| 647 // like doubleclick -> dblclick and stripping the webkit prefix. | 648 // like doubleclick -> dblclick and stripping the webkit prefix. |
| 648 String _eventNameFromType(String eventType) { | 649 String _eventNameFromType(String eventType) { |
| 649 final result = _reverseEventTranslations[eventType]; | 650 final result = _reverseEventTranslations[eventType]; |
| 650 return result != null ? result : eventType; | 651 return result != null ? result : eventType; |
| 651 } | 652 } |
| 652 | 653 |
| 653 final _ATTRIBUTES_REGEX = new RegExp(r'\s|,'); | 654 final _ATTRIBUTES_REGEX = new RegExp(r'\s|,'); |
| OLD | NEW |