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

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