@khanacademy/perseus-editor 5.2.5 → 5.2.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.
@@ -9,7 +9,10 @@ declare const InteractiveGraph: {
9
9
  static: boolean | null | undefined;
10
10
  problemNum: number | null | undefined;
11
11
  apiOptions: Readonly<Readonly<{
12
- isArticle?: boolean | undefined;
12
+ isArticle?: boolean | undefined; /**
13
+ * An error message to display in the graph area, or true if the
14
+ * graph is valid.
15
+ */
13
16
  onInputError?: ((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined;
14
17
  onFocusChange?: ((newFocusPath: import("@khanacademy/perseus").FocusPath, oldFocusPath: import("@khanacademy/perseus").FocusPath, keypadHeight?: number | undefined, focusedElement?: HTMLElement | undefined) => unknown) | undefined;
15
18
  GroupMetadataEditor?: React.ComponentType<any> | undefined;
@@ -21,15 +24,7 @@ declare const InteractiveGraph: {
21
24
  [widgetId: string]: any;
22
25
  }) => void) | undefined;
23
26
  groupAnnotator?: ((groupNumber: number, widgetId: string) => React.ReactNode) | undefined;
24
- imagePlaceholder?: React.ReactNode; /**
25
- * The current correct answer for the graph. Updated by this component
26
- * when the graph is changed.
27
- *
28
- * Note that the "Correct answer:" textbox is not an interactive
29
- * element. Instead, it is a representation of the correct answer based
30
- * on the state of the interactive graph previewed at the bottom of the
31
- * editor page.
32
- */
27
+ imagePlaceholder?: React.ReactNode;
33
28
  widgetPlaceholder?: React.ReactNode;
34
29
  baseElements?: {
35
30
  Link: React.ComponentType<any>;
@@ -51,7 +46,7 @@ declare const InteractiveGraph: {
51
46
  crossOutEnabled?: boolean | undefined;
52
47
  editorChangeDelay?: number | undefined;
53
48
  flags?: Record<string, boolean | Record<string, boolean>> | undefined;
54
- onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => import("@khanacademy/perseus").PerseusWidgetsMap) | undefined;
49
+ onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => void) | undefined;
55
50
  }> & {
56
51
  GroupMetadataEditor: NonNullable<React.ComponentType<any> | undefined>;
57
52
  baseElements: {
@@ -76,7 +71,7 @@ declare const InteractiveGraph: {
76
71
  onFocus: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
77
72
  onBlur: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
78
73
  findWidgets: (arg1: import("../../../perseus/src/types").FilterCriterion) => readonly any[];
79
- reviewModeRubric: PerseusInteractiveGraphWidgetOptions;
74
+ reviewModeRubric: import("../../../perseus/src/widgets/interactive-graph").Rubric;
80
75
  onChange: import("@khanacademy/perseus").ChangeHandler;
81
76
  trackInteraction: (extraData?: {} | undefined) => void;
82
77
  isLastUsedWidget: boolean;
@@ -88,7 +83,10 @@ declare const InteractiveGraph: {
88
83
  static: boolean | null | undefined;
89
84
  problemNum: number | null | undefined;
90
85
  apiOptions: Readonly<Readonly<{
91
- isArticle?: boolean | undefined;
86
+ isArticle?: boolean | undefined; /**
87
+ * An error message to display in the graph area, or true if the
88
+ * graph is valid.
89
+ */
92
90
  onInputError?: ((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined;
93
91
  onFocusChange?: ((newFocusPath: import("@khanacademy/perseus").FocusPath, oldFocusPath: import("@khanacademy/perseus").FocusPath, keypadHeight?: number | undefined, focusedElement?: HTMLElement | undefined) => unknown) | undefined;
94
92
  GroupMetadataEditor?: React.ComponentType<any> | undefined;
@@ -100,15 +98,7 @@ declare const InteractiveGraph: {
100
98
  [widgetId: string]: any;
101
99
  }) => void) | undefined;
102
100
  groupAnnotator?: ((groupNumber: number, widgetId: string) => React.ReactNode) | undefined;
103
- imagePlaceholder?: React.ReactNode; /**
104
- * The current correct answer for the graph. Updated by this component
105
- * when the graph is changed.
106
- *
107
- * Note that the "Correct answer:" textbox is not an interactive
108
- * element. Instead, it is a representation of the correct answer based
109
- * on the state of the interactive graph previewed at the bottom of the
110
- * editor page.
111
- */
101
+ imagePlaceholder?: React.ReactNode;
112
102
  widgetPlaceholder?: React.ReactNode;
113
103
  baseElements?: {
114
104
  Link: React.ComponentType<any>;
@@ -130,7 +120,7 @@ declare const InteractiveGraph: {
130
120
  crossOutEnabled?: boolean | undefined;
131
121
  editorChangeDelay?: number | undefined;
132
122
  flags?: Record<string, boolean | Record<string, boolean>> | undefined;
133
- onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => import("@khanacademy/perseus").PerseusWidgetsMap) | undefined;
123
+ onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => void) | undefined;
134
124
  }> & {
135
125
  GroupMetadataEditor: NonNullable<React.ComponentType<any> | undefined>;
136
126
  baseElements: {
@@ -155,7 +145,7 @@ declare const InteractiveGraph: {
155
145
  onFocus: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
156
146
  onBlur: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
157
147
  findWidgets: (arg1: import("../../../perseus/src/types").FilterCriterion) => readonly any[];
158
- reviewModeRubric: PerseusInteractiveGraphWidgetOptions;
148
+ reviewModeRubric: import("../../../perseus/src/widgets/interactive-graph").Rubric;
159
149
  onChange: import("@khanacademy/perseus").ChangeHandler;
160
150
  trackInteraction: (extraData?: {} | undefined) => void;
161
151
  isLastUsedWidget: boolean;
@@ -188,7 +178,10 @@ declare const InteractiveGraph: {
188
178
  static: boolean | null | undefined;
189
179
  problemNum: number | null | undefined;
190
180
  apiOptions: Readonly<Readonly<{
191
- isArticle?: boolean | undefined;
181
+ isArticle?: boolean | undefined; /**
182
+ * An error message to display in the graph area, or true if the
183
+ * graph is valid.
184
+ */
192
185
  onInputError?: ((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined;
193
186
  onFocusChange?: ((newFocusPath: import("@khanacademy/perseus").FocusPath, oldFocusPath: import("@khanacademy/perseus").FocusPath, keypadHeight?: number | undefined, focusedElement?: HTMLElement | undefined) => unknown) | undefined;
194
187
  GroupMetadataEditor?: React.ComponentType<any> | undefined;
@@ -200,15 +193,7 @@ declare const InteractiveGraph: {
200
193
  [widgetId: string]: any;
201
194
  }) => void) | undefined;
202
195
  groupAnnotator?: ((groupNumber: number, widgetId: string) => React.ReactNode) | undefined;
203
- imagePlaceholder?: React.ReactNode; /**
204
- * The current correct answer for the graph. Updated by this component
205
- * when the graph is changed.
206
- *
207
- * Note that the "Correct answer:" textbox is not an interactive
208
- * element. Instead, it is a representation of the correct answer based
209
- * on the state of the interactive graph previewed at the bottom of the
210
- * editor page.
211
- */
196
+ imagePlaceholder?: React.ReactNode;
212
197
  widgetPlaceholder?: React.ReactNode;
213
198
  baseElements?: {
214
199
  Link: React.ComponentType<any>;
@@ -230,7 +215,7 @@ declare const InteractiveGraph: {
230
215
  crossOutEnabled?: boolean | undefined;
231
216
  editorChangeDelay?: number | undefined;
232
217
  flags?: Record<string, boolean | Record<string, boolean>> | undefined;
233
- onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => import("@khanacademy/perseus").PerseusWidgetsMap) | undefined;
218
+ onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => void) | undefined;
234
219
  }> & {
235
220
  GroupMetadataEditor: NonNullable<React.ComponentType<any> | undefined>;
236
221
  baseElements: {
@@ -255,7 +240,7 @@ declare const InteractiveGraph: {
255
240
  onFocus: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
256
241
  onBlur: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
257
242
  findWidgets: (arg1: import("../../../perseus/src/types").FilterCriterion) => readonly any[];
258
- reviewModeRubric: PerseusInteractiveGraphWidgetOptions;
243
+ reviewModeRubric: import("../../../perseus/src/widgets/interactive-graph").Rubric;
259
244
  onChange: import("@khanacademy/perseus").ChangeHandler;
260
245
  trackInteraction: (extraData?: {} | undefined) => void;
261
246
  isLastUsedWidget: boolean;
@@ -268,7 +253,10 @@ declare const InteractiveGraph: {
268
253
  static: boolean | null | undefined;
269
254
  problemNum: number | null | undefined;
270
255
  apiOptions: Readonly<Readonly<{
271
- isArticle?: boolean | undefined;
256
+ isArticle?: boolean | undefined; /**
257
+ * An error message to display in the graph area, or true if the
258
+ * graph is valid.
259
+ */
272
260
  onInputError?: ((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined;
273
261
  onFocusChange?: ((newFocusPath: import("@khanacademy/perseus").FocusPath, oldFocusPath: import("@khanacademy/perseus").FocusPath, keypadHeight?: number | undefined, focusedElement?: HTMLElement | undefined) => unknown) | undefined;
274
262
  GroupMetadataEditor?: React.ComponentType<any> | undefined;
@@ -280,15 +268,7 @@ declare const InteractiveGraph: {
280
268
  [widgetId: string]: any;
281
269
  }) => void) | undefined;
282
270
  groupAnnotator?: ((groupNumber: number, widgetId: string) => React.ReactNode) | undefined;
283
- imagePlaceholder?: React.ReactNode; /**
284
- * The current correct answer for the graph. Updated by this component
285
- * when the graph is changed.
286
- *
287
- * Note that the "Correct answer:" textbox is not an interactive
288
- * element. Instead, it is a representation of the correct answer based
289
- * on the state of the interactive graph previewed at the bottom of the
290
- * editor page.
291
- */
271
+ imagePlaceholder?: React.ReactNode;
292
272
  widgetPlaceholder?: React.ReactNode;
293
273
  baseElements?: {
294
274
  Link: React.ComponentType<any>;
@@ -310,7 +290,7 @@ declare const InteractiveGraph: {
310
290
  crossOutEnabled?: boolean | undefined;
311
291
  editorChangeDelay?: number | undefined;
312
292
  flags?: Record<string, boolean | Record<string, boolean>> | undefined;
313
- onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => import("@khanacademy/perseus").PerseusWidgetsMap) | undefined;
293
+ onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => void) | undefined;
314
294
  }> & {
315
295
  GroupMetadataEditor: NonNullable<React.ComponentType<any> | undefined>;
316
296
  baseElements: {
@@ -335,7 +315,7 @@ declare const InteractiveGraph: {
335
315
  onFocus: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
336
316
  onBlur: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
337
317
  findWidgets: (arg1: import("../../../perseus/src/types").FilterCriterion) => readonly any[];
338
- reviewModeRubric: PerseusInteractiveGraphWidgetOptions;
318
+ reviewModeRubric: import("../../../perseus/src/widgets/interactive-graph").Rubric;
339
319
  onChange: import("@khanacademy/perseus").ChangeHandler;
340
320
  trackInteraction: (extraData?: {} | undefined) => void;
341
321
  isLastUsedWidget: boolean;
@@ -348,7 +328,10 @@ declare const InteractiveGraph: {
348
328
  static: boolean | null | undefined;
349
329
  problemNum: number | null | undefined;
350
330
  apiOptions: Readonly<Readonly<{
351
- isArticle?: boolean | undefined;
331
+ isArticle?: boolean | undefined; /**
332
+ * An error message to display in the graph area, or true if the
333
+ * graph is valid.
334
+ */
352
335
  onInputError?: ((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined;
353
336
  onFocusChange?: ((newFocusPath: import("@khanacademy/perseus").FocusPath, oldFocusPath: import("@khanacademy/perseus").FocusPath, keypadHeight?: number | undefined, focusedElement?: HTMLElement | undefined) => unknown) | undefined;
354
337
  GroupMetadataEditor?: React.ComponentType<any> | undefined;
@@ -360,15 +343,7 @@ declare const InteractiveGraph: {
360
343
  [widgetId: string]: any;
361
344
  }) => void) | undefined;
362
345
  groupAnnotator?: ((groupNumber: number, widgetId: string) => React.ReactNode) | undefined;
363
- imagePlaceholder?: React.ReactNode; /**
364
- * The current correct answer for the graph. Updated by this component
365
- * when the graph is changed.
366
- *
367
- * Note that the "Correct answer:" textbox is not an interactive
368
- * element. Instead, it is a representation of the correct answer based
369
- * on the state of the interactive graph previewed at the bottom of the
370
- * editor page.
371
- */
346
+ imagePlaceholder?: React.ReactNode;
372
347
  widgetPlaceholder?: React.ReactNode;
373
348
  baseElements?: {
374
349
  Link: React.ComponentType<any>;
@@ -390,7 +365,7 @@ declare const InteractiveGraph: {
390
365
  crossOutEnabled?: boolean | undefined;
391
366
  editorChangeDelay?: number | undefined;
392
367
  flags?: Record<string, boolean | Record<string, boolean>> | undefined;
393
- onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => import("@khanacademy/perseus").PerseusWidgetsMap) | undefined;
368
+ onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => void) | undefined;
394
369
  }> & {
395
370
  GroupMetadataEditor: NonNullable<React.ComponentType<any> | undefined>;
396
371
  baseElements: {
@@ -415,7 +390,7 @@ declare const InteractiveGraph: {
415
390
  onFocus: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
416
391
  onBlur: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
417
392
  findWidgets: (arg1: import("../../../perseus/src/types").FilterCriterion) => readonly any[];
418
- reviewModeRubric: PerseusInteractiveGraphWidgetOptions;
393
+ reviewModeRubric: import("../../../perseus/src/widgets/interactive-graph").Rubric;
419
394
  onChange: import("@khanacademy/perseus").ChangeHandler;
420
395
  trackInteraction: (extraData?: {} | undefined) => void;
421
396
  isLastUsedWidget: boolean;
@@ -427,9 +402,6 @@ declare const InteractiveGraph: {
427
402
  handleAddPointsMouseDown: (arg1: import("@khanacademy/perseus").Coord) => void;
428
403
  resetGraphie: () => void;
429
404
  setupGraphie: () => void;
430
- /**
431
- * The range of the graph in the x and y directions.
432
- */
433
405
  showHairlines: (arg1: import("@khanacademy/perseus").Coord) => void;
434
406
  hideHairlines: () => void;
435
407
  setTrashCanVisibility: (arg1: number) => void;
@@ -439,7 +411,10 @@ declare const InteractiveGraph: {
439
411
  static: boolean | null | undefined;
440
412
  problemNum: number | null | undefined;
441
413
  apiOptions: Readonly<Readonly<{
442
- isArticle?: boolean | undefined;
414
+ isArticle?: boolean | undefined; /**
415
+ * An error message to display in the graph area, or true if the
416
+ * graph is valid.
417
+ */
443
418
  onInputError?: ((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined;
444
419
  onFocusChange?: ((newFocusPath: import("@khanacademy/perseus").FocusPath, oldFocusPath: import("@khanacademy/perseus").FocusPath, keypadHeight?: number | undefined, focusedElement?: HTMLElement | undefined) => unknown) | undefined;
445
420
  GroupMetadataEditor?: React.ComponentType<any> | undefined;
@@ -451,15 +426,7 @@ declare const InteractiveGraph: {
451
426
  [widgetId: string]: any;
452
427
  }) => void) | undefined;
453
428
  groupAnnotator?: ((groupNumber: number, widgetId: string) => React.ReactNode) | undefined;
454
- imagePlaceholder?: React.ReactNode; /**
455
- * The current correct answer for the graph. Updated by this component
456
- * when the graph is changed.
457
- *
458
- * Note that the "Correct answer:" textbox is not an interactive
459
- * element. Instead, it is a representation of the correct answer based
460
- * on the state of the interactive graph previewed at the bottom of the
461
- * editor page.
462
- */
429
+ imagePlaceholder?: React.ReactNode;
463
430
  widgetPlaceholder?: React.ReactNode;
464
431
  baseElements?: {
465
432
  Link: React.ComponentType<any>;
@@ -481,7 +448,7 @@ declare const InteractiveGraph: {
481
448
  crossOutEnabled?: boolean | undefined;
482
449
  editorChangeDelay?: number | undefined;
483
450
  flags?: Record<string, boolean | Record<string, boolean>> | undefined;
484
- onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => import("@khanacademy/perseus").PerseusWidgetsMap) | undefined;
451
+ onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => void) | undefined;
485
452
  }> & {
486
453
  GroupMetadataEditor: NonNullable<React.ComponentType<any> | undefined>;
487
454
  baseElements: {
@@ -506,13 +473,15 @@ declare const InteractiveGraph: {
506
473
  onFocus: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
507
474
  onBlur: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
508
475
  findWidgets: (arg1: import("../../../perseus/src/types").FilterCriterion) => readonly any[];
509
- reviewModeRubric: PerseusInteractiveGraphWidgetOptions;
476
+ reviewModeRubric: import("../../../perseus/src/widgets/interactive-graph").Rubric;
510
477
  onChange: import("@khanacademy/perseus").ChangeHandler;
511
478
  trackInteraction: (extraData?: {} | undefined) => void;
512
479
  isLastUsedWidget: boolean;
513
480
  linterContext: import("@khanacademy/perseus-linter").LinterContextProps;
514
481
  containerSizeClass: SizingUtils.SizeClass;
515
- }) | null | undefined) => boolean;
482
+ }) | null | undefined) => boolean; /**
483
+ * How far apart the grid lines are in the x and y directions.
484
+ */
516
485
  areAngleGraphsEqual(prevGraph: import("../../../perseus/src/perseus-types").PerseusGraphTypeAngle, currentGraph: import("../../../perseus/src/perseus-types").PerseusGraphTypeAngle): boolean;
517
486
  arePointGraphsEqual(prevGraph: import("../../../perseus/src/perseus-types").PerseusGraphTypePoint, currentGraph: import("../../../perseus/src/perseus-types").PerseusGraphTypePoint): boolean;
518
487
  arePolygonGraphsEqual(prevGraph: import("../../../perseus/src/perseus-types").PerseusGraphTypePolygon, currentGraph: import("../../../perseus/src/perseus-types").PerseusGraphTypePolygon): boolean;
@@ -531,9 +500,6 @@ declare const InteractiveGraph: {
531
500
  updateSinusoid: () => void;
532
501
  removeSinusoidControls: () => void;
533
502
  addCircleControls: () => void;
534
- /**
535
- * Whether to show the protractor on the graph.
536
- */
537
503
  removeCircleControls: () => void;
538
504
  addLinearSystemControls: () => void;
539
505
  removeLinearSystemControls: () => void;
@@ -543,7 +509,7 @@ declare const InteractiveGraph: {
543
509
  createPointForPolygonType: (arg1: import("@khanacademy/perseus").Coord, arg2: number) => any;
544
510
  updateCoordsFromPoints: () => void;
545
511
  clearCoords: () => void;
546
- onChange: (arg1: any) => void;
512
+ onChange: import("@khanacademy/perseus").ChangeHandler;
547
513
  addPointControls: () => void;
548
514
  removePointControls: () => void;
549
515
  addSegmentControls: () => void;
@@ -557,7 +523,7 @@ declare const InteractiveGraph: {
557
523
  removeAngleControls: () => void;
558
524
  toggleShowSides: () => void;
559
525
  getUserInput: () => import("@khanacademy/perseus").PerseusGraphType;
560
- simpleValidate: (rubric: PerseusInteractiveGraphWidgetOptions) => import("@khanacademy/perseus").PerseusScore;
526
+ simpleValidate: (rubric: import("../../../perseus/src/widgets/interactive-graph").Rubric) => import("@khanacademy/perseus").PerseusScore;
561
527
  focus: () => void;
562
528
  render(): React.ReactNode;
563
529
  context: any;
@@ -569,7 +535,10 @@ declare const InteractiveGraph: {
569
535
  static: boolean | null | undefined;
570
536
  problemNum: number | null | undefined;
571
537
  apiOptions: Readonly<Readonly<{
572
- isArticle?: boolean | undefined;
538
+ isArticle?: boolean | undefined; /**
539
+ * An error message to display in the graph area, or true if the
540
+ * graph is valid.
541
+ */
573
542
  onInputError?: ((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined;
574
543
  onFocusChange?: ((newFocusPath: import("@khanacademy/perseus").FocusPath, oldFocusPath: import("@khanacademy/perseus").FocusPath, keypadHeight?: number | undefined, focusedElement?: HTMLElement | undefined) => unknown) | undefined;
575
544
  GroupMetadataEditor?: React.ComponentType<any> | undefined;
@@ -581,15 +550,7 @@ declare const InteractiveGraph: {
581
550
  [widgetId: string]: any;
582
551
  }) => void) | undefined;
583
552
  groupAnnotator?: ((groupNumber: number, widgetId: string) => React.ReactNode) | undefined;
584
- imagePlaceholder?: React.ReactNode; /**
585
- * The current correct answer for the graph. Updated by this component
586
- * when the graph is changed.
587
- *
588
- * Note that the "Correct answer:" textbox is not an interactive
589
- * element. Instead, it is a representation of the correct answer based
590
- * on the state of the interactive graph previewed at the bottom of the
591
- * editor page.
592
- */
553
+ imagePlaceholder?: React.ReactNode;
593
554
  widgetPlaceholder?: React.ReactNode;
594
555
  baseElements?: {
595
556
  Link: React.ComponentType<any>;
@@ -611,7 +572,7 @@ declare const InteractiveGraph: {
611
572
  crossOutEnabled?: boolean | undefined;
612
573
  editorChangeDelay?: number | undefined;
613
574
  flags?: Record<string, boolean | Record<string, boolean>> | undefined;
614
- onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => import("@khanacademy/perseus").PerseusWidgetsMap) | undefined;
575
+ onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => void) | undefined;
615
576
  }> & {
616
577
  GroupMetadataEditor: NonNullable<React.ComponentType<any> | undefined>;
617
578
  baseElements: {
@@ -636,7 +597,7 @@ declare const InteractiveGraph: {
636
597
  onFocus: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
637
598
  onBlur: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
638
599
  findWidgets: (arg1: import("../../../perseus/src/types").FilterCriterion) => readonly any[];
639
- reviewModeRubric: PerseusInteractiveGraphWidgetOptions;
600
+ reviewModeRubric: import("../../../perseus/src/widgets/interactive-graph").Rubric;
640
601
  onChange: import("@khanacademy/perseus").ChangeHandler;
641
602
  trackInteraction: (extraData?: {} | undefined) => void;
642
603
  isLastUsedWidget: boolean;
@@ -654,7 +615,10 @@ declare const InteractiveGraph: {
654
615
  static: boolean | null | undefined;
655
616
  problemNum: number | null | undefined;
656
617
  apiOptions: Readonly<Readonly<{
657
- isArticle?: boolean | undefined;
618
+ isArticle?: boolean | undefined; /**
619
+ * An error message to display in the graph area, or true if the
620
+ * graph is valid.
621
+ */
658
622
  onInputError?: ((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined;
659
623
  onFocusChange?: ((newFocusPath: import("@khanacademy/perseus").FocusPath, oldFocusPath: import("@khanacademy/perseus").FocusPath, keypadHeight?: number | undefined, focusedElement?: HTMLElement | undefined) => unknown) | undefined;
660
624
  GroupMetadataEditor?: React.ComponentType<any> | undefined;
@@ -666,15 +630,7 @@ declare const InteractiveGraph: {
666
630
  [widgetId: string]: any;
667
631
  }) => void) | undefined;
668
632
  groupAnnotator?: ((groupNumber: number, widgetId: string) => React.ReactNode) | undefined;
669
- imagePlaceholder?: React.ReactNode; /**
670
- * The current correct answer for the graph. Updated by this component
671
- * when the graph is changed.
672
- *
673
- * Note that the "Correct answer:" textbox is not an interactive
674
- * element. Instead, it is a representation of the correct answer based
675
- * on the state of the interactive graph previewed at the bottom of the
676
- * editor page.
677
- */
633
+ imagePlaceholder?: React.ReactNode;
678
634
  widgetPlaceholder?: React.ReactNode;
679
635
  baseElements?: {
680
636
  Link: React.ComponentType<any>;
@@ -696,7 +652,7 @@ declare const InteractiveGraph: {
696
652
  crossOutEnabled?: boolean | undefined;
697
653
  editorChangeDelay?: number | undefined;
698
654
  flags?: Record<string, boolean | Record<string, boolean>> | undefined;
699
- onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => import("@khanacademy/perseus").PerseusWidgetsMap) | undefined;
655
+ onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => void) | undefined;
700
656
  }> & {
701
657
  GroupMetadataEditor: NonNullable<React.ComponentType<any> | undefined>;
702
658
  baseElements: {
@@ -721,7 +677,7 @@ declare const InteractiveGraph: {
721
677
  onFocus: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
722
678
  onBlur: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
723
679
  findWidgets: (arg1: import("../../../perseus/src/types").FilterCriterion) => readonly any[];
724
- reviewModeRubric: PerseusInteractiveGraphWidgetOptions;
680
+ reviewModeRubric: import("../../../perseus/src/widgets/interactive-graph").Rubric;
725
681
  onChange: import("@khanacademy/perseus").ChangeHandler;
726
682
  trackInteraction: (extraData?: {} | undefined) => void;
727
683
  isLastUsedWidget: boolean;
@@ -736,7 +692,10 @@ declare const InteractiveGraph: {
736
692
  static: boolean | null | undefined;
737
693
  problemNum: number | null | undefined;
738
694
  apiOptions: Readonly<Readonly<{
739
- isArticle?: boolean | undefined;
695
+ isArticle?: boolean | undefined; /**
696
+ * An error message to display in the graph area, or true if the
697
+ * graph is valid.
698
+ */
740
699
  onInputError?: ((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined;
741
700
  onFocusChange?: ((newFocusPath: import("@khanacademy/perseus").FocusPath, oldFocusPath: import("@khanacademy/perseus").FocusPath, keypadHeight?: number | undefined, focusedElement?: HTMLElement | undefined) => unknown) | undefined;
742
701
  GroupMetadataEditor?: React.ComponentType<any> | undefined;
@@ -748,15 +707,7 @@ declare const InteractiveGraph: {
748
707
  [widgetId: string]: any;
749
708
  }) => void) | undefined;
750
709
  groupAnnotator?: ((groupNumber: number, widgetId: string) => React.ReactNode) | undefined;
751
- imagePlaceholder?: React.ReactNode; /**
752
- * The current correct answer for the graph. Updated by this component
753
- * when the graph is changed.
754
- *
755
- * Note that the "Correct answer:" textbox is not an interactive
756
- * element. Instead, it is a representation of the correct answer based
757
- * on the state of the interactive graph previewed at the bottom of the
758
- * editor page.
759
- */
710
+ imagePlaceholder?: React.ReactNode;
760
711
  widgetPlaceholder?: React.ReactNode;
761
712
  baseElements?: {
762
713
  Link: React.ComponentType<any>;
@@ -778,7 +729,7 @@ declare const InteractiveGraph: {
778
729
  crossOutEnabled?: boolean | undefined;
779
730
  editorChangeDelay?: number | undefined;
780
731
  flags?: Record<string, boolean | Record<string, boolean>> | undefined;
781
- onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => import("@khanacademy/perseus").PerseusWidgetsMap) | undefined;
732
+ onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => void) | undefined;
782
733
  }> & {
783
734
  GroupMetadataEditor: NonNullable<React.ComponentType<any> | undefined>;
784
735
  baseElements: {
@@ -803,7 +754,7 @@ declare const InteractiveGraph: {
803
754
  onFocus: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
804
755
  onBlur: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
805
756
  findWidgets: (arg1: import("../../../perseus/src/types").FilterCriterion) => readonly any[];
806
- reviewModeRubric: PerseusInteractiveGraphWidgetOptions;
757
+ reviewModeRubric: import("../../../perseus/src/widgets/interactive-graph").Rubric;
807
758
  onChange: import("@khanacademy/perseus").ChangeHandler;
808
759
  trackInteraction: (extraData?: {} | undefined) => void;
809
760
  isLastUsedWidget: boolean;
@@ -817,7 +768,10 @@ declare const InteractiveGraph: {
817
768
  static: boolean | null | undefined;
818
769
  problemNum: number | null | undefined;
819
770
  apiOptions: Readonly<Readonly<{
820
- isArticle?: boolean | undefined;
771
+ isArticle?: boolean | undefined; /**
772
+ * An error message to display in the graph area, or true if the
773
+ * graph is valid.
774
+ */
821
775
  onInputError?: ((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined;
822
776
  onFocusChange?: ((newFocusPath: import("@khanacademy/perseus").FocusPath, oldFocusPath: import("@khanacademy/perseus").FocusPath, keypadHeight?: number | undefined, focusedElement?: HTMLElement | undefined) => unknown) | undefined;
823
777
  GroupMetadataEditor?: React.ComponentType<any> | undefined;
@@ -829,15 +783,7 @@ declare const InteractiveGraph: {
829
783
  [widgetId: string]: any;
830
784
  }) => void) | undefined;
831
785
  groupAnnotator?: ((groupNumber: number, widgetId: string) => React.ReactNode) | undefined;
832
- imagePlaceholder?: React.ReactNode; /**
833
- * The current correct answer for the graph. Updated by this component
834
- * when the graph is changed.
835
- *
836
- * Note that the "Correct answer:" textbox is not an interactive
837
- * element. Instead, it is a representation of the correct answer based
838
- * on the state of the interactive graph previewed at the bottom of the
839
- * editor page.
840
- */
786
+ imagePlaceholder?: React.ReactNode;
841
787
  widgetPlaceholder?: React.ReactNode;
842
788
  baseElements?: {
843
789
  Link: React.ComponentType<any>;
@@ -859,7 +805,7 @@ declare const InteractiveGraph: {
859
805
  crossOutEnabled?: boolean | undefined;
860
806
  editorChangeDelay?: number | undefined;
861
807
  flags?: Record<string, boolean | Record<string, boolean>> | undefined;
862
- onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => import("@khanacademy/perseus").PerseusWidgetsMap) | undefined;
808
+ onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => void) | undefined;
863
809
  }> & {
864
810
  GroupMetadataEditor: NonNullable<React.ComponentType<any> | undefined>;
865
811
  baseElements: {
@@ -884,7 +830,7 @@ declare const InteractiveGraph: {
884
830
  onFocus: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
885
831
  onBlur: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
886
832
  findWidgets: (arg1: import("../../../perseus/src/types").FilterCriterion) => readonly any[];
887
- reviewModeRubric: PerseusInteractiveGraphWidgetOptions;
833
+ reviewModeRubric: import("../../../perseus/src/widgets/interactive-graph").Rubric;
888
834
  onChange: import("@khanacademy/perseus").ChangeHandler;
889
835
  trackInteraction: (extraData?: {} | undefined) => void;
890
836
  isLastUsedWidget: boolean;
@@ -897,7 +843,10 @@ declare const InteractiveGraph: {
897
843
  static: boolean | null | undefined;
898
844
  problemNum: number | null | undefined;
899
845
  apiOptions: Readonly<Readonly<{
900
- isArticle?: boolean | undefined;
846
+ isArticle?: boolean | undefined; /**
847
+ * An error message to display in the graph area, or true if the
848
+ * graph is valid.
849
+ */
901
850
  onInputError?: ((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined;
902
851
  onFocusChange?: ((newFocusPath: import("@khanacademy/perseus").FocusPath, oldFocusPath: import("@khanacademy/perseus").FocusPath, keypadHeight?: number | undefined, focusedElement?: HTMLElement | undefined) => unknown) | undefined;
903
852
  GroupMetadataEditor?: React.ComponentType<any> | undefined;
@@ -909,15 +858,7 @@ declare const InteractiveGraph: {
909
858
  [widgetId: string]: any;
910
859
  }) => void) | undefined;
911
860
  groupAnnotator?: ((groupNumber: number, widgetId: string) => React.ReactNode) | undefined;
912
- imagePlaceholder?: React.ReactNode; /**
913
- * The current correct answer for the graph. Updated by this component
914
- * when the graph is changed.
915
- *
916
- * Note that the "Correct answer:" textbox is not an interactive
917
- * element. Instead, it is a representation of the correct answer based
918
- * on the state of the interactive graph previewed at the bottom of the
919
- * editor page.
920
- */
861
+ imagePlaceholder?: React.ReactNode;
921
862
  widgetPlaceholder?: React.ReactNode;
922
863
  baseElements?: {
923
864
  Link: React.ComponentType<any>;
@@ -939,7 +880,7 @@ declare const InteractiveGraph: {
939
880
  crossOutEnabled?: boolean | undefined;
940
881
  editorChangeDelay?: number | undefined;
941
882
  flags?: Record<string, boolean | Record<string, boolean>> | undefined;
942
- onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => import("@khanacademy/perseus").PerseusWidgetsMap) | undefined;
883
+ onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => void) | undefined;
943
884
  }> & {
944
885
  GroupMetadataEditor: NonNullable<React.ComponentType<any> | undefined>;
945
886
  baseElements: {
@@ -964,7 +905,7 @@ declare const InteractiveGraph: {
964
905
  onFocus: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
965
906
  onBlur: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
966
907
  findWidgets: (arg1: import("../../../perseus/src/types").FilterCriterion) => readonly any[];
967
- reviewModeRubric: PerseusInteractiveGraphWidgetOptions;
908
+ reviewModeRubric: import("../../../perseus/src/widgets/interactive-graph").Rubric;
968
909
  onChange: import("@khanacademy/perseus").ChangeHandler;
969
910
  trackInteraction: (extraData?: {} | undefined) => void;
970
911
  isLastUsedWidget: boolean;
@@ -977,7 +918,10 @@ declare const InteractiveGraph: {
977
918
  static: boolean | null | undefined;
978
919
  problemNum: number | null | undefined;
979
920
  apiOptions: Readonly<Readonly<{
980
- isArticle?: boolean | undefined;
921
+ isArticle?: boolean | undefined; /**
922
+ * An error message to display in the graph area, or true if the
923
+ * graph is valid.
924
+ */
981
925
  onInputError?: ((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined;
982
926
  onFocusChange?: ((newFocusPath: import("@khanacademy/perseus").FocusPath, oldFocusPath: import("@khanacademy/perseus").FocusPath, keypadHeight?: number | undefined, focusedElement?: HTMLElement | undefined) => unknown) | undefined;
983
927
  GroupMetadataEditor?: React.ComponentType<any> | undefined;
@@ -989,15 +933,7 @@ declare const InteractiveGraph: {
989
933
  [widgetId: string]: any;
990
934
  }) => void) | undefined;
991
935
  groupAnnotator?: ((groupNumber: number, widgetId: string) => React.ReactNode) | undefined;
992
- imagePlaceholder?: React.ReactNode; /**
993
- * The current correct answer for the graph. Updated by this component
994
- * when the graph is changed.
995
- *
996
- * Note that the "Correct answer:" textbox is not an interactive
997
- * element. Instead, it is a representation of the correct answer based
998
- * on the state of the interactive graph previewed at the bottom of the
999
- * editor page.
1000
- */
936
+ imagePlaceholder?: React.ReactNode;
1001
937
  widgetPlaceholder?: React.ReactNode;
1002
938
  baseElements?: {
1003
939
  Link: React.ComponentType<any>;
@@ -1019,7 +955,7 @@ declare const InteractiveGraph: {
1019
955
  crossOutEnabled?: boolean | undefined;
1020
956
  editorChangeDelay?: number | undefined;
1021
957
  flags?: Record<string, boolean | Record<string, boolean>> | undefined;
1022
- onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => import("@khanacademy/perseus").PerseusWidgetsMap) | undefined;
958
+ onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => void) | undefined;
1023
959
  }> & {
1024
960
  GroupMetadataEditor: NonNullable<React.ComponentType<any> | undefined>;
1025
961
  baseElements: {
@@ -1044,7 +980,7 @@ declare const InteractiveGraph: {
1044
980
  onFocus: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
1045
981
  onBlur: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
1046
982
  findWidgets: (arg1: import("../../../perseus/src/types").FilterCriterion) => readonly any[];
1047
- reviewModeRubric: PerseusInteractiveGraphWidgetOptions;
983
+ reviewModeRubric: import("../../../perseus/src/widgets/interactive-graph").Rubric;
1048
984
  onChange: import("@khanacademy/perseus").ChangeHandler;
1049
985
  trackInteraction: (extraData?: {} | undefined) => void;
1050
986
  isLastUsedWidget: boolean;
@@ -1054,7 +990,7 @@ declare const InteractiveGraph: {
1054
990
  }>;
1055
991
  mafsRef: React.RefObject<import("../../../perseus/src/renderer").Widget>;
1056
992
  getUserInput: (() => any) | undefined;
1057
- simpleValidate: (rubric: PerseusInteractiveGraphWidgetOptions) => import("@khanacademy/perseus").PerseusScore;
993
+ simpleValidate: (rubric: import("../../../perseus/src/widgets/interactive-graph").Rubric) => import("@khanacademy/perseus").PerseusScore;
1058
994
  render(): JSX.Element;
1059
995
  context: any;
1060
996
  setState<K_1 extends string | number | symbol>(state: any, callback?: (() => void) | undefined): void;
@@ -1065,7 +1001,10 @@ declare const InteractiveGraph: {
1065
1001
  static: boolean | null | undefined;
1066
1002
  problemNum: number | null | undefined;
1067
1003
  apiOptions: Readonly<Readonly<{
1068
- isArticle?: boolean | undefined;
1004
+ isArticle?: boolean | undefined; /**
1005
+ * An error message to display in the graph area, or true if the
1006
+ * graph is valid.
1007
+ */
1069
1008
  onInputError?: ((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined;
1070
1009
  onFocusChange?: ((newFocusPath: import("@khanacademy/perseus").FocusPath, oldFocusPath: import("@khanacademy/perseus").FocusPath, keypadHeight?: number | undefined, focusedElement?: HTMLElement | undefined) => unknown) | undefined;
1071
1010
  GroupMetadataEditor?: React.ComponentType<any> | undefined;
@@ -1077,15 +1016,7 @@ declare const InteractiveGraph: {
1077
1016
  [widgetId: string]: any;
1078
1017
  }) => void) | undefined;
1079
1018
  groupAnnotator?: ((groupNumber: number, widgetId: string) => React.ReactNode) | undefined;
1080
- imagePlaceholder?: React.ReactNode; /**
1081
- * The current correct answer for the graph. Updated by this component
1082
- * when the graph is changed.
1083
- *
1084
- * Note that the "Correct answer:" textbox is not an interactive
1085
- * element. Instead, it is a representation of the correct answer based
1086
- * on the state of the interactive graph previewed at the bottom of the
1087
- * editor page.
1088
- */
1019
+ imagePlaceholder?: React.ReactNode;
1089
1020
  widgetPlaceholder?: React.ReactNode;
1090
1021
  baseElements?: {
1091
1022
  Link: React.ComponentType<any>;
@@ -1107,7 +1038,7 @@ declare const InteractiveGraph: {
1107
1038
  crossOutEnabled?: boolean | undefined;
1108
1039
  editorChangeDelay?: number | undefined;
1109
1040
  flags?: Record<string, boolean | Record<string, boolean>> | undefined;
1110
- onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => import("@khanacademy/perseus").PerseusWidgetsMap) | undefined;
1041
+ onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => void) | undefined;
1111
1042
  }> & {
1112
1043
  GroupMetadataEditor: NonNullable<React.ComponentType<any> | undefined>;
1113
1044
  baseElements: {
@@ -1132,7 +1063,7 @@ declare const InteractiveGraph: {
1132
1063
  onFocus: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
1133
1064
  onBlur: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
1134
1065
  findWidgets: (arg1: import("../../../perseus/src/types").FilterCriterion) => readonly any[];
1135
- reviewModeRubric: PerseusInteractiveGraphWidgetOptions;
1066
+ reviewModeRubric: import("../../../perseus/src/widgets/interactive-graph").Rubric;
1136
1067
  onChange: import("@khanacademy/perseus").ChangeHandler;
1137
1068
  trackInteraction: (extraData?: {} | undefined) => void;
1138
1069
  isLastUsedWidget: boolean;
@@ -1152,7 +1083,10 @@ declare const InteractiveGraph: {
1152
1083
  static: boolean | null | undefined;
1153
1084
  problemNum: number | null | undefined;
1154
1085
  apiOptions: Readonly<Readonly<{
1155
- isArticle?: boolean | undefined;
1086
+ isArticle?: boolean | undefined; /**
1087
+ * An error message to display in the graph area, or true if the
1088
+ * graph is valid.
1089
+ */
1156
1090
  onInputError?: ((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined;
1157
1091
  onFocusChange?: ((newFocusPath: import("@khanacademy/perseus").FocusPath, oldFocusPath: import("@khanacademy/perseus").FocusPath, keypadHeight?: number | undefined, focusedElement?: HTMLElement | undefined) => unknown) | undefined;
1158
1092
  GroupMetadataEditor?: React.ComponentType<any> | undefined;
@@ -1164,15 +1098,7 @@ declare const InteractiveGraph: {
1164
1098
  [widgetId: string]: any;
1165
1099
  }) => void) | undefined;
1166
1100
  groupAnnotator?: ((groupNumber: number, widgetId: string) => React.ReactNode) | undefined;
1167
- imagePlaceholder?: React.ReactNode; /**
1168
- * The current correct answer for the graph. Updated by this component
1169
- * when the graph is changed.
1170
- *
1171
- * Note that the "Correct answer:" textbox is not an interactive
1172
- * element. Instead, it is a representation of the correct answer based
1173
- * on the state of the interactive graph previewed at the bottom of the
1174
- * editor page.
1175
- */
1101
+ imagePlaceholder?: React.ReactNode;
1176
1102
  widgetPlaceholder?: React.ReactNode;
1177
1103
  baseElements?: {
1178
1104
  Link: React.ComponentType<any>;
@@ -1194,7 +1120,7 @@ declare const InteractiveGraph: {
1194
1120
  crossOutEnabled?: boolean | undefined;
1195
1121
  editorChangeDelay?: number | undefined;
1196
1122
  flags?: Record<string, boolean | Record<string, boolean>> | undefined;
1197
- onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => import("@khanacademy/perseus").PerseusWidgetsMap) | undefined;
1123
+ onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => void) | undefined;
1198
1124
  }> & {
1199
1125
  GroupMetadataEditor: NonNullable<React.ComponentType<any> | undefined>;
1200
1126
  baseElements: {
@@ -1219,7 +1145,7 @@ declare const InteractiveGraph: {
1219
1145
  onFocus: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
1220
1146
  onBlur: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
1221
1147
  findWidgets: (arg1: import("../../../perseus/src/types").FilterCriterion) => readonly any[];
1222
- reviewModeRubric: PerseusInteractiveGraphWidgetOptions;
1148
+ reviewModeRubric: import("../../../perseus/src/widgets/interactive-graph").Rubric;
1223
1149
  onChange: import("@khanacademy/perseus").ChangeHandler;
1224
1150
  trackInteraction: (extraData?: {} | undefined) => void;
1225
1151
  isLastUsedWidget: boolean;
@@ -1234,7 +1160,10 @@ declare const InteractiveGraph: {
1234
1160
  static: boolean | null | undefined;
1235
1161
  problemNum: number | null | undefined;
1236
1162
  apiOptions: Readonly<Readonly<{
1237
- isArticle?: boolean | undefined;
1163
+ isArticle?: boolean | undefined; /**
1164
+ * An error message to display in the graph area, or true if the
1165
+ * graph is valid.
1166
+ */
1238
1167
  onInputError?: ((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined;
1239
1168
  onFocusChange?: ((newFocusPath: import("@khanacademy/perseus").FocusPath, oldFocusPath: import("@khanacademy/perseus").FocusPath, keypadHeight?: number | undefined, focusedElement?: HTMLElement | undefined) => unknown) | undefined;
1240
1169
  GroupMetadataEditor?: React.ComponentType<any> | undefined;
@@ -1246,15 +1175,7 @@ declare const InteractiveGraph: {
1246
1175
  [widgetId: string]: any;
1247
1176
  }) => void) | undefined;
1248
1177
  groupAnnotator?: ((groupNumber: number, widgetId: string) => React.ReactNode) | undefined;
1249
- imagePlaceholder?: React.ReactNode; /**
1250
- * The current correct answer for the graph. Updated by this component
1251
- * when the graph is changed.
1252
- *
1253
- * Note that the "Correct answer:" textbox is not an interactive
1254
- * element. Instead, it is a representation of the correct answer based
1255
- * on the state of the interactive graph previewed at the bottom of the
1256
- * editor page.
1257
- */
1178
+ imagePlaceholder?: React.ReactNode;
1258
1179
  widgetPlaceholder?: React.ReactNode;
1259
1180
  baseElements?: {
1260
1181
  Link: React.ComponentType<any>;
@@ -1276,7 +1197,7 @@ declare const InteractiveGraph: {
1276
1197
  crossOutEnabled?: boolean | undefined;
1277
1198
  editorChangeDelay?: number | undefined;
1278
1199
  flags?: Record<string, boolean | Record<string, boolean>> | undefined;
1279
- onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => import("@khanacademy/perseus").PerseusWidgetsMap) | undefined;
1200
+ onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => void) | undefined;
1280
1201
  }> & {
1281
1202
  GroupMetadataEditor: NonNullable<React.ComponentType<any> | undefined>;
1282
1203
  baseElements: {
@@ -1301,7 +1222,7 @@ declare const InteractiveGraph: {
1301
1222
  onFocus: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
1302
1223
  onBlur: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
1303
1224
  findWidgets: (arg1: import("../../../perseus/src/types").FilterCriterion) => readonly any[];
1304
- reviewModeRubric: PerseusInteractiveGraphWidgetOptions;
1225
+ reviewModeRubric: import("../../../perseus/src/widgets/interactive-graph").Rubric;
1305
1226
  onChange: import("@khanacademy/perseus").ChangeHandler;
1306
1227
  trackInteraction: (extraData?: {} | undefined) => void;
1307
1228
  isLastUsedWidget: boolean;
@@ -1314,7 +1235,10 @@ declare const InteractiveGraph: {
1314
1235
  static: boolean | null | undefined;
1315
1236
  problemNum: number | null | undefined;
1316
1237
  apiOptions: Readonly<Readonly<{
1317
- isArticle?: boolean | undefined;
1238
+ isArticle?: boolean | undefined; /**
1239
+ * An error message to display in the graph area, or true if the
1240
+ * graph is valid.
1241
+ */
1318
1242
  onInputError?: ((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined;
1319
1243
  onFocusChange?: ((newFocusPath: import("@khanacademy/perseus").FocusPath, oldFocusPath: import("@khanacademy/perseus").FocusPath, keypadHeight?: number | undefined, focusedElement?: HTMLElement | undefined) => unknown) | undefined;
1320
1244
  GroupMetadataEditor?: React.ComponentType<any> | undefined;
@@ -1326,15 +1250,7 @@ declare const InteractiveGraph: {
1326
1250
  [widgetId: string]: any;
1327
1251
  }) => void) | undefined;
1328
1252
  groupAnnotator?: ((groupNumber: number, widgetId: string) => React.ReactNode) | undefined;
1329
- imagePlaceholder?: React.ReactNode; /**
1330
- * The current correct answer for the graph. Updated by this component
1331
- * when the graph is changed.
1332
- *
1333
- * Note that the "Correct answer:" textbox is not an interactive
1334
- * element. Instead, it is a representation of the correct answer based
1335
- * on the state of the interactive graph previewed at the bottom of the
1336
- * editor page.
1337
- */
1253
+ imagePlaceholder?: React.ReactNode;
1338
1254
  widgetPlaceholder?: React.ReactNode;
1339
1255
  baseElements?: {
1340
1256
  Link: React.ComponentType<any>;
@@ -1356,7 +1272,7 @@ declare const InteractiveGraph: {
1356
1272
  crossOutEnabled?: boolean | undefined;
1357
1273
  editorChangeDelay?: number | undefined;
1358
1274
  flags?: Record<string, boolean | Record<string, boolean>> | undefined;
1359
- onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => import("@khanacademy/perseus").PerseusWidgetsMap) | undefined;
1275
+ onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => void) | undefined;
1360
1276
  }> & {
1361
1277
  GroupMetadataEditor: NonNullable<React.ComponentType<any> | undefined>;
1362
1278
  baseElements: {
@@ -1381,7 +1297,7 @@ declare const InteractiveGraph: {
1381
1297
  onFocus: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
1382
1298
  onBlur: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
1383
1299
  findWidgets: (arg1: import("../../../perseus/src/types").FilterCriterion) => readonly any[];
1384
- reviewModeRubric: PerseusInteractiveGraphWidgetOptions;
1300
+ reviewModeRubric: import("../../../perseus/src/widgets/interactive-graph").Rubric;
1385
1301
  onChange: import("@khanacademy/perseus").ChangeHandler;
1386
1302
  trackInteraction: (extraData?: {} | undefined) => void;
1387
1303
  isLastUsedWidget: boolean;
@@ -1396,7 +1312,10 @@ declare const InteractiveGraph: {
1396
1312
  static: boolean | null | undefined;
1397
1313
  problemNum: number | null | undefined;
1398
1314
  apiOptions: Readonly<Readonly<{
1399
- isArticle?: boolean | undefined;
1315
+ isArticle?: boolean | undefined; /**
1316
+ * An error message to display in the graph area, or true if the
1317
+ * graph is valid.
1318
+ */
1400
1319
  onInputError?: ((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined;
1401
1320
  onFocusChange?: ((newFocusPath: import("@khanacademy/perseus").FocusPath, oldFocusPath: import("@khanacademy/perseus").FocusPath, keypadHeight?: number | undefined, focusedElement?: HTMLElement | undefined) => unknown) | undefined;
1402
1321
  GroupMetadataEditor?: React.ComponentType<any> | undefined;
@@ -1408,15 +1327,7 @@ declare const InteractiveGraph: {
1408
1327
  [widgetId: string]: any;
1409
1328
  }) => void) | undefined;
1410
1329
  groupAnnotator?: ((groupNumber: number, widgetId: string) => React.ReactNode) | undefined;
1411
- imagePlaceholder?: React.ReactNode; /**
1412
- * The current correct answer for the graph. Updated by this component
1413
- * when the graph is changed.
1414
- *
1415
- * Note that the "Correct answer:" textbox is not an interactive
1416
- * element. Instead, it is a representation of the correct answer based
1417
- * on the state of the interactive graph previewed at the bottom of the
1418
- * editor page.
1419
- */
1330
+ imagePlaceholder?: React.ReactNode;
1420
1331
  widgetPlaceholder?: React.ReactNode;
1421
1332
  baseElements?: {
1422
1333
  Link: React.ComponentType<any>;
@@ -1438,7 +1349,7 @@ declare const InteractiveGraph: {
1438
1349
  crossOutEnabled?: boolean | undefined;
1439
1350
  editorChangeDelay?: number | undefined;
1440
1351
  flags?: Record<string, boolean | Record<string, boolean>> | undefined;
1441
- onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => import("@khanacademy/perseus").PerseusWidgetsMap) | undefined;
1352
+ onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => void) | undefined;
1442
1353
  }> & {
1443
1354
  GroupMetadataEditor: NonNullable<React.ComponentType<any> | undefined>;
1444
1355
  baseElements: {
@@ -1463,7 +1374,7 @@ declare const InteractiveGraph: {
1463
1374
  onFocus: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
1464
1375
  onBlur: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
1465
1376
  findWidgets: (arg1: import("../../../perseus/src/types").FilterCriterion) => readonly any[];
1466
- reviewModeRubric: PerseusInteractiveGraphWidgetOptions;
1377
+ reviewModeRubric: import("../../../perseus/src/widgets/interactive-graph").Rubric;
1467
1378
  onChange: import("@khanacademy/perseus").ChangeHandler;
1468
1379
  trackInteraction: (extraData?: {} | undefined) => void;
1469
1380
  isLastUsedWidget: boolean;
@@ -1476,7 +1387,10 @@ declare const InteractiveGraph: {
1476
1387
  static: boolean | null | undefined;
1477
1388
  problemNum: number | null | undefined;
1478
1389
  apiOptions: Readonly<Readonly<{
1479
- isArticle?: boolean | undefined;
1390
+ isArticle?: boolean | undefined; /**
1391
+ * An error message to display in the graph area, or true if the
1392
+ * graph is valid.
1393
+ */
1480
1394
  onInputError?: ((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined;
1481
1395
  onFocusChange?: ((newFocusPath: import("@khanacademy/perseus").FocusPath, oldFocusPath: import("@khanacademy/perseus").FocusPath, keypadHeight?: number | undefined, focusedElement?: HTMLElement | undefined) => unknown) | undefined;
1482
1396
  GroupMetadataEditor?: React.ComponentType<any> | undefined;
@@ -1488,15 +1402,7 @@ declare const InteractiveGraph: {
1488
1402
  [widgetId: string]: any;
1489
1403
  }) => void) | undefined;
1490
1404
  groupAnnotator?: ((groupNumber: number, widgetId: string) => React.ReactNode) | undefined;
1491
- imagePlaceholder?: React.ReactNode; /**
1492
- * The current correct answer for the graph. Updated by this component
1493
- * when the graph is changed.
1494
- *
1495
- * Note that the "Correct answer:" textbox is not an interactive
1496
- * element. Instead, it is a representation of the correct answer based
1497
- * on the state of the interactive graph previewed at the bottom of the
1498
- * editor page.
1499
- */
1405
+ imagePlaceholder?: React.ReactNode;
1500
1406
  widgetPlaceholder?: React.ReactNode;
1501
1407
  baseElements?: {
1502
1408
  Link: React.ComponentType<any>;
@@ -1518,7 +1424,7 @@ declare const InteractiveGraph: {
1518
1424
  crossOutEnabled?: boolean | undefined;
1519
1425
  editorChangeDelay?: number | undefined;
1520
1426
  flags?: Record<string, boolean | Record<string, boolean>> | undefined;
1521
- onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => import("@khanacademy/perseus").PerseusWidgetsMap) | undefined;
1427
+ onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => void) | undefined;
1522
1428
  }> & {
1523
1429
  GroupMetadataEditor: NonNullable<React.ComponentType<any> | undefined>;
1524
1430
  baseElements: {
@@ -1543,7 +1449,7 @@ declare const InteractiveGraph: {
1543
1449
  onFocus: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
1544
1450
  onBlur: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
1545
1451
  findWidgets: (arg1: import("../../../perseus/src/types").FilterCriterion) => readonly any[];
1546
- reviewModeRubric: PerseusInteractiveGraphWidgetOptions;
1452
+ reviewModeRubric: import("../../../perseus/src/widgets/interactive-graph").Rubric;
1547
1453
  onChange: import("@khanacademy/perseus").ChangeHandler;
1548
1454
  trackInteraction: (extraData?: {} | undefined) => void;
1549
1455
  isLastUsedWidget: boolean;
@@ -1556,7 +1462,10 @@ declare const InteractiveGraph: {
1556
1462
  static: boolean | null | undefined;
1557
1463
  problemNum: number | null | undefined;
1558
1464
  apiOptions: Readonly<Readonly<{
1559
- isArticle?: boolean | undefined;
1465
+ isArticle?: boolean | undefined; /**
1466
+ * An error message to display in the graph area, or true if the
1467
+ * graph is valid.
1468
+ */
1560
1469
  onInputError?: ((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined;
1561
1470
  onFocusChange?: ((newFocusPath: import("@khanacademy/perseus").FocusPath, oldFocusPath: import("@khanacademy/perseus").FocusPath, keypadHeight?: number | undefined, focusedElement?: HTMLElement | undefined) => unknown) | undefined;
1562
1471
  GroupMetadataEditor?: React.ComponentType<any> | undefined;
@@ -1568,15 +1477,7 @@ declare const InteractiveGraph: {
1568
1477
  [widgetId: string]: any;
1569
1478
  }) => void) | undefined;
1570
1479
  groupAnnotator?: ((groupNumber: number, widgetId: string) => React.ReactNode) | undefined;
1571
- imagePlaceholder?: React.ReactNode; /**
1572
- * The current correct answer for the graph. Updated by this component
1573
- * when the graph is changed.
1574
- *
1575
- * Note that the "Correct answer:" textbox is not an interactive
1576
- * element. Instead, it is a representation of the correct answer based
1577
- * on the state of the interactive graph previewed at the bottom of the
1578
- * editor page.
1579
- */
1480
+ imagePlaceholder?: React.ReactNode;
1580
1481
  widgetPlaceholder?: React.ReactNode;
1581
1482
  baseElements?: {
1582
1483
  Link: React.ComponentType<any>;
@@ -1598,7 +1499,7 @@ declare const InteractiveGraph: {
1598
1499
  crossOutEnabled?: boolean | undefined;
1599
1500
  editorChangeDelay?: number | undefined;
1600
1501
  flags?: Record<string, boolean | Record<string, boolean>> | undefined;
1601
- onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => import("@khanacademy/perseus").PerseusWidgetsMap) | undefined;
1502
+ onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => void) | undefined;
1602
1503
  }> & {
1603
1504
  GroupMetadataEditor: NonNullable<React.ComponentType<any> | undefined>;
1604
1505
  baseElements: {
@@ -1623,7 +1524,7 @@ declare const InteractiveGraph: {
1623
1524
  onFocus: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
1624
1525
  onBlur: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
1625
1526
  findWidgets: (arg1: import("../../../perseus/src/types").FilterCriterion) => readonly any[];
1626
- reviewModeRubric: PerseusInteractiveGraphWidgetOptions;
1527
+ reviewModeRubric: import("../../../perseus/src/widgets/interactive-graph").Rubric;
1627
1528
  onChange: import("@khanacademy/perseus").ChangeHandler;
1628
1529
  trackInteraction: (extraData?: {} | undefined) => void;
1629
1530
  isLastUsedWidget: boolean;
@@ -1636,7 +1537,10 @@ declare const InteractiveGraph: {
1636
1537
  static: boolean | null | undefined;
1637
1538
  problemNum: number | null | undefined;
1638
1539
  apiOptions: Readonly<Readonly<{
1639
- isArticle?: boolean | undefined;
1540
+ isArticle?: boolean | undefined; /**
1541
+ * An error message to display in the graph area, or true if the
1542
+ * graph is valid.
1543
+ */
1640
1544
  onInputError?: ((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined;
1641
1545
  onFocusChange?: ((newFocusPath: import("@khanacademy/perseus").FocusPath, oldFocusPath: import("@khanacademy/perseus").FocusPath, keypadHeight?: number | undefined, focusedElement?: HTMLElement | undefined) => unknown) | undefined;
1642
1546
  GroupMetadataEditor?: React.ComponentType<any> | undefined;
@@ -1648,15 +1552,7 @@ declare const InteractiveGraph: {
1648
1552
  [widgetId: string]: any;
1649
1553
  }) => void) | undefined;
1650
1554
  groupAnnotator?: ((groupNumber: number, widgetId: string) => React.ReactNode) | undefined;
1651
- imagePlaceholder?: React.ReactNode; /**
1652
- * The current correct answer for the graph. Updated by this component
1653
- * when the graph is changed.
1654
- *
1655
- * Note that the "Correct answer:" textbox is not an interactive
1656
- * element. Instead, it is a representation of the correct answer based
1657
- * on the state of the interactive graph previewed at the bottom of the
1658
- * editor page.
1659
- */
1555
+ imagePlaceholder?: React.ReactNode;
1660
1556
  widgetPlaceholder?: React.ReactNode;
1661
1557
  baseElements?: {
1662
1558
  Link: React.ComponentType<any>;
@@ -1678,7 +1574,7 @@ declare const InteractiveGraph: {
1678
1574
  crossOutEnabled?: boolean | undefined;
1679
1575
  editorChangeDelay?: number | undefined;
1680
1576
  flags?: Record<string, boolean | Record<string, boolean>> | undefined;
1681
- onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => import("@khanacademy/perseus").PerseusWidgetsMap) | undefined;
1577
+ onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => void) | undefined;
1682
1578
  }> & {
1683
1579
  GroupMetadataEditor: NonNullable<React.ComponentType<any> | undefined>;
1684
1580
  baseElements: {
@@ -1703,7 +1599,7 @@ declare const InteractiveGraph: {
1703
1599
  onFocus: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
1704
1600
  onBlur: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
1705
1601
  findWidgets: (arg1: import("../../../perseus/src/types").FilterCriterion) => readonly any[];
1706
- reviewModeRubric: PerseusInteractiveGraphWidgetOptions;
1602
+ reviewModeRubric: import("../../../perseus/src/widgets/interactive-graph").Rubric;
1707
1603
  onChange: import("@khanacademy/perseus").ChangeHandler;
1708
1604
  trackInteraction: (extraData?: {} | undefined) => void;
1709
1605
  isLastUsedWidget: boolean;
@@ -1717,7 +1613,10 @@ declare const InteractiveGraph: {
1717
1613
  static: boolean | null | undefined;
1718
1614
  problemNum: number | null | undefined;
1719
1615
  apiOptions: Readonly<Readonly<{
1720
- isArticle?: boolean | undefined;
1616
+ isArticle?: boolean | undefined; /**
1617
+ * An error message to display in the graph area, or true if the
1618
+ * graph is valid.
1619
+ */
1721
1620
  onInputError?: ((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined;
1722
1621
  onFocusChange?: ((newFocusPath: import("@khanacademy/perseus").FocusPath, oldFocusPath: import("@khanacademy/perseus").FocusPath, keypadHeight?: number | undefined, focusedElement?: HTMLElement | undefined) => unknown) | undefined;
1723
1622
  GroupMetadataEditor?: React.ComponentType<any> | undefined;
@@ -1729,15 +1628,7 @@ declare const InteractiveGraph: {
1729
1628
  [widgetId: string]: any;
1730
1629
  }) => void) | undefined;
1731
1630
  groupAnnotator?: ((groupNumber: number, widgetId: string) => React.ReactNode) | undefined;
1732
- imagePlaceholder?: React.ReactNode; /**
1733
- * The current correct answer for the graph. Updated by this component
1734
- * when the graph is changed.
1735
- *
1736
- * Note that the "Correct answer:" textbox is not an interactive
1737
- * element. Instead, it is a representation of the correct answer based
1738
- * on the state of the interactive graph previewed at the bottom of the
1739
- * editor page.
1740
- */
1631
+ imagePlaceholder?: React.ReactNode;
1741
1632
  widgetPlaceholder?: React.ReactNode;
1742
1633
  baseElements?: {
1743
1634
  Link: React.ComponentType<any>;
@@ -1759,7 +1650,7 @@ declare const InteractiveGraph: {
1759
1650
  crossOutEnabled?: boolean | undefined;
1760
1651
  editorChangeDelay?: number | undefined;
1761
1652
  flags?: Record<string, boolean | Record<string, boolean>> | undefined;
1762
- onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => import("@khanacademy/perseus").PerseusWidgetsMap) | undefined;
1653
+ onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => void) | undefined;
1763
1654
  }> & {
1764
1655
  GroupMetadataEditor: NonNullable<React.ComponentType<any> | undefined>;
1765
1656
  baseElements: {
@@ -1784,7 +1675,7 @@ declare const InteractiveGraph: {
1784
1675
  onFocus: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
1785
1676
  onBlur: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
1786
1677
  findWidgets: (arg1: import("../../../perseus/src/types").FilterCriterion) => readonly any[];
1787
- reviewModeRubric: PerseusInteractiveGraphWidgetOptions;
1678
+ reviewModeRubric: import("../../../perseus/src/widgets/interactive-graph").Rubric;
1788
1679
  onChange: import("@khanacademy/perseus").ChangeHandler;
1789
1680
  trackInteraction: (extraData?: {} | undefined) => void;
1790
1681
  isLastUsedWidget: boolean;
@@ -1817,7 +1708,10 @@ declare const InteractiveGraph: {
1817
1708
  static: boolean | null | undefined;
1818
1709
  problemNum: number | null | undefined;
1819
1710
  apiOptions: Readonly<Readonly<{
1820
- isArticle?: boolean | undefined;
1711
+ isArticle?: boolean | undefined; /**
1712
+ * An error message to display in the graph area, or true if the
1713
+ * graph is valid.
1714
+ */
1821
1715
  onInputError?: ((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined;
1822
1716
  onFocusChange?: ((newFocusPath: import("@khanacademy/perseus").FocusPath, oldFocusPath: import("@khanacademy/perseus").FocusPath, keypadHeight?: number | undefined, focusedElement?: HTMLElement | undefined) => unknown) | undefined;
1823
1717
  GroupMetadataEditor?: React.ComponentType<any> | undefined;
@@ -1829,15 +1723,7 @@ declare const InteractiveGraph: {
1829
1723
  [widgetId: string]: any;
1830
1724
  }) => void) | undefined;
1831
1725
  groupAnnotator?: ((groupNumber: number, widgetId: string) => React.ReactNode) | undefined;
1832
- imagePlaceholder?: React.ReactNode; /**
1833
- * The current correct answer for the graph. Updated by this component
1834
- * when the graph is changed.
1835
- *
1836
- * Note that the "Correct answer:" textbox is not an interactive
1837
- * element. Instead, it is a representation of the correct answer based
1838
- * on the state of the interactive graph previewed at the bottom of the
1839
- * editor page.
1840
- */
1726
+ imagePlaceholder?: React.ReactNode;
1841
1727
  widgetPlaceholder?: React.ReactNode;
1842
1728
  baseElements?: {
1843
1729
  Link: React.ComponentType<any>;
@@ -1859,7 +1745,7 @@ declare const InteractiveGraph: {
1859
1745
  crossOutEnabled?: boolean | undefined;
1860
1746
  editorChangeDelay?: number | undefined;
1861
1747
  flags?: Record<string, boolean | Record<string, boolean>> | undefined;
1862
- onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => import("@khanacademy/perseus").PerseusWidgetsMap) | undefined;
1748
+ onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => void) | undefined;
1863
1749
  }> & {
1864
1750
  GroupMetadataEditor: NonNullable<React.ComponentType<any> | undefined>;
1865
1751
  baseElements: {
@@ -1884,7 +1770,7 @@ declare const InteractiveGraph: {
1884
1770
  onFocus: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
1885
1771
  onBlur: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
1886
1772
  findWidgets: (arg1: import("../../../perseus/src/types").FilterCriterion) => readonly any[];
1887
- reviewModeRubric: PerseusInteractiveGraphWidgetOptions;
1773
+ reviewModeRubric: import("../../../perseus/src/widgets/interactive-graph").Rubric;
1888
1774
  onChange: import("@khanacademy/perseus").ChangeHandler;
1889
1775
  trackInteraction: (extraData?: {} | undefined) => void;
1890
1776
  isLastUsedWidget: boolean;
@@ -1897,7 +1783,10 @@ declare const InteractiveGraph: {
1897
1783
  static: boolean | null | undefined;
1898
1784
  problemNum: number | null | undefined;
1899
1785
  apiOptions: Readonly<Readonly<{
1900
- isArticle?: boolean | undefined;
1786
+ isArticle?: boolean | undefined; /**
1787
+ * An error message to display in the graph area, or true if the
1788
+ * graph is valid.
1789
+ */
1901
1790
  onInputError?: ((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined;
1902
1791
  onFocusChange?: ((newFocusPath: import("@khanacademy/perseus").FocusPath, oldFocusPath: import("@khanacademy/perseus").FocusPath, keypadHeight?: number | undefined, focusedElement?: HTMLElement | undefined) => unknown) | undefined;
1903
1792
  GroupMetadataEditor?: React.ComponentType<any> | undefined;
@@ -1909,15 +1798,7 @@ declare const InteractiveGraph: {
1909
1798
  [widgetId: string]: any;
1910
1799
  }) => void) | undefined;
1911
1800
  groupAnnotator?: ((groupNumber: number, widgetId: string) => React.ReactNode) | undefined;
1912
- imagePlaceholder?: React.ReactNode; /**
1913
- * The current correct answer for the graph. Updated by this component
1914
- * when the graph is changed.
1915
- *
1916
- * Note that the "Correct answer:" textbox is not an interactive
1917
- * element. Instead, it is a representation of the correct answer based
1918
- * on the state of the interactive graph previewed at the bottom of the
1919
- * editor page.
1920
- */
1801
+ imagePlaceholder?: React.ReactNode;
1921
1802
  widgetPlaceholder?: React.ReactNode;
1922
1803
  baseElements?: {
1923
1804
  Link: React.ComponentType<any>;
@@ -1939,7 +1820,7 @@ declare const InteractiveGraph: {
1939
1820
  crossOutEnabled?: boolean | undefined;
1940
1821
  editorChangeDelay?: number | undefined;
1941
1822
  flags?: Record<string, boolean | Record<string, boolean>> | undefined;
1942
- onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => import("@khanacademy/perseus").PerseusWidgetsMap) | undefined;
1823
+ onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => void) | undefined;
1943
1824
  }> & {
1944
1825
  GroupMetadataEditor: NonNullable<React.ComponentType<any> | undefined>;
1945
1826
  baseElements: {
@@ -1964,7 +1845,7 @@ declare const InteractiveGraph: {
1964
1845
  onFocus: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
1965
1846
  onBlur: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
1966
1847
  findWidgets: (arg1: import("../../../perseus/src/types").FilterCriterion) => readonly any[];
1967
- reviewModeRubric: PerseusInteractiveGraphWidgetOptions;
1848
+ reviewModeRubric: import("../../../perseus/src/widgets/interactive-graph").Rubric;
1968
1849
  onChange: import("@khanacademy/perseus").ChangeHandler;
1969
1850
  trackInteraction: (extraData?: {} | undefined) => void;
1970
1851
  isLastUsedWidget: boolean;
@@ -1977,7 +1858,10 @@ declare const InteractiveGraph: {
1977
1858
  static: boolean | null | undefined;
1978
1859
  problemNum: number | null | undefined;
1979
1860
  apiOptions: Readonly<Readonly<{
1980
- isArticle?: boolean | undefined;
1861
+ isArticle?: boolean | undefined; /**
1862
+ * An error message to display in the graph area, or true if the
1863
+ * graph is valid.
1864
+ */
1981
1865
  onInputError?: ((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined;
1982
1866
  onFocusChange?: ((newFocusPath: import("@khanacademy/perseus").FocusPath, oldFocusPath: import("@khanacademy/perseus").FocusPath, keypadHeight?: number | undefined, focusedElement?: HTMLElement | undefined) => unknown) | undefined;
1983
1867
  GroupMetadataEditor?: React.ComponentType<any> | undefined;
@@ -1989,15 +1873,7 @@ declare const InteractiveGraph: {
1989
1873
  [widgetId: string]: any;
1990
1874
  }) => void) | undefined;
1991
1875
  groupAnnotator?: ((groupNumber: number, widgetId: string) => React.ReactNode) | undefined;
1992
- imagePlaceholder?: React.ReactNode; /**
1993
- * The current correct answer for the graph. Updated by this component
1994
- * when the graph is changed.
1995
- *
1996
- * Note that the "Correct answer:" textbox is not an interactive
1997
- * element. Instead, it is a representation of the correct answer based
1998
- * on the state of the interactive graph previewed at the bottom of the
1999
- * editor page.
2000
- */
1876
+ imagePlaceholder?: React.ReactNode;
2001
1877
  widgetPlaceholder?: React.ReactNode;
2002
1878
  baseElements?: {
2003
1879
  Link: React.ComponentType<any>;
@@ -2019,7 +1895,7 @@ declare const InteractiveGraph: {
2019
1895
  crossOutEnabled?: boolean | undefined;
2020
1896
  editorChangeDelay?: number | undefined;
2021
1897
  flags?: Record<string, boolean | Record<string, boolean>> | undefined;
2022
- onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => import("@khanacademy/perseus").PerseusWidgetsMap) | undefined;
1898
+ onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => void) | undefined;
2023
1899
  }> & {
2024
1900
  GroupMetadataEditor: NonNullable<React.ComponentType<any> | undefined>;
2025
1901
  baseElements: {
@@ -2044,7 +1920,7 @@ declare const InteractiveGraph: {
2044
1920
  onFocus: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
2045
1921
  onBlur: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
2046
1922
  findWidgets: (arg1: import("../../../perseus/src/types").FilterCriterion) => readonly any[];
2047
- reviewModeRubric: PerseusInteractiveGraphWidgetOptions;
1923
+ reviewModeRubric: import("../../../perseus/src/widgets/interactive-graph").Rubric;
2048
1924
  onChange: import("@khanacademy/perseus").ChangeHandler;
2049
1925
  trackInteraction: (extraData?: {} | undefined) => void;
2050
1926
  isLastUsedWidget: boolean;
@@ -2056,9 +1932,6 @@ declare const InteractiveGraph: {
2056
1932
  handleAddPointsMouseDown: (arg1: import("@khanacademy/perseus").Coord) => void;
2057
1933
  resetGraphie: () => void;
2058
1934
  setupGraphie: () => void;
2059
- /**
2060
- * The range of the graph in the x and y directions.
2061
- */
2062
1935
  showHairlines: (arg1: import("@khanacademy/perseus").Coord) => void;
2063
1936
  hideHairlines: () => void;
2064
1937
  setTrashCanVisibility: (arg1: number) => void;
@@ -2068,7 +1941,10 @@ declare const InteractiveGraph: {
2068
1941
  static: boolean | null | undefined;
2069
1942
  problemNum: number | null | undefined;
2070
1943
  apiOptions: Readonly<Readonly<{
2071
- isArticle?: boolean | undefined;
1944
+ isArticle?: boolean | undefined; /**
1945
+ * An error message to display in the graph area, or true if the
1946
+ * graph is valid.
1947
+ */
2072
1948
  onInputError?: ((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined;
2073
1949
  onFocusChange?: ((newFocusPath: import("@khanacademy/perseus").FocusPath, oldFocusPath: import("@khanacademy/perseus").FocusPath, keypadHeight?: number | undefined, focusedElement?: HTMLElement | undefined) => unknown) | undefined;
2074
1950
  GroupMetadataEditor?: React.ComponentType<any> | undefined;
@@ -2080,15 +1956,7 @@ declare const InteractiveGraph: {
2080
1956
  [widgetId: string]: any;
2081
1957
  }) => void) | undefined;
2082
1958
  groupAnnotator?: ((groupNumber: number, widgetId: string) => React.ReactNode) | undefined;
2083
- imagePlaceholder?: React.ReactNode; /**
2084
- * The current correct answer for the graph. Updated by this component
2085
- * when the graph is changed.
2086
- *
2087
- * Note that the "Correct answer:" textbox is not an interactive
2088
- * element. Instead, it is a representation of the correct answer based
2089
- * on the state of the interactive graph previewed at the bottom of the
2090
- * editor page.
2091
- */
1959
+ imagePlaceholder?: React.ReactNode;
2092
1960
  widgetPlaceholder?: React.ReactNode;
2093
1961
  baseElements?: {
2094
1962
  Link: React.ComponentType<any>;
@@ -2110,7 +1978,7 @@ declare const InteractiveGraph: {
2110
1978
  crossOutEnabled?: boolean | undefined;
2111
1979
  editorChangeDelay?: number | undefined;
2112
1980
  flags?: Record<string, boolean | Record<string, boolean>> | undefined;
2113
- onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => import("@khanacademy/perseus").PerseusWidgetsMap) | undefined;
1981
+ onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => void) | undefined;
2114
1982
  }> & {
2115
1983
  GroupMetadataEditor: NonNullable<React.ComponentType<any> | undefined>;
2116
1984
  baseElements: {
@@ -2135,13 +2003,15 @@ declare const InteractiveGraph: {
2135
2003
  onFocus: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
2136
2004
  onBlur: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
2137
2005
  findWidgets: (arg1: import("../../../perseus/src/types").FilterCriterion) => readonly any[];
2138
- reviewModeRubric: PerseusInteractiveGraphWidgetOptions;
2006
+ reviewModeRubric: import("../../../perseus/src/widgets/interactive-graph").Rubric;
2139
2007
  onChange: import("@khanacademy/perseus").ChangeHandler;
2140
2008
  trackInteraction: (extraData?: {} | undefined) => void;
2141
2009
  isLastUsedWidget: boolean;
2142
2010
  linterContext: import("@khanacademy/perseus-linter").LinterContextProps;
2143
2011
  containerSizeClass: SizingUtils.SizeClass;
2144
- }) | null | undefined) => boolean;
2012
+ }) | null | undefined) => boolean; /**
2013
+ * How far apart the grid lines are in the x and y directions.
2014
+ */
2145
2015
  areAngleGraphsEqual(prevGraph: import("../../../perseus/src/perseus-types").PerseusGraphTypeAngle, currentGraph: import("../../../perseus/src/perseus-types").PerseusGraphTypeAngle): boolean;
2146
2016
  arePointGraphsEqual(prevGraph: import("../../../perseus/src/perseus-types").PerseusGraphTypePoint, currentGraph: import("../../../perseus/src/perseus-types").PerseusGraphTypePoint): boolean;
2147
2017
  arePolygonGraphsEqual(prevGraph: import("../../../perseus/src/perseus-types").PerseusGraphTypePolygon, currentGraph: import("../../../perseus/src/perseus-types").PerseusGraphTypePolygon): boolean;
@@ -2160,9 +2030,6 @@ declare const InteractiveGraph: {
2160
2030
  updateSinusoid: () => void;
2161
2031
  removeSinusoidControls: () => void;
2162
2032
  addCircleControls: () => void;
2163
- /**
2164
- * Whether to show the protractor on the graph.
2165
- */
2166
2033
  removeCircleControls: () => void;
2167
2034
  addLinearSystemControls: () => void;
2168
2035
  removeLinearSystemControls: () => void;
@@ -2172,7 +2039,7 @@ declare const InteractiveGraph: {
2172
2039
  createPointForPolygonType: (arg1: import("@khanacademy/perseus").Coord, arg2: number) => any;
2173
2040
  updateCoordsFromPoints: () => void;
2174
2041
  clearCoords: () => void;
2175
- onChange: (arg1: any) => void;
2042
+ onChange: import("@khanacademy/perseus").ChangeHandler;
2176
2043
  addPointControls: () => void;
2177
2044
  removePointControls: () => void;
2178
2045
  addSegmentControls: () => void;
@@ -2186,7 +2053,7 @@ declare const InteractiveGraph: {
2186
2053
  removeAngleControls: () => void;
2187
2054
  toggleShowSides: () => void;
2188
2055
  getUserInput: () => import("@khanacademy/perseus").PerseusGraphType;
2189
- simpleValidate: (rubric: PerseusInteractiveGraphWidgetOptions) => import("@khanacademy/perseus").PerseusScore;
2056
+ simpleValidate: (rubric: import("../../../perseus/src/widgets/interactive-graph").Rubric) => import("@khanacademy/perseus").PerseusScore;
2190
2057
  focus: () => void;
2191
2058
  render(): React.ReactNode;
2192
2059
  context: any;
@@ -2198,7 +2065,10 @@ declare const InteractiveGraph: {
2198
2065
  static: boolean | null | undefined;
2199
2066
  problemNum: number | null | undefined;
2200
2067
  apiOptions: Readonly<Readonly<{
2201
- isArticle?: boolean | undefined;
2068
+ isArticle?: boolean | undefined; /**
2069
+ * An error message to display in the graph area, or true if the
2070
+ * graph is valid.
2071
+ */
2202
2072
  onInputError?: ((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined;
2203
2073
  onFocusChange?: ((newFocusPath: import("@khanacademy/perseus").FocusPath, oldFocusPath: import("@khanacademy/perseus").FocusPath, keypadHeight?: number | undefined, focusedElement?: HTMLElement | undefined) => unknown) | undefined;
2204
2074
  GroupMetadataEditor?: React.ComponentType<any> | undefined;
@@ -2210,15 +2080,7 @@ declare const InteractiveGraph: {
2210
2080
  [widgetId: string]: any;
2211
2081
  }) => void) | undefined;
2212
2082
  groupAnnotator?: ((groupNumber: number, widgetId: string) => React.ReactNode) | undefined;
2213
- imagePlaceholder?: React.ReactNode; /**
2214
- * The current correct answer for the graph. Updated by this component
2215
- * when the graph is changed.
2216
- *
2217
- * Note that the "Correct answer:" textbox is not an interactive
2218
- * element. Instead, it is a representation of the correct answer based
2219
- * on the state of the interactive graph previewed at the bottom of the
2220
- * editor page.
2221
- */
2083
+ imagePlaceholder?: React.ReactNode;
2222
2084
  widgetPlaceholder?: React.ReactNode;
2223
2085
  baseElements?: {
2224
2086
  Link: React.ComponentType<any>;
@@ -2240,7 +2102,7 @@ declare const InteractiveGraph: {
2240
2102
  crossOutEnabled?: boolean | undefined;
2241
2103
  editorChangeDelay?: number | undefined;
2242
2104
  flags?: Record<string, boolean | Record<string, boolean>> | undefined;
2243
- onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => import("@khanacademy/perseus").PerseusWidgetsMap) | undefined;
2105
+ onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => void) | undefined;
2244
2106
  }> & {
2245
2107
  GroupMetadataEditor: NonNullable<React.ComponentType<any> | undefined>;
2246
2108
  baseElements: {
@@ -2265,7 +2127,7 @@ declare const InteractiveGraph: {
2265
2127
  onFocus: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
2266
2128
  onBlur: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
2267
2129
  findWidgets: (arg1: import("../../../perseus/src/types").FilterCriterion) => readonly any[];
2268
- reviewModeRubric: PerseusInteractiveGraphWidgetOptions;
2130
+ reviewModeRubric: import("../../../perseus/src/widgets/interactive-graph").Rubric;
2269
2131
  onChange: import("@khanacademy/perseus").ChangeHandler;
2270
2132
  trackInteraction: (extraData?: {} | undefined) => void;
2271
2133
  isLastUsedWidget: boolean;
@@ -2283,7 +2145,10 @@ declare const InteractiveGraph: {
2283
2145
  static: boolean | null | undefined;
2284
2146
  problemNum: number | null | undefined;
2285
2147
  apiOptions: Readonly<Readonly<{
2286
- isArticle?: boolean | undefined;
2148
+ isArticle?: boolean | undefined; /**
2149
+ * An error message to display in the graph area, or true if the
2150
+ * graph is valid.
2151
+ */
2287
2152
  onInputError?: ((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined;
2288
2153
  onFocusChange?: ((newFocusPath: import("@khanacademy/perseus").FocusPath, oldFocusPath: import("@khanacademy/perseus").FocusPath, keypadHeight?: number | undefined, focusedElement?: HTMLElement | undefined) => unknown) | undefined;
2289
2154
  GroupMetadataEditor?: React.ComponentType<any> | undefined;
@@ -2295,15 +2160,7 @@ declare const InteractiveGraph: {
2295
2160
  [widgetId: string]: any;
2296
2161
  }) => void) | undefined;
2297
2162
  groupAnnotator?: ((groupNumber: number, widgetId: string) => React.ReactNode) | undefined;
2298
- imagePlaceholder?: React.ReactNode; /**
2299
- * The current correct answer for the graph. Updated by this component
2300
- * when the graph is changed.
2301
- *
2302
- * Note that the "Correct answer:" textbox is not an interactive
2303
- * element. Instead, it is a representation of the correct answer based
2304
- * on the state of the interactive graph previewed at the bottom of the
2305
- * editor page.
2306
- */
2163
+ imagePlaceholder?: React.ReactNode;
2307
2164
  widgetPlaceholder?: React.ReactNode;
2308
2165
  baseElements?: {
2309
2166
  Link: React.ComponentType<any>;
@@ -2325,7 +2182,7 @@ declare const InteractiveGraph: {
2325
2182
  crossOutEnabled?: boolean | undefined;
2326
2183
  editorChangeDelay?: number | undefined;
2327
2184
  flags?: Record<string, boolean | Record<string, boolean>> | undefined;
2328
- onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => import("@khanacademy/perseus").PerseusWidgetsMap) | undefined;
2185
+ onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => void) | undefined;
2329
2186
  }> & {
2330
2187
  GroupMetadataEditor: NonNullable<React.ComponentType<any> | undefined>;
2331
2188
  baseElements: {
@@ -2350,7 +2207,7 @@ declare const InteractiveGraph: {
2350
2207
  onFocus: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
2351
2208
  onBlur: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
2352
2209
  findWidgets: (arg1: import("../../../perseus/src/types").FilterCriterion) => readonly any[];
2353
- reviewModeRubric: PerseusInteractiveGraphWidgetOptions;
2210
+ reviewModeRubric: import("../../../perseus/src/widgets/interactive-graph").Rubric;
2354
2211
  onChange: import("@khanacademy/perseus").ChangeHandler;
2355
2212
  trackInteraction: (extraData?: {} | undefined) => void;
2356
2213
  isLastUsedWidget: boolean;
@@ -2365,7 +2222,10 @@ declare const InteractiveGraph: {
2365
2222
  static: boolean | null | undefined;
2366
2223
  problemNum: number | null | undefined;
2367
2224
  apiOptions: Readonly<Readonly<{
2368
- isArticle?: boolean | undefined;
2225
+ isArticle?: boolean | undefined; /**
2226
+ * An error message to display in the graph area, or true if the
2227
+ * graph is valid.
2228
+ */
2369
2229
  onInputError?: ((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined;
2370
2230
  onFocusChange?: ((newFocusPath: import("@khanacademy/perseus").FocusPath, oldFocusPath: import("@khanacademy/perseus").FocusPath, keypadHeight?: number | undefined, focusedElement?: HTMLElement | undefined) => unknown) | undefined;
2371
2231
  GroupMetadataEditor?: React.ComponentType<any> | undefined;
@@ -2377,15 +2237,7 @@ declare const InteractiveGraph: {
2377
2237
  [widgetId: string]: any;
2378
2238
  }) => void) | undefined;
2379
2239
  groupAnnotator?: ((groupNumber: number, widgetId: string) => React.ReactNode) | undefined;
2380
- imagePlaceholder?: React.ReactNode; /**
2381
- * The current correct answer for the graph. Updated by this component
2382
- * when the graph is changed.
2383
- *
2384
- * Note that the "Correct answer:" textbox is not an interactive
2385
- * element. Instead, it is a representation of the correct answer based
2386
- * on the state of the interactive graph previewed at the bottom of the
2387
- * editor page.
2388
- */
2240
+ imagePlaceholder?: React.ReactNode;
2389
2241
  widgetPlaceholder?: React.ReactNode;
2390
2242
  baseElements?: {
2391
2243
  Link: React.ComponentType<any>;
@@ -2407,7 +2259,7 @@ declare const InteractiveGraph: {
2407
2259
  crossOutEnabled?: boolean | undefined;
2408
2260
  editorChangeDelay?: number | undefined;
2409
2261
  flags?: Record<string, boolean | Record<string, boolean>> | undefined;
2410
- onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => import("@khanacademy/perseus").PerseusWidgetsMap) | undefined;
2262
+ onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => void) | undefined;
2411
2263
  }> & {
2412
2264
  GroupMetadataEditor: NonNullable<React.ComponentType<any> | undefined>;
2413
2265
  baseElements: {
@@ -2432,7 +2284,7 @@ declare const InteractiveGraph: {
2432
2284
  onFocus: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
2433
2285
  onBlur: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
2434
2286
  findWidgets: (arg1: import("../../../perseus/src/types").FilterCriterion) => readonly any[];
2435
- reviewModeRubric: PerseusInteractiveGraphWidgetOptions;
2287
+ reviewModeRubric: import("../../../perseus/src/widgets/interactive-graph").Rubric;
2436
2288
  onChange: import("@khanacademy/perseus").ChangeHandler;
2437
2289
  trackInteraction: (extraData?: {} | undefined) => void;
2438
2290
  isLastUsedWidget: boolean;
@@ -2446,7 +2298,10 @@ declare const InteractiveGraph: {
2446
2298
  static: boolean | null | undefined;
2447
2299
  problemNum: number | null | undefined;
2448
2300
  apiOptions: Readonly<Readonly<{
2449
- isArticle?: boolean | undefined;
2301
+ isArticle?: boolean | undefined; /**
2302
+ * An error message to display in the graph area, or true if the
2303
+ * graph is valid.
2304
+ */
2450
2305
  onInputError?: ((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined;
2451
2306
  onFocusChange?: ((newFocusPath: import("@khanacademy/perseus").FocusPath, oldFocusPath: import("@khanacademy/perseus").FocusPath, keypadHeight?: number | undefined, focusedElement?: HTMLElement | undefined) => unknown) | undefined;
2452
2307
  GroupMetadataEditor?: React.ComponentType<any> | undefined;
@@ -2458,15 +2313,7 @@ declare const InteractiveGraph: {
2458
2313
  [widgetId: string]: any;
2459
2314
  }) => void) | undefined;
2460
2315
  groupAnnotator?: ((groupNumber: number, widgetId: string) => React.ReactNode) | undefined;
2461
- imagePlaceholder?: React.ReactNode; /**
2462
- * The current correct answer for the graph. Updated by this component
2463
- * when the graph is changed.
2464
- *
2465
- * Note that the "Correct answer:" textbox is not an interactive
2466
- * element. Instead, it is a representation of the correct answer based
2467
- * on the state of the interactive graph previewed at the bottom of the
2468
- * editor page.
2469
- */
2316
+ imagePlaceholder?: React.ReactNode;
2470
2317
  widgetPlaceholder?: React.ReactNode;
2471
2318
  baseElements?: {
2472
2319
  Link: React.ComponentType<any>;
@@ -2488,7 +2335,7 @@ declare const InteractiveGraph: {
2488
2335
  crossOutEnabled?: boolean | undefined;
2489
2336
  editorChangeDelay?: number | undefined;
2490
2337
  flags?: Record<string, boolean | Record<string, boolean>> | undefined;
2491
- onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => import("@khanacademy/perseus").PerseusWidgetsMap) | undefined;
2338
+ onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => void) | undefined;
2492
2339
  }> & {
2493
2340
  GroupMetadataEditor: NonNullable<React.ComponentType<any> | undefined>;
2494
2341
  baseElements: {
@@ -2513,7 +2360,7 @@ declare const InteractiveGraph: {
2513
2360
  onFocus: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
2514
2361
  onBlur: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
2515
2362
  findWidgets: (arg1: import("../../../perseus/src/types").FilterCriterion) => readonly any[];
2516
- reviewModeRubric: PerseusInteractiveGraphWidgetOptions;
2363
+ reviewModeRubric: import("../../../perseus/src/widgets/interactive-graph").Rubric;
2517
2364
  onChange: import("@khanacademy/perseus").ChangeHandler;
2518
2365
  trackInteraction: (extraData?: {} | undefined) => void;
2519
2366
  isLastUsedWidget: boolean;
@@ -2526,7 +2373,10 @@ declare const InteractiveGraph: {
2526
2373
  static: boolean | null | undefined;
2527
2374
  problemNum: number | null | undefined;
2528
2375
  apiOptions: Readonly<Readonly<{
2529
- isArticle?: boolean | undefined;
2376
+ isArticle?: boolean | undefined; /**
2377
+ * An error message to display in the graph area, or true if the
2378
+ * graph is valid.
2379
+ */
2530
2380
  onInputError?: ((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined;
2531
2381
  onFocusChange?: ((newFocusPath: import("@khanacademy/perseus").FocusPath, oldFocusPath: import("@khanacademy/perseus").FocusPath, keypadHeight?: number | undefined, focusedElement?: HTMLElement | undefined) => unknown) | undefined;
2532
2382
  GroupMetadataEditor?: React.ComponentType<any> | undefined;
@@ -2538,15 +2388,7 @@ declare const InteractiveGraph: {
2538
2388
  [widgetId: string]: any;
2539
2389
  }) => void) | undefined;
2540
2390
  groupAnnotator?: ((groupNumber: number, widgetId: string) => React.ReactNode) | undefined;
2541
- imagePlaceholder?: React.ReactNode; /**
2542
- * The current correct answer for the graph. Updated by this component
2543
- * when the graph is changed.
2544
- *
2545
- * Note that the "Correct answer:" textbox is not an interactive
2546
- * element. Instead, it is a representation of the correct answer based
2547
- * on the state of the interactive graph previewed at the bottom of the
2548
- * editor page.
2549
- */
2391
+ imagePlaceholder?: React.ReactNode;
2550
2392
  widgetPlaceholder?: React.ReactNode;
2551
2393
  baseElements?: {
2552
2394
  Link: React.ComponentType<any>;
@@ -2568,7 +2410,7 @@ declare const InteractiveGraph: {
2568
2410
  crossOutEnabled?: boolean | undefined;
2569
2411
  editorChangeDelay?: number | undefined;
2570
2412
  flags?: Record<string, boolean | Record<string, boolean>> | undefined;
2571
- onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => import("@khanacademy/perseus").PerseusWidgetsMap) | undefined;
2413
+ onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => void) | undefined;
2572
2414
  }> & {
2573
2415
  GroupMetadataEditor: NonNullable<React.ComponentType<any> | undefined>;
2574
2416
  baseElements: {
@@ -2593,7 +2435,7 @@ declare const InteractiveGraph: {
2593
2435
  onFocus: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
2594
2436
  onBlur: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
2595
2437
  findWidgets: (arg1: import("../../../perseus/src/types").FilterCriterion) => readonly any[];
2596
- reviewModeRubric: PerseusInteractiveGraphWidgetOptions;
2438
+ reviewModeRubric: import("../../../perseus/src/widgets/interactive-graph").Rubric;
2597
2439
  onChange: import("@khanacademy/perseus").ChangeHandler;
2598
2440
  trackInteraction: (extraData?: {} | undefined) => void;
2599
2441
  isLastUsedWidget: boolean;
@@ -2606,7 +2448,10 @@ declare const InteractiveGraph: {
2606
2448
  static: boolean | null | undefined;
2607
2449
  problemNum: number | null | undefined;
2608
2450
  apiOptions: Readonly<Readonly<{
2609
- isArticle?: boolean | undefined;
2451
+ isArticle?: boolean | undefined; /**
2452
+ * An error message to display in the graph area, or true if the
2453
+ * graph is valid.
2454
+ */
2610
2455
  onInputError?: ((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined;
2611
2456
  onFocusChange?: ((newFocusPath: import("@khanacademy/perseus").FocusPath, oldFocusPath: import("@khanacademy/perseus").FocusPath, keypadHeight?: number | undefined, focusedElement?: HTMLElement | undefined) => unknown) | undefined;
2612
2457
  GroupMetadataEditor?: React.ComponentType<any> | undefined;
@@ -2618,15 +2463,7 @@ declare const InteractiveGraph: {
2618
2463
  [widgetId: string]: any;
2619
2464
  }) => void) | undefined;
2620
2465
  groupAnnotator?: ((groupNumber: number, widgetId: string) => React.ReactNode) | undefined;
2621
- imagePlaceholder?: React.ReactNode; /**
2622
- * The current correct answer for the graph. Updated by this component
2623
- * when the graph is changed.
2624
- *
2625
- * Note that the "Correct answer:" textbox is not an interactive
2626
- * element. Instead, it is a representation of the correct answer based
2627
- * on the state of the interactive graph previewed at the bottom of the
2628
- * editor page.
2629
- */
2466
+ imagePlaceholder?: React.ReactNode;
2630
2467
  widgetPlaceholder?: React.ReactNode;
2631
2468
  baseElements?: {
2632
2469
  Link: React.ComponentType<any>;
@@ -2648,7 +2485,7 @@ declare const InteractiveGraph: {
2648
2485
  crossOutEnabled?: boolean | undefined;
2649
2486
  editorChangeDelay?: number | undefined;
2650
2487
  flags?: Record<string, boolean | Record<string, boolean>> | undefined;
2651
- onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => import("@khanacademy/perseus").PerseusWidgetsMap) | undefined;
2488
+ onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => void) | undefined;
2652
2489
  }> & {
2653
2490
  GroupMetadataEditor: NonNullable<React.ComponentType<any> | undefined>;
2654
2491
  baseElements: {
@@ -2673,7 +2510,7 @@ declare const InteractiveGraph: {
2673
2510
  onFocus: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
2674
2511
  onBlur: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
2675
2512
  findWidgets: (arg1: import("../../../perseus/src/types").FilterCriterion) => readonly any[];
2676
- reviewModeRubric: PerseusInteractiveGraphWidgetOptions;
2513
+ reviewModeRubric: import("../../../perseus/src/widgets/interactive-graph").Rubric;
2677
2514
  onChange: import("@khanacademy/perseus").ChangeHandler;
2678
2515
  trackInteraction: (extraData?: {} | undefined) => void;
2679
2516
  isLastUsedWidget: boolean;
@@ -2683,7 +2520,7 @@ declare const InteractiveGraph: {
2683
2520
  }>;
2684
2521
  mafsRef: React.RefObject<import("../../../perseus/src/renderer").Widget>;
2685
2522
  getUserInput: (() => any) | undefined;
2686
- simpleValidate: (rubric: PerseusInteractiveGraphWidgetOptions) => import("@khanacademy/perseus").PerseusScore;
2523
+ simpleValidate: (rubric: import("../../../perseus/src/widgets/interactive-graph").Rubric) => import("@khanacademy/perseus").PerseusScore;
2687
2524
  render(): JSX.Element;
2688
2525
  context: any;
2689
2526
  setState<K_1 extends string | number | symbol>(state: any, callback?: (() => void) | undefined): void;
@@ -2694,7 +2531,10 @@ declare const InteractiveGraph: {
2694
2531
  static: boolean | null | undefined;
2695
2532
  problemNum: number | null | undefined;
2696
2533
  apiOptions: Readonly<Readonly<{
2697
- isArticle?: boolean | undefined;
2534
+ isArticle?: boolean | undefined; /**
2535
+ * An error message to display in the graph area, or true if the
2536
+ * graph is valid.
2537
+ */
2698
2538
  onInputError?: ((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined;
2699
2539
  onFocusChange?: ((newFocusPath: import("@khanacademy/perseus").FocusPath, oldFocusPath: import("@khanacademy/perseus").FocusPath, keypadHeight?: number | undefined, focusedElement?: HTMLElement | undefined) => unknown) | undefined;
2700
2540
  GroupMetadataEditor?: React.ComponentType<any> | undefined;
@@ -2706,15 +2546,7 @@ declare const InteractiveGraph: {
2706
2546
  [widgetId: string]: any;
2707
2547
  }) => void) | undefined;
2708
2548
  groupAnnotator?: ((groupNumber: number, widgetId: string) => React.ReactNode) | undefined;
2709
- imagePlaceholder?: React.ReactNode; /**
2710
- * The current correct answer for the graph. Updated by this component
2711
- * when the graph is changed.
2712
- *
2713
- * Note that the "Correct answer:" textbox is not an interactive
2714
- * element. Instead, it is a representation of the correct answer based
2715
- * on the state of the interactive graph previewed at the bottom of the
2716
- * editor page.
2717
- */
2549
+ imagePlaceholder?: React.ReactNode;
2718
2550
  widgetPlaceholder?: React.ReactNode;
2719
2551
  baseElements?: {
2720
2552
  Link: React.ComponentType<any>;
@@ -2736,7 +2568,7 @@ declare const InteractiveGraph: {
2736
2568
  crossOutEnabled?: boolean | undefined;
2737
2569
  editorChangeDelay?: number | undefined;
2738
2570
  flags?: Record<string, boolean | Record<string, boolean>> | undefined;
2739
- onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => import("@khanacademy/perseus").PerseusWidgetsMap) | undefined;
2571
+ onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => void) | undefined;
2740
2572
  }> & {
2741
2573
  GroupMetadataEditor: NonNullable<React.ComponentType<any> | undefined>;
2742
2574
  baseElements: {
@@ -2761,7 +2593,7 @@ declare const InteractiveGraph: {
2761
2593
  onFocus: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
2762
2594
  onBlur: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
2763
2595
  findWidgets: (arg1: import("../../../perseus/src/types").FilterCriterion) => readonly any[];
2764
- reviewModeRubric: PerseusInteractiveGraphWidgetOptions;
2596
+ reviewModeRubric: import("../../../perseus/src/widgets/interactive-graph").Rubric;
2765
2597
  onChange: import("@khanacademy/perseus").ChangeHandler;
2766
2598
  trackInteraction: (extraData?: {} | undefined) => void;
2767
2599
  isLastUsedWidget: boolean;
@@ -2781,7 +2613,10 @@ declare const InteractiveGraph: {
2781
2613
  static: boolean | null | undefined;
2782
2614
  problemNum: number | null | undefined;
2783
2615
  apiOptions: Readonly<Readonly<{
2784
- isArticle?: boolean | undefined;
2616
+ isArticle?: boolean | undefined; /**
2617
+ * An error message to display in the graph area, or true if the
2618
+ * graph is valid.
2619
+ */
2785
2620
  onInputError?: ((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined;
2786
2621
  onFocusChange?: ((newFocusPath: import("@khanacademy/perseus").FocusPath, oldFocusPath: import("@khanacademy/perseus").FocusPath, keypadHeight?: number | undefined, focusedElement?: HTMLElement | undefined) => unknown) | undefined;
2787
2622
  GroupMetadataEditor?: React.ComponentType<any> | undefined;
@@ -2793,15 +2628,7 @@ declare const InteractiveGraph: {
2793
2628
  [widgetId: string]: any;
2794
2629
  }) => void) | undefined;
2795
2630
  groupAnnotator?: ((groupNumber: number, widgetId: string) => React.ReactNode) | undefined;
2796
- imagePlaceholder?: React.ReactNode; /**
2797
- * The current correct answer for the graph. Updated by this component
2798
- * when the graph is changed.
2799
- *
2800
- * Note that the "Correct answer:" textbox is not an interactive
2801
- * element. Instead, it is a representation of the correct answer based
2802
- * on the state of the interactive graph previewed at the bottom of the
2803
- * editor page.
2804
- */
2631
+ imagePlaceholder?: React.ReactNode;
2805
2632
  widgetPlaceholder?: React.ReactNode;
2806
2633
  baseElements?: {
2807
2634
  Link: React.ComponentType<any>;
@@ -2823,7 +2650,7 @@ declare const InteractiveGraph: {
2823
2650
  crossOutEnabled?: boolean | undefined;
2824
2651
  editorChangeDelay?: number | undefined;
2825
2652
  flags?: Record<string, boolean | Record<string, boolean>> | undefined;
2826
- onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => import("@khanacademy/perseus").PerseusWidgetsMap) | undefined;
2653
+ onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => void) | undefined;
2827
2654
  }> & {
2828
2655
  GroupMetadataEditor: NonNullable<React.ComponentType<any> | undefined>;
2829
2656
  baseElements: {
@@ -2848,7 +2675,7 @@ declare const InteractiveGraph: {
2848
2675
  onFocus: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
2849
2676
  onBlur: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
2850
2677
  findWidgets: (arg1: import("../../../perseus/src/types").FilterCriterion) => readonly any[];
2851
- reviewModeRubric: PerseusInteractiveGraphWidgetOptions;
2678
+ reviewModeRubric: import("../../../perseus/src/widgets/interactive-graph").Rubric;
2852
2679
  onChange: import("@khanacademy/perseus").ChangeHandler;
2853
2680
  trackInteraction: (extraData?: {} | undefined) => void;
2854
2681
  isLastUsedWidget: boolean;
@@ -2863,7 +2690,10 @@ declare const InteractiveGraph: {
2863
2690
  static: boolean | null | undefined;
2864
2691
  problemNum: number | null | undefined;
2865
2692
  apiOptions: Readonly<Readonly<{
2866
- isArticle?: boolean | undefined;
2693
+ isArticle?: boolean | undefined; /**
2694
+ * An error message to display in the graph area, or true if the
2695
+ * graph is valid.
2696
+ */
2867
2697
  onInputError?: ((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined;
2868
2698
  onFocusChange?: ((newFocusPath: import("@khanacademy/perseus").FocusPath, oldFocusPath: import("@khanacademy/perseus").FocusPath, keypadHeight?: number | undefined, focusedElement?: HTMLElement | undefined) => unknown) | undefined;
2869
2699
  GroupMetadataEditor?: React.ComponentType<any> | undefined;
@@ -2875,15 +2705,7 @@ declare const InteractiveGraph: {
2875
2705
  [widgetId: string]: any;
2876
2706
  }) => void) | undefined;
2877
2707
  groupAnnotator?: ((groupNumber: number, widgetId: string) => React.ReactNode) | undefined;
2878
- imagePlaceholder?: React.ReactNode; /**
2879
- * The current correct answer for the graph. Updated by this component
2880
- * when the graph is changed.
2881
- *
2882
- * Note that the "Correct answer:" textbox is not an interactive
2883
- * element. Instead, it is a representation of the correct answer based
2884
- * on the state of the interactive graph previewed at the bottom of the
2885
- * editor page.
2886
- */
2708
+ imagePlaceholder?: React.ReactNode;
2887
2709
  widgetPlaceholder?: React.ReactNode;
2888
2710
  baseElements?: {
2889
2711
  Link: React.ComponentType<any>;
@@ -2905,7 +2727,7 @@ declare const InteractiveGraph: {
2905
2727
  crossOutEnabled?: boolean | undefined;
2906
2728
  editorChangeDelay?: number | undefined;
2907
2729
  flags?: Record<string, boolean | Record<string, boolean>> | undefined;
2908
- onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => import("@khanacademy/perseus").PerseusWidgetsMap) | undefined;
2730
+ onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => void) | undefined;
2909
2731
  }> & {
2910
2732
  GroupMetadataEditor: NonNullable<React.ComponentType<any> | undefined>;
2911
2733
  baseElements: {
@@ -2930,7 +2752,7 @@ declare const InteractiveGraph: {
2930
2752
  onFocus: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
2931
2753
  onBlur: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
2932
2754
  findWidgets: (arg1: import("../../../perseus/src/types").FilterCriterion) => readonly any[];
2933
- reviewModeRubric: PerseusInteractiveGraphWidgetOptions;
2755
+ reviewModeRubric: import("../../../perseus/src/widgets/interactive-graph").Rubric;
2934
2756
  onChange: import("@khanacademy/perseus").ChangeHandler;
2935
2757
  trackInteraction: (extraData?: {} | undefined) => void;
2936
2758
  isLastUsedWidget: boolean;
@@ -2943,7 +2765,10 @@ declare const InteractiveGraph: {
2943
2765
  static: boolean | null | undefined;
2944
2766
  problemNum: number | null | undefined;
2945
2767
  apiOptions: Readonly<Readonly<{
2946
- isArticle?: boolean | undefined;
2768
+ isArticle?: boolean | undefined; /**
2769
+ * An error message to display in the graph area, or true if the
2770
+ * graph is valid.
2771
+ */
2947
2772
  onInputError?: ((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined;
2948
2773
  onFocusChange?: ((newFocusPath: import("@khanacademy/perseus").FocusPath, oldFocusPath: import("@khanacademy/perseus").FocusPath, keypadHeight?: number | undefined, focusedElement?: HTMLElement | undefined) => unknown) | undefined;
2949
2774
  GroupMetadataEditor?: React.ComponentType<any> | undefined;
@@ -2955,15 +2780,7 @@ declare const InteractiveGraph: {
2955
2780
  [widgetId: string]: any;
2956
2781
  }) => void) | undefined;
2957
2782
  groupAnnotator?: ((groupNumber: number, widgetId: string) => React.ReactNode) | undefined;
2958
- imagePlaceholder?: React.ReactNode; /**
2959
- * The current correct answer for the graph. Updated by this component
2960
- * when the graph is changed.
2961
- *
2962
- * Note that the "Correct answer:" textbox is not an interactive
2963
- * element. Instead, it is a representation of the correct answer based
2964
- * on the state of the interactive graph previewed at the bottom of the
2965
- * editor page.
2966
- */
2783
+ imagePlaceholder?: React.ReactNode;
2967
2784
  widgetPlaceholder?: React.ReactNode;
2968
2785
  baseElements?: {
2969
2786
  Link: React.ComponentType<any>;
@@ -2985,7 +2802,7 @@ declare const InteractiveGraph: {
2985
2802
  crossOutEnabled?: boolean | undefined;
2986
2803
  editorChangeDelay?: number | undefined;
2987
2804
  flags?: Record<string, boolean | Record<string, boolean>> | undefined;
2988
- onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => import("@khanacademy/perseus").PerseusWidgetsMap) | undefined;
2805
+ onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => void) | undefined;
2989
2806
  }> & {
2990
2807
  GroupMetadataEditor: NonNullable<React.ComponentType<any> | undefined>;
2991
2808
  baseElements: {
@@ -3010,7 +2827,7 @@ declare const InteractiveGraph: {
3010
2827
  onFocus: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
3011
2828
  onBlur: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
3012
2829
  findWidgets: (arg1: import("../../../perseus/src/types").FilterCriterion) => readonly any[];
3013
- reviewModeRubric: PerseusInteractiveGraphWidgetOptions;
2830
+ reviewModeRubric: import("../../../perseus/src/widgets/interactive-graph").Rubric;
3014
2831
  onChange: import("@khanacademy/perseus").ChangeHandler;
3015
2832
  trackInteraction: (extraData?: {} | undefined) => void;
3016
2833
  isLastUsedWidget: boolean;
@@ -3025,7 +2842,10 @@ declare const InteractiveGraph: {
3025
2842
  static: boolean | null | undefined;
3026
2843
  problemNum: number | null | undefined;
3027
2844
  apiOptions: Readonly<Readonly<{
3028
- isArticle?: boolean | undefined;
2845
+ isArticle?: boolean | undefined; /**
2846
+ * An error message to display in the graph area, or true if the
2847
+ * graph is valid.
2848
+ */
3029
2849
  onInputError?: ((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined;
3030
2850
  onFocusChange?: ((newFocusPath: import("@khanacademy/perseus").FocusPath, oldFocusPath: import("@khanacademy/perseus").FocusPath, keypadHeight?: number | undefined, focusedElement?: HTMLElement | undefined) => unknown) | undefined;
3031
2851
  GroupMetadataEditor?: React.ComponentType<any> | undefined;
@@ -3037,15 +2857,7 @@ declare const InteractiveGraph: {
3037
2857
  [widgetId: string]: any;
3038
2858
  }) => void) | undefined;
3039
2859
  groupAnnotator?: ((groupNumber: number, widgetId: string) => React.ReactNode) | undefined;
3040
- imagePlaceholder?: React.ReactNode; /**
3041
- * The current correct answer for the graph. Updated by this component
3042
- * when the graph is changed.
3043
- *
3044
- * Note that the "Correct answer:" textbox is not an interactive
3045
- * element. Instead, it is a representation of the correct answer based
3046
- * on the state of the interactive graph previewed at the bottom of the
3047
- * editor page.
3048
- */
2860
+ imagePlaceholder?: React.ReactNode;
3049
2861
  widgetPlaceholder?: React.ReactNode;
3050
2862
  baseElements?: {
3051
2863
  Link: React.ComponentType<any>;
@@ -3067,7 +2879,7 @@ declare const InteractiveGraph: {
3067
2879
  crossOutEnabled?: boolean | undefined;
3068
2880
  editorChangeDelay?: number | undefined;
3069
2881
  flags?: Record<string, boolean | Record<string, boolean>> | undefined;
3070
- onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => import("@khanacademy/perseus").PerseusWidgetsMap) | undefined;
2882
+ onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => void) | undefined;
3071
2883
  }> & {
3072
2884
  GroupMetadataEditor: NonNullable<React.ComponentType<any> | undefined>;
3073
2885
  baseElements: {
@@ -3092,7 +2904,7 @@ declare const InteractiveGraph: {
3092
2904
  onFocus: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
3093
2905
  onBlur: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
3094
2906
  findWidgets: (arg1: import("../../../perseus/src/types").FilterCriterion) => readonly any[];
3095
- reviewModeRubric: PerseusInteractiveGraphWidgetOptions;
2907
+ reviewModeRubric: import("../../../perseus/src/widgets/interactive-graph").Rubric;
3096
2908
  onChange: import("@khanacademy/perseus").ChangeHandler;
3097
2909
  trackInteraction: (extraData?: {} | undefined) => void;
3098
2910
  isLastUsedWidget: boolean;
@@ -3105,7 +2917,10 @@ declare const InteractiveGraph: {
3105
2917
  static: boolean | null | undefined;
3106
2918
  problemNum: number | null | undefined;
3107
2919
  apiOptions: Readonly<Readonly<{
3108
- isArticle?: boolean | undefined;
2920
+ isArticle?: boolean | undefined; /**
2921
+ * An error message to display in the graph area, or true if the
2922
+ * graph is valid.
2923
+ */
3109
2924
  onInputError?: ((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined;
3110
2925
  onFocusChange?: ((newFocusPath: import("@khanacademy/perseus").FocusPath, oldFocusPath: import("@khanacademy/perseus").FocusPath, keypadHeight?: number | undefined, focusedElement?: HTMLElement | undefined) => unknown) | undefined;
3111
2926
  GroupMetadataEditor?: React.ComponentType<any> | undefined;
@@ -3117,15 +2932,7 @@ declare const InteractiveGraph: {
3117
2932
  [widgetId: string]: any;
3118
2933
  }) => void) | undefined;
3119
2934
  groupAnnotator?: ((groupNumber: number, widgetId: string) => React.ReactNode) | undefined;
3120
- imagePlaceholder?: React.ReactNode; /**
3121
- * The current correct answer for the graph. Updated by this component
3122
- * when the graph is changed.
3123
- *
3124
- * Note that the "Correct answer:" textbox is not an interactive
3125
- * element. Instead, it is a representation of the correct answer based
3126
- * on the state of the interactive graph previewed at the bottom of the
3127
- * editor page.
3128
- */
2935
+ imagePlaceholder?: React.ReactNode;
3129
2936
  widgetPlaceholder?: React.ReactNode;
3130
2937
  baseElements?: {
3131
2938
  Link: React.ComponentType<any>;
@@ -3147,7 +2954,7 @@ declare const InteractiveGraph: {
3147
2954
  crossOutEnabled?: boolean | undefined;
3148
2955
  editorChangeDelay?: number | undefined;
3149
2956
  flags?: Record<string, boolean | Record<string, boolean>> | undefined;
3150
- onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => import("@khanacademy/perseus").PerseusWidgetsMap) | undefined;
2957
+ onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => void) | undefined;
3151
2958
  }> & {
3152
2959
  GroupMetadataEditor: NonNullable<React.ComponentType<any> | undefined>;
3153
2960
  baseElements: {
@@ -3172,7 +2979,7 @@ declare const InteractiveGraph: {
3172
2979
  onFocus: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
3173
2980
  onBlur: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
3174
2981
  findWidgets: (arg1: import("../../../perseus/src/types").FilterCriterion) => readonly any[];
3175
- reviewModeRubric: PerseusInteractiveGraphWidgetOptions;
2982
+ reviewModeRubric: import("../../../perseus/src/widgets/interactive-graph").Rubric;
3176
2983
  onChange: import("@khanacademy/perseus").ChangeHandler;
3177
2984
  trackInteraction: (extraData?: {} | undefined) => void;
3178
2985
  isLastUsedWidget: boolean;
@@ -3185,7 +2992,10 @@ declare const InteractiveGraph: {
3185
2992
  static: boolean | null | undefined;
3186
2993
  problemNum: number | null | undefined;
3187
2994
  apiOptions: Readonly<Readonly<{
3188
- isArticle?: boolean | undefined;
2995
+ isArticle?: boolean | undefined; /**
2996
+ * An error message to display in the graph area, or true if the
2997
+ * graph is valid.
2998
+ */
3189
2999
  onInputError?: ((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined;
3190
3000
  onFocusChange?: ((newFocusPath: import("@khanacademy/perseus").FocusPath, oldFocusPath: import("@khanacademy/perseus").FocusPath, keypadHeight?: number | undefined, focusedElement?: HTMLElement | undefined) => unknown) | undefined;
3191
3001
  GroupMetadataEditor?: React.ComponentType<any> | undefined;
@@ -3197,15 +3007,7 @@ declare const InteractiveGraph: {
3197
3007
  [widgetId: string]: any;
3198
3008
  }) => void) | undefined;
3199
3009
  groupAnnotator?: ((groupNumber: number, widgetId: string) => React.ReactNode) | undefined;
3200
- imagePlaceholder?: React.ReactNode; /**
3201
- * The current correct answer for the graph. Updated by this component
3202
- * when the graph is changed.
3203
- *
3204
- * Note that the "Correct answer:" textbox is not an interactive
3205
- * element. Instead, it is a representation of the correct answer based
3206
- * on the state of the interactive graph previewed at the bottom of the
3207
- * editor page.
3208
- */
3010
+ imagePlaceholder?: React.ReactNode;
3209
3011
  widgetPlaceholder?: React.ReactNode;
3210
3012
  baseElements?: {
3211
3013
  Link: React.ComponentType<any>;
@@ -3227,7 +3029,7 @@ declare const InteractiveGraph: {
3227
3029
  crossOutEnabled?: boolean | undefined;
3228
3030
  editorChangeDelay?: number | undefined;
3229
3031
  flags?: Record<string, boolean | Record<string, boolean>> | undefined;
3230
- onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => import("@khanacademy/perseus").PerseusWidgetsMap) | undefined;
3032
+ onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => void) | undefined;
3231
3033
  }> & {
3232
3034
  GroupMetadataEditor: NonNullable<React.ComponentType<any> | undefined>;
3233
3035
  baseElements: {
@@ -3252,7 +3054,7 @@ declare const InteractiveGraph: {
3252
3054
  onFocus: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
3253
3055
  onBlur: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
3254
3056
  findWidgets: (arg1: import("../../../perseus/src/types").FilterCriterion) => readonly any[];
3255
- reviewModeRubric: PerseusInteractiveGraphWidgetOptions;
3057
+ reviewModeRubric: import("../../../perseus/src/widgets/interactive-graph").Rubric;
3256
3058
  onChange: import("@khanacademy/perseus").ChangeHandler;
3257
3059
  trackInteraction: (extraData?: {} | undefined) => void;
3258
3060
  isLastUsedWidget: boolean;
@@ -3265,7 +3067,10 @@ declare const InteractiveGraph: {
3265
3067
  static: boolean | null | undefined;
3266
3068
  problemNum: number | null | undefined;
3267
3069
  apiOptions: Readonly<Readonly<{
3268
- isArticle?: boolean | undefined;
3070
+ isArticle?: boolean | undefined; /**
3071
+ * An error message to display in the graph area, or true if the
3072
+ * graph is valid.
3073
+ */
3269
3074
  onInputError?: ((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined;
3270
3075
  onFocusChange?: ((newFocusPath: import("@khanacademy/perseus").FocusPath, oldFocusPath: import("@khanacademy/perseus").FocusPath, keypadHeight?: number | undefined, focusedElement?: HTMLElement | undefined) => unknown) | undefined;
3271
3076
  GroupMetadataEditor?: React.ComponentType<any> | undefined;
@@ -3277,15 +3082,7 @@ declare const InteractiveGraph: {
3277
3082
  [widgetId: string]: any;
3278
3083
  }) => void) | undefined;
3279
3084
  groupAnnotator?: ((groupNumber: number, widgetId: string) => React.ReactNode) | undefined;
3280
- imagePlaceholder?: React.ReactNode; /**
3281
- * The current correct answer for the graph. Updated by this component
3282
- * when the graph is changed.
3283
- *
3284
- * Note that the "Correct answer:" textbox is not an interactive
3285
- * element. Instead, it is a representation of the correct answer based
3286
- * on the state of the interactive graph previewed at the bottom of the
3287
- * editor page.
3288
- */
3085
+ imagePlaceholder?: React.ReactNode;
3289
3086
  widgetPlaceholder?: React.ReactNode;
3290
3087
  baseElements?: {
3291
3088
  Link: React.ComponentType<any>;
@@ -3307,7 +3104,7 @@ declare const InteractiveGraph: {
3307
3104
  crossOutEnabled?: boolean | undefined;
3308
3105
  editorChangeDelay?: number | undefined;
3309
3106
  flags?: Record<string, boolean | Record<string, boolean>> | undefined;
3310
- onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => import("@khanacademy/perseus").PerseusWidgetsMap) | undefined;
3107
+ onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => void) | undefined;
3311
3108
  }> & {
3312
3109
  GroupMetadataEditor: NonNullable<React.ComponentType<any> | undefined>;
3313
3110
  baseElements: {
@@ -3332,7 +3129,7 @@ declare const InteractiveGraph: {
3332
3129
  onFocus: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
3333
3130
  onBlur: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
3334
3131
  findWidgets: (arg1: import("../../../perseus/src/types").FilterCriterion) => readonly any[];
3335
- reviewModeRubric: PerseusInteractiveGraphWidgetOptions;
3132
+ reviewModeRubric: import("../../../perseus/src/widgets/interactive-graph").Rubric;
3336
3133
  onChange: import("@khanacademy/perseus").ChangeHandler;
3337
3134
  trackInteraction: (extraData?: {} | undefined) => void;
3338
3135
  isLastUsedWidget: boolean;
@@ -3342,7 +3139,7 @@ declare const InteractiveGraph: {
3342
3139
  };
3343
3140
  defaultProps: {
3344
3141
  labels: readonly string[];
3345
- range: [[number, number], [number, number]];
3142
+ range: import("../../../perseus/src/perseus-types").GraphRange;
3346
3143
  step: [number, number];
3347
3144
  backgroundImage: PerseusImageBackground | undefined;
3348
3145
  markings: "grid" | "none" | "graph";
@@ -3361,7 +3158,10 @@ declare const InteractiveGraph: {
3361
3158
  static: boolean | null | undefined;
3362
3159
  problemNum: number | null | undefined;
3363
3160
  apiOptions: Readonly<Readonly<{
3364
- isArticle?: boolean | undefined;
3161
+ isArticle?: boolean | undefined; /**
3162
+ * An error message to display in the graph area, or true if the
3163
+ * graph is valid.
3164
+ */
3365
3165
  onInputError?: ((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined;
3366
3166
  onFocusChange?: ((newFocusPath: import("@khanacademy/perseus").FocusPath, oldFocusPath: import("@khanacademy/perseus").FocusPath, keypadHeight?: number | undefined, focusedElement?: HTMLElement | undefined) => unknown) | undefined;
3367
3167
  GroupMetadataEditor?: React.ComponentType<any> | undefined;
@@ -3373,15 +3173,7 @@ declare const InteractiveGraph: {
3373
3173
  [widgetId: string]: any;
3374
3174
  }) => void) | undefined;
3375
3175
  groupAnnotator?: ((groupNumber: number, widgetId: string) => React.ReactNode) | undefined;
3376
- imagePlaceholder?: React.ReactNode; /**
3377
- * The current correct answer for the graph. Updated by this component
3378
- * when the graph is changed.
3379
- *
3380
- * Note that the "Correct answer:" textbox is not an interactive
3381
- * element. Instead, it is a representation of the correct answer based
3382
- * on the state of the interactive graph previewed at the bottom of the
3383
- * editor page.
3384
- */
3176
+ imagePlaceholder?: React.ReactNode;
3385
3177
  widgetPlaceholder?: React.ReactNode;
3386
3178
  baseElements?: {
3387
3179
  Link: React.ComponentType<any>;
@@ -3403,7 +3195,7 @@ declare const InteractiveGraph: {
3403
3195
  crossOutEnabled?: boolean | undefined;
3404
3196
  editorChangeDelay?: number | undefined;
3405
3197
  flags?: Record<string, boolean | Record<string, boolean>> | undefined;
3406
- onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => import("@khanacademy/perseus").PerseusWidgetsMap) | undefined;
3198
+ onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => void) | undefined;
3407
3199
  }> & {
3408
3200
  GroupMetadataEditor: NonNullable<React.ComponentType<any> | undefined>;
3409
3201
  baseElements: {
@@ -3428,7 +3220,7 @@ declare const InteractiveGraph: {
3428
3220
  onFocus: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
3429
3221
  onBlur: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
3430
3222
  findWidgets: (arg1: import("../../../perseus/src/types").FilterCriterion) => readonly any[];
3431
- reviewModeRubric: PerseusInteractiveGraphWidgetOptions;
3223
+ reviewModeRubric: import("../../../perseus/src/widgets/interactive-graph").Rubric;
3432
3224
  onChange: import("@khanacademy/perseus").ChangeHandler;
3433
3225
  trackInteraction: (extraData?: {} | undefined) => void;
3434
3226
  isLastUsedWidget: boolean;
@@ -3441,7 +3233,10 @@ declare const InteractiveGraph: {
3441
3233
  static: boolean | null | undefined;
3442
3234
  problemNum: number | null | undefined;
3443
3235
  apiOptions: Readonly<Readonly<{
3444
- isArticle?: boolean | undefined;
3236
+ isArticle?: boolean | undefined; /**
3237
+ * An error message to display in the graph area, or true if the
3238
+ * graph is valid.
3239
+ */
3445
3240
  onInputError?: ((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined;
3446
3241
  onFocusChange?: ((newFocusPath: import("@khanacademy/perseus").FocusPath, oldFocusPath: import("@khanacademy/perseus").FocusPath, keypadHeight?: number | undefined, focusedElement?: HTMLElement | undefined) => unknown) | undefined;
3447
3242
  GroupMetadataEditor?: React.ComponentType<any> | undefined;
@@ -3453,15 +3248,7 @@ declare const InteractiveGraph: {
3453
3248
  [widgetId: string]: any;
3454
3249
  }) => void) | undefined;
3455
3250
  groupAnnotator?: ((groupNumber: number, widgetId: string) => React.ReactNode) | undefined;
3456
- imagePlaceholder?: React.ReactNode; /**
3457
- * The current correct answer for the graph. Updated by this component
3458
- * when the graph is changed.
3459
- *
3460
- * Note that the "Correct answer:" textbox is not an interactive
3461
- * element. Instead, it is a representation of the correct answer based
3462
- * on the state of the interactive graph previewed at the bottom of the
3463
- * editor page.
3464
- */
3251
+ imagePlaceholder?: React.ReactNode;
3465
3252
  widgetPlaceholder?: React.ReactNode;
3466
3253
  baseElements?: {
3467
3254
  Link: React.ComponentType<any>;
@@ -3483,7 +3270,7 @@ declare const InteractiveGraph: {
3483
3270
  crossOutEnabled?: boolean | undefined;
3484
3271
  editorChangeDelay?: number | undefined;
3485
3272
  flags?: Record<string, boolean | Record<string, boolean>> | undefined;
3486
- onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => import("@khanacademy/perseus").PerseusWidgetsMap) | undefined;
3273
+ onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => void) | undefined;
3487
3274
  }> & {
3488
3275
  GroupMetadataEditor: NonNullable<React.ComponentType<any> | undefined>;
3489
3276
  baseElements: {
@@ -3508,7 +3295,7 @@ declare const InteractiveGraph: {
3508
3295
  onFocus: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
3509
3296
  onBlur: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
3510
3297
  findWidgets: (arg1: import("../../../perseus/src/types").FilterCriterion) => readonly any[];
3511
- reviewModeRubric: PerseusInteractiveGraphWidgetOptions;
3298
+ reviewModeRubric: import("../../../perseus/src/widgets/interactive-graph").Rubric;
3512
3299
  onChange: import("@khanacademy/perseus").ChangeHandler;
3513
3300
  trackInteraction: (extraData?: {} | undefined) => void;
3514
3301
  isLastUsedWidget: boolean;
@@ -3521,7 +3308,10 @@ declare const InteractiveGraph: {
3521
3308
  static: boolean | null | undefined;
3522
3309
  problemNum: number | null | undefined;
3523
3310
  apiOptions: Readonly<Readonly<{
3524
- isArticle?: boolean | undefined;
3311
+ isArticle?: boolean | undefined; /**
3312
+ * An error message to display in the graph area, or true if the
3313
+ * graph is valid.
3314
+ */
3525
3315
  onInputError?: ((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined;
3526
3316
  onFocusChange?: ((newFocusPath: import("@khanacademy/perseus").FocusPath, oldFocusPath: import("@khanacademy/perseus").FocusPath, keypadHeight?: number | undefined, focusedElement?: HTMLElement | undefined) => unknown) | undefined;
3527
3317
  GroupMetadataEditor?: React.ComponentType<any> | undefined;
@@ -3533,15 +3323,7 @@ declare const InteractiveGraph: {
3533
3323
  [widgetId: string]: any;
3534
3324
  }) => void) | undefined;
3535
3325
  groupAnnotator?: ((groupNumber: number, widgetId: string) => React.ReactNode) | undefined;
3536
- imagePlaceholder?: React.ReactNode; /**
3537
- * The current correct answer for the graph. Updated by this component
3538
- * when the graph is changed.
3539
- *
3540
- * Note that the "Correct answer:" textbox is not an interactive
3541
- * element. Instead, it is a representation of the correct answer based
3542
- * on the state of the interactive graph previewed at the bottom of the
3543
- * editor page.
3544
- */
3326
+ imagePlaceholder?: React.ReactNode;
3545
3327
  widgetPlaceholder?: React.ReactNode;
3546
3328
  baseElements?: {
3547
3329
  Link: React.ComponentType<any>;
@@ -3563,7 +3345,7 @@ declare const InteractiveGraph: {
3563
3345
  crossOutEnabled?: boolean | undefined;
3564
3346
  editorChangeDelay?: number | undefined;
3565
3347
  flags?: Record<string, boolean | Record<string, boolean>> | undefined;
3566
- onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => import("@khanacademy/perseus").PerseusWidgetsMap) | undefined;
3348
+ onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => void) | undefined;
3567
3349
  }> & {
3568
3350
  GroupMetadataEditor: NonNullable<React.ComponentType<any> | undefined>;
3569
3351
  baseElements: {
@@ -3588,7 +3370,7 @@ declare const InteractiveGraph: {
3588
3370
  onFocus: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
3589
3371
  onBlur: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
3590
3372
  findWidgets: (arg1: import("../../../perseus/src/types").FilterCriterion) => readonly any[];
3591
- reviewModeRubric: PerseusInteractiveGraphWidgetOptions;
3373
+ reviewModeRubric: import("../../../perseus/src/widgets/interactive-graph").Rubric;
3592
3374
  onChange: import("@khanacademy/perseus").ChangeHandler;
3593
3375
  trackInteraction: (extraData?: {} | undefined) => void;
3594
3376
  isLastUsedWidget: boolean;
@@ -3601,7 +3383,10 @@ declare const InteractiveGraph: {
3601
3383
  static: boolean | null | undefined;
3602
3384
  problemNum: number | null | undefined;
3603
3385
  apiOptions: Readonly<Readonly<{
3604
- isArticle?: boolean | undefined;
3386
+ isArticle?: boolean | undefined; /**
3387
+ * An error message to display in the graph area, or true if the
3388
+ * graph is valid.
3389
+ */
3605
3390
  onInputError?: ((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined;
3606
3391
  onFocusChange?: ((newFocusPath: import("@khanacademy/perseus").FocusPath, oldFocusPath: import("@khanacademy/perseus").FocusPath, keypadHeight?: number | undefined, focusedElement?: HTMLElement | undefined) => unknown) | undefined;
3607
3392
  GroupMetadataEditor?: React.ComponentType<any> | undefined;
@@ -3613,15 +3398,7 @@ declare const InteractiveGraph: {
3613
3398
  [widgetId: string]: any;
3614
3399
  }) => void) | undefined;
3615
3400
  groupAnnotator?: ((groupNumber: number, widgetId: string) => React.ReactNode) | undefined;
3616
- imagePlaceholder?: React.ReactNode; /**
3617
- * The current correct answer for the graph. Updated by this component
3618
- * when the graph is changed.
3619
- *
3620
- * Note that the "Correct answer:" textbox is not an interactive
3621
- * element. Instead, it is a representation of the correct answer based
3622
- * on the state of the interactive graph previewed at the bottom of the
3623
- * editor page.
3624
- */
3401
+ imagePlaceholder?: React.ReactNode;
3625
3402
  widgetPlaceholder?: React.ReactNode;
3626
3403
  baseElements?: {
3627
3404
  Link: React.ComponentType<any>;
@@ -3643,7 +3420,7 @@ declare const InteractiveGraph: {
3643
3420
  crossOutEnabled?: boolean | undefined;
3644
3421
  editorChangeDelay?: number | undefined;
3645
3422
  flags?: Record<string, boolean | Record<string, boolean>> | undefined;
3646
- onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => import("@khanacademy/perseus").PerseusWidgetsMap) | undefined;
3423
+ onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => void) | undefined;
3647
3424
  }> & {
3648
3425
  GroupMetadataEditor: NonNullable<React.ComponentType<any> | undefined>;
3649
3426
  baseElements: {
@@ -3668,7 +3445,7 @@ declare const InteractiveGraph: {
3668
3445
  onFocus: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
3669
3446
  onBlur: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
3670
3447
  findWidgets: (arg1: import("../../../perseus/src/types").FilterCriterion) => readonly any[];
3671
- reviewModeRubric: PerseusInteractiveGraphWidgetOptions;
3448
+ reviewModeRubric: import("../../../perseus/src/widgets/interactive-graph").Rubric;
3672
3449
  onChange: import("@khanacademy/perseus").ChangeHandler;
3673
3450
  trackInteraction: (extraData?: {} | undefined) => void;
3674
3451
  isLastUsedWidget: boolean;
@@ -3681,7 +3458,10 @@ declare const InteractiveGraph: {
3681
3458
  static: boolean | null | undefined;
3682
3459
  problemNum: number | null | undefined;
3683
3460
  apiOptions: Readonly<Readonly<{
3684
- isArticle?: boolean | undefined;
3461
+ isArticle?: boolean | undefined; /**
3462
+ * An error message to display in the graph area, or true if the
3463
+ * graph is valid.
3464
+ */
3685
3465
  onInputError?: ((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined;
3686
3466
  onFocusChange?: ((newFocusPath: import("@khanacademy/perseus").FocusPath, oldFocusPath: import("@khanacademy/perseus").FocusPath, keypadHeight?: number | undefined, focusedElement?: HTMLElement | undefined) => unknown) | undefined;
3687
3467
  GroupMetadataEditor?: React.ComponentType<any> | undefined;
@@ -3693,15 +3473,7 @@ declare const InteractiveGraph: {
3693
3473
  [widgetId: string]: any;
3694
3474
  }) => void) | undefined;
3695
3475
  groupAnnotator?: ((groupNumber: number, widgetId: string) => React.ReactNode) | undefined;
3696
- imagePlaceholder?: React.ReactNode; /**
3697
- * The current correct answer for the graph. Updated by this component
3698
- * when the graph is changed.
3699
- *
3700
- * Note that the "Correct answer:" textbox is not an interactive
3701
- * element. Instead, it is a representation of the correct answer based
3702
- * on the state of the interactive graph previewed at the bottom of the
3703
- * editor page.
3704
- */
3476
+ imagePlaceholder?: React.ReactNode;
3705
3477
  widgetPlaceholder?: React.ReactNode;
3706
3478
  baseElements?: {
3707
3479
  Link: React.ComponentType<any>;
@@ -3723,7 +3495,7 @@ declare const InteractiveGraph: {
3723
3495
  crossOutEnabled?: boolean | undefined;
3724
3496
  editorChangeDelay?: number | undefined;
3725
3497
  flags?: Record<string, boolean | Record<string, boolean>> | undefined;
3726
- onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => import("@khanacademy/perseus").PerseusWidgetsMap) | undefined;
3498
+ onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => void) | undefined;
3727
3499
  }> & {
3728
3500
  GroupMetadataEditor: NonNullable<React.ComponentType<any> | undefined>;
3729
3501
  baseElements: {
@@ -3748,7 +3520,7 @@ declare const InteractiveGraph: {
3748
3520
  onFocus: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
3749
3521
  onBlur: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
3750
3522
  findWidgets: (arg1: import("../../../perseus/src/types").FilterCriterion) => readonly any[];
3751
- reviewModeRubric: PerseusInteractiveGraphWidgetOptions;
3523
+ reviewModeRubric: import("../../../perseus/src/widgets/interactive-graph").Rubric;
3752
3524
  onChange: import("@khanacademy/perseus").ChangeHandler;
3753
3525
  trackInteraction: (extraData?: {} | undefined) => void;
3754
3526
  isLastUsedWidget: boolean;
@@ -3761,7 +3533,10 @@ declare const InteractiveGraph: {
3761
3533
  static: boolean | null | undefined;
3762
3534
  problemNum: number | null | undefined;
3763
3535
  apiOptions: Readonly<Readonly<{
3764
- isArticle?: boolean | undefined;
3536
+ isArticle?: boolean | undefined; /**
3537
+ * An error message to display in the graph area, or true if the
3538
+ * graph is valid.
3539
+ */
3765
3540
  onInputError?: ((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined;
3766
3541
  onFocusChange?: ((newFocusPath: import("@khanacademy/perseus").FocusPath, oldFocusPath: import("@khanacademy/perseus").FocusPath, keypadHeight?: number | undefined, focusedElement?: HTMLElement | undefined) => unknown) | undefined;
3767
3542
  GroupMetadataEditor?: React.ComponentType<any> | undefined;
@@ -3773,15 +3548,7 @@ declare const InteractiveGraph: {
3773
3548
  [widgetId: string]: any;
3774
3549
  }) => void) | undefined;
3775
3550
  groupAnnotator?: ((groupNumber: number, widgetId: string) => React.ReactNode) | undefined;
3776
- imagePlaceholder?: React.ReactNode; /**
3777
- * The current correct answer for the graph. Updated by this component
3778
- * when the graph is changed.
3779
- *
3780
- * Note that the "Correct answer:" textbox is not an interactive
3781
- * element. Instead, it is a representation of the correct answer based
3782
- * on the state of the interactive graph previewed at the bottom of the
3783
- * editor page.
3784
- */
3551
+ imagePlaceholder?: React.ReactNode;
3785
3552
  widgetPlaceholder?: React.ReactNode;
3786
3553
  baseElements?: {
3787
3554
  Link: React.ComponentType<any>;
@@ -3803,7 +3570,7 @@ declare const InteractiveGraph: {
3803
3570
  crossOutEnabled?: boolean | undefined;
3804
3571
  editorChangeDelay?: number | undefined;
3805
3572
  flags?: Record<string, boolean | Record<string, boolean>> | undefined;
3806
- onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => import("@khanacademy/perseus").PerseusWidgetsMap) | undefined;
3573
+ onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => void) | undefined;
3807
3574
  }> & {
3808
3575
  GroupMetadataEditor: NonNullable<React.ComponentType<any> | undefined>;
3809
3576
  baseElements: {
@@ -3828,7 +3595,7 @@ declare const InteractiveGraph: {
3828
3595
  onFocus: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
3829
3596
  onBlur: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
3830
3597
  findWidgets: (arg1: import("../../../perseus/src/types").FilterCriterion) => readonly any[];
3831
- reviewModeRubric: PerseusInteractiveGraphWidgetOptions;
3598
+ reviewModeRubric: import("../../../perseus/src/widgets/interactive-graph").Rubric;
3832
3599
  onChange: import("@khanacademy/perseus").ChangeHandler;
3833
3600
  trackInteraction: (extraData?: {} | undefined) => void;
3834
3601
  isLastUsedWidget: boolean;
@@ -3842,7 +3609,10 @@ declare const InteractiveGraph: {
3842
3609
  static: boolean | null | undefined;
3843
3610
  problemNum: number | null | undefined;
3844
3611
  apiOptions: Readonly<Readonly<{
3845
- isArticle?: boolean | undefined;
3612
+ isArticle?: boolean | undefined; /**
3613
+ * An error message to display in the graph area, or true if the
3614
+ * graph is valid.
3615
+ */
3846
3616
  onInputError?: ((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined;
3847
3617
  onFocusChange?: ((newFocusPath: import("@khanacademy/perseus").FocusPath, oldFocusPath: import("@khanacademy/perseus").FocusPath, keypadHeight?: number | undefined, focusedElement?: HTMLElement | undefined) => unknown) | undefined;
3848
3618
  GroupMetadataEditor?: React.ComponentType<any> | undefined;
@@ -3854,15 +3624,7 @@ declare const InteractiveGraph: {
3854
3624
  [widgetId: string]: any;
3855
3625
  }) => void) | undefined;
3856
3626
  groupAnnotator?: ((groupNumber: number, widgetId: string) => React.ReactNode) | undefined;
3857
- imagePlaceholder?: React.ReactNode; /**
3858
- * The current correct answer for the graph. Updated by this component
3859
- * when the graph is changed.
3860
- *
3861
- * Note that the "Correct answer:" textbox is not an interactive
3862
- * element. Instead, it is a representation of the correct answer based
3863
- * on the state of the interactive graph previewed at the bottom of the
3864
- * editor page.
3865
- */
3627
+ imagePlaceholder?: React.ReactNode;
3866
3628
  widgetPlaceholder?: React.ReactNode;
3867
3629
  baseElements?: {
3868
3630
  Link: React.ComponentType<any>;
@@ -3884,7 +3646,7 @@ declare const InteractiveGraph: {
3884
3646
  crossOutEnabled?: boolean | undefined;
3885
3647
  editorChangeDelay?: number | undefined;
3886
3648
  flags?: Record<string, boolean | Record<string, boolean>> | undefined;
3887
- onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => import("@khanacademy/perseus").PerseusWidgetsMap) | undefined;
3649
+ onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => void) | undefined;
3888
3650
  }> & {
3889
3651
  GroupMetadataEditor: NonNullable<React.ComponentType<any> | undefined>;
3890
3652
  baseElements: {
@@ -3909,7 +3671,7 @@ declare const InteractiveGraph: {
3909
3671
  onFocus: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
3910
3672
  onBlur: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
3911
3673
  findWidgets: (arg1: import("../../../perseus/src/types").FilterCriterion) => readonly any[];
3912
- reviewModeRubric: PerseusInteractiveGraphWidgetOptions;
3674
+ reviewModeRubric: import("../../../perseus/src/widgets/interactive-graph").Rubric;
3913
3675
  onChange: import("@khanacademy/perseus").ChangeHandler;
3914
3676
  trackInteraction: (extraData?: {} | undefined) => void;
3915
3677
  isLastUsedWidget: boolean;
@@ -3922,7 +3684,10 @@ declare const InteractiveGraph: {
3922
3684
  static: boolean | null | undefined;
3923
3685
  problemNum: number | null | undefined;
3924
3686
  apiOptions: Readonly<Readonly<{
3925
- isArticle?: boolean | undefined;
3687
+ isArticle?: boolean | undefined; /**
3688
+ * An error message to display in the graph area, or true if the
3689
+ * graph is valid.
3690
+ */
3926
3691
  onInputError?: ((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined;
3927
3692
  onFocusChange?: ((newFocusPath: import("@khanacademy/perseus").FocusPath, oldFocusPath: import("@khanacademy/perseus").FocusPath, keypadHeight?: number | undefined, focusedElement?: HTMLElement | undefined) => unknown) | undefined;
3928
3693
  GroupMetadataEditor?: React.ComponentType<any> | undefined;
@@ -3934,15 +3699,7 @@ declare const InteractiveGraph: {
3934
3699
  [widgetId: string]: any;
3935
3700
  }) => void) | undefined;
3936
3701
  groupAnnotator?: ((groupNumber: number, widgetId: string) => React.ReactNode) | undefined;
3937
- imagePlaceholder?: React.ReactNode; /**
3938
- * The current correct answer for the graph. Updated by this component
3939
- * when the graph is changed.
3940
- *
3941
- * Note that the "Correct answer:" textbox is not an interactive
3942
- * element. Instead, it is a representation of the correct answer based
3943
- * on the state of the interactive graph previewed at the bottom of the
3944
- * editor page.
3945
- */
3702
+ imagePlaceholder?: React.ReactNode;
3946
3703
  widgetPlaceholder?: React.ReactNode;
3947
3704
  baseElements?: {
3948
3705
  Link: React.ComponentType<any>;
@@ -3964,7 +3721,7 @@ declare const InteractiveGraph: {
3964
3721
  crossOutEnabled?: boolean | undefined;
3965
3722
  editorChangeDelay?: number | undefined;
3966
3723
  flags?: Record<string, boolean | Record<string, boolean>> | undefined;
3967
- onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => import("@khanacademy/perseus").PerseusWidgetsMap) | undefined;
3724
+ onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => void) | undefined;
3968
3725
  }> & {
3969
3726
  GroupMetadataEditor: NonNullable<React.ComponentType<any> | undefined>;
3970
3727
  baseElements: {
@@ -3989,7 +3746,7 @@ declare const InteractiveGraph: {
3989
3746
  onFocus: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
3990
3747
  onBlur: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
3991
3748
  findWidgets: (arg1: import("../../../perseus/src/types").FilterCriterion) => readonly any[];
3992
- reviewModeRubric: PerseusInteractiveGraphWidgetOptions;
3749
+ reviewModeRubric: import("../../../perseus/src/widgets/interactive-graph").Rubric;
3993
3750
  onChange: import("@khanacademy/perseus").ChangeHandler;
3994
3751
  trackInteraction: (extraData?: {} | undefined) => void;
3995
3752
  isLastUsedWidget: boolean;
@@ -4002,7 +3759,10 @@ declare const InteractiveGraph: {
4002
3759
  static: boolean | null | undefined;
4003
3760
  problemNum: number | null | undefined;
4004
3761
  apiOptions: Readonly<Readonly<{
4005
- isArticle?: boolean | undefined;
3762
+ isArticle?: boolean | undefined; /**
3763
+ * An error message to display in the graph area, or true if the
3764
+ * graph is valid.
3765
+ */
4006
3766
  onInputError?: ((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined;
4007
3767
  onFocusChange?: ((newFocusPath: import("@khanacademy/perseus").FocusPath, oldFocusPath: import("@khanacademy/perseus").FocusPath, keypadHeight?: number | undefined, focusedElement?: HTMLElement | undefined) => unknown) | undefined;
4008
3768
  GroupMetadataEditor?: React.ComponentType<any> | undefined;
@@ -4014,15 +3774,7 @@ declare const InteractiveGraph: {
4014
3774
  [widgetId: string]: any;
4015
3775
  }) => void) | undefined;
4016
3776
  groupAnnotator?: ((groupNumber: number, widgetId: string) => React.ReactNode) | undefined;
4017
- imagePlaceholder?: React.ReactNode; /**
4018
- * The current correct answer for the graph. Updated by this component
4019
- * when the graph is changed.
4020
- *
4021
- * Note that the "Correct answer:" textbox is not an interactive
4022
- * element. Instead, it is a representation of the correct answer based
4023
- * on the state of the interactive graph previewed at the bottom of the
4024
- * editor page.
4025
- */
3777
+ imagePlaceholder?: React.ReactNode;
4026
3778
  widgetPlaceholder?: React.ReactNode;
4027
3779
  baseElements?: {
4028
3780
  Link: React.ComponentType<any>;
@@ -4044,7 +3796,7 @@ declare const InteractiveGraph: {
4044
3796
  crossOutEnabled?: boolean | undefined;
4045
3797
  editorChangeDelay?: number | undefined;
4046
3798
  flags?: Record<string, boolean | Record<string, boolean>> | undefined;
4047
- onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => import("@khanacademy/perseus").PerseusWidgetsMap) | undefined;
3799
+ onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => void) | undefined;
4048
3800
  }> & {
4049
3801
  GroupMetadataEditor: NonNullable<React.ComponentType<any> | undefined>;
4050
3802
  baseElements: {
@@ -4069,7 +3821,7 @@ declare const InteractiveGraph: {
4069
3821
  onFocus: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
4070
3822
  onBlur: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
4071
3823
  findWidgets: (arg1: import("../../../perseus/src/types").FilterCriterion) => readonly any[];
4072
- reviewModeRubric: PerseusInteractiveGraphWidgetOptions;
3824
+ reviewModeRubric: import("../../../perseus/src/widgets/interactive-graph").Rubric;
4073
3825
  onChange: import("@khanacademy/perseus").ChangeHandler;
4074
3826
  trackInteraction: (extraData?: {} | undefined) => void;
4075
3827
  isLastUsedWidget: boolean;
@@ -4082,7 +3834,10 @@ declare const InteractiveGraph: {
4082
3834
  static: boolean | null | undefined;
4083
3835
  problemNum: number | null | undefined;
4084
3836
  apiOptions: Readonly<Readonly<{
4085
- isArticle?: boolean | undefined;
3837
+ isArticle?: boolean | undefined; /**
3838
+ * An error message to display in the graph area, or true if the
3839
+ * graph is valid.
3840
+ */
4086
3841
  onInputError?: ((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined;
4087
3842
  onFocusChange?: ((newFocusPath: import("@khanacademy/perseus").FocusPath, oldFocusPath: import("@khanacademy/perseus").FocusPath, keypadHeight?: number | undefined, focusedElement?: HTMLElement | undefined) => unknown) | undefined;
4088
3843
  GroupMetadataEditor?: React.ComponentType<any> | undefined;
@@ -4094,15 +3849,7 @@ declare const InteractiveGraph: {
4094
3849
  [widgetId: string]: any;
4095
3850
  }) => void) | undefined;
4096
3851
  groupAnnotator?: ((groupNumber: number, widgetId: string) => React.ReactNode) | undefined;
4097
- imagePlaceholder?: React.ReactNode; /**
4098
- * The current correct answer for the graph. Updated by this component
4099
- * when the graph is changed.
4100
- *
4101
- * Note that the "Correct answer:" textbox is not an interactive
4102
- * element. Instead, it is a representation of the correct answer based
4103
- * on the state of the interactive graph previewed at the bottom of the
4104
- * editor page.
4105
- */
3852
+ imagePlaceholder?: React.ReactNode;
4106
3853
  widgetPlaceholder?: React.ReactNode;
4107
3854
  baseElements?: {
4108
3855
  Link: React.ComponentType<any>;
@@ -4124,7 +3871,7 @@ declare const InteractiveGraph: {
4124
3871
  crossOutEnabled?: boolean | undefined;
4125
3872
  editorChangeDelay?: number | undefined;
4126
3873
  flags?: Record<string, boolean | Record<string, boolean>> | undefined;
4127
- onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => import("@khanacademy/perseus").PerseusWidgetsMap) | undefined;
3874
+ onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => void) | undefined;
4128
3875
  }> & {
4129
3876
  GroupMetadataEditor: NonNullable<React.ComponentType<any> | undefined>;
4130
3877
  baseElements: {
@@ -4149,7 +3896,7 @@ declare const InteractiveGraph: {
4149
3896
  onFocus: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
4150
3897
  onBlur: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
4151
3898
  findWidgets: (arg1: import("../../../perseus/src/types").FilterCriterion) => readonly any[];
4152
- reviewModeRubric: PerseusInteractiveGraphWidgetOptions;
3899
+ reviewModeRubric: import("../../../perseus/src/widgets/interactive-graph").Rubric;
4153
3900
  onChange: import("@khanacademy/perseus").ChangeHandler;
4154
3901
  trackInteraction: (extraData?: {} | undefined) => void;
4155
3902
  isLastUsedWidget: boolean;
@@ -4162,7 +3909,10 @@ declare const InteractiveGraph: {
4162
3909
  static: boolean | null | undefined;
4163
3910
  problemNum: number | null | undefined;
4164
3911
  apiOptions: Readonly<Readonly<{
4165
- isArticle?: boolean | undefined;
3912
+ isArticle?: boolean | undefined; /**
3913
+ * An error message to display in the graph area, or true if the
3914
+ * graph is valid.
3915
+ */
4166
3916
  onInputError?: ((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined;
4167
3917
  onFocusChange?: ((newFocusPath: import("@khanacademy/perseus").FocusPath, oldFocusPath: import("@khanacademy/perseus").FocusPath, keypadHeight?: number | undefined, focusedElement?: HTMLElement | undefined) => unknown) | undefined;
4168
3918
  GroupMetadataEditor?: React.ComponentType<any> | undefined;
@@ -4174,15 +3924,7 @@ declare const InteractiveGraph: {
4174
3924
  [widgetId: string]: any;
4175
3925
  }) => void) | undefined;
4176
3926
  groupAnnotator?: ((groupNumber: number, widgetId: string) => React.ReactNode) | undefined;
4177
- imagePlaceholder?: React.ReactNode; /**
4178
- * The current correct answer for the graph. Updated by this component
4179
- * when the graph is changed.
4180
- *
4181
- * Note that the "Correct answer:" textbox is not an interactive
4182
- * element. Instead, it is a representation of the correct answer based
4183
- * on the state of the interactive graph previewed at the bottom of the
4184
- * editor page.
4185
- */
3927
+ imagePlaceholder?: React.ReactNode;
4186
3928
  widgetPlaceholder?: React.ReactNode;
4187
3929
  baseElements?: {
4188
3930
  Link: React.ComponentType<any>;
@@ -4204,7 +3946,7 @@ declare const InteractiveGraph: {
4204
3946
  crossOutEnabled?: boolean | undefined;
4205
3947
  editorChangeDelay?: number | undefined;
4206
3948
  flags?: Record<string, boolean | Record<string, boolean>> | undefined;
4207
- onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => import("@khanacademy/perseus").PerseusWidgetsMap) | undefined;
3949
+ onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => void) | undefined;
4208
3950
  }> & {
4209
3951
  GroupMetadataEditor: NonNullable<React.ComponentType<any> | undefined>;
4210
3952
  baseElements: {
@@ -4229,7 +3971,7 @@ declare const InteractiveGraph: {
4229
3971
  onFocus: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
4230
3972
  onBlur: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
4231
3973
  findWidgets: (arg1: import("../../../perseus/src/types").FilterCriterion) => readonly any[];
4232
- reviewModeRubric: PerseusInteractiveGraphWidgetOptions;
3974
+ reviewModeRubric: import("../../../perseus/src/widgets/interactive-graph").Rubric;
4233
3975
  onChange: import("@khanacademy/perseus").ChangeHandler;
4234
3976
  trackInteraction: (extraData?: {} | undefined) => void;
4235
3977
  isLastUsedWidget: boolean;
@@ -4242,7 +3984,10 @@ declare const InteractiveGraph: {
4242
3984
  static: boolean | null | undefined;
4243
3985
  problemNum: number | null | undefined;
4244
3986
  apiOptions: Readonly<Readonly<{
4245
- isArticle?: boolean | undefined;
3987
+ isArticle?: boolean | undefined; /**
3988
+ * An error message to display in the graph area, or true if the
3989
+ * graph is valid.
3990
+ */
4246
3991
  onInputError?: ((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined;
4247
3992
  onFocusChange?: ((newFocusPath: import("@khanacademy/perseus").FocusPath, oldFocusPath: import("@khanacademy/perseus").FocusPath, keypadHeight?: number | undefined, focusedElement?: HTMLElement | undefined) => unknown) | undefined;
4248
3993
  GroupMetadataEditor?: React.ComponentType<any> | undefined;
@@ -4254,15 +3999,7 @@ declare const InteractiveGraph: {
4254
3999
  [widgetId: string]: any;
4255
4000
  }) => void) | undefined;
4256
4001
  groupAnnotator?: ((groupNumber: number, widgetId: string) => React.ReactNode) | undefined;
4257
- imagePlaceholder?: React.ReactNode; /**
4258
- * The current correct answer for the graph. Updated by this component
4259
- * when the graph is changed.
4260
- *
4261
- * Note that the "Correct answer:" textbox is not an interactive
4262
- * element. Instead, it is a representation of the correct answer based
4263
- * on the state of the interactive graph previewed at the bottom of the
4264
- * editor page.
4265
- */
4002
+ imagePlaceholder?: React.ReactNode;
4266
4003
  widgetPlaceholder?: React.ReactNode;
4267
4004
  baseElements?: {
4268
4005
  Link: React.ComponentType<any>;
@@ -4284,7 +4021,7 @@ declare const InteractiveGraph: {
4284
4021
  crossOutEnabled?: boolean | undefined;
4285
4022
  editorChangeDelay?: number | undefined;
4286
4023
  flags?: Record<string, boolean | Record<string, boolean>> | undefined;
4287
- onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => import("@khanacademy/perseus").PerseusWidgetsMap) | undefined;
4024
+ onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => void) | undefined;
4288
4025
  }> & {
4289
4026
  GroupMetadataEditor: NonNullable<React.ComponentType<any> | undefined>;
4290
4027
  baseElements: {
@@ -4309,7 +4046,7 @@ declare const InteractiveGraph: {
4309
4046
  onFocus: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
4310
4047
  onBlur: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
4311
4048
  findWidgets: (arg1: import("../../../perseus/src/types").FilterCriterion) => readonly any[];
4312
- reviewModeRubric: PerseusInteractiveGraphWidgetOptions;
4049
+ reviewModeRubric: import("../../../perseus/src/widgets/interactive-graph").Rubric;
4313
4050
  onChange: import("@khanacademy/perseus").ChangeHandler;
4314
4051
  trackInteraction: (extraData?: {} | undefined) => void;
4315
4052
  isLastUsedWidget: boolean;
@@ -4322,7 +4059,10 @@ declare const InteractiveGraph: {
4322
4059
  static: boolean | null | undefined;
4323
4060
  problemNum: number | null | undefined;
4324
4061
  apiOptions: Readonly<Readonly<{
4325
- isArticle?: boolean | undefined;
4062
+ isArticle?: boolean | undefined; /**
4063
+ * An error message to display in the graph area, or true if the
4064
+ * graph is valid.
4065
+ */
4326
4066
  onInputError?: ((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined;
4327
4067
  onFocusChange?: ((newFocusPath: import("@khanacademy/perseus").FocusPath, oldFocusPath: import("@khanacademy/perseus").FocusPath, keypadHeight?: number | undefined, focusedElement?: HTMLElement | undefined) => unknown) | undefined;
4328
4068
  GroupMetadataEditor?: React.ComponentType<any> | undefined;
@@ -4334,15 +4074,7 @@ declare const InteractiveGraph: {
4334
4074
  [widgetId: string]: any;
4335
4075
  }) => void) | undefined;
4336
4076
  groupAnnotator?: ((groupNumber: number, widgetId: string) => React.ReactNode) | undefined;
4337
- imagePlaceholder?: React.ReactNode; /**
4338
- * The current correct answer for the graph. Updated by this component
4339
- * when the graph is changed.
4340
- *
4341
- * Note that the "Correct answer:" textbox is not an interactive
4342
- * element. Instead, it is a representation of the correct answer based
4343
- * on the state of the interactive graph previewed at the bottom of the
4344
- * editor page.
4345
- */
4077
+ imagePlaceholder?: React.ReactNode;
4346
4078
  widgetPlaceholder?: React.ReactNode;
4347
4079
  baseElements?: {
4348
4080
  Link: React.ComponentType<any>;
@@ -4364,7 +4096,7 @@ declare const InteractiveGraph: {
4364
4096
  crossOutEnabled?: boolean | undefined;
4365
4097
  editorChangeDelay?: number | undefined;
4366
4098
  flags?: Record<string, boolean | Record<string, boolean>> | undefined;
4367
- onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => import("@khanacademy/perseus").PerseusWidgetsMap) | undefined;
4099
+ onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => void) | undefined;
4368
4100
  }> & {
4369
4101
  GroupMetadataEditor: NonNullable<React.ComponentType<any> | undefined>;
4370
4102
  baseElements: {
@@ -4389,7 +4121,7 @@ declare const InteractiveGraph: {
4389
4121
  onFocus: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
4390
4122
  onBlur: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
4391
4123
  findWidgets: (arg1: import("../../../perseus/src/types").FilterCriterion) => readonly any[];
4392
- reviewModeRubric: PerseusInteractiveGraphWidgetOptions;
4124
+ reviewModeRubric: import("../../../perseus/src/widgets/interactive-graph").Rubric;
4393
4125
  onChange: import("@khanacademy/perseus").ChangeHandler;
4394
4126
  trackInteraction: (extraData?: {} | undefined) => void;
4395
4127
  isLastUsedWidget: boolean;
@@ -4402,7 +4134,10 @@ declare const InteractiveGraph: {
4402
4134
  static: boolean | null | undefined;
4403
4135
  problemNum: number | null | undefined;
4404
4136
  apiOptions: Readonly<Readonly<{
4405
- isArticle?: boolean | undefined;
4137
+ isArticle?: boolean | undefined; /**
4138
+ * An error message to display in the graph area, or true if the
4139
+ * graph is valid.
4140
+ */
4406
4141
  onInputError?: ((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined;
4407
4142
  onFocusChange?: ((newFocusPath: import("@khanacademy/perseus").FocusPath, oldFocusPath: import("@khanacademy/perseus").FocusPath, keypadHeight?: number | undefined, focusedElement?: HTMLElement | undefined) => unknown) | undefined;
4408
4143
  GroupMetadataEditor?: React.ComponentType<any> | undefined;
@@ -4414,15 +4149,7 @@ declare const InteractiveGraph: {
4414
4149
  [widgetId: string]: any;
4415
4150
  }) => void) | undefined;
4416
4151
  groupAnnotator?: ((groupNumber: number, widgetId: string) => React.ReactNode) | undefined;
4417
- imagePlaceholder?: React.ReactNode; /**
4418
- * The current correct answer for the graph. Updated by this component
4419
- * when the graph is changed.
4420
- *
4421
- * Note that the "Correct answer:" textbox is not an interactive
4422
- * element. Instead, it is a representation of the correct answer based
4423
- * on the state of the interactive graph previewed at the bottom of the
4424
- * editor page.
4425
- */
4152
+ imagePlaceholder?: React.ReactNode;
4426
4153
  widgetPlaceholder?: React.ReactNode;
4427
4154
  baseElements?: {
4428
4155
  Link: React.ComponentType<any>;
@@ -4444,7 +4171,7 @@ declare const InteractiveGraph: {
4444
4171
  crossOutEnabled?: boolean | undefined;
4445
4172
  editorChangeDelay?: number | undefined;
4446
4173
  flags?: Record<string, boolean | Record<string, boolean>> | undefined;
4447
- onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => import("@khanacademy/perseus").PerseusWidgetsMap) | undefined;
4174
+ onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => void) | undefined;
4448
4175
  }> & {
4449
4176
  GroupMetadataEditor: NonNullable<React.ComponentType<any> | undefined>;
4450
4177
  baseElements: {
@@ -4469,7 +4196,7 @@ declare const InteractiveGraph: {
4469
4196
  onFocus: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
4470
4197
  onBlur: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
4471
4198
  findWidgets: (arg1: import("../../../perseus/src/types").FilterCriterion) => readonly any[];
4472
- reviewModeRubric: PerseusInteractiveGraphWidgetOptions;
4199
+ reviewModeRubric: import("../../../perseus/src/widgets/interactive-graph").Rubric;
4473
4200
  onChange: import("@khanacademy/perseus").ChangeHandler;
4474
4201
  trackInteraction: (extraData?: {} | undefined) => void;
4475
4202
  isLastUsedWidget: boolean;
@@ -4482,7 +4209,10 @@ declare const InteractiveGraph: {
4482
4209
  static: boolean | null | undefined;
4483
4210
  problemNum: number | null | undefined;
4484
4211
  apiOptions: Readonly<Readonly<{
4485
- isArticle?: boolean | undefined;
4212
+ isArticle?: boolean | undefined; /**
4213
+ * An error message to display in the graph area, or true if the
4214
+ * graph is valid.
4215
+ */
4486
4216
  onInputError?: ((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined;
4487
4217
  onFocusChange?: ((newFocusPath: import("@khanacademy/perseus").FocusPath, oldFocusPath: import("@khanacademy/perseus").FocusPath, keypadHeight?: number | undefined, focusedElement?: HTMLElement | undefined) => unknown) | undefined;
4488
4218
  GroupMetadataEditor?: React.ComponentType<any> | undefined;
@@ -4494,15 +4224,7 @@ declare const InteractiveGraph: {
4494
4224
  [widgetId: string]: any;
4495
4225
  }) => void) | undefined;
4496
4226
  groupAnnotator?: ((groupNumber: number, widgetId: string) => React.ReactNode) | undefined;
4497
- imagePlaceholder?: React.ReactNode; /**
4498
- * The current correct answer for the graph. Updated by this component
4499
- * when the graph is changed.
4500
- *
4501
- * Note that the "Correct answer:" textbox is not an interactive
4502
- * element. Instead, it is a representation of the correct answer based
4503
- * on the state of the interactive graph previewed at the bottom of the
4504
- * editor page.
4505
- */
4227
+ imagePlaceholder?: React.ReactNode;
4506
4228
  widgetPlaceholder?: React.ReactNode;
4507
4229
  baseElements?: {
4508
4230
  Link: React.ComponentType<any>;
@@ -4524,7 +4246,7 @@ declare const InteractiveGraph: {
4524
4246
  crossOutEnabled?: boolean | undefined;
4525
4247
  editorChangeDelay?: number | undefined;
4526
4248
  flags?: Record<string, boolean | Record<string, boolean>> | undefined;
4527
- onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => import("@khanacademy/perseus").PerseusWidgetsMap) | undefined;
4249
+ onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => void) | undefined;
4528
4250
  }> & {
4529
4251
  GroupMetadataEditor: NonNullable<React.ComponentType<any> | undefined>;
4530
4252
  baseElements: {
@@ -4549,7 +4271,7 @@ declare const InteractiveGraph: {
4549
4271
  onFocus: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
4550
4272
  onBlur: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
4551
4273
  findWidgets: (arg1: import("../../../perseus/src/types").FilterCriterion) => readonly any[];
4552
- reviewModeRubric: PerseusInteractiveGraphWidgetOptions;
4274
+ reviewModeRubric: import("../../../perseus/src/widgets/interactive-graph").Rubric;
4553
4275
  onChange: import("@khanacademy/perseus").ChangeHandler;
4554
4276
  trackInteraction: (extraData?: {} | undefined) => void;
4555
4277
  isLastUsedWidget: boolean;
@@ -4562,7 +4284,10 @@ declare const InteractiveGraph: {
4562
4284
  static: boolean | null | undefined;
4563
4285
  problemNum: number | null | undefined;
4564
4286
  apiOptions: Readonly<Readonly<{
4565
- isArticle?: boolean | undefined;
4287
+ isArticle?: boolean | undefined; /**
4288
+ * An error message to display in the graph area, or true if the
4289
+ * graph is valid.
4290
+ */
4566
4291
  onInputError?: ((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined;
4567
4292
  onFocusChange?: ((newFocusPath: import("@khanacademy/perseus").FocusPath, oldFocusPath: import("@khanacademy/perseus").FocusPath, keypadHeight?: number | undefined, focusedElement?: HTMLElement | undefined) => unknown) | undefined;
4568
4293
  GroupMetadataEditor?: React.ComponentType<any> | undefined;
@@ -4574,15 +4299,7 @@ declare const InteractiveGraph: {
4574
4299
  [widgetId: string]: any;
4575
4300
  }) => void) | undefined;
4576
4301
  groupAnnotator?: ((groupNumber: number, widgetId: string) => React.ReactNode) | undefined;
4577
- imagePlaceholder?: React.ReactNode; /**
4578
- * The current correct answer for the graph. Updated by this component
4579
- * when the graph is changed.
4580
- *
4581
- * Note that the "Correct answer:" textbox is not an interactive
4582
- * element. Instead, it is a representation of the correct answer based
4583
- * on the state of the interactive graph previewed at the bottom of the
4584
- * editor page.
4585
- */
4302
+ imagePlaceholder?: React.ReactNode;
4586
4303
  widgetPlaceholder?: React.ReactNode;
4587
4304
  baseElements?: {
4588
4305
  Link: React.ComponentType<any>;
@@ -4604,7 +4321,7 @@ declare const InteractiveGraph: {
4604
4321
  crossOutEnabled?: boolean | undefined;
4605
4322
  editorChangeDelay?: number | undefined;
4606
4323
  flags?: Record<string, boolean | Record<string, boolean>> | undefined;
4607
- onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => import("@khanacademy/perseus").PerseusWidgetsMap) | undefined;
4324
+ onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => void) | undefined;
4608
4325
  }> & {
4609
4326
  GroupMetadataEditor: NonNullable<React.ComponentType<any> | undefined>;
4610
4327
  baseElements: {
@@ -4629,7 +4346,7 @@ declare const InteractiveGraph: {
4629
4346
  onFocus: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
4630
4347
  onBlur: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
4631
4348
  findWidgets: (arg1: import("../../../perseus/src/types").FilterCriterion) => readonly any[];
4632
- reviewModeRubric: PerseusInteractiveGraphWidgetOptions;
4349
+ reviewModeRubric: import("../../../perseus/src/widgets/interactive-graph").Rubric;
4633
4350
  onChange: import("@khanacademy/perseus").ChangeHandler;
4634
4351
  trackInteraction: (extraData?: {} | undefined) => void;
4635
4352
  isLastUsedWidget: boolean;
@@ -4642,7 +4359,10 @@ declare const InteractiveGraph: {
4642
4359
  static: boolean | null | undefined;
4643
4360
  problemNum: number | null | undefined;
4644
4361
  apiOptions: Readonly<Readonly<{
4645
- isArticle?: boolean | undefined;
4362
+ isArticle?: boolean | undefined; /**
4363
+ * An error message to display in the graph area, or true if the
4364
+ * graph is valid.
4365
+ */
4646
4366
  onInputError?: ((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined;
4647
4367
  onFocusChange?: ((newFocusPath: import("@khanacademy/perseus").FocusPath, oldFocusPath: import("@khanacademy/perseus").FocusPath, keypadHeight?: number | undefined, focusedElement?: HTMLElement | undefined) => unknown) | undefined;
4648
4368
  GroupMetadataEditor?: React.ComponentType<any> | undefined;
@@ -4654,15 +4374,7 @@ declare const InteractiveGraph: {
4654
4374
  [widgetId: string]: any;
4655
4375
  }) => void) | undefined;
4656
4376
  groupAnnotator?: ((groupNumber: number, widgetId: string) => React.ReactNode) | undefined;
4657
- imagePlaceholder?: React.ReactNode; /**
4658
- * The current correct answer for the graph. Updated by this component
4659
- * when the graph is changed.
4660
- *
4661
- * Note that the "Correct answer:" textbox is not an interactive
4662
- * element. Instead, it is a representation of the correct answer based
4663
- * on the state of the interactive graph previewed at the bottom of the
4664
- * editor page.
4665
- */
4377
+ imagePlaceholder?: React.ReactNode;
4666
4378
  widgetPlaceholder?: React.ReactNode;
4667
4379
  baseElements?: {
4668
4380
  Link: React.ComponentType<any>;
@@ -4684,7 +4396,7 @@ declare const InteractiveGraph: {
4684
4396
  crossOutEnabled?: boolean | undefined;
4685
4397
  editorChangeDelay?: number | undefined;
4686
4398
  flags?: Record<string, boolean | Record<string, boolean>> | undefined;
4687
- onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => import("@khanacademy/perseus").PerseusWidgetsMap) | undefined;
4399
+ onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => void) | undefined;
4688
4400
  }> & {
4689
4401
  GroupMetadataEditor: NonNullable<React.ComponentType<any> | undefined>;
4690
4402
  baseElements: {
@@ -4709,7 +4421,7 @@ declare const InteractiveGraph: {
4709
4421
  onFocus: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
4710
4422
  onBlur: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
4711
4423
  findWidgets: (arg1: import("../../../perseus/src/types").FilterCriterion) => readonly any[];
4712
- reviewModeRubric: PerseusInteractiveGraphWidgetOptions;
4424
+ reviewModeRubric: import("../../../perseus/src/widgets/interactive-graph").Rubric;
4713
4425
  onChange: import("@khanacademy/perseus").ChangeHandler;
4714
4426
  trackInteraction: (extraData?: {} | undefined) => void;
4715
4427
  isLastUsedWidget: boolean;
@@ -4722,7 +4434,10 @@ declare const InteractiveGraph: {
4722
4434
  static: boolean | null | undefined;
4723
4435
  problemNum: number | null | undefined;
4724
4436
  apiOptions: Readonly<Readonly<{
4725
- isArticle?: boolean | undefined;
4437
+ isArticle?: boolean | undefined; /**
4438
+ * An error message to display in the graph area, or true if the
4439
+ * graph is valid.
4440
+ */
4726
4441
  onInputError?: ((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined;
4727
4442
  onFocusChange?: ((newFocusPath: import("@khanacademy/perseus").FocusPath, oldFocusPath: import("@khanacademy/perseus").FocusPath, keypadHeight?: number | undefined, focusedElement?: HTMLElement | undefined) => unknown) | undefined;
4728
4443
  GroupMetadataEditor?: React.ComponentType<any> | undefined;
@@ -4734,15 +4449,7 @@ declare const InteractiveGraph: {
4734
4449
  [widgetId: string]: any;
4735
4450
  }) => void) | undefined;
4736
4451
  groupAnnotator?: ((groupNumber: number, widgetId: string) => React.ReactNode) | undefined;
4737
- imagePlaceholder?: React.ReactNode; /**
4738
- * The current correct answer for the graph. Updated by this component
4739
- * when the graph is changed.
4740
- *
4741
- * Note that the "Correct answer:" textbox is not an interactive
4742
- * element. Instead, it is a representation of the correct answer based
4743
- * on the state of the interactive graph previewed at the bottom of the
4744
- * editor page.
4745
- */
4452
+ imagePlaceholder?: React.ReactNode;
4746
4453
  widgetPlaceholder?: React.ReactNode;
4747
4454
  baseElements?: {
4748
4455
  Link: React.ComponentType<any>;
@@ -4764,7 +4471,7 @@ declare const InteractiveGraph: {
4764
4471
  crossOutEnabled?: boolean | undefined;
4765
4472
  editorChangeDelay?: number | undefined;
4766
4473
  flags?: Record<string, boolean | Record<string, boolean>> | undefined;
4767
- onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => import("@khanacademy/perseus").PerseusWidgetsMap) | undefined;
4474
+ onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => void) | undefined;
4768
4475
  }> & {
4769
4476
  GroupMetadataEditor: NonNullable<React.ComponentType<any> | undefined>;
4770
4477
  baseElements: {
@@ -4789,7 +4496,7 @@ declare const InteractiveGraph: {
4789
4496
  onFocus: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
4790
4497
  onBlur: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
4791
4498
  findWidgets: (arg1: import("../../../perseus/src/types").FilterCriterion) => readonly any[];
4792
- reviewModeRubric: PerseusInteractiveGraphWidgetOptions;
4499
+ reviewModeRubric: import("../../../perseus/src/widgets/interactive-graph").Rubric;
4793
4500
  onChange: import("@khanacademy/perseus").ChangeHandler;
4794
4501
  trackInteraction: (extraData?: {} | undefined) => void;
4795
4502
  isLastUsedWidget: boolean;
@@ -4802,7 +4509,10 @@ declare const InteractiveGraph: {
4802
4509
  static: boolean | null | undefined;
4803
4510
  problemNum: number | null | undefined;
4804
4511
  apiOptions: Readonly<Readonly<{
4805
- isArticle?: boolean | undefined;
4512
+ isArticle?: boolean | undefined; /**
4513
+ * An error message to display in the graph area, or true if the
4514
+ * graph is valid.
4515
+ */
4806
4516
  onInputError?: ((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined;
4807
4517
  onFocusChange?: ((newFocusPath: import("@khanacademy/perseus").FocusPath, oldFocusPath: import("@khanacademy/perseus").FocusPath, keypadHeight?: number | undefined, focusedElement?: HTMLElement | undefined) => unknown) | undefined;
4808
4518
  GroupMetadataEditor?: React.ComponentType<any> | undefined;
@@ -4814,15 +4524,7 @@ declare const InteractiveGraph: {
4814
4524
  [widgetId: string]: any;
4815
4525
  }) => void) | undefined;
4816
4526
  groupAnnotator?: ((groupNumber: number, widgetId: string) => React.ReactNode) | undefined;
4817
- imagePlaceholder?: React.ReactNode; /**
4818
- * The current correct answer for the graph. Updated by this component
4819
- * when the graph is changed.
4820
- *
4821
- * Note that the "Correct answer:" textbox is not an interactive
4822
- * element. Instead, it is a representation of the correct answer based
4823
- * on the state of the interactive graph previewed at the bottom of the
4824
- * editor page.
4825
- */
4527
+ imagePlaceholder?: React.ReactNode;
4826
4528
  widgetPlaceholder?: React.ReactNode;
4827
4529
  baseElements?: {
4828
4530
  Link: React.ComponentType<any>;
@@ -4844,7 +4546,7 @@ declare const InteractiveGraph: {
4844
4546
  crossOutEnabled?: boolean | undefined;
4845
4547
  editorChangeDelay?: number | undefined;
4846
4548
  flags?: Record<string, boolean | Record<string, boolean>> | undefined;
4847
- onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => import("@khanacademy/perseus").PerseusWidgetsMap) | undefined;
4549
+ onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => void) | undefined;
4848
4550
  }> & {
4849
4551
  GroupMetadataEditor: NonNullable<React.ComponentType<any> | undefined>;
4850
4552
  baseElements: {
@@ -4869,7 +4571,7 @@ declare const InteractiveGraph: {
4869
4571
  onFocus: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
4870
4572
  onBlur: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
4871
4573
  findWidgets: (arg1: import("../../../perseus/src/types").FilterCriterion) => readonly any[];
4872
- reviewModeRubric: PerseusInteractiveGraphWidgetOptions;
4574
+ reviewModeRubric: import("../../../perseus/src/widgets/interactive-graph").Rubric;
4873
4575
  onChange: import("@khanacademy/perseus").ChangeHandler;
4874
4576
  trackInteraction: (extraData?: {} | undefined) => void;
4875
4577
  isLastUsedWidget: boolean;
@@ -4882,7 +4584,10 @@ declare const InteractiveGraph: {
4882
4584
  static: boolean | null | undefined;
4883
4585
  problemNum: number | null | undefined;
4884
4586
  apiOptions: Readonly<Readonly<{
4885
- isArticle?: boolean | undefined;
4587
+ isArticle?: boolean | undefined; /**
4588
+ * An error message to display in the graph area, or true if the
4589
+ * graph is valid.
4590
+ */
4886
4591
  onInputError?: ((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined;
4887
4592
  onFocusChange?: ((newFocusPath: import("@khanacademy/perseus").FocusPath, oldFocusPath: import("@khanacademy/perseus").FocusPath, keypadHeight?: number | undefined, focusedElement?: HTMLElement | undefined) => unknown) | undefined;
4888
4593
  GroupMetadataEditor?: React.ComponentType<any> | undefined;
@@ -4894,15 +4599,7 @@ declare const InteractiveGraph: {
4894
4599
  [widgetId: string]: any;
4895
4600
  }) => void) | undefined;
4896
4601
  groupAnnotator?: ((groupNumber: number, widgetId: string) => React.ReactNode) | undefined;
4897
- imagePlaceholder?: React.ReactNode; /**
4898
- * The current correct answer for the graph. Updated by this component
4899
- * when the graph is changed.
4900
- *
4901
- * Note that the "Correct answer:" textbox is not an interactive
4902
- * element. Instead, it is a representation of the correct answer based
4903
- * on the state of the interactive graph previewed at the bottom of the
4904
- * editor page.
4905
- */
4602
+ imagePlaceholder?: React.ReactNode;
4906
4603
  widgetPlaceholder?: React.ReactNode;
4907
4604
  baseElements?: {
4908
4605
  Link: React.ComponentType<any>;
@@ -4924,7 +4621,7 @@ declare const InteractiveGraph: {
4924
4621
  crossOutEnabled?: boolean | undefined;
4925
4622
  editorChangeDelay?: number | undefined;
4926
4623
  flags?: Record<string, boolean | Record<string, boolean>> | undefined;
4927
- onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => import("@khanacademy/perseus").PerseusWidgetsMap) | undefined;
4624
+ onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => void) | undefined;
4928
4625
  }> & {
4929
4626
  GroupMetadataEditor: NonNullable<React.ComponentType<any> | undefined>;
4930
4627
  baseElements: {
@@ -4949,7 +4646,7 @@ declare const InteractiveGraph: {
4949
4646
  onFocus: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
4950
4647
  onBlur: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
4951
4648
  findWidgets: (arg1: import("../../../perseus/src/types").FilterCriterion) => readonly any[];
4952
- reviewModeRubric: PerseusInteractiveGraphWidgetOptions;
4649
+ reviewModeRubric: import("../../../perseus/src/widgets/interactive-graph").Rubric;
4953
4650
  onChange: import("@khanacademy/perseus").ChangeHandler;
4954
4651
  trackInteraction: (extraData?: {} | undefined) => void;
4955
4652
  isLastUsedWidget: boolean;
@@ -4962,7 +4659,10 @@ declare const InteractiveGraph: {
4962
4659
  static: boolean | null | undefined;
4963
4660
  problemNum: number | null | undefined;
4964
4661
  apiOptions: Readonly<Readonly<{
4965
- isArticle?: boolean | undefined;
4662
+ isArticle?: boolean | undefined; /**
4663
+ * An error message to display in the graph area, or true if the
4664
+ * graph is valid.
4665
+ */
4966
4666
  onInputError?: ((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined;
4967
4667
  onFocusChange?: ((newFocusPath: import("@khanacademy/perseus").FocusPath, oldFocusPath: import("@khanacademy/perseus").FocusPath, keypadHeight?: number | undefined, focusedElement?: HTMLElement | undefined) => unknown) | undefined;
4968
4668
  GroupMetadataEditor?: React.ComponentType<any> | undefined;
@@ -4974,15 +4674,7 @@ declare const InteractiveGraph: {
4974
4674
  [widgetId: string]: any;
4975
4675
  }) => void) | undefined;
4976
4676
  groupAnnotator?: ((groupNumber: number, widgetId: string) => React.ReactNode) | undefined;
4977
- imagePlaceholder?: React.ReactNode; /**
4978
- * The current correct answer for the graph. Updated by this component
4979
- * when the graph is changed.
4980
- *
4981
- * Note that the "Correct answer:" textbox is not an interactive
4982
- * element. Instead, it is a representation of the correct answer based
4983
- * on the state of the interactive graph previewed at the bottom of the
4984
- * editor page.
4985
- */
4677
+ imagePlaceholder?: React.ReactNode;
4986
4678
  widgetPlaceholder?: React.ReactNode;
4987
4679
  baseElements?: {
4988
4680
  Link: React.ComponentType<any>;
@@ -5004,7 +4696,7 @@ declare const InteractiveGraph: {
5004
4696
  crossOutEnabled?: boolean | undefined;
5005
4697
  editorChangeDelay?: number | undefined;
5006
4698
  flags?: Record<string, boolean | Record<string, boolean>> | undefined;
5007
- onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => import("@khanacademy/perseus").PerseusWidgetsMap) | undefined;
4699
+ onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => void) | undefined;
5008
4700
  }> & {
5009
4701
  GroupMetadataEditor: NonNullable<React.ComponentType<any> | undefined>;
5010
4702
  baseElements: {
@@ -5029,7 +4721,7 @@ declare const InteractiveGraph: {
5029
4721
  onFocus: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
5030
4722
  onBlur: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
5031
4723
  findWidgets: (arg1: import("../../../perseus/src/types").FilterCriterion) => readonly any[];
5032
- reviewModeRubric: PerseusInteractiveGraphWidgetOptions;
4724
+ reviewModeRubric: import("../../../perseus/src/widgets/interactive-graph").Rubric;
5033
4725
  onChange: import("@khanacademy/perseus").ChangeHandler;
5034
4726
  trackInteraction: (extraData?: {} | undefined) => void;
5035
4727
  isLastUsedWidget: boolean;
@@ -5042,7 +4734,10 @@ declare const InteractiveGraph: {
5042
4734
  static: boolean | null | undefined;
5043
4735
  problemNum: number | null | undefined;
5044
4736
  apiOptions: Readonly<Readonly<{
5045
- isArticle?: boolean | undefined;
4737
+ isArticle?: boolean | undefined; /**
4738
+ * An error message to display in the graph area, or true if the
4739
+ * graph is valid.
4740
+ */
5046
4741
  onInputError?: ((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined;
5047
4742
  onFocusChange?: ((newFocusPath: import("@khanacademy/perseus").FocusPath, oldFocusPath: import("@khanacademy/perseus").FocusPath, keypadHeight?: number | undefined, focusedElement?: HTMLElement | undefined) => unknown) | undefined;
5048
4743
  GroupMetadataEditor?: React.ComponentType<any> | undefined;
@@ -5054,15 +4749,7 @@ declare const InteractiveGraph: {
5054
4749
  [widgetId: string]: any;
5055
4750
  }) => void) | undefined;
5056
4751
  groupAnnotator?: ((groupNumber: number, widgetId: string) => React.ReactNode) | undefined;
5057
- imagePlaceholder?: React.ReactNode; /**
5058
- * The current correct answer for the graph. Updated by this component
5059
- * when the graph is changed.
5060
- *
5061
- * Note that the "Correct answer:" textbox is not an interactive
5062
- * element. Instead, it is a representation of the correct answer based
5063
- * on the state of the interactive graph previewed at the bottom of the
5064
- * editor page.
5065
- */
4752
+ imagePlaceholder?: React.ReactNode;
5066
4753
  widgetPlaceholder?: React.ReactNode;
5067
4754
  baseElements?: {
5068
4755
  Link: React.ComponentType<any>;
@@ -5084,7 +4771,7 @@ declare const InteractiveGraph: {
5084
4771
  crossOutEnabled?: boolean | undefined;
5085
4772
  editorChangeDelay?: number | undefined;
5086
4773
  flags?: Record<string, boolean | Record<string, boolean>> | undefined;
5087
- onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => import("@khanacademy/perseus").PerseusWidgetsMap) | undefined;
4774
+ onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => void) | undefined;
5088
4775
  }> & {
5089
4776
  GroupMetadataEditor: NonNullable<React.ComponentType<any> | undefined>;
5090
4777
  baseElements: {
@@ -5109,21 +4796,24 @@ declare const InteractiveGraph: {
5109
4796
  onFocus: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
5110
4797
  onBlur: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
5111
4798
  findWidgets: (arg1: import("../../../perseus/src/types").FilterCriterion) => readonly any[];
5112
- reviewModeRubric: PerseusInteractiveGraphWidgetOptions;
4799
+ reviewModeRubric: import("../../../perseus/src/widgets/interactive-graph").Rubric;
5113
4800
  onChange: import("@khanacademy/perseus").ChangeHandler;
5114
4801
  trackInteraction: (extraData?: {} | undefined) => void;
5115
4802
  isLastUsedWidget: boolean;
5116
4803
  linterContext: import("@khanacademy/perseus-linter").LinterContextProps;
5117
4804
  containerSizeClass: SizingUtils.SizeClass;
5118
4805
  }): string;
5119
- validate(userInput: import("@khanacademy/perseus").PerseusGraphType, rubric: PerseusInteractiveGraphWidgetOptions, component: any): import("@khanacademy/perseus").PerseusScore;
4806
+ validate(userInput: import("@khanacademy/perseus").PerseusGraphType, rubric: import("../../../perseus/src/widgets/interactive-graph").Rubric, component: any): import("@khanacademy/perseus").PerseusScore;
5120
4807
  getUserInputFromProps(props: PerseusInteractiveGraphWidgetOptions & {
5121
4808
  widgetId: string;
5122
4809
  alignment: string | null | undefined;
5123
4810
  static: boolean | null | undefined;
5124
4811
  problemNum: number | null | undefined;
5125
4812
  apiOptions: Readonly<Readonly<{
5126
- isArticle?: boolean | undefined;
4813
+ isArticle?: boolean | undefined; /**
4814
+ * An error message to display in the graph area, or true if the
4815
+ * graph is valid.
4816
+ */
5127
4817
  onInputError?: ((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined;
5128
4818
  onFocusChange?: ((newFocusPath: import("@khanacademy/perseus").FocusPath, oldFocusPath: import("@khanacademy/perseus").FocusPath, keypadHeight?: number | undefined, focusedElement?: HTMLElement | undefined) => unknown) | undefined;
5129
4819
  GroupMetadataEditor?: React.ComponentType<any> | undefined;
@@ -5135,15 +4825,7 @@ declare const InteractiveGraph: {
5135
4825
  [widgetId: string]: any;
5136
4826
  }) => void) | undefined;
5137
4827
  groupAnnotator?: ((groupNumber: number, widgetId: string) => React.ReactNode) | undefined;
5138
- imagePlaceholder?: React.ReactNode; /**
5139
- * The current correct answer for the graph. Updated by this component
5140
- * when the graph is changed.
5141
- *
5142
- * Note that the "Correct answer:" textbox is not an interactive
5143
- * element. Instead, it is a representation of the correct answer based
5144
- * on the state of the interactive graph previewed at the bottom of the
5145
- * editor page.
5146
- */
4828
+ imagePlaceholder?: React.ReactNode;
5147
4829
  widgetPlaceholder?: React.ReactNode;
5148
4830
  baseElements?: {
5149
4831
  Link: React.ComponentType<any>;
@@ -5165,7 +4847,7 @@ declare const InteractiveGraph: {
5165
4847
  crossOutEnabled?: boolean | undefined;
5166
4848
  editorChangeDelay?: number | undefined;
5167
4849
  flags?: Record<string, boolean | Record<string, boolean>> | undefined;
5168
- onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => import("@khanacademy/perseus").PerseusWidgetsMap) | undefined;
4850
+ onWidgetStartProps?: ((widgets: import("@khanacademy/perseus").PerseusWidgetsMap) => void) | undefined;
5169
4851
  }> & {
5170
4852
  GroupMetadataEditor: NonNullable<React.ComponentType<any> | undefined>;
5171
4853
  baseElements: {
@@ -5190,7 +4872,7 @@ declare const InteractiveGraph: {
5190
4872
  onFocus: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
5191
4873
  onBlur: (blurPath: import("@khanacademy/perseus").FocusPath) => void;
5192
4874
  findWidgets: (arg1: import("../../../perseus/src/types").FilterCriterion) => readonly any[];
5193
- reviewModeRubric: PerseusInteractiveGraphWidgetOptions;
4875
+ reviewModeRubric: import("../../../perseus/src/widgets/interactive-graph").Rubric;
5194
4876
  onChange: import("@khanacademy/perseus").ChangeHandler;
5195
4877
  trackInteraction: (extraData?: {} | undefined) => void;
5196
4878
  isLastUsedWidget: boolean;