polymer-rails 0.2.8 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +13 -3
  3. data/app/assets/javascripts/polymer/polymer-micro.html +36 -0
  4. data/app/assets/javascripts/polymer/polymer-mini.html +45 -0
  5. data/app/assets/javascripts/polymer/polymer.html +59 -11
  6. data/app/assets/javascripts/polymer/src/lib/annotations/annotations.html +262 -0
  7. data/app/assets/javascripts/polymer/src/lib/annotations/demo/app-chrome.html +60 -0
  8. data/app/assets/javascripts/polymer/src/lib/array-observe.html +118 -0
  9. data/app/assets/javascripts/polymer/src/lib/array-splice.html +262 -0
  10. data/app/assets/javascripts/polymer/src/lib/async.html +68 -0
  11. data/app/assets/javascripts/polymer/src/lib/base.html +117 -0
  12. data/app/assets/javascripts/polymer/src/lib/bind/accessors.html +223 -0
  13. data/app/assets/javascripts/polymer/src/lib/bind/demo/app-chrome.html +28 -0
  14. data/app/assets/javascripts/polymer/src/lib/bind/demo/app.html +29 -0
  15. data/app/assets/javascripts/polymer/src/lib/bind/demo/src/annotations-bind-demo.html +76 -0
  16. data/app/assets/javascripts/polymer/src/lib/bind/demo/src/bind-demo.html +83 -0
  17. data/app/assets/javascripts/polymer/src/lib/bind/effects.html +80 -0
  18. data/app/assets/javascripts/polymer/src/lib/case-map.html +46 -0
  19. data/app/assets/javascripts/polymer/src/lib/collection.html +179 -0
  20. data/app/assets/javascripts/polymer/src/lib/css-parse.html +131 -0
  21. data/app/assets/javascripts/polymer/src/lib/debounce.html +69 -0
  22. data/app/assets/javascripts/polymer/src/lib/dom-api.html +467 -0
  23. data/app/assets/javascripts/polymer/src/lib/dom-module.html +68 -0
  24. data/app/assets/javascripts/polymer/src/lib/event-api.html +92 -0
  25. data/app/assets/javascripts/polymer/src/lib/expr/focus.html +22 -0
  26. data/app/assets/javascripts/polymer/src/lib/expr/gestures.html +1 -0
  27. data/app/assets/javascripts/polymer/src/lib/expr/log.html +21 -0
  28. data/app/assets/javascripts/polymer/src/lib/expr/sinspect.html +235 -0
  29. data/app/assets/javascripts/polymer/src/lib/expr/style-auditor.html +123 -0
  30. data/app/assets/javascripts/polymer/src/lib/expr/style-protector.html +52 -0
  31. data/app/assets/javascripts/polymer/src/lib/gestures.html +284 -0
  32. data/app/assets/javascripts/polymer/src/lib/lang.html +21 -0
  33. data/app/assets/javascripts/polymer/src/lib/module.html +56 -0
  34. data/app/assets/javascripts/polymer/src/lib/polymer-bootstrap.html +78 -0
  35. data/app/assets/javascripts/polymer/src/lib/resolve-url.html +82 -0
  36. data/app/assets/javascripts/polymer/src/lib/settings.html +52 -0
  37. data/app/assets/javascripts/polymer/src/lib/style-defaults.html +32 -0
  38. data/app/assets/javascripts/polymer/src/lib/style-transformer.html +185 -0
  39. data/app/assets/javascripts/polymer/src/lib/style-util.html +77 -0
  40. data/app/assets/javascripts/polymer/src/lib/template/templatizer.html +132 -0
  41. data/app/assets/javascripts/polymer/src/lib/template/x-array-selector.html +178 -0
  42. data/app/assets/javascripts/polymer/src/lib/template/x-autobind.html +80 -0
  43. data/app/assets/javascripts/polymer/src/lib/template/x-if.html +115 -0
  44. data/app/assets/javascripts/polymer/src/lib/template/x-repeat.html +510 -0
  45. data/app/assets/javascripts/polymer/src/lib/template/x-template.html +39 -0
  46. data/app/assets/javascripts/polymer/src/lib/x-style.html +115 -0
  47. data/app/assets/javascripts/polymer/src/micro/attributes.html +180 -0
  48. data/app/assets/javascripts/polymer/src/micro/constructor.html +74 -0
  49. data/app/assets/javascripts/polymer/src/micro/extends.html +79 -0
  50. data/app/assets/javascripts/polymer/src/micro/mixins.html +40 -0
  51. data/app/assets/javascripts/polymer/src/micro/properties.html +96 -0
  52. data/app/assets/javascripts/polymer/src/micro/tag.html +28 -0
  53. data/app/assets/javascripts/polymer/src/mini/ready.html +180 -0
  54. data/app/assets/javascripts/polymer/src/mini/shadow.html +41 -0
  55. data/app/assets/javascripts/polymer/src/mini/shady.html +365 -0
  56. data/app/assets/javascripts/polymer/src/mini/template.html +56 -0
  57. data/app/assets/javascripts/polymer/src/polymer-lib.html +15 -0
  58. data/app/assets/javascripts/polymer/src/standard/annotations.html +198 -0
  59. data/app/assets/javascripts/polymer/src/standard/configure.html +160 -0
  60. data/app/assets/javascripts/polymer/src/standard/effects.html +215 -0
  61. data/app/assets/javascripts/polymer/src/standard/events.html +127 -0
  62. data/app/assets/javascripts/polymer/src/standard/notify-path.html +260 -0
  63. data/app/assets/javascripts/polymer/src/standard/resolveUrl.html +27 -0
  64. data/app/assets/javascripts/polymer/src/standard/styling.html +157 -0
  65. data/app/assets/javascripts/polymer/src/standard/utils.html +158 -0
  66. data/app/assets/javascripts/polymer/src/standard/x-styling.html +300 -0
  67. data/app/assets/javascripts/webcomponentsjs/webcomponents-lite.js +2270 -0
  68. data/lib/generators/polymer/component/templates/component.html.erb +3 -3
  69. data/lib/generators/polymer/install/install_generator.rb +1 -1
  70. data/lib/polymer-rails/version.rb +1 -1
  71. metadata +80 -5
  72. data/app/assets/javascripts/polymer/layout.html +0 -286
  73. data/app/assets/javascripts/polymer/polymer.js +0 -14
  74. data/app/assets/javascripts/polymer/webcomponents.js +0 -14
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0fbee666073b2caf266683b8fbce3fb4ac8454d6
4
- data.tar.gz: a53c122512f6d8ad2186bfe62b22c71c138ccc76
3
+ metadata.gz: deef29327e7cacd3555ebf35a6a764b468fd9dd3
4
+ data.tar.gz: 2632584344b12ababcd62cf92357325f11b7cc13
5
5
  SHA512:
