@khanacademy/perseus-core 3.1.0 → 3.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 (132) hide show
  1. package/dist/data-schema.d.ts +57 -12
  2. package/dist/es/index.js +3251 -395
  3. package/dist/es/index.js.map +1 -1
  4. package/dist/index.d.ts +77 -1
  5. package/dist/index.js +3290 -394
  6. package/dist/index.js.map +1 -1
  7. package/dist/parse-perseus-json/error-tracking-parse-context.d.ts +9 -0
  8. package/dist/parse-perseus-json/exhaustive-test-tool/index.d.ts +2 -0
  9. package/dist/parse-perseus-json/general-purpose-parsers/any.d.ts +2 -0
  10. package/dist/parse-perseus-json/general-purpose-parsers/array.d.ts +2 -0
  11. package/dist/parse-perseus-json/general-purpose-parsers/array.typetest.d.ts +1 -0
  12. package/dist/parse-perseus-json/general-purpose-parsers/boolean.d.ts +2 -0
  13. package/dist/parse-perseus-json/general-purpose-parsers/constant.d.ts +4 -0
  14. package/dist/parse-perseus-json/general-purpose-parsers/convert.d.ts +2 -0
  15. package/dist/parse-perseus-json/general-purpose-parsers/defaulted.d.ts +2 -0
  16. package/dist/parse-perseus-json/general-purpose-parsers/discriminated-union.d.ts +21 -0
  17. package/dist/parse-perseus-json/general-purpose-parsers/discriminated-union.typetest.d.ts +1 -0
  18. package/dist/parse-perseus-json/general-purpose-parsers/enumeration.d.ts +2 -0
  19. package/dist/parse-perseus-json/general-purpose-parsers/enumeration.typetest.d.ts +1 -0
  20. package/dist/parse-perseus-json/general-purpose-parsers/index.d.ts +17 -0
  21. package/dist/parse-perseus-json/general-purpose-parsers/is-object.d.ts +1 -0
  22. package/dist/parse-perseus-json/general-purpose-parsers/nullable.d.ts +2 -0
  23. package/dist/parse-perseus-json/general-purpose-parsers/number.d.ts +2 -0
  24. package/dist/parse-perseus-json/general-purpose-parsers/object.d.ts +6 -0
  25. package/dist/parse-perseus-json/general-purpose-parsers/optional.d.ts +2 -0
  26. package/dist/parse-perseus-json/general-purpose-parsers/pair.d.ts +2 -0
  27. package/dist/parse-perseus-json/general-purpose-parsers/pipe-parsers.d.ts +7 -0
  28. package/dist/parse-perseus-json/general-purpose-parsers/pipe-parsers.typetest.d.ts +1 -0
  29. package/dist/parse-perseus-json/general-purpose-parsers/record.d.ts +2 -0
  30. package/dist/parse-perseus-json/general-purpose-parsers/string-to-number.d.ts +2 -0
  31. package/dist/parse-perseus-json/general-purpose-parsers/string.d.ts +2 -0
  32. package/dist/parse-perseus-json/general-purpose-parsers/test-helpers.d.ts +8 -0
  33. package/dist/parse-perseus-json/general-purpose-parsers/trio.d.ts +2 -0
  34. package/dist/parse-perseus-json/general-purpose-parsers/union.d.ts +7 -0
  35. package/dist/parse-perseus-json/general-purpose-parsers/union.typetest.d.ts +1 -0
  36. package/dist/parse-perseus-json/general-purpose-parsers/unknown.d.ts +2 -0
  37. package/dist/parse-perseus-json/index.d.ts +45 -0
  38. package/dist/parse-perseus-json/object-path.d.ts +2 -0
  39. package/dist/parse-perseus-json/parse-failure-detail.d.ts +2 -0
  40. package/dist/parse-perseus-json/parse.d.ts +3 -0
  41. package/dist/parse-perseus-json/parser-types.d.ts +30 -0
  42. package/dist/parse-perseus-json/perseus-parsers/categorizer-widget.d.ts +3 -0
  43. package/dist/parse-perseus-json/perseus-parsers/cs-program-widget.d.ts +3 -0
  44. package/dist/parse-perseus-json/perseus-parsers/definition-widget.d.ts +3 -0
  45. package/dist/parse-perseus-json/perseus-parsers/dropdown-widget.d.ts +3 -0
  46. package/dist/parse-perseus-json/perseus-parsers/explanation-widget.d.ts +3 -0
  47. package/dist/parse-perseus-json/perseus-parsers/expression-widget.d.ts +3 -0
  48. package/dist/parse-perseus-json/perseus-parsers/graded-group-set-widget.d.ts +3 -0
  49. package/dist/parse-perseus-json/perseus-parsers/graded-group-widget.d.ts +16 -0
  50. package/dist/parse-perseus-json/perseus-parsers/grapher-widget.d.ts +3 -0
  51. package/dist/parse-perseus-json/perseus-parsers/group-widget.d.ts +3 -0
  52. package/dist/parse-perseus-json/perseus-parsers/hint.d.ts +3 -0
  53. package/dist/parse-perseus-json/perseus-parsers/iframe-widget.d.ts +3 -0
  54. package/dist/parse-perseus-json/perseus-parsers/image-widget.d.ts +3 -0
  55. package/dist/parse-perseus-json/perseus-parsers/images-map.d.ts +5 -0
  56. package/dist/parse-perseus-json/perseus-parsers/input-number-widget.d.ts +3 -0
  57. package/dist/parse-perseus-json/perseus-parsers/interaction-widget.d.ts +3 -0
  58. package/dist/parse-perseus-json/perseus-parsers/interactive-graph-widget.d.ts +3 -0
  59. package/dist/parse-perseus-json/perseus-parsers/label-image-widget.d.ts +3 -0
  60. package/dist/parse-perseus-json/perseus-parsers/matcher-widget.d.ts +3 -0
  61. package/dist/parse-perseus-json/perseus-parsers/matrix-widget.d.ts +3 -0
  62. package/dist/parse-perseus-json/perseus-parsers/measurer-widget.d.ts +3 -0
  63. package/dist/parse-perseus-json/perseus-parsers/molecule-renderer-widget.d.ts +3 -0
  64. package/dist/parse-perseus-json/perseus-parsers/number-line-widget.d.ts +3 -0
  65. package/dist/parse-perseus-json/perseus-parsers/numeric-input-widget.d.ts +3 -0
  66. package/dist/parse-perseus-json/perseus-parsers/orderer-widget.d.ts +3 -0
  67. package/dist/parse-perseus-json/perseus-parsers/passage-ref-widget.d.ts +3 -0
  68. package/dist/parse-perseus-json/perseus-parsers/passage-widget.d.ts +3 -0
  69. package/dist/parse-perseus-json/perseus-parsers/perseus-article.d.ts +3 -0
  70. package/dist/parse-perseus-json/perseus-parsers/perseus-image-background.d.ts +3 -0
  71. package/dist/parse-perseus-json/perseus-parsers/perseus-item.d.ts +3 -0
  72. package/dist/parse-perseus-json/perseus-parsers/perseus-renderer.d.ts +3 -0
  73. package/dist/parse-perseus-json/perseus-parsers/phet-simulation-widget.d.ts +3 -0
  74. package/dist/parse-perseus-json/perseus-parsers/plotter-widget.d.ts +3 -0
  75. package/dist/parse-perseus-json/perseus-parsers/python-program-widget.d.ts +3 -0
  76. package/dist/parse-perseus-json/perseus-parsers/radio-widget.d.ts +3 -0
  77. package/dist/parse-perseus-json/perseus-parsers/sorter-widget.d.ts +3 -0
  78. package/dist/parse-perseus-json/perseus-parsers/table-widget.d.ts +3 -0
  79. package/dist/parse-perseus-json/perseus-parsers/versioned-widget-options.d.ts +36 -0
  80. package/dist/parse-perseus-json/perseus-parsers/video-widget.d.ts +3 -0
  81. package/dist/parse-perseus-json/perseus-parsers/widget.d.ts +7 -0
  82. package/dist/parse-perseus-json/perseus-parsers/widgets-map.d.ts +3 -0
  83. package/dist/parse-perseus-json/result.d.ts +16 -0
  84. package/dist/types.d.ts +12 -0
  85. package/dist/utils/deep-clone.d.ts +3 -0
  86. package/dist/utils/equality.d.ts +9 -0
  87. package/dist/utils/get-decimal-separator.d.ts +5 -0
  88. package/dist/utils/get-matrix-size.d.ts +2 -0
  89. package/dist/utils/grapher-types.d.ts +58 -0
  90. package/dist/utils/grapher-util.d.ts +20 -0
  91. package/dist/utils/is-real-json-parse.d.ts +1 -0
  92. package/dist/utils/widget-id-utils.d.ts +38 -0
  93. package/dist/widgets/categorizer/categorizer-util.d.ts +17 -0
  94. package/dist/widgets/categorizer/index.d.ts +5 -0
  95. package/dist/widgets/cs-program/index.d.ts +5 -0
  96. package/dist/widgets/definition/index.d.ts +5 -0
  97. package/dist/widgets/dropdown/index.d.ts +5 -0
  98. package/dist/widgets/explanation/index.d.ts +5 -0
  99. package/dist/widgets/expression/expression-upgrade.d.ts +10 -0
  100. package/dist/widgets/expression/expression-util.d.ts +19 -0
  101. package/dist/widgets/expression/index.d.ts +4 -0
  102. package/dist/widgets/graded-group/index.d.ts +5 -0
  103. package/dist/widgets/graded-group-set/index.d.ts +5 -0
  104. package/dist/widgets/group/index.d.ts +5 -0
  105. package/dist/widgets/iframe/index.d.ts +5 -0
  106. package/dist/widgets/image/index.d.ts +5 -0
  107. package/dist/widgets/input-number/index.d.ts +5 -0
  108. package/dist/widgets/interaction/index.d.ts +5 -0
  109. package/dist/widgets/interactive-graph/index.d.ts +5 -0
  110. package/dist/widgets/label-image/index.d.ts +5 -0
  111. package/dist/widgets/logic-export.types.d.ts +10 -0
  112. package/dist/widgets/matcher/index.d.ts +5 -0
  113. package/dist/widgets/matrix/index.d.ts +5 -0
  114. package/dist/widgets/measurer/index.d.ts +4 -0
  115. package/dist/widgets/measurer/measurer-upgrade.d.ts +10 -0
  116. package/dist/widgets/number-line/index.d.ts +5 -0
  117. package/dist/widgets/numeric-input/index.d.ts +5 -0
  118. package/dist/widgets/orderer/index.d.ts +5 -0
  119. package/dist/widgets/orderer/orderer-util.d.ts +16 -0
  120. package/dist/widgets/passage/index.d.ts +5 -0
  121. package/dist/widgets/passage-ref/index.d.ts +4 -0
  122. package/dist/widgets/passage-ref/passage-ref-upgrade.d.ts +7 -0
  123. package/dist/widgets/passage-ref-target/index.d.ts +5 -0
  124. package/dist/widgets/phet-simulation/index.d.ts +5 -0
  125. package/dist/widgets/plotter/index.d.ts +5 -0
  126. package/dist/widgets/python-program/index.d.ts +5 -0
  127. package/dist/widgets/radio/index.d.ts +4 -0
  128. package/dist/widgets/radio/radio-upgrade.d.ts +10 -0
  129. package/dist/widgets/sorter/index.d.ts +5 -0
  130. package/dist/widgets/table/index.d.ts +5 -0
  131. package/dist/widgets/video/index.d.ts +5 -0
  132. package/package.json +1 -1
