@khanacademy/perseus 7.2.1 → 9.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.
- package/CHANGELOG.md +47 -0
- package/dist/article-renderer.d.ts +27 -40
- package/dist/components/math-input.d.ts +1 -1
- package/dist/components/sortable.d.ts +1 -1
- package/dist/components/tex-buttons.d.ts +1 -1
- package/dist/dependencies.d.ts +7 -1
- package/dist/es/index.js +1205 -1218
- package/dist/es/index.js.map +1 -1
- package/dist/hints-renderer.d.ts +1 -1
- package/dist/index.js +1207 -1221
- package/dist/index.js.map +1 -1
- package/dist/interaction-tracker.d.ts +3 -3
- package/dist/item-renderer.d.ts +2 -1
- package/dist/mixins/provide-keypad.d.ts +15 -12
- package/dist/multi-items/multi-renderer.d.ts +2 -1
- package/dist/perseus-api.d.ts +2 -2
- package/dist/renderer.d.ts +1 -1
- package/dist/server-item-renderer.d.ts +3 -1
- package/dist/types.d.ts +32 -11
- package/dist/widgets/expression.d.ts +410 -13
- package/dist/widgets/graded-group.d.ts +3 -3
- package/dist/widgets/interactive-graph.d.ts +1 -1
- package/dist/widgets/sequence.d.ts +3 -3
- package/dist/widgets/table.d.ts +8 -1
- package/dist/widgets.d.ts +1 -1
- package/package.json +34 -34
- package/src/__stories__/article-renderer.stories.tsx +35 -2
- package/src/__testdata__/article-renderer.testdata.ts +74 -1
- package/src/__testdata__/item-renderer.testdata.ts +1 -1
- package/src/__testdata__/renderer.testdata.ts +1 -1
- package/src/__tests__/item-renderer.test.tsx +13 -2
- package/src/__tests__/mock-asset-loading-widget.tsx +1 -1
- package/src/__tests__/perseus-markdown.test.ts +17 -17
- package/src/__tests__/renderer-api.test.tsx +21 -21
- package/src/__tests__/renderer.test.tsx +13 -13
- package/src/__tests__/server-item-renderer.test.tsx +12 -4
- package/src/__tests__/tex-wrangler.test.ts +1 -1
- package/src/article-renderer.tsx +75 -66
- package/src/components/__tests__/number-input.test.tsx +4 -4
- package/src/components/__tests__/sortable.test.tsx +2 -2
- package/src/components/fixed-to-responsive.tsx +1 -1
- package/src/components/graph.tsx +11 -11
- package/src/components/graphie-classes.ts +7 -7
- package/src/components/graphie.tsx +14 -14
- package/src/components/highlighting/highlightable-content.tsx +1 -1
- package/src/components/highlighting/ui/highlight-renderer.tsx +1 -1
- package/src/components/highlighting/ui/util.ts +2 -2
- package/src/components/highlighting/word-indexer.tsx +4 -4
- package/src/components/icon.tsx +1 -1
- package/src/components/image-loader.tsx +4 -4
- package/src/components/input-with-examples.tsx +2 -2
- package/src/components/lint.tsx +1 -1
- package/src/components/math-input.tsx +5 -5
- package/src/components/math-output.tsx +1 -1
- package/src/components/multi-button-group.tsx +1 -1
- package/src/components/number-input.tsx +10 -10
- package/src/components/prop-check-box.tsx +1 -1
- package/src/components/simple-keypad-input.tsx +4 -4
- package/src/components/sortable.tsx +42 -41
- package/src/components/svg-image.tsx +12 -12
- package/src/components/tex-buttons.tsx +4 -3
- package/src/components/text-input.tsx +8 -8
- package/src/components/text-list-editor.tsx +11 -11
- package/src/components/visibility-observer/create-visibility-observer.ts +1 -1
- package/src/components/visibility-observer/visibility-observer.tsx +2 -2
- package/src/components/zoomable-tex.tsx +3 -3
- package/src/components/zoomable.tsx +8 -8
- package/src/dependencies.ts +16 -1
- package/src/hint-renderer.tsx +3 -3
- package/src/hints-renderer.tsx +11 -11
- package/src/init.ts +1 -1
- package/src/interaction-tracker.ts +7 -7
- package/src/interactive2/__tests__/movable-point.test.ts +1 -1
- package/src/interactive2/interactive-util.ts +6 -6
- package/src/interactive2/movable-helper-methods.ts +2 -2
- package/src/interactive2/movable-line-options.ts +37 -37
- package/src/interactive2/movable-line.ts +2 -2
- package/src/interactive2/movable-point-options.ts +29 -29
- package/src/interactive2/movable-point.tsx +2 -2
- package/src/interactive2/movable-polygon-options.ts +45 -45
- package/src/interactive2/movable-polygon.ts +2 -2
- package/src/interactive2/movable.ts +2 -2
- package/src/interactive2/objective_.ts +1 -1
- package/src/interactive2/wrapped-defaults.ts +2 -2
- package/src/interactive2/wrapped-ellipse.ts +9 -9
- package/src/interactive2/wrapped-line.ts +8 -8
- package/src/interactive2/wrapped-path.ts +5 -5
- package/src/item-renderer.tsx +66 -48
- package/src/mixins/changeable.ts +2 -2
- package/src/mixins/editor-jsonify.ts +1 -1
- package/src/mixins/provide-keypad.tsx +23 -37
- package/src/mixins/widget-jsonify-deprecated.ts +1 -1
- package/src/multi-items/__tests__/items.test.ts +1 -1
- package/src/multi-items/__tests__/multi-renderer.test.tsx +13 -8
- package/src/multi-items/__tests__/trees.test.ts +12 -12
- package/src/multi-items/item-types.ts +2 -2
- package/src/multi-items/items.ts +1 -1
- package/src/multi-items/multi-renderer.tsx +30 -18
- package/src/multi-items/prop-type-builders.ts +2 -2
- package/src/multi-items/tree-types.ts +4 -4
- package/src/multi-items/trees.ts +16 -16
- package/src/perseus-env.ts +2 -2
- package/src/perseus-markdown.tsx +5 -5
- package/src/renderer.tsx +39 -39
- package/src/server-item-renderer.tsx +26 -21
- package/src/sigfigs.ts +1 -1
- package/src/traversal.ts +1 -1
- package/src/types.ts +52 -16
- package/src/util/answer-types.ts +14 -14
- package/src/util/geometry.ts +7 -7
- package/src/util/graphie.ts +32 -32
- package/src/util/interactive.ts +118 -118
- package/src/util/math.ts +4 -4
- package/src/util/react-render.tsx +1 -1
- package/src/util/scroll-utils.ts +2 -2
- package/src/util/tex.ts +3 -3
- package/src/util.ts +15 -15
- package/src/widget-container.tsx +1 -1
- package/src/widgets/__stories__/definition.stories.tsx +8 -1
- package/src/widgets/__stories__/expression.stories.tsx +2 -2
- package/src/widgets/__stories__/test-keypad-context-wrapper.tsx +3 -3
- package/src/widgets/__testdata__/numeric-input.testdata.ts +1 -1
- package/src/widgets/__tests__/__snapshots__/video.test.ts.snap +2 -2
- package/src/widgets/__tests__/{expression.test.ts → expression.test.tsx} +77 -11
- package/src/widgets/__tests__/grapher.cypress.ts +32 -32
- package/src/widgets/__tests__/group.test.tsx +1 -1
- package/src/widgets/__tests__/interactive-graph.cypress.ts +40 -40
- package/src/widgets/__tests__/interactive-graph.test.ts +1 -1
- package/src/widgets/__tests__/numeric-input.test.ts +1 -1
- package/src/widgets/__tests__/passage.test.tsx +2 -2
- package/src/widgets/__tests__/plotter.test.tsx +2 -1
- package/src/widgets/__tests__/radio/base-radio.test.tsx +7 -7
- package/src/widgets/__tests__/renderQuestion.tsx +29 -21
- package/src/widgets/categorizer.tsx +4 -4
- package/src/widgets/cs-program.tsx +2 -2
- package/src/widgets/dropdown.tsx +1 -1
- package/src/widgets/expression.tsx +92 -57
- package/src/widgets/graded-group-set.tsx +5 -5
- package/src/widgets/graded-group.tsx +29 -21
- package/src/widgets/grapher/util.tsx +6 -6
- package/src/widgets/grapher.tsx +10 -10
- package/src/widgets/group.tsx +3 -3
- package/src/widgets/iframe.tsx +2 -2
- package/src/widgets/image.tsx +1 -1
- package/src/widgets/input-number.tsx +4 -4
- package/src/widgets/interaction.tsx +77 -77
- package/src/widgets/interactive-graph.tsx +109 -107
- package/src/widgets/label-image/marker.tsx +2 -2
- package/src/widgets/label-image.test.ts +1 -1
- package/src/widgets/label-image.tsx +7 -7
- package/src/widgets/lights-puzzle.tsx +2 -2
- package/src/widgets/matcher.tsx +6 -6
- package/src/widgets/matrix.tsx +20 -20
- package/src/widgets/measurer.tsx +3 -3
- package/src/widgets/molecule/__tests__/layout.test.ts +4 -4
- package/src/widgets/molecule/__tests__/parser.test.ts +14 -14
- package/src/widgets/molecule/smiles-parser.ts +3 -3
- package/src/widgets/molecule.tsx +4 -4
- package/src/widgets/number-line.tsx +11 -11
- package/src/widgets/numeric-input.tsx +11 -11
- package/src/widgets/orderer.tsx +38 -38
- package/src/widgets/passage/__tests__/passage-markdown.test.ts +1 -1
- package/src/widgets/passage/passage-markdown.tsx +4 -4
- package/src/widgets/passage-ref-target.tsx +1 -1
- package/src/widgets/passage-ref.tsx +4 -6
- package/src/widgets/passage.tsx +11 -11
- package/src/widgets/plotter.tsx +9 -9
- package/src/widgets/radio/base-radio.tsx +11 -11
- package/src/widgets/radio/choice-icon/choice-icon.tsx +2 -2
- package/src/widgets/radio/choice.tsx +1 -1
- package/src/widgets/radio/option-status.tsx +1 -1
- package/src/widgets/radio/widget.tsx +6 -6
- package/src/widgets/radio.ts +1 -1
- package/src/widgets/reaction-diagram.tsx +8 -8
- package/src/widgets/sequence.tsx +12 -4
- package/src/widgets/simulator.tsx +14 -14
- package/src/widgets/sorter.tsx +4 -4
- package/src/widgets/table.tsx +8 -8
- package/src/widgets/transformer.tsx +92 -92
- package/src/widgets/unit.tsx +17 -17
- package/src/widgets/video-transcript-link.test.tsx +3 -3
- package/src/widgets/video-transcript-link.tsx +1 -1
- package/src/widgets/video.tsx +1 -1
- package/src/widgets.ts +5 -5
- package/src/zoom.ts +22 -22
- package/tsconfig-build.tsbuildinfo +1 -1
- package/dist/a11y.js.flow +0 -11
- package/dist/all-widgets.js.flow +0 -33
- package/dist/article-renderer.js.flow +0 -73
- package/dist/asset-context.js.flow +0 -15
- package/dist/basic-widgets.js.flow +0 -33
- package/dist/components/button-group.js.flow +0 -33
- package/dist/components/constants.js.flow +0 -13
- package/dist/components/fixed-to-responsive.js.flow +0 -34
- package/dist/components/graph.js.flow +0 -66
- package/dist/components/graphie-classes.js.flow +0 -19
- package/dist/components/graphie-movables.js.flow +0 -22
- package/dist/components/graphie.js.flow +0 -69
- package/dist/components/highlighting/highlightable-content.js.flow +0 -56
- package/dist/components/highlighting/highlights.js.flow +0 -54
- package/dist/components/highlighting/ranges.js.flow +0 -60
- package/dist/components/highlighting/types.js.flow +0 -70
- package/dist/components/highlighting/ui/highlight-renderer.js.flow +0 -43
- package/dist/components/highlighting/ui/highlight-set-renderer.js.flow +0 -41
- package/dist/components/highlighting/ui/highlight-tooltip.js.flow +0 -22
- package/dist/components/highlighting/ui/highlighting-ui.js.flow +0 -30
- package/dist/components/highlighting/ui/selection-tracker.js.flow +0 -54
- package/dist/components/highlighting/ui/types.js.flow +0 -22
- package/dist/components/highlighting/ui/util.js.flow +0 -42
- package/dist/components/highlighting/word-indexer.js.flow +0 -21
- package/dist/components/hud.js.flow +0 -14
- package/dist/components/icon.js.flow +0 -31
- package/dist/components/image-loader.js.flow +0 -49
- package/dist/components/info-tip/info-tip.js.flow +0 -20
- package/dist/components/info-tip.js.flow +0 -18
- package/dist/components/inline-icon.js.flow +0 -39
- package/dist/components/input-with-examples.js.flow +0 -58
- package/dist/components/lint.js.flow +0 -58
- package/dist/components/math-input.js.flow +0 -49
- package/dist/components/math-output.js.flow +0 -33
- package/dist/components/multi-button-group.js.flow +0 -35
- package/dist/components/number-input.js.flow +0 -42
- package/dist/components/prop-check-box.js.flow +0 -8
- package/dist/components/range-input.js.flow +0 -20
- package/dist/components/simple-keypad-input.js.flow +0 -16
- package/dist/components/sortable.js.flow +0 -91
- package/dist/components/stub-tag-editor.js.flow +0 -18
- package/dist/components/svg-image.js.flow +0 -85
- package/dist/components/tex-buttons.js.flow +0 -26
- package/dist/components/tex.js.flow +0 -25
- package/dist/components/text-input.js.flow +0 -39
- package/dist/components/text-list-editor.js.flow +0 -22
- package/dist/components/tooltip.js.flow +0 -51
- package/dist/components/visibility-observer/create-visibility-observer.js.flow +0 -23
- package/dist/components/visibility-observer/get-scroll-parent.js.flow +0 -7
- package/dist/components/visibility-observer/visibility-observer.js.flow +0 -36
- package/dist/components/zoomable-tex.js.flow +0 -18
- package/dist/components/zoomable.js.flow +0 -70
- package/dist/components.js.flow +0 -22
- package/dist/definition-context.js.flow +0 -25
- package/dist/dependencies.js.flow +0 -9
- package/dist/error-boundary.js.flow +0 -19
- package/dist/extra-widgets.js.flow +0 -33
- package/dist/hint-renderer.js.flow +0 -32
- package/dist/hints-renderer.js.flow +0 -41
- package/dist/icon-paths.js.flow +0 -123
- package/dist/index.js.flow +0 -134
- package/dist/init.js.flow +0 -20
- package/dist/interaction-tracker.js.flow +0 -35
- package/dist/interactive2/interactive-util.js.flow +0 -50
- package/dist/interactive2/movable-helper-methods.js.flow +0 -15
- package/dist/interactive2/movable-line-options.js.flow +0 -44
- package/dist/interactive2/movable-line.js.flow +0 -8
- package/dist/interactive2/movable-point-options.js.flow +0 -44
- package/dist/interactive2/movable-point.js.flow +0 -8
- package/dist/interactive2/movable-polygon-options.js.flow +0 -47
- package/dist/interactive2/movable-polygon.js.flow +0 -8
- package/dist/interactive2/movable.js.flow +0 -8
- package/dist/interactive2/objective_.js.flow +0 -25
- package/dist/interactive2/types.js.flow +0 -8
- package/dist/interactive2/wrapped-defaults.js.flow +0 -11
- package/dist/interactive2/wrapped-ellipse.js.flow +0 -14
- package/dist/interactive2/wrapped-line.js.flow +0 -14
- package/dist/interactive2/wrapped-path.js.flow +0 -13
- package/dist/interactive2.js.flow +0 -16
- package/dist/item-renderer.js.flow +0 -132
- package/dist/item-version.js.flow +0 -11
- package/dist/jipt-paragraphs.js.flow +0 -14
- package/dist/loading-context.js.flow +0 -12
- package/dist/logging/log.js.flow +0 -62
- package/dist/mixins/changeable.js.flow +0 -33
- package/dist/mixins/editor-jsonify.js.flow +0 -10
- package/dist/mixins/provide-keypad.js.flow +0 -33
- package/dist/mixins/widget-jsonify-deprecated.js.flow +0 -11
- package/dist/mixins/widget-prop-denylist.js.flow +0 -20
- package/dist/multi-items/item-types.js.flow +0 -55
- package/dist/multi-items/items.js.flow +0 -66
- package/dist/multi-items/multi-renderer.js.flow +0 -213
- package/dist/multi-items/prop-type-builders.js.flow +0 -22
- package/dist/multi-items/shape-types.js.flow +0 -60
- package/dist/multi-items/shapes.js.flow +0 -25
- package/dist/multi-items/tree-types.js.flow +0 -45
- package/dist/multi-items/trees.js.flow +0 -147
- package/dist/multi-items.js.flow +0 -36
- package/dist/perseus-api.js.flow +0 -151
- package/dist/perseus-env.js.flow +0 -6
- package/dist/perseus-error.js.flow +0 -16
- package/dist/perseus-markdown.js.flow +0 -20
- package/dist/perseus-types.js.flow +0 -1041
- package/dist/question-paragraph.js.flow +0 -17
- package/dist/renderability.js.flow +0 -19
- package/dist/renderer.js.flow +0 -325
- package/dist/server-item-renderer.js.flow +0 -132
- package/dist/sigfigs.js.flow +0 -41
- package/dist/styles/constants.js.flow +0 -62
- package/dist/styles/global-constants.js.flow +0 -348
- package/dist/styles/global-styles.js.flow +0 -53
- package/dist/styles/media-queries.js.flow +0 -35
- package/dist/styles/shared.js.flow +0 -8
- package/dist/tex-wrangler.js.flow +0 -13
- package/dist/translation-linter.js.flow +0 -32
- package/dist/traversal.js.flow +0 -26
- package/dist/types.js.flow +0 -318
- package/dist/util/a11y.js.flow +0 -8
- package/dist/util/answer-types.js.flow +0 -49
- package/dist/util/colors.js.flow +0 -95
- package/dist/util/fix-passage-refs.js.flow +0 -8
- package/dist/util/geometry.js.flow +0 -37
- package/dist/util/graph-utils.js.flow +0 -9
- package/dist/util/graphie.js.flow +0 -8
- package/dist/util/interactive.js.flow +0 -11
- package/dist/util/katex-preprocess.js.flow +0 -12
- package/dist/util/math.js.flow +0 -62
- package/dist/util/mobile-native-utils.js.flow +0 -12
- package/dist/util/react-render.js.flow +0 -12
- package/dist/util/register-all-widgets-for-testing.js.flow +0 -7
- package/dist/util/scroll-utils.js.flow +0 -19
- package/dist/util/sizing-utils.js.flow +0 -20
- package/dist/util/tex.js.flow +0 -17
- package/dist/util/url-utils.js.flow +0 -11
- package/dist/util.graphie.js.flow +0 -14
- package/dist/util.js.flow +0 -319
- package/dist/version.js.flow +0 -17
- package/dist/widget-container.js.flow +0 -33
- package/dist/widgets/categorizer.js.flow +0 -70
- package/dist/widgets/cs-program.js.flow +0 -54
- package/dist/widgets/definition.js.flow +0 -57
- package/dist/widgets/dropdown.js.flow +0 -63
- package/dist/widgets/explanation.js.flow +0 -58
- package/dist/widgets/expression.js.flow +0 -116
- package/dist/widgets/graded-group-answer-bar.js.flow +0 -24
- package/dist/widgets/graded-group-set.js.flow +0 -65
- package/dist/widgets/graded-group.js.flow +0 -78
- package/dist/widgets/grapher/util.js.flow +0 -38
- package/dist/widgets/grapher.js.flow +0 -102
- package/dist/widgets/group.js.flow +0 -60
- package/dist/widgets/iframe.js.flow +0 -53
- package/dist/widgets/image.js.flow +0 -73
- package/dist/widgets/input-number.js.flow +0 -94
- package/dist/widgets/interaction/arrow-picker.js.flow +0 -21
- package/dist/widgets/interaction/color-picker.js.flow +0 -23
- package/dist/widgets/interaction/dash-picker.js.flow +0 -21
- package/dist/widgets/interaction/element-container.js.flow +0 -28
- package/dist/widgets/interaction.js.flow +0 -60
- package/dist/widgets/interactive-graph.js.flow +0 -239
- package/dist/widgets/label-image/answer-choices.js.flow +0 -55
- package/dist/widgets/label-image/marker.js.flow +0 -31
- package/dist/widgets/label-image/types.js.flow +0 -23
- package/dist/widgets/label-image.js.flow +0 -142
- package/dist/widgets/lights-puzzle.js.flow +0 -58
- package/dist/widgets/matcher.js.flow +0 -106
- package/dist/widgets/matrix.js.flow +0 -80
- package/dist/widgets/measurer.js.flow +0 -30
- package/dist/widgets/molecule/molecule-drawing.js.flow +0 -11
- package/dist/widgets/molecule/molecule-layout.js.flow +0 -96
- package/dist/widgets/molecule/smiles-parser.js.flow +0 -26
- package/dist/widgets/molecule.js.flow +0 -60
- package/dist/widgets/number-line.js.flow +0 -102
- package/dist/widgets/numeric-input.js.flow +0 -105
- package/dist/widgets/orderer.js.flow +0 -81
- package/dist/widgets/passage/passage-markdown.js.flow +0 -33
- package/dist/widgets/passage-ref-target.js.flow +0 -52
- package/dist/widgets/passage-ref.js.flow +0 -85
- package/dist/widgets/passage.js.flow +0 -157
- package/dist/widgets/plotter.js.flow +0 -112
- package/dist/widgets/radio/base-radio.js.flow +0 -50
- package/dist/widgets/radio/choice-a11y-text.js.flow +0 -14
- package/dist/widgets/radio/choice-icon/choice-icon.js.flow +0 -22
- package/dist/widgets/radio/choice-icon/cross-out-line.js.flow +0 -16
- package/dist/widgets/radio/choice-icon/shared-styles.js.flow +0 -11
- package/dist/widgets/radio/choice-none-above.js.flow +0 -16
- package/dist/widgets/radio/choice.js.flow +0 -29
- package/dist/widgets/radio/choice.jsx.fixture.js.flow +0 -7
- package/dist/widgets/radio/focus-ring.js.flow +0 -22
- package/dist/widgets/radio/option-status.js.flow +0 -16
- package/dist/widgets/radio/util.js.flow +0 -12
- package/dist/widgets/radio/widget.js.flow +0 -80
- package/dist/widgets/radio.js.flow +0 -31
- package/dist/widgets/reaction-diagram.js.flow +0 -46
- package/dist/widgets/sequence.js.flow +0 -53
- package/dist/widgets/simulator.js.flow +0 -107
- package/dist/widgets/sorter.js.flow +0 -102
- package/dist/widgets/table.js.flow +0 -67
- package/dist/widgets/transformer.js.flow +0 -127
- package/dist/widgets/unit.js.flow +0 -93
- package/dist/widgets/video-transcript-link.js.flow +0 -15
- package/dist/widgets/video.js.flow +0 -57
- package/dist/widgets.js.flow +0 -108
- package/dist/zoom.js.flow +0 -7
- package/src/multi-items/item-types.js.flow +0 -55
|
@@ -41,6 +41,7 @@ import {StyleSheet, css} from "aphrodite"; // eslint-disable-line import/no-extr
|
|
|
41
41
|
import lens from "hubble"; // eslint-disable-line import/no-extraneous-dependencies
|
|
42
42
|
import * as React from "react";
|
|
43
43
|
|
|
44
|
+
import {DependenciesContext} from "../dependencies";
|
|
44
45
|
import HintsRenderer from "../hints-renderer";
|
|
45
46
|
import {Errors, Log} from "../logging/log";
|
|
46
47
|
import Renderer from "../renderer";
|
|
@@ -50,7 +51,12 @@ import {itemToTree} from "./items";
|
|
|
50
51
|
import {buildMapper} from "./trees";
|
|
51
52
|
|
|
52
53
|
import type {Widget} from "../renderer";
|
|
53
|
-
import type {
|
|
54
|
+
import type {
|
|
55
|
+
APIOptions,
|
|
56
|
+
FilterCriterion,
|
|
57
|
+
PerseusDependenciesV2,
|
|
58
|
+
PerseusScore,
|
|
59
|
+
} from "../types";
|
|
54
60
|
import type {Item, ContentNode, HintNode, TagsNode} from "./item-types";
|
|
55
61
|
import type {Shape, ArrayShape} from "./shape-types";
|
|
56
62
|
import type {Tree} from "./tree-types";
|
|
@@ -62,7 +68,7 @@ type SerializedState = any; // TODO(mdr)
|
|
|
62
68
|
|
|
63
69
|
type RendererProps = JSX.LibraryManagedAttributes<
|
|
64
70
|
typeof Renderer,
|
|
65
|
-
// @ts-expect-error
|
|
71
|
+
// @ts-expect-error - TS2344 - Type 'typeof Renderer' does not satisfy the constraint 'keyof IntrinsicElements | JSXElementConstructor<any>'.
|
|
66
72
|
React.ComponentProps<typeof Renderer>
|
|
67
73
|
>;
|
|
68
74
|
|
|
@@ -82,7 +88,7 @@ type HintRendererData = {
|
|
|
82
88
|
hint: Hint;
|
|
83
89
|
};
|
|
84
90
|
type RendererData = ContentRendererData | HintRendererData;
|
|
85
|
-
// @ts-expect-error
|
|
91
|
+
// @ts-expect-error - TS2315 - Type 'Tree' is not generic.
|
|
86
92
|
type RendererDataTree = Tree<ContentRendererData, HintRendererData, null>;
|
|
87
93
|
|
|
88
94
|
/**
|
|
@@ -93,11 +99,11 @@ type RendererDataTree = Tree<ContentRendererData, HintRendererData, null>;
|
|
|
93
99
|
* really helping us out as I now have to suppress this rather than
|
|
94
100
|
* get value from the type. :(
|
|
95
101
|
*/
|
|
96
|
-
// @ts-expect-error
|
|
102
|
+
// @ts-expect-error - TS2315 - Type 'Tree' is not generic.
|
|
97
103
|
type RendererTree = Tree<ContentRendererElement, HintRendererElement, null>;
|
|
98
|
-
// @ts-expect-error
|
|
104
|
+
// @ts-expect-error - TS2315 - Type 'Tree' is not generic.
|
|
99
105
|
type ScoreTree = Tree<Score, null, null>;
|
|
100
|
-
// @ts-expect-error
|
|
106
|
+
// @ts-expect-error - TS2315 - Type 'Tree' is not generic.
|
|
101
107
|
type SerializedStateTree = Tree<SerializedState, null, null>;
|
|
102
108
|
|
|
103
109
|
type Props = {
|
|
@@ -109,6 +115,8 @@ type Props = {
|
|
|
109
115
|
onInteractWithWidget?: (id: string) => void;
|
|
110
116
|
apiOptions?: APIOptions;
|
|
111
117
|
reviewMode?: boolean | null | undefined;
|
|
118
|
+
|
|
119
|
+
dependencies: PerseusDependenciesV2;
|
|
112
120
|
};
|
|
113
121
|
type State = {
|
|
114
122
|
// We cache functions to generate renderers and refs in `rendererDataTree`,
|
|
@@ -141,17 +149,17 @@ class MultiRenderer extends React.Component<Props, State> {
|
|
|
141
149
|
super(props);
|
|
142
150
|
|
|
143
151
|
this.rendererDataTreeMapper = buildMapper()
|
|
144
|
-
// @ts-expect-error
|
|
152
|
+
// @ts-expect-error - TS2345 - Argument of type 'unknown' is not assignable to parameter of type 'ContentNode'.
|
|
145
153
|
.setContentMapper((c, _, p) => this._makeContentRendererData(c, p))
|
|
146
|
-
// @ts-expect-error
|
|
154
|
+
// @ts-expect-error - TS2345 - Argument of type 'unknown' is not assignable to parameter of type 'HintNode'.
|
|
147
155
|
.setHintMapper((h) => this._makeHintRendererData(h))
|
|
148
156
|
.setTagsMapper((t) => null);
|
|
149
157
|
|
|
150
|
-
// @ts-expect-error
|
|
158
|
+
// @ts-expect-error - TS2322 - Type 'TreeMapperForLeavesAndCollections<unknown, any, unknown, any, unknown, unknown>' is not assignable to type 'TreeMapper<ContentRendererData, ContentRendererElement, HintRendererData, HintRendererElement, null, null>'.
|
|
151
159
|
this.getRenderersMapper = buildMapper()
|
|
152
|
-
// @ts-expect-error
|
|
160
|
+
// @ts-expect-error - TS2571 - Object is of type 'unknown'.
|
|
153
161
|
.setContentMapper((c) => c.makeRenderer())
|
|
154
|
-
// @ts-expect-error
|
|
162
|
+
// @ts-expect-error - TS2571 - Object is of type 'unknown'.
|
|
155
163
|
.setHintMapper((h) => h.makeRenderer())
|
|
156
164
|
.setArrayMapper((renderers, data, shape) =>
|
|
157
165
|
this._annotateRendererArray(
|
|
@@ -264,7 +272,7 @@ class MultiRenderer extends React.Component<Props, State> {
|
|
|
264
272
|
* if this spread is including undocumented props so mapping
|
|
265
273
|
* one to one could introduce a bug. Need to work out the exact
|
|
266
274
|
* type for ContentNode and then fix this.
|
|
267
|
-
*/ // @ts-expect-error
|
|
275
|
+
*/ // @ts-expect-error - TS2322 - Type '{ ref: (e: any) => any; findExternalWidgets: (criterion: any) => readonly (Widget | null | undefined)[]; serializedState: any; onSerializedStateUpdated: (state: any) => void; __type: "content" | "item"; ... 9 more ...; reviewMode?: boolean | ... 1 more ... | undefined; }' is not assignable to type 'InexactPartial<Pick<Readonly<Props> & Readonly<{ children?: ReactNode; }>, "content" | "images" | "onRender" | "linterContext" | "widgets" | "alwaysUpdate" | ... 6 more ... | "serializedState">>'.
|
|
268
276
|
<Renderer
|
|
269
277
|
{...this._getRendererProps()}
|
|
270
278
|
{...content}
|
|
@@ -306,7 +314,7 @@ class MultiRenderer extends React.Component<Props, State> {
|
|
|
306
314
|
makeRenderer: () => (
|
|
307
315
|
<HintsRenderer
|
|
308
316
|
{...this._getRendererProps()}
|
|
309
|
-
// @ts-expect-error
|
|
317
|
+
// @ts-expect-error - TS2769 - No overload matches this call.
|
|
310
318
|
findExternalWidgets={findExternalWidgets}
|
|
311
319
|
hints={[hint]}
|
|
312
320
|
/>
|
|
@@ -361,7 +369,7 @@ class MultiRenderer extends React.Component<Props, State> {
|
|
|
361
369
|
// eslint-disable-next-line no-restricted-syntax
|
|
362
370
|
leafMapper: ContentMapper<RendererData, O> &
|
|
363
371
|
HintMapper<RendererData, O>,
|
|
364
|
-
// @ts-expect-error
|
|
372
|
+
// @ts-expect-error - TS2315 - Type 'Tree' is not generic.
|
|
365
373
|
): Tree<O, O, null> | null | undefined {
|
|
366
374
|
const {rendererDataTree} = this.state;
|
|
367
375
|
|
|
@@ -506,7 +514,7 @@ class MultiRenderer extends React.Component<Props, State> {
|
|
|
506
514
|
(renderers as any).firstN = (n: any) => (
|
|
507
515
|
<HintsRenderer
|
|
508
516
|
{...this._getRendererProps()}
|
|
509
|
-
// @ts-expect-error
|
|
517
|
+
// @ts-expect-error - TS2769 - No overload matches this call.
|
|
510
518
|
findExternalWidgets={
|
|
511
519
|
hintRendererDatas[0]
|
|
512
520
|
? hintRendererDatas[0].findExternalWidgets
|
|
@@ -547,9 +555,13 @@ class MultiRenderer extends React.Component<Props, State> {
|
|
|
547
555
|
|
|
548
556
|
// Pass the renderer tree to the `children` function, which will
|
|
549
557
|
// determine the actual content of this component.
|
|
550
|
-
return
|
|
551
|
-
|
|
552
|
-
|
|
558
|
+
return (
|
|
559
|
+
<DependenciesContext.Provider value={this.props.dependencies}>
|
|
560
|
+
{this.props.children({
|
|
561
|
+
renderers: this._getRenderers(),
|
|
562
|
+
})}
|
|
563
|
+
</DependenciesContext.Provider>
|
|
564
|
+
);
|
|
553
565
|
}
|
|
554
566
|
}
|
|
555
567
|
|
|
@@ -39,7 +39,7 @@ export function shapePropType(...args: ReadonlyArray<any>): any {
|
|
|
39
39
|
}).isRequired,
|
|
40
40
|
]);
|
|
41
41
|
|
|
42
|
-
// @ts-expect-error
|
|
42
|
+
// @ts-expect-error - TS2556 - A spread argument must either have a tuple type or be passed to a rest parameter.
|
|
43
43
|
return itemShape(...args);
|
|
44
44
|
}
|
|
45
45
|
|
|
@@ -99,7 +99,7 @@ function buildTreePropTypeForShape(shape: Shape): any {
|
|
|
99
99
|
return PropTypes.shape(propTypeShape);
|
|
100
100
|
}
|
|
101
101
|
throw new PerseusError(
|
|
102
|
-
// @ts-expect-error
|
|
102
|
+
// @ts-expect-error - TS2339 - Property 'type' does not exist on type 'never'.
|
|
103
103
|
`unexpected shape type ${shape.type}`,
|
|
104
104
|
Errors.InvalidInput,
|
|
105
105
|
);
|
|
@@ -23,10 +23,10 @@
|
|
|
23
23
|
|
|
24
24
|
// TODO(jeremy): We lost "arrayness" in D69450. It'd be nice to restore that
|
|
25
25
|
// because right now ArrayNode doesn't add anything.
|
|
26
|
-
// @ts-expect-error
|
|
26
|
+
// @ts-expect-error - TS2456 - Type alias 'ArrayNode' circularly references itself. | TS2315 - Type 'Tree' is not generic.
|
|
27
27
|
export type ArrayNode<C, H, T> = Tree<C, H, T>;
|
|
28
28
|
export type ObjectNode<C, H, T> = {
|
|
29
|
-
// @ts-expect-error
|
|
29
|
+
// @ts-expect-error - TS2315 - Type 'Tree' is not generic.
|
|
30
30
|
[k: string]: Tree<C, H, T>;
|
|
31
31
|
};
|
|
32
32
|
|
|
@@ -37,11 +37,11 @@ export type ObjectNode<C, H, T> = {
|
|
|
37
37
|
* in order to ensure that TypeScript can track its refinement and appropriate use.
|
|
38
38
|
* It's messy.
|
|
39
39
|
*/
|
|
40
|
-
// @ts-expect-error
|
|
40
|
+
// @ts-expect-error - TS2456 - Type alias 'Tree' circularly references itself. | TS2315 - Type 'ArrayNode' is not generic.
|
|
41
41
|
export type Tree<C, H, T> =
|
|
42
42
|
| C
|
|
43
43
|
| H
|
|
44
44
|
| T
|
|
45
|
-
// @ts-expect-error
|
|
45
|
+
// @ts-expect-error - TS2315 - Type 'ArrayNode' is not generic.
|
|
46
46
|
| ArrayNode<C, H, T>
|
|
47
47
|
| ObjectNode<C, H, T>;
|
package/src/multi-items/trees.ts
CHANGED
|
@@ -98,13 +98,13 @@ export type ContentMapper<CI, CO> = (
|
|
|
98
98
|
export type HintMapper<HI, HO> = (hint: HI, shape: HintShape, path: Path) => HO;
|
|
99
99
|
export type TagsMapper<TI, TO> = (tag: TI, shape: TagsShape, path: Path) => TO;
|
|
100
100
|
export type ArrayMapper<CI, CO, HI, HO, TI, TO> = (
|
|
101
|
-
// @ts-expect-error
|
|
101
|
+
// @ts-expect-error - TS2315 - Type 'ArrayNode' is not generic.
|
|
102
102
|
mappedArray: ArrayNode<CO, HO, TO>,
|
|
103
|
-
// @ts-expect-error
|
|
103
|
+
// @ts-expect-error - TS2315 - Type 'ArrayNode' is not generic.
|
|
104
104
|
originalArray: ArrayNode<CI, HI, TI>,
|
|
105
105
|
shape: ArrayShape,
|
|
106
106
|
path: Path,
|
|
107
|
-
// @ts-expect-error
|
|
107
|
+
// @ts-expect-error - TS2315 - Type 'ArrayNode' is not generic.
|
|
108
108
|
) => ArrayNode<CO, HO, TO>;
|
|
109
109
|
|
|
110
110
|
/**
|
|
@@ -120,7 +120,7 @@ export interface TreeMapper<CI, CO, HI, HO, TI, TO> {
|
|
|
120
120
|
hint: HintMapper<HI, HO>;
|
|
121
121
|
tags: TagsMapper<TI, TO>;
|
|
122
122
|
array: ArrayMapper<CI, CO, HI, HO, TI, TO>;
|
|
123
|
-
// @ts-expect-error
|
|
123
|
+
// @ts-expect-error - TS2315 - Type 'Tree' is not generic. | TS2315 - Type 'Tree' is not generic.
|
|
124
124
|
mapTree(tree: Tree<CI, HI, TI>, shape: Shape): Tree<CO, HO, TO>;
|
|
125
125
|
}
|
|
126
126
|
|
|
@@ -196,7 +196,7 @@ class TreeMapperJustForLeaves<CI, CO, HI, HO, TI, TO> {
|
|
|
196
196
|
);
|
|
197
197
|
}
|
|
198
198
|
|
|
199
|
-
// @ts-expect-error
|
|
199
|
+
// @ts-expect-error - TS2315 - Type 'Tree' is not generic. | TS2315 - Type 'Tree' is not generic.
|
|
200
200
|
mapTree(tree: Tree<CI, HI, TI>, shape: Shape): Tree<CO, HO, TO> {
|
|
201
201
|
return mapTree(tree, shape, [], this);
|
|
202
202
|
}
|
|
@@ -235,7 +235,7 @@ class TreeMapperForLeavesAndCollections<CI, CO, HI, HO, TI, TO> {
|
|
|
235
235
|
);
|
|
236
236
|
}
|
|
237
237
|
|
|
238
|
-
// @ts-expect-error
|
|
238
|
+
// @ts-expect-error - TS2315 - Type 'Tree' is not generic. | TS2315 - Type 'Tree' is not generic.
|
|
239
239
|
mapTree(tree: Tree<CI, HI, TI>, shape: Shape): Tree<CO, HO, TO> {
|
|
240
240
|
return mapTree(tree, shape, [], this);
|
|
241
241
|
}
|
|
@@ -251,7 +251,7 @@ function identity<T>(x: T): T {
|
|
|
251
251
|
* `setHintMapper`, `setTagMapper`, and `setArrayMapper` to specify
|
|
252
252
|
* transformations for the individual node types.
|
|
253
253
|
*/
|
|
254
|
-
// @ts-expect-error
|
|
254
|
+
// @ts-expect-error - TS2300 - Duplicate identifier 'C'. | TS2300 - Duplicate identifier 'H'. | TS2300 - Duplicate identifier 'T'.
|
|
255
255
|
export function buildMapper<C, C, H, H, T, T>(): TreeMapperJustForLeaves<
|
|
256
256
|
C,
|
|
257
257
|
C,
|
|
@@ -268,12 +268,12 @@ export function buildMapper<C, C, H, H, T, T>(): TreeMapperJustForLeaves<
|
|
|
268
268
|
* TreeMapper to each node, and return the resulting tree.
|
|
269
269
|
*/
|
|
270
270
|
function mapTree<CI, CO, HI, HO, TI, TO>(
|
|
271
|
-
// @ts-expect-error
|
|
271
|
+
// @ts-expect-error - TS2315 - Type 'Tree' is not generic.
|
|
272
272
|
tree: Tree<CI, HI, TI>,
|
|
273
273
|
shape: Shape,
|
|
274
274
|
path: Path,
|
|
275
275
|
mappers: TreeMapper<CI, CO, HI, HO, TI, TO>,
|
|
276
|
-
// @ts-expect-error
|
|
276
|
+
// @ts-expect-error - TS2315 - Type 'Tree' is not generic.
|
|
277
277
|
): Tree<CO, HO, TO> {
|
|
278
278
|
// We trust the shape of the multi-item to match the shape provided at
|
|
279
279
|
// runtime. Therefore, in each shape branch, we cast the node to `any` and
|
|
@@ -291,20 +291,20 @@ function mapTree<CI, CO, HI, HO, TI, TO>(
|
|
|
291
291
|
return mappers.tags(tags, shape, path);
|
|
292
292
|
}
|
|
293
293
|
if (shape.type === "array") {
|
|
294
|
-
// @ts-expect-error
|
|
294
|
+
// @ts-expect-error - TS2315 - Type 'ArrayNode' is not generic.
|
|
295
295
|
const array: ArrayNode<CI, HI, TI> = tree as any;
|
|
296
296
|
|
|
297
297
|
if (!Array.isArray(array)) {
|
|
298
298
|
throw new PerseusError(
|
|
299
299
|
`Invalid object of type "${typeof array}" found at path ` +
|
|
300
|
-
// @ts-expect-error
|
|
300
|
+
// @ts-expect-error - TS2769 - No overload matches this call.
|
|
301
301
|
`${["<root>"].concat(path).join(".")}. Expected array.`,
|
|
302
302
|
Errors.Internal,
|
|
303
303
|
);
|
|
304
304
|
}
|
|
305
305
|
|
|
306
306
|
const elementShape = shape.elementShape;
|
|
307
|
-
// @ts-expect-error
|
|
307
|
+
// @ts-expect-error - TS2315 - Type 'ArrayNode' is not generic.
|
|
308
308
|
const mappedElements: ArrayNode<CO, HO, TO> = array.map((inner, i) =>
|
|
309
309
|
mapTree(inner, elementShape, path.concat(i), mappers),
|
|
310
310
|
);
|
|
@@ -316,7 +316,7 @@ function mapTree<CI, CO, HI, HO, TI, TO>(
|
|
|
316
316
|
if (object && typeof object !== "object") {
|
|
317
317
|
throw new PerseusError(
|
|
318
318
|
`Invalid object of type "${typeof object}" found at ` +
|
|
319
|
-
// @ts-expect-error
|
|
319
|
+
// @ts-expect-error - TS2769 - No overload matches this call.
|
|
320
320
|
`path ${["<root>"].concat(path).join(".")}. Expected ` +
|
|
321
321
|
`"object" type.`,
|
|
322
322
|
Errors.InvalidInput,
|
|
@@ -327,7 +327,7 @@ function mapTree<CI, CO, HI, HO, TI, TO>(
|
|
|
327
327
|
if (!valueShapes) {
|
|
328
328
|
throw new PerseusError(
|
|
329
329
|
`Unexpected shape ${JSON.stringify(shape)} at path ` +
|
|
330
|
-
// @ts-expect-error
|
|
330
|
+
// @ts-expect-error - TS2769 - No overload matches this call.
|
|
331
331
|
`${["<root>"].concat(path).join(".")}.`,
|
|
332
332
|
Errors.InvalidInput,
|
|
333
333
|
);
|
|
@@ -337,7 +337,7 @@ function mapTree<CI, CO, HI, HO, TI, TO>(
|
|
|
337
337
|
if (!(key in object)) {
|
|
338
338
|
throw new PerseusError(
|
|
339
339
|
`Key "${key}" is missing from shape at path ` +
|
|
340
|
-
// @ts-expect-error
|
|
340
|
+
// @ts-expect-error - TS2769 - No overload matches this call.
|
|
341
341
|
`${["<root>"].concat(path).join(".")}.`,
|
|
342
342
|
Errors.InvalidInput,
|
|
343
343
|
);
|
|
@@ -353,7 +353,7 @@ function mapTree<CI, CO, HI, HO, TI, TO>(
|
|
|
353
353
|
return newObject;
|
|
354
354
|
}
|
|
355
355
|
throw new PerseusError(
|
|
356
|
-
// @ts-expect-error
|
|
356
|
+
// @ts-expect-error - TS2339 - Property 'type' does not exist on type 'never'.
|
|
357
357
|
`unexpected shape type ${shape.type}`,
|
|
358
358
|
Errors.InvalidInput,
|
|
359
359
|
);
|
package/src/perseus-env.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Sets up the basic environment for running Perseus in.
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
// @ts-expect-error
|
|
5
|
+
// @ts-expect-error - TS2339 - Property 'KhanUtil' does not exist on type 'Window & typeof globalThis'.
|
|
6
6
|
window.KhanUtil = {
|
|
7
7
|
debugLog: function () {},
|
|
8
8
|
localeToFixed: function (num, precision) {
|
|
@@ -10,7 +10,7 @@ window.KhanUtil = {
|
|
|
10
10
|
},
|
|
11
11
|
};
|
|
12
12
|
|
|
13
|
-
// @ts-expect-error
|
|
13
|
+
// @ts-expect-error - TS2339 - Property 'Exercises' does not exist on type 'Window & typeof globalThis'.
|
|
14
14
|
window.Exercises = {
|
|
15
15
|
localMode: true,
|
|
16
16
|
|
package/src/perseus-markdown.tsx
CHANGED
|
@@ -128,7 +128,7 @@ const rules = {
|
|
|
128
128
|
|
|
129
129
|
// Splice the caption into the table's children with the
|
|
130
130
|
// caption as the first child.
|
|
131
|
-
// @ts-expect-error
|
|
131
|
+
// @ts-expect-error - TS2769 - No overload matches this call.
|
|
132
132
|
contents = React.cloneElement(tableOutput, null, [
|
|
133
133
|
caption,
|
|
134
134
|
...tableOutput.props.children,
|
|
@@ -156,7 +156,7 @@ const rules = {
|
|
|
156
156
|
// just a stub for testing.
|
|
157
157
|
return (
|
|
158
158
|
<em key={state.key}>
|
|
159
|
-
{/* @ts-expect-error
|
|
159
|
+
{/* @ts-expect-error - TS2554 - Expected 1-2 arguments, but got 3. */}
|
|
160
160
|
{i18n.doNotTranslate("[Widget: ", node.id, "]")}
|
|
161
161
|
</em>
|
|
162
162
|
);
|
|
@@ -211,7 +211,7 @@ const rules = {
|
|
|
211
211
|
: false;
|
|
212
212
|
if (!isKAUrl) {
|
|
213
213
|
// Prevents "reverse tabnabbing" phishing attacks
|
|
214
|
-
// @ts-expect-error
|
|
214
|
+
// @ts-expect-error - TS2322 - Type '"noopener noreferrer"' is not assignable to type 'null'.
|
|
215
215
|
rel = "noopener noreferrer";
|
|
216
216
|
}
|
|
217
217
|
|
|
@@ -293,7 +293,7 @@ const inlineNodeTypes = {
|
|
|
293
293
|
code: true,
|
|
294
294
|
} as const;
|
|
295
295
|
|
|
296
|
-
// @ts-expect-error
|
|
296
|
+
// @ts-expect-error - TS2345 - Argument of type '{ readonly columns: { readonly react: (node: any, output: any, state: any) => Element; readonly order: -2; readonly match: any; readonly parse: (capture: any, parse: any, state: any) => any; }; ... 35 more ...; readonly text: TextInOutRule; }' is not assignable to parameter of type 'ParserRules'.
|
|
297
297
|
const builtParser = SimpleMarkdown.parserFor(rules);
|
|
298
298
|
const parse = (source: string, state: any): any => {
|
|
299
299
|
const paragraphedSource = source + "\n\n";
|
|
@@ -385,7 +385,7 @@ const getContent = (ast: any) => {
|
|
|
385
385
|
* Markdown markup and widget references are ignored.
|
|
386
386
|
*/
|
|
387
387
|
const characterCount = (source: string): number => {
|
|
388
|
-
// @ts-expect-error
|
|
388
|
+
// @ts-expect-error - TS2554 - Expected 2 arguments, but got 1.
|
|
389
389
|
const ast = parse(source);
|
|
390
390
|
const content = getContent(ast).join("");
|
|
391
391
|
return content.length;
|