@khanacademy/perseus 41.1.1 → 41.3.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 (154) hide show
  1. package/dist/all-widgets.d.ts +1 -1
  2. package/dist/article-renderer.d.ts +2 -2
  3. package/dist/basic-widgets.d.ts +1 -1
  4. package/dist/es/index.js +1663 -397
  5. package/dist/es/index.js.map +1 -1
  6. package/dist/extra-widgets.d.ts +1 -1
  7. package/dist/index.d.ts +4 -4
  8. package/dist/index.js +1583 -316
  9. package/dist/index.js.map +1 -1
  10. package/dist/init.d.ts +1 -8
  11. package/dist/perseus-api.d.ts +3 -3
  12. package/dist/perseus-types.d.ts +7 -2
  13. package/dist/prompt-types.d.ts +33 -0
  14. package/dist/renderer.d.ts +8 -2
  15. package/dist/server-item-renderer.d.ts +6 -4
  16. package/dist/types.d.ts +4 -2
  17. package/dist/util/parse-perseus-json/error-tracking-parse-context.d.ts +9 -0
  18. package/dist/util/parse-perseus-json/general-purpose-parsers/any.d.ts +2 -0
  19. package/dist/util/parse-perseus-json/general-purpose-parsers/array.d.ts +2 -0
  20. package/dist/util/parse-perseus-json/general-purpose-parsers/array.typetest.d.ts +1 -0
  21. package/dist/util/parse-perseus-json/general-purpose-parsers/boolean.d.ts +2 -0
  22. package/dist/util/parse-perseus-json/general-purpose-parsers/compose-parsers.d.ts +2 -0
  23. package/dist/util/parse-perseus-json/general-purpose-parsers/constant.d.ts +4 -0
  24. package/dist/util/parse-perseus-json/general-purpose-parsers/defaulted.d.ts +2 -0
  25. package/dist/util/parse-perseus-json/general-purpose-parsers/enumeration.d.ts +2 -0
  26. package/dist/util/parse-perseus-json/general-purpose-parsers/enumeration.typetest.d.ts +1 -0
  27. package/dist/util/parse-perseus-json/general-purpose-parsers/index.d.ts +15 -0
  28. package/dist/util/parse-perseus-json/general-purpose-parsers/is-object.d.ts +1 -0
  29. package/dist/util/parse-perseus-json/general-purpose-parsers/nullable.d.ts +2 -0
  30. package/dist/util/parse-perseus-json/general-purpose-parsers/number.d.ts +2 -0
  31. package/dist/util/parse-perseus-json/general-purpose-parsers/object.d.ts +6 -0
  32. package/dist/util/parse-perseus-json/general-purpose-parsers/optional.d.ts +2 -0
  33. package/dist/util/parse-perseus-json/general-purpose-parsers/pair.d.ts +2 -0
  34. package/dist/util/parse-perseus-json/general-purpose-parsers/record.d.ts +2 -0
  35. package/dist/util/parse-perseus-json/general-purpose-parsers/string.d.ts +2 -0
  36. package/dist/util/parse-perseus-json/general-purpose-parsers/test-helpers.d.ts +8 -0
  37. package/dist/util/parse-perseus-json/general-purpose-parsers/trio.d.ts +2 -0
  38. package/dist/util/parse-perseus-json/general-purpose-parsers/union.d.ts +7 -0
  39. package/dist/util/parse-perseus-json/general-purpose-parsers/union.typetest.d.ts +1 -0
  40. package/dist/util/{parse-perseus-json.d.ts → parse-perseus-json/index.d.ts} +7 -1
  41. package/dist/util/parse-perseus-json/object-path.d.ts +2 -0
  42. package/dist/util/parse-perseus-json/parse-failure-detail.d.ts +2 -0
  43. package/dist/util/parse-perseus-json/parse.d.ts +3 -0
  44. package/dist/util/parse-perseus-json/parser-types.d.ts +30 -0
  45. package/dist/util/parse-perseus-json/perseus-parsers/categorizer-widget.d.ts +3 -0
  46. package/dist/util/parse-perseus-json/perseus-parsers/cs-program-widget.d.ts +3 -0
  47. package/dist/util/parse-perseus-json/perseus-parsers/definition-widget.d.ts +3 -0
  48. package/dist/util/parse-perseus-json/perseus-parsers/dropdown-widget.d.ts +3 -0
  49. package/dist/util/parse-perseus-json/perseus-parsers/explanation-widget.d.ts +3 -0
  50. package/dist/util/parse-perseus-json/perseus-parsers/expression-widget.d.ts +3 -0
  51. package/dist/util/parse-perseus-json/perseus-parsers/hint.d.ts +3 -0
  52. package/dist/util/parse-perseus-json/perseus-parsers/interactive-graph-widget.d.ts +3 -0
  53. package/dist/util/parse-perseus-json/perseus-parsers/perseus-image-background.d.ts +3 -0
  54. package/dist/util/parse-perseus-json/perseus-parsers/perseus-item.d.ts +3 -0
  55. package/dist/util/parse-perseus-json/perseus-parsers/perseus-renderer.d.ts +3 -0
  56. package/dist/util/parse-perseus-json/perseus-parsers/widget.d.ts +3 -0
  57. package/dist/util/parse-perseus-json/perseus-parsers/widgets-map.d.ts +3 -0
  58. package/dist/util/parse-perseus-json/result.d.ts +16 -0
  59. package/dist/validation.types.d.ts +0 -3
  60. package/dist/widget-ai-utils/categorizer/prompt-utils.d.ts +14 -0
  61. package/dist/widget-ai-utils/cs-program/prompt-utils.d.ts +2 -0
  62. package/dist/widget-ai-utils/definition/prompt-utils.d.ts +8 -0
  63. package/dist/widget-ai-utils/dropdown/prompt-utils.d.ts +13 -0
  64. package/dist/widget-ai-utils/explanation/prompt-utils.d.ts +8 -0
  65. package/dist/widget-ai-utils/expression/prompt-utils.d.ts +11 -0
  66. package/dist/widget-ai-utils/graded-group/prompt-utils.d.ts +7 -0
  67. package/dist/widget-ai-utils/graded-group-set/prompt-utils.d.ts +11 -0
  68. package/dist/widget-ai-utils/grapher/prompt-utils.d.ts +18 -0
  69. package/dist/widget-ai-utils/group/prompt-utils.d.ts +5 -0
  70. package/dist/widget-ai-utils/iframe/prompt-utils.d.ts +2 -0
  71. package/dist/widget-ai-utils/image/prompt-utils.d.ts +12 -0
  72. package/dist/widget-ai-utils/input-number/prompt-utils.d.ts +14 -0
  73. package/dist/widget-ai-utils/interaction/prompt-utils.d.ts +2 -0
  74. package/dist/widget-ai-utils/interactive-graph/prompt-utils.d.ts +94 -0
  75. package/dist/widget-ai-utils/label-image/prompt-utils.d.ts +24 -0
  76. package/dist/widget-ai-utils/matcher/prompt-utils.d.ts +17 -0
  77. package/dist/widget-ai-utils/matrix/prompt-utils.d.ts +14 -0
  78. package/dist/widget-ai-utils/measurer/prompt-utils.d.ts +2 -0
  79. package/dist/widget-ai-utils/number-line/prompt-utils.d.ts +16 -0
  80. package/dist/widget-ai-utils/numeric-input/prompt-utils.d.ts +11 -0
  81. package/dist/widget-ai-utils/orderer/prompt-utils.d.ts +13 -0
  82. package/dist/widget-ai-utils/passage/prompt-utils.d.ts +11 -0
  83. package/dist/widget-ai-utils/passage-ref/prompt-utils.d.ts +11 -0
  84. package/dist/widget-ai-utils/phet-simulation/prompt-utils.d.ts +2 -0
  85. package/dist/widget-ai-utils/plotter/prompt-utils.d.ts +2 -0
  86. package/dist/widget-ai-utils/python-program/prompt-utils.d.ts +2 -0
  87. package/dist/widget-ai-utils/radio/prompt-utils.d.ts +15 -0
  88. package/dist/widget-ai-utils/sorter/prompt-utils.d.ts +9 -0
  89. package/dist/widget-ai-utils/unsupported-widget.d.ts +11 -0
  90. package/dist/widget-ai-utils/video/prompt-utils.d.ts +2 -0
  91. package/dist/widgets/__shared__/{noop-validator.d.ts → score-noop.d.ts} +4 -4
  92. package/dist/widgets/categorizer/categorizer.d.ts +10 -19
  93. package/dist/widgets/categorizer/{categorizer-validator.d.ts → score-categorizer.d.ts} +2 -2
  94. package/dist/widgets/cs-program/cs-program.d.ts +8 -19
  95. package/dist/widgets/cs-program/{cs-program-validator.d.ts → score-cs-program.d.ts} +2 -1
  96. package/dist/widgets/definition/definition.d.ts +8 -19
  97. package/dist/widgets/deprecated-standin/deprecated-standin.d.ts +4 -19
  98. package/dist/widgets/dropdown/dropdown.d.ts +10 -19
  99. package/dist/widgets/dropdown/score-dropdown.d.ts +4 -0
  100. package/dist/widgets/explanation/explanation.d.ts +9 -19
  101. package/dist/widgets/expression/expression.d.ts +26 -290
  102. package/dist/widgets/expression/{expression-validator.d.ts → score-expression.d.ts} +2 -2
  103. package/dist/widgets/graded-group/graded-group.d.ts +13 -21
  104. package/dist/widgets/graded-group-set/graded-group-set.d.ts +9 -20
  105. package/dist/widgets/grapher/grapher.d.ts +9 -19
  106. package/dist/widgets/grapher/score-grapher.d.ts +4 -0
  107. package/dist/widgets/group/group.d.ts +7 -19
  108. package/dist/widgets/iframe/iframe.d.ts +7 -19
  109. package/dist/widgets/iframe/{iframe-validator.d.ts → score-iframe.d.ts} +1 -1
  110. package/dist/widgets/image/image.d.ts +9 -19
  111. package/dist/widgets/input-number/input-number.d.ts +11 -19
  112. package/dist/widgets/input-number/{input-number-validator.d.ts → score-input-number.d.ts} +2 -2
  113. package/dist/widgets/interaction/interaction.d.ts +7 -19
  114. package/dist/widgets/interactive-graph.d.ts +8 -19
  115. package/dist/widgets/interactive-graphs/score-interactive-graph.d.ts +4 -0
  116. package/dist/widgets/interactive-graphs/utils.d.ts +6 -0
  117. package/dist/widgets/label-image/label-image.d.ts +10 -86
  118. package/dist/widgets/label-image/{label-image-validator.d.ts → score-label-image.d.ts} +2 -2
  119. package/dist/widgets/matcher/matcher.d.ts +7 -19
  120. package/dist/widgets/matcher/score-matcher.d.ts +4 -0
  121. package/dist/widgets/matrix/matrix.d.ts +10 -19
  122. package/dist/widgets/matrix/{matrix-validator.d.ts → score-matrix.d.ts} +2 -2
  123. package/dist/widgets/measurer/measurer.d.ts +13 -19
  124. package/dist/widgets/molecule/molecule.d.ts +4 -19
  125. package/dist/widgets/number-line/number-line.d.ts +8 -19
  126. package/dist/widgets/number-line/score-number-line.d.ts +4 -0
  127. package/dist/widgets/numeric-input/numeric-input.d.ts +22 -19
  128. package/dist/widgets/numeric-input/{numeric-input-validator.d.ts → score-numeric-input.d.ts} +2 -2
  129. package/dist/widgets/orderer/orderer.d.ts +8 -19
  130. package/dist/widgets/orderer/{orderer-validator.d.ts → score-orderer.d.ts} +1 -1
  131. package/dist/widgets/passage/passage.d.ts +8 -19
  132. package/dist/widgets/passage-ref/passage-ref.d.ts +12 -19
  133. package/dist/widgets/passage-ref-target/passage-ref-target.d.ts +11 -19
  134. package/dist/widgets/phet-simulation/phet-simulation.d.ts +5 -19
  135. package/dist/widgets/plotter/plotter.d.ts +8 -19
  136. package/dist/widgets/plotter/score-plotter.d.ts +4 -0
  137. package/dist/widgets/python-program/python-program.d.ts +4 -19
  138. package/dist/widgets/radio/radio-component.d.ts +3 -1
  139. package/dist/widgets/radio/radio.d.ts +18 -19
  140. package/dist/widgets/radio/{radio-validator.d.ts → score-radio.d.ts} +2 -2
  141. package/dist/widgets/sorter/score-sorter.d.ts +4 -0
  142. package/dist/widgets/sorter/sorter.d.ts +7 -19
  143. package/dist/widgets/table/{table-validator.d.ts → score-table.d.ts} +2 -2
  144. package/dist/widgets/table/table.d.ts +8 -19
  145. package/dist/widgets/video/video.d.ts +7 -19
  146. package/dist/widgets.d.ts +2 -2
  147. package/package.json +4 -4
  148. package/dist/widgets/dropdown/dropdown-validator.d.ts +0 -4
  149. package/dist/widgets/grapher/grapher-validator.d.ts +0 -4
  150. package/dist/widgets/interactive-graphs/interactive-graph-validator.d.ts +0 -4
  151. package/dist/widgets/matcher/matcher-validator.d.ts +0 -4
  152. package/dist/widgets/number-line/number-line-validator.d.ts +0 -4
  153. package/dist/widgets/plotter/plotter-validator.d.ts +0 -4
  154. package/dist/widgets/sorter/sorter-validator.d.ts +0 -4
