PluginProbe ʕ •ᴥ•ʔ
GenerateBlocks / 1.5.3
GenerateBlocks v1.5.3
trunk 1.0 1.0.1 1.0.2 1.1.0 1.1.1 1.1.2 1.2.0 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.4.0 1.4.1 1.4.2 1.4.3 1.4.4 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.6.0 1.7.0 1.7.1 1.7.2 1.7.3 1.8.0 1.8.1 1.8.2 1.8.3 1.9.0 1.9.1 2.0.0 2.0.1 2.0.2 2.1.0 2.1.1 2.1.2 2.2.0 2.2.1 2.3.0
generateblocks / src / hooks / useDeviceType.js
generateblocks / src / hooks Last commit date
index.js 4 years ago useAuthors.js 4 years ago useDebounceState.js 4 years ago useDeviceType.js 4 years ago useInnerBlocksCount.js 4 years ago useTaxonomies.js 4 years ago useTaxonomyRecords.js 4 years ago
useDeviceType.js
47 lines
1 import { useDispatch, useSelect, dispatch } from '@wordpress/data';
2 import { useEffect } from '@wordpress/element';
3 import useLocalStorageState from 'use-local-storage-state';
4
5 export default ( initialDeviceType = 'Desktop' ) => {
6 const [ localDeviceType, setLocalDeviceType ] = useLocalStorageState(
7 'generateblocksDeviceType', {
8 ssr: true,
9 defaultValue: initialDeviceType,
10 }
11 );
12
13 if ( ! dispatch( 'core/edit-post' ) ) {
14 const setDeviceType = ( type ) => {
15 setLocalDeviceType( type );
16 };
17
18 return [ localDeviceType, setDeviceType ];
19 }
20
21 const {
22 __experimentalSetPreviewDeviceType: setPreviewDeviceType = () => {},
23 } = useDispatch( 'core/edit-post' );
24
25 const previewDeviceType = useSelect( ( select ) => {
26 const {
27 __experimentalGetPreviewDeviceType: experimentalGetPreviewDeviceType = () => false,
28 } = select( 'core/edit-post' );
29
30 return experimentalGetPreviewDeviceType();
31 }, [] );
32
33 useEffect( () => {
34 setLocalDeviceType( previewDeviceType );
35 }, [ previewDeviceType ] );
36
37 const setDeviceType = ( type ) => {
38 if ( generateBlocksInfo && generateBlocksInfo.syncResponsivePreviews ) {
39 setPreviewDeviceType( type );
40 }
41
42 setLocalDeviceType( type );
43 };
44
45 return [ localDeviceType, setDeviceType ];
46 };
47