@khanacademy/perseus 7.2.0 → 8.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 +38 -0
- package/dist/article-renderer.d.ts +26 -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/es/index.css +61 -61
- package/dist/es/index.js +1189 -1308
- package/dist/es/index.js.map +1 -1
- package/dist/hints-renderer.d.ts +1 -1
- package/dist/index.css +61 -61
- package/dist/index.js +1180 -1269
- package/dist/index.js.map +1 -1
- package/dist/mixins/provide-keypad.d.ts +15 -12
- package/dist/perseus-api.d.ts +1 -1
- package/dist/types.d.ts +3 -2
- package/dist/widgets/expression.d.ts +1 -1
- package/dist/widgets/graded-group.d.ts +1 -1
- package/dist/widgets/interactive-graph.d.ts +1 -1
- package/dist/widgets/plotter.d.ts +47 -13
- package/dist/widgets/sequence.d.ts +1 -1
- package/dist/widgets/table.d.ts +8 -1
- package/dist/widgets.d.ts +1 -1
- package/package.json +33 -33
- package/src/__testdata__/article-renderer.testdata.ts +3 -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 +2 -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 +3 -3
- package/src/__tests__/tex-wrangler.test.ts +1 -1
- package/src/article-renderer.tsx +39 -38
- package/src/components/__stories__/image-loader.stories.tsx +1 -0
- 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 +12 -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 +2 -1
- package/src/components/image-loader.tsx +5 -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 +11 -10
- package/src/components/prop-check-box.tsx +1 -1
- package/src/components/simple-keypad-input.tsx +4 -4
- package/src/components/sortable.tsx +43 -41
- package/src/components/svg-image.tsx +13 -12
- package/src/components/tex-buttons.tsx +5 -3
- package/src/components/text-input.tsx +9 -8
- package/src/components/text-list-editor.tsx +12 -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 +9 -8
- package/src/hint-renderer.tsx +3 -3
- package/src/hints-renderer.tsx +12 -11
- package/src/index.ts +1 -0
- package/src/init.ts +1 -1
- package/src/interaction-tracker.ts +4 -4
- 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 +6 -5
- package/src/mixins/changeable.ts +2 -2
- package/src/mixins/editor-jsonify.ts +1 -1
- package/src/mixins/provide-keypad.tsx +24 -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 +7 -7
- 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 +15 -14
- 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 -38
- package/src/server-item-renderer.tsx +6 -5
- package/src/sigfigs.ts +1 -1
- package/src/styles/articles.less +8 -4
- package/src/styles/perseus-renderer.less +47 -38
- package/src/styles/util.less +1 -1
- package/src/styles/variables.boostrap.less +158 -182
- package/src/styles/variables.less +20 -20
- package/src/styles/variables.shared.less +162 -168
- package/src/styles/widgets/categorizer.less +1 -2
- package/src/styles/widgets/expression.less +7 -4
- package/src/styles/widgets/grapher.less +2 -1
- package/src/styles/widgets/image.less +3 -2
- package/src/styles/widgets/interactive-graph.less +4 -2
- package/src/styles/widgets/label-image.less +2 -1
- package/src/styles/widgets/matrix.less +11 -7
- package/src/styles/widgets/orderer.less +2 -1
- package/src/styles/widgets/passage.less +2 -1
- package/src/styles/widgets/plotter.less +4 -3
- package/src/styles/widgets/radio.less +4 -2
- package/src/styles/widgets/sortable.less +1 -1
- package/src/styles/widgets/table.less +2 -1
- package/src/styles/widgets/transformer.less +2 -1
- package/src/styles/widgets/unit.less +2 -1
- package/src/traversal.ts +1 -1
- package/src/types.ts +3 -3
- 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__/plotter.stories.tsx +27 -0
- package/src/widgets/__stories__/test-keypad-context-wrapper.tsx +3 -3
- package/src/widgets/__testdata__/numeric-input.testdata.ts +1 -1
- package/src/widgets/__testdata__/plotter.testdata.ts +36 -0
- package/src/widgets/__tests__/__snapshots__/plotter.test.tsx.snap +863 -0
- package/src/widgets/__tests__/__snapshots__/video.test.ts.snap +2 -2
- package/src/widgets/__tests__/expression.test.ts +4 -3
- 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 +66 -0
- package/src/widgets/__tests__/radio/base-radio.test.tsx +7 -7
- package/src/widgets/__tests__/renderQuestion.tsx +3 -3
- package/src/widgets/categorizer.tsx +5 -4
- package/src/widgets/cs-program.tsx +2 -2
- package/src/widgets/dropdown.tsx +1 -1
- package/src/widgets/expression.tsx +10 -9
- package/src/widgets/graded-group-set.tsx +6 -5
- package/src/widgets/graded-group.tsx +19 -19
- 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 +78 -77
- package/src/widgets/interactive-graph.tsx +109 -107
- package/src/widgets/label-image/marker.tsx +3 -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 +7 -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 +39 -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 +2 -1
- package/src/widgets/passage-ref.tsx +4 -6
- package/src/widgets/passage.tsx +11 -11
- package/src/widgets/plotter.tsx +117 -107
- package/src/widgets/radio/base-radio.tsx +12 -11
- package/src/widgets/radio/choice-icon/choice-icon.tsx +3 -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 +2 -2
- package/src/widgets/simulator.tsx +14 -14
- package/src/widgets/sorter.tsx +5 -4
- package/src/widgets/table.tsx +8 -8
- package/src/widgets/transformer.tsx +93 -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 -78
- 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
|
@@ -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;
|
package/src/renderer.tsx
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/* eslint-disable @khanacademy/ts-no-error-suppressions */
|
|
1
2
|
/* eslint-disable react/no-unsafe */
|
|
2
3
|
import * as PerseusLinter from "@khanacademy/perseus-linter";
|
|
3
4
|
import classNames from "classnames";
|
|
@@ -65,7 +66,7 @@ const isIdPathPrefix = function (
|
|
|
65
66
|
return prefixArray === wholeArray;
|
|
66
67
|
}
|
|
67
68
|
|
|
68
|
-
// @ts-expect-error
|
|
69
|
+
// @ts-expect-error - TS2345 - Argument of type 'readonly string[] | undefined' is not assignable to parameter of type 'Collection<any>'.
|
|
69
70
|
return _.every(prefixArray, (elem: string, i: number) => {
|
|
70
71
|
if (wholeArray != null) {
|
|
71
72
|
return _.isEqual(elem, wholeArray[i]);
|
|
@@ -208,26 +209,26 @@ type DefaultProps = {
|
|
|
208
209
|
|
|
209
210
|
class Renderer extends React.Component<Props, State> {
|
|
210
211
|
_currentFocus: FocusPath | null | undefined;
|
|
211
|
-
// @ts-expect-error
|
|
212
|
+
// @ts-expect-error - TS2564 - Property '_foundTextNodes' has no initializer and is not definitely assigned in the constructor.
|
|
212
213
|
_foundTextNodes: boolean;
|
|
213
|
-
// @ts-expect-error
|
|
214
|
+
// @ts-expect-error - TS2564 - Property '_interactionTrackers' has no initializer and is not definitely assigned in the constructor.
|
|
214
215
|
_interactionTrackers: {
|
|
215
216
|
[id: string]: InteractionTracker;
|
|
216
217
|
};
|
|
217
|
-
// @ts-expect-error
|
|
218
|
+
// @ts-expect-error - TS2564 - Property '_isMounted' has no initializer and is not definitely assigned in the constructor.
|
|
218
219
|
_isMounted: boolean;
|
|
219
|
-
// @ts-expect-error
|
|
220
|
+
// @ts-expect-error - TS2564 - Property '_isTwoColumn' has no initializer and is not definitely assigned in the constructor.
|
|
220
221
|
_isTwoColumn: boolean;
|
|
221
222
|
|
|
222
223
|
// The i18n linter.
|
|
223
224
|
_translationLinter: TranslationLinter;
|
|
224
225
|
|
|
225
226
|
lastRenderedMarkdown: React.ReactNode;
|
|
226
|
-
// @ts-expect-error
|
|
227
|
+
// @ts-expect-error - TS2564 - Property 'reuseMarkdown' has no initializer and is not definitely assigned in the constructor.
|
|
227
228
|
reuseMarkdown: boolean;
|
|
228
|
-
// @ts-expect-error
|
|
229
|
+
// @ts-expect-error - TS2564 - Property 'translationIndex' has no initializer and is not definitely assigned in the constructor.
|
|
229
230
|
translationIndex: number;
|
|
230
|
-
// @ts-expect-error
|
|
231
|
+
// @ts-expect-error - TS2564 - Property 'widgetIds' has no initializer and is not definitely assigned in the constructor.
|
|
231
232
|
widgetIds: Array<string>;
|
|
232
233
|
|
|
233
234
|
static defaultProps: DefaultProps = {
|
|
@@ -274,7 +275,7 @@ class Renderer extends React.Component<Props, State> {
|
|
|
274
275
|
this._isMounted = true;
|
|
275
276
|
|
|
276
277
|
// figure out why we're passing an empty object
|
|
277
|
-
// @ts-expect-error
|
|
278
|
+
// @ts-expect-error - TS2345 - Argument of type '{}' is not assignable to parameter of type 'Props'.
|
|
278
279
|
this.handleRender({});
|
|
279
280
|
this._currentFocus = null;
|
|
280
281
|
|
|
@@ -391,7 +392,7 @@ class Renderer extends React.Component<Props, State> {
|
|
|
391
392
|
_.each(this.widgetIds, (id) => {
|
|
392
393
|
// eslint-disable-next-line react/no-string-refs
|
|
393
394
|
const container = this.refs["container:" + id];
|
|
394
|
-
// @ts-expect-error
|
|
395
|
+
// @ts-expect-error - TS2339 - Property 'replaceWidgetProps' does not exist on type 'ReactInstance'.
|
|
395
396
|
container && container.replaceWidgetProps(this.getWidgetProps(id));
|
|
396
397
|
});
|
|
397
398
|
|
|
@@ -453,11 +454,11 @@ class Renderer extends React.Component<Props, State> {
|
|
|
453
454
|
};
|
|
454
455
|
};
|
|
455
456
|
|
|
456
|
-
// @ts-expect-error
|
|
457
|
+
// @ts-expect-error - TS2322 - Type '(props: Props) => Partial<Record<string, CategorizerWidget | CSProgramWidget | DefinitionWidget | DropdownWidget | ... 35 more ... | VideoWidget>>' is not assignable to type '(props: Props) => { [key: string]: PerseusWidget; }'.
|
|
457
458
|
_getAllWidgetsInfo: (props: Props) => {
|
|
458
459
|
[key: string]: WidgetInfo;
|
|
459
460
|
} = (props: Props) => {
|
|
460
|
-
// @ts-expect-error
|
|
461
|
+
// @ts-expect-error - TS2345 - Argument of type '{ [key: string]: PerseusWidget; }' is not assignable to parameter of type 'Partial<Record<string, CategorizerWidget>>'.
|
|
461
462
|
return mapObject(props.widgets, (widgetInfo, widgetId) => {
|
|
462
463
|
if (!widgetInfo.type || !widgetInfo.alignment) {
|
|
463
464
|
const newValues: Record<string, any> = {};
|
|
@@ -481,7 +482,7 @@ class Renderer extends React.Component<Props, State> {
|
|
|
481
482
|
},
|
|
482
483
|
props: Props,
|
|
483
484
|
) => any = (allWidgetInfo, props) => {
|
|
484
|
-
// @ts-expect-error
|
|
485
|
+
// @ts-expect-error - TS2345 - Argument of type '{ [key: string]: PerseusWidget; }' is not assignable to parameter of type 'Partial<Record<string, CategorizerWidget>>'.
|
|
485
486
|
return mapObject(allWidgetInfo, (widgetInfo) => {
|
|
486
487
|
return Widgets.getRendererPropsForWidgetInfo(
|
|
487
488
|
widgetInfo,
|
|
@@ -540,7 +541,7 @@ class Renderer extends React.Component<Props, State> {
|
|
|
540
541
|
if (widgetInfo) {
|
|
541
542
|
const type = (widgetInfo && widgetInfo.type) || impliedType;
|
|
542
543
|
const shouldHighlight = _.contains(
|
|
543
|
-
// @ts-expect-error
|
|
544
|
+
// @ts-expect-error - TS2345 - Argument of type 'readonly any[] | undefined' is not assignable to parameter of type 'Collection<any>'.
|
|
544
545
|
this.props.highlightedWidgets,
|
|
545
546
|
id,
|
|
546
547
|
);
|
|
@@ -589,10 +590,10 @@ class Renderer extends React.Component<Props, State> {
|
|
|
589
590
|
interactionTracker = this._interactionTrackers[id] =
|
|
590
591
|
new InteractionTracker(
|
|
591
592
|
apiOptions.trackInteraction,
|
|
592
|
-
// @ts-expect-error
|
|
593
|
+
// @ts-expect-error - TS2345 - Argument of type 'string | null | undefined' is not assignable to parameter of type 'string'.
|
|
593
594
|
widgetInfo && widgetInfo.type,
|
|
594
595
|
id,
|
|
595
|
-
// @ts-expect-error
|
|
596
|
+
// @ts-expect-error - TS2345 - Argument of type 'string | null | undefined' is not assignable to parameter of type 'string'.
|
|
596
597
|
Widgets.getTracking(widgetInfo && widgetInfo.type),
|
|
597
598
|
);
|
|
598
599
|
}
|
|
@@ -857,7 +858,7 @@ class Renderer extends React.Component<Props, State> {
|
|
|
857
858
|
if (!ref) {
|
|
858
859
|
return null;
|
|
859
860
|
}
|
|
860
|
-
// @ts-expect-error
|
|
861
|
+
// @ts-expect-error - TS2339 - Property 'getWidget' does not exist on type 'ReactInstance'.
|
|
861
862
|
return ref.getWidget();
|
|
862
863
|
};
|
|
863
864
|
|
|
@@ -884,7 +885,7 @@ class Renderer extends React.Component<Props, State> {
|
|
|
884
885
|
|
|
885
886
|
// Failsafe: abort if ID is different, because focus probably happened
|
|
886
887
|
// before blur
|
|
887
|
-
// @ts-expect-error
|
|
888
|
+
// @ts-expect-error - TS2769 - No overload matches this call.
|
|
888
889
|
const fullPath = [id].concat(blurPath);
|
|
889
890
|
if (!_.isEqual(fullPath, blurringFocusPath)) {
|
|
890
891
|
return;
|
|
@@ -977,7 +978,7 @@ class Renderer extends React.Component<Props, State> {
|
|
|
977
978
|
|
|
978
979
|
// wrap top-level elements in a QuestionParagraph, mostly
|
|
979
980
|
// for appropriate spacing and other css
|
|
980
|
-
// @ts-expect-error
|
|
981
|
+
// @ts-expect-error - TS2322 - Type '(ast: any, state: WidgetState) => never[] | JSX.Element' is not assignable to type '(ast: any, state: WidgetState) => ReactElement<any, string | JSXElementConstructor<any>>'.
|
|
981
982
|
outputMarkdown: (ast: any, state: WidgetState) => React.ReactElement = (
|
|
982
983
|
ast: any,
|
|
983
984
|
state: WidgetState,
|
|
@@ -1003,10 +1004,10 @@ class Renderer extends React.Component<Props, State> {
|
|
|
1003
1004
|
// now.
|
|
1004
1005
|
/* c8 ignore if */
|
|
1005
1006
|
if (typeof nodeOut === "string" && lastWasString) {
|
|
1006
|
-
// @ts-expect-error
|
|
1007
|
+
// @ts-expect-error - TS2322 - Type 'number' is not assignable to type 'never'.
|
|
1007
1008
|
result[result.length - 1] += nodeOut;
|
|
1008
1009
|
} else {
|
|
1009
|
-
// @ts-expect-error
|
|
1010
|
+
// @ts-expect-error - TS2345 - Argument of type 'ReactElement<any, string | JSXElementConstructor<any>>' is not assignable to parameter of type 'never'.
|
|
1010
1011
|
result.push(nodeOut);
|
|
1011
1012
|
}
|
|
1012
1013
|
lastWasString = isString;
|
|
@@ -1302,7 +1303,7 @@ class Renderer extends React.Component<Props, State> {
|
|
|
1302
1303
|
{({setAssetStatus}) => (
|
|
1303
1304
|
<SvgImage
|
|
1304
1305
|
setAssetStatus={setAssetStatus}
|
|
1305
|
-
// @ts-expect-error
|
|
1306
|
+
// @ts-expect-error - TS2322 - Type 'string | null | undefined' is not assignable to type 'string | undefined'.
|
|
1306
1307
|
src={PerseusMarkdown.sanitizeUrl(node.target)}
|
|
1307
1308
|
alt={node.alt}
|
|
1308
1309
|
title={node.title}
|
|
@@ -1396,7 +1397,7 @@ class Renderer extends React.Component<Props, State> {
|
|
|
1396
1397
|
|
|
1397
1398
|
// In the common case of no callback specified, avoid this work.
|
|
1398
1399
|
if (onRender !== noopOnRender || oldOnRender !== noopOnRender) {
|
|
1399
|
-
// @ts-expect-error
|
|
1400
|
+
// @ts-expect-error - TS2769 - No overload matches this call. | TS2339 - Property 'find' does not exist on type 'JQueryStatic'.
|
|
1400
1401
|
const $images = $(ReactDOM.findDOMNode(this)).find("img");
|
|
1401
1402
|
|
|
1402
1403
|
// Fire callback on image load...
|
|
@@ -1489,9 +1490,9 @@ class Renderer extends React.Component<Props, State> {
|
|
|
1489
1490
|
|
|
1490
1491
|
getDOMNodeForPath: (path: FocusPath) => Element | Text | null | undefined =
|
|
1491
1492
|
(path: FocusPath) => {
|
|
1492
|
-
// @ts-expect-error
|
|
1493
|
+
// @ts-expect-error - TS2345 - Argument of type 'FocusPath' is not assignable to parameter of type 'List<any>'.
|
|
1493
1494
|
const widgetId = _.first(path);
|
|
1494
|
-
// @ts-expect-error
|
|
1495
|
+
// @ts-expect-error - TS2345 - Argument of type 'FocusPath' is not assignable to parameter of type 'List<any>'.
|
|
1495
1496
|
const interWidgetPath = _.rest(path);
|
|
1496
1497
|
|
|
1497
1498
|
// Widget handles parsing of the interWidgetPath. If the path is empty
|
|
@@ -1503,7 +1504,7 @@ class Renderer extends React.Component<Props, State> {
|
|
|
1503
1504
|
return getNode(interWidgetPath);
|
|
1504
1505
|
}
|
|
1505
1506
|
if (interWidgetPath.length === 0) {
|
|
1506
|
-
// @ts-expect-error
|
|
1507
|
+
// @ts-expect-error - TS2345 - Argument of type 'Widget | null | undefined' is not assignable to parameter of type 'ReactInstance | null | undefined'.
|
|
1507
1508
|
return ReactDOM.findDOMNode(widget);
|
|
1508
1509
|
}
|
|
1509
1510
|
};
|
|
@@ -1511,9 +1512,9 @@ class Renderer extends React.Component<Props, State> {
|
|
|
1511
1512
|
getGrammarTypeForPath: (path: FocusPath) => string | null | undefined = (
|
|
1512
1513
|
path: FocusPath,
|
|
1513
1514
|
) => {
|
|
1514
|
-
// @ts-expect-error
|
|
1515
|
+
// @ts-expect-error - TS2345 - Argument of type 'FocusPath' is not assignable to parameter of type 'List<any>'.
|
|
1515
1516
|
const widgetId = _.first(path);
|
|
1516
|
-
// @ts-expect-error
|
|
1517
|
+
// @ts-expect-error - TS2345 - Argument of type 'FocusPath' is not assignable to parameter of type 'List<any>'.
|
|
1517
1518
|
const interWidgetPath = _.rest(path);
|
|
1518
1519
|
|
|
1519
1520
|
const widget = this.getWidgetInstance(widgetId);
|
|
@@ -1531,7 +1532,7 @@ class Renderer extends React.Component<Props, State> {
|
|
|
1531
1532
|
const widgetInputPaths = widget.getInputPaths();
|
|
1532
1533
|
// Prefix paths with their widgetID and add to collective
|
|
1533
1534
|
// list of paths.
|
|
1534
|
-
// @ts-expect-error
|
|
1535
|
+
// @ts-expect-error - TS2345 - Argument of type '(inputPath: string) => void' is not assignable to parameter of type 'CollectionIterator<FocusPath, void, readonly FocusPath[]>'.
|
|
1535
1536
|
_.each(widgetInputPaths, (inputPath: string) => {
|
|
1536
1537
|
const relativeInputPath = [widgetId].concat(inputPath);
|
|
1537
1538
|
inputPaths.push(relativeInputPath);
|
|
@@ -1552,9 +1553,9 @@ class Renderer extends React.Component<Props, State> {
|
|
|
1552
1553
|
this.blurPath(this._currentFocus);
|
|
1553
1554
|
}
|
|
1554
1555
|
|
|
1555
|
-
// @ts-expect-error
|
|
1556
|
+
// @ts-expect-error - TS2345 - Argument of type 'FocusPath' is not assignable to parameter of type 'List<any>'.
|
|
1556
1557
|
const widgetId = _.first(path);
|
|
1557
|
-
// @ts-expect-error
|
|
1558
|
+
// @ts-expect-error - TS2345 - Argument of type 'FocusPath' is not assignable to parameter of type 'List<any>'.
|
|
1558
1559
|
const interWidgetPath = _.rest(path);
|
|
1559
1560
|
|
|
1560
1561
|
// Widget handles parsing of the interWidgetPath
|
|
@@ -1570,9 +1571,9 @@ class Renderer extends React.Component<Props, State> {
|
|
|
1570
1571
|
return;
|
|
1571
1572
|
}
|
|
1572
1573
|
|
|
1573
|
-
// @ts-expect-error
|
|
1574
|
+
// @ts-expect-error - TS2345 - Argument of type 'FocusPath' is not assignable to parameter of type 'List<any>'.
|
|
1574
1575
|
const widgetId = _.first(path);
|
|
1575
|
-
// @ts-expect-error
|
|
1576
|
+
// @ts-expect-error - TS2345 - Argument of type 'FocusPath' is not assignable to parameter of type 'List<any>'.
|
|
1576
1577
|
const interWidgetPath = _.rest(path);
|
|
1577
1578
|
const widget = this.getWidgetInstance(widgetId);
|
|
1578
1579
|
// We might be in the editor and blurring a widget that no
|
|
@@ -1599,7 +1600,7 @@ class Renderer extends React.Component<Props, State> {
|
|
|
1599
1600
|
this.state.widgetInfo,
|
|
1600
1601
|
function (info, id) {
|
|
1601
1602
|
// eslint-disable-next-line @babel/no-invalid-this
|
|
1602
|
-
// @ts-expect-error
|
|
1603
|
+
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
1603
1604
|
// eslint-disable-next-line @babel/no-invalid-this
|
|
1604
1605
|
const widget = this.getWidgetInstance(id);
|
|
1605
1606
|
const s = widget.serialize();
|
|
@@ -1613,7 +1614,7 @@ class Renderer extends React.Component<Props, State> {
|
|
|
1613
1614
|
};
|
|
1614
1615
|
|
|
1615
1616
|
emptyWidgets: () => any = () => {
|
|
1616
|
-
// @ts-expect-error
|
|
1617
|
+
// @ts-expect-error - TS2345 - Argument of type '(id: string) => boolean | undefined' is not assignable to parameter of type 'Iteratee<string[], boolean, string>'.
|
|
1617
1618
|
return _.filter(this.widgetIds, (id) => {
|
|
1618
1619
|
const widgetInfo = this._getWidgetInfo(id);
|
|
1619
1620
|
if (widgetInfo.static) {
|
|
@@ -1624,7 +1625,7 @@ class Renderer extends React.Component<Props, State> {
|
|
|
1624
1625
|
if (widget && widget.simpleValidate) {
|
|
1625
1626
|
const score: PerseusScore = widget.simpleValidate(
|
|
1626
1627
|
widgetInfo.options,
|
|
1627
|
-
// @ts-expect-error
|
|
1628
|
+
// @ts-expect-error - TS2345 - Argument of type 'null' is not assignable to parameter of type '((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined'.
|
|
1628
1629
|
null,
|
|
1629
1630
|
);
|
|
1630
1631
|
return Util.scoreIsEmpty(score);
|
|
@@ -1697,9 +1698,9 @@ class Renderer extends React.Component<Props, State> {
|
|
|
1697
1698
|
newValue: string,
|
|
1698
1699
|
focus: () => unknown,
|
|
1699
1700
|
) => void = (path, newValue, focus) => {
|
|
1700
|
-
// @ts-expect-error
|
|
1701
|
+
// @ts-expect-error - TS2345 - Argument of type 'FocusPath' is not assignable to parameter of type 'List<any>'.
|
|
1701
1702
|
const widgetId = _.first(path);
|
|
1702
|
-
// @ts-expect-error
|
|
1703
|
+
// @ts-expect-error - TS2345 - Argument of type 'FocusPath' is not assignable to parameter of type 'List<any>'.
|
|
1703
1704
|
const interWidgetPath = _.rest(path);
|
|
1704
1705
|
const widget = this.getWidgetInstance(widgetId);
|
|
1705
1706
|
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/* eslint-disable @khanacademy/ts-no-error-suppressions */
|
|
1
2
|
import {StyleSheet, css} from "aphrodite";
|
|
2
3
|
/**
|
|
3
4
|
* A copy of the ItemRenderer which renders its question renderer and hints
|
|
@@ -69,7 +70,7 @@ export class ServerItemRenderer
|
|
|
69
70
|
extends React.Component<Props, State>
|
|
70
71
|
implements RendererInterface
|
|
71
72
|
{
|
|
72
|
-
// @ts-expect-error
|
|
73
|
+
// @ts-expect-error - TS2564 - Property 'questionRenderer' has no initializer and is not definitely assigned in the constructor.
|
|
73
74
|
questionRenderer: Renderer;
|
|
74
75
|
hintsRenderer: any;
|
|
75
76
|
_currentFocus: FocusPath;
|
|
@@ -173,7 +174,7 @@ export class ServerItemRenderer
|
|
|
173
174
|
this._currentFocus,
|
|
174
175
|
prevFocus,
|
|
175
176
|
didFocusInput && keypadElement && keypadElement.getDOMNode(),
|
|
176
|
-
// @ts-expect-error
|
|
177
|
+
// @ts-expect-error - TS2345 - Argument of type 'false | Element | Text | null | undefined' is not assignable to parameter of type 'HTMLElement | undefined'.
|
|
177
178
|
didFocusInput &&
|
|
178
179
|
this.questionRenderer.getDOMNodeForPath(newFocus),
|
|
179
180
|
);
|
|
@@ -204,7 +205,7 @@ export class ServerItemRenderer
|
|
|
204
205
|
// this callback is executed
|
|
205
206
|
// TODO(jeff, CP-3128): Use Wonder Blocks Timing API.
|
|
206
207
|
// eslint-disable-next-line no-restricted-syntax
|
|
207
|
-
// @ts-expect-error
|
|
208
|
+
// @ts-expect-error - TS2322 - Type 'Timeout' is not assignable to type 'number'.
|
|
208
209
|
this.blurTimeoutID = setTimeout(() => {
|
|
209
210
|
if (_.isEqual(this._currentFocus, blurringFocusPath)) {
|
|
210
211
|
this._setCurrentFocus(null);
|
|
@@ -323,7 +324,7 @@ export class ServerItemRenderer
|
|
|
323
324
|
const qScore = this.questionRenderer.scoreWidgets();
|
|
324
325
|
const qGuess = this.questionRenderer.getUserInputForWidgets();
|
|
325
326
|
const state = this.questionRenderer.getSerializedState();
|
|
326
|
-
// @ts-expect-error
|
|
327
|
+
// @ts-expect-error - TS2322 - Type 'Partial<Record<string, KEScore>>' is not assignable to type '{ [key: string]: KEScore; }'. | TS2345 - Argument of type '{ [widgetId: string]: PerseusScore; }' is not assignable to parameter of type 'Partial<Record<string, { type: "invalid"; message?: string | null | undefined; suppressAlmostThere?: boolean | null | undefined; }>>'.
|
|
327
328
|
return mapObject(qScore, (score, id) => {
|
|
328
329
|
return Util.keScoreFromPerseusScore(score, qGuess[id], state);
|
|
329
330
|
});
|
|
@@ -417,7 +418,7 @@ export class ServerItemRenderer
|
|
|
417
418
|
<HintsRenderer
|
|
418
419
|
hints={this.props.item.hints}
|
|
419
420
|
hintsVisible={this.props.hintsVisible}
|
|
420
|
-
// @ts-expect-error
|
|
421
|
+
// @ts-expect-error - TS2769 - No overload matches this call.
|
|
421
422
|
apiOptions={apiOptions}
|
|
422
423
|
ref={(elem) => (this.hintsRenderer = elem)}
|
|
423
424
|
/>
|
package/src/sigfigs.ts
CHANGED
|
@@ -434,7 +434,7 @@ function round(mantissa: string, digits: number): string {
|
|
|
434
434
|
roundUp = true;
|
|
435
435
|
}
|
|
436
436
|
}
|
|
437
|
-
// @ts-expect-error
|
|
437
|
+
// @ts-expect-error - TS2362 - The left-hand side of an arithmetic operation must be of type 'any', 'number', 'bigint' or an enum type.
|
|
438
438
|
if (lastChar % 2 == 1) {
|
|
439
439
|
roundUp = true;
|
|
440
440
|
}
|
package/src/styles/articles.less
CHANGED
|
@@ -58,7 +58,8 @@
|
|
|
58
58
|
// inline, so we rely on the "actual paragraph" check above
|
|
59
59
|
// (a .paragraph that contains another .paragraph instead of a
|
|
60
60
|
// .perseus-block-math).
|
|
61
|
-
.katex,
|
|
61
|
+
.katex,
|
|
62
|
+
mjx-container {
|
|
62
63
|
font-size: 100%;
|
|
63
64
|
}
|
|
64
65
|
|
|
@@ -243,7 +244,8 @@
|
|
|
243
244
|
.paragraph {
|
|
244
245
|
.text(@choiceTextSize, @choiceLineHeight, @gray17);
|
|
245
246
|
|
|
246
|
-
.katex,
|
|
247
|
+
.katex,
|
|
248
|
+
mjx-container {
|
|
247
249
|
color: @gray17;
|
|
248
250
|
}
|
|
249
251
|
}
|
|
@@ -391,7 +393,8 @@
|
|
|
391
393
|
.paragraph {
|
|
392
394
|
.text(@choiceTextSize, @choiceLineHeight, @gray17);
|
|
393
395
|
|
|
394
|
-
.katex,
|
|
396
|
+
.katex,
|
|
397
|
+
mjx-container {
|
|
395
398
|
color: @gray17;
|
|
396
399
|
}
|
|
397
400
|
}
|
|
@@ -418,7 +421,8 @@
|
|
|
418
421
|
|
|
419
422
|
.math(@blockMathTextSize; @blockMathLineHeight;
|
|
420
423
|
@inlineMathTextSize; @inlineMathLineHeight) {
|
|
421
|
-
.katex,
|
|
424
|
+
.katex,
|
|
425
|
+
mjx-container {
|
|
422
426
|
font-size: @inlineMathTextSize;
|
|
423
427
|
line-height: @inlineMathLineHeight;
|
|
424
428
|
color: @gray17;
|