forked from Linho1219/function-plot-GUI
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathoptions.ts
More file actions
55 lines (49 loc) · 1.2 KB
/
options.ts
File metadata and controls
55 lines (49 loc) · 1.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import { FunctionPlotOptions } from "function-plot";
import { amendAttr, omitAttr } from "./utils";
type PrivateAxis = {
invert: boolean;
label: string;
type: "linear" | "log";
};
export type PrivateOptions = {
xAxis: PrivateAxis;
yAxis: PrivateAxis;
grid: boolean;
title: string;
};
const defaultAxis = {
invert: false,
label: "",
type: "linear",
} as PrivateAxis;
export function toPrivateOptions(
original: Partial<FunctionPlotOptions>
): PrivateOptions {
const { xAxis, yAxis, title, grid } = original;
return amendAttr<PrivateOptions>(
{ xAxis, yAxis, title, grid },
{
xAxis: () => amendAttr<PrivateAxis>(xAxis ?? {}, defaultAxis),
yAxis: () => amendAttr<PrivateAxis>(yAxis ?? {}, defaultAxis),
title: "",
grid: false,
}
);
}
const checkObjEmpty = (object: Object) => Object.keys(object).length === 0;
export const toPublicOptions = (
options: PrivateOptions
): Partial<FunctionPlotOptions> =>
omitAttr(
{
...options,
xAxis: omitAttr(options.xAxis, defaultAxis),
yAxis: omitAttr(options.yAxis, defaultAxis),
},
{
title: "",
grid: false,
xAxis: checkObjEmpty,
yAxis: checkObjEmpty,
}
);