@khanacademy/perseus 19.1.5 → 19.1.7
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/dist/components/graph.d.ts +0 -1
- package/dist/components/graphie.d.ts +0 -1
- package/dist/es/index.js +319 -212
- package/dist/es/index.js.map +1 -1
- package/dist/index.js +338 -222
- package/dist/index.js.map +1 -1
- package/dist/interactive2/movable-point.d.ts +195 -1
- package/dist/interactive2/movable.d.ts +1 -1
- package/dist/interactive2/types.d.ts +4 -2
- package/dist/interactive2.d.ts +2 -1
- package/dist/server-item-renderer.d.ts +2 -2
- package/dist/util/graphie.d.ts +12 -2
- package/dist/widgets/expression.d.ts +6 -6
- package/package.json +11 -8
- package/.babelrc.js +0 -8
- package/.eslintrc.js +0 -12
- package/CHANGELOG.md +0 -1432
- package/src/__stories__/article-renderer.stories.tsx +0 -100
- package/src/__stories__/hints-renderer.stories.tsx +0 -55
- package/src/__stories__/server-item-renderer.stories.tsx +0 -44
- package/src/__testdata__/article-renderer.testdata.ts +0 -212
- package/src/__testdata__/graphie.testdata.ts +0 -51
- package/src/__testdata__/renderer.testdata.ts +0 -274
- package/src/__testdata__/server-item-renderer.testdata.ts +0 -171
- package/src/__tests__/__snapshots__/perseus-markdown.test.ts.snap +0 -507
- package/src/__tests__/__snapshots__/renderer.test.tsx.snap +0 -525
- package/src/__tests__/__snapshots__/server-item-renderer.test.tsx.snap +0 -285
- package/src/__tests__/a11y.test.ts +0 -303
- package/src/__tests__/article-renderer.test.tsx +0 -130
- package/src/__tests__/error-boundary.test.tsx +0 -76
- package/src/__tests__/extract-perseus-data.test.ts +0 -1027
- package/src/__tests__/init.test.ts +0 -10
- package/src/__tests__/jipt-paragraphs.test.ts +0 -32
- package/src/__tests__/mock-asset-loading-widget.tsx +0 -53
- package/src/__tests__/mock-widget.tsx +0 -33
- package/src/__tests__/perseus-markdown.test.ts +0 -764
- package/src/__tests__/renderability.test.ts +0 -480
- package/src/__tests__/renderer-api.test.tsx +0 -302
- package/src/__tests__/renderer.test.tsx +0 -1816
- package/src/__tests__/server-item-renderer.test.tsx +0 -582
- package/src/__tests__/test-items/image-item.ts +0 -24
- package/src/__tests__/test-items/input-number-1-item.ts +0 -26
- package/src/__tests__/test-items/input-number-2-item.ts +0 -38
- package/src/__tests__/test-items/table-item.ts +0 -29
- package/src/__tests__/tex-wrangler.test.ts +0 -82
- package/src/__tests__/util.test.ts +0 -40
- package/src/__tests__/widget-container.test.tsx +0 -126
- package/src/__tests__/widgets.test.ts +0 -91
- package/src/a11y.ts +0 -45
- package/src/all-widgets.ts +0 -9
- package/src/article-renderer.tsx +0 -237
- package/src/asset-context.ts +0 -30
- package/src/basic-widgets.ts +0 -16
- package/src/components/__stories__/button-group.stories.tsx +0 -55
- package/src/components/__stories__/fixed-to-responsive.stories.tsx +0 -141
- package/src/components/__stories__/graph.stories.tsx +0 -28
- package/src/components/__stories__/graphie.stories.tsx +0 -33
- package/src/components/__stories__/hud.stories.tsx +0 -35
- package/src/components/__stories__/icon.stories.tsx +0 -63
- package/src/components/__stories__/image-loader.stories.tsx +0 -63
- package/src/components/__stories__/info-tip.stories.tsx +0 -31
- package/src/components/__stories__/inline-icon.stories.tsx +0 -40
- package/src/components/__stories__/input-with-examples.stories.tsx +0 -53
- package/src/components/__stories__/lint.stories.tsx +0 -86
- package/src/components/__stories__/math-input.stories.tsx +0 -43
- package/src/components/__stories__/math-output.stories.tsx +0 -23
- package/src/components/__stories__/multi-button-group.stories.tsx +0 -66
- package/src/components/__stories__/number-input.stories.tsx +0 -41
- package/src/components/__stories__/prop-check-box.stories.tsx +0 -65
- package/src/components/__stories__/range-input.stories.tsx +0 -29
- package/src/components/__stories__/simple-keypad-input.stories.tsx +0 -27
- package/src/components/__stories__/sortable.stories.tsx +0 -77
- package/src/components/__stories__/stub-tag-editor.stories.tsx +0 -45
- package/src/components/__stories__/svg-image.stories.tsx +0 -74
- package/src/components/__stories__/tex.stories.tsx +0 -23
- package/src/components/__stories__/text-input.stories.tsx +0 -33
- package/src/components/__stories__/text-list-editor.stories.tsx +0 -32
- package/src/components/__stories__/tooltip.stories.tsx +0 -52
- package/src/components/__stories__/zoomable-tex.stories.tsx +0 -41
- package/src/components/__stories__/zoomable.stories.tsx +0 -49
- package/src/components/__testdata__/sorter.testdata.ts +0 -19
- package/src/components/__tests__/__snapshots__/sortable.test.tsx.snap +0 -163
- package/src/components/__tests__/__snapshots__/sorter.test.tsx.snap +0 -265
- package/src/components/__tests__/math-input.test.tsx +0 -147
- package/src/components/__tests__/number-input.test.tsx +0 -128
- package/src/components/__tests__/sortable.test.tsx +0 -269
- package/src/components/__tests__/sorter.test.tsx +0 -114
- package/src/components/__tests__/zoomable.test.tsx +0 -399
- package/src/components/button-group.tsx +0 -130
- package/src/components/constants.ts +0 -14
- package/src/components/fixed-to-responsive.tsx +0 -169
- package/src/components/graph.tsx +0 -444
- package/src/components/graphie-classes.ts +0 -153
- package/src/components/graphie-movables.ts +0 -338
- package/src/components/graphie.tsx +0 -400
- package/src/components/highlighting/highlightable-content.tsx +0 -240
- package/src/components/highlighting/highlights.ts +0 -207
- package/src/components/highlighting/ranges.ts +0 -304
- package/src/components/highlighting/types.ts +0 -73
- package/src/components/highlighting/ui/highlight-renderer.tsx +0 -172
- package/src/components/highlighting/ui/highlight-set-renderer.tsx +0 -185
- package/src/components/highlighting/ui/highlight-tooltip.tsx +0 -141
- package/src/components/highlighting/ui/highlighting-ui.tsx +0 -143
- package/src/components/highlighting/ui/selection-tracker.tsx +0 -186
- package/src/components/highlighting/ui/types.ts +0 -21
- package/src/components/highlighting/ui/util.ts +0 -165
- package/src/components/highlighting/word-indexer.tsx +0 -152
- package/src/components/hud.tsx +0 -167
- package/src/components/icon.tsx +0 -141
- package/src/components/image-loader.tsx +0 -177
- package/src/components/info-tip/info-tip.tsx +0 -144
- package/src/components/info-tip.tsx +0 -39
- package/src/components/inline-icon.tsx +0 -60
- package/src/components/input-with-examples.tsx +0 -249
- package/src/components/lint.tsx +0 -459
- package/src/components/math-input.tsx +0 -474
- package/src/components/math-output.tsx +0 -134
- package/src/components/multi-button-group.tsx +0 -135
- package/src/components/number-input.tsx +0 -249
- package/src/components/prop-check-box.tsx +0 -79
- package/src/components/range-input.tsx +0 -60
- package/src/components/simple-keypad-input.tsx +0 -88
- package/src/components/sortable.tsx +0 -958
- package/src/components/stub-tag-editor.tsx +0 -53
- package/src/components/svg-image.tsx +0 -779
- package/src/components/tex.tsx +0 -67
- package/src/components/text-input.tsx +0 -129
- package/src/components/text-list-editor.tsx +0 -166
- package/src/components/tooltip.tsx +0 -410
- package/src/components/visibility-observer/__stories__/visibility-observer.stories.tsx +0 -141
- package/src/components/visibility-observer/create-visibility-observer.ts +0 -108
- package/src/components/visibility-observer/get-scroll-parent.ts +0 -46
- package/src/components/visibility-observer/visibility-observer.tsx +0 -124
- package/src/components/zoomable-tex.tsx +0 -78
- package/src/components/zoomable.tsx +0 -304
- package/src/components.ts +0 -15
- package/src/definition-context.tsx +0 -59
- package/src/dependencies.ts +0 -40
- package/src/error-boundary.tsx +0 -70
- package/src/extra-widgets.ts +0 -75
- package/src/hint-renderer.tsx +0 -151
- package/src/hints-renderer.tsx +0 -372
- package/src/icon-paths.ts +0 -119
- package/src/index.ts +0 -171
- package/src/init.ts +0 -56
- package/src/interaction-tracker.ts +0 -62
- package/src/interactive2/__tests__/movable-mock.ts +0 -55
- package/src/interactive2/__tests__/movable-point.test.ts +0 -144
- package/src/interactive2/interactive-util.test.ts +0 -93
- package/src/interactive2/interactive-util.ts +0 -159
- package/src/interactive2/movable-helper-methods.ts +0 -166
- package/src/interactive2/movable-line-options.ts +0 -419
- package/src/interactive2/movable-line.ts +0 -307
- package/src/interactive2/movable-point-options.ts +0 -224
- package/src/interactive2/movable-point.tsx +0 -585
- package/src/interactive2/movable-polygon-options.ts +0 -389
- package/src/interactive2/movable-polygon.ts +0 -360
- package/src/interactive2/movable.test.ts +0 -249
- package/src/interactive2/movable.ts +0 -437
- package/src/interactive2/objective_.ts +0 -79
- package/src/interactive2/types.ts +0 -17
- package/src/interactive2/wrapped-defaults.ts +0 -87
- package/src/interactive2/wrapped-ellipse.ts +0 -94
- package/src/interactive2/wrapped-line.ts +0 -116
- package/src/interactive2/wrapped-path.ts +0 -51
- package/src/interactive2.ts +0 -70
- package/src/item-version.ts +0 -10
- package/src/jipt-paragraphs.ts +0 -49
- package/src/jquery.mobile.vmouse.js +0 -545
- package/src/loading-context.ts +0 -21
- package/src/logging/log.test.ts +0 -39
- package/src/logging/log.ts +0 -97
- package/src/mixins/__tests__/widget-prop-denylist.test.ts +0 -21
- package/src/mixins/changeable.ts +0 -133
- package/src/mixins/editor-jsonify.ts +0 -13
- package/src/mixins/widget-jsonify-deprecated.ts +0 -23
- package/src/mixins/widget-prop-denylist.ts +0 -48
- package/src/multi-items/__stories__/multi-renderer.stories.tsx +0 -83
- package/src/multi-items/__testdata__/multi-renderer.testdata.ts +0 -172
- package/src/multi-items/__tests__/__snapshots__/multi-renderer.test.tsx.snap +0 -1164
- package/src/multi-items/__tests__/items.test.ts +0 -240
- package/src/multi-items/__tests__/multi-renderer.test.tsx +0 -914
- package/src/multi-items/__tests__/prop-type-builders.test.ts +0 -133
- package/src/multi-items/__tests__/shapes.test.ts +0 -43
- package/src/multi-items/__tests__/trees.test.ts +0 -317
- package/src/multi-items/item-types.ts +0 -56
- package/src/multi-items/items.ts +0 -176
- package/src/multi-items/multi-renderer.tsx +0 -569
- package/src/multi-items/prop-type-builders.ts +0 -106
- package/src/multi-items/shape-types.ts +0 -52
- package/src/multi-items/shapes.ts +0 -52
- package/src/multi-items/tree-types.ts +0 -47
- package/src/multi-items/trees.ts +0 -360
- package/src/multi-items.ts +0 -75
- package/src/perseus-api.tsx +0 -188
- package/src/perseus-env.ts +0 -27
- package/src/perseus-error.ts +0 -17
- package/src/perseus-markdown.tsx +0 -405
- package/src/perseus-types.ts +0 -1366
- package/src/perseus-version.ts +0 -9
- package/src/question-paragraph.tsx +0 -34
- package/src/renderability.ts +0 -109
- package/src/renderer.tsx +0 -2000
- package/src/server-item-renderer.tsx +0 -495
- package/src/sigfigs.ts +0 -490
- package/src/styles/articles.less +0 -749
- package/src/styles/constants.ts +0 -94
- package/src/styles/global-constants.ts +0 -343
- package/src/styles/global-styles.ts +0 -306
- package/src/styles/khan-exercise.css +0 -1468
- package/src/styles/media-queries.ts +0 -47
- package/src/styles/perseus-renderer.less +0 -732
- package/src/styles/shared.ts +0 -130
- package/src/styles/util.less +0 -47
- package/src/styles/variables.boostrap.less +0 -277
- package/src/styles/variables.less +0 -56
- package/src/styles/variables.shared.less +0 -340
- package/src/styles/widgets/categorizer.less +0 -38
- package/src/styles/widgets/dropdown.less +0 -3
- package/src/styles/widgets/expression.less +0 -65
- package/src/styles/widgets/graded-group.less +0 -36
- package/src/styles/widgets/grapher.less +0 -12
- package/src/styles/widgets/group.less +0 -19
- package/src/styles/widgets/image.less +0 -54
- package/src/styles/widgets/interactive-graph.less +0 -64
- package/src/styles/widgets/label-image.less +0 -57
- package/src/styles/widgets/matcher.less +0 -8
- package/src/styles/widgets/matrix.less +0 -126
- package/src/styles/widgets/measurer.less +0 -20
- package/src/styles/widgets/orderer.less +0 -98
- package/src/styles/widgets/passage.less +0 -154
- package/src/styles/widgets/plotter.less +0 -31
- package/src/styles/widgets/radio.less +0 -58
- package/src/styles/widgets/reaction-diagram.less +0 -35
- package/src/styles/widgets/sequence.less +0 -5
- package/src/styles/widgets/sortable.less +0 -113
- package/src/styles/widgets/table.less +0 -57
- package/src/styles/widgets/unit.less +0 -15
- package/src/tex-wrangler.ts +0 -182
- package/src/translation-linter.ts +0 -126
- package/src/traversal.ts +0 -138
- package/src/types.ts +0 -513
- package/src/util/a11y.ts +0 -23
- package/src/util/answer-types.test.ts +0 -114
- package/src/util/answer-types.ts +0 -876
- package/src/util/colors.ts +0 -93
- package/src/util/drawing-transform.test.ts +0 -67
- package/src/util/drawing-transform.ts +0 -102
- package/src/util/extract-perseus-data.ts +0 -539
- package/src/util/fix-passage-refs.ts +0 -121
- package/src/util/geometry.test.ts +0 -75
- package/src/util/geometry.ts +0 -312
- package/src/util/graph-bounds.ts +0 -23
- package/src/util/graph-utils.ts +0 -15
- package/src/util/graphie.test.ts +0 -1277
- package/src/util/graphie.ts +0 -1576
- package/src/util/interactive.ts +0 -4174
- package/src/util/interval.ts +0 -4
- package/src/util/katex-preprocess.ts +0 -14
- package/src/util/math.test.ts +0 -11
- package/src/util/math.ts +0 -294
- package/src/util/mobile-native-utils.test.ts +0 -22
- package/src/util/mobile-native-utils.ts +0 -12
- package/src/util/parse-perseus-json.test.ts +0 -10
- package/src/util/parse-perseus-json.ts +0 -13
- package/src/util/react-render.tsx +0 -27
- package/src/util/register-all-widgets-for-testing.ts +0 -13
- package/src/util/scroll-utils.ts +0 -155
- package/src/util/sizing-utils.ts +0 -46
- package/src/util/tex.ts +0 -73
- package/src/util/url-utils.ts +0 -34
- package/src/util.graphie.test.ts +0 -45
- package/src/util.graphie.ts +0 -59
- package/src/util.ts +0 -966
- package/src/version.ts +0 -10
- package/src/widget-container.tsx +0 -199
- package/src/widgets/__stories__/categorizer.stories.tsx +0 -14
- package/src/widgets/__stories__/cs-program.stories.tsx +0 -14
- package/src/widgets/__stories__/definition.stories.tsx +0 -114
- package/src/widgets/__stories__/dropdown.stories.tsx +0 -14
- package/src/widgets/__stories__/explanation.stories.tsx +0 -18
- package/src/widgets/__stories__/expression.stories.tsx +0 -145
- package/src/widgets/__stories__/graded-group-set.stories.tsx +0 -31
- package/src/widgets/__stories__/graded-group.stories.tsx +0 -31
- package/src/widgets/__stories__/grapher.stories.tsx +0 -46
- package/src/widgets/__stories__/group.stories.tsx +0 -14
- package/src/widgets/__stories__/iframe.stories.tsx +0 -14
- package/src/widgets/__stories__/image.stories.tsx +0 -85
- package/src/widgets/__stories__/input-number.stories.tsx +0 -101
- package/src/widgets/__stories__/interaction.stories.tsx +0 -14
- package/src/widgets/__stories__/interactive-graph.stories.tsx +0 -60
- package/src/widgets/__stories__/label-image.stories.tsx +0 -130
- package/src/widgets/__stories__/matcher.stories.tsx +0 -14
- package/src/widgets/__stories__/matrix.stories.tsx +0 -14
- package/src/widgets/__stories__/number-line.stories.tsx +0 -14
- package/src/widgets/__stories__/numeric-input.stories.tsx +0 -105
- package/src/widgets/__stories__/orderer.stories.tsx +0 -18
- package/src/widgets/__stories__/passage-ref.stories.tsx +0 -33
- package/src/widgets/__stories__/passage.stories.tsx +0 -39
- package/src/widgets/__stories__/plotter.stories.tsx +0 -27
- package/src/widgets/__stories__/radio.stories.tsx +0 -86
- package/src/widgets/__stories__/random-widgets.stories.tsx +0 -59
- package/src/widgets/__stories__/sorter.stories.tsx +0 -14
- package/src/widgets/__stories__/test-keypad-context-wrapper.tsx +0 -66
- package/src/widgets/__stories__/unit.stories.tsx +0 -28
- package/src/widgets/__stories__/video-transcript-link.stories.tsx +0 -23
- package/src/widgets/__stories__/video.stories.tsx +0 -22
- package/src/widgets/__testdata__/base-radio.testdata.ts +0 -21
- package/src/widgets/__testdata__/categorizer.testdata.ts +0 -89
- package/src/widgets/__testdata__/cs-program.testdata.ts +0 -27
- package/src/widgets/__testdata__/dropdown.testdata.ts +0 -71
- package/src/widgets/__testdata__/explanation.testdata.ts +0 -85
- package/src/widgets/__testdata__/expression.testdata.ts +0 -198
- package/src/widgets/__testdata__/graded-group-set.testdata.ts +0 -356
- package/src/widgets/__testdata__/graded-group.testdata.ts +0 -77
- package/src/widgets/__testdata__/grapher.testdata.ts +0 -374
- package/src/widgets/__testdata__/group.testdata.ts +0 -153
- package/src/widgets/__testdata__/iframe.testdata.ts +0 -35
- package/src/widgets/__testdata__/image.testdata.ts +0 -36
- package/src/widgets/__testdata__/input-number.testdata.ts +0 -72
- package/src/widgets/__testdata__/interaction.testdata.ts +0 -262
- package/src/widgets/__testdata__/interactive-graph-random.testdata.ts +0 -269
- package/src/widgets/__testdata__/interactive-graph.testdata.ts +0 -644
- package/src/widgets/__testdata__/label-image.testdata.ts +0 -308
- package/src/widgets/__testdata__/matcher.testdata.ts +0 -33
- package/src/widgets/__testdata__/matrix.testdata.ts +0 -28
- package/src/widgets/__testdata__/number-line.testdata.ts +0 -30
- package/src/widgets/__testdata__/numeric-input.testdata.ts +0 -265
- package/src/widgets/__testdata__/orderer.testdata.ts +0 -123
- package/src/widgets/__testdata__/passage-ref.testdata.ts +0 -101
- package/src/widgets/__testdata__/passage.testdata.ts +0 -95
- package/src/widgets/__testdata__/plotter.testdata.ts +0 -36
- package/src/widgets/__testdata__/radio.testdata.ts +0 -324
- package/src/widgets/__testdata__/randomizers.ts +0 -51
- package/src/widgets/__testdata__/sorter.testdata.ts +0 -19
- package/src/widgets/__testdata__/video.testdata.ts +0 -61
- package/src/widgets/__tests__/__snapshots__/categorizer.test.ts.snap +0 -940
- package/src/widgets/__tests__/__snapshots__/cs-program.test.ts.snap +0 -67
- package/src/widgets/__tests__/__snapshots__/definition.test.ts.snap +0 -97
- package/src/widgets/__tests__/__snapshots__/dropdown.test.ts.snap +0 -133
- package/src/widgets/__tests__/__snapshots__/explanation.test.ts.snap +0 -425
- package/src/widgets/__tests__/__snapshots__/graded-group-set-jipt.test.ts.snap +0 -729
- package/src/widgets/__tests__/__snapshots__/graded-group-set.test.ts.snap +0 -339
- package/src/widgets/__tests__/__snapshots__/graded-group.test.ts.snap +0 -801
- package/src/widgets/__tests__/__snapshots__/grapher.test.ts.snap +0 -2673
- package/src/widgets/__tests__/__snapshots__/group.test.tsx.snap +0 -1211
- package/src/widgets/__tests__/__snapshots__/iframe.test.ts.snap +0 -61
- package/src/widgets/__tests__/__snapshots__/image.test.ts.snap +0 -378
- package/src/widgets/__tests__/__snapshots__/input-number.test.ts.snap +0 -495
- package/src/widgets/__tests__/__snapshots__/interaction.test.ts.snap +0 -292
- package/src/widgets/__tests__/__snapshots__/interactive-graph.test.ts.snap +0 -2889
- package/src/widgets/__tests__/__snapshots__/matcher.test.tsx.snap +0 -883
- package/src/widgets/__tests__/__snapshots__/matrix.test.ts.snap +0 -514
- package/src/widgets/__tests__/__snapshots__/number-line.test.ts.snap +0 -814
- package/src/widgets/__tests__/__snapshots__/numeric-input.test.ts.snap +0 -470
- package/src/widgets/__tests__/__snapshots__/orderer.test.ts.snap +0 -243
- package/src/widgets/__tests__/__snapshots__/passage-ref.test.ts.snap +0 -434
- package/src/widgets/__tests__/__snapshots__/passage.test.tsx.snap +0 -1956
- package/src/widgets/__tests__/__snapshots__/plotter.test.tsx.snap +0 -827
- package/src/widgets/__tests__/__snapshots__/radio.test.ts.snap +0 -4237
- package/src/widgets/__tests__/__snapshots__/unit.test.tsx.snap +0 -20
- package/src/widgets/__tests__/__snapshots__/video.test.ts.snap +0 -153
- package/src/widgets/__tests__/categorizer.test.ts +0 -203
- package/src/widgets/__tests__/cs-program.test.ts +0 -43
- package/src/widgets/__tests__/definition.test.ts +0 -136
- package/src/widgets/__tests__/dropdown.test.ts +0 -105
- package/src/widgets/__tests__/explanation.test.ts +0 -198
- package/src/widgets/__tests__/expression-mobile.test.tsx +0 -363
- package/src/widgets/__tests__/expression.test.tsx +0 -484
- package/src/widgets/__tests__/graded-group-set-jipt.test.ts +0 -30
- package/src/widgets/__tests__/graded-group-set.test.ts +0 -288
- package/src/widgets/__tests__/graded-group.test.ts +0 -232
- package/src/widgets/__tests__/grapher.cypress.ts +0 -576
- package/src/widgets/__tests__/grapher.test.ts +0 -33
- package/src/widgets/__tests__/group.test.tsx +0 -510
- package/src/widgets/__tests__/iframe.test.ts +0 -45
- package/src/widgets/__tests__/image.test.ts +0 -62
- package/src/widgets/__tests__/input-number.test.ts +0 -354
- package/src/widgets/__tests__/interaction.test.ts +0 -31
- package/src/widgets/__tests__/interactive-graph.cypress.ts +0 -815
- package/src/widgets/__tests__/interactive-graph.test.ts +0 -106
- package/src/widgets/__tests__/matcher.test.tsx +0 -176
- package/src/widgets/__tests__/matrix.test.ts +0 -82
- package/src/widgets/__tests__/number-line.test.ts +0 -79
- package/src/widgets/__tests__/numeric-input.test.ts +0 -575
- package/src/widgets/__tests__/orderer.test.ts +0 -73
- package/src/widgets/__tests__/passage-ref.test.ts +0 -168
- package/src/widgets/__tests__/passage.test.tsx +0 -224
- package/src/widgets/__tests__/plotter.test.tsx +0 -69
- package/src/widgets/__tests__/radio/base-radio.test.tsx +0 -470
- package/src/widgets/__tests__/radio/choice-icon.test.tsx +0 -90
- package/src/widgets/__tests__/radio/choice.test.tsx +0 -310
- package/src/widgets/__tests__/radio/focus-ring.test.tsx +0 -22
- package/src/widgets/__tests__/radio/option-status.test.tsx +0 -77
- package/src/widgets/__tests__/radio.test.ts +0 -807
- package/src/widgets/__tests__/randomizers.test.ts +0 -53
- package/src/widgets/__tests__/renderQuestion.tsx +0 -101
- package/src/widgets/__tests__/unit.test.tsx +0 -168
- package/src/widgets/__tests__/video.test.ts +0 -69
- package/src/widgets/categorizer.tsx +0 -344
- package/src/widgets/cs-program.tsx +0 -227
- package/src/widgets/definition.tsx +0 -121
- package/src/widgets/deprecated-standin/__stories__/deprecated-standin.stories.tsx +0 -30
- package/src/widgets/deprecated-standin/__tests__/__snapshots__/deprecated-standin.test.ts.snap +0 -70
- package/src/widgets/deprecated-standin/__tests__/deprecated-standin.test.ts +0 -93
- package/src/widgets/deprecated-standin/index.tsx +0 -58
- package/src/widgets/dropdown.tsx +0 -142
- package/src/widgets/explanation.tsx +0 -317
- package/src/widgets/expression.tsx +0 -707
- package/src/widgets/graded-group-answer-bar.tsx +0 -142
- package/src/widgets/graded-group-set.tsx +0 -338
- package/src/widgets/graded-group.tsx +0 -471
- package/src/widgets/grapher/util.tsx +0 -799
- package/src/widgets/grapher.tsx +0 -660
- package/src/widgets/group.tsx +0 -195
- package/src/widgets/iframe.tsx +0 -195
- package/src/widgets/image.tsx +0 -312
- package/src/widgets/input-number.tsx +0 -412
- package/src/widgets/interaction/arrow-picker.tsx +0 -38
- package/src/widgets/interaction/color-picker.tsx +0 -69
- package/src/widgets/interaction/dash-picker.tsx +0 -45
- package/src/widgets/interaction/element-container.tsx +0 -100
- package/src/widgets/interaction.tsx +0 -826
- package/src/widgets/interactive-graph.tsx +0 -2597
- package/src/widgets/label-image/__stories__/answer-choices.stories.tsx +0 -91
- package/src/widgets/label-image/__stories__/answer-pill.stories.tsx +0 -62
- package/src/widgets/label-image/__stories__/marker.stories.tsx +0 -171
- package/src/widgets/label-image/__tests__/answer-pill.test.tsx +0 -75
- package/src/widgets/label-image/__tests__/hide-answers-toggle.test.tsx +0 -39
- package/src/widgets/label-image/answer-choices.tsx +0 -88
- package/src/widgets/label-image/answer-pill.tsx +0 -103
- package/src/widgets/label-image/hide-answers-toggle.tsx +0 -40
- package/src/widgets/label-image/marker.tsx +0 -268
- package/src/widgets/label-image/strings.ts +0 -5
- package/src/widgets/label-image/types.ts +0 -27
- package/src/widgets/label-image.test.ts +0 -928
- package/src/widgets/label-image.tsx +0 -819
- package/src/widgets/lights-puzzle.tsx +0 -359
- package/src/widgets/matcher.tsx +0 -298
- package/src/widgets/matrix.tsx +0 -634
- package/src/widgets/measurer.tsx +0 -222
- package/src/widgets/molecule/__tests__/layout.test.ts +0 -162
- package/src/widgets/molecule/__tests__/parser.test.ts +0 -155
- package/src/widgets/molecule/molecule-drawing.ts +0 -173
- package/src/widgets/molecule/molecule-layout.ts +0 -362
- package/src/widgets/molecule/smiles-parser.ts +0 -296
- package/src/widgets/molecule.tsx +0 -172
- package/src/widgets/number-line.tsx +0 -862
- package/src/widgets/numeric-input.tsx +0 -576
- package/src/widgets/orderer.tsx +0 -786
- package/src/widgets/passage/__tests__/passage-markdown.test.ts +0 -376
- package/src/widgets/passage/passage-markdown.tsx +0 -475
- package/src/widgets/passage-ref-target.tsx +0 -76
- package/src/widgets/passage-ref.tsx +0 -213
- package/src/widgets/passage.tsx +0 -582
- package/src/widgets/plotter.tsx +0 -1194
- package/src/widgets/radio/__stories__/base-radio.stories.tsx +0 -196
- package/src/widgets/radio/__stories__/choice-icon.stories.tsx +0 -166
- package/src/widgets/radio/__stories__/choice-none-above.stories.tsx +0 -40
- package/src/widgets/radio/__stories__/choice.stories.tsx +0 -137
- package/src/widgets/radio/__stories__/focus-ring.stories.tsx +0 -43
- package/src/widgets/radio/__stories__/option-status.stories.tsx +0 -103
- package/src/widgets/radio/base-radio.tsx +0 -511
- package/src/widgets/radio/choice-a11y-text.ts +0 -61
- package/src/widgets/radio/choice-icon/choice-icon.tsx +0 -218
- package/src/widgets/radio/choice-icon/cross-out-line.tsx +0 -51
- package/src/widgets/radio/choice-icon/shared-styles.ts +0 -15
- package/src/widgets/radio/choice-none-above.tsx +0 -56
- package/src/widgets/radio/choice.jsx.fixture.ts +0 -45
- package/src/widgets/radio/choice.tsx +0 -359
- package/src/widgets/radio/focus-ring.tsx +0 -57
- package/src/widgets/radio/option-status.tsx +0 -98
- package/src/widgets/radio/util.test.ts +0 -18
- package/src/widgets/radio/util.ts +0 -31
- package/src/widgets/radio/widget.tsx +0 -520
- package/src/widgets/radio.ts +0 -157
- package/src/widgets/reaction-diagram.tsx +0 -144
- package/src/widgets/sequence.tsx +0 -142
- package/src/widgets/simulator.tsx +0 -829
- package/src/widgets/sorter.tsx +0 -155
- package/src/widgets/table.tsx +0 -393
- package/src/widgets/unit.tsx +0 -374
- package/src/widgets/video-transcript-link.test.tsx +0 -213
- package/src/widgets/video-transcript-link.tsx +0 -84
- package/src/widgets/video.tsx +0 -135
- package/src/widgets.ts +0 -489
- package/src/zoom.ts +0 -555
- package/tsconfig-build.json +0 -26
- package/tsconfig-build.tsbuildinfo +0 -1
|
@@ -1,826 +0,0 @@
|
|
|
1
|
-
/* eslint-disable @khanacademy/ts-no-error-suppressions */
|
|
2
|
-
/* eslint-disable @babel/no-invalid-this, react/no-unsafe, react/sort-comp */
|
|
3
|
-
import * as KAS from "@khanacademy/kas";
|
|
4
|
-
import {vector as kvector} from "@khanacademy/kmath";
|
|
5
|
-
import * as React from "react";
|
|
6
|
-
import _ from "underscore";
|
|
7
|
-
|
|
8
|
-
import Graphie from "../components/graphie";
|
|
9
|
-
import * as Changeable from "../mixins/changeable";
|
|
10
|
-
import Util from "../util";
|
|
11
|
-
|
|
12
|
-
import type {Coord} from "../interactive2/types";
|
|
13
|
-
import type {
|
|
14
|
-
PerseusInteractionElement,
|
|
15
|
-
PerseusInteractionWidgetOptions,
|
|
16
|
-
} from "../perseus-types";
|
|
17
|
-
import type {PerseusScore, WidgetExports, WidgetProps} from "../types";
|
|
18
|
-
|
|
19
|
-
// @ts-expect-error - TS2339 - Property 'Label' does not exist on type 'typeof Graphie'.
|
|
20
|
-
const Label = Graphie.Label;
|
|
21
|
-
// @ts-expect-error - TS2339 - Property 'Line' does not exist on type 'typeof Graphie'.
|
|
22
|
-
const Line = Graphie.Line;
|
|
23
|
-
// @ts-expect-error - TS2339 - Property 'MovablePoint' does not exist on type 'typeof Graphie'.
|
|
24
|
-
const MovablePoint = Graphie.MovablePoint;
|
|
25
|
-
// @ts-expect-error - TS2339 - Property 'MovableLine' does not exist on type 'typeof Graphie'.
|
|
26
|
-
const MovableLine = Graphie.MovableLine;
|
|
27
|
-
// @ts-expect-error - TS2339 - Property 'Plot' does not exist on type 'typeof Graphie'.
|
|
28
|
-
const Plot = Graphie.Plot;
|
|
29
|
-
// @ts-expect-error - TS2339 - Property 'PlotParametric' does not exist on type 'typeof Graphie'.
|
|
30
|
-
const PlotParametric = Graphie.PlotParametric;
|
|
31
|
-
// @ts-expect-error - TS2339 - Property 'Point' does not exist on type 'typeof Graphie'.
|
|
32
|
-
const Point = Graphie.Point;
|
|
33
|
-
// @ts-expect-error - TS2339 - Property 'Rect' does not exist on type 'typeof Graphie'.
|
|
34
|
-
const Rect = Graphie.Rect;
|
|
35
|
-
const {unescapeMathMode} = Util;
|
|
36
|
-
|
|
37
|
-
// Memoize KAS parsing
|
|
38
|
-
const KAShashFunc = (
|
|
39
|
-
expr: any,
|
|
40
|
-
options:
|
|
41
|
-
| undefined
|
|
42
|
-
| {
|
|
43
|
-
[".decimal_separator"]: never;
|
|
44
|
-
[".functions"]: never;
|
|
45
|
-
}
|
|
46
|
-
| {
|
|
47
|
-
functions: any;
|
|
48
|
-
},
|
|
49
|
-
) => {
|
|
50
|
-
// @ts-expect-error - TS2322 - Type '{ ".decimal_separator": never; ".functions": never; } | { functions: any; } | {}' is not assignable to type '{ ".decimal_separator": never; ".functions": never; } | { functions: any; } | undefined'.
|
|
51
|
-
options = options || {};
|
|
52
|
-
// @ts-expect-error - TS2532 - Object is possibly 'undefined'. | TS2339 - Property 'decimal_separator' does not exist on type '{ ".decimal_separator": never; ".functions": never; } | { functions: any; }'.
|
|
53
|
-
let result = expr + "||" + options.decimal_separator + "||";
|
|
54
|
-
// @ts-expect-error - TS2532 - Object is possibly 'undefined'. | TS2339 - Property 'functions' does not exist on type '{ ".decimal_separator": never; ".functions": never; } | { functions: any; }'.
|
|
55
|
-
const functions = options.functions;
|
|
56
|
-
const functionsLength = functions ? functions.length : 0;
|
|
57
|
-
for (let i = 0; i < functionsLength; i++) {
|
|
58
|
-
result += functions[i] + "|";
|
|
59
|
-
}
|
|
60
|
-
return result;
|
|
61
|
-
};
|
|
62
|
-
|
|
63
|
-
const _parseCache = Object.create(null);
|
|
64
|
-
const KASparse = (expr, options) => {
|
|
65
|
-
const hash = KAShashFunc(expr, options);
|
|
66
|
-
let cached = _parseCache[hash];
|
|
67
|
-
if (cached) {
|
|
68
|
-
return cached;
|
|
69
|
-
}
|
|
70
|
-
cached = KAS.parse(expr, options);
|
|
71
|
-
_parseCache[hash] = cached;
|
|
72
|
-
return cached;
|
|
73
|
-
};
|
|
74
|
-
|
|
75
|
-
const _compileCache = Object.create(null);
|
|
76
|
-
const KAScompile = (
|
|
77
|
-
expr: any,
|
|
78
|
-
options: {
|
|
79
|
-
functions: any;
|
|
80
|
-
},
|
|
81
|
-
) => {
|
|
82
|
-
const hash = KAShashFunc(expr, options);
|
|
83
|
-
let cached = _compileCache[hash];
|
|
84
|
-
if (cached) {
|
|
85
|
-
return cached;
|
|
86
|
-
}
|
|
87
|
-
const parsed = KAS.parse(expr, options).expr;
|
|
88
|
-
cached = parsed
|
|
89
|
-
? parsed.compile()
|
|
90
|
-
: function () {
|
|
91
|
-
return 0;
|
|
92
|
-
};
|
|
93
|
-
_compileCache[hash] = cached;
|
|
94
|
-
return cached;
|
|
95
|
-
};
|
|
96
|
-
|
|
97
|
-
type RenderProps = PerseusInteractionWidgetOptions; // There's no transform function in exports
|
|
98
|
-
type Rubric = PerseusInteractionWidgetOptions;
|
|
99
|
-
type Props = WidgetProps<RenderProps, Rubric>;
|
|
100
|
-
|
|
101
|
-
type DefaultProps = {
|
|
102
|
-
graph: Props["graph"];
|
|
103
|
-
elements: Props["elements"];
|
|
104
|
-
};
|
|
105
|
-
|
|
106
|
-
type State = {
|
|
107
|
-
variables: any;
|
|
108
|
-
functions: any;
|
|
109
|
-
};
|
|
110
|
-
|
|
111
|
-
class Interaction extends React.Component<Props, State> {
|
|
112
|
-
static defaultProps: DefaultProps = {
|
|
113
|
-
graph: {
|
|
114
|
-
box: [400, 400],
|
|
115
|
-
labels: ["x", "y"],
|
|
116
|
-
range: [
|
|
117
|
-
[-10, 10],
|
|
118
|
-
[-10, 10],
|
|
119
|
-
],
|
|
120
|
-
tickStep: [1, 1],
|
|
121
|
-
gridStep: [1, 1],
|
|
122
|
-
markings: "graph",
|
|
123
|
-
},
|
|
124
|
-
elements: [],
|
|
125
|
-
};
|
|
126
|
-
|
|
127
|
-
state: State = {
|
|
128
|
-
variables: _getInitialVariables(this.props.elements),
|
|
129
|
-
functions: _getInitialFunctions(this.props.elements),
|
|
130
|
-
};
|
|
131
|
-
|
|
132
|
-
UNSAFE_componentWillReceiveProps(nextProps: Props) {
|
|
133
|
-
// HACK(michaelpolyak): This widget is not wired to use the Perseus
|
|
134
|
-
// `onChange` callback to save user changes. Perseus re-rendering of the
|
|
135
|
-
// widget results in the loss of user changes, such as reseting the
|
|
136
|
-
// positions of the movable points and lines to the initial positions
|
|
137
|
-
// defined in the widget editor. The workaround here is to only reset
|
|
138
|
-
// the state if there are changes to props. This workaround is only
|
|
139
|
-
// possible because the widget is not designed to be graded. The correct
|
|
140
|
-
// fix would be to transform `variables` to the shape of `elements` and
|
|
141
|
-
// call `this.props.onChange({elements})` to preserve user changes using
|
|
142
|
-
// the Perseus state saving mechanism.
|
|
143
|
-
if (!_.isEqual(this.props.elements, nextProps.elements)) {
|
|
144
|
-
this.setState({
|
|
145
|
-
variables: _getInitialVariables(nextProps.elements),
|
|
146
|
-
functions: _getInitialFunctions(nextProps.elements),
|
|
147
|
-
});
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
_setupGraphie: (arg1: any, arg2: any) => void = (graphie, options) => {
|
|
152
|
-
graphie.graphInit(
|
|
153
|
-
_.extend({}, options, {
|
|
154
|
-
grid: _.contains(["graph", "grid"], this.props.graph.markings),
|
|
155
|
-
axes: _.contains(["graph"], this.props.graph.markings),
|
|
156
|
-
ticks: _.contains(["graph"], this.props.graph.markings),
|
|
157
|
-
labels: _.contains(["graph"], this.props.graph.markings),
|
|
158
|
-
labelFormat: function (s) {
|
|
159
|
-
return "\\small{" + s + "}";
|
|
160
|
-
},
|
|
161
|
-
axisArrows: "<->",
|
|
162
|
-
unityLabels: false,
|
|
163
|
-
}),
|
|
164
|
-
);
|
|
165
|
-
};
|
|
166
|
-
|
|
167
|
-
_updatePointLocation: (arg1: string, arg2: Coord) => void = (
|
|
168
|
-
subscript,
|
|
169
|
-
coord,
|
|
170
|
-
) => {
|
|
171
|
-
const variables = _.clone(this.state.variables);
|
|
172
|
-
variables["x_" + subscript] = coord[0];
|
|
173
|
-
variables["y_" + subscript] = coord[1];
|
|
174
|
-
this.setState({variables: variables});
|
|
175
|
-
this.props.trackInteraction();
|
|
176
|
-
};
|
|
177
|
-
|
|
178
|
-
_updateLineLocation: (arg1: any, arg2: Coord) => void = (
|
|
179
|
-
options,
|
|
180
|
-
startCoord,
|
|
181
|
-
) => {
|
|
182
|
-
// @ts-expect-error - TS2554 - Expected 2 arguments, but got 1.
|
|
183
|
-
const xDiff = this._eval(
|
|
184
|
-
"(" + options.endX + ")-(" + options.startX + ")",
|
|
185
|
-
);
|
|
186
|
-
// @ts-expect-error - TS2554 - Expected 2 arguments, but got 1.
|
|
187
|
-
const yDiff = this._eval(
|
|
188
|
-
"(" + options.endY + ")-(" + options.startY + ")",
|
|
189
|
-
);
|
|
190
|
-
const endCoord = kvector.add(startCoord, [xDiff, yDiff]);
|
|
191
|
-
const variables = _.clone(this.state.variables);
|
|
192
|
-
variables["x_" + options.startSubscript] = startCoord[0];
|
|
193
|
-
variables["y_" + options.startSubscript] = startCoord[1];
|
|
194
|
-
variables["x_" + options.endSubscript] = endCoord[0];
|
|
195
|
-
variables["y_" + options.endSubscript] = endCoord[1];
|
|
196
|
-
this.setState({variables: variables});
|
|
197
|
-
this.props.trackInteraction();
|
|
198
|
-
};
|
|
199
|
-
|
|
200
|
-
_eval: (arg1: any, arg2: any) => number = (expression, variables) => {
|
|
201
|
-
const func = KAScompile(expression, {functions: this.state.functions});
|
|
202
|
-
const compiledVars = _.extend({}, this.state.variables, variables);
|
|
203
|
-
_.each(_.keys(compiledVars), (name) => {
|
|
204
|
-
if (_.isString(compiledVars[name])) {
|
|
205
|
-
const func = KAScompile(compiledVars[name], {
|
|
206
|
-
functions: this.state.functions,
|
|
207
|
-
});
|
|
208
|
-
compiledVars[name] = function (x: any) {
|
|
209
|
-
return func(
|
|
210
|
-
_.extend({}, compiledVars, {
|
|
211
|
-
x: x,
|
|
212
|
-
}),
|
|
213
|
-
);
|
|
214
|
-
};
|
|
215
|
-
}
|
|
216
|
-
});
|
|
217
|
-
// Default to 0 if the expression couldn't be parsed
|
|
218
|
-
return func(compiledVars) || 0;
|
|
219
|
-
};
|
|
220
|
-
|
|
221
|
-
// Return an array of all the variables in an expression
|
|
222
|
-
_extractVars: (arg1: any) => ReadonlyArray<any> = (expr) => {
|
|
223
|
-
if (expr == null) {
|
|
224
|
-
return [];
|
|
225
|
-
}
|
|
226
|
-
let vars: Array<any> = [];
|
|
227
|
-
_.each(
|
|
228
|
-
expr.args(),
|
|
229
|
-
function (arg) {
|
|
230
|
-
if (arg && arg.constructor.name === "Expr") {
|
|
231
|
-
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
232
|
-
vars = vars.concat(this._extractVars(arg));
|
|
233
|
-
}
|
|
234
|
-
},
|
|
235
|
-
this,
|
|
236
|
-
);
|
|
237
|
-
|
|
238
|
-
if (expr.name() === "Var") {
|
|
239
|
-
vars.push(expr.prettyPrint());
|
|
240
|
-
}
|
|
241
|
-
return vars;
|
|
242
|
-
};
|
|
243
|
-
|
|
244
|
-
change: (arg1: any, arg2: any, arg3: any) => any = (...args) => {
|
|
245
|
-
return Changeable.change.apply(this, args);
|
|
246
|
-
};
|
|
247
|
-
|
|
248
|
-
render(): React.ReactNode {
|
|
249
|
-
const range = this.props.graph.range;
|
|
250
|
-
let labels = this.props.graph.labels;
|
|
251
|
-
if (this.props.graph.markings === "graph") {
|
|
252
|
-
// Content creators may need to explicitly add the dollar signs so
|
|
253
|
-
// the strings are picked up by our translation tools. However,
|
|
254
|
-
// these math annotations are redundant because we already render
|
|
255
|
-
// all graph labels in math mode. For example, a label value of
|
|
256
|
-
// `$\text{Dollars}$` will be translatable, but we only want to
|
|
257
|
-
// pass the string `\text{Dollars}` to the Graph widget.
|
|
258
|
-
labels = this.props.graph.labels.map((label) =>
|
|
259
|
-
label.startsWith("$") && label.endsWith("$")
|
|
260
|
-
? label.slice(1, -1)
|
|
261
|
-
: label,
|
|
262
|
-
);
|
|
263
|
-
}
|
|
264
|
-
return (
|
|
265
|
-
<Graphie
|
|
266
|
-
box={this.props.graph.box}
|
|
267
|
-
range={this.props.graph.range}
|
|
268
|
-
options={this.props.graph}
|
|
269
|
-
setup={this._setupGraphie}
|
|
270
|
-
setDrawingAreaAvailable={
|
|
271
|
-
this.props.apiOptions.setDrawingAreaAvailable
|
|
272
|
-
}
|
|
273
|
-
>
|
|
274
|
-
{this.props.graph.markings === "graph" && (
|
|
275
|
-
<Label
|
|
276
|
-
coord={[0, range[1][1]]}
|
|
277
|
-
text={labels[1]}
|
|
278
|
-
direction="above"
|
|
279
|
-
/>
|
|
280
|
-
)}
|
|
281
|
-
{this.props.graph.markings === "graph" && (
|
|
282
|
-
<Label
|
|
283
|
-
coord={[range[0][1], 0]}
|
|
284
|
-
text={labels[0]}
|
|
285
|
-
direction="right"
|
|
286
|
-
/>
|
|
287
|
-
)}
|
|
288
|
-
{_.map(
|
|
289
|
-
this.props.elements,
|
|
290
|
-
function (element, n) {
|
|
291
|
-
if (element.type === "point") {
|
|
292
|
-
return (
|
|
293
|
-
<Point
|
|
294
|
-
key={element.key}
|
|
295
|
-
coord={[
|
|
296
|
-
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
297
|
-
this._eval(element.options.coordX),
|
|
298
|
-
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
299
|
-
this._eval(element.options.coordY),
|
|
300
|
-
]}
|
|
301
|
-
color={element.options.color}
|
|
302
|
-
/>
|
|
303
|
-
);
|
|
304
|
-
}
|
|
305
|
-
if (element.type === "line") {
|
|
306
|
-
const start = [
|
|
307
|
-
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
308
|
-
this._eval(element.options.startX),
|
|
309
|
-
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
310
|
-
this._eval(element.options.startY),
|
|
311
|
-
];
|
|
312
|
-
const end = [
|
|
313
|
-
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
314
|
-
this._eval(element.options.endX),
|
|
315
|
-
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
316
|
-
this._eval(element.options.endY),
|
|
317
|
-
];
|
|
318
|
-
return (
|
|
319
|
-
<Line
|
|
320
|
-
key={element.key}
|
|
321
|
-
start={start}
|
|
322
|
-
end={end}
|
|
323
|
-
style={{
|
|
324
|
-
stroke: element.options.color,
|
|
325
|
-
strokeWidth:
|
|
326
|
-
element.options.strokeWidth,
|
|
327
|
-
strokeDasharray:
|
|
328
|
-
element.options.strokeDasharray,
|
|
329
|
-
arrows: element.options.arrows,
|
|
330
|
-
}}
|
|
331
|
-
/>
|
|
332
|
-
);
|
|
333
|
-
}
|
|
334
|
-
if (element.type === "movable-point") {
|
|
335
|
-
// TODO(eater): Would be nice if the constraint
|
|
336
|
-
// system were more flexible.
|
|
337
|
-
const constraints = [
|
|
338
|
-
(coord: any) => {
|
|
339
|
-
const coordX = Math.max(
|
|
340
|
-
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
341
|
-
this._eval(
|
|
342
|
-
element.options.constraintXMin,
|
|
343
|
-
),
|
|
344
|
-
Math.min(
|
|
345
|
-
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
346
|
-
this._eval(
|
|
347
|
-
element.options.constraintXMax,
|
|
348
|
-
),
|
|
349
|
-
coord[0],
|
|
350
|
-
),
|
|
351
|
-
);
|
|
352
|
-
const coordY = Math.max(
|
|
353
|
-
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
354
|
-
this._eval(
|
|
355
|
-
element.options.constraintYMin,
|
|
356
|
-
),
|
|
357
|
-
Math.min(
|
|
358
|
-
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
359
|
-
this._eval(
|
|
360
|
-
element.options.constraintYMax,
|
|
361
|
-
),
|
|
362
|
-
coord[1],
|
|
363
|
-
),
|
|
364
|
-
);
|
|
365
|
-
return [coordX, coordY];
|
|
366
|
-
},
|
|
367
|
-
];
|
|
368
|
-
if (element.options.constraint === "snap") {
|
|
369
|
-
constraints.push(
|
|
370
|
-
MovablePoint.constraints.snap(
|
|
371
|
-
element.options.snap,
|
|
372
|
-
),
|
|
373
|
-
);
|
|
374
|
-
} else if (element.options.constraint === "x") {
|
|
375
|
-
constraints.push((coord) => {
|
|
376
|
-
return [
|
|
377
|
-
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
378
|
-
this._eval(
|
|
379
|
-
element.options.constraintFn,
|
|
380
|
-
{y: coord[1]},
|
|
381
|
-
),
|
|
382
|
-
coord[1],
|
|
383
|
-
];
|
|
384
|
-
});
|
|
385
|
-
} else if (element.options.constraint === "y") {
|
|
386
|
-
constraints.push((coord) => {
|
|
387
|
-
return [
|
|
388
|
-
coord[0],
|
|
389
|
-
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
390
|
-
this._eval(
|
|
391
|
-
element.options.constraintFn,
|
|
392
|
-
{x: coord[0]},
|
|
393
|
-
),
|
|
394
|
-
];
|
|
395
|
-
});
|
|
396
|
-
}
|
|
397
|
-
|
|
398
|
-
// TODO(eater): foo_[xyz] are hacky non-props to
|
|
399
|
-
// get the component to update when constraints
|
|
400
|
-
// change
|
|
401
|
-
return (
|
|
402
|
-
<MovablePoint
|
|
403
|
-
key={element.key}
|
|
404
|
-
coord={[
|
|
405
|
-
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
406
|
-
this.state.variables[
|
|
407
|
-
"x_" + element.options.varSubscript
|
|
408
|
-
],
|
|
409
|
-
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
410
|
-
this.state.variables[
|
|
411
|
-
"y_" + element.options.varSubscript
|
|
412
|
-
],
|
|
413
|
-
]}
|
|
414
|
-
constraints={constraints}
|
|
415
|
-
foo_x={element.options.constraint}
|
|
416
|
-
foo_y={element.options.constraintFn}
|
|
417
|
-
foo_z={element.options.snap}
|
|
418
|
-
onMove={_.partial(
|
|
419
|
-
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
420
|
-
this._updatePointLocation,
|
|
421
|
-
element.options.varSubscript,
|
|
422
|
-
)}
|
|
423
|
-
/>
|
|
424
|
-
);
|
|
425
|
-
}
|
|
426
|
-
if (element.type === "movable-line") {
|
|
427
|
-
// TODO(eater): Would be nice if the constraint
|
|
428
|
-
// system were more flexible.
|
|
429
|
-
// TODO(eater): Don't duplicate this code from
|
|
430
|
-
// movable-point above
|
|
431
|
-
const constraints = [
|
|
432
|
-
(coord: any) => {
|
|
433
|
-
const coordX = Math.max(
|
|
434
|
-
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
435
|
-
this._eval(
|
|
436
|
-
element.options.constraintXMin,
|
|
437
|
-
),
|
|
438
|
-
Math.min(
|
|
439
|
-
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
440
|
-
this._eval(
|
|
441
|
-
element.options.constraintXMax,
|
|
442
|
-
),
|
|
443
|
-
coord[0],
|
|
444
|
-
),
|
|
445
|
-
);
|
|
446
|
-
const coordY = Math.max(
|
|
447
|
-
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
448
|
-
this._eval(
|
|
449
|
-
element.options.constraintYMin,
|
|
450
|
-
),
|
|
451
|
-
Math.min(
|
|
452
|
-
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
453
|
-
this._eval(
|
|
454
|
-
element.options.constraintYMax,
|
|
455
|
-
),
|
|
456
|
-
coord[1],
|
|
457
|
-
),
|
|
458
|
-
);
|
|
459
|
-
return [coordX, coordY];
|
|
460
|
-
},
|
|
461
|
-
];
|
|
462
|
-
if (element.options.constraint === "snap") {
|
|
463
|
-
constraints.push(
|
|
464
|
-
MovablePoint.constraints.snap(
|
|
465
|
-
element.options.snap,
|
|
466
|
-
),
|
|
467
|
-
);
|
|
468
|
-
} else if (element.options.constraint === "x") {
|
|
469
|
-
constraints.push((coord) => {
|
|
470
|
-
return [
|
|
471
|
-
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
472
|
-
this._eval(
|
|
473
|
-
element.options.constraintFn,
|
|
474
|
-
{y: coord[1]},
|
|
475
|
-
),
|
|
476
|
-
coord[1],
|
|
477
|
-
];
|
|
478
|
-
});
|
|
479
|
-
} else if (element.options.constraint === "y") {
|
|
480
|
-
constraints.push((coord) => {
|
|
481
|
-
return [
|
|
482
|
-
coord[0],
|
|
483
|
-
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
484
|
-
this._eval(
|
|
485
|
-
element.options.constraintFn,
|
|
486
|
-
{x: coord[0]},
|
|
487
|
-
),
|
|
488
|
-
];
|
|
489
|
-
});
|
|
490
|
-
}
|
|
491
|
-
const start = [
|
|
492
|
-
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
493
|
-
this.state.variables[
|
|
494
|
-
"x_" + element.options.startSubscript
|
|
495
|
-
],
|
|
496
|
-
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
497
|
-
this.state.variables[
|
|
498
|
-
"y_" + element.options.startSubscript
|
|
499
|
-
],
|
|
500
|
-
];
|
|
501
|
-
const end = [
|
|
502
|
-
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
503
|
-
this.state.variables[
|
|
504
|
-
"x_" + element.options.endSubscript
|
|
505
|
-
],
|
|
506
|
-
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
507
|
-
this.state.variables[
|
|
508
|
-
"y_" + element.options.endSubscript
|
|
509
|
-
],
|
|
510
|
-
];
|
|
511
|
-
return (
|
|
512
|
-
<MovableLine
|
|
513
|
-
key={element.key}
|
|
514
|
-
constraints={constraints}
|
|
515
|
-
// eslint-disable-next-line react/jsx-no-bind
|
|
516
|
-
onMove={_.bind(
|
|
517
|
-
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
518
|
-
this._updateLineLocation,
|
|
519
|
-
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
520
|
-
this,
|
|
521
|
-
element.options,
|
|
522
|
-
)}
|
|
523
|
-
foo_x={element.options.constraint}
|
|
524
|
-
foo_y={element.options.constraintFn}
|
|
525
|
-
foo_z={element.options.snap}
|
|
526
|
-
>
|
|
527
|
-
<MovablePoint
|
|
528
|
-
coord={start}
|
|
529
|
-
static={true}
|
|
530
|
-
normalStyle={{
|
|
531
|
-
stroke: "none",
|
|
532
|
-
fill: "none",
|
|
533
|
-
}}
|
|
534
|
-
/>
|
|
535
|
-
<MovablePoint
|
|
536
|
-
coord={end}
|
|
537
|
-
static={true}
|
|
538
|
-
normalStyle={{
|
|
539
|
-
stroke: "none",
|
|
540
|
-
fill: "none",
|
|
541
|
-
}}
|
|
542
|
-
/>
|
|
543
|
-
</MovableLine>
|
|
544
|
-
);
|
|
545
|
-
}
|
|
546
|
-
if (element.type === "function") {
|
|
547
|
-
const fn = (x: any) => {
|
|
548
|
-
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
549
|
-
return this._eval(element.options.value, {
|
|
550
|
-
x: x,
|
|
551
|
-
});
|
|
552
|
-
};
|
|
553
|
-
// find all the variables referenced by this
|
|
554
|
-
// function
|
|
555
|
-
const vars = _.without(
|
|
556
|
-
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
557
|
-
this._extractVars(
|
|
558
|
-
// @ts-expect-error - TS2554 - Expected 2 arguments, but got 1.
|
|
559
|
-
KASparse(element.options.value).expr,
|
|
560
|
-
),
|
|
561
|
-
"x",
|
|
562
|
-
);
|
|
563
|
-
// and find their values, so we redraw if any
|
|
564
|
-
// change
|
|
565
|
-
const varValues = _.object(
|
|
566
|
-
vars,
|
|
567
|
-
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
568
|
-
_.map(vars, (v) => this.state.variables[v]),
|
|
569
|
-
);
|
|
570
|
-
|
|
571
|
-
const range = [
|
|
572
|
-
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
573
|
-
this._eval(
|
|
574
|
-
element.options.rangeMin,
|
|
575
|
-
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
576
|
-
this.state.variables,
|
|
577
|
-
),
|
|
578
|
-
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
579
|
-
this._eval(
|
|
580
|
-
element.options.rangeMax,
|
|
581
|
-
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
582
|
-
this.state.variables,
|
|
583
|
-
),
|
|
584
|
-
];
|
|
585
|
-
|
|
586
|
-
return (
|
|
587
|
-
<Plot
|
|
588
|
-
key={element.key}
|
|
589
|
-
fn={fn}
|
|
590
|
-
foo_fn={element.options.value}
|
|
591
|
-
foo_varvalues={varValues}
|
|
592
|
-
range={range}
|
|
593
|
-
style={{
|
|
594
|
-
stroke: element.options.color,
|
|
595
|
-
strokeWidth:
|
|
596
|
-
element.options.strokeWidth,
|
|
597
|
-
strokeDasharray:
|
|
598
|
-
element.options.strokeDasharray,
|
|
599
|
-
plotPoints: 100, // TODO(eater): why
|
|
600
|
-
// so slow?
|
|
601
|
-
}}
|
|
602
|
-
/>
|
|
603
|
-
);
|
|
604
|
-
}
|
|
605
|
-
if (element.type === "parametric") {
|
|
606
|
-
const fn = (t: any) => {
|
|
607
|
-
return [
|
|
608
|
-
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
609
|
-
this._eval(element.options.x, {t: t}),
|
|
610
|
-
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
611
|
-
this._eval(element.options.y, {t: t}),
|
|
612
|
-
];
|
|
613
|
-
};
|
|
614
|
-
// find all the variables referenced by this
|
|
615
|
-
// function
|
|
616
|
-
const vars = _.without(
|
|
617
|
-
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
618
|
-
this._extractVars(
|
|
619
|
-
// @ts-expect-error - TS2554 - Expected 2 arguments, but got 1.
|
|
620
|
-
KASparse(element.options.x).expr,
|
|
621
|
-
).concat(
|
|
622
|
-
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
623
|
-
this._extractVars(
|
|
624
|
-
// @ts-expect-error - TS2554 - Expected 2 arguments, but got 1.
|
|
625
|
-
KASparse(element.options.y).expr,
|
|
626
|
-
),
|
|
627
|
-
),
|
|
628
|
-
"t",
|
|
629
|
-
);
|
|
630
|
-
// and find their values, so we redraw if any change
|
|
631
|
-
const varValues = _.object(
|
|
632
|
-
vars,
|
|
633
|
-
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
634
|
-
_.map(vars, (v) => this.state.variables[v]),
|
|
635
|
-
);
|
|
636
|
-
|
|
637
|
-
const range = [
|
|
638
|
-
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
639
|
-
this._eval(
|
|
640
|
-
element.options.rangeMin,
|
|
641
|
-
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
642
|
-
this.state.variables,
|
|
643
|
-
),
|
|
644
|
-
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
645
|
-
this._eval(
|
|
646
|
-
element.options.rangeMax,
|
|
647
|
-
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
648
|
-
this.state.variables,
|
|
649
|
-
),
|
|
650
|
-
];
|
|
651
|
-
|
|
652
|
-
return (
|
|
653
|
-
<PlotParametric
|
|
654
|
-
key={element.key}
|
|
655
|
-
fn={fn}
|
|
656
|
-
foo_fnx={element.options.x}
|
|
657
|
-
foo_fny={element.options.y}
|
|
658
|
-
foo_varvalues={varValues}
|
|
659
|
-
range={range}
|
|
660
|
-
style={{
|
|
661
|
-
stroke: element.options.color,
|
|
662
|
-
strokeWidth:
|
|
663
|
-
element.options.strokeWidth,
|
|
664
|
-
strokeDasharray:
|
|
665
|
-
element.options.strokeDasharray,
|
|
666
|
-
plotPoints: 100, // TODO(eater): why
|
|
667
|
-
// so slow?
|
|
668
|
-
}}
|
|
669
|
-
/>
|
|
670
|
-
);
|
|
671
|
-
}
|
|
672
|
-
if (element.type === "label") {
|
|
673
|
-
const coord = [
|
|
674
|
-
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
675
|
-
this._eval(element.options.coordX),
|
|
676
|
-
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
677
|
-
this._eval(element.options.coordY),
|
|
678
|
-
];
|
|
679
|
-
return (
|
|
680
|
-
<Label
|
|
681
|
-
key={n + 1}
|
|
682
|
-
coord={coord}
|
|
683
|
-
text={unescapeMathMode(
|
|
684
|
-
element.options.label,
|
|
685
|
-
)}
|
|
686
|
-
style={{
|
|
687
|
-
color: element.options.color,
|
|
688
|
-
}}
|
|
689
|
-
/>
|
|
690
|
-
);
|
|
691
|
-
}
|
|
692
|
-
if (element.type === "rectangle") {
|
|
693
|
-
return (
|
|
694
|
-
<Rect
|
|
695
|
-
key={n + 1}
|
|
696
|
-
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
697
|
-
x={this._eval(element.options.coordX)}
|
|
698
|
-
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
699
|
-
y={this._eval(element.options.coordY)}
|
|
700
|
-
width={_.max([
|
|
701
|
-
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
702
|
-
this._eval(element.options.width),
|
|
703
|
-
0,
|
|
704
|
-
])}
|
|
705
|
-
height={_.max([
|
|
706
|
-
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
707
|
-
this._eval(element.options.height),
|
|
708
|
-
0,
|
|
709
|
-
])}
|
|
710
|
-
style={{
|
|
711
|
-
stroke: "none",
|
|
712
|
-
fill: element.options.color,
|
|
713
|
-
}}
|
|
714
|
-
/>
|
|
715
|
-
);
|
|
716
|
-
}
|
|
717
|
-
},
|
|
718
|
-
this,
|
|
719
|
-
)}
|
|
720
|
-
</Graphie>
|
|
721
|
-
);
|
|
722
|
-
}
|
|
723
|
-
|
|
724
|
-
getUserInput: () => any = () => {
|
|
725
|
-
// TODO(eater): Perhaps we want to be able to record the state of the
|
|
726
|
-
// user's interaction. Unfortunately sending all the props will
|
|
727
|
-
// probably make the attempt payload too large. So for now, don't send
|
|
728
|
-
// anything.
|
|
729
|
-
return {};
|
|
730
|
-
};
|
|
731
|
-
|
|
732
|
-
simpleValidate: (arg1: any) => any = (rubric) => {
|
|
733
|
-
return Interaction.validate(this.getUserInput(), rubric);
|
|
734
|
-
};
|
|
735
|
-
|
|
736
|
-
static validate(state: any, rubric: any): PerseusScore {
|
|
737
|
-
return {
|
|
738
|
-
type: "points",
|
|
739
|
-
earned: 0,
|
|
740
|
-
total: 0,
|
|
741
|
-
message: null,
|
|
742
|
-
};
|
|
743
|
-
}
|
|
744
|
-
}
|
|
745
|
-
|
|
746
|
-
const _getInitialVariables: (
|
|
747
|
-
arg1: ReadonlyArray<PerseusInteractionElement>,
|
|
748
|
-
) => any = (elements) => {
|
|
749
|
-
const variables: Record<string, any> = {};
|
|
750
|
-
// TODO(eater): look at all this copypasta! refactor this!
|
|
751
|
-
_.each(_.where(elements, {type: "movable-point"}), (element) => {
|
|
752
|
-
// @ts-expect-error - TS2339 - Property 'varSubscript' does not exist on type 'PerseusInteractionFunctionElementOptions | PerseusInteractionLabelElementOptions | ... 5 more ... | PerseusInteractionRectangleElementOptions'.
|
|
753
|
-
const subscript = element.options.varSubscript;
|
|
754
|
-
// @ts-expect-error - TS2554 - Expected 2 arguments, but got 1. | TS2339 - Property 'startX' does not exist on type 'PerseusInteractionFunctionElementOptions | PerseusInteractionLabelElementOptions | ... 5 more ... | PerseusInteractionRectangleElementOptions'.
|
|
755
|
-
const startXExpr = KASparse(element.options.startX || "0").expr;
|
|
756
|
-
// @ts-expect-error - TS2554 - Expected 2 arguments, but got 1. | TS2339 - Property 'startY' does not exist on type 'PerseusInteractionFunctionElementOptions | PerseusInteractionLabelElementOptions | ... 5 more ... | PerseusInteractionRectangleElementOptions'.
|
|
757
|
-
const startYExpr = KASparse(element.options.startY || "0").expr;
|
|
758
|
-
let startX = 0;
|
|
759
|
-
let startY = 0;
|
|
760
|
-
if (startXExpr) {
|
|
761
|
-
startX = startXExpr.eval({}) || 0;
|
|
762
|
-
}
|
|
763
|
-
if (startYExpr) {
|
|
764
|
-
startY = startYExpr.eval({}) || 0;
|
|
765
|
-
}
|
|
766
|
-
variables["x_" + subscript] = startX;
|
|
767
|
-
variables["y_" + subscript] = startY;
|
|
768
|
-
});
|
|
769
|
-
_.each(_.where(elements, {type: "movable-line"}), (element) => {
|
|
770
|
-
// @ts-expect-error - TS2339 - Property 'startSubscript' does not exist on type 'PerseusInteractionFunctionElementOptions | PerseusInteractionLabelElementOptions | ... 5 more ... | PerseusInteractionRectangleElementOptions'.
|
|
771
|
-
const startSubscript = element.options.startSubscript;
|
|
772
|
-
// @ts-expect-error - TS2339 - Property 'endSubscript' does not exist on type 'PerseusInteractionFunctionElementOptions | PerseusInteractionLabelElementOptions | ... 5 more ... | PerseusInteractionRectangleElementOptions'.
|
|
773
|
-
const endSubscript = element.options.endSubscript;
|
|
774
|
-
// @ts-expect-error - TS2554 - Expected 2 arguments, but got 1. | TS2339 - Property 'startX' does not exist on type 'PerseusInteractionFunctionElementOptions | PerseusInteractionLabelElementOptions | ... 5 more ... | PerseusInteractionRectangleElementOptions'.
|
|
775
|
-
const startXExpr = KASparse(element.options.startX || "0").expr;
|
|
776
|
-
// @ts-expect-error - TS2554 - Expected 2 arguments, but got 1. | TS2339 - Property 'startY' does not exist on type 'PerseusInteractionFunctionElementOptions | PerseusInteractionLabelElementOptions | ... 5 more ... | PerseusInteractionRectangleElementOptions'.
|
|
777
|
-
const startYExpr = KASparse(element.options.startY || "0").expr;
|
|
778
|
-
// @ts-expect-error - TS2554 - Expected 2 arguments, but got 1. | TS2339 - Property 'endX' does not exist on type 'PerseusInteractionFunctionElementOptions | PerseusInteractionLabelElementOptions | ... 5 more ... | PerseusInteractionRectangleElementOptions'.
|
|
779
|
-
const endXExpr = KASparse(element.options.endX || "0").expr;
|
|
780
|
-
// @ts-expect-error - TS2554 - Expected 2 arguments, but got 1. | TS2339 - Property 'endY' does not exist on type 'PerseusInteractionFunctionElementOptions | PerseusInteractionLabelElementOptions | ... 5 more ... | PerseusInteractionRectangleElementOptions'.
|
|
781
|
-
const endYExpr = KASparse(element.options.endY || "0").expr;
|
|
782
|
-
let startX = 0;
|
|
783
|
-
let startY = 0;
|
|
784
|
-
let endX = 0;
|
|
785
|
-
let endY = 0;
|
|
786
|
-
if (startXExpr) {
|
|
787
|
-
startX = startXExpr.eval({}) || 0;
|
|
788
|
-
}
|
|
789
|
-
if (startYExpr) {
|
|
790
|
-
startY = startYExpr.eval({}) || 0;
|
|
791
|
-
}
|
|
792
|
-
if (endXExpr) {
|
|
793
|
-
endX = endXExpr.eval({}) || 0;
|
|
794
|
-
}
|
|
795
|
-
if (endYExpr) {
|
|
796
|
-
endY = endYExpr.eval({}) || 0;
|
|
797
|
-
}
|
|
798
|
-
variables["x_" + startSubscript] = startX;
|
|
799
|
-
variables["y_" + startSubscript] = startY;
|
|
800
|
-
variables["x_" + endSubscript] = endX;
|
|
801
|
-
variables["y_" + endSubscript] = endY;
|
|
802
|
-
});
|
|
803
|
-
_.each(_.where(elements, {type: "function"}), (element) => {
|
|
804
|
-
// @ts-expect-error - TS2339 - Property 'funcName' does not exist on type 'PerseusInteractionFunctionElementOptions | PerseusInteractionLabelElementOptions | ... 5 more ... | PerseusInteractionRectangleElementOptions'. | TS2339 - Property 'value' does not exist on type 'PerseusInteractionFunctionElementOptions | PerseusInteractionLabelElementOptions | ... 5 more ... | PerseusInteractionRectangleElementOptions'.
|
|
805
|
-
variables[element.options.funcName] = element.options.value;
|
|
806
|
-
});
|
|
807
|
-
return variables;
|
|
808
|
-
};
|
|
809
|
-
|
|
810
|
-
const _getInitialFunctions: (
|
|
811
|
-
arg1: ReadonlyArray<PerseusInteractionElement>,
|
|
812
|
-
) => ReadonlyArray<string> = (elements) => {
|
|
813
|
-
return _.map(
|
|
814
|
-
_.where(elements, {type: "function"}),
|
|
815
|
-
// @ts-expect-error - TS2339 - Property 'funcName' does not exist on type 'PerseusInteractionFunctionElementOptions | PerseusInteractionLabelElementOptions | ... 5 more ... | PerseusInteractionRectangleElementOptions'.
|
|
816
|
-
(element) => element.options.funcName,
|
|
817
|
-
);
|
|
818
|
-
};
|
|
819
|
-
|
|
820
|
-
export default {
|
|
821
|
-
name: "interaction",
|
|
822
|
-
displayName: "Interaction",
|
|
823
|
-
widget: Interaction,
|
|
824
|
-
transform: _.identity,
|
|
825
|
-
hidden: true,
|
|
826
|
-
} as WidgetExports<typeof Interaction>;
|