PluginProbe ʕ •ᴥ•ʔ
GenerateBlocks / 2.0.2
GenerateBlocks v2.0.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 / block-styles-builder / BlockStylesBuilder.jsx
generateblocks / src / components / block-styles-builder Last commit date
BlockStylesBuilder.jsx 1 year ago index.js 1 year ago
BlockStylesBuilder.jsx
87 lines
1 import { applyFilters } from '@wordpress/hooks';
2 import { useMemo } from '@wordpress/element';
3
4 import {
5 StylesBuilder,
6 defaultAtRules,
7 getStylesObject,
8 deleteStylesObjectKey,
9 updateStylesObjectKey,
10 } from '@edge22/styles-builder';
11 import {
12 TABS_STORAGE_KEY,
13 } from '@edge22/block-styles';
14 import { useBlockStyles } from '@hooks/useBlockStyles';
15
16 export function BlockStylesBuilder( { attributes, setAttributes, shortcuts, onStyleChange, name } ) {
17 const {
18 atRule,
19 setAtRule,
20 nestedRule,
21 setNestedRule,
22 setDeviceType,
23 getPreviewDevice,
24 deviceType,
25 setGlobalStyle,
26 cancelEditGlobalStyle,
27 currentStyle,
28 } = useBlockStyles();
29
30 const allowCustomAdvancedSelector = applyFilters(
31 'generateblocks.editor.allowCustomAdvancedSelector',
32 false,
33 { name }
34 );
35
36 const allowCustomAtRule = applyFilters(
37 'generateblocks.editor.allowCustomAtRule',
38 false,
39 { name }
40 );
41
42 const { styles, globalClasses = [] } = attributes;
43 const currentStyles = getStylesObject( styles, atRule, nestedRule );
44 const computedStyleDeps = useMemo( () => {
45 const deps = {
46 globalClasses,
47 };
48
49 return JSON.stringify( deps );
50 }, [ globalClasses ] );
51
52 return (
53 <StylesBuilder
54 currentSelector={ currentStyle?.selector }
55 styles={ currentStyles }
56 allStyles={ styles }
57 onDeleteStyle={ ( property, nestedRuleValue ) => {
58 const newStyles = deleteStylesObjectKey( styles, property, nestedRuleValue );
59 setAttributes( { styles: newStyles } );
60 } }
61 nestedRule={ nestedRule }
62 atRule={ atRule }
63 onStyleChange={ ( property, value = null ) => onStyleChange( property, value, atRule, nestedRule ) }
64 onNestedRuleChange={ ( value ) => setNestedRule( value ) }
65 onAtRuleChange={ ( value ) => {
66 setAtRule( value );
67 setDeviceType( getPreviewDevice( value, deviceType, defaultAtRules ) );
68 } }
69 onUpdateKey={ ( oldKey, newKey, nestedRuleValue ) => {
70 const newStyles = updateStylesObjectKey( styles, oldKey, newKey, nestedRuleValue );
71 setAttributes( { styles: newStyles } );
72 } }
73 selectorShortcuts={ shortcuts.selectorShortcuts }
74 visibleSelectors={ shortcuts.visibleShortcuts }
75 onEditStyle={ setGlobalStyle }
76 cancelEditStyle={ cancelEditGlobalStyle }
77 setLocalTab={ ( tab ) => {
78 sessionStorage.setItem( TABS_STORAGE_KEY, tab );
79 } }
80 scope="local"
81 allowCustomAdvancedSelector={ allowCustomAdvancedSelector }
82 allowCustomAtRule={ allowCustomAtRule }
83 computedStyleDeps={ computedStyleDeps }
84 />
85 );
86 }
87