@khanacademy/perseus 19.1.4 → 19.1.6
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/graphie.d.ts +9 -1
- package/dist/es/index.js +255 -122
- package/dist/es/index.js.map +1 -1
- package/dist/index.js +261 -126
- package/dist/index.js.map +1 -1
- package/dist/interactive2/interactive-util.d.ts +1 -1
- package/dist/interactive2/movable-point-options.d.ts +5 -4
- package/dist/interactive2/movable.d.ts +90 -13
- package/dist/interactive2/types.d.ts +6 -0
- package/dist/util/graphie.d.ts +5 -0
- package/dist/widgets/expression.d.ts +4 -4
- package/package.json +11 -8
- package/.babelrc.js +0 -8
- package/.eslintrc.js +0 -12
- package/CHANGELOG.md +0 -1422
- 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 -392
- 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 -43
- package/src/interactive2/__tests__/movable-point.test.ts +0 -144
- package/src/interactive2/__tests__/movable.test.ts +0 -157
- 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 -212
- 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.ts +0 -279
- package/src/interactive2/objective_.ts +0 -79
- package/src/interactive2/types.ts +0 -2
- 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 -1566
- package/src/util/interactive.ts +0 -4172
- 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
package/src/version.ts
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
// This file is processed by a Rollup plugin (replace) to inject the production
|
|
2
|
-
// version number during the release build.
|
|
3
|
-
// In dev, you'll never see the version number.
|
|
4
|
-
|
|
5
|
-
import {addLibraryVersionToPerseusDebug} from "@khanacademy/perseus-core";
|
|
6
|
-
|
|
7
|
-
const libName = "@khanacademy/perseus";
|
|
8
|
-
export const libVersion = "__lib_version__";
|
|
9
|
-
|
|
10
|
-
addLibraryVersionToPerseusDebug(libName, libVersion);
|
package/src/widget-container.tsx
DELETED
|
@@ -1,199 +0,0 @@
|
|
|
1
|
-
/* eslint-disable react/no-unsafe, react/sort-comp */
|
|
2
|
-
import {linterContextDefault} from "@khanacademy/perseus-linter";
|
|
3
|
-
import classNames from "classnames";
|
|
4
|
-
import * as React from "react";
|
|
5
|
-
import ReactDOM from "react-dom";
|
|
6
|
-
|
|
7
|
-
import {DependenciesContext} from "./dependencies";
|
|
8
|
-
import ErrorBoundary from "./error-boundary";
|
|
9
|
-
import {zIndexInteractiveComponent} from "./styles/constants";
|
|
10
|
-
import {containerSizeClass, getClassFromWidth} from "./util/sizing-utils";
|
|
11
|
-
import * as Widgets from "./widgets";
|
|
12
|
-
|
|
13
|
-
import type {PerseusWidgetOptions} from "./perseus-types";
|
|
14
|
-
import type {WidgetProps} from "./types";
|
|
15
|
-
import type {LinterContextProps} from "@khanacademy/perseus-linter";
|
|
16
|
-
|
|
17
|
-
type Props = {
|
|
18
|
-
shouldHighlight: boolean;
|
|
19
|
-
type: string; // widget type/name,
|
|
20
|
-
id: string; // widget id
|
|
21
|
-
initialProps: WidgetProps<any, PerseusWidgetOptions>;
|
|
22
|
-
linterContext: LinterContextProps;
|
|
23
|
-
};
|
|
24
|
-
|
|
25
|
-
type DefaultProps = {
|
|
26
|
-
linterContext: LinterContextProps;
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
type State = {
|
|
30
|
-
sizeClass: "small" | "medium" | "large" | "xlarge";
|
|
31
|
-
widgetProps: WidgetProps<any, PerseusWidgetOptions>;
|
|
32
|
-
};
|
|
33
|
-
|
|
34
|
-
class WidgetContainer extends React.Component<Props, State> {
|
|
35
|
-
widgetRef = React.createRef<React.ComponentType<any>>();
|
|
36
|
-
|
|
37
|
-
static defaultProps: DefaultProps = {
|
|
38
|
-
linterContext: linterContextDefault,
|
|
39
|
-
};
|
|
40
|
-
|
|
41
|
-
state: any = {
|
|
42
|
-
// TODO(benkomalo): before we're mounted, we don't know how big
|
|
43
|
-
// we're going to be, so just default to MEDIUM for now. :/ In the
|
|
44
|
-
// future we can sniff with user-agents or something to get a
|
|
45
|
-
// better approximation, to avoid flickers
|
|
46
|
-
sizeClass: containerSizeClass.MEDIUM,
|
|
47
|
-
widgetProps: this.props.initialProps,
|
|
48
|
-
};
|
|
49
|
-
|
|
50
|
-
componentDidMount() {
|
|
51
|
-
// Only relay size class changes for mobile right now. We may want to
|
|
52
|
-
// this for desktop as well at some point in the future.
|
|
53
|
-
if (this.state.widgetProps.apiOptions.isMobile) {
|
|
54
|
-
// @ts-expect-error - TS2531 - Object is possibly 'null'. | TS2339 - Property 'offsetWidth' does not exist on type 'Element | Text'.
|
|
55
|
-
const containerWidth = ReactDOM.findDOMNode(this).offsetWidth;
|
|
56
|
-
|
|
57
|
-
// NOTE(benkomalo): in the common case, this won't change anything.
|
|
58
|
-
// Unfortunately, it will cause a flash and re-layout on mobile,
|
|
59
|
-
// but until we have better SSR or a more drastic way change to our
|
|
60
|
-
// APIs that hints at the available size, we do have to measure DOM
|
|
61
|
-
// unfortunately.
|
|
62
|
-
/* eslint-disable react/no-did-mount-set-state */
|
|
63
|
-
this.setState({
|
|
64
|
-
sizeClass: getClassFromWidth(containerWidth),
|
|
65
|
-
});
|
|
66
|
-
/* eslint-enable react/no-did-mount-set-state */
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
render(): React.ReactNode {
|
|
71
|
-
let className = classNames({
|
|
72
|
-
"perseus-widget-container": true,
|
|
73
|
-
"widget-highlight": this.props.shouldHighlight,
|
|
74
|
-
"widget-nohighlight": !this.props.shouldHighlight,
|
|
75
|
-
// HACK(matthewc): perseus-widget-container is setting a font-size
|
|
76
|
-
// but we want the definition prompt to match the surrounding font
|
|
77
|
-
// I'm sorry, but there's a time crunch
|
|
78
|
-
"perseus-widget__definition": this.props.type === "definition",
|
|
79
|
-
});
|
|
80
|
-
|
|
81
|
-
const type = this.props.type;
|
|
82
|
-
const WidgetType = Widgets.getWidget(type);
|
|
83
|
-
if (WidgetType == null) {
|
|
84
|
-
// This is for the good of all people!!
|
|
85
|
-
// eslint-disable-next-line no-console
|
|
86
|
-
console.warn(`Widget type '${type}' not found!`);
|
|
87
|
-
// Just give up on invalid widget types
|
|
88
|
-
return <div className={className} />;
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
let alignment = this.state.widgetProps.alignment;
|
|
92
|
-
if (alignment === "default") {
|
|
93
|
-
alignment = Widgets.getDefaultAlignment(type);
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
className += " widget-" + alignment;
|
|
97
|
-
|
|
98
|
-
const apiOptions = this.state.widgetProps.apiOptions;
|
|
99
|
-
|
|
100
|
-
// Hack to prevent interaction with static widgets: we overlay a big
|
|
101
|
-
// div on top of the widget and overflow: hidden the container.
|
|
102
|
-
// Ideally widgets themselves should know how to prevent interaction.
|
|
103
|
-
const isStatic = this.state.widgetProps.static || apiOptions.readOnly;
|
|
104
|
-
const staticContainerStyles = {
|
|
105
|
-
position: "relative",
|
|
106
|
-
overflow: "visible",
|
|
107
|
-
} as const;
|
|
108
|
-
const staticOverlayStyles = {
|
|
109
|
-
width: "100%",
|
|
110
|
-
height: "100%",
|
|
111
|
-
position: "absolute",
|
|
112
|
-
top: 0,
|
|
113
|
-
left: 0,
|
|
114
|
-
zIndex: zIndexInteractiveComponent,
|
|
115
|
-
} as const;
|
|
116
|
-
|
|
117
|
-
// Some widgets may include strings of markdown that we may
|
|
118
|
-
// want to run the linter on. So if the widget is lintable,
|
|
119
|
-
// and we've been asked to highlight lint, pass that property
|
|
120
|
-
// on to the widget, and if the content is not lintable, make sure
|
|
121
|
-
// to default to false.
|
|
122
|
-
// The linter context might be a constant object (and it isn't owned
|
|
123
|
-
// by us anyway), so we copy it if we have to modify it.
|
|
124
|
-
const linterContext = Widgets.isLintable(type)
|
|
125
|
-
? this.props.linterContext
|
|
126
|
-
: {...this.props.linterContext, highlightLint: false};
|
|
127
|
-
|
|
128
|
-
// Note: if you add more props here, please consider whether or not
|
|
129
|
-
// it should be auto-serialized (e.g. used in scoreInput()). See
|
|
130
|
-
// widget-jsonify-deprecated.jsx and widget-prop-denylist.jsx
|
|
131
|
-
|
|
132
|
-
// We default to an empty object for style instead of null
|
|
133
|
-
// because of a strange bug where the static styles aren't applied
|
|
134
|
-
// after toggling static mode.
|
|
135
|
-
return (
|
|
136
|
-
<div
|
|
137
|
-
className={className}
|
|
138
|
-
style={isStatic ? staticContainerStyles : {}}
|
|
139
|
-
>
|
|
140
|
-
<DependenciesContext.Consumer>
|
|
141
|
-
{({analytics}) => (
|
|
142
|
-
<ErrorBoundary
|
|
143
|
-
metadata={{
|
|
144
|
-
widget_type: type,
|
|
145
|
-
widget_id: this.props.id,
|
|
146
|
-
}}
|
|
147
|
-
onError={() => {
|
|
148
|
-
analytics.onAnalyticsEvent({
|
|
149
|
-
type: "perseus:widget-rendering-error",
|
|
150
|
-
payload: {
|
|
151
|
-
widgetType: type,
|
|
152
|
-
widgetId: this.props.id,
|
|
153
|
-
},
|
|
154
|
-
});
|
|
155
|
-
}}
|
|
156
|
-
>
|
|
157
|
-
<WidgetType
|
|
158
|
-
{...this.state.widgetProps}
|
|
159
|
-
linterContext={linterContext}
|
|
160
|
-
containerSizeClass={this.state.sizeClass}
|
|
161
|
-
ref={this.widgetRef}
|
|
162
|
-
/>
|
|
163
|
-
{isStatic && <div style={staticOverlayStyles} />}
|
|
164
|
-
</ErrorBoundary>
|
|
165
|
-
)}
|
|
166
|
-
</DependenciesContext.Consumer>
|
|
167
|
-
</div>
|
|
168
|
-
);
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
UNSAFE_componentWillReceiveProps(nextProps: Props) {
|
|
172
|
-
if (this.props.type !== nextProps.type) {
|
|
173
|
-
throw new Error(
|
|
174
|
-
"WidgetContainer can't change widget type; set a different " +
|
|
175
|
-
"key instead to recreate the container.",
|
|
176
|
-
);
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
shouldComponentUpdate(nextProps: Props, nextState: State): boolean {
|
|
181
|
-
return (
|
|
182
|
-
this.props.shouldHighlight !== nextProps.shouldHighlight ||
|
|
183
|
-
this.props.type !== nextProps.type ||
|
|
184
|
-
this.state.widgetProps !== nextState.widgetProps ||
|
|
185
|
-
this.state.sizeClass !== nextState.sizeClass
|
|
186
|
-
);
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
getWidget: () => any = () => {
|
|
190
|
-
return this.widgetRef.current;
|
|
191
|
-
};
|
|
192
|
-
|
|
193
|
-
replaceWidgetProps: (arg1: WidgetProps<any, PerseusWidgetOptions>) => void =
|
|
194
|
-
(newWidgetProps) => {
|
|
195
|
-
this.setState({widgetProps: newWidgetProps});
|
|
196
|
-
};
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
export default WidgetContainer;
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
|
|
3
|
-
import {RendererWithDebugUI} from "../../../../../testing/renderer-with-debug-ui";
|
|
4
|
-
import {question1} from "../__testdata__/categorizer.testdata";
|
|
5
|
-
|
|
6
|
-
export default {
|
|
7
|
-
title: "Perseus/Widgets/Categorizer",
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
type StoryArgs = Record<any, any>;
|
|
11
|
-
|
|
12
|
-
export const Question1 = (args: StoryArgs): React.ReactElement => {
|
|
13
|
-
return <RendererWithDebugUI question={question1} />;
|
|
14
|
-
};
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
|
|
3
|
-
import {RendererWithDebugUI} from "../../../../../testing/renderer-with-debug-ui";
|
|
4
|
-
import {question1} from "../__testdata__/cs-program.testdata";
|
|
5
|
-
|
|
6
|
-
export default {
|
|
7
|
-
title: "Perseus/Widgets/CS Program",
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
type StoryArgs = Record<any, any>;
|
|
11
|
-
|
|
12
|
-
export const Question1 = (args: StoryArgs): React.ReactElement => {
|
|
13
|
-
return <RendererWithDebugUI question={question1} />;
|
|
14
|
-
};
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
|
|
3
|
-
import {RendererWithDebugUI} from "../../../../../testing/renderer-with-debug-ui";
|
|
4
|
-
import {storybookDependenciesV2} from "../../../../../testing/test-dependencies";
|
|
5
|
-
import ArticleRenderer from "../../article-renderer";
|
|
6
|
-
|
|
7
|
-
export default {
|
|
8
|
-
title: "Perseus/Widgets/Definition",
|
|
9
|
-
};
|
|
10
|
-
|
|
11
|
-
const question1 = {
|
|
12
|
-
content:
|
|
13
|
-
"Read the excerpt and answer the question below. \n\nThe Governor and Council of the Massachusetts had much conference many days; and at last . . . . concluded a peace and friendship with [[\u2603 definition 1]], upon these conditions.",
|
|
14
|
-
images: {},
|
|
15
|
-
widgets: {
|
|
16
|
-
"definition 1": {
|
|
17
|
-
graded: true,
|
|
18
|
-
version: {
|
|
19
|
-
major: 0,
|
|
20
|
-
minor: 0,
|
|
21
|
-
},
|
|
22
|
-
static: false,
|
|
23
|
-
type: "definition",
|
|
24
|
-
options: {
|
|
25
|
-
definition:
|
|
26
|
-
"A Native American people in Connecticut; white settlers in New England, the Pequots, and their respective allies were at war from 1636-1638.",
|
|
27
|
-
togglePrompt: "the Pequots",
|
|
28
|
-
static: false,
|
|
29
|
-
},
|
|
30
|
-
alignment: "default",
|
|
31
|
-
},
|
|
32
|
-
},
|
|
33
|
-
} as const;
|
|
34
|
-
|
|
35
|
-
const question2 = {
|
|
36
|
-
content:
|
|
37
|
-
"Read the excerpt and answer the question below. \n\nThe [[\u2603 definition 2]] and Council of the Massachusetts had much conference many days; and at last . . . . concluded a peace and friendship with [[\u2603 definition 1]], upon these conditions.",
|
|
38
|
-
images: {},
|
|
39
|
-
widgets: {
|
|
40
|
-
"definition 1": {
|
|
41
|
-
graded: true,
|
|
42
|
-
version: {
|
|
43
|
-
major: 0,
|
|
44
|
-
minor: 0,
|
|
45
|
-
},
|
|
46
|
-
static: false,
|
|
47
|
-
type: "definition",
|
|
48
|
-
options: {
|
|
49
|
-
definition:
|
|
50
|
-
"A Native American people in Connecticut; white settlers in New England, the Pequots, and their respective allies were at war from 1636-1638.",
|
|
51
|
-
togglePrompt: "the Pequots",
|
|
52
|
-
static: false,
|
|
53
|
-
},
|
|
54
|
-
alignment: "default",
|
|
55
|
-
},
|
|
56
|
-
"definition 2": {
|
|
57
|
-
graded: true,
|
|
58
|
-
version: {
|
|
59
|
-
major: 0,
|
|
60
|
-
minor: 0,
|
|
61
|
-
},
|
|
62
|
-
static: false,
|
|
63
|
-
type: "definition",
|
|
64
|
-
options: {
|
|
65
|
-
definition:
|
|
66
|
-
"A governor is an administrative leader and head of a polity or political region, ranking under the head of state and in some cases, such as governors-general, as the head of state's official representative.",
|
|
67
|
-
togglePrompt: "Governor",
|
|
68
|
-
static: false,
|
|
69
|
-
},
|
|
70
|
-
alignment: "default",
|
|
71
|
-
},
|
|
72
|
-
},
|
|
73
|
-
} as const;
|
|
74
|
-
|
|
75
|
-
const article = {
|
|
76
|
-
content:
|
|
77
|
-
"###Backstory\n\nDuring World War II, in August of 1943, the [[☃ definition 1]] launched a massive bombing campaign on Milan and its outskirts. The explosions and the ensuing fires killed over 700 people and destroyed many of the city’s most important buildings and monuments, including a significant portion of Santa Maria delle Grazie. Miraculously, the wall with the painting survived, probably because it had been shored up with sandbags and mattresses, but the roof of the refectory was blown off and the other walls were decimated. The _Last Supper_ remained exposed to the elements, covered only with a tarp, for several months, until the refectory (the dining room of the monastery where the _Last Supper_ was painted), was rebuilt and a team of restorers began working to preserve and restore the painting.",
|
|
78
|
-
images: {},
|
|
79
|
-
widgets: {
|
|
80
|
-
"definition 1": {
|
|
81
|
-
alignment: "default",
|
|
82
|
-
graded: true,
|
|
83
|
-
options: {
|
|
84
|
-
definition:
|
|
85
|
-
"The Allies, led by the United Kingdom, the United States, and the Soviet Union, were the group of countries who opposed the Axis powers (Germany, Japan, and Italy) during World War II.",
|
|
86
|
-
static: false,
|
|
87
|
-
togglePrompt: "Allies",
|
|
88
|
-
},
|
|
89
|
-
static: false,
|
|
90
|
-
type: "definition",
|
|
91
|
-
version: {major: 0, minor: 0},
|
|
92
|
-
},
|
|
93
|
-
},
|
|
94
|
-
} as const;
|
|
95
|
-
|
|
96
|
-
type StoryArgs = Record<any, any>;
|
|
97
|
-
|
|
98
|
-
export const Question1 = (args: StoryArgs): React.ReactElement => {
|
|
99
|
-
return <RendererWithDebugUI question={question1} />;
|
|
100
|
-
};
|
|
101
|
-
|
|
102
|
-
export const MultipleDefinitions = (args: StoryArgs): React.ReactElement => {
|
|
103
|
-
return <RendererWithDebugUI question={question2} />;
|
|
104
|
-
};
|
|
105
|
-
|
|
106
|
-
export const ArticleDefintion = (args: StoryArgs): React.ReactElement => {
|
|
107
|
-
return (
|
|
108
|
-
<ArticleRenderer
|
|
109
|
-
json={article}
|
|
110
|
-
useNewStyles
|
|
111
|
-
dependencies={storybookDependenciesV2}
|
|
112
|
-
/>
|
|
113
|
-
);
|
|
114
|
-
};
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
|
|
3
|
-
import {RendererWithDebugUI} from "../../../../../testing/renderer-with-debug-ui";
|
|
4
|
-
import {question1} from "../__testdata__/dropdown.testdata";
|
|
5
|
-
|
|
6
|
-
export default {
|
|
7
|
-
title: "Perseus/Widgets/Dropdown",
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
type StoryArgs = Record<any, any>;
|
|
11
|
-
|
|
12
|
-
export const Question1 = (args: StoryArgs): React.ReactElement => {
|
|
13
|
-
return <RendererWithDebugUI question={question1} />;
|
|
14
|
-
};
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
|
|
3
|
-
import {RendererWithDebugUI} from "../../../../../testing/renderer-with-debug-ui";
|
|
4
|
-
import {question1, question2} from "../__testdata__/explanation.testdata";
|
|
5
|
-
|
|
6
|
-
export default {
|
|
7
|
-
title: "Perseus/Widgets/Explanation",
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
type StoryArgs = Record<any, any>;
|
|
11
|
-
|
|
12
|
-
export const Question1 = (args: StoryArgs): React.ReactElement => {
|
|
13
|
-
return <RendererWithDebugUI question={question1} />;
|
|
14
|
-
};
|
|
15
|
-
|
|
16
|
-
export const Question2 = (args: StoryArgs): React.ReactElement => {
|
|
17
|
-
return <RendererWithDebugUI question={question2} />;
|
|
18
|
-
};
|
|
@@ -1,145 +0,0 @@
|
|
|
1
|
-
import {KeypadContext, KeypadType} from "@khanacademy/math-input";
|
|
2
|
-
import {action} from "@storybook/addon-actions";
|
|
3
|
-
import * as React from "react";
|
|
4
|
-
|
|
5
|
-
import {ServerItemRendererWithDebugUI} from "../../../../../testing/server-item-renderer-with-debug-ui";
|
|
6
|
-
import {
|
|
7
|
-
expressionItem2,
|
|
8
|
-
expressionItem3,
|
|
9
|
-
} from "../__testdata__/expression.testdata";
|
|
10
|
-
import expressionExport from "../expression";
|
|
11
|
-
|
|
12
|
-
import TestKeypadContextWrapper from "./test-keypad-context-wrapper";
|
|
13
|
-
|
|
14
|
-
import type {LegacyButtonSets, PerseusItem} from "../../perseus-types";
|
|
15
|
-
import type {Keys as Key} from "@khanacademy/math-input";
|
|
16
|
-
|
|
17
|
-
type StoryArgs = {
|
|
18
|
-
customKeypad: boolean;
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
type Story = {
|
|
22
|
-
title: string;
|
|
23
|
-
argTypes: any;
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
type WrappedKeypadContextProps = {
|
|
27
|
-
item: PerseusItem;
|
|
28
|
-
customKeypad: boolean;
|
|
29
|
-
isMobile?: boolean;
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
const WrappedKeypadContext = ({
|
|
33
|
-
item,
|
|
34
|
-
customKeypad,
|
|
35
|
-
isMobile = false,
|
|
36
|
-
}: WrappedKeypadContextProps) => {
|
|
37
|
-
return (
|
|
38
|
-
<TestKeypadContextWrapper>
|
|
39
|
-
<KeypadContext.Consumer>
|
|
40
|
-
{({keypadElement}) => {
|
|
41
|
-
return (
|
|
42
|
-
<ServerItemRendererWithDebugUI
|
|
43
|
-
item={item}
|
|
44
|
-
keypadElement={keypadElement}
|
|
45
|
-
// Hardcoding the V2 Keypad to true as the Storybook Args
|
|
46
|
-
// were not working.
|
|
47
|
-
apiOptions={{
|
|
48
|
-
isMobile: isMobile,
|
|
49
|
-
customKeypad: customKeypad,
|
|
50
|
-
onFocusChange: action("onFocusChange"),
|
|
51
|
-
}}
|
|
52
|
-
/>
|
|
53
|
-
);
|
|
54
|
-
}}
|
|
55
|
-
</KeypadContext.Consumer>
|
|
56
|
-
</TestKeypadContextWrapper>
|
|
57
|
-
);
|
|
58
|
-
};
|
|
59
|
-
|
|
60
|
-
export const DesktopKitchenSink = (args: StoryArgs): React.ReactElement => {
|
|
61
|
-
const reviewModeRubric = {
|
|
62
|
-
functions: ["f", "g", "h"],
|
|
63
|
-
times: true,
|
|
64
|
-
answerForms: [],
|
|
65
|
-
buttonSets: [
|
|
66
|
-
"basic",
|
|
67
|
-
"basic+div",
|
|
68
|
-
"trig",
|
|
69
|
-
"prealgebra",
|
|
70
|
-
"logarithms",
|
|
71
|
-
"basic relations",
|
|
72
|
-
"advanced relations",
|
|
73
|
-
] as LegacyButtonSets,
|
|
74
|
-
};
|
|
75
|
-
|
|
76
|
-
const keypadConfiguration = {
|
|
77
|
-
keypadType: KeypadType.EXPRESSION,
|
|
78
|
-
extraKeys: ["x", "y", "z"] as Array<Key>,
|
|
79
|
-
};
|
|
80
|
-
|
|
81
|
-
return (
|
|
82
|
-
<div style={{padding: "2rem"}}>
|
|
83
|
-
<expressionExport.widget
|
|
84
|
-
alignment={null}
|
|
85
|
-
value=""
|
|
86
|
-
containerSizeClass="small"
|
|
87
|
-
findWidgets={(callback) => []}
|
|
88
|
-
isLastUsedWidget={false}
|
|
89
|
-
onChange={() => {}}
|
|
90
|
-
problemNum={1}
|
|
91
|
-
static={false}
|
|
92
|
-
trackInteraction={() => {}}
|
|
93
|
-
widgetId="expression"
|
|
94
|
-
reviewModeRubric={reviewModeRubric}
|
|
95
|
-
keypadConfiguration={keypadConfiguration}
|
|
96
|
-
/>
|
|
97
|
-
</div>
|
|
98
|
-
);
|
|
99
|
-
};
|
|
100
|
-
|
|
101
|
-
export const Desktop = (args: StoryArgs): React.ReactElement => {
|
|
102
|
-
return <WrappedKeypadContext item={expressionItem3} customKeypad={false} />;
|
|
103
|
-
};
|
|
104
|
-
|
|
105
|
-
export const Mobile = (args: StoryArgs): React.ReactElement => {
|
|
106
|
-
return (
|
|
107
|
-
<div>
|
|
108
|
-
<p>
|
|
109
|
-
MathInput uses touch events;{" "}
|
|
110
|
-
<a href="https://developer.chrome.com/docs/devtools/device-mode/">
|
|
111
|
-
emulate mobile
|
|
112
|
-
</a>{" "}
|
|
113
|
-
to use the custom keypad.
|
|
114
|
-
</p>
|
|
115
|
-
<WrappedKeypadContext
|
|
116
|
-
item={expressionItem3}
|
|
117
|
-
customKeypad
|
|
118
|
-
isMobile
|
|
119
|
-
/>
|
|
120
|
-
</div>
|
|
121
|
-
);
|
|
122
|
-
};
|
|
123
|
-
|
|
124
|
-
export const ExpressionItem2 = (args: StoryArgs): React.ReactElement => {
|
|
125
|
-
return (
|
|
126
|
-
<WrappedKeypadContext
|
|
127
|
-
item={expressionItem2}
|
|
128
|
-
customKeypad={args.customKeypad}
|
|
129
|
-
/>
|
|
130
|
-
);
|
|
131
|
-
};
|
|
132
|
-
|
|
133
|
-
export const ExpressionItem3 = (args: StoryArgs): React.ReactElement => {
|
|
134
|
-
return (
|
|
135
|
-
<WrappedKeypadContext
|
|
136
|
-
item={expressionItem3}
|
|
137
|
-
customKeypad={args.customKeypad}
|
|
138
|
-
/>
|
|
139
|
-
);
|
|
140
|
-
};
|
|
141
|
-
|
|
142
|
-
export default {
|
|
143
|
-
title: "Perseus/Widgets/Expression",
|
|
144
|
-
argTypes: {customKeypad: {control: "boolean"}},
|
|
145
|
-
} as Story;
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
|
|
3
|
-
import {RendererWithDebugUI} from "../../../../../testing/renderer-with-debug-ui";
|
|
4
|
-
import {article1} from "../__testdata__/graded-group-set.testdata";
|
|
5
|
-
|
|
6
|
-
type StoryArgs = {
|
|
7
|
-
isMobile: boolean;
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
type GradedGroupSetStory = {
|
|
11
|
-
title: string;
|
|
12
|
-
args: StoryArgs;
|
|
13
|
-
};
|
|
14
|
-
|
|
15
|
-
export const Article1 = (args: StoryArgs): React.ReactElement => {
|
|
16
|
-
return (
|
|
17
|
-
<RendererWithDebugUI
|
|
18
|
-
apiOptions={{
|
|
19
|
-
isMobile: args.isMobile,
|
|
20
|
-
}}
|
|
21
|
-
question={article1}
|
|
22
|
-
/>
|
|
23
|
-
);
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
export default {
|
|
27
|
-
title: "Perseus/Widgets/Graded Group Set",
|
|
28
|
-
args: {
|
|
29
|
-
isMobile: false,
|
|
30
|
-
},
|
|
31
|
-
} as GradedGroupSetStory;
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
|
|
3
|
-
import {RendererWithDebugUI} from "../../../../../testing/renderer-with-debug-ui";
|
|
4
|
-
import {question1} from "../__testdata__/graded-group.testdata";
|
|
5
|
-
|
|
6
|
-
type StoryArgs = {
|
|
7
|
-
isMobile: boolean;
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
type Story = {
|
|
11
|
-
title: string;
|
|
12
|
-
args: StoryArgs;
|
|
13
|
-
};
|
|
14
|
-
|
|
15
|
-
export const Question1 = (args: StoryArgs): React.ReactElement => {
|
|
16
|
-
return (
|
|
17
|
-
<RendererWithDebugUI
|
|
18
|
-
question={question1}
|
|
19
|
-
apiOptions={{
|
|
20
|
-
isMobile: args.isMobile,
|
|
21
|
-
}}
|
|
22
|
-
/>
|
|
23
|
-
);
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
export default {
|
|
27
|
-
title: "Perseus/Widgets/Graded Group",
|
|
28
|
-
args: {
|
|
29
|
-
isMobile: false,
|
|
30
|
-
},
|
|
31
|
-
} as Story;
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
|
|
3
|
-
import {RendererWithDebugUI} from "../../../../../testing/renderer-with-debug-ui";
|
|
4
|
-
import {
|
|
5
|
-
absoluteValueQuestion,
|
|
6
|
-
multipleAvailableTypesQuestion,
|
|
7
|
-
exponentialQuestion,
|
|
8
|
-
linearQuestion,
|
|
9
|
-
logarithmQuestion,
|
|
10
|
-
quadraticQuestion,
|
|
11
|
-
sinusoidQuestion,
|
|
12
|
-
} from "../__testdata__/grapher.testdata";
|
|
13
|
-
|
|
14
|
-
export default {
|
|
15
|
-
title: "Perseus/Widgets/Grapher",
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
type StoryArgs = Record<any, any>;
|
|
19
|
-
|
|
20
|
-
export const AbsoluteValueQuestion = (args: StoryArgs): React.ReactElement => {
|
|
21
|
-
return <RendererWithDebugUI question={absoluteValueQuestion} />;
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
export const ExponentialQuestion = (args: StoryArgs): React.ReactElement => {
|
|
25
|
-
return <RendererWithDebugUI question={exponentialQuestion} />;
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
export const LinearQuestion = (args: StoryArgs): React.ReactElement => {
|
|
29
|
-
return <RendererWithDebugUI question={linearQuestion} />;
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
export const LogarithmQuestion = (args: StoryArgs): React.ReactElement => {
|
|
33
|
-
return <RendererWithDebugUI question={logarithmQuestion} />;
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
export const QuadraticQuestion = (args: StoryArgs): React.ReactElement => {
|
|
37
|
-
return <RendererWithDebugUI question={quadraticQuestion} />;
|
|
38
|
-
};
|
|
39
|
-
|
|
40
|
-
export const SinusoidQuestion = (args: StoryArgs): React.ReactElement => {
|
|
41
|
-
return <RendererWithDebugUI question={sinusoidQuestion} />;
|
|
42
|
-
};
|
|
43
|
-
|
|
44
|
-
export const ComplexQuestion = (args: StoryArgs): React.ReactElement => {
|
|
45
|
-
return <RendererWithDebugUI question={multipleAvailableTypesQuestion} />;
|
|
46
|
-
};
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
|
|
3
|
-
import {RendererWithDebugUI} from "../../../../../testing/renderer-with-debug-ui";
|
|
4
|
-
import {question1} from "../__testdata__/group.testdata";
|
|
5
|
-
|
|
6
|
-
export default {
|
|
7
|
-
title: "Perseus/Widgets/Group",
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
type StoryArgs = Record<any, any>;
|
|
11
|
-
|
|
12
|
-
export const Question1 = (args: StoryArgs): React.ReactElement => {
|
|
13
|
-
return <RendererWithDebugUI question={question1} />;
|
|
14
|
-
};
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
|
|
3
|
-
import {RendererWithDebugUI} from "../../../../../testing/renderer-with-debug-ui";
|
|
4
|
-
import {question1} from "../__testdata__/iframe.testdata";
|
|
5
|
-
|
|
6
|
-
export default {
|
|
7
|
-
title: "Perseus/Widgets/IFrame",
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
type StoryArgs = Record<any, any>;
|
|
11
|
-
|
|
12
|
-
export const Question1 = (args: StoryArgs): React.ReactElement => {
|
|
13
|
-
return <RendererWithDebugUI question={question1} />;
|
|
14
|
-
};
|