| Index: third_party/polymer/v0_8/components/more-routing/emitter.html
|
| diff --git a/third_party/polymer/v0_8/components/more-routing/emitter.html b/third_party/polymer/v0_8/components/more-routing/emitter.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..5c2aa0e381aa637380982f55095fa6780621fb26
|
| --- /dev/null
|
| +++ b/third_party/polymer/v0_8/components/more-routing/emitter.html
|
| @@ -0,0 +1,77 @@
|
| +<!--
|
| +Copyright (c) 2015 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>
|
| +(function(scope) {
|
| +var MoreRouting = scope.MoreRouting = scope.MoreRouting || {};
|
| +MoreRouting.Emitter = Object.create(null); // Minimal set of properties.
|
| +
|
| +/**
|
| + * A dumb prototype that provides very simple event subscription.
|
| + *
|
| + * You are responsible for initializing `__listeners` as an array on objects
|
| + * that make use of this.
|
| + */
|
| +Object.defineProperties(MoreRouting.Emitter, {
|
| +
|
| + /**
|
| + * Registers a callback that will be called each time any parameter managed by
|
| + * this object (or its parents) have changed.
|
| + *
|
| + * @param {!Function} callback
|
| + * @return {{close: function()}}
|
| + */
|
| + __subscribe: {
|
| + value: function __subscribe(callback) {
|
| + this.__listeners.push(callback);
|
| +
|
| + return {
|
| + close: this.__unsubscribe.bind(this, callback),
|
| + };
|
| + },
|
| + },
|
| +
|
| + /**
|
| + * Unsubscribes a previously registered callback.
|
| + *
|
| + * @param {!Function} callback
|
| + */
|
| + __unsubscribe: {
|
| + value: function __unsubscribe(callback) {
|
| + var index = this.__listeners.indexOf(callback);
|
| + if (index < 0) {
|
| + console.warn(this, 'attempted unsubscribe of unregistered listener:', callback);
|
| + return;
|
| + }
|
| + this.__listeners.splice(index, 1);
|
| + },
|
| + },
|
| +
|
| + /**
|
| + * Notifies subscribed callbacks.
|
| + */
|
| + __notify: {
|
| + value: function __notify(key, value) {
|
| + if (this.__silent) return;
|
| + var args = Array.prototype.slice.call(arguments);
|
| + // Notify listeners on parents first.
|
| + var parent = Object.getPrototypeOf(this);
|
| + if (parent && parent.__notify && parent.__listeners) {
|
| + parent.__notify.apply(parent, args);
|
| + }
|
| +
|
| + this.__listeners.forEach(function(listener) {
|
| + listener.apply(null, args);
|
| + }.bind(this));
|
| + },
|
| + },
|
| +
|
| +});
|
| +
|
| +})(window);
|
| +</script>
|
|
|