@khanacademy/perseus 77.10.2 → 78.0.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.
Files changed (42) hide show
  1. package/dist/components/graphie.d.ts +0 -1
  2. package/dist/components/svg-image.d.ts +2 -3
  3. package/dist/es/index.css +1 -1
  4. package/dist/es/index.css.map +1 -1
  5. package/dist/es/index.js +39 -35
  6. package/dist/es/index.js.map +1 -1
  7. package/dist/index.css +1 -1
  8. package/dist/index.css.map +1 -1
  9. package/dist/index.js +39 -35
  10. package/dist/index.js.map +1 -1
  11. package/dist/renderer.d.ts +0 -1
  12. package/dist/server-item-renderer.d.ts +1 -7
  13. package/dist/testing/feature-flags-util.d.ts +0 -2
  14. package/dist/testing/item-flipbook/item-flipbook-model.d.ts +22 -0
  15. package/dist/testing/item-flipbook/item-flipbook-view-model.d.ts +57 -0
  16. package/dist/testing/item-flipbook/item-flipbook-view.d.ts +7 -0
  17. package/dist/testing/item-flipbook/item-flipbook.d.ts +2 -0
  18. package/dist/testing/item-flipbook/safe-parse-perseus-item.d.ts +2 -0
  19. package/dist/testing/item-renderer-hooks.d.ts +1 -6
  20. package/dist/types.d.ts +0 -48
  21. package/dist/util/graphie.d.ts +0 -1
  22. package/dist/widget-container.d.ts +0 -1
  23. package/dist/widgets/dropdown/dropdown.d.ts +1 -9
  24. package/dist/widgets/expression/expression.d.ts +2 -18
  25. package/dist/widgets/interactive-graphs/graphs/components/movable-line/index.d.ts +2 -0
  26. package/dist/widgets/interactive-graphs/graphs/components/movable-line/line.d.ts +14 -0
  27. package/dist/widgets/interactive-graphs/graphs/components/movable-line/movable-line.d.ts +18 -0
  28. package/dist/widgets/interactive-graphs/graphs/components/{movable-line.d.ts → movable-line/util.d.ts} +0 -20
  29. package/dist/widgets/interactive-graphs/graphs/components/movable-point.d.ts +0 -2
  30. package/dist/widgets/interactive-graphs/graphs/components/use-control-arrowhead.d.ts +0 -2
  31. package/dist/widgets/interactive-graphs/graphs/components/use-control-point.d.ts +0 -2
  32. package/dist/widgets/interactive-graphs/graphs/screenreader-text.d.ts +6 -0
  33. package/dist/widgets/interactive-graphs/graphs/utils.d.ts +8 -2
  34. package/dist/widgets/interactive-graphs/interactive-graph.d.ts +1 -9
  35. package/dist/widgets/interactive-graphs/point-labels.d.ts +2 -0
  36. package/dist/widgets/interactive-graphs/types.d.ts +46 -2
  37. package/dist/widgets/label-image/label-image.d.ts +1 -9
  38. package/dist/widgets/mock-widgets/mock-widget.d.ts +1 -9
  39. package/dist/widgets/numeric-input/numeric-input.class.d.ts +1 -9
  40. package/dist/widgets/numeric-input/numeric-input.d.ts +2 -18
  41. package/dist/widgets/table/table.d.ts +1 -9
  42. package/package.json +9 -9
@@ -35,6 +35,14 @@ type MoveCenterAnnouncement = {
35
35
  x: number;
36
36
  y: number;
37
37
  };
