@khanacademy/perseus 21.5.0 → 21.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.
@@ -96,13 +96,15 @@ export declare const ApiOptions: {
96
96
  crossOutEnabled?: boolean | undefined;
97
97
  editorChangeDelay?: number | undefined;
98
98
  flags?: {
99
- mafs?: false | {
99
+ mafs?: false | ({
100
100
  polygon?: boolean | undefined;
101
101
  linear?: boolean | undefined;
102
+ ray?: boolean | undefined;
102
103
  segment?: boolean | undefined;
103
104
  "linear-system"?: boolean | undefined;
104
- ray?: boolean | undefined;
105
- } | undefined;
105
+ } & {
106
+ "interactive-graph-locked-features-m1"?: boolean | undefined;
107
+ }) | undefined;
106
108
  } | undefined;
107
109
  onWidgetStartProps?: ((widgets: import("./perseus-types").PerseusWidgetsMap) => void) | undefined;
108
110
  }> & {
@@ -4,10 +4,6 @@ export type Range = Interval;
4
4
  export type Size = [number, number];
5
5
  export type CollinearTuple = readonly [vec.Vector2, vec.Vector2];
6
6
  export type ShowSolutions = "all" | "selected" | "none";
7
- export type StyleParams = {
8
- fill?: string;
9
- stroke?: string;
10
- };
11
7
  type Empty = Record<never, never>;
12
8
  export type PerseusWidgetsMap = {
13
9
  [key in `categorizer ${number}`]: CategorizerWidget;
@@ -351,12 +347,25 @@ export type PerseusInteractiveGraphWidgetOptions = {
351
347
  correct: PerseusGraphType;
352
348
  lockedFigures?: ReadonlyArray<LockedFigure>;
353
349
  };
354
- export type LockedFigure = LockedPoint;
355
- export type LockedFigureType = "point";
356
- export type LockedPoint = {
350
+ export declare const lockedFigureColors: readonly ["purple", "blue", "teal", "green", "gold", "red", "pink"];
351
+ export type LockedFigureColor = (typeof lockedFigureColors)[number];
352
+ export type LockedFigure = LockedPointType | LockedLineType;
353
+ export type LockedFigureType = LockedFigure["type"];
354
+ export type LockedPointType = {
357
355
  type: "point";
358
356
  coord: Coord;
359
- style?: StyleParams;
357
+ color: LockedFigureColor;
358
+ filled: boolean;
359
+ };
360
+ export type LockedLineType = {
361
+ type: "line";
362
+ kind: "line" | "ray" | "segment";
363
+ points: [startPoint: LockedPointType, endPoint: LockedPointType];
364
+ color: LockedFigureColor;
365
+ lineStyle: "solid" | "dashed";
366
+ showArrows: boolean;
367
+ showStartPoint: boolean;
368
+ showEndPoint: boolean;
360
369
  };
361
370
  export type PerseusGraphType = PerseusGraphTypeAngle | PerseusGraphTypeCircle | PerseusGraphTypeLinear | PerseusGraphTypeLinearSystem | PerseusGraphTypePoint | PerseusGraphTypePolygon | PerseusGraphTypeQuadratic | PerseusGraphTypeRay | PerseusGraphTypeSegment | PerseusGraphTypeSinusoid;
362
371
  export type PerseusGraphTypeCommon = {
@@ -135,13 +135,15 @@ declare const ref: React.ForwardRefExoticComponent<Omit<Pick<OwnProps & HOCProps
135
135
  crossOutEnabled?: boolean | undefined;
136
136
  editorChangeDelay?: number | undefined;
137
137
  flags?: {
138
- mafs?: false | {
138
+ mafs?: false | ({
139
139
  polygon?: boolean | undefined;
140
140
  linear?: boolean | undefined;
141
+ ray?: boolean | undefined;
141
142
  segment?: boolean | undefined;
142
143
  "linear-system"?: boolean | undefined;
143
- ray?: boolean | undefined;
144
- } | undefined;
144
+ } & {
145
+ "interactive-graph-locked-features-m1"?: boolean | undefined;
146
+ }) | undefined;
145
147
  } | undefined;
146
148
  onWidgetStartProps?: ((widgets: import("./perseus-types").PerseusWidgetsMap) => void) | undefined;
147
149
  }> | undefined;
package/dist/types.d.ts CHANGED
@@ -77,7 +77,8 @@ type TrackInteractionArgs = {
77
77
  id: string;
78
78
  correct?: boolean;
79
79
  } & Partial<TrackingGradedGroupExtraArguments> & Partial<TrackingSequenceExtraArguments>;
80
- export declare const MafsFlags: readonly ["segment", "linear", "linear-system", "ray", "polygon"];
80
+ export declare const MafsGraphTypeFlags: readonly ["segment", "linear", "linear-system", "ray", "polygon"];
81
+ export declare const InteractiveGraphLockedFeaturesFlags: readonly ["interactive-graph-locked-features-m1"];
81
82
  /**
82
83
  * APIOptions provides different ways to customize the behaviour of Perseus.
83
84
  *
@@ -203,11 +204,13 @@ export type APIOptions = Readonly<{
203
204
  /**
204
205
  * Flags related to the interactive-graph Mafs migration.
205
206
  *
206
- * Add values to the `MafsFlags` array to create new flags.
207
+ * Add values to the relevant array to create new flags.
207
208
  */
208
- mafs?: false | {
209
- [Key in (typeof MafsFlags)[number]]?: boolean;
210
- };
209
+ mafs?: false | ({
210
+ [Key in (typeof MafsGraphTypeFlags)[number]]?: boolean;
211
+ } & {
212
+ [Key in (typeof InteractiveGraphLockedFeaturesFlags)[number]]?: boolean;
213
+ });
211
214
  };
212
215
  /**
213
216
  * This is a callback function that returns all of the Widget props
@@ -124,13 +124,15 @@ declare const _default: Readonly<{
124
124
  crossOutEnabled?: boolean | undefined;
125
125
  editorChangeDelay?: number | undefined;
126
126
  flags?: {
127
- mafs?: false | {
127
+ mafs?: false | ({
128
128
  polygon?: boolean | undefined;
129
129
  linear?: boolean | undefined;
130
+ ray?: boolean | undefined;
130
131
  segment?: boolean | undefined;
131
132
  "linear-system"?: boolean | undefined;
132
- ray?: boolean | undefined;
133
- } | undefined;
133
+ } & {
134
+ "interactive-graph-locked-features-m1"?: boolean | undefined;
135
+ }) | undefined;
134
136
  } | undefined;
135
137
  onWidgetStartProps?: ((widgets: import("../perseus-types").PerseusWidgetsMap) => void) | undefined;
136
138
  }> & {
@@ -199,13 +201,15 @@ declare const _default: Readonly<{
199
201
  crossOutEnabled?: boolean | undefined;
200
202
  editorChangeDelay?: number | undefined;
201
203
  flags?: {
202
- mafs?: false | {
204
+ mafs?: false | ({
203
205
  polygon?: boolean | undefined;
204
206
  linear?: boolean | undefined;
207
+ ray?: boolean | undefined;
205
208
  segment?: boolean | undefined;
206
209
  "linear-system"?: boolean | undefined;
207
- ray?: boolean | undefined;
208
- } | undefined;
210
+ } & {
211
+ "interactive-graph-locked-features-m1"?: boolean | undefined;
212
+ }) | undefined;
209
213
  } | undefined;
210
214
  onWidgetStartProps?: ((widgets: import("../perseus-types").PerseusWidgetsMap) => void) | undefined;
211
215
  }> & {
@@ -274,13 +278,15 @@ declare const _default: Readonly<{
274
278
  crossOutEnabled?: boolean | undefined;
275
279
  editorChangeDelay?: number | undefined;
276
280
  flags?: {
277
- mafs?: false | {
281
+ mafs?: false | ({
278
282
  polygon?: boolean | undefined;
279
283
  linear?: boolean | undefined;
284
+ ray?: boolean | undefined;
280
285
  segment?: boolean | undefined;
281
286
  "linear-system"?: boolean | undefined;
282
- ray?: boolean | undefined;
283
- } | undefined;
287
+ } & {
288
+ "interactive-graph-locked-features-m1"?: boolean | undefined;
289
+ }) | undefined;
284
290
  } | undefined;
285
291
  onWidgetStartProps?: ((widgets: import("../perseus-types").PerseusWidgetsMap) => void) | undefined;
286
292
  }> & {
@@ -346,13 +352,15 @@ declare const _default: Readonly<{
346
352
  crossOutEnabled?: boolean | undefined;
347
353
  editorChangeDelay?: number | undefined;
348
354
  flags?: {
349
- mafs?: false | {
355
+ mafs?: false | ({
350
356
  polygon?: boolean | undefined;
351
357
  linear?: boolean | undefined;
358
+ ray?: boolean | undefined;
352
359
  segment?: boolean | undefined;
353
360
  "linear-system"?: boolean | undefined;
354
- ray?: boolean | undefined;
355
- } | undefined;
361
+ } & {
362
+ "interactive-graph-locked-features-m1"?: boolean | undefined;
363
+ }) | undefined;
356
364
  } | undefined;
357
365
  onWidgetStartProps?: ((widgets: import("../perseus-types").PerseusWidgetsMap) => void) | undefined;
358
366
  }> & {
@@ -421,13 +429,15 @@ declare const _default: Readonly<{
421
429
  crossOutEnabled?: boolean | undefined;
422
430
  editorChangeDelay?: number | undefined;
423
431
  flags?: {
424
- mafs?: false | {
432
+ mafs?: false | ({
425
433
  polygon?: boolean | undefined;
426
434
  linear?: boolean | undefined;
435
+ ray?: boolean | undefined;
427
436
  segment?: boolean | undefined;
428
437
  "linear-system"?: boolean | undefined;
429
- ray?: boolean | undefined;
430
- } | undefined;
438
+ } & {
439
+ "interactive-graph-locked-features-m1"?: boolean | undefined;
440
+ }) | undefined;
431
441
  } | undefined;
432
442
  onWidgetStartProps?: ((widgets: import("../perseus-types").PerseusWidgetsMap) => void) | undefined;
433
443
  }> & {
@@ -496,13 +506,15 @@ declare const _default: Readonly<{
496
506
  crossOutEnabled?: boolean | undefined;
497
507
  editorChangeDelay?: number | undefined;
498
508
  flags?: {
499
- mafs?: false | {
509
+ mafs?: false | ({
500
510
  polygon?: boolean | undefined;
501
511
  linear?: boolean | undefined;
512
+ ray?: boolean | undefined;
502
513
  segment?: boolean | undefined;
503
514
  "linear-system"?: boolean | undefined;
504
- ray?: boolean | undefined;
505
- } | undefined;
515
+ } & {
516
+ "interactive-graph-locked-features-m1"?: boolean | undefined;
517
+ }) | undefined;
506
518
  } | undefined;
507
519
  onWidgetStartProps?: ((widgets: import("../perseus-types").PerseusWidgetsMap) => void) | undefined;
508
520
  }> & {
@@ -0,0 +1,4 @@
1
+ /// <reference types="react" />
2
+ import type { LockedLineType } from "../../perseus-types";
3
+ declare const LockedLine: (props: LockedLineType) => JSX.Element | null;
4
+ export default LockedLine;
@@ -0,0 +1,4 @@
1
+ /// <reference types="react" />
2
+ import type { LockedPointType } from "../../perseus-types";
3
+ declare const LockedPoint: (props: LockedPointType) => JSX.Element;
4
+ export default LockedPoint;
@@ -123,13 +123,15 @@ declare const _default: Readonly<{
123
123
  crossOutEnabled?: boolean | undefined;
124
124
  editorChangeDelay?: number | undefined;
125
125
  flags?: {
126
- mafs?: false | {
126
+ mafs?: false | ({
127
127
  polygon?: boolean | undefined;
128
128
  linear?: boolean | undefined;
129
+ ray?: boolean | undefined;
129
130
  segment?: boolean | undefined;
130
131
  "linear-system"?: boolean | undefined;
131
- ray?: boolean | undefined;
132
- } | undefined;
132
+ } & {
133
+ "interactive-graph-locked-features-m1"?: boolean | undefined;
134
+ }) | undefined;
133
135
  } | undefined;
134
136
  onWidgetStartProps?: ((widgets: import("..").PerseusWidgetsMap) => void) | undefined;
135
137
  }>;
@@ -180,13 +182,15 @@ declare const _default: Readonly<{
180
182
  crossOutEnabled?: boolean | undefined;
181
183
  editorChangeDelay?: number | undefined;
182
184
  flags?: {
183
- mafs?: false | {
185
+ mafs?: false | ({
184
186
  polygon?: boolean | undefined;
185
187
  linear?: boolean | undefined;
188
+ ray?: boolean | undefined;
186
189
  segment?: boolean | undefined;
187
190
  "linear-system"?: boolean | undefined;
188
- ray?: boolean | undefined;
189
- } | undefined;
191
+ } & {
192
+ "interactive-graph-locked-features-m1"?: boolean | undefined;
193
+ }) | undefined;
190
194
  } | undefined;
191
195
  onWidgetStartProps?: ((widgets: import("..").PerseusWidgetsMap) => void) | undefined;
192
196
  }>;
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": "21.5.0",
6
+ "version": "21.6.0",
7
7
  "publishConfig": {
8
8
  "access": "public"
9
9
  },
@@ -27,33 +27,32 @@
27
27
  "dependencies": {
28
28
  "@khanacademy/kas": "^0.3.9",
29
29
  "@khanacademy/kmath": "^0.1.12",
30
- "@khanacademy/math-input": "^17.4.1",
30
+ "@khanacademy/math-input": "^17.5.0",
31
31
  "@khanacademy/perseus-core": "1.4.2",
32
32
  "@khanacademy/perseus-linter": "^0.3.12",
33
33
  "@khanacademy/pure-markdown": "^0.3.1",
34
34
  "@khanacademy/simple-markdown": "^0.11.4",
35
- "@khanacademy/wonder-blocks-banner": "^3.0.33",
36
35
  "mafs": "https://github.com/Khan/mafs/releases/download/v0.18.1%2Bbuild-cd8b2467893342ba0b02100073fe21f93f8b1125/mafs-0.18.1.tgz"
37
36
  },
38
37
  "devDependencies": {
39
- "@khanacademy/wonder-blocks-button": "^6.2.8",
40
- "@khanacademy/wonder-blocks-clickable": "^4.1.0",
41
- "@khanacademy/wonder-blocks-core": "^6.3.1",
42
- "@khanacademy/wonder-blocks-data": "^13.0.6",
43
- "@khanacademy/wonder-blocks-dropdown": "^5.1.6",
44
- "@khanacademy/wonder-blocks-form": "^4.4.3",
38
+ "@khanacademy/wonder-blocks-banner": "^3.0.41",
39
+ "@khanacademy/wonder-blocks-button": "^6.3.0",
40
+ "@khanacademy/wonder-blocks-clickable": "^4.2.0",
41
+ "@khanacademy/wonder-blocks-core": "^6.4.0",
42
+ "@khanacademy/wonder-blocks-data": "^13.0.7",
43
+ "@khanacademy/wonder-blocks-dropdown": "^5.2.0",
44
+ "@khanacademy/wonder-blocks-form": "^4.5.0",
45
45
  "@khanacademy/wonder-blocks-i18n": "^2.0.2",
46
- "@khanacademy/wonder-blocks-icon": "^4.0.1",
47
- "@khanacademy/wonder-blocks-layout": "^2.0.27",
48
- "@khanacademy/wonder-blocks-link": "^6.0.8",
49
- "@khanacademy/wonder-blocks-modal": "^4.2.4",
50
- "@khanacademy/wonder-blocks-pill": "^2.0.3",
51
- "@khanacademy/wonder-blocks-popover": "^3.1.3",
52
- "@khanacademy/wonder-blocks-progress-spinner": "^2.0.27",
53
- "@khanacademy/wonder-blocks-switch": "^1.1.12",
46
+ "@khanacademy/wonder-blocks-icon": "^4.1.0",
47
+ "@khanacademy/wonder-blocks-layout": "^2.0.31",
48
+ "@khanacademy/wonder-blocks-link": "^6.1.0",
49
+ "@khanacademy/wonder-blocks-pill": "^2.2.0",
50
+ "@khanacademy/wonder-blocks-popover": "^3.2.0",
51
+ "@khanacademy/wonder-blocks-progress-spinner": "^2.1.0",
52
+ "@khanacademy/wonder-blocks-switch": "^1.1.15",
54
53
  "@khanacademy/wonder-blocks-tokens": "^1.1.0",
55
- "@khanacademy/wonder-blocks-tooltip": "^2.1.28",
56
- "@khanacademy/wonder-blocks-typography": "^2.1.10",
54
+ "@khanacademy/wonder-blocks-tooltip": "^2.2.1",
55
+ "@khanacademy/wonder-blocks-typography": "^2.1.11",
57
56
  "@khanacademy/wonder-stuff-core": "^1.5.1",
58
57
  "@phosphor-icons/core": "^2.0.2",
59
58
  "@popperjs/core": "^2.10.1",
@@ -72,24 +71,24 @@
72
71
  "underscore": "^1.4.4"
73
72
  },
74
73
  "peerDependencies": {
75
- "@khanacademy/wonder-blocks-button": "^6.2.8",
76
- "@khanacademy/wonder-blocks-clickable": "^4.1.0",
77
- "@khanacademy/wonder-blocks-core": "^6.3.1",
78
- "@khanacademy/wonder-blocks-data": "^13.0.6",
79
- "@khanacademy/wonder-blocks-dropdown": "^5.1.6",
80
- "@khanacademy/wonder-blocks-form": "^4.4.3",
74
+ "@khanacademy/wonder-blocks-banner": "^3.0.41",
75
+ "@khanacademy/wonder-blocks-button": "^6.3.0",
76
+ "@khanacademy/wonder-blocks-clickable": "^4.2.0",
77
+ "@khanacademy/wonder-blocks-core": "^6.4.0",
78
+ "@khanacademy/wonder-blocks-data": "^13.0.7",
79
+ "@khanacademy/wonder-blocks-dropdown": "^5.2.0",
80
+ "@khanacademy/wonder-blocks-form": "^4.5.0",
81
81
  "@khanacademy/wonder-blocks-i18n": "^2.0.2",
82
- "@khanacademy/wonder-blocks-icon": "^4.0.1",
83
- "@khanacademy/wonder-blocks-layout": "^2.0.27",
84
- "@khanacademy/wonder-blocks-link": "^6.0.8",
85
- "@khanacademy/wonder-blocks-modal": "^4.2.4",
86
- "@khanacademy/wonder-blocks-pill": "^2.0.3",
87
- "@khanacademy/wonder-blocks-popover": "^3.1.3",
88
- "@khanacademy/wonder-blocks-progress-spinner": "^2.0.27",
89
- "@khanacademy/wonder-blocks-switch": "^1.1.12",
82
+ "@khanacademy/wonder-blocks-icon": "^4.1.0",
83
+ "@khanacademy/wonder-blocks-layout": "^2.0.31",
84
+ "@khanacademy/wonder-blocks-link": "^6.1.0",
85
+ "@khanacademy/wonder-blocks-pill": "^2.2.0",
86
+ "@khanacademy/wonder-blocks-popover": "^3.2.0",
87
+ "@khanacademy/wonder-blocks-progress-spinner": "^2.1.0",
88
+ "@khanacademy/wonder-blocks-switch": "^1.1.15",
90
89
  "@khanacademy/wonder-blocks-tokens": "^1.1.0",
91
- "@khanacademy/wonder-blocks-tooltip": "^2.1.28",
92
- "@khanacademy/wonder-blocks-typography": "^2.1.10",
90
+ "@khanacademy/wonder-blocks-tooltip": "^2.2.1",
91
+ "@khanacademy/wonder-blocks-typography": "^2.1.11",
93
92
  "@khanacademy/wonder-stuff-core": "^1.5.1",
94
93
  "@phosphor-icons/core": "^2.0.2",
95
94
  "@popperjs/core": "^2.10.1",