@khanacademy/perseus 69.0.0 → 69.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/dist/es/index.css +5 -7
  2. package/dist/es/index.css.map +1 -1
  3. package/dist/es/index.js +55 -47
  4. package/dist/es/index.js.map +1 -1
  5. package/dist/es/strings.js +1 -1
  6. package/dist/es/strings.js.map +1 -1
  7. package/dist/index.css +5 -7
  8. package/dist/index.css.map +1 -1
  9. package/dist/index.js +55 -46
  10. package/dist/index.js.map +1 -1
  11. package/dist/server-item-renderer.d.ts +1 -1
  12. package/dist/strings.d.ts +6 -0
  13. package/dist/strings.js +1 -1
  14. package/dist/strings.js.map +1 -1
  15. package/dist/types.d.ts +0 -1
  16. package/dist/widgets/expression/expression.d.ts +3 -4
  17. package/dist/widgets/grapher/grapher.d.ts +1 -2
  18. package/dist/widgets/image/components/explore-image-button.d.ts +7 -0
  19. package/dist/widgets/image/components/explore-image-modal-content.d.ts +3 -0
  20. package/dist/widgets/image/components/explore-image-modal.d.ts +3 -0
  21. package/dist/widgets/image/components/image-description-and-caption.d.ts +17 -0
  22. package/dist/widgets/image/image.class.d.ts +14 -12
  23. package/dist/widgets/image/image.d.ts +2 -2
  24. package/dist/widgets/image/utils.d.ts +15 -0
  25. package/dist/widgets/interactive-graphs/graphs/components/angle-indicators.d.ts +1 -1
  26. package/dist/widgets/interactive-graphs/graphs/utils.d.ts +5 -0
  27. package/dist/widgets/interactive-graphs/interactive-graph.d.ts +1 -2
  28. package/dist/widgets/matcher/matcher.d.ts +0 -1
  29. package/dist/widgets/mock-widgets/mock-widget.d.ts +1 -2
  30. package/dist/widgets/number-line/number-line.d.ts +2 -12
  31. package/dist/widgets/numeric-input/numeric-input.class.d.ts +1 -2
  32. package/dist/widgets/numeric-input/numeric-input.d.ts +1 -1
  33. package/dist/widgets/plotter/plotter.d.ts +1 -2
  34. package/dist/widgets/radio/multiple-choice-widget.new.d.ts +2 -1
  35. package/dist/widgets/radio/radio-component.d.ts +2 -1
  36. package/dist/widgets/radio/radio.ff.d.ts +2 -2
  37. package/dist/widgets/radio/utils/string-utils.d.ts +0 -1
  38. package/dist/widgets/table/table.d.ts +4 -6
  39. package/package.json +12 -10
  40. package/dist/widgets/image/image-description-and-caption.d.ts +0 -12
@@ -4,7 +4,7 @@ import type { WidgetProps, Widget } from "../../types";
4
4
  import type { ImagePromptJSON } from "../../widget-ai-utils/image/image-ai-utils";
5
5
  import type { PerseusImageWidgetOptions } from "@khanacademy/perseus-core";
6
6
  type ExternalProps = WidgetProps<PerseusImageWidgetOptions>;
