@khanacademy/perseus 43.1.0 → 45.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 (57) hide show
  1. package/dist/all-widgets.d.ts +2 -23
  2. package/dist/basic-widgets.d.ts +2 -23
  3. package/dist/components/graph.d.ts +1 -0
  4. package/dist/components/icon.d.ts +0 -1
  5. package/dist/components/multi-button-group.d.ts +1 -0
  6. package/dist/components/tooltip.d.ts +1 -0
  7. package/dist/es/index.js +276 -212
  8. package/dist/es/index.js.map +1 -1
  9. package/dist/es/strings.js +4 -2
  10. package/dist/es/strings.js.map +1 -1
  11. package/dist/extra-widgets.d.ts +2 -23
  12. package/dist/index.d.ts +4 -2
  13. package/dist/index.js +273 -205
  14. package/dist/index.js.map +1 -1
  15. package/dist/interactive2/interactive-util.d.ts +1 -1
  16. package/dist/interactive2/movable-point-options.d.ts +2 -2
  17. package/dist/interactive2/movable-point.d.ts +7 -7
  18. package/dist/interactive2/objective_.d.ts +1 -1
  19. package/dist/jipt-paragraphs.d.ts +2 -2
  20. package/dist/perseus-api.d.ts +2 -77
  21. package/dist/perseus-types.d.ts +3 -10
  22. package/dist/renderer-util.d.ts +4 -2
  23. package/dist/renderer.d.ts +6 -10
  24. package/dist/server-item-renderer.d.ts +58 -50
  25. package/dist/strings.d.ts +1 -0
  26. package/dist/strings.js +4 -2
  27. package/dist/strings.js.map +1 -1
  28. package/dist/styles/global-styles.d.ts +0 -1
  29. package/dist/styles/shared.d.ts +0 -1
  30. package/dist/traversal.d.ts +1 -1
  31. package/dist/types.d.ts +5 -0
  32. package/dist/util/a11y.d.ts +0 -1
  33. package/dist/util/debounce.d.ts +1 -1
  34. package/dist/util/parse-perseus-json/perseus-parsers/graded-group-widget.d.ts +2 -2
  35. package/dist/widgets/definition/definition.d.ts +1 -1
  36. package/dist/widgets/deprecated-standin/deprecated-standin.d.ts +1 -1
  37. package/dist/widgets/dropdown/dropdown.d.ts +9 -1
  38. package/dist/widgets/explanation/explanation.d.ts +1 -1
  39. package/dist/widgets/expression/expression.d.ts +92 -217
  40. package/dist/widgets/group/group.d.ts +1 -1
  41. package/dist/widgets/image/image.d.ts +1 -1
  42. package/dist/widgets/interaction/interaction.d.ts +1 -1
  43. package/dist/widgets/interactive-graphs/graphs/quadratic.d.ts +1 -1
  44. package/dist/widgets/label-image/answer-pill.d.ts +0 -1
  45. package/dist/widgets/label-image/label-image.d.ts +5 -65
  46. package/dist/widgets/label-image/marker.d.ts +0 -1
  47. package/dist/widgets/measurer/measurer.d.ts +1 -1
  48. package/dist/widgets/molecule/molecule.d.ts +1 -1
  49. package/dist/widgets/passage/passage-markdown.d.ts +2 -2
  50. package/dist/widgets/passage/passage.d.ts +1 -1
  51. package/dist/widgets/passage-ref/passage-ref.d.ts +1 -1
  52. package/dist/widgets/passage-ref-target/passage-ref-target.d.ts +1 -1
  53. package/dist/widgets/radio/choice-icon/shared-styles.d.ts +0 -1
  54. package/dist/widgets/radio/choice-none-above.d.ts +1 -1
  55. package/dist/widgets/radio/radio.d.ts +2 -2
  56. package/dist/widgets/video/video.d.ts +1 -1
  57. package/package.json +2 -2
