@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
package/src/util/math.ts
CHANGED
|
@@ -38,7 +38,7 @@ const KhanMath = {
|
|
|
38
38
|
// TODO(kevinb): rewrite using rest args instead of arguments
|
|
39
39
|
// eslint-disable-next-line prefer-rest-params
|
|
40
40
|
const rest = [].slice.call(arguments, 1);
|
|
41
|
-
// @ts-expect-error
|
|
41
|
+
// @ts-expect-error - TS2556 - A spread argument must either have a tuple type or be passed to a rest parameter.
|
|
42
42
|
return KhanMath.getGCD(a, KhanMath.getGCD(...rest));
|
|
43
43
|
}
|
|
44
44
|
let mod;
|
|
@@ -60,7 +60,7 @@ const KhanMath = {
|
|
|
60
60
|
// TODO(kevinb): rewrite using rest args instead of arguments
|
|
61
61
|
// eslint-disable-next-line prefer-rest-params
|
|
62
62
|
const rest = [].slice.call(arguments, 1);
|
|
63
|
-
// @ts-expect-error
|
|
63
|
+
// @ts-expect-error - TS2556 - A spread argument must either have a tuple type or be passed to a rest parameter.
|
|
64
64
|
return KhanMath.getLCM(a, KhanMath.getLCM(...rest));
|
|
65
65
|
}
|
|
66
66
|
return Math.abs(a * b) / KhanMath.getGCD(a, b);
|
|
@@ -91,7 +91,7 @@ const KhanMath = {
|
|
|
91
91
|
|
|
92
92
|
return true;
|
|
93
93
|
},
|
|
94
|
-
// @ts-expect-error
|
|
94
|
+
// @ts-expect-error - TS2366 - Function lacks ending return statement and return type does not include 'undefined'.
|
|
95
95
|
getPrimeFactorization: function (number: number): ReadonlyArray<number> {
|
|
96
96
|
if (number === 1) {
|
|
97
97
|
return [];
|
|
@@ -121,7 +121,7 @@ const KhanMath = {
|
|
|
121
121
|
// Round a number to a certain number of decimal places
|
|
122
122
|
roundTo: function (precision: number, num: number): number {
|
|
123
123
|
const factor = Math.pow(10, precision).toFixed(5);
|
|
124
|
-
// @ts-expect-error
|
|
124
|
+
// @ts-expect-error - TS2345 - Argument of type 'string' is not assignable to parameter of type 'number'. | TS2363 - The right-hand side of an arithmetic operation must be of type 'any', 'number', 'bigint' or an enum type. | TS2363 - The right-hand side of an arithmetic operation must be of type 'any', 'number', 'bigint' or an enum type.
|
|
125
125
|
return Math.round((num * factor).toFixed(5)) / factor;
|
|
126
126
|
},
|
|
127
127
|
|
|
@@ -8,7 +8,7 @@ export default function render<ElementType extends React.ElementType>(
|
|
|
8
8
|
callback?: () => void,
|
|
9
9
|
): React.ElementRef<ElementType> {
|
|
10
10
|
// TODO(LP-11406): Replace this, or callers, with React Portal
|
|
11
|
-
// @ts-expect-error
|
|
11
|
+
// @ts-expect-error - TS2322 - Type 'void' is not assignable to type 'ElementRef<ElementType>'.
|
|
12
12
|
// eslint-disable-next-line no-restricted-syntax
|
|
13
13
|
return ReactDOM.render(
|
|
14
14
|
/**
|
package/src/util/scroll-utils.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
// Polyfill scrollTo if it doesn't exist
|
|
6
6
|
if (typeof HTMLElement !== "undefined" && !HTMLElement.prototype.scrollTo) {
|
|
7
|
-
// @ts-expect-error
|
|
7
|
+
// @ts-expect-error - TS2322 - Type '(left: number, top: any) => void' is not assignable to type '{ (options?: ScrollToOptions | undefined): void; (x: number, y: number): void; }'.
|
|
8
8
|
HTMLElement.prototype.scrollTo = function (left, top: any) {
|
|
9
9
|
this.scrollLeft = left;
|
|
10
10
|
this.scrollTop = top;
|
|
@@ -44,7 +44,7 @@ const scrollElementToOffset = (
|
|
|
44
44
|
const startPosition =
|
|
45
45
|
elementOrWindow === window
|
|
46
46
|
? window.pageYOffset
|
|
47
|
-
: // @ts-expect-error
|
|
47
|
+
: // @ts-expect-error - TS2551 - Property 'scrollTop' does not exist on type 'HTMLElement | Window'. Did you mean 'scrollTo'?
|
|
48
48
|
elementOrWindow.scrollTop;
|
|
49
49
|
const endPosition = offset;
|
|
50
50
|
const scrollDistance = endPosition - startPosition;
|
package/src/util/tex.ts
CHANGED
|
@@ -79,11 +79,11 @@ export default {
|
|
|
79
79
|
if (text == null) {
|
|
80
80
|
if ($elem.attr("data-math-formula")) {
|
|
81
81
|
// The old typeset formula
|
|
82
|
-
// @ts-expect-error
|
|
82
|
+
// @ts-expect-error - TS2322 - Type 'string | undefined' is not assignable to type 'string'.
|
|
83
83
|
text = $elem.attr("data-math-formula");
|
|
84
84
|
} else if (script) {
|
|
85
85
|
// The contents of the <script> tag
|
|
86
|
-
// @ts-expect-error
|
|
86
|
+
// @ts-expect-error - TS2339 - Property 'text' does not exist on type 'HTMLElement'.
|
|
87
87
|
text = script.text || script.textContent;
|
|
88
88
|
}
|
|
89
89
|
}
|
|
@@ -130,7 +130,7 @@ export default {
|
|
|
130
130
|
}
|
|
131
131
|
}
|
|
132
132
|
|
|
133
|
-
// @ts-expect-error
|
|
133
|
+
// @ts-expect-error - TS2769 - No overload matches this call.
|
|
134
134
|
$elem.text($elem.attr("data-math-formula"));
|
|
135
135
|
$elem.attr("data-math-formula", null);
|
|
136
136
|
$elem.attr("data-math-type", null);
|
package/src/util.ts
CHANGED
|
@@ -58,9 +58,9 @@ const nestedMap = function <T, M>(
|
|
|
58
58
|
context: unknown,
|
|
59
59
|
): M | ReadonlyArray<M> {
|
|
60
60
|
if (Array.isArray(children)) {
|
|
61
|
-
// @ts-expect-error
|
|
61
|
+
// @ts-expect-error - TS2322 - Type '(M | readonly M[])[]' is not assignable to type 'M | readonly M[]'.
|
|
62
62
|
return _.map(children, function (child) {
|
|
63
|
-
// @ts-expect-error
|
|
63
|
+
// @ts-expect-error - TS2554 - Expected 3 arguments, but got 2.
|
|
64
64
|
return nestedMap(child, func);
|
|
65
65
|
});
|
|
66
66
|
}
|
|
@@ -149,9 +149,9 @@ function shuffle<T>(
|
|
|
149
149
|
const newEnd = Math.floor(random() * top),
|
|
150
150
|
temp = shuffled[newEnd];
|
|
151
151
|
|
|
152
|
-
// @ts-expect-error
|
|
152
|
+
// @ts-expect-error - TS2542 - Index signature in type 'readonly T[]' only permits reading.
|
|
153
153
|
shuffled[newEnd] = shuffled[top - 1];
|
|
154
|
-
// @ts-expect-error
|
|
154
|
+
// @ts-expect-error - TS2542 - Index signature in type 'readonly T[]' only permits reading.
|
|
155
155
|
shuffled[top - 1] = temp;
|
|
156
156
|
}
|
|
157
157
|
} while (ensurePermuted && _.isEqual(array, shuffled));
|
|
@@ -179,14 +179,14 @@ const split: (str: string, r: RegExp) => ReadonlyArray<string> = "x".split(
|
|
|
179
179
|
|
|
180
180
|
while ((match = r.exec(str))) {
|
|
181
181
|
const m = match;
|
|
182
|
-
// @ts-expect-error
|
|
182
|
+
// @ts-expect-error - TS2345 - Argument of type 'string' is not assignable to parameter of type 'never'.
|
|
183
183
|
output.push(str.slice(lastIndex, m.index));
|
|
184
|
-
// @ts-expect-error
|
|
184
|
+
// @ts-expect-error - TS2345 - Argument of type 'any' is not assignable to parameter of type 'never'.
|
|
185
185
|
output.push(...m.slice(1));
|
|
186
186
|
lastIndex = m.index + m[0].length;
|
|
187
187
|
}
|
|
188
188
|
|
|
189
|
-
// @ts-expect-error
|
|
189
|
+
// @ts-expect-error - TS2345 - Argument of type 'string' is not assignable to parameter of type 'never'.
|
|
190
190
|
output.push(str.slice(lastIndex));
|
|
191
191
|
return output;
|
|
192
192
|
};
|
|
@@ -287,7 +287,7 @@ function keScoreFromPerseusScore(
|
|
|
287
287
|
};
|
|
288
288
|
}
|
|
289
289
|
throw new PerseusError(
|
|
290
|
-
// @ts-expect-error
|
|
290
|
+
// @ts-expect-error - TS2339 - Property 'type' does not exist on type 'never'.
|
|
291
291
|
"Invalid score type: " + score.type,
|
|
292
292
|
Errors.InvalidInput,
|
|
293
293
|
{
|
|
@@ -375,7 +375,7 @@ function getGridStep(
|
|
|
375
375
|
step: Coordinates,
|
|
376
376
|
boxSize: number,
|
|
377
377
|
): Coordinates {
|
|
378
|
-
// @ts-expect-error
|
|
378
|
+
// @ts-expect-error - TS2322 - Type '(number | null | undefined)[]' is not assignable to type 'Coordinates'.
|
|
379
379
|
return _(2).times(function (i) {
|
|
380
380
|
const scale = scaleFromExtent(range[i], boxSize);
|
|
381
381
|
const gridStep = gridStepFromTickStep(step[i], scale);
|
|
@@ -542,9 +542,9 @@ const DeprecationMixin: any = {
|
|
|
542
542
|
_.each(
|
|
543
543
|
this.deprecatedProps,
|
|
544
544
|
function (func, prop) {
|
|
545
|
-
// @ts-expect-error
|
|
545
|
+
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
546
546
|
if (_.has(this.props, prop)) {
|
|
547
|
-
// @ts-expect-error
|
|
547
|
+
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
548
548
|
_.extend(newProps, func(this.props));
|
|
549
549
|
}
|
|
550
550
|
},
|
|
@@ -605,11 +605,11 @@ function deepEq<T>(x: T, y: T): boolean {
|
|
|
605
605
|
return (
|
|
606
606
|
x === y ||
|
|
607
607
|
(_.all(x, function (v, k) {
|
|
608
|
-
// @ts-expect-error
|
|
608
|
+
// @ts-expect-error - TS2536 - Type 'CollectionKey<T>' cannot be used to index type 'T'.
|
|
609
609
|
return deepEq(y[k], v);
|
|
610
610
|
}) &&
|
|
611
611
|
_.all(y, function (v, k) {
|
|
612
|
-
// @ts-expect-error
|
|
612
|
+
// @ts-expect-error - TS2536 - Type 'CollectionKey<T>' cannot be used to index type 'T'.
|
|
613
613
|
return deepEq(x[k], v);
|
|
614
614
|
}))
|
|
615
615
|
);
|
|
@@ -813,9 +813,9 @@ const supportsPassiveEvents: () => boolean = () => {
|
|
|
813
813
|
supportsPassive = true;
|
|
814
814
|
},
|
|
815
815
|
});
|
|
816
|
-
// @ts-expect-error
|
|
816
|
+
// @ts-expect-error - TS2769 - No overload matches this call.
|
|
817
817
|
window.addEventListener("testPassive", null, opts);
|
|
818
|
-
// @ts-expect-error
|
|
818
|
+
// @ts-expect-error - TS2769 - No overload matches this call.
|
|
819
819
|
window.removeEventListener("testPassive", null, opts);
|
|
820
820
|
} catch (e: any) {
|
|
821
821
|
// Intentionally left empty!
|
package/src/widget-container.tsx
CHANGED
|
@@ -45,7 +45,7 @@ class WidgetContainer extends React.Component<Props, State> {
|
|
|
45
45
|
// Only relay size class changes for mobile right now. We may want to
|
|
46
46
|
// this for desktop as well at some point in the future.
|
|
47
47
|
if (this.state.widgetProps.apiOptions.isMobile) {
|
|
48
|
-
// @ts-expect-error
|
|
48
|
+
// @ts-expect-error - TS2531 - Object is possibly 'null'. | TS2339 - Property 'offsetWidth' does not exist on type 'Element | Text'.
|
|
49
49
|
const containerWidth = ReactDOM.findDOMNode(this).offsetWidth;
|
|
50
50
|
|
|
51
51
|
// NOTE(benkomalo): in the common case, this won't change anything.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import {View} from "@khanacademy/wonder-blocks-core";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
|
|
4
|
+
import {RendererWithDebugUI} from "../../../../../testing/renderer-with-debug-ui";
|
|
5
|
+
import {question1} from "../__testdata__/plotter.testdata";
|
|
6
|
+
|
|
7
|
+
import type {PerseusRenderer} from "../../perseus-types";
|
|
8
|
+
|
|
9
|
+
export default {
|
|
10
|
+
title: "Perseus/Widgets/Plotter",
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
type StoryArgs = Record<any, any>;
|
|
14
|
+
|
|
15
|
+
const Template = (props: {question: PerseusRenderer}): React.ReactElement => (
|
|
16
|
+
<View
|
|
17
|
+
style={{
|
|
18
|
+
paddingLeft: 20,
|
|
19
|
+
}}
|
|
20
|
+
>
|
|
21
|
+
<RendererWithDebugUI question={props.question} />
|
|
22
|
+
</View>
|
|
23
|
+
);
|
|
24
|
+
|
|
25
|
+
export const Basic = (args: StoryArgs): React.ReactElement => {
|
|
26
|
+
return <Template question={question1} />;
|
|
27
|
+
};
|
|
@@ -33,13 +33,13 @@ const TestKeypadContextWrapper = (props: Props): React.ReactElement => {
|
|
|
33
33
|
return (
|
|
34
34
|
<KeypadContext.Provider
|
|
35
35
|
value={{
|
|
36
|
-
// @ts-expect-error
|
|
36
|
+
// @ts-expect-error - TS2322 - Type 'Dispatch<SetStateAction<HTMLElement>>' is not assignable to type '(scrollableElement?: HTMLElement | null | undefined) => void'.
|
|
37
37
|
setKeypadElement,
|
|
38
38
|
keypadElement,
|
|
39
|
-
// @ts-expect-error
|
|
39
|
+
// @ts-expect-error - TS2322 - Type 'Dispatch<SetStateAction<HTMLElement>>' is not assignable to type '(scrollableElement?: HTMLElement | null | undefined) => void'.
|
|
40
40
|
setRenderer,
|
|
41
41
|
renderer,
|
|
42
|
-
// @ts-expect-error
|
|
42
|
+
// @ts-expect-error - TS2322 - Type 'Dispatch<SetStateAction<HTMLElement>>' is not assignable to type '(scrollableElement?: HTMLElement | null | undefined) => void'.
|
|
43
43
|
setScrollableElement,
|
|
44
44
|
scrollableElement,
|
|
45
45
|
}}
|
|
@@ -70,7 +70,7 @@ export const percentageProblem: PerseusRenderer = {
|
|
|
70
70
|
content: "$5008 \\div 4 =$ [[\u2603 numeric-input 1]] ",
|
|
71
71
|
images: {},
|
|
72
72
|
widgets: {
|
|
73
|
-
// @ts-expect-error
|
|
73
|
+
// @ts-expect-error - TS2352 - Conversion of type '{ graded: true; version: { major: number; minor: number; }; static: false; type: "numeric-input"; options: { coefficient: false; static: false; answers: { status: string; maxError: null; strict: false; value: string; simplify: string; message: string; }[]; labelText: string; size: string; }; alignment: string; }' to type 'NumericInputWidget' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first.
|
|
74
74
|
"numeric-input 1": {
|
|
75
75
|
graded: true,
|
|
76
76
|
version: {
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type {PerseusRenderer} from "../../perseus-types";
|
|
2
|
+
|
|
3
|
+
export const question1: PerseusRenderer = {
|
|
4
|
+
content:
|
|
5
|
+
"The elementary school principal asked teachers to report the number of students absent in each grade during the past week.\n\n**Create a bar graph to show how many students were absent in each grade.**\n\nSchool grade | Number of absent students \n:- | :-: \n$1^{\\text{st}} \\text{ grade}$ | $15$ \n$2^{\\text{nd}} \\text{ grade}$ |$25$ \n$3^{\\text{rd}} \\text{ grade}$ | $5$ \n$4^{\\text{th}} \\text{ grade}$ | $10$ \n$5^{\\text{th}} \\text{ grade}$ | $10$ \n\n[[☃ plotter 1]]\n\n",
|
|
6
|
+
images: {},
|
|
7
|
+
widgets: {
|
|
8
|
+
// This is the actual problem from the server
|
|
9
|
+
// I don't know why the type is incorrect
|
|
10
|
+
// @ts-expect-error - TS2322
|
|
11
|
+
"plotter 1": {
|
|
12
|
+
alignment: "default",
|
|
13
|
+
graded: true,
|
|
14
|
+
options: {
|
|
15
|
+
categories: [
|
|
16
|
+
"$1^{\\text{st}} \\text{}$",
|
|
17
|
+
"$2^{\\text{nd}} \\text{}$",
|
|
18
|
+
"$3^{\\text{rd}} \\text{}$",
|
|
19
|
+
"$4^{\\text{th}} \\text{}$",
|
|
20
|
+
"$5^{\\text{th}} \\text{}$",
|
|
21
|
+
],
|
|
22
|
+
correct: [15, 25, 5, 10, 10],
|
|
23
|
+
labelInterval: 1,
|
|
24
|
+
labels: ["School grade", "Number of absent students"],
|
|
25
|
+
maxY: 30,
|
|
26
|
+
scaleY: 5,
|
|
27
|
+
snapsPerLine: 1,
|
|
28
|
+
starting: [0, 0, 0, 0, 0],
|
|
29
|
+
type: "bar",
|
|
30
|
+
},
|
|
31
|
+
static: false,
|
|
32
|
+
type: "plotter",
|
|
33
|
+
version: {major: 0, minor: 0},
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
};
|