7
- export interface Props extends ExternalProps {
7
+ export interface ImageWidgetProps extends ExternalProps {
8
8
  alignment: NonNullable<ExternalProps["alignment"]>;
9
9
  title: NonNullable<ExternalProps["title"]>;
10
10
  range: NonNullable<ExternalProps["range"]>;
@@ -12,21 +12,23 @@ export interface Props extends ExternalProps {
12
12
  backgroundImage: NonNullable<ExternalProps["backgroundImage"]>;
13
13
  labels: NonNullable<ExternalProps["labels"]>;
14
14
  alt: NonNullable<ExternalProps["alt"]>;
15
+ longDescription: NonNullable<ExternalProps["longDescription"]>;
15
16
  caption: NonNullable<ExternalProps["caption"]>;
16
17
  linterContext: NonNullable<ExternalProps["linterContext"]>;
17
18
  }
18
- interface DefaultProps extends Partial<Props> {
19
- alignment: Props["alignment"];
20
- title: Props["title"];
21
- range: Props["range"];
22
- box: Props["box"];
23
- backgroundImage: Props["backgroundImage"];
24
- labels: Props["labels"];
25
- alt: Props["alt"];
26
- caption: Props["caption"];
27
- linterContext: Props["linterContext"];
19
+ interface DefaultProps extends Partial<ImageWidgetProps> {
20
+ alignment: ImageWidgetProps["alignment"];
21
+ title: ImageWidgetProps["title"];
22
+ range: ImageWidgetProps["range"];
23
+ box: ImageWidgetProps["box"];
24
+ backgroundImage: ImageWidgetProps["backgroundImage"];
25
+ labels: ImageWidgetProps["labels"];
26
+ alt: ImageWidgetProps["alt"];
27
+ longDescription: ImageWidgetProps["longDescription"];
28
+ caption: ImageWidgetProps["caption"];
29
+ linterContext: ImageWidgetProps["linterContext"];
28
30
  }
29
- declare class ImageWidget extends React.Component<Props> implements Widget {
31
+ declare class ImageWidget extends React.Component<ImageWidgetProps> implements Widget {
30
32
  static contextType: React.Context<import("../../components/i18n-context").I18nContextType>;
31
33
  context: React.ContextType<typeof PerseusI18nContext>;
32
34
  static defaultProps: DefaultProps;
@@ -1,3 +1,3 @@
1
1
  import * as React from "react";
2
- import type { Props } from "./image.class";
3
- export declare const ImageComponent: ({ apiOptions, alt, backgroundImage, box, caption, linterContext, labels, range, title, trackInteraction, }: Props) => React.JSX.Element;
2
+ import type { ImageWidgetProps } from "./image.class";
3
+ export declare const ImageComponent: (props: ImageWidgetProps) => React.JSX.Element | null;
@@ -0,0 +1,15 @@
1
+ export declare const earthMoonImage: {
2
+ url: string;
3
+ width: number;
4
+ height: number;
5
+ };
6
+ export declare const frescoImage: {
7
+ url: string;
8
+ width: number;
9
+ height: number;
10
+ };
11
+ export declare const monasteryImage: {
12
+ url: string;
13
+ width: number;
14
+ height: number;
15
+ };
@@ -37,5 +37,5 @@ export declare const shouldDrawArcOutside: (midpoint: vec.Vector2, vertex: vec.V
37
37
  * if the endpoints are clockwise itself - this has to be checked by the
38
38
  * caller. This is because of edge cases involving concave polygons.
39
39
  */
40
- export declare function shouldDrawArcOutsidePolygon(centerPoint: vec.Vector2, clockwiseEndpoints: [vec.Vector2, vec.Vector2]): boolean;
40
+ export declare function isConcavePolygonVertex(centerPoint: vec.Vector2, clockwiseEndpoints: [vec.Vector2, vec.Vector2]): boolean;
41
41
  export {};
@@ -31,3 +31,8 @@ export declare function getSideLengthsFromPoints(points: Coord[], i: number, isP
31
31
  * exact side length or the approximate side length.
32
32
  */
33
33
  export declare function getPolygonSideString(sideLength: number, pointIndex: number, strings: PerseusStrings, locale: string): string;
34
+ /**
35
+ * Calculate an appropriate radius for angle arcs based on the graph range.
36
+ * The radius scales with the range so it's visible at all graph sizes.
37
+ */
38
+ export declare function calculateScaledRadius(range: [Interval, Interval]): number;
@@ -193,7 +193,7 @@ declare class InteractiveGraph extends React.Component<Props, State> {
193
193
  hintProgressColor?: string;
194
194
  canScrollPage?: boolean;
195
195
  editorChangeDelay?: number;
196
- flags?: Record<"new-radio-widget", boolean>;
196
+ flags?: Record<"new-radio-widget" | "image-widget-upgrade", boolean>;
197
197
  }> & {
198
198
  baseElements: NonNullable<import("../..").APIOptions["baseElements"]>;
199
199
  canScrollPage: NonNullable<import("../..").APIOptions["canScrollPage"]>;
@@ -214,7 +214,6 @@ declare class InteractiveGraph extends React.Component<Props, State> {
214
214
  findWidgets: (criterion: import("../../types").FilterCriterion) => ReadonlyArray<import("../../types").Widget>;
215
215
  reviewMode: boolean;
216
216
  showSolutions?: import("@khanacademy/perseus-core").ShowSolutions;
217
- onChange: import("../..").ChangeHandler;
218
217
  handleUserInput: (newUserInput: PerseusGraphType, cb?: () => void, silent?: boolean) => void;
219
218
  isLastUsedWidget: boolean;
220
219
  linterContext: import("@khanacademy/perseus-linter").LinterContextProps;
@@ -10,7 +10,6 @@ type DefaultProps = {
10
10
  orderMatters: Props["orderMatters"];
11
11
  padding: Props["padding"];
12
12
  problemNum: Props["problemNum"];
13
- onChange: Props["onChange"];
14
13
  linterContext: Props["linterContext"];
15
14
  userInput: Props["userInput"];
16
15
  };
@@ -76,7 +76,7 @@ declare class MockWidgetComponent extends React.Component<Props> implements Widg
76
76
  hintProgressColor?: string;
77
77
  canScrollPage?: boolean;
78
78
  editorChangeDelay?: number;
79
- flags?: Record<"new-radio-widget", boolean>;
79
+ flags?: Record<"new-radio-widget" | "image-widget-upgrade", boolean>;
80
80
  }> & {
81
81
  baseElements: NonNullable<import("../..").APIOptions["baseElements"]>;
82
82
  canScrollPage: NonNullable<import("../..").APIOptions["canScrollPage"]>;
@@ -97,7 +97,6 @@ declare class MockWidgetComponent extends React.Component<Props> implements Widg
97
97
  findWidgets: (criterion: import("../../types").FilterCriterion) => ReadonlyArray<Widget>;
98
98
  reviewMode: boolean;
99
99
  showSolutions?: import("@khanacademy/perseus-core").ShowSolutions;
100
- onChange: import("../..").ChangeHandler;
101
100
  handleUserInput: (newUserInput: PerseusMockWidgetUserInput, cb?: () => void, silent?: boolean) => void;
102
101
  isLastUsedWidget: boolean;
103
102
  linterContext: import("@khanacademy/perseus-linter").LinterContextProps;
@@ -6,17 +6,7 @@ import type { PerseusNumberLineUserInput, PerseusNumberLineWidgetOptions, Number
6
6
  /**
7
7
  * The type of `this.props` inside the NumberLine widget.
8
8
  */
9
- type Props = WidgetProps<{
10
- range: number[];
11
- labelRange: Array<number | null>;
12
- labelStyle: string;
13
- labelTicks: boolean;
14
- divisionRange: number[];
15
- snapDivisions: number;
16
- isTickCtrl: boolean;
17
- isInequality: boolean;
18
- showTooltips?: boolean;
19
- }, PerseusNumberLineUserInput>;
9
+ type Props = WidgetProps<PerseusNumberLineWidgetOptions, PerseusNumberLineUserInput>;
20
10
  type CalculatedProps = Props & {
21
11
  tickStep: number;
22
12
  };
@@ -77,7 +67,7 @@ declare class NumberLine extends React.Component<Props, State> implements Widget
77
67
  */
78
68
  getSerializedState(): {
79
69
  alignment: string | null | undefined;
80
- static: boolean | null | undefined;
70
+ static: boolean;
81
71
  range: number[];
82
72
  labelRange: (number | null)[];
83
73
  labelStyle: string;
@@ -83,7 +83,7 @@ export declare class NumericInput extends React.Component<NumericInputProps> imp
83
83
  hintProgressColor?: string;
84
84
  canScrollPage?: boolean;
85
85
  editorChangeDelay?: number;
86
- flags?: Record<"new-radio-widget", boolean>;
86
+ flags?: Record<"new-radio-widget" | "image-widget-upgrade", boolean>;
87
87
  }> & {
88
88
  baseElements: NonNullable<import("../..").APIOptions["baseElements"]>;
89
89
  canScrollPage: NonNullable<import("../..").APIOptions["canScrollPage"]>;
@@ -104,7 +104,6 @@ export declare class NumericInput extends React.Component<NumericInputProps> imp
104
104
  findWidgets: (criterion: import("../../types").FilterCriterion) => ReadonlyArray<Widget>;
105
105
  reviewMode: boolean;
106
106
  showSolutions?: import("@khanacademy/perseus-core").ShowSolutions;
107
- onChange: import("../..").ChangeHandler;
108
107
  handleUserInput: (newUserInput: PerseusNumericInputUserInput, cb?: () => void, silent?: boolean) => void;
109
108
  isLastUsedWidget: boolean;
110
109
  linterContext: import("@khanacademy/perseus-linter").LinterContextProps;
@@ -41,7 +41,7 @@ export declare const NumericInputComponent: React.ForwardRefExoticComponent<impo
41
41
  hintProgressColor?: string;
42
42
  canScrollPage?: boolean;
43
43
  editorChangeDelay?: number;
44
- flags?: Record<"new-radio-widget", boolean>;
44
+ flags?: Record<"new-radio-widget" | "image-widget-upgrade", boolean>;
45
45
  }> & {
46
46
  baseElements: NonNullable<import("../..").APIOptions["baseElements"]>;
47
47
  canScrollPage: NonNullable<import("../..").APIOptions["canScrollPage"]>;
@@ -130,7 +130,7 @@ export declare class Plotter extends React.Component<Props, State> implements Wi
130
130
  hintProgressColor?: string;
131
131
  canScrollPage?: boolean;
132
132
  editorChangeDelay?: number;
133
- flags?: Record<"new-radio-widget", boolean>;
133
+ flags?: Record<"new-radio-widget" | "image-widget-upgrade", boolean>;
134
134
  }> & {
135
135
  baseElements: NonNullable<import("../..").APIOptions["baseElements"]>;
136
136
  canScrollPage: NonNullable<import("../..").APIOptions["canScrollPage"]>;
@@ -151,7 +151,6 @@ export declare class Plotter extends React.Component<Props, State> implements Wi
151
151
  findWidgets: (criterion: import("../../types").FilterCriterion) => ReadonlyArray<Widget>;
152
152
  reviewMode: boolean;
153
153
  showSolutions?: import("@khanacademy/perseus-core").ShowSolutions;
154
- onChange: import("../..").ChangeHandler;
155
154
  handleUserInput: (newUserInput: PerseusPlotterUserInput, cb?: () => void, silent?: boolean) => void;
156
155
  isLastUsedWidget: boolean;
157
156
  linterContext: import("@khanacademy/perseus-linter").LinterContextProps;
@@ -1,5 +1,5 @@
1
1
  import * as React from "react";
2
- import type { ChoiceState, Widget } from "../../types";
2
+ import type { ChoiceState, Widget, ChangeHandler } from "../../types";
3
3
  import type { PerseusRadioChoice, PerseusRadioRubric, PerseusRadioUserInput } from "@khanacademy/perseus-core";
4
4
  /**
5
5
  * Represents a single choice in the MultipleChoiceComponent
@@ -28,6 +28,7 @@ export type RadioProps = {
28
28
  choiceStates?: ReadonlyArray<ChoiceState>;
29
29
  editMode?: boolean;
30
30
  labelWrap?: boolean;
31
+ onChange: ChangeHandler;
31
32
  };
32
33
  /**
33
34
  * RadioChoiceWithMetadata is used for server-side scoring
@@ -1,7 +1,7 @@
1
1
  import * as React from "react";
2
2
  import { PerseusI18nContext } from "../../components/i18n-context";
3
3
  import type { FocusFunction } from "./base-radio";
4
- import type { WidgetProps, ChoiceState, Widget } from "../../types";
4
+ import type { WidgetProps, ChoiceState, Widget, ChangeHandler } from "../../types";
5
5
  import type { RadioPromptJSON } from "../../widget-ai-utils/radio/radio-ai-utils";
6
6
  import type { PerseusRadioChoice, ShowSolutions, PerseusRadioRubric, PerseusRadioUserInput, PerseusRadioWidgetOptions } from "@khanacademy/perseus-core";
7
7
  export type RadioProps = PerseusRadioWidgetOptions & {
@@ -13,6 +13,7 @@ export type RadioProps = PerseusRadioWidgetOptions & {
13
13
  choices: RadioChoiceWithMetadata[];
14
14
  showSolutions?: ShowSolutions;
15
15
  choiceStates?: ChoiceState[];
16
+ onChange: ChangeHandler;
16
17
  };
17
18
  export type Props = WidgetProps<RadioProps, PerseusRadioUserInput, PerseusRadioRubric>;
18
19
  type DefaultProps = Required<Pick<Props, "choices" | "multipleSelect" | "countChoices" | "deselectEnabled" | "linterContext" | "showSolutions">>;
@@ -37,6 +37,7 @@ declare class Radio extends RadioOld {
37
37
  deselectEnabled?: boolean;
38
38
  showSolutions?: import("@khanacademy/perseus-core").ShowSolutions;
39
39
  choiceStates?: ChoiceState[];
40
+ onChange: import("../..").ChangeHandler;
40
41
  reviewModeRubric?: PerseusRadioRubric | null | undefined;
41
42
  trackInteraction: (extraData?: Empty | undefined) => void;
42
43
  widgetId: string;
@@ -77,7 +78,7 @@ declare class Radio extends RadioOld {
77
78
  hintProgressColor?: string;
78
79
  canScrollPage?: boolean;
79
80
  editorChangeDelay?: number;
80
- flags?: Record<"new-radio-widget", boolean>;
81
+ flags?: Record<"new-radio-widget" | "image-widget-upgrade", boolean>;
81
82
  }> & {
82
83
  baseElements: NonNullable<import("../..").APIOptions["baseElements"]>;
83
84
  canScrollPage: NonNullable<import("../..").APIOptions["canScrollPage"]>;
@@ -97,7 +98,6 @@ declare class Radio extends RadioOld {
97
98
  onBlur: (blurPath: import("../..").FocusPath) => void;
98
99
  findWidgets: (criterion: import("../../types").FilterCriterion) => ReadonlyArray<import("../../types").Widget>;
99
100
  reviewMode: boolean;
100
- onChange: import("../..").ChangeHandler;
101
101
  handleUserInput: (newUserInput: PerseusRadioUserInput, cb?: () => void, silent?: boolean) => void;
102
102
  isLastUsedWidget: boolean;
103
103
  linterContext: import("@khanacademy/perseus-linter").LinterContextProps;
@@ -60,7 +60,6 @@ interface GetA11yTextProps {
60
60
  * @param letter - The letter for the choice.
61
61
  * @param checked - Whether the choice is checked.
62
62
  * @param correct - Whether the choice is correct.
63
- * @param crossedOut - Whether the choice is crossed out.
64
63
  * @param showCorrectness - Whether the correctness is shown.
65
64
  * @param strings - The strings for the Radio widget.
66
65
  * @returns The a11y string for the Radio option.
@@ -6,6 +6,7 @@ import type { PerseusTableWidgetOptions, PerseusTableUserInput } from "@khanacad
6
6
  type EditorProps = {
7
7
  editableHeaders: boolean;
8
8
  Editor: any;
9
+ onChange: (headers: PerseusTableWidgetOptions["headers"]) => void;
9
10
  };
10
11
  type Props = WidgetProps<PerseusTableWidgetOptions, PerseusTableUserInput> & EditorProps;
11
12
  type DefaultProps = {
@@ -52,10 +53,7 @@ declare class Table extends React.Component<Props> implements Widget {
52
53
  problemNum: number | null | undefined;
53
54
  apiOptions: Readonly<Readonly<{
54
55
  isArticle?: boolean;
55
- onFocusChange?: (newFocusPath: FocusPath, oldFocusPath: FocusPath, keypadHeight? /**
56
- * @deprecated and likely very broken API
57
- * [LEMS-3185] do not trust serializedState
58
- */: number, focusedElement?: HTMLElement) => unknown;
56
+ onFocusChange?: (newFocusPath: FocusPath, oldFocusPath: FocusPath, keypadHeight?: number, focusedElement?: HTMLElement) => unknown;
59
57
  GroupMetadataEditor?: React.ComponentType<any>;
60
58
  showAlignmentOptions?: boolean;
61
59
  readOnly?: boolean;
@@ -86,7 +84,7 @@ declare class Table extends React.Component<Props> implements Widget {
86
84
  hintProgressColor?: string;
87
85
  canScrollPage?: boolean;
88
86
  editorChangeDelay?: number;
89
- flags?: Record<"new-radio-widget", boolean>;
87
+ flags?: Record<"new-radio-widget" | "image-widget-upgrade", boolean>;
90
88
  }> & {
91
89
  baseElements: NonNullable<import("../..").APIOptions["baseElements"]>;
92
90
  canScrollPage: NonNullable<import("../..").APIOptions["canScrollPage"]>;
@@ -107,12 +105,12 @@ declare class Table extends React.Component<Props> implements Widget {
107
105
  findWidgets: (criterion: import("../../types").FilterCriterion) => ReadonlyArray<Widget>;
108
106
  reviewMode: boolean;
109
107
  showSolutions?: import("@khanacademy/perseus-core").ShowSolutions;
110
- onChange: import("../..").ChangeHandler;
111
108
  handleUserInput: (newUserInput: PerseusTableUserInput, cb?: () => void, silent?: boolean) => void;
112
109
  isLastUsedWidget: boolean;
113
110
  linterContext: import("@khanacademy/perseus-linter").LinterContextProps;
114
111
  containerSizeClass: import("../../util/sizing-utils").SizeClass;
115
112
  Editor: any;
113
+ onChange: (headers: PerseusTableWidgetOptions["headers"]) => void;
116
114
  };
117
115
  render(): React.ReactNode;
118
116
  }
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "description": "Core Perseus API (includes renderers and widgets)",
4
4
  "author": "Khan Academy",
5
5
  "license": "MIT",
6
- "version": "69.0.0",
6
+ "version": "69.1.0",
7
7
  "publishConfig": {
8
8
  "access": "public"
9
9
  },
@@ -41,14 +41,14 @@
41
41
  "mafs": "0.19.0",
42
42
  "tiny-invariant": "1.3.1",
43
43
  "uuid": "^10.0.0",
44
- "@khanacademy/kas": "2.1.0",
45
- "@khanacademy/keypad-context": "3.2.4",
46
- "@khanacademy/math-input": "26.2.4",
47
- "@khanacademy/perseus-core": "19.0.2",
48
- "@khanacademy/perseus-linter": "4.3.4",
49
- "@khanacademy/perseus-score": "7.7.4",
44
+ "@khanacademy/kas": "2.1.1",
45
+ "@khanacademy/keypad-context": "3.2.6",
46
+ "@khanacademy/kmath": "2.2.6",
47
+ "@khanacademy/math-input": "26.2.6",
48
+ "@khanacademy/perseus-core": "19.1.0",
49
+ "@khanacademy/perseus-linter": "4.3.6",
50
+ "@khanacademy/perseus-score": "7.7.6",
50
51
  "@khanacademy/perseus-utils": "2.1.0",
51
- "@khanacademy/kmath": "2.2.4",
52
52
  "@khanacademy/pure-markdown": "2.2.0",
53
53
  "@khanacademy/simple-markdown": "2.1.0"
54
54
  },
@@ -65,6 +65,7 @@
65
65
  "@khanacademy/wonder-blocks-labeled-field": "4.0.5",
66
66
  "@khanacademy/wonder-blocks-layout": "3.1.36",
67
67
  "@khanacademy/wonder-blocks-link": "9.2.3",
68
+ "@khanacademy/wonder-blocks-modal": "8.3.1",
68
69
  "@khanacademy/wonder-blocks-pill": "3.1.40",
69
70
  "@khanacademy/wonder-blocks-popover": "6.1.32",
70
71
  "@khanacademy/wonder-blocks-progress-spinner": "3.1.36",
@@ -86,8 +87,8 @@
86
87
  "react-dom": "18.2.0",
87
88
  "react-popper": "^2.2.5",
88
89
  "underscore": "1.4.4",
89
- "raphael": "1.5.4",
90
- "perseus-build-settings": "0.9.0"
90
+ "perseus-build-settings": "0.9.0",
91
+ "raphael": "1.5.4"
91
92
  },
92
93
  "peerDependencies": {
93
94
  "@khanacademy/wonder-blocks-banner": "^4.4.0",
@@ -102,6 +103,7 @@
102
103
  "@khanacademy/wonder-blocks-labeled-field": "^4.0.5",
103
104
  "@khanacademy/wonder-blocks-layout": "^3.1.36",
104
105
  "@khanacademy/wonder-blocks-link": "^9.2.3",
106
+ "@khanacademy/wonder-blocks-modal": "^8.3.1",
105
107
  "@khanacademy/wonder-blocks-pill": "^3.1.40",
106
108
  "@khanacademy/wonder-blocks-popover": "^6.1.32",
107
109
  "@khanacademy/wonder-blocks-progress-spinner": "^3.1.36",
@@ -1,12 +0,0 @@
1
- import * as React from "react";
2
- import type { APIOptions } from "../../types";
3
- import type { PerseusImageBackground } from "@khanacademy/perseus-core";
4
- import type { LinterContextProps } from "@khanacademy/perseus-linter";
5
- interface Props {
6
- caption: string;
7
- backgroundImage: PerseusImageBackground;
8
- apiOptions: APIOptions;
9
- linterContext: LinterContextProps;
10
- }
11
- export declare const ImageDescriptionAndCaption: ({ caption, backgroundImage, apiOptions, linterContext, }: Props) => React.JSX.Element;
12
- export {};