@@ -1,8 +1,10 @@
1
1
  import * as React from "react";
2
2
  import { PerseusI18nContext } from "../../components/i18n-context";
3
+ import scoreNumberLine from "./score-number-line";
3
4
  import type { ChangeableProps } from "../../mixins/changeable";
4
5
  import type { APIOptions, FocusPath, Widget } from "../../types";
5
6
  import type { PerseusNumberLineUserInput } from "../../validation.types";
7
+ import type { NumberLinePromptJSON } from "../../widget-ai-utils/number-line/prompt-utils";
6
8
  export type Relationship = "lt" | "gt" | "le" | "ge";
7
9
  type Props = ChangeableProps & {
8
10
  range: [number, number];
@@ -71,28 +73,15 @@ declare class NumberLine extends React.Component<Props, State> implements Widget
71
73
  _renderInequality: (arg1: any) => React.ReactElement;
72
74
  _setupGraphie: (arg1: any, arg2: any) => void;
73
75
  getUserInput(): PerseusNumberLineUserInput;
76
+ getPromptJSON(): NumberLinePromptJSON;
74
77
  render(): React.ReactNode;
75
78
  }
76
- declare const _default: Readonly<{
79
+ declare const _default: {
77
80
  name: string;
78
81
  displayName: string;
79
- getWidget?: (() => typeof NumberLine) | undefined;
80
82
  widget: typeof NumberLine;
81
- accessible?: boolean | ((props: any) => boolean) | undefined;
82
- hidden?: boolean | undefined;
83
- version?: import("../../types").Version | undefined;
84
- supportedAlignments?: readonly import("../../types").Alignment[] | undefined;
85
- defaultAlignment?: import("../../types").Alignment | undefined;
86
- getDefaultAlignment?: (() => import("../../types").Alignment) | undefined;
87
- isLintable?: boolean | undefined;
88
- tracking?: import("../../types").Tracking | undefined;
89
- traverseChildWidgets?: any;
90
- transform?: import("../../types").WidgetTransform | undefined;
91
- staticTransform?: import("../../types").WidgetTransform | undefined;
92
- validator?: import("../../types").WidgetValidatorFunction | undefined;
93
- getOneCorrectAnswerFromRubric?: ((rubric: import("../../validation.types").Rubric) => string | null | undefined) | undefined;
94
- propUpgrades?: {
95
- [key: string]: (arg1: any) => any;
96
- } | undefined;
97
- }>;
83
+ transform: (arg1: any) => any;
84
+ staticTransform: (arg1: any) => any;
85
+ scorer: typeof scoreNumberLine;
86
+ };
98
87
  export default _default;