38
+ type MoveQuadraticPointAnnouncement = {
39
+ type: "move-quadratic-point";
40
+ pointIndex: number;
41
+ pointLabel: string | number;
42
+ x: number;
43
+ y: number;
44
+ vertex: Coord | undefined;
45
+ };
38
46
  type MoveVectorPointAnnouncement = {
39
47
  type: "move-vector-point";
40
48
  pointIndex: number;
@@ -94,6 +102,42 @@ type MoveSinusoidPointAnnouncement = {
94
102
  y: number;
95
103
  otherY: number;
96
104
  };
105
+ type MoveExponentialPointAnnouncement = {
106
+ type: "move-exponential-point";
107
+ pointIndex: number;
108
+ pointLabel: string | number;
109
+ x: number;
110
+ y: number;
111
+ };
112
+ type MoveLogarithmPointAnnouncement = {
113
+ type: "move-logarithm-point";
114
+ pointIndex: number;
115
+ pointLabel: string | number;
116
+ x: number;
117
+ y: number;
118
+ };
119
+ type MoveExponentialAsymptoteAnnouncement = {
120
+ type: "move-exponential-asymptote";
121
+ asymptoteY: number;
122
+ };
123
+ type MoveTangentPointAnnouncement = {
124
+ type: "move-tangent-point";
125
+ pointIndex: number;
126
+ pointLabel: string | number;
127
+ x: number;
128
+ y: number;
129
+ };
130
+ type MoveLogarithmAsymptoteAnnouncement = {
131
+ type: "move-logarithm-asymptote";
132
+ asymptoteX: number;
133
+ };
134
+ type MoveAbsoluteValuePointAnnouncement = {
135
+ type: "move-absolute-value-point";
136
+ pointIndex: number;
137
+ pointLabel: string | number;
138
+ x: number;
139
+ y: number;
140
+ };
97
141
  type MoveAnglePointAnnouncement = {
98
142
  type: "move-angle-point";
99
143
  pointIndex: number;
@@ -107,10 +151,11 @@ type MovePolygonAnnouncement = {
107
151
  coords: ReadonlyArray<Coord>;
108
152
  pointLabels?: ReadonlyArray<string>;
109
153
  };
110
- export type InteractiveGraphStateAnnouncement = MovePointAnnouncement | MoveRadiusPointAnnouncement | MoveCenterAnnouncement | MoveVectorPointAnnouncement | MoveVectorLineAnnouncement | MoveSegmentPointAnnouncement | MoveSegmentLineAnnouncement | MoveLinearSystemPointAnnouncement | MoveLinearSystemLineAnnouncement | MoveRayPointAnnouncement | MoveRayLineAnnouncement | MoveLinearLineAnnouncement | MoveSinusoidPointAnnouncement | MoveAnglePointAnnouncement | MovePolygonAnnouncement;
154
+ export type InteractiveGraphStateAnnouncement = MovePointAnnouncement | MoveRadiusPointAnnouncement | MoveCenterAnnouncement | MoveQuadraticPointAnnouncement | MoveVectorPointAnnouncement | MoveVectorLineAnnouncement | MoveSegmentPointAnnouncement | MoveSegmentLineAnnouncement | MoveLinearSystemPointAnnouncement | MoveLinearSystemLineAnnouncement | MoveRayPointAnnouncement | MoveRayLineAnnouncement | MoveLinearLineAnnouncement | MoveSinusoidPointAnnouncement | MoveExponentialPointAnnouncement | MoveExponentialAsymptoteAnnouncement | MoveLogarithmPointAnnouncement | MoveLogarithmAsymptoteAnnouncement | MoveTangentPointAnnouncement | MoveAbsoluteValuePointAnnouncement | MoveAnglePointAnnouncement | MovePolygonAnnouncement;
111
155
  export interface InteractiveGraphStateCommon {
112
156
  hasBeenInteractedWith: boolean;
113
157
  pointLabels?: string[];
158
+ showPointLabels?: boolean;
114
159
  range: [xRange: Interval, yRange: Interval];
115
160
  snapStep: vec.Vector2;
116
161
  stateAnnouncement?: InteractiveGraphStateAnnouncement;
@@ -208,6 +253,5 @@ export type GraphDimensions = {
208
253
  width: number;
209
254
  height: number;
210
255
  };
211
- export type AriaLive = "off" | "assertive" | "polite" | undefined;
212
256
  export type SnapTo = "grid" | "angles" | "sides";
213
257
  export {};
@@ -135,7 +135,6 @@ declare const _default: {
135
135
  baseElements?: {
136
136
  Link: React.ComponentType<any>;
137
137
  };
138
- imagePreloader?: (dimensions: import("../../types").Dimensions) => React.ReactNode;
139
138
  trackInteraction?: (args: {
140
139
  type: string;
141
140
  id: string;
@@ -144,25 +143,18 @@ declare const _default: {
144
143
  visible: number;
145
144
  }>) => void;
146
145
  customKeypad?: boolean;
147
- nativeKeypadProxy?: (blur: () => void) => import("@khanacademy/math-input").KeypadAPI;
148
146
  isMobile?: boolean;
149
147
  isMobileApp?: boolean;
150
- setDrawingAreaAvailable?: (arg1: boolean) => unknown;
151
148
  hintProgressColor?: string;
152
- canScrollPage?: boolean;
153
- editorChangeDelay?: number;
154
- flags?: Record<"image-widget-upgrade-gif-controls" | "input-number-to-numeric-input", boolean>;
149
+ flags?: Record<"input-number-to-numeric-input", boolean>;
155
150
  }> & {
156
151
  baseElements: NonNullable<import("../..").APIOptions["baseElements"]>;
157
- canScrollPage: NonNullable<import("../..").APIOptions["canScrollPage"]>;
158
- editorChangeDelay: NonNullable<import("../..").APIOptions["editorChangeDelay"]>;
159
152
  isArticle: NonNullable<import("../..").APIOptions["isArticle"]>;
160
153
  isMobile: NonNullable<import("../..").APIOptions["isMobile"]>;
161
154
  isMobileApp: NonNullable<import("../..").APIOptions["isMobileApp"]>;
162
155
  editingDisabled: NonNullable<import("../..").APIOptions["editingDisabled"]>;
163
156
  onFocusChange: NonNullable<import("../..").APIOptions["onFocusChange"]>;
164
157
  readOnly: NonNullable<import("../..").APIOptions["readOnly"]>;
165
- setDrawingAreaAvailable: NonNullable<import("../..").APIOptions["setDrawingAreaAvailable"]>;
166
158
  showAlignmentOptions: NonNullable<import("../..").APIOptions["showAlignmentOptions"]>;
167
159
  }>;
168
160
  keypadElement?: any;
@@ -59,7 +59,6 @@ declare class MockWidgetComponent extends React.Component<Props> implements Widg
59
59
  baseElements?: {
60
60
  Link: React.ComponentType<any>;
61
61
  };
62
- imagePreloader?: (dimensions: import("../../types").Dimensions) => React.ReactNode;
63
62
  trackInteraction?: (args: {
64
63
  type: string;
65
64
  id: string;
@@ -68,25 +67,18 @@ declare class MockWidgetComponent extends React.Component<Props> implements Widg
68
67
  visible: number;
69
68
  }>) => void;
70
69
  customKeypad?: boolean;
71
- nativeKeypadProxy?: (blur: () => void) => import("@khanacademy/math-input").KeypadAPI;
72
70
  isMobile?: boolean;
73
71
  isMobileApp?: boolean;
74
- setDrawingAreaAvailable?: (arg1: boolean) => unknown;
75
72
  hintProgressColor?: string;
76
- canScrollPage?: boolean;
77
- editorChangeDelay?: number;
78
- flags?: Record<"image-widget-upgrade-gif-controls" | "input-number-to-numeric-input", boolean>;
73
+ flags?: Record<"input-number-to-numeric-input", boolean>;
79
74
  }> & {
80
75
  baseElements: NonNullable<import("../..").APIOptions["baseElements"]>;
81
- canScrollPage: NonNullable<import("../..").APIOptions["canScrollPage"]>;
82
- editorChangeDelay: NonNullable<import("../..").APIOptions["editorChangeDelay"]>;
83
76
  isArticle: NonNullable<import("../..").APIOptions["isArticle"]>;
84
77
  isMobile: NonNullable<import("../..").APIOptions["isMobile"]>;
85
78
  isMobileApp: NonNullable<import("../..").APIOptions["isMobileApp"]>;
86
79
  editingDisabled: NonNullable<import("../..").APIOptions["editingDisabled"]>;
87
80
  onFocusChange: NonNullable<import("../..").APIOptions["onFocusChange"]>;
88
81
  readOnly: NonNullable<import("../..").APIOptions["readOnly"]>;
89
- setDrawingAreaAvailable: NonNullable<import("../..").APIOptions["setDrawingAreaAvailable"]>;
90
82
  showAlignmentOptions: NonNullable<import("../..").APIOptions["showAlignmentOptions"]>;
91
83
  }>;
92
84
  keypadElement?: any;
@@ -67,7 +67,6 @@ export declare class NumericInput extends React.Component<NumericInputProps> imp
67
67
  baseElements?: {
68
68
  Link: React.ComponentType<any>;
69
69
  };
70
- imagePreloader?: (dimensions: import("../../types").Dimensions) => React.ReactNode;
71
70
  trackInteraction?: (args: {
72
71
  type: string;
73
72
  id: string;
@@ -76,25 +75,18 @@ export declare class NumericInput extends React.Component<NumericInputProps> imp
76
75
  visible: number;
77
76
  }>) => void;
78
77
  customKeypad?: boolean;
79
- nativeKeypadProxy?: (blur: () => void) => import("@khanacademy/math-input").KeypadAPI;
80
78
  isMobile?: boolean;
81
79
  isMobileApp?: boolean;
82
- setDrawingAreaAvailable?: (arg1: boolean) => unknown;
83
80
  hintProgressColor?: string;
84
- canScrollPage?: boolean;
85
- editorChangeDelay?: number;
86
- flags?: Record<"image-widget-upgrade-gif-controls" | "input-number-to-numeric-input", boolean>;
81
+ flags?: Record<"input-number-to-numeric-input", boolean>;
87
82
  }> & {
88
83
  baseElements: NonNullable<import("../..").APIOptions["baseElements"]>;
89
- canScrollPage: NonNullable<import("../..").APIOptions["canScrollPage"]>;
90
- editorChangeDelay: NonNullable<import("../..").APIOptions["editorChangeDelay"]>;
91
84
  isArticle: NonNullable<import("../..").APIOptions["isArticle"]>;
92
85
  isMobile: NonNullable<import("../..").APIOptions["isMobile"]>;
93
86
  isMobileApp: NonNullable<import("../..").APIOptions["isMobileApp"]>;
94
87
  editingDisabled: NonNullable<import("../..").APIOptions["editingDisabled"]>;
95
88
  onFocusChange: NonNullable<import("../..").APIOptions["onFocusChange"]>;
96
89
  readOnly: NonNullable<import("../..").APIOptions["readOnly"]>;
97
- setDrawingAreaAvailable: NonNullable<import("../..").APIOptions["setDrawingAreaAvailable"]>;
98
90
  showAlignmentOptions: NonNullable<import("../..").APIOptions["showAlignmentOptions"]>;
99
91
  }>;
100
92
  keypadElement?: any;
@@ -29,7 +29,6 @@ export declare const NumericInputComponent: React.ForwardRefExoticComponent<impo
29
29
  baseElements?: {
30
30
  Link: React.ComponentType<any>;
31
31
  };
32
- imagePreloader?: (dimensions: import("../../types").Dimensions) => React.ReactNode;
33
32
  trackInteraction?: (args: {
34
33
  type: string;
35
34
  id: string;
@@ -38,25 +37,18 @@ export declare const NumericInputComponent: React.ForwardRefExoticComponent<impo
38
37
  visible: number;
39
38
  }>) => void;
40
39
  customKeypad?: boolean;
41
- nativeKeypadProxy?: (blur: () => void) => import("@khanacademy/math-input").KeypadAPI;
42
40
  isMobile?: boolean;
43
41
  isMobileApp?: boolean;
44
- setDrawingAreaAvailable?: (arg1: boolean) => unknown;
45
42
  hintProgressColor?: string;
46
- canScrollPage?: boolean;
47
- editorChangeDelay?: number;
48
- flags?: Record<"image-widget-upgrade-gif-controls" | "input-number-to-numeric-input", boolean>;
43
+ flags?: Record<"input-number-to-numeric-input", boolean>;
49
44
  }> & {
50
45
  baseElements: NonNullable<import("../..").APIOptions["baseElements"]>;
51
- canScrollPage: NonNullable<import("../..").APIOptions["canScrollPage"]>;
52
- editorChangeDelay: NonNullable<import("../..").APIOptions["editorChangeDelay"]>;
53
46
  isArticle: NonNullable<import("../..").APIOptions["isArticle"]>;
54
47
  isMobile: NonNullable<import("../..").APIOptions["isMobile"]>;
55
48
  isMobileApp: NonNullable<import("../..").APIOptions["isMobileApp"]>;
56
49
  editingDisabled: NonNullable<import("../..").APIOptions["editingDisabled"]>;
57
50
  onFocusChange: NonNullable<import("../..").APIOptions["onFocusChange"]>;
58
51
  readOnly: NonNullable<import("../..").APIOptions["readOnly"]>;
59
- setDrawingAreaAvailable: NonNullable<import("../..").APIOptions["setDrawingAreaAvailable"]>;
60
52
  showAlignmentOptions: NonNullable<import("../..").APIOptions["showAlignmentOptions"]>;
61
53
  }>;
62
54
  keypadElement?: any;
@@ -88,7 +80,6 @@ export declare const NumericInputComponent: React.ForwardRefExoticComponent<impo
88
80
  baseElements?: {
89
81
  Link: React.ComponentType<any>;
90
82
  };
91
- imagePreloader?: (dimensions: import("../../types").Dimensions) => React.ReactNode;
92
83
  trackInteraction?: (args: {
93
84
  type: string;
94
85
  id: string;
@@ -97,25 +88,18 @@ export declare const NumericInputComponent: React.ForwardRefExoticComponent<impo
97
88
  visible: number;
98
89
  }>) => void;
99
90
  customKeypad?: boolean;
100
- nativeKeypadProxy?: (blur: () => void) => import("@khanacademy/math-input").KeypadAPI;
101
91
  isMobile?: boolean;
102
92
  isMobileApp?: boolean;
103
- setDrawingAreaAvailable?: (arg1: boolean) => unknown;
104
93
  hintProgressColor?: string;
105
- canScrollPage?: boolean;
106
- editorChangeDelay?: number;
107
- flags?: Record<"image-widget-upgrade-gif-controls" | "input-number-to-numeric-input", boolean>;
94
+ flags?: Record<"input-number-to-numeric-input", boolean>;
108
95
  }> & {
109
96
  baseElements: NonNullable<import("../..").APIOptions["baseElements"]>;
110
- canScrollPage: NonNullable<import("../..").APIOptions["canScrollPage"]>;
111
- editorChangeDelay: NonNullable<import("../..").APIOptions["editorChangeDelay"]>;
112
97
  isArticle: NonNullable<import("../..").APIOptions["isArticle"]>;
113
98
  isMobile: NonNullable<import("../..").APIOptions["isMobile"]>;
114
99
  isMobileApp: NonNullable<import("../..").APIOptions["isMobileApp"]>;
115
100
  editingDisabled: NonNullable<import("../..").APIOptions["editingDisabled"]>;
116
101
  onFocusChange: NonNullable<import("../..").APIOptions["onFocusChange"]>;
117
102
  readOnly: NonNullable<import("../..").APIOptions["readOnly"]>;
118
- setDrawingAreaAvailable: NonNullable<import("../..").APIOptions["setDrawingAreaAvailable"]>;
119
103
  showAlignmentOptions: NonNullable<import("../..").APIOptions["showAlignmentOptions"]>;
120
104
  }>>;
