Skip to content

Commit

Permalink
Move getDefaultFigureForType to locked-figures dir
Browse files Browse the repository at this point in the history
  • Loading branch information
benchristel committed Sep 6, 2024
1 parent 844eb4a commit c332ca2
Show file tree
Hide file tree
Showing 26 changed files with 224 additions and 212 deletions.
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import * as React from "react";

import ColorSelect from "../../widgets/interactive-graph-editor/locked-figures/color-select";
import {getDefaultFigureForType} from "../util";
import {getDefaultFigureForType} from "../../widgets/interactive-graph-editor/locked-figures/util";

import type {LockedFigureColor} from "@khanacademy/perseus";
import type {Meta} from "@storybook/react";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import * as React from "react";

import ColorSwatch from "../../widgets/interactive-graph-editor/locked-figures/color-swatch";
import {getDefaultFigureForType} from "../util";
import {getDefaultFigureForType} from "../../widgets/interactive-graph-editor/locked-figures/util";

import type {Meta} from "@storybook/react";

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import * as React from "react";

import LockedEllipseSettings from "../../widgets/interactive-graph-editor/locked-figures/locked-ellipse-settings";
import {getDefaultFigureForType} from "../util";
import {getDefaultFigureForType} from "../../widgets/interactive-graph-editor/locked-figures/util";

import type {Meta, StoryObj} from "@storybook/react";

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import {StyleSheet} from "aphrodite";
import * as React from "react";

import LockedFiguresSection from "../../widgets/interactive-graph-editor/locked-figures/locked-figures-section";
import {getDefaultFigureForType} from "../util";
import {getDefaultFigureForType} from "../../widgets/interactive-graph-editor/locked-figures/util";

import type {Meta, StoryObj} from "@storybook/react";

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import * as React from "react";

import LockedFunctionSettings from "../../widgets/interactive-graph-editor/locked-figures/locked-function-settings";
import {getDefaultFigureForType} from "../util";
import {getDefaultFigureForType} from "../../widgets/interactive-graph-editor/locked-figures/util";

import type {Meta, StoryObj} from "@storybook/react";

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import * as React from "react";

import LockedLabelSettings from "../../widgets/interactive-graph-editor/locked-figures/locked-label-settings";
import {getDefaultFigureForType} from "../util";
import {getDefaultFigureForType} from "../../widgets/interactive-graph-editor/locked-figures/util";

import type {Meta, StoryObj} from "@storybook/react";

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import * as React from "react";

import LockedLineSettings from "../../widgets/interactive-graph-editor/locked-figures/locked-line-settings";
import {getDefaultFigureForType} from "../util";
import {getDefaultFigureForType} from "../../widgets/interactive-graph-editor/locked-figures/util";

import type {Meta, StoryObj} from "@storybook/react";

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import * as React from "react";

import LockedPointSettings from "../../widgets/interactive-graph-editor/locked-figures/locked-point-settings";
import {getDefaultFigureForType} from "../util";
import {getDefaultFigureForType} from "../../widgets/interactive-graph-editor/locked-figures/util";

import type {Meta, StoryObj} from "@storybook/react";

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import * as React from "react";

import LockedPolygonSettings from "../../widgets/interactive-graph-editor/locked-figures/locked-polygon-settings";
import {getDefaultFigureForType} from "../util";
import {getDefaultFigureForType} from "../../widgets/interactive-graph-editor/locked-figures/util";

import type {Meta, StoryObj} from "@storybook/react";

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import * as React from "react";

import LockedVectorSettings from "../../widgets/interactive-graph-editor/locked-figures/locked-vector-settings";
import {getDefaultFigureForType} from "../util";
import {getDefaultFigureForType} from "../../widgets/interactive-graph-editor/locked-figures/util";

import type {Meta, StoryObj} from "@storybook/react";

