Skip to content

Commit 21d82ce

Browse files
authored
Remove unused React imports (#687)
1 parent be35775 commit 21d82ce

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

55 files changed

+123
-120
lines changed

eslint.config.js

+22
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ export default [
1515
},
1616
},
1717
},
18+
plugins.react.configs.flat["jsx-runtime"],
1819
plugins.promise.configs["flat/recommended"],
1920
{
2021
plugins: {
@@ -25,4 +26,25 @@ export default [
2526
"simple-import-sort/exports": "error",
2627
},
2728
},
29+
{
30+
rules: {
31+
"no-restricted-imports": [
32+
"error",
33+
{
34+
paths: [
35+
{
36+
name: "react",
37+
importNames: ["default"],
38+
message: "Please use named imports instead.",
39+
},
40+
{
41+
name: "react-dom/client",
42+
importNames: ["default"],
43+
message: "Please use named imports instead.",
44+
},
45+
],
46+
},
47+
],
48+
},
49+
},
2850
];

src/main/frontend/common/RestClient.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import {
22
Result,
33
StageInfo,
4-
} from "../pipeline-graph-view/pipeline-graph/main/index.ts";
5-
import { ResourceBundle } from "./i18n/index.ts";
4+
} from "../pipeline-graph-view/pipeline-graph/main/PipelineGraphModel.tsx";
5+
import { ResourceBundle } from "./i18n/messages.ts";
66