@@ -14,7 +14,7 @@ declare const InteractiveUtil: {
14
14
  /**
15
15
  * Turn a function or an array of functions into an array of functions
16
16
  */
17
- readonly arrayify: (funcOrArray: ((...args: ReadonlyArray<unknown>) => unknown) | readonly unknown[]) => ReadonlyArray<unknown>;
17
+ readonly arrayify: (funcOrArray: ((...args: ReadonlyArray<unknown>) => unknown) | ReadonlyArray<unknown>) => ReadonlyArray<unknown>;
18
18
  /**
19
19
  * Convert all function-or-array arguments to arrays of functions
20
20
  */
@@ -19,8 +19,8 @@ declare const _default: {
19
19
  };
20
20
  constraints: {
21
21
  readonly fixed: () => Constraint;
22
- readonly snap: (snap?: number | null | undefined) => Constraint;
23
- readonly bound: (range?: [Interval, Interval] | undefined, snap?: number | Coord | undefined, optionalPaddingPx?: number | undefined) => Constraint;
22
+ readonly snap: (snap?: number | null) => Constraint;
23
+ readonly bound: (range?: [Interval, Interval], snap?: Coord | number, optionalPaddingPx?: number) => Constraint;
24
24
  };
25
25
  onMove: {
26
26
  standard: null;
@@ -66,14 +66,14 @@ export declare class MovablePoint {
66
66
  onMove: ((coord: Coord, prevCoord: Coord) => void)[];
67
67
  onMoveEnd: unknown[];
68
68
  onMoveStart: unknown[];
69
- onRemove?: (() => void) | undefined;
69
+ onRemove?: () => void;
70
70
  outOfBounds: boolean;
71
71
  pointSize: number;
72
72
  remove: (() => void)[];
73
73
  shadow: boolean;
74
74
  static: boolean;
75
75
  tooltip: boolean;
76
- touchOffset: Coord | null;
76
+ touchOffset: null | Coord;
77
77
  mouseTarget: unknown;
78
78
  visibleShape: {
79
79
  wrapper: HTMLElement;
@@ -82,9 +82,9 @@ export declare class MovablePoint {
82
82
  };
83
83
  normalStyle: Record<string, any>;
84
84
  highlightStyle: Record<string, any>;
85
- isHovering?: boolean | undefined;
86
- isMouseOver?: boolean | undefined;
87
- isDragging?: boolean | undefined;
85
+ isHovering?: boolean;
86
+ isMouseOver?: boolean;
87
+ isDragging?: boolean;
88
88
  };
89
89
  update(options: Partial<State>): void;
90
90
  draw(): void;
@@ -179,8 +179,8 @@ export declare class MovablePoint {
179
179
  };
180
180
  static constraints: {
181
181
  readonly fixed: () => Constraint;
182
- readonly snap: (snap?: number | null | undefined) => Constraint;
183
- readonly bound: (range?: [import("../util/interval").Interval, import("../util/interval").Interval] | undefined, snap?: number | Coord | undefined, optionalPaddingPx?: number | undefined) => Constraint;
182
+ readonly snap: (snap?: number | null) => Constraint;
183
+ readonly bound: (range?: [import("../util/interval").Interval, import("../util/interval").Interval], snap?: Coord | number, optionalPaddingPx?: number) => Constraint;
184
184
  };
185
185
  static onMove: {
186
186
  standard: null;
@@ -8,6 +8,6 @@
8
8
  declare const _default: {
9
9
  pluck: (table: any, subKey: string) => any;
10
10
  mapObject: <K extends string, V, U>(obj: Record<K, V>, lambda: (arg1: V, arg2: K) => U) => Record<K, U>;
11
- mapObjectFromArray: <K_1 extends string, V_1>(arr: readonly K_1[], lambda: (arg1: K_1) => V_1) => Record<K_1, V_1>;
11
+ mapObjectFromArray: <K extends string, V>(arr: ReadonlyArray<K>, lambda: (arg1: K) => V) => Record<K, V>;
12
12
  };
13
13
  export default _default;
@@ -2,7 +2,7 @@
2
2
  * Paragraph parsing/splitting for article jipt i18n
3
3
  */
4
4
  declare const _default: {
5
- parseToArray: (source: string) => string[];
6
- joinFromArray: (paragraphs: readonly string[]) => string;
5
+ parseToArray: (source: string) => Array<string>;
6
+ joinFromArray: (paragraphs: ReadonlyArray<string>) => string;
7
7
  };
8
8
  export default _default;
@@ -28,7 +28,7 @@
28
28
  * semantic meaning across the same perseus api major version.
29
29
  */
30
30
  import PropTypes from "prop-types";
31
- import * as React from "react";
31
+ import type { APIOptionsWithDefaults } from "./types";
32
32
  export declare const ApiOptions: {
33
33
  readonly propTypes: PropTypes.Validator<NonNullable<PropTypes.InferProps<{
34
34
  isArticle: PropTypes.Validator<boolean>;
@@ -56,82 +56,7 @@ export declare const ApiOptions: {
56
56
  crossOutEnabled: PropTypes.Requireable<boolean>;
57
57
  editorChangeDelay: PropTypes.Requireable<number>;
58
58
  }>>>;
59
- readonly defaults: Readonly<Readonly<{
60
- isArticle?: boolean | undefined;
61
- onFocusChange?: ((newFocusPath: import("./types").FocusPath, oldFocusPath: import("./types").FocusPath, keypadHeight?: number | undefined, focusedElement?: HTMLElement | undefined) => unknown) | undefined;
62
- GroupMetadataEditor?: React.ComponentType<any> | undefined;
63
- showAlignmentOptions?: boolean | undefined;
64
- readOnly?: boolean | undefined;
65
- answerableCallback?: ((arg1: boolean) => unknown) | undefined;
66
- getAnotherHint?: (() => unknown) | undefined;
67
- interactionCallback?: ((widgetData: {
68
- [widgetId: string]: any;
69
- }) => void) | undefined;
70
- groupAnnotator?: ((groupNumber: number, widgetId: string) => React.ReactNode) | undefined;
71
- imagePlaceholder?: React.ReactNode;
72
- widgetPlaceholder?: React.ReactNode;
73
- baseElements?: {
74
- Link: React.ComponentType<any>;
75
- } | undefined;
76
- imagePreloader?: ((dimensions: import("./types").Dimensions) => React.ReactNode) | undefined;
77
- trackInteraction?: ((args: {
78
- type: string;
79
- id: string;
80
- correct?: boolean | undefined;
81
- } & Partial<import("./types").TrackingGradedGroupExtraArguments> & Partial<{
82
- visible: number;
83
- }>) => void) | undefined;
84
- customKeypad?: boolean | undefined;
85
- nativeKeypadProxy?: ((blur: () => void) => import("@khanacademy/math-input").KeypadAPI) | undefined;
86
- isMobile?: boolean | undefined;
87
- setDrawingAreaAvailable?: ((arg1: boolean) => unknown) | undefined;
88
- hintProgressColor?: string | undefined;
89
- canScrollPage?: boolean | undefined;
90
- crossOutEnabled?: boolean | undefined;
91
- editorChangeDelay?: number | undefined;
92
- flags?: {
93
- mafs?: false | ({
94
- none?: boolean | undefined;
95
- linear?: boolean | undefined;
96
- circle?: boolean | undefined;
97
- polygon?: boolean | undefined;
98
- point?: boolean | undefined;
99
- quadratic?: boolean | undefined;
100
- sinusoid?: boolean | undefined;
101
- angle?: boolean | undefined;
102
- "linear-system"?: boolean | undefined;
103
- ray?: boolean | undefined;
104
- segment?: boolean | undefined;
105
- "unlimited-polygon"?: boolean | undefined;
106
- "unlimited-point"?: boolean | undefined;
107
- } & {
108
- "interactive-graph-locked-features-labels"?: boolean | undefined;
109
- "locked-figures-aria"?: boolean | undefined;
110
- "locked-point-labels"?: boolean | undefined;
111
- "locked-line-labels"?: boolean | undefined;
112
- "locked-vector-labels"?: boolean | undefined;
113
- "locked-ellipse-labels"?: boolean | undefined;
114
- "locked-polygon-labels"?: boolean | undefined;
115
- "locked-function-labels"?: boolean | undefined;
116
- }) | undefined;
117
- } | undefined;
118
- onWidgetStartProps?: ((widgets: import("./perseus-types").PerseusWidgetsMap) => void) | undefined;
119
- }> & {
120
- GroupMetadataEditor: NonNullable<React.ComponentType<any> | undefined>;
121
- baseElements: {
122
- Link: React.ComponentType<any>;
123
- };
124
- canScrollPage: NonNullable<boolean | undefined>;
125
- crossOutEnabled: NonNullable<boolean | undefined>;
126
- editorChangeDelay: number;
127
- groupAnnotator: (groupNumber: number, widgetId: string) => React.ReactNode;
128
- isArticle: NonNullable<boolean | undefined>;
129
- isMobile: NonNullable<boolean | undefined>;
130
- onFocusChange: (newFocusPath: import("./types").FocusPath, oldFocusPath: import("./types").FocusPath, keypadHeight?: number | undefined, focusedElement?: HTMLElement | undefined) => unknown;
131
- readOnly: NonNullable<boolean | undefined>;
132
- setDrawingAreaAvailable: (arg1: boolean) => unknown;
133
- showAlignmentOptions: NonNullable<boolean | undefined>;
134
- }>;
59
+ readonly defaults: APIOptionsWithDefaults;
135
60
  };
136
61
  export declare const ClassNames: {
137
62
  readonly RENDERER: "perseus-renderer";
@@ -207,14 +207,13 @@ export type PerseusDropdownWidgetOptions = {
207
207
  choices: ReadonlyArray<PerseusDropdownChoice>;
208
208
  placeholder: string;
209
209
  static: boolean;
210
+ visibleLabel?: string;
211
+ ariaLabel?: string;
210
212
  };
211
213
  export type PerseusDropdownChoice = {
212
214
  content: string;
213
215
  correct: boolean;
214
216
  };
215
- export type PerseusExampleWidgetOptions = {
216
- value: string;
217
- };
218
217
  export type PerseusExplanationWidgetOptions = {
219
218
  showPrompt: string;
220
219
  hidePrompt: string;
@@ -905,11 +904,5 @@ export type PerseusMoleculeRendererWidgetOptions = {
905
904
  export type PerseusPassageRefTargetWidgetOptions = {
906
905
  content: string;
907
906
  };
908
- export type PerseusSimpleMarkdownTesterWidgetOptions = {
909
- value: string;
910
- };
911
- type PerseusUnitInputWidgetOptions = {
912
- value: string;
913
- };
914
- export type PerseusWidgetOptions = PerseusCategorizerWidgetOptions | PerseusCSProgramWidgetOptions | PerseusDefinitionWidgetOptions | PerseusDropdownWidgetOptions | PerseusExampleWidgetOptions | PerseusExplanationWidgetOptions | PerseusExpressionWidgetOptions | PerseusGradedGroupSetWidgetOptions | PerseusGradedGroupWidgetOptions | PerseusIFrameWidgetOptions | PerseusImageWidgetOptions | PerseusInputNumberWidgetOptions | PerseusInteractionWidgetOptions | PerseusInteractiveGraphWidgetOptions | PerseusLabelImageWidgetOptions | PerseusMatcherWidgetOptions | PerseusMatrixWidgetOptions | PerseusMeasurerWidgetOptions | PerseusMoleculeRendererWidgetOptions | PerseusNumberLineWidgetOptions | PerseusNumericInputWidgetOptions | PerseusOrdererWidgetOptions | PerseusPassageRefTargetWidgetOptions | PerseusPassageRefWidgetOptions | PerseusPassageWidgetOptions | PerseusPhetSimulationWidgetOptions | PerseusPlotterWidgetOptions | PerseusRadioWidgetOptions | PerseusSimpleMarkdownTesterWidgetOptions | PerseusSorterWidgetOptions | PerseusTableWidgetOptions | PerseusUnitInputWidgetOptions | PerseusVideoWidgetOptions;
907
+ export type PerseusWidgetOptions = PerseusCategorizerWidgetOptions | PerseusCSProgramWidgetOptions | PerseusDefinitionWidgetOptions | PerseusDropdownWidgetOptions | PerseusExplanationWidgetOptions | PerseusExpressionWidgetOptions | PerseusGradedGroupSetWidgetOptions | PerseusGradedGroupWidgetOptions | PerseusIFrameWidgetOptions | PerseusImageWidgetOptions | PerseusInputNumberWidgetOptions | PerseusInteractionWidgetOptions | PerseusInteractiveGraphWidgetOptions | PerseusLabelImageWidgetOptions | PerseusMatcherWidgetOptions | PerseusMatrixWidgetOptions | PerseusMeasurerWidgetOptions | PerseusMoleculeRendererWidgetOptions | PerseusNumberLineWidgetOptions | PerseusNumericInputWidgetOptions | PerseusOrdererWidgetOptions | PerseusPassageRefTargetWidgetOptions | PerseusPassageRefWidgetOptions | PerseusPassageWidgetOptions | PerseusPhetSimulationWidgetOptions | PerseusPlotterWidgetOptions | PerseusRadioWidgetOptions | PerseusSorterWidgetOptions | PerseusTableWidgetOptions | PerseusVideoWidgetOptions;
915
908
  export {};
@@ -1,8 +1,10 @@
1
- import type { PerseusWidgetsMap } from "./perseus-types";
1
+ import type { PerseusRenderer, PerseusWidgetsMap } from "./perseus-types";
2
2
  import type { PerseusStrings } from "./strings";
3
3
  import type { PerseusScore } from "./types";
4
4
  import type { UserInputMap } from "./validation.types";
5
+ export declare function getUpgradedWidgetOptions(oldWidgetOptions: PerseusWidgetsMap): PerseusWidgetsMap;
5
6
  export declare function emptyWidgetsFunctional(widgets: PerseusWidgetsMap, widgetIds: Array<string>, userInputMap: UserInputMap, strings: PerseusStrings, locale: string): ReadonlyArray<string>;
6
- export declare function scoreWidgetsFunctional(widgets: PerseusWidgetsMap, widgetIds: Array<string>, userInputMap: UserInputMap, strings: PerseusStrings, locale: string): {
7
+ export declare function scorePerseusItem(perseusRenderData: PerseusRenderer, userInputMap: UserInputMap, strings: PerseusStrings, locale: string): PerseusScore;
8
+ export declare function scoreWidgetsFunctional(widgets: PerseusWidgetsMap, widgetIds: ReadonlyArray<string>, userInputMap: UserInputMap, strings: PerseusStrings, locale: string): {
7
9
  [widgetId: string]: PerseusScore;
8
10
  };
@@ -103,7 +103,6 @@ declare class Renderer extends React.Component<Props, State> implements GetPromp
103
103
  widgetInfo: State["widgetInfo"];
104
104
  widgetProps: State["widgetProps"];
105
105
  };
106
- _getAllWidgetsInfo: (props: Props) => PerseusWidgetsMap;
107
106
  _getAllWidgetsStartProps: (allWidgetInfo: PerseusWidgetsMap, props: Props) => PerseusWidgetsMap;
108
107
  _getDefaultWidgetInfo: (widgetId: string) => any;
109
108
  _getWidgetInfo: (widgetId: string) => PerseusWidget;
@@ -218,18 +217,15 @@ declare class Renderer extends React.Component<Props, State> implements GetPromp
218
217
  */
219
218
  getPromptJSON(): RendererPromptJSON;
220
219
  /**
221
- * Returns an object mapping from widget ID to perseus-style score.
222
- * The keys of this object are the values of the array returned
223
- * from `getWidgetIds`.
220
+ * Scores the content.
221
+ *
222
+ * @deprecated use scorePerseusItem
224
223
  */
225
- scoreWidgets(): {
226
- [widgetId: string]: PerseusScore;
227
- };
224
+ score(): PerseusScore;
228
225
  /**
229
- * Grades the content.
226
+ * @deprecated use scorePerseusItem
230
227
  */
231
- score(): PerseusScore;
232
- guessAndScore(): [UserInputArray, PerseusScore];
228
+ guessAndScore: () => [UserInputArray, PerseusScore];
233
229
  examples: () => ReadonlyArray<string> | null | undefined;
234
230
  handletranslationLintErrors: (lintErrors: ReadonlyArray<string>) => void;
235
231
  render(): React.ReactNode;
@@ -12,12 +12,14 @@ import { PerseusI18nContext } from "./components/i18n-context";
12
12
  import Renderer from "./renderer";
13
13
  import type { PerseusItem, ShowSolutions } from "./perseus-types";
14
14
  import type { FocusPath, PerseusDependenciesV2, SharedRendererProps } from "./types";
15
+ import type { UserInputArray, UserInputMap } from "./validation.types";
15
16
  import type { GetPromptJSONInterface, RendererPromptJSON } from "./widget-ai-utils/prompt-types";
16
17
  import type { KeypadAPI } from "@khanacademy/math-input";
17
18
  import type { KeypadContextRendererInterface, RendererInterface, KEScore } from "@khanacademy/perseus-core";
18
19
  type OwnProps = {
19
20
  hintsVisible?: number;
20
21
  item: PerseusItem;
22
+ score?: KEScore | null;
21
23
  problemNum?: number;
22
24
  reviewMode?: boolean;
23
25
  keypadElement?: KeypadAPI | null | undefined;
@@ -30,8 +32,23 @@ type HOCProps = {
30
32
  type Props = SharedRendererProps & OwnProps & HOCProps;
31
33
  type DefaultProps = Required<Pick<Props, "apiOptions" | "onRendered" | "linterContext">>;
32
34
  type State = {
35
+ /**
36
+ * questionCompleted is used to signal that a learner has attempted
37
+ * the exercise. This is used when widgets want to show things like
38
+ * rationale or partial correctness.
39
+ */
33
40
  questionCompleted: boolean;
34
- questionHighlightedWidgets: ReadonlyArray<any>;
41
+ /**
42
+ * As far as I can tell, this is used to highlight empty widgets
43
+ * after a learner has clicked the "check" button. I don't think this could
44
+ * still be used though, because the "check" button is disabled while there
45
+ * are empty widgets.
46
+ */
47
+ questionHighlightedWidgets: ReadonlyArray<string>;
48
+ /**
49
+ * Keeps track of whether each asset (SvgImage or TeX) rendered by
50
+ * the questionRenderer has finished loading or rendering.
51
+ */
35
52
  assetStatuses: {
36
53
  [assetKey: string]: boolean;
37
54
  };
@@ -76,8 +93,22 @@ export declare class ServerItemRenderer extends React.Component<Props, State> im
76
93
  blur(): void;
77
94
  getNumHints(): number;
78
95
  getPromptJSON(): RendererPromptJSON;
96
+ /**
97
+ * Returns an array of the widget `.getUserInput()` results
98
+ *
99
+ * TODO: can we remove this? Seems to be just for backwards
100
+ * compatibility with old Perseus Chrome logging
101
+ * @deprecated use getUserInput
102
+ */
103
+ getUserInputLegacy(): UserInputArray;
104
+ /**
105
+ * Returns an object of the widget `.getUserInput()` results
106
+ */
107
+ getUserInput(): UserInputMap;
79
108
  /**
80
109
  * Grades the item.
110
+ *
111
+ * @deprecated use scorePerseusItem
81
112
  */
82
113
  scoreInput(): KEScore;
83
114
  /**
@@ -97,65 +128,42 @@ export declare class ServerItemRenderer extends React.Component<Props, State> im
97
128
  }
98
129
  declare const ref: React.ForwardRefExoticComponent<Omit<Pick<SharedRendererProps & OwnProps & HOCProps, keyof OwnProps> & {
99
130
  apiOptions?: Readonly<{
100
- isArticle?: boolean | undefined;
101
- onFocusChange?: ((newFocusPath: FocusPath, oldFocusPath: FocusPath, keypadHeight?: number | undefined, focusedElement?: HTMLElement | undefined) => unknown) | undefined;
102
- GroupMetadataEditor?: React.ComponentType<any> | undefined;
103
- showAlignmentOptions?: boolean | undefined;
104
- readOnly?: boolean | undefined;
105
- answerableCallback?: ((arg1: boolean) => unknown) | undefined;
106
- getAnotherHint?: (() => unknown) | undefined;
107
- interactionCallback?: ((widgetData: {
131
+ isArticle?: boolean;
132
+ onFocusChange?: (newFocusPath: FocusPath, oldFocusPath: FocusPath, keypadHeight?: number, focusedElement?: HTMLElement) => unknown;
133
+ GroupMetadataEditor?: React.ComponentType<any>;
134
+ showAlignmentOptions?: boolean;
135
+ readOnly?: boolean;
136
+ answerableCallback?: (arg1: boolean) => unknown;
137
+ getAnotherHint?: () => unknown;
138
+ interactionCallback?: (widgetData: {
108
139
  [widgetId: string]: any;
109
- }) => void) | undefined;
110
- groupAnnotator?: ((groupNumber: number, widgetId: string) => React.ReactNode) | undefined;
140
+ }) => void;
141
+ groupAnnotator?: (groupNumber: number, widgetId: string) => React.ReactNode;
111
142
  imagePlaceholder?: React.ReactNode;
112
143
  widgetPlaceholder?: React.ReactNode;
113
144
  baseElements?: {
114
145
  Link: React.ComponentType<any>;
115
- } | undefined;
116
- imagePreloader?: ((dimensions: import("./types").Dimensions) => React.ReactNode) | undefined;
117
- trackInteraction?: ((args: {
146
+ };
147
+ imagePreloader?: (dimensions: import("./types").Dimensions) => React.ReactNode;
148
+ trackInteraction?: (args: {
118
149
  type: string;
119
150
  id: string;
120
- correct?: boolean | undefined;
151
+ correct?: boolean;
121
152
  } & Partial<import("./types").TrackingGradedGroupExtraArguments> & Partial<{
122
153
  visible: number;
123
- }>) => void) | undefined;
124
- customKeypad?: boolean | undefined;
125
- nativeKeypadProxy?: ((blur: () => void) => KeypadAPI) | undefined;
126
- isMobile?: boolean | undefined;
127
- setDrawingAreaAvailable?: ((arg1: boolean) => unknown) | undefined;
128
- hintProgressColor?: string | undefined;
129
- canScrollPage?: boolean | undefined;
130
- crossOutEnabled?: boolean | undefined;
131
- editorChangeDelay?: number | undefined;
154
+ }>) => void;
155
+ customKeypad?: boolean;
156
+ nativeKeypadProxy?: (blur: () => void) => KeypadAPI;
157
+ isMobile?: boolean;
158
+ setDrawingAreaAvailable?: (arg1: boolean) => unknown;
159
+ hintProgressColor?: string;
160
+ canScrollPage?: boolean;
161
+ crossOutEnabled?: boolean;
162
+ editorChangeDelay?: number;
132
163
  flags?: {
133
- mafs?: false | ({
134
- none?: boolean | undefined;
135
- linear?: boolean | undefined;
136
- circle?: boolean | undefined;
137
- polygon?: boolean | undefined;
138
- point?: boolean | undefined;
139
- quadratic?: boolean | undefined;
140
- sinusoid?: boolean | undefined;
141
- angle?: boolean | undefined;
142
- "linear-system"?: boolean | undefined;
143
- ray?: boolean | undefined;
144
- segment?: boolean | undefined;
145
- "unlimited-polygon"?: boolean | undefined;
146
- "unlimited-point"?: boolean | undefined;
147
- } & {
148
- "interactive-graph-locked-features-labels"?: boolean | undefined;
149
- "locked-figures-aria"?: boolean | undefined;
150
- "locked-point-labels"?: boolean | undefined;
151
- "locked-line-labels"?: boolean | undefined;
152
- "locked-vector-labels"?: boolean | undefined;
153
- "locked-ellipse-labels"?: boolean | undefined;
154
- "locked-polygon-labels"?: boolean | undefined;
155
- "locked-function-labels"?: boolean | undefined;
156
- }) | undefined;
157
- } | undefined;
158
- onWidgetStartProps?: ((widgets: import("./perseus-types").PerseusWidgetsMap) => void) | undefined;
164
+ mafs?: false | ({ [Key in typeof import("./types").MafsGraphTypeFlags[number]]?: boolean; } & { [Key in typeof import("./types").InteractiveGraphLockedFeaturesFlags[number]]?: boolean; });
165
+ };
166
+ onWidgetStartProps?: (widgets: import("./perseus-types").PerseusWidgetsMap) => void;
159
167
  }> | undefined;
160
168
  linterContext?: PerseusLinter.LinterContextProps | undefined;
161
169
  onRendered?: ((isRendered: boolean) => void) | undefined;
package/dist/strings.d.ts CHANGED
@@ -191,6 +191,7 @@ export type PerseusStrings = {
191
191
  elements: string;
192
192
  }) => string;
193
193
  srNoInteractiveElements: string;
194
+ selectAnAnswer: string;
194
195
  };
195
196
  /**
196
197
  * Untranslated strings used in Perseus. To be used by an external
package/dist/strings.js CHANGED
@@ -159,7 +159,8 @@ const strings = {
159
159
  srPointAtCoordinates: {
160
160
  context: "Screenreader-accessible description of a point on a graph",
161
161
  message: "Point %(num)s at %(x)s comma %(y)s"
162
- }
162
+ },
163
+ selectAnAnswer: "Select an answer"
163
164
  };
164
165
 
165
166
  /**
@@ -438,7 +439,8 @@ const mockStrings = {
438
439
  } = _ref28;
439
440
  return `Interactive elements: ${elements}`;
440
441
  },
441
- srNoInteractiveElements: "No interactive elements"
442
+ srNoInteractiveElements: "No interactive elements",
443
+ selectAnAnswer: "Select an answer"
442
444
  };
443
445
 
444
446
  exports.mockStrings = mockStrings;