@khanacademy/perseus 7.2.1 → 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 +26 -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.js +1139 -1189
- package/dist/es/index.js.map +1 -1
- package/dist/hints-renderer.d.ts +1 -1
- package/dist/index.js +1141 -1192
- 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/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 +1 -1
- 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/__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/hint-renderer.tsx +3 -3
- package/src/hints-renderer.tsx +11 -11
- 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 +5 -5
- 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 +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 +14 -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 +38 -38
- package/src/server-item-renderer.tsx +5 -5
- package/src/sigfigs.ts +1 -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__/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 +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 +2 -1
- package/src/widgets/__tests__/radio/base-radio.test.tsx +7 -7
- package/src/widgets/__tests__/renderQuestion.tsx +3 -3
- 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 +10 -9
- package/src/widgets/graded-group-set.tsx +5 -5
- package/src/widgets/graded-group.tsx +18 -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 +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 +2 -2
- 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
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
|
@@ -66,7 +66,7 @@ const isIdPathPrefix = function (
|
|
|
66
66
|
return prefixArray === wholeArray;
|
|
67
67
|
}
|
|
68
68
|
|
|
69
|
-
// @ts-expect-error
|
|
69
|
+
// @ts-expect-error - TS2345 - Argument of type 'readonly string[] | undefined' is not assignable to parameter of type 'Collection<any>'.
|
|
70
70
|
return _.every(prefixArray, (elem: string, i: number) => {
|
|
71
71
|
if (wholeArray != null) {
|
|
72
72
|
return _.isEqual(elem, wholeArray[i]);
|
|
@@ -209,26 +209,26 @@ type DefaultProps = {
|
|
|
209
209
|
|
|
210
210
|
class Renderer extends React.Component<Props, State> {
|
|
211
211
|
_currentFocus: FocusPath | null | undefined;
|
|
212
|
-
// @ts-expect-error
|
|
212
|
+
// @ts-expect-error - TS2564 - Property '_foundTextNodes' has no initializer and is not definitely assigned in the constructor.
|
|
213
213
|
_foundTextNodes: boolean;
|
|
214
|
-
// @ts-expect-error
|
|
214
|
+
// @ts-expect-error - TS2564 - Property '_interactionTrackers' has no initializer and is not definitely assigned in the constructor.
|
|
215
215
|
_interactionTrackers: {
|
|
216
216
|
[id: string]: InteractionTracker;
|
|
217
217
|
};
|
|
218
|
-
// @ts-expect-error
|
|
218
|
+
// @ts-expect-error - TS2564 - Property '_isMounted' has no initializer and is not definitely assigned in the constructor.
|
|
219
219
|
_isMounted: boolean;
|
|
220
|
-
// @ts-expect-error
|
|
220
|
+
// @ts-expect-error - TS2564 - Property '_isTwoColumn' has no initializer and is not definitely assigned in the constructor.
|
|
221
221
|
_isTwoColumn: boolean;
|
|
222
222
|
|
|
223
223
|
// The i18n linter.
|
|
224
224
|
_translationLinter: TranslationLinter;
|
|
225
225
|
|
|
226
226
|
lastRenderedMarkdown: React.ReactNode;
|
|
227
|
-
// @ts-expect-error
|
|
227
|
+
// @ts-expect-error - TS2564 - Property 'reuseMarkdown' has no initializer and is not definitely assigned in the constructor.
|
|
228
228
|
reuseMarkdown: boolean;
|
|
229
|
-
// @ts-expect-error
|
|
229
|
+
// @ts-expect-error - TS2564 - Property 'translationIndex' has no initializer and is not definitely assigned in the constructor.
|
|
230
230
|
translationIndex: number;
|
|
231
|
-
// @ts-expect-error
|
|
231
|
+
// @ts-expect-error - TS2564 - Property 'widgetIds' has no initializer and is not definitely assigned in the constructor.
|
|
232
232
|
widgetIds: Array<string>;
|
|
233
233
|
|
|
234
234
|
static defaultProps: DefaultProps = {
|
|
@@ -275,7 +275,7 @@ class Renderer extends React.Component<Props, State> {
|
|
|
275
275
|
this._isMounted = true;
|
|
276
276
|
|
|
277
277
|
// figure out why we're passing an empty object
|
|
278
|
-
// @ts-expect-error
|
|
278
|
+
// @ts-expect-error - TS2345 - Argument of type '{}' is not assignable to parameter of type 'Props'.
|
|
279
279
|
this.handleRender({});
|
|
280
280
|
this._currentFocus = null;
|
|
281
281
|
|
|
@@ -392,7 +392,7 @@ class Renderer extends React.Component<Props, State> {
|
|
|
392
392
|
_.each(this.widgetIds, (id) => {
|
|
393
393
|
// eslint-disable-next-line react/no-string-refs
|
|
394
394
|
const container = this.refs["container:" + id];
|
|
395
|
-
// @ts-expect-error
|
|
395
|
+
// @ts-expect-error - TS2339 - Property 'replaceWidgetProps' does not exist on type 'ReactInstance'.
|
|
396
396
|
container && container.replaceWidgetProps(this.getWidgetProps(id));
|
|
397
397
|
});
|
|
398
398
|
|
|
@@ -454,11 +454,11 @@ class Renderer extends React.Component<Props, State> {
|
|
|
454
454
|
};
|
|
455
455
|
};
|
|
456
456
|
|
|
457
|
-
// @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; }'.
|
|
458
458
|
_getAllWidgetsInfo: (props: Props) => {
|
|
459
459
|
[key: string]: WidgetInfo;
|
|
460
460
|
} = (props: Props) => {
|
|
461
|
-
// @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>>'.
|
|
462
462
|
return mapObject(props.widgets, (widgetInfo, widgetId) => {
|
|
463
463
|
if (!widgetInfo.type || !widgetInfo.alignment) {
|
|
464
464
|
const newValues: Record<string, any> = {};
|
|
@@ -482,7 +482,7 @@ class Renderer extends React.Component<Props, State> {
|
|
|
482
482
|
},
|
|
483
483
|
props: Props,
|
|
484
484
|
) => any = (allWidgetInfo, props) => {
|
|
485
|
-
// @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>>'.
|
|
486
486
|
return mapObject(allWidgetInfo, (widgetInfo) => {
|
|
487
487
|
return Widgets.getRendererPropsForWidgetInfo(
|
|
488
488
|
widgetInfo,
|
|
@@ -541,7 +541,7 @@ class Renderer extends React.Component<Props, State> {
|
|
|
541
541
|
if (widgetInfo) {
|
|
542
542
|
const type = (widgetInfo && widgetInfo.type) || impliedType;
|
|
543
543
|
const shouldHighlight = _.contains(
|
|
544
|
-
// @ts-expect-error
|
|
544
|
+
// @ts-expect-error - TS2345 - Argument of type 'readonly any[] | undefined' is not assignable to parameter of type 'Collection<any>'.
|
|
545
545
|
this.props.highlightedWidgets,
|
|
546
546
|
id,
|
|
547
547
|
);
|
|
@@ -590,10 +590,10 @@ class Renderer extends React.Component<Props, State> {
|
|
|
590
590
|
interactionTracker = this._interactionTrackers[id] =
|
|
591
591
|
new InteractionTracker(
|
|
592
592
|
apiOptions.trackInteraction,
|
|
593
|
-
// @ts-expect-error
|
|
593
|
+
// @ts-expect-error - TS2345 - Argument of type 'string | null | undefined' is not assignable to parameter of type 'string'.
|
|
594
594
|
widgetInfo && widgetInfo.type,
|
|
595
595
|
id,
|
|
596
|
-
// @ts-expect-error
|
|
596
|
+
// @ts-expect-error - TS2345 - Argument of type 'string | null | undefined' is not assignable to parameter of type 'string'.
|
|
597
597
|
Widgets.getTracking(widgetInfo && widgetInfo.type),
|
|
598
598
|
);
|
|
599
599
|
}
|
|
@@ -858,7 +858,7 @@ class Renderer extends React.Component<Props, State> {
|
|
|
858
858
|
if (!ref) {
|
|
859
859
|
return null;
|
|
860
860
|
}
|
|
861
|
-
// @ts-expect-error
|
|
861
|
+
// @ts-expect-error - TS2339 - Property 'getWidget' does not exist on type 'ReactInstance'.
|
|
862
862
|
return ref.getWidget();
|
|
863
863
|
};
|
|
864
864
|
|
|
@@ -885,7 +885,7 @@ class Renderer extends React.Component<Props, State> {
|
|
|
885
885
|
|
|
886
886
|
// Failsafe: abort if ID is different, because focus probably happened
|
|
887
887
|
// before blur
|
|
888
|
-
// @ts-expect-error
|
|
888
|
+
// @ts-expect-error - TS2769 - No overload matches this call.
|
|
889
889
|
const fullPath = [id].concat(blurPath);
|
|
890
890
|
if (!_.isEqual(fullPath, blurringFocusPath)) {
|
|
891
891
|
return;
|
|
@@ -978,7 +978,7 @@ class Renderer extends React.Component<Props, State> {
|
|
|
978
978
|
|
|
979
979
|
// wrap top-level elements in a QuestionParagraph, mostly
|
|
980
980
|
// for appropriate spacing and other css
|
|
981
|
-
// @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>>'.
|
|
982
982
|
outputMarkdown: (ast: any, state: WidgetState) => React.ReactElement = (
|
|
983
983
|
ast: any,
|
|
984
984
|
state: WidgetState,
|
|
@@ -1004,10 +1004,10 @@ class Renderer extends React.Component<Props, State> {
|
|
|
1004
1004
|
// now.
|
|
1005
1005
|
/* c8 ignore if */
|
|
1006
1006
|
if (typeof nodeOut === "string" && lastWasString) {
|
|
1007
|
-
// @ts-expect-error
|
|
1007
|
+
// @ts-expect-error - TS2322 - Type 'number' is not assignable to type 'never'.
|
|
1008
1008
|
result[result.length - 1] += nodeOut;
|
|
1009
1009
|
} else {
|
|
1010
|
-
// @ts-expect-error
|
|
1010
|
+
// @ts-expect-error - TS2345 - Argument of type 'ReactElement<any, string | JSXElementConstructor<any>>' is not assignable to parameter of type 'never'.
|
|
1011
1011
|
result.push(nodeOut);
|
|
1012
1012
|
}
|
|
1013
1013
|
lastWasString = isString;
|
|
@@ -1303,7 +1303,7 @@ class Renderer extends React.Component<Props, State> {
|
|
|
1303
1303
|
{({setAssetStatus}) => (
|
|
1304
1304
|
<SvgImage
|
|
1305
1305
|
setAssetStatus={setAssetStatus}
|
|
1306
|
-
// @ts-expect-error
|
|
1306
|
+
// @ts-expect-error - TS2322 - Type 'string | null | undefined' is not assignable to type 'string | undefined'.
|
|
1307
1307
|
src={PerseusMarkdown.sanitizeUrl(node.target)}
|
|
1308
1308
|
alt={node.alt}
|
|
1309
1309
|
title={node.title}
|
|
@@ -1397,7 +1397,7 @@ class Renderer extends React.Component<Props, State> {
|
|
|
1397
1397
|
|
|
1398
1398
|
// In the common case of no callback specified, avoid this work.
|
|
1399
1399
|
if (onRender !== noopOnRender || oldOnRender !== noopOnRender) {
|
|
1400
|
-
// @ts-expect-error
|
|
1400
|
+
// @ts-expect-error - TS2769 - No overload matches this call. | TS2339 - Property 'find' does not exist on type 'JQueryStatic'.
|
|
1401
1401
|
const $images = $(ReactDOM.findDOMNode(this)).find("img");
|
|
1402
1402
|
|
|
1403
1403
|
// Fire callback on image load...
|
|
@@ -1490,9 +1490,9 @@ class Renderer extends React.Component<Props, State> {
|
|
|
1490
1490
|
|
|
1491
1491
|
getDOMNodeForPath: (path: FocusPath) => Element | Text | null | undefined =
|
|
1492
1492
|
(path: FocusPath) => {
|
|
1493
|
-
// @ts-expect-error
|
|
1493
|
+
// @ts-expect-error - TS2345 - Argument of type 'FocusPath' is not assignable to parameter of type 'List<any>'.
|
|
1494
1494
|
const widgetId = _.first(path);
|
|
1495
|
-
// @ts-expect-error
|
|
1495
|
+
// @ts-expect-error - TS2345 - Argument of type 'FocusPath' is not assignable to parameter of type 'List<any>'.
|
|
1496
1496
|
const interWidgetPath = _.rest(path);
|
|
1497
1497
|
|
|
1498
1498
|
// Widget handles parsing of the interWidgetPath. If the path is empty
|
|
@@ -1504,7 +1504,7 @@ class Renderer extends React.Component<Props, State> {
|
|
|
1504
1504
|
return getNode(interWidgetPath);
|
|
1505
1505
|
}
|
|
1506
1506
|
if (interWidgetPath.length === 0) {
|
|
1507
|
-
// @ts-expect-error
|
|
1507
|
+
// @ts-expect-error - TS2345 - Argument of type 'Widget | null | undefined' is not assignable to parameter of type 'ReactInstance | null | undefined'.
|
|
1508
1508
|
return ReactDOM.findDOMNode(widget);
|
|
1509
1509
|
}
|
|
1510
1510
|
};
|
|
@@ -1512,9 +1512,9 @@ class Renderer extends React.Component<Props, State> {
|
|
|
1512
1512
|
getGrammarTypeForPath: (path: FocusPath) => string | null | undefined = (
|
|
1513
1513
|
path: FocusPath,
|
|
1514
1514
|
) => {
|
|
1515
|
-
// @ts-expect-error
|
|
1515
|
+
// @ts-expect-error - TS2345 - Argument of type 'FocusPath' is not assignable to parameter of type 'List<any>'.
|
|
1516
1516
|
const widgetId = _.first(path);
|
|
1517
|
-
// @ts-expect-error
|
|
1517
|
+
// @ts-expect-error - TS2345 - Argument of type 'FocusPath' is not assignable to parameter of type 'List<any>'.
|
|
1518
1518
|
const interWidgetPath = _.rest(path);
|
|
1519
1519
|
|
|
1520
1520
|
const widget = this.getWidgetInstance(widgetId);
|
|
@@ -1532,7 +1532,7 @@ class Renderer extends React.Component<Props, State> {
|
|
|
1532
1532
|
const widgetInputPaths = widget.getInputPaths();
|
|
1533
1533
|
// Prefix paths with their widgetID and add to collective
|
|
1534
1534
|
// list of paths.
|
|
1535
|
-
// @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[]>'.
|
|
1536
1536
|
_.each(widgetInputPaths, (inputPath: string) => {
|
|
1537
1537
|
const relativeInputPath = [widgetId].concat(inputPath);
|
|
1538
1538
|
inputPaths.push(relativeInputPath);
|
|
@@ -1553,9 +1553,9 @@ class Renderer extends React.Component<Props, State> {
|
|
|
1553
1553
|
this.blurPath(this._currentFocus);
|
|
1554
1554
|
}
|
|
1555
1555
|
|
|
1556
|
-
// @ts-expect-error
|
|
1556
|
+
// @ts-expect-error - TS2345 - Argument of type 'FocusPath' is not assignable to parameter of type 'List<any>'.
|
|
1557
1557
|
const widgetId = _.first(path);
|
|
1558
|
-
// @ts-expect-error
|
|
1558
|
+
// @ts-expect-error - TS2345 - Argument of type 'FocusPath' is not assignable to parameter of type 'List<any>'.
|
|
1559
1559
|
const interWidgetPath = _.rest(path);
|
|
1560
1560
|
|
|
1561
1561
|
// Widget handles parsing of the interWidgetPath
|
|
@@ -1571,9 +1571,9 @@ class Renderer extends React.Component<Props, State> {
|
|
|
1571
1571
|
return;
|
|
1572
1572
|
}
|
|
1573
1573
|
|
|
1574
|
-
// @ts-expect-error
|
|
1574
|
+
// @ts-expect-error - TS2345 - Argument of type 'FocusPath' is not assignable to parameter of type 'List<any>'.
|
|
1575
1575
|
const widgetId = _.first(path);
|
|
1576
|
-
// @ts-expect-error
|
|
1576
|
+
// @ts-expect-error - TS2345 - Argument of type 'FocusPath' is not assignable to parameter of type 'List<any>'.
|
|
1577
1577
|
const interWidgetPath = _.rest(path);
|
|
1578
1578
|
const widget = this.getWidgetInstance(widgetId);
|
|
1579
1579
|
// We might be in the editor and blurring a widget that no
|
|
@@ -1600,7 +1600,7 @@ class Renderer extends React.Component<Props, State> {
|
|
|
1600
1600
|
this.state.widgetInfo,
|
|
1601
1601
|
function (info, id) {
|
|
1602
1602
|
// eslint-disable-next-line @babel/no-invalid-this
|
|
1603
|
-
// @ts-expect-error
|
|
1603
|
+
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
1604
1604
|
// eslint-disable-next-line @babel/no-invalid-this
|
|
1605
1605
|
const widget = this.getWidgetInstance(id);
|
|
1606
1606
|
const s = widget.serialize();
|
|
@@ -1614,7 +1614,7 @@ class Renderer extends React.Component<Props, State> {
|
|
|
1614
1614
|
};
|
|
1615
1615
|
|
|
1616
1616
|
emptyWidgets: () => any = () => {
|
|
1617
|
-
// @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>'.
|
|
1618
1618
|
return _.filter(this.widgetIds, (id) => {
|
|
1619
1619
|
const widgetInfo = this._getWidgetInfo(id);
|
|
1620
1620
|
if (widgetInfo.static) {
|
|
@@ -1625,7 +1625,7 @@ class Renderer extends React.Component<Props, State> {
|
|
|
1625
1625
|
if (widget && widget.simpleValidate) {
|
|
1626
1626
|
const score: PerseusScore = widget.simpleValidate(
|
|
1627
1627
|
widgetInfo.options,
|
|
1628
|
-
// @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'.
|
|
1629
1629
|
null,
|
|
1630
1630
|
);
|
|
1631
1631
|
return Util.scoreIsEmpty(score);
|
|
@@ -1698,9 +1698,9 @@ class Renderer extends React.Component<Props, State> {
|
|
|
1698
1698
|
newValue: string,
|
|
1699
1699
|
focus: () => unknown,
|
|
1700
1700
|
) => void = (path, newValue, focus) => {
|
|
1701
|
-
// @ts-expect-error
|
|
1701
|
+
// @ts-expect-error - TS2345 - Argument of type 'FocusPath' is not assignable to parameter of type 'List<any>'.
|
|
1702
1702
|
const widgetId = _.first(path);
|
|
1703
|
-
// @ts-expect-error
|
|
1703
|
+
// @ts-expect-error - TS2345 - Argument of type 'FocusPath' is not assignable to parameter of type 'List<any>'.
|
|
1704
1704
|
const interWidgetPath = _.rest(path);
|
|
1705
1705
|
const widget = this.getWidgetInstance(widgetId);
|
|
1706
1706
|
|
|
@@ -70,7 +70,7 @@ export class ServerItemRenderer
|
|
|
70
70
|
extends React.Component<Props, State>
|
|
71
71
|
implements RendererInterface
|
|
72
72
|
{
|
|
73
|
-
// @ts-expect-error
|
|
73
|
+
// @ts-expect-error - TS2564 - Property 'questionRenderer' has no initializer and is not definitely assigned in the constructor.
|
|
74
74
|
questionRenderer: Renderer;
|
|
75
75
|
hintsRenderer: any;
|
|
76
76
|
_currentFocus: FocusPath;
|
|
@@ -174,7 +174,7 @@ export class ServerItemRenderer
|
|
|
174
174
|
this._currentFocus,
|
|
175
175
|
prevFocus,
|
|
176
176
|
didFocusInput && keypadElement && keypadElement.getDOMNode(),
|
|
177
|
-
// @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'.
|
|
178
178
|
didFocusInput &&
|
|
179
179
|
this.questionRenderer.getDOMNodeForPath(newFocus),
|
|
180
180
|
);
|
|
@@ -205,7 +205,7 @@ export class ServerItemRenderer
|
|
|
205
205
|
// this callback is executed
|
|
206
206
|
// TODO(jeff, CP-3128): Use Wonder Blocks Timing API.
|
|
207
207
|
// eslint-disable-next-line no-restricted-syntax
|
|
208
|
-
// @ts-expect-error
|
|
208
|
+
// @ts-expect-error - TS2322 - Type 'Timeout' is not assignable to type 'number'.
|
|
209
209
|
this.blurTimeoutID = setTimeout(() => {
|
|
210
210
|
if (_.isEqual(this._currentFocus, blurringFocusPath)) {
|
|
211
211
|
this._setCurrentFocus(null);
|
|
@@ -324,7 +324,7 @@ export class ServerItemRenderer
|
|
|
324
324
|
const qScore = this.questionRenderer.scoreWidgets();
|
|
325
325
|
const qGuess = this.questionRenderer.getUserInputForWidgets();
|
|
326
326
|
const state = this.questionRenderer.getSerializedState();
|
|
327
|
-
// @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; }>>'.
|
|
328
328
|
return mapObject(qScore, (score, id) => {
|
|
329
329
|
return Util.keScoreFromPerseusScore(score, qGuess[id], state);
|
|
330
330
|
});
|
|
@@ -418,7 +418,7 @@ export class ServerItemRenderer
|
|
|
418
418
|
<HintsRenderer
|
|
419
419
|
hints={this.props.item.hints}
|
|
420
420
|
hintsVisible={this.props.hintsVisible}
|
|
421
|
-
// @ts-expect-error
|
|
421
|
+
// @ts-expect-error - TS2769 - No overload matches this call.
|
|
422
422
|
apiOptions={apiOptions}
|
|
423
423
|
ref={(elem) => (this.hintsRenderer = elem)}
|
|
424
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/traversal.ts
CHANGED
|
@@ -100,7 +100,7 @@ const traverseRenderer = function (
|
|
|
100
100
|
// should always be renderable. It's also annoying to write
|
|
101
101
|
// checks for this everywhere, so we just filter them out once and
|
|
102
102
|
// for all!
|
|
103
|
-
// @ts-expect-error
|
|
103
|
+
// @ts-expect-error - TS2571 - Object is of type 'unknown'.
|
|
104
104
|
if (widgetInfo == null || widgetInfo.type == null) {
|
|
105
105
|
return widgetInfo;
|
|
106
106
|
}
|
package/src/types.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
|
|
3
1
|
import type {SerializedHighlightSet} from "./components/highlighting/types";
|
|
4
2
|
import type {ILogger} from "./logging/log";
|
|
5
3
|
import type {Item} from "./multi-items/item-types";
|
|
6
4
|
import type {PerseusWidget} from "./perseus-types";
|
|
7
5
|
import type {SizeClass} from "./util/sizing-utils";
|
|
6
|
+
import type {KeypadAPI} from "@khanacademy/math-input";
|
|
8
7
|
import type {SendEventFn} from "@khanacademy/perseus-core";
|
|
9
8
|
import type {Result} from "@khanacademy/wonder-blocks-data";
|
|
9
|
+
import type * as React from "react";
|
|
10
10
|
|
|
11
11
|
export type FocusPath = ReadonlyArray<string> | null | undefined;
|
|
12
12
|
|
|
@@ -187,7 +187,7 @@ export type APIOptions = Readonly<{
|
|
|
187
187
|
// It is called with an function that, when called, blurs the input,
|
|
188
188
|
// and is expected to return an object of the shape
|
|
189
189
|
// keypadElementPropType from math-input/src/prop-types.js.
|
|
190
|
-
nativeKeypadProxy?: () =>
|
|
190
|
+
nativeKeypadProxy?: (blur: () => void) => KeypadAPI;
|
|
191
191
|
// Indicates whether or not to use mobile styling.
|
|
192
192
|
isMobile?: boolean;
|
|
193
193
|
// A function, called with a bool indicating whether use of the
|
package/src/util/answer-types.ts
CHANGED
|
@@ -457,10 +457,10 @@ const KhanAnswerTypes = {
|
|
|
457
457
|
text = text.replace(/[ \(\)]/g, "");
|
|
458
458
|
|
|
459
459
|
if ((match = text.match(/^log\s*(\S+)\s*$/i))) {
|
|
460
|
-
// @ts-expect-error
|
|
460
|
+
// @ts-expect-error - TS2322 - Type '{ value: number | undefined; exact: boolean; }[]' is not assignable to type 'never[]'.
|
|
461
461
|
possibilities = forms.decimal(match[1]);
|
|
462
462
|
} else if (text === "0") {
|
|
463
|
-
// @ts-expect-error
|
|
463
|
+
// @ts-expect-error - TS2322 - Type 'number' is not assignable to type 'never'. | TS2322 - Type 'boolean' is not assignable to type 'never'.
|
|
464
464
|
possibilities = [{value: 0, exact: true}];
|
|
465
465
|
}
|
|
466
466
|
return possibilities;
|
|
@@ -480,7 +480,7 @@ const KhanAnswerTypes = {
|
|
|
480
480
|
const transformed = forms.decimal(text);
|
|
481
481
|
$.each(transformed, function (ix, t) {
|
|
482
482
|
t.exact = hasPercentSign;
|
|
483
|
-
// @ts-expect-error
|
|
483
|
+
// @ts-expect-error - TS2532 - Object is possibly 'undefined'.
|
|
484
484
|
t.value = t.value / 100;
|
|
485
485
|
});
|
|
486
486
|
return transformed;
|
|
@@ -674,7 +674,7 @@ const KhanAnswerTypes = {
|
|
|
674
674
|
options: any,
|
|
675
675
|
): (arg1: Guess) => Score {
|
|
676
676
|
return KhanAnswerTypes.predicate.createValidatorFunctional(
|
|
677
|
-
// @ts-expect-error
|
|
677
|
+
// @ts-expect-error - TS2556 - A spread argument must either have a tuple type or be passed to a rest parameter.
|
|
678
678
|
...KhanAnswerTypes.number.convertToPredicate(
|
|
679
679
|
correctAnswer,
|
|
680
680
|
options,
|
|
@@ -778,7 +778,7 @@ const KhanAnswerTypes = {
|
|
|
778
778
|
|
|
779
779
|
// Don't bother parsing an empty input
|
|
780
780
|
if (!guess) {
|
|
781
|
-
// @ts-expect-error
|
|
781
|
+
// @ts-expect-error - TS2540 - Cannot assign to 'empty' because it is a read-only property.
|
|
782
782
|
score.empty = true;
|
|
783
783
|
return score;
|
|
784
784
|
}
|
|
@@ -787,7 +787,7 @@ const KhanAnswerTypes = {
|
|
|
787
787
|
|
|
788
788
|
// An unsuccessful parse doesn't count as wrong
|
|
789
789
|
if (!answer.parsed) {
|
|
790
|
-
// @ts-expect-error
|
|
790
|
+
// @ts-expect-error - TS2540 - Cannot assign to 'empty' because it is a read-only property.
|
|
791
791
|
score.empty = true;
|
|
792
792
|
return score;
|
|
793
793
|
}
|
|
@@ -805,7 +805,7 @@ const KhanAnswerTypes = {
|
|
|
805
805
|
|
|
806
806
|
if (result.equal) {
|
|
807
807
|
// Correct answer
|
|
808
|
-
// @ts-expect-error
|
|
808
|
+
// @ts-expect-error - TS2540 - Cannot assign to 'correct' because it is a read-only property.
|
|
809
809
|
score.correct = true;
|
|
810
810
|
} else if (
|
|
811
811
|
result.wrongVariableNames ||
|
|
@@ -816,20 +816,20 @@ const KhanAnswerTypes = {
|
|
|
816
816
|
// TODO(aasmund): This should ideally have been handled
|
|
817
817
|
// under the `result.message` condition, but the
|
|
818
818
|
// KAS messages currently aren't translatable.
|
|
819
|
-
// @ts-expect-error
|
|
819
|
+
// @ts-expect-error - TS2540 - Cannot assign to 'ungraded' because it is a read-only property.
|
|
820
820
|
score.ungraded = true;
|
|
821
|
-
// @ts-expect-error
|
|
821
|
+
// @ts-expect-error - TS2540 - Cannot assign to 'message' because it is a read-only property.
|
|
822
822
|
score.message = result.wrongVariableCase
|
|
823
823
|
? errors.WRONG_CASE_ERROR
|
|
824
824
|
: errors.WRONG_LETTER_ERROR;
|
|
825
825
|
// Don't tell the use they're "almost there" in this case, that may not be true and isn't helpful.
|
|
826
|
-
// @ts-expect-error
|
|
826
|
+
// @ts-expect-error - TS2339 - Property 'suppressAlmostThere' does not exist on type '{ readonly empty: false; readonly correct: false; readonly message: string | null | undefined; readonly guess: any; readonly ungraded: false; }'.
|
|
827
827
|
score.suppressAlmostThere = true;
|
|
828
828
|
} else if (result.message) {
|
|
829
829
|
// Nearly correct answer
|
|
830
830
|
// TODO(aasmund): This message also isn't translatable;
|
|
831
831
|
// need to fix that in KAS
|
|
832
|
-
// @ts-expect-error
|
|
832
|
+
// @ts-expect-error - TS2540 - Cannot assign to 'message' because it is a read-only property.
|
|
833
833
|
score.message = result.message;
|
|
834
834
|
} else {
|
|
835
835
|
// Replace x with * and see if it would have been correct
|
|
@@ -851,13 +851,13 @@ const KhanAnswerTypes = {
|
|
|
851
851
|
options,
|
|
852
852
|
);
|
|
853
853
|
if (resultX.equal) {
|
|
854
|
-
// @ts-expect-error
|
|
854
|
+
// @ts-expect-error - TS2540 - Cannot assign to 'ungraded' because it is a read-only property.
|
|
855
855
|
score.ungraded = true;
|
|
856
|
-
// @ts-expect-error
|
|
856
|
+
// @ts-expect-error - TS2540 - Cannot assign to 'message' because it is a read-only property.
|
|
857
857
|
score.message = errors.MULTIPLICATION_SIGN_ERROR;
|
|
858
858
|
} else if (resultX.message) {
|
|
859
859
|
// TODO(aasmund): I18nize `score.message`
|
|
860
|
-
// @ts-expect-error
|
|
860
|
+
// @ts-expect-error - TS2540 - Cannot assign to 'message' because it is a read-only property.
|
|
861
861
|
score.message =
|
|
862
862
|
resultX.message +
|
|
863
863
|
" Also, I'm a computer. I only understand " +
|
package/src/util/geometry.ts
CHANGED
|
@@ -88,7 +88,7 @@ export function magnitude(v: ReadonlyArray<Coord>): number {
|
|
|
88
88
|
_.reduce(
|
|
89
89
|
v,
|
|
90
90
|
function (memo, el) {
|
|
91
|
-
// @ts-expect-error
|
|
91
|
+
// @ts-expect-error - TS2345 - Argument of type 'Coord' is not assignable to parameter of type 'number'.
|
|
92
92
|
return memo + Math.pow(el, 2);
|
|
93
93
|
},
|
|
94
94
|
0,
|
|
@@ -109,7 +109,7 @@ function dotProduct(a: Coord, b: Coord): number {
|
|
|
109
109
|
function sideLengths(coords: ReadonlyArray<Coord>): ReadonlyArray<number> {
|
|
110
110
|
const segments = _.zip(coords, rotate(coords));
|
|
111
111
|
return segments.map(function (segment) {
|
|
112
|
-
// @ts-expect-error
|
|
112
|
+
// @ts-expect-error - TS2345 - Argument of type 'number[]' is not assignable to parameter of type 'readonly Coord[]'. | TS2556 - A spread argument must either have a tuple type or be passed to a rest parameter.
|
|
113
113
|
return magnitude(vector(...segment));
|
|
114
114
|
});
|
|
115
115
|
}
|
|
@@ -123,9 +123,9 @@ export function angleMeasures(
|
|
|
123
123
|
const offsets = _.map(triplets, function (triplet) {
|
|
124
124
|
const p = vector(triplet[1], triplet[0]);
|
|
125
125
|
const q = vector(triplet[2], triplet[1]);
|
|
126
|
-
// @ts-expect-error
|
|
126
|
+
// @ts-expect-error - TS2345 - Argument of type 'number[]' is not assignable to parameter of type 'Coord'. | TS2345 - Argument of type 'number[]' is not assignable to parameter of type 'readonly Coord[]'. | TS2345 - Argument of type 'number[]' is not assignable to parameter of type 'readonly Coord[]'.
|
|
127
127
|
const raw = Math.acos(dotProduct(p, q) / (magnitude(p) * magnitude(q)));
|
|
128
|
-
// @ts-expect-error
|
|
128
|
+
// @ts-expect-error - TS2556 - A spread argument must either have a tuple type or be passed to a rest parameter.
|
|
129
129
|
return sign(ccw(...triplet)) > 0 ? raw : -raw;
|
|
130
130
|
});
|
|
131
131
|
|
|
@@ -170,13 +170,13 @@ export function similar(
|
|
|
170
170
|
sides.reverse();
|
|
171
171
|
// Since sides are calculated from two coordinates,
|
|
172
172
|
// simply reversing results in an off by one error
|
|
173
|
-
// @ts-expect-error
|
|
173
|
+
// @ts-expect-error - TS4104 - The type 'readonly number[]' is 'readonly' and cannot be assigned to the mutable type 'number[]'.
|
|
174
174
|
sides = rotate(sides, 1);
|
|
175
175
|
}
|
|
176
176
|
|
|
177
|
-
// @ts-expect-error
|
|
177
|
+
// @ts-expect-error - TS4104 - The type 'readonly number[]' is 'readonly' and cannot be assigned to the mutable type 'number[]'.
|
|
178
178
|
angles = rotate(angles, i);
|
|
179
|
-
// @ts-expect-error
|
|
179
|
+
// @ts-expect-error - TS4104 - The type 'readonly number[]' is 'readonly' and cannot be assigned to the mutable type 'number[]'.
|
|
180
180
|
sides = rotate(sides, i);
|
|
181
181
|
|
|
182
182
|
if (deepEq(angles1, angles)) {
|