UNPKG

five-bells-visualization

Version:
93 lines (72 loc) 2.38 kB
<!-- @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>