UNPKG

react-google-contacts

Version:

A Google Button to import user's gmail contacts

1 lines 10.6 kB
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("react")):"function"==typeof define&&define.amd?define(["react"],t):"object"==typeof exports?exports.GoogleContacts=t(require("react")):e.GoogleContacts=t(e.react)}("undefined"!=typeof self?self:this,(function(e){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=4)}([function(t,n){t.exports=e},function(e,t,n){e.exports=n(2)()},function(e,t,n){"use strict";var r=n(3);function o(){}function a(){}a.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,a,i){if(i!==r){var c=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw c.name="Invariant Violation",c}}function t(){return e}e.isRequired=e;var n={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:a,resetWarningCache:o};return n.PropTypes=n,n}},function(e,t,n){"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},function(e,t,n){"use strict";n.r(t);var r=n(0),o=n.n(r),a=(n(1),function(e){var t=e.active;return o.a.createElement("div",{style:{marginRight:10,background:t?"#eee":"#fff",padding:10,borderRadius:2}},o.a.createElement("svg",{width:"18",height:"18",xmlns:"http://www.w3.org/2000/svg"},o.a.createElement("g",{fill:"#000",fillRule:"evenodd"},o.a.createElement("path",{d:"M9 3.48c1.69 0 2.83.73 3.48 1.34l2.54-2.48C13.46.89 11.43 0 9 0 5.48 0 2.44 2.02.96 4.96l2.91 2.26C4.6 5.05 6.62 3.48 9 3.48z",fill:"#EA4335"}),o.a.createElement("path",{d:"M17.64 9.2c0-.74-.06-1.28-.19-1.84H9v3.34h4.96c-.1.83-.64 2.08-1.84 2.92l2.84 2.2c1.7-1.57 2.68-3.88 2.68-6.62z",fill:"#4285F4"}),o.a.createElement("path",{d:"M3.88 10.78A5.54 5.54 0 0 1 3.58 9c0-.62.11-1.22.29-1.78L.96 4.96A9.008 9.008 0 0 0 0 9c0 1.45.35 2.82.96 4.04l2.92-2.26z",fill:"#FBBC05"}),o.a.createElement("path",{d:"M9 18c2.43 0 4.47-.8 5.96-2.18l-2.84-2.2c-.76.53-1.78.9-3.12.9-2.38 0-4.4-1.57-5.12-3.74L.97 13.04C2.45 15.98 5.48 18 9 18z",fill:"#34A853"}),o.a.createElement("path",{fill:"none",d:"M0 0h18v18H0z"}))))}),i=function(e){var t=e.children,n=e.icon;return o.a.createElement("span",{style:{paddingRight:10,fontWeight:500,paddingLeft:n?0:10,paddingTop:10,paddingBottom:10}},t)};function c(e){return(c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function s(e){return function(e){if(Array.isArray(e))return u(e)}(e)||function(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return u(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return u(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function p(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?l(Object(n),!0).forEach((function(t){f(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):l(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function f(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function d(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function h(e,t){return(h=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function y(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=m(e);if(t){var o=m(this).constructor;n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments);return b(this,n)}}function b(e,t){return!t||"object"!==c(t)&&"function"!=typeof t?g(e):t}function g(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function m(e){return(m=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}var v=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&h(e,t)}(u,e);var t,n,r,c=y(u);function u(e){var t;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,u),(t=c.call(this,e)).signIn=t.signIn.bind(g(t)),t.handleImportContacts=t.handleImportContacts.bind(g(t)),t.handleParseContacts=t.handleParseContacts.bind(g(t)),t.state={hovered:!1,active:!1},t.allData=[],t}return t=u,(n=[{key:"componentDidMount",value:function(){this.allData=[];var e,t,n,r,o,a=this.props.jsSrc;e=document,t="script",n=e.getElementsByTagName(t)[0],r=n,o=n,(o=e.createElement(t)).id="google-contacts",o.src=a,r&&r.parentNode?r.parentNode.insertBefore(o,r):e.head.appendChild(o),o.onload=void 0}},{key:"handleImportContacts",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,r=this.props.onFailure;if(e){var o=e.getAuthResponse();window.gapi.load("client",(function(){window.gapi.client.request({path:"https://people.googleapis.com/v1/otherContacts",params:p({readMask:"names,emailAddresses",pageSize:t.props.maxResults>1e3?1e3:t.props.maxResults},n&&{pageToken:n}),headers:{"GData-Version":"3.0",Authorization:"Bearer ".concat(o.access_token)}}).then((function(n){return t.handleNextDataFetch(n,e)}),(function(e){return r(e)}))}))}}},{key:"handleNextDataFetch",value:function(e,t){var n=JSON.parse(e.body);this.allData=[].concat(s(this.allData),s(n.otherContacts)),"nextPageToken"in n&&this.props.maxResults<this.allData.length?this.handleImportContacts(t,n.nextPageToken):this.handleParseContacts()}},{key:"handleParseContacts",value:function(){var e=this.props,t=e.onSuccess,n=e.onFailure,r=[];try{for(var o=0;o<this.allData.length;o+=1){var a=this.allData[o];r.push({email:a.emailAddresses[0].value,title:"names"in a?a.names[0].displayName:a.emailAddresses[0].value})}t(r)}catch(e){n("Error to fetch contact")}}},{key:"signIn",value:function(e){var t=this;this.allData=[];var n=this.props,r=n.clientId,o=n.cookiePolicy,a=n.loginHint,i=n.hostedDomain,c=n.redirectUri,s=n.discoveryDocs,u=n.onRequest,l=n.onFailure,p=n.uxMode,f=n.accessType,d=n.responseType,h=n.prompt,y=n.onSuccess,b={client_id:r,cookie_policy:o,login_hint:a,hosted_domain:i,discoveryDocs:s,ux_mode:p,redirect_uri:c,scope:"https://www.googleapis.com/auth/contacts.other.readonly",access_type:f};if("code"===d&&(b.access_type="offline"),e&&e.preventDefault(),!this.state.disabled){var g=function(){var e=window.gapi.auth2.getAuthInstance(),n={prompt:h};u(),"code"===d?e.grantOfflineAccess(n).then((function(e){return y(e)}),(function(e){return l(e)})):e.signIn(n).then((function(e){return t.handleImportContacts(e)}),(function(e){return l(e)}))};window.gapi.load("auth2",(function(){window.gapi.auth2.getAuthInstance()?g():window.gapi.auth2.init(b).then(g)}))}}},{key:"render",value:function(){var e=this,t=this.props,n=t.tag,r=t.type,c=t.className,s=t.disabledStyle,u=t.buttonText,l=t.children,p=t.render,f=t.theme,d=t.icon,h=this.state.disabled||this.props.disabled;if(p)return p({onClick:this.signIn});var y={backgroundColor:"dark"===f?"rgb(66, 133, 244)":"#fff",display:"inline-flex",alignItems:"center",color:"dark"===f?"#fff":"rgba(0, 0, 0, .54)",boxShadow:"0 2px 2px 0 rgba(0, 0, 0, .24), 0 0 1px 0 rgba(0, 0, 0, .24)",padding:0,borderRadius:2,border:"1px solid transparent",fontSize:14,fontWeight:"500",fontFamily:"Roboto, sans-serif"},b={cursor:"pointer",opacity:.9},g={cursor:"pointer",backgroundColor:"dark"===f?"#3367D6":"#eee",color:"dark"===f?"#fff":"rgba(0, 0, 0, .54)",opacity:1},m=h?Object.assign({},y,s):e.state.active?Object.assign({},y,g):e.state.hovered?Object.assign({},y,b):y;return o.a.createElement(n,{onMouseEnter:function(){return e.setState({hovered:!0})},onMouseLeave:function(){return e.setState({hovered:!1,active:!1})},onMouseDown:function(){return e.setState({active:!0})},onMouseUp:function(){return e.setState({active:!1})},onClick:this.signIn,style:m,type:r,disabled:h,className:c},[d&&o.a.createElement(a,{key:1,active:this.state.active}),o.a.createElement(i,{key:2,icon:d},l||u)])}}])&&d(t.prototype,n),r&&d(t,r),u}(r.Component);v.defaultProps={type:"button",tag:"button",buttonText:"Import from Gmail",accessType:"online",prompt:"consent",cookiePolicy:"single_host_origin",uxMode:"popup",disabled:!1,maxResults:999,disabledStyle:{opacity:.6},icon:!0,theme:"light",onRequest:function(){},jsSrc:"https://apis.google.com/js/api.js"};var O=v;n.d(t,"default",(function(){return O}))}])}));