@khanacademy/perseus 7.2.1 → 9.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +47 -0
- package/dist/article-renderer.d.ts +27 -40
- package/dist/components/math-input.d.ts +1 -1
- package/dist/components/sortable.d.ts +1 -1
- package/dist/components/tex-buttons.d.ts +1 -1
- package/dist/dependencies.d.ts +7 -1
- package/dist/es/index.js +1205 -1218
- package/dist/es/index.js.map +1 -1
- package/dist/hints-renderer.d.ts +1 -1
- package/dist/index.js +1207 -1221
- package/dist/index.js.map +1 -1
- package/dist/interaction-tracker.d.ts +3 -3
- package/dist/item-renderer.d.ts +2 -1
- package/dist/mixins/provide-keypad.d.ts +15 -12
- package/dist/multi-items/multi-renderer.d.ts +2 -1
- package/dist/perseus-api.d.ts +2 -2
- package/dist/renderer.d.ts +1 -1
- package/dist/server-item-renderer.d.ts +3 -1
- package/dist/types.d.ts +32 -11
- package/dist/widgets/expression.d.ts +410 -13
- package/dist/widgets/graded-group.d.ts +3 -3
- package/dist/widgets/interactive-graph.d.ts +1 -1
- package/dist/widgets/sequence.d.ts +3 -3
- package/dist/widgets/table.d.ts +8 -1
- package/dist/widgets.d.ts +1 -1
- package/package.json +34 -34
- package/src/__stories__/article-renderer.stories.tsx +35 -2
- package/src/__testdata__/article-renderer.testdata.ts +74 -1
- package/src/__testdata__/item-renderer.testdata.ts +1 -1
- package/src/__testdata__/renderer.testdata.ts +1 -1
- package/src/__tests__/item-renderer.test.tsx +13 -2
- package/src/__tests__/mock-asset-loading-widget.tsx +1 -1
- package/src/__tests__/perseus-markdown.test.ts +17 -17
- package/src/__tests__/renderer-api.test.tsx +21 -21
- package/src/__tests__/renderer.test.tsx +13 -13
- package/src/__tests__/server-item-renderer.test.tsx +12 -4
- package/src/__tests__/tex-wrangler.test.ts +1 -1
- package/src/article-renderer.tsx +75 -66
- package/src/components/__tests__/number-input.test.tsx +4 -4
- package/src/components/__tests__/sortable.test.tsx +2 -2
- package/src/components/fixed-to-responsive.tsx +1 -1
- package/src/components/graph.tsx +11 -11
- package/src/components/graphie-classes.ts +7 -7
- package/src/components/graphie.tsx +14 -14
- package/src/components/highlighting/highlightable-content.tsx +1 -1
- package/src/components/highlighting/ui/highlight-renderer.tsx +1 -1
- package/src/components/highlighting/ui/util.ts +2 -2
- package/src/components/highlighting/word-indexer.tsx +4 -4
- package/src/components/icon.tsx +1 -1
- package/src/components/image-loader.tsx +4 -4
- package/src/components/input-with-examples.tsx +2 -2
- package/src/components/lint.tsx +1 -1
- package/src/components/math-input.tsx +5 -5
- package/src/components/math-output.tsx +1 -1
- package/src/components/multi-button-group.tsx +1 -1
- package/src/components/number-input.tsx +10 -10
- package/src/components/prop-check-box.tsx +1 -1
- package/src/components/simple-keypad-input.tsx +4 -4
- package/src/components/sortable.tsx +42 -41
- package/src/components/svg-image.tsx +12 -12
- package/src/components/tex-buttons.tsx +4 -3
- package/src/components/text-input.tsx +8 -8
- package/src/components/text-list-editor.tsx +11 -11
- package/src/components/visibility-observer/create-visibility-observer.ts +1 -1
- package/src/components/visibility-observer/visibility-observer.tsx +2 -2
- package/src/components/zoomable-tex.tsx +3 -3
- package/src/components/zoomable.tsx +8 -8
- package/src/dependencies.ts +16 -1
- package/src/hint-renderer.tsx +3 -3
- package/src/hints-renderer.tsx +11 -11
- package/src/init.ts +1 -1
- package/src/interaction-tracker.ts +7 -7
- package/src/interactive2/__tests__/movable-point.test.ts +1 -1
- package/src/interactive2/interactive-util.ts +6 -6
- package/src/interactive2/movable-helper-methods.ts +2 -2
- package/src/interactive2/movable-line-options.ts +37 -37
- package/src/interactive2/movable-line.ts +2 -2
- package/src/interactive2/movable-point-options.ts +29 -29
- package/src/interactive2/movable-point.tsx +2 -2
- package/src/interactive2/movable-polygon-options.ts +45 -45
- package/src/interactive2/movable-polygon.ts +2 -2
- package/src/interactive2/movable.ts +2 -2
- package/src/interactive2/objective_.ts +1 -1
- package/src/interactive2/wrapped-defaults.ts +2 -2
- package/src/interactive2/wrapped-ellipse.ts +9 -9
- package/src/interactive2/wrapped-line.ts +8 -8
- package/src/interactive2/wrapped-path.ts +5 -5
- package/src/item-renderer.tsx +66 -48
- package/src/mixins/changeable.ts +2 -2
- package/src/mixins/editor-jsonify.ts +1 -1
- package/src/mixins/provide-keypad.tsx +23 -37
- package/src/mixins/widget-jsonify-deprecated.ts +1 -1
- package/src/multi-items/__tests__/items.test.ts +1 -1
- package/src/multi-items/__tests__/multi-renderer.test.tsx +13 -8
- package/src/multi-items/__tests__/trees.test.ts +12 -12
- package/src/multi-items/item-types.ts +2 -2
- package/src/multi-items/items.ts +1 -1
- package/src/multi-items/multi-renderer.tsx +30 -18
- package/src/multi-items/prop-type-builders.ts +2 -2
- package/src/multi-items/tree-types.ts +4 -4
- package/src/multi-items/trees.ts +16 -16
- package/src/perseus-env.ts +2 -2
- package/src/perseus-markdown.tsx +5 -5
- package/src/renderer.tsx +39 -39
- package/src/server-item-renderer.tsx +26 -21
- package/src/sigfigs.ts +1 -1
- package/src/traversal.ts +1 -1
- package/src/types.ts +52 -16
- package/src/util/answer-types.ts +14 -14
- package/src/util/geometry.ts +7 -7
- package/src/util/graphie.ts +32 -32
- package/src/util/interactive.ts +118 -118
- package/src/util/math.ts +4 -4
- package/src/util/react-render.tsx +1 -1
- package/src/util/scroll-utils.ts +2 -2
- package/src/util/tex.ts +3 -3
- package/src/util.ts +15 -15
- package/src/widget-container.tsx +1 -1
- package/src/widgets/__stories__/definition.stories.tsx +8 -1
- package/src/widgets/__stories__/expression.stories.tsx +2 -2
- package/src/widgets/__stories__/test-keypad-context-wrapper.tsx +3 -3
- package/src/widgets/__testdata__/numeric-input.testdata.ts +1 -1
- package/src/widgets/__tests__/__snapshots__/video.test.ts.snap +2 -2
- package/src/widgets/__tests__/{expression.test.ts → expression.test.tsx} +77 -11
- package/src/widgets/__tests__/grapher.cypress.ts +32 -32
- package/src/widgets/__tests__/group.test.tsx +1 -1
- package/src/widgets/__tests__/interactive-graph.cypress.ts +40 -40
- package/src/widgets/__tests__/interactive-graph.test.ts +1 -1
- package/src/widgets/__tests__/numeric-input.test.ts +1 -1
- package/src/widgets/__tests__/passage.test.tsx +2 -2
- package/src/widgets/__tests__/plotter.test.tsx +2 -1
- package/src/widgets/__tests__/radio/base-radio.test.tsx +7 -7
- package/src/widgets/__tests__/renderQuestion.tsx +29 -21
- package/src/widgets/categorizer.tsx +4 -4
- package/src/widgets/cs-program.tsx +2 -2
- package/src/widgets/dropdown.tsx +1 -1
- package/src/widgets/expression.tsx +92 -57
- package/src/widgets/graded-group-set.tsx +5 -5
- package/src/widgets/graded-group.tsx +29 -21
- package/src/widgets/grapher/util.tsx +6 -6
- package/src/widgets/grapher.tsx +10 -10
- package/src/widgets/group.tsx +3 -3
- package/src/widgets/iframe.tsx +2 -2
- package/src/widgets/image.tsx +1 -1
- package/src/widgets/input-number.tsx +4 -4
- package/src/widgets/interaction.tsx +77 -77
- package/src/widgets/interactive-graph.tsx +109 -107
- package/src/widgets/label-image/marker.tsx +2 -2
- package/src/widgets/label-image.test.ts +1 -1
- package/src/widgets/label-image.tsx +7 -7
- package/src/widgets/lights-puzzle.tsx +2 -2
- package/src/widgets/matcher.tsx +6 -6
- package/src/widgets/matrix.tsx +20 -20
- package/src/widgets/measurer.tsx +3 -3
- package/src/widgets/molecule/__tests__/layout.test.ts +4 -4
- package/src/widgets/molecule/__tests__/parser.test.ts +14 -14
- package/src/widgets/molecule/smiles-parser.ts +3 -3
- package/src/widgets/molecule.tsx +4 -4
- package/src/widgets/number-line.tsx +11 -11
- package/src/widgets/numeric-input.tsx +11 -11
- package/src/widgets/orderer.tsx +38 -38
- package/src/widgets/passage/__tests__/passage-markdown.test.ts +1 -1
- package/src/widgets/passage/passage-markdown.tsx +4 -4
- package/src/widgets/passage-ref-target.tsx +1 -1
- package/src/widgets/passage-ref.tsx +4 -6
- package/src/widgets/passage.tsx +11 -11
- package/src/widgets/plotter.tsx +9 -9
- package/src/widgets/radio/base-radio.tsx +11 -11
- package/src/widgets/radio/choice-icon/choice-icon.tsx +2 -2
- package/src/widgets/radio/choice.tsx +1 -1
- package/src/widgets/radio/option-status.tsx +1 -1
- package/src/widgets/radio/widget.tsx +6 -6
- package/src/widgets/radio.ts +1 -1
- package/src/widgets/reaction-diagram.tsx +8 -8
- package/src/widgets/sequence.tsx +12 -4
- package/src/widgets/simulator.tsx +14 -14
- package/src/widgets/sorter.tsx +4 -4
- package/src/widgets/table.tsx +8 -8
- package/src/widgets/transformer.tsx +92 -92
- package/src/widgets/unit.tsx +17 -17
- package/src/widgets/video-transcript-link.test.tsx +3 -3
- package/src/widgets/video-transcript-link.tsx +1 -1
- package/src/widgets/video.tsx +1 -1
- package/src/widgets.ts +5 -5
- package/src/zoom.ts +22 -22
- package/tsconfig-build.tsbuildinfo +1 -1
- package/dist/a11y.js.flow +0 -11
- package/dist/all-widgets.js.flow +0 -33
- package/dist/article-renderer.js.flow +0 -73
- package/dist/asset-context.js.flow +0 -15
- package/dist/basic-widgets.js.flow +0 -33
- package/dist/components/button-group.js.flow +0 -33
- package/dist/components/constants.js.flow +0 -13
- package/dist/components/fixed-to-responsive.js.flow +0 -34
- package/dist/components/graph.js.flow +0 -66
- package/dist/components/graphie-classes.js.flow +0 -19
- package/dist/components/graphie-movables.js.flow +0 -22
- package/dist/components/graphie.js.flow +0 -69
- package/dist/components/highlighting/highlightable-content.js.flow +0 -56
- package/dist/components/highlighting/highlights.js.flow +0 -54
- package/dist/components/highlighting/ranges.js.flow +0 -60
- package/dist/components/highlighting/types.js.flow +0 -70
- package/dist/components/highlighting/ui/highlight-renderer.js.flow +0 -43
- package/dist/components/highlighting/ui/highlight-set-renderer.js.flow +0 -41
- package/dist/components/highlighting/ui/highlight-tooltip.js.flow +0 -22
- package/dist/components/highlighting/ui/highlighting-ui.js.flow +0 -30
- package/dist/components/highlighting/ui/selection-tracker.js.flow +0 -54
- package/dist/components/highlighting/ui/types.js.flow +0 -22
- package/dist/components/highlighting/ui/util.js.flow +0 -42
- package/dist/components/highlighting/word-indexer.js.flow +0 -21
- package/dist/components/hud.js.flow +0 -14
- package/dist/components/icon.js.flow +0 -31
- package/dist/components/image-loader.js.flow +0 -49
- package/dist/components/info-tip/info-tip.js.flow +0 -20
- package/dist/components/info-tip.js.flow +0 -18
- package/dist/components/inline-icon.js.flow +0 -39
- package/dist/components/input-with-examples.js.flow +0 -58
- package/dist/components/lint.js.flow +0 -58
- package/dist/components/math-input.js.flow +0 -49
- package/dist/components/math-output.js.flow +0 -33
- package/dist/components/multi-button-group.js.flow +0 -35
- package/dist/components/number-input.js.flow +0 -42
- package/dist/components/prop-check-box.js.flow +0 -8
- package/dist/components/range-input.js.flow +0 -20
- package/dist/components/simple-keypad-input.js.flow +0 -16
- package/dist/components/sortable.js.flow +0 -91
- package/dist/components/stub-tag-editor.js.flow +0 -18
- package/dist/components/svg-image.js.flow +0 -85
- package/dist/components/tex-buttons.js.flow +0 -26
- package/dist/components/tex.js.flow +0 -25
- package/dist/components/text-input.js.flow +0 -39
- package/dist/components/text-list-editor.js.flow +0 -22
- package/dist/components/tooltip.js.flow +0 -51
- package/dist/components/visibility-observer/create-visibility-observer.js.flow +0 -23
- package/dist/components/visibility-observer/get-scroll-parent.js.flow +0 -7
- package/dist/components/visibility-observer/visibility-observer.js.flow +0 -36
- package/dist/components/zoomable-tex.js.flow +0 -18
- package/dist/components/zoomable.js.flow +0 -70
- package/dist/components.js.flow +0 -22
- package/dist/definition-context.js.flow +0 -25
- package/dist/dependencies.js.flow +0 -9
- package/dist/error-boundary.js.flow +0 -19
- package/dist/extra-widgets.js.flow +0 -33
- package/dist/hint-renderer.js.flow +0 -32
- package/dist/hints-renderer.js.flow +0 -41
- package/dist/icon-paths.js.flow +0 -123
- package/dist/index.js.flow +0 -134
- package/dist/init.js.flow +0 -20
- package/dist/interaction-tracker.js.flow +0 -35
- package/dist/interactive2/interactive-util.js.flow +0 -50
- package/dist/interactive2/movable-helper-methods.js.flow +0 -15
- package/dist/interactive2/movable-line-options.js.flow +0 -44
- package/dist/interactive2/movable-line.js.flow +0 -8
- package/dist/interactive2/movable-point-options.js.flow +0 -44
- package/dist/interactive2/movable-point.js.flow +0 -8
- package/dist/interactive2/movable-polygon-options.js.flow +0 -47
- package/dist/interactive2/movable-polygon.js.flow +0 -8
- package/dist/interactive2/movable.js.flow +0 -8
- package/dist/interactive2/objective_.js.flow +0 -25
- package/dist/interactive2/types.js.flow +0 -8
- package/dist/interactive2/wrapped-defaults.js.flow +0 -11
- package/dist/interactive2/wrapped-ellipse.js.flow +0 -14
- package/dist/interactive2/wrapped-line.js.flow +0 -14
- package/dist/interactive2/wrapped-path.js.flow +0 -13
- package/dist/interactive2.js.flow +0 -16
- package/dist/item-renderer.js.flow +0 -132
- package/dist/item-version.js.flow +0 -11
- package/dist/jipt-paragraphs.js.flow +0 -14
- package/dist/loading-context.js.flow +0 -12
- package/dist/logging/log.js.flow +0 -62
- package/dist/mixins/changeable.js.flow +0 -33
- package/dist/mixins/editor-jsonify.js.flow +0 -10
- package/dist/mixins/provide-keypad.js.flow +0 -33
- package/dist/mixins/widget-jsonify-deprecated.js.flow +0 -11
- package/dist/mixins/widget-prop-denylist.js.flow +0 -20
- package/dist/multi-items/item-types.js.flow +0 -55
- package/dist/multi-items/items.js.flow +0 -66
- package/dist/multi-items/multi-renderer.js.flow +0 -213
- package/dist/multi-items/prop-type-builders.js.flow +0 -22
- package/dist/multi-items/shape-types.js.flow +0 -60
- package/dist/multi-items/shapes.js.flow +0 -25
- package/dist/multi-items/tree-types.js.flow +0 -45
- package/dist/multi-items/trees.js.flow +0 -147
- package/dist/multi-items.js.flow +0 -36
- package/dist/perseus-api.js.flow +0 -151
- package/dist/perseus-env.js.flow +0 -6
- package/dist/perseus-error.js.flow +0 -16
- package/dist/perseus-markdown.js.flow +0 -20
- package/dist/perseus-types.js.flow +0 -1041
- package/dist/question-paragraph.js.flow +0 -17
- package/dist/renderability.js.flow +0 -19
- package/dist/renderer.js.flow +0 -325
- package/dist/server-item-renderer.js.flow +0 -132
- package/dist/sigfigs.js.flow +0 -41
- package/dist/styles/constants.js.flow +0 -62
- package/dist/styles/global-constants.js.flow +0 -348
- package/dist/styles/global-styles.js.flow +0 -53
- package/dist/styles/media-queries.js.flow +0 -35
- package/dist/styles/shared.js.flow +0 -8
- package/dist/tex-wrangler.js.flow +0 -13
- package/dist/translation-linter.js.flow +0 -32
- package/dist/traversal.js.flow +0 -26
- package/dist/types.js.flow +0 -318
- package/dist/util/a11y.js.flow +0 -8
- package/dist/util/answer-types.js.flow +0 -49
- package/dist/util/colors.js.flow +0 -95
- package/dist/util/fix-passage-refs.js.flow +0 -8
- package/dist/util/geometry.js.flow +0 -37
- package/dist/util/graph-utils.js.flow +0 -9
- package/dist/util/graphie.js.flow +0 -8
- package/dist/util/interactive.js.flow +0 -11
- package/dist/util/katex-preprocess.js.flow +0 -12
- package/dist/util/math.js.flow +0 -62
- package/dist/util/mobile-native-utils.js.flow +0 -12
- package/dist/util/react-render.js.flow +0 -12
- package/dist/util/register-all-widgets-for-testing.js.flow +0 -7
- package/dist/util/scroll-utils.js.flow +0 -19
- package/dist/util/sizing-utils.js.flow +0 -20
- package/dist/util/tex.js.flow +0 -17
- package/dist/util/url-utils.js.flow +0 -11
- package/dist/util.graphie.js.flow +0 -14
- package/dist/util.js.flow +0 -319
- package/dist/version.js.flow +0 -17
- package/dist/widget-container.js.flow +0 -33
- package/dist/widgets/categorizer.js.flow +0 -70
- package/dist/widgets/cs-program.js.flow +0 -54
- package/dist/widgets/definition.js.flow +0 -57
- package/dist/widgets/dropdown.js.flow +0 -63
- package/dist/widgets/explanation.js.flow +0 -58
- package/dist/widgets/expression.js.flow +0 -116
- package/dist/widgets/graded-group-answer-bar.js.flow +0 -24
- package/dist/widgets/graded-group-set.js.flow +0 -65
- package/dist/widgets/graded-group.js.flow +0 -78
- package/dist/widgets/grapher/util.js.flow +0 -38
- package/dist/widgets/grapher.js.flow +0 -102
- package/dist/widgets/group.js.flow +0 -60
- package/dist/widgets/iframe.js.flow +0 -53
- package/dist/widgets/image.js.flow +0 -73
- package/dist/widgets/input-number.js.flow +0 -94
- package/dist/widgets/interaction/arrow-picker.js.flow +0 -21
- package/dist/widgets/interaction/color-picker.js.flow +0 -23
- package/dist/widgets/interaction/dash-picker.js.flow +0 -21
- package/dist/widgets/interaction/element-container.js.flow +0 -28
- package/dist/widgets/interaction.js.flow +0 -60
- package/dist/widgets/interactive-graph.js.flow +0 -239
- package/dist/widgets/label-image/answer-choices.js.flow +0 -55
- package/dist/widgets/label-image/marker.js.flow +0 -31
- package/dist/widgets/label-image/types.js.flow +0 -23
- package/dist/widgets/label-image.js.flow +0 -142
- package/dist/widgets/lights-puzzle.js.flow +0 -58
- package/dist/widgets/matcher.js.flow +0 -106
- package/dist/widgets/matrix.js.flow +0 -80
- package/dist/widgets/measurer.js.flow +0 -30
- package/dist/widgets/molecule/molecule-drawing.js.flow +0 -11
- package/dist/widgets/molecule/molecule-layout.js.flow +0 -96
- package/dist/widgets/molecule/smiles-parser.js.flow +0 -26
- package/dist/widgets/molecule.js.flow +0 -60
- package/dist/widgets/number-line.js.flow +0 -102
- package/dist/widgets/numeric-input.js.flow +0 -105
- package/dist/widgets/orderer.js.flow +0 -81
- package/dist/widgets/passage/passage-markdown.js.flow +0 -33
- package/dist/widgets/passage-ref-target.js.flow +0 -52
- package/dist/widgets/passage-ref.js.flow +0 -85
- package/dist/widgets/passage.js.flow +0 -157
- package/dist/widgets/plotter.js.flow +0 -112
- package/dist/widgets/radio/base-radio.js.flow +0 -50
- package/dist/widgets/radio/choice-a11y-text.js.flow +0 -14
- package/dist/widgets/radio/choice-icon/choice-icon.js.flow +0 -22
- package/dist/widgets/radio/choice-icon/cross-out-line.js.flow +0 -16
- package/dist/widgets/radio/choice-icon/shared-styles.js.flow +0 -11
- package/dist/widgets/radio/choice-none-above.js.flow +0 -16
- package/dist/widgets/radio/choice.js.flow +0 -29
- package/dist/widgets/radio/choice.jsx.fixture.js.flow +0 -7
- package/dist/widgets/radio/focus-ring.js.flow +0 -22
- package/dist/widgets/radio/option-status.js.flow +0 -16
- package/dist/widgets/radio/util.js.flow +0 -12
- package/dist/widgets/radio/widget.js.flow +0 -80
- package/dist/widgets/radio.js.flow +0 -31
- package/dist/widgets/reaction-diagram.js.flow +0 -46
- package/dist/widgets/sequence.js.flow +0 -53
- package/dist/widgets/simulator.js.flow +0 -107
- package/dist/widgets/sorter.js.flow +0 -102
- package/dist/widgets/table.js.flow +0 -67
- package/dist/widgets/transformer.js.flow +0 -127
- package/dist/widgets/unit.js.flow +0 -93
- package/dist/widgets/video-transcript-link.js.flow +0 -15
- package/dist/widgets/video.js.flow +0 -57
- package/dist/widgets.js.flow +0 -108
- package/dist/zoom.js.flow +0 -7
- package/src/multi-items/item-types.js.flow +0 -55
|
@@ -4,7 +4,10 @@ import userEvent from "@testing-library/user-event";
|
|
|
4
4
|
import * as React from "react";
|
|
5
5
|
import "@testing-library/jest-dom"; // Imports custom matchers
|
|
6
6
|
|
|
7
|
-
import {
|
|
7
|
+
import {
|
|
8
|
+
testDependencies,
|
|
9
|
+
testDependenciesV2,
|
|
10
|
+
} from "../../../../testing/test-dependencies";
|
|
8
11
|
import {
|
|
9
12
|
itemWithInput,
|
|
10
13
|
mockedItem,
|
|
@@ -18,13 +21,13 @@ import InputNumberExport from "../widgets/input-number";
|
|
|
18
21
|
import RadioWidgetExport from "../widgets/radio";
|
|
19
22
|
|
|
20
23
|
import MockAssetLoadingWidgetExport, {
|
|
21
|
-
MockAssetLoadingWidget,
|
|
22
24
|
mockedAssetItem,
|
|
23
25
|
} from "./mock-asset-loading-widget";
|
|
24
26
|
import MockWidgetExport from "./mock-widget";
|
|
25
27
|
|
|
26
28
|
import type {PerseusItem} from "../perseus-types";
|
|
27
29
|
import type {APIOptions} from "../types";
|
|
30
|
+
import type {MockAssetLoadingWidget} from "./mock-asset-loading-widget";
|
|
28
31
|
|
|
29
32
|
// This looks alot like `widgets/__tests__/renderQuestion.jsx', except we use
|
|
30
33
|
// the ServerItemRenderer instead of Renderer
|
|
@@ -51,6 +54,7 @@ const renderQuestion = (
|
|
|
51
54
|
item={question}
|
|
52
55
|
problemNum={0}
|
|
53
56
|
reviewMode={false}
|
|
57
|
+
dependencies={testDependenciesV2}
|
|
54
58
|
{...optionalProps}
|
|
55
59
|
/>
|
|
56
60
|
</RenderStateRoot>,
|
|
@@ -167,7 +171,7 @@ describe("server item renderer", () => {
|
|
|
167
171
|
const node = renderer.getDOMNodeForPath(["input-number 1"]);
|
|
168
172
|
|
|
169
173
|
// Assert
|
|
170
|
-
// @ts-expect-error
|
|
174
|
+
// @ts-expect-error - TS2345 - Argument of type 'Element | Text | null | undefined' is not assignable to parameter of type 'HTMLElement'.
|
|
171
175
|
expect(await within(node).findAllByRole("textbox")).toHaveLength(1);
|
|
172
176
|
});
|
|
173
177
|
|
|
@@ -228,6 +232,7 @@ describe("server item renderer", () => {
|
|
|
228
232
|
item={itemWithInput}
|
|
229
233
|
problemNum={0}
|
|
230
234
|
reviewMode={false}
|
|
235
|
+
dependencies={testDependenciesV2}
|
|
231
236
|
/>
|
|
232
237
|
</RenderStateRoot>,
|
|
233
238
|
);
|
|
@@ -243,6 +248,7 @@ describe("server item renderer", () => {
|
|
|
243
248
|
item={itemWithInput}
|
|
244
249
|
problemNum={1} // to force componentDidUpdate
|
|
245
250
|
reviewMode={false}
|
|
251
|
+
dependencies={testDependenciesV2}
|
|
246
252
|
/>
|
|
247
253
|
,
|
|
248
254
|
</RenderStateRoot>,
|
|
@@ -272,6 +278,7 @@ describe("server item renderer", () => {
|
|
|
272
278
|
problemNum={0}
|
|
273
279
|
reviewMode={false}
|
|
274
280
|
onRendered={onRendered}
|
|
281
|
+
dependencies={testDependenciesV2}
|
|
275
282
|
/>
|
|
276
283
|
</RenderStateRoot>,
|
|
277
284
|
);
|
|
@@ -293,6 +300,7 @@ describe("server item renderer", () => {
|
|
|
293
300
|
problemNum={1}
|
|
294
301
|
reviewMode={false}
|
|
295
302
|
onRendered={onRendered}
|
|
303
|
+
dependencies={testDependenciesV2}
|
|
296
304
|
/>
|
|
297
305
|
</RenderStateRoot>,
|
|
298
306
|
);
|
|
@@ -300,7 +308,7 @@ describe("server item renderer", () => {
|
|
|
300
308
|
// Act
|
|
301
309
|
// setAssetStatus() is not part of the Widget interface, it's specific
|
|
302
310
|
// this test.
|
|
303
|
-
// @ts-expect-error
|
|
311
|
+
// @ts-expect-error - TS2352 - Conversion of type 'Widget' to type 'MockAssetLoadingWidget' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first.
|
|
304
312
|
const widget = mockedWidget as MockAssetLoadingWidget;
|
|
305
313
|
widget.setAssetStatus("ABC", true);
|
|
306
314
|
|
|
@@ -13,7 +13,7 @@ const assertWrangled = (toWrangle: string, check: string) => {
|
|
|
13
13
|
|
|
14
14
|
const assertParsed = (toParse: undefined | string, check: string) => {
|
|
15
15
|
// We ignore whitespace when comparing
|
|
16
|
-
// @ts-expect-error
|
|
16
|
+
// @ts-expect-error - TS2345 - Argument of type 'string | undefined' is not assignable to parameter of type 'string'.
|
|
17
17
|
const parsed = parseTex(toParse).replace(whitespaceRegex, "");
|
|
18
18
|
const checkNoSpace = check.replace(whitespaceRegex, "");
|
|
19
19
|
expect(parsed).toBe(checkNoSpace);
|
package/src/article-renderer.tsx
CHANGED
|
@@ -5,50 +5,53 @@
|
|
|
5
5
|
|
|
6
6
|
import * as PerseusLinter from "@khanacademy/perseus-linter";
|
|
7
7
|
import classNames from "classnames";
|
|
8
|
-
import PropTypes from "prop-types";
|
|
9
8
|
import * as React from "react";
|
|
10
9
|
|
|
10
|
+
import {DependenciesContext} from "./dependencies";
|
|
11
11
|
import ProvideKeypad from "./mixins/provide-keypad";
|
|
12
12
|
import {ClassNames as ApiClassNames, ApiOptions} from "./perseus-api";
|
|
13
13
|
import Renderer from "./renderer";
|
|
14
14
|
import Util from "./util";
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
16
|
+
import type {KeypadProps} from "./mixins/provide-keypad";
|
|
17
|
+
import type {PerseusRenderer} from "./perseus-types";
|
|
18
|
+
import type {APIOptions, PerseusDependenciesV2} from "./types";
|
|
19
|
+
import type {LinterContextProps} from "@khanacademy/perseus-linter";
|
|
20
|
+
|
|
21
|
+
type Props = {
|
|
22
|
+
apiOptions: APIOptions;
|
|
23
|
+
json: PerseusRenderer | ReadonlyArray<PerseusRenderer>;
|
|
24
|
+
// Whether to use the new Bibliotron styles for articles
|
|
25
|
+
/**
|
|
26
|
+
* @deprecated Does nothing
|
|
27
|
+
*/
|
|
28
|
+
useNewStyles: boolean;
|
|
29
|
+
linterContext: LinterContextProps;
|
|
30
|
+
legacyPerseusLint?: ReadonlyArray<string>;
|
|
31
|
+
|
|
32
|
+
dependencies: PerseusDependenciesV2;
|
|
33
|
+
} & KeypadProps;
|
|
34
|
+
|
|
35
|
+
type DefaultProps = {
|
|
36
|
+
apiOptions: Props["apiOptions"];
|
|
37
|
+
useNewStyles: Props["useNewStyles"];
|
|
38
|
+
linterContext: Props["linterContext"];
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
type State = {
|
|
42
|
+
keypadElement: any | null;
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
class ArticleRenderer extends React.Component<Props, State> {
|
|
23
46
|
_currentFocus: any;
|
|
24
47
|
|
|
25
|
-
static
|
|
26
|
-
|
|
27
|
-
apiOptions: PropTypes.shape({
|
|
28
|
-
onFocusChange: PropTypes.func,
|
|
29
|
-
isMobile: PropTypes.bool,
|
|
30
|
-
}),
|
|
31
|
-
json: PropTypes.oneOfType([
|
|
32
|
-
rendererProps,
|
|
33
|
-
PropTypes.arrayOf(rendererProps),
|
|
34
|
-
]).isRequired,
|
|
35
|
-
|
|
36
|
-
// Whether to use the new Bibliotron styles for articles
|
|
37
|
-
/**
|
|
38
|
-
* @deprecated Does nothing
|
|
39
|
-
*/
|
|
40
|
-
useNewStyles: PropTypes.bool,
|
|
41
|
-
linterContext: PerseusLinter.linterContextProps,
|
|
42
|
-
legacyPerseusLint: PropTypes.arrayOf(PropTypes.string),
|
|
43
|
-
};
|
|
44
|
-
|
|
45
|
-
static defaultProps: any = {
|
|
46
|
-
apiOptions: {},
|
|
48
|
+
static defaultProps: DefaultProps = {
|
|
49
|
+
apiOptions: ApiOptions.defaults,
|
|
47
50
|
useNewStyles: false,
|
|
48
51
|
linterContext: PerseusLinter.linterContextDefault,
|
|
49
52
|
};
|
|
50
53
|
|
|
51
|
-
constructor(props:
|
|
54
|
+
constructor(props: Props) {
|
|
52
55
|
super(props);
|
|
53
56
|
this.state = ProvideKeypad.getInitialState.call(this);
|
|
54
57
|
}
|
|
@@ -58,7 +61,7 @@ class ArticleRenderer extends React.Component<any, any> {
|
|
|
58
61
|
this._currentFocus = null;
|
|
59
62
|
}
|
|
60
63
|
|
|
61
|
-
shouldComponentUpdate(nextProps:
|
|
64
|
+
shouldComponentUpdate(nextProps: Props, nextState: State): boolean {
|
|
62
65
|
return nextProps !== this.props || nextState !== this.state;
|
|
63
66
|
}
|
|
64
67
|
|
|
@@ -96,7 +99,7 @@ class ArticleRenderer extends React.Component<any, any> {
|
|
|
96
99
|
if (this._currentFocus) {
|
|
97
100
|
const [sectionRef, ...focusPath] = this._currentFocus;
|
|
98
101
|
// eslint-disable-next-line react/no-string-refs
|
|
99
|
-
// @ts-expect-error
|
|
102
|
+
// @ts-expect-error - TS2339 - Property 'getInputPaths' does not exist on type 'ReactInstance'.
|
|
100
103
|
const inputPaths = this.refs[sectionRef].getInputPaths();
|
|
101
104
|
didFocusInput = inputPaths.some((inputPath) => {
|
|
102
105
|
return Util.inputPathsEqual(inputPath, focusPath);
|
|
@@ -107,18 +110,18 @@ class ArticleRenderer extends React.Component<any, any> {
|
|
|
107
110
|
this.props.apiOptions.onFocusChange(
|
|
108
111
|
this._currentFocus,
|
|
109
112
|
prevFocusPath,
|
|
110
|
-
// @ts-expect-error
|
|
113
|
+
// @ts-expect-error - TS2339 - Property 'getDOMNode' does not exist on type 'never'.
|
|
111
114
|
didFocusInput && keypadElement && keypadElement.getDOMNode(),
|
|
112
115
|
);
|
|
113
116
|
}
|
|
114
117
|
|
|
115
|
-
// @ts-expect-error
|
|
118
|
+
// @ts-expect-error - TS1345 - An expression of type 'void' cannot be tested for truthiness.
|
|
116
119
|
if (keypadElement) {
|
|
117
120
|
if (didFocusInput) {
|
|
118
|
-
// @ts-expect-error
|
|
121
|
+
// @ts-expect-error - TS2339 - Property 'activate' does not exist on type 'never'.
|
|
119
122
|
keypadElement.activate();
|
|
120
123
|
} else {
|
|
121
|
-
// @ts-expect-error
|
|
124
|
+
// @ts-expect-error - TS2339 - Property 'dismiss' does not exist on type 'never'.
|
|
122
125
|
keypadElement.dismiss();
|
|
123
126
|
}
|
|
124
127
|
}
|
|
@@ -149,7 +152,7 @@ class ArticleRenderer extends React.Component<any, any> {
|
|
|
149
152
|
if (this._currentFocus) {
|
|
150
153
|
const [sectionRef, ...inputPath] = this._currentFocus;
|
|
151
154
|
// eslint-disable-next-line react/no-string-refs
|
|
152
|
-
// @ts-expect-error
|
|
155
|
+
// @ts-expect-error - TS2339 - Property 'blurPath' does not exist on type 'ReactInstance'.
|
|
153
156
|
this.refs[sectionRef].blurPath(inputPath);
|
|
154
157
|
}
|
|
155
158
|
};
|
|
@@ -179,34 +182,40 @@ class ArticleRenderer extends React.Component<any, any> {
|
|
|
179
182
|
const sections = this._sections().map((section, i) => {
|
|
180
183
|
const refForSection = `section-${i}`;
|
|
181
184
|
return (
|
|
182
|
-
<
|
|
183
|
-
<
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
185
|
+
<DependenciesContext.Provider value={this.props.dependencies}>
|
|
186
|
+
<div key={i} className="clearfix">
|
|
187
|
+
<Renderer
|
|
188
|
+
{...section}
|
|
189
|
+
ref={refForSection}
|
|
190
|
+
key={i}
|
|
191
|
+
key_={i}
|
|
192
|
+
keypadElement={this.keypadElement()}
|
|
193
|
+
apiOptions={{
|
|
194
|
+
...apiOptions,
|
|
195
|
+
onFocusChange: (newFocusPath, oldFocusPath) => {
|
|
196
|
+
// Prefix the paths with the relevant section,
|
|
197
|
+
// so as to allow us to distinguish between
|
|
198
|
+
// equivalently-named inputs across Renderers.
|
|
199
|
+
this._handleFocusChange(
|
|
200
|
+
newFocusPath &&
|
|
201
|
+
[refForSection].concat(
|
|
202
|
+
newFocusPath,
|
|
203
|
+
),
|
|
204
|
+
oldFocusPath &&
|
|
205
|
+
[refForSection].concat(
|
|
206
|
+
oldFocusPath,
|
|
207
|
+
),
|
|
208
|
+
);
|
|
209
|
+
},
|
|
210
|
+
}}
|
|
211
|
+
linterContext={PerseusLinter.pushContextStack(
|
|
212
|
+
this.props.linterContext,
|
|
213
|
+
"article",
|
|
214
|
+
)}
|
|
215
|
+
legacyPerseusLint={this.props.legacyPerseusLint}
|
|
216
|
+
/>
|
|
217
|
+
</div>
|
|
218
|
+
</DependenciesContext.Provider>
|
|
210
219
|
);
|
|
211
220
|
});
|
|
212
221
|
|
|
@@ -31,7 +31,7 @@ describe("NumberInput", function () {
|
|
|
31
31
|
);
|
|
32
32
|
|
|
33
33
|
const node = TestUtils.renderIntoDocument(<NumberInput {...props} />);
|
|
34
|
-
// @ts-expect-error
|
|
34
|
+
// @ts-expect-error - TS2345 - Argument of type 'Element | Text | null' is not assignable to parameter of type 'Element | Component<any, {}, any>'. | TS2345 - Argument of type 'void' is not assignable to parameter of type 'ReactInstance | null | undefined'.
|
|
35
35
|
TestUtils.Simulate.change(ReactDOM.findDOMNode(node), {
|
|
36
36
|
target: {value: input},
|
|
37
37
|
});
|
|
@@ -39,12 +39,12 @@ describe("NumberInput", function () {
|
|
|
39
39
|
};
|
|
40
40
|
|
|
41
41
|
it("basic input", function () {
|
|
42
|
-
// @ts-expect-error
|
|
42
|
+
// @ts-expect-error - TS2554 - Expected 3 arguments, but got 2.
|
|
43
43
|
testInputResult("42", 42);
|
|
44
44
|
});
|
|
45
45
|
|
|
46
46
|
it("invalid input does not change", function () {
|
|
47
|
-
// @ts-expect-error
|
|
47
|
+
// @ts-expect-error - TS2554 - Expected 3 arguments, but got 2.
|
|
48
48
|
testInputResult("asdf", STARTING_VALUE);
|
|
49
49
|
});
|
|
50
50
|
|
|
@@ -78,7 +78,7 @@ describe("NumberInput", function () {
|
|
|
78
78
|
useArrowKeys={keysEnabled}
|
|
79
79
|
/>,
|
|
80
80
|
);
|
|
81
|
-
// @ts-expect-error
|
|
81
|
+
// @ts-expect-error - TS2345 - Argument of type 'Element | Text | null' is not assignable to parameter of type 'Element | Component<any, {}, any>'. | TS2345 - Argument of type 'void' is not assignable to parameter of type 'ReactInstance | null | undefined'.
|
|
82
82
|
TestUtils.Simulate.keyDown(ReactDOM.findDOMNode(node), {key: key});
|
|
83
83
|
expect(newVal).toEqual(endingValue);
|
|
84
84
|
};
|
|
@@ -89,10 +89,10 @@ describe("moveOptionToIndex", () => {
|
|
|
89
89
|
throw new Error("Failed to render");
|
|
90
90
|
}
|
|
91
91
|
|
|
92
|
-
// @ts-expect-error
|
|
92
|
+
// @ts-expect-error - TS2339 - Property 'moveOptionToIndex' does not exist on type 'never'.
|
|
93
93
|
sortable.moveOptionToIndex("a", 1);
|
|
94
94
|
|
|
95
|
-
// @ts-expect-error
|
|
95
|
+
// @ts-expect-error - TS2339 - Property 'getOptions' does not exist on type 'never'.
|
|
96
96
|
expect(sortable?.getOptions()).toStrictEqual(["b", "a", "c"]);
|
|
97
97
|
});
|
|
98
98
|
|
|
@@ -108,7 +108,7 @@ class FixedToResponsive extends React.Component<Props, State> {
|
|
|
108
108
|
const spacer = (
|
|
109
109
|
<div
|
|
110
110
|
style={{
|
|
111
|
-
// @ts-expect-error
|
|
111
|
+
// @ts-expect-error - TS2362 - The left-hand side of an arithmetic operation must be of type 'any', 'number', 'bigint' or an enum type.
|
|
112
112
|
paddingBottom: (1 / aspectRatio).toFixed(4) * 100 + "%",
|
|
113
113
|
}}
|
|
114
114
|
/>
|
package/src/components/graph.tsx
CHANGED
|
@@ -84,9 +84,9 @@ class Graph extends React.Component<Props> {
|
|
|
84
84
|
protractor: any;
|
|
85
85
|
ruler: any;
|
|
86
86
|
_graphie: any;
|
|
87
|
-
// @ts-expect-error
|
|
87
|
+
// @ts-expect-error - TS2564 - Property '_hasSetupGraphieThisUpdate' has no initializer and is not definitely assigned in the constructor.
|
|
88
88
|
_hasSetupGraphieThisUpdate: boolean;
|
|
89
|
-
// @ts-expect-error
|
|
89
|
+
// @ts-expect-error - TS2564 - Property '_shouldSetupGraphie' has no initializer and is not definitely assigned in the constructor.
|
|
90
90
|
_shouldSetupGraphie: boolean;
|
|
91
91
|
|
|
92
92
|
static defaultProps: DefaultProps = {
|
|
@@ -187,7 +187,7 @@ class Graph extends React.Component<Props> {
|
|
|
187
187
|
|
|
188
188
|
// eslint-disable-next-line react/no-string-refs
|
|
189
189
|
const graphieDiv = ReactDOM.findDOMNode(this.refs.graphieDiv);
|
|
190
|
-
// @ts-expect-error
|
|
190
|
+
// @ts-expect-error - TS2769 - No overload matches this call. | TS2339 - Property 'empty' does not exist on type 'JQueryStatic'.
|
|
191
191
|
$(graphieDiv).empty();
|
|
192
192
|
|
|
193
193
|
// Content creators may need to explicitly add the dollar signs so the
|
|
@@ -266,7 +266,7 @@ class Graph extends React.Component<Props> {
|
|
|
266
266
|
});
|
|
267
267
|
|
|
268
268
|
$instructionsWrapper.append($instructions);
|
|
269
|
-
// @ts-expect-error
|
|
269
|
+
// @ts-expect-error - TS2769 - No overload matches this call. | TS2339 - Property 'append' does not exist on type 'JQueryStatic'.
|
|
270
270
|
$(graphieDiv).append($instructionsWrapper);
|
|
271
271
|
} else {
|
|
272
272
|
$instructionsWrapper = undefined;
|
|
@@ -281,7 +281,7 @@ class Graph extends React.Component<Props> {
|
|
|
281
281
|
$instructionsWrapper = null;
|
|
282
282
|
}
|
|
283
283
|
// eslint-disable-next-line @babel/no-invalid-this
|
|
284
|
-
// @ts-expect-error
|
|
284
|
+
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
285
285
|
// eslint-disable-next-line @babel/no-invalid-this
|
|
286
286
|
this.props.onMouseDown(coord);
|
|
287
287
|
}, this)
|
|
@@ -346,7 +346,7 @@ class Graph extends React.Component<Props> {
|
|
|
346
346
|
}
|
|
347
347
|
|
|
348
348
|
if (this.props.showProtractor) {
|
|
349
|
-
// @ts-expect-error
|
|
349
|
+
// @ts-expect-error - TS2554 - Expected 2 arguments, but got 1.
|
|
350
350
|
const coord = this.pointsFromNormalized([[0.5, 0.05]])[0];
|
|
351
351
|
this.protractor = this._graphie.protractor(coord);
|
|
352
352
|
}
|
|
@@ -358,7 +358,7 @@ class Graph extends React.Component<Props> {
|
|
|
358
358
|
}
|
|
359
359
|
|
|
360
360
|
if (this.props.showRuler) {
|
|
361
|
-
// @ts-expect-error
|
|
361
|
+
// @ts-expect-error - TS2554 - Expected 2 arguments, but got 1.
|
|
362
362
|
const coord = this.pointsFromNormalized([[0.5, 0.25]])[0];
|
|
363
363
|
const extent =
|
|
364
364
|
this._graphie.range[0][1] - this._graphie.range[0][0];
|
|
@@ -395,7 +395,7 @@ class Graph extends React.Component<Props> {
|
|
|
395
395
|
if (imageData.url) {
|
|
396
396
|
const scale = this.props.box[0] / interactiveSizes.defaultBoxSize;
|
|
397
397
|
image = (
|
|
398
|
-
// @ts-expect-error
|
|
398
|
+
// @ts-expect-error - TS2741 - Property 'alt' is missing in type '{ src: any; width: any; height: any; scale: number; responsive: false; }' but required in type 'Pick<Readonly<Props> & Readonly<{ children?: ReactNode; }>, "children" | "height" | "width" | "title" | "alt" | "trackInteraction" | "preloader" | "allowFullBleed" | "extraGraphie" | "overrideAriaHidden">'.
|
|
399
399
|
<SvgImage
|
|
400
400
|
src={imageData.url}
|
|
401
401
|
width={imageData.width}
|
|
@@ -415,11 +415,11 @@ class Graph extends React.Component<Props> {
|
|
|
415
415
|
width: this.props.box[0],
|
|
416
416
|
height: this.props.box[1],
|
|
417
417
|
}}
|
|
418
|
-
// @ts-expect-error
|
|
418
|
+
// @ts-expect-error - TS2339 - Property 'onMouseOut' does not exist on type 'Graph'.
|
|
419
419
|
onMouseOut={this.onMouseOut}
|
|
420
|
-
// @ts-expect-error
|
|
420
|
+
// @ts-expect-error - TS2339 - Property 'onMouseOver' does not exist on type 'Graph'.
|
|
421
421
|
onMouseOver={this.onMouseOver}
|
|
422
|
-
// @ts-expect-error
|
|
422
|
+
// @ts-expect-error - TS2339 - Property 'onClick' does not exist on type 'Graph'.
|
|
423
423
|
onClick={this.onClick}
|
|
424
424
|
>
|
|
425
425
|
{image}
|
|
@@ -15,14 +15,14 @@ const deepEq = Util.deepEq;
|
|
|
15
15
|
* GraphieMovables
|
|
16
16
|
*/
|
|
17
17
|
function GraphieMovable(descriptor: any) {
|
|
18
|
-
// @ts-expect-error
|
|
18
|
+
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
19
19
|
_.extend(this, descriptor);
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
const abstractMethod = function () {
|
|
23
23
|
throw new PerseusError(
|
|
24
24
|
"Abstract method! Must be implemented by Graphie Movable" +
|
|
25
|
-
// @ts-expect-error
|
|
25
|
+
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
26
26
|
this.constructor.displayName,
|
|
27
27
|
Errors.NotAllowed,
|
|
28
28
|
);
|
|
@@ -64,16 +64,16 @@ const rewriteProps = function (props: any, childrenArray: any) {
|
|
|
64
64
|
*/
|
|
65
65
|
const createClass = function (spec: any): any {
|
|
66
66
|
const GraphieClass = function (props: any) {
|
|
67
|
-
// @ts-expect-error
|
|
67
|
+
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
68
68
|
if (!(this instanceof GraphieClass)) {
|
|
69
69
|
throw new PerseusError(
|
|
70
70
|
"Use createElement or JSX with graphie movables",
|
|
71
71
|
Errors.NotAllowed,
|
|
72
72
|
);
|
|
73
73
|
}
|
|
74
|
-
// @ts-expect-error
|
|
74
|
+
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
75
75
|
this.props = rewriteProps(props, props.children || []);
|
|
76
|
-
// @ts-expect-error
|
|
76
|
+
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
77
77
|
return this;
|
|
78
78
|
};
|
|
79
79
|
|
|
@@ -125,7 +125,7 @@ const createSimpleClass = function (addFunction: any): any {
|
|
|
125
125
|
},
|
|
126
126
|
|
|
127
127
|
remove: function () {
|
|
128
|
-
// @ts-expect-error
|
|
128
|
+
// @ts-expect-error - TS2554 - Expected 3 arguments, but got 2.
|
|
129
129
|
nestedMap(this._elements, (elem) => {
|
|
130
130
|
if (elem) {
|
|
131
131
|
elem.remove();
|
|
@@ -136,7 +136,7 @@ const createSimpleClass = function (addFunction: any): any {
|
|
|
136
136
|
},
|
|
137
137
|
|
|
138
138
|
toFront: function () {
|
|
139
|
-
// @ts-expect-error
|
|
139
|
+
// @ts-expect-error - TS2554 - Expected 3 arguments, but got 2.
|
|
140
140
|
nestedMap(this._elements, (elem) => {
|
|
141
141
|
if (_.isFunction(elem.toFront)) {
|
|
142
142
|
elem.toFront();
|
|
@@ -120,7 +120,7 @@ class Graphie extends React.Component<Props> {
|
|
|
120
120
|
* Use it for good and not evil.
|
|
121
121
|
*/
|
|
122
122
|
getGraphie: () => any = () => {
|
|
123
|
-
// @ts-expect-error
|
|
123
|
+
// @ts-expect-error - TS2339 - Property '_graphie' does not exist on type 'Graphie'.
|
|
124
124
|
return this._graphie;
|
|
125
125
|
};
|
|
126
126
|
|
|
@@ -164,9 +164,9 @@ class Graphie extends React.Component<Props> {
|
|
|
164
164
|
this._removeMovables();
|
|
165
165
|
|
|
166
166
|
const graphieDiv = ReactDOM.findDOMNode(this.graphieDivRef.current);
|
|
167
|
-
// @ts-expect-error
|
|
167
|
+
// @ts-expect-error - TS2769 - No overload matches this call. | TS2339 - Property 'empty' does not exist on type 'JQueryStatic'.
|
|
168
168
|
$(graphieDiv).empty();
|
|
169
|
-
// @ts-expect-error
|
|
169
|
+
// @ts-expect-error - TS2339 - Property '_graphie' does not exist on type 'Graphie'.
|
|
170
170
|
const graphie = (this._graphie = createGraphie(graphieDiv));
|
|
171
171
|
|
|
172
172
|
// This has to be called before addMouseLayer. You can re-init
|
|
@@ -193,7 +193,7 @@ class Graphie extends React.Component<Props> {
|
|
|
193
193
|
// Overwrite fixed styles set in init()
|
|
194
194
|
// TODO(alex): Either make this component always responsive by
|
|
195
195
|
// itself, or always wrap it in other components so that it is.
|
|
196
|
-
// @ts-expect-error
|
|
196
|
+
// @ts-expect-error - TS2769 - No overload matches this call. | TS2554 - Expected 2 arguments, but got 1.
|
|
197
197
|
$(graphieDiv).css({width: "100%", height: "100%"});
|
|
198
198
|
graphie.raphael.setSize("100%", "100%");
|
|
199
199
|
}
|
|
@@ -212,13 +212,13 @@ class Graphie extends React.Component<Props> {
|
|
|
212
212
|
|
|
213
213
|
_removeMovables: () => void = () => {
|
|
214
214
|
// _.invoke works even when this._movables is undefined
|
|
215
|
-
// @ts-expect-error
|
|
215
|
+
// @ts-expect-error - TS2339 - Property '_movables' does not exist on type 'Graphie'.
|
|
216
216
|
_.invoke(this._movables, "remove");
|
|
217
|
-
// @ts-expect-error
|
|
217
|
+
// @ts-expect-error - TS2339 - Property '_movables' does not exist on type 'Graphie'.
|
|
218
218
|
this._movables = {};
|
|
219
219
|
};
|
|
220
220
|
|
|
221
|
-
// @ts-expect-error
|
|
221
|
+
// @ts-expect-error - TS2322 - Type '(children: readonly any[], options: any) => ReactElement<any, string | JSXElementConstructor<any>> | readonly ReactElement<any, string | JSXElementConstructor<any>>[]' is not assignable to type '(children: readonly any[], arg2: any) => ReactElement<any, string | JSXElementConstructor<any>>'.
|
|
222
222
|
_renderMovables: (
|
|
223
223
|
children: ReadonlyArray<any>,
|
|
224
224
|
arg2: any,
|
|
@@ -260,7 +260,7 @@ class Graphie extends React.Component<Props> {
|
|
|
260
260
|
// elements occurring afterwards. If this happens, we set
|
|
261
261
|
// `areMovablesOutOfOrder` to true:
|
|
262
262
|
let areMovablesOutOfOrder = false;
|
|
263
|
-
// @ts-expect-error
|
|
263
|
+
// @ts-expect-error - TS2554 - Expected 3 arguments, but got 2.
|
|
264
264
|
return nestedMap(children, (childDescriptor) => {
|
|
265
265
|
if (!childDescriptor) {
|
|
266
266
|
// Still increment the key to avoid cascading key changes
|
|
@@ -333,7 +333,7 @@ class Graphie extends React.Component<Props> {
|
|
|
333
333
|
}
|
|
334
334
|
|
|
335
335
|
if (ref) {
|
|
336
|
-
// @ts-expect-error
|
|
336
|
+
// @ts-expect-error - TS2339 - Property 'movables' does not exist on type 'Graphie'.
|
|
337
337
|
this.movables[ref] = newMovables[key];
|
|
338
338
|
}
|
|
339
339
|
|
|
@@ -343,18 +343,18 @@ class Graphie extends React.Component<Props> {
|
|
|
343
343
|
|
|
344
344
|
// Sort of like react diffing, but for movables
|
|
345
345
|
_updateMovables: () => void = () => {
|
|
346
|
-
// @ts-expect-error
|
|
346
|
+
// @ts-expect-error - TS2339 - Property '_graphie' does not exist on type 'Graphie'.
|
|
347
347
|
const graphie = this._graphie;
|
|
348
348
|
|
|
349
|
-
// @ts-expect-error
|
|
349
|
+
// @ts-expect-error - TS2339 - Property '_movables' does not exist on type 'Graphie'.
|
|
350
350
|
const oldMovables = this._movables;
|
|
351
351
|
const newMovables: Record<string, any> = {};
|
|
352
|
-
// @ts-expect-error
|
|
352
|
+
// @ts-expect-error - TS2339 - Property '_movables' does not exist on type 'Graphie'.
|
|
353
353
|
this._movables = newMovables;
|
|
354
|
-
// @ts-expect-error
|
|
354
|
+
// @ts-expect-error - TS2339 - Property 'movables' does not exist on type 'Graphie'.
|
|
355
355
|
this.movables = {};
|
|
356
356
|
|
|
357
|
-
// @ts-expect-error
|
|
357
|
+
// @ts-expect-error - TS2345 - Argument of type 'ReactNode' is not assignable to parameter of type 'readonly any[]'.
|
|
358
358
|
this._renderMovables(this.props.children, {
|
|
359
359
|
nextKey: 1,
|
|
360
360
|
graphie: graphie,
|
|
@@ -131,7 +131,7 @@ class HighlightableContent extends React.PureComponent<Props, State> {
|
|
|
131
131
|
) => {
|
|
132
132
|
const {serializedHighlights} = this.props;
|
|
133
133
|
const newSerializedHighlights = {...serializedHighlights} as const;
|
|
134
|
-
// @ts-expect-error
|
|
134
|
+
// @ts-expect-error - TS2542 - Index signature in type '{ readonly [x: string]: SerializedHighlight; }' only permits reading.
|
|
135
135
|
delete newSerializedHighlights[keyToRemove];
|
|
136
136
|
this.props.onSerializedHighlightsUpdate(newSerializedHighlights);
|
|
137
137
|
};
|
|
@@ -53,7 +53,7 @@ type State = {
|
|
|
53
53
|
class HighlightRenderer extends React.PureComponent<Props, State> {
|
|
54
54
|
state: State = {
|
|
55
55
|
cachedHighlightRects: this._computeRects(this.props),
|
|
56
|
-
// @ts-expect-error
|
|
56
|
+
// @ts-expect-error - TS2322 - Type '{ cachedHighlightRects: readonly Rect[]; tooltipIsHovered: boolean; }' is not assignable to type 'HighlightRendererState'.
|
|
57
57
|
tooltipIsHovered: false,
|
|
58
58
|
};
|
|
59
59
|
|
|
@@ -117,7 +117,7 @@ function addClientRectsForText(
|
|
|
117
117
|
mutableRects: Array<Rect>,
|
|
118
118
|
): void {
|
|
119
119
|
const parentElement = textNode.parentElement;
|
|
120
|
-
// @ts-expect-error
|
|
120
|
+
// @ts-expect-error - TS2345 - Argument of type 'HTMLElement | null' is not assignable to parameter of type 'Element'.
|
|
121
121
|
const computedStyle = window.getComputedStyle(parentElement);
|
|
122
122
|
|
|
123
123
|
// NOTE(mdr): I'm not sure how computed line height works in all contexts
|
|
@@ -134,7 +134,7 @@ function addClientRectsForText(
|
|
|
134
134
|
) {
|
|
135
135
|
const parsedLineHeight = parseFloat(computedStyle.lineHeight);
|
|
136
136
|
if (!isNaN(parsedLineHeight)) {
|
|
137
|
-
// @ts-expect-error
|
|
137
|
+
// @ts-expect-error - TS2322 - Type 'number' is not assignable to type 'null'.
|
|
138
138
|
lineHeight = parsedLineHeight;
|
|
139
139
|
}
|
|
140
140
|
}
|