6
- metadata.gz: 1a95b6ccd2509198964e812f20fe68d033d69a4f87cda32c588d9ae59344217f35dc3fe6254cdbc4e3ef1e801962449eb7c921eaad6c74e1e6eb9383e7217cab
7
- data.tar.gz: bd5b46fde3267dd6c4ab221759b3063c621174b863dab8a3280a3e8024a466ba664b8b561023efdc99d2e71d9b6d0ead1f45b68b8c8a38324075bc0f8d5c0e74
6
+ metadata.gz: 733ba2dbc846cafb3ad9790f121ec8a276e5235f94c3b70d168009818cbc98c9ccef37ac1fabd369e33b9022b4e987ad48bed672ce1b4a0e5bf0bb1844c4eac9
7
+ data.tar.gz: fc83137fc6b4bf93a4e4f48262c246e576197aa55f5514d9344ca205045c0daeceff7884c4df6fdd7eef92b477734148caef4a1e4d88dac9906e17880d2ed0f1
data/README.md CHANGED
@@ -15,6 +15,16 @@ This assets will be automatically compiled and required into component html file
15
15
  * Note that if you're using sass or coffe precompilation, assets are required to use '.css.sass' and '.js.coffee' extensions.*
16
16
 
17
17
 
18
+ ## Versions
19
+ Consider the 0.8 release to be our proposed API for 1.0. It is an “alpha” release — we fully expect some breaking changes as a result of the feedback we get.
20
+
21
+ This release is intended for early adopters who want to test out the new APIs and provide feedback. This release is optimized for performance and size, and is not yet a feature-complete replacement for 0.5.
22
+
23
+ 0.8.x release is not compatible with the 0.5 APIs. For guidance on migrating an existing 0.5 element to the 0.8 APIs, see the [Migration guide](https://www.polymer-project.org/0.8/docs/migration.html).
24
+
25
+ * `0.2.x` Releases include Polymer versions `0.5.x`
26
+ * `0.3.x` Releases include Polymer versions `0.8.x`
27
+
18
28
 
19
29
  ## Installation
20
30
 
@@ -36,7 +46,7 @@ Or install it yourself as:
36
46
 
37
47
  $ rails g polymer:install
38
48
 
39
- - This generator adds `//= require polymer/webcomponents` into `application.js` manifest file
49
+ - This generator adds `//= require webcomponentsjs/webcomponents-lite` into `application.js` manifest file
40
50
  - Creates `app/assets/components` and `application.html` manifest file where you can include all your components.
41
51
  - Creates `vendor/assets/components` directory for third-party web components.
42
52
 
@@ -49,10 +59,10 @@ to import web components manifest to your app.
49
59
 
50
60
  This generates new `<component-name>` component directory and `.html`, `.css`, `.js` files of the same name under `app/assets/components` folder.
51
61
 
52
- Add your component to manifest file after requiring webcomponents:
62
+ Add your component to `.html` manifest file after requiring polymer:
53
63
 
54
64
  //
55
- //= require polymer/webcomponents
65
+ //= require polymer/polymer
56
66
  //= require component-name/component-name
57
67
 
58
68
  And you can use your component in Rails application!
@@ -0,0 +1,36 @@
1
+ <!--
2
+ @license
3
+ Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
4
+ This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
5
+ The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
6
+ The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
7
+ Code distributed by Google as part of the polymer project is also
8
+ subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
9
+ -->
10
+ <link rel="import" href="src/polymer-lib.html">
11
+ <link rel="import" href="src/micro/tag.html">
12
+ <link rel="import" href="src/micro/mixins.html">
13
+ <link rel="import" href="src/micro/extends.html">
14
+ <link rel="import" href="src/micro/constructor.html">
15
+ <link rel="import" href="src/micro/properties.html">
16
+ <link rel="import" href="src/micro/attributes.html">
17
+
18
+ <script>
19
+
20
+ Polymer.Base.addFeature({
21
+
22
+ registerFeatures: function() {
23
+ this._prepIs();
24
+ this._prepMixins();
25
+ this._prepExtends();
26
+ this._prepConstructor();
27
+ },
28
+
29
+ initFeatures: function() {
30
+ this._marshalAttributes();
31
+ }
32
+
33
+ });
34
+
35
+ </script>
36
+
@@ -0,0 +1,45 @@
1
+ <!--
2
+ @license
3
+ Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
4
+ This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
5
+ The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
6
+ The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
7
+ Code distributed by Google as part of the polymer project is also
8
+ subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
9
+ -->
10
+
11
+ <link rel="import" href="polymer-micro.html">
12
+
13
+ <link rel="import" href="src/mini/template.html">
14
+ <link rel="import" href="src/mini/ready.html">
15
+ <link rel="import" href="src/mini/shady.html">
16
+ <link rel="import" href="src/mini/shadow.html">
17
+
18
+ <script>
19
+
20
+ Polymer.DomModule = document.createElement('dom-module');
21
+
22
+ Polymer.Base.addFeature({
23
+
24
+ registerFeatures: function() {
25
+ this._prepIs();
26
+ this._prepMixins();
27
+ this._prepExtends();
28
+ this._prepConstructor();
29
+ this._prepTemplate();
30
+ this._prepContent();
31
+ },
32
+
33
+ initFeatures: function() {
34
+ this._poolContent();
35
+ this._pushHost();
36
+ this._stampTemplate();
37
+ this._popHost();
38
+ this._marshalAttributes();
39
+ this._readyContent();
40
+ }
41
+
42
+ });
43
+
44
+ </script>
45
+
@@ -1,11 +1,59 @@
1
- <!--
2
- Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
3
- This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
4
- The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
5
- The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
6
- Code distributed by Google as part of the polymer project is also
7
- subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
8
- -->
9
-
10
- <link rel="import" href="layout.html">
11
- <script src="polymer.js"></script>
1
+ <!--
2
+ @license
3
+ Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
4
+ This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
5
+ The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
6
+ The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
7
+ Code distributed by Google as part of the polymer project is also
8
+ subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
9
+ -->
10
+
11
+ <link rel="import" href="polymer-mini.html">
12
+
13
+ <link rel="import" href="src/standard/annotations.html">
14
+ <link rel="import" href="src/standard/events.html">
15
+ <link rel="import" href="src/standard/utils.html">
16
+ <link rel="import" href="src/standard/effects.html">
17
+ <link rel="import" href="src/standard/configure.html">
18
+ <link rel="import" href="src/standard/notify-path.html">
19
+ <link rel="import" href="src/standard/resolveUrl.html">
20
+ <link rel="import" href="src/standard/styling.html">
21
+ <link rel="import" href="src/standard/x-styling.html">
22
+
23
+ <script>
24
+
25
+ Polymer.Base.addFeature({
26
+
27
+ registerFeatures: function() {
28
+ this._prepIs();
29
+ this._prepMixins();
30
+ this._prepExtends();
31
+ this._prepConstructor();
32
+ this._prepTemplate();
33
+ this._prepAnnotations();
34
+ this._prepEffects();
35
+ this._prepContent();
36
+ },
37
+
38
+ initFeatures: function() {
39
+ this._poolContent();
40
+ this._setupConfigure();
41
+ this._pushHost();
42
+ this._stampTemplate();
43
+ this._popHost();
44
+ this._marshalAnnotationReferences();
45
+ this._marshalInstanceEffects();
46
+ this._marshalAttributes();
47
+ this._marshalListeners();
48
+ this._readyContent();
49
+ }
50
+
51
+ });
52
+
53
+ </script>
54
+
55
+ <link rel="import" href="src/lib/x-style.html">
56
+ <link rel="import" href="src/lib/template/x-autobind.html">
57
+ <link rel="import" href="src/lib/template/x-template.html">
58
+ <link rel="import" href="src/lib/template/x-repeat.html">
59
+ <link rel="import" href="src/lib/template/x-array-selector.html">
@@ -0,0 +1,262 @@
1
+ <!--
2
+ @license
3
+ Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
4
+ This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
5
+ The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
6
+ The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
7
+ Code distributed by Google as part of the polymer project is also
8
+ subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
9
+ -->
10
+ <link rel="import" href="../module.html">
11
+ <link rel="import" href="../case-map.html">
12
+
13
+ <script>
14
+ /**
15
+ * Scans a template to produce an annotation list that that associates
16
+ * metadata culled from markup with tree locations
17
+ * metadata and information to associate the metadata with nodes in an instance.
18
+ *
19
+ * Supported expressions include:
20
+ *
21
+ * Double-mustache annotations in text content. The annotation must be the only
22
+ * content in the tag, compound expressions are not supported.
23
+ *
24
+ * <[tag]>{{annotation}}<[tag]>
25
+ *
26
+ * Double-escaped annotations in an attribute, either {{}} or [[]].
27
+ *
28
+ * <[tag] someAttribute="{{annotation}}" another="[[annotation]]"><[tag]>
29
+ *
30
+ * `on-` style event declarations.
31
+ *
32
+ * <[tag] on-<event-name>="annotation"><[tag]>
33
+ *
34
+ * Note that the `annotations` feature does not implement any behaviors
35
+ * associated with these expressions, it only captures the data.
36
+ *
37
+ * Generated data-structure:
38
+ *
39
+ * [
40
+ * {
41
+ * id: '<id>',
42
+ * events: [
43
+ * {
44
+ * name: '<name>'
45
+ * value: '<annotation>'
46
+ * }, ...
47
+ * ],
48
+ * bindings: [
49
+ * {
50
+ * kind: ['text'|'attribute'],
51
+ * mode: ['{'|'['],
52
+ * name: '<name>'
53
+ * value: '<annotation>'
54
+ * }, ...
55
+ * ],
56
+ * // TODO(sjmiles): this is annotation-parent, not node-parent
57
+ * parent: <reference to parent annotation object>,
58
+ * index: <integer index in parent's childNodes collection>
59
+ * },
60
+ * ...
61
+ * ]
62
+ *
63
+ * @class Template feature
64
+ */
65
+
66
+ // null-array (shared empty array to avoid null-checks)
67
+ Polymer.nar = [];
68
+
69
+ Polymer.Annotations = {
70
+
71
+ // preprocess-time
72
+
73
+ // construct and return a list of annotation records
74
+ // by scanning `template`'s content
75
+ //
76
+ parseAnnotations: function(template) {
77
+ var list = [];
78
+ var content = template._content || template.content;
79
+ this._parseNodeAnnotations(content, list);
80
+ return list;
81
+ },
82
+
83
+ // add annotations gleaned from subtree at `node` to `list`
84
+ _parseNodeAnnotations: function(node, list) {
85
+ return node.nodeType === Node.TEXT_NODE ?
86
+ this._parseTextNodeAnnotation(node, list) :
87
+ // TODO(sjmiles): are there other nodes we may encounter
88
+ // that are not TEXT_NODE but also not ELEMENT?
89
+ this._parseElementAnnotations(node, list);
90
+ },
91
+
92
+ // add annotations gleaned from TextNode `node` to `list`
93
+ _parseTextNodeAnnotation: function(node, list) {
94
+ var v = node.textContent, escape = v.slice(0, 2);
95
+ if (escape === '{{' || escape === '[[') {
96
+ // NOTE: use a space here so the textNode remains; some browsers
97
+ // (IE) evacipate an empty textNode.
98
+ node.textContent = ' ';
99
+ var annote = {
100
+ bindings: [{
101
+ kind: 'text',
102
+ mode: escape[0],
103
+ value: v.slice(2, -2)
104
+ }]
105
+ };
106
+ list.push(annote);
107
+ return annote;
108
+ }
109
+ },
110
+
111
+ // add annotations gleaned from Element `node` to `list`
112
+ _parseElementAnnotations: function(element, list) {
113
+ var annote = {
114
+ bindings: [],
115
+ events: []
116
+ };
117
+ this._parseChildNodesAnnotations(element, annote, list);
118
+ // TODO(sjmiles): is this for non-ELEMENT nodes? If so, we should
119
+ // change the contract of this method, or filter these out above.
120
+ if (element.attributes) {
121
+ this._parseNodeAttributeAnnotations(element, annote, list);
122
+ // TODO(sorvell): ad hoc callback for doing work on elements while
123
+ // leveraging annotator's tree walk.
124
+ // Consider adding an node callback registry and moving specific
125
+ // processing out of this module.
126
+ if (this.prepElement) {
127
+ this.prepElement(element);
128
+ }
129
+ }
130
+ if (annote.bindings.length || annote.events.length || annote.id) {
131
+ list.push(annote);
132
+ }
133
+ return annote;
134
+ },
135
+
136
+ // add annotations gleaned from children of `root` to `list`, `root`'s
137
+ // `annote` is supplied as it is the annote.parent of added annotations
138
+ _parseChildNodesAnnotations: function(root, annote, list, callback) {
139
+ if (root.firstChild) {
140
+ for (var i=0, node=root.firstChild; node; node=node.nextSibling, i++){
141
+ if (node.localName === 'template') {
142
+ // TODO(sjmiles): simply altering the .content reference didn't
143
+ // work (there was some confusion, might need verification)
144
+ var content = document.createDocumentFragment();
145
+ content.appendChild(node.content);
146
+ // TODO(sjmiles): using `nar` to avoid unnecessary allocation;
147
+ // in general the handling of these arrays needs some cleanup
148
+ // in this module
149
+ list.push({
150
+ bindings: Polymer.nar,
151
+ events: Polymer.nar,
152
+ templateContent: content,
153
+ parent: annote,
154
+ index: i
155
+ });
156
+ }
157
+ //
158
+ var childAnnotation = this._parseNodeAnnotations(node, list, callback);
159
+ if (childAnnotation) {
160
+ childAnnotation.parent = annote;
161
+ childAnnotation.index = i;
162
+ }
163
+ }
164
+ }
165
+ },
166
+
167
+ // add annotation data from attributes to the `annotation` for node `node`
168
+ // TODO(sjmiles): the distinction between an `annotation` and
169
+ // `annotation data` is not as clear as it could be
170
+ // Walk attributes backwards, since removeAttribute can be vetoed by
171
+ // IE in certain cases (e.g. <input value="foo">), resulting in the
172
+ // attribute staying in the attributes list
173
+ _parseNodeAttributeAnnotations: function(node, annotation) {
174
+ for (var i=node.attributes.length-1, a; (a=node.attributes[i]); i--) {
175
+ var n = a.name, v = a.value;
176
+ // id
177
+ if (n === 'id') {
178
+ annotation.id = v;
179
+ }
180
+ // events (on-*)
181
+ else if (n.slice(0, 3) === 'on-') {
182
+ node.removeAttribute(n);
183
+ annotation.events.push({
184
+ name: n.slice(3),
185
+ value: v
186
+ });
187
+ }
188
+ // bindings (other attributes)
189
+ else {
190
+ var b = this._parseNodeAttributeAnnotation(node, n, v);
191
+ if (b) {
192
+ annotation.bindings.push(b);
193
+ }
194
+ }
195
+ }
196
+ },
197
+
198
+ // construct annotation data from a generic attribute, or undefined
199
+ _parseNodeAttributeAnnotation: function(node, n, v) {
200
+ var mode = '', escape = v.slice(0, 2), name = n;
201
+ if (escape === '{{' || escape === '[[') {
202
+ // Mode (one-way or two)
203
+ mode = escape[0];
204
+ v = v.slice(2, -2);
205
+ // Negate
206
+ var not = false;
207
+ if (v[0] == '!') {
208
+ v = v.substring(1);
209
+ not = true;
210
+ }
211
+ // Attribute or property
212
+ var kind = 'property';
213
+ if (n[n.length-1] == '$') {
214
+ name = n.slice(0, -1);
215
+ kind = 'attribute';
216
+ }
217
+ // Custom notification event
218
+ var notifyEvent, colon;
219
+ if (mode == '{' && (colon = v.indexOf('::')) > 0) {
220
+ notifyEvent = v.substring(colon + 2);
221
+ v = v.substring(0, colon);
222
+ }
223
+ // Remove annotation
224
+ node.removeAttribute(n);
225
+ // Case hackery: attributes are lower-case, but bind targets
226
+ // (properties) are case sensitive. Gambit is to map dash-case to
227
+ // camel-case: `foo-bar` becomes `fooBar`.
228
+ // Attribute bindings are excepted.
229
+ if (kind === 'property') {
230
+ name = Polymer.CaseMap.dashToCamelCase(name);
231
+ }
232
+ return {
233
+ kind: kind,
234
+ mode: mode,
235
+ name: name,
236
+ value: v,
237
+ negate: not,
238
+ event: notifyEvent
239
+ };
240
+ }
241
+ },
242
+
243
+ // instance-time
244
+
245
+ _localSubTree: function(node, host) {
246
+ return (node === host) ? node.childNodes :
247
+ (node.lightChildren || node.childNodes);
248
+ },
249
+
250
+ findAnnotatedNode: function(root, annote) {
251
+ // recursively ascend tree until we hit root
252
+ var parent = annote.parent &&
253
+ Polymer.Annotations.findAnnotatedNode(root, annote.parent);
254
+ // unwind the stack, returning the indexed node at each level
255
+ return !parent ? root :
256
+ Polymer.Annotations._localSubTree(parent, root)[annote.index];
257
+ }
258
+
259
+ };
260
+
261
+
262
+ </script>