PluginProbe ʕ •ᴥ•ʔ
GenerateBlocks / 1.8.2
GenerateBlocks v1.8.2
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 / components / panel-area / index.js
generateblocks / src / components / panel-area Last commit date
index.js 3 years ago
index.js
75 lines
1 import ApplyFilters from '../apply-filters/';
2 import objectIsEmpty from '../../utils/object-is-empty';
3 import { PanelBody } from '@wordpress/components';
4 import { applyFilters } from '@wordpress/hooks';
5 import useLocalStorageState from 'use-local-storage-state';
6
7 export default function PanelArea( props ) {
8 const {
9 title = false,
10 initialOpen = false,
11 icon,
12 className,
13 id,
14 state,
15 showPanel = true,
16 children,
17 } = props;
18
19 const [ panels, setPanels ] = useLocalStorageState(
20 'generateblocksPanels', {
21 ssr: true,
22 defaultValue: {},
23 }
24 );
25
26 const show = applyFilters( 'generateblocks.editor.showPanel', showPanel, id, props );
27
28 if ( ! show ) {
29 return null;
30 }
31
32 if ( ! children || objectIsEmpty( children ) ) {
33 return null;
34 }
35
36 return (
37 <ApplyFilters name={ 'generateblocks.panel.' + id } props={ props } state={ state }>
38 { title ? (
39 <PanelBody
40 title={ title }
41 initialOpen={
42 'undefined' !== typeof panels[ id ]
43 ? panels[ id ]
44 : initialOpen
45 }
46 icon={ icon }
47 className={ className }
48 onToggle={ () => {
49 const isOpen = panels[ id ] ||
50 (
51 'undefined' === typeof panels[ id ] &&
52 initialOpen
53 );
54
55 setPanels( {
56 ...panels,
57 [ id ]: ! isOpen,
58 } );
59 } }
60 >
61 {
62 applyFilters( 'generateblocks.editor.panelContents', children, id, props )
63 }
64 </PanelBody>
65 ) : (
66 <PanelBody>
67 {
68 applyFilters( 'generateblocks.editor.panelContents', children, id, props )
69 }
70 </PanelBody>
71 ) }
72 </ApplyFilters>
73 );
74 }
75