121
105
  coefficient: NonNullable<boolean>;
@@ -67,7 +67,6 @@ declare class Table extends React.Component<Props> implements Widget {
67
67
  baseElements?: {
68
68
  Link: React.ComponentType<any>;
69
69
  };
70
- imagePreloader?: (dimensions: import("../../types").Dimensions) => React.ReactNode;
71
70
  trackInteraction?: (args: {
72
71
  type: string;
73
72
  id: string;
@@ -76,25 +75,18 @@ declare class Table extends React.Component<Props> implements Widget {
76
75
  visible: number;
77
76
  }>) => void;
78
77
  customKeypad?: boolean;
79
- nativeKeypadProxy?: (blur: () => void) => import("@khanacademy/math-input").KeypadAPI;
80
78
  isMobile?: boolean;
81
79
  isMobileApp?: boolean;
82
- setDrawingAreaAvailable?: (arg1: boolean) => unknown;
83
80
  hintProgressColor?: string;
84
- canScrollPage?: boolean;
85
- editorChangeDelay?: number;
86
- flags?: Record<"image-widget-upgrade-gif-controls" | "input-number-to-numeric-input", boolean>;
81
+ flags?: Record<"input-number-to-numeric-input", boolean>;
87
82
  }> & {
88
83
  baseElements: NonNullable<import("../..").APIOptions["baseElements"]>;
89
- canScrollPage: NonNullable<import("../..").APIOptions["canScrollPage"]>;
90
- editorChangeDelay: NonNullable<import("../..").APIOptions["editorChangeDelay"]>;
91
84
  isArticle: NonNullable<import("../..").APIOptions["isArticle"]>;
92
85
  isMobile: NonNullable<import("../..").APIOptions["isMobile"]>;
93
86
  isMobileApp: NonNullable<import("../..").APIOptions["isMobileApp"]>;
94
87
  editingDisabled: NonNullable<import("../..").APIOptions["editingDisabled"]>;
95
88
  onFocusChange: NonNullable<import("../..").APIOptions["onFocusChange"]>;
96
89
  readOnly: NonNullable<import("../..").APIOptions["readOnly"]>;
97
- setDrawingAreaAvailable: NonNullable<import("../..").APIOptions["setDrawingAreaAvailable"]>;
98
90
  showAlignmentOptions: NonNullable<import("../..").APIOptions["showAlignmentOptions"]>;
99
91
  }>;
100
92
  keypadElement?: any;
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": "77.10.2",
6
+ "version": "78.0.0",
7
7
  "publishConfig": {
8
8
  "access": "public"
9
9
  },
@@ -42,16 +42,16 @@
42
42
  "mafs": "0.19.0",
43
43
  "tiny-invariant": "1.3.1",
44
44
  "uuid": "^10.0.0",
45
- "@khanacademy/kmath": "2.4.18",
46
- "@khanacademy/math-input": "26.4.32",
47
- "@khanacademy/perseus-core": "27.3.0",
48
- "@khanacademy/perseus-linter": "5.0.15",
49
- "@khanacademy/perseus-score": "8.11.2",
45
+ "@khanacademy/kas": "2.2.3",
46
+ "@khanacademy/keypad-context": "3.2.62",
47
+ "@khanacademy/kmath": "2.4.20",
48
+ "@khanacademy/math-input": "26.4.34",
49
+ "@khanacademy/perseus-core": "28.0.0",
50
+ "@khanacademy/perseus-linter": "5.1.1",
51
+ "@khanacademy/perseus-score": "8.11.4",
50
52
  "@khanacademy/perseus-utils": "2.1.5",
51
53
  "@khanacademy/pure-markdown": "2.2.8",
52
- "@khanacademy/simple-markdown": "2.2.3",
53
- "@khanacademy/keypad-context": "3.2.60",
54
- "@khanacademy/kas": "2.2.3"
54
+ "@khanacademy/simple-markdown": "2.2.3"
55
55
  },
56
56
  "devDependencies": {
57
57
  "@khanacademy/wonder-blocks-announcer": "1.1.1",