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 / highlighter / index.js
vk-blocks / src / extensions / common / highlighter Last commit date
common.js 2 months ago icon.svg 2 months ago index.js 2 months ago inline.js 2 months ago
index.js
112 lines
1 /**
2 * WordPress dependencies
3 */
4 import { useCallback, useState } from '@wordpress/element';
5 import { registerFormatType, getActiveFormat } from '@wordpress/rich-text';
6 import {
7 RichTextToolbarButton,
8 RichTextShortcut,
9 } from '@wordpress/block-editor';
10 import { Icon } from '@wordpress/components';
11
12 /**
13 * Internal dependencies
14 */
15 import { ReactComponent as IconSVG } from './icon.svg';
16 import hex2rgba from '@vkblocks/utils/hex-to-rgba';
17 import { default as InlineColorUI } from './inline';
18 import {
19 name,
20 alpha,
21 highlighColor as settings,
22 highlighterOnApply,
23 } from './common';
24
25 function HighlighterEdit({
26 value,
27 onChange,
28 isActive,
29 activeAttributes,
30 contentRef,
31 }) {
32 const shortcutType = 'primary';
33 const shortcutChar = 'h';
34
35 let heightlightColor;
36 if (isActive) {
37 const activeFormat = getActiveFormat(value, name);
38 heightlightColor = activeFormat.attributes.data;
39 }
40 let iconStyle = {};
41 if (heightlightColor) {
42 const rgbaHeightlightColor = hex2rgba(heightlightColor, alpha);
43 iconStyle = {
44 ...iconStyle,
45 backgroundImage: `linear-gradient(transparent 60%, ${rgbaHeightlightColor} 0)`,
46 };
47 }
48
49 const [isAddingColor, setIsAddingColor] = useState(false);
50
51 const enableIsAddingColor = useCallback(
52 () => setIsAddingColor(true),
53 [setIsAddingColor]
54 );
55 const disableIsAddingColor = useCallback(
56 () => setIsAddingColor(false),
57 [setIsAddingColor]
58 );
59
60 return (
61 <>
62 <RichTextShortcut
63 type={shortcutType}
64 character={shortcutChar}
65 onUse={() => setIsAddingColor(true)}
66 />
67 <RichTextToolbarButton
68 title={settings.title}
69 onClick={() => {
70 if (heightlightColor === undefined) {
71 // set default color on initial
72 highlighterOnApply({
73 heightlightColor,
74 value,
75 onChange,
76 });
77 }
78 setIsAddingColor(true);
79 enableIsAddingColor(true);
80 }}
81 shortcutType={shortcutType}
82 shortcutCharacter={shortcutChar}
83 className="format-library-text-color-button"
84 isActive={isActive}
85 icon={
86 <>
87 <Icon icon={IconSVG} style={iconStyle} />
88 </>
89 }
90 />
91 {isAddingColor && (
92 <InlineColorUI
93 name={name}
94 onClose={disableIsAddingColor}
95 activeAttributes={activeAttributes}
96 value={value}
97 onChange={onChange}
98 contentRef={contentRef}
99 setIsAddingColor={setIsAddingColor}
100 />
101 )}
102 </>
103 );
104 }
105
106 const highlighColor = {
107 ...settings,
108 edit: HighlighterEdit,
109 };
110
111 registerFormatType(name, highlighColor);
112