File tree Expand file tree Collapse file tree 1 file changed +51
-0
lines changed
src/plugins/global-settings/preset-controls Expand file tree Collapse file tree 1 file changed +51
-0
lines changed Original file line number Diff line number Diff line change 1+ /**
2+ * WordPress dependencies
3+ */
4+ import { useSelect } from '@wordpress/data'
5+ import { useEffect , useState } from '@wordpress/element'
6+
7+ /**
8+ * External dependencies
9+ */
10+ import { compact } from 'lodash'
11+
12+ const PRESET_MAPPING = {
13+ fontSizes : {
14+ prefix : 'font-size' ,
15+ } ,
16+ spacingSizes : {
17+ prefix : 'spacing-size' ,
18+ } ,
19+ }
20+
21+ const renderGlobalStyles = ( customPresets , setStyles ) => {
22+ let css = ''
23+
24+ Object . entries ( customPresets ) . forEach ( ( [ key , presets ] ) => {
25+ const styleRules = presets ?. map ( preset => {
26+ return preset
27+ ? `--stk--preset--${ PRESET_MAPPING [ key ] ?. prefix } --${ preset ?. slug || '' } : ${ preset ?. size || '' } ;`
28+ : ''
29+ } )
30+ css += compact ( styleRules ) . join ( '' )
31+ } )
32+
33+ css = `:root { ${ css } }`
34+ setStyles ( css )
35+ }
36+
37+ export const GlobalPresetControlsStyles = ( ) => {
38+ const { customPresets } = useSelect ( select => {
39+ const _customPresetControls = select ( 'stackable/global-preset-controls.custom' ) ?. getCustomPresetControls ( )
40+ return { customPresets : { ..._customPresetControls } ?? [ ] }
41+ } , [ ] )
42+ const [ styles , setStyles ] = useState ( '' )
43+
44+ useEffect ( ( ) => {
45+ if ( customPresets && typeof customPresets === 'object' ) {
46+ renderGlobalStyles ( customPresets , setStyles )
47+ }
48+ } , [ JSON . stringify ( customPresets ) ] )
49+
50+ return styles
51+ }
You can’t perform that action at this time.
0 commit comments