Index: polymer_1.0.4/bower_components/google-apis/google-client-loader.html |
diff --git a/polymer_1.0.4/bower_components/google-apis/google-client-loader.html b/polymer_1.0.4/bower_components/google-apis/google-client-loader.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..94c2b668bbf5b4cec740e048d96036ebd1a1711d |
--- /dev/null |
+++ b/polymer_1.0.4/bower_components/google-apis/google-client-loader.html |
@@ -0,0 +1,227 @@ |
+<!-- |
+Copyright (c) 2014 The Polymer Project Authors. All rights reserved. |
+This code may only be used under the BSD style license found at https://polymer.github.io/LICENSE.txt |
+The complete set of authors may be found at https://polymer.github.io/AUTHORS.txt |
+The complete set of contributors may be found at https://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 https://polymer.github.io/PATENTS.txt |
+--> |
+ |
+<link rel="import" href="../polymer/polymer.html"> |
+<link rel="import" href="google-js-api.html"> |
+ |
+<!-- |
+Element for loading a specific client Google API with the JavaScript client library. |
+ |
+For loading `gapi.client` libraries |
+ |
+##### Example |
+ |
+ <google-client-loader id="shortener" |
+ name="urlshortener" |
+ version="v1"></google-client-loader> |
+ |
+ <script> |
+ var shortener = document.getElementById('shortener'); |
+ shortener.addEventListener('google-api-load', function(event) { |
+ var request = shortener.api.url.get({ |
+ shortUrl: 'http://goo.gl/fbsS' |
+ }); |
+ request.execute(function(resp) { |
+ console.log(resp); |
+ }); |
+ }); |
+ </script> |
+ |
+@demo |
+--> |
+<dom-module id="google-client-loader"> |
+ <template> |
+ <google-js-api on-js-api-load="_loadClient"></google-js-api> |
+ </template> |
+</dom-module> |
+ |
+<script> |
+ (function() { |
+ 'use strict'; |
+ |
+ // Stores whether the API client is done loading. |
+ var _clientLoaded = false; |
+ |
+ // Loaders and loading statuses for all APIs, indexed by API name. |
+ // This helps prevent multiple loading requests being fired at the same time |
+ // by multiple google-api-loader elements. |
+ var _statuses = {}; |
+ var _loaders = {}; |
+ |
+ Polymer({ |
+ |
+ is: 'google-client-loader', |
+ |
+ /** |
+ * Fired when the requested API is loaded. Override this name |
+ * by setting `successEventName`. |
+ * @event google-api-load |
+ */ |
+ |
+ /** |
+ * Fired if an error occurs while loading the requested API. Override this name |
+ * by setting `errorEventName`. |
+ * @event google-api-load-error |
+ */ |
+ |
+ properties: { |
+ /** |
+ * Name of the API to load, e.g. 'urlshortener'. |
+ * |
+ * You can find the full list of APIs on the |
+ * <a href="https://developers.google.com/apis-explorer"> Google APIs |
+ * Explorer</a>. |
+ * @required |
+ */ |
+ name: String, |
+ |
+ /** |
+ * Version of the API to load, e.g. 'v1'. |
+ * @required |
+ */ |
+ version: String, |
+ |
+ /** |
+ * App Engine application ID for loading a Google Cloud Endpoints API. |
+ */ |
+ appId: String, |
+ |
+ /** |
+ * Root URL where to load the API from, e.g. 'http://host/apis'. |
+ * For App Engine dev server this would be something like: |
+ * 'http://localhost:8080/_ah/api'. |
+ * Overrides 'appId' if both are specified. |
+ */ |
+ apiRoot: String, |
+ |
+ /** |
+ * Name of the event fired when API library is loaded. |
+ */ |
+ successEventName: { |
+ type: String, |
+ value: 'google-api-load' |
+ }, |
+ |
+ /** |
+ * Name of the event fired when there is an error loading the library. |
+ */ |
+ errorEventName: { |
+ type: String, |
+ value: 'google-api-load-error' |
+ } |
+ }, |
+ |
+ // Used to fix events potentially being fired multiple times by |
+ // iron-jsonp-library. |
+ _waiting: false, |
+ |
+ /** |
+ * Returns the loaded API. |
+ * @type gapi.client |
+ */ |
+ get api() { |
+ if (window.gapi && window.gapi.client && |
+ window.gapi.client[this.name]) { |
+ return window.gapi.client[this.name]; |
+ } else { |
+ return undefined; |
+ } |
+ }, |
+ |
+ /** |
+ * Wrapper for `gapi.auth`. |
+ */ |
+ get auth() { |
+ return gapi.auth; |
+ }, |
+ |
+ _loadClient: function() { |
+ gapi.load('client', this._doneLoadingClient.bind(this)); |
+ }, |
+ |
+ _handleLoadResponse: function(response) { |
+ if (response && response.error) { |
+ _statuses[this.name] = 'error'; |
+ this._fireError(response); |
+ } else { |
+ _statuses[this.name] = 'loaded'; |
+ this._fireSuccess(); |
+ } |
+ }, |
+ |
+ _fireSuccess: function() { |
+ this.fire(this.successEventName, |
+ { 'name': this.name, 'version': this.version }); |
+ }, |
+ |
+ _fireError: function(response) { |
+ if (response && response.error) { |
+ this.fire(this.errorEventName, { |
+ 'name': this.name, |
+ 'version': this.version, |
+ 'error': response.error }); |
+ } else { |
+ this.fire(this.errorEventName, { |
+ 'name': this.name, |
+ 'version': this.version }); |
+ } |
+ }, |
+ |
+ _doneLoadingClient: function() { |
+ _clientLoaded = true; |
+ // Fix for API client load event being fired multiple times by |
+ // iron-jsonp-library. |
+ if (!this._waiting) { |
+ this._loadApi(); |
+ } |
+ }, |
+ |
+ _createSelfRemovingListener: function(eventName) { |
+ var handler = function () { |
+ _loaders[this.name].removeEventListener(eventName, handler); |
+ this._loadApi(); |
+ }.bind(this); |
+ |
+ return handler; |
+ }, |
+ |
+ _loadApi: function() { |
+ if (_clientLoaded && this.name && this.version) { |
+ this._waiting = false; |
+ // Is this API already loaded? |
+ if (_statuses[this.name] == 'loaded') { |
+ this._fireSuccess(); |
+ // Is a different google-api-loader already loading this API? |
+ } else if (_statuses[this.name] == 'loading') { |
+ this._waiting = true; |
+ _loaders[this.name].addEventListener(this.successEventName, |
+ this._createSelfRemovingListener(this.successEventName)); |
+ _loaders[this.name].addEventListener(this.errorEventName, |
+ this._createSelfRemovingListener(this.errorEventName)); |
+ // Did we get an error when we tried to load this API before? |
+ } else if (_statuses[this.name] == 'error') { |
+ this._fireError(); |
+ // Otherwise, looks like we're loading a new API. |
+ } else { |
+ var root; |
+ if (this.apiRoot) { |
+ root = this.apiRoot; |
+ } else if (this.appId) { |
+ root = 'https://' + this.appId + '.appspot.com/_ah/api'; |
+ } |
+ _statuses[this.name] = 'loading'; |
+ _loaders[this.name] = this; |
+ gapi.client.load(this.name, this.version, |
+ this._handleLoadResponse.bind(this), root); |
+ } |
+ } |
+ } |
+ }); |
+ })(); |
+</script> |