Expand Down
102 changes: 0 additions & 102 deletions packages/perseus-editor/src/components/__tests__/util.test.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import {
degreeToRadian,
getDefaultFigureForType,
radianToDegree,
getDefaultGraphStartCoords,
getSinusoidEquation,
Expand All @@ -10,107 +9,6 @@ import {

import type {PerseusGraphType, Range} from "@khanacademy/perseus";

describe("getDefaultFigureForType", () => {
test("should return a point with default values", () => {
const figure = getDefaultFigureForType("point");
expect(figure).toEqual({
type: "point",
coord: [0, 0],
color: "grayH",
filled: true,
});
});

test("should return a line with default values", () => {
const figure = getDefaultFigureForType("line");
expect(figure).toEqual({
type: "line",
kind: "line",
points: [
{
type: "point",
coord: [0, 0],
color: "grayH",
filled: true,
},
{
type: "point",
coord: [2, 2],
color: "grayH",
filled: true,
},
],
color: "grayH",
lineStyle: "solid",
showPoint1: false,
showPoint2: false,
});
});

test("should return a vector with default values", () => {
const figure = getDefaultFigureForType("vector");
expect(figure).toEqual({
type: "vector",
points: [
[0, 0],
[2, 2],
],
color: "grayH",
});
});

test("should return an ellipse with default values", () => {
const figure = getDefaultFigureForType("ellipse");
expect(figure).toEqual({
type: "ellipse",
center: [0, 0],
radius: [1, 1],
angle: 0,
color: "grayH",
fillStyle: "none",
strokeStyle: "solid",
});
});

test("should return a polygon with default values", () => {
const figure = getDefaultFigureForType("polygon");
expect(figure).toEqual({
type: "polygon",
points: [
[0, 2],
[-1, 0],
[1, 0],
],
color: "grayH",
showVertices: false,
fillStyle: "none",
strokeStyle: "solid",
});
});

test("should return a 'function' with default values", () => {
const figure = getDefaultFigureForType("function");
expect(figure).toEqual({
type: "function",
color: "grayH",
strokeStyle: "solid",
equation: "x^2",
directionalAxis: "x",
});
});

test("should return a 'label' with default values", () => {
const figure = getDefaultFigureForType("label");
expect(figure).toEqual({
type: "label",
coord: [0, 0],
text: "",
color: "grayH",
size: "medium",
});
});
});

describe("degreeToRadian", () => {
test.each`
degrees | radians
Expand Down
88 changes: 0 additions & 88 deletions packages/perseus-editor/src/components/util.ts
Original file line number Diff line number Diff line change
Expand Up @@ -66,94 +66,6 @@ export function focusWithChromeStickyFocusBugWorkaround(element: Element) {
element.focus({preventScroll: true});
}

const DEFAULT_COLOR = "grayH";

export function getDefaultFigureForType(type: "point"): LockedPointType;
export function getDefaultFigureForType(type: "line"): LockedLineType;
export function getDefaultFigureForType(type: "vector"): LockedVectorType;
export function getDefaultFigureForType(type: "ellipse"): LockedEllipseType;
export function getDefaultFigureForType(type: "polygon"): LockedPolygonType;
export function getDefaultFigureForType(type: "function"): LockedFunctionType;
export function getDefaultFigureForType(type: "label"): LockedLabelType;
export function getDefaultFigureForType(type: LockedFigureType): LockedFigure;
export function getDefaultFigureForType(type: LockedFigureType): LockedFigure {
switch (type) {
case "point":
return {
type: "point",
coord: [0, 0],
color: DEFAULT_COLOR,
filled: true,
};
case "line":
return {
type: "line",
kind: "line",
points: [
getDefaultFigureForType("point"),
{
...getDefaultFigureForType("point"),
coord: [2, 2],
},
],
color: DEFAULT_COLOR,
lineStyle: "solid",
showPoint1: false,
showPoint2: false,
};
case "vector":
return {
type: "vector",
points: [
[0, 0],
[2, 2],
],
color: DEFAULT_COLOR,
};
case "ellipse":
return {
type: "ellipse",
center: [0, 0],
radius: [1, 1],
angle: 0,
color: DEFAULT_COLOR,
fillStyle: "none",
strokeStyle: "solid",
};
case "polygon":
return {
type: "polygon",
points: [
[0, 2],
[-1, 0],
[1, 0],
],
color: DEFAULT_COLOR,
showVertices: false,
fillStyle: "none",
strokeStyle: "solid",
};
case "function":
return {
type: "function",
color: DEFAULT_COLOR,
strokeStyle: "solid",
equation: "x^2",
directionalAxis: "x",
};
case "label":
return {
type: "label",
coord: [0, 0],
text: "",
color: DEFAULT_COLOR,
size: "medium",
};
default:
throw new UnreachableCaseError(type);
}
}

export function degreeToRadian(degrees: number) {
return (degrees / 180) * Math.PI;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import * as React from "react";

import {flags} from "../../__stories__/flags-for-api-options";
import {getDefaultFigureForType} from "../../components/util";
import {getDefaultFigureForType} from "../interactive-graph-editor/locked-figures/util";
import InteractiveGraphEditor from "../interactive-graph-editor/interactive-graph-editor";

import InteractiveGraphEditorArgTypes from "./interactive-graph-editor.argtypes";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import * as React from "react";

import {testDependencies} from "../../../../../testing/test-dependencies";
import {flags} from "../../__stories__/flags-for-api-options";
import {getDefaultFigureForType} from "../../components/util";
import {getDefaultFigureForType} from "../interactive-graph-editor/locked-figures/util";
import InteractiveGraphEditor from "../interactive-graph-editor/interactive-graph-editor";

import type {PerseusGraphType} from "@khanacademy/perseus";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import * as React from "react";
import {testDependencies} from "../../../../../testing/test-dependencies";
import {waitForInitialGraphieRender} from "../../../../../testing/wait";
import {flags} from "../../__stories__/flags-for-api-options";
import {getDefaultFigureForType} from "../../components/util";
import {getDefaultFigureForType} from "../interactive-graph-editor/locked-figures/util";
import InteractiveGraphEditor from "../interactive-graph-editor/interactive-graph-editor";

import type {PerseusGraphType} from "@khanacademy/perseus";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import {userEvent as userEventLib} from "@testing-library/user-event";
import * as React from "react";

import LockedEllipseSettings from "./locked-ellipse-settings";
import {getDefaultFigureForType} from "../../../components/util";
import {getDefaultFigureForType} from "./util";

import type {UserEvent} from "@testing-library/user-event";

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import {userEvent as userEventLib} from "@testing-library/user-event";
import * as React from "react";

import LockedFiguresSection from "./locked-figures-section";
import {getDefaultFigureForType} from "../../../components/util";
import {getDefaultFigureForType} from "./util";

import type {UserEvent} from "@testing-library/user-event";

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import {StyleSheet} from "aphrodite";
import * as React from "react";

import Heading from "../../../components/heading";
import {getDefaultFigureForType} from "../../../components/util";
import {getDefaultFigureForType} from "./util";

import LockedFigureSelect from "./locked-figure-select";
import LockedFigureSettings from "./locked-figure-settings";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import {userEvent as userEventLib} from "@testing-library/user-event";
import * as React from "react";

import LockedFunctionSettings from "./locked-function-settings";
import {getDefaultFigureForType} from "../../../components/util";
import {getDefaultFigureForType} from "./util";

import type {Props} from "./locked-function-settings";
import type {UserEvent} from "@testing-library/user-event";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import {userEvent as userEventLib} from "@testing-library/user-event";
import * as React from "react";

import LockedLabelSettings from "./locked-label-settings";
import {getDefaultFigureForType} from "../../../components/util";
import {getDefaultFigureForType} from "./util";

import type {Props} from "./locked-label-settings";
import type {UserEvent} from "@testing-library/user-event";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import {userEvent as userEventLib} from "@testing-library/user-event";
import * as React from "react";

import LockedLineSettings from "./locked-line-settings";
import {getDefaultFigureForType} from "../../../components/util";
import {getDefaultFigureForType} from "./util";

import type {UserEvent} from "@testing-library/user-event";

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import {userEvent as userEventLib} from "@testing-library/user-event";
import * as React from "react";

import LockedPointSettings from "./locked-point-settings";
import {getDefaultFigureForType} from "../../../components/util";
import {getDefaultFigureForType} from "./util";

import type {UserEvent} from "@testing-library/user-event";

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import {userEvent as userEventLib} from "@testing-library/user-event";
import * as React from "react";

import LockedPolygonSettings from "./locked-polygon-settings";
import {getDefaultFigureForType} from "../../../components/util";
import {getDefaultFigureForType} from "./util";

import type {UserEvent} from "@testing-library/user-event";

Expand Down
Loading

0 comments on commit c332ca2

Please sign in to comment.