@@ -0,0 +1,4 @@
1
+ import type { PerseusScore } from "../../types";
2
+ import type { PerseusNumberLineRubric, PerseusNumberLineUserInput } from "../../validation.types";
3
+ declare function scoreNumberLine(state: PerseusNumberLineUserInput, rubric: PerseusNumberLineRubric): PerseusScore;
4
+ export default scoreNumberLine;
@@ -2,10 +2,12 @@ import * as React from "react";
2
2
  import { PerseusI18nContext } from "../../components/i18n-context";
3
3
  import InputWithExamples from "../../components/input-with-examples";
4
4
  import SimpleKeypadInput from "../../components/simple-keypad-input";
5
+ import scoreNumericInput from "./score-numeric-input";
5
6
  import type { PerseusNumericInputWidgetOptions, PerseusNumericInputAnswerForm } from "../../perseus-types";
6
7
  import type { PerseusStrings } from "../../strings";
7
8
  import type { FocusPath, Widget, WidgetProps } from "../../types";
8
9
  import type { PerseusNumericInputRubric, PerseusNumericInputUserInput } from "../../validation.types";
10
+ import type { NumericInputPromptJSON } from "../../widget-ai-utils/numeric-input/prompt-utils";
9
11
  type ExternalProps = WidgetProps<PerseusNumericInputWidgetOptions, PerseusNumericInputRubric>;
10
12
  type Props = ExternalProps & {
11
13
  size: NonNullable<ExternalProps["size"]>;
@@ -48,32 +50,33 @@ export declare class NumericInput extends React.Component<Props, State> implemen
48
50
  getInputPaths: () => ReadonlyArray<ReadonlyArray<string>>;
49
51
  setInputValue: (arg1: FocusPath, arg2: string, arg3?: () => unknown | null | undefined) => void;
50
52
  getUserInput(): PerseusNumericInputUserInput;
53
+ getPromptJSON(): NumericInputPromptJSON;
51
54
  handleChange: (arg1: string, arg2?: () => unknown | null | undefined) => void;
52
55
  _handleFocus: () => void;
53
56
  _handleBlur: () => void;
54
57
  render(): React.ReactNode;
55
58
  }
56
59
  export declare const unionAnswerForms: (arg1: ReadonlyArray<ReadonlyArray<PerseusNumericInputAnswerForm>>) => ReadonlyArray<PerseusNumericInputAnswerForm>;
