| Index: polymer_1.0.4/bower_components/firebase-element/firebase-document.html
|
| diff --git a/polymer_1.0.4/bower_components/firebase-element/firebase-document.html b/polymer_1.0.4/bower_components/firebase-element/firebase-document.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..afc5b74728eb3f13ddf16fe32b462d6e11c2c8f6
|
| --- /dev/null
|
| +++ b/polymer_1.0.4/bower_components/firebase-element/firebase-document.html
|
| @@ -0,0 +1,110 @@
|
| +<!--
|
| +@license
|
| +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="../polymer/polymer.html">
|
| +<link rel="import" href="firebase.html">
|
| +<link rel="import" href="firebase-query-behavior.html">
|
| +
|
| +<!--
|
| +An element wrapper for the Firebase API.
|
| +
|
| +A `<firebase-document>` is a reference to a remote document somewhere on
|
| +Firebase. The element fetchs a document at a provided `location`, and exposes
|
| +it as an Object that is suitable for deep two-way databinding.
|
| +
|
| +Example:
|
| +
|
| + <firebase-document
|
| + location="https://dinosaur-facts.firebaseio.com/dinosaurs"
|
| + data="{{dinosaurs}}">
|
| +
|
| +In the above example, if the `dinosaurs` object is data-bound elsewhere via
|
| +Polymer's data-binding system, changes to the document will be automatically
|
| +reflected in the remote document and any other clients referencing that
|
| +document.
|
| +-->
|
| +
|
| +<script>
|
| + Polymer({
|
| + is: 'firebase-document',
|
| +
|
| + behaviors: [
|
| + Polymer.FirebaseQueryBehavior
|
| + ],
|
| +
|
| + properties: {
|
| +
|
| + /**
|
| + * Firebase Query object corresponding to `location`.
|
| + */
|
| + query: {
|
| + type: Object,
|
| + notify: true,
|
| + computed: '_computeQuery(location)',
|
| + observer: '_queryChanged'
|
| + },
|
| +
|
| + /**
|
| + * The `data` object mapped to `location`.
|
| + */
|
| + data: {
|
| + type: Object,
|
| + notify: true
|
| + }
|
| + },
|
| +
|
| + listeners: {
|
| + 'firebase-value': '_onFirebaseValue'
|
| + },
|
| +
|
| + _applyLocalDataChanges: function(change) {
|
| + var pathFragments = change.path.split('.');
|
| +
|
| + if (pathFragments.length === 1) {
|
| + this._updateRemoteDocument();
|
| + return;
|
| + }
|
| +
|
| + this._setRemoteDocumentChild(
|
| + pathFragments[1],
|
| + change.base[pathFragments[1]]
|
| + );
|
| + },
|
| +
|
| + _onFirebaseValue: function(event) {
|
| + this._applyRemoteDataChange(function() {
|
| + this.set('data', event.detail.val());
|
| + });
|
| + },
|
| +
|
| + _computeQuery: function(location) {
|
| + if (!location) {
|
| + return;
|
| + }
|
| +
|
| + return new Firebase(location);
|
| + },
|
| +
|
| + _updateRemoteDocument: function() {
|
| + this._log('Updating remote document');
|
| + this.query.update(this.dataAsObject);
|
| + },
|
| +
|
| + _setRemoteDocumentChild: function(key, value) {
|
| + this._log('Setting child "' + key + '" to', value);
|
| + this.query.child(key).set(value);
|
| + },
|
| +
|
| + _removeRemoteDocumentChild: function(key) {
|
| + this._log('Removing child "' + key + '"');
|
| + this.query.child(key).remove();
|
| + }
|
| + });
|
| +</script>
|
|
|