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

147 lines 4.7 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 headerType,
18 footerType,
19 clampFonts,
20 disablePadding,
21 lineNumbers,
22 highlightingHover,
23 tabSize,
24 useTabs,
25 } = attributes;
26 const {
27 previousTheme,
28 previousFontSize,
29 previousFontFamily,
30 previousLineHeight,
31 previousHeaderType,
32 previousFooterType,
33 previousClampFonts,
34 previousDisablePadding,
35 previousLineNumbers,
36 previousHighlightingHover,
37 previousCopyButton,
38 previousCopyButtonType,
39 previousTabSize,
40 previousUseTabs,
41 } = useThemeStore();
42 const ready = useThemeStoreReady();
43 const once = useRef(false);
44
45 useEffect(() => {
46 if (once.current) return;
47 if (copyButton !== undefined || !previousCopyButton) return;
48 setAttributes({ copyButton: previousCopyButton });
49 }, [previousCopyButton, copyButton, setAttributes]);
50
51 useEffect(() => {
52 if (once.current) return;
53 if (copyButtonType || !previousCopyButtonType) return;
54 setAttributes({ copyButtonType: previousCopyButtonType });
55 }, [previousCopyButtonType, copyButtonType, setAttributes]);
56
57 useEffect(() => {
58 if (once.current) return;
59 if (theme || !previousTheme) return;
60 setAttributes({ theme: previousTheme as Theme });
61 }, [previousTheme, theme, setAttributes]);
62
63 useEffect(() => {
64 if (once.current) return;
65 if (fontSize || !previousFontSize) return;
66 setAttributes({ fontSize: previousFontSize });
67 }, [previousFontSize, fontSize, setAttributes]);
68
69 useEffect(() => {
70 if (once.current) return;
71 if (fontFamily || fontFamily === '' || previousFontFamily === undefined)
72 return;
73 setAttributes({ fontFamily: previousFontFamily });
74 }, [previousFontFamily, fontFamily, setAttributes]);
75
76 useEffect(() => {
77 if (once.current) return;
78 if (lineHeight || !previousLineHeight) return;
79 setAttributes({ lineHeight: previousLineHeight });
80 }, [previousLineHeight, lineHeight, setAttributes]);
81
82 useEffect(() => {
83 if (once.current) return;
84 if (headerType || !previousHeaderType) return;
85 setAttributes({ headerType: previousHeaderType });
86 }, [previousHeaderType, headerType, setAttributes]);
87
88 useEffect(() => {
89 if (once.current) return;
90 if (footerType !== undefined || previousFooterType === undefined)
91 return;
92 setAttributes({ footerType: previousFooterType });
93 }, [previousFooterType, footerType, setAttributes]);
94
95 useEffect(() => {
96 if (once.current) return;
97 if (clampFonts !== undefined || previousClampFonts === undefined)
98 return;
99 setAttributes({ clampFonts: previousClampFonts });
100 }, [previousClampFonts, clampFonts, setAttributes]);
101
102 useEffect(() => {
103 if (once.current) return;
104 if (
105 disablePadding !== undefined ||
106 previousDisablePadding === undefined
107 )
108 return;
109 setAttributes({ disablePadding: previousDisablePadding });
110 }, [previousDisablePadding, disablePadding, setAttributes]);
111
112 useEffect(() => {
113 if (once.current) return;
114 if (lineNumbers !== undefined || previousLineNumbers === undefined)
115 return;
116 setAttributes({ lineNumbers: previousLineNumbers });
117 }, [previousLineNumbers, lineNumbers, setAttributes]);
118
119 useEffect(() => {
120 if (once.current) return;
121 if (tabSize !== undefined || previousTabSize === undefined) return;
122 setAttributes({ tabSize: previousTabSize });
123 }, [previousTabSize, tabSize, setAttributes]);
124
125 useEffect(() => {
126 if (once.current) return;
127 if (useTabs !== undefined || previousUseTabs === undefined) return;
128 setAttributes({ useTabs: previousUseTabs });
129 }, [previousUseTabs, useTabs, setAttributes]);
130
131 useEffect(() => {
132 if (once.current) return;
133 if (
134 highlightingHover !== undefined ||
135 previousHighlightingHover === undefined
136 )
137 return;
138 setAttributes({ highlightingHover: previousHighlightingHover });
139 }, [previousHighlightingHover, highlightingHover, setAttributes]);
140
141 useEffect(() => {
142 requestAnimationFrame(() => {
143 once.current = true;
144 });
145 }, [ready]);
146 };
147