77
export interface RunStatus {
88
stages: StageInfo[];
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import React from "react";
2-
import ReactDOM from "react-dom";
1+
import { ReactNode } from "react";
2+
import { createPortal } from "react-dom";
33

44
interface DropdownPortalProps {
5-
children: React.ReactNode;
5+
children: ReactNode;
66
}
77

88
export default function DropdownPortal({ children }: DropdownPortalProps) {
@@ -13,5 +13,5 @@ export default function DropdownPortal({ children }: DropdownPortalProps) {
1313
return null;
1414
}
1515

16-
return ReactDOM.createPortal(children, container);
16+
return createPortal(children, container);
1717
}

src/main/frontend/common/components/dropdown.tsx

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import Tippy, { TippyProps } from "@tippyjs/react";
2-
import React, { useState } from "react";
2+
import { isValidElement, ReactElement, ReactNode, useState } from "react";
33

44
import Tooltip from "./tooltip.tsx";
55

@@ -33,7 +33,7 @@ export default function Dropdown({
3333
);
3434
}
3535

36-
if (React.isValidElement(item)) {
36+
if (isValidElement(item)) {
3737
return (
3838
<div key={index} className="jenkins-dropdown__custom-item">
3939
{item}
@@ -89,15 +89,15 @@ export const DefaultDropdownProps: TippyProps = {
8989
};
9090

9191
interface DropdownProps {
92-
items: (DropdownItem | React.ReactElement | "separator")[];
92+
items: (DropdownItem | ReactElement | "separator")[];
9393
disabled?: boolean;
9494
className?: string;
9595
}
9696

9797
interface DropdownItem {
9898
text: string;
9999
href?: string;
100-
icon: React.ReactNode;
100+
icon: ReactNode;
101101
target?: string;
102102
download?: string;
103103
}

src/main/frontend/common/components/filter.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import "./filter.scss";
22

33
import Tippy from "@tippyjs/react";
4-
import React, { useState } from "react";
4+
import { useState } from "react";
55

66
import { useFilter } from "../../pipeline-console-view/pipeline-console/main/providers/filter-provider.tsx";
7-
import { Result } from "../../pipeline-graph-view/pipeline-graph/main/index.ts";
7+
import { Result } from "../../pipeline-graph-view/pipeline-graph/main/PipelineGraphModel.tsx";
88
import { classNames } from "../utils/classnames.ts";
99
import { DefaultDropdownProps } from "./dropdown.tsx";
1010
import StatusIcon from "./status-icon.tsx";

src/main/frontend/common/components/status-icon.tsx

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import "./status-icon.scss";
22

3-
import React from "react";
3+
import { ReactNode } from "react";
44

5-
import { Result } from "../../pipeline-graph-view/pipeline-graph/main/index.ts";
5+
import { Result } from "../../pipeline-graph-view/pipeline-graph/main/PipelineGraphModel.tsx";
66

77
/**
88
* Visual representation of a job or build status
@@ -176,7 +176,7 @@ function Group({
176176
}: {
177177
currentStatus: Result;
178178
status: Result;
179-
children: React.ReactNode;
179+
children: ReactNode;
180180
}) {
181181
return (
182182
<g

src/main/frontend/common/components/tooltip.tsx

-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import Tippy, { TippyProps } from "@tippyjs/react";
2-
import React from "react";
32

43
/**
54
* A customized (and customizable) implementation of Tippy tooltips

src/main/frontend/common/i18n/i18n-provider.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, {
1+
import {
22
Context,
33
createContext,
44
FunctionComponent,

src/main/frontend/common/i18n/index.ts

-3
This file was deleted.

src/main/frontend/common/utils/run-estimator.spec.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import {
22
Result,
33
StageInfo,
4-
} from "../../pipeline-graph-view/pipeline-graph/main/index.ts";
4+
} from "../../pipeline-graph-view/pipeline-graph/main/PipelineGraphModel.tsx";
55
import RunEstimator from "./run-estimator.ts";
66

77
const previous: StageInfo[] = [

src/main/frontend/common/utils/run-estimator.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import {
22
Result,
33
StageInfo,
4-
} from "../../pipeline-graph-view/pipeline-graph/main/index.ts";
4+
} from "../../pipeline-graph-view/pipeline-graph/main/PipelineGraphModel.tsx";
55

66
export default class RunEstimator {
77
private stagesLookup: Map<String, StageInfo>;

src/main/frontend/common/utils/stage-merge.spec.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import {
22
Result,
33
StageInfo,
4-
} from "../../pipeline-graph-view/pipeline-graph/main/index.ts";
4+
} from "../../pipeline-graph-view/pipeline-graph/main/PipelineGraphModel.tsx";
55
import { mergeStageInfos } from "./stage-merge.ts";
66

77
describe("mergeStageInfos", () => {

src/main/frontend/common/utils/stage-merge.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { StageInfo } from "../../pipeline-graph-view/pipeline-graph/main/index.ts";
1+
import { StageInfo } from "../../pipeline-graph-view/pipeline-graph/main/PipelineGraphModel.tsx";
22
import RunEstimator from "./run-estimator.ts";
33

44
export const mergeStageInfos = (

src/main/frontend/common/utils/timings.spec.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
/** * @vitest-environment jsdom */
22

33
import { render } from "@testing-library/react";
4-
import React from "react";
54
import { vi } from "vitest";
65

7-
import { I18NContext, Messages } from "../i18n/index.ts";
6+
import { I18NContext } from "../i18n/i18n-provider.tsx";
7+
import { Messages } from "../i18n/messages.ts";
88
import { Paused, Started, Total } from "./timings.tsx";
99

1010
describe("Timings", () => {

src/main/frontend/common/utils/timings.tsx

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
import React, { useContext } from "react";
1+
import { useContext } from "react";
22

3-
import { I18NContext, Messages } from "../i18n/index.ts";
3+
import { I18NContext } from "../i18n/i18n-provider";
4+
import { Messages } from "../i18n/messages";
45

56
const ONE_SECOND_MS: number = 1000;
67
const ONE_MINUTE_MS: number = 60 * ONE_SECOND_MS;

src/main/frontend/multi-pipeline-graph-view/app.tsx

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
import "./app.scss";
22
import "./multi-pipeline-graph/styles/main.scss";
33

4-
import React, { FunctionComponent } from "react";
4+
import { FunctionComponent } from "react";
55

6-
import { I18NProvider, ResourceBundleName } from "../common/i18n/index.ts";
7-
import { MultiPipelineGraph } from "./multi-pipeline-graph/main/index.ts";
6+
import { I18NProvider } from "../common/i18n/i18n-provider.tsx";
7+
import { ResourceBundleName } from "../common/i18n/messages.ts";
8+
import { MultiPipelineGraph } from "./multi-pipeline-graph/main/MultiPipelineGraph.tsx";
89

910
const App: FunctionComponent = () => {
1011
const locale =
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
1-
import React from "react";
2-
import ReactDOMClient from "react-dom/client";
1+
import { createRoot } from "react-dom/client";
32

43
import App from "./app.tsx";
54

65
const rootElement = document.getElementById("multiple-pipeline-root");
76
if (!rootElement) {
87
throw new Error("Failed to find the 'multiple-pipeline-root' element");
98
}
10-
const root = ReactDOMClient.createRoot(rootElement);
9+
const root = createRoot(rootElement);
1110

1211
// Render App
1312
root.render(<App />);

src/main/frontend/multi-pipeline-graph-view/multi-pipeline-graph/main/MultiPipelineGraph.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import React, { useContext, useEffect, useState } from "react";
1+
import { useContext, useEffect, useState } from "react";
22

3-
import { I18NContext } from "../../../common/i18n/index.ts";
3+
import { I18NContext } from "../../../common/i18n/i18n-provider.tsx";
44
import { RunInfo } from "./MultiPipelineGraphModel.ts";
55
import SingleRun from "./SingleRun.tsx";
66
import startPollingRunsStatus from "./support/startPollingRunsStatus.ts";

src/main/frontend/multi-pipeline-graph-view/multi-pipeline-graph/main/MultiPipelineGraphModel.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Result } from "../../../pipeline-graph-view/pipeline-graph/main/index.ts";
1+
import { Result } from "../../../pipeline-graph-view/pipeline-graph/main/PipelineGraphModel.tsx";
22

33
export interface RunInfo {
44
id: string;

src/main/frontend/multi-pipeline-graph-view/multi-pipeline-graph/main/SingleRun.tsx

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
import "./single-run.scss";
22

3-
import React from "react";
4-
53
import StatusIcon from "../../../common/components/status-icon.tsx";
64
import useRunPoller from "../../../common/tree-api.ts";
75
import { time, Total } from "../../../common/utils/timings.tsx";
8-
import { LayoutInfo } from "../../../pipeline-graph-view/pipeline-graph/main/index.ts";
96
import { PipelineGraph } from "../../../pipeline-graph-view/pipeline-graph/main/PipelineGraph.tsx";
10-
import { defaultLayout } from "../../../pipeline-graph-view/pipeline-graph/main/PipelineGraphModel.tsx";
7+
import {
8+
defaultLayout,
9+
LayoutInfo,
10+
} from "../../../pipeline-graph-view/pipeline-graph/main/PipelineGraphModel.tsx";
1111
import { RunInfo } from "./MultiPipelineGraphModel.ts";
1212

1313
export default function SingleRun({ run, currentJobPath }: SingleRunProps) {

src/main/frontend/multi-pipeline-graph-view/multi-pipeline-graph/main/index.ts

-1
This file was deleted.

src/main/frontend/pipeline-console-view/app.tsx

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
import React, { lazy } from "react";
1+
import { lazy } from "react";
22

3-
import { I18NProvider, ResourceBundleName } from "../common/i18n/index.ts";
3+
import { I18NProvider } from "../common/i18n/i18n-provider.tsx";
4+
import { ResourceBundleName } from "../common/i18n/messages.ts";
45
import { FilterProvider } from "./pipeline-console/main/providers/filter-provider.tsx";
56
import { LayoutPreferencesProvider } from "./pipeline-console/main/providers/user-preference-provider.tsx";
67

Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
1-
import React from "react";
2-
import ReactDOMClient from "react-dom/client";
1+
import { createRoot } from "react-dom/client";
32

43
import App from "./app.tsx";
54

65
const rootElement = document.getElementById("console-pipeline-root");
76
if (!rootElement) throw new Error("Failed to find the root element");
8-
const root = ReactDOMClient.createRoot(rootElement);
7+
const root = createRoot(rootElement);
98

109
// Render App
1110
root.render(<App />);

src/main/frontend/pipeline-console-view/pipeline-console/main/Ansi.tsx

-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
import React from "react";
2-
31
export interface Result {
42
isSelectGraphicRendition?: boolean;
53
escapeCode?: string; // input

src/main/frontend/pipeline-console-view/pipeline-console/main/ConsoleLine.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, { useEffect, useRef } from "react";
1+
import { useEffect, useRef } from "react";
22

33
import { makeReactChildren, tokenizeANSIString } from "./Ansi.tsx";
44

src/main/frontend/pipeline-console-view/pipeline-console/main/ConsoleLogCard.spec.tsx

-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
/** * @vitest-environment jsdom */
22

33
import { render } from "@testing-library/react";
4-
import React from "react";
54
import { vi } from "vitest";
65

76
import ConsoleLogCard, { ConsoleLogCardProps } from "./ConsoleLogCard.tsx";

src/main/frontend/pipeline-console-view/pipeline-console/main/ConsoleLogCard.tsx

+8-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
import "./console-log-card.scss";
22

3-
import React, { Suspense, useEffect } from "react";
3+
import {
4+
lazy,
5+
MouseEvent as ReactMouseEvent,
6+
Suspense,
7+
useEffect,
8+
} from "react";
49

510
import StatusIcon from "../../../common/components/status-icon.tsx";
611
import Tooltip from "../../../common/components/tooltip.tsx";
@@ -12,7 +17,7 @@ import {
1217
StepLogBufferInfo,
1318
} from "./PipelineConsoleModel.tsx";
1419

15-
const ConsoleLogStream = React.lazy(() => import("./ConsoleLogStream.tsx"));
20+
const ConsoleLogStream = lazy(() => import("./ConsoleLogStream.tsx"));
1621

1722
export default function ConsoleLogCard(props: ConsoleLogCardProps) {
1823
useEffect(() => {
@@ -21,7 +26,7 @@ export default function ConsoleLogCard(props: ConsoleLogCardProps) {
2126
}
2227
}, [props.isExpanded]);
2328

24-
const handleToggle = (e: React.MouseEvent<HTMLElement>) => {
29+
const handleToggle = (e: ReactMouseEvent<HTMLElement>) => {
2530
// Only prevent left clicks
2631
if (e.button !== 0 || e.metaKey || e.ctrlKey) {
2732
return;

src/main/frontend/pipeline-console-view/pipeline-console/main/ConsoleLogStream.spec.tsx

-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
/** * @vitest-environment jsdom */
22

33
import { render } from "@testing-library/react";
4-
import React from "react";
54
import { vi } from "vitest";
65

76
import ConsoleLogStream, {

src/main/frontend/pipeline-console-view/pipeline-console/main/ConsoleLogStream.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, { useCallback, useEffect, useRef, useState } from "react";
1+
import { useCallback, useEffect, useRef, useState } from "react";
22
import { Virtuoso, VirtuosoHandle } from "react-virtuoso";
33

44
import { ConsoleLine } from "./ConsoleLine.tsx";

0 commit comments

Comments
 (0)