PluginProbe ʕ •ᴥ•ʔ
VK Blocks / trunk
VK Blocks vtrunk
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 / components / advanced-color-gradient-control / index.js
vk-blocks / src / components / advanced-color-gradient-control Last commit date
index.js 2 months ago
index.js
126 lines
1 import { __ } from '@wordpress/i18n';
2 import {
3 __experimentalColorGradientControl as ColorGradientControl,
4 getGradientSlugByValue,
5 getColorObjectByColorValue,
6 useSettings,
7 useSetting, // 6.4 互換
8 } from '@wordpress/block-editor';
9 import { colorSlugToColorCode } from '@vkblocks/utils/color-slug-to-color-code';
10 import { gradientSlugToGradientCode } from '@vkblocks/utils/gradient-slug-to-gradient-code';
11 import { select } from '@wordpress/data';
12
13 export const AdvancedColorGradientControl = (props) => {
14 const {
15 colorSchema,
16 gradientSchema,
17 setAttributes,
18 attributes,
19 enableAlpha = true,
20 } = props;
21 const hexColorValue = colorSlugToColorCode(attributes[colorSchema]);
22 const gradientValue = gradientSlugToGradientCode(
23 attributes[gradientSchema]
24 );
25
26 let defaultGradients;
27 let themeGradients;
28 let defaultColors;
29 let themeColors;
30
31 if (typeof useSettings === 'function') {
32 defaultGradients = [
33 ...(useSettings('color.gradients.default')?.[0] || []),
34 ];
35 themeGradients = [...(useSettings('color.gradients.theme')?.[0] || [])];
36 defaultColors = [...(useSettings('color.palette.default')?.[0] || [])];
37 themeColors = [...(useSettings('color.palette.theme')?.[0] || [])];
38 } else if (typeof useSetting === 'function') {
39 // 6.4 互換
40 defaultGradients = [
41 ...(useSetting('color.gradients.default')?.[0] || []),
42 ];
43 themeGradients = [...(useSetting('color.gradients.theme')?.[0] || [])];
44 defaultColors = [...(useSetting('color.palette.default')?.[0] || [])];
45 themeColors = [...(useSetting('color.palette.theme')?.[0] || [])];
46 }
47
48 // Editor settings を一度だけ取得
49 const editorSettings = select('core/block-editor')?.getSettings();
50
51 const gradientsArray = [];
52 if (themeGradients?.length > 0) {
53 gradientsArray.push({
54 name: __('Theme', 'vk-blocks'),
55 gradients: themeGradients,
56 });
57 }
58 if (defaultGradients?.length > 0) {
59 gradientsArray.push({
60 name: __('Default', 'vk-blocks'),
61 gradients: defaultGradients,
62 });
63 }
64
65 // useSettings で取得したカラー(テーマカラー + 無料版カラー)を�
66 �列に追加
67 const colorsArray = [];
68 if (themeColors?.length > 0) {
69 colorsArray.push(...themeColors);
70 }
71 if (defaultColors?.length > 0) {
72 colorsArray.push(...defaultColors);
73 }
74
75 // ユーザーが新たに追加したカスタムカラーを追加
76 const customColors = editorSettings?.colors || [];
77 if (customColors.length > 0) {
78 // 既に colorsArray に含まれているものを除外する
79 customColors.forEach((customColor) => {
80 const exists = colorsArray.some((c) => c.slug === customColor.slug);
81 if (!exists) {
82 colorsArray.push(customColor);
83 }
84 });
85 }
86
87 return (
88 <ColorGradientControl
89 gradients={gradientsArray}
90 colors={colorsArray}
91 colorValue={hexColorValue}
92 gradientValue={gradientValue ?? undefined}
93 onColorChange={(value) => {
94 // カラーパレットの色名・スラッグ・カラーコードを取得
95 const colorSet = editorSettings?.colors;
96
97 // 色コードを colorSet から探して色データを取得
98 // カスタムカラーの場合 undefined が返る
99 // パレットのあるカラーの場合 オブジェクトで color / name / slug が返る( console.dir(ColorValue) )
100 const ColorValue = getColorObjectByColorValue(colorSet, value);
101
102 if (ColorValue !== undefined) {
103 setAttributes({ [colorSchema]: ColorValue.slug });
104 } else {
105 setAttributes({ [colorSchema]: value });
106 }
107 }}
108 onGradientChange={(value) => {
109 const gradientSet = editorSettings?.gradients;
110
111 const _gradientValue = getGradientSlugByValue(
112 gradientSet,
113 value
114 );
115
116 if (_gradientValue !== undefined) {
117 setAttributes({ [gradientSchema]: _gradientValue });
118 } else {
119 setAttributes({ [gradientSchema]: value });
120 }
121 }}
122 enableAlpha={enableAlpha}
123 />
124 );
125 };
126