{
render() {
let {
dispatch,
- selectedSequence,
dailyOffsetMs,
weeks,
sequences
diff --git a/src/regimens/editor/__tests__/copy_button_test.tsx b/src/regimens/editor/__tests__/copy_button_test.tsx
index 3db19a175..fcff578af 100644
--- a/src/regimens/editor/__tests__/copy_button_test.tsx
+++ b/src/regimens/editor/__tests__/copy_button_test.tsx
@@ -2,7 +2,6 @@ jest.unmock("../../../api/crud");
import * as React from "react";
import { mount } from "enzyme";
import { CopyButton } from "../copy_button";
-import { TaggedRegimen } from "../../../resources/tagged_resources";
import { fakeRegimen } from "../../../__test_support__/fake_state/resources";
describe("Copy button", () => {
diff --git a/src/regimens/editor/active_editor.tsx b/src/regimens/editor/active_editor.tsx
index 2de847cd0..96c4b1fc4 100644
--- a/src/regimens/editor/active_editor.tsx
+++ b/src/regimens/editor/active_editor.tsx
@@ -2,7 +2,7 @@ import * as React from "react";
import { RegimenNameInput } from "./regimen_name_input";
import { ActiveEditorProps } from "./interfaces";
import { t } from "i18next";
-import { RegimenItem, RegimenItemCalendarRow } from "../interfaces";
+import { RegimenItem } from "../interfaces";
import { TaggedRegimen } from "../../resources/tagged_resources";
import { defensiveClone } from "../../util";
import { overwrite } from "../../api/crud";
diff --git a/src/regimens/editor/interfaces.ts b/src/regimens/editor/interfaces.ts
index cb2879946..5d4a74cee 100644
--- a/src/regimens/editor/interfaces.ts
+++ b/src/regimens/editor/interfaces.ts
@@ -1,9 +1,7 @@
import {
- RegimenItem,
RegimenProps,
CalendarRow,
- RegimenItemCalendarRow,
- Regimen
+ RegimenItemCalendarRow
} from "../interfaces";
import { AuthState } from "../../auth/interfaces";
import { BotState } from "../../devices/interfaces";
@@ -45,4 +43,4 @@ export interface CopyButtnProps {
export interface DeleteButtonProps extends RegimenProps {
baseUrl: string;
-};
+}
diff --git a/src/regimens/list/index.tsx b/src/regimens/list/index.tsx
index b30a603db..873cb728a 100644
--- a/src/regimens/list/index.tsx
+++ b/src/regimens/list/index.tsx
@@ -60,7 +60,7 @@ export class RegimensList extends
}
render() {
- let { dispatch, regimen, regimens } = this.props;
+ let { dispatch, regimens } = this.props;
return (
diff --git a/src/regimens/list/regimen_list_item.tsx b/src/regimens/list/regimen_list_item.tsx
index 94f0899d4..554728a65 100644
--- a/src/regimens/list/regimen_list_item.tsx
+++ b/src/regimens/list/regimen_list_item.tsx
@@ -1,7 +1,7 @@
import * as React from "react";
import { Link } from "react-router";
import { RegimenListItemProps } from "../interfaces";
-import { isMobile, lastUrlChunk, urlFriendly } from "../../util";
+import { lastUrlChunk, urlFriendly } from "../../util";
import { selectRegimen } from "../actions";
import {
TaggedRegimen,
diff --git a/src/resources/__tests__/selectors_test.ts b/src/resources/__tests__/selectors_test.ts
index 6f7aa21dc..58a339187 100644
--- a/src/resources/__tests__/selectors_test.ts
+++ b/src/resources/__tests__/selectors_test.ts
@@ -1,7 +1,6 @@
import { buildResourceIndex } from "../../__test_support__/resource_index_builder";
import { findSlotByToolId } from "../selectors";
import { resourceReducer } from "../reducer";
-import { Actions } from "../../constants";
import { TaggedTool, TaggedToolSlotPointer } from "../tagged_resources";
import { createOK } from "../actions";
import { generateUuid } from "../util";
diff --git a/src/resources/reducer.ts b/src/resources/reducer.ts
index 865bbcac7..c9f2362ed 100644
--- a/src/resources/reducer.ts
+++ b/src/resources/reducer.ts
@@ -1,13 +1,11 @@
import * as _ from "lodash";
-import * as moment from "moment";
import { generateReducer } from "../redux/generate_reducer";
import { RestResources, ResourceIndex } from "./interfaces";
import {
TaggedResource,
ResourceName,
sanityCheck,
- isTaggedResource,
- TaggedSequence
+ isTaggedResource
} from "./tagged_resources";
import { generateUuid, arrayWrap } from "./util";
import { EditResourceParams } from "../api/interfaces";
@@ -32,7 +30,6 @@ import {
farmwareState
} from "../farmware/reducer";
import { Actions } from "../constants";
-import { uuid as rando } from "farmbot/dist";
let consumerReducer = combineReducers({
regimens,
diff --git a/src/resources/selectors.ts b/src/resources/selectors.ts
index 573ec1ced..6c5e241be 100644
--- a/src/resources/selectors.ts
+++ b/src/resources/selectors.ts
@@ -27,8 +27,7 @@ import {
TaggedToolSlotPointer,
TaggedUser
} from "./tagged_resources";
-import { CowardlyDictionary, betterCompact, sortResourcesById, betterMerge } from "../util";
-import { ToolSlotPointer } from "../interfaces";
+import { CowardlyDictionary, betterCompact, sortResourcesById } from "../util";
type StringMap = CowardlyDictionary;
export let findId = (index: ResourceIndex, kind: ResourceName, id: number) => {
diff --git a/src/resources/util.ts b/src/resources/util.ts
index 6cd7df7ae..c517189c4 100644
--- a/src/resources/util.ts
+++ b/src/resources/util.ts
@@ -4,7 +4,7 @@ import { Dictionary } from "farmbot/dist";
import { betterCompact } from "../util";
import * as _ from "lodash";
-var count = 0;
+let count = 0;
export function generateUuid(id: number | undefined, kind: ResourceName) {
return `${joinKindAndId(kind, id)}.${count++}`
}
diff --git a/src/sequences/inputs/__tests__/input_default_test.tsx b/src/sequences/inputs/__tests__/input_default_test.tsx
index d8622788d..c8a7bd68b 100644
--- a/src/sequences/inputs/__tests__/input_default_test.tsx
+++ b/src/sequences/inputs/__tests__/input_default_test.tsx
@@ -4,14 +4,11 @@ import { InputDefault } from "../input_default";
import { mount } from "enzyme";
import { TaggedSequence } from "../../../resources/tagged_resources";
import { MoveAbsolute } from "farmbot/dist";
-import { updateStep } from "../../step_tiles/index";
-import { fakeState } from "../../../__test_support__/fake_state";
import { Wrapper } from "../../../__test_support__/wrapper";
describe("", () => {
it("updates the step", () => {
let dispatcher = jest.fn();
- let state = fakeState();
let step: MoveAbsolute = {
"kind": "move_absolute",
"args": {
@@ -57,7 +54,6 @@ describe("", () => {
dispatch={dispatcher}
sequence={tr} />
);
- let x: jest.Mock<{}> = (updateStep as any).mock;
let input = c.find("input").first();
input.simulate("change");
input.simulate("blur");
diff --git a/src/sequences/inputs/step_input_box.tsx b/src/sequences/inputs/step_input_box.tsx
index 1cffc6b04..725f8935b 100644
--- a/src/sequences/inputs/step_input_box.tsx
+++ b/src/sequences/inputs/step_input_box.tsx
@@ -3,10 +3,6 @@ import { InputUnknown } from "./input_unknown";
import { InputDefault } from "./input_default";
import { StepInputProps } from "../interfaces";
-type ArgType = "speed" | "pin_number" | "pin_value" | "pin_mode" | "operator"
- | "x" | "y" | "z" | "stub" | "variable" | "label" | "milliseconds" | "message"
- | "lhs" | "op" | "rhs" | "sequence_id" | "location";
-
export function StepInputBox(props: StepInputProps) {
switch (props.field) {
case "label": case "lhs": case "message": case "milliseconds": case "op":
diff --git a/src/sequences/sequence_editor_middle_active.tsx b/src/sequences/sequence_editor_middle_active.tsx
index 41e402176..a74b9a161 100644
--- a/src/sequences/sequence_editor_middle_active.tsx
+++ b/src/sequences/sequence_editor_middle_active.tsx
@@ -6,7 +6,7 @@ import { editCurrentSequence } from "./actions";
import { renderCeleryNode, splice, move } from "./step_tiles/index";
import { ColorPicker } from "../ui";
import { t } from "i18next";
-import { BlurableInput, Row, Col, SaveBtn, ToolTip } from "../ui";
+import { BlurableInput, Row, Col, SaveBtn } from "../ui";
import { DropArea } from "../draggable/drop_area";
import { stepGet } from "../draggable/actions";
import { pushStep } from "./actions";
@@ -15,7 +15,6 @@ import { copySequence } from "./actions";
import { TaggedSequence } from "../resources/tagged_resources";
import { save, edit, destroy } from "../api/crud";
import { GetState } from "../redux/interfaces";
-import { ToolTips } from "../constants";
import { get } from "lodash";
import { TestButton } from "./test_button";
import { warning } from "farmbot-toastr";
diff --git a/src/sequences/sequence_editor_middle_inactive.tsx b/src/sequences/sequence_editor_middle_inactive.tsx
index ab1938eaf..30f8f6377 100644
--- a/src/sequences/sequence_editor_middle_inactive.tsx
+++ b/src/sequences/sequence_editor_middle_inactive.tsx
@@ -1,5 +1,4 @@
import * as React from "react";
-import { Col } from "../ui/index";
import { t } from "i18next";
/** The bottom half of the Sequence editor panel (when no Sequence is selected). */
diff --git a/src/sequences/sequences_list.tsx b/src/sequences/sequences_list.tsx
index 74a2aacd3..0056e0a3c 100644
--- a/src/sequences/sequences_list.tsx
+++ b/src/sequences/sequences_list.tsx
@@ -1,12 +1,10 @@
import * as React from "react";
import { Link } from "react-router";
-import * as _ from "lodash";
import { t } from "i18next";
-import { history, push } from "../history";
+import { push } from "../history";
import { selectSequence } from "./actions";
import { SequencesListProps, SequencesListState } from "./interfaces";
import {
- isMobile,
sortResourcesById,
urlFriendly,
lastUrlChunk
diff --git a/src/sequences/step_buttons/__tests__/index_test.tsx b/src/sequences/step_buttons/__tests__/index_test.tsx
index 18fdd5902..44f72abd1 100644
--- a/src/sequences/step_buttons/__tests__/index_test.tsx
+++ b/src/sequences/step_buttons/__tests__/index_test.tsx
@@ -1,7 +1,7 @@
import * as React from "react";
import { StepButtonParams } from "../../interfaces";
import { StepButton } from "../index";
-import { mount, shallow } from "enzyme";
+import { shallow } from "enzyme";
import { fakeSequence } from "../../../__test_support__/fake_state/resources";
import { ReduxAction } from "../../../redux/interfaces";
import { EditResourceParams } from "../../../api/interfaces";
diff --git a/src/sequences/step_tiles/index.tsx b/src/sequences/step_tiles/index.tsx
index 2550ad475..19683eab3 100644
--- a/src/sequences/step_tiles/index.tsx
+++ b/src/sequences/step_tiles/index.tsx
@@ -31,7 +31,6 @@ export function move({ step, sequence, to, from }: MoveParams) {
let next = defensiveClone(sequence);
let seq = next.body;
seq.body = seq.body || [];
- let both = [from, to];
// WEIRD EDGE CASE: TODO:
// Works when from > to but not the other way around.
// Wish I could use one function for both cases, but don't have
diff --git a/src/sequences/step_tiles/step_title_bar.tsx b/src/sequences/step_tiles/step_title_bar.tsx
index fac529343..c223287e0 100644
--- a/src/sequences/step_tiles/step_title_bar.tsx
+++ b/src/sequences/step_tiles/step_title_bar.tsx
@@ -1,6 +1,5 @@
import * as React from "react";
-import { SequenceBodyItem as Step, Dictionary } from "farmbot";
-import { addComment } from "../actions";
+import { SequenceBodyItem as Step } from "farmbot";
import { t } from "i18next";
import { CowardlyDictionary } from "../../util";
import { StepTitleBarProps } from "../interfaces";
diff --git a/src/sequences/step_tiles/tile_execute.tsx b/src/sequences/step_tiles/tile_execute.tsx
index a3d453547..eb156ae41 100644
--- a/src/sequences/step_tiles/tile_execute.tsx
+++ b/src/sequences/step_tiles/tile_execute.tsx
@@ -53,9 +53,9 @@ export class RefactoredExecuteBlock extends React.Component
.map(function (x) {
let { id, name } = x.body;
if (_.isNumber(id) && (id !== p.currentStep.args.sequence_id)) {
- output.push({ label: name, value: id })
+ output.push({ label: name, value: id });
}
- })
+ });
return output;
}
@@ -71,7 +71,7 @@ export class RefactoredExecuteBlock extends React.Component
let { sequence_id } = p.currentStep.args;
if (sequence_id) {
let s = findSequenceById(p.resources, sequence_id);
- return { label: s.body.name, value: (s.body.id as number) }
+ return { label: s.body.name, value: (s.body.id as number) };
} else {
return undefined;
}
diff --git a/src/sequences/step_tiles/tile_execute_script.tsx b/src/sequences/step_tiles/tile_execute_script.tsx
index cc3b4ff85..ce7408014 100644
--- a/src/sequences/step_tiles/tile_execute_script.tsx
+++ b/src/sequences/step_tiles/tile_execute_script.tsx
@@ -1,10 +1,10 @@
import * as React from "react";
import { StepParams } from "../interfaces";
import { StepTitleBar } from "./step_title_bar";
-import { Help } from "../../ui";
import { splice, remove } from "./index";
import { t } from "i18next";
import { ToolTips } from "../../constants";
+import { StepIconGroup } from "../step_icon_group";
export function TileExecuteScript({ dispatch, currentStep, index, currentSequence }: StepParams) {
if (currentStep.kind === "execute_script") {
@@ -17,16 +17,14 @@ export function TileExecuteScript({ dispatch, currentStep, index, currentSequenc
dispatch={dispatch}
step={currentStep}
sequence={currentSequence} />
-
- dispatch(splice({
+ dispatch(splice({
step: currentStep,
index,
sequence: currentSequence
- }))} />
- remove({ dispatch, index, sequence: currentSequence })} />
-
+ }))}
+ onTrash={() => remove({ dispatch, index, sequence: currentSequence })}
+ helpText={t(ToolTips.EXECUTE_SCRIPT)} />
diff --git a/src/sequences/step_tiles/tile_find_home.tsx b/src/sequences/step_tiles/tile_find_home.tsx
index 4c9cc6c0e..50d3e3976 100644
--- a/src/sequences/step_tiles/tile_find_home.tsx
+++ b/src/sequences/step_tiles/tile_find_home.tsx
@@ -2,15 +2,14 @@ import * as React from "react";
import { t } from "i18next";
import { splice, remove } from "./index";
import { StepTitleBar } from "./step_title_bar";
-import { Help } from "../../ui";
import { FindHome, ALLOWED_AXIS } from "farmbot";
-import * as _ from "lodash";
import { StepParams } from "../interfaces";
import { TaggedSequence } from "../../resources/tagged_resources";
import { ResourceIndex } from "../../resources/interfaces";
-import { edit, overwrite } from "../../api/crud";
+import { overwrite } from "../../api/crud";
import { defensiveClone } from "../../util";
import { ToolTips } from "../../constants";
+import { StepIconGroup } from "../step_icon_group";
export function TileFindHome(props: StepParams) {
if (props.currentStep.kind === "find_home") {
@@ -60,16 +59,14 @@ class InnerFindHome extends React.Component {
dispatch={dispatch}
step={currentStep}
sequence={currentSequence} />
-
- dispatch(splice({
+ remove({ dispatch, index, sequence: currentSequence })}
+ onClone={() => dispatch(splice({
step: currentStep,
sequence: currentSequence,
index
- }))} />
- remove({ dispatch, index, sequence: currentSequence })} />
-
+ }))}
+ helpText={t(ToolTips.FIND_HOME)} />
@@ -81,8 +78,8 @@ class InnerFindHome extends React.Component {
@@ -64,4 +62,4 @@ export function TileReadPin({ dispatch, currentStep, index, currentSequence }: S
);
-};
+}
diff --git a/src/sequences/step_tiles/tile_send_message.tsx b/src/sequences/step_tiles/tile_send_message.tsx
index 270a17af7..042e3267a 100644
--- a/src/sequences/step_tiles/tile_send_message.tsx
+++ b/src/sequences/step_tiles/tile_send_message.tsx
@@ -1,7 +1,7 @@
import * as React from "react";
import { splice, remove } from "./index";
import { StepTitleBar } from "./step_title_bar";
-import { Help, DropDownItem } from "../../ui";
+import { DropDownItem } from "../../ui";
import { t } from "i18next";
import { StepInputBox } from "../inputs/step_input_box";
import { SendMessage, ALLOWED_CHANNEL_NAMES } from "farmbot";
@@ -17,6 +17,7 @@ import {
EACH_CHANNEL,
channel
} from "./tile_send_message_support";
+import { StepIconGroup } from "../step_icon_group";
type ChannelName = ALLOWED_CHANNEL_NAMES;
export function TileSendMessage(props: StepParams) {
if (props.currentStep.kind === "send_message") {
@@ -41,16 +42,16 @@ interface SendMessageParams {
class RefactoredSendMessage extends React.Component {
get args() { return this.props.currentStep.args; }
- get message() { return this.args.message };
- get message_type() { return this.args.message_type }
+ get message() { return this.args.message; }
+ get message_type() { return this.args.message_type; }
get step() { return this.props.currentStep; }
- get dispatch() { return this.props.dispatch }
+ get dispatch() { return this.props.dispatch; }
get sequence() { return this.props.currentSequence; }
- get index() { return this.props.index }
+ get index() { return this.props.index; }
get currentSelection() {
return { label: _.capitalize(this.message_type), value: this.message_type };
- };
- get channels() { return (this.step.body || []).map(x => x.args.channel_name) }
+ }
+ get channels() { return (this.step.body || []).map(x => x.args.channel_name); }
hasChannel = (name: ChannelName) => {
return this.channels.includes(name);
}
@@ -80,7 +81,7 @@ class RefactoredSendMessage extends React.Component {
index: this.index,
executor: (step: SendMessage) => {
if (_.isString(x.value)) {
- step.args.message_type = x.value
+ step.args.message_type = x.value;
} else {
throw new Error("Strings only in send_message.");
}
@@ -100,16 +101,14 @@ class RefactoredSendMessage extends React.Component {
dispatch={dispatch}
step={currentStep}
sequence={currentSequence} />
-
- dispatch(splice({
+ dispatch(splice({
step: currentStep,
sequence: currentSequence,
index
- }))} />
- remove({ dispatch, index, sequence: currentSequence })} />
-
+ }))}
+ onTrash={() => remove({ dispatch, index, sequence: currentSequence })}
+ helpText={t(ToolTips.SEND_MESSAGE)} />
diff --git a/src/sequences/step_tiles/tile_take_photo.tsx b/src/sequences/step_tiles/tile_take_photo.tsx
index 4ff769354..74ed36ba9 100644
--- a/src/sequences/step_tiles/tile_take_photo.tsx
+++ b/src/sequences/step_tiles/tile_take_photo.tsx
@@ -1,11 +1,11 @@
import * as React from "react";
import { StepParams } from "../interfaces";
import { StepTitleBar } from "./step_title_bar";
-import { Help } from "../../ui";
import { splice, remove } from "./index";
import { t } from "i18next";
import { Link } from "react-router";
import { ToolTips } from "../../constants";
+import { StepIconGroup } from "../step_icon_group";
export function TileTakePhoto({ dispatch, currentStep, index, currentSequence }: StepParams) {
return (
@@ -17,16 +17,14 @@ export function TileTakePhoto({ dispatch, currentStep, index, currentSequence }:
dispatch={dispatch}
step={currentStep}
sequence={currentSequence} />
-
- dispatch(splice({
+ dispatch(splice({
step: currentStep,
index,
sequence: currentSequence
- }))} />
- remove({ dispatch, index, sequence: currentSequence })} />
-
+ }))}
+ onTrash={() => remove({ dispatch, index, sequence: currentSequence })}
+ helpText={t(ToolTips.TAKE_PHOTO)} />
diff --git a/src/sequences/step_tiles/tile_wait.tsx b/src/sequences/step_tiles/tile_wait.tsx
index d6de3bd4e..58ee6187e 100644
--- a/src/sequences/step_tiles/tile_wait.tsx
+++ b/src/sequences/step_tiles/tile_wait.tsx
@@ -1,11 +1,11 @@
import * as React from "react";
import { StepTitleBar } from "./step_title_bar";
-import { Help } from "../../ui";
import { splice, remove } from "./index";
import { t } from "i18next";
import { StepInputBox } from "../inputs/step_input_box";
import { StepParams } from "../interfaces";
import { ToolTips } from "../../constants";
+import { StepIconGroup } from "../step_icon_group";
export function TileWait({ dispatch, currentStep, index, currentSequence }: StepParams) {
return (
@@ -17,16 +17,14 @@ export function TileWait({ dispatch, currentStep, index, currentSequence }: Step
dispatch={dispatch}
step={currentStep}
sequence={currentSequence} />
-
- dispatch(splice({
+ dispatch(splice({
step: currentStep,
sequence: currentSequence,
index
- }))} />
- remove({ dispatch, index, sequence: currentSequence })} />
-
+ }))}
+ onTrash={() => remove({ dispatch, index, sequence: currentSequence })}
+ helpText={t(ToolTips.WAIT)} />
diff --git a/src/sequences/step_tiles/tile_write_pin.tsx b/src/sequences/step_tiles/tile_write_pin.tsx
index b6733876c..c0f1f3573 100644
--- a/src/sequences/step_tiles/tile_write_pin.tsx
+++ b/src/sequences/step_tiles/tile_write_pin.tsx
@@ -1,11 +1,11 @@
import * as React from "react";
import { StepTitleBar } from "./step_title_bar";
-import { Help } from "../../ui";
import { splice, remove } from "./index";
import { t } from "i18next";
import { StepInputBox } from "../inputs/step_input_box";
import { StepParams } from "../interfaces";
import { ToolTips } from "../../constants";
+import { StepIconGroup } from "../step_icon_group";
export function TileWritePin({ dispatch, currentStep, index, currentSequence }: StepParams) {
return (
@@ -17,16 +17,14 @@ export function TileWritePin({ dispatch, currentStep, index, currentSequence }:
dispatch={dispatch}
step={currentStep}
sequence={currentSequence} />
-
- dispatch(splice({
+ dispatch(splice({
step: currentStep,
index,
sequence: currentSequence
- }))} />
- remove({ dispatch, index, sequence: currentSequence })} />
-
+ }))}
+ onTrash={() => remove({ dispatch, index, sequence: currentSequence })}
+ helpText={t(ToolTips.WRITE_PIN)} />
diff --git a/src/session.ts b/src/session.ts
index f0d6cc28a..8f2efc37b 100644
--- a/src/session.ts
+++ b/src/session.ts
@@ -21,7 +21,7 @@ export namespace Session {
} catch (error) {
clear();
return undefined;
- };
+ }
}
/** Clear localstorage and sessionstorage. */
diff --git a/src/tos_update/__tests__/index_test.tsx b/src/tos_update/__tests__/index_test.tsx
index e66c6b626..dce56427a 100644
--- a/src/tos_update/__tests__/index_test.tsx
+++ b/src/tos_update/__tests__/index_test.tsx
@@ -12,7 +12,7 @@ jest.mock("../../i18n", () => {
import * as React from "react";
import { Wow } from "../index";
-import { mount, shallow } from "enzyme";
+import { shallow } from "enzyme";
describe("", () => {
it("toggles server options", () => {
let x = shallow();
diff --git a/src/ui/__tests__/back_arrow_test.ts b/src/ui/__tests__/back_arrow_test.ts
index dbfddf2ab..3db997c11 100644
--- a/src/ui/__tests__/back_arrow_test.ts
+++ b/src/ui/__tests__/back_arrow_test.ts
@@ -1,4 +1,3 @@
-import * as React from "react";
import { BackArrow } from "../back_arrow";
import { mount } from "enzyme";
diff --git a/src/ui/__tests__/help_test.ts b/src/ui/__tests__/help_test.ts
index bf56cc143..2e015ec82 100644
--- a/src/ui/__tests__/help_test.ts
+++ b/src/ui/__tests__/help_test.ts
@@ -1,4 +1,3 @@
-import * as React from "react";
import { Help } from "../help";
import { mount } from "enzyme";
diff --git a/src/ui/__tests__/markdown_test.ts b/src/ui/__tests__/markdown_test.ts
index 52b220e42..d1535a58a 100644
--- a/src/ui/__tests__/markdown_test.ts
+++ b/src/ui/__tests__/markdown_test.ts
@@ -1,4 +1,3 @@
-import * as React from "react";
import { Markdown } from "../markdown";
import { mount } from "enzyme";
diff --git a/src/ui/__tests__/page_test.ts b/src/ui/__tests__/page_test.ts
index 1f67a0080..c3071515f 100644
--- a/src/ui/__tests__/page_test.ts
+++ b/src/ui/__tests__/page_test.ts
@@ -1,4 +1,3 @@
-import * as React from "react";
import { Page } from "../page";
import { mount } from "enzyme";
diff --git a/src/ui/__tests__/saucer_test.ts b/src/ui/__tests__/saucer_test.ts
index ee14b9a09..6ec0ff812 100644
--- a/src/ui/__tests__/saucer_test.ts
+++ b/src/ui/__tests__/saucer_test.ts
@@ -1,4 +1,3 @@
-import * as React from "react";
import { Saucer } from "../saucer";
import { mount } from "enzyme";
diff --git a/src/ui/__tests__/tooltip_test.ts b/src/ui/__tests__/tooltip_test.ts
index a79ee3894..a8875cc27 100644
--- a/src/ui/__tests__/tooltip_test.ts
+++ b/src/ui/__tests__/tooltip_test.ts
@@ -1,4 +1,3 @@
-import * as React from "react";
import { ToolTip } from "../tooltip";
import { mount } from "enzyme";
diff --git a/src/ui/__tests__/widget_footer_test.ts b/src/ui/__tests__/widget_footer_test.ts
index c0456bfbe..683ed6487 100644
--- a/src/ui/__tests__/widget_footer_test.ts
+++ b/src/ui/__tests__/widget_footer_test.ts
@@ -1,4 +1,3 @@
-import * as React from "react";
import { WidgetFooter } from "../widget_footer";
import { mount } from "enzyme";
diff --git a/src/ui/__tests__/widget_test.ts b/src/ui/__tests__/widget_test.ts
index 4b014eed8..0fef1685e 100644
--- a/src/ui/__tests__/widget_test.ts
+++ b/src/ui/__tests__/widget_test.ts
@@ -1,4 +1,3 @@
-import * as React from "react";
import { Widget } from "../widget";
import { mount } from "enzyme";
diff --git a/src/ui/blurable_input.tsx b/src/ui/blurable_input.tsx
index 5562d709f..9c8d732a8 100644
--- a/src/ui/blurable_input.tsx
+++ b/src/ui/blurable_input.tsx
@@ -1,5 +1,4 @@
import * as React from "react";
-import * as _ from "lodash";
interface BIProps {
value: string | number;
diff --git a/src/ui/fallback_img.tsx b/src/ui/fallback_img.tsx
index c92d21580..0887040f7 100644
--- a/src/ui/fallback_img.tsx
+++ b/src/ui/fallback_img.tsx
@@ -1,7 +1,6 @@
import * as React from "react";
import { defensiveClone } from "../util";
import { t } from "i18next";
-import { Col } from "./index";
type ImgTag = React.HTMLProps;
diff --git a/src/ui/fb_select.tsx b/src/ui/fb_select.tsx
index 1d997da89..44d45c632 100644
--- a/src/ui/fb_select.tsx
+++ b/src/ui/fb_select.tsx
@@ -1,5 +1,4 @@
import * as React from "react";
-import * as _ from "lodash";
type OptionComponent =
| React.ComponentClass
diff --git a/src/ui/filter_search.tsx b/src/ui/filter_search.tsx
index 0559becde..3a8da1579 100644
--- a/src/ui/filter_search.tsx
+++ b/src/ui/filter_search.tsx
@@ -70,7 +70,7 @@ export class FilterSearch extends React.Component> {
}
private subMenu = (params: ISelectItemRendererProps) => {
- let { handleClick, item, index } = params;
+ let { handleClick, item } = params;
return (