@khanacademy/perseus 68.0.2 → 69.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/dist/es/index.js +43 -46
  2. package/dist/es/index.js.map +1 -1
  3. package/dist/index.js +42 -45
  4. package/dist/index.js.map +1 -1
  5. package/dist/renderer.d.ts +1 -12
  6. package/dist/server-item-renderer.d.ts +0 -6
  7. package/dist/types.d.ts +3 -26
  8. package/dist/widget-ai-utils/categorizer/categorizer-ai-utils.d.ts +1 -1
  9. package/dist/widget-ai-utils/definition/definition-ai-utils.d.ts +1 -1
  10. package/dist/widget-ai-utils/dropdown/dropdown-ai-utils.d.ts +1 -1
  11. package/dist/widget-ai-utils/explanation/explanation-ai-utils.d.ts +1 -1
  12. package/dist/widget-ai-utils/expression/expression-ai-utils.d.ts +1 -1
  13. package/dist/widget-ai-utils/graded-group-set/graded-group-set-ai-utils.d.ts +1 -1
  14. package/dist/widget-ai-utils/grapher/grapher-ai-utils.d.ts +1 -1
  15. package/dist/widget-ai-utils/image/image-ai-utils.d.ts +1 -1
  16. package/dist/widget-ai-utils/input-number/input-number-ai-utils.d.ts +1 -1
  17. package/dist/widget-ai-utils/label-image/label-image-ai-utils.d.ts +1 -1
  18. package/dist/widget-ai-utils/matcher/matcher-ai-utils.d.ts +2 -2
  19. package/dist/widget-ai-utils/matrix/matrix-ai-utils.d.ts +1 -1
  20. package/dist/widget-ai-utils/mock-widget/prompt-utils.d.ts +1 -1
  21. package/dist/widget-ai-utils/number-line/number-line-ai-utils.d.ts +1 -1
  22. package/dist/widget-ai-utils/numeric-input/prompt-utils.d.ts +1 -1
  23. package/dist/widget-ai-utils/orderer/orderer-ai-utils.d.ts +1 -1
  24. package/dist/widget-ai-utils/passage/passage-ai-utils.d.ts +1 -1
  25. package/dist/widget-ai-utils/passage-ref/passage-ref-ai-utils.d.ts +1 -1
  26. package/dist/widget-ai-utils/radio/radio-ai-utils.d.ts +1 -1
  27. package/dist/widget-container.d.ts +1 -4
  28. package/dist/widgets/categorizer/categorizer.d.ts +4 -11
  29. package/dist/widgets/cs-program/cs-program.d.ts +6 -2
  30. package/dist/widgets/definition/definition.d.ts +1 -2
  31. package/dist/widgets/explanation/explanation.d.ts +1 -3
  32. package/dist/widgets/free-response/free-response.d.ts +1 -2
  33. package/dist/widgets/graded-group/graded-group.d.ts +0 -1
  34. package/dist/widgets/group/group.d.ts +1 -2
  35. package/dist/widgets/iframe/iframe.d.ts +6 -5
  36. package/dist/widgets/interaction/interaction.d.ts +1 -2
  37. package/dist/widgets/interactive-graphs/interactive-graph.d.ts +3 -3
  38. package/dist/widgets/matcher/matcher.d.ts +1 -2
  39. package/dist/widgets/matrix/matrix.d.ts +2 -7
  40. package/dist/widgets/orderer/orderer.d.ts +1 -2
  41. package/dist/widgets/passage/passage.d.ts +2 -4
  42. package/dist/widgets/passage-ref/passage-ref.d.ts +1 -6
  43. package/dist/widgets/plotter/plotter.d.ts +1 -1
  44. package/dist/widgets/radio/index.d.ts +0 -1
  45. package/dist/widgets/radio/multiple-choice-widget.new.d.ts +2 -2
  46. package/dist/widgets/radio/radio-component.d.ts +2 -2
  47. package/dist/widgets/radio/radio.ff.d.ts +3 -3
  48. package/dist/widgets/table/table.d.ts +8 -9
  49. package/dist/widgets.d.ts +3 -11
  50. package/package.json +38 -38
