@@ -17,6 +17,9 @@ const isFunction = (provider) => {
1717
1818const defaultKeys = [ "data" , "loading" , "error" , "loaded" ] ;
1919
20+ const getDisplayName = ( WrappedComponent ) =>
21+ WrappedComponent . displayName || WrappedComponent . name || "Component" ;
22+
2023const useProvider = ( provider , props ) => {
2124 return useMemo ( ( ) => {
2225 if ( isFunction ( provider ) ) {
@@ -72,65 +75,97 @@ export const withDataProviderBranch = (provider, keys) => (
7275 Component ,
7376 LoadingComponent ,
7477 ErrorComponent
75- ) => ( props ) => {
76- const providerToRead = useProvider ( provider , props ) ;
77- const { dataProp, loadingProp, errorProp, loading, error } = useDataProviderCustomProps (
78- providerToRead ,
79- keys
80- ) ;
81- if ( loading ) {
82- if ( LoadingComponent ) {
83- return < LoadingComponent { ...props } { ...loadingProp } /> ;
78+ ) => {
79+ const WithDataProviderBranch = ( props ) => {
80+ const providerToRead = useProvider ( provider , props ) ;
81+ const { dataProp, loadingProp, errorProp, loading, error } = useDataProviderCustomProps (
82+ providerToRead ,
83+ keys
84+ ) ;
85+ if ( loading ) {
86+ if ( LoadingComponent ) {
87+ return < LoadingComponent { ...props } { ...loadingProp } /> ;
88+ }
89+ return null ;
8490 }
85- return null ;
86- }
87- if ( error ) {
88- if ( ErrorComponent ) {
89- return < ErrorComponent { ... props } { ... errorProp } /> ;
91+ if ( error ) {
92+ if ( ErrorComponent ) {
93+ return < ErrorComponent { ... props } { ... errorProp } /> ;
94+ }
95+ return null ;
9096 }
91- return null ;
92- }
93- return < Component { ...props } { ...dataProp } /> ;
94- } ;
95-
96- export const withDataProvider = ( provider , keys ) => ( Component ) => ( props ) => {
97- const providerToRead = useProvider ( provider , props ) ;
98- const { dataProp, loadingProp, errorProp } = useDataProviderCustomProps ( providerToRead , keys ) ;
99- return < Component { ...props } { ...dataProp } { ...loadingProp } { ...errorProp } /> ;
100- } ;
101-
102- export const withData = ( provider , key ) => ( Component ) => ( props ) => {
103- const providerToRead = useProvider ( provider , props ) ;
104- const { dataProp } = useDataCustomProp ( providerToRead , key ) ;
105- return < Component { ...props } { ...dataProp } /> ;
106- } ;
107-
108- export const withLoading = ( provider , key ) => ( Component ) => ( props ) => {
109- const providerToRead = useProvider ( provider , props ) ;
110- const { loadingProp } = useLoadingCustomProp ( providerToRead , key ) ;
111- return < Component { ...props } { ...loadingProp } /> ;
112- } ;
113-
114- export const withLoaded = ( provider , key ) => ( Component ) => ( props ) => {
115- const providerToRead = useProvider ( provider , props ) ;
116- const { loadedProp } = useLoadedCustomProp ( providerToRead , key ) ;
117- return < Component { ...props } { ...loadedProp } /> ;
118- } ;
119-
120- export const withError = ( provider , key ) => ( Component ) => ( props ) => {
121- const providerToRead = useProvider ( provider , props ) ;
122- const { errorProp } = useErrorCustomProp ( providerToRead , key ) ;
123- return < Component { ...props } { ...errorProp } /> ;
124- } ;
125-
126- export const withPolling = ( provider , interval ) => ( Component ) => ( props ) => {
127- const providerToRead = useProvider ( provider , props ) ;
128- usePolling ( providerToRead , interval ) ;
129- return < Component { ...props } /> ;
130- } ;
131-
132- export const withRefresh = ( provider ) => ( Component ) => ( props ) => {
133- const providerToRead = useProvider ( provider , props ) ;
134- useRefresh ( providerToRead ) ;
135- return < Component { ...props } /> ;
97+ return < Component { ...props } { ...dataProp } /> ;
98+ } ;
99+ WithDataProviderBranch . displayName = `WithDataProviderBranch${ getDisplayName ( Component ) } ` ;
100+ return WithDataProviderBranch ;
101+ } ;
102+
103+ export const withDataProvider = ( provider , keys ) => ( Component ) => {
104+ const WithDataProvider = ( props ) => {
105+ const providerToRead = useProvider ( provider , props ) ;
106+ const { dataProp, loadingProp, errorProp } = useDataProviderCustomProps ( providerToRead , keys ) ;
107+ return < Component { ...props } { ...dataProp } { ...loadingProp } { ...errorProp } /> ;
108+ } ;
109+ WithDataProvider . displayName = `WithDataProvider${ getDisplayName ( Component ) } ` ;
110+ return WithDataProvider ;
111+ } ;
112+
113+ export const withData = ( provider , key ) => ( Component ) => {
114+ const WithData = ( props ) => {
115+ const providerToRead = useProvider ( provider , props ) ;
116+ const { dataProp } = useDataCustomProp ( providerToRead , key ) ;
117+ return < Component { ...props } { ...dataProp } /> ;
118+ } ;
119+ WithData . displayName = `WithData${ getDisplayName ( Component ) } ` ;
120+ return WithData ;
121+ } ;
122+
123+ export const withLoading = ( provider , key ) => ( Component ) => {
124+ const WithLoading = ( props ) => {
125+ const providerToRead = useProvider ( provider , props ) ;
126+ const { loadingProp } = useLoadingCustomProp ( providerToRead , key ) ;
127+ return < Component { ...props } { ...loadingProp } /> ;
128+ } ;
129+ WithLoading . displayName = `WithLoading${ getDisplayName ( Component ) } ` ;
130+ return WithLoading ;
131+ } ;
132+
133+ export const withLoaded = ( provider , key ) => ( Component ) => {
134+ const WithLoaded = ( props ) => {
135+ const providerToRead = useProvider ( provider , props ) ;
136+ const { loadedProp } = useLoadedCustomProp ( providerToRead , key ) ;
137+ return < Component { ...props } { ...loadedProp } /> ;
138+ } ;
139+ WithLoaded . displayName = `WithLoaded${ getDisplayName ( Component ) } ` ;
140+ return WithLoaded ;
141+ } ;
142+
143+ export const withError = ( provider , key ) => ( Component ) => {
144+ const WithError = ( props ) => {
145+ const providerToRead = useProvider ( provider , props ) ;
146+ const { errorProp } = useErrorCustomProp ( providerToRead , key ) ;
147+ return < Component { ...props } { ...errorProp } /> ;
148+ } ;
149+ WithError . displayName = `WithError${ getDisplayName ( Component ) } ` ;
150+ return WithError ;
151+ } ;
152+
153+ export const withPolling = ( provider , interval ) => ( Component ) => {
154+ const WithPolling = ( props ) => {
155+ const providerToRead = useProvider ( provider , props ) ;
156+ usePolling ( providerToRead , interval ) ;
157+ return < Component { ...props } /> ;
158+ } ;
159+ WithPolling . displayName = `WithPolling${ getDisplayName ( Component ) } ` ;
160+ return WithPolling ;
161+ } ;
162+
163+ export const withRefresh = ( provider ) => ( Component ) => {
164+ const WithRefresh = ( props ) => {
165+ const providerToRead = useProvider ( provider , props ) ;
166+ useRefresh ( providerToRead ) ;
167+ return < Component { ...props } /> ;
168+ } ;
169+ WithRefresh . displayName = `WithRefresh${ getDisplayName ( Component ) } ` ;
170+ return WithRefresh ;
136171} ;
0 commit comments