@khanacademy/perseus 0.0.1 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.babelrc.js +1 -1
- package/CHANGELOG.md +7 -0
- package/dist/es/index.js +15 -1
- package/dist/es/index.js.map +1 -1
- package/dist/index.css +11934 -0
- package/dist/index.js +15 -1
- package/dist/index.js.map +1 -1
- package/dist/strings.js +148 -1
- package/package.json +40 -4
- package/src/README.md +7 -0
- package/src/__stories__/item-renderer.stories.jsx +27 -0
- package/src/__stories__/server-item-renderer.stories.jsx +27 -0
- package/src/__testdata__/item-renderer_testdata.js +161 -0
- package/src/__testdata__/renderer_testdata.js +123 -0
- package/src/__tests__/__snapshots__/item-renderer_test.jsx.snap +233 -0
- package/src/__tests__/__snapshots__/perseus-markdown_test.jsx.snap +516 -0
- package/src/__tests__/__snapshots__/pure-markdown_test.js.snap +113 -0
- package/src/__tests__/__snapshots__/renderer_test.jsx.snap +576 -0
- package/src/__tests__/__snapshots__/server-item-renderer_test.jsx.snap +306 -0
- package/src/__tests__/a11y_test.jsx +304 -0
- package/src/__tests__/item-renderer_test.jsx +892 -0
- package/src/__tests__/mock-asset-loading-widget.jsx +57 -0
- package/src/__tests__/mock-widget.jsx +35 -0
- package/src/__tests__/perseus-markdown_test.jsx +747 -0
- package/src/__tests__/pure-markdown_test.js +552 -0
- package/src/__tests__/renderability_test.jsx +481 -0
- package/src/__tests__/renderer-api_test.jsx +333 -0
- package/src/__tests__/renderer_test.jsx +1792 -0
- package/src/__tests__/server-item-renderer_test.jsx +516 -0
- package/src/__tests__/test-items/image-item.js +25 -0
- package/src/__tests__/test-items/input-number-1-item.js +27 -0
- package/src/__tests__/test-items/input-number-2-item.js +39 -0
- package/src/__tests__/test-items/table-item.js +30 -0
- package/src/__tests__/tex-wrangler_test.js +83 -0
- package/src/__tests__/util_test.js +41 -0
- package/src/a11y.js +46 -0
- package/src/all-widgets.js +9 -0
- package/src/article-renderer.jsx +215 -0
- package/src/asset-context.js +30 -0
- package/src/basic-widgets.js +13 -0
- package/src/components/__stories__/button-group.stories.jsx +61 -0
- package/src/components/__stories__/fixed-to-responsive.stories.jsx +132 -0
- package/src/components/__stories__/graph.stories.jsx +27 -0
- package/src/components/__stories__/graphie.stories.jsx +28 -0
- package/src/components/__stories__/hud.stories.jsx +36 -0
- package/src/components/__stories__/icon.stories.jsx +56 -0
- package/src/components/__stories__/image-loader.stories.jsx +60 -0
- package/src/components/__stories__/info-tip.stories.jsx +33 -0
- package/src/components/__stories__/inline-icon.stories.jsx +39 -0
- package/src/components/__stories__/input-with-examples.stories.jsx +51 -0
- package/src/components/__stories__/lint.stories.jsx +40 -0
- package/src/components/__stories__/math-input.stories.jsx +29 -0
- package/src/components/__stories__/math-output.stories.jsx +24 -0
- package/src/components/__stories__/multi-button-group.stories.jsx +69 -0
- package/src/components/__stories__/number-input.stories.jsx +42 -0
- package/src/components/__stories__/possible-answers.stories.jsx +22 -0
- package/src/components/__stories__/prop-check-box.stories.jsx +62 -0
- package/src/components/__stories__/range-input.stories.jsx +28 -0
- package/src/components/__stories__/simple-keypad-input.stories.jsx +28 -0
- package/src/components/__stories__/sortable.stories.jsx +73 -0
- package/src/components/__stories__/stub-tag-editor.stories.jsx +44 -0
- package/src/components/__stories__/svg-image.stories.jsx +60 -0
- package/src/components/__stories__/tex.stories.jsx +18 -0
- package/src/components/__stories__/text-buttons.stories.jsx +51 -0
- package/src/components/__stories__/text-input.stories.jsx +34 -0
- package/src/components/__stories__/text-list-editor.stories.jsx +33 -0
- package/src/components/__stories__/zoomable-tex.stories.jsx +39 -0
- package/src/components/__stories__/zoomable.stories.jsx +40 -0
- package/src/components/__testdata__/sorter_testdata.js +20 -0
- package/src/components/__tests__/__snapshots__/sortable_test.jsx.snap +79 -0
- package/src/components/__tests__/__snapshots__/sorter_test.jsx.snap +297 -0
- package/src/components/__tests__/number-input_test.jsx +112 -0
- package/src/components/__tests__/sortable_test.jsx +234 -0
- package/src/components/__tests__/sorter_test.jsx +111 -0
- package/src/components/__tests__/zoomable_test.jsx +388 -0
- package/src/components/button-group.jsx +131 -0
- package/src/components/constants.js +15 -0
- package/src/components/fixed-to-responsive.jsx +163 -0
- package/src/components/graph.jsx +414 -0
- package/src/components/graphie-classes.jsx +148 -0
- package/src/components/graphie-movables.jsx +342 -0
- package/src/components/graphie.jsx +353 -0
- package/src/components/highlighting/highlightable-content.jsx +245 -0
- package/src/components/highlighting/highlights.js +208 -0
- package/src/components/highlighting/ranges.js +299 -0
- package/src/components/highlighting/types.js +73 -0
- package/src/components/highlighting/ui/highlight-renderer.jsx +179 -0
- package/src/components/highlighting/ui/highlight-set-renderer.jsx +190 -0
- package/src/components/highlighting/ui/highlight-tooltip.jsx +153 -0
- package/src/components/highlighting/ui/highlighting-ui.jsx +163 -0
- package/src/components/highlighting/ui/selection-tracker.jsx +195 -0
- package/src/components/highlighting/ui/types.js +21 -0
- package/src/components/highlighting/ui/util.js +166 -0
- package/src/components/highlighting/word-indexer.jsx +155 -0
- package/src/components/hud.jsx +179 -0
- package/src/components/icon.jsx +149 -0
- package/src/components/image-loader.jsx +175 -0
- package/src/components/info-tip/info-tip.jsx +149 -0
- package/src/components/info-tip.jsx +38 -0
- package/src/components/inline-icon.jsx +81 -0
- package/src/components/input-with-examples.jsx +231 -0
- package/src/components/lint.jsx +456 -0
- package/src/components/math-input.jsx +282 -0
- package/src/components/math-output.jsx +128 -0
- package/src/components/multi-button-group.jsx +137 -0
- package/src/components/new-tooltip/README.md +110 -0
- package/src/components/new-tooltip/__stories__/flexible-position.stories.jsx +437 -0
- package/src/components/new-tooltip/__stories__/new-tooltip.stories.jsx +665 -0
- package/src/components/new-tooltip/__stories__/tooltip-arrow.stories.jsx +70 -0
- package/src/components/new-tooltip/__stories__/tooltip-bubble.stories.jsx +98 -0
- package/src/components/new-tooltip/__tests__/style-constants_test.js +8 -0
- package/src/components/new-tooltip/__tests__/util_test.js +47 -0
- package/src/components/new-tooltip/flexible-position.jsx +182 -0
- package/src/components/new-tooltip/new-tooltip.jsx +399 -0
- package/src/components/new-tooltip/style-constants.js +13 -0
- package/src/components/new-tooltip/tooltip-arrow.jsx +184 -0
- package/src/components/new-tooltip/tooltip-bubble.jsx +223 -0
- package/src/components/new-tooltip/tooltip-portal.jsx +101 -0
- package/src/components/new-tooltip/tooltip-positioner.jsx +529 -0
- package/src/components/new-tooltip/types.js +183 -0
- package/src/components/new-tooltip/util.js +27 -0
- package/src/components/number-input.jsx +253 -0
- package/src/components/possible-answers.jsx +36 -0
- package/src/components/prop-check-box.jsx +78 -0
- package/src/components/range-input.jsx +61 -0
- package/src/components/simple-keypad-input.jsx +91 -0
- package/src/components/sortable.jsx +872 -0
- package/src/components/stub-tag-editor.jsx +53 -0
- package/src/components/svg-image.jsx +762 -0
- package/src/components/tex-buttons.jsx +322 -0
- package/src/components/tex.jsx +70 -0
- package/src/components/text-input.jsx +82 -0
- package/src/components/text-list-editor.jsx +157 -0
- package/src/components/tooltip.jsx +395 -0
- package/src/components/visibility-observer/__stories__/visibility-observer.stories.jsx +140 -0
- package/src/components/visibility-observer/get-scroll-parent.js +45 -0
- package/src/components/visibility-observer/visibility-observer.js +109 -0
- package/src/components/visibility-observer/visibility-observer.jsx +123 -0
- package/src/components/zoomable-tex.jsx +70 -0
- package/src/components/zoomable.jsx +304 -0
- package/src/components.js +17 -0
- package/src/dependencies.js +22 -0
- package/src/error-boundary.jsx +48 -0
- package/src/extra-widgets.js +75 -0
- package/src/gorgon/README +40 -0
- package/src/gorgon/__tests__/matcher_test.js +497 -0
- package/src/gorgon/__tests__/rule_test.js +101 -0
- package/src/gorgon/__tests__/rules_test.js +487 -0
- package/src/gorgon/__tests__/selector-parser_test.js +52 -0
- package/src/gorgon/__tests__/tree-transformer_test.js +446 -0
- package/src/gorgon/gorgon.js +290 -0
- package/src/gorgon/proptypes.js +29 -0
- package/src/gorgon/rule.js +413 -0
- package/src/gorgon/rules/absolute-url.js +24 -0
- package/src/gorgon/rules/all-rules.js +72 -0
- package/src/gorgon/rules/blockquoted-math.js +10 -0
- package/src/gorgon/rules/blockquoted-widget.js +10 -0
- package/src/gorgon/rules/double-spacing-after-terminal.js +12 -0
- package/src/gorgon/rules/extra-content-spacing.js +12 -0
- package/src/gorgon/rules/heading-level-1.js +14 -0
- package/src/gorgon/rules/heading-level-skip.js +20 -0
- package/src/gorgon/rules/heading-sentence-case.js +11 -0
- package/src/gorgon/rules/heading-title-case.js +63 -0
- package/src/gorgon/rules/image-alt-text.js +21 -0
- package/src/gorgon/rules/image-in-table.js +10 -0
- package/src/gorgon/rules/image-spaces-around-urls.js +35 -0
- package/src/gorgon/rules/image-widget.js +50 -0
- package/src/gorgon/rules/link-click-here.js +11 -0
- package/src/gorgon/rules/lint-utils.js +48 -0
- package/src/gorgon/rules/long-paragraph.js +14 -0
- package/src/gorgon/rules/math-adjacent.js +10 -0
- package/src/gorgon/rules/math-align-extra-break.js +11 -0
- package/src/gorgon/rules/math-align-linebreaks.js +43 -0
- package/src/gorgon/rules/math-empty.js +10 -0
- package/src/gorgon/rules/math-font-size.js +12 -0
- package/src/gorgon/rules/math-frac.js +10 -0
- package/src/gorgon/rules/math-nested.js +11 -0
- package/src/gorgon/rules/math-starts-with-space.js +12 -0
- package/src/gorgon/rules/math-text-empty.js +10 -0
- package/src/gorgon/rules/math-without-dollars.js +14 -0
- package/src/gorgon/rules/nested-lists.js +11 -0
- package/src/gorgon/rules/profanity.js +10 -0
- package/src/gorgon/rules/table-missing-cells.js +20 -0
- package/src/gorgon/rules/unbalanced-code-delimiters.js +14 -0
- package/src/gorgon/rules/unescaped-dollar.js +10 -0
- package/src/gorgon/rules/widget-in-table.js +10 -0
- package/src/gorgon/selector.js +506 -0
- package/src/gorgon/tree-transformer.js +588 -0
- package/src/hint-renderer.jsx +159 -0
- package/src/hints-renderer.jsx +359 -0
- package/src/icon-paths.js +120 -0
- package/src/index.js +149 -2
- package/src/init.js +49 -0
- package/src/interaction-tracker.js +60 -0
- package/src/interactive2/__tests__/movable-mock.js +48 -0
- package/src/interactive2/__tests__/movable-point_test.js +146 -0
- package/src/interactive2/interactive-util.js +152 -0
- package/src/interactive2/movable-helper-methods.js +160 -0
- package/src/interactive2/movable-line-options.js +392 -0
- package/src/interactive2/movable-line.js +322 -0
- package/src/interactive2/movable-point-options.js +190 -0
- package/src/interactive2/movable-point.jsx +604 -0
- package/src/interactive2/movable-polygon-options.js +351 -0
- package/src/interactive2/movable-polygon.js +367 -0
- package/src/interactive2/movable.js +273 -0
- package/src/interactive2/objective_.js +79 -0
- package/src/interactive2/types.js +3 -0
- package/src/interactive2/wrapped-defaults.js +86 -0
- package/src/interactive2/wrapped-ellipse.js +87 -0
- package/src/interactive2/wrapped-line.js +109 -0
- package/src/interactive2/wrapped-path.js +47 -0
- package/src/interactive2.js +91 -0
- package/src/item-renderer.jsx +518 -0
- package/src/item-version.js +12 -0
- package/src/jipt-paragraphs.js +44 -0
- package/src/jquery.mobile.vmouse.js +545 -0
- package/src/keypad-context.js +33 -0
- package/src/loading-context.js +20 -0
- package/src/logging/log.js +107 -0
- package/src/logging/log_test.js +41 -0
- package/src/mixins/changeable.jsx +115 -0
- package/src/mixins/editor-jsonify.jsx +13 -0
- package/src/mixins/provide-keypad.jsx +131 -0
- package/src/mixins/widget-jsonify-deprecated.jsx +23 -0
- package/src/mixins/widget-prop-blacklist.js +36 -0
- package/src/multi-items/__stories__/multi-renderer.stories.js +88 -0
- package/src/multi-items/__testdata__/multi-renderer_testdata.js +174 -0
- package/src/multi-items/__tests__/__snapshots__/multi-renderer_test.js.snap +994 -0
- package/src/multi-items/__tests__/items_test.js +245 -0
- package/src/multi-items/__tests__/multi-renderer_test.js +903 -0
- package/src/multi-items/__tests__/prop-type-builders_test.js +134 -0
- package/src/multi-items/__tests__/shapes_test.js +44 -0
- package/src/multi-items/__tests__/trees_test.js +316 -0
- package/src/multi-items/item-types.js +55 -0
- package/src/multi-items/items.js +176 -0
- package/src/multi-items/multi-renderer.jsx +542 -0
- package/src/multi-items/prop-type-builders.js +105 -0
- package/src/multi-items/shape-types.js +47 -0
- package/src/multi-items/shapes.js +53 -0
- package/src/multi-items/tree-types.js +42 -0
- package/src/multi-items/trees.js +345 -0
- package/src/multi-items.js +76 -0
- package/src/not-gorgon.js +129 -0
- package/src/perseus-api.jsx +270 -0
- package/src/perseus-env.js +26 -0
- package/src/perseus-error.js +19 -0
- package/src/perseus-markdown.jsx +434 -0
- package/src/perseus-types.js +1597 -0
- package/src/pure-markdown.js +346 -0
- package/src/question-paragraph.jsx +30 -0
- package/src/renderability.jsx +108 -0
- package/src/renderer.jsx +1931 -0
- package/src/server-item-renderer.jsx +467 -0
- package/src/sigfigs.jsx +492 -0
- package/src/styles/articles.less +748 -0
- package/src/styles/constants.js +119 -0
- package/src/styles/global-constants.js +350 -0
- package/src/styles/global-styles.js +307 -0
- package/src/styles/khan-exercise.css +1304 -0
- package/src/styles/media-queries.js +48 -0
- package/src/styles/perseus-renderer.less +1008 -0
- package/src/styles/shared.js +132 -0
- package/src/styles/util.less +47 -0
- package/src/styles/variables.boostrap.less +301 -0
- package/src/styles/variables.less +68 -0
- package/src/styles/variables.shared.less +356 -0
- package/src/styles/widgets/categorizer.less +39 -0
- package/src/styles/widgets/definition.less +86 -0
- package/src/styles/widgets/dropdown.less +3 -0
- package/src/styles/widgets/expression.less +147 -0
- package/src/styles/widgets/graded-group.less +36 -0
- package/src/styles/widgets/grapher.less +11 -0
- package/src/styles/widgets/group.less +19 -0
- package/src/styles/widgets/image.less +29 -0
- package/src/styles/widgets/interactive-graph.less +61 -0
- package/src/styles/widgets/label-image.less +41 -0
- package/src/styles/widgets/matcher.less +8 -0
- package/src/styles/widgets/matrix.less +120 -0
- package/src/styles/widgets/measurer.less +20 -0
- package/src/styles/widgets/orderer.less +97 -0
- package/src/styles/widgets/passage.less +151 -0
- package/src/styles/widgets/plotter.less +33 -0
- package/src/styles/widgets/radio.less +52 -0
- package/src/styles/widgets/reaction-diagram.less +35 -0
- package/src/styles/widgets/sequence.less +5 -0
- package/src/styles/widgets/sortable.less +127 -0
- package/src/styles/widgets/table.less +56 -0
- package/src/styles/widgets/transformer.less +28 -0
- package/src/styles/widgets/unit.less +14 -0
- package/src/tex-wrangler.js +176 -0
- package/src/traversal.jsx +141 -0
- package/src/types.js +538 -0
- package/src/util/a11y.js +24 -0
- package/src/util/answer-types.js +862 -0
- package/src/util/answer-types_test.js +115 -0
- package/src/util/colors.js +94 -0
- package/src/util/fix-passage-refs.jsx +122 -0
- package/src/util/graph-utils.js +16 -0
- package/src/util/graphie.js +1585 -0
- package/src/util/interactive.js +4071 -0
- package/src/util/katex-preprocess.js +16 -0
- package/src/util/math.js +296 -0
- package/src/util/mobile-native-utils.js +14 -0
- package/src/util/mobile-native-utils_test.js +24 -0
- package/src/util/register-all-widgets-for-testing.js +12 -0
- package/src/util/scroll-utils.js +162 -0
- package/src/util/sizing-utils.js +46 -0
- package/src/util/tex.js +203 -0
- package/src/util/url-utils.js +36 -0
- package/src/util.js +990 -0
- package/src/version.js +11 -0
- package/src/widget-container.jsx +174 -0
- package/src/widgets/__stories__/categorizer.stories.jsx +15 -0
- package/src/widgets/__stories__/cs-program.stories.jsx +15 -0
- package/src/widgets/__stories__/definition.stories.jsx +38 -0
- package/src/widgets/__stories__/dropdown.stories.jsx +15 -0
- package/src/widgets/__stories__/explanation.stories.jsx +19 -0
- package/src/widgets/__stories__/expression.stories.jsx +26 -0
- package/src/widgets/__stories__/graded-group-set.stories.jsx +32 -0
- package/src/widgets/__stories__/graded-group.stories.jsx +32 -0
- package/src/widgets/__stories__/grapher.stories.jsx +47 -0
- package/src/widgets/__stories__/group.stories.jsx +15 -0
- package/src/widgets/__stories__/iframe.stories.jsx +15 -0
- package/src/widgets/__stories__/image.stories.jsx +62 -0
- package/src/widgets/__stories__/input-number.stories.jsx +90 -0
- package/src/widgets/__stories__/interaction.stories.jsx +15 -0
- package/src/widgets/__stories__/interactive-graph.stories.jsx +61 -0
- package/src/widgets/__stories__/matcher.stories.jsx +15 -0
- package/src/widgets/__stories__/matrix.stories.jsx +15 -0
- package/src/widgets/__stories__/number-line.stories.jsx +15 -0
- package/src/widgets/__stories__/numeric-input.stories.jsx +19 -0
- package/src/widgets/__stories__/orderer.stories.jsx +15 -0
- package/src/widgets/__stories__/passage-ref.stories.jsx +19 -0
- package/src/widgets/__stories__/passage.stories.jsx +19 -0
- package/src/widgets/__stories__/radio.stories.jsx +82 -0
- package/src/widgets/__stories__/sorter.stories.jsx +15 -0
- package/src/widgets/__stories__/transformer.stories.jsx +15 -0
- package/src/widgets/__stories__/video.stories.jsx +15 -0
- package/src/widgets/__testdata__/categorizer_testdata.js +50 -0
- package/src/widgets/__testdata__/cs-program_testdata.js +28 -0
- package/src/widgets/__testdata__/dropdown_testdata.js +34 -0
- package/src/widgets/__testdata__/explanation_testdata.js +56 -0
- package/src/widgets/__testdata__/expression_testdata.js +95 -0
- package/src/widgets/__testdata__/graded-group-set_testdata.js +358 -0
- package/src/widgets/__testdata__/graded-group_testdata.js +79 -0
- package/src/widgets/__testdata__/grapher_testdata.js +376 -0
- package/src/widgets/__testdata__/group_testdata.js +156 -0
- package/src/widgets/__testdata__/iframe_testdata.js +36 -0
- package/src/widgets/__testdata__/image_testdata.js +38 -0
- package/src/widgets/__testdata__/input-number_testdata.js +73 -0
- package/src/widgets/__testdata__/interaction_testdata.js +264 -0
- package/src/widgets/__testdata__/interactive-graph_testdata.js +646 -0
- package/src/widgets/__testdata__/matcher_testdata.js +34 -0
- package/src/widgets/__testdata__/matrix_testdata.js +29 -0
- package/src/widgets/__testdata__/number-line_testdata.js +31 -0
- package/src/widgets/__testdata__/numeric-input_testdata.js +266 -0
- package/src/widgets/__testdata__/orderer_testdata.js +58 -0
- package/src/widgets/__testdata__/passage-ref_testdata.js +41 -0
- package/src/widgets/__testdata__/passage_testdata.js +71 -0
- package/src/widgets/__testdata__/radio_testdata.js +210 -0
- package/src/widgets/__testdata__/sorter_testdata.js +20 -0
- package/src/widgets/__testdata__/transformer_testdata.js +109 -0
- package/src/widgets/__testdata__/video_testdata.js +22 -0
- package/src/widgets/__tests__/__snapshots__/categorizer_test.jsx.snap +928 -0
- package/src/widgets/__tests__/__snapshots__/cs-program_test.jsx.snap +75 -0
- package/src/widgets/__tests__/__snapshots__/definition_test.js.snap +99 -0
- package/src/widgets/__tests__/__snapshots__/dropdown_test.jsx.snap +143 -0
- package/src/widgets/__tests__/__snapshots__/explanation_test.js.snap +473 -0
- package/src/widgets/__tests__/__snapshots__/expression_test.jsx.snap +38 -0
- package/src/widgets/__tests__/__snapshots__/graded-group-set-jipt_test.jsx.snap +754 -0
- package/src/widgets/__tests__/__snapshots__/graded-group-set_test.jsx.snap +310 -0
- package/src/widgets/__tests__/__snapshots__/graded-group_test.jsx.snap +863 -0
- package/src/widgets/__tests__/__snapshots__/grapher_test.jsx.snap +2880 -0
- package/src/widgets/__tests__/__snapshots__/group_test.jsx.snap +1154 -0
- package/src/widgets/__tests__/__snapshots__/iframe_test.jsx.snap +69 -0
- package/src/widgets/__tests__/__snapshots__/image_test.jsx.snap +388 -0
- package/src/widgets/__tests__/__snapshots__/input-number_test.jsx.snap +978 -0
- package/src/widgets/__tests__/__snapshots__/interaction_test.jsx.snap +311 -0
- package/src/widgets/__tests__/__snapshots__/interactive-graph_test.jsx.snap +2915 -0
- package/src/widgets/__tests__/__snapshots__/matcher_test.jsx.snap +1039 -0
- package/src/widgets/__tests__/__snapshots__/matrix_test.jsx.snap +450 -0
- package/src/widgets/__tests__/__snapshots__/number-line_test.jsx.snap +888 -0
- package/src/widgets/__tests__/__snapshots__/numeric-input_test.jsx.snap +930 -0
- package/src/widgets/__tests__/__snapshots__/orderer_test.jsx.snap +275 -0
- package/src/widgets/__tests__/__snapshots__/passage-ref_test.jsx.snap +446 -0
- package/src/widgets/__tests__/__snapshots__/passage_test.jsx.snap +1988 -0
- package/src/widgets/__tests__/__snapshots__/radio_test.jsx.snap +7107 -0
- package/src/widgets/__tests__/__snapshots__/video_test.jsx.snap +163 -0
- package/src/widgets/__tests__/categorizer_test.jsx +205 -0
- package/src/widgets/__tests__/cs-program_test.jsx +45 -0
- package/src/widgets/__tests__/definition_test.js +152 -0
- package/src/widgets/__tests__/dropdown_test.jsx +106 -0
- package/src/widgets/__tests__/explanation_test.js +199 -0
- package/src/widgets/__tests__/expression_test.jsx +439 -0
- package/src/widgets/__tests__/graded-group-set-jipt_test.jsx +33 -0
- package/src/widgets/__tests__/graded-group-set_test.jsx +270 -0
- package/src/widgets/__tests__/graded-group_test.jsx +233 -0
- package/src/widgets/__tests__/grapher.cypress.jsx +486 -0
- package/src/widgets/__tests__/grapher_test.jsx +35 -0
- package/src/widgets/__tests__/group_test.jsx +512 -0
- package/src/widgets/__tests__/iframe_test.jsx +47 -0
- package/src/widgets/__tests__/image_test.jsx +65 -0
- package/src/widgets/__tests__/input-number_test.jsx +360 -0
- package/src/widgets/__tests__/interaction_test.jsx +33 -0
- package/src/widgets/__tests__/interactive-graph.cypress.jsx +697 -0
- package/src/widgets/__tests__/interactive-graph_test.jsx +105 -0
- package/src/widgets/__tests__/matcher_test.jsx +157 -0
- package/src/widgets/__tests__/matrix_test.jsx +84 -0
- package/src/widgets/__tests__/number-line_test.jsx +81 -0
- package/src/widgets/__tests__/numeric-input_test.jsx +574 -0
- package/src/widgets/__tests__/orderer_test.jsx +75 -0
- package/src/widgets/__tests__/passage-ref_test.jsx +166 -0
- package/src/widgets/__tests__/passage_test.jsx +133 -0
- package/src/widgets/__tests__/radio/base-radio_test.jsx +82 -0
- package/src/widgets/__tests__/radio_test.jsx +651 -0
- package/src/widgets/__tests__/renderQuestion.jsx +65 -0
- package/src/widgets/__tests__/unit_test.jsx +144 -0
- package/src/widgets/__tests__/video_test.jsx +55 -0
- package/src/widgets/categorizer.jsx +338 -0
- package/src/widgets/cs-program.jsx +228 -0
- package/src/widgets/definition.jsx +141 -0
- package/src/widgets/dropdown.jsx +143 -0
- package/src/widgets/explanation.jsx +315 -0
- package/src/widgets/expression.jsx +654 -0
- package/src/widgets/graded-group-answer-bar.jsx +152 -0
- package/src/widgets/graded-group-set.jsx +285 -0
- package/src/widgets/graded-group.jsx +448 -0
- package/src/widgets/grapher/util.jsx +819 -0
- package/src/widgets/grapher.jsx +658 -0
- package/src/widgets/group.jsx +213 -0
- package/src/widgets/iframe.jsx +199 -0
- package/src/widgets/image.jsx +309 -0
- package/src/widgets/input-number.jsx +410 -0
- package/src/widgets/interaction/arrow-picker.jsx +39 -0
- package/src/widgets/interaction/color-picker.jsx +69 -0
- package/src/widgets/interaction/dash-picker.jsx +46 -0
- package/src/widgets/interaction/element-container.jsx +97 -0
- package/src/widgets/interaction.jsx +742 -0
- package/src/widgets/interactive-graph.jsx +2821 -0
- package/src/widgets/label-image/__stories__/answer-choices.stories.jsx +93 -0
- package/src/widgets/label-image/__stories__/marker.stories.jsx +172 -0
- package/src/widgets/label-image/answer-choices.jsx +311 -0
- package/src/widgets/label-image/marker.jsx +365 -0
- package/src/widgets/label-image/types.js +33 -0
- package/src/widgets/label-image.jsx +841 -0
- package/src/widgets/label-image_test.js +840 -0
- package/src/widgets/lights-puzzle.jsx +356 -0
- package/src/widgets/matcher.jsx +271 -0
- package/src/widgets/matrix.jsx +615 -0
- package/src/widgets/measurer.jsx +215 -0
- package/src/widgets/molecule/__tests__/layout_test.jsx +159 -0
- package/src/widgets/molecule/__tests__/parser_test.jsx +142 -0
- package/src/widgets/molecule/molecule-drawing.jsx +175 -0
- package/src/widgets/molecule/molecule-layout.jsx +367 -0
- package/src/widgets/molecule/smiles-parser.jsx +300 -0
- package/src/widgets/molecule.jsx +172 -0
- package/src/widgets/number-line.jsx +858 -0
- package/src/widgets/numeric-input.jsx +622 -0
- package/src/widgets/orderer.jsx +753 -0
- package/src/widgets/passage/__tests__/passage-markdown_test.jsx +382 -0
- package/src/widgets/passage/get-line-height-for-node.js +10 -0
- package/src/widgets/passage/passage-markdown.jsx +416 -0
- package/src/widgets/passage-ref-target.jsx +70 -0
- package/src/widgets/passage-ref.jsx +198 -0
- package/src/widgets/passage.jsx +601 -0
- package/src/widgets/plotter.jsx +1198 -0
- package/src/widgets/radio/__stories__/base-radio.stories.jsx +40 -0
- package/src/widgets/radio/__stories__/choice-icon.stories.jsx +157 -0
- package/src/widgets/radio/__stories__/choice-none-above.stories.jsx +26 -0
- package/src/widgets/radio/__stories__/cross-out-button.stories.jsx +64 -0
- package/src/widgets/radio/__stories__/cross-out-menu.stories.jsx +59 -0
- package/src/widgets/radio/__stories__/cross-out-tooltip.stories.jsx +59 -0
- package/src/widgets/radio/__stories__/focus-ring.stories.jsx +38 -0
- package/src/widgets/radio/__stories__/option-status.stories.jsx +118 -0
- package/src/widgets/radio/__stories__/toggleable-radio-button.stories.jsx +28 -0
- package/src/widgets/radio/base-radio.jsx +642 -0
- package/src/widgets/radio/choice-icon.jsx +468 -0
- package/src/widgets/radio/choice-none-above.jsx +54 -0
- package/src/widgets/radio/choice.jsx +692 -0
- package/src/widgets/radio/choice.jsx.fixture.js +64 -0
- package/src/widgets/radio/cross-out-button.jsx +136 -0
- package/src/widgets/radio/cross-out-menu-wrapper.jsx +492 -0
- package/src/widgets/radio/cross-out-tooltip.jsx +129 -0
- package/src/widgets/radio/focus-ring.jsx +51 -0
- package/src/widgets/radio/option-status.jsx +89 -0
- package/src/widgets/radio/toggleable-radio-button.jsx +133 -0
- package/src/widgets/radio/util.js +32 -0
- package/src/widgets/radio/util_test.js +19 -0
- package/src/widgets/radio/widget.jsx +470 -0
- package/src/widgets/radio.jsx +156 -0
- package/src/widgets/reaction-diagram.jsx +136 -0
- package/src/widgets/sequence.jsx +140 -0
- package/src/widgets/simulator.jsx +808 -0
- package/src/widgets/sorter.jsx +146 -0
- package/src/widgets/table.jsx +395 -0
- package/src/widgets/transformer.jsx +2870 -0
- package/src/widgets/unit.jsx +371 -0
- package/src/widgets/video-transcript-link.jsx +84 -0
- package/src/widgets/video-transcript-link_test.js +211 -0
- package/src/widgets/video.jsx +131 -0
- package/src/widgets.js +431 -0
- package/src/zoom.js +539 -0
- package/src/__tests__/index.test.js +0 -14
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
// @flow
|
|
2
|
+
import type {PerseusRenderer} from "../../perseus-types.js";
|
|
3
|
+
|
|
4
|
+
export const question1: PerseusRenderer = {
|
|
5
|
+
content:
|
|
6
|
+
"$E=2.5$\n\n**Move the dot to $-E$ on the number line.**\n\n\n[[\u2603 number-line 1]]",
|
|
7
|
+
images: {},
|
|
8
|
+
widgets: {
|
|
9
|
+
"number-line 1": {
|
|
10
|
+
graded: true,
|
|
11
|
+
version: {major: 0, minor: 0},
|
|
12
|
+
static: false,
|
|
13
|
+
type: "number-line",
|
|
14
|
+
options: {
|
|
15
|
+
labelRange: [null, null],
|
|
16
|
+
initialX: null,
|
|
17
|
+
tickStep: 1,
|
|
18
|
+
labelStyle: "decimal",
|
|
19
|
+
labelTicks: true,
|
|
20
|
+
snapDivisions: 2,
|
|
21
|
+
range: [-4, 4],
|
|
22
|
+
static: false,
|
|
23
|
+
correctRel: "eq",
|
|
24
|
+
numDivisions: null,
|
|
25
|
+
divisionRange: [1, 10],
|
|
26
|
+
correctX: -2.5,
|
|
27
|
+
},
|
|
28
|
+
alignment: "default",
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
};
|
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
// @flow
|
|
2
|
+
import type {PerseusRenderer, NumericInputWidget} from "../../perseus-types.js";
|
|
3
|
+
|
|
4
|
+
export const question1: PerseusRenderer = {
|
|
5
|
+
content: "$5008 \\div 4 =$ [[\u2603 numeric-input 1]] ",
|
|
6
|
+
images: {},
|
|
7
|
+
widgets: {
|
|
8
|
+
"numeric-input 1": ({
|
|
9
|
+
graded: true,
|
|
10
|
+
version: {
|
|
11
|
+
major: 0,
|
|
12
|
+
minor: 0,
|
|
13
|
+
},
|
|
14
|
+
static: false,
|
|
15
|
+
type: "numeric-input",
|
|
16
|
+
options: {
|
|
17
|
+
coefficient: false,
|
|
18
|
+
static: false,
|
|
19
|
+
answers: [
|
|
20
|
+
{
|
|
21
|
+
status: "correct",
|
|
22
|
+
maxError: null,
|
|
23
|
+
strict: false,
|
|
24
|
+
value: 1252,
|
|
25
|
+
simplify: "required",
|
|
26
|
+
message: "",
|
|
27
|
+
},
|
|
28
|
+
],
|
|
29
|
+
labelText: "",
|
|
30
|
+
size: "normal",
|
|
31
|
+
},
|
|
32
|
+
alignment: "default",
|
|
33
|
+
}: NumericInputWidget),
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
export const question2: PerseusRenderer = {
|
|
38
|
+
content: "$5008 \\div 4 =$ [[\u2603 numeric-input 1]] ",
|
|
39
|
+
images: {},
|
|
40
|
+
widgets: {
|
|
41
|
+
"numeric-input 1": ({
|
|
42
|
+
graded: true,
|
|
43
|
+
version: {
|
|
44
|
+
major: 0,
|
|
45
|
+
minor: 0,
|
|
46
|
+
},
|
|
47
|
+
static: false,
|
|
48
|
+
type: "numeric-input",
|
|
49
|
+
options: {
|
|
50
|
+
coefficient: false,
|
|
51
|
+
static: false,
|
|
52
|
+
answers: [
|
|
53
|
+
{
|
|
54
|
+
status: "correct",
|
|
55
|
+
maxError: null,
|
|
56
|
+
strict: false,
|
|
57
|
+
value: 1252,
|
|
58
|
+
simplify: "required",
|
|
59
|
+
message: "",
|
|
60
|
+
},
|
|
61
|
+
],
|
|
62
|
+
labelText: "What's the answer?",
|
|
63
|
+
size: "normal",
|
|
64
|
+
},
|
|
65
|
+
alignment: "default",
|
|
66
|
+
}: NumericInputWidget),
|
|
67
|
+
},
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
export const percentageProblem: PerseusRenderer = {
|
|
71
|
+
content: "$5008 \\div 4 =$ [[\u2603 numeric-input 1]] ",
|
|
72
|
+
images: {},
|
|
73
|
+
widgets: {
|
|
74
|
+
"numeric-input 1": ({
|
|
75
|
+
graded: true,
|
|
76
|
+
version: {
|
|
77
|
+
major: 0,
|
|
78
|
+
minor: 0,
|
|
79
|
+
},
|
|
80
|
+
static: false,
|
|
81
|
+
type: "numeric-input",
|
|
82
|
+
options: {
|
|
83
|
+
coefficient: false,
|
|
84
|
+
static: false,
|
|
85
|
+
answers: [
|
|
86
|
+
{
|
|
87
|
+
status: "correct",
|
|
88
|
+
maxError: null,
|
|
89
|
+
strict: false,
|
|
90
|
+
// $FlowFixMe[incompatible-cast] I need this to be a percent
|
|
91
|
+
value: "33%",
|
|
92
|
+
simplify: "required",
|
|
93
|
+
message: "",
|
|
94
|
+
},
|
|
95
|
+
],
|
|
96
|
+
labelText: "What's the answer?",
|
|
97
|
+
size: "normal",
|
|
98
|
+
},
|
|
99
|
+
alignment: "default",
|
|
100
|
+
}: NumericInputWidget),
|
|
101
|
+
},
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
export const multipleAnswers: PerseusRenderer = {
|
|
105
|
+
content: "$5008 \\div 4 =$ [[\u2603 numeric-input 1]] ",
|
|
106
|
+
images: {},
|
|
107
|
+
widgets: {
|
|
108
|
+
"numeric-input 1": ({
|
|
109
|
+
graded: true,
|
|
110
|
+
version: {
|
|
111
|
+
major: 0,
|
|
112
|
+
minor: 0,
|
|
113
|
+
},
|
|
114
|
+
static: false,
|
|
115
|
+
type: "numeric-input",
|
|
116
|
+
options: {
|
|
117
|
+
coefficient: false,
|
|
118
|
+
static: false,
|
|
119
|
+
answers: [
|
|
120
|
+
{
|
|
121
|
+
status: "correct",
|
|
122
|
+
maxError: null,
|
|
123
|
+
strict: false,
|
|
124
|
+
value: 1,
|
|
125
|
+
simplify: "required",
|
|
126
|
+
message: "",
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
status: "correct",
|
|
130
|
+
maxError: null,
|
|
131
|
+
strict: false,
|
|
132
|
+
value: 2,
|
|
133
|
+
simplify: "required",
|
|
134
|
+
message: "",
|
|
135
|
+
},
|
|
136
|
+
],
|
|
137
|
+
labelText: "What's the answer?",
|
|
138
|
+
size: "normal",
|
|
139
|
+
},
|
|
140
|
+
alignment: "default",
|
|
141
|
+
}: NumericInputWidget),
|
|
142
|
+
},
|
|
143
|
+
};
|
|
144
|
+
|
|
145
|
+
export const multipleAnswersWithDecimals: PerseusRenderer = {
|
|
146
|
+
content: "$5008 \\div 4 =$ [[\u2603 numeric-input 1]] ",
|
|
147
|
+
images: {},
|
|
148
|
+
widgets: {
|
|
149
|
+
"numeric-input 1": ({
|
|
150
|
+
graded: true,
|
|
151
|
+
version: {
|
|
152
|
+
major: 0,
|
|
153
|
+
minor: 0,
|
|
154
|
+
},
|
|
155
|
+
static: false,
|
|
156
|
+
type: "numeric-input",
|
|
157
|
+
options: {
|
|
158
|
+
coefficient: false,
|
|
159
|
+
static: false,
|
|
160
|
+
answers: [
|
|
161
|
+
{
|
|
162
|
+
status: "correct",
|
|
163
|
+
maxError: null,
|
|
164
|
+
strict: false,
|
|
165
|
+
value: 12.2,
|
|
166
|
+
simplify: "required",
|
|
167
|
+
message: "",
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
status: "correct",
|
|
171
|
+
maxError: null,
|
|
172
|
+
strict: false,
|
|
173
|
+
value: 13.4,
|
|
174
|
+
simplify: "required",
|
|
175
|
+
message: "",
|
|
176
|
+
},
|
|
177
|
+
],
|
|
178
|
+
labelText: "What's the answer?",
|
|
179
|
+
size: "normal",
|
|
180
|
+
},
|
|
181
|
+
alignment: "default",
|
|
182
|
+
}: NumericInputWidget),
|
|
183
|
+
},
|
|
184
|
+
};
|
|
185
|
+
|
|
186
|
+
export const duplicatedAnswers: PerseusRenderer = {
|
|
187
|
+
content: "$5008 \\div 4 =$ [[\u2603 numeric-input 1]] ",
|
|
188
|
+
images: {},
|
|
189
|
+
widgets: {
|
|
190
|
+
"numeric-input 1": ({
|
|
191
|
+
graded: true,
|
|
192
|
+
version: {
|
|
193
|
+
major: 0,
|
|
194
|
+
minor: 0,
|
|
195
|
+
},
|
|
196
|
+
static: false,
|
|
197
|
+
type: "numeric-input",
|
|
198
|
+
options: {
|
|
199
|
+
coefficient: false,
|
|
200
|
+
static: false,
|
|
201
|
+
answers: [
|
|
202
|
+
{
|
|
203
|
+
status: "correct",
|
|
204
|
+
maxError: null,
|
|
205
|
+
strict: false,
|
|
206
|
+
value: 2.4,
|
|
207
|
+
simplify: "optional",
|
|
208
|
+
answerForms: ["proper", "mixed", "improper"],
|
|
209
|
+
message: "",
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
status: "correct",
|
|
213
|
+
maxError: null,
|
|
214
|
+
strict: false,
|
|
215
|
+
value: 2.4,
|
|
216
|
+
simplify: "optional",
|
|
217
|
+
answerForms: ["proper", "mixed", "improper"],
|
|
218
|
+
message: "",
|
|
219
|
+
},
|
|
220
|
+
],
|
|
221
|
+
labelText: "What's the answer?",
|
|
222
|
+
size: "normal",
|
|
223
|
+
},
|
|
224
|
+
alignment: "default",
|
|
225
|
+
}: NumericInputWidget),
|
|
226
|
+
},
|
|
227
|
+
};
|
|
228
|
+
|
|
229
|
+
export const withCoefficient: PerseusRenderer = {
|
|
230
|
+
content: "$5008 \\div 4 =$ [[\u2603 numeric-input 1]] ",
|
|
231
|
+
images: {},
|
|
232
|
+
widgets: {
|
|
233
|
+
"numeric-input 1": ({
|
|
234
|
+
graded: true,
|
|
235
|
+
version: {
|
|
236
|
+
major: 0,
|
|
237
|
+
minor: 0,
|
|
238
|
+
},
|
|
239
|
+
static: false,
|
|
240
|
+
type: "numeric-input",
|
|
241
|
+
options: {
|
|
242
|
+
coefficient: true,
|
|
243
|
+
static: false,
|
|
244
|
+
answers: [
|
|
245
|
+
{
|
|
246
|
+
status: "correct",
|
|
247
|
+
maxError: null,
|
|
248
|
+
strict: false,
|
|
249
|
+
value: 1,
|
|
250
|
+
simplify: "required",
|
|
251
|
+
message: "",
|
|
252
|
+
},
|
|
253
|
+
],
|
|
254
|
+
labelText: "What's the answer?",
|
|
255
|
+
size: "normal",
|
|
256
|
+
},
|
|
257
|
+
alignment: "default",
|
|
258
|
+
}: NumericInputWidget),
|
|
259
|
+
},
|
|
260
|
+
};
|
|
261
|
+
|
|
262
|
+
export const question1AndAnswer: [PerseusRenderer, string, string] = [
|
|
263
|
+
question1,
|
|
264
|
+
"1252",
|
|
265
|
+
"1/2",
|
|
266
|
+
];
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
// @flow
|
|
2
|
+
import type {PerseusRenderer} from "../../perseus-types.js";
|
|
3
|
+
|
|
4
|
+
export const question1: PerseusRenderer = {
|
|
5
|
+
content:
|
|
6
|
+
"**Without using a calculator, put the numbers in order from least to greatest.** \n\n[[\u2603 orderer 1]]",
|
|
7
|
+
images: {},
|
|
8
|
+
widgets: {
|
|
9
|
+
"orderer 1": {
|
|
10
|
+
version: {major: 0, minor: 0},
|
|
11
|
+
type: "orderer",
|
|
12
|
+
graded: true,
|
|
13
|
+
options: {
|
|
14
|
+
otherOptions: [],
|
|
15
|
+
layout: "horizontal",
|
|
16
|
+
options: [
|
|
17
|
+
{content: "$10.9$", images: {}, widgets: {}},
|
|
18
|
+
{content: "$11$", images: {}, widgets: {}},
|
|
19
|
+
{content: "$\\sqrt{120}$", images: {}, widgets: {}},
|
|
20
|
+
],
|
|
21
|
+
correctOptions: [
|
|
22
|
+
{content: "$10.9$", images: {}, widgets: {}},
|
|
23
|
+
{content: "$\\sqrt{120}$", images: {}, widgets: {}},
|
|
24
|
+
{content: "$11$", images: {}, widgets: {}},
|
|
25
|
+
],
|
|
26
|
+
height: "normal",
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
export const question2: PerseusRenderer = {
|
|
33
|
+
content:
|
|
34
|
+
"**Without using a calculator, put the numbers in order from least to greatest.** \n\n[[\u2603 orderer 1]]",
|
|
35
|
+
images: {},
|
|
36
|
+
widgets: {
|
|
37
|
+
"orderer 1": {
|
|
38
|
+
version: {major: 0, minor: 0},
|
|
39
|
+
type: "orderer",
|
|
40
|
+
graded: true,
|
|
41
|
+
options: {
|
|
42
|
+
otherOptions: [],
|
|
43
|
+
layout: "horizontal",
|
|
44
|
+
options: [
|
|
45
|
+
{content: "1", images: {}, widgets: {}},
|
|
46
|
+
{content: "3", images: {}, widgets: {}},
|
|
47
|
+
{content: "2", images: {}, widgets: {}},
|
|
48
|
+
],
|
|
49
|
+
correctOptions: [
|
|
50
|
+
{content: "1", images: {}, widgets: {}},
|
|
51
|
+
{content: "2", images: {}, widgets: {}},
|
|
52
|
+
{content: "3", images: {}, widgets: {}},
|
|
53
|
+
],
|
|
54
|
+
height: "normal",
|
|
55
|
+
},
|
|
56
|
+
},
|
|
57
|
+
},
|
|
58
|
+
};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
// @flow
|
|
2
|
+
|
|
3
|
+
import type {PerseusRenderer} from "../../perseus-types.js";
|
|
4
|
+
|
|
5
|
+
export const question1: PerseusRenderer = {
|
|
6
|
+
content:
|
|
7
|
+
"[[☃ passage 1]]\n\nWe can see the word “promotes” is used in [[☃ passage-ref 1]]\n\n",
|
|
8
|
+
images: {},
|
|
9
|
+
widgets: {
|
|
10
|
+
"passage 1": {
|
|
11
|
+
alignment: "default",
|
|
12
|
+
graded: true,
|
|
13
|
+
options: {
|
|
14
|
+
footnotes: "",
|
|
15
|
+
passageText:
|
|
16
|
+
"Our electronic devices are keeping us awake—not just because we spend time using them when we should be sleeping, but also because they emit a blue light that keeps our brains awake. One study showed that people who used screens that emitted blue light were unable to produce sufficient melatonin, a hormone that {{promotes}} sleep. In order to enjoy a more restful night, experts recommend shutting off screens at least two hours before bed. ",
|
|
17
|
+
passageTitle: "",
|
|
18
|
+
showLineNumbers: true,
|
|
19
|
+
static: false,
|
|
20
|
+
},
|
|
21
|
+
static: false,
|
|
22
|
+
type: "passage",
|
|
23
|
+
version: {
|
|
24
|
+
major: 0,
|
|
25
|
+
minor: 0,
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
"passage-ref 1": {
|
|
29
|
+
options: {
|
|
30
|
+
passageNumber: 1,
|
|
31
|
+
referenceNumber: 1,
|
|
32
|
+
summaryText: "",
|
|
33
|
+
},
|
|
34
|
+
type: "passage-ref",
|
|
35
|
+
version: {
|
|
36
|
+
major: 0,
|
|
37
|
+
minor: 1,
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
};
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
// @flow
|
|
2
|
+
import type {PerseusRenderer} from "../../perseus-types.js";
|
|
3
|
+
|
|
4
|
+
export const question1: PerseusRenderer = {
|
|
5
|
+
content: "[[☃ passage 1]]\n\n",
|
|
6
|
+
images: {},
|
|
7
|
+
widgets: {
|
|
8
|
+
"passage 1": {
|
|
9
|
+
alignment: "default",
|
|
10
|
+
graded: true,
|
|
11
|
+
options: {
|
|
12
|
+
footnotes: "",
|
|
13
|
+
passageText:
|
|
14
|
+
"Sociologists study folktales because they provide a means of understanding the distinctive values of a culture. However, the folktales in almost all cultures are adaptations of the same ancient narratives to the local milieu.\n",
|
|
15
|
+
passageTitle: "",
|
|
16
|
+
showLineNumbers: false,
|
|
17
|
+
static: false,
|
|
18
|
+
},
|
|
19
|
+
static: false,
|
|
20
|
+
type: "passage",
|
|
21
|
+
version: {
|
|
22
|
+
major: 0,
|
|
23
|
+
minor: 0,
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
export const question2: PerseusRenderer = {
|
|
30
|
+
content:
|
|
31
|
+
'>Select text to highlight it. *(Laptop/desktop only)*\n\n>**Passage 1 is adapted from *"Ancient DNA Tells Story of Giant Eagle Evolution,"* © 2005 by Public Library of Science. Passage 2 is adapted from Tim Heupink, et al. *"Dodos and Spotted Green Pigeons are Descendants of an Island Hopping Bird,"* © 2014 by BioMed Central. **\n\n[[☃ passage 1]]\n\n[[☃ passage 2]]',
|
|
32
|
+
images: {},
|
|
33
|
+
widgets: {
|
|
34
|
+
"passage 1": {
|
|
35
|
+
alignment: "default",
|
|
36
|
+
graded: true,
|
|
37
|
+
options: {
|
|
38
|
+
footnotes: "An example footnote",
|
|
39
|
+
passageText:
|
|
40
|
+
"{{For reasons that are not entirely clear, when animals make their way to isolated islands [[1]], they tend to evolve relatively quickly toward an outsized or pint-sized version of their mainland counterpart.}} \n\n{{Perhaps the most famous example of an island giant—and, sadly, of species extinction—is the dodo, once found on the Indian Ocean island of Mauritius.}} {{When the dodo's ancestor (thought to be a migratory pigeon) settled on this island with abundant food, no competition from terrestrial mammals, and no predators, it could survive without flying, and thus was freed from the energetic and size constraints of flight.}} {{New Zealand also had avian giants, now extinct, including the flightless moa, an ostrich-like bird, and Haast's eagle (_Harpagornis moorei_), which had a wingspan up to 3 meters.}} {{Though Haast's eagle could fly—and presumably used its wings to {{launch}} brutal attacks on the hapless moa—its body mass (10–14 kilograms) pushed the limits for self-propelled flight.}}\n\n{{As extreme evolutionary examples, these island birds can offer insights into the forces and events shaping evolutionary change.}} In a new study, Michael Bunce et al. compared ancient mitochondrial DNA extracted from Haast's eagle bones with DNA sequences of 16 living eagle species to better characterize the evolutionary history of the extinct giant raptor. {{Their results suggest the extinct raptor underwent a rapid evolutionary transformation that belies its kinship to some of the world's smallest eagle species.}}\n\nThe authors characterized the rates of sequence evolution within mitochondrial DNA to establish the evolutionary relationships between the different eagle species. Their analysis places Haast's eagle in the same evolutionary lineage as a group of small eagle species in the genus _Hieraaetus_. Surprisingly, the genetic distance separating the giant eagle and its more diminutive _Hieraaetus_ cousins from their last {{common}} ancestor is relatively small.\n",
|
|
41
|
+
passageTitle: "Passage 1",
|
|
42
|
+
showLineNumbers: true,
|
|
43
|
+
static: false,
|
|
44
|
+
},
|
|
45
|
+
static: false,
|
|
46
|
+
type: "passage",
|
|
47
|
+
version: {
|
|
48
|
+
major: 0,
|
|
49
|
+
minor: 0,
|
|
50
|
+
},
|
|
51
|
+
},
|
|
52
|
+
"passage 2": {
|
|
53
|
+
alignment: "default",
|
|
54
|
+
graded: true,
|
|
55
|
+
options: {
|
|
56
|
+
footnotes: "",
|
|
57
|
+
passageText:
|
|
58
|
+
"The mysterious spotted green pigeon (_Caloenas maculata_) was a relative of the dodo, according to scientists who have examined its genetic make-up [1]. The authors say their results, published in the open access journal BMC Evolutionary Biology, support a theory that both birds are descended from “island hopping” ancestors.\n\nThe scientists took DNA from two feathers of the spotted green pigeon. Because of its age, the DNA was highly fragmented, so they focused in on three DNA “mini barcodes” – small sections of DNA which are unique for most bird species. They looked at these sections of the pigeon's DNA, and compared it to other species.\n\nThis showed that the spotted green pigeon is indeed a separate species, showing a unique DNA barcode compared to other pigeons. The pigeon is genetically most closely related to the Nicobar pigeon and the dodo and Rodrigues solitaire, both extinct birds from islands near Madagascar. The spotted green pigeon shows signs of a semi-terrestrial island lifestyle and the ability to fly. The closely related Nicobar pigeon shows similar habits and has a preference for travelling between small islands.\n\nThe scientists say this lifestyle, together with the relationship of both pigeons to the dodo and Rodrigues solitaire, supports an evolutionary theory that the ancestors of these birds were “island hoppers,” moving between islands around India and Southeast Asia. The birds that settled on particular islands then evolved into the individual species. The dodo's ancestor managed to hop as far as the island of Mauritius near Madagascar where it then lost the ability to fly.\n\nDr. Tim Heupink, Griffith University Australia says: {{“This study improves our ability to identify novel species from historic remains, and also those that are not novel after all. Ultimately this will help us to measure and understand the extinction of local populations and entire species.”}}\n",
|
|
59
|
+
passageTitle: "Passage 2",
|
|
60
|
+
showLineNumbers: true,
|
|
61
|
+
static: false,
|
|
62
|
+
},
|
|
63
|
+
static: false,
|
|
64
|
+
type: "passage",
|
|
65
|
+
version: {
|
|
66
|
+
major: 0,
|
|
67
|
+
minor: 0,
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
},
|
|
71
|
+
};
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
// @flow
|
|
2
|
+
import type {
|
|
3
|
+
PerseusRenderer,
|
|
4
|
+
RadioWidget,
|
|
5
|
+
PassageWidget,
|
|
6
|
+
} from "../../perseus-types.js";
|
|
7
|
+
|
|
8
|
+
export const question: PerseusRenderer = {
|
|
9
|
+
content:
|
|
10
|
+
"Which of the following values of $x$ satisfies the equation $\\sqrt{64}=x$ ?\n\n[[\u2603 radio 1]]\n\n",
|
|
11
|
+
images: {},
|
|
12
|
+
widgets: {
|
|
13
|
+
"radio 1": ({
|
|
14
|
+
graded: true,
|
|
15
|
+
version: {
|
|
16
|
+
major: 1,
|
|
17
|
+
minor: 0,
|
|
18
|
+
},
|
|
19
|
+
static: false,
|
|
20
|
+
type: "radio",
|
|
21
|
+
options: {
|
|
22
|
+
displayCount: null,
|
|
23
|
+
onePerLine: false,
|
|
24
|
+
choices: [
|
|
25
|
+
{
|
|
26
|
+
content: "$-8$ and $8$",
|
|
27
|
+
correct: false,
|
|
28
|
+
clue: "The square root operation ($\\sqrt{\\phantom{x}}$) calculates *only* the positive square root when performed on a number, so $x$ is equal to *only* $8$.",
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
content: "$-8$",
|
|
32
|
+
correct: false,
|
|
33
|
+
clue: "While $(-8)^2=64$, the square root operation ($\\sqrt{\\phantom{x}}$) calculates *only* the positive square root when performed on a number.",
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
content: "$8$",
|
|
37
|
+
correct: true,
|
|
38
|
+
isNoneOfTheAbove: false,
|
|
39
|
+
clue: "$8$ is the positive square root of $64$.",
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
content: "No value of $x$ satisfies the equation.",
|
|
43
|
+
correct: false,
|
|
44
|
+
isNoneOfTheAbove: false,
|
|
45
|
+
clue: "$8$ satisfies the equation.",
|
|
46
|
+
},
|
|
47
|
+
],
|
|
48
|
+
countChoices: false,
|
|
49
|
+
hasNoneOfTheAbove: false,
|
|
50
|
+
multipleSelect: false,
|
|
51
|
+
randomize: false,
|
|
52
|
+
deselectEnabled: false,
|
|
53
|
+
},
|
|
54
|
+
alignment: "default",
|
|
55
|
+
}: RadioWidget),
|
|
56
|
+
},
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
export const questionAndAnswer: [
|
|
60
|
+
PerseusRenderer,
|
|
61
|
+
number,
|
|
62
|
+
$ReadOnlyArray<number>,
|
|
63
|
+
] = [question, 2, [0, 1, 3]];
|
|
64
|
+
|
|
65
|
+
export const passageWidget: PassageWidget = {
|
|
66
|
+
alignment: "default",
|
|
67
|
+
graded: true,
|
|
68
|
+
options: {
|
|
69
|
+
footnotes: "",
|
|
70
|
+
passageText: "Line 1 {{Reference 1 \n\nis here.}}\n\n{{Another ref}}",
|
|
71
|
+
passageTitle: "",
|
|
72
|
+
showLineNumbers: true,
|
|
73
|
+
static: false,
|
|
74
|
+
},
|
|
75
|
+
static: false,
|
|
76
|
+
type: "passage",
|
|
77
|
+
version: {major: 0, minor: 0},
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
export const questionWithPassage: PerseusRenderer = {
|
|
81
|
+
content:
|
|
82
|
+
"Read the following passage:\n\n[[\u2603 passage 1]]\n\nWhich of the following values of $x$ satisfies the equation $\\sqrt{64}=x$ ?\n\n[[\u2603 radio 1]]\n\n",
|
|
83
|
+
images: {},
|
|
84
|
+
widgets: {
|
|
85
|
+
"radio 1": ({
|
|
86
|
+
graded: true,
|
|
87
|
+
version: {
|
|
88
|
+
major: 1,
|
|
89
|
+
minor: 0,
|
|
90
|
+
},
|
|
91
|
+
static: false,
|
|
92
|
+
type: "radio",
|
|
93
|
+
options: {
|
|
94
|
+
displayCount: null,
|
|
95
|
+
choices: [
|
|
96
|
+
{
|
|
97
|
+
content: "$-8$ and $8$",
|
|
98
|
+
correct: false,
|
|
99
|
+
clue: "The square root operation ($\\sqrt{\\phantom{x}}$) calculates *only* the positive square root when performed on a number, so $x$ is equal to *only* $8$.",
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
content: "$-8$",
|
|
103
|
+
correct: false,
|
|
104
|
+
clue: "While $(-8)^2=64$, the square root operation ($\\sqrt{\\phantom{x}}$) calculates *only* the positive square root when performed on a number.",
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
content: "$8$ {{passage-ref 1 1}}\n\n",
|
|
108
|
+
correct: true,
|
|
109
|
+
isNoneOfTheAbove: false,
|
|
110
|
+
clue: "$8$ is the positive square root of $64$.",
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
content: "No value of $x$ satisfies the equation.",
|
|
114
|
+
correct: false,
|
|
115
|
+
isNoneOfTheAbove: false,
|
|
116
|
+
clue: "$8$ satisfies the equation.",
|
|
117
|
+
},
|
|
118
|
+
],
|
|
119
|
+
countChoices: false,
|
|
120
|
+
hasNoneOfTheAbove: false,
|
|
121
|
+
multipleSelect: false,
|
|
122
|
+
randomize: false,
|
|
123
|
+
deselectEnabled: false,
|
|
124
|
+
},
|
|
125
|
+
alignment: "default",
|
|
126
|
+
}: RadioWidget),
|
|
127
|
+
"passage 1": ({
|
|
128
|
+
alignment: "default",
|
|
129
|
+
graded: true,
|
|
130
|
+
options: {
|
|
131
|
+
footnotes: "",
|
|
132
|
+
passageText:
|
|
133
|
+
"Here's a passage about the positive square root. It contains a {{reference to something}}.",
|
|
134
|
+
passageTitle: "",
|
|
135
|
+
showLineNumbers: true,
|
|
136
|
+
static: false,
|
|
137
|
+
},
|
|
138
|
+
static: false,
|
|
139
|
+
type: "passage",
|
|
140
|
+
version: {major: 0, minor: 0},
|
|
141
|
+
}: PassageWidget),
|
|
142
|
+
},
|
|
143
|
+
};
|
|
144
|
+
|
|
145
|
+
export const multiChoiceQuestion: PerseusRenderer = {
|
|
146
|
+
content:
|
|
147
|
+
"**Select all input values for which $g(x)=2$.**\n\n[[\u2603 radio 1]]\n\n ",
|
|
148
|
+
images: {
|
|
149
|
+
"web+graphie://ka-perseus-graphie.s3.amazonaws.com/4613e0d9c906b3053fb5523eed83d4f779fdf6bb":
|
|
150
|
+
{
|
|
151
|
+
width: 428,
|
|
152
|
+
height: 428,
|
|
153
|
+
},
|
|
154
|
+
},
|
|
155
|
+
widgets: {
|
|
156
|
+
"radio 1": ({
|
|
157
|
+
graded: true,
|
|
158
|
+
version: {
|
|
159
|
+
major: 1,
|
|
160
|
+
minor: 0,
|
|
161
|
+
},
|
|
162
|
+
static: false,
|
|
163
|
+
type: "radio",
|
|
164
|
+
options: {
|
|
165
|
+
onePerLine: true,
|
|
166
|
+
displayCount: null,
|
|
167
|
+
choices: [
|
|
168
|
+
{
|
|
169
|
+
content: "$x=-6$",
|
|
170
|
+
correct: false,
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
content: "$x=4$",
|
|
174
|
+
correct: false,
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
content: "$x=7$",
|
|
178
|
+
isNoneOfTheAbove: false,
|
|
179
|
+
correct: false,
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
content: "There is no such input value.",
|
|
183
|
+
isNoneOfTheAbove: true,
|
|
184
|
+
correct: true,
|
|
185
|
+
},
|
|
186
|
+
],
|
|
187
|
+
hasNoneOfTheAbove: true,
|
|
188
|
+
multipleSelect: true,
|
|
189
|
+
randomize: false,
|
|
190
|
+
deselectEnabled: false,
|
|
191
|
+
},
|
|
192
|
+
alignment: "default",
|
|
193
|
+
}: RadioWidget),
|
|
194
|
+
},
|
|
195
|
+
};
|
|
196
|
+
|
|
197
|
+
export const multiChoiceQuestionAndAnswer: [
|
|
198
|
+
PerseusRenderer,
|
|
199
|
+
$ReadOnlyArray<number>,
|
|
200
|
+
$ReadOnlyArray<$ReadOnlyArray<number>>,
|
|
201
|
+
$ReadOnlyArray<$ReadOnlyArray<number>>,
|
|
202
|
+
] = [
|
|
203
|
+
multiChoiceQuestion,
|
|
204
|
+
[3],
|
|
205
|
+
[[0], [1], [2], [0, 1], [0, 2], [0, 1, 2], [1, 2]],
|
|
206
|
+
[
|
|
207
|
+
[0, 3],
|
|
208
|
+
[0, 1, 2, 3],
|
|
209
|
+
],
|
|
210
|
+
];
|