@khanacademy/perseus 19.1.6 → 19.1.7
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/graph.d.ts +0 -1
- package/dist/components/graphie.d.ts +0 -1
- package/dist/es/index.js +319 -212
- package/dist/es/index.js.map +1 -1
- package/dist/index.js +338 -222
- package/dist/index.js.map +1 -1
- package/dist/interactive2/movable-point.d.ts +195 -1
- package/dist/interactive2/movable.d.ts +1 -1
- package/dist/interactive2/types.d.ts +4 -2
- package/dist/interactive2.d.ts +2 -1
- package/dist/server-item-renderer.d.ts +2 -2
- package/dist/util/graphie.d.ts +12 -2
- package/dist/widgets/expression.d.ts +6 -6
- package/package.json +2 -2
|
@@ -1,2 +1,196 @@
|
|
|
1
|
-
|
|
1
|
+
import type { Movable } from "./movable";
|
|
2
|
+
import type { Constraint, ConstraintCallbacks } from "./types";
|
|
3
|
+
import type { Graphie } from "../util/graphie";
|
|
4
|
+
import type { Coord } from "@khanacademy/perseus";
|
|
5
|
+
type State = {
|
|
6
|
+
add: unknown[];
|
|
7
|
+
added: boolean;
|
|
8
|
+
constraints: Constraint[];
|
|
9
|
+
coord: Coord;
|
|
10
|
+
cursor: "move";
|
|
11
|
+
draw: ((state: State, prevState: State) => void)[];
|
|
12
|
+
hasMoved: boolean;
|
|
13
|
+
id: string;
|
|
14
|
+
modify: unknown[];
|
|
15
|
+
onClick: unknown[];
|
|
16
|
+
onMove: ((coord: Coord, prevCoord: Coord) => void)[];
|
|
17
|
+
onMoveEnd: unknown[];
|
|
18
|
+
onMoveStart: unknown[];
|
|
19
|
+
onRemove?: () => void;
|
|
20
|
+
outOfBounds: boolean;
|
|
21
|
+
pointSize: number;
|
|
22
|
+
remove: (() => void)[];
|
|
23
|
+
shadow: boolean;
|
|
24
|
+
static: boolean;
|
|
25
|
+
tooltip: boolean;
|
|
26
|
+
touchOffset: null | Coord;
|
|
27
|
+
mouseTarget: unknown;
|
|
28
|
+
visibleShape: {
|
|
29
|
+
wrapper: HTMLElement;
|
|
30
|
+
toBack(): void;
|
|
31
|
+
toFront(): void;
|
|
32
|
+
};
|
|
33
|
+
normalStyle: Record<string, any>;
|
|
34
|
+
highlightStyle: Record<string, any>;
|
|
35
|
+
};
|
|
36
|
+
export declare class MovablePoint {
|
|
37
|
+
graphie: Graphie;
|
|
38
|
+
movable: Movable<Record<string, never>>;
|
|
39
|
+
state: State;
|
|
40
|
+
prevState: State;
|
|
41
|
+
_tooltip?: HTMLElement;
|
|
42
|
+
_listenerMap: Record<string, number>;
|
|
43
|
+
constructor(graphie: Graphie, movable: Movable<Record<string, never>>, options: Partial<State>);
|
|
44
|
+
modify(options: any): void;
|
|
45
|
+
_createDefaultState(): {
|
|
46
|
+
coord: readonly [0, 0];
|
|
47
|
+
pointSize: 4;
|
|
48
|
+
static: false;
|
|
49
|
+
cursor: "move";
|
|
50
|
+
normalStyle: null;
|
|
51
|
+
highlightStyle: null;
|
|
52
|
+
shadow: false;
|
|
53
|
+
tooltip: false;
|
|
54
|
+
id: string;
|
|
55
|
+
};
|
|
56
|
+
cloneState(): {
|
|
57
|
+
add: unknown[];
|
|
58
|
+
added: boolean;
|
|
59
|
+
constraints: Constraint[];
|
|
60
|
+
coord: Coord;
|
|
61
|
+
cursor: "move";
|
|
62
|
+
draw: ((state: State, prevState: State) => void)[];
|
|
63
|
+
hasMoved: boolean;
|
|
64
|
+
id: string;
|
|
65
|
+
modify: unknown[];
|
|
66
|
+
onClick: unknown[];
|
|
67
|
+
onMove: ((coord: Coord, prevCoord: Coord) => void)[];
|
|
68
|
+
onMoveEnd: unknown[];
|
|
69
|
+
onMoveStart: unknown[];
|
|
70
|
+
onRemove?: (() => void) | undefined;
|
|
71
|
+
outOfBounds: boolean;
|
|
72
|
+
pointSize: number;
|
|
73
|
+
remove: (() => void)[];
|
|
74
|
+
shadow: boolean;
|
|
75
|
+
static: boolean;
|
|
76
|
+
tooltip: boolean;
|
|
77
|
+
touchOffset: Coord | null;
|
|
78
|
+
mouseTarget: unknown;
|
|
79
|
+
visibleShape: {
|
|
80
|
+
wrapper: HTMLElement;
|
|
81
|
+
toBack(): void;
|
|
82
|
+
toFront(): void;
|
|
83
|
+
};
|
|
84
|
+
normalStyle: Record<string, any>;
|
|
85
|
+
highlightStyle: Record<string, any>;
|
|
86
|
+
isHovering?: boolean | undefined;
|
|
87
|
+
isMouseOver?: boolean | undefined;
|
|
88
|
+
isDragging?: boolean | undefined;
|
|
89
|
+
};
|
|
90
|
+
update(options: Partial<State>): void;
|
|
91
|
+
draw(): void;
|
|
92
|
+
constrain(): boolean;
|
|
93
|
+
/**
|
|
94
|
+
* Fire an onSomething type event to all functions in listeners
|
|
95
|
+
*/
|
|
96
|
+
_fireEvent<F extends (...args: any[]) => any>(listeners: F[], ...args: Parameters<F>): void;
|
|
97
|
+
/**
|
|
98
|
+
* Combine the array of constraints functions
|
|
99
|
+
* Returns either an [x, y] coordinate or false
|
|
100
|
+
*/
|
|
101
|
+
_applyConstraints(current: Coord, previous: Coord, extraOptions?: ConstraintCallbacks): Coord | false;
|
|
102
|
+
/**
|
|
103
|
+
* Displays a tooltip above the point, replacing any previous contents. If
|
|
104
|
+
* there is no tooltip initialized, adds the tooltip.
|
|
105
|
+
*
|
|
106
|
+
* If the type of contents is string, the contents will be rendered with
|
|
107
|
+
* KaTeX. Otherwise, the content will be assumed to be a DOM node and will
|
|
108
|
+
* be appended inside the tooltip.
|
|
109
|
+
*/
|
|
110
|
+
_showTooltip(contents: any): void;
|
|
111
|
+
_hideTooltip(): void;
|
|
112
|
+
coord(): Coord;
|
|
113
|
+
setCoord(coord: Coord): void;
|
|
114
|
+
setCoordConstrained(coord: any): void;
|
|
115
|
+
/**
|
|
116
|
+
* Add a listener to any event: startMove, constraints, onMove, onMoveEnd,
|
|
117
|
+
* etc. If a listener is already bound to the given eventName and id, then
|
|
118
|
+
* it is overwritten by func.
|
|
119
|
+
*
|
|
120
|
+
* eventName: the string name of the event to listen to. one of:
|
|
121
|
+
* "onMoveStart", "onMove", "onMoveEnd", "draw", "remove"
|
|
122
|
+
*
|
|
123
|
+
* id: a string id that can be used to remove this event at a later time
|
|
124
|
+
* note: adding multiple listeners with the same id is undefined behavior
|
|
125
|
+
*
|
|
126
|
+
* func: the function to call when the event happens, which is called
|
|
127
|
+
* with the event's standard parameters [usually (coord, prevCoord) or
|
|
128
|
+
* (state, prevState)]
|
|
129
|
+
*/
|
|
130
|
+
listen(eventName: string, id: string, func: () => unknown): void;
|
|
131
|
+
/**
|
|
132
|
+
* Remove a previously added listener, by the id specified in the
|
|
133
|
+
* corresponding listen() call
|
|
134
|
+
*
|
|
135
|
+
* If the given id has not been registered already, this is a no-op
|
|
136
|
+
*/
|
|
137
|
+
unlisten(eventName: any, id: any): void;
|
|
138
|
+
grab(coord: Coord): void;
|
|
139
|
+
moveTo(coord: Coord): void;
|
|
140
|
+
remove(): void;
|
|
141
|
+
pointSize(): number;
|
|
142
|
+
static(): boolean;
|
|
143
|
+
cursor(): "move";
|
|
144
|
+
normalStyle(): Record<string, any>;
|
|
145
|
+
highlightStyle(): Record<string, any>;
|
|
146
|
+
shadow(): boolean;
|
|
147
|
+
tooltip(): boolean;
|
|
148
|
+
added(): boolean;
|
|
149
|
+
hasMoved(): boolean;
|
|
150
|
+
visibleShape(): {
|
|
151
|
+
wrapper: HTMLElement;
|
|
152
|
+
toBack(): void;
|
|
153
|
+
toFront(): void;
|
|
154
|
+
};
|
|
155
|
+
outOfBounds(): boolean;
|
|
156
|
+
mouseTarget(): unknown;
|
|
157
|
+
touchOffset(): Coord | null;
|
|
158
|
+
/**
|
|
159
|
+
* Forwarding methods to this.movable:
|
|
160
|
+
*/
|
|
161
|
+
isHovering(): boolean | undefined;
|
|
162
|
+
isDragging(): boolean | undefined;
|
|
163
|
+
toBack(): void;
|
|
164
|
+
toFront(): void;
|
|
165
|
+
static add: {
|
|
166
|
+
readonly constrain: () => void;
|
|
167
|
+
};
|
|
168
|
+
static modify: {
|
|
169
|
+
readonly draw: () => void;
|
|
170
|
+
};
|
|
171
|
+
static draw: {
|
|
172
|
+
readonly basic: (state: any, prevState: any) => void;
|
|
173
|
+
readonly highlight: (state: any, prevState: any) => void;
|
|
174
|
+
};
|
|
175
|
+
static remove: {
|
|
176
|
+
readonly basic: () => void;
|
|
177
|
+
};
|
|
178
|
+
static onMoveStart: {
|
|
179
|
+
standard: null;
|
|
180
|
+
};
|
|
181
|
+
static constraints: {
|
|
182
|
+
readonly fixed: () => Constraint;
|
|
183
|
+
readonly snap: (snap?: number | null | undefined) => Constraint;
|
|
184
|
+
readonly bound: (range?: [import("../util/interval").Interval, import("../util/interval").Interval] | undefined, snap?: number | Coord | undefined, optionalPaddingPx?: number | undefined) => Constraint;
|
|
185
|
+
};
|
|
186
|
+
static onMove: {
|
|
187
|
+
standard: null;
|
|
188
|
+
};
|
|
189
|
+
static onMoveEnd: {
|
|
190
|
+
standard: null;
|
|
191
|
+
};
|
|
192
|
+
static onClick: {
|
|
193
|
+
standard: null;
|
|
194
|
+
};
|
|
195
|
+
}
|
|
2
196
|
export default MovablePoint;
|
|
@@ -57,7 +57,7 @@ export declare class Movable<Options extends Record<string, any>> {
|
|
|
57
57
|
* Simulates a mouse grab event on the movable object.
|
|
58
58
|
*/
|
|
59
59
|
grab(coord: Coord): void;
|
|
60
|
-
_applyConstraints(current: Coord, previous: Coord, extraOptions?: ConstraintCallbacks):
|
|
60
|
+
_applyConstraints(current: Coord, previous: Coord, extraOptions?: ConstraintCallbacks): false | [number, number];
|
|
61
61
|
toBack(): void;
|
|
62
62
|
toFront(): void;
|
|
63
63
|
/**
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Graphie } from "../util/graphie";
|
|
2
2
|
export type Coord = [number, number];
|
|
3
3
|
export type Line = [Coord, Coord];
|
|
4
|
-
export type Constraint = (this:
|
|
4
|
+
export type Constraint = (this: {
|
|
5
|
+
graphie: Graphie;
|
|
6
|
+
}, current: Coord | boolean, previous: Coord, options: ConstraintCallbacks) => Coord | boolean | undefined;
|
|
5
7
|
export type ConstraintCallbacks = {
|
|
6
8
|
onSkipRemaining(): void;
|
|
7
9
|
onOutOfBounds?: () => void;
|
package/dist/interactive2.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import { MovablePoint } from "./interactive2/movable-point";
|
|
1
2
|
declare const Interactive2: {
|
|
2
|
-
readonly MovablePoint:
|
|
3
|
+
readonly MovablePoint: typeof MovablePoint;
|
|
3
4
|
readonly addMovablePoint: (graphie: any, options: any) => any;
|
|
4
5
|
readonly MovableLine: (graphie: any, movable: any, options: any) => void;
|
|
5
6
|
readonly addMovableLine: (graphie: any, options: any) => any;
|
|
@@ -102,8 +102,7 @@ export declare class ServerItemRenderer extends React.Component<Props, State> im
|
|
|
102
102
|
setAssetStatus: (assetKey: string, status: boolean) => void;
|
|
103
103
|
render(): React.ReactNode;
|
|
104
104
|
}
|
|
105
|
-
declare const ref: React.ForwardRefExoticComponent<Omit<Pick<OwnProps & HOCProps, "item" | "problemNum" | "
|
|
106
|
-
linterContext?: PerseusLinter.LinterContextProps | undefined;
|
|
105
|
+
declare const ref: React.ForwardRefExoticComponent<Omit<Pick<OwnProps & HOCProps, "item" | "problemNum" | "keypadElement" | "reviewMode" | "dependencies" | "hintsVisible"> & {
|
|
107
106
|
apiOptions?: Readonly<{
|
|
108
107
|
isArticle?: boolean | undefined;
|
|
109
108
|
onInputError?: ((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined;
|
|
@@ -138,6 +137,7 @@ declare const ref: React.ForwardRefExoticComponent<Omit<Pick<OwnProps & HOCProps
|
|
|
138
137
|
editorChangeDelay?: number | undefined;
|
|
139
138
|
onWidgetStartProps?: ((widgets: import("./types").PerseusWidgetMap) => import("./types").PerseusWidgetMap) | undefined;
|
|
140
139
|
}> | undefined;
|
|
140
|
+
linterContext?: PerseusLinter.LinterContextProps | undefined;
|
|
141
141
|
onRendered?: ((isRendered: boolean) => void) | undefined;
|
|
142
142
|
} & {}, "onRendered"> & React.RefAttributes<ServerItemRenderer>>;
|
|
143
143
|
export default ref;
|
package/dist/util/graphie.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { MouseHandler } from "./interactive";
|
|
1
2
|
import type { Interval } from "./interval";
|
|
2
3
|
import type { Coord } from "../interactive2/types";
|
|
3
4
|
export declare function polar(r: number | Coord, th: number): Coord;
|
|
@@ -100,13 +101,22 @@ export declare class Graphie {
|
|
|
100
101
|
private addArrowheads;
|
|
101
102
|
scalePoint: (point: number | Coord) => Coord;
|
|
102
103
|
scaleVector: (point: number | Coord) => any;
|
|
103
|
-
unscalePoint: (point: Coord) => any;
|
|
104
|
-
unscaleVector: (point: Coord) => any;
|
|
104
|
+
unscalePoint: (point: number | Coord) => any;
|
|
105
|
+
unscaleVector: (point: number | Coord) => any;
|
|
105
106
|
private processAttributes;
|
|
106
107
|
getMouseCoord(event: Readonly<{
|
|
107
108
|
pageX?: number;
|
|
108
109
|
pageY?: number;
|
|
109
110
|
}>): Coord;
|
|
111
|
+
addMouseLayer(options: {
|
|
112
|
+
onClick?: MouseHandler;
|
|
113
|
+
onMouseMove?: MouseHandler;
|
|
114
|
+
onMouseDown?: MouseHandler;
|
|
115
|
+
onMouseOver?: MouseHandler;
|
|
116
|
+
onMouseOut?: MouseHandler;
|
|
117
|
+
allowScratchpad?: boolean;
|
|
118
|
+
setDrawingAreaAvailable?: (available: boolean) => void;
|
|
119
|
+
}): void;
|
|
110
120
|
}
|
|
111
121
|
type RangeSpecifier = [Interval, Interval] | Coord | number;
|
|
112
122
|
export declare function normalizeRange(range: RangeSpecifier): [Interval, Interval];
|
|
@@ -212,11 +212,11 @@ declare const _default: Readonly<{
|
|
|
212
212
|
onFocus: (blurPath: import("../types").FocusPath) => void;
|
|
213
213
|
times: boolean;
|
|
214
214
|
value: string;
|
|
215
|
-
}, "onChange" | "trackInteraction" | "static" | "analytics" | "
|
|
215
|
+
}, "onChange" | "trackInteraction" | "static" | "analytics" | "buttonsVisible" | "containerSizeClass" | "widgetId" | "problemNum" | "questionCompleted" | "findWidgets" | "keypadElement" | "keypadConfiguration" | "alignment" | "reviewModeRubric" | "isLastUsedWidget"> & {
|
|
216
216
|
onFocus?: ((blurPath: import("../types").FocusPath) => void) | undefined;
|
|
217
217
|
onBlur?: ((blurPath: import("../types").FocusPath) => void) | undefined;
|
|
218
218
|
value?: string | undefined;
|
|
219
|
-
|
|
219
|
+
buttonSets?: import("../perseus-types").LegacyButtonSets | undefined;
|
|
220
220
|
apiOptions?: Readonly<Readonly<{
|
|
221
221
|
isArticle?: boolean | undefined;
|
|
222
222
|
onInputError?: ((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined;
|
|
@@ -269,9 +269,9 @@ declare const _default: Readonly<{
|
|
|
269
269
|
showAlignmentOptions: NonNullable<boolean | undefined>;
|
|
270
270
|
useDraftEditor: NonNullable<boolean | undefined>;
|
|
271
271
|
}> | undefined;
|
|
272
|
-
buttonSets?: import("../perseus-types").LegacyButtonSets | undefined;
|
|
273
272
|
functions?: readonly string[] | undefined;
|
|
274
273
|
times?: boolean | undefined;
|
|
274
|
+
linterContext?: import("@khanacademy/perseus-linter").LinterContextProps | undefined;
|
|
275
275
|
} & {}, "analytics"> & React.RefAttributes<Expression>>) | undefined;
|
|
276
276
|
widget: React.ForwardRefExoticComponent<Omit<Pick<RenderProps & {
|
|
277
277
|
widgetId: string;
|
|
@@ -401,11 +401,11 @@ declare const _default: Readonly<{
|
|
|
401
401
|
onFocus: (blurPath: import("../types").FocusPath) => void;
|
|
402
402
|
times: boolean;
|
|
403
403
|
value: string;
|
|
404
|
-
}, "onChange" | "trackInteraction" | "static" | "analytics" | "
|
|
404
|
+
}, "onChange" | "trackInteraction" | "static" | "analytics" | "buttonsVisible" | "containerSizeClass" | "widgetId" | "problemNum" | "questionCompleted" | "findWidgets" | "keypadElement" | "keypadConfiguration" | "alignment" | "reviewModeRubric" | "isLastUsedWidget"> & {
|
|
405
405
|
onFocus?: ((blurPath: import("../types").FocusPath) => void) | undefined;
|
|
406
406
|
onBlur?: ((blurPath: import("../types").FocusPath) => void) | undefined;
|
|
407
407
|
value?: string | undefined;
|
|
408
|
-
|
|
408
|
+
buttonSets?: import("../perseus-types").LegacyButtonSets | undefined;
|
|
409
409
|
apiOptions?: Readonly<Readonly<{
|
|
410
410
|
isArticle?: boolean | undefined;
|
|
411
411
|
onInputError?: ((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined;
|
|
@@ -458,9 +458,9 @@ declare const _default: Readonly<{
|
|
|
458
458
|
showAlignmentOptions: NonNullable<boolean | undefined>;
|
|
459
459
|
useDraftEditor: NonNullable<boolean | undefined>;
|
|
460
460
|
}> | undefined;
|
|
461
|
-
buttonSets?: import("../perseus-types").LegacyButtonSets | undefined;
|
|
462
461
|
functions?: readonly string[] | undefined;
|
|
463
462
|
times?: boolean | undefined;
|
|
463
|
+
linterContext?: import("@khanacademy/perseus-linter").LinterContextProps | undefined;
|
|
464
464
|
} & {}, "analytics"> & React.RefAttributes<Expression>>;
|
|
465
465
|
accessible?: boolean | ((props: any) => boolean) | undefined;
|
|
466
466
|
hidden?: boolean | undefined;
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"description": "Core Perseus API (includes renderers and widgets)",
|
|
4
4
|
"author": "Khan Academy",
|
|
5
5
|
"license": "MIT",
|
|
6
|
-
"version": "19.1.
|
|
6
|
+
"version": "19.1.7",
|
|
7
7
|
"publishConfig": {
|
|
8
8
|
"access": "public"
|
|
9
9
|
},
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"dependencies": {
|
|
28
28
|
"@khanacademy/kas": "^0.3.8",
|
|
29
29
|
"@khanacademy/kmath": "^0.1.12",
|
|
30
|
-
"@khanacademy/math-input": "^17.0.
|
|
30
|
+
"@khanacademy/math-input": "^17.0.6",
|
|
31
31
|
"@khanacademy/perseus-core": "1.4.2",
|
|
32
32
|
"@khanacademy/perseus-linter": "^0.3.11",
|
|
33
33
|
"@khanacademy/pure-markdown": "^0.2.14",
|