| Index: third_party/polymer/v0_8/components/more-routing/params.html
|
| diff --git a/third_party/polymer/v0_8/components/more-routing/params.html b/third_party/polymer/v0_8/components/more-routing/params.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..71b3d53a619bd46d6cb810162feefc18f93e0e67
|
| --- /dev/null
|
| +++ b/third_party/polymer/v0_8/components/more-routing/params.html
|
| @@ -0,0 +1,57 @@
|
| +<!--
|
| +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
|
| +-->
|
| +<link rel="import" href="emitter.html">
|
| +
|
| +<script>
|
| +(function(scope) {
|
| +var MoreRouting = scope.MoreRouting = scope.MoreRouting || {};
|
| +MoreRouting.Params = Params;
|
| +
|
| +/**
|
| + * A collection of route parameters and their values, with nofications.
|
| + *
|
| + * Params prefixed by `__` are reserved.
|
| + *
|
| + * @param {!Array<string>} params The keys of the params being managed.
|
| + * @param {Params=} parent A parent route's params to inherit.
|
| + * @return {Params}
|
| + */
|
| +function Params(params, parent) {
|
| + var model = Object.create(parent || Params.prototype);
|
| + // We have a different set of listeners at every level of the hierarchy.
|
| + Object.defineProperty(model, '__listeners', {value: []});
|
| +
|
| + // We keep all state enclosed within this closure so that inheritance stays
|
| + // relatively straightfoward.
|
| + var state = {};
|
| + _compile(model, params, state);
|
| +
|
| + return model;
|
| +}
|
| +Params.prototype = Object.create(MoreRouting.Emitter);
|
| +
|
| +// Utility
|
| +
|
| +function _compile(model, params, state) {
|
| + params.forEach(function(param) {
|
| + Object.defineProperty(model, param, {
|
| + get: function() {
|
| + return state[param];
|
| + },
|
| + set: function(value) {
|
| + if (state[param] === value) return;
|
| + state[param] = value;
|
| + model.__notify(param, value);
|
| + },
|
| + });
|
| + });
|
| +}
|
| +
|
| +})(window);
|
| +</script>
|
|
|