PluginProbe ʕ •ᴥ•ʔ
VK Blocks / 1.123.0
VK Blocks v1.123.0
1.123.0 1.122.0 1.121.0 1.120.0 1.119.2 1.119.1 1.119.0 1.118.7 1.82.0.0 1.82.0.1 1.83.0.0 1.83.0.1 1.84.0.0 1.84.0.1 1.85.0.2 1.85.0.3 1.85.1.0 1.85.1.1 1.86.0.0 1.86.0.1 1.86.1.0 1.87.0.0 1.87.0.1 1.88.0.1 1.88.0.2 1.89.0.0 1.9.2 1.90.0.0 1.90.0.1 1.90.1.1 1.91.0.0 1.91.1.1 1.92.0.0 1.92.0.1 1.92.1.0 1.92.1.1 1.93.0.0 trunk 1.93.0.1 0.1.1 1.93.1.0 0.10.3 1.93.1.1 0.11.0 1.94.0.0 0.12.6 1.94.0.1 0.15.1 1.94.1.0 0.16.2 1.94.2.1 0.17.6 1.94.2.2 0.2.2 1.95.0.3 0.22.4 1.95.0.4 0.26.7 1.96.2.0 0.3.2 1.96.2.1 0.31.0 1.97.0.1 0.35.5 1.97.0.2 0.37.5 1.99.0.0 0.38.8 1.99.0.1 0.39.4 0.4.7 0.41.0 0.42.0 0.44.13 0.45.2 0.46.1 0.47.0 0.48.0 0.49.8 0.5.2 0.50.3 0.51.0 0.52.2 0.53.2 0.54.0 0.55.0 0.56.2 0.56.3 0.57.6 0.58.10 0.59.0 0.6.0 0.60.1 0.61.2 0.7.1 0.8.2 1.0.16 1.10.0 1.100.0.0 1.100.0.1 1.102.0.0 1.102.0.1 1.103.0.0 1.104.0.0 1.104.0.1 1.105.1.0 1.105.1.1 1.106.0.0 1.106.0.1 1.107.0.0 1.107.0.1 1.107.0.2 1.108.0.0 1.108.0.1 1.109.0.0 1.109.0.1 1.11.4 1.110.0.0 1.110.0.1 1.111.0.0 1.111.0.1 1.111.0.2 1.112.0.0 1.112.0.1 1.113.0.0 1.113.0.1 1.114.0.0 1.114.0.1 1.114.2.0 1.114.2.1 1.115.0.0 1.115.0.1 1.115.1.0 1.115.1.1 1.115.2.0 1.115.2.1 1.116.0.0 1.116.0.1 1.116.1.0 1.116.1.1 1.116.2.0 1.117.0.0 1.117.0.1 1.117.1.0 1.118.2 1.118.5 1.12.0 1.13.2 1.14.1 1.15.1 1.16.11 1.17.0 1.18.6 1.19.0 1.19.1 1.2.3 1.20.7 1.21.0 1.22.4 1.23.0 1.24.5 1.25.1 1.26.2 1.27.7.2 1.28.0.1 1.29.2.0 1.3.9 1.30.0.1 1.31.0.1 1.32.0.2 1.33.2.1 1.36.1.5 1.37.0.0 1.39.2.1 1.4.6 1.40.0.1 1.40.1.0 1.40.1.1 1.41.0.0 1.41.0.1 1.41.2.2 1.41.2.3 1.43.0.0 1.43.0.1 1.43.0.2 1.44.0.0 1.44.0.1 1.45.0.0 1.45.0.1 1.46.0.0 1.46.0.1 1.47.0.0 1.47.0.1 1.47.1.0 1.48.0.0 1.48.0.1 1.48.0.2 1.48.1.0 1.48.1.1 1.5.0 1.50.0.0 1.50.0.1 1.51.0.0 1.51.0.1 1.52.0.0 1.52.0.1 1.53.0.0 1.53.0.1 1.54.0.0 1.54.0.1 1.55.0.0 1.55.0.1 1.56.0.0 1.56.0.1 1.57.0.0 1.57.0.2 1.57.0.3 1.57.0.4 1.57.0.5 1.57.1.0 1.57.1.1 1.57.1.2 1.58.0.0 1.58.0.1 1.59.0.0 1.59.0.1 1.6.0 1.60.0.0 1.60.0.1 1.63.0.0 1.63.0.1 1.64.0.0 1.64.0.1 1.64.1.0 1.64.1.2 1.67.0.0 1.67.0.1 1.68.0.0 1.68.0.1 1.69.0.0 1.69.0.1 1.69.1.1 1.69.1.2 1.7.1 1.70.0.0 1.70.0.1 1.71.0.0 1.71.0.1 1.72.0.0 1.72.1.0 1.72.1.1 1.73.0.0 1.73.0.1 1.74.0.0 1.74.0.1 1.75.0.0 1.75.1.0 1.75.1.1 1.76.0.0 1.76.0.1 1.76.1.0 1.76.1.1 1.76.2.0 1.76.2.1 1.77.0.0 1.77.0.1 1.78.0.0 1.78.0.1 1.79.0.0 1.79.0.1 1.79.0.2 1.79.0.3 1.79.1.0 1.79.1.1 1.8.2 1.80.1.0 1.80.1.1 1.80.1.2 1.81.0.1 1.81.0.2
vk-blocks / src / extensions / common / inline-font-size / index.js
vk-blocks / src / extensions / common / inline-font-size Last commit date
icon.svg 2 months ago index.js 2 months ago inline.js 2 weeks ago
index.js
97 lines
1 /**
2 * WordPress dependencies
3 */
4 import { __ } from '@wordpress/i18n';
5 import { useCallback, useState } from '@wordpress/element';
6 import { registerFormatType, removeFormat } from '@wordpress/rich-text';
7 import { RichTextToolbarButton } from '@wordpress/block-editor';
8 import { Icon } from '@wordpress/components';
9
10 /**
11 * Internal dependencies
12 */
13 import { ReactComponent as IconSVG } from './icon.svg';
14 import { default as InlineFontSizeUI, getActiveInlineFontSize } from './inline';
15
16 const name = 'vk-blocks/inline-font-size';
17
18 const iconStyle = {
19 width: '24px',
20 height: '24px',
21 };
22
23 function FontSizeEdit({
24 value,
25 onChange,
26 isActive,
27 activeAttributes,
28 contentRef,
29 }) {
30 const shortcutType = 'primary';
31 const shortcutChar = 'h';
32
33 const [isSettingFontSize, setIsSettingFontSize] = useState(false);
34
35 const enableIsAddingFontSize = useCallback(
36 () => setIsSettingFontSize(true),
37 [setIsSettingFontSize]
38 );
39 const disableIsAddingFontSize = useCallback(
40 () => setIsSettingFontSize(false),
41 [setIsSettingFontSize]
42 );
43
44 const activeInlineFontSize = getActiveInlineFontSize(value, name);
45
46 const hasFontSizeToChoose = !!!value.length || !activeInlineFontSize;
47 if (!hasFontSizeToChoose && !isActive) {
48 return null;
49 }
50
51 return (
52 <>
53 <RichTextToolbarButton
54 title={__('Inline Font Size', 'vk-blocks')}
55 onClick={
56 hasFontSizeToChoose
57 ? enableIsAddingFontSize
58 : () => onChange(removeFormat(value, name))
59 }
60 shortcutType={shortcutType}
61 shortcutCharacter={shortcutChar}
62 className="format-library-text-color-button"
63 isActive={isActive}
64 icon={
65 <>
66 <Icon icon={IconSVG} style={iconStyle} />
67 </>
68 }
69 />
70 {isSettingFontSize && (
71 <InlineFontSizeUI
72 name={name}
73 onClose={disableIsAddingFontSize}
74 activeAttributes={activeAttributes}
75 value={value}
76 onChange={onChange}
77 contentRef={contentRef}
78 setIsSettingFontSize={setIsSettingFontSize}
79 />
80 )}
81 </>
82 );
83 }
84
85 export const inlineFontSize = {
86 title: __('Inline font size', 'vk-blocks'),
87 tagName: 'span',
88 className: 'vk_inline-font-size',
89 attributes: {
90 data: 'data-fontSize',
91 style: 'style',
92 },
93 edit: FontSizeEdit,
94 };
95
96 registerFormatType(name, inlineFontSize);
97