@@ -0,0 +1,58 @@
1
+ import type { Coord } from "../data-schema";
2
+ export type Coords = [Coord, Coord];
3
+ type SharedGrapherType = {
4
+ url: string;
5
+ defaultCoords: Coords;
6
+ getFunctionForCoeffs: (coeffs: ReadonlyArray<number>, x: number) => number;
7
+ getEquationString: (coords: Coords, asymptote?: Coords) => string | null;
8
+ areEqual: (coeffs1: ReadonlyArray<number>, coeffs2: ReadonlyArray<number>) => boolean;
9
+ Movable: any;
10
+ getCoefficients: (coords: Coords, asymptote?: Coords) => ReadonlyArray<number> | undefined;
11
+ };
12
+ type AsymptoticGraphsType = {
13
+ defaultAsymptote: Coords;
14
+ extraCoordConstraint: (newCoord: Coord, oldCoord: Coord, coords: Coords, asymptote: Coords, graph: any) => boolean | Coord;
15
+ extraAsymptoteConstraint: (newCoord: Coord, oldCoord: Coord, coords: Coords, asymptote: Coords, graph: any) => Coord;
16
+ allowReflectOverAsymptote: boolean;
17
+ };
18
+ export type LinearType = SharedGrapherType & {
19
+ getPropsForCoeffs: (coeffs: ReadonlyArray<number>) => {
20
+ fn: any;
21
+ };
22
+ };
23
+ export type QuadraticType = SharedGrapherType & {
24
+ getPropsForCoeffs: (coeffs: ReadonlyArray<number>) => {
25
+ a: number;
26
+ b: number;
27
+ c: number;
28
+ };
29
+ };
30
+ export type SinusoidType = SharedGrapherType & {
31
+ getPropsForCoeffs: (coeffs: ReadonlyArray<number>) => {
32
+ a: number;
33
+ b: number;
34
+ c: number;
35
+ d: number;
36
+ };
37
+ };
38
+ export type TangentType = SharedGrapherType & {
39
+ getPropsForCoeffs: (coeffs: ReadonlyArray<number>) => {
40
+ fn: any;
41
+ };
42
+ };
43
+ export type ExponentialType = SharedGrapherType & AsymptoticGraphsType & {
44
+ getPropsForCoeffs: (coeffs: ReadonlyArray<number>) => {
45
+ fn: any;
46
+ };
47
+ };
48
+ export type LogarithmType = SharedGrapherType & AsymptoticGraphsType & {
49
+ getPropsForCoeffs: (coeffs: ReadonlyArray<number>) => {
50
+ fn: any;
51
+ };
52
+ };
53
+ export type AbsoluteValueType = SharedGrapherType & {
54
+ getPropsForCoeffs: (coeffs: ReadonlyArray<number>) => {
55
+ fn: any;
56
+ };
57
+ };
58
+ export {};
@@ -0,0 +1,20 @@
1
+ import type { LinearType, QuadraticType, SinusoidType, TangentType, ExponentialType, LogarithmType, AbsoluteValueType } from "./grapher-types";
2
+ export declare const MOVABLES: {
3
+ PLOT: string;
4
+ PARABOLA: string;
5
+ SINUSOID: string;
6
+ };
7
+ declare const functionTypeMapping: {
8
+ readonly linear: LinearType;
9
+ readonly quadratic: QuadraticType;
10
+ readonly sinusoid: SinusoidType;
11
+ readonly tangent: TangentType;
12
+ readonly exponential: ExponentialType;
13
+ readonly logarithm: LogarithmType;
14
+ readonly absolute_value: AbsoluteValueType;
15
+ };
16
+ export declare const allTypes: any;
17
+ export type FunctionTypeMappingKeys = keyof typeof functionTypeMapping;
18
+ type ConditionalGraderType<T extends FunctionTypeMappingKeys> = T extends "linear" ? LinearType : T extends "quadratic" ? QuadraticType : T extends "sinusoid" ? SinusoidType : T extends "tangent" ? TangentType : T extends "exponential" ? ExponentialType : T extends "logarithm" ? LogarithmType : T extends "absolute_value" ? AbsoluteValueType : never;
19
+ export declare function functionForType<T extends FunctionTypeMappingKeys>(type: T): ConditionalGraderType<T>;
20
+ export {};
@@ -0,0 +1 @@
1
+ export declare function isRealJSONParse(jsonParse: typeof JSON.parse): boolean;
@@ -0,0 +1,38 @@
1
+ import type { PerseusWidgetsMap } from "../data-schema";
2
+ /**
3
+ * Add a widget placeholder using the widget ID.
4
+ * ex. addWidget("radio 1") => "[[☃ radio 1]]"
5
+ *
6
+ * @param {string} id
7
+ * @returns {string}
8
+ */
9
+ export declare function addWidget(id: string): string;
10
+ /**
11
+ * Regex for widget placeholders in a string.
12
+ *
13
+ * First capture group is the widget ID (ex. 'radio 1')
14
+ * Second capture group is the widget type (ex. "radio)
15
+ * exec return will look like: ['[[☃ radio 1]]', 'radio 1', 'radio']
16
+ */
17
+ export declare function getWidgetRegex(): RegExp;
18
+ /**
19
+ * Extract all widget IDs, which includes the widget type and instance number.
20
+ * example output: ['radio 1', 'categorizer 1', 'categorizor 2']
21
+ *
22
+ * Content should contain Perseus widget placeholders,
23
+ * which look like: '[[☃ radio 1]]'.
24
+ *
25
+ * @param {string} content
26
+ * @returns {ReadonlyArray<string>} widgetIds
27
+ */
28
+ export declare function getWidgetIdsFromContent(content: string): ReadonlyArray<string>;
29
+ /**
30
+ * Get a list of widget IDs from content,
31
+ * but only for specific widget types
32
+ *
33
+ * @param {string} type the type of widget (ie "radio")
34
+ * @param {string} content the string to parse
35
+ * @param {PerseusWidgetsMap} widgetMap widget ID to widget map
36
+ * @returns {ReadonlyArray<string>} the widget type (ie "radio")
37
+ */
38
+ export declare function getWidgetIdsFromContentByType(type: string, content: string, widgetMap: PerseusWidgetsMap): ReadonlyArray<string>;
@@ -0,0 +1,17 @@
1
+ import type { PerseusCategorizerWidgetOptions } from "@khanacademy/perseus-core";
2
+ /**
3
+ * For details on the individual options, see the
4
+ * PerseusCategorizerWidgetOptions type
5
+ */
6
+ type CategorizerPublicWidgetOptions = {
7
+ items: PerseusCategorizerWidgetOptions["items"];
8
+ categories: PerseusCategorizerWidgetOptions["categories"];
9
+ randomizeItems: PerseusCategorizerWidgetOptions["randomizeItems"];
10
+ static: PerseusCategorizerWidgetOptions["static"];
11
+ };
12
+ /**
13
+ * Given a PerseusCategorizerWidgetOptions object, return a new object with only
14
+ * the public options that should be exposed to the client.
15
+ */
16
+ declare function getCategorizerPublicWidgetOptions(options: PerseusCategorizerWidgetOptions): CategorizerPublicWidgetOptions;
17
+ export default getCategorizerPublicWidgetOptions;
@@ -0,0 +1,5 @@
1
+ import type { PerseusCategorizerWidgetOptions } from "../../data-schema";
2
+ import type { WidgetLogic } from "../logic-export.types";
3
+ export type CategorizerDefaultWidgetOptions = Pick<PerseusCategorizerWidgetOptions, "items" | "categories" | "values" | "randomizeItems">;
4
+ declare const categorizerWidgetLogic: WidgetLogic;
5
+ export default categorizerWidgetLogic;
@@ -0,0 +1,5 @@
1
+ import type { PerseusCSProgramWidgetOptions } from "../../data-schema";
2
+ import type { WidgetLogic } from "../logic-export.types";
3
+ export type CSProgramDefaultWidgetOptions = Pick<PerseusCSProgramWidgetOptions, "programID" | "programType" | "settings" | "showEditor" | "showButtons" | "height">;
4
+ declare const csProgramWidgetLogic: WidgetLogic;
5
+ export default csProgramWidgetLogic;
@@ -0,0 +1,5 @@
1
+ import type { PerseusDefinitionWidgetOptions } from "../../data-schema";
2
+ import type { WidgetLogic } from "../logic-export.types";
3
+ export type DefinitionDefaultWidgetOptions = Pick<PerseusDefinitionWidgetOptions, "togglePrompt" | "definition">;
4
+ declare const definitionWidgetLogic: WidgetLogic;
5
+ export default definitionWidgetLogic;
@@ -0,0 +1,5 @@
1
+ import type { PerseusDropdownWidgetOptions } from "../../data-schema";
2
+ import type { WidgetLogic } from "../logic-export.types";
3
+ export type DropdownDefaultWidgetOptions = Pick<PerseusDropdownWidgetOptions, "placeholder" | "choices">;
4
+ declare const dropdownWidgetLogic: WidgetLogic;
5
+ export default dropdownWidgetLogic;
@@ -0,0 +1,5 @@
1
+ import type { PerseusExplanationWidgetOptions } from "../../data-schema";
2
+ import type { WidgetLogic } from "../logic-export.types";
3
+ export type ExplanationDefaultWidgetOptions = Pick<PerseusExplanationWidgetOptions, "showPrompt" | "hidePrompt" | "explanation" | "widgets">;
4
+ declare const explanationWidgetLogic: WidgetLogic;
5
+ export default explanationWidgetLogic;
@@ -0,0 +1,10 @@
1
+ import type { PerseusExpressionWidgetOptions } from "../../data-schema";
2
+ export declare const currentVersion: {
3
+ major: number;
4
+ minor: number;
5
+ };
6
+ export declare const widgetOptionsUpgrades: {
7
+ readonly "1": (v0options: any) => PerseusExpressionWidgetOptions;
8
+ };
9
+ export type ExpressionDefaultWidgetOptions = Pick<PerseusExpressionWidgetOptions, "answerForms" | "times" | "buttonSets" | "functions">;
10
+ export declare const defaultWidgetOptions: ExpressionDefaultWidgetOptions;
@@ -0,0 +1,19 @@
1
+ import type { PerseusExpressionWidgetOptions } from "@khanacademy/perseus-core";
2
+ /**
3
+ * For details on the individual options, see the
4
+ * PerseusExpressionWidgetOptions type
5
+ */
6
+ type ExpressionPublicWidgetOptions = {
7
+ buttonSets: PerseusExpressionWidgetOptions["buttonSets"];
8
+ functions: PerseusExpressionWidgetOptions["functions"];
9
+ times: PerseusExpressionWidgetOptions["times"];
10
+ visibleLabel?: PerseusExpressionWidgetOptions["visibleLabel"];
11
+ ariaLabel?: PerseusExpressionWidgetOptions["ariaLabel"];
12
+ buttonsVisible?: PerseusExpressionWidgetOptions["buttonsVisible"];
13
+ };
14
+ /**
15
+ * Given a PerseusExpressionWidgetOptions object, return a new object with only
16
+ * the public options that should be exposed to the client.
17
+ */
18
+ declare function getExpressionPublicWidgetOptions(options: PerseusExpressionWidgetOptions): ExpressionPublicWidgetOptions;
19
+ export default getExpressionPublicWidgetOptions;
@@ -0,0 +1,4 @@
1
+ import type { WidgetLogic } from "../logic-export.types";
2
+ export type { ExpressionDefaultWidgetOptions } from "./expression-upgrade";
3
+ declare const expressionWidgetLogic: WidgetLogic;
4
+ export default expressionWidgetLogic;
@@ -0,0 +1,5 @@
1
+ import type { PerseusGradedGroupWidgetOptions } from "../../data-schema";
2
+ import type { WidgetLogic } from "../logic-export.types";
3
+ export type GradedGroupDefaultWidgetOptions = Pick<PerseusGradedGroupWidgetOptions, "title" | "content" | "widgets" | "images" | "hint">;
4
+ declare const GradedGroupWidgetLogic: WidgetLogic;
5
+ export default GradedGroupWidgetLogic;
@@ -0,0 +1,5 @@
1
+ import type { PerseusGradedGroupSetWidgetOptions } from "../../data-schema";
2
+ import type { WidgetLogic } from "../logic-export.types";
3
+ export type GradedGroupSetDefaultWidgetOptions = Pick<PerseusGradedGroupSetWidgetOptions, "gradedGroups">;
4
+ declare const GradedGroupSetWidgetLogic: WidgetLogic;
5
+ export default GradedGroupSetWidgetLogic;
@@ -0,0 +1,5 @@
1
+ import type { PerseusGroupWidgetOptions } from "../../data-schema";
2
+ import type { WidgetLogic } from "../logic-export.types";
3
+ export type GroupDefaultWidgetOptions = Pick<PerseusGroupWidgetOptions, "content" | "widgets" | "images" | "metadata">;
4
+ declare const GroupWidgetLogic: WidgetLogic;
5
+ export default GroupWidgetLogic;
@@ -0,0 +1,5 @@
1
+ import type { PerseusIFrameWidgetOptions } from "../../data-schema";
2
+ import type { WidgetLogic } from "../logic-export.types";
3
+ export type IFrameDefaultWidgetOptions = Pick<PerseusIFrameWidgetOptions, "url" | "settings" | "width" | "height" | "allowFullScreen" | "allowTopNavigation">;
4
+ declare const iframeWidgetLogic: WidgetLogic;
5
+ export default iframeWidgetLogic;
@@ -0,0 +1,5 @@
1
+ import type { PerseusImageWidgetOptions } from "../../data-schema";
2
+ import type { WidgetLogic } from "../logic-export.types";
3
+ export type ImageDefaultWidgetOptions = Pick<PerseusImageWidgetOptions, "title" | "range" | "box" | "backgroundImage" | "labels" | "alt" | "caption">;
4
+ declare const imageWidgetLogic: WidgetLogic;
5
+ export default imageWidgetLogic;
@@ -0,0 +1,5 @@
1
+ import type { PerseusInputNumberWidgetOptions } from "../../data-schema";
2
+ import type { WidgetLogic } from "../logic-export.types";
3
+ export type InputNumberDefaultWidgetOptions = Pick<PerseusInputNumberWidgetOptions, "value" | "simplify" | "size" | "inexact" | "maxError" | "answerType" | "rightAlign">;
4
+ declare const inputNumberWidgetLogic: WidgetLogic;
5
+ export default inputNumberWidgetLogic;
@@ -0,0 +1,5 @@
1
+ import type { PerseusInteractionWidgetOptions } from "../../data-schema";
2
+ import type { WidgetLogic } from "../logic-export.types";
3
+ export type InteractionDefaultWidgetOptions = Pick<PerseusInteractionWidgetOptions, "graph" | "elements">;
4
+ declare const interactionWidgetLogic: WidgetLogic;
5
+ export default interactionWidgetLogic;
@@ -0,0 +1,5 @@
1
+ import type { PerseusInteractiveGraphWidgetOptions } from "../../data-schema";
2
+ import type { WidgetLogic } from "../logic-export.types";
3
+ export type InteractiveGraphDefaultWidgetOptions = Pick<PerseusInteractiveGraphWidgetOptions, "labels" | "range" | "step" | "backgroundImage" | "markings" | "showTooltips" | "showProtractor" | "graph" | "correct">;
4
+ declare const interactiveGraphWidgetLogic: WidgetLogic;
5
+ export default interactiveGraphWidgetLogic;
@@ -0,0 +1,5 @@
1
+ import type { PerseusLabelImageWidgetOptions } from "../../data-schema";
2
+ import type { WidgetLogic } from "../logic-export.types";
3
+ export type LabelImageDefaultWidgetOptions = Pick<PerseusLabelImageWidgetOptions, "choices" | "imageAlt" | "imageUrl" | "imageWidth" | "imageHeight" | "markers" | "multipleAnswers" | "hideChoicesFromInstructions">;
4
+ declare const labelImageWidgetLogic: WidgetLogic;
5
+ export default labelImageWidgetLogic;
@@ -0,0 +1,10 @@
1
+ import type { Version } from "../data-schema";
2
+ export type WidgetOptionsUpgradeMap = {
3
+ [targetMajorVersion: string]: (arg1: any) => any;
4
+ };
5
+ export type WidgetLogic = {
6
+ name: string;
7
+ version?: Version;
8
+ widgetOptionsUpgrades?: WidgetOptionsUpgradeMap;
9
+ defaultWidgetOptions?: any;
10
+ };
@@ -0,0 +1,5 @@
1
+ import type { PerseusMatcherWidgetOptions } from "../../data-schema";
2
+ import type { WidgetLogic } from "../logic-export.types";
3
+ export type MatcherDefaultWidgetOptions = Pick<PerseusMatcherWidgetOptions, "left" | "right" | "labels" | "orderMatters" | "padding">;
4
+ declare const matcherWidgetLogic: WidgetLogic;
5
+ export default matcherWidgetLogic;
@@ -0,0 +1,5 @@
1
+ import type { PerseusMatrixWidgetOptions } from "../../data-schema";
2
+ import type { WidgetLogic } from "../logic-export.types";
3
+ export type MatrixDefaultWidgetOptions = Pick<PerseusMatrixWidgetOptions, "matrixBoardSize" | "answers" | "prefix" | "suffix" | "cursorPosition">;
4
+ declare const matrixWidgetLogic: WidgetLogic;
5
+ export default matrixWidgetLogic;
@@ -0,0 +1,4 @@
1
+ import type { WidgetLogic } from "../logic-export.types";
2
+ export type { MeasurerDefaultWidgetOptions } from "./measurer-upgrade";
3
+ declare const measurerWidgetLogic: WidgetLogic;
4
+ export default measurerWidgetLogic;
@@ -0,0 +1,10 @@
1
+ import type { PerseusMeasurerWidgetOptions } from "../../data-schema";
2
+ export declare const currentVersion: {
3
+ major: number;
4
+ minor: number;
5
+ };
6
+ export declare const widgetOptionsUpgrades: {
7
+ readonly "1": (v0options: any) => PerseusMeasurerWidgetOptions;
8
+ };
9
+ export type MeasurerDefaultWidgetOptions = Pick<PerseusMeasurerWidgetOptions, "box" | "image" | "showProtractor" | "showRuler" | "rulerLabel" | "rulerTicks" | "rulerPixels" | "rulerLength">;
10
+ export declare const defaultWidgetOptions: MeasurerDefaultWidgetOptions;
@@ -0,0 +1,5 @@
1
+ import type { PerseusNumberLineWidgetOptions } from "../../data-schema";
2
+ import type { WidgetLogic } from "../logic-export.types";
3
+ export type NumberLineDefaultWidgetOptions = Pick<PerseusNumberLineWidgetOptions, "range" | "labelRange" | "labelStyle" | "labelTicks" | "divisionRange" | "numDivisions" | "snapDivisions" | "tickStep" | "correctRel" | "correctX" | "initialX" | "showTooltips">;
4
+ declare const numberLineWidgetLogic: WidgetLogic;
5
+ export default numberLineWidgetLogic;
@@ -0,0 +1,5 @@
1
+ import type { PerseusNumericInputWidgetOptions } from "../../data-schema";
2
+ import type { WidgetLogic } from "../logic-export.types";
3
+ export type NumericInputDefaultWidgetOptions = Pick<PerseusNumericInputWidgetOptions, "answers" | "size" | "coefficient" | "labelText" | "rightAlign">;
4
+ declare const numericInputWidgetLogic: WidgetLogic;
5
+ export default numericInputWidgetLogic;
@@ -0,0 +1,5 @@
1
+ import type { PerseusOrdererWidgetOptions } from "../../data-schema";
2
+ import type { WidgetLogic } from "../logic-export.types";
3
+ export type OrdererDefaultWidgetOptions = Pick<PerseusOrdererWidgetOptions, "correctOptions" | "otherOptions" | "height" | "layout">;
4
+ declare const ordererWidgetLogic: WidgetLogic;
5
+ export default ordererWidgetLogic;
@@ -0,0 +1,16 @@
1
+ import type { PerseusOrdererWidgetOptions } from "@khanacademy/perseus-core";
2
+ /**
3
+ * For details on the individual options, see the
4
+ * PerseusOrdererWidgetOptions type
5
+ */
6
+ type OrdererPublicWidgetOptions = {
7
+ options: PerseusOrdererWidgetOptions["options"];
8
+ height: PerseusOrdererWidgetOptions["height"];
9
+ layout: PerseusOrdererWidgetOptions["layout"];
10
+ };
11
+ /**
12
+ * Given a PerseusOrdererWidgetOptions object, return a new object with only
13
+ * the public options that should be exposed to the client.
14
+ */
15
+ declare function getOrdererPublicWidgetOptions(options: PerseusOrdererWidgetOptions): OrdererPublicWidgetOptions;
16
+ export default getOrdererPublicWidgetOptions;
@@ -0,0 +1,5 @@
1
+ import type { PerseusPassageWidgetOptions } from "../../data-schema";
2
+ import type { WidgetLogic } from "../logic-export.types";
3
+ export type PassageDefaultWidgetOptions = Pick<PerseusPassageWidgetOptions, "passageTitle" | "passageText" | "footnotes" | "showLineNumbers">;
4
+ declare const passageWidgetLogic: WidgetLogic;
5
+ export default passageWidgetLogic;
@@ -0,0 +1,4 @@
1
+ import type { WidgetLogic } from "../logic-export.types";
2
+ export type { PassageRefDefaultWidgetOptions } from "./passage-ref-upgrade";
3
+ declare const passageRefWidgetLogic: WidgetLogic;
4
+ export default passageRefWidgetLogic;
@@ -0,0 +1,7 @@
1
+ import type { PerseusPassageRefWidgetOptions } from "../../data-schema";
2
+ export declare const currentVersion: {
3
+ major: number;
4
+ minor: number;
5
+ };
6
+ export type PassageRefDefaultWidgetOptions = Pick<PerseusPassageRefWidgetOptions, "passageNumber" | "referenceNumber" | "summaryText">;
7
+ export declare const defaultWidgetOptions: PassageRefDefaultWidgetOptions;
@@ -0,0 +1,5 @@
1
+ import type { PerseusPassageRefTargetWidgetOptions } from "../../data-schema";
2
+ import type { WidgetLogic } from "../logic-export.types";
3
+ export type PassageRefTargetDefaultWidgetOptions = Pick<PerseusPassageRefTargetWidgetOptions, "content">;
4
+ declare const passageRefTargetWidgetLogic: WidgetLogic;
5
+ export default passageRefTargetWidgetLogic;
@@ -0,0 +1,5 @@
1
+ import type { PerseusPhetSimulationWidgetOptions } from "../../data-schema";
2
+ import type { WidgetLogic } from "../logic-export.types";
3
+ export type PhetSimulationDefaultWidgetOptions = Pick<PerseusPhetSimulationWidgetOptions, "url" | "description">;
4
+ declare const PhetSimulationWidgetLogic: WidgetLogic;
5
+ export default PhetSimulationWidgetLogic;
@@ -0,0 +1,5 @@
1
+ import type { PerseusPlotterWidgetOptions } from "../../data-schema";
2
+ import type { WidgetLogic } from "../logic-export.types";
3
+ export type PlotterDefaultWidgetOptions = Pick<PerseusPlotterWidgetOptions, "scaleY" | "maxY" | "snapsPerLine" | "correct" | "starting" | "type" | "labels" | "categories" | "picSize" | "picBoxHeight" | "plotDimensions" | "labelInterval" | "picUrl">;
4
+ declare const plotterWidgetLogic: WidgetLogic;
5
+ export default plotterWidgetLogic;
@@ -0,0 +1,5 @@
1
+ import type { PerseusPythonProgramWidgetOptions } from "../../data-schema";
2
+ import type { WidgetLogic } from "../logic-export.types";
3
+ export type PythonProgramDefaultWidgetOptions = Pick<PerseusPythonProgramWidgetOptions, "programID" | "height">;
4
+ declare const pythonProgramWidgetLogic: WidgetLogic;
5
+ export default pythonProgramWidgetLogic;
@@ -0,0 +1,4 @@
1
+ import type { WidgetLogic } from "../logic-export.types";
2
+ export type { RadioDefaultWidgetOptions } from "./radio-upgrade";
3
+ declare const radioWidgetLogic: WidgetLogic;
4
+ export default radioWidgetLogic;
@@ -0,0 +1,10 @@
1
+ import type { PerseusRadioWidgetOptions } from "../../data-schema";
2
+ export declare const currentVersion: {
3
+ major: number;
4
+ minor: number;
5
+ };
6
+ export declare const widgetOptionsUpgrades: {
7
+ readonly "1": (v0props: any) => PerseusRadioWidgetOptions;
8
+ };
9
+ export type RadioDefaultWidgetOptions = Pick<PerseusRadioWidgetOptions, "choices" | "displayCount" | "randomize" | "hasNoneOfTheAbove" | "multipleSelect" | "countChoices" | "deselectEnabled">;
10
+ export declare const defaultWidgetOptions: RadioDefaultWidgetOptions;
@@ -0,0 +1,5 @@
1
+ import type { PerseusSorterWidgetOptions } from "../../data-schema";
2
+ import type { WidgetLogic } from "../logic-export.types";
3
+ export type SorterDefaultWidgetOptions = Pick<PerseusSorterWidgetOptions, "correct" | "layout" | "padding">;
4
+ declare const sorterWidgetLogic: WidgetLogic;
5
+ export default sorterWidgetLogic;
@@ -0,0 +1,5 @@
1
+ import type { PerseusTableWidgetOptions } from "../../data-schema";
2
+ import type { WidgetLogic } from "../logic-export.types";
3
+ export type TableDefaultWidgetOptions = Pick<PerseusTableWidgetOptions, "headers" | "rows" | "columns" | "answers">;
4
+ declare const tableWidgetLogic: WidgetLogic;
5
+ export default tableWidgetLogic;
@@ -0,0 +1,5 @@
1
+ import type { PerseusVideoWidgetOptions } from "../../data-schema";
2
+ import type { WidgetLogic } from "../logic-export.types";
3
+ export type VideoDefaultWidgetOptions = Pick<PerseusVideoWidgetOptions, "location">;
4
+ declare const videoWidgetLogic: WidgetLogic;
5
+ export default videoWidgetLogic;
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "description": "Shared Perseus infrastructure",
4
4
  "author": "Khan Academy",
5
5
  "license": "MIT",
6
- "version": "3.1.0",
6
+ "version": "3.3.0",
7
7
  "publishConfig": {
8
8
  "access": "public"
9
9
  },