PluginProbe
Code Block Pro – Beautiful Syntax Highlighting / 1.26.7
Code Block Pro – Beautiful Syntax Highlighting v1.26.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.26.7, at src/hooks/useDefaults.ts

180 lines 5.9 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 } = attributes;
31 const {
32 previousTheme,
33 previousFontSize,
34 previousFontFamily,
35 previousLineHeight,
36 previousHeaderType,
37 previousFooterType,
38 previousClampFonts,
39 previousDisablePadding,
40 previousLineNumbers,
41 previousHighlightingHover,
42 previousCopyButton,
43 previousCopyButtonType,
44 previousCopyButtonString,
45 previousCopyButtonStringCopied,
46 previousTabSize,
47 previousUseTabs,
48 previousSeeMoreType,
49 previousSeeMoreString,
50 previousSeeMoreTransition,
51 } = useThemeStore();
52 const ready = useThemeStoreReady();
53 const once = useRef(false);
54
55 useEffect(() => {
56 if (once.current) return;
57 if (copyButton !== undefined || !previousCopyButton) return;
58 setAttributes({ copyButton: previousCopyButton });
59 }, [previousCopyButton, copyButton, setAttributes]);
60
61 useEffect(() => {
62 if (once.current) return;
63 if (copyButtonType) return;
64 setAttributes({ copyButtonType: previousCopyButtonType });
65 }, [previousCopyButtonType, copyButtonType, setAttributes]);
66
67 useEffect(() => {
68 if (once.current) return;
69 // Checks undefined to avoid invalidating old blocks
70 if (copyButtonString || copyButtonString === undefined) return;
71 setAttributes({ copyButtonString: previousCopyButtonString });
72 }, [previousCopyButtonString, copyButtonString, setAttributes]);
73
74 useEffect(() => {
75 if (once.current) return;
76 // Checks undefined to avoid invalidating old blocks
77 if (copyButtonStringCopied || copyButtonStringCopied === undefined) {
78 return;
79 }
80 const cpyP = previousCopyButtonStringCopied;
81 setAttributes({ copyButtonStringCopied: cpyP });
82 }, [previousCopyButtonStringCopied, copyButtonStringCopied, setAttributes]);
83
84 useEffect(() => {
85 if (once.current) return;
86 if (theme) return;
87 setAttributes({ theme: previousTheme as Theme });
88 }, [previousTheme, theme, setAttributes]);
89
90 useEffect(() => {
91 if (once.current) return;
92 if (fontSize) return;
93 setAttributes({ fontSize: previousFontSize });
94 }, [previousFontSize, fontSize, setAttributes]);
95
96 useEffect(() => {
97 if (once.current) return;
98 if (fontFamily || fontFamily === '') return;
99 setAttributes({ fontFamily: previousFontFamily });
100 }, [previousFontFamily, fontFamily, setAttributes]);
101
102 useEffect(() => {
103 if (once.current) return;
104 if (lineHeight) return;
105 setAttributes({ lineHeight: previousLineHeight });
106 }, [previousLineHeight, lineHeight, setAttributes]);
107
108 useEffect(() => {
109 if (once.current) return;
110 if (headerType) return;
111 setAttributes({ headerType: previousHeaderType });
112 }, [previousHeaderType, headerType, setAttributes]);
113
114 useEffect(() => {
115 if (once.current) return;
116 if (footerType !== undefined) return;
117 setAttributes({ footerType: previousFooterType });
118 }, [previousFooterType, footerType, setAttributes]);
119
120 useEffect(() => {
121 if (once.current) return;
122 if (clampFonts !== undefined) return;
123 setAttributes({ clampFonts: previousClampFonts });
124 }, [previousClampFonts, clampFonts, setAttributes]);
125
126 useEffect(() => {
127 if (once.current) return;
128 if (disablePadding !== undefined) return;
129 setAttributes({ disablePadding: previousDisablePadding });
130 }, [previousDisablePadding, disablePadding, setAttributes]);
131
132 useEffect(() => {
133 if (once.current) return;
134 if (lineNumbers !== undefined) return;
135 setAttributes({ lineNumbers: previousLineNumbers });
136 }, [previousLineNumbers, lineNumbers, setAttributes]);
137
138 useEffect(() => {
139 if (once.current) return;
140 if (tabSize !== undefined) return;
141 setAttributes({ tabSize: previousTabSize });
142 }, [previousTabSize, tabSize, setAttributes]);
143
144 useEffect(() => {
145 if (once.current) return;
146 if (useTabs !== undefined) return;
147 setAttributes({ useTabs: previousUseTabs });
148 }, [previousUseTabs, useTabs, setAttributes]);
149
150 useEffect(() => {
151 if (once.current) return;
152 if (seeMoreType !== undefined) return;
153 setAttributes({ seeMoreType: previousSeeMoreType });
154 }, [previousSeeMoreType, seeMoreType, setAttributes]);
155
156 useEffect(() => {
157 if (once.current) return;
158 if (seeMoreString !== undefined) return;
159 setAttributes({ seeMoreString: previousSeeMoreString });
160 }, [previousSeeMoreString, seeMoreString, setAttributes]);
161
162 useEffect(() => {
163 if (once.current) return;
164 if (seeMoreTransition !== undefined) return;
165 setAttributes({ seeMoreTransition: previousSeeMoreTransition });
166 }, [previousSeeMoreTransition, seeMoreTransition, setAttributes]);
167
168 useEffect(() => {
169 if (once.current) return;
170 if (highlightingHover !== undefined) return;
171 setAttributes({ highlightingHover: previousHighlightingHover });
172 }, [previousHighlightingHover, highlightingHover, setAttributes]);
173
174 useEffect(() => {
175 requestAnimationFrame(() => {
176 once.current = true;
177 });
178 }, [ready]);
179 };
180