-
Notifications
You must be signed in to change notification settings - Fork 147
/
inspector.js
94 lines (88 loc) · 2.52 KB
/
inspector.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
/**
* Internal dependencies
*/
import applyWithColors from './colors';
/**
* WordPress dependencies
*/
import { __ } from '@wordpress/i18n';
import { Component, Fragment } from '@wordpress/element';
import { compose } from '@wordpress/compose';
import { InspectorControls, ContrastChecker, PanelColorSettings, FontSizePicker, withFontSizes } from '@wordpress/block-editor';
import { PanelBody, withFallbackStyles } from '@wordpress/components';
/**
* Contrast checker
*/
const { getComputedStyle } = window;
const applyFallbackStyles = withFallbackStyles( ( node, ownProps ) => {
const { textColor, buttonColor, fontSize, customFontSize } = ownProps.attributes;
const editableNode = node.querySelector( '[contenteditable="true"]' );
//verify if editableNode is available, before using getComputedStyle.
const computedStyles = editableNode ? getComputedStyle( editableNode ) : null;
return {
fallbackButtonColor: buttonColor || ! computedStyles ? undefined : computedStyles.buttonColor,
fallbackTextColor: textColor || ! computedStyles ? undefined : computedStyles.color,
fallbackFontSize: fontSize || customFontSize || ! computedStyles ? undefined : parseInt( computedStyles.fontSize ) || undefined,
};
} );
/**
* Inspector controls
*/
class Inspector extends Component {
render() {
const {
buttonColor,
fallbackButtonColor,
fallbackFontSize,
fallbackTextColor,
fontSize,
setButtonColor,
setFontSize,
setTextColor,
textColor,
} = this.props;
return (
<Fragment>
<InspectorControls>
<PanelBody title={ __( 'Text Settings', 'coblocks' ) } className="blocks-font-size">
<FontSizePicker
fallbackFontSize={ fallbackFontSize }
value={ fontSize.size }
onChange={ setFontSize }
/>
</PanelBody>
<PanelColorSettings
title={ __( 'Color Settings', 'coblocks' ) }
initialOpen={ false }
colorSettings={ [
{
value: textColor.color,
onChange: setTextColor,
label: __( 'Text Color', 'coblocks' ),
},
{
value: buttonColor.color,
onChange: setButtonColor,
label: __( 'Button Color', 'coblocks' ),
},
] }
>
<ContrastChecker
{ ...{
textColor: '#ffffff',
backgroundColor: buttonColor.color,
fallbackButtonColor,
fallbackTextColor,
} }
/>
</PanelColorSettings>
</InspectorControls>
</Fragment>
);
}
}
export default compose( [
applyWithColors,
applyFallbackStyles,
withFontSizes( 'fontSize' ),
] )( Inspector );