PluginProbe
Code Block Pro – Beautiful Syntax Highlighting / 1.27.7
Code Block Pro – Beautiful Syntax Highlighting v1.27.7
1.27.1 1.27.2 1.27.3 1.27.4 1.27.5 1.27.6 1.27.7 1.28.0 1.3.0 1.4.0 1.5.0 1.5.1 1.5.2 1.6.0 1.7.0 1.8.0 1.9.0 1.9.1 1.9.2 1.9.3 trunk 1.1.0 1.10.0 1.11.0 1.11.1 All 63 releases
code-block-pro / src / hooks / useDefaults.ts

useDefaults.ts in Code Block Pro – Beautiful Syntax Highlighting 1.27.7, at src/hooks/useDefaults.ts

202 lines 6.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 import { useEffect, useRef } from '@wordpress/element';
2 import { Theme } from 'shiki';
3 import { useThemeStore, useThemeStoreReady } from '../state/theme';
4 import { AttributesPropsAndSetter } from '../types';
5
6 export const useDefaults = ({
7 attributes,
8 setAttributes,
9 }: AttributesPropsAndSetter) => {
10 const {
11 theme,
12 fontSize,
13 fontFamily,
14 lineHeight,
15 copyButton,
16 copyButtonType,
17 copyButtonString,
18 copyButtonStringCopied,
19 headerType,
20 footerType,
21 clampFonts,
22 disablePadding,
23 lineNumbers,
24 highlightingHover,
25 tabSize,
26 useTabs,
27 seeMoreType,
28 seeMoreString,
29 seeMoreTransition,
30 seeMoreCollapse,
31 seeMoreCollapseString,
32 } = attributes;
33 const {
34 previousTheme,
35 previousFontSize,
36 previousFontFamily,
37 previousLineHeight,
38 previousHeaderType,
39 previousFooterType,
40 previousClampFonts,
41 previousDisablePadding,
42 previousLineNumbers,
43 previousHighlightingHover,
44 previousCopyButton,
45 previousCopyButtonType,
46 previousCopyButtonString,
47 previousCopyButtonStringCopied,
48 previousCopyButtonUseTextarea,
49 previousTabSize,
50 previousUseTabs,
51 previousSeeMoreType,
52 previousSeeMoreString,
53 previousSeeMoreTransition,
54 previousSeeMoreCollapse,
55 previousSeeMoreCollapseString,
56 } = useThemeStore();
57 const ready = useThemeStoreReady();
58 const once = useRef(false);
59
60 useEffect(() => {
61 if (once.current) return;
62 if (copyButton !== undefined || !previousCopyButton) return;
63 setAttributes({ copyButton: previousCopyButton });
64 }, [previousCopyButton, copyButton, setAttributes]);
65
66 useEffect(() => {
67 if (once.current) return;
68 if (copyButtonType) return;
69 setAttributes({ copyButtonType: previousCopyButtonType });
70 }, [previousCopyButtonType, copyButtonType, setAttributes]);
71
72 useEffect(() => {
73 if (once.current) return;
74 // Checks undefined to avoid invalidating old blocks
75 if (copyButtonString || copyButtonString === undefined) return;
76 setAttributes({ copyButtonString: previousCopyButtonString });
77 }, [previousCopyButtonString, copyButtonString, setAttributes]);
78
79 useEffect(() => {
80 if (once.current) return;
81 // Checks undefined to avoid invalidating old blocks
82 if (copyButtonStringCopied || copyButtonStringCopied === undefined) {
83 return;
84 }
85 const cpyP = previousCopyButtonStringCopied;
86 setAttributes({ copyButtonStringCopied: cpyP });
87 }, [previousCopyButtonStringCopied, copyButtonStringCopied, setAttributes]);
88
89 useEffect(() => {
90 if (once.current) return;
91 setAttributes({ copyButtonUseTextarea: previousCopyButtonUseTextarea });
92 }, [previousCopyButtonUseTextarea, setAttributes]);
93
94 useEffect(() => {
95 if (once.current) return;
96 if (theme) return;
97 setAttributes({ theme: previousTheme as Theme });
98 }, [previousTheme, theme, setAttributes]);
99
100 useEffect(() => {
101 if (once.current) return;
102 if (fontSize) return;
103 setAttributes({ fontSize: previousFontSize });
104 }, [previousFontSize, fontSize, setAttributes]);
105
106 useEffect(() => {
107 if (once.current) return;
108 if (fontFamily || fontFamily === '') return;
109 setAttributes({ fontFamily: previousFontFamily });
110 }, [previousFontFamily, fontFamily, setAttributes]);
111
112 useEffect(() => {
113 if (once.current) return;
114 if (lineHeight) return;
115 setAttributes({ lineHeight: previousLineHeight });
116 }, [previousLineHeight, lineHeight, setAttributes]);
117
118 useEffect(() => {
119 if (once.current) return;
120 if (headerType) return;
121 setAttributes({ headerType: previousHeaderType });
122 }, [previousHeaderType, headerType, setAttributes]);
123
124 useEffect(() => {
125 if (once.current) return;
126 if (footerType !== undefined) return;
127 setAttributes({ footerType: previousFooterType });
128 }, [previousFooterType, footerType, setAttributes]);
129
130 useEffect(() => {
131 if (once.current) return;
132 if (clampFonts !== undefined) return;
133 setAttributes({ clampFonts: previousClampFonts });
134 }, [previousClampFonts, clampFonts, setAttributes]);
135
136 useEffect(() => {
137 if (once.current) return;
138 if (disablePadding !== undefined) return;
139 setAttributes({ disablePadding: previousDisablePadding });
140 }, [previousDisablePadding, disablePadding, setAttributes]);
141
142 useEffect(() => {
143 if (once.current) return;
144 if (lineNumbers !== undefined) return;
145 setAttributes({ lineNumbers: previousLineNumbers });
146 }, [previousLineNumbers, lineNumbers, setAttributes]);
147
148 useEffect(() => {
149 if (once.current) return;
150 if (tabSize !== undefined) return;
151 setAttributes({ tabSize: previousTabSize });
152 }, [previousTabSize, tabSize, setAttributes]);
153
154 useEffect(() => {
155 if (once.current) return;
156 if (useTabs !== undefined) return;
157 setAttributes({ useTabs: previousUseTabs });
158 }, [previousUseTabs, useTabs, setAttributes]);
159
160 useEffect(() => {
161 if (once.current) return;
162 if (seeMoreType !== undefined) return;
163 setAttributes({ seeMoreType: previousSeeMoreType });
164 }, [previousSeeMoreType, seeMoreType, setAttributes]);
165
166 useEffect(() => {
167 if (once.current) return;
168 if (seeMoreString !== undefined) return;
169 setAttributes({ seeMoreString: previousSeeMoreString });
170 }, [previousSeeMoreString, seeMoreString, setAttributes]);
171
172 useEffect(() => {
173 if (once.current) return;
174 if (seeMoreTransition !== undefined) return;
175 setAttributes({ seeMoreTransition: previousSeeMoreTransition });
176 }, [previousSeeMoreTransition, seeMoreTransition, setAttributes]);
177
178 useEffect(() => {
179 if (once.current) return;
180 if (seeMoreCollapse !== undefined) return;
181 setAttributes({ seeMoreCollapse: previousSeeMoreCollapse });
182 }, [previousSeeMoreCollapse, seeMoreCollapse, setAttributes]);
183
184 useEffect(() => {
185 if (once.current) return;
186 if (seeMoreCollapseString !== undefined) return;
187 setAttributes({ seeMoreCollapseString: previousSeeMoreCollapseString });
188 }, [previousSeeMoreCollapseString, seeMoreCollapseString, setAttributes]);
189
190 useEffect(() => {
191 if (once.current) return;
192 if (highlightingHover !== undefined) return;
193 setAttributes({ highlightingHover: previousHighlightingHover });
194 }, [previousHighlightingHover, highlightingHover, setAttributes]);
195
196 useEffect(() => {
197 requestAnimationFrame(() => {
198 once.current = true;
199 });
200 }, [ready]);
201 };
202