@khanacademy/perseus 23.4.0 → 23.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/input-with-examples.d.ts +0 -4
- package/dist/es/index.css +0 -17
- package/dist/es/index.js +276 -338
- package/dist/es/index.js.map +1 -1
- package/dist/index.css +0 -17
- package/dist/index.d.ts +2 -2
- package/dist/index.js +274 -333
- package/dist/index.js.map +1 -1
- package/dist/perseus-api.d.ts +2 -1
- package/dist/perseus-types.d.ts +16 -8
- package/dist/server-item-renderer.d.ts +2 -1
- package/dist/types.d.ts +1 -1
- package/dist/widgets/expression.d.ts +12 -6
- package/dist/widgets/interactive-graphs/graphs/sinusoid.d.ts +1 -1
- package/dist/widgets/interactive-graphs/graphs/use-draggable.d.ts +13 -0
- package/dist/widgets/interactive-graphs/interactive-graph-question-builder.d.ts +9 -3
- package/dist/widgets/interactive-graphs/{locked-ellipse.d.ts → locked-figures/locked-ellipse.d.ts} +1 -1
- package/dist/widgets/interactive-graphs/{locked-line.d.ts → locked-figures/locked-line.d.ts} +1 -1
- package/dist/widgets/interactive-graphs/{locked-point.d.ts → locked-figures/locked-point.d.ts} +1 -1
- package/dist/widgets/interactive-graphs/locked-figures/locked-polygon.d.ts +4 -0
- package/dist/widgets/interactive-graphs/{locked-vector.d.ts → locked-figures/locked-vector.d.ts} +1 -1
- package/dist/widgets/interactive-graphs/mafs-graph.d.ts +2 -1
- package/dist/widgets/interactive-graphs/reducer/initialize-graph-state.d.ts +3 -2
- package/dist/widgets/interactive-graphs/reducer/interactive-graph-action.d.ts +8 -1
- package/dist/widgets/label-image.d.ts +4 -2
- package/package.json +1 -1
- package/dist/components/math-output.d.ts +0 -27
package/dist/perseus-api.d.ts
CHANGED
|
@@ -98,11 +98,12 @@ export declare const ApiOptions: {
|
|
|
98
98
|
linear?: boolean | undefined;
|
|
99
99
|
quadratic?: boolean | undefined;
|
|
100
100
|
sinusoid?: boolean | undefined;
|
|
101
|
-
segment?: boolean | undefined;
|
|
102
101
|
"linear-system"?: boolean | undefined;
|
|
103
102
|
ray?: boolean | undefined;
|
|
103
|
+
segment?: boolean | undefined;
|
|
104
104
|
} & {
|
|
105
105
|
"interactive-graph-locked-features-m2"?: boolean | undefined;
|
|
106
|
+
"interactive-graph-locked-features-m2b"?: boolean | undefined;
|
|
106
107
|
}) | undefined;
|
|
107
108
|
} | undefined;
|
|
108
109
|
onWidgetStartProps?: ((widgets: import("./perseus-types").PerseusWidgetsMap) => void) | undefined;
|
package/dist/perseus-types.d.ts
CHANGED
|
@@ -346,10 +346,10 @@ export type PerseusInteractiveGraphWidgetOptions = {
|
|
|
346
346
|
correct: PerseusGraphType;
|
|
347
347
|
lockedFigures?: ReadonlyArray<LockedFigure>;
|
|
348
348
|
};
|
|
349
|
-
declare const lockedFigureColorNames: readonly ["green", "grayH", "purple", "pink", "red"];
|
|
349
|
+
declare const lockedFigureColorNames: readonly ["blue", "green", "grayH", "purple", "pink", "orange", "red"];
|
|
350
350
|
export type LockedFigureColor = (typeof lockedFigureColorNames)[number];
|
|
351
351
|
export declare const lockedFigureColors: Record<LockedFigureColor, string>;
|
|
352
|
-
export type LockedFigure = LockedPointType | LockedLineType | LockedEllipseType |
|
|
352
|
+
export type LockedFigure = LockedPointType | LockedLineType | LockedVectorType | LockedEllipseType | LockedPolygonType;
|
|
353
353
|
export type LockedFigureType = LockedFigure["type"];
|
|
354
354
|
export type LockedPointType = {
|
|
355
355
|
type: "point";
|
|
@@ -366,21 +366,29 @@ export type LockedLineType = {
|
|
|
366
366
|
showPoint1: boolean;
|
|
367
367
|
showPoint2: boolean;
|
|
368
368
|
};
|
|
369
|
-
export type
|
|
370
|
-
|
|
369
|
+
export type LockedVectorType = {
|
|
370
|
+
type: "vector";
|
|
371
|
+
points: [tail: Coord, tip: Coord];
|
|
372
|
+
color: LockedFigureColor;
|
|
373
|
+
};
|
|
374
|
+
export type LockedFigureFillType = "none" | "solid" | "translucent";
|
|
375
|
+
export declare const lockedFigureFillStyles: Record<LockedFigureFillType, number>;
|
|
371
376
|
export type LockedEllipseType = {
|
|
372
377
|
type: "ellipse";
|
|
373
378
|
center: Coord;
|
|
374
379
|
radius: [x: number, y: number];
|
|
375
380
|
angle: number;
|
|
376
381
|
color: LockedFigureColor;
|
|
377
|
-
fillStyle:
|
|
382
|
+
fillStyle: LockedFigureFillType;
|
|
378
383
|
strokeStyle: "solid" | "dashed";
|
|
379
384
|
};
|
|
380
|
-
export type
|
|
381
|
-
type: "
|
|
382
|
-
points:
|
|
385
|
+
export type LockedPolygonType = {
|
|
386
|
+
type: "polygon";
|
|
387
|
+
points: ReadonlyArray<Coord>;
|
|
383
388
|
color: LockedFigureColor;
|
|
389
|
+
showVertices: boolean;
|
|
390
|
+
fillStyle: LockedFigureFillType;
|
|
391
|
+
strokeStyle: "solid" | "dashed";
|
|
384
392
|
};
|
|
385
393
|
export type PerseusGraphType = PerseusGraphTypeAngle | PerseusGraphTypeCircle | PerseusGraphTypeLinear | PerseusGraphTypeLinearSystem | PerseusGraphTypePoint | PerseusGraphTypePolygon | PerseusGraphTypeQuadratic | PerseusGraphTypeRay | PerseusGraphTypeSegment | PerseusGraphTypeSinusoid;
|
|
386
394
|
export type PerseusGraphTypeCommon = {
|
|
@@ -145,11 +145,12 @@ declare const ref: React.ForwardRefExoticComponent<Omit<Pick<OwnProps & HOCProps
|
|
|
145
145
|
linear?: boolean | undefined;
|
|
146
146
|
quadratic?: boolean | undefined;
|
|
147
147
|
sinusoid?: boolean | undefined;
|
|
148
|
-
segment?: boolean | undefined;
|
|
149
148
|
"linear-system"?: boolean | undefined;
|
|
150
149
|
ray?: boolean | undefined;
|
|
150
|
+
segment?: boolean | undefined;
|
|
151
151
|
} & {
|
|
152
152
|
"interactive-graph-locked-features-m2"?: boolean | undefined;
|
|
153
|
+
"interactive-graph-locked-features-m2b"?: boolean | undefined;
|
|
153
154
|
}) | undefined;
|
|
154
155
|
} | undefined;
|
|
155
156
|
onWidgetStartProps?: ((widgets: import("./perseus-types").PerseusWidgetsMap) => void) | undefined;
|
package/dist/types.d.ts
CHANGED
|
@@ -78,7 +78,7 @@ type TrackInteractionArgs = {
|
|
|
78
78
|
correct?: boolean;
|
|
79
79
|
} & Partial<TrackingGradedGroupExtraArguments> & Partial<TrackingSequenceExtraArguments>;
|
|
80
80
|
export declare const MafsGraphTypeFlags: readonly ["segment", "linear", "linear-system", "ray", "polygon", "circle", "quadratic", "sinusoid"];
|
|
81
|
-
export declare const InteractiveGraphLockedFeaturesFlags: readonly ["interactive-graph-locked-features-m2"];
|
|
81
|
+
export declare const InteractiveGraphLockedFeaturesFlags: readonly ["interactive-graph-locked-features-m2", "interactive-graph-locked-features-m2b"];
|
|
82
82
|
/**
|
|
83
83
|
* APIOptions provides different ways to customize the behaviour of Perseus.
|
|
84
84
|
*
|
|
@@ -139,11 +139,12 @@ declare const _default: Readonly<{
|
|
|
139
139
|
linear?: boolean | undefined;
|
|
140
140
|
quadratic?: boolean | undefined;
|
|
141
141
|
sinusoid?: boolean | undefined;
|
|
142
|
-
segment?: boolean | undefined;
|
|
143
142
|
"linear-system"?: boolean | undefined;
|
|
144
143
|
ray?: boolean | undefined;
|
|
144
|
+
segment?: boolean | undefined;
|
|
145
145
|
} & {
|
|
146
146
|
"interactive-graph-locked-features-m2"?: boolean | undefined;
|
|
147
|
+
"interactive-graph-locked-features-m2b"?: boolean | undefined;
|
|
147
148
|
}) | undefined;
|
|
148
149
|
} | undefined;
|
|
149
150
|
onWidgetStartProps?: ((widgets: import("../perseus-types").PerseusWidgetsMap) => void) | undefined;
|
|
@@ -215,11 +216,12 @@ declare const _default: Readonly<{
|
|
|
215
216
|
linear?: boolean | undefined;
|
|
216
217
|
quadratic?: boolean | undefined;
|
|
217
218
|
sinusoid?: boolean | undefined;
|
|
218
|
-
segment?: boolean | undefined;
|
|
219
219
|
"linear-system"?: boolean | undefined;
|
|
220
220
|
ray?: boolean | undefined;
|
|
221
|
+
segment?: boolean | undefined;
|
|
221
222
|
} & {
|
|
222
223
|
"interactive-graph-locked-features-m2"?: boolean | undefined;
|
|
224
|
+
"interactive-graph-locked-features-m2b"?: boolean | undefined;
|
|
223
225
|
}) | undefined;
|
|
224
226
|
} | undefined;
|
|
225
227
|
onWidgetStartProps?: ((widgets: import("../perseus-types").PerseusWidgetsMap) => void) | undefined;
|
|
@@ -291,11 +293,12 @@ declare const _default: Readonly<{
|
|
|
291
293
|
linear?: boolean | undefined;
|
|
292
294
|
quadratic?: boolean | undefined;
|
|
293
295
|
sinusoid?: boolean | undefined;
|
|
294
|
-
segment?: boolean | undefined;
|
|
295
296
|
"linear-system"?: boolean | undefined;
|
|
296
297
|
ray?: boolean | undefined;
|
|
298
|
+
segment?: boolean | undefined;
|
|
297
299
|
} & {
|
|
298
300
|
"interactive-graph-locked-features-m2"?: boolean | undefined;
|
|
301
|
+
"interactive-graph-locked-features-m2b"?: boolean | undefined;
|
|
299
302
|
}) | undefined;
|
|
300
303
|
} | undefined;
|
|
301
304
|
onWidgetStartProps?: ((widgets: import("../perseus-types").PerseusWidgetsMap) => void) | undefined;
|
|
@@ -364,11 +367,12 @@ declare const _default: Readonly<{
|
|
|
364
367
|
linear?: boolean | undefined;
|
|
365
368
|
quadratic?: boolean | undefined;
|
|
366
369
|
sinusoid?: boolean | undefined;
|
|
367
|
-
segment?: boolean | undefined;
|
|
368
370
|
"linear-system"?: boolean | undefined;
|
|
369
371
|
ray?: boolean | undefined;
|
|
372
|
+
segment?: boolean | undefined;
|
|
370
373
|
} & {
|
|
371
374
|
"interactive-graph-locked-features-m2"?: boolean | undefined;
|
|
375
|
+
"interactive-graph-locked-features-m2b"?: boolean | undefined;
|
|
372
376
|
}) | undefined;
|
|
373
377
|
} | undefined;
|
|
374
378
|
onWidgetStartProps?: ((widgets: import("../perseus-types").PerseusWidgetsMap) => void) | undefined;
|
|
@@ -440,11 +444,12 @@ declare const _default: Readonly<{
|
|
|
440
444
|
linear?: boolean | undefined;
|
|
441
445
|
quadratic?: boolean | undefined;
|
|
442
446
|
sinusoid?: boolean | undefined;
|
|
443
|
-
segment?: boolean | undefined;
|
|
444
447
|
"linear-system"?: boolean | undefined;
|
|
445
448
|
ray?: boolean | undefined;
|
|
449
|
+
segment?: boolean | undefined;
|
|
446
450
|
} & {
|
|
447
451
|
"interactive-graph-locked-features-m2"?: boolean | undefined;
|
|
452
|
+
"interactive-graph-locked-features-m2b"?: boolean | undefined;
|
|
448
453
|
}) | undefined;
|
|
449
454
|
} | undefined;
|
|
450
455
|
onWidgetStartProps?: ((widgets: import("../perseus-types").PerseusWidgetsMap) => void) | undefined;
|
|
@@ -516,11 +521,12 @@ declare const _default: Readonly<{
|
|
|
516
521
|
linear?: boolean | undefined;
|
|
517
522
|
quadratic?: boolean | undefined;
|
|
518
523
|
sinusoid?: boolean | undefined;
|
|
519
|
-
segment?: boolean | undefined;
|
|
520
524
|
"linear-system"?: boolean | undefined;
|
|
521
525
|
ray?: boolean | undefined;
|
|
526
|
+
segment?: boolean | undefined;
|
|
522
527
|
} & {
|
|
523
528
|
"interactive-graph-locked-features-m2"?: boolean | undefined;
|
|
529
|
+
"interactive-graph-locked-features-m2b"?: boolean | undefined;
|
|
524
530
|
}) | undefined;
|
|
525
531
|
} | undefined;
|
|
526
532
|
onWidgetStartProps?: ((widgets: import("../perseus-types").PerseusWidgetsMap) => void) | undefined;
|
|
@@ -10,5 +10,5 @@ export type SineCoefficient = {
|
|
|
10
10
|
};
|
|
11
11
|
export declare function SinusoidGraph(props: SinusoidGraphProps): JSX.Element;
|
|
12
12
|
export declare const computeSine: (x: number, sinusoidCoefficients: SineCoefficient) => number;
|
|
13
|
-
export declare const getSinusoidCoefficients: (coords: ReadonlyArray<Coord>) => SineCoefficient;
|
|
13
|
+
export declare const getSinusoidCoefficients: (coords: ReadonlyArray<Coord>) => SineCoefficient | undefined;
|
|
14
14
|
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { vec } from "mafs";
|
|
2
|
+
import type { RefObject } from "react";
|
|
3
|
+
type Params = {
|
|
4
|
+
gestureTarget: RefObject<Element>;
|
|
5
|
+
onMove: (point: vec.Vector2) => unknown;
|
|
6
|
+
point: vec.Vector2;
|
|
7
|
+
constrain: (point: vec.Vector2) => vec.Vector2;
|
|
8
|
+
};
|
|
9
|
+
type DragState = {
|
|
10
|
+
dragging: boolean;
|
|
11
|
+
};
|
|
12
|
+
export declare function useDraggable(params: Params): DragState;
|
|
13
|
+
export {};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { LockedFigureFillType, LockedFigureColor, PerseusRenderer } from "../../perseus-types";
|
|
2
2
|
import type { vec } from "mafs";
|
|
3
3
|
export declare function interactiveGraphQuestionBuilder(): InteractiveGraphQuestionBuilder;
|
|
4
4
|
declare class InteractiveGraphQuestionBuilder {
|
|
@@ -24,13 +24,19 @@ declare class InteractiveGraphQuestionBuilder {
|
|
|
24
24
|
withPolygon(snapTo: "grid" | "angles" | "sides"): InteractiveGraphQuestionBuilder;
|
|
25
25
|
addLockedPointAt(x: number, y: number): InteractiveGraphQuestionBuilder;
|
|
26
26
|
addLockedLine(point1: vec.Vector2, point2: vec.Vector2): InteractiveGraphQuestionBuilder;
|
|
27
|
+
addLockedVector(tail: vec.Vector2, tip: vec.Vector2, color?: LockedFigureColor): InteractiveGraphQuestionBuilder;
|
|
27
28
|
addLockedEllipse(center: vec.Vector2, radius: [x: number, y: number], options?: {
|
|
28
29
|
angle?: number;
|
|
29
30
|
color?: LockedFigureColor;
|
|
30
|
-
fillStyle?:
|
|
31
|
+
fillStyle?: LockedFigureFillType;
|
|
32
|
+
strokeStyle?: "solid" | "dashed";
|
|
33
|
+
}): InteractiveGraphQuestionBuilder;
|
|
34
|
+
addLockedPolygon(points: vec.Vector2[], options?: {
|
|
35
|
+
color?: LockedFigureColor;
|
|
36
|
+
showVertices?: boolean;
|
|
37
|
+
fillStyle?: LockedFigureFillType;
|
|
31
38
|
strokeStyle?: "solid" | "dashed";
|
|
32
39
|
}): InteractiveGraphQuestionBuilder;
|
|
33
|
-
addLockedVector(tail: vec.Vector2, tip: vec.Vector2, color?: LockedFigureColor): InteractiveGraphQuestionBuilder;
|
|
34
40
|
private createLockedPoint;
|
|
35
41
|
private addLockedFigure;
|
|
36
42
|
}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import { type InteractiveGraphAction } from "./reducer/interactive-graph-action";
|
|
3
3
|
import type { InteractiveGraphState, InteractiveGraphProps } from "./types";
|
|
4
|
+
import type { PerseusGraphType } from "../../perseus-types";
|
|
4
5
|
import type { Widget } from "../../renderer";
|
|
5
6
|
import "mafs/core.css";
|
|
6
7
|
import "./mafs-styles.css";
|
|
7
8
|
export type StatefulMafsGraphProps = {
|
|
8
9
|
box: [number, number];
|
|
9
10
|
backgroundImage?: InteractiveGraphProps["backgroundImage"];
|
|
10
|
-
graph:
|
|
11
|
+
graph: PerseusGraphType;
|
|
11
12
|
lockedFigures?: InteractiveGraphProps["lockedFigures"];
|
|
12
13
|
range: InteractiveGraphProps["range"];
|
|
13
14
|
snapStep: InteractiveGraphProps["snapStep"];
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { PerseusGraphType } from "../../../perseus-types";
|
|
2
2
|
import type { InteractiveGraphState } from "../types";
|
|
3
3
|
import type { Interval } from "mafs";
|
|
4
|
-
export
|
|
4
|
+
export type InitializeGraphStateParams = {
|
|
5
5
|
range: [x: Interval, y: Interval];
|
|
6
6
|
step: [x: number, y: number];
|
|
7
7
|
snapStep: [x: number, y: number];
|
|
8
8
|
graph: PerseusGraphType;
|
|
9
|
-
}
|
|
9
|
+
};
|
|
10
|
+
export declare function initializeGraphState(params: InitializeGraphStateParams): InteractiveGraphState;
|
|
@@ -1,5 +1,12 @@
|
|
|
1
|
+
import type { InitializeGraphStateParams } from "./initialize-graph-state";
|
|
1
2
|
import type { Interval, vec } from "mafs";
|
|
2
|
-
export type InteractiveGraphAction = MoveControlPoint | MoveLine | MoveAll | MovePoint | MoveCenter | MoveRadiusPoint | ChangeSnapStep | ChangeRange;
|
|
3
|
+
export type InteractiveGraphAction = Reinitialize | MoveControlPoint | MoveLine | MoveAll | MovePoint | MoveCenter | MoveRadiusPoint | ChangeSnapStep | ChangeRange;
|
|
4
|
+
export declare const REINITIALIZE = "reinitialize";
|
|
5
|
+
export interface Reinitialize {
|
|
6
|
+
type: typeof REINITIALIZE;
|
|
7
|
+
params: InitializeGraphStateParams;
|
|
8
|
+
}
|
|
9
|
+
export declare function reinitialize(params: InitializeGraphStateParams): Reinitialize;
|
|
3
10
|
export declare const MOVE_CONTROL_POINT = "move-control-point";
|
|
4
11
|
export interface MoveControlPoint {
|
|
5
12
|
type: typeof MOVE_CONTROL_POINT;
|
|
@@ -133,11 +133,12 @@ declare const _default: Readonly<{
|
|
|
133
133
|
linear?: boolean | undefined;
|
|
134
134
|
quadratic?: boolean | undefined;
|
|
135
135
|
sinusoid?: boolean | undefined;
|
|
136
|
-
segment?: boolean | undefined;
|
|
137
136
|
"linear-system"?: boolean | undefined;
|
|
138
137
|
ray?: boolean | undefined;
|
|
138
|
+
segment?: boolean | undefined;
|
|
139
139
|
} & {
|
|
140
140
|
"interactive-graph-locked-features-m2"?: boolean | undefined;
|
|
141
|
+
"interactive-graph-locked-features-m2b"?: boolean | undefined;
|
|
141
142
|
}) | undefined;
|
|
142
143
|
} | undefined;
|
|
143
144
|
onWidgetStartProps?: ((widgets: import("..").PerseusWidgetsMap) => void) | undefined;
|
|
@@ -193,11 +194,12 @@ declare const _default: Readonly<{
|
|
|
193
194
|
linear?: boolean | undefined;
|
|
194
195
|
quadratic?: boolean | undefined;
|
|
195
196
|
sinusoid?: boolean | undefined;
|
|
196
|
-
segment?: boolean | undefined;
|
|
197
197
|
"linear-system"?: boolean | undefined;
|
|
198
198
|
ray?: boolean | undefined;
|
|
199
|
+
segment?: boolean | undefined;
|
|
199
200
|
} & {
|
|
200
201
|
"interactive-graph-locked-features-m2"?: boolean | undefined;
|
|
202
|
+
"interactive-graph-locked-features-m2b"?: boolean | undefined;
|
|
201
203
|
}) | undefined;
|
|
202
204
|
} | undefined;
|
|
203
205
|
onWidgetStartProps?: ((widgets: import("..").PerseusWidgetsMap) => void) | undefined;
|
package/package.json
CHANGED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
type Props = {
|
|
3
|
-
value: string | number;
|
|
4
|
-
className?: string;
|
|
5
|
-
labelText?: string;
|
|
6
|
-
onFocus: () => void;
|
|
7
|
-
onBlur: () => void;
|
|
8
|
-
};
|
|
9
|
-
type DefaultProps = Pick<Props, "value" | "onFocus" | "onBlur">;
|
|
10
|
-
type State = {
|
|
11
|
-
focused: boolean;
|
|
12
|
-
selectorNamespace: string;
|
|
13
|
-
};
|
|
14
|
-
declare class MathOutput extends React.Component<Props, State> {
|
|
15
|
-
static defaultProps: DefaultProps;
|
|
16
|
-
state: State;
|
|
17
|
-
_getInputClassName: () => string;
|
|
18
|
-
_getDisplayValue: (arg1: string | number) => string;
|
|
19
|
-
render(): React.ReactNode;
|
|
20
|
-
getValue: () => string | number;
|
|
21
|
-
focus: () => void;
|
|
22
|
-
blur: () => void;
|
|
23
|
-
_bindBlurHandler: () => void;
|
|
24
|
-
_unbindBlurHandler: () => void;
|
|
25
|
-
componentWillUnmount(): void;
|
|
26
|
-
}
|
|
27
|
-
export default MathOutput;
|