@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
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/* eslint-disable @khanacademy/ts-no-error-suppressions */
|
|
1
2
|
/* eslint-disable @babel/no-invalid-this, react/no-unsafe, react/sort-comp */
|
|
2
3
|
import * as PerseusLinter from "@khanacademy/perseus-linter";
|
|
3
4
|
import {CircularSpinner} from "@khanacademy/wonder-blocks-progress-spinner";
|
|
@@ -10,9 +11,10 @@ import _ from "underscore";
|
|
|
10
11
|
import {getDependencies} from "../dependencies";
|
|
11
12
|
import {ClassNames as ApiClassNames} from "../perseus-api";
|
|
12
13
|
import Renderer from "../renderer";
|
|
13
|
-
import Util
|
|
14
|
+
import Util from "../util";
|
|
14
15
|
|
|
15
16
|
import type {LinterContextProps} from "../types";
|
|
17
|
+
import type {Position} from "../util";
|
|
16
18
|
|
|
17
19
|
export enum Layout {
|
|
18
20
|
HORIZONTAL = "horizontal",
|
|
@@ -111,9 +113,9 @@ type DraggableState = {
|
|
|
111
113
|
class Draggable extends React.Component<DraggableProps, DraggableState> {
|
|
112
114
|
// Handler returned by requestAnimationFrame.
|
|
113
115
|
animationFrameRequest = null;
|
|
114
|
-
// @ts-expect-error
|
|
116
|
+
// @ts-expect-error - TS2564 - Property 'isMouseMoveUpBound' has no initializer and is not definitely assigned in the constructor.
|
|
115
117
|
isMouseMoveUpBound: boolean;
|
|
116
|
-
// @ts-expect-error
|
|
118
|
+
// @ts-expect-error - TS2564 - Property '_mounted' has no initializer and is not definitely assigned in the constructor.
|
|
117
119
|
_mounted: boolean;
|
|
118
120
|
|
|
119
121
|
static defaultProps: DefaultDraggableProps = {
|
|
@@ -272,7 +274,7 @@ class Draggable extends React.Component<DraggableProps, DraggableState> {
|
|
|
272
274
|
),
|
|
273
275
|
);
|
|
274
276
|
|
|
275
|
-
// @ts-expect-error
|
|
277
|
+
// @ts-expect-error - TS2769 - No overload matches this call. | TS2339 - Property 'animate' does not exist on type 'JQueryStatic'.
|
|
276
278
|
$(ReactDOM.findDOMNode(this)).animate(this.props.endPosition, {
|
|
277
279
|
duration: Math.max(duration, 1),
|
|
278
280
|
// Animating -> Static
|
|
@@ -280,7 +282,7 @@ class Draggable extends React.Component<DraggableProps, DraggableState> {
|
|
|
280
282
|
});
|
|
281
283
|
} else if (this.props.state === ItemState.STATIC) {
|
|
282
284
|
// Ensure that any animations are done
|
|
283
|
-
// @ts-expect-error
|
|
285
|
+
// @ts-expect-error - TS2769 - No overload matches this call. | TS2339 - Property 'finish' does not exist on type 'JQueryStatic'.
|
|
284
286
|
$(ReactDOM.findDOMNode(this)).finish();
|
|
285
287
|
}
|
|
286
288
|
}
|
|
@@ -316,14 +318,14 @@ class Draggable extends React.Component<DraggableProps, DraggableState> {
|
|
|
316
318
|
|
|
317
319
|
// TODO(jeff, CP-3128): Use Wonder Blocks Timing API.
|
|
318
320
|
// eslint-disable-next-line no-restricted-syntax
|
|
319
|
-
// @ts-expect-error
|
|
321
|
+
// @ts-expect-error - TS2322 - Type 'number' is not assignable to type 'null'.
|
|
320
322
|
this.animationFrameRequest = requestAnimationFrame(() => {
|
|
321
|
-
// @ts-expect-error
|
|
323
|
+
// @ts-expect-error - TS2769 - No overload matches this call.
|
|
322
324
|
const $el = $(ReactDOM.findDOMNode(this));
|
|
323
325
|
|
|
324
326
|
// jQuery.position() gets the position of the element wrt its offset parent,
|
|
325
327
|
// but subtracts the scroll position of the parent. We need to add that back.
|
|
326
|
-
// @ts-expect-error
|
|
328
|
+
// @ts-expect-error - TS2339 - Property 'position' does not exist on type 'JQueryStatic'.
|
|
327
329
|
const position = $el.position();
|
|
328
330
|
const startPosition = addOffsetParentScroll($el, position);
|
|
329
331
|
|
|
@@ -339,11 +341,11 @@ class Draggable extends React.Component<DraggableProps, DraggableState> {
|
|
|
339
341
|
dragging: true,
|
|
340
342
|
},
|
|
341
343
|
function () {
|
|
342
|
-
// @ts-expect-error
|
|
344
|
+
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
343
345
|
this.bindMouseMoveUp();
|
|
344
346
|
|
|
345
347
|
// Static -> Dragging
|
|
346
|
-
// @ts-expect-error
|
|
348
|
+
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
347
349
|
this.props.onMouseDown();
|
|
348
350
|
},
|
|
349
351
|
);
|
|
@@ -365,7 +367,7 @@ class Draggable extends React.Component<DraggableProps, DraggableState> {
|
|
|
365
367
|
if (loc) {
|
|
366
368
|
// TODO(jeff, CP-3128): Use Wonder Blocks Timing API.
|
|
367
369
|
// eslint-disable-next-line no-restricted-syntax
|
|
368
|
-
// @ts-expect-error
|
|
370
|
+
// @ts-expect-error - TS2322 - Type 'number' is not assignable to type 'null'.
|
|
369
371
|
this.animationFrameRequest = requestAnimationFrame(() => {
|
|
370
372
|
this.setState(
|
|
371
373
|
{
|
|
@@ -548,7 +550,7 @@ class Sortable extends React.Component<SortableProps, SortableState> {
|
|
|
548
550
|
items,
|
|
549
551
|
function (item) {
|
|
550
552
|
// eslint-disable-next-line react/no-string-refs
|
|
551
|
-
// @ts-expect-error
|
|
553
|
+
// @ts-expect-error - TS2769 - No overload matches this call. | TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
552
554
|
return $(ReactDOM.findDOMNode(this.refs[item.key]));
|
|
553
555
|
},
|
|
554
556
|
this,
|
|
@@ -653,13 +655,13 @@ class Sortable extends React.Component<SortableProps, SortableState> {
|
|
|
653
655
|
item.state === ItemState.DISABLED;
|
|
654
656
|
let margin;
|
|
655
657
|
|
|
656
|
-
// @ts-expect-error
|
|
658
|
+
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
657
659
|
if (this.props.layout === Layout.HORIZONTAL) {
|
|
658
|
-
// @ts-expect-error
|
|
660
|
+
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
659
661
|
margin = "0 " + this.props.margin + "px 0 0"; // right
|
|
660
|
-
// @ts-expect-error
|
|
662
|
+
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
661
663
|
} else if (this.props.layout === Layout.VERTICAL) {
|
|
662
|
-
// @ts-expect-error
|
|
664
|
+
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
663
665
|
margin = "0 0 " + this.props.margin + "px 0"; // bottom
|
|
664
666
|
}
|
|
665
667
|
|
|
@@ -668,44 +670,44 @@ class Sortable extends React.Component<SortableProps, SortableState> {
|
|
|
668
670
|
content={item.option}
|
|
669
671
|
key={item.key}
|
|
670
672
|
state={item.state}
|
|
671
|
-
// @ts-expect-error
|
|
673
|
+
// @ts-expect-error - TS2769 - No overload matches this call.
|
|
672
674
|
ref={item.key}
|
|
673
675
|
width={syncWidth ? item.width : undefined}
|
|
674
676
|
height={syncHeight ? item.height : undefined}
|
|
675
677
|
layout={layout}
|
|
676
|
-
// @ts-expect-error
|
|
678
|
+
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
677
679
|
includePadding={this.props.padding}
|
|
678
680
|
margin={isLast && isStatic ? 0 : margin}
|
|
679
681
|
endPosition={item.endPosition}
|
|
680
682
|
linterContext={PerseusLinter.pushContextStack(
|
|
681
|
-
// @ts-expect-error
|
|
683
|
+
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
682
684
|
this.props.linterContext,
|
|
683
685
|
"sortable",
|
|
684
686
|
)}
|
|
685
|
-
// @ts-expect-error
|
|
687
|
+
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
686
688
|
onRender={this.remeasureItems}
|
|
687
689
|
// eslint-disable-next-line react/jsx-no-bind
|
|
688
|
-
// @ts-expect-error
|
|
690
|
+
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation. | TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
689
691
|
onMouseDown={this.onMouseDown.bind(this, item.key)}
|
|
690
692
|
// eslint-disable-next-line react/jsx-no-bind
|
|
691
|
-
// @ts-expect-error
|
|
693
|
+
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation. | TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
692
694
|
onMouseMove={this.onMouseMove.bind(this, item.key)}
|
|
693
695
|
// eslint-disable-next-line react/jsx-no-bind
|
|
694
|
-
// @ts-expect-error
|
|
696
|
+
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation. | TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
695
697
|
onMouseUp={this.onMouseUp.bind(this, item.key)}
|
|
696
698
|
// eslint-disable-next-line react/jsx-no-bind
|
|
697
|
-
// @ts-expect-error
|
|
699
|
+
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation. | TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
698
700
|
onTouchMove={this.onMouseMove.bind(this, item.key)}
|
|
699
701
|
// eslint-disable-next-line react/jsx-no-bind
|
|
700
|
-
// @ts-expect-error
|
|
702
|
+
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation. | TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
701
703
|
onTouchEnd={this.onMouseUp.bind(this, item.key)}
|
|
702
704
|
// eslint-disable-next-line react/jsx-no-bind
|
|
703
|
-
// @ts-expect-error
|
|
705
|
+
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation. | TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
704
706
|
onTouchCancel={this.onMouseUp.bind(this, item.key)}
|
|
705
707
|
// eslint-disable-next-line react/jsx-no-bind
|
|
706
|
-
// @ts-expect-error
|
|
708
|
+
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
707
709
|
onAnimationEnd={this.onAnimationEnd.bind(
|
|
708
|
-
// @ts-expect-error
|
|
710
|
+
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
709
711
|
this,
|
|
710
712
|
item.key,
|
|
711
713
|
)}
|
|
@@ -773,9 +775,9 @@ class Sortable extends React.Component<SortableProps, SortableState> {
|
|
|
773
775
|
return i.key === item.key;
|
|
774
776
|
});
|
|
775
777
|
|
|
776
|
-
// @ts-expect-error
|
|
778
|
+
// @ts-expect-error - TS2551 - Property 'splice' does not exist on type 'readonly SortableItem[]'. Did you mean 'slice'?
|
|
777
779
|
nextItems.splice(currentIndex, 1);
|
|
778
|
-
// @ts-expect-error
|
|
780
|
+
// @ts-expect-error - TS2551 - Property 'splice' does not exist on type 'readonly SortableItem[]'. Did you mean 'slice'?
|
|
779
781
|
nextItems.splice(index, 0, item);
|
|
780
782
|
|
|
781
783
|
this.setState({items: nextItems});
|
|
@@ -785,22 +787,22 @@ class Sortable extends React.Component<SortableProps, SortableState> {
|
|
|
785
787
|
onMouseMove(key: SortableItem["key"]) {
|
|
786
788
|
// Dragging: Rearrange items based on draggable's position
|
|
787
789
|
// eslint-disable-next-line react/no-string-refs
|
|
788
|
-
// @ts-expect-error
|
|
790
|
+
// @ts-expect-error - TS2769 - No overload matches this call.
|
|
789
791
|
const $draggable = $(ReactDOM.findDOMNode(this.refs[key]));
|
|
790
|
-
// @ts-expect-error
|
|
792
|
+
// @ts-expect-error - TS2769 - No overload matches this call.
|
|
791
793
|
const $sortable = $(ReactDOM.findDOMNode(this));
|
|
792
794
|
const items = _.clone(this.state.items);
|
|
793
795
|
const item = _.findWhere(this.state.items, {key: key});
|
|
794
796
|
const margin = this.props.margin || 0;
|
|
795
|
-
// @ts-expect-error
|
|
797
|
+
// @ts-expect-error - TS2345 - Argument of type 'SortableItem | undefined' is not assignable to parameter of type 'SortableItem'.
|
|
796
798
|
const currentIndex = _.indexOf(items, item);
|
|
797
799
|
let newIndex = 0;
|
|
798
800
|
|
|
799
|
-
// @ts-expect-error
|
|
801
|
+
// @ts-expect-error - TS2551 - Property 'splice' does not exist on type 'readonly SortableItem[]'. Did you mean 'slice'?
|
|
800
802
|
items.splice(currentIndex, 1);
|
|
801
803
|
|
|
802
804
|
if (this.props.layout === Layout.HORIZONTAL) {
|
|
803
|
-
// @ts-expect-error
|
|
805
|
+
// @ts-expect-error - TS2339 - Property 'offset' does not exist on type 'JQueryStatic'. | TS2339 - Property 'offset' does not exist on type 'JQueryStatic'.
|
|
804
806
|
const midWidth = $draggable.offset().left - $sortable.offset().left;
|
|
805
807
|
let sumWidth = 0;
|
|
806
808
|
let cardWidth;
|
|
@@ -813,7 +815,7 @@ class Sortable extends React.Component<SortableProps, SortableState> {
|
|
|
813
815
|
sumWidth += cardWidth + margin;
|
|
814
816
|
});
|
|
815
817
|
} else {
|
|
816
|
-
// @ts-expect-error
|
|
818
|
+
// @ts-expect-error - TS2339 - Property 'offset' does not exist on type 'JQueryStatic'. | TS2339 - Property 'offset' does not exist on type 'JQueryStatic'.
|
|
817
819
|
const midHeight = $draggable.offset().top - $sortable.offset().top;
|
|
818
820
|
let sumHeight = 0;
|
|
819
821
|
let cardHeight;
|
|
@@ -828,7 +830,7 @@ class Sortable extends React.Component<SortableProps, SortableState> {
|
|
|
828
830
|
}
|
|
829
831
|
|
|
830
832
|
if (newIndex !== currentIndex) {
|
|
831
|
-
// @ts-expect-error
|
|
833
|
+
// @ts-expect-error - TS2551 - Property 'splice' does not exist on type 'readonly SortableItem[]'. Did you mean 'slice'?
|
|
832
834
|
items.splice(newIndex, 0, item);
|
|
833
835
|
this.setState({items: items});
|
|
834
836
|
}
|
|
@@ -845,14 +847,14 @@ class Sortable extends React.Component<SortableProps, SortableState> {
|
|
|
845
847
|
if (item.key === key) {
|
|
846
848
|
item.state = ItemState.ANIMATING;
|
|
847
849
|
const $placeholder = $(
|
|
848
|
-
// @ts-expect-error
|
|
850
|
+
// @ts-expect-error - TS2769 - No overload matches this call.
|
|
849
851
|
ReactDOM.findDOMNode(
|
|
850
852
|
// eslint-disable-next-line react/no-string-refs
|
|
851
|
-
// @ts-expect-error
|
|
853
|
+
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
852
854
|
this.refs["placeholder_" + key],
|
|
853
855
|
),
|
|
854
856
|
);
|
|
855
|
-
// @ts-expect-error
|
|
857
|
+
// @ts-expect-error - TS2339 - Property 'position' does not exist on type 'JQueryStatic'.
|
|
856
858
|
const position = $placeholder.position();
|
|
857
859
|
const endPosition = addOffsetParentScroll(
|
|
858
860
|
$placeholder,
|
|
@@ -872,7 +874,7 @@ class Sortable extends React.Component<SortableProps, SortableState> {
|
|
|
872
874
|
this.props.onChange && this.props.onChange({});
|
|
873
875
|
});
|
|
874
876
|
|
|
875
|
-
// @ts-expect-error
|
|
877
|
+
// @ts-expect-error - TS2339 - Property 'animationFrameRequest' does not exist on type 'Sortable'.
|
|
876
878
|
this.animationFrameRequest = nextAnimationFrame;
|
|
877
879
|
}
|
|
878
880
|
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/* eslint-disable @khanacademy/ts-no-error-suppressions */
|
|
1
2
|
/* eslint-disable no-useless-escape, react/no-unsafe */
|
|
2
3
|
import {CircularSpinner} from "@khanacademy/wonder-blocks-progress-spinner";
|
|
3
4
|
import classNames from "classnames";
|
|
@@ -57,7 +58,7 @@ const doJSONP = function (url: string, options) {
|
|
|
57
58
|
}
|
|
58
59
|
|
|
59
60
|
// Add the global callback.
|
|
60
|
-
// @ts-expect-error
|
|
61
|
+
// @ts-expect-error - TS2740 - Type '() => void' is missing the following properties from type 'Window': clientInformation, closed, customElements, devicePixelRatio, and 206 more.
|
|
61
62
|
window[options.callbackName] = function (...args) {
|
|
62
63
|
cleanup();
|
|
63
64
|
options.success.apply(null, args);
|
|
@@ -331,13 +332,13 @@ class SvgImage extends React.Component<Props, State> {
|
|
|
331
332
|
doJSONP(url, {
|
|
332
333
|
callbackName: "svgData" + hash,
|
|
333
334
|
success: (data) => {
|
|
334
|
-
// @ts-expect-error
|
|
335
|
+
// @ts-expect-error - TS2540 - Cannot assign to 'data' because it is a read-only property.
|
|
335
336
|
cacheData.data = data;
|
|
336
|
-
// @ts-expect-error
|
|
337
|
+
// @ts-expect-error - TS2540 - Cannot assign to 'loaded' because it is a read-only property.
|
|
337
338
|
cacheData.loaded = true;
|
|
338
339
|
|
|
339
340
|
_.each(cacheData.dataCallbacks, (callback) => {
|
|
340
|
-
// @ts-expect-error
|
|
341
|
+
// @ts-expect-error - TS2345 - Argument of type 'null' is not assignable to parameter of type '{ labels: readonly any[]; range: readonly any[]; }'.
|
|
341
342
|
callback(cacheData.data, cacheData.localized);
|
|
342
343
|
});
|
|
343
344
|
},
|
|
@@ -349,7 +350,7 @@ class SvgImage extends React.Component<Props, State> {
|
|
|
349
350
|
retrieveData(
|
|
350
351
|
getLocalizedDataUrl(this.props.src),
|
|
351
352
|
(x, status, error) => {
|
|
352
|
-
// @ts-expect-error
|
|
353
|
+
// @ts-expect-error - TS2540 - Cannot assign to 'localized' because it is a read-only property.
|
|
353
354
|
cacheData.localized = false;
|
|
354
355
|
|
|
355
356
|
// If there is isn't any localized data, fall back to
|
|
@@ -511,9 +512,9 @@ class SvgImage extends React.Component<Props, State> {
|
|
|
511
512
|
const svgHeight = (this.props.height || 0) * this.props.scale;
|
|
512
513
|
const svgWidth = (this.props.width || 0) * this.props.scale;
|
|
513
514
|
label.css({
|
|
514
|
-
// @ts-expect-error
|
|
515
|
+
// @ts-expect-error - TS2531 - Object is possibly 'null'.
|
|
515
516
|
top: (labelTop / svgHeight) * 100 + "%",
|
|
516
|
-
// @ts-expect-error
|
|
517
|
+
// @ts-expect-error - TS2531 - Object is possibly 'null'.
|
|
517
518
|
left: (labelLeft / svgWidth) * 100 + "%",
|
|
518
519
|
});
|
|
519
520
|
|
|
@@ -560,7 +561,7 @@ class SvgImage extends React.Component<Props, State> {
|
|
|
560
561
|
// nothing in that case as well. Figuring this out correctly
|
|
561
562
|
// likely required accounting for the image alignment and margins.
|
|
562
563
|
if (
|
|
563
|
-
// @ts-expect-error
|
|
564
|
+
// @ts-expect-error - TS2532 - Object is possibly 'undefined'. | TS2532 - Object is possibly 'undefined'.
|
|
564
565
|
$image.width() < this.props.width ||
|
|
565
566
|
this.props.zoomToFullSizeOnMobile
|
|
566
567
|
) {
|
|
@@ -672,7 +673,7 @@ class SvgImage extends React.Component<Props, State> {
|
|
|
672
673
|
<ImageLoader
|
|
673
674
|
src={imageSrc}
|
|
674
675
|
imgProps={imageProps}
|
|
675
|
-
// @ts-expect-error
|
|
676
|
+
// @ts-expect-error - TS2322 - Type '(() => Element) | null' is not assignable to type '() => ReactElement<any, string | JSXElementConstructor<any>> | null | undefined'.
|
|
676
677
|
preloader={preloader}
|
|
677
678
|
onUpdate={this.handleUpdate}
|
|
678
679
|
/>
|
|
@@ -684,7 +685,7 @@ class SvgImage extends React.Component<Props, State> {
|
|
|
684
685
|
return (
|
|
685
686
|
<ImageLoader
|
|
686
687
|
src={imageSrc}
|
|
687
|
-
// @ts-expect-error
|
|
688
|
+
// @ts-expect-error - TS2322 - Type '(() => Element) | null' is not assignable to type '() => ReactElement<any, string | JSXElementConstructor<any>> | null | undefined'.
|
|
688
689
|
preloader={preloader}
|
|
689
690
|
imgProps={imageProps}
|
|
690
691
|
onUpdate={this.handleUpdate}
|
|
@@ -747,7 +748,7 @@ class SvgImage extends React.Component<Props, State> {
|
|
|
747
748
|
src={imageUrl}
|
|
748
749
|
onLoad={this.onImageLoad}
|
|
749
750
|
onUpdate={this.handleUpdate}
|
|
750
|
-
// @ts-expect-error
|
|
751
|
+
// @ts-expect-error - TS2322 - Type '(() => Element) | null' is not assignable to type '() => ReactElement<any, string | JSXElementConstructor<any>> | null | undefined'.
|
|
751
752
|
preloader={preloader}
|
|
752
753
|
imgProps={imageProps}
|
|
753
754
|
/>
|
|
@@ -763,7 +764,7 @@ class SvgImage extends React.Component<Props, State> {
|
|
|
763
764
|
src={imageUrl}
|
|
764
765
|
onLoad={this.onImageLoad}
|
|
765
766
|
onUpdate={this.handleUpdate}
|
|
766
|
-
// @ts-expect-error
|
|
767
|
+
// @ts-expect-error - TS2322 - Type '(() => Element) | null' is not assignable to type '() => ReactElement<any, string | JSXElementConstructor<any>> | null | undefined'.
|
|
767
768
|
preloader={preloader}
|
|
768
769
|
imgProps={imageProps}
|
|
769
770
|
/>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
/* eslint-disable @khanacademy/ts-no-error-suppressions */
|
|
2
2
|
import * as i18n from "@khanacademy/wonder-blocks-i18n";
|
|
3
3
|
import PropTypes from "prop-types";
|
|
4
4
|
import * as React from "react";
|
|
@@ -6,6 +6,8 @@ import _ from "underscore";
|
|
|
6
6
|
|
|
7
7
|
import {getDependencies} from "../dependencies";
|
|
8
8
|
|
|
9
|
+
import type {Keys} from "@khanacademy/math-input";
|
|
10
|
+
|
|
9
11
|
const prettyBig = {fontSize: "150%"} as const;
|
|
10
12
|
const slightlyBig = {fontSize: "120%"} as const;
|
|
11
13
|
const symbStyle = {fontSize: "130%"} as const;
|
|
@@ -283,7 +285,7 @@ class TexButtons extends React.Component<Props> {
|
|
|
283
285
|
// for _.keys() to return the keys in an arbitrary order, but in
|
|
284
286
|
// practice, they will be ordered as listed above.
|
|
285
287
|
const sortedButtonSets = _.sortBy(this.props.sets, (setName) =>
|
|
286
|
-
// @ts-expect-error
|
|
288
|
+
// @ts-expect-error - TS2345 - Argument of type 'string | number' is not assignable to parameter of type 'string'.
|
|
287
289
|
_.keys(buttonSets).indexOf(setName),
|
|
288
290
|
);
|
|
289
291
|
|
|
@@ -299,7 +301,7 @@ class TexButtons extends React.Component<Props> {
|
|
|
299
301
|
<button
|
|
300
302
|
onClick={() => this.props.onInsert(symbol[1])}
|
|
301
303
|
className="tex-button"
|
|
302
|
-
// @ts-expect-error
|
|
304
|
+
// @ts-expect-error - TS2533 - Object is possibly 'null' or 'undefined'. | TS2339 - Property 'key' does not exist on type 'boolean | ReactChild | ReactFragment | ReactPortal'.
|
|
303
305
|
key={symbol[0].key}
|
|
304
306
|
type="button"
|
|
305
307
|
aria-label={symbol[2]}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/* eslint-disable @khanacademy/ts-no-error-suppressions */
|
|
1
2
|
/* eslint-disable react/sort-comp */
|
|
2
3
|
import {TextField} from "@khanacademy/wonder-blocks-form";
|
|
3
4
|
import * as React from "react";
|
|
@@ -75,7 +76,7 @@ class TextInput extends React.Component<Props> {
|
|
|
75
76
|
onFocus={onFocus}
|
|
76
77
|
onBlur={onBlur}
|
|
77
78
|
onKeyDown={onKeyDown}
|
|
78
|
-
// @ts-expect-error
|
|
79
|
+
// @ts-expect-error - TS2322 - Type '{ style: StyleType; disabled: boolean | undefined; id: string; value: string; type: "text"; "aria-label": string | undefined; onChange: (value: string) => void; placeholder: string | undefined; ... 5 more ...; autoComplete: string; }' is not assignable to type 'IntrinsicAttributes & ExportProps & RefAttributes<HTMLInputElement>'.
|
|
79
80
|
autoCorrect="off"
|
|
80
81
|
autoCapitalize="off"
|
|
81
82
|
autoComplete="off"
|
|
@@ -84,22 +85,22 @@ class TextInput extends React.Component<Props> {
|
|
|
84
85
|
}
|
|
85
86
|
|
|
86
87
|
focus: () => void = () => {
|
|
87
|
-
// @ts-expect-error
|
|
88
|
+
// @ts-expect-error - TS2531 - Object is possibly 'null'. | TS2339 - Property 'focus' does not exist on type 'Element | Text'.
|
|
88
89
|
ReactDOM.findDOMNode(this).focus();
|
|
89
90
|
};
|
|
90
91
|
|
|
91
92
|
blur: () => void = () => {
|
|
92
|
-
// @ts-expect-error
|
|
93
|
+
// @ts-expect-error - TS2531 - Object is possibly 'null'. | TS2339 - Property 'blur' does not exist on type 'Element | Text'.
|
|
93
94
|
ReactDOM.findDOMNode(this).blur();
|
|
94
95
|
};
|
|
95
96
|
|
|
96
97
|
getValue: () => string | null | undefined = () => {
|
|
97
|
-
// @ts-expect-error
|
|
98
|
+
// @ts-expect-error - TS2339 - Property 'value' does not exist on type 'Element | Text'.
|
|
98
99
|
return ReactDOM.findDOMNode(this)?.value;
|
|
99
100
|
};
|
|
100
101
|
|
|
101
102
|
getStringValue: () => string | null | undefined = () => {
|
|
102
|
-
// @ts-expect-error
|
|
103
|
+
// @ts-expect-error - TS2339 - Property 'value' does not exist on type 'Element | Text'.
|
|
103
104
|
return ReactDOM.findDOMNode(this)?.value.toString();
|
|
104
105
|
};
|
|
105
106
|
|
|
@@ -107,7 +108,7 @@ class TextInput extends React.Component<Props> {
|
|
|
107
108
|
selectionStart,
|
|
108
109
|
selectionEnd,
|
|
109
110
|
) => {
|
|
110
|
-
// @ts-expect-error
|
|
111
|
+
// @ts-expect-error - TS2531 - Object is possibly 'null'. | TS2339 - Property 'setSelectionRange' does not exist on type 'Element | Text'.
|
|
111
112
|
ReactDOM.findDOMNode(this).setSelectionRange(
|
|
112
113
|
selectionStart,
|
|
113
114
|
selectionEnd,
|
|
@@ -115,12 +116,12 @@ class TextInput extends React.Component<Props> {
|
|
|
115
116
|
};
|
|
116
117
|
|
|
117
118
|
getSelectionStart: () => number = () => {
|
|
118
|
-
// @ts-expect-error
|
|
119
|
+
// @ts-expect-error - TS2531 - Object is possibly 'null'. | TS2339 - Property 'selectionStart' does not exist on type 'Element | Text'.
|
|
119
120
|
return ReactDOM.findDOMNode(this).selectionStart;
|
|
120
121
|
};
|
|
121
122
|
|
|
122
123
|
getSelectionEnd: () => number = () => {
|
|
123
|
-
// @ts-expect-error
|
|
124
|
+
// @ts-expect-error - TS2531 - Object is possibly 'null'. | TS2339 - Property 'selectionEnd' does not exist on type 'Element | Text'.
|
|
124
125
|
return ReactDOM.findDOMNode(this).selectionEnd;
|
|
125
126
|
};
|
|
126
127
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/* eslint-disable @khanacademy/ts-no-error-suppressions */
|
|
1
2
|
/* eslint-disable @babel/no-invalid-this, react/forbid-prop-types, react/no-unsafe, react/sort-comp */
|
|
2
3
|
import $ from "jquery";
|
|
3
4
|
import PropTypes from "prop-types";
|
|
@@ -10,7 +11,7 @@ function getTextWidth(text: any) {
|
|
|
10
11
|
if (!textWidthCache[text]) {
|
|
11
12
|
// Hacky way to guess the width of an input box
|
|
12
13
|
const $test = $("<span>").text(text).appendTo("body");
|
|
13
|
-
// @ts-expect-error
|
|
14
|
+
// @ts-expect-error - TS2532 - Object is possibly 'undefined'.
|
|
14
15
|
textWidthCache[text] = $test.width() + 5;
|
|
15
16
|
$test.remove();
|
|
16
17
|
}
|
|
@@ -56,10 +57,10 @@ class TextListEditor extends React.Component<any, any> {
|
|
|
56
57
|
type="text"
|
|
57
58
|
value={item}
|
|
58
59
|
// eslint-disable-next-line react/jsx-no-bind
|
|
59
|
-
// @ts-expect-error
|
|
60
|
+
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation. | TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
60
61
|
onChange={this.onChange.bind(this, i)}
|
|
61
62
|
// eslint-disable-next-line react/jsx-no-bind
|
|
62
|
-
// @ts-expect-error
|
|
63
|
+
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation. | TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
63
64
|
onKeyDown={this.onKeyDown.bind(this, i)}
|
|
64
65
|
style={{width: getTextWidth(item)}}
|
|
65
66
|
/>
|
|
@@ -106,17 +107,17 @@ class TextListEditor extends React.Component<any, any> {
|
|
|
106
107
|
) {
|
|
107
108
|
// ...except for the last one, iff it is the only empty
|
|
108
109
|
// input at the end.
|
|
109
|
-
// @ts-expect-error
|
|
110
|
+
// @ts-expect-error - TS2531 - Object is possibly 'null'. | TS2339 - Property 'focus' does not exist on type 'Element | Text'.
|
|
110
111
|
ReactDOM.findDOMNode(this.refs["input_" + focusIndex]).focus(); // eslint-disable-line react/no-string-refs
|
|
111
112
|
} else {
|
|
112
113
|
items.splice(index, 1);
|
|
113
114
|
this.setState({items: items}, function () {
|
|
114
|
-
// @ts-expect-error
|
|
115
|
+
// @ts-expect-error - TS2531 - Object is possibly 'null'.
|
|
115
116
|
ReactDOM.findDOMNode(
|
|
116
117
|
// eslint-disable-next-line react/no-string-refs
|
|
117
|
-
// @ts-expect-error
|
|
118
|
+
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
118
119
|
this.refs["input_" + focusIndex],
|
|
119
|
-
// @ts-expect-error
|
|
120
|
+
// @ts-expect-error - TS2339 - Property 'focus' does not exist on type 'Element | Text'.
|
|
120
121
|
).focus();
|
|
121
122
|
});
|
|
122
123
|
}
|
|
@@ -144,17 +145,17 @@ class TextListEditor extends React.Component<any, any> {
|
|
|
144
145
|
|
|
145
146
|
if (index === items.length - 2) {
|
|
146
147
|
// ...unless the empty input is just below.
|
|
147
|
-
// @ts-expect-error
|
|
148
|
+
// @ts-expect-error - TS2531 - Object is possibly 'null'. | TS2339 - Property 'focus' does not exist on type 'Element | Text'.
|
|
148
149
|
ReactDOM.findDOMNode(this.refs["input_" + focusIndex]).focus(); // eslint-disable-line react/no-string-refs
|
|
149
150
|
} else {
|
|
150
151
|
items.splice(focusIndex, 0, "");
|
|
151
152
|
this.setState({items: items}, function () {
|
|
152
|
-
// @ts-expect-error
|
|
153
|
+
// @ts-expect-error - TS2531 - Object is possibly 'null'.
|
|
153
154
|
ReactDOM.findDOMNode(
|
|
154
155
|
// eslint-disable-next-line react/no-string-refs
|
|
155
|
-
// @ts-expect-error
|
|
156
|
+
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
156
157
|
this.refs["input_" + focusIndex],
|
|
157
|
-
// @ts-expect-error
|
|
158
|
+
// @ts-expect-error - TS2339 - Property 'focus' does not exist on type 'Element | Text'.
|
|
158
159
|
).focus();
|
|
159
160
|
});
|
|
160
161
|
}
|
|
@@ -90,7 +90,7 @@ class NativeVisibilityObserver implements VisibilityObserver {
|
|
|
90
90
|
// There should be exactly one entry, but let's be defensive and loop.
|
|
91
91
|
//
|
|
92
92
|
for (const entry of entries) {
|
|
93
|
-
// @ts-expect-error
|
|
93
|
+
// @ts-expect-error - TS2345 - Argument of type 'DOMRectReadOnly | null' is not assignable to parameter of type 'DOMRectReadOnly'.
|
|
94
94
|
this._onVisibilityChange(entry.isIntersecting, entry.rootBounds);
|
|
95
95
|
}
|
|
96
96
|
};
|
|
@@ -58,9 +58,9 @@ function findPositionInScrollContainer(
|
|
|
58
58
|
}
|
|
59
59
|
|
|
60
60
|
class VisibilityObserver extends React.Component<Props> {
|
|
61
|
-
// @ts-expect-error
|
|
61
|
+
// @ts-expect-error - TS2564 - Property '_observer' has no initializer and is not definitely assigned in the constructor.
|
|
62
62
|
_observer: IVisibilityObserver;
|
|
63
|
-
// @ts-expect-error
|
|
63
|
+
// @ts-expect-error - TS2564 - Property '_node' has no initializer and is not definitely assigned in the constructor.
|
|
64
64
|
_node: HTMLElement;
|
|
65
65
|
|
|
66
66
|
static defaultProps: {onChange: () => void} = {
|
|
@@ -26,9 +26,9 @@ const computeMathBounds = (
|
|
|
26
26
|
parentNode.querySelector(".katex-html") ||
|
|
27
27
|
parentNode.querySelector(".MathJax");
|
|
28
28
|
const textBounds = {
|
|
29
|
-
// @ts-expect-error
|
|
29
|
+
// @ts-expect-error - TS2531 - Object is possibly 'null'. | TS2339 - Property 'offsetWidth' does not exist on type 'Element'.
|
|
30
30
|
width: textElement.offsetWidth,
|
|
31
|
-
// @ts-expect-error
|
|
31
|
+
// @ts-expect-error - TS2531 - Object is possibly 'null'. | TS2339 - Property 'offsetHeight' does not exist on type 'Element'.
|
|
32
32
|
height: textElement.offsetHeight,
|
|
33
33
|
} as const;
|
|
34
34
|
|
|
@@ -44,7 +44,7 @@ const computeMathBounds = (
|
|
|
44
44
|
|
|
45
45
|
export default class ZoomableTeX extends React.Component<Props, State> {
|
|
46
46
|
constructor() {
|
|
47
|
-
// @ts-expect-error
|
|
47
|
+
// @ts-expect-error - TS2554 - Expected 1-2 arguments, but got 0.
|
|
48
48
|
super();
|
|
49
49
|
|
|
50
50
|
this.state = {isRendered: false};
|