Skip to content

Commit a64de9d

Browse files
committed
Fixed a linting issue; improved dev.tsx
1 parent 5e82d6f commit a64de9d

2 files changed

Lines changed: 56 additions & 15 deletions

File tree

src/dev.tsx

Lines changed: 54 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,17 @@ import animationData from "./animationData.json";
1111
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
1212
ReactDOM.createRoot(document.getElementById("root")!).render(
1313
<React.StrictMode>
14-
<LocalDevelopment />
15-
{/* <LocalDevelopmentComponent /> */}
14+
<div style={{ display: "flex", justifyContent: "center" }}>
15+
<AnimationDebugger />
16+
<ParentChangesDebugger />
17+
</div>
1618
</React.StrictMode>
1719
);
1820

1921
const lightToDarkSegment: AnimationSegment = [5, 50];
2022
const darkToLightSegment: AnimationSegment = [50, 95];
2123

22-
function LocalDevelopment() {
24+
function AnimationDebugger() {
2325
const [segmentFrom, setSegmentFrom] = React.useState(lightToDarkSegment[0]);
2426
const [segmentTo, setSegmentTo] = React.useState(lightToDarkSegment[1]);
2527
const [segmentsEnabled, setSegmentsEnabled] = React.useState(true);
@@ -44,12 +46,6 @@ function LocalDevelopment() {
4446
// Used to prevent an initial flicker of incorrect state
4547
const [isLottiePlayerMounted, setIsLottiePlayerMounted] = React.useState<boolean>(false);
4648

47-
const onToggleDarkModeState = () => {
48-
setSegmentFrom(!isDarkMode ? lightToDarkSegment[0] : darkToLightSegment[0]);
49-
setSegmentTo(!isDarkMode ? lightToDarkSegment[1] : darkToLightSegment[1]);
50-
setPlayAnimation(true);
51-
};
52-
5349
const onToggleClick = () => {
5450
setSegmentFrom(!isDarkMode ? lightToDarkSegment[0] : darkToLightSegment[0]);
5551
setSegmentTo(!isDarkMode ? lightToDarkSegment[1] : darkToLightSegment[1]);
@@ -83,6 +79,9 @@ function LocalDevelopment() {
8379
flexDirection: "column",
8480
}}
8581
>
82+
<h3 style={{ marginTop: 0, marginBottom: 16, display: "flex", justifyContent: "center" }}>
83+
Animation Debugger
84+
</h3>
8685
<button
8786
onClick={onToggleClick}
8887
aria-hidden="true"
@@ -238,13 +237,11 @@ function LocalDevelopment() {
238237
);
239238
}
240239

241-
function LocalDevelopmentComponent() {
240+
function ParentChangesDebugger() {
242241
const [isDarkMode, setIsDarkMode] = React.useState(true);
242+
243243
return (
244244
<div
245-
// Uncomment to test useEffect handler for external state change
246-
// This will make any click in the page change the isDarkMode state
247-
// onClick={() => setIsDarkMode(!isDarkMode)}
248245
style={{
249246
display: "flex",
250247
justifyContent: "center",
@@ -265,7 +262,50 @@ function LocalDevelopmentComponent() {
265262
flexDirection: "column",
266263
}}
267264
>
268-
<DarkModeToggle isDarkMode={isDarkMode} onChange={setIsDarkMode} />
265+
<h3
266+
style={{
267+
marginTop: 0,
268+
marginBottom: 16,
269+
display: "flex",
270+
justifyContent: "center",
271+
}}
272+
>
273+
Parent Changes Debugger
274+
</h3>
275+
276+
<div
277+
style={{
278+
marginBottom: 5,
279+
display: "flex",
280+
gap: 10,
281+
}}
282+
>
283+
<label htmlFor="parentState">Parent state:</label>
284+
<div id="parentState" style={{ fontStyle: "italic" }}>
285+
{isDarkMode ? "dark" : "light"}
286+
</div>
287+
</div>
288+
<button
289+
style={{
290+
marginBottom: 5,
291+
gap: 10,
292+
borderRadius: "6px",
293+
}}
294+
onClick={() => setIsDarkMode(!isDarkMode)}
295+
>
296+
Change parent state
297+
</button>
298+
<fieldset
299+
style={{
300+
border: "1px solid black",
301+
302+
display: "flex",
303+
justifyContent: "center",
304+
}}
305+
>
306+
<legend>Child Component</legend>
307+
<DarkModeToggle isDarkMode={isDarkMode} onChange={setIsDarkMode} />
308+
</fieldset>
269309
</div>
270310
</div>
271311
);

src/index.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,10 @@ export const DarkModeToggle = React.memo<DarkModeToggle.Props>(
4343
// Used to prevent an initial flicker of incorrect state
4444
const [isLottiePlayerMounted, setIsLottiePlayerMounted] = React.useState<boolean>(false);
4545

46-
//Allow the component to react to external changes to the isDarkMode prop
46+
// Allow the component to react to external changes to the isDarkMode prop
4747
React.useEffect(() => {
4848
onToggleDarkModeState();
49+
// eslint-disable-next-line react-hooks/exhaustive-deps
4950
}, [isDarkMode]);
5051

5152
const onToggleDarkModeState = () => {

0 commit comments

Comments
 (0)