@@ -4,7 +4,7 @@ import type { FocusFunction } from "./base-radio";
4
4
  import type { WidgetProps, ChoiceState, Widget } 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
- export type RenderProps = PerseusRadioWidgetOptions & {
7
+ export type RadioProps = PerseusRadioWidgetOptions & {
8
8
  numCorrect: number;
9
9
  hasNoneOfTheAbove?: boolean;
10
10
  multipleSelect?: boolean;
@@ -14,7 +14,7 @@ export type RenderProps = PerseusRadioWidgetOptions & {
14
14
  showSolutions?: ShowSolutions;
15
15
  choiceStates?: ChoiceState[];
16
16
  };
17
- export type Props = WidgetProps<RenderProps, PerseusRadioUserInput, PerseusRadioRubric>;
17
+ export type Props = WidgetProps<RadioProps, PerseusRadioUserInput, PerseusRadioRubric>;
18
18
  type DefaultProps = Required<Pick<Props, "choices" | "multipleSelect" | "countChoices" | "deselectEnabled" | "linterContext" | "showSolutions">>;
19
19
  export type RadioChoiceWithMetadata = PerseusRadioChoice & {
20
20
  originalIndex: number;
@@ -1,10 +1,10 @@
1
1
  import { type PerseusRadioRubric, type PerseusRadioUserInput } from "@khanacademy/perseus-core";
2
2
  import * as React from "react";
3
3
  import RadioOld from "./radio-component";
4
- import type { RenderProps } from "./radio-component";
4
+ import type { RadioProps } from "./radio-component";
5
5
  import type { ChoiceState, WidgetProps } from "../../types";
6
6
  import type { RadioPromptJSON } from "../../widget-ai-utils/radio/radio-ai-utils";
7
- type Props = WidgetProps<RenderProps, PerseusRadioUserInput, PerseusRadioRubric>;
7
+ type Props = WidgetProps<RadioProps, PerseusRadioUserInput, PerseusRadioRubric>;
8
8
  type ChoiceStateWithoutSelected = Omit<ChoiceState, "selected">;
9
9
  type State = {
10
10
  choiceStates: ChoiceStateWithoutSelected[];
@@ -29,8 +29,8 @@ declare class Radio extends RadioOld {
29
29
  * [LEMS-3185] do not trust serializedState
30
30
  */
31
31
  getSerializedState(): {
32
+ hasNoneOfTheAbove: boolean;
32
33
  choices: import("@khanacademy/perseus-core").PerseusRadioChoice[] & import("./radio-component").RadioChoiceWithMetadata[];
33
- hasNoneOfTheAbove?: boolean;
34
34
  countChoices?: boolean;
35
35
  numCorrect: number;
36
36
  multipleSelect?: boolean;
@@ -1,15 +1,13 @@
1
1
  import * as React from "react";
2
2
  import ReactDOM from "react-dom";
3
3
  import { PerseusI18nContext } from "../../components/i18n-context";
4
- import type { ChangeableProps } from "../../mixins/changeable";
5
4
  import type { FocusPath, Widget, WidgetProps } from "../../types";
6
5
  import type { PerseusTableWidgetOptions, PerseusTableUserInput } from "@khanacademy/perseus-core";
7
6
  type EditorProps = {
8
7
  editableHeaders: boolean;
9
8
  Editor: any;
10
9
  };
11
- type RenderProps = Omit<PerseusTableWidgetOptions, "answers">;
12
- type Props = WidgetProps<RenderProps, PerseusTableUserInput> & ChangeableProps & EditorProps;
10
+ type Props = WidgetProps<PerseusTableWidgetOptions, PerseusTableUserInput> & EditorProps;
13
11
  type DefaultProps = {
14
12
  apiOptions: Props["apiOptions"];
15
13
  headers: Props["headers"];
@@ -42,9 +40,9 @@ declare class Table extends React.Component<Props> implements Widget {
42
40
  */
43
41
  getSerializedState(): {
44
42
  answers: PerseusTableUserInput;
45
- columns: number;
46
- rows: number;
47
43
  headers: string[];
44
+ rows: number;
45
+ columns: number;
48
46
  reviewModeRubric?: Empty | null | undefined;
49
47
  trackInteraction: (extraData?: Empty | undefined) => void;
50
48
  widgetId: string;
@@ -54,7 +52,10 @@ declare class Table extends React.Component<Props> implements Widget {
54
52
  problemNum: number | null | undefined;
55
53
  apiOptions: Readonly<Readonly<{
56
54
  isArticle?: boolean;
57
- onFocusChange?: (newFocusPath: FocusPath, oldFocusPath: FocusPath, keypadHeight?: number, focusedElement?: HTMLElement) => unknown;
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;
58
59
  GroupMetadataEditor?: React.ComponentType<any>;
59
60
  showAlignmentOptions?: boolean;
60
61
  readOnly?: boolean;
@@ -106,9 +107,7 @@ declare class Table extends React.Component<Props> implements Widget {
106
107
  findWidgets: (criterion: import("../../types").FilterCriterion) => ReadonlyArray<Widget>;
107
108
  reviewMode: boolean;
108
109
  showSolutions?: import("@khanacademy/perseus-core").ShowSolutions;
109
- onChange: import("../..").ChangeHandler & ((values: {
110
- [key: string]: any;
111
- }, callback?: (() => unknown) | null | undefined, silent?: boolean) => unknown);
110
+ onChange: import("../..").ChangeHandler;
112
111
  handleUserInput: (newUserInput: PerseusTableUserInput, cb?: () => void, silent?: boolean) => void;
113
112
  isLastUsedWidget: boolean;
114
113
  linterContext: import("@khanacademy/perseus-linter").LinterContextProps;
package/dist/widgets.d.ts CHANGED
@@ -1,6 +1,5 @@
1
- import type { PerseusStrings } from "./strings";
2
- import type { Tracking, WidgetExports, WidgetTransform } from "./types";
3
- import type { PerseusWidget, Version } from "@khanacademy/perseus-core";
1
+ import type { Tracking, WidgetExports } from "./types";
2
+ import type { Version } from "@khanacademy/perseus-core";
4
3
  import type * as React from "react";
5
4
  type Editor = any;
6
5
  export declare const registerWidget: (type: string, widget: WidgetExports) => void;
@@ -29,28 +28,21 @@ export declare const replaceDeprecatedEditors: () => void;
29
28
  export declare const getWidget: (type: string) => React.ComponentType<any> | null | undefined;
30
29
  export declare const getWidgetExport: (type: string) => WidgetExports | null;
31
30
  export declare const getEditor: (type: string) => Editor | null;
32
- export declare const getTransform: (type: string) => WidgetTransform | null | undefined;
33
31
  export declare const getVersion: (type: string) => Version | undefined;
34
32
  export declare const getVersionVector: () => {
35
33
  [key: string]: Version;
36
34
  };
37
35
  export declare const getPublicWidgets: () => Record<string, WidgetExports>;
38
36
  export declare const getAllWidgetTypes: () => ReadonlyArray<string>;
39
- export declare const getRendererPropsForWidgetInfo: (widgetInfo: PerseusWidget, strings: PerseusStrings, problemNum?: number) => PerseusWidget;
40
37
  /**
41
38
  * Handling for static mode for widgets that support it.
42
39
  */
43
40
  /**
44
41
  * Returns true iff the widget supports static mode.
45
42
  * A widget implicitly supports static mode if it exports a
46
- * staticTransform function.
43
+ * getCorrectUserInput function.
47
44
  */
48
45
  export declare const supportsStaticMode: (type: string) => boolean | undefined;
49
- /**
50
- * Return the staticTransform function used to convert the editorProps to
51
- * the rendered widget state.
52
- */
53
- export declare const getStaticTransform: (type: string) => WidgetTransform | null | undefined;
54
46
  /**
55
47
  * Returns the tracking option for the widget. The default is "",
56
48
  * which means simply to track interactions once. The other available
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": "68.0.2",
6
+ "version": "69.0.0",
7
7
  "publishConfig": {
8
8
  "access": "public"
9
9
  },
@@ -43,35 +43,35 @@
43
43
  "uuid": "^10.0.0",
44
44
  "@khanacademy/kas": "2.1.0",
45
45
  "@khanacademy/keypad-context": "3.2.4",
46
- "@khanacademy/kmath": "2.2.4",
47
46
  "@khanacademy/math-input": "26.2.4",
48
47
  "@khanacademy/perseus-core": "19.0.2",
49
48
  "@khanacademy/perseus-linter": "4.3.4",
50
49
  "@khanacademy/perseus-score": "7.7.4",
51
50
  "@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
  },
55
55
  "devDependencies": {
56
- "@khanacademy/wonder-blocks-banner": "4.3.3",
57
- "@khanacademy/wonder-blocks-button": "11.0.4",
58
- "@khanacademy/wonder-blocks-clickable": "7.1.24",
56
+ "@khanacademy/wonder-blocks-banner": "4.4.0",
57
+ "@khanacademy/wonder-blocks-button": "11.2.1",
58
+ "@khanacademy/wonder-blocks-clickable": "7.1.25",
59
59
  "@khanacademy/wonder-blocks-core": "12.4.0",
60
60
  "@khanacademy/wonder-blocks-data": "14.1.5",
61
- "@khanacademy/wonder-blocks-dropdown": "10.3.8",
62
- "@khanacademy/wonder-blocks-form": "7.3.6",
63
- "@khanacademy/wonder-blocks-icon-button": "10.4.1",
64
- "@khanacademy/wonder-blocks-icon": "5.2.18",
65
- "@khanacademy/wonder-blocks-labeled-field": "4.0.4",
66
- "@khanacademy/wonder-blocks-layout": "3.1.35",
67
- "@khanacademy/wonder-blocks-link": "9.2.2",
68
- "@khanacademy/wonder-blocks-pill": "3.1.39",
69
- "@khanacademy/wonder-blocks-popover": "6.1.29",
70
- "@khanacademy/wonder-blocks-progress-spinner": "3.1.35",
71
- "@khanacademy/wonder-blocks-switch": "3.3.17",
72
- "@khanacademy/wonder-blocks-tokens": "12.2.1",
73
- "@khanacademy/wonder-blocks-tooltip": "4.1.43",
74
- "@khanacademy/wonder-blocks-typography": "4.2.20",
61
+ "@khanacademy/wonder-blocks-dropdown": "10.3.11",
62
+ "@khanacademy/wonder-blocks-form": "7.3.7",
63
+ "@khanacademy/wonder-blocks-icon-button": "10.5.0",
64
+ "@khanacademy/wonder-blocks-icon": "5.2.19",
65
+ "@khanacademy/wonder-blocks-labeled-field": "4.0.5",
66
+ "@khanacademy/wonder-blocks-layout": "3.1.36",
67
+ "@khanacademy/wonder-blocks-link": "9.2.3",
68
+ "@khanacademy/wonder-blocks-pill": "3.1.40",
69
+ "@khanacademy/wonder-blocks-popover": "6.1.32",
70
+ "@khanacademy/wonder-blocks-progress-spinner": "3.1.36",
71
+ "@khanacademy/wonder-blocks-switch": "3.3.18",
72
+ "@khanacademy/wonder-blocks-tokens": "13.0.0",
73
+ "@khanacademy/wonder-blocks-tooltip": "4.1.46",
74
+ "@khanacademy/wonder-blocks-typography": "4.2.21",
75
75
  "@khanacademy/wonder-stuff-core": "1.5.5",
76
76
  "@phosphor-icons/core": "2.0.2",
77
77
  "@popperjs/core": "2.10.2",
@@ -86,29 +86,29 @@
86
86
  "react-dom": "18.2.0",
87
87
  "react-popper": "^2.2.5",
88
88
  "underscore": "1.4.4",
89
- "perseus-build-settings": "0.9.0",
90
- "raphael": "1.5.4"
89
+ "raphael": "1.5.4",
90
+ "perseus-build-settings": "0.9.0"
91
91
  },
92
92
  "peerDependencies": {
93
- "@khanacademy/wonder-blocks-banner": "^4.3.3",
94
- "@khanacademy/wonder-blocks-button": "^11.0.4",
95
- "@khanacademy/wonder-blocks-clickable": "^7.1.24",
93
+ "@khanacademy/wonder-blocks-banner": "^4.4.0",
94
+ "@khanacademy/wonder-blocks-button": "^11.2.1",
95
+ "@khanacademy/wonder-blocks-clickable": "^7.1.25",
96
96
  "@khanacademy/wonder-blocks-core": "^12.4.0",
97
97
  "@khanacademy/wonder-blocks-data": "^14.1.5",
98
- "@khanacademy/wonder-blocks-dropdown": "^10.3.8",
99
- "@khanacademy/wonder-blocks-form": "^7.3.6",
100
- "@khanacademy/wonder-blocks-icon": "^5.2.18",
101
- "@khanacademy/wonder-blocks-icon-button": "^10.4.1",
102
- "@khanacademy/wonder-blocks-labeled-field": "^4.0.4",
103
- "@khanacademy/wonder-blocks-layout": "^3.1.35",
104
- "@khanacademy/wonder-blocks-link": "^9.2.2",
105
- "@khanacademy/wonder-blocks-pill": "^3.1.39",
106
- "@khanacademy/wonder-blocks-popover": "^6.1.29",
107
- "@khanacademy/wonder-blocks-progress-spinner": "^3.1.35",
108
- "@khanacademy/wonder-blocks-switch": "^3.3.17",
109
- "@khanacademy/wonder-blocks-tokens": "^12.2.1",
110
- "@khanacademy/wonder-blocks-tooltip": "^4.1.43",
111
- "@khanacademy/wonder-blocks-typography": "^4.2.20",
98
+ "@khanacademy/wonder-blocks-dropdown": "^10.3.11",
99
+ "@khanacademy/wonder-blocks-form": "^7.3.7",
100
+ "@khanacademy/wonder-blocks-icon": "^5.2.19",
101
+ "@khanacademy/wonder-blocks-icon-button": "^10.5.0",
102
+ "@khanacademy/wonder-blocks-labeled-field": "^4.0.5",
103
+ "@khanacademy/wonder-blocks-layout": "^3.1.36",
104
+ "@khanacademy/wonder-blocks-link": "^9.2.3",
105
+ "@khanacademy/wonder-blocks-pill": "^3.1.40",
106
+ "@khanacademy/wonder-blocks-popover": "^6.1.32",
107
+ "@khanacademy/wonder-blocks-progress-spinner": "^3.1.36",
108
+ "@khanacademy/wonder-blocks-switch": "^3.3.18",
109
+ "@khanacademy/wonder-blocks-tokens": "^13.0.0",
110
+ "@khanacademy/wonder-blocks-tooltip": "^4.1.46",
111
+ "@khanacademy/wonder-blocks-typography": "^4.2.21",
112
112
  "@khanacademy/wonder-stuff-core": "^1.5.5",
113
113
  "@phosphor-icons/core": "^2.0.2",
114
114
  "@popperjs/core": "^2.10.2",