@khanacademy/perseus-editor 33.0.0 → 33.0.2
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.
- package/dist/components/coordinate-pair-input.d.ts +2 -2
- package/dist/components/segmented-control.d.ts +35 -0
- package/dist/es/index.css +38 -4
- package/dist/es/index.css.map +1 -1
- package/dist/es/index.js +90 -42
- package/dist/es/index.js.map +1 -1
- package/dist/index.css +38 -4
- package/dist/index.css.map +1 -1
- package/dist/index.js +90 -43
- package/dist/index.js.map +1 -1
- package/dist/testing/feature-flags-util.d.ts +2 -0
- package/dist/widgets/expression-editor.d.ts +2 -2
- package/dist/widgets/interactive-graph-editor/components/graph-type-selector.d.ts +2 -2
- package/dist/widgets/interactive-graph-editor/components/interactive-graph-description.d.ts +2 -2
- package/dist/widgets/interactive-graph-editor/components/interactive-graph-settings.d.ts +4 -4
- package/dist/widgets/interactive-graph-editor/components/interactive-graph-sr-tree.d.ts +4 -4
- package/dist/widgets/interactive-graph-editor/interactive-graph-editor.d.ts +18 -18
- package/dist/widgets/interactive-graph-editor/locked-figures/color-select.d.ts +2 -2
- package/dist/widgets/interactive-graph-editor/locked-figures/line-stroke-select.d.ts +2 -2
- package/dist/widgets/interactive-graph-editor/locked-figures/line-weight-select.d.ts +2 -2
- package/dist/widgets/interactive-graph-editor/locked-figures/locked-figure-aria.d.ts +2 -2
- package/dist/widgets/interactive-graph-editor/locked-figures/locked-figure-select.d.ts +2 -2
- package/dist/widgets/interactive-graph-editor/locked-figures/locked-figure-settings-actions.d.ts +2 -2
- package/dist/widgets/interactive-graph-editor/locked-figures/locked-figure-settings.d.ts +2 -2
- package/dist/widgets/interactive-graph-editor/locked-figures/locked-figures-section.d.ts +2 -2
- package/dist/widgets/label-image-editor/answer-choices.d.ts +2 -2
- package/dist/widgets/label-image-editor/label-image-editor.d.ts +2 -2
- package/dist/widgets/label-image-editor/select-image.d.ts +2 -2
- package/dist/widgets/numeric-input-editor.d.ts +2 -2
- package/dist/widgets/radio/radio-image-editor.d.ts +5 -9
- package/dist/widgets/radio/radio-option-content-and-image-editor.d.ts +4 -4
- package/dist/widgets/radio/radio-status-pill.d.ts +6 -2
- package/package.json +43 -41
|
@@ -4,6 +4,7 @@ declare const DEFAULT_FEATURE_FLAGS: {
|
|
|
4
4
|
"interactive-graph-vector": boolean;
|
|
5
5
|
"interactive-graph-not-scored": boolean;
|
|
6
6
|
"input-number-to-numeric-input": boolean;
|
|
7
|
+
"grapher-to-interactive-graph": boolean;
|
|
7
8
|
};
|
|
8
9
|
/** Utility to get feature flags with optional overrides for testing.
|
|
9
10
|
* sample usage:
|
|
@@ -15,5 +16,6 @@ export declare function getFeatureFlags(overrides?: Partial<typeof DEFAULT_FEATU
|
|
|
15
16
|
"interactive-graph-vector": boolean;
|
|
16
17
|
"interactive-graph-not-scored": boolean;
|
|
17
18
|
"input-number-to-numeric-input": boolean;
|
|
19
|
+
"grapher-to-interactive-graph": boolean;
|
|
18
20
|
};
|
|
19
21
|
export {};
|
|
@@ -7,9 +7,9 @@ type Props = {
|
|
|
7
7
|
onChange: (newValues: Partial<PerseusExpressionWidgetOptions>) => void;
|
|
8
8
|
} & Omit<PerseusExpressionWidgetOptions, "buttonsVisible">;
|
|
9
9
|
type AnswerForm = PerseusExpressionWidgetOptions["answerForms"][number];
|
|
10
|
-
|
|
10
|
+
interface State {
|
|
11
11
|
functionsInternal: string;
|
|
12
|
-
}
|
|
12
|
+
}
|
|
13
13
|
/**
|
|
14
14
|
* An editor for adding an expression widget that allows users to enter mathematical expressions.
|
|
15
15
|
*/
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
|
|
2
|
+
interface GraphTypeSelectorProps {
|
|
3
3
|
graphType: string;
|
|
4
4
|
onChange: (newGraphType: string) => void;
|
|
5
|
-
}
|
|
5
|
+
}
|
|
6
6
|
declare const GraphTypeSelector: (props: GraphTypeSelectorProps) => React.JSX.Element;
|
|
7
7
|
export default GraphTypeSelector;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import type { Props as EditorProps } from "../interactive-graph-editor";
|
|
3
|
-
|
|
3
|
+
interface Props {
|
|
4
4
|
ariaLabelValue: string;
|
|
5
5
|
ariaDescriptionValue: string;
|
|
6
6
|
onChange: (graphProps: Partial<EditorProps>) => void;
|
|
7
|
-
}
|
|
7
|
+
}
|
|
8
8
|
export default function InteractiveGraphDescription(props: Props): React.JSX.Element;
|
|
9
9
|
export {};
|
|
@@ -7,7 +7,7 @@ import type { APIOptionsWithDefaults } from "@khanacademy/perseus";
|
|
|
7
7
|
import type { AxisLabelLocation, ShowAxisArrows, ShowAxisTicks, MarkingsType, PerseusImageBackground } from "@khanacademy/perseus-core";
|
|
8
8
|
type ChangeFn = typeof Changeable.change;
|
|
9
9
|
type Range = [min: number, max: number];
|
|
10
|
-
|
|
10
|
+
interface Props {
|
|
11
11
|
/**
|
|
12
12
|
* The size of the graph area in pixels.
|
|
13
13
|
*/
|
|
@@ -75,8 +75,8 @@ type Props = {
|
|
|
75
75
|
showTooltips: boolean;
|
|
76
76
|
onChange: (arg1: Partial<Props>) => void;
|
|
77
77
|
apiOptions: APIOptionsWithDefaults;
|
|
78
|
-
}
|
|
79
|
-
|
|
78
|
+
}
|
|
79
|
+
interface State {
|
|
80
80
|
isExpanded: boolean;
|
|
81
81
|
labelsTextbox: ReadonlyArray<string>;
|
|
82
82
|
labelLocation: AxisLabelLocation;
|
|
@@ -87,7 +87,7 @@ type State = {
|
|
|
87
87
|
showAxisArrowsSwitches: ShowAxisArrows;
|
|
88
88
|
showAxisTicksSwitches: ShowAxisTicks;
|
|
89
89
|
backgroundImage: PerseusImageBackground;
|
|
90
|
-
}
|
|
90
|
+
}
|
|
91
91
|
declare class InteractiveGraphSettings extends React.Component<Props, State> {
|
|
92
92
|
_isMounted: boolean;
|
|
93
93
|
bgUrlRef: React.RefObject<HTMLInputElement>;
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
|
|
2
|
+
interface Attribute {
|
|
3
3
|
name: string;
|
|
4
4
|
value: string;
|
|
5
|
-
}
|
|
6
|
-
|
|
5
|
+
}
|
|
6
|
+
interface AttributeMap {
|
|
7
7
|
roleOrTag: string;
|
|
8
8
|
className: string;
|
|
9
9
|
attributes: Array<Attribute>;
|
|
10
|
-
}
|
|
10
|
+
}
|
|
11
11
|
export declare function getAccessibilityAttributes(graphId: string): AttributeMap[];
|
|
12
12
|
declare function InteractiveGraphSRTree({ graphId, correct, fullGraphAriaLabel, fullGraphAriaDescription, lockedFigures, }: {
|
|
13
13
|
graphId: any;
|
|
@@ -63,7 +63,7 @@ declare const InteractiveGraph: {
|
|
|
63
63
|
isMobile?: boolean;
|
|
64
64
|
isMobileApp?: boolean;
|
|
65
65
|
hintProgressColor?: string;
|
|
66
|
-
flags?: Record<"input-number-to-numeric-input", boolean>;
|
|
66
|
+
flags?: Record<"input-number-to-numeric-input" | "grapher-to-interactive-graph", boolean>;
|
|
67
67
|
}> & {
|
|
68
68
|
baseElements: NonNullable<Readonly<{
|
|
69
69
|
isArticle?: boolean;
|
|
@@ -92,7 +92,7 @@ declare const InteractiveGraph: {
|
|
|
92
92
|
isMobile?: boolean;
|
|
93
93
|
isMobileApp?: boolean;
|
|
94
94
|
hintProgressColor?: string;
|
|
95
|
-
flags?: Record<"input-number-to-numeric-input", boolean>;
|
|
95
|
+
flags?: Record<"input-number-to-numeric-input" | "grapher-to-interactive-graph", boolean>;
|
|
96
96
|
}>["baseElements"]>;
|
|
97
97
|
isArticle: NonNullable<Readonly<{
|
|
98
98
|
isArticle?: boolean;
|
|
@@ -121,7 +121,7 @@ declare const InteractiveGraph: {
|
|
|
121
121
|
isMobile?: boolean;
|
|
122
122
|
isMobileApp?: boolean;
|
|
123
123
|
hintProgressColor?: string;
|
|
124
|
-
flags?: Record<"input-number-to-numeric-input", boolean>;
|
|
124
|
+
flags?: Record<"input-number-to-numeric-input" | "grapher-to-interactive-graph", boolean>;
|
|
125
125
|
}>["isArticle"]>;
|
|
126
126
|
isMobile: NonNullable<Readonly<{
|
|
127
127
|
isArticle?: boolean;
|
|
@@ -150,7 +150,7 @@ declare const InteractiveGraph: {
|
|
|
150
150
|
isMobile?: boolean;
|
|
151
151
|
isMobileApp?: boolean;
|
|
152
152
|
hintProgressColor?: string;
|
|
153
|
-
flags?: Record<"input-number-to-numeric-input", boolean>;
|
|
153
|
+
flags?: Record<"input-number-to-numeric-input" | "grapher-to-interactive-graph", boolean>;
|
|
154
154
|
}>["isMobile"]>;
|
|
155
155
|
isMobileApp: NonNullable<Readonly<{
|
|
156
156
|
isArticle?: boolean;
|
|
@@ -179,7 +179,7 @@ declare const InteractiveGraph: {
|
|
|
179
179
|
isMobile?: boolean;
|
|
180
180
|
isMobileApp?: boolean;
|
|
181
181
|
hintProgressColor?: string;
|
|
182
|
-
flags?: Record<"input-number-to-numeric-input", boolean>;
|
|
182
|
+
flags?: Record<"input-number-to-numeric-input" | "grapher-to-interactive-graph", boolean>;
|
|
183
183
|
}>["isMobileApp"]>;
|
|
184
184
|
editingDisabled: NonNullable<Readonly<{
|
|
185
185
|
isArticle?: boolean;
|
|
@@ -208,7 +208,7 @@ declare const InteractiveGraph: {
|
|
|
208
208
|
isMobile?: boolean;
|
|
209
209
|
isMobileApp?: boolean;
|
|
210
210
|
hintProgressColor?: string;
|
|
211
|
-
flags?: Record<"input-number-to-numeric-input", boolean>;
|
|
211
|
+
flags?: Record<"input-number-to-numeric-input" | "grapher-to-interactive-graph", boolean>;
|
|
212
212
|
}>["editingDisabled"]>;
|
|
213
213
|
onFocusChange: NonNullable<Readonly<{
|
|
214
214
|
isArticle?: boolean;
|
|
@@ -237,7 +237,7 @@ declare const InteractiveGraph: {
|
|
|
237
237
|
isMobile?: boolean;
|
|
238
238
|
isMobileApp?: boolean;
|
|
239
239
|
hintProgressColor?: string;
|
|
240
|
-
flags?: Record<"input-number-to-numeric-input", boolean>;
|
|
240
|
+
flags?: Record<"input-number-to-numeric-input" | "grapher-to-interactive-graph", boolean>;
|
|
241
241
|
}>["onFocusChange"]>;
|
|
242
242
|
readOnly: NonNullable<Readonly<{
|
|
243
243
|
isArticle?: boolean;
|
|
@@ -266,7 +266,7 @@ declare const InteractiveGraph: {
|
|
|
266
266
|
isMobile?: boolean;
|
|
267
267
|
isMobileApp?: boolean;
|
|
268
268
|
hintProgressColor?: string;
|
|
269
|
-
flags?: Record<"input-number-to-numeric-input", boolean>;
|
|
269
|
+
flags?: Record<"input-number-to-numeric-input" | "grapher-to-interactive-graph", boolean>;
|
|
270
270
|
}>["readOnly"]>;
|
|
271
271
|
showAlignmentOptions: NonNullable<Readonly<{
|
|
272
272
|
isArticle?: boolean;
|
|
@@ -295,7 +295,7 @@ declare const InteractiveGraph: {
|
|
|
295
295
|
isMobile?: boolean;
|
|
296
296
|
isMobileApp?: boolean;
|
|
297
297
|
hintProgressColor?: string;
|
|
298
|
-
flags?: Record<"input-number-to-numeric-input", boolean>;
|
|
298
|
+
flags?: Record<"input-number-to-numeric-input" | "grapher-to-interactive-graph", boolean>;
|
|
299
299
|
}>["showAlignmentOptions"]>;
|
|
300
300
|
}>;
|
|
301
301
|
keypadElement?: any;
|
|
@@ -389,7 +389,7 @@ declare const InteractiveGraph: {
|
|
|
389
389
|
isMobile?: boolean;
|
|
390
390
|
isMobileApp?: boolean;
|
|
391
391
|
hintProgressColor?: string;
|
|
392
|
-
flags?: Record<"input-number-to-numeric-input", boolean>;
|
|
392
|
+
flags?: Record<"input-number-to-numeric-input" | "grapher-to-interactive-graph", boolean>;
|
|
393
393
|
}> & {
|
|
394
394
|
baseElements: NonNullable<Readonly<{
|
|
395
395
|
isArticle?: boolean;
|
|
@@ -418,7 +418,7 @@ declare const InteractiveGraph: {
|
|
|
418
418
|
isMobile?: boolean;
|
|
419
419
|
isMobileApp?: boolean;
|
|
420
420
|
hintProgressColor?: string;
|
|
421
|
-
flags?: Record<"input-number-to-numeric-input", boolean>;
|
|
421
|
+
flags?: Record<"input-number-to-numeric-input" | "grapher-to-interactive-graph", boolean>;
|
|
422
422
|
}>["baseElements"]>;
|
|
423
423
|
isArticle: NonNullable<Readonly<{
|
|
424
424
|
isArticle?: boolean;
|
|
@@ -447,7 +447,7 @@ declare const InteractiveGraph: {
|
|
|
447
447
|
isMobile?: boolean;
|
|
448
448
|
isMobileApp?: boolean;
|
|
449
449
|
hintProgressColor?: string;
|
|
450
|
-
flags?: Record<"input-number-to-numeric-input", boolean>;
|
|
450
|
+
flags?: Record<"input-number-to-numeric-input" | "grapher-to-interactive-graph", boolean>;
|
|
451
451
|
}>["isArticle"]>;
|
|
452
452
|
isMobile: NonNullable<Readonly<{
|
|
453
453
|
isArticle?: boolean;
|
|
@@ -476,7 +476,7 @@ declare const InteractiveGraph: {
|
|
|
476
476
|
isMobile?: boolean;
|
|
477
477
|
isMobileApp?: boolean;
|
|
478
478
|
hintProgressColor?: string;
|
|
479
|
-
flags?: Record<"input-number-to-numeric-input", boolean>;
|
|
479
|
+
flags?: Record<"input-number-to-numeric-input" | "grapher-to-interactive-graph", boolean>;
|
|
480
480
|
}>["isMobile"]>;
|
|
481
481
|
isMobileApp: NonNullable<Readonly<{
|
|
482
482
|
isArticle?: boolean;
|
|
@@ -505,7 +505,7 @@ declare const InteractiveGraph: {
|
|
|
505
505
|
isMobile?: boolean;
|
|
506
506
|
isMobileApp?: boolean;
|
|
507
507
|
hintProgressColor?: string;
|
|
508
|
-
flags?: Record<"input-number-to-numeric-input", boolean>;
|
|
508
|
+
flags?: Record<"input-number-to-numeric-input" | "grapher-to-interactive-graph", boolean>;
|
|
509
509
|
}>["isMobileApp"]>;
|
|
510
510
|
editingDisabled: NonNullable<Readonly<{
|
|
511
511
|
isArticle?: boolean;
|
|
@@ -534,7 +534,7 @@ declare const InteractiveGraph: {
|
|
|
534
534
|
isMobile?: boolean;
|
|
535
535
|
isMobileApp?: boolean;
|
|
536
536
|
hintProgressColor?: string;
|
|
537
|
-
flags?: Record<"input-number-to-numeric-input", boolean>;
|
|
537
|
+
flags?: Record<"input-number-to-numeric-input" | "grapher-to-interactive-graph", boolean>;
|
|
538
538
|
}>["editingDisabled"]>;
|
|
539
539
|
onFocusChange: NonNullable<Readonly<{
|
|
540
540
|
isArticle?: boolean;
|
|
@@ -563,7 +563,7 @@ declare const InteractiveGraph: {
|
|
|
563
563
|
isMobile?: boolean;
|
|
564
564
|
isMobileApp?: boolean;
|
|
565
565
|
hintProgressColor?: string;
|
|
566
|
-
flags?: Record<"input-number-to-numeric-input", boolean>;
|
|
566
|
+
flags?: Record<"input-number-to-numeric-input" | "grapher-to-interactive-graph", boolean>;
|
|
567
567
|
}>["onFocusChange"]>;
|
|
568
568
|
readOnly: NonNullable<Readonly<{
|
|
569
569
|
isArticle?: boolean;
|
|
@@ -592,7 +592,7 @@ declare const InteractiveGraph: {
|
|
|
592
592
|
isMobile?: boolean;
|
|
593
593
|
isMobileApp?: boolean;
|
|
594
594
|
hintProgressColor?: string;
|
|
595
|
-
flags?: Record<"input-number-to-numeric-input", boolean>;
|
|
595
|
+
flags?: Record<"input-number-to-numeric-input" | "grapher-to-interactive-graph", boolean>;
|
|
596
596
|
}>["readOnly"]>;
|
|
597
597
|
showAlignmentOptions: NonNullable<Readonly<{
|
|
598
598
|
isArticle?: boolean;
|
|
@@ -621,7 +621,7 @@ declare const InteractiveGraph: {
|
|
|
621
621
|
isMobile?: boolean;
|
|
622
622
|
isMobileApp?: boolean;
|
|
623
623
|
hintProgressColor?: string;
|
|
624
|
-
flags?: Record<"input-number-to-numeric-input", boolean>;
|
|
624
|
+
flags?: Record<"input-number-to-numeric-input" | "grapher-to-interactive-graph", boolean>;
|
|
625
625
|
}>["showAlignmentOptions"]>;
|
|
626
626
|
}>;
|
|
627
627
|
keypadElement?: any;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import type { LockedFigureColor } from "@khanacademy/perseus-core";
|
|
3
3
|
import type { StyleType } from "@khanacademy/wonder-blocks-core";
|
|
4
|
-
|
|
4
|
+
interface Props {
|
|
5
5
|
selectedValue: LockedFigureColor;
|
|
6
6
|
style?: StyleType;
|
|
7
7
|
onChange: (newColor: LockedFigureColor) => void;
|
|
8
|
-
}
|
|
8
|
+
}
|
|
9
9
|
declare const ColorSelect: (props: Props) => React.JSX.Element;
|
|
10
10
|
export default ColorSelect;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import type { StyleType } from "@khanacademy/wonder-blocks-core";
|
|
3
3
|
type StyleOptions = "solid" | "dashed";
|
|
4
|
-
|
|
4
|
+
interface Props {
|
|
5
5
|
selectedValue: StyleOptions;
|
|
6
6
|
onChange: (newValue: StyleOptions) => void;
|
|
7
7
|
containerStyle?: StyleType;
|
|
8
|
-
}
|
|
8
|
+
}
|
|
9
9
|
declare const LineStrokeSelect: (props: Props) => React.JSX.Element;
|
|
10
10
|
export default LineStrokeSelect;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import type { StrokeWeight } from "@khanacademy/perseus-core";
|
|
3
3
|
import type { StyleType } from "@khanacademy/wonder-blocks-core";
|
|
4
|
-
|
|
4
|
+
interface Props {
|
|
5
5
|
selectedValue: StrokeWeight;
|
|
6
6
|
onChange: (newValue: StrokeWeight) => void;
|
|
7
7
|
containerStyle?: StyleType;
|
|
8
|
-
}
|
|
8
|
+
}
|
|
9
9
|
declare const LineWeightSelect: (props: Props) => React.JSX.Element;
|
|
10
10
|
export default LineWeightSelect;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
|
|
2
|
+
interface Props {
|
|
3
3
|
ariaLabel: string | undefined;
|
|
4
4
|
/**
|
|
5
5
|
* The async function that generates the prepopulated aria label
|
|
@@ -9,6 +9,6 @@ type Props = {
|
|
|
9
9
|
onChangeProps: (props: {
|
|
10
10
|
ariaLabel?: string | undefined;
|
|
11
11
|
}) => void;
|
|
12
|
-
}
|
|
12
|
+
}
|
|
13
13
|
declare function LockedFigureAria(props: Props): React.JSX.Element;
|
|
14
14
|
export default LockedFigureAria;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import type { LockedFigureType } from "@khanacademy/perseus-core";
|
|
3
|
-
|
|
3
|
+
interface Props {
|
|
4
4
|
id: string;
|
|
5
5
|
onChange: (value: LockedFigureType) => void;
|
|
6
|
-
}
|
|
6
|
+
}
|
|
7
7
|
declare const LockedFigureSelect: (props: Props) => React.JSX.Element;
|
|
8
8
|
export default LockedFigureSelect;
|
package/dist/widgets/interactive-graph-editor/locked-figures/locked-figure-settings-actions.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import type { LockedFigureType } from "@khanacademy/perseus-core";
|
|
3
3
|
export type LockedFigureSettingsMovementType = "back" | "backward" | "forward" | "front";
|
|
4
|
-
|
|
4
|
+
interface Props {
|
|
5
5
|
figureType: LockedFigureType;
|
|
6
6
|
onMove?: (movement: LockedFigureSettingsMovementType) => void;
|
|
7
7
|
onRemove: () => void;
|
|
8
|
-
}
|
|
8
|
+
}
|
|
9
9
|
declare const LockedFigureSettingsActions: (props: Props) => React.JSX.Element;
|
|
10
10
|
export default LockedFigureSettingsActions;
|
|
@@ -13,7 +13,7 @@ import type { Props as LockedLineProps } from "./locked-line-settings";
|
|
|
13
13
|
import type { Props as LockedPointProps } from "./locked-point-settings";
|
|
14
14
|
import type { Props as LockedPolygonProps } from "./locked-polygon-settings";
|
|
15
15
|
import type { Props as LockedVectorProps } from "./locked-vector-settings";
|
|
16
|
-
export
|
|
16
|
+
export interface LockedFigureSettingsCommonProps {
|
|
17
17
|
/**
|
|
18
18
|
* Called when a movement button (top, up, down, bottom) is pressed.
|
|
19
19
|
*/
|
|
@@ -30,7 +30,7 @@ export type LockedFigureSettingsCommonProps = {
|
|
|
30
30
|
* Called when the accordion is expanded or collapsed.
|
|
31
31
|
*/
|
|
32
32
|
onToggle?: (expanded: boolean) => void;
|
|
33
|
-
}
|
|
33
|
+
}
|
|
34
34
|
type Props = LockedFigureSettingsCommonProps & (LockedPointProps | LockedLineProps | LockedEllipseProps | LockedVectorProps | LockedPolygonProps | LockedFunctionProps | LockedLabelProps);
|
|
35
35
|
declare const LockedFigureSettings: (props: Props) => React.JSX.Element;
|
|
36
36
|
export default LockedFigureSettings;
|
|
@@ -2,10 +2,10 @@ import * as React from "react";
|
|
|
2
2
|
import type { Props as InteractiveGraphEditorProps } from "../interactive-graph-editor";
|
|
3
3
|
import type { APIOptionsWithDefaults } from "@khanacademy/perseus";
|
|
4
4
|
import type { LockedFigure } from "@khanacademy/perseus-core";
|
|
5
|
-
|
|
5
|
+
interface Props {
|
|
6
6
|
figures?: Array<LockedFigure>;
|
|
7
7
|
onChange: (props: Partial<InteractiveGraphEditorProps>) => void;
|
|
8
8
|
apiOptions: APIOptionsWithDefaults;
|
|
9
|
-
}
|
|
9
|
+
}
|
|
10
10
|
declare const LockedFiguresSection: (props: Props) => React.JSX.Element;
|
|
11
11
|
export default LockedFiguresSection;
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
* Controlled list of answer choices, handles adding and removing answers.
|
|
3
3
|
*/
|
|
4
4
|
import * as React from "react";
|
|
5
|
-
export
|
|
5
|
+
export interface AnswerChoicesProps {
|
|
6
6
|
choices: ReadonlyArray<string>;
|
|
7
7
|
onChange: (choices: ReadonlyArray<string>) => void;
|
|
8
8
|
editingDisabled: boolean;
|
|
9
|
-
}
|
|
9
|
+
}
|
|
10
10
|
/**
|
|
11
11
|
* The list of choices, handles adding, removing and reording of answers.
|
|
12
12
|
*/
|
|
@@ -2,7 +2,7 @@ import * as React from "react";
|
|
|
2
2
|
import type { PreferredPopoverDirection } from "./behavior";
|
|
3
3
|
import type { APIOptions } from "@khanacademy/perseus";
|
|
4
4
|
import type { PerseusLabelImageWidgetOptions, LabelImageDefaultWidgetOptions } from "@khanacademy/perseus-core";
|
|
5
|
-
|
|
5
|
+
interface Props {
|
|
6
6
|
apiOptions: APIOptions;
|
|
7
7
|
choices: string[];
|
|
8
8
|
imageAlt: string;
|
|
@@ -14,7 +14,7 @@ type Props = {
|
|
|
14
14
|
hideChoicesFromInstructions: boolean;
|
|
15
15
|
onChange: (options: any) => void;
|
|
16
16
|
preferredPopoverDirection: PreferredPopoverDirection;
|
|
17
|
-
}
|
|
17
|
+
}
|
|
18
18
|
/**
|
|
19
19
|
* Direct image labeling widget editor.
|
|
20
20
|
*
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
* Controlled component for selecting the question image, for answer labeling.
|
|
3
3
|
*/
|
|
4
4
|
import * as React from "react";
|
|
5
|
-
export
|
|
5
|
+
export interface SelectImageProps {
|
|
6
6
|
onChange: (url: string) => void;
|
|
7
7
|
url: string;
|
|
8
|
-
}
|
|
8
|
+
}
|
|
9
9
|
declare const SelectImage: ({ onChange, url }: SelectImageProps) => React.ReactElement;
|
|
10
10
|
export default SelectImage;
|
|
@@ -7,12 +7,12 @@ type Props = Omit<PerseusNumericInputWidgetOptions, "static"> & {
|
|
|
7
7
|
onChange: (results: any) => any;
|
|
8
8
|
apiOptions?: APIOptionsWithDefaults;
|
|
9
9
|
};
|
|
10
|
-
|
|
10
|
+
interface State {
|
|
11
11
|
lastStatus: string;
|
|
12
12
|
showAnswerDetails: boolean[];
|
|
13
13
|
showSettings: boolean;
|
|
14
14
|
showAnswers: boolean;
|
|
15
|
-
}
|
|
15
|
+
}
|
|
16
16
|
/**
|
|
17
17
|
* An editor for adding a numeric input widget that allows users to enter
|
|
18
18
|
* numerical values with specific validation rules.
|
|
@@ -1,13 +1,9 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
interface RadioImageEditorProps {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
containerClassName?: string;
|
|
8
|
-
onSave: (imageUrl: string, imageAltText: string, width?: number, height?: number) => void;
|
|
9
|
-
onClose?: () => void;
|
|
10
|
-
onDelete?: () => void;
|
|
3
|
+
imageUrl: string;
|
|
4
|
+
imageAltText: string;
|
|
5
|
+
onSave: (imageUrl: string, imageAltText: string) => void;
|
|
6
|
+
onDelete: () => void;
|
|
11
7
|
}
|
|
12
|
-
export default function RadioImageEditor({
|
|
8
|
+
export default function RadioImageEditor({ imageUrl, imageAltText, onSave, onDelete, }: RadioImageEditorProps): React.ReactElement;
|
|
13
9
|
export {};
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
|
|
2
|
+
interface Props {
|
|
3
3
|
isNoneOfTheAbove: boolean;
|
|
4
4
|
content: string;
|
|
5
5
|
choiceIndex: number;
|
|
6
6
|
onContentChange: (choiceIndex: number, content: string) => void;
|
|
7
|
-
}
|
|
8
|
-
export
|
|
7
|
+
}
|
|
8
|
+
export interface RadioOptionContentAndImageEditorHandle {
|
|
9
9
|
focus: () => void;
|
|
10
|
-
}
|
|
10
|
+
}
|
|
11
11
|
export declare const RadioOptionContentAndImageEditor: React.ForwardRefExoticComponent<Props & React.RefAttributes<RadioOptionContentAndImageEditorHandle>>;
|
|
12
12
|
export {};
|
|
@@ -3,7 +3,11 @@ interface RadioStatusPillProps {
|
|
|
3
3
|
index: number;
|
|
4
4
|
correct?: boolean;
|
|
5
5
|
multipleSelect: boolean;
|
|
6
|
-
onClick: () => void;
|
|
7
6
|
}
|
|
8
|
-
|
|
7
|
+
/**
|
|
8
|
+
* * A read-only status indicator showing whether a choice is correct or incorrect,
|
|
9
|
+
* labeled with the choice letter (A, B, C...). Status is changed via the
|
|
10
|
+
* adjacent segmented control.
|
|
11
|
+
*/
|
|
12
|
+
export declare function RadioStatusPill({ index, correct, multipleSelect, }: RadioStatusPillProps): React.JSX.Element;
|
|
9
13
|
export {};
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"description": "Perseus editors",
|
|
4
4
|
"author": "Khan Academy",
|
|
5
5
|
"license": "MIT",
|
|
6
|
-
"version": "33.0.
|
|
6
|
+
"version": "33.0.2",
|
|
7
7
|
"publishConfig": {
|
|
8
8
|
"access": "public"
|
|
9
9
|
},
|
|
@@ -36,35 +36,36 @@
|
|
|
36
36
|
"mafs": "^0.19.0",
|
|
37
37
|
"tiny-invariant": "1.3.1",
|
|
38
38
|
"@khanacademy/kas": "2.2.3",
|
|
39
|
-
"@khanacademy/keypad-context": "3.2.
|
|
40
|
-
"@khanacademy/kmath": "2.4.
|
|
41
|
-
"@khanacademy/math-input": "26.4.
|
|
42
|
-
"@khanacademy/perseus": "78.
|
|
43
|
-
"@khanacademy/perseus-core": "28.
|
|
44
|
-
"@khanacademy/perseus-linter": "5.1.
|
|
45
|
-
"@khanacademy/perseus-score": "8.11.
|
|
39
|
+
"@khanacademy/keypad-context": "3.2.64",
|
|
40
|
+
"@khanacademy/kmath": "2.4.22",
|
|
41
|
+
"@khanacademy/math-input": "26.4.36",
|
|
42
|
+
"@khanacademy/perseus": "78.1.0",
|
|
43
|
+
"@khanacademy/perseus-core": "28.1.0",
|
|
44
|
+
"@khanacademy/perseus-linter": "5.1.3",
|
|
45
|
+
"@khanacademy/perseus-score": "8.11.6",
|
|
46
46
|
"@khanacademy/perseus-utils": "2.1.5"
|
|
47
47
|
},
|
|
48
48
|
"devDependencies": {
|
|
49
49
|
"@khanacademy/mathjax-renderer": "3.0.0",
|
|
50
|
-
"@khanacademy/wonder-blocks-accordion": "3.1.
|
|
51
|
-
"@khanacademy/wonder-blocks-
|
|
52
|
-
"@khanacademy/wonder-blocks-
|
|
53
|
-
"@khanacademy/wonder-blocks-
|
|
50
|
+
"@khanacademy/wonder-blocks-accordion": "3.1.63",
|
|
51
|
+
"@khanacademy/wonder-blocks-badge": "1.1.15",
|
|
52
|
+
"@khanacademy/wonder-blocks-banner": "5.1.4",
|
|
53
|
+
"@khanacademy/wonder-blocks-button": "11.7.1",
|
|
54
|
+
"@khanacademy/wonder-blocks-clickable": "8.2.3",
|
|
54
55
|
"@khanacademy/wonder-blocks-core": "12.4.4",
|
|
55
|
-
"@khanacademy/wonder-blocks-dropdown": "10.
|
|
56
|
-
"@khanacademy/wonder-blocks-form": "7.6.
|
|
57
|
-
"@khanacademy/wonder-blocks-icon": "5.3.
|
|
58
|
-
"@khanacademy/wonder-blocks-icon-button": "11.3.
|
|
59
|
-
"@khanacademy/wonder-blocks-labeled-field": "4.1.
|
|
60
|
-
"@khanacademy/wonder-blocks-layout": "3.1.
|
|
61
|
-
"@khanacademy/wonder-blocks-link": "10.3.
|
|
62
|
-
"@khanacademy/wonder-blocks-pill": "3.1.
|
|
63
|
-
"@khanacademy/wonder-blocks-switch": "3.4.
|
|
56
|
+
"@khanacademy/wonder-blocks-dropdown": "10.11.0",
|
|
57
|
+
"@khanacademy/wonder-blocks-form": "7.6.4",
|
|
58
|
+
"@khanacademy/wonder-blocks-icon": "5.3.17",
|
|
59
|
+
"@khanacademy/wonder-blocks-icon-button": "11.3.4",
|
|
60
|
+
"@khanacademy/wonder-blocks-labeled-field": "4.1.3",
|
|
61
|
+
"@khanacademy/wonder-blocks-layout": "3.1.54",
|
|
62
|
+
"@khanacademy/wonder-blocks-link": "10.3.3",
|
|
63
|
+
"@khanacademy/wonder-blocks-pill": "3.1.67",
|
|
64
|
+
"@khanacademy/wonder-blocks-switch": "3.4.3",
|
|
64
65
|
"@khanacademy/wonder-blocks-timing": "7.1.0",
|
|
65
|
-
"@khanacademy/wonder-blocks-tokens": "16.
|
|
66
|
-
"@khanacademy/wonder-blocks-tooltip": "4.1.
|
|
67
|
-
"@khanacademy/wonder-blocks-typography": "4.3.
|
|
66
|
+
"@khanacademy/wonder-blocks-tokens": "16.7.0",
|
|
67
|
+
"@khanacademy/wonder-blocks-tooltip": "4.1.79",
|
|
68
|
+
"@khanacademy/wonder-blocks-typography": "4.3.7",
|
|
68
69
|
"@khanacademy/wonder-stuff-core": "3.0.0",
|
|
69
70
|
"@phosphor-icons/core": "2.0.2",
|
|
70
71
|
"aphrodite": "1.2.5",
|
|
@@ -79,24 +80,25 @@
|
|
|
79
80
|
},
|
|
80
81
|
"peerDependencies": {
|
|
81
82
|
"@khanacademy/mathjax-renderer": "^3.0.0",
|
|
82
|
-
"@khanacademy/wonder-blocks-accordion": "^3.1.
|
|
83
|
-
"@khanacademy/wonder-blocks-
|
|
84
|
-
"@khanacademy/wonder-blocks-
|
|
85
|
-
"@khanacademy/wonder-blocks-
|
|
83
|
+
"@khanacademy/wonder-blocks-accordion": "^3.1.63",
|
|
84
|
+
"@khanacademy/wonder-blocks-badge": "^1.1.15",
|
|
85
|
+
"@khanacademy/wonder-blocks-banner": "^5.1.4",
|
|
86
|
+
"@khanacademy/wonder-blocks-button": "^11.7.1",
|
|
87
|
+
"@khanacademy/wonder-blocks-clickable": "^8.2.3",
|
|
86
88
|
"@khanacademy/wonder-blocks-core": "^12.4.4",
|
|
87
|
-
"@khanacademy/wonder-blocks-dropdown": "^10.
|
|
88
|
-
"@khanacademy/wonder-blocks-form": "^7.6.
|
|
89
|
-
"@khanacademy/wonder-blocks-icon": "^5.3.
|
|
90
|
-
"@khanacademy/wonder-blocks-icon-button": "^11.3.
|
|
91
|
-
"@khanacademy/wonder-blocks-labeled-field": "^4.1.
|
|
92
|
-
"@khanacademy/wonder-blocks-layout": "^3.1.
|
|
93
|
-
"@khanacademy/wonder-blocks-link": "^10.3.
|
|
94
|
-
"@khanacademy/wonder-blocks-pill": "^3.1.
|
|
95
|
-
"@khanacademy/wonder-blocks-switch": "^3.4.
|
|
89
|
+
"@khanacademy/wonder-blocks-dropdown": "^10.11.0",
|
|
90
|
+
"@khanacademy/wonder-blocks-form": "^7.6.4",
|
|
91
|
+
"@khanacademy/wonder-blocks-icon": "^5.3.17",
|
|
92
|
+
"@khanacademy/wonder-blocks-icon-button": "^11.3.4",
|
|
93
|
+
"@khanacademy/wonder-blocks-labeled-field": "^4.1.3",
|
|
94
|
+
"@khanacademy/wonder-blocks-layout": "^3.1.54",
|
|
95
|
+
"@khanacademy/wonder-blocks-link": "^10.3.3",
|
|
96
|
+
"@khanacademy/wonder-blocks-pill": "^3.1.67",
|
|
97
|
+
"@khanacademy/wonder-blocks-switch": "^3.4.3",
|
|
96
98
|
"@khanacademy/wonder-blocks-timing": "^7.1.0",
|
|
97
|
-
"@khanacademy/wonder-blocks-tokens": "^16.
|
|
98
|
-
"@khanacademy/wonder-blocks-tooltip": "^4.1.
|
|
99
|
-
"@khanacademy/wonder-blocks-typography": "^4.3.
|
|
99
|
+
"@khanacademy/wonder-blocks-tokens": "^16.7.0",
|
|
100
|
+
"@khanacademy/wonder-blocks-tooltip": "^4.1.79",
|
|
101
|
+
"@khanacademy/wonder-blocks-typography": "^4.3.7",
|
|
100
102
|
"@khanacademy/wonder-stuff-core": "^3.0.0",
|
|
101
103
|
"@phosphor-icons/core": "^2.0.2",
|
|
102
104
|
"aphrodite": "^1.2.5",
|
|
@@ -109,7 +111,7 @@
|
|
|
109
111
|
},
|
|
110
112
|
"keywords": [],
|
|
111
113
|
"khan": {
|
|
112
|
-
"catalogHash": "
|
|
114
|
+
"catalogHash": "6cc1eef6c5c59c5b"
|
|
113
115
|
},
|
|
114
116
|
"scripts": {}
|
|
115
117
|
}
|