@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
package/src/perseus-types.ts
DELETED
|
@@ -1,1366 +0,0 @@
|
|
|
1
|
-
// TODO(FEI-4010): Remove `Perseus` prefix for all types here
|
|
2
|
-
// TODO(FEI-4011): Use types generated by https://github.com/jaredly/generate-perseus-flowtypes
|
|
3
|
-
|
|
4
|
-
import type {Coord} from "./interactive2/types";
|
|
5
|
-
|
|
6
|
-
export type Range = [number, number];
|
|
7
|
-
export type Size = [number, number];
|
|
8
|
-
|
|
9
|
-
// TODO(FEI-5054): Figure out how to get global .d.ts files working with monorepos
|
|
10
|
-
type Empty = Record<never, never>;
|
|
11
|
-
|
|
12
|
-
export type PerseusItem = {
|
|
13
|
-
// The details of the question being asked to the user.
|
|
14
|
-
question: PerseusRenderer;
|
|
15
|
-
// A collection of hints to be offered to the user that support answering the question.
|
|
16
|
-
hints: ReadonlyArray<PerseusRenderer>;
|
|
17
|
-
// Details about the tools the user might need to answer the question
|
|
18
|
-
answerArea: PerseusAnswerArea | null | undefined;
|
|
19
|
-
// Multi-item should only show up in Test Prep content and it is a variant of a PerseusItem
|
|
20
|
-
_multi: any;
|
|
21
|
-
// The version of the item. Not used by Perseus
|
|
22
|
-
itemDataVersion: Version;
|
|
23
|
-
// Deprecated field
|
|
24
|
-
answer: any;
|
|
25
|
-
};
|
|
26
|
-
|
|
27
|
-
export type PerseusArticle = ReadonlyArray<PerseusRenderer>;
|
|
28
|
-
|
|
29
|
-
export type Version = {
|
|
30
|
-
// The major part of the version
|
|
31
|
-
major: number;
|
|
32
|
-
// The minor part of the version
|
|
33
|
-
minor: number;
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
export type PerseusRenderer = {
|
|
37
|
-
// Translatable Markdown content to be rendered. May include references to
|
|
38
|
-
// widgets (as [[☃ widgetName]]) or images (as ).
|
|
39
|
-
// For each image found in this content, there can be an entry in the
|
|
40
|
-
// `images` dict (below) with the key being the image's url which defines
|
|
41
|
-
// additional attributes for the image.
|
|
42
|
-
content: string;
|
|
43
|
-
// A dictionary of {[widgetName]: Widget} to be referenced from the content field
|
|
44
|
-
widgets: {
|
|
45
|
-
[key: string]: PerseusWidget;
|
|
46
|
-
};
|
|
47
|
-
// Used only for PerseusItem.hints. If true, it replaces the previous hint in the list with the current one. This allows for hints that build upon each other.
|
|
48
|
-
replace?: boolean;
|
|
49
|
-
// Used in the PerseusGradedGroup widget. A list of "tags" that are keys that represent other content in the system. Not rendered to the user.
|
|
50
|
-
// NOTE: perseus_data.go says this is required even though it isn't necessary.
|
|
51
|
-
metadata?: ReadonlyArray<string>;
|
|
52
|
-
// A dictionary of {[imageUrl]: PerseusImageDetail}.
|
|
53
|
-
images: {
|
|
54
|
-
[key: string]: PerseusImageDetail;
|
|
55
|
-
};
|
|
56
|
-
};
|
|
57
|
-
|
|
58
|
-
export type PerseusImageDetail = {
|
|
59
|
-
// The width of the image
|
|
60
|
-
width: number;
|
|
61
|
-
// the height of the image
|
|
62
|
-
height: number;
|
|
63
|
-
};
|
|
64
|
-
|
|
65
|
-
export const ItemExtras = [
|
|
66
|
-
// The user might benefit from using a Scientific Calculator. Provided on Khan Academy when true
|
|
67
|
-
"calculator",
|
|
68
|
-
// The user might benefit from using a statistics Chi Squared Table like https://people.richland.edu/james/lecture/m170/tbl-chi.html
|
|
69
|
-
"chi2Table",
|
|
70
|
-
// The user might benefit from a monthly payments calculator. Provided on Khan Academy when true
|
|
71
|
-
"financialCalculatorMonthlyPayment",
|
|
72
|
-
// The user might benefit from a total amount calculator. Provided on Khan Academy when true
|
|
73
|
-
"financialCalculatorTotalAmount",
|
|
74
|
-
// The user might benefit from a time to pay off calculator. Provided on Khan Academy when true
|
|
75
|
-
"financialCalculatorTimeToPayOff",
|
|
76
|
-
// The user might benefit from using a Periodic Table of Elements. Provided on Khan Academy when true
|
|
77
|
-
"periodicTable",
|
|
78
|
-
// The user might benefit from using a Periodic Table of Elements with key. Provided on Khan Academy when true
|
|
79
|
-
"periodicTableWithKey",
|
|
80
|
-
// The user might benefit from using a statistics T Table like https://www.statisticshowto.com/tables/t-distribution-table/
|
|
81
|
-
"tTable",
|
|
82
|
-
// The user might benefit from using a statistics Z Table like https://www.ztable.net/
|
|
83
|
-
"zTable",
|
|
84
|
-
] as const;
|
|
85
|
-
export type PerseusAnswerArea = Record<typeof ItemExtras[number], boolean>;
|
|
86
|
-
|
|
87
|
-
type Widget<Type extends string, Options> = {
|
|
88
|
-
// The "type" of widget which will define what the Options field looks like
|
|
89
|
-
type: Type;
|
|
90
|
-
// Whether this widget is displayed with the values and is immutable. For display only
|
|
91
|
-
// NOTE: perseus_data.go says this is required even though it isn't necessary.
|
|
92
|
-
static?: boolean;
|
|
93
|
-
// Whether a widget is scored. Usually true except for IFrame widgets (deprecated)
|
|
94
|
-
// Default: true
|
|
95
|
-
graded?: boolean;
|
|
96
|
-
// The HTML alignment of the widget. "default" or "block"
|
|
97
|
-
// NOTE: perseus_data.go says this is required even though it isn't necessary.
|
|
98
|
-
alignment?: string;
|
|
99
|
-
// Options specific to the type field of the widget. See Perseus*WidgetOptions for more details
|
|
100
|
-
options: Options;
|
|
101
|
-
// Only used by interactive child widgets (line, point, etc) to identify the components
|
|
102
|
-
// NOTE: perseus_data.go says this is required even though it isn't necessary.
|
|
103
|
-
key?: number;
|
|
104
|
-
// The version of the widget data spec. Used to differentiate between newer and older content data.
|
|
105
|
-
// NOTE: perseus_data.go says this is required even though it isn't necessary.
|
|
106
|
-
version?: Version;
|
|
107
|
-
};
|
|
108
|
-
|
|
109
|
-
// prettier-ignore
|
|
110
|
-
export type CategorizerWidget = Widget<'categorizer', PerseusCategorizerWidgetOptions>;
|
|
111
|
-
// prettier-ignore
|
|
112
|
-
export type CSProgramWidget = Widget<'cs-program', PerseusCSProgramWidgetOptions>;
|
|
113
|
-
// prettier-ignore
|
|
114
|
-
export type DefinitionWidget = Widget<'definition', PerseusDefinitionWidgetOptions>;
|
|
115
|
-
// prettier-ignore
|
|
116
|
-
export type DropdownWidget = Widget<'dropdown', PerseusDropdownWidgetOptions>;
|
|
117
|
-
// prettier-ignore
|
|
118
|
-
export type ExplanationWidget = Widget<'explanation', PerseusExplanationWidgetOptions>;
|
|
119
|
-
// prettier-ignore
|
|
120
|
-
export type ExpressionWidget = Widget<'expression', PerseusExpressionWidgetOptions>;
|
|
121
|
-
// prettier-ignore
|
|
122
|
-
export type GradedGroupSetWidget = Widget<'graded-group-set', PerseusGradedGroupSetWidgetOptions>;
|
|
123
|
-
// prettier-ignore
|
|
124
|
-
export type GradedGroupWidget = Widget<'graded-group', PerseusGradedGroupWidgetOptions>;
|
|
125
|
-
// prettier-ignore
|
|
126
|
-
export type GrapherWidget = Widget<'grapher', PerseusGrapherWidgetOptions>;
|
|
127
|
-
// prettier-ignore
|
|
128
|
-
export type GroupWidget = Widget<'group', PerseusGroupWidgetOptions>;
|
|
129
|
-
// prettier-ignore
|
|
130
|
-
export type IFrameWidget = Widget<'iframe', PerseusIFrameWidgetOptions>;
|
|
131
|
-
// prettier-ignore
|
|
132
|
-
export type ImageWidget = Widget<'image', PerseusImageWidgetOptions>;
|
|
133
|
-
// prettier-ignore
|
|
134
|
-
export type InteractionWidget = Widget<'interaction', PerseusInteractionWidgetOptions>;
|
|
135
|
-
// prettier-ignore
|
|
136
|
-
export type InteractiveGraphWidget = Widget<'interactive-graph', PerseusInteractiveGraphWidgetOptions>;
|
|
137
|
-
// prettier-ignore
|
|
138
|
-
export type LabelImageWidget = Widget<'label-image', PerseusLabelImageWidgetOptions>;
|
|
139
|
-
// prettier-ignore
|
|
140
|
-
export type MatcherWidget = Widget<'matcher', PerseusMatcherWidgetOptions>;
|
|
141
|
-
// prettier-ignore
|
|
142
|
-
export type MatrixWidget = Widget<'matrix', PerseusMatrixWidgetOptions>;
|
|
143
|
-
// prettier-ignore
|
|
144
|
-
export type MeasurerWidget = Widget<'measurer', PerseusMeasurerWidgetOptions>;
|
|
145
|
-
// prettier-ignore
|
|
146
|
-
export type NumberLineWidget = Widget<'number-line', PerseusNumberLineWidgetOptions>;
|
|
147
|
-
// prettier-ignore
|
|
148
|
-
export type NumericInputWidget = Widget<'numeric-input', PerseusNumericInputWidgetOptions>;
|
|
149
|
-
// prettier-ignore
|
|
150
|
-
export type OrdererWidget = Widget<'orderer', PerseusOrdererWidgetOptions>;
|
|
151
|
-
// prettier-ignore
|
|
152
|
-
export type PassageRefWidget = Widget<'passage-ref', PerseusPassageRefWidgetOptions>;
|
|
153
|
-
// prettier-ignore
|
|
154
|
-
export type PassageWidget = Widget<'passage', PerseusPassageWidgetOptions>;
|
|
155
|
-
// prettier-ignore
|
|
156
|
-
export type PlotterWidget = Widget<'plotter', PerseusPlotterWidgetOptions>;
|
|
157
|
-
// prettier-ignore
|
|
158
|
-
export type RadioWidget = Widget<'radio', PerseusRadioWidgetOptions>;
|
|
159
|
-
// prettier-ignore
|
|
160
|
-
export type SequenceWidget = Widget<'sequence', PerseusSequenceWidgetOptions>;
|
|
161
|
-
// prettier-ignore
|
|
162
|
-
export type SimulatorWidget = Widget<'simulator', PerseusSimulatorWidgetOptions>;
|
|
163
|
-
// prettier-ignore
|
|
164
|
-
export type SorterWidget = Widget<'sorter', PerseusSorterWidgetOptions>;
|
|
165
|
-
// prettier-ignore
|
|
166
|
-
export type TableWidget = Widget<'table', PerseusTableWidgetOptions>;
|
|
167
|
-
// prettier-ignore
|
|
168
|
-
export type ExampleGraphieWidget = Widget<'example-graphie-widget', PerseusExampleGraphieWidgetOptions>;
|
|
169
|
-
// prettier-ignore
|
|
170
|
-
export type ExampleWidget = Widget<'example-widget', PerseusExampleWidgetOptions>;
|
|
171
|
-
// prettier-ignore
|
|
172
|
-
export type InputNumberWidget = Widget<'input-number', PerseusInputNumberWidgetOptions>;
|
|
173
|
-
// prettier-ignore
|
|
174
|
-
export type LightsPuzzleWidget = Widget<'lights-puzzle', PerseusLightsPuzzleWidgetOptions>;
|
|
175
|
-
// prettier-ignore
|
|
176
|
-
export type MoleculeRendererWidget = Widget<'molecule-renderer', PerseusMoleculeRendererWidgetOptions>;
|
|
177
|
-
// prettier-ignore
|
|
178
|
-
export type RefTargetWidget = Widget<'passage-ref-target', PerseusPassageRefTargetWidgetOptions>;
|
|
179
|
-
// prettier-ignore
|
|
180
|
-
export type ReactionDiagramWidget = Widget<'reaction-diagtram', PerseusReactionDiagramWidgetOptions>;
|
|
181
|
-
// prettier-ignore
|
|
182
|
-
export type SimpleMarkdownTesterWidget = Widget<'simple-markdown-tester', PerseusSimpleMarkdownTesterWidgetOptions>;
|
|
183
|
-
// prettier-ignore
|
|
184
|
-
export type UnitInputWidget = Widget<'unit-input', PerseusUnitInputWidgetOptions>;
|
|
185
|
-
// prettier-ignore
|
|
186
|
-
export type VideoWidget = Widget<'video', PerseusVideoWidgetOptions>;
|
|
187
|
-
//prettier-ignore
|
|
188
|
-
export type AutoCorrectWidget = Widget<'deprecated-standin', PerseusWidgetOptions>;
|
|
189
|
-
|
|
190
|
-
export type PerseusWidget =
|
|
191
|
-
| CategorizerWidget
|
|
192
|
-
| CSProgramWidget
|
|
193
|
-
| DefinitionWidget
|
|
194
|
-
| DropdownWidget
|
|
195
|
-
| ExampleGraphieWidget
|
|
196
|
-
| ExampleWidget
|
|
197
|
-
| ExplanationWidget
|
|
198
|
-
| ExpressionWidget
|
|
199
|
-
| GradedGroupSetWidget
|
|
200
|
-
| GradedGroupWidget
|
|
201
|
-
| GrapherWidget
|
|
202
|
-
| GroupWidget
|
|
203
|
-
| IFrameWidget
|
|
204
|
-
| ImageWidget
|
|
205
|
-
| InputNumberWidget
|
|
206
|
-
| InteractionWidget
|
|
207
|
-
| InteractiveGraphWidget
|
|
208
|
-
| LabelImageWidget
|
|
209
|
-
| LightsPuzzleWidget
|
|
210
|
-
| MatcherWidget
|
|
211
|
-
| MatrixWidget
|
|
212
|
-
| MeasurerWidget
|
|
213
|
-
| MoleculeRendererWidget
|
|
214
|
-
| NumberLineWidget
|
|
215
|
-
| NumericInputWidget
|
|
216
|
-
| OrdererWidget
|
|
217
|
-
| PassageRefWidget
|
|
218
|
-
| PassageWidget
|
|
219
|
-
| PlotterWidget
|
|
220
|
-
| RadioWidget
|
|
221
|
-
| ReactionDiagramWidget
|
|
222
|
-
| RefTargetWidget
|
|
223
|
-
| SequenceWidget
|
|
224
|
-
| SimpleMarkdownTesterWidget
|
|
225
|
-
| SimulatorWidget
|
|
226
|
-
| SorterWidget
|
|
227
|
-
| TableWidget
|
|
228
|
-
| UnitInputWidget
|
|
229
|
-
| VideoWidget
|
|
230
|
-
| AutoCorrectWidget;
|
|
231
|
-
|
|
232
|
-
// A background image applied to various widgets.
|
|
233
|
-
export type PerseusImageBackground = {
|
|
234
|
-
// The URL of the image
|
|
235
|
-
url: string | null | undefined;
|
|
236
|
-
// The width of the image
|
|
237
|
-
width?: number;
|
|
238
|
-
// The height of the image
|
|
239
|
-
height?: number;
|
|
240
|
-
// The top offset of the image
|
|
241
|
-
// NOTE: perseus_data.go says this is required, but nullable, even though
|
|
242
|
-
// it isn't necessary at all.
|
|
243
|
-
top?: number;
|
|
244
|
-
// The left offset of the image
|
|
245
|
-
// NOTE: perseus_data.go says this is required, but nullable, even though
|
|
246
|
-
// it isn't necessary at all.
|
|
247
|
-
left?: number;
|
|
248
|
-
// The scale of the image
|
|
249
|
-
// NOTE: perseus_data.go says this is required, but nullable, even though
|
|
250
|
-
// it isn't necessary at all.
|
|
251
|
-
// Yikes, production data as this as both a number (1) and string ("1")
|
|
252
|
-
scale?: number | string;
|
|
253
|
-
// The bottom offset of the image
|
|
254
|
-
// NOTE: perseus_data.go says this is required, but nullable, even though
|
|
255
|
-
// it isn't necessary at all.
|
|
256
|
-
bottom?: number;
|
|
257
|
-
};
|
|
258
|
-
|
|
259
|
-
export type PerseusCategorizerWidgetOptions = {
|
|
260
|
-
// Translatable text; a list of items to categorize. e.g. ["banana", "yellow", "apple", "purple", "shirt"]
|
|
261
|
-
items: ReadonlyArray<string>;
|
|
262
|
-
// Translatable text; a list of categories. e.g. ["fruits", "colors", "clothing"]
|
|
263
|
-
categories: ReadonlyArray<string>;
|
|
264
|
-
// Whether the items should be randemized
|
|
265
|
-
randomizeItems: boolean;
|
|
266
|
-
// Whether this widget is displayed with the results and immutable
|
|
267
|
-
static: boolean;
|
|
268
|
-
// The correct answers where index relates to the items and value relates to the category. e.g. [0, 1, 0, 1, 2]
|
|
269
|
-
values: ReadonlyArray<number>;
|
|
270
|
-
// Whether we should highlight i18n linter errors found on this widget
|
|
271
|
-
highlightLint?: boolean;
|
|
272
|
-
// Internal editor configuration. Can be ignored by consumers.
|
|
273
|
-
linterContext?: PerseusLinterContext;
|
|
274
|
-
};
|
|
275
|
-
|
|
276
|
-
export type PerseusLinterContext = {
|
|
277
|
-
contentType: string;
|
|
278
|
-
paths: ReadonlyArray<string>;
|
|
279
|
-
stack: ReadonlyArray<string>;
|
|
280
|
-
};
|
|
281
|
-
|
|
282
|
-
export type PerseusDefinitionWidgetOptions = {
|
|
283
|
-
// Translatable text; the word to define. e.g. "vertex"
|
|
284
|
-
togglePrompt: string;
|
|
285
|
-
// Translatable text; the definition of the word. e.g. "where 2 rays connect"
|
|
286
|
-
definition: string;
|
|
287
|
-
// Always false. Not used for this widget
|
|
288
|
-
static: boolean;
|
|
289
|
-
};
|
|
290
|
-
|
|
291
|
-
export type PerseusDropdownWidgetOptions = {
|
|
292
|
-
// A list of choices for the dropdown
|
|
293
|
-
choices: ReadonlyArray<PerseusDropdownChoice>;
|
|
294
|
-
// Translatable Text; placeholder text for a dropdown. e.g. "Please select a fruit"
|
|
295
|
-
placeholder: string;
|
|
296
|
-
// Always false. Not used for this widget
|
|
297
|
-
static: boolean;
|
|
298
|
-
};
|
|
299
|
-
|
|
300
|
-
export type PerseusDropdownChoice = {
|
|
301
|
-
// Translatable text; The text for the option. e.g. "Banana" or "Orange"
|
|
302
|
-
content: string;
|
|
303
|
-
// Whether this is the correct option or not
|
|
304
|
-
correct: boolean;
|
|
305
|
-
};
|
|
306
|
-
|
|
307
|
-
export type PerseusExplanationWidgetOptions = {
|
|
308
|
-
// Translatable Text; The clickable text to expand an explanation. e.g. "What is an apple?"
|
|
309
|
-
showPrompt: string;
|
|
310
|
-
// Translatable Text; The cliclable text to hide an explanation. e.g. "Thanks. I got it!"
|
|
311
|
-
hidePrompt: string;
|
|
312
|
-
// Translatable Markdown; The explanation that is shown when showPrompt is clicked. e.g. "An apple is a tasty fruit."
|
|
313
|
-
explanation: string;
|
|
314
|
-
// explanation fields can embed widgets. When they do, the details of the widgets are here.
|
|
315
|
-
widgets: {
|
|
316
|
-
[key: string]: PerseusWidget;
|
|
317
|
-
};
|
|
318
|
-
// Always false. Not used for this widget
|
|
319
|
-
static: boolean;
|
|
320
|
-
};
|
|
321
|
-
|
|
322
|
-
export type LegacyButtonSets = ReadonlyArray<
|
|
323
|
-
| "basic"
|
|
324
|
-
| "basic+div"
|
|
325
|
-
| "trig"
|
|
326
|
-
| "prealgebra"
|
|
327
|
-
| "logarithms"
|
|
328
|
-
| "basic relations"
|
|
329
|
-
| "advanced relations"
|
|
330
|
-
>;
|
|
331
|
-
|
|
332
|
-
export type PerseusExpressionWidgetOptions = {
|
|
333
|
-
// The expression forms the answer may come in
|
|
334
|
-
answerForms: ReadonlyArray<PerseusExpressionAnswerForm>;
|
|
335
|
-
// Different buttons sets that can show in the expression. Options are "basic", "basic+div", "trig", "prealgebra", "logarithms", "basic relations", "advanced relations"
|
|
336
|
-
buttonSets: LegacyButtonSets;
|
|
337
|
-
// Variables that can be used as functions. Default: ["f", "g", "h"]
|
|
338
|
-
functions: ReadonlyArray<string>;
|
|
339
|
-
// Use x for rendering multiplication instead of a center dot.
|
|
340
|
-
times: boolean;
|
|
341
|
-
// Controls when buttons for special characters are visible when using a
|
|
342
|
-
// desktop browser. Defaults to "focused".
|
|
343
|
-
// NOTE: This isn't listed in perseus-format.js or perseus_data.go, but
|
|
344
|
-
// appears in item data in the datastore.
|
|
345
|
-
buttonsVisible?: "always" | "never" | "focused";
|
|
346
|
-
};
|
|
347
|
-
|
|
348
|
-
export const PerseusExpressionAnswerFormConsidered = [
|
|
349
|
-
"correct",
|
|
350
|
-
"wrong",
|
|
351
|
-
"ungraded",
|
|
352
|
-
] as const;
|
|
353
|
-
|
|
354
|
-
export type PerseusExpressionAnswerForm = {
|
|
355
|
-
// The Katex form of the expression. e.g. "x\\cdot3=y"
|
|
356
|
-
value: string;
|
|
357
|
-
// The Answer expression must have the same form
|
|
358
|
-
form: boolean;
|
|
359
|
-
// The answer expression must be fully expanded and simplified
|
|
360
|
-
simplify: boolean;
|
|
361
|
-
// Whether the form is considered "correct", "wrong", or "ungraded"
|
|
362
|
-
considered: typeof PerseusExpressionAnswerFormConsidered[number];
|
|
363
|
-
// A key to identify the answer form in a list
|
|
364
|
-
// NOTE: perseus-format.js says this is required even though it isn't necessary.
|
|
365
|
-
key?: string;
|
|
366
|
-
};
|
|
367
|
-
|
|
368
|
-
export type PerseusGradedGroupWidgetOptions = {
|
|
369
|
-
// Translatable Text; A title to be displayed for the group.
|
|
370
|
-
title: string;
|
|
371
|
-
// Not used in Perseus (but is set in (en, pt) production data)
|
|
372
|
-
hasHint?: boolean | null | undefined;
|
|
373
|
-
// A section to define hints for the group.
|
|
374
|
-
hint?: PerseusRenderer | null | undefined;
|
|
375
|
-
// Translatable Markdown. May include widgets and images embedded.
|
|
376
|
-
content: string;
|
|
377
|
-
// See PerseusRenderer.widgets
|
|
378
|
-
widgets: {
|
|
379
|
-
[key: string]: PerseusWidget;
|
|
380
|
-
};
|
|
381
|
-
// Not used in Perseus
|
|
382
|
-
widgetEnabled?: boolean | null | undefined;
|
|
383
|
-
// Not used in Perseus
|
|
384
|
-
immutableWidgets?: boolean | null | undefined;
|
|
385
|
-
// See PerseusRenderer.images
|
|
386
|
-
images: {
|
|
387
|
-
[key: string]: PerseusImageDetail;
|
|
388
|
-
};
|
|
389
|
-
};
|
|
390
|
-
|
|
391
|
-
export type PerseusGradedGroupSetWidgetOptions = {
|
|
392
|
-
// A list of Widget Groups
|
|
393
|
-
gradedGroups: ReadonlyArray<PerseusGradedGroupWidgetOptions>;
|
|
394
|
-
};
|
|
395
|
-
|
|
396
|
-
export type PerseusGrapherWidgetOptions = {
|
|
397
|
-
availableTypes: ReadonlyArray<
|
|
398
|
-
| "absolute_value"
|
|
399
|
-
| "exponential"
|
|
400
|
-
| "linear"
|
|
401
|
-
| "logarithm"
|
|
402
|
-
| "quadratic"
|
|
403
|
-
| "sinusoid"
|
|
404
|
-
| "tangent"
|
|
405
|
-
>;
|
|
406
|
-
correct:
|
|
407
|
-
| {
|
|
408
|
-
type: "absolute_value";
|
|
409
|
-
coords: [
|
|
410
|
-
// The vertex
|
|
411
|
-
Coord, // A point along one line of the absolute value "V" lines
|
|
412
|
-
Coord,
|
|
413
|
-
];
|
|
414
|
-
}
|
|
415
|
-
| {
|
|
416
|
-
type: "exponential";
|
|
417
|
-
// Two points along the asymptote line. Usually (always?) a
|
|
418
|
-
// horizontal or vertical line.
|
|
419
|
-
asymptote: [Coord, Coord];
|
|
420
|
-
// Two points along the exponential curve. One end of the curve
|
|
421
|
-
// trends towards the asymptote.
|
|
422
|
-
coords: [Coord, Coord];
|
|
423
|
-
}
|
|
424
|
-
| {
|
|
425
|
-
type: "linear";
|
|
426
|
-
// Two points along the straight line
|
|
427
|
-
coords: [Coord, Coord];
|
|
428
|
-
}
|
|
429
|
-
| {
|
|
430
|
-
type: "logarithm";
|
|
431
|
-
// Two points along the asymptote line.
|
|
432
|
-
asymptote: [Coord, Coord];
|
|
433
|
-
// Two points along the logarithmic curve. One end of the curve
|
|
434
|
-
// trends towards the asymptote.
|
|
435
|
-
coords: [Coord, Coord];
|
|
436
|
-
}
|
|
437
|
-
| {
|
|
438
|
-
type: "quadratic";
|
|
439
|
-
coords: [
|
|
440
|
-
// The vertex of the parabola
|
|
441
|
-
Coord, // A point along the parabola
|
|
442
|
-
Coord,
|
|
443
|
-
];
|
|
444
|
-
}
|
|
445
|
-
| {
|
|
446
|
-
type: "sinusoid";
|
|
447
|
-
// Two points on the same slope in the sinusoid wave line.
|
|
448
|
-
coords: [Coord, Coord];
|
|
449
|
-
}
|
|
450
|
-
| {
|
|
451
|
-
type: "tangent";
|
|
452
|
-
// Two points on the same slope in the tangent wave line.
|
|
453
|
-
coords: [Coord, Coord];
|
|
454
|
-
};
|
|
455
|
-
graph: {
|
|
456
|
-
backgroundImage: {
|
|
457
|
-
bottom?: number;
|
|
458
|
-
height?: number;
|
|
459
|
-
left?: number;
|
|
460
|
-
scale?: number;
|
|
461
|
-
url?: string | null | undefined;
|
|
462
|
-
width?: number;
|
|
463
|
-
};
|
|
464
|
-
box?: [number, number];
|
|
465
|
-
editableSettings?: ReadonlyArray<
|
|
466
|
-
"graph" | "snap" | "image" | "measure"
|
|
467
|
-
>;
|
|
468
|
-
gridStep?: [number, number];
|
|
469
|
-
labels: [string, string];
|
|
470
|
-
markings: "graph" | "none" | "grid";
|
|
471
|
-
range: [[number, number], [number, number]];
|
|
472
|
-
rulerLabel: "";
|
|
473
|
-
rulerTicks: number;
|
|
474
|
-
showProtractor?: boolean;
|
|
475
|
-
showRuler?: boolean;
|
|
476
|
-
showTooltips?: boolean;
|
|
477
|
-
snapStep?: [number, number];
|
|
478
|
-
step: [number, number];
|
|
479
|
-
valid?: boolean | string;
|
|
480
|
-
};
|
|
481
|
-
};
|
|
482
|
-
|
|
483
|
-
export type PerseusGroupWidgetOptions = PerseusRenderer;
|
|
484
|
-
|
|
485
|
-
export type PerseusImageWidgetOptions = {
|
|
486
|
-
// Translatable Markdown; Text to be shown for the title of the image
|
|
487
|
-
// NOTE: perseus_data.go says this is required even though it isn't necessary.
|
|
488
|
-
title?: string;
|
|
489
|
-
// Translatable Markdown; Text to be shown in the caption section of an image
|
|
490
|
-
// NOTE: perseus_data.go says this is required even though it isn't necessary.
|
|
491
|
-
caption?: string;
|
|
492
|
-
// Translatable Text; The alt text to be shown in the img.alt attribute
|
|
493
|
-
// NOTE: perseus_data.go says this is required even though it isn't necessary.
|
|
494
|
-
alt?: string;
|
|
495
|
-
// The image details for the image to be displayed
|
|
496
|
-
backgroundImage: PerseusImageBackground;
|
|
497
|
-
// Always false. Not used for this widget
|
|
498
|
-
// NOTE: perseus_data.go says this is required even though it isn't necessary.
|
|
499
|
-
static?: boolean;
|
|
500
|
-
// A list of labels to display on the image
|
|
501
|
-
// NOTE: perseus_data.go says this is required even though it isn't necessary.
|
|
502
|
-
labels?: ReadonlyArray<PerseusImageLabel>;
|
|
503
|
-
// The range on the image render for labels
|
|
504
|
-
// NOTE: perseus_data.go says this is required even though it isn't necessary.
|
|
505
|
-
range?: [Range, Range];
|
|
506
|
-
// The box on the image render for labels. The same as backgroundImage.width and backgroundImage.height
|
|
507
|
-
// NOTE: perseus_data.go says this is required even though it isn't necessary.
|
|
508
|
-
box?: Size;
|
|
509
|
-
};
|
|
510
|
-
|
|
511
|
-
export type PerseusImageLabel = {
|
|
512
|
-
// Translatable Text; The content of the label to display
|
|
513
|
-
content: string;
|
|
514
|
-
// The visual alignment of the label. default: "center"
|
|
515
|
-
alignment: string;
|
|
516
|
-
// The point on the image to display the label
|
|
517
|
-
coordinates: ReadonlyArray<number>;
|
|
518
|
-
};
|
|
519
|
-
|
|
520
|
-
export type PerseusInteractiveGraphWidgetOptions = {
|
|
521
|
-
// The tick steps. default [1, 1]
|
|
522
|
-
// NOTE(kevinb): perseus_data.go defines this as Array<number>
|
|
523
|
-
step: [number, number];
|
|
524
|
-
// The steps in the grid. default [1, 1]
|
|
525
|
-
// NOTE(kevinb): perseus_data.go defines this as Array<number>
|
|
526
|
-
gridStep: [number, number];
|
|
527
|
-
// The snap steps. default [0.5, 0.5]
|
|
528
|
-
// NOTE(kevinb): perseus_data.go defines this as Array<number>
|
|
529
|
-
snapStep: [number, number];
|
|
530
|
-
// An optional image to use in the background
|
|
531
|
-
backgroundImage?: PerseusImageBackground;
|
|
532
|
-
// What to show on the graph. "graph", "grid", or "none"
|
|
533
|
-
markings: string;
|
|
534
|
-
// How to label the X and Y axis. default: ["x", "y"]
|
|
535
|
-
labels: ReadonlyArray<string>;
|
|
536
|
-
// Whether to show the Protractor tool overlayed on top of the graph
|
|
537
|
-
showProtractor: boolean;
|
|
538
|
-
// Whether to show the Ruler tool overlayed on top of the graph
|
|
539
|
-
showRuler: boolean;
|
|
540
|
-
// Whether to show tooltips on the graph
|
|
541
|
-
showTooltips?: boolean;
|
|
542
|
-
// The unit to show on the ruler. e.g. "mm", "cm", "m", "km", "in", "ft", "yd", "mi"
|
|
543
|
-
rulerLabel: string;
|
|
544
|
-
// How many ticks to show on the ruler. e.g. 1, 2, 4, 8, 10, 16. Must be an integer.
|
|
545
|
-
rulerTicks: number;
|
|
546
|
-
// The X and Y coordinate ranges for the view of the graph. default: [[-10, 10], [-10, 10]]
|
|
547
|
-
// NOTE(kevinb): perseus_data.go defines this as Array<Array<number>>
|
|
548
|
-
// TODO(kevinb): Add a transform function to interactive-graph.jsx to
|
|
549
|
-
// rename `range` to `ranges` so that things are less confusing.
|
|
550
|
-
range: [[number, number], [number, number]];
|
|
551
|
-
// The type of graph
|
|
552
|
-
graph: PerseusGraphType;
|
|
553
|
-
// The correct kind of graph, if being used to select function type
|
|
554
|
-
correct: PerseusGraphType;
|
|
555
|
-
};
|
|
556
|
-
|
|
557
|
-
export type PerseusGraphType =
|
|
558
|
-
| PerseusGraphTypeAngle
|
|
559
|
-
| PerseusGraphTypeCircle
|
|
560
|
-
| PerseusGraphTypeLinear
|
|
561
|
-
| PerseusGraphTypeLinearSystem
|
|
562
|
-
| PerseusGraphTypePoint
|
|
563
|
-
| PerseusGraphTypePolygon
|
|
564
|
-
| PerseusGraphTypeQuadratic
|
|
565
|
-
| PerseusGraphTypeRay
|
|
566
|
-
| PerseusGraphTypeSegment
|
|
567
|
-
| PerseusGraphTypeSinusoid;
|
|
568
|
-
|
|
569
|
-
export type PerseusGraphTypeCommon = {
|
|
570
|
-
// NOTE(jeremy): This is referenced in the component. Verify if there's any
|
|
571
|
-
// production data that still has this.
|
|
572
|
-
coord?: Coord; // Legacy!
|
|
573
|
-
};
|
|
574
|
-
|
|
575
|
-
export type PerseusGraphTypeAngle = {
|
|
576
|
-
type: "angle";
|
|
577
|
-
// Whether to show the angle measurements. default: false
|
|
578
|
-
showAngles?: boolean;
|
|
579
|
-
// Allow Reflex Angles if an "angle" type. default: true
|
|
580
|
-
allowReflexAngles?: boolean;
|
|
581
|
-
// The angle offset in degrees if an "angle" type. default: 0
|
|
582
|
-
angleOffsetDeg?: number;
|
|
583
|
-
// Snap to degree increments if an "angle" type. default: 1
|
|
584
|
-
snapDegrees?: number;
|
|
585
|
-
// How to match the answer. If missing, defaults to exact matching.
|
|
586
|
-
match?: "congruent";
|
|
587
|
-
// must have 3 coords - ie [Coord, Coord, Coord]
|
|
588
|
-
coords?: ReadonlyArray<Coord>;
|
|
589
|
-
};
|
|
590
|
-
|
|
591
|
-
export type PerseusGraphTypeCircle = {
|
|
592
|
-
type: "circle";
|
|
593
|
-
center?: Coord;
|
|
594
|
-
radius?: number;
|
|
595
|
-
} & PerseusGraphTypeCommon;
|
|
596
|
-
|
|
597
|
-
export type PerseusGraphTypeLinear = {
|
|
598
|
-
type: "linear";
|
|
599
|
-
// expects 2 coords
|
|
600
|
-
coords?: ReadonlyArray<Coord>;
|
|
601
|
-
} & PerseusGraphTypeCommon;
|
|
602
|
-
|
|
603
|
-
export type PerseusGraphTypeLinearSystem = {
|
|
604
|
-
type: "linear-system";
|
|
605
|
-
// expects 2 sets of 2 coords
|
|
606
|
-
coords?: ReadonlyArray<ReadonlyArray<Coord>>;
|
|
607
|
-
} & PerseusGraphTypeCommon;
|
|
608
|
-
|
|
609
|
-
export type PerseusGraphTypePoint = {
|
|
610
|
-
type: "point";
|
|
611
|
-
// The number of points if a "point" type. default: 1. "unlimited" if no limit
|
|
612
|
-
numPoints?: number | "unlimited";
|
|
613
|
-
coords?: ReadonlyArray<Coord>;
|
|
614
|
-
} & PerseusGraphTypeCommon;
|
|
615
|
-
|
|
616
|
-
export type PerseusGraphTypePolygon = {
|
|
617
|
-
type: "polygon";
|
|
618
|
-
// The number of sides. default: 3. "unlimited" if no limit
|
|
619
|
-
numSides?: number | "unlimited";
|
|
620
|
-
// Whether to the angle measurements. default: false
|
|
621
|
-
showAngles?: boolean;
|
|
622
|
-
// Whether to show side measurements. default: false
|
|
623
|
-
showSides?: boolean;
|
|
624
|
-
// How to snap points. e.g. "grid", "angles", or "sides"
|
|
625
|
-
snapTo?: string;
|
|
626
|
-
// How to match the answer. If missing, defaults to exact matching.
|
|
627
|
-
match?: "similar" | "congruent" | "approx";
|
|
628
|
-
coords?: ReadonlyArray<Coord>;
|
|
629
|
-
} & PerseusGraphTypeCommon;
|
|
630
|
-
|
|
631
|
-
export type PerseusGraphTypeQuadratic = {
|
|
632
|
-
type: "quadratic";
|
|
633
|
-
// expects a list of 3 coords
|
|
634
|
-
coords?: ReadonlyArray<Coord>;
|
|
635
|
-
} & PerseusGraphTypeCommon;
|
|
636
|
-
|
|
637
|
-
export type PerseusGraphTypeSegment = {
|
|
638
|
-
type: "segment";
|
|
639
|
-
// The number of segments if a "segment" type. default: 1. Max: 6
|
|
640
|
-
numSegments?: number;
|
|
641
|
-
// Expects a list of Coord tuples. Length should match the `numSegments` value.
|
|
642
|
-
coords?: ReadonlyArray<ReadonlyArray<Coord>>;
|
|
643
|
-
} & PerseusGraphTypeCommon;
|
|
644
|
-
|
|
645
|
-
export type PerseusGraphTypeSinusoid = {
|
|
646
|
-
type: "sinusoid";
|
|
647
|
-
// Expects a list of 2 Coords
|
|
648
|
-
coords?: ReadonlyArray<Coord>;
|
|
649
|
-
} & PerseusGraphTypeCommon;
|
|
650
|
-
|
|
651
|
-
export type PerseusGraphTypeRay = {
|
|
652
|
-
type: "ray";
|
|
653
|
-
// Expects a list of 2 Coords
|
|
654
|
-
coords?: ReadonlyArray<Coord>;
|
|
655
|
-
} & PerseusGraphTypeCommon;
|
|
656
|
-
|
|
657
|
-
export type PerseusLabelImageWidgetOptions = {
|
|
658
|
-
// Translatable Text; Katex representation of choices
|
|
659
|
-
choices: ReadonlyArray<string>;
|
|
660
|
-
// The URL of the image
|
|
661
|
-
imageUrl: string;
|
|
662
|
-
// Translatable Text; To show up in the img.alt attribute
|
|
663
|
-
imageAlt: string;
|
|
664
|
-
// The height of the image
|
|
665
|
-
imageHeight: number;
|
|
666
|
-
// The width of the image
|
|
667
|
-
imageWidth: number;
|
|
668
|
-
// A list of markers to display on the image
|
|
669
|
-
markers: ReadonlyArray<PerseusLabelImageMarker>;
|
|
670
|
-
// Do not display answer choices in instructions
|
|
671
|
-
hideChoicesFromInstructions: boolean;
|
|
672
|
-
// Allow multiple answers per marker
|
|
673
|
-
multipleAnswers: boolean;
|
|
674
|
-
// Always false. Not used for this widget
|
|
675
|
-
static: boolean;
|
|
676
|
-
};
|
|
677
|
-
|
|
678
|
-
export type PerseusLabelImageMarker = {
|
|
679
|
-
// A list of correct answers for this marker. Often only one but can have multiple
|
|
680
|
-
answers: ReadonlyArray<string>;
|
|
681
|
-
// Translatable Text; The text to show for the marker. Not displayed directly to the user
|
|
682
|
-
label: string;
|
|
683
|
-
// X Coordiate location of the marker on the image
|
|
684
|
-
x: number;
|
|
685
|
-
// Y Coordinate location of the marker on the image
|
|
686
|
-
y: number;
|
|
687
|
-
};
|
|
688
|
-
|
|
689
|
-
export type PerseusMatcherWidgetOptions = {
|
|
690
|
-
// Translatable Text; Labels to adorn the headings for the columns. Only 2 values [left, right]. e.g. ["Concepts", "Things"]
|
|
691
|
-
labels: ReadonlyArray<string>;
|
|
692
|
-
// Translatable Text; Static concepts to show in the left column. e.g. ["Fruit", "Color", "Clothes"]
|
|
693
|
-
left: ReadonlyArray<string>;
|
|
694
|
-
// Translatable Markup; Values that represent the concepts to be correlated with the concepts. e.g. ["Red", "Shirt", "Banana"]
|
|
695
|
-
right: ReadonlyArray<string>;
|
|
696
|
-
// Order of the matched pairs matters. With this option enabled, only the order provided above will be treated as correct. This is useful when ordering is significant, such as in the context of a proof. If disabled, pairwise matching is sufficient. To make this clear, the left column becomes fixed in the provided order and only the cards in the right column can be moved.
|
|
697
|
-
orderMatters: boolean;
|
|
698
|
-
// Adds padding to the rows. Padding is good for text, but not needed for images.
|
|
699
|
-
padding: boolean;
|
|
700
|
-
};
|
|
701
|
-
|
|
702
|
-
export type PerseusMatrixWidgetAnswers = ReadonlyArray<ReadonlyArray<number>>;
|
|
703
|
-
export type PerseusMatrixWidgetOptions = {
|
|
704
|
-
// Translatable Text; Shown before the matrix
|
|
705
|
-
prefix: string;
|
|
706
|
-
// Translatable Text; Shown after the matrix
|
|
707
|
-
suffix: string;
|
|
708
|
-
// A data matrix representing the "correct" answers to be entered into the matrix
|
|
709
|
-
answers: PerseusMatrixWidgetAnswers;
|
|
710
|
-
// The coordinate location of the cursor position at start. default: [0, 0]
|
|
711
|
-
cursorPosition: ReadonlyArray<number>;
|
|
712
|
-
// The coordinate size of the matrix. Only supports 2-dimensional matrix. default: [3, 3]
|
|
713
|
-
matrixBoardSize: ReadonlyArray<number>;
|
|
714
|
-
// Whether this is meant to statically display the answers (true) or be used as an input field, graded against the answers
|
|
715
|
-
static: boolean;
|
|
716
|
-
};
|
|
717
|
-
|
|
718
|
-
export type PerseusMeasurerWidgetOptions = {
|
|
719
|
-
// The image that the user is meant to measure
|
|
720
|
-
image: PerseusImageBackground;
|
|
721
|
-
// Whether to show the Protractor tool overlayed on top of the image
|
|
722
|
-
showProtractor: boolean;
|
|
723
|
-
// Whether to show the Ruler tool overlayed on top of the image
|
|
724
|
-
showRuler: boolean;
|
|
725
|
-
// The unit to show on the ruler. e.g. "mm", "cm", "m", "km", "in", "ft", "yd", "mi"
|
|
726
|
-
rulerLabel: string;
|
|
727
|
-
// How many ticks to show on the ruler. e.g. 1, 2, 4, 8, 10, 16
|
|
728
|
-
rulerTicks: number;
|
|
729
|
-
// The number of image pixels per unit (label)
|
|
730
|
-
rulerPixels: number;
|
|
731
|
-
// The number of units to display on the ruler
|
|
732
|
-
rulerLength: number;
|
|
733
|
-
// Containing area [width, height]
|
|
734
|
-
box: ReadonlyArray<number>;
|
|
735
|
-
// Always false. Not used for this widget
|
|
736
|
-
static: boolean;
|
|
737
|
-
};
|
|
738
|
-
|
|
739
|
-
export type MathFormat =
|
|
740
|
-
| "integer"
|
|
741
|
-
| "mixed"
|
|
742
|
-
| "improper"
|
|
743
|
-
| "proper"
|
|
744
|
-
| "decimal"
|
|
745
|
-
| "percent"
|
|
746
|
-
| "pi";
|
|
747
|
-
|
|
748
|
-
export type PerseusNumericInputAnswerForm = {
|
|
749
|
-
simplify:
|
|
750
|
-
| "required"
|
|
751
|
-
| "correct"
|
|
752
|
-
| "enforced"
|
|
753
|
-
| "optional"
|
|
754
|
-
| null
|
|
755
|
-
| undefined;
|
|
756
|
-
name: MathFormat;
|
|
757
|
-
};
|
|
758
|
-
|
|
759
|
-
export type PerseusNumericInputWidgetOptions = {
|
|
760
|
-
// A list of all the possible correct and incorrect answers
|
|
761
|
-
answers: ReadonlyArray<PerseusNumericInputAnswer>;
|
|
762
|
-
// Translatable Text; Text to describe this input. This will be shown to users using screenreaders.
|
|
763
|
-
labelText: string;
|
|
764
|
-
// Use size "Normal" for all text boxes, unless there are multiple text boxes in one line and the answer area is too narrow to fit them. Options: "normal" or "small"
|
|
765
|
-
size: string;
|
|
766
|
-
// A coefficient style number allows the student to use - for -1 and an empty string to mean 1.
|
|
767
|
-
coefficient: boolean;
|
|
768
|
-
// Whether to right-align the text or not
|
|
769
|
-
// NOTE: perseus_data.go says this is required even though it isn't necessary.
|
|
770
|
-
rightAlign?: boolean;
|
|
771
|
-
// Always false. Not used for this widget
|
|
772
|
-
static: boolean;
|
|
773
|
-
// Used by examples, maybe not used and should be removed in the future
|
|
774
|
-
// see TODO in numeric-input
|
|
775
|
-
answerForms?: ReadonlyArray<PerseusNumericInputAnswerForm>;
|
|
776
|
-
};
|
|
777
|
-
|
|
778
|
-
export type PerseusNumericInputAnswer = {
|
|
779
|
-
// Translatable Display; A description for why this answer is correct, wrong, or ungraded
|
|
780
|
-
message: string;
|
|
781
|
-
// The expected answer
|
|
782
|
-
value: number;
|
|
783
|
-
// Whether this answer is "correct", "wrong", or "ungraded"
|
|
784
|
-
status: string;
|
|
785
|
-
// The forms available for this answer. Options: "integer, ""decimal", "proper", "improper", "mixed", or "pi"
|
|
786
|
-
// NOTE: perseus_data.go says this is required even though it isn't necessary.
|
|
787
|
-
answerForms?: ReadonlyArray<MathFormat>;
|
|
788
|
-
// Whether we should check the answer strictly against the the configured answerForms (strict = true)
|
|
789
|
-
// or include the set of default answerForms (strict = false).
|
|
790
|
-
strict: boolean;
|
|
791
|
-
// A range of error +/- the value
|
|
792
|
-
// NOTE: perseus_data.go says this is non-nullable even though we handle null values.
|
|
793
|
-
maxError: number | null | undefined;
|
|
794
|
-
// Unsimplified answers are Ungraded, Accepted, or Wrong. Options: "required", "correct", or "enforced"
|
|
795
|
-
simplify: string | null | undefined;
|
|
796
|
-
};
|
|
797
|
-
|
|
798
|
-
export type PerseusNumberLineWidgetOptions = {
|
|
799
|
-
// The position of the endpoints of the number line. Setting the range constrains the position of the answer and the labels.
|
|
800
|
-
range: ReadonlyArray<number>;
|
|
801
|
-
// This controls the position of the left / right labels. By default, the labels are set by the range. Note: Ensure that the labels line up with the tick marks, or it may be confusing for users.
|
|
802
|
-
labelRange: ReadonlyArray<number | null>;
|
|
803
|
-
// This controls the styling of the labels for the two main labels as well as all the tick mark labels, if applicable. Options: "decimal", "improper", "mixed", "non-reduced"
|
|
804
|
-
labelStyle: string;
|
|
805
|
-
// Show label ticks
|
|
806
|
-
labelTicks: boolean;
|
|
807
|
-
// Show tick controller
|
|
808
|
-
isTickCtrl?: boolean | null | undefined;
|
|
809
|
-
// The range of divisions within the line
|
|
810
|
-
divisionRange: ReadonlyArray<number>;
|
|
811
|
-
// This controls the number (and position) of the tick marks. The number of divisions is constrained to the division range. Note: The user will be able to specify the number of divisions in a number input.
|
|
812
|
-
numDivisions: number | null | undefined;
|
|
813
|
-
// This determines the number of different places the point will snap between two adjacent tick marks. Note: Ensure the required number of snap increments is provided to answer the question.
|
|
814
|
-
snapDivisions: number;
|
|
815
|
-
// This controls the number (and position) of the tick marks; you can either set the number of divisions (2 divisions would split the entire range in two halves), or the tick step (the distance between ticks) and the other value will be updated accordingly. Note: There is no check to see if labels coordinate with the tick marks, which may be confusing for users if the blue labels and black ticks are off-step.
|
|
816
|
-
tickStep: number | null | undefined;
|
|
817
|
-
// The correct relative value. default: "eq". options: "eq", "lt", "gt", "le", "ge"
|
|
818
|
-
correctRel: string | null | undefined;
|
|
819
|
-
// This is the correct answer. The answer is validated (as right or wrong) by using only the end position of the point and the relation (=, <, >, ≤, ≥).
|
|
820
|
-
correctX: number;
|
|
821
|
-
// This controls the initial position of the point along the number line
|
|
822
|
-
initialX: number | null | undefined;
|
|
823
|
-
// Show tooltips
|
|
824
|
-
showTooltip?: boolean;
|
|
825
|
-
// When true, the answer is displayed and is immutable
|
|
826
|
-
static: boolean;
|
|
827
|
-
};
|
|
828
|
-
|
|
829
|
-
export type PerseusOrdererWidgetOptions = {
|
|
830
|
-
// All of the options available to the user. Place the cards in the correct order. The same card can be used more than once in the answer but will only be displayed once at the top of a stack of identical cards.
|
|
831
|
-
options: ReadonlyArray<PerseusRenderer>;
|
|
832
|
-
// The correct order of the options
|
|
833
|
-
correctOptions: ReadonlyArray<PerseusRenderer>;
|
|
834
|
-
// Cards that are not part of the answer
|
|
835
|
-
otherOptions: ReadonlyArray<PerseusRenderer>;
|
|
836
|
-
// "normal" for text options. "auto" for image options.
|
|
837
|
-
height: string;
|
|
838
|
-
// Use the "horizontal" layout for short text and small images. The "vertical" layout is best for longer text (e.g. proofs).
|
|
839
|
-
layout: string;
|
|
840
|
-
};
|
|
841
|
-
|
|
842
|
-
export type PerseusPassageWidgetOptions = {
|
|
843
|
-
// Translatable Text; To add footnotes, add ^ characters where they belong in the passage. Then, add ^ in the footnotes area to reference the footnotes in the passage.
|
|
844
|
-
footnotes: string;
|
|
845
|
-
// Translatable Text; The text of the passage
|
|
846
|
-
passageText: string;
|
|
847
|
-
// translatableText - An optional title that will appear directly above the passage in the same font style. (e.g. Passage 1)
|
|
848
|
-
passageTitle: string;
|
|
849
|
-
// Should we show line numbers along with the passage?
|
|
850
|
-
showLineNumbers: boolean;
|
|
851
|
-
// Always false. Not used for this widget
|
|
852
|
-
static: boolean;
|
|
853
|
-
};
|
|
854
|
-
|
|
855
|
-
export type PerseusPassageRefWidgetOptions = {
|
|
856
|
-
// The passage number
|
|
857
|
-
passageNumber: number;
|
|
858
|
-
// The reference number
|
|
859
|
-
referenceNumber: number;
|
|
860
|
-
// Short summary of the referenced section. This will be included in parentheses and quotes automatically.
|
|
861
|
-
summaryText: string;
|
|
862
|
-
};
|
|
863
|
-
|
|
864
|
-
export const plotterPlotTypes = [
|
|
865
|
-
"bar",
|
|
866
|
-
"line",
|
|
867
|
-
"pic",
|
|
868
|
-
"histogram",
|
|
869
|
-
"dotplot",
|
|
870
|
-
] as const;
|
|
871
|
-
export type PlotType = typeof plotterPlotTypes[number];
|
|
872
|
-
|
|
873
|
-
export type PerseusPlotterWidgetOptions = {
|
|
874
|
-
// Translatable Text; The Axis labels. e.g. ["X Label", "Y Label"]
|
|
875
|
-
labels: ReadonlyArray<string>;
|
|
876
|
-
// Translatable Text; Categories to display along the X access. e.g. [">0", ">6", ">12", ">18"]
|
|
877
|
-
categories: ReadonlyArray<string>;
|
|
878
|
-
// The type of the graph. options "bar", "line", "pic", "histogram", "dotplot"
|
|
879
|
-
type: PlotType;
|
|
880
|
-
// The maximimum Y tick to display in the graph
|
|
881
|
-
maxY: number;
|
|
882
|
-
// The scale of the Y Axis
|
|
883
|
-
scaleY: number;
|
|
884
|
-
// Which ticks to display the labels for. For instance, setting this to "4" will only show every 4th label (plus the last one)
|
|
885
|
-
labelInterval: number | null | undefined;
|
|
886
|
-
// Creates the specified number of divisions between the horizontal lines. Fewer snaps between lines makes the graph easier for the student to create correctly.
|
|
887
|
-
snapsPerLine: number;
|
|
888
|
-
// The Y values the graph should start with
|
|
889
|
-
starting: ReadonlyArray<number>;
|
|
890
|
-
// The Y values that represent the correct answer expected
|
|
891
|
-
correct: ReadonlyArray<number>;
|
|
892
|
-
// A picture to represent items in a graph.
|
|
893
|
-
picUrl: string | null | undefined;
|
|
894
|
-
// deprecated
|
|
895
|
-
picSize: number | null | undefined;
|
|
896
|
-
// deprecated
|
|
897
|
-
picBoxHeight: number | null | undefined;
|
|
898
|
-
// deprecated
|
|
899
|
-
plotDimensions: ReadonlyArray<number>;
|
|
900
|
-
};
|
|
901
|
-
|
|
902
|
-
export type PerseusRadioWidgetOptions = {
|
|
903
|
-
// The choices provided to the user.
|
|
904
|
-
choices: ReadonlyArray<PerseusRadioChoice>;
|
|
905
|
-
// Does this have a "none of the above" option?
|
|
906
|
-
// NOTE: perseus_data.go says this is required even though it isn't necessary.
|
|
907
|
-
hasNoneOfTheAbove?: boolean;
|
|
908
|
-
// If multipleSelect is enabled, Specify the number expected to be correct.
|
|
909
|
-
// NOTE: perseus_data.go says this is required even though it isn't necessary.
|
|
910
|
-
countChoices?: boolean;
|
|
911
|
-
// Randomize the order of the options or keep them as defined
|
|
912
|
-
// NOTE: perseus_data.go says this is required even though it isn't necessary.
|
|
913
|
-
randomize?: boolean;
|
|
914
|
-
// Does this set allow for multiple selections to be correct?
|
|
915
|
-
// NOTE: perseus_data.go says this is required even though it isn't necessary.
|
|
916
|
-
multipleSelect?: boolean;
|
|
917
|
-
// deprecated
|
|
918
|
-
// NOTE: perseus_data.go says this is required even though it isn't necessary.
|
|
919
|
-
deselectEnabled?: boolean;
|
|
920
|
-
// deprecated
|
|
921
|
-
// NOTE: perseus_data.go says this is required even though it isn't necessary.
|
|
922
|
-
onePerLine?: boolean;
|
|
923
|
-
// deprecated
|
|
924
|
-
// NOTE: perseus_data.go says this is required even though it isn't necessary.
|
|
925
|
-
displayCount?: any;
|
|
926
|
-
// v0 props
|
|
927
|
-
// `noneOfTheAbove` is still in use (but only set to `false`).
|
|
928
|
-
noneOfTheAbove?: false;
|
|
929
|
-
};
|
|
930
|
-
|
|
931
|
-
export type PerseusRadioChoice = {
|
|
932
|
-
// Translatable Markdown; The label for this choice
|
|
933
|
-
content: string;
|
|
934
|
-
// Translatable Markdown; A clue to give the user when they get it wrong
|
|
935
|
-
// NOTE: perseus_data.go says this is required even though it isn't necessary.
|
|
936
|
-
clue?: string;
|
|
937
|
-
// Whether this option is a correct answer or not
|
|
938
|
-
// NOTE: perseus_data.go says this is required even though it isn't necessary.
|
|
939
|
-
correct?: boolean;
|
|
940
|
-
// If this is none of the above, override the content with "None of the above"
|
|
941
|
-
// NOTE: perseus_data.go says this is required even though it isn't necessary.
|
|
942
|
-
isNoneOfTheAbove?: boolean;
|
|
943
|
-
// deprecated
|
|
944
|
-
// NOTE: perseus_data.go says this is required even though it isn't necessary.
|
|
945
|
-
widgets?: {
|
|
946
|
-
[key: string]: PerseusWidget;
|
|
947
|
-
};
|
|
948
|
-
};
|
|
949
|
-
|
|
950
|
-
export type PerseusSequenceWidgetOptions = {
|
|
951
|
-
// A list of Renderers to display in sequence
|
|
952
|
-
json: ReadonlyArray<PerseusRenderer>;
|
|
953
|
-
};
|
|
954
|
-
|
|
955
|
-
export type PerseusSimulatorWidgetOptions = {
|
|
956
|
-
// Translatable Text; The X Axis
|
|
957
|
-
xAxisLabel: string;
|
|
958
|
-
// Translatable Text; The Y Axis
|
|
959
|
-
yAxisLabel: string;
|
|
960
|
-
// Translatable Text; A lable to define the proportion of the simulation
|
|
961
|
-
proportionLabel: string;
|
|
962
|
-
// The type of simulation. options: "proportion", "percentage"
|
|
963
|
-
proportionOrPercentage: string;
|
|
964
|
-
// The number of times to run the simulation
|
|
965
|
-
numTrials: number;
|
|
966
|
-
};
|
|
967
|
-
|
|
968
|
-
export type PerseusSorterWidgetOptions = {
|
|
969
|
-
// Translatable Text; The correct answer (in the correct order). The user will see the cards in a randomized order.
|
|
970
|
-
correct: ReadonlyArray<string>;
|
|
971
|
-
// Adds padding to the options. Padding is good for text but not needed for images
|
|
972
|
-
padding: boolean;
|
|
973
|
-
// Use the "horizontal" layout for short text and small images. The "vertical" layout is best for longer text and larger images.
|
|
974
|
-
layout: string;
|
|
975
|
-
};
|
|
976
|
-
|
|
977
|
-
export type PerseusTableWidgetOptions = {
|
|
978
|
-
// Translatable Text; A list of column headers
|
|
979
|
-
headers: ReadonlyArray<string>;
|
|
980
|
-
// The number of rows to display
|
|
981
|
-
rows: number;
|
|
982
|
-
// The number of columns to display
|
|
983
|
-
columns: number;
|
|
984
|
-
// Translatable Text; A 2-dimensional array of text to populate the table with
|
|
985
|
-
answers: ReadonlyArray<ReadonlyArray<string>>;
|
|
986
|
-
};
|
|
987
|
-
|
|
988
|
-
export type DilationTransformation = {
|
|
989
|
-
type: "dilation";
|
|
990
|
-
center: Coord;
|
|
991
|
-
scale: number;
|
|
992
|
-
constraints: {
|
|
993
|
-
fixed: boolean;
|
|
994
|
-
};
|
|
995
|
-
};
|
|
996
|
-
|
|
997
|
-
export type ReflectionTransformation = {
|
|
998
|
-
type: "reflection";
|
|
999
|
-
line: [Coord, Coord];
|
|
1000
|
-
constraints?: {
|
|
1001
|
-
fixed: boolean;
|
|
1002
|
-
};
|
|
1003
|
-
};
|
|
1004
|
-
|
|
1005
|
-
export type RotationTransformation = {
|
|
1006
|
-
type: "rotation";
|
|
1007
|
-
angleDeg: number;
|
|
1008
|
-
center: Coord;
|
|
1009
|
-
constraints: {
|
|
1010
|
-
fixed: boolean;
|
|
1011
|
-
};
|
|
1012
|
-
};
|
|
1013
|
-
|
|
1014
|
-
export type TranslationTransformation = {
|
|
1015
|
-
type: "translation";
|
|
1016
|
-
vector: Coord;
|
|
1017
|
-
contraints: Empty;
|
|
1018
|
-
};
|
|
1019
|
-
|
|
1020
|
-
export type PerseusInteractionWidgetOptions = {
|
|
1021
|
-
// The definition of the graph
|
|
1022
|
-
graph: PerseusInteractionGraph;
|
|
1023
|
-
// The elements of the graph
|
|
1024
|
-
elements: ReadonlyArray<PerseusInteractionElement>;
|
|
1025
|
-
// Always false. Not used for this widget
|
|
1026
|
-
static: boolean;
|
|
1027
|
-
};
|
|
1028
|
-
|
|
1029
|
-
export type PerseusInteractionGraph = {
|
|
1030
|
-
// "canvas", "graph"
|
|
1031
|
-
editableSettings?: ReadonlyArray<"canvas" | "graph">;
|
|
1032
|
-
// The Grid Canvas size. e.g. [400, 140]
|
|
1033
|
-
box: Size;
|
|
1034
|
-
// The Axis labels. e.g. ["x", "y"]
|
|
1035
|
-
labels: ReadonlyArray<string>;
|
|
1036
|
-
// The Axis ranges. e.g. [[-10, 10], [-10, 10]]
|
|
1037
|
-
range: [Range, Range];
|
|
1038
|
-
// The steps in the grid. default [1, 1]
|
|
1039
|
-
gridStep: [number, number];
|
|
1040
|
-
// What to show on the graph. "graph", "grid", or "none"
|
|
1041
|
-
markings: string;
|
|
1042
|
-
// The snap steps. default [0.5, 0.5]
|
|
1043
|
-
snapStep?: [number, number];
|
|
1044
|
-
// Whether the grid is valid or not. Do the numbers all make sense?
|
|
1045
|
-
// NOTE(jeremy) The editor for this widget sometimes stores the graph
|
|
1046
|
-
// editor validation error message into this field. It seems innocuous
|
|
1047
|
-
// because it looks like many of these usages don't actually use the graph
|
|
1048
|
-
// at all.
|
|
1049
|
-
valid?: boolean | string;
|
|
1050
|
-
// An optional background image to use
|
|
1051
|
-
backgroundImage?: PerseusImageBackground;
|
|
1052
|
-
// Whether to show the Protractor tool overlayed on top of the graph
|
|
1053
|
-
showProtractor?: boolean;
|
|
1054
|
-
// Whether to show the Ruler tool overlayed on top of the graph
|
|
1055
|
-
showRuler?: boolean;
|
|
1056
|
-
// The unit to show on the ruler. e.g. "mm", "cm", "m", "km", "in", "ft", "yd", "mi"
|
|
1057
|
-
rulerLabel?: string;
|
|
1058
|
-
// How many ticks to show on the ruler. e.g. 1, 2, 4, 8, 10, 16
|
|
1059
|
-
rulerTicks?: number;
|
|
1060
|
-
// This controls the number (and position) of the tick marks for the X and Y axis. e.g. [1, 1]
|
|
1061
|
-
tickStep: [number, number];
|
|
1062
|
-
};
|
|
1063
|
-
|
|
1064
|
-
export type PerseusInteractionElement =
|
|
1065
|
-
| {
|
|
1066
|
-
type: "function";
|
|
1067
|
-
// An identifier for the element
|
|
1068
|
-
key: string;
|
|
1069
|
-
options: PerseusInteractionFunctionElementOptions;
|
|
1070
|
-
}
|
|
1071
|
-
| {
|
|
1072
|
-
type: "label";
|
|
1073
|
-
// An identifier for the element
|
|
1074
|
-
key: string;
|
|
1075
|
-
options: PerseusInteractionLabelElementOptions;
|
|
1076
|
-
}
|
|
1077
|
-
| {
|
|
1078
|
-
type: "line";
|
|
1079
|
-
// An identifier for the element
|
|
1080
|
-
key: string;
|
|
1081
|
-
options: PerseusInteractionLineElementOptions;
|
|
1082
|
-
}
|
|
1083
|
-
| {
|
|
1084
|
-
type: "movable-line";
|
|
1085
|
-
// An identifier for the element
|
|
1086
|
-
key: string;
|
|
1087
|
-
options: PerseusInteractionMovableLineElementOptions;
|
|
1088
|
-
}
|
|
1089
|
-
| {
|
|
1090
|
-
type: "movable-point";
|
|
1091
|
-
// An identifier for the element
|
|
1092
|
-
key: string;
|
|
1093
|
-
options: PerseusInteractionMovablePointElementOptions;
|
|
1094
|
-
}
|
|
1095
|
-
| {
|
|
1096
|
-
type: "parametric";
|
|
1097
|
-
// An identifier for the element
|
|
1098
|
-
key: string;
|
|
1099
|
-
options: PerseusInteractionParametricElementOptions;
|
|
1100
|
-
}
|
|
1101
|
-
| {
|
|
1102
|
-
type: "point";
|
|
1103
|
-
// An identifier for the element
|
|
1104
|
-
key: string;
|
|
1105
|
-
options: PerseusInteractionPointElementOptions;
|
|
1106
|
-
}
|
|
1107
|
-
| {
|
|
1108
|
-
type: "rectangle";
|
|
1109
|
-
// An identifier for the element
|
|
1110
|
-
key: string;
|
|
1111
|
-
options: PerseusInteractionRectangleElementOptions;
|
|
1112
|
-
};
|
|
1113
|
-
|
|
1114
|
-
export type PerseusInteractionFunctionElementOptions = {
|
|
1115
|
-
// The definition of the function to draw on the graph. e.g "x^2 + 1"
|
|
1116
|
-
value: string;
|
|
1117
|
-
// The name of the function like f(n). default: "f"
|
|
1118
|
-
funcName: string;
|
|
1119
|
-
// The range of points to start plotting
|
|
1120
|
-
rangeMin: string;
|
|
1121
|
-
// The range of points to end plotting
|
|
1122
|
-
rangeMax: string;
|
|
1123
|
-
// The color of the stroke. e.g. #6495ED
|
|
1124
|
-
color: string;
|
|
1125
|
-
// If the function stroke has a dash, what is it? options: "", "-", "- ", ".", ". "
|
|
1126
|
-
strokeDasharray: string;
|
|
1127
|
-
// The thickness of the stroke
|
|
1128
|
-
strokeWidth: number;
|
|
1129
|
-
};
|
|
1130
|
-
|
|
1131
|
-
export type PerseusInteractionLabelElementOptions = {
|
|
1132
|
-
// Translatable Text; the content of the label
|
|
1133
|
-
label: string;
|
|
1134
|
-
// The color of the label. e.g. "red"
|
|
1135
|
-
color: string;
|
|
1136
|
-
// The X location of the label
|
|
1137
|
-
coordX: string;
|
|
1138
|
-
// The Y location of the label
|
|
1139
|
-
coordY: string;
|
|
1140
|
-
};
|
|
1141
|
-
|
|
1142
|
-
export type PerseusInteractionLineElementOptions = {
|
|
1143
|
-
// A color code for the line segment. e.g. "#FFOOAF"
|
|
1144
|
-
color: string;
|
|
1145
|
-
// The start of the line segment (X)
|
|
1146
|
-
startX: string;
|
|
1147
|
-
// The start of the line segment (Y)
|
|
1148
|
-
startY: string;
|
|
1149
|
-
// The end of the line segment (X)
|
|
1150
|
-
endX: string;
|
|
1151
|
-
// The end of the line segment (Y)
|
|
1152
|
-
endY: string;
|
|
1153
|
-
// If the line stroke has a dash, what is it? options: "", "-", "- ", ".", ". "
|
|
1154
|
-
strokeDasharray: string;
|
|
1155
|
-
// The thickness of the line
|
|
1156
|
-
strokeWidth: number;
|
|
1157
|
-
// Does the line have an arrow point to it? options: "", "->"
|
|
1158
|
-
arrows: string;
|
|
1159
|
-
};
|
|
1160
|
-
|
|
1161
|
-
export type PerseusInteractionMovableLineElementOptions = {
|
|
1162
|
-
// The start of the line segment (X)
|
|
1163
|
-
startX: string;
|
|
1164
|
-
// The start of the line segment (Y)
|
|
1165
|
-
startY: string;
|
|
1166
|
-
// Start updates (Xn, Yn) for n
|
|
1167
|
-
startSubscript: number;
|
|
1168
|
-
// The end of the line segment (X)
|
|
1169
|
-
endX: string;
|
|
1170
|
-
// The end of the line segment (Y)
|
|
1171
|
-
endY: string;
|
|
1172
|
-
// End updates (Xm, Ym) for m
|
|
1173
|
-
endSubscript: number;
|
|
1174
|
-
// How to constrain this line? options "none", "snap", "x", "y"
|
|
1175
|
-
constraint: string;
|
|
1176
|
-
// The snap resolution when constraint is set to "snap"
|
|
1177
|
-
snap: number;
|
|
1178
|
-
// The constraint function for when constraint is set to "x" or "y"
|
|
1179
|
-
constraintFn: string;
|
|
1180
|
-
// The lowest possible X value
|
|
1181
|
-
constraintXMin: string;
|
|
1182
|
-
// The highest possible X value
|
|
1183
|
-
constraintXMax: string;
|
|
1184
|
-
// The lowest possible Y value
|
|
1185
|
-
constraintYMin: string;
|
|
1186
|
-
// The highest possible Y value
|
|
1187
|
-
constraintYMax: string;
|
|
1188
|
-
};
|
|
1189
|
-
|
|
1190
|
-
export type PerseusInteractionMovablePointElementOptions = {
|
|
1191
|
-
// The X position of the point
|
|
1192
|
-
startX: string;
|
|
1193
|
-
// The Y position of the point
|
|
1194
|
-
startY: string;
|
|
1195
|
-
// Update (Xn, Yn) for n
|
|
1196
|
-
varSubscript: number;
|
|
1197
|
-
// How to constrain this line? options "none", "snap", "x", "y"
|
|
1198
|
-
constraint: string;
|
|
1199
|
-
// The snap resolution when constraint is set to "snap"
|
|
1200
|
-
snap: number;
|
|
1201
|
-
// The constraint function for when constraint is set to "x" or "y"
|
|
1202
|
-
constraintFn: string;
|
|
1203
|
-
// The lowest possible X value
|
|
1204
|
-
constraintXMin: string;
|
|
1205
|
-
// The highest possible X value
|
|
1206
|
-
constraintXMax: string;
|
|
1207
|
-
// The lowest possible Y value
|
|
1208
|
-
constraintYMin: string;
|
|
1209
|
-
// The highest possible Y value
|
|
1210
|
-
constraintYMax: string;
|
|
1211
|
-
};
|
|
1212
|
-
|
|
1213
|
-
export type PerseusInteractionParametricElementOptions = {
|
|
1214
|
-
// The function for the X coordinate. e.g. "\\cos(t)"
|
|
1215
|
-
x: string;
|
|
1216
|
-
// The function for the Y coordinate. e.g. "\\sin(t)"
|
|
1217
|
-
y: string;
|
|
1218
|
-
// The range of points to start plotting
|
|
1219
|
-
rangeMin: string;
|
|
1220
|
-
// The range of points to end plotting
|
|
1221
|
-
rangeMax: string;
|
|
1222
|
-
// The color of the stroke. e.g. #6495ED
|
|
1223
|
-
color: string;
|
|
1224
|
-
// If the function stroke has a dash, what is it? options: "", "-", "- ", ".", ". "
|
|
1225
|
-
strokeDasharray: string;
|
|
1226
|
-
// The thickness of the stroke
|
|
1227
|
-
strokeWidth: number;
|
|
1228
|
-
};
|
|
1229
|
-
|
|
1230
|
-
export type PerseusInteractionPointElementOptions = {
|
|
1231
|
-
// The color of the point. e.g. "black"
|
|
1232
|
-
color: string;
|
|
1233
|
-
// The X coordinate of the point
|
|
1234
|
-
coordX: string;
|
|
1235
|
-
// The Y coordinate of the point
|
|
1236
|
-
coordY: string;
|
|
1237
|
-
};
|
|
1238
|
-
|
|
1239
|
-
export type PerseusInteractionRectangleElementOptions = {
|
|
1240
|
-
// The fill color. e.g. "#EDD19B"
|
|
1241
|
-
color: string;
|
|
1242
|
-
// The lower left point X
|
|
1243
|
-
coordX: string;
|
|
1244
|
-
// The lower left point Y
|
|
1245
|
-
coordY: string;
|
|
1246
|
-
// The width of the rectangle
|
|
1247
|
-
width: string;
|
|
1248
|
-
// The height of the rectangle
|
|
1249
|
-
height: string;
|
|
1250
|
-
};
|
|
1251
|
-
|
|
1252
|
-
export type PerseusCSProgramWidgetOptions = {
|
|
1253
|
-
// The ID of the CS program to embed
|
|
1254
|
-
programID: string;
|
|
1255
|
-
// Deprecated. Always null and sometimes omitted entirely.
|
|
1256
|
-
programType?: any;
|
|
1257
|
-
// Settings that you add here are available to the program as an object returned by Program.settings()
|
|
1258
|
-
settings: ReadonlyArray<PerseusCSProgramSetting>;
|
|
1259
|
-
// If you show the editor, you should use the "full-width" alignment to make room for the width of the editor.
|
|
1260
|
-
showEditor: boolean;
|
|
1261
|
-
// Whether to show the execute buttons
|
|
1262
|
-
showButtons: boolean;
|
|
1263
|
-
// The width of the widget
|
|
1264
|
-
width: number;
|
|
1265
|
-
// The height of the widget
|
|
1266
|
-
height: number;
|
|
1267
|
-
// Always false
|
|
1268
|
-
static: boolean;
|
|
1269
|
-
};
|
|
1270
|
-
|
|
1271
|
-
export type PerseusCSProgramSetting = {
|
|
1272
|
-
// The name/key of the setting
|
|
1273
|
-
name: string;
|
|
1274
|
-
// The value of the setting
|
|
1275
|
-
value: string;
|
|
1276
|
-
};
|
|
1277
|
-
|
|
1278
|
-
export type PerseusIFrameWidgetOptions = {
|
|
1279
|
-
// A URL to display OR a CS Program ID
|
|
1280
|
-
url: string;
|
|
1281
|
-
// Settings that you add here are available to the program as an object returned by Program.settings()
|
|
1282
|
-
settings: ReadonlyArray<PerseusCSProgramSetting>;
|
|
1283
|
-
// The width of the widget
|
|
1284
|
-
width: number | string;
|
|
1285
|
-
// The height of the widget
|
|
1286
|
-
height: number | string;
|
|
1287
|
-
// Whether to allow the IFrame to become full-screen (like a video)
|
|
1288
|
-
allowFullScreen: boolean;
|
|
1289
|
-
// Whether to allow the iframe content to redirect the page
|
|
1290
|
-
allowTopNavigation?: boolean;
|
|
1291
|
-
// Always false
|
|
1292
|
-
static: boolean;
|
|
1293
|
-
};
|
|
1294
|
-
|
|
1295
|
-
export type PerseusVideoWidgetOptions = {
|
|
1296
|
-
location: string;
|
|
1297
|
-
static?: boolean;
|
|
1298
|
-
};
|
|
1299
|
-
|
|
1300
|
-
export type PerseusInputNumberWidgetOptions = {
|
|
1301
|
-
answerType?:
|
|
1302
|
-
| "number"
|
|
1303
|
-
| "decimal"
|
|
1304
|
-
| "integer"
|
|
1305
|
-
| "rational"
|
|
1306
|
-
| "improper"
|
|
1307
|
-
| "mixed"
|
|
1308
|
-
| "percent"
|
|
1309
|
-
| "pi";
|
|
1310
|
-
inexact?: boolean;
|
|
1311
|
-
maxError?: number | string;
|
|
1312
|
-
rightAlign?: boolean;
|
|
1313
|
-
simplify: "required" | "optional" | "enforced";
|
|
1314
|
-
size: "normal" | "small";
|
|
1315
|
-
value: string | number;
|
|
1316
|
-
customKeypad?: boolean;
|
|
1317
|
-
};
|
|
1318
|
-
|
|
1319
|
-
// TODO(FEI-3983): Create proper types for these.
|
|
1320
|
-
export type PerseusExampleGraphieWidgetOptions = any;
|
|
1321
|
-
export type PerseusExampleWidgetOptions = any;
|
|
1322
|
-
export type PerseusLightsPuzzleWidgetOptions = any;
|
|
1323
|
-
export type PerseusMoleculeRendererWidgetOptions = any;
|
|
1324
|
-
export type PerseusPassageRefTargetWidgetOptions = any;
|
|
1325
|
-
export type PerseusReactionDiagramWidgetOptions = any;
|
|
1326
|
-
export type PerseusSimpleMarkdownTesterWidgetOptions = any;
|
|
1327
|
-
export type PerseusUnitInputWidgetOptions = any;
|
|
1328
|
-
|
|
1329
|
-
export type PerseusWidgetOptions =
|
|
1330
|
-
| PerseusCategorizerWidgetOptions
|
|
1331
|
-
| PerseusCSProgramWidgetOptions
|
|
1332
|
-
| PerseusDefinitionWidgetOptions
|
|
1333
|
-
| PerseusDropdownWidgetOptions
|
|
1334
|
-
| PerseusExampleGraphieWidgetOptions
|
|
1335
|
-
| PerseusExampleWidgetOptions
|
|
1336
|
-
| PerseusExplanationWidgetOptions
|
|
1337
|
-
| PerseusExpressionWidgetOptions
|
|
1338
|
-
| PerseusGradedGroupSetWidgetOptions
|
|
1339
|
-
| PerseusGradedGroupWidgetOptions
|
|
1340
|
-
| PerseusIFrameWidgetOptions
|
|
1341
|
-
| PerseusImageWidgetOptions
|
|
1342
|
-
| PerseusInputNumberWidgetOptions
|
|
1343
|
-
| PerseusInteractionWidgetOptions
|
|
1344
|
-
| PerseusInteractiveGraphWidgetOptions
|
|
1345
|
-
| PerseusLabelImageWidgetOptions
|
|
1346
|
-
| PerseusLightsPuzzleWidgetOptions
|
|
1347
|
-
| PerseusMatcherWidgetOptions
|
|
1348
|
-
| PerseusMatrixWidgetOptions
|
|
1349
|
-
| PerseusMeasurerWidgetOptions
|
|
1350
|
-
| PerseusMoleculeRendererWidgetOptions
|
|
1351
|
-
| PerseusNumberLineWidgetOptions
|
|
1352
|
-
| PerseusNumericInputWidgetOptions
|
|
1353
|
-
| PerseusOrdererWidgetOptions
|
|
1354
|
-
| PerseusPassageRefTargetWidgetOptions
|
|
1355
|
-
| PerseusPassageRefWidgetOptions
|
|
1356
|
-
| PerseusPassageWidgetOptions
|
|
1357
|
-
| PerseusPlotterWidgetOptions
|
|
1358
|
-
| PerseusRadioWidgetOptions
|
|
1359
|
-
| PerseusReactionDiagramWidgetOptions
|
|
1360
|
-
| PerseusSequenceWidgetOptions
|
|
1361
|
-
| PerseusSimpleMarkdownTesterWidgetOptions
|
|
1362
|
-
| PerseusSimulatorWidgetOptions
|
|
1363
|
-
| PerseusSorterWidgetOptions
|
|
1364
|
-
| PerseusTableWidgetOptions
|
|
1365
|
-
| PerseusUnitInputWidgetOptions
|
|
1366
|
-
| PerseusVideoWidgetOptions;
|