UNPKG

five-bells-visualization

Version:
79 lines (65 loc) 2.26 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 --> <script> // until ES6 modules become standard, we follow Occam and simply stake out // a global namespace // Polymer is a Function, but of course this is also an Object, so we // hang various other objects off of Polymer.* (function() { var userPolymer = window.Polymer; window.Polymer = function(prototype) { var ctor = desugar(prototype); // native Custom Elements treats 'undefined' extends property // as valued, the property must not exist to be ignored var options = { prototype: ctor.prototype }; if (prototype.extends) { options.extends = prototype.extends; } Polymer.telemetry._registrate(prototype); document.registerElement(prototype.is, options); return ctor; }; var desugar = function(prototype) { prototype = Polymer.Base.chainObject(prototype, Polymer.Base); prototype.registerCallback(); return prototype.constructor; }; window.Polymer = Polymer; if (userPolymer) { for (var i in userPolymer) { Polymer[i] = userPolymer[i]; } } Polymer.Class = desugar; })(); /* // Raw usage [ctor =] Polymer.Class(prototype); document.registerElement(name, ctor); // Simplified usage [ctor = ] Polymer(prototype); */ // telemetry: statistics, logging, and debug Polymer.telemetry = { registrations: [], _regLog: function(prototype) { console.log('[' + prototype.is + ']: registered') }, _registrate: function(prototype) { this.registrations.push(prototype); Polymer.log && this._regLog(prototype); }, dumpRegistrations: function() { this.registrations.forEach(this._regLog); } }; </script>