react-firestore
Version:
React components to fetch data from firestore using render props
3 lines (2 loc) • 8.52 kB
JavaScript
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("preact")):"function"==typeof define&&define.amd?define(["exports","preact"],t):t((e=e||self).ReactFirestore={},e.preact)}(this,function(e,t){"use strict";var r="default"in t?t.default:t;function n(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}var o=function(){},s=r.createContext(null),i=function(e){function t(t){var r=e.call(this,t)||this,n=t.firebase,s=t.useTimestampsInSnapshots,i=n.firestore();return void 0!==s&&i.settings({timestampsInSnapshots:s}),r.state={firestoreDatabase:i,firestoreCache:new o},r}return n(t,e),t.prototype.render=function(){return r.h(s.Provider,{value:this.state},this.props.children)},t}(t.Component);i.defaultProps={};function a(){return(a=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}function u(e,t){if(null==e)return{};var r,n,o={},s=Object.keys(e);for(n=0;n<s.length;n++)r=s[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}function c(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function p(e,t){return e(t={exports:{}},t.exports),t.exports}var f=p(function(e,t){Object.defineProperty(t,"__esModule",{value:!0});var r="function"==typeof Symbol&&Symbol.for,n=r?Symbol.for("react.element"):60103,o=r?Symbol.for("react.portal"):60106,s=r?Symbol.for("react.fragment"):60107,i=r?Symbol.for("react.strict_mode"):60108,a=r?Symbol.for("react.profiler"):60114,u=r?Symbol.for("react.provider"):60109,c=r?Symbol.for("react.context"):60110,p=r?Symbol.for("react.async_mode"):60111,f=r?Symbol.for("react.concurrent_mode"):60111,l=r?Symbol.for("react.forward_ref"):60112,d=r?Symbol.for("react.suspense"):60113,y=r?Symbol.for("react.memo"):60115,h=r?Symbol.for("react.lazy"):60116;function m(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case n:switch(e=e.type){case p:case f:case s:case a:case i:case d:return e;default:switch(e=e&&e.$$typeof){case c:case l:case u:return e;default:return t}}case h:case y:case o:return t}}}function b(e){return m(e)===f}t.typeOf=m,t.AsyncMode=p,t.ConcurrentMode=f,t.ContextConsumer=c,t.ContextProvider=u,t.Element=n,t.ForwardRef=l,t.Fragment=s,t.Lazy=h,t.Memo=y,t.Portal=o,t.Profiler=a,t.StrictMode=i,t.Suspense=d,t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===s||e===f||e===a||e===i||e===d||"object"==typeof e&&null!==e&&(e.$$typeof===h||e.$$typeof===y||e.$$typeof===u||e.$$typeof===c||e.$$typeof===l)},t.isAsyncMode=function(e){return b(e)||m(e)===p},t.isConcurrentMode=b,t.isContextConsumer=function(e){return m(e)===c},t.isContextProvider=function(e){return m(e)===u},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===n},t.isForwardRef=function(e){return m(e)===l},t.isFragment=function(e){return m(e)===s},t.isLazy=function(e){return m(e)===h},t.isMemo=function(e){return m(e)===y},t.isPortal=function(e){return m(e)===o},t.isProfiler=function(e){return m(e)===a},t.isStrictMode=function(e){return m(e)===i},t.isSuspense=function(e){return m(e)===d}});c(f);f.typeOf,f.AsyncMode,f.ConcurrentMode,f.ContextConsumer,f.ContextProvider,f.Element,f.ForwardRef,f.Fragment,f.Lazy,f.Memo,f.Portal,f.Profiler,f.StrictMode,f.Suspense,f.isValidElementType,f.isAsyncMode,f.isConcurrentMode,f.isContextConsumer,f.isContextProvider,f.isElement,f.isForwardRef,f.isFragment,f.isLazy,f.isMemo,f.isPortal,f.isProfiler,f.isStrictMode,f.isSuspense;var l=p(function(){});c(l);l.typeOf,l.AsyncMode,l.ConcurrentMode,l.ContextConsumer,l.ContextProvider,l.Element,l.ForwardRef,l.Fragment,l.Lazy,l.Memo,l.Portal,l.Profiler,l.StrictMode,l.Suspense,l.isValidElementType,l.isAsyncMode,l.isConcurrentMode,l.isContextConsumer,l.isContextProvider,l.isElement,l.isForwardRef,l.isFragment,l.isLazy,l.isMemo,l.isPortal,l.isProfiler,l.isStrictMode,l.isSuspense;var d=p(function(e){e.exports=f}),y={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},h={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},m={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},b={};function v(e){return d.isMemo(e)?m:b[e.$$typeof]||y}b[d.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0};var S=Object.defineProperty,P=Object.getOwnPropertyNames,g=Object.getOwnPropertySymbols,C=Object.getOwnPropertyDescriptor,O=Object.getPrototypeOf,M=Object.prototype;var F=function e(t,r,n){if("string"!=typeof r){if(M){var o=O(r);o&&o!==M&&e(t,o,n)}var s=P(r);g&&(s=s.concat(g(r)));for(var i=v(t),a=v(r),u=0;u<s.length;++u){var c=s[u];if(!(h[c]||n&&n[c]||a&&a[c]||i&&i[c])){var p=C(r,c);try{S(t,c,p)}catch(e){}}}return t}return t},w=function(e){var t=function(t){var n=t.wrappedComponentRef,o=u(t,["wrappedComponentRef"]);return r.h(s.Consumer,null,function(t){if(!t)throw new Error("FirestoreProvider is missing");var s=t.firestoreDatabase;return r.h(e,a({},o,{firestore:s,ref:n}))})};return t.displayName="withFirestore("+(e.displayName||e.name)+")",t.WrappedComponent=e,F(t,e)};var x=w(function(e){function t(){for(var t,r=arguments.length,n=new Array(r),o=0;o<r;o++)n[o]=arguments[o];return(t=e.call.apply(e,[this].concat(n))||this).state={isLoading:!0,data:[],error:null,snapshot:null},t.setupFirestoreListener=function(){var e=t.props,r=e.firestore,n=e.path,o=u(e,["firestore","path"]),s=r.collection(n),i=t.buildQuery(s,o);t.unsubscribe=i.onSnapshot(t.handleOnSnapshotSuccess,t.handleOnSnapshotError)},t.handleOnSnapshotSuccess=function(e){e&&t.setState({isLoading:!1,data:e.docs.map(function(e){return a({id:e.id},e.data())}),error:null,snapshot:e})},t.handleOnSnapshotError=function(e){t.setState({isLoading:!1,data:[],error:e,snapshot:null})},t.buildQuery=function(e,t){var r,n=t.sort,o=t.limit,s=t.filter,i=e;(n&&n.split(",").forEach(function(e){var t=e.split(":"),r=t[0],n=t[1];i=i.orderBy(r,n)}),o&&(i=i.limit(o)),s)&&(Array.isArray(s[0])?s.forEach(function(e){var t;i=(t=i).where.apply(t,e)}):i=(r=i).where.apply(r,s));return i},t}n(t,e);var r=t.prototype;return r.componentDidMount=function(){this.setupFirestoreListener()},r.componentWillUnmount=function(){this.handleUnsubscribe()},r.componentWillReceiveProps=function(e){var t=this;e.path===this.props.path&&e.sort===this.props.sort&&e.limit===this.props.limit&&function e(t,r){if(Array.isArray(t)&&Array.isArray(r)){if(t.length!==r.length)return!1;for(var n=0;n<t.length;n++)if(!e(t[n],r[n]))return!1;return!0}return t===r}(e.filter,this.props.filter)||(this.handleUnsubscribe(),this.setState({isLoading:!0},function(){return t.setupFirestoreListener()}))},r.handleUnsubscribe=function(){this.unsubscribe&&this.unsubscribe()},r.render=function(){var e=this.props,t=e.children,r=e.render;return r?r(this.state):"function"==typeof t?t(this.state):null},t}(t.Component)),$=w(function(e){function t(){for(var t,r=arguments.length,n=new Array(r),o=0;o<r;o++)n[o]=arguments[o];return(t=e.call.apply(e,[this].concat(n))||this).state={isLoading:!0,data:null,error:null,snapshot:null},t.setupFirestoreListener=function(){var e=t.props,r=e.firestore,n=e.path,o=r.doc(n);t.unsubscribe=o.onSnapshot(t.handleOnSnapshotSuccess,t.handleOnSnapshotError)},t.handleOnSnapshotError=function(e){t.setState({isLoading:!1,error:e,data:null,snapshot:null})},t.handleOnSnapshotSuccess=function(e){if(e){var r={isLoading:!1,error:null,snapshot:e};try{var n=e.data();r.data=a({id:e.id},n)}catch(e){r.error=e}t.setState(r)}},t}n(t,e);var r=t.prototype;return r.componentDidMount=function(){this.setupFirestoreListener()},r.componentWillUnmount=function(){this.handleUnsubscribe()},r.componentWillReceiveProps=function(e){var t=this;e.path!==this.props.path&&(this.handleUnsubscribe(),this.setState({isLoading:!0},function(){return t.setupFirestoreListener()}))},r.handleUnsubscribe=function(){this.unsubscribe&&this.unsubscribe()},r.render=function(){var e=this.props,t=e.children,r=e.render;return r?r(this.state):"function"==typeof t?t(this.state):null},t}(t.Component));e.Firestore=function(e){var t=e.render;return r.h(s.Consumer,null,function(e){var r=e.firestoreDatabase;return t({firestore:r})})},e.FirestoreProvider=i,e.FirestoreCollection=x,e.FirestoreDocument=$,e.withFirestore=w,Object.defineProperty(e,"__esModule",{value:!0})});
//# sourceMappingURL=react-firestore.umd.min.js.map