Index: third_party/polymer/v0_8/components/polymer/src/standard/effects.html |
diff --git a/third_party/polymer/v0_8/components/polymer/src/standard/effects.html b/third_party/polymer/v0_8/components/polymer/src/standard/effects.html |
deleted file mode 100644 |
index c1459d0cfa31ea714bd9e698ed8860a1611c6f49..0000000000000000000000000000000000000000 |
--- a/third_party/polymer/v0_8/components/polymer/src/standard/effects.html |
+++ /dev/null |
@@ -1,211 +0,0 @@ |
-<!-- |
-@license |
-Copyright (c) 2014 The Polymer Project Authors. All rights reserved. |
-This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt |
-The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt |
-The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt |
-Code distributed by Google as part of the polymer project is also |
-subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt |
---> |
- |
-<link rel="import" href="../lib/bind/accessors.html"> |
-<link rel="import" href="../lib/bind/effects.html"> |
- |
-<script> |
- |
- /** |
- * Support for property side effects. |
- * |
- * Key for effect objects: |
- * |
- * property | ann | anCmp | cmp | obs | cplxOb | description |
- * ---------|-----|-------|-----|-----|--------|---------------------------------------- |
- * method | | X | X | X | X | function name to call on instance |
- * args | | X | X | | X | list of all arg descriptors for fn |
- * arg | | X | X | | X | arg descriptor for effect |
- * property | | | X | X | | property for effect to set or get |
- * name | X | | | | | annotation value (text inside {{...}}) |
- * kind | X | X | | | | binding type (property or attribute) |
- * index | X | X | | | | node index to set |
- * |
- */ |
- |
- Polymer.Base._addFeature({ |
- |
- _addPropertyEffect: function(property, kind, effect) { |
- // TODO(sjmiles): everything to the right of the first '.' is lost, implies |
- // there is some duplicate information flow (not the only sign) |
- var model = property.split('.').shift(); |
- Polymer.Bind.addPropertyEffect(this, model, kind, effect); |
- }, |
- |
- // prototyping |
- |
- _prepEffects: function() { |
- Polymer.Bind.prepareModel(this); |
- this._addAnnotationEffects(this._notes); |
- }, |
- |
- _prepBindings: function() { |
- Polymer.Bind.createBindings(this); |
- }, |
- |
- _addPropertyEffects: function(effects) { |
- if (effects) { |
- for (var n in effects) { |
- var effect = effects[n]; |
- if (effect.observer) { |
- this._addObserverEffect(n, effect.observer); |
- } |
- if (effect.computed) { |
- this._addComputedEffect(n, effect.computed); |
- } |
- if (effect.notify) { |
- this._addPropertyEffect(n, 'notify'); |
- } |
- if (effect.reflectToAttribute) { |
- this._addPropertyEffect(n, 'reflect'); |
- } |
- if (this.isReadOnlyProperty(n)) { |
- // Ensure accessor is created |
- Polymer.Bind.ensurePropertyEffects(this, n); |
- } |
- } |
- } |
- }, |
- |
- _parseMethod: function(expression) { |
- var m = expression.match(/(\w*)\((.*)\)/); |
- if (m) { |
- return { |
- method: m[1], |
- args: m[2].split(/[^\w.*]+/).map(this._parseArg) |
- }; |
- } |
- }, |
- |
- _parseArg: function(arg) { |
- var a = { name: arg }; |
- a.structured = arg.indexOf('.') > 0; |
- if (a.structured) { |
- a.wildcard = (arg.slice(-2) == '.*'); |
- if (a.wildcard) { |
- a.name = arg.slice(0, -2); |
- } |
- } |
- return a; |
- }, |
- |
- _addComputedEffect: function(name, expression) { |
- var sig = this._parseMethod(expression); |
- sig.args.forEach(function(arg) { |
- this._addPropertyEffect(arg.name, 'compute', { |
- method: sig.method, |
- args: sig.args, |
- arg: arg, |
- property: name |
- }); |
- }, this); |
- }, |
- |
- _addObserverEffect: function(property, observer) { |
- this._addPropertyEffect(property, 'observer', { |
- method: observer, |
- property: property |
- }); |
- }, |
- |
- _addComplexObserverEffects: function(observers) { |
- if (observers) { |
- observers.forEach(function(observer) { |
- this._addComplexObserverEffect(observer); |
- }, this); |
- } |
- }, |
- |
- _addComplexObserverEffect: function(observer) { |
- var sig = this._parseMethod(observer); |
- sig.args.forEach(function(arg) { |
- this._addPropertyEffect(arg.name, 'complexObserver', { |
- method: sig.method, |
- args: sig.args, |
- arg: arg |
- }); |
- }, this); |
- }, |
- |
- _addAnnotationEffects: function(notes) { |
- // create a virtual annotation list, must be concretized at instance time |
- this._nodes = []; |
- // process annotations that have been parsed from template |
- notes.forEach(function(note) { |
- // where to find the node in the concretized list |
- var index = this._nodes.push(note) - 1; |
- note.bindings.forEach(function(binding) { |
- this._addAnnotationEffect(binding, index); |
- }, this); |
- }, this); |
- }, |
- |
- _addAnnotationEffect: function(note, index) { |
- // TODO(sjmiles): annotations have 'effects' proper and 'listener' |
- if (Polymer.Bind._shouldAddListener(note)) { |
- // <node>.on.<dash-case-property>-changed: <path> = e.detail.value |
- Polymer.Bind._addAnnotatedListener(this, index, |
- note.name, note.value, note.event); |
- } |
- var sig = this._parseMethod(note.value); |
- if (sig) { |
- this._addAnnotatedComputationEffect(sig, note, index); |
- } else { |
- // capture the node index |
- note.index = index; |
- // discover top-level property (model) from path |
- var model = note.value.split('.').shift(); |
- // add 'annotation' binding effect for property 'model' |
- this._addPropertyEffect(model, 'annotation', note); |
- } |
- }, |
- |
- _addAnnotatedComputationEffect: function(sig, note, index) { |
- sig.args.forEach(function(arg) { |
- this._addPropertyEffect(arg.name, 'annotatedComputation', { |
- kind: note.kind, |
- method: sig.method, |
- args: sig.args, |
- arg: arg, |
- property: note.name, |
- index: index |
- }); |
- }, this); |
- }, |
- |
- // instancing |
- |
- _marshalInstanceEffects: function() { |
- Polymer.Bind.prepareInstance(this); |
- Polymer.Bind.setupBindListeners(this); |
- }, |
- |
- _applyEffectValue: function(value, info) { |
- var node = this._nodes[info.index]; |
- // TODO(sorvell): ideally, the info object is normalized for easy |
- // lookup here. |
- var property = info.property || info.name || 'textContent'; |
- // special processing for 'class' and 'className'; 'class' handled |
- // when attr is serialized. |
- if (info.kind == 'attribute') { |
- this.serializeValueToAttribute(value, property, node); |
- } else { |
- // TODO(sorvell): consider pre-processing this step so we don't need |
- // this lookup. |
- if (property === 'className') { |
- value = this._scopeElementClass(node, value); |
- } |
- return node[property] = value; |
- } |
- } |
- |
- }); |
- |
-</script> |