PluginProbe
Elementor Website Builder – more than just a page builder / 3.8.0-beta1
Elementor Website Builder – more than just a page builder v3.8.0-beta1
4.3.4 4.3.3 4.3.2 4.3.1 4.3.0 4.3.0-beta3 4.3.0-beta2 4.3.0-beta1 4.2.4 4.2.3 4.2.2 4.2.1 4.2.0 4.1.5 4.2.0-beta2 4.2.0-dev2 4.2.0-beta1 4.1.4 4.1.3 4.1.2 4.1.1 4.1.0 4.1.0-beta3 4.1.0-dev3 4.0.9 All 457 releases
elementor / app / modules / kit-library / assets / js / hooks / use-kit.js

use-kit.js in Elementor Website Builder – more than just a page builder 3.8.0-beta1, at app/modules/kit-library/assets/js/hooks/use-kit.js

56 lines 1.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 import Kit from '../models/kit';
2 import { KEY as LIST_KEY } from './use-kits';
3 import { useCallback } from 'react';
4 import { useQuery, useQueryClient } from 'react-query';
5
6 export const KEY = 'kit';
7
8 export default function useKit( id ) {
9 // A function that returns existing data from the kit list for a placeholder data before the kit request will resolved.
10 const placeholderDataCallback = usePlaceholderDataCallback( id );
11
12 return useQuery( [ KEY, id ], fetchKitItem, {
13 placeholderData: placeholderDataCallback,
14 },
15 );
16 }
17
18 /**
19 * Return placeholder function for kit query.
20 *
21 * @param {*} id
22 * @return {function(): (undefined|*)} placeholder
23 */
24 function usePlaceholderDataCallback( id ) {
25 const queryClient = useQueryClient();
26
27 return useCallback( () => {
28 const placeholder = queryClient.getQueryData( LIST_KEY )
29 ?.find( ( kit ) => {
30 return kit.id === id;
31 } );
32
33 if ( ! placeholder ) {
34 return;
35 }
36
37 return placeholder;
38 }, [ queryClient, id ] );
39 }
40
41 /**
42 * Fetch kit
43 *
44 * @param {Object} root0
45 * @param {Object} root0.queryKey
46 * @param {*} root0.queryKey.0
47 * @param {string} root0.queryKey.1
48 * @return {Promise<Kit>} kit
49 */
50 // eslint-disable-next-line no-unused-vars
51 function fetchKitItem( { queryKey: [ _, id ] } ) {
52 return $e.data.get( 'kits/index', { id }, { refresh: true } )
53 .then( ( response ) => response.data )
54 .then( ( { data } ) => Kit.createFromResponse( data ) );
55 }
56