57
- declare const _default: Readonly<{
60
+ type RenderProps = {
61
+ answerForms: ReadonlyArray<{
62
+ simplify: "required" | "correct" | "enforced" | null | undefined;
63
+ name: "integer" | "decimal" | "proper" | "improper" | "mixed" | "pi";
64
+ }>;
65
+ labelText: string;
66
+ size: "normal" | "small";
67
+ coefficient: boolean;
68
+ rightAlign?: boolean;
69
+ static: boolean;
70
+ };
71
+ declare const _default: {
58
72
  name: string;
59
73
  displayName: string;
60
- getWidget?: (() => typeof NumericInput) | undefined;
74
+ defaultAlignment: "inline-block";
75
+ accessible: true;
61
76
  widget: typeof NumericInput;
62
- accessible?: boolean | ((props: any) => boolean) | undefined;
63
- hidden?: boolean | undefined;
64
- version?: import("../../types").Version | undefined;
65
- supportedAlignments?: readonly import("../../types").Alignment[] | undefined;
66
- defaultAlignment?: import("../../types").Alignment | undefined;
67
- getDefaultAlignment?: (() => import("../../types").Alignment) | undefined;
68
- isLintable?: boolean | undefined;
69
- tracking?: import("../../types").Tracking | undefined;
70
- traverseChildWidgets?: any;
71
- transform?: import("../../types").WidgetTransform | undefined;
72
- staticTransform?: import("../../types").WidgetTransform | undefined;
73
- validator?: import("../../types").WidgetValidatorFunction | undefined;
74
- getOneCorrectAnswerFromRubric?: ((rubric: import("../../validation.types").Rubric) => string | null | undefined) | undefined;
75
- propUpgrades?: {
76
- [key: string]: (arg1: any) => any;
77
- } | undefined;
78
- }>;
77
+ transform: (widgetOptions: PerseusNumericInputWidgetOptions) => RenderProps;
78
+ isLintable: true;
79
+ scorer: typeof scoreNumericInput;
80
+ getOneCorrectAnswerFromRubric(rubric: PerseusNumericInputRubric): string | null | undefined;
81
+ };
79
82
  export default _default;
@@ -2,5 +2,5 @@ import type { PerseusStrings } from "../../strings";
2
2
  import type { PerseusScore } from "../../types";
3
3
  import type { PerseusNumericInputRubric, PerseusNumericInputUserInput } from "../../validation.types";
4
4
  export declare function maybeParsePercentInput(inputValue: string | number, normalizedAnswerExpected: boolean): string | number;
5
- declare function numericInputValidator(userInput: PerseusNumericInputUserInput, rubric: PerseusNumericInputRubric, strings: PerseusStrings): PerseusScore;
6
- export default numericInputValidator;
5
+ declare function scoreNumericInput(userInput: PerseusNumericInputUserInput, rubric: PerseusNumericInputRubric, strings: PerseusStrings): PerseusScore;
6
+ export default scoreNumericInput;
@@ -1,7 +1,9 @@
1
1
  import * as React from "react";
2
+ import { scoreOrderer } from "./score-orderer";
2
3
  import type { PerseusOrdererWidgetOptions } from "../../perseus-types";
3
4
  import type { WidgetProps, Widget } from "../../types";
4
5
  import type { PerseusOrdererRubric, PerseusOrdererUserInput } from "../../validation.types";
6
+ import type { OrdererPromptJSON } from "../../widget-ai-utils/orderer/prompt-utils";
5
7
  type Position = {
6
8
  left: number;
7
9
  top: number;
@@ -44,28 +46,15 @@ declare class Orderer extends React.Component<OrdererProps, OrdererState> implem
44
46
  isCardInBank: (arg1: any) => boolean;
45
47
  setListValues: (arg1: ReadonlyArray<string>) => void;
46
48
  getUserInput(): PerseusOrdererUserInput;
49
+ getPromptJSON(): OrdererPromptJSON;
47
50
  render(): React.ReactNode;
48
51
  }
49
- declare const _default: Readonly<{
52
+ declare const _default: {
50
53
  name: string;
51
54
  displayName: string;
52
- getWidget?: (() => typeof Orderer) | undefined;
55
+ hidden: true;
53
56
  widget: typeof Orderer;
54
- accessible?: boolean | ((props: any) => boolean) | undefined;
55
- hidden?: boolean | undefined;
56
- version?: import("../../types").Version | undefined;
57
- supportedAlignments?: readonly import("../../types").Alignment[] | undefined;
58
- defaultAlignment?: import("../../types").Alignment | undefined;
59
- getDefaultAlignment?: (() => import("../../types").Alignment) | undefined;
60
- isLintable?: boolean | undefined;
61
- tracking?: import("../../types").Tracking | undefined;
62
- traverseChildWidgets?: any;
63
- transform?: import("../../types").WidgetTransform | undefined;
64
- staticTransform?: import("../../types").WidgetTransform | undefined;
65
- validator?: import("../../types").WidgetValidatorFunction | undefined;
66
- getOneCorrectAnswerFromRubric?: ((rubric: import("../../validation.types").Rubric) => string | null | undefined) | undefined;
67
- propUpgrades?: {
68
- [key: string]: (arg1: any) => any;
69
- } | undefined;
70
- }>;
57
+ isLintable: true;
58
+ scorer: typeof scoreOrderer;
59
+ };
71
60
  export default _default;
@@ -1,3 +1,3 @@
1
1
  import type { PerseusScore } from "../../types";
2
2
  import type { PerseusOrdererRubric, PerseusOrdererUserInput } from "../../validation.types";
3
- export declare function ordererValidator(userInput: PerseusOrdererUserInput, rubric: PerseusOrdererRubric): PerseusScore;
3
+ export declare function scoreOrderer(userInput: PerseusOrdererUserInput, rubric: PerseusOrdererRubric): PerseusScore;
@@ -5,6 +5,7 @@ import type { SerializedHighlightSet } from "../../components/highlighting/types
5
5
  import type { ChangeableProps } from "../../mixins/changeable";
6
6
  import type { PerseusPassageWidgetOptions, PerseusWidget } from "../../perseus-types";
7
7
  import type { WidgetProps, Widget } from "../../types";
8
+ import type { PassagePromptJSON } from "../../widget-ai-utils/passage/prompt-utils";
8
9
  import type { SingleASTNode } from "@khanacademy/simple-markdown";
