Index: third_party/polymer/v0_8/components/polymer/src/lib/event-api.html |
diff --git a/third_party/polymer/v0_8/components/polymer/src/lib/event-api.html b/third_party/polymer/v0_8/components/polymer/src/lib/event-api.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..1f66fb35177b8890b7cf82b774a584e1f49e1a60 |
--- /dev/null |
+++ b/third_party/polymer/v0_8/components/polymer/src/lib/event-api.html |
@@ -0,0 +1,92 @@ |
+<!-- |
+@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="settings.html"> |
+<script> |
+ |
+ Polymer.EventApi = (function() { |
+ |
+ var Settings = Polymer.Settings; |
+ |
+ var EventApi = function(event) { |
+ this.event = event; |
+ }; |
+ |
+ if (Settings.useShadow) { |
+ |
+ EventApi.prototype = { |
+ |
+ get rootTarget() { |
+ return this.event.path[0]; |
+ }, |
+ |
+ get localTarget() { |
+ return this.event.target; |
+ }, |
+ |
+ get path() { |
+ return this.event.path; |
+ } |
+ |
+ }; |
+ |
+ } else { |
+ |
+ EventApi.prototype = { |
+ |
+ get rootTarget() { |
+ return this.event.target; |
+ }, |
+ |
+ get localTarget() { |
+ var current = this.event.currentTarget; |
+ var currentRoot = current && Polymer.dom(current).getOwnerRoot(); |
+ var p$ = this.path; |
+ for (var i=0; i < p$.length; i++) { |
+ if (Polymer.dom(p$[i]).getOwnerRoot() === currentRoot) { |
+ return p$[i]; |
+ } |
+ } |
+ }, |
+ |
+ // TODO(sorvell): simulate event.path. This probably incorrect for |
+ // non-bubbling events. |
+ get path() { |
+ if (!this.event._path) { |
+ var path = []; |
+ var o = this.rootTarget; |
+ while (o) { |
+ path.push(o); |
+ o = Polymer.dom(o).parentNode || o.host; |
+ } |
+ // event path includes window in most recent native implementations |
+ path.push(window); |
+ this.event._path = path; |
+ } |
+ return this.event._path; |
+ } |
+ |
+ }; |
+ |
+ } |
+ |
+ var factory = function(event) { |
+ if (!event.__eventApi) { |
+ event.__eventApi = new EventApi(event); |
+ } |
+ return event.__eventApi; |
+ }; |
+ |
+ return { |
+ factory: factory |
+ }; |
+ |
+ })(); |
+ |
+</script> |