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

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