9
10
  export declare class LineHeightMeasurer extends React.Component<Record<any, any>> {
10
11
  _line: HTMLDivElement | null | undefined;
@@ -87,6 +88,7 @@ export declare class Passage extends React.Component<PassageProps, PassageState>
87
88
  _convertPosToLineNumber(absoluteVPos: number): number;
88
89
  _getRefContent(referenceNumber: number): string | null | undefined;
89
90
  getReference(referenceNumber: number): Reference | null | undefined;
91
+ getPromptJSON(): PassagePromptJSON;
90
92
  /**
91
93
  * Rendering
92
94
  *
@@ -99,26 +101,13 @@ export declare class Passage extends React.Component<PassageProps, PassageState>
99
101
  _renderFootnotes(): React.ReactNode;
100
102
  render(): React.ReactNode;
101
103
  }
102
- declare const _default: Readonly<{
104
+ declare const _default: {
103
105
  name: string;
104
106
  displayName: string;
105
- getWidget?: (() => typeof Passage) | undefined;
107
+ hidden: true;
106
108
  widget: typeof Passage;
107
- accessible?: boolean | ((props: any) => boolean) | undefined;
108
- hidden?: boolean | undefined;
109
- version?: import("../../types").Version | undefined;
110
- supportedAlignments?: readonly import("../../types").Alignment[] | undefined;
111
- defaultAlignment?: import("../../types").Alignment | undefined;
112
- getDefaultAlignment?: (() => import("../../types").Alignment) | undefined;
113
- isLintable?: boolean | undefined;
114
- tracking?: import("../../types").Tracking | undefined;
115
- traverseChildWidgets?: any;
116
- transform?: import("../../types").WidgetTransform | undefined;
117
- staticTransform?: import("../../types").WidgetTransform | undefined;
118
- validator?: import("../../types").WidgetValidatorFunction | undefined;
119
- getOneCorrectAnswerFromRubric?: ((rubric: import("../../validation.types").Rubric) => string | null | undefined) | undefined;
120
- propUpgrades?: {
121
- [key: string]: (arg1: any) => any;
122
- } | undefined;
123
- }>;
109
+ transform: (editorProps: any) => RenderProps;
110
+ isLintable: true;
111
+ scorer: () => import("../../types").PerseusScore;
112
+ };
124
113
  export default _default;
@@ -2,6 +2,7 @@ import * as React from "react";
2
2
  import { PerseusI18nContext } from "../../components/i18n-context";
3
3
  import type { PerseusPassageRefWidgetOptions } from "../../perseus-types";
4
4
  import type { ChangeFn, Widget, WidgetProps } from "../../types";
5
+ import type { PassageRefPromptJSON } from "../../widget-ai-utils/passage-ref/prompt-utils";
5
6
  type RenderProps = {
6
7
  passageNumber: PerseusPassageRefWidgetOptions["passageNumber"];
7
8
  referenceNumber: PerseusPassageRefWidgetOptions["referenceNumber"];
@@ -34,30 +35,22 @@ declare class PassageRef extends React.Component<Props, State> implements Widget
34
35
  componentDidUpdate(): void;
35
36
  componentWillUnmount(): void;
36
37
  change: ChangeFn;
38
+ getPromptJSON(): PassageRefPromptJSON;
37
39
  _deferredUpdateRange: () => void;
38
40
  _updateRange: () => void;
39
41
  render(): React.ReactNode;
40
42
  }
41
- declare const _default: Readonly<{
43
+ declare const _default: {
42
44
  name: string;
43
45
  displayName: string;
44
- getWidget?: (() => typeof PassageRef) | undefined;
46
+ hidden: true;
47
+ defaultAlignment: "inline";
45
48
  widget: typeof PassageRef;
46
- accessible?: boolean | ((props: any) => boolean) | undefined;
47
- hidden?: boolean | undefined;
48
- version?: import("../../types").Version | undefined;
49
- supportedAlignments?: readonly import("../../types").Alignment[] | undefined;
50
- defaultAlignment?: import("../../types").Alignment | undefined;
51
- getDefaultAlignment?: (() => import("../../types").Alignment) | undefined;
52
- isLintable?: boolean | undefined;
53
- tracking?: import("../../types").Tracking | undefined;
54
- traverseChildWidgets?: any;
55
- transform?: import("../../types").WidgetTransform | undefined;
56
- staticTransform?: import("../../types").WidgetTransform | undefined;
57
- validator?: import("../../types").WidgetValidatorFunction | undefined;
58
- getOneCorrectAnswerFromRubric?: ((rubric: import("../../validation.types").Rubric) => string | null | undefined) | undefined;
59
- propUpgrades?: {
60
- [key: string]: (arg1: any) => any;
61
- } | undefined;
62
- }>;
49
+ transform: (widgetOptions: PerseusPassageRefWidgetOptions) => RenderProps;
50
+ version: {
51
+ major: number;
52
+ minor: number;
53
+ };
54
+ scorer: () => import("../../types").PerseusScore;
55
+ };
63
56
  export default _default;
@@ -24,26 +24,18 @@ declare class PassageRefTarget extends React.Component<Props> implements Widget
24
24
  change: (arg1: any, arg2: any, arg3: any) => any;
25
25
  render(): React.ReactNode;
26
26
  }
27
- declare const _default: Readonly<{
27
+ declare const _default: {
28
28
  name: string;
29
29
  displayName: string;
30
- getWidget?: (() => typeof PassageRefTarget) | undefined;
30
+ defaultAlignment: "inline";
31
31
  widget: typeof PassageRefTarget;
32
- accessible?: boolean | ((props: any) => boolean) | undefined;
33
- hidden?: boolean | undefined;
34
- version?: import("../../types").Version | undefined;
35
- supportedAlignments?: readonly import("../../types").Alignment[] | undefined;
36
- defaultAlignment?: import("../../types").Alignment | undefined;
37
- getDefaultAlignment?: (() => import("../../types").Alignment) | undefined;
38
- isLintable?: boolean | undefined;
39
- tracking?: import("../../types").Tracking | undefined;
40
- traverseChildWidgets?: any;
41
- transform?: import("../../types").WidgetTransform | undefined;
42
- staticTransform?: import("../../types").WidgetTransform | undefined;
43
- validator?: import("../../types").WidgetValidatorFunction | undefined;
44
- getOneCorrectAnswerFromRubric?: ((rubric: import("../../validation.types").Rubric) => string | null | undefined) | undefined;
45
- propUpgrades?: {
46
- [key: string]: (arg1: any) => any;
47
- } | undefined;
48
- }>;
32
+ hidden: true;
33
+ transform: (editorProps: any) => any;
34
+ version: {
35
+ major: number;
36
+ minor: number;
37
+ };
38
+ isLintable: true;
39
+ scorer: () => import("../../types").PerseusScore;
40
+ };
49
41
  export default _default;
@@ -6,6 +6,7 @@ import * as React from "react";
6
6
  import { PerseusI18nContext } from "../../components/i18n-context";
7
7
  import type { PerseusPhetSimulationWidgetOptions } from "../../perseus-types";
8
8
  import type { WidgetProps, Widget } from "../../types";
9
+ import type { UnsupportedWidgetPromptJSON } from "../../widget-ai-utils/unsupported-widget";
9
10
  type RenderProps = PerseusPhetSimulationWidgetOptions;
10
11
  type Props = WidgetProps<RenderProps, PerseusPhetSimulationWidgetOptions>;
11
12
  type State = {
@@ -29,32 +30,17 @@ export declare class PhetSimulation extends React.Component<Props, State> implem
29
30
  componentDidMount(): Promise<void>;
30
31
  componentDidUpdate(prevProps: any): Promise<void>;
31
32
  getPhetCompatibleLocale: (arg1: string) => string;
33
+ getPromptJSON(): UnsupportedWidgetPromptJSON;
32
34
  displayLoadFailure: () => void;
33
35
  updateSimState(urlString: string): Promise<void>;
34
36
  showLocaleWarning(url: URL): Promise<boolean>;
35
37
  render(): React.ReactNode;
36
38
  }
37
39
  export declare const makeSafeUrl: (urlString: string, locale: string) => URL | null;
38
- declare const _default: Readonly<{
40
+ declare const _default: {
39
41
  name: string;
40
42
  displayName: string;
41
- getWidget?: (() => typeof PhetSimulation) | undefined;
42
43
  widget: typeof PhetSimulation;
43
- accessible?: boolean | ((props: any) => boolean) | undefined;
44
- hidden?: boolean | undefined;
45
- version?: import("../../types").Version | undefined;
46
- supportedAlignments?: readonly import("../../types").Alignment[] | undefined;
47
- defaultAlignment?: import("../../types").Alignment | undefined;
48
- getDefaultAlignment?: (() => import("../../types").Alignment) | undefined;
49
- isLintable?: boolean | undefined;
50
- tracking?: import("../../types").Tracking | undefined;
51
- traverseChildWidgets?: any;
52
- transform?: import("../../types").WidgetTransform | undefined;
53
- staticTransform?: import("../../types").WidgetTransform | undefined;
54
- validator?: import("../../types").WidgetValidatorFunction | undefined;
55
- getOneCorrectAnswerFromRubric?: ((rubric: import("../../validation.types").Rubric) => string | null | undefined) | undefined;
56
- propUpgrades?: {
57
- [key: string]: (arg1: any) => any;
58
- } | undefined;
59
- }>;
44
+ isLintable: true;
45
+ };
60
46
  export default _default;
@@ -1,8 +1,10 @@
1
1
  import * as React from "react";
2
2
  import { PerseusI18nContext } from "../../components/i18n-context";
3
+ import scorePlotter from "./score-plotter";
3
4
  import type { PerseusPlotterWidgetOptions } from "../../perseus-types";
4
5
  import type { Widget, WidgetProps } from "../../types";
5
6
  import type { PerseusPlotterRubric, PerseusPlotterUserInput } from "../../validation.types";
7
+ import type { UnsupportedWidgetPromptJSON } from "../../widget-ai-utils/unsupported-widget";
6
8
  type RenderProps = PerseusPlotterWidgetOptions;
7
9
  type Props = WidgetProps<RenderProps, PerseusPlotterRubric> & {
8
10
  labelInterval: NonNullable<PerseusPlotterWidgetOptions["labelInterval"]>;
@@ -68,28 +70,15 @@ export declare class Plotter extends React.Component<Props, State> implements Wi
68
70
  changeAndTrack: (arg1: any) => void;
69
71
  drawPicHeights: (arg1: any, arg2: any) => void;
70
72
  getUserInput(): PerseusPlotterUserInput;
73
+ getPromptJSON(): UnsupportedWidgetPromptJSON;
71
74
  render(): React.ReactNode;
72
75
  }
73
- declare const _default: Readonly<{
76
+ declare const _default: {
74
77
  name: string;
75
78
  displayName: string;
76
- getWidget?: (() => typeof Plotter) | undefined;
79
+ hidden: true;
77
80
  widget: typeof Plotter;
78
- accessible?: boolean | ((props: any) => boolean) | undefined;
79
- hidden?: boolean | undefined;
80
- version?: import("../../types").Version | undefined;
81
- supportedAlignments?: readonly import("../../types").Alignment[] | undefined;
82
- defaultAlignment?: import("../../types").Alignment | undefined;
83
- getDefaultAlignment?: (() => import("../../types").Alignment) | undefined;
84
- isLintable?: boolean | undefined;
85
- tracking?: import("../../types").Tracking | undefined;
86
- traverseChildWidgets?: any;
87
- transform?: import("../../types").WidgetTransform | undefined;
88
- staticTransform?: import("../../types").WidgetTransform | undefined;
89
- validator?: import("../../types").WidgetValidatorFunction | undefined;
90
- getOneCorrectAnswerFromRubric?: ((rubric: import("../../validation.types").Rubric) => string | null | undefined) | undefined;
91
- propUpgrades?: {
92
- [key: string]: (arg1: any) => any;
93
- } | undefined;
94
- }>;
81
+ staticTransform: <T>(value: T) => T;
82
+ scorer: typeof scorePlotter;
83
+ };
95
84
  export default _default;
@@ -0,0 +1,4 @@
1
+ import type { PerseusScore } from "../../types";
2
+ import type { PerseusPlotterRubric, PerseusPlotterUserInput } from "../../validation.types";
3
+ declare function scorePlotter(userInput: PerseusPlotterUserInput, rubric: PerseusPlotterRubric): PerseusScore;
4
+ export default scorePlotter;
@@ -1,5 +1,6 @@
1
1
  import * as React from "react";
2
2
  import type { FocusPath, Widget } from "../../types";
3
+ import type { UnsupportedWidgetPromptJSON } from "../../widget-ai-utils/unsupported-widget";
3
4
  type Props = {
4
5
  programID: string;
5
6
  height: number;
@@ -13,28 +14,12 @@ type DefaultProps = {
13
14
  declare class PythonProgram extends React.Component<Props> implements Widget {
14
15
  static defaultProps: DefaultProps;
15
16
  getDOMNodeForPath(path: FocusPath): null;
17
+ getPromptJSON(): UnsupportedWidgetPromptJSON;
16
18
  render(): React.ReactNode;
17
19
  }
18
- declare const _default: Readonly<{
20
+ declare const _default: {
19
21
  name: string;
20
22
  displayName: string;
21
- getWidget?: (() => typeof PythonProgram) | undefined;
22
23
  widget: typeof PythonProgram;
23
- accessible?: boolean | ((props: any) => boolean) | undefined;
24
- hidden?: boolean | undefined;
25
- version?: import("../../types").Version | undefined;
26
- supportedAlignments?: readonly import("../../types").Alignment[] | undefined;
27
- defaultAlignment?: import("../../types").Alignment | undefined;
28
- getDefaultAlignment?: (() => import("../../types").Alignment) | undefined;
29
- isLintable?: boolean | undefined;
30
- tracking?: import("../../types").Tracking | undefined;
31
- traverseChildWidgets?: any;
32
- transform?: import("../../types").WidgetTransform | undefined;
33
- staticTransform?: import("../../types").WidgetTransform | undefined;
34
- validator?: import("../../types").WidgetValidatorFunction | undefined;
35
- getOneCorrectAnswerFromRubric?: ((rubric: import("../../validation.types").Rubric) => string | null | undefined) | undefined;
36
- propUpgrades?: {
37
- [key: string]: (arg1: any) => any;
38
- } | undefined;
39
- }>;
24
+ };
40
25
  export default _default;
@@ -4,6 +4,7 @@ import type { FocusFunction } from "./base-radio";
4
4
  import type { PerseusRadioChoice, PerseusRadioWidgetOptions, ShowSolutions } from "../../perseus-types";
5
5
  import type { WidgetProps, ChoiceState, Widget } from "../../types";
6
6
  import type { PerseusRadioRubric, PerseusRadioUserInput } from "../../validation.types";
7
+ import type { RadioPromptJSON } from "../../widget-ai-utils/radio/prompt-utils";
7
8
  export type RenderProps = {
8
9
  numCorrect: number;
9
10
  hasNoneOfTheAbove?: boolean;
@@ -30,7 +31,7 @@ declare class Radio extends React.Component<Props> implements Widget {
30
31
  context: React.ContextType<typeof PerseusI18nContext>;
31
32
  focusFunction: FocusFunction;
32
33
  static defaultProps: DefaultProps;
33
- static getUserInputFromProps(props: Props): PerseusRadioUserInput;
34
+ static getUserInputFromProps(props: Props, unshuffle?: boolean): PerseusRadioUserInput;
34
35
  componentDidUpdate(prevProps: Props): void;
35
36
  _renderRenderer: (content?: string) => React.ReactElement;
36
37
  focus(choiceIndex?: number | null): boolean;
@@ -40,6 +41,7 @@ declare class Radio extends React.Component<Props> implements Widget {
40
41
  crossedOut: ReadonlyArray<boolean>;
41
42
  }>) => void;
42
43
  getUserInput(): PerseusRadioUserInput;
44
+ getPromptJSON(): RadioPromptJSON;
43
45
  /**
44
46
  * Turn on rationale display for the currently selected choices. Note that
45
47
  * this leaves rationales on for choices that are already showing
@@ -1,24 +1,23 @@
1
1
  import Radio from "./radio-component";
2
- declare const _default: Readonly<{
2
+ import scoreRadio from "./score-radio";
3
+ import type { RenderProps } from "./radio-component";
4
+ import type { PerseusRadioWidgetOptions } from "../../perseus-types";
5
+ import type { PerseusStrings } from "../../strings";
6
+ declare const _default: {
3
7
  name: string;
4
8
  displayName: string;
5
- getWidget?: (() => typeof Radio) | undefined;
9
+ accessible: true;
6
10
  widget: typeof Radio;
7
- accessible?: boolean | ((props: any) => boolean) | undefined;
8
- hidden?: boolean | undefined;
9
- version?: import("../../types").Version | undefined;
10
- supportedAlignments?: readonly import("../../types").Alignment[] | undefined;
11
- defaultAlignment?: import("../../types").Alignment | undefined;
12
- getDefaultAlignment?: (() => import("../../types").Alignment) | undefined;
13
- isLintable?: boolean | undefined;
14
- tracking?: import("../../types").Tracking | undefined;
15
- traverseChildWidgets?: any;
16
- transform?: import("../../types").WidgetTransform | undefined;
17
- staticTransform?: import("../../types").WidgetTransform | undefined;
18
- validator?: import("../../types").WidgetValidatorFunction | undefined;
19
- getOneCorrectAnswerFromRubric?: ((rubric: import("../../validation.types").Rubric) => string | null | undefined) | undefined;
20
- propUpgrades?: {
21
- [key: string]: (arg1: any) => any;
22
- } | undefined;
23
- }>;
11
+ transform: (widgetOptions: PerseusRadioWidgetOptions, strings: PerseusStrings, problemNum?: number | null | undefined) => RenderProps;
12
+ staticTransform: (widgetOptions: PerseusRadioWidgetOptions, strings: PerseusStrings, problemNum?: number | null | undefined) => RenderProps;
13
+ version: {
14
+ major: number;
15
+ minor: number;
16
+ };
17
+ propUpgrades: {
18
+ readonly "1": (v0props: any) => any;
19
+ };
20
+ isLintable: true;
21
+ scorer: typeof scoreRadio;
22
+ };
24
23
  export default _default;
@@ -1,5 +1,5 @@
1
1
  import type { PerseusStrings } from "../../strings";
2
2
  import type { PerseusScore } from "../../types";
3
3
  import type { PerseusRadioRubric, PerseusRadioUserInput } from "../../validation.types";
4
- declare function radioValidator(userInput: PerseusRadioUserInput, rubric: PerseusRadioRubric, strings: PerseusStrings): PerseusScore;
5
- export default radioValidator;
4
+ declare function scoreRadio(userInput: PerseusRadioUserInput, rubric: PerseusRadioRubric, strings: PerseusStrings): PerseusScore;
5
+ export default scoreRadio;
@@ -0,0 +1,4 @@
1
+ import type { PerseusScore } from "../../types";
2
+ import type { PerseusSorterRubric, PerseusSorterUserInput } from "../../validation.types";
3
+ declare function scoreSorter(userInput: PerseusSorterUserInput, rubric: PerseusSorterRubric): PerseusScore;
4
+ export default scoreSorter;
@@ -1,8 +1,10 @@
1
1
  import * as React from "react";
2
+ import scoreSorter from "./score-sorter";
2
3
  import type { SortableOption } from "../../components/sortable";
3
4
  import type { PerseusSorterWidgetOptions } from "../../perseus-types";
4
5
  import type { Widget, WidgetProps } from "../../types";
5
6
  import type { PerseusSorterRubric, PerseusSorterUserInput } from "../../validation.types";
7
+ import type { SorterPromptJSON } from "../../widget-ai-utils/sorter/prompt-utils";
6
8
  type RenderProps = PerseusSorterWidgetOptions;
7
9
  type Props = WidgetProps<RenderProps, PerseusSorterRubric>;
8
10
  type DefaultProps = {
@@ -24,29 +26,15 @@ declare class Sorter extends React.Component<Props, State> implements Widget {
24
26
  componentWillUnmount(): void;
25
27
  handleChange: (arg1: React.ChangeEvent<HTMLInputElement>) => void;
26
28
  getUserInput(): PerseusSorterUserInput;
29
+ getPromptJSON(): SorterPromptJSON;
27
30
  moveOptionToIndex: (option: SortableOption, index: number) => void;
28
31
  render(): React.ReactNode;
29
32
  }
30
- declare const _default: Readonly<{
33
+ declare const _default: {
31
34
  name: string;
32
35
  displayName: string;
33
- getWidget?: (() => typeof Sorter) | undefined;
34
36
  widget: typeof Sorter;
35
- accessible?: boolean | ((props: any) => boolean) | undefined;
36
- hidden?: boolean | undefined;
37
- version?: import("../../types").Version | undefined;
38
- supportedAlignments?: readonly import("../../types").Alignment[] | undefined;
39
- defaultAlignment?: import("../../types").Alignment | undefined;
40
- getDefaultAlignment?: (() => import("../../types").Alignment) | undefined;
41
- isLintable?: boolean | undefined;
42
- tracking?: import("../../types").Tracking | undefined;
43
- traverseChildWidgets?: any;
44
- transform?: import("../../types").WidgetTransform | undefined;
45
- staticTransform?: import("../../types").WidgetTransform | undefined;
46
- validator?: import("../../types").WidgetValidatorFunction | undefined;
47
- getOneCorrectAnswerFromRubric?: ((rubric: import("../../validation.types").Rubric) => string | null | undefined) | undefined;
48
- propUpgrades?: {
49
- [key: string]: (arg1: any) => any;
50
- } | undefined;
51
- }>;
37
+ isLintable: true;
38
+ scorer: typeof scoreSorter;
39
+ };
52
40
  export default _default;
@@ -1,5 +1,5 @@
1
1
  import type { PerseusStrings } from "../../strings";
2
2
  import type { PerseusScore } from "../../types";
3
3
  import type { PerseusTableRubric, PerseusTableUserInput } from "../../validation.types";
4
- declare function tableValidator(state: PerseusTableUserInput, rubric: PerseusTableRubric, strings: PerseusStrings): PerseusScore;
5
- export default tableValidator;
4
+ declare function scoreTable(state: PerseusTableUserInput, rubric: PerseusTableRubric, strings: PerseusStrings): PerseusScore;
5
+ export default scoreTable;
@@ -1,5 +1,6 @@
1
1
  import * as React from "react";
2
2
  import { PerseusI18nContext } from "../../components/i18n-context";
3
+ import scoreTable from "./score-table";
3
4
  import type { ChangeableProps } from "../../mixins/changeable";
4
5
  import type { PerseusTableWidgetOptions } from "../../perseus-types";
5
6
  import type { Widget, WidgetProps } from "../../types";
@@ -40,26 +41,14 @@ declare class Table extends React.Component<Props> implements Widget {
40
41
  setInputValue: (arg1: any, arg2: any, arg3: any) => void;
41
42
  render(): React.ReactNode;
42
43
  }
43
- declare const _default: Readonly<{
44
+ declare const _default: {
44
45
  name: string;
45
46
  displayName: string;
46
- getWidget?: (() => typeof Table) | undefined;
47
+ accessible: true;
47
48
  widget: typeof Table;
48
- accessible?: boolean | ((props: any) => boolean) | undefined;
49
- hidden?: boolean | undefined;
50
- version?: import("../../types").Version | undefined;
51
- supportedAlignments?: readonly import("../../types").Alignment[] | undefined;
52
- defaultAlignment?: import("../../types").Alignment | undefined;
53
- getDefaultAlignment?: (() => import("../../types").Alignment) | undefined;
54
- isLintable?: boolean | undefined;
55
- tracking?: import("../../types").Tracking | undefined;
56
- traverseChildWidgets?: any;
57
- transform?: import("../../types").WidgetTransform | undefined;
58
- staticTransform?: import("../../types").WidgetTransform | undefined;
59
- validator?: import("../../types").WidgetValidatorFunction | undefined;
60
- getOneCorrectAnswerFromRubric?: ((rubric: import("../../validation.types").Rubric) => string | null | undefined) | undefined;
61
- propUpgrades?: {
62
- [key: string]: (arg1: any) => any;
63
- } | undefined;
64
- }>;
49
+ transform: (arg1: any) => any;
50
+ hidden: true;
51
+ isLintable: true;
52
+ scorer: typeof scoreTable;
53
+ };
65
54
  export default _default;