@khanacademy/perseus-core 3.2.0 → 3.4.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.
- package/dist/data-schema.d.ts +57 -12
- package/dist/es/index.js +2968 -280
- package/dist/es/index.js.map +1 -1
- package/dist/index.d.ts +80 -1
- package/dist/index.js +3027 -281
- package/dist/index.js.map +1 -1
- package/dist/parse-perseus-json/error-tracking-parse-context.d.ts +9 -0
- package/dist/parse-perseus-json/exhaustive-test-tool/index.d.ts +2 -0
- package/dist/parse-perseus-json/general-purpose-parsers/any.d.ts +2 -0
- package/dist/parse-perseus-json/general-purpose-parsers/array.d.ts +2 -0
- package/dist/parse-perseus-json/general-purpose-parsers/array.typetest.d.ts +1 -0
- package/dist/parse-perseus-json/general-purpose-parsers/boolean.d.ts +2 -0
- package/dist/parse-perseus-json/general-purpose-parsers/constant.d.ts +4 -0
- package/dist/parse-perseus-json/general-purpose-parsers/convert.d.ts +2 -0
- package/dist/parse-perseus-json/general-purpose-parsers/defaulted.d.ts +2 -0
- package/dist/parse-perseus-json/general-purpose-parsers/discriminated-union.d.ts +21 -0
- package/dist/parse-perseus-json/general-purpose-parsers/discriminated-union.typetest.d.ts +1 -0
- package/dist/parse-perseus-json/general-purpose-parsers/enumeration.d.ts +2 -0
- package/dist/parse-perseus-json/general-purpose-parsers/enumeration.typetest.d.ts +1 -0
- package/dist/parse-perseus-json/general-purpose-parsers/index.d.ts +17 -0
- package/dist/parse-perseus-json/general-purpose-parsers/is-object.d.ts +1 -0
- package/dist/parse-perseus-json/general-purpose-parsers/nullable.d.ts +2 -0
- package/dist/parse-perseus-json/general-purpose-parsers/number.d.ts +2 -0
- package/dist/parse-perseus-json/general-purpose-parsers/object.d.ts +6 -0
- package/dist/parse-perseus-json/general-purpose-parsers/optional.d.ts +2 -0
- package/dist/parse-perseus-json/general-purpose-parsers/pair.d.ts +2 -0
- package/dist/parse-perseus-json/general-purpose-parsers/pipe-parsers.d.ts +7 -0
- package/dist/parse-perseus-json/general-purpose-parsers/pipe-parsers.typetest.d.ts +1 -0
- package/dist/parse-perseus-json/general-purpose-parsers/record.d.ts +2 -0
- package/dist/parse-perseus-json/general-purpose-parsers/string-to-number.d.ts +2 -0
- package/dist/parse-perseus-json/general-purpose-parsers/string.d.ts +2 -0
- package/dist/parse-perseus-json/general-purpose-parsers/test-helpers.d.ts +8 -0
- package/dist/parse-perseus-json/general-purpose-parsers/trio.d.ts +2 -0
- package/dist/parse-perseus-json/general-purpose-parsers/union.d.ts +7 -0
- package/dist/parse-perseus-json/general-purpose-parsers/union.typetest.d.ts +1 -0
- package/dist/parse-perseus-json/general-purpose-parsers/unknown.d.ts +2 -0
- package/dist/parse-perseus-json/index.d.ts +45 -0
- package/dist/parse-perseus-json/object-path.d.ts +2 -0
- package/dist/parse-perseus-json/parse-failure-detail.d.ts +2 -0
- package/dist/parse-perseus-json/parse.d.ts +3 -0
- package/dist/parse-perseus-json/parser-types.d.ts +30 -0
- package/dist/parse-perseus-json/perseus-parsers/categorizer-widget.d.ts +3 -0
- package/dist/parse-perseus-json/perseus-parsers/cs-program-widget.d.ts +3 -0
- package/dist/parse-perseus-json/perseus-parsers/definition-widget.d.ts +3 -0
- package/dist/parse-perseus-json/perseus-parsers/dropdown-widget.d.ts +3 -0
- package/dist/parse-perseus-json/perseus-parsers/explanation-widget.d.ts +3 -0
- package/dist/parse-perseus-json/perseus-parsers/expression-widget.d.ts +3 -0
- package/dist/parse-perseus-json/perseus-parsers/graded-group-set-widget.d.ts +3 -0
- package/dist/parse-perseus-json/perseus-parsers/graded-group-widget.d.ts +16 -0
- package/dist/parse-perseus-json/perseus-parsers/grapher-widget.d.ts +3 -0
- package/dist/parse-perseus-json/perseus-parsers/group-widget.d.ts +3 -0
- package/dist/parse-perseus-json/perseus-parsers/hint.d.ts +3 -0
- package/dist/parse-perseus-json/perseus-parsers/iframe-widget.d.ts +3 -0
- package/dist/parse-perseus-json/perseus-parsers/image-widget.d.ts +3 -0
- package/dist/parse-perseus-json/perseus-parsers/images-map.d.ts +5 -0
- package/dist/parse-perseus-json/perseus-parsers/input-number-widget.d.ts +3 -0
- package/dist/parse-perseus-json/perseus-parsers/interaction-widget.d.ts +3 -0
- package/dist/parse-perseus-json/perseus-parsers/interactive-graph-widget.d.ts +3 -0
- package/dist/parse-perseus-json/perseus-parsers/label-image-widget.d.ts +3 -0
- package/dist/parse-perseus-json/perseus-parsers/matcher-widget.d.ts +3 -0
- package/dist/parse-perseus-json/perseus-parsers/matrix-widget.d.ts +3 -0
- package/dist/parse-perseus-json/perseus-parsers/measurer-widget.d.ts +3 -0
- package/dist/parse-perseus-json/perseus-parsers/molecule-renderer-widget.d.ts +3 -0
- package/dist/parse-perseus-json/perseus-parsers/number-line-widget.d.ts +3 -0
- package/dist/parse-perseus-json/perseus-parsers/numeric-input-widget.d.ts +3 -0
- package/dist/parse-perseus-json/perseus-parsers/orderer-widget.d.ts +3 -0
- package/dist/parse-perseus-json/perseus-parsers/passage-ref-widget.d.ts +3 -0
- package/dist/parse-perseus-json/perseus-parsers/passage-widget.d.ts +3 -0
- package/dist/parse-perseus-json/perseus-parsers/perseus-article.d.ts +3 -0
- package/dist/parse-perseus-json/perseus-parsers/perseus-image-background.d.ts +3 -0
- package/dist/parse-perseus-json/perseus-parsers/perseus-item.d.ts +3 -0
- package/dist/parse-perseus-json/perseus-parsers/perseus-renderer.d.ts +3 -0
- package/dist/parse-perseus-json/perseus-parsers/phet-simulation-widget.d.ts +3 -0
- package/dist/parse-perseus-json/perseus-parsers/plotter-widget.d.ts +3 -0
- package/dist/parse-perseus-json/perseus-parsers/python-program-widget.d.ts +3 -0
- package/dist/parse-perseus-json/perseus-parsers/radio-widget.d.ts +3 -0
- package/dist/parse-perseus-json/perseus-parsers/sorter-widget.d.ts +3 -0
- package/dist/parse-perseus-json/perseus-parsers/table-widget.d.ts +3 -0
- package/dist/parse-perseus-json/perseus-parsers/versioned-widget-options.d.ts +36 -0
- package/dist/parse-perseus-json/perseus-parsers/video-widget.d.ts +3 -0
- package/dist/parse-perseus-json/perseus-parsers/widget.d.ts +7 -0
- package/dist/parse-perseus-json/perseus-parsers/widgets-map.d.ts +3 -0
- package/dist/parse-perseus-json/result.d.ts +16 -0
- package/dist/types.d.ts +1 -0
- package/dist/utils/is-real-json-parse.d.ts +1 -0
- package/dist/utils/widget-id-utils.d.ts +38 -0
- package/dist/widgets/categorizer/categorizer-util.d.ts +17 -0
- package/dist/widgets/categorizer/index.d.ts +5 -0
- package/dist/widgets/core-widget-registry.d.ts +28 -0
- package/dist/widgets/cs-program/cs-program-util.d.ts +2 -0
- package/dist/widgets/cs-program/index.d.ts +5 -0
- package/dist/widgets/definition/index.d.ts +5 -0
- package/dist/widgets/dropdown/dropdown-util.d.ts +20 -0
- package/dist/widgets/dropdown/index.d.ts +5 -0
- package/dist/widgets/explanation/index.d.ts +5 -0
- package/dist/widgets/expression/expression-upgrade.d.ts +10 -0
- package/dist/widgets/expression/expression-util.d.ts +19 -0
- package/dist/widgets/expression/index.d.ts +4 -0
- package/dist/widgets/graded-group/index.d.ts +5 -0
- package/dist/widgets/graded-group-set/index.d.ts +5 -0
- package/dist/widgets/grapher/index.d.ts +5 -0
- package/dist/widgets/group/index.d.ts +5 -0
- package/dist/widgets/iframe/index.d.ts +5 -0
- package/dist/widgets/image/index.d.ts +5 -0
- package/dist/widgets/input-number/index.d.ts +5 -0
- package/dist/widgets/interaction/index.d.ts +5 -0
- package/dist/widgets/interactive-graph/index.d.ts +5 -0
- package/dist/widgets/label-image/index.d.ts +5 -0
- package/dist/widgets/label-image/label-image-util.d.ts +19 -0
- package/dist/widgets/logic-export.types.d.ts +13 -0
- package/dist/widgets/matcher/index.d.ts +5 -0
- package/dist/widgets/matrix/index.d.ts +5 -0
- package/dist/widgets/measurer/index.d.ts +4 -0
- package/dist/widgets/measurer/measurer-upgrade.d.ts +10 -0
- package/dist/widgets/number-line/index.d.ts +5 -0
- package/dist/widgets/number-line/number-line-util.d.ts +4 -0
- package/dist/widgets/numeric-input/index.d.ts +5 -0
- package/dist/widgets/numeric-input/numeric-input-util.d.ts +19 -0
- package/dist/widgets/orderer/index.d.ts +5 -0
- package/dist/widgets/orderer/orderer-util.d.ts +16 -0
- package/dist/widgets/passage/index.d.ts +5 -0
- package/dist/widgets/passage-ref/index.d.ts +4 -0
- package/dist/widgets/passage-ref/passage-ref-upgrade.d.ts +7 -0
- package/dist/widgets/passage-ref-target/index.d.ts +5 -0
- package/dist/widgets/phet-simulation/index.d.ts +5 -0
- package/dist/widgets/plotter/index.d.ts +5 -0
- package/dist/widgets/python-program/index.d.ts +5 -0
- package/dist/widgets/radio/index.d.ts +4 -0
- package/dist/widgets/radio/radio-upgrade.d.ts +10 -0
- package/dist/widgets/sorter/index.d.ts +5 -0
- package/dist/widgets/sorter/sorter-util.d.ts +16 -0
- package/dist/widgets/table/index.d.ts +5 -0
- package/dist/widgets/upgrade.d.ts +3 -0
- package/dist/widgets/video/index.d.ts +5 -0
- package/package.json +1 -1
package/dist/data-schema.d.ts
CHANGED
|
@@ -33,6 +33,49 @@ export type Range = Interval;
|
|
|
33
33
|
export type Size = [width: number, height: number];
|
|
34
34
|
export type CollinearTuple = [Vector2, Vector2];
|
|
35
35
|
export type ShowSolutions = "all" | "selected" | "none";
|
|
36
|
+
/**
|
|
37
|
+
* A utility type that constructs a widget map from a "registry interface".
|
|
38
|
+
* The keys of the registry should be the widget type (aka, "categorizer" or
|
|
39
|
+
* "radio", etc) and the value should be the option type stored in the value
|
|
40
|
+
* of the map.
|
|
41
|
+
*
|
|
42
|
+
* You can think of this as a type that generates another type. We use
|
|
43
|
+
* "registry interfaces" as a way to keep a set of widget types to their data
|
|
44
|
+
* type in several places in Perseus. This type then allows us to generate a
|
|
45
|
+
* map type that maps a widget id to its data type and keep strong typing by
|
|
46
|
+
* widget id.
|
|
47
|
+
*
|
|
48
|
+
* For example, given a fictitious registry such as this:
|
|
49
|
+
*
|
|
50
|
+
* ```
|
|
51
|
+
* interface DummyRegistry {
|
|
52
|
+
* categorizer: { categories: ReadonlyArray<string> };
|
|
53
|
+
* dropdown: { choices: ReadonlyArray<string> }:
|
|
54
|
+
* }
|
|
55
|
+
* ```
|
|
56
|
+
*
|
|
57
|
+
* If we create a DummyMap using this helper:
|
|
58
|
+
*
|
|
59
|
+
* ```
|
|
60
|
+
* type DummyMap = MakeWidgetMap<DummyRegistry>;
|
|
61
|
+
* ```
|
|
62
|
+
*
|
|
63
|
+
* We'll get a map that looks like this:
|
|
64
|
+
*
|
|
65
|
+
* ```
|
|
66
|
+
* type DummyMap = {
|
|
67
|
+
* `categorizer ${number}`: { categories: ReadonlyArray<string> };
|
|
68
|
+
* `dropdown ${number}`: { choices: ReadonlyArray<string> };
|
|
69
|
+
* }
|
|
70
|
+
* ```
|
|
71
|
+
*
|
|
72
|
+
* We use interfaces for the registries so that they can be extended in cases
|
|
73
|
+
* where the consuming app brings along their own widgets. Interfaces in
|
|
74
|
+
* TypeScript are always open (ie. you can extend them) whereas types aren't.
|
|
75
|
+
*/
|
|
76
|
+
export type MakeWidgetMap<TRegistry> = {
|
|
77
|
+
[Property in keyof TRegistry as `${Property & string} ${number}`]: TRegistry[Property];
|
|
78
|
+
};
|
|
36
79
|
/**
|
|
37
80
|
* Our core set of Perseus widgets.
|
|
38
81
|
*
|
|
@@ -54,7 +97,7 @@ export type ShowSolutions = "all" | "selected" | "none";
|
|
|
54
97
|
* `PerseusWidgets` with the one defined below.
|
|
55
98
|
*
|
|
56
99
|
* ```typescript
|
|
57
|
-
* declare module "@khanacademy/perseus" {
|
|
100
|
+
* declare module "@khanacademy/perseus-core" {
|
|
58
101
|
* interface PerseusWidgetTypes {
|
|
59
102
|
* // A new widget
|
|
60
103
|
* "new-awesomeness": MyAwesomeNewWidget;
|
|
@@ -96,7 +139,6 @@ export interface PerseusWidgetTypes {
|
|
|
96
139
|
matcher: MatcherWidget;
|
|
97
140
|
matrix: MatrixWidget;
|
|
98
141
|
measurer: MeasurerWidget;
|
|
99
|
-
"mock-widget": MockWidget;
|
|
100
142
|
"molecule-renderer": MoleculeRendererWidget;
|
|
101
143
|
"number-line": NumberLineWidget;
|
|
102
144
|
"numeric-input": NumericInputWidget;
|
|
@@ -128,9 +170,18 @@ export interface PerseusWidgetTypes {
|
|
|
128
170
|
* @see {@link PerseusWidgetTypes} additional widgets can be added to this map type
|
|
129
171
|
* by augmenting the PerseusWidgetTypes with new widget types!
|
|
130
172
|
*/
|
|
131
|
-
export type PerseusWidgetsMap =
|
|
132
|
-
|
|
133
|
-
|
|
173
|
+
export type PerseusWidgetsMap = MakeWidgetMap<PerseusWidgetTypes>;
|
|
174
|
+
/**
|
|
175
|
+
* PerseusWidget is a union of all the different types of widget options that
|
|
176
|
+
* Perseus knows about.
|
|
177
|
+
*
|
|
178
|
+
* Thanks to it being based on PerseusWidgetTypes interface, this union is
|
|
179
|
+
* automatically extended to include widgets used in tests without those widget
|
|
180
|
+
* option types seeping into our production types.
|
|
181
|
+
*
|
|
182
|
+
* @see MockWidget for an example
|
|
183
|
+
*/
|
|
184
|
+
export type PerseusWidget = PerseusWidgetTypes[keyof PerseusWidgetTypes];
|
|
134
185
|
/**
|
|
135
186
|
* A "PerseusItem" is a classic Perseus item. It is rendered by the
|
|
136
187
|
* `ServerItemRenderer` and the layout is pre-set.
|
|
@@ -228,7 +279,6 @@ export type LabelImageWidget = WidgetOptions<'label-image', PerseusLabelImageWid
|
|
|
228
279
|
export type MatcherWidget = WidgetOptions<'matcher', PerseusMatcherWidgetOptions>;
|
|
229
280
|
export type MatrixWidget = WidgetOptions<'matrix', PerseusMatrixWidgetOptions>;
|
|
230
281
|
export type MeasurerWidget = WidgetOptions<'measurer', PerseusMeasurerWidgetOptions>;
|
|
231
|
-
export type MockWidget = WidgetOptions<'mock-widget', MockWidgetOptions>;
|
|
232
282
|
export type NumberLineWidget = WidgetOptions<'number-line', PerseusNumberLineWidgetOptions>;
|
|
233
283
|
export type NumericInputWidget = WidgetOptions<'numeric-input', PerseusNumericInputWidgetOptions>;
|
|
234
284
|
export type OrdererWidget = WidgetOptions<'orderer', PerseusOrdererWidgetOptions>;
|
|
@@ -245,7 +295,6 @@ export type MoleculeRendererWidget = WidgetOptions<'molecule-renderer', PerseusM
|
|
|
245
295
|
export type RefTargetWidget = WidgetOptions<'passage-ref-target', PerseusPassageRefTargetWidgetOptions>;
|
|
246
296
|
export type VideoWidget = WidgetOptions<'video', PerseusVideoWidgetOptions>;
|
|
247
297
|
export type DeprecatedStandinWidget = WidgetOptions<'deprecated-standin', object>;
|
|
248
|
-
export type PerseusWidget = CategorizerWidget | CSProgramWidget | DefinitionWidget | DropdownWidget | ExplanationWidget | ExpressionWidget | GradedGroupSetWidget | GradedGroupWidget | GrapherWidget | GroupWidget | IFrameWidget | ImageWidget | InputNumberWidget | InteractionWidget | InteractiveGraphWidget | LabelImageWidget | MatcherWidget | MatrixWidget | MeasurerWidget | MockWidget | MoleculeRendererWidget | NumberLineWidget | NumericInputWidget | OrdererWidget | PassageRefWidget | PassageWidget | PhetSimulationWidget | PlotterWidget | PythonProgramWidget | RadioWidget | RefTargetWidget | SorterWidget | TableWidget | VideoWidget | DeprecatedStandinWidget;
|
|
249
298
|
/**
|
|
250
299
|
* A background image applied to various widgets.
|
|
251
300
|
*/
|
|
@@ -723,7 +772,7 @@ export type PerseusNumberLineWidgetOptions = {
|
|
|
723
772
|
correctRel: string | null | undefined;
|
|
724
773
|
correctX: number | null;
|
|
725
774
|
initialX: number | null | undefined;
|
|
726
|
-
|
|
775
|
+
showTooltips?: boolean;
|
|
727
776
|
static: boolean;
|
|
728
777
|
};
|
|
729
778
|
export type PerseusOrdererWidgetOptions = {
|
|
@@ -955,10 +1004,6 @@ export type PerseusVideoWidgetOptions = {
|
|
|
955
1004
|
location: string;
|
|
956
1005
|
static?: boolean;
|
|
957
1006
|
};
|
|
958
|
-
export type MockWidgetOptions = {
|
|
959
|
-
static?: boolean;
|
|
960
|
-
value: string;
|
|
961
|
-
};
|
|
962
1007
|
export type PerseusInputNumberWidgetOptions = {
|
|
963
1008
|
answerType?: "number" | "decimal" | "integer" | "rational" | "improper" | "mixed" | "percent" | "pi";
|
|
964
1009
|
inexact?: boolean;
|