@khanacademy/perseus 3.0.0 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.babelrc.js +1 -1
- package/.eslintrc.js +1 -0
- package/CHANGELOG.md +16 -0
- package/dist/__tests__/mock-asset-loading-widget.d.ts +59 -0
- package/dist/__tests__/mock-asset-loading-widget.js.flow +70 -0
- package/dist/__tests__/mock-widget.d.ts +30 -0
- package/dist/__tests__/mock-widget.js.flow +39 -0
- package/dist/__tests__/test-items/image-item.d.ts +14 -0
- package/dist/__tests__/test-items/image-item.js.flow +20 -0
- package/dist/__tests__/test-items/input-number-1-item.d.ts +9 -0
- package/dist/__tests__/test-items/input-number-1-item.js.flow +15 -0
- package/dist/__tests__/test-items/input-number-2-item.d.ts +9 -0
- package/dist/__tests__/test-items/input-number-2-item.js.flow +15 -0
- package/dist/__tests__/test-items/table-item.d.ts +9 -0
- package/dist/__tests__/test-items/table-item.js.flow +15 -0
- package/dist/a11y.d.ts +5 -0
- package/dist/a11y.js.flow +11 -0
- package/dist/all-widgets.d.ts +22 -0
- package/dist/all-widgets.js.flow +33 -0
- package/dist/article-renderer.d.ts +54 -0
- package/dist/article-renderer.js.flow +69 -0
- package/dist/asset-context.d.ts +14 -0
- package/dist/asset-context.js.flow +15 -0
- package/dist/basic-widgets.d.ts +22 -0
- package/dist/basic-widgets.js.flow +33 -0
- package/dist/components/button-group.d.ts +27 -0
- package/dist/components/button-group.js.flow +33 -0
- package/dist/components/constants.d.ts +7 -0
- package/dist/components/constants.js.flow +13 -0
- package/dist/components/fixed-to-responsive.d.ts +2 -0
- package/dist/components/fixed-to-responsive.js.flow +8 -0
- package/dist/components/graph.d.ts +44 -0
- package/dist/components/graph.js.flow +52 -0
- package/dist/components/graphie-classes.d.ts +13 -0
- package/dist/components/graphie-classes.js.flow +19 -0
- package/dist/components/graphie-movables.d.ts +16 -0
- package/dist/components/graphie-movables.js.flow +22 -0
- package/dist/components/graphie.d.ts +44 -0
- package/dist/components/graphie.js.flow +56 -0
- package/dist/components/highlighting/highlightable-content.d.ts +39 -0
- package/dist/components/highlighting/highlightable-content.js.flow +59 -0
- package/dist/components/highlighting/highlights.d.ts +30 -0
- package/dist/components/highlighting/highlights.js.flow +54 -0
- package/dist/components/highlighting/ranges.d.ts +42 -0
- package/dist/components/highlighting/ranges.js.flow +60 -0
- package/dist/components/highlighting/types.d.ts +64 -0
- package/dist/components/highlighting/types.js.flow +70 -0
- package/dist/components/highlighting/ui/highlight-renderer.d.ts +34 -0
- package/dist/components/highlighting/ui/highlight-renderer.js.flow +45 -0
- package/dist/components/highlighting/ui/highlight-set-renderer.d.ts +34 -0
- package/dist/components/highlighting/ui/highlight-set-renderer.js.flow +44 -0
- package/dist/components/highlighting/ui/highlight-tooltip.d.ts +16 -0
- package/dist/components/highlighting/ui/highlight-tooltip.js.flow +24 -0
- package/dist/components/highlighting/ui/highlighting-ui.d.ts +19 -0
- package/dist/components/highlighting/ui/highlighting-ui.js.flow +30 -0
- package/dist/components/highlighting/ui/selection-tracker.d.ts +47 -0
- package/dist/components/highlighting/ui/selection-tracker.js.flow +56 -0
- package/dist/components/highlighting/ui/types.d.ts +13 -0
- package/dist/components/highlighting/ui/types.js.flow +22 -0
- package/dist/components/highlighting/ui/util.d.ts +28 -0
- package/dist/components/highlighting/ui/util.js.flow +42 -0
- package/dist/components/highlighting/word-indexer.d.ts +28 -0
- package/dist/components/highlighting/word-indexer.js.flow +21 -0
- package/dist/components/hud.d.ts +15 -0
- package/dist/components/hud.js.flow +21 -0
- package/dist/components/icon.d.ts +56 -0
- package/dist/components/icon.js.flow +31 -0
- package/dist/components/image-loader.d.ts +52 -0
- package/dist/components/image-loader.js.flow +49 -0
- package/dist/components/info-tip/info-tip.d.ts +14 -0
- package/dist/components/info-tip/info-tip.js.flow +20 -0
- package/dist/components/info-tip.d.ts +18 -0
- package/dist/components/info-tip.js.flow +18 -0
- package/dist/components/inline-icon.d.ts +10 -0
- package/dist/components/inline-icon.js.flow +16 -0
- package/dist/components/input-with-examples.d.ts +52 -0
- package/dist/components/input-with-examples.js.flow +58 -0
- package/dist/components/lint.d.ts +23 -0
- package/dist/components/lint.js.flow +29 -0
- package/dist/components/math-input.d.ts +40 -0
- package/dist/components/math-input.js.flow +46 -0
- package/dist/components/math-output.d.ts +23 -0
- package/dist/components/math-output.js.flow +29 -0
- package/dist/components/multi-button-group.d.ts +29 -0
- package/dist/components/multi-button-group.js.flow +35 -0
- package/dist/components/number-input.d.ts +34 -0
- package/dist/components/number-input.js.flow +42 -0
- package/dist/components/prop-check-box.d.ts +2 -0
- package/dist/components/prop-check-box.js.flow +8 -0
- package/dist/components/range-input.d.ts +14 -0
- package/dist/components/range-input.js.flow +20 -0
- package/dist/components/simple-keypad-input.d.ts +19 -0
- package/dist/components/simple-keypad-input.js.flow +16 -0
- package/dist/components/sortable.d.ts +68 -0
- package/dist/components/sortable.js.flow +78 -0
- package/dist/components/stub-tag-editor.d.ts +25 -0
- package/dist/components/stub-tag-editor.js.flow +18 -0
- package/dist/components/svg-image.d.ts +74 -0
- package/dist/components/svg-image.js.flow +83 -0
- package/dist/components/tex-buttons.d.ts +20 -0
- package/dist/components/tex-buttons.js.flow +26 -0
- package/dist/components/tex.d.ts +25 -0
- package/dist/components/tex.js.flow +25 -0
- package/dist/components/text-input.d.ts +33 -0
- package/dist/components/text-input.js.flow +39 -0
- package/dist/components/text-list-editor.d.ts +16 -0
- package/dist/components/text-list-editor.js.flow +22 -0
- package/dist/components/tooltip.d.ts +32 -0
- package/dist/components/tooltip.js.flow +38 -0
- package/dist/components/visibility-observer/create-visibility-observer.d.ts +34 -0
- package/dist/components/visibility-observer/create-visibility-observer.js.flow +23 -0
- package/dist/components/visibility-observer/get-scroll-parent.d.ts +1 -0
- package/dist/components/visibility-observer/get-scroll-parent.js.flow +7 -0
- package/dist/components/visibility-observer/visibility-observer.d.ts +31 -0
- package/dist/components/visibility-observer/visibility-observer.js.flow +36 -0
- package/dist/components/zoomable-tex.d.ts +18 -0
- package/dist/components/zoomable-tex.js.flow +18 -0
- package/dist/components/zoomable.d.ts +64 -0
- package/dist/components/zoomable.js.flow +70 -0
- package/dist/components.d.ts +16 -0
- package/dist/components.js.flow +22 -0
- package/dist/definition-context.d.ts +21 -0
- package/dist/definition-context.js.flow +25 -0
- package/dist/dependencies.d.ts +3 -0
- package/dist/dependencies.js.flow +9 -0
- package/dist/error-boundary.d.ts +13 -0
- package/dist/error-boundary.js.flow +21 -0
- package/dist/es/index.js +10880 -14498
- package/dist/es/index.js.map +1 -1
- package/dist/extra-widgets.d.ts +22 -0
- package/dist/extra-widgets.js.flow +33 -0
- package/dist/hint-renderer.d.ts +23 -0
- package/dist/hint-renderer.js.flow +32 -0
- package/dist/hints-renderer.d.ts +29 -0
- package/dist/hints-renderer.js.flow +41 -0
- package/dist/icon-paths.d.ts +117 -0
- package/dist/icon-paths.js.flow +123 -0
- package/dist/index.d.ts +103 -2
- package/dist/index.js +12443 -15871
- package/dist/index.js.flow +133 -2
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts +14 -0
- package/dist/init.js.flow +20 -0
- package/dist/interaction-tracker.d.ts +23 -0
- package/dist/interaction-tracker.js.flow +33 -0
- package/dist/interactive2/__tests__/movable-mock.d.ts +5 -0
- package/dist/interactive2/__tests__/movable-mock.js.flow +11 -0
- package/dist/interactive2/interactive-util.d.ts +31 -0
- package/dist/interactive2/interactive-util.js.flow +50 -0
- package/dist/interactive2/movable-helper-methods.d.ts +9 -0
- package/dist/interactive2/movable-helper-methods.js.flow +15 -0
- package/dist/interactive2/movable-line-options.d.ts +34 -0
- package/dist/interactive2/movable-line-options.js.flow +44 -0
- package/dist/interactive2/movable-line.d.ts +2 -0
- package/dist/interactive2/movable-line.js.flow +8 -0
- package/dist/interactive2/movable-point-options.d.ts +34 -0
- package/dist/interactive2/movable-point-options.js.flow +44 -0
- package/dist/interactive2/movable-point.d.ts +2 -0
- package/dist/interactive2/movable-point.js.flow +8 -0
- package/dist/interactive2/movable-polygon-options.d.ts +40 -0
- package/dist/interactive2/movable-polygon-options.js.flow +47 -0
- package/dist/interactive2/movable-polygon.d.ts +2 -0
- package/dist/interactive2/movable-polygon.js.flow +8 -0
- package/dist/interactive2/movable.d.ts +2 -0
- package/dist/interactive2/movable.js.flow +8 -0
- package/dist/interactive2/objective_.d.ts +13 -0
- package/dist/interactive2/objective_.js.flow +25 -0
- package/dist/interactive2/types.d.ts +2 -0
- package/dist/interactive2/types.js.flow +8 -0
- package/dist/interactive2/wrapped-defaults.d.ts +5 -0
- package/dist/interactive2/wrapped-defaults.js.flow +11 -0
- package/dist/interactive2/wrapped-ellipse.d.ts +3 -0
- package/dist/interactive2/wrapped-ellipse.js.flow +14 -0
- package/dist/interactive2/wrapped-line.d.ts +3 -0
- package/dist/interactive2/wrapped-line.js.flow +14 -0
- package/dist/interactive2/wrapped-path.d.ts +3 -0
- package/dist/interactive2/wrapped-path.js.flow +13 -0
- package/dist/interactive2.d.ts +10 -0
- package/dist/interactive2.js.flow +16 -0
- package/dist/item-renderer.d.ts +117 -0
- package/dist/item-renderer.js.flow +136 -0
- package/dist/item-version.d.ts +4 -0
- package/dist/item-version.js.flow +11 -0
- package/dist/jipt-paragraphs.d.ts +8 -0
- package/dist/jipt-paragraphs.js.flow +14 -0
- package/dist/keypad-context.d.ts +20 -0
- package/dist/keypad-context.js.flow +18 -0
- package/dist/loading-context.d.ts +14 -0
- package/dist/loading-context.js.flow +12 -0
- package/dist/logging/log.d.ts +55 -0
- package/dist/logging/log.js.flow +62 -0
- package/dist/mixins/changeable.d.ts +30 -0
- package/dist/mixins/changeable.js.flow +33 -0
- package/dist/mixins/editor-jsonify.d.ts +4 -0
- package/dist/mixins/editor-jsonify.js.flow +10 -0
- package/dist/mixins/provide-keypad.d.ts +36 -0
- package/dist/mixins/provide-keypad.js.flow +33 -0
- package/dist/mixins/widget-jsonify-deprecated.d.ts +5 -0
- package/dist/mixins/widget-jsonify-deprecated.js.flow +11 -0
- package/dist/mixins/widget-prop-denylist.d.ts +14 -0
- package/dist/mixins/widget-prop-denylist.js.flow +20 -0
- package/dist/multi-items/item-types.d.ts +32 -0
- package/dist/multi-items/items.d.ts +53 -0
- package/dist/multi-items/items.js.flow +66 -0
- package/dist/multi-items/multi-renderer.d.ts +152 -0
- package/dist/multi-items/multi-renderer.js.flow +213 -0
- package/dist/multi-items/prop-type-builders.d.ts +20 -0
- package/dist/multi-items/prop-type-builders.js.flow +22 -0
- package/dist/multi-items/shape-types.d.ts +47 -0
- package/dist/multi-items/shape-types.js.flow +60 -0
- package/dist/multi-items/shapes.d.ts +23 -0
- package/dist/multi-items/shapes.js.flow +25 -0
- package/dist/multi-items/tree-types.d.ts +34 -0
- package/dist/multi-items/tree-types.js.flow +45 -0
- package/dist/multi-items/trees.d.ts +146 -0
- package/dist/multi-items/trees.js.flow +147 -0
- package/dist/multi-items.d.ts +73 -0
- package/dist/multi-items.js.flow +36 -0
- package/dist/perseus-api.d.ts +128 -0
- package/dist/perseus-api.js.flow +139 -0
- package/dist/perseus-env.d.ts +3 -0
- package/dist/perseus-env.js.flow +6 -0
- package/dist/perseus-error.d.ts +11 -0
- package/dist/perseus-error.js.flow +16 -0
- package/dist/perseus-markdown.d.ts +11 -0
- package/dist/perseus-markdown.js.flow +20 -0
- package/dist/perseus-types.d.ts +776 -0
- package/dist/perseus-types.js.flow +1032 -0
- package/dist/question-paragraph.d.ts +11 -0
- package/dist/question-paragraph.js.flow +17 -0
- package/dist/renderability.d.ts +10 -0
- package/dist/renderability.js.flow +19 -0
- package/dist/renderer.d.ts +254 -0
- package/dist/renderer.js.flow +327 -0
- package/dist/server-item-renderer.d.ts +113 -0
- package/dist/server-item-renderer.js.flow +136 -0
- package/dist/sigfigs.d.ts +32 -0
- package/dist/sigfigs.js.flow +41 -0
- package/dist/styles/constants.d.ts +56 -0
- package/dist/styles/constants.js.flow +62 -0
- package/dist/styles/global-constants.d.ts +342 -0
- package/dist/styles/global-constants.js.flow +348 -0
- package/dist/styles/global-styles.d.ts +47 -0
- package/dist/styles/global-styles.js.flow +53 -0
- package/dist/styles/media-queries.d.ts +29 -0
- package/dist/styles/media-queries.js.flow +35 -0
- package/dist/styles/shared.d.ts +3 -0
- package/dist/styles/shared.js.flow +9 -0
- package/dist/tex-wrangler.d.ts +7 -0
- package/dist/tex-wrangler.js.flow +13 -0
- package/dist/translation-linter.d.ts +21 -0
- package/dist/translation-linter.js.flow +32 -0
- package/dist/traversal.d.ts +15 -0
- package/dist/traversal.js.flow +26 -0
- package/dist/types.d.ts +262 -0
- package/dist/types.js.flow +337 -0
- package/dist/util/a11y.d.ts +3 -0
- package/dist/util/a11y.js.flow +9 -0
- package/dist/util/answer-types.d.ts +34 -0
- package/dist/util/answer-types.js.flow +49 -0
- package/dist/util/colors.d.ts +89 -0
- package/dist/util/colors.js.flow +95 -0
- package/dist/util/fix-passage-refs.d.ts +2 -0
- package/dist/util/fix-passage-refs.js.flow +8 -0
- package/dist/util/graph-utils.d.ts +12 -0
- package/dist/util/graph-utils.js.flow +9 -0
- package/dist/util/graphie.d.ts +2 -0
- package/dist/util/graphie.js.flow +8 -0
- package/dist/util/interactive.d.ts +9 -0
- package/dist/util/interactive.js.flow +9 -0
- package/dist/util/katex-preprocess.d.ts +6 -0
- package/dist/util/katex-preprocess.js.flow +12 -0
- package/dist/util/math.d.ts +28 -0
- package/dist/util/math.js.flow +62 -0
- package/dist/util/mobile-native-utils.d.ts +7 -0
- package/dist/util/mobile-native-utils.js.flow +12 -0
- package/dist/util/react-render.d.ts +2 -0
- package/dist/util/react-render.js.flow +12 -0
- package/dist/util/register-all-widgets-for-testing.d.ts +1 -0
- package/dist/util/register-all-widgets-for-testing.js.flow +7 -0
- package/dist/util/scroll-utils.d.ts +10 -0
- package/dist/util/scroll-utils.js.flow +19 -0
- package/dist/util/sizing-utils.d.ts +9 -0
- package/dist/util/sizing-utils.js.flow +20 -0
- package/dist/util/tex.d.ts +6 -0
- package/dist/util/tex.js.flow +17 -0
- package/dist/util/url-utils.d.ts +6 -0
- package/dist/util/url-utils.js.flow +11 -0
- package/dist/util.d.ts +247 -0
- package/dist/util.js.flow +320 -0
- package/dist/version.d.ts +11 -0
- package/dist/version.js.flow +17 -0
- package/dist/widget-container.d.ts +27 -0
- package/dist/widget-container.js.flow +33 -0
- package/dist/widgets/__tests__/renderQuestion.d.ts +13 -0
- package/dist/widgets/__tests__/renderQuestion.js.flow +28 -0
- package/dist/widgets/categorizer.d.ts +55 -0
- package/dist/widgets/categorizer.js.flow +70 -0
- package/dist/widgets/cs-program.d.ts +48 -0
- package/dist/widgets/cs-program.js.flow +54 -0
- package/dist/widgets/definition.d.ts +42 -0
- package/dist/widgets/definition.js.flow +57 -0
- package/dist/widgets/dropdown.d.ts +51 -0
- package/dist/widgets/dropdown.js.flow +63 -0
- package/dist/widgets/explanation.d.ts +49 -0
- package/dist/widgets/explanation.js.flow +58 -0
- package/dist/widgets/expression.d.ts +90 -0
- package/dist/widgets/expression.js.flow +115 -0
- package/dist/widgets/graded-group-answer-bar.d.ts +13 -0
- package/dist/widgets/graded-group-answer-bar.js.flow +24 -0
- package/dist/widgets/graded-group-set.d.ts +52 -0
- package/dist/widgets/graded-group-set.js.flow +65 -0
- package/dist/widgets/graded-group.d.ts +66 -0
- package/dist/widgets/graded-group.js.flow +78 -0
- package/dist/widgets/grapher/util.d.ts +19 -0
- package/dist/widgets/grapher/util.js.flow +38 -0
- package/dist/widgets/grapher.d.ts +63 -0
- package/dist/widgets/grapher.js.flow +93 -0
- package/dist/widgets/group.d.ts +51 -0
- package/dist/widgets/group.js.flow +60 -0
- package/dist/widgets/iframe.d.ts +52 -0
- package/dist/widgets/iframe.js.flow +53 -0
- package/dist/widgets/image.d.ts +59 -0
- package/dist/widgets/image.js.flow +73 -0
- package/dist/widgets/input-number.d.ts +75 -0
- package/dist/widgets/input-number.js.flow +94 -0
- package/dist/widgets/interaction/arrow-picker.d.ts +12 -0
- package/dist/widgets/interaction/arrow-picker.js.flow +21 -0
- package/dist/widgets/interaction/color-picker.d.ts +14 -0
- package/dist/widgets/interaction/color-picker.js.flow +23 -0
- package/dist/widgets/interaction/dash-picker.d.ts +12 -0
- package/dist/widgets/interaction/dash-picker.js.flow +21 -0
- package/dist/widgets/interaction/element-container.d.ts +21 -0
- package/dist/widgets/interaction/element-container.js.flow +33 -0
- package/dist/widgets/interaction.d.ts +51 -0
- package/dist/widgets/interaction.js.flow +60 -0
- package/dist/widgets/interactive-graph.d.ts +180 -0
- package/dist/widgets/interactive-graph.js.flow +242 -0
- package/dist/widgets/label-image/answer-choices.d.ts +51 -0
- package/dist/widgets/label-image/answer-choices.js.flow +55 -0
- package/dist/widgets/label-image/marker.d.ts +28 -0
- package/dist/widgets/label-image/marker.js.flow +33 -0
- package/dist/widgets/label-image/types.d.ts +14 -0
- package/dist/widgets/label-image/types.js.flow +23 -0
- package/dist/widgets/label-image.d.ts +113 -0
- package/dist/widgets/label-image.js.flow +142 -0
- package/dist/widgets/lights-puzzle.d.ts +47 -0
- package/dist/widgets/lights-puzzle.js.flow +58 -0
- package/dist/widgets/matcher.d.ts +82 -0
- package/dist/widgets/matcher.js.flow +101 -0
- package/dist/widgets/matrix.d.ts +65 -0
- package/dist/widgets/matrix.js.flow +80 -0
- package/dist/widgets/measurer.d.ts +21 -0
- package/dist/widgets/measurer.js.flow +30 -0
- package/dist/widgets/molecule/molecule-drawing.d.ts +5 -0
- package/dist/widgets/molecule/molecule-drawing.js.flow +11 -0
- package/dist/widgets/molecule/molecule-layout.d.ts +82 -0
- package/dist/widgets/molecule/molecule-layout.js.flow +96 -0
- package/dist/widgets/molecule/smiles-parser.d.ts +19 -0
- package/dist/widgets/molecule/smiles-parser.js.flow +26 -0
- package/dist/widgets/molecule.d.ts +51 -0
- package/dist/widgets/molecule.js.flow +60 -0
- package/dist/widgets/number-line.d.ts +90 -0
- package/dist/widgets/number-line.js.flow +102 -0
- package/dist/widgets/numeric-input.d.ts +80 -0
- package/dist/widgets/numeric-input.js.flow +109 -0
- package/dist/widgets/orderer.d.ts +69 -0
- package/dist/widgets/orderer.js.flow +81 -0
- package/dist/widgets/passage/passage-markdown.d.ts +22 -0
- package/dist/widgets/passage/passage-markdown.js.flow +33 -0
- package/dist/widgets/passage-ref-target.d.ts +41 -0
- package/dist/widgets/passage-ref-target.js.flow +52 -0
- package/dist/widgets/passage-ref.d.ts +65 -0
- package/dist/widgets/passage-ref.js.flow +85 -0
- package/dist/widgets/passage.d.ts +125 -0
- package/dist/widgets/passage.js.flow +157 -0
- package/dist/widgets/plotter.d.ts +68 -0
- package/dist/widgets/plotter.js.flow +78 -0
- package/dist/widgets/radio/base-radio.d.ts +38 -0
- package/dist/widgets/radio/base-radio.js.flow +44 -0
- package/dist/widgets/radio/choice-a11y-text.d.ts +2 -0
- package/dist/widgets/radio/choice-a11y-text.js.flow +14 -0
- package/dist/widgets/radio/choice-icon/choice-icon.d.ts +16 -0
- package/dist/widgets/radio/choice-icon/choice-icon.js.flow +22 -0
- package/dist/widgets/radio/choice-icon/cross-out-line.d.ts +9 -0
- package/dist/widgets/radio/choice-icon/cross-out-line.js.flow +16 -0
- package/dist/widgets/radio/choice-icon/shared-styles.d.ts +5 -0
- package/dist/widgets/radio/choice-icon/shared-styles.js.flow +11 -0
- package/dist/widgets/radio/choice-none-above.d.ts +6 -0
- package/dist/widgets/radio/choice-none-above.js.flow +16 -0
- package/dist/widgets/radio/choice.d.ts +23 -0
- package/dist/widgets/radio/choice.js.flow +32 -0
- package/dist/widgets/radio/choice.jsx.fixture.d.ts +1 -0
- package/dist/widgets/radio/choice.jsx.fixture.js.flow +7 -0
- package/dist/widgets/radio/focus-ring.d.ts +12 -0
- package/dist/widgets/radio/focus-ring.js.flow +15 -0
- package/dist/widgets/radio/option-status.d.ts +17 -0
- package/dist/widgets/radio/option-status.js.flow +16 -0
- package/dist/widgets/radio/util.d.ts +6 -0
- package/dist/widgets/radio/util.js.flow +12 -0
- package/dist/widgets/radio/widget.d.ts +62 -0
- package/dist/widgets/radio/widget.js.flow +80 -0
- package/dist/widgets/radio.d.ts +22 -0
- package/dist/widgets/radio.js.flow +31 -0
- package/dist/widgets/reaction-diagram.d.ts +37 -0
- package/dist/widgets/reaction-diagram.js.flow +46 -0
- package/dist/widgets/sequence.d.ts +79 -0
- package/dist/widgets/sequence.js.flow +100 -0
- package/dist/widgets/simulator.d.ts +89 -0
- package/dist/widgets/simulator.js.flow +106 -0
- package/dist/widgets/sorter.d.ts +82 -0
- package/dist/widgets/sorter.js.flow +101 -0
- package/dist/widgets/table.d.ts +56 -0
- package/dist/widgets/table.js.flow +67 -0
- package/dist/widgets/transformer.d.ts +94 -0
- package/dist/widgets/transformer.js.flow +127 -0
- package/dist/widgets/unit.d.ts +77 -0
- package/dist/widgets/unit.js.flow +93 -0
- package/dist/widgets/video-transcript-link.d.ts +12 -0
- package/dist/widgets/video-transcript-link.js.flow +15 -0
- package/dist/widgets/video.d.ts +48 -0
- package/dist/widgets/video.js.flow +57 -0
- package/dist/widgets.d.ts +73 -0
- package/dist/widgets.js.flow +108 -0
- package/dist/zoom.d.ts +1 -0
- package/dist/zoom.js.flow +7 -0
- package/package.json +8 -8
- package/src/__stories__/hints-renderer.stories.tsx +58 -0
- package/src/__stories__/item-renderer.stories.tsx +29 -0
- package/src/__stories__/server-item-renderer.stories.tsx +29 -0
- package/src/__testdata__/graphie.testdata.ts +51 -0
- package/src/__testdata__/item-renderer.testdata.ts +160 -0
- package/src/__testdata__/renderer.testdata.ts +122 -0
- package/src/__tests__/a11y.test.ts +303 -0
- package/src/__tests__/item-renderer.test.tsx +891 -0
- package/src/__tests__/jipt-paragraphs.test.ts +32 -0
- package/src/__tests__/mock-asset-loading-widget.tsx +56 -0
- package/src/__tests__/mock-widget.tsx +33 -0
- package/src/__tests__/perseus-markdown.test.ts +764 -0
- package/src/__tests__/renderability.test.ts +480 -0
- package/src/__tests__/renderer-api.test.tsx +328 -0
- package/src/__tests__/renderer.test.tsx +1802 -0
- package/src/__tests__/server-item-renderer.test.tsx +518 -0
- package/src/__tests__/test-items/image-item.ts +24 -0
- package/src/__tests__/test-items/input-number-1-item.ts +26 -0
- package/src/__tests__/test-items/input-number-2-item.ts +38 -0
- package/src/__tests__/test-items/table-item.ts +29 -0
- package/src/__tests__/tex-wrangler.test.ts +82 -0
- package/src/__tests__/util.test.ts +40 -0
- package/src/a11y.ts +45 -0
- package/src/all-widgets.ts +9 -0
- package/src/article-renderer.tsx +215 -0
- package/src/asset-context.ts +30 -0
- package/src/basic-widgets.ts +16 -0
- package/src/components/__stories__/button-group.stories.tsx +59 -0
- package/src/components/__stories__/fixed-to-responsive.stories.tsx +143 -0
- package/src/components/__stories__/graph.stories.tsx +30 -0
- package/src/components/__stories__/graphie.stories.tsx +35 -0
- package/src/components/__stories__/hud.stories.tsx +39 -0
- package/src/components/__stories__/icon.stories.tsx +63 -0
- package/src/components/__stories__/image-loader.stories.tsx +62 -0
- package/src/components/__stories__/info-tip.stories.tsx +35 -0
- package/src/components/__stories__/inline-icon.stories.tsx +44 -0
- package/src/components/__stories__/input-with-examples.stories.tsx +57 -0
- package/src/components/__stories__/lint.stories.tsx +51 -0
- package/src/components/__stories__/math-input.stories.tsx +34 -0
- package/src/components/__stories__/math-output.stories.tsx +25 -0
- package/src/components/__stories__/multi-button-group.stories.tsx +70 -0
- package/src/components/__stories__/number-input.stories.tsx +43 -0
- package/src/components/__stories__/prop-check-box.stories.tsx +65 -0
- package/src/components/__stories__/range-input.stories.tsx +31 -0
- package/src/components/__stories__/simple-keypad-input.stories.tsx +29 -0
- package/src/components/__stories__/sortable.stories.tsx +77 -0
- package/src/components/__stories__/stub-tag-editor.stories.tsx +49 -0
- package/src/components/__stories__/svg-image.stories.tsx +82 -0
- package/src/components/__stories__/tex.stories.tsx +25 -0
- package/src/components/__stories__/text-buttons.stories.tsx +66 -0
- package/src/components/__stories__/text-input.stories.tsx +39 -0
- package/src/components/__stories__/text-list-editor.stories.tsx +34 -0
- package/src/components/__stories__/zoomable-tex.stories.tsx +39 -0
- package/src/components/__stories__/zoomable.stories.tsx +43 -0
- package/src/components/__testdata__/sorter.testdata.ts +19 -0
- package/src/components/__tests__/number-input.test.tsx +128 -0
- package/src/components/__tests__/sortable.test.tsx +234 -0
- package/src/components/__tests__/sorter.test.tsx +111 -0
- package/src/components/__tests__/zoomable.test.tsx +399 -0
- package/src/components/button-group.tsx +130 -0
- package/src/components/constants.ts +14 -0
- package/src/components/fixed-to-responsive.tsx +165 -0
- package/src/components/graph.tsx +421 -0
- package/src/components/graphie-classes.ts +153 -0
- package/src/components/graphie-movables.ts +338 -0
- package/src/components/graphie.tsx +357 -0
- package/src/components/highlighting/highlightable-content.tsx +243 -0
- package/src/components/highlighting/highlights.ts +207 -0
- package/src/components/highlighting/ranges.ts +304 -0
- package/src/components/highlighting/types.ts +73 -0
- package/src/components/highlighting/ui/highlight-renderer.tsx +175 -0
- package/src/components/highlighting/ui/highlight-set-renderer.tsx +188 -0
- package/src/components/highlighting/ui/highlight-tooltip.tsx +141 -0
- package/src/components/highlighting/ui/highlighting-ui.tsx +153 -0
- package/src/components/highlighting/ui/selection-tracker.tsx +189 -0
- package/src/components/highlighting/ui/types.ts +21 -0
- package/src/components/highlighting/ui/util.ts +165 -0
- package/src/components/highlighting/word-indexer.tsx +156 -0
- package/src/components/hud.tsx +178 -0
- package/src/components/icon.tsx +140 -0
- package/src/components/image-loader.tsx +176 -0
- package/src/components/info-tip/info-tip.tsx +144 -0
- package/src/components/info-tip.tsx +40 -0
- package/src/components/inline-icon.tsx +77 -0
- package/src/components/input-with-examples.tsx +249 -0
- package/src/components/lint.tsx +453 -0
- package/src/components/math-input.tsx +299 -0
- package/src/components/math-output.tsx +128 -0
- package/src/components/multi-button-group.tsx +135 -0
- package/src/components/number-input.tsx +250 -0
- package/src/components/prop-check-box.tsx +80 -0
- package/src/components/range-input.tsx +60 -0
- package/src/components/simple-keypad-input.tsx +88 -0
- package/src/components/sortable.tsx +914 -0
- package/src/components/stub-tag-editor.tsx +53 -0
- package/src/components/svg-image.tsx +777 -0
- package/src/components/tex-buttons.tsx +321 -0
- package/src/components/tex.tsx +67 -0
- package/src/components/text-input.tsx +128 -0
- package/src/components/text-list-editor.tsx +169 -0
- package/src/components/tooltip.tsx +392 -0
- package/src/components/visibility-observer/__stories__/visibility-observer.stories.tsx +143 -0
- package/src/components/visibility-observer/create-visibility-observer.ts +108 -0
- package/src/components/visibility-observer/get-scroll-parent.ts +46 -0
- package/src/components/visibility-observer/visibility-observer.tsx +124 -0
- package/src/components/zoomable-tex.tsx +78 -0
- package/src/components/zoomable.tsx +300 -0
- package/src/components.ts +16 -0
- package/src/definition-context.tsx +60 -0
- package/src/dependencies.ts +21 -0
- package/src/error-boundary.tsx +50 -0
- package/src/extra-widgets.ts +75 -0
- package/src/hint-renderer.tsx +149 -0
- package/src/hints-renderer.tsx +377 -0
- package/src/icon-paths.ts +119 -0
- package/src/index.ts +158 -0
- package/src/init.ts +54 -0
- package/src/interaction-tracker.ts +61 -0
- package/src/interactive2/__tests__/movable-mock.ts +43 -0
- package/src/interactive2/__tests__/movable-point.test.ts +145 -0
- package/src/interactive2/interactive-util.ts +155 -0
- package/src/interactive2/movable-helper-methods.ts +161 -0
- package/src/interactive2/movable-line-options.ts +419 -0
- package/src/interactive2/movable-line.ts +318 -0
- package/src/interactive2/movable-point-options.ts +212 -0
- package/src/interactive2/movable-point.tsx +593 -0
- package/src/interactive2/movable-polygon-options.ts +390 -0
- package/src/interactive2/movable-polygon.ts +368 -0
- package/src/interactive2/movable.ts +275 -0
- package/src/interactive2/objective_.ts +79 -0
- package/src/interactive2/types.ts +2 -0
- package/src/interactive2/wrapped-defaults.ts +87 -0
- package/src/interactive2/wrapped-ellipse.ts +94 -0
- package/src/interactive2/wrapped-line.ts +116 -0
- package/src/interactive2/wrapped-path.ts +51 -0
- package/src/interactive2.ts +73 -0
- package/src/item-renderer.tsx +514 -0
- package/src/item-version.ts +10 -0
- package/src/jipt-paragraphs.ts +49 -0
- package/src/jquery.mobile.vmouse.js +0 -1
- package/src/keypad-context.ts +34 -0
- package/src/loading-context.ts +21 -0
- package/src/logging/log.test.ts +39 -0
- package/src/logging/log.ts +97 -0
- package/src/mixins/__tests__/widget-prop-denylist.test.ts +21 -0
- package/src/mixins/changeable.ts +133 -0
- package/src/mixins/editor-jsonify.ts +13 -0
- package/src/mixins/provide-keypad.tsx +144 -0
- package/src/mixins/widget-jsonify-deprecated.ts +23 -0
- package/src/mixins/widget-prop-denylist.ts +48 -0
- package/src/multi-items/__stories__/multi-renderer.stories.tsx +87 -0
- package/src/multi-items/__testdata__/multi-renderer.testdata.ts +172 -0
- package/src/multi-items/__tests__/items.test.ts +250 -0
- package/src/multi-items/__tests__/multi-renderer.test.tsx +910 -0
- package/src/multi-items/__tests__/prop-type-builders.test.ts +133 -0
- package/src/multi-items/__tests__/shapes.test.ts +43 -0
- package/src/multi-items/__tests__/trees.test.ts +325 -0
- package/src/multi-items/item-types.js.flow +55 -0
- package/src/multi-items/item-types.ts +56 -0
- package/src/multi-items/items.ts +176 -0
- package/src/multi-items/multi-renderer.tsx +564 -0
- package/src/multi-items/prop-type-builders.ts +106 -0
- package/src/multi-items/shape-types.ts +52 -0
- package/src/multi-items/shapes.ts +52 -0
- package/src/multi-items/tree-types.ts +47 -0
- package/src/multi-items/trees.ts +360 -0
- package/src/multi-items.ts +75 -0
- package/src/perseus-api.tsx +188 -0
- package/src/perseus-env.ts +27 -0
- package/src/perseus-error.ts +17 -0
- package/src/perseus-markdown.tsx +407 -0
- package/src/perseus-types.ts +1474 -0
- package/src/question-paragraph.tsx +29 -0
- package/src/renderability.ts +109 -0
- package/src/renderer.tsx +1992 -0
- package/src/server-item-renderer.tsx +465 -0
- package/src/sigfigs.ts +490 -0
- package/src/styles/constants.ts +94 -0
- package/src/styles/global-constants.ts +343 -0
- package/src/styles/global-styles.ts +306 -0
- package/src/styles/media-queries.ts +47 -0
- package/src/styles/shared.ts +130 -0
- package/src/tex-wrangler.ts +182 -0
- package/src/translation-linter.ts +126 -0
- package/src/traversal.ts +138 -0
- package/src/types.ts +468 -0
- package/src/util/a11y.ts +23 -0
- package/src/util/answer-types.test.ts +114 -0
- package/src/util/answer-types.ts +876 -0
- package/src/util/colors.ts +93 -0
- package/src/util/fix-passage-refs.ts +121 -0
- package/src/util/graph-utils.ts +15 -0
- package/src/util/graphie.ts +1617 -0
- package/src/util/interactive.ts +4191 -0
- package/src/util/katex-preprocess.ts +14 -0
- package/src/util/math.ts +289 -0
- package/src/util/mobile-native-utils.test.ts +22 -0
- package/src/util/mobile-native-utils.ts +12 -0
- package/src/util/react-render.tsx +27 -0
- package/src/util/register-all-widgets-for-testing.ts +11 -0
- package/src/util/scroll-utils.ts +155 -0
- package/src/util/sizing-utils.ts +46 -0
- package/src/util/tex.ts +208 -0
- package/src/util/url-utils.ts +34 -0
- package/src/util.ts +1003 -0
- package/src/version.ts +11 -0
- package/src/widget-container.tsx +175 -0
- package/src/widgets/__stories__/categorizer.stories.tsx +14 -0
- package/src/widgets/__stories__/cs-program.stories.tsx +14 -0
- package/src/widgets/__stories__/definition.stories.tsx +111 -0
- package/src/widgets/__stories__/dropdown.stories.tsx +14 -0
- package/src/widgets/__stories__/explanation.stories.tsx +18 -0
- package/src/widgets/__stories__/expression.stories.tsx +29 -0
- package/src/widgets/__stories__/graded-group-set.stories.tsx +31 -0
- package/src/widgets/__stories__/graded-group.stories.tsx +31 -0
- package/src/widgets/__stories__/grapher.stories.tsx +60 -0
- package/src/widgets/__stories__/group.stories.tsx +14 -0
- package/src/widgets/__stories__/iframe.stories.tsx +14 -0
- package/src/widgets/__stories__/image.stories.tsx +61 -0
- package/src/widgets/__stories__/input-number.stories.tsx +110 -0
- package/src/widgets/__stories__/interaction.stories.tsx +14 -0
- package/src/widgets/__stories__/interactive-graph.stories.tsx +60 -0
- package/src/widgets/__stories__/matcher.stories.tsx +14 -0
- package/src/widgets/__stories__/matrix.stories.tsx +14 -0
- package/src/widgets/__stories__/number-line.stories.tsx +14 -0
- package/src/widgets/__stories__/numeric-input.stories.tsx +107 -0
- package/src/widgets/__stories__/on-screen-keypad.stories.tsx +120 -0
- package/src/widgets/__stories__/orderer.stories.tsx +14 -0
- package/src/widgets/__stories__/passage-ref.stories.tsx +22 -0
- package/src/widgets/__stories__/passage.stories.tsx +32 -0
- package/src/widgets/__stories__/radio.stories.tsx +88 -0
- package/src/widgets/__stories__/sorter.stories.tsx +14 -0
- package/src/widgets/__stories__/transformer.stories.tsx +14 -0
- package/src/widgets/__stories__/unit.stories.tsx +30 -0
- package/src/widgets/__stories__/video-transcript-link.stories.tsx +27 -0
- package/src/widgets/__stories__/video.stories.tsx +14 -0
- package/src/widgets/__testdata__/base-radio.testdata.ts +21 -0
- package/src/widgets/__testdata__/categorizer.testdata.ts +49 -0
- package/src/widgets/__testdata__/cs-program.testdata.ts +27 -0
- package/src/widgets/__testdata__/dropdown.testdata.ts +33 -0
- package/src/widgets/__testdata__/explanation.testdata.ts +55 -0
- package/src/widgets/__testdata__/expression.testdata.ts +94 -0
- package/src/widgets/__testdata__/graded-group-set.testdata.ts +356 -0
- package/src/widgets/__testdata__/graded-group.testdata.ts +77 -0
- package/src/widgets/__testdata__/grapher.testdata.ts +374 -0
- package/src/widgets/__testdata__/group.testdata.ts +155 -0
- package/src/widgets/__testdata__/iframe.testdata.ts +35 -0
- package/src/widgets/__testdata__/image.testdata.ts +36 -0
- package/src/widgets/__testdata__/input-number.testdata.ts +72 -0
- package/src/widgets/__testdata__/interaction.testdata.ts +262 -0
- package/src/widgets/__testdata__/interactive-graph.testdata.ts +644 -0
- package/src/widgets/__testdata__/matcher.testdata.ts +33 -0
- package/src/widgets/__testdata__/matrix.testdata.ts +28 -0
- package/src/widgets/__testdata__/number-line.testdata.ts +30 -0
- package/src/widgets/__testdata__/numeric-input.testdata.ts +266 -0
- package/src/widgets/__testdata__/orderer.testdata.ts +57 -0
- package/src/widgets/__testdata__/passage-ref.testdata.ts +101 -0
- package/src/widgets/__testdata__/passage.testdata.ts +95 -0
- package/src/widgets/__testdata__/radio.testdata.ts +261 -0
- package/src/widgets/__testdata__/sorter.testdata.ts +19 -0
- package/src/widgets/__testdata__/transformer.testdata.ts +108 -0
- package/src/widgets/__testdata__/video.testdata.ts +21 -0
- package/src/widgets/__tests__/categorizer.test.ts +203 -0
- package/src/widgets/__tests__/cs-program.test.ts +43 -0
- package/src/widgets/__tests__/definition.test.ts +136 -0
- package/src/widgets/__tests__/dropdown.test.ts +105 -0
- package/src/widgets/__tests__/explanation.test.ts +198 -0
- package/src/widgets/__tests__/expression.test.ts +431 -0
- package/src/widgets/__tests__/graded-group-set-jipt.test.ts +30 -0
- package/src/widgets/__tests__/graded-group-set.test.ts +288 -0
- package/src/widgets/__tests__/graded-group.test.ts +232 -0
- package/src/widgets/__tests__/grapher.cypress.ts +576 -0
- package/src/widgets/__tests__/grapher.test.ts +33 -0
- package/src/widgets/__tests__/group.test.tsx +512 -0
- package/src/widgets/__tests__/iframe.test.ts +45 -0
- package/src/widgets/__tests__/image.test.ts +62 -0
- package/src/widgets/__tests__/input-number.test.ts +354 -0
- package/src/widgets/__tests__/interaction.test.ts +31 -0
- package/src/widgets/__tests__/interactive-graph.cypress.ts +815 -0
- package/src/widgets/__tests__/interactive-graph.test.ts +106 -0
- package/src/widgets/__tests__/matcher.test.tsx +152 -0
- package/src/widgets/__tests__/matrix.test.ts +82 -0
- package/src/widgets/__tests__/number-line.test.ts +79 -0
- package/src/widgets/__tests__/numeric-input.test.ts +502 -0
- package/src/widgets/__tests__/orderer.test.ts +73 -0
- package/src/widgets/__tests__/passage-ref.test.ts +168 -0
- package/src/widgets/__tests__/passage.test.tsx +224 -0
- package/src/widgets/__tests__/radio/base-radio.test.tsx +470 -0
- package/src/widgets/__tests__/radio/choice-icon.test.tsx +90 -0
- package/src/widgets/__tests__/radio/choice.test.tsx +310 -0
- package/src/widgets/__tests__/radio/focus-ring.test.tsx +23 -0
- package/src/widgets/__tests__/radio/option-status.test.tsx +77 -0
- package/src/widgets/__tests__/radio.test.ts +807 -0
- package/src/widgets/__tests__/renderQuestion.tsx +77 -0
- package/src/widgets/__tests__/unit.test.tsx +168 -0
- package/src/widgets/__tests__/video.test.ts +53 -0
- package/src/widgets/categorizer.tsx +343 -0
- package/src/widgets/cs-program.tsx +227 -0
- package/src/widgets/definition.tsx +121 -0
- package/src/widgets/dropdown.tsx +142 -0
- package/src/widgets/explanation.tsx +317 -0
- package/src/widgets/expression.tsx +647 -0
- package/src/widgets/graded-group-answer-bar.tsx +142 -0
- package/src/widgets/graded-group-set.tsx +296 -0
- package/src/widgets/graded-group.tsx +466 -0
- package/src/widgets/grapher/util.tsx +803 -0
- package/src/widgets/grapher.tsx +674 -0
- package/src/widgets/group.tsx +196 -0
- package/src/widgets/iframe.tsx +195 -0
- package/src/widgets/image.tsx +309 -0
- package/src/widgets/input-number.tsx +413 -0
- package/src/widgets/interaction/arrow-picker.tsx +38 -0
- package/src/widgets/interaction/color-picker.tsx +69 -0
- package/src/widgets/interaction/dash-picker.tsx +45 -0
- package/src/widgets/interaction/element-container.tsx +101 -0
- package/src/widgets/interaction.tsx +826 -0
- package/src/widgets/interactive-graph.tsx +2921 -0
- package/src/widgets/label-image/__stories__/answer-choices.stories.tsx +98 -0
- package/src/widgets/label-image/__stories__/marker.stories.tsx +181 -0
- package/src/widgets/label-image/answer-choices.tsx +300 -0
- package/src/widgets/label-image/marker.tsx +364 -0
- package/src/widgets/label-image/types.ts +26 -0
- package/src/widgets/label-image.test.ts +840 -0
- package/src/widgets/label-image.tsx +849 -0
- package/src/widgets/lights-puzzle.tsx +359 -0
- package/src/widgets/matcher.tsx +278 -0
- package/src/widgets/matrix.tsx +637 -0
- package/src/widgets/measurer.tsx +217 -0
- package/src/widgets/molecule/__tests__/layout.test.ts +162 -0
- package/src/widgets/molecule/__tests__/parser.test.ts +155 -0
- package/src/widgets/molecule/molecule-drawing.ts +173 -0
- package/src/widgets/molecule/molecule-layout.ts +362 -0
- package/src/widgets/molecule/smiles-parser.ts +296 -0
- package/src/widgets/molecule.tsx +172 -0
- package/src/widgets/number-line.tsx +864 -0
- package/src/widgets/numeric-input.tsx +563 -0
- package/src/widgets/orderer.tsx +788 -0
- package/src/widgets/passage/__tests__/passage-markdown.test.ts +376 -0
- package/src/widgets/passage/passage-markdown.tsx +475 -0
- package/src/widgets/passage-ref-target.tsx +73 -0
- package/src/widgets/passage-ref.tsx +215 -0
- package/src/widgets/passage.tsx +584 -0
- package/src/widgets/plotter.tsx +1204 -0
- package/src/widgets/radio/__stories__/base-radio.stories.tsx +204 -0
- package/src/widgets/radio/__stories__/choice-icon.stories.tsx +168 -0
- package/src/widgets/radio/__stories__/choice-none-above.stories.tsx +40 -0
- package/src/widgets/radio/__stories__/choice.stories.tsx +137 -0
- package/src/widgets/radio/__stories__/focus-ring.stories.tsx +43 -0
- package/src/widgets/radio/__stories__/option-status.stories.tsx +105 -0
- package/src/widgets/radio/base-radio.tsx +509 -0
- package/src/widgets/radio/choice-a11y-text.ts +61 -0
- package/src/widgets/radio/choice-icon/choice-icon.tsx +217 -0
- package/src/widgets/radio/choice-icon/cross-out-line.tsx +53 -0
- package/src/widgets/radio/choice-icon/shared-styles.ts +15 -0
- package/src/widgets/radio/choice-none-above.tsx +56 -0
- package/src/widgets/radio/choice.jsx.fixture.ts +45 -0
- package/src/widgets/radio/choice.tsx +358 -0
- package/src/widgets/radio/focus-ring.tsx +57 -0
- package/src/widgets/radio/option-status.tsx +100 -0
- package/src/widgets/radio/util.test.ts +18 -0
- package/src/widgets/radio/util.ts +31 -0
- package/src/widgets/radio/widget.tsx +521 -0
- package/src/widgets/radio.ts +157 -0
- package/src/widgets/reaction-diagram.tsx +144 -0
- package/src/widgets/sequence.tsx +137 -0
- package/src/widgets/simulator.tsx +831 -0
- package/src/widgets/sorter.tsx +154 -0
- package/src/widgets/table.tsx +393 -0
- package/src/widgets/transformer.tsx +2951 -0
- package/src/widgets/unit.tsx +374 -0
- package/src/widgets/video-transcript-link.test.tsx +213 -0
- package/src/widgets/video-transcript-link.tsx +84 -0
- package/src/widgets/video.tsx +124 -0
- package/src/widgets.ts +444 -0
- package/src/zoom.ts +558 -0
- package/tsconfig.json +25 -0
- package/tsconfig.tsbuildinfo +1 -0
- package/src/__stories__/hints-renderer.stories.jsx +0 -60
- package/src/__stories__/item-renderer.stories.jsx +0 -27
- package/src/__stories__/server-item-renderer.stories.jsx +0 -27
- package/src/__testdata__/graphie_testdata.js +0 -53
- package/src/__testdata__/item-renderer_testdata.js +0 -161
- package/src/__testdata__/renderer_testdata.js +0 -123
- package/src/__tests__/a11y_test.jsx +0 -304
- package/src/__tests__/item-renderer_test.jsx +0 -892
- package/src/__tests__/jipt-paragraphs_test.js +0 -34
- package/src/__tests__/mock-asset-loading-widget.jsx +0 -57
- package/src/__tests__/mock-widget.jsx +0 -35
- package/src/__tests__/perseus-markdown_test.jsx +0 -747
- package/src/__tests__/renderability_test.jsx +0 -481
- package/src/__tests__/renderer-api_test.jsx +0 -309
- package/src/__tests__/renderer_test.jsx +0 -1792
- package/src/__tests__/server-item-renderer_test.jsx +0 -516
- package/src/__tests__/test-items/image-item.js +0 -25
- package/src/__tests__/test-items/input-number-1-item.js +0 -27
- package/src/__tests__/test-items/input-number-2-item.js +0 -39
- package/src/__tests__/test-items/table-item.js +0 -30
- package/src/__tests__/tex-wrangler_test.js +0 -83
- package/src/__tests__/util_test.js +0 -41
- package/src/a11y.js +0 -46
- package/src/all-widgets.js +0 -9
- package/src/article-renderer.jsx +0 -214
- package/src/asset-context.js +0 -30
- package/src/basic-widgets.js +0 -13
- package/src/components/__stories__/button-group.stories.jsx +0 -61
- package/src/components/__stories__/fixed-to-responsive.stories.jsx +0 -132
- package/src/components/__stories__/graph.stories.jsx +0 -27
- package/src/components/__stories__/graphie.stories.jsx +0 -32
- package/src/components/__stories__/hud.stories.jsx +0 -36
- package/src/components/__stories__/icon.stories.jsx +0 -56
- package/src/components/__stories__/image-loader.stories.jsx +0 -60
- package/src/components/__stories__/info-tip.stories.jsx +0 -33
- package/src/components/__stories__/inline-icon.stories.jsx +0 -39
- package/src/components/__stories__/input-with-examples.stories.jsx +0 -52
- package/src/components/__stories__/lint.stories.jsx +0 -40
- package/src/components/__stories__/math-input.stories.jsx +0 -29
- package/src/components/__stories__/math-output.stories.jsx +0 -24
- package/src/components/__stories__/multi-button-group.stories.jsx +0 -69
- package/src/components/__stories__/number-input.stories.jsx +0 -42
- package/src/components/__stories__/prop-check-box.stories.jsx +0 -62
- package/src/components/__stories__/range-input.stories.jsx +0 -28
- package/src/components/__stories__/simple-keypad-input.stories.jsx +0 -28
- package/src/components/__stories__/sortable.stories.jsx +0 -73
- package/src/components/__stories__/stub-tag-editor.stories.jsx +0 -44
- package/src/components/__stories__/svg-image.stories.jsx +0 -71
- package/src/components/__stories__/tex.stories.jsx +0 -24
- package/src/components/__stories__/text-buttons.stories.jsx +0 -51
- package/src/components/__stories__/text-input.stories.jsx +0 -34
- package/src/components/__stories__/text-list-editor.stories.jsx +0 -33
- package/src/components/__stories__/zoomable-tex.stories.jsx +0 -39
- package/src/components/__stories__/zoomable.stories.jsx +0 -40
- package/src/components/__testdata__/sorter_testdata.js +0 -20
- package/src/components/__tests__/number-input_test.jsx +0 -112
- package/src/components/__tests__/sortable_test.jsx +0 -234
- package/src/components/__tests__/sorter_test.jsx +0 -111
- package/src/components/__tests__/zoomable_test.jsx +0 -388
- package/src/components/button-group.jsx +0 -131
- package/src/components/constants.js +0 -15
- package/src/components/fixed-to-responsive.jsx +0 -165
- package/src/components/graph.jsx +0 -413
- package/src/components/graphie-classes.jsx +0 -148
- package/src/components/graphie-movables.jsx +0 -342
- package/src/components/graphie.jsx +0 -353
- package/src/components/highlighting/highlightable-content.jsx +0 -245
- package/src/components/highlighting/highlights.js +0 -208
- package/src/components/highlighting/ranges.js +0 -299
- package/src/components/highlighting/types.js +0 -73
- package/src/components/highlighting/ui/highlight-renderer.jsx +0 -179
- package/src/components/highlighting/ui/highlight-set-renderer.jsx +0 -190
- package/src/components/highlighting/ui/highlight-tooltip.jsx +0 -143
- package/src/components/highlighting/ui/highlighting-ui.jsx +0 -163
- package/src/components/highlighting/ui/selection-tracker.jsx +0 -184
- package/src/components/highlighting/ui/types.js +0 -21
- package/src/components/highlighting/ui/util.js +0 -166
- package/src/components/highlighting/word-indexer.jsx +0 -155
- package/src/components/hud.jsx +0 -179
- package/src/components/icon.jsx +0 -149
- package/src/components/image-loader.jsx +0 -175
- package/src/components/info-tip/info-tip.jsx +0 -146
- package/src/components/info-tip.jsx +0 -38
- package/src/components/inline-icon.jsx +0 -81
- package/src/components/input-with-examples.jsx +0 -248
- package/src/components/lint.jsx +0 -455
- package/src/components/math-input.jsx +0 -293
- package/src/components/math-output.jsx +0 -128
- package/src/components/multi-button-group.jsx +0 -137
- package/src/components/number-input.jsx +0 -253
- package/src/components/prop-check-box.jsx +0 -80
- package/src/components/range-input.jsx +0 -61
- package/src/components/simple-keypad-input.jsx +0 -88
- package/src/components/sortable.jsx +0 -872
- package/src/components/stub-tag-editor.jsx +0 -54
- package/src/components/svg-image.jsx +0 -765
- package/src/components/tex-buttons.jsx +0 -320
- package/src/components/tex.jsx +0 -70
- package/src/components/text-input.jsx +0 -133
- package/src/components/text-list-editor.jsx +0 -157
- package/src/components/tooltip.jsx +0 -392
- package/src/components/visibility-observer/__stories__/visibility-observer.stories.jsx +0 -140
- package/src/components/visibility-observer/get-scroll-parent.js +0 -45
- package/src/components/visibility-observer/visibility-observer.js +0 -109
- package/src/components/visibility-observer/visibility-observer.jsx +0 -123
- package/src/components/zoomable-tex.jsx +0 -70
- package/src/components/zoomable.jsx +0 -294
- package/src/components.js +0 -17
- package/src/definition-context.js +0 -59
- package/src/dependencies.js +0 -22
- package/src/error-boundary.jsx +0 -48
- package/src/extra-widgets.js +0 -75
- package/src/hint-renderer.jsx +0 -152
- package/src/hints-renderer.jsx +0 -367
- package/src/icon-paths.js +0 -120
- package/src/index.js +0 -159
- package/src/init.js +0 -49
- package/src/interaction-tracker.js +0 -60
- package/src/interactive2/__tests__/movable-mock.js +0 -48
- package/src/interactive2/__tests__/movable-point_test.js +0 -146
- package/src/interactive2/interactive-util.js +0 -152
- package/src/interactive2/movable-helper-methods.js +0 -160
- package/src/interactive2/movable-line-options.js +0 -392
- package/src/interactive2/movable-line.js +0 -322
- package/src/interactive2/movable-point-options.js +0 -190
- package/src/interactive2/movable-point.jsx +0 -597
- package/src/interactive2/movable-polygon-options.js +0 -351
- package/src/interactive2/movable-polygon.js +0 -368
- package/src/interactive2/movable.js +0 -273
- package/src/interactive2/objective_.js +0 -79
- package/src/interactive2/types.js +0 -3
- package/src/interactive2/wrapped-defaults.js +0 -86
- package/src/interactive2/wrapped-ellipse.js +0 -86
- package/src/interactive2/wrapped-line.js +0 -109
- package/src/interactive2/wrapped-path.js +0 -47
- package/src/interactive2.js +0 -91
- package/src/item-renderer.jsx +0 -514
- package/src/item-version.js +0 -12
- package/src/jipt-paragraphs.js +0 -52
- package/src/keypad-context.js +0 -33
- package/src/loading-context.js +0 -20
- package/src/logging/log.js +0 -107
- package/src/logging/log_test.js +0 -41
- package/src/mixins/__tests__/widget-prop-denylist_test.js +0 -23
- package/src/mixins/changeable.jsx +0 -115
- package/src/mixins/editor-jsonify.jsx +0 -13
- package/src/mixins/provide-keypad.jsx +0 -131
- package/src/mixins/widget-jsonify-deprecated.jsx +0 -23
- package/src/mixins/widget-prop-denylist.js +0 -49
- package/src/multi-items/__stories__/multi-renderer.stories.js +0 -88
- package/src/multi-items/__testdata__/multi-renderer_testdata.js +0 -174
- package/src/multi-items/__tests__/items_test.js +0 -245
- package/src/multi-items/__tests__/multi-renderer_test.js +0 -903
- package/src/multi-items/__tests__/prop-type-builders_test.js +0 -134
- package/src/multi-items/__tests__/shapes_test.js +0 -44
- package/src/multi-items/__tests__/trees_test.js +0 -316
- package/src/multi-items/items.js +0 -176
- package/src/multi-items/multi-renderer.jsx +0 -543
- package/src/multi-items/prop-type-builders.js +0 -105
- package/src/multi-items/shape-types.js +0 -47
- package/src/multi-items/shapes.js +0 -53
- package/src/multi-items/tree-types.js +0 -42
- package/src/multi-items/trees.js +0 -345
- package/src/multi-items.js +0 -76
- package/src/perseus-api.jsx +0 -214
- package/src/perseus-env.js +0 -26
- package/src/perseus-error.js +0 -19
- package/src/perseus-markdown.jsx +0 -408
- package/src/perseus-types.js +0 -1471
- package/src/question-paragraph.jsx +0 -30
- package/src/renderability.jsx +0 -108
- package/src/renderer.jsx +0 -1937
- package/src/server-item-renderer.jsx +0 -467
- package/src/sigfigs.jsx +0 -492
- package/src/styles/constants.js +0 -96
- package/src/styles/global-constants.js +0 -344
- package/src/styles/global-styles.js +0 -307
- package/src/styles/media-queries.js +0 -48
- package/src/styles/shared.js +0 -132
- package/src/tex-wrangler.js +0 -176
- package/src/translation-linter.js +0 -125
- package/src/traversal.jsx +0 -141
- package/src/types.js +0 -482
- package/src/util/a11y.js +0 -24
- package/src/util/answer-types.js +0 -861
- package/src/util/answer-types_test.js +0 -115
- package/src/util/colors.js +0 -94
- package/src/util/fix-passage-refs.jsx +0 -122
- package/src/util/graph-utils.js +0 -16
- package/src/util/graphie.js +0 -1586
- package/src/util/interactive.js +0 -4078
- package/src/util/katex-preprocess.js +0 -16
- package/src/util/math.js +0 -289
- package/src/util/mobile-native-utils.js +0 -14
- package/src/util/mobile-native-utils_test.js +0 -24
- package/src/util/react-render.js +0 -27
- package/src/util/register-all-widgets-for-testing.js +0 -12
- package/src/util/scroll-utils.js +0 -162
- package/src/util/sizing-utils.js +0 -46
- package/src/util/tex.js +0 -203
- package/src/util/url-utils.js +0 -36
- package/src/util.js +0 -984
- package/src/version.js +0 -11
- package/src/widget-container.jsx +0 -178
- package/src/widgets/__stories__/categorizer.stories.jsx +0 -15
- package/src/widgets/__stories__/cs-program.stories.jsx +0 -15
- package/src/widgets/__stories__/definition.stories.jsx +0 -108
- package/src/widgets/__stories__/dropdown.stories.jsx +0 -15
- package/src/widgets/__stories__/explanation.stories.jsx +0 -19
- package/src/widgets/__stories__/expression.stories.jsx +0 -26
- package/src/widgets/__stories__/graded-group-set.stories.jsx +0 -32
- package/src/widgets/__stories__/graded-group.stories.jsx +0 -32
- package/src/widgets/__stories__/grapher.stories.jsx +0 -47
- package/src/widgets/__stories__/group.stories.jsx +0 -15
- package/src/widgets/__stories__/iframe.stories.jsx +0 -15
- package/src/widgets/__stories__/image.stories.jsx +0 -62
- package/src/widgets/__stories__/input-number.stories.jsx +0 -102
- package/src/widgets/__stories__/interaction.stories.jsx +0 -15
- package/src/widgets/__stories__/interactive-graph.stories.jsx +0 -61
- package/src/widgets/__stories__/matcher.stories.jsx +0 -15
- package/src/widgets/__stories__/matrix.stories.jsx +0 -15
- package/src/widgets/__stories__/number-line.stories.jsx +0 -15
- package/src/widgets/__stories__/numeric-input.stories.jsx +0 -106
- package/src/widgets/__stories__/on-screen-keypad.stories.jsx +0 -118
- package/src/widgets/__stories__/orderer.stories.jsx +0 -15
- package/src/widgets/__stories__/passage-ref.stories.jsx +0 -23
- package/src/widgets/__stories__/passage.stories.jsx +0 -27
- package/src/widgets/__stories__/radio.stories.jsx +0 -90
- package/src/widgets/__stories__/sorter.stories.jsx +0 -15
- package/src/widgets/__stories__/transformer.stories.jsx +0 -15
- package/src/widgets/__stories__/unit.stories.jsx +0 -29
- package/src/widgets/__stories__/video-transcript-link.stories.jsx +0 -24
- package/src/widgets/__stories__/video.stories.jsx +0 -15
- package/src/widgets/__testdata__/base-radio_testdata.js +0 -22
- package/src/widgets/__testdata__/categorizer_testdata.js +0 -50
- package/src/widgets/__testdata__/cs-program_testdata.js +0 -28
- package/src/widgets/__testdata__/dropdown_testdata.js +0 -34
- package/src/widgets/__testdata__/explanation_testdata.js +0 -56
- package/src/widgets/__testdata__/expression_testdata.js +0 -95
- package/src/widgets/__testdata__/graded-group-set_testdata.js +0 -358
- package/src/widgets/__testdata__/graded-group_testdata.js +0 -79
- package/src/widgets/__testdata__/grapher_testdata.js +0 -376
- package/src/widgets/__testdata__/group_testdata.js +0 -156
- package/src/widgets/__testdata__/iframe_testdata.js +0 -36
- package/src/widgets/__testdata__/image_testdata.js +0 -38
- package/src/widgets/__testdata__/input-number_testdata.js +0 -73
- package/src/widgets/__testdata__/interaction_testdata.js +0 -264
- package/src/widgets/__testdata__/interactive-graph_testdata.js +0 -646
- package/src/widgets/__testdata__/matcher_testdata.js +0 -34
- package/src/widgets/__testdata__/matrix_testdata.js +0 -29
- package/src/widgets/__testdata__/number-line_testdata.js +0 -31
- package/src/widgets/__testdata__/numeric-input_testdata.js +0 -266
- package/src/widgets/__testdata__/orderer_testdata.js +0 -58
- package/src/widgets/__testdata__/passage-ref_testdata.js +0 -103
- package/src/widgets/__testdata__/passage_testdata.js +0 -96
- package/src/widgets/__testdata__/radio_testdata.js +0 -262
- package/src/widgets/__testdata__/sorter_testdata.js +0 -20
- package/src/widgets/__testdata__/transformer_testdata.js +0 -109
- package/src/widgets/__testdata__/video_testdata.js +0 -22
- package/src/widgets/__tests__/categorizer_test.jsx +0 -205
- package/src/widgets/__tests__/cs-program_test.jsx +0 -45
- package/src/widgets/__tests__/definition_test.js +0 -137
- package/src/widgets/__tests__/dropdown_test.jsx +0 -106
- package/src/widgets/__tests__/explanation_test.js +0 -199
- package/src/widgets/__tests__/expression_test.jsx +0 -429
- package/src/widgets/__tests__/graded-group-set-jipt_test.jsx +0 -32
- package/src/widgets/__tests__/graded-group-set_test.jsx +0 -290
- package/src/widgets/__tests__/graded-group_test.jsx +0 -233
- package/src/widgets/__tests__/grapher.cypress.jsx +0 -546
- package/src/widgets/__tests__/grapher_test.jsx +0 -35
- package/src/widgets/__tests__/group_test.jsx +0 -512
- package/src/widgets/__tests__/iframe_test.jsx +0 -47
- package/src/widgets/__tests__/image_test.jsx +0 -65
- package/src/widgets/__tests__/input-number_test.jsx +0 -352
- package/src/widgets/__tests__/interaction_test.jsx +0 -33
- package/src/widgets/__tests__/interactive-graph.cypress.jsx +0 -777
- package/src/widgets/__tests__/interactive-graph_test.jsx +0 -105
- package/src/widgets/__tests__/matcher_test.jsx +0 -157
- package/src/widgets/__tests__/matrix_test.jsx +0 -84
- package/src/widgets/__tests__/number-line_test.jsx +0 -81
- package/src/widgets/__tests__/numeric-input_test.jsx +0 -503
- package/src/widgets/__tests__/orderer_test.jsx +0 -75
- package/src/widgets/__tests__/passage-ref_test.jsx +0 -166
- package/src/widgets/__tests__/passage_test.jsx +0 -212
- package/src/widgets/__tests__/radio/base-radio_test.jsx +0 -443
- package/src/widgets/__tests__/radio/choice-icon_test.jsx +0 -91
- package/src/widgets/__tests__/radio/choice_test.jsx +0 -311
- package/src/widgets/__tests__/radio/focus-ring_test.jsx +0 -23
- package/src/widgets/__tests__/radio/option-status_test.jsx +0 -65
- package/src/widgets/__tests__/radio_test.jsx +0 -810
- package/src/widgets/__tests__/renderQuestion.jsx +0 -66
- package/src/widgets/__tests__/unit_test.jsx +0 -169
- package/src/widgets/__tests__/video_test.jsx +0 -55
- package/src/widgets/categorizer.jsx +0 -343
- package/src/widgets/cs-program.jsx +0 -227
- package/src/widgets/definition.jsx +0 -121
- package/src/widgets/dropdown.jsx +0 -141
- package/src/widgets/explanation.jsx +0 -315
- package/src/widgets/expression.jsx +0 -629
- package/src/widgets/graded-group-answer-bar.jsx +0 -152
- package/src/widgets/graded-group-set.jsx +0 -296
- package/src/widgets/graded-group.jsx +0 -453
- package/src/widgets/grapher/util.jsx +0 -806
- package/src/widgets/grapher.jsx +0 -663
- package/src/widgets/group.jsx +0 -195
- package/src/widgets/iframe.jsx +0 -198
- package/src/widgets/image.jsx +0 -310
- package/src/widgets/input-number.jsx +0 -402
- package/src/widgets/interaction/arrow-picker.jsx +0 -39
- package/src/widgets/interaction/color-picker.jsx +0 -69
- package/src/widgets/interaction/dash-picker.jsx +0 -46
- package/src/widgets/interaction/element-container.jsx +0 -97
- package/src/widgets/interaction.jsx +0 -742
- package/src/widgets/interactive-graph.jsx +0 -2820
- package/src/widgets/label-image/__stories__/answer-choices.stories.jsx +0 -93
- package/src/widgets/label-image/__stories__/marker.stories.jsx +0 -172
- package/src/widgets/label-image/answer-choices.jsx +0 -311
- package/src/widgets/label-image/marker.jsx +0 -365
- package/src/widgets/label-image/types.js +0 -33
- package/src/widgets/label-image.jsx +0 -841
- package/src/widgets/label-image_test.js +0 -840
- package/src/widgets/lights-puzzle.jsx +0 -356
- package/src/widgets/matcher.jsx +0 -274
- package/src/widgets/matrix.jsx +0 -616
- package/src/widgets/measurer.jsx +0 -215
- package/src/widgets/molecule/__tests__/layout_test.jsx +0 -159
- package/src/widgets/molecule/__tests__/parser_test.jsx +0 -142
- package/src/widgets/molecule/molecule-drawing.jsx +0 -175
- package/src/widgets/molecule/molecule-layout.jsx +0 -367
- package/src/widgets/molecule/smiles-parser.jsx +0 -300
- package/src/widgets/molecule.jsx +0 -172
- package/src/widgets/number-line.jsx +0 -855
- package/src/widgets/numeric-input.jsx +0 -546
- package/src/widgets/orderer.jsx +0 -756
- package/src/widgets/passage/__tests__/passage-markdown_test.jsx +0 -373
- package/src/widgets/passage/passage-markdown.jsx +0 -472
- package/src/widgets/passage-ref-target.jsx +0 -73
- package/src/widgets/passage-ref.jsx +0 -214
- package/src/widgets/passage.jsx +0 -576
- package/src/widgets/plotter.jsx +0 -1198
- package/src/widgets/radio/__stories__/base-radio.stories.jsx +0 -189
- package/src/widgets/radio/__stories__/choice-icon.stories.jsx +0 -166
- package/src/widgets/radio/__stories__/choice-none-above.stories.jsx +0 -41
- package/src/widgets/radio/__stories__/choice.stories.jsx +0 -138
- package/src/widgets/radio/__stories__/focus-ring.stories.jsx +0 -44
- package/src/widgets/radio/__stories__/option-status.stories.jsx +0 -104
- package/src/widgets/radio/base-radio.jsx +0 -494
- package/src/widgets/radio/choice-a11y-text.js +0 -62
- package/src/widgets/radio/choice-icon/choice-icon.jsx +0 -214
- package/src/widgets/radio/choice-icon/cross-out-line.jsx +0 -52
- package/src/widgets/radio/choice-icon/shared-styles.js +0 -16
- package/src/widgets/radio/choice-none-above.jsx +0 -63
- package/src/widgets/radio/choice.jsx +0 -373
- package/src/widgets/radio/choice.jsx.fixture.js +0 -46
- package/src/widgets/radio/focus-ring.jsx +0 -58
- package/src/widgets/radio/option-status.jsx +0 -98
- package/src/widgets/radio/util.js +0 -32
- package/src/widgets/radio/util_test.js +0 -19
- package/src/widgets/radio/widget.jsx +0 -515
- package/src/widgets/radio.jsx +0 -155
- package/src/widgets/reaction-diagram.jsx +0 -137
- package/src/widgets/sequence.jsx +0 -143
- package/src/widgets/simulator.jsx +0 -802
- package/src/widgets/sorter.jsx +0 -149
- package/src/widgets/table.jsx +0 -389
- package/src/widgets/transformer.jsx +0 -2872
- package/src/widgets/unit.jsx +0 -357
- package/src/widgets/video-transcript-link.jsx +0 -84
- package/src/widgets/video-transcript-link_test.js +0 -211
- package/src/widgets/video.jsx +0 -126
- package/src/widgets.js +0 -431
- package/src/zoom.js +0 -539
- /package/{src/multi-items/item-types.js → dist/multi-items/item-types.js.flow} +0 -0
- /package/dist/{strings.js → strings} +0 -0
- /package/src/__tests__/__snapshots__/{item-renderer_test.jsx.snap → item-renderer.test.tsx.snap} +0 -0
- /package/src/__tests__/__snapshots__/{perseus-markdown_test.jsx.snap → perseus-markdown.test.ts.snap} +0 -0
- /package/src/__tests__/__snapshots__/{renderer_test.jsx.snap → renderer.test.tsx.snap} +0 -0
- /package/src/__tests__/__snapshots__/{server-item-renderer_test.jsx.snap → server-item-renderer.test.tsx.snap} +0 -0
- /package/src/components/__tests__/__snapshots__/{sortable_test.jsx.snap → sortable.test.tsx.snap} +0 -0
- /package/src/components/__tests__/__snapshots__/{sorter_test.jsx.snap → sorter.test.tsx.snap} +0 -0
- /package/src/multi-items/__tests__/__snapshots__/{multi-renderer_test.js.snap → multi-renderer.test.tsx.snap} +0 -0
- /package/src/widgets/__tests__/__snapshots__/{categorizer_test.jsx.snap → categorizer.test.ts.snap} +0 -0
- /package/src/widgets/__tests__/__snapshots__/{cs-program_test.jsx.snap → cs-program.test.ts.snap} +0 -0
- /package/src/widgets/__tests__/__snapshots__/{definition_test.js.snap → definition.test.ts.snap} +0 -0
- /package/src/widgets/__tests__/__snapshots__/{dropdown_test.jsx.snap → dropdown.test.ts.snap} +0 -0
- /package/src/widgets/__tests__/__snapshots__/{explanation_test.js.snap → explanation.test.ts.snap} +0 -0
- /package/src/widgets/__tests__/__snapshots__/{graded-group-set-jipt_test.jsx.snap → graded-group-set-jipt.test.ts.snap} +0 -0
- /package/src/widgets/__tests__/__snapshots__/{graded-group-set_test.jsx.snap → graded-group-set.test.ts.snap} +0 -0
- /package/src/widgets/__tests__/__snapshots__/{graded-group_test.jsx.snap → graded-group.test.ts.snap} +0 -0
- /package/src/widgets/__tests__/__snapshots__/{grapher_test.jsx.snap → grapher.test.ts.snap} +0 -0
- /package/src/widgets/__tests__/__snapshots__/{group_test.jsx.snap → group.test.tsx.snap} +0 -0
- /package/src/widgets/__tests__/__snapshots__/{iframe_test.jsx.snap → iframe.test.ts.snap} +0 -0
- /package/src/widgets/__tests__/__snapshots__/{image_test.jsx.snap → image.test.ts.snap} +0 -0
- /package/src/widgets/__tests__/__snapshots__/{input-number_test.jsx.snap → input-number.test.ts.snap} +0 -0
- /package/src/widgets/__tests__/__snapshots__/{interaction_test.jsx.snap → interaction.test.ts.snap} +0 -0
- /package/src/widgets/__tests__/__snapshots__/{interactive-graph_test.jsx.snap → interactive-graph.test.ts.snap} +0 -0
- /package/src/widgets/__tests__/__snapshots__/{matcher_test.jsx.snap → matcher.test.tsx.snap} +0 -0
- /package/src/widgets/__tests__/__snapshots__/{matrix_test.jsx.snap → matrix.test.ts.snap} +0 -0
- /package/src/widgets/__tests__/__snapshots__/{number-line_test.jsx.snap → number-line.test.ts.snap} +0 -0
- /package/src/widgets/__tests__/__snapshots__/{numeric-input_test.jsx.snap → numeric-input.test.ts.snap} +0 -0
- /package/src/widgets/__tests__/__snapshots__/{orderer_test.jsx.snap → orderer.test.ts.snap} +0 -0
- /package/src/widgets/__tests__/__snapshots__/{passage-ref_test.jsx.snap → passage-ref.test.ts.snap} +0 -0
- /package/src/widgets/__tests__/__snapshots__/{passage_test.jsx.snap → passage.test.tsx.snap} +0 -0
- /package/src/widgets/__tests__/__snapshots__/{radio_test.jsx.snap → radio.test.ts.snap} +0 -0
- /package/src/widgets/__tests__/__snapshots__/{unit_test.jsx.snap → unit.test.tsx.snap} +0 -0
- /package/src/widgets/__tests__/__snapshots__/{video_test.jsx.snap → video.test.ts.snap} +0 -0
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Flowtype definitions for data
|
|
3
|
+
* Generated by Flowgen from a Typescript Definition
|
|
4
|
+
* Flowgen v1.21.0
|
|
5
|
+
* @flow
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Type definitions for multi-item shapes.
|
|
9
|
+
*
|
|
10
|
+
* A shape is an object that serves as a runtime type declaration: it specifies
|
|
11
|
+
* a tree structure for a particular class of multi-item.
|
|
12
|
+
*
|
|
13
|
+
* We use shapes instead static compile-time typing because the CMS needs to
|
|
14
|
+
* understand the shape of our content library's multi-items at runtime, and
|
|
15
|
+
* it's not always possible to infer the full shape from an example multi-item.
|
|
16
|
+
*
|
|
17
|
+
* Shapes also enable us to traverse a multi-item-shaped tree with confidence,
|
|
18
|
+
* even when we can't infer the shape from the tree alone.
|
|
19
|
+
*
|
|
20
|
+
* We *could* go all-in on a more general library to make certain Flow types
|
|
21
|
+
* runtime-inspectable, in order to DRY some things up, but that's probably a
|
|
22
|
+
* big ol' infrastructural magic mess, and the narrower scope of Shapes makes
|
|
23
|
+
* it easier to be confident that we've covered all cases rather than having to
|
|
24
|
+
* deal with all possible Javascript types.
|
|
25
|
+
*/
|
|
26
|
+
export type ContentShape = {|
|
|
27
|
+
type: "content",
|
|
28
|
+
|};
|
|
29
|
+
export type HintShape = {|
|
|
30
|
+
type: "hint",
|
|
31
|
+
|};
|
|
32
|
+
export type TagsShape = {|
|
|
33
|
+
type: "tags",
|
|
34
|
+
|};
|
|
35
|
+
export type ArrayShape = {|
|
|
36
|
+
type: "array",
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Each element of an ArrayNode has the same shape, which is specified by
|
|
40
|
+
* the `elementShape` property.
|
|
41
|
+
*/
|
|
42
|
+
elementShape: Shape,
|
|
43
|
+
|};
|
|
44
|
+
export type ObjectShape = {|
|
|
45
|
+
type: "object",
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Each property of an ObjectNode has its own shape, which is specified
|
|
49
|
+
* under the corresponding key in the `shape` property.
|
|
50
|
+
*/
|
|
51
|
+
shape: {
|
|
52
|
+
[k: string]: Shape,
|
|
53
|
+
},
|
|
54
|
+
|};
|
|
55
|
+
export type Shape =
|
|
56
|
+
| ContentShape
|
|
57
|
+
| HintShape
|
|
58
|
+
| TagsShape
|
|
59
|
+
| ArrayShape
|
|
60
|
+
| ObjectShape;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility functions for constructing and inferring multi-item shapes.
|
|
3
|
+
*
|
|
4
|
+
* A shape is an object that serves as a runtime type declaration: it specifies
|
|
5
|
+
* a tree structure for a particular class of multi-item. See shape-types.js
|
|
6
|
+
* for further discussion.
|
|
7
|
+
*
|
|
8
|
+
* This module allows you to construct arbitrary Shape trees, by combining
|
|
9
|
+
* leaf node shapes like `content` and `hint` into composite shapes like
|
|
10
|
+
* `arrayOf(shape({foo: content, bar: hint}))`.
|
|
11
|
+
*/
|
|
12
|
+
import type { Shape, ContentShape, HintShape, TagsShape, ArrayShape, ObjectShape } from "./shape-types";
|
|
13
|
+
declare const _default: {
|
|
14
|
+
content: ContentShape;
|
|
15
|
+
hint: HintShape;
|
|
16
|
+
hints: ArrayShape;
|
|
17
|
+
tags: TagsShape;
|
|
18
|
+
arrayOf: (elementShape: Shape) => ArrayShape;
|
|
19
|
+
shape: (shape: {
|
|
20
|
+
[k: string]: Shape;
|
|
21
|
+
}) => ObjectShape;
|
|
22
|
+
};
|
|
23
|
+
export default _default;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Flowtype definitions for data
|
|
3
|
+
* Generated by Flowgen from a Typescript Definition
|
|
4
|
+
* Flowgen v1.21.0
|
|
5
|
+
* @flow
|
|
6
|
+
*/
|
|
7
|
+
import type {
|
|
8
|
+
Shape,
|
|
9
|
+
ContentShape,
|
|
10
|
+
HintShape,
|
|
11
|
+
TagsShape,
|
|
12
|
+
ArrayShape,
|
|
13
|
+
ObjectShape,
|
|
14
|
+
} from "./shape-types";
|
|
15
|
+
declare var _default: {|
|
|
16
|
+
content: ContentShape,
|
|
17
|
+
hint: HintShape,
|
|
18
|
+
hints: ArrayShape,
|
|
19
|
+
tags: TagsShape,
|
|
20
|
+
arrayOf: (elementShape: Shape) => ArrayShape,
|
|
21
|
+
shape: (shape: {
|
|
22
|
+
[k: string]: Shape,
|
|
23
|
+
}) => ObjectShape,
|
|
24
|
+
|};
|
|
25
|
+
declare export default typeof _default;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type definitions for generic trees that are shaped like multi-items.
|
|
3
|
+
*
|
|
4
|
+
* Multi-items are trees! But we also often have other trees that are shaped
|
|
5
|
+
* like multi-items - for example, if we map a multi-item tree into a tree of
|
|
6
|
+
* renderer info and state, and then map that again into a tree of just the
|
|
7
|
+
* renderer nodes, like we do in MultiRenderer.
|
|
8
|
+
*
|
|
9
|
+
* Therefore, we provide the type Tree<C, H>, which represents a tree that's
|
|
10
|
+
* shaped like a multi-item, but the data that lives at each type of leaf could
|
|
11
|
+
* be anything.
|
|
12
|
+
*
|
|
13
|
+
* So, in a Tree<C, H>, content leaf nodes have type C, and hint leaf nodes
|
|
14
|
+
* have type H. An ItemTree is a Tree<ContentNode, HintNode>.
|
|
15
|
+
*
|
|
16
|
+
* That is, we still preserve the distinction between node types, and thereby
|
|
17
|
+
* enforce the Tree's adherence to some multi-item Shape, but we're flexible
|
|
18
|
+
* about exactly what type of data the tree contains at its leaves.
|
|
19
|
+
*
|
|
20
|
+
* This enables us to write generic tree-traversal and tree-mapping functions,
|
|
21
|
+
* as you'll see in trees.js.
|
|
22
|
+
*/
|
|
23
|
+
export type ArrayNode<C, H, T> = Tree<C, H, T>;
|
|
24
|
+
export type ObjectNode<C, H, T> = {
|
|
25
|
+
[k: string]: Tree<C, H, T>;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* TODO(somewhatabstract, JIRA-XXXX):
|
|
29
|
+
* We should ditch this type or create some helpers for working with it.
|
|
30
|
+
* As it stands, consumers have to check each node's type before using it
|
|
31
|
+
* in order to ensure that flow can track its refinement and appropriate use.
|
|
32
|
+
* It's messy.
|
|
33
|
+
*/
|
|
34
|
+
export type Tree<C, H, T> = C | H | T | ArrayNode<C, H, T> | ObjectNode<C, H, T>;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Flowtype definitions for data
|
|
3
|
+
* Generated by Flowgen from a Typescript Definition
|
|
4
|
+
* Flowgen v1.21.0
|
|
5
|
+
* @flow
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Type definitions for generic trees that are shaped like multi-items.
|
|
9
|
+
*
|
|
10
|
+
* Multi-items are trees! But we also often have other trees that are shaped
|
|
11
|
+
* like multi-items - for example, if we map a multi-item tree into a tree of
|
|
12
|
+
* renderer info and state, and then map that again into a tree of just the
|
|
13
|
+
* renderer nodes, like we do in MultiRenderer.
|
|
14
|
+
*
|
|
15
|
+
* Therefore, we provide the type Tree<C, H>, which represents a tree that's
|
|
16
|
+
* shaped like a multi-item, but the data that lives at each type of leaf could
|
|
17
|
+
* be anything.
|
|
18
|
+
*
|
|
19
|
+
* So, in a Tree<C, H>, content leaf nodes have type C, and hint leaf nodes
|
|
20
|
+
* have type H. An ItemTree is a Tree<ContentNode, HintNode>.
|
|
21
|
+
*
|
|
22
|
+
* That is, we still preserve the distinction between node types, and thereby
|
|
23
|
+
* enforce the Tree's adherence to some multi-item Shape, but we're flexible
|
|
24
|
+
* about exactly what type of data the tree contains at its leaves.
|
|
25
|
+
*
|
|
26
|
+
* This enables us to write generic tree-traversal and tree-mapping functions,
|
|
27
|
+
* as you'll see in trees.js.
|
|
28
|
+
*/
|
|
29
|
+
export type ArrayNode<C, H, T> = Tree<C, H, T>;
|
|
30
|
+
export type ObjectNode<C, H, T> = {
|
|
31
|
+
[k: string]: Tree<C, H, T>,
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* TODO(somewhatabstract, JIRA-XXXX):
|
|
35
|
+
* We should ditch this type or create some helpers for working with it.
|
|
36
|
+
* As it stands, consumers have to check each node's type before using it
|
|
37
|
+
* in order to ensure that flow can track its refinement and appropriate use.
|
|
38
|
+
* It's messy.
|
|
39
|
+
*/
|
|
40
|
+
export type Tree<C, H, T> =
|
|
41
|
+
| C
|
|
42
|
+
| H
|
|
43
|
+
| T
|
|
44
|
+
| ArrayNode<C, H, T>
|
|
45
|
+
| ObjectNode<C, H, T>;
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility functions for manipulating multi-item-shaped trees.
|
|
3
|
+
*
|
|
4
|
+
* Multi-items are trees! But we also often have other trees that are shaped
|
|
5
|
+
* like multi-items - for example, if we map a multi-item tree into a tree of
|
|
6
|
+
* renderer info and state, and then map that again into a tree of just the
|
|
7
|
+
* renderer nodes, like we do in MultiRenderer. See tree-types.js for further
|
|
8
|
+
* discussion.
|
|
9
|
+
*
|
|
10
|
+
* These functions enable us to manipulate generic multi-item-shaped trees,
|
|
11
|
+
* regardless of what type of data they contain at their leaves. You can use
|
|
12
|
+
* the mapper functions to transform a tree into another tree of the same
|
|
13
|
+
* shape, or to discover all the nodes of a particular type.
|
|
14
|
+
*
|
|
15
|
+
* We expose two simple mapper functions (mapContentNodes and mapHintNodes),
|
|
16
|
+
* and also a more complex interface for creating a mapping over all of a
|
|
17
|
+
* tree's node types simultaneously:
|
|
18
|
+
*
|
|
19
|
+
* `buildMapper()` returns a TreeMapper object that allows you to build your
|
|
20
|
+
* mapper object one node type at a time. Then, you can execute your mapping by
|
|
21
|
+
* calling the `mapTree` method.
|
|
22
|
+
*
|
|
23
|
+
* For example:
|
|
24
|
+
* const renderers = buildMapper()
|
|
25
|
+
* .setContentMapper(this.renderContentNode)
|
|
26
|
+
* .setHintMapper(this.renderHintNode)
|
|
27
|
+
* .setTagsMapper(this.renderTagsNode)
|
|
28
|
+
* .setArrayMapper(this.hideSkippedQuestions)
|
|
29
|
+
* .mapTree(tree, shape);
|
|
30
|
+
*
|
|
31
|
+
* This will copy the given tree, apply the given transformations to the
|
|
32
|
+
* content, hint, and array nodes respectively, and return the resulting tree.
|
|
33
|
+
*
|
|
34
|
+
* For node types whose mappers aren't specified, we default to the identity
|
|
35
|
+
* function. (This builder interface enables us to implement that default
|
|
36
|
+
* behavior in a provably type-safe way, while not requiring the call site to
|
|
37
|
+
* be aware of all the node types. Hooray!)
|
|
38
|
+
*
|
|
39
|
+
* The call to `setArrayMapper` must come last, because the array mapper's
|
|
40
|
+
* argument types depend on the other mappers' types. See ArrayMapper for more
|
|
41
|
+
* details.
|
|
42
|
+
*
|
|
43
|
+
* WARNING: These functions trust that the provided tree conforms to the
|
|
44
|
+
* provided shape. If not, behavior is undefined and may not respect the type
|
|
45
|
+
* signatures specified here.
|
|
46
|
+
*/
|
|
47
|
+
import type { Shape, ContentShape, HintShape, TagsShape, ArrayShape } from "./shape-types";
|
|
48
|
+
import type { Tree, ArrayNode } from "./tree-types";
|
|
49
|
+
/**
|
|
50
|
+
* The sequence of edges that lead to a particular node in a Tree.
|
|
51
|
+
* Elements can be `string` to correspond to an ObjectNode key, or `number` to
|
|
52
|
+
* correspond to an ArrayNode index.
|
|
53
|
+
*/
|
|
54
|
+
export type Path = ReadonlyArray<string | number>;
|
|
55
|
+
/**
|
|
56
|
+
* These are function interfaces for mapping over various types of tree nodes.
|
|
57
|
+
*
|
|
58
|
+
* ArrayMapper is a bit more complicated than the leaf node mappers. It's
|
|
59
|
+
* executed in the context of a `mapTree` call, after we've finished mapping
|
|
60
|
+
* its child nodes, so the function has access to both the resulting array
|
|
61
|
+
* (with mapped elements) and the original array (with the original untouched
|
|
62
|
+
* elements).
|
|
63
|
+
*
|
|
64
|
+
* The ArrayMapper then has the opportunity to apply a final transformation to
|
|
65
|
+
* the resulting array, like filtering certain elements or (in the hacky
|
|
66
|
+
* MultiRenderer case) attaching a `renderHints` method to arrays of hint
|
|
67
|
+
* renderers :)
|
|
68
|
+
*
|
|
69
|
+
* This is why `TreeMapper#setArrayMapper` must be called last: ArrayMapper's
|
|
70
|
+
* types depend on the ContentMapper and HintMapper's types. And, since you can
|
|
71
|
+
* only specify one mapper at a time in this builder interface (which is
|
|
72
|
+
* necessary to provide default mappers in a type-safe way), you need your
|
|
73
|
+
* dependencies to already be in place by the time you call `setArrayMapper`.
|
|
74
|
+
* Otherwise, we'd have to set the ArrayMapper and *hope* that you *eventually*
|
|
75
|
+
* provide a compatible ContentMapper and HintMapper, which is difficult to
|
|
76
|
+
* prove at compile time.
|
|
77
|
+
*
|
|
78
|
+
* There's no ObjectMapper here, but not for any particular reason. We just
|
|
79
|
+
* don't have a use case for it yet, so we haven't built it yet.
|
|
80
|
+
*/
|
|
81
|
+
export type ContentMapper<CI, CO> = (content: CI, shape: ContentShape, path: Path) => CO;
|
|
82
|
+
export type HintMapper<HI, HO> = (hint: HI, shape: HintShape, path: Path) => HO;
|
|
83
|
+
export type TagsMapper<TI, TO> = (tag: TI, shape: TagsShape, path: Path) => TO;
|
|
84
|
+
export type ArrayMapper<CI, CO, HI, HO, TI, TO> = (mappedArray: ArrayNode<CO, HO, TO>, originalArray: ArrayNode<CI, HI, TI>, shape: ArrayShape, path: Path) => ArrayNode<CO, HO, TO>;
|
|
85
|
+
/**
|
|
86
|
+
* A TreeMapper is a collection of node mappers, which, together, compose the
|
|
87
|
+
* behavior for mapping over an entire tree.
|
|
88
|
+
*
|
|
89
|
+
* This serves as the interface for the two TreeMapper classes, including both
|
|
90
|
+
* the internal mapper properties that we care about, and the `mapTree`
|
|
91
|
+
* function that the call site will use.
|
|
92
|
+
*/
|
|
93
|
+
export interface TreeMapper<CI, CO, HI, HO, TI, TO> {
|
|
94
|
+
content: ContentMapper<CI, CO>;
|
|
95
|
+
hint: HintMapper<HI, HO>;
|
|
96
|
+
tags: TagsMapper<TI, TO>;
|
|
97
|
+
array: ArrayMapper<CI, CO, HI, HO, TI, TO>;
|
|
98
|
+
mapTree(tree: Tree<CI, HI, TI>, shape: Shape): Tree<CO, HO, TO>;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* This is a TreeMapper that only has mappers specified for its leaf nodes; its
|
|
102
|
+
* array mapper is the identity function.
|
|
103
|
+
*
|
|
104
|
+
* This is the TreeMapper initially returned by `buildMapper`. It allows you to
|
|
105
|
+
* change the types of your ContentMapper and HintMapper, which is safe because
|
|
106
|
+
* none of the other mappers that depend on those types (aka ArrayMapper) have
|
|
107
|
+
* been specified yet. (Or, more specifically, the ArrayMapper is currently
|
|
108
|
+
* `identity`, which can trivially vary with the ContentMapper and HintMapper's
|
|
109
|
+
* types.)
|
|
110
|
+
*
|
|
111
|
+
* Once you call `setArrayMapper`, however, we move to the other class:
|
|
112
|
+
* TreeMapperForLeavesAndCollections.
|
|
113
|
+
*/
|
|
114
|
+
declare class TreeMapperJustForLeaves<CI, CO, HI, HO, TI, TO> {
|
|
115
|
+
content: ContentMapper<CI, CO>;
|
|
116
|
+
hint: HintMapper<HI, HO>;
|
|
117
|
+
tags: TagsMapper<TI, TO>;
|
|
118
|
+
array: ArrayMapper<CI, CO, HI, HO, TI, TO>;
|
|
119
|
+
constructor(content: ContentMapper<CI, CO>, hint: HintMapper<HI, HO>, tags: TagsMapper<TI, TO>);
|
|
120
|
+
setContentMapper<CI2, CO2>(newContentMapper: ContentMapper<CI2, CO2>): TreeMapperJustForLeaves<CI2, CO2, HI, HO, TI, TO>;
|
|
121
|
+
setHintMapper<HI2, HO2>(newHintMapper: HintMapper<HI2, HO2>): TreeMapperJustForLeaves<CI, CO, HI2, HO2, TI, TO>;
|
|
122
|
+
setTagsMapper<TI2, TO2>(newTagsMapper: TagsMapper<TI2, TO2>): TreeMapperJustForLeaves<CI, CO, HI, HO, TI2, TO2>;
|
|
123
|
+
setArrayMapper(newArrayMapper: ArrayMapper<CI, CO, HI, HO, TI, TO>): TreeMapperForLeavesAndCollections<CI, CO, HI, HO, TI, TO>;
|
|
124
|
+
mapTree(tree: Tree<CI, HI, TI>, shape: Shape): Tree<CO, HO, TO>;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* This is a TreeMapper that already has an ArrayMapper specified, so its
|
|
128
|
+
* ContentMapper and HintMapper are now locked in.
|
|
129
|
+
*/
|
|
130
|
+
declare class TreeMapperForLeavesAndCollections<CI, CO, HI, HO, TI, TO> {
|
|
131
|
+
content: ContentMapper<CI, CO>;
|
|
132
|
+
hint: HintMapper<HI, HO>;
|
|
133
|
+
tags: TagsMapper<TI, TO>;
|
|
134
|
+
array: ArrayMapper<CI, CO, HI, HO, TI, TO>;
|
|
135
|
+
constructor(content: ContentMapper<CI, CO>, hint: HintMapper<HI, HO>, tags: TagsMapper<TI, TO>, array: ArrayMapper<CI, CO, HI, HO, TI, TO>);
|
|
136
|
+
setArrayMapper(newArrayMapper: ArrayMapper<CI, CO, HI, HO, TI, TO>): TreeMapperForLeavesAndCollections<CI, CO, HI, HO, TI, TO>;
|
|
137
|
+
mapTree(tree: Tree<CI, HI, TI>, shape: Shape): Tree<CO, HO, TO>;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Return a new TreeMapper that will perform a no-op transformation on an input
|
|
141
|
+
* tree. To make it useful, chain any combination of `setContentMapper`,
|
|
142
|
+
* `setHintMapper`, `setTagMapper`, and `setArrayMapper` to specify
|
|
143
|
+
* transformations for the individual node types.
|
|
144
|
+
*/
|
|
145
|
+
export declare function buildMapper<C, C, H, H, T, T>(): TreeMapperJustForLeaves<C, C, H, H, T, T>;
|
|
146
|
+
export {};
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Flowtype definitions for data
|
|
3
|
+
* Generated by Flowgen from a Typescript Definition
|
|
4
|
+
* Flowgen v1.21.0
|
|
5
|
+
* @flow
|
|
6
|
+
*/
|
|
7
|
+
import type {
|
|
8
|
+
Shape,
|
|
9
|
+
ContentShape,
|
|
10
|
+
HintShape,
|
|
11
|
+
TagsShape,
|
|
12
|
+
ArrayShape,
|
|
13
|
+
} from "./shape-types";
|
|
14
|
+
import type { Tree, ArrayNode } from "./tree-types";
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* The sequence of edges that lead to a particular node in a Tree.
|
|
18
|
+
* Elements can be `string` to correspond to an ObjectNode key, or `number` to
|
|
19
|
+
* correspond to an ArrayNode index.
|
|
20
|
+
*/
|
|
21
|
+
export type Path = $ReadOnlyArray<string | number>;
|
|
22
|
+
/**
|
|
23
|
+
* These are function interfaces for mapping over various types of tree nodes.
|
|
24
|
+
*
|
|
25
|
+
* ArrayMapper is a bit more complicated than the leaf node mappers. It's
|
|
26
|
+
* executed in the context of a `mapTree` call, after we've finished mapping
|
|
27
|
+
* its child nodes, so the function has access to both the resulting array
|
|
28
|
+
* (with mapped elements) and the original array (with the original untouched
|
|
29
|
+
* elements).
|
|
30
|
+
*
|
|
31
|
+
* The ArrayMapper then has the opportunity to apply a final transformation to
|
|
32
|
+
* the resulting array, like filtering certain elements or (in the hacky
|
|
33
|
+
* MultiRenderer case) attaching a `renderHints` method to arrays of hint
|
|
34
|
+
* renderers :)
|
|
35
|
+
*
|
|
36
|
+
* This is why `TreeMapper#setArrayMapper` must be called last: ArrayMapper's
|
|
37
|
+
* types depend on the ContentMapper and HintMapper's types. And, since you can
|
|
38
|
+
* only specify one mapper at a time in this builder interface (which is
|
|
39
|
+
* necessary to provide default mappers in a type-safe way), you need your
|
|
40
|
+
* dependencies to already be in place by the time you call `setArrayMapper`.
|
|
41
|
+
* Otherwise, we'd have to set the ArrayMapper and *hope* that you *eventually*
|
|
42
|
+
* provide a compatible ContentMapper and HintMapper, which is difficult to
|
|
43
|
+
* prove at compile time.
|
|
44
|
+
*
|
|
45
|
+
* There's no ObjectMapper here, but not for any particular reason. We just
|
|
46
|
+
* don't have a use case for it yet, so we haven't built it yet.
|
|
47
|
+
*/
|
|
48
|
+
export type ContentMapper<CI, CO> = (
|
|
49
|
+
content: CI,
|
|
50
|
+
shape: ContentShape,
|
|
51
|
+
path: Path
|
|
52
|
+
) => CO;
|
|
53
|
+
export type HintMapper<HI, HO> = (hint: HI, shape: HintShape, path: Path) => HO;
|
|
54
|
+
export type TagsMapper<TI, TO> = (tag: TI, shape: TagsShape, path: Path) => TO;
|
|
55
|
+
export type ArrayMapper<CI, CO, HI, HO, TI, TO> = (
|
|
56
|
+
mappedArray: ArrayNode<CO, HO, TO>,
|
|
57
|
+
originalArray: ArrayNode<CI, HI, TI>,
|
|
58
|
+
shape: ArrayShape,
|
|
59
|
+
path: Path
|
|
60
|
+
) => ArrayNode<CO, HO, TO>;
|
|
61
|
+
/**
|
|
62
|
+
* A TreeMapper is a collection of node mappers, which, together, compose the
|
|
63
|
+
* behavior for mapping over an entire tree.
|
|
64
|
+
*
|
|
65
|
+
* This serves as the interface for the two TreeMapper classes, including both
|
|
66
|
+
* the internal mapper properties that we care about, and the `mapTree`
|
|
67
|
+
* function that the call site will use.
|
|
68
|
+
*/
|
|
69
|
+
export interface TreeMapper<CI, CO, HI, HO, TI, TO> {
|
|
70
|
+
content: ContentMapper<CI, CO>;
|
|
71
|
+
hint: HintMapper<HI, HO>;
|
|
72
|
+
tags: TagsMapper<TI, TO>;
|
|
73
|
+
array: ArrayMapper<CI, CO, HI, HO, TI, TO>;
|
|
74
|
+
mapTree(tree: Tree<CI, HI, TI>, shape: Shape): Tree<CO, HO, TO>;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* This is a TreeMapper that only has mappers specified for its leaf nodes; its
|
|
78
|
+
* array mapper is the identity function.
|
|
79
|
+
*
|
|
80
|
+
* This is the TreeMapper initially returned by `buildMapper`. It allows you to
|
|
81
|
+
* change the types of your ContentMapper and HintMapper, which is safe because
|
|
82
|
+
* none of the other mappers that depend on those types (aka ArrayMapper) have
|
|
83
|
+
* been specified yet. (Or, more specifically, the ArrayMapper is currently
|
|
84
|
+
* `identity`, which can trivially vary with the ContentMapper and HintMapper's
|
|
85
|
+
* types.)
|
|
86
|
+
*
|
|
87
|
+
* Once you call `setArrayMapper`, however, we move to the other class:
|
|
88
|
+
* TreeMapperForLeavesAndCollections.
|
|
89
|
+
*/
|
|
90
|
+
declare class TreeMapperJustForLeaves<CI, CO, HI, HO, TI, TO> {
|
|
91
|
+
content: ContentMapper<CI, CO>;
|
|
92
|
+
hint: HintMapper<HI, HO>;
|
|
93
|
+
tags: TagsMapper<TI, TO>;
|
|
94
|
+
array: ArrayMapper<CI, CO, HI, HO, TI, TO>;
|
|
95
|
+
constructor(
|
|
96
|
+
content: ContentMapper<CI, CO>,
|
|
97
|
+
hint: HintMapper<HI, HO>,
|
|
98
|
+
tags: TagsMapper<TI, TO>
|
|
99
|
+
): this;
|
|
100
|
+
setContentMapper<CI2, CO2>(
|
|
101
|
+
newContentMapper: ContentMapper<CI2, CO2>
|
|
102
|
+
): TreeMapperJustForLeaves<CI2, CO2, HI, HO, TI, TO>;
|
|
103
|
+
setHintMapper<HI2, HO2>(
|
|
104
|
+
newHintMapper: HintMapper<HI2, HO2>
|
|
105
|
+
): TreeMapperJustForLeaves<CI, CO, HI2, HO2, TI, TO>;
|
|
106
|
+
setTagsMapper<TI2, TO2>(
|
|
107
|
+
newTagsMapper: TagsMapper<TI2, TO2>
|
|
108
|
+
): TreeMapperJustForLeaves<CI, CO, HI, HO, TI2, TO2>;
|
|
109
|
+
setArrayMapper(
|
|
110
|
+
newArrayMapper: ArrayMapper<CI, CO, HI, HO, TI, TO>
|
|
111
|
+
): TreeMapperForLeavesAndCollections<CI, CO, HI, HO, TI, TO>;
|
|
112
|
+
mapTree(tree: Tree<CI, HI, TI>, shape: Shape): Tree<CO, HO, TO>;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* This is a TreeMapper that already has an ArrayMapper specified, so its
|
|
116
|
+
* ContentMapper and HintMapper are now locked in.
|
|
117
|
+
*/
|
|
118
|
+
declare class TreeMapperForLeavesAndCollections<CI, CO, HI, HO, TI, TO> {
|
|
119
|
+
content: ContentMapper<CI, CO>;
|
|
120
|
+
hint: HintMapper<HI, HO>;
|
|
121
|
+
tags: TagsMapper<TI, TO>;
|
|
122
|
+
array: ArrayMapper<CI, CO, HI, HO, TI, TO>;
|
|
123
|
+
constructor(
|
|
124
|
+
content: ContentMapper<CI, CO>,
|
|
125
|
+
hint: HintMapper<HI, HO>,
|
|
126
|
+
tags: TagsMapper<TI, TO>,
|
|
127
|
+
array: ArrayMapper<CI, CO, HI, HO, TI, TO>
|
|
128
|
+
): this;
|
|
129
|
+
setArrayMapper(
|
|
130
|
+
newArrayMapper: ArrayMapper<CI, CO, HI, HO, TI, TO>
|
|
131
|
+
): TreeMapperForLeavesAndCollections<CI, CO, HI, HO, TI, TO>;
|
|
132
|
+
mapTree(tree: Tree<CI, HI, TI>, shape: Shape): Tree<CO, HO, TO>;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Return a new TreeMapper that will perform a no-op transformation on an input
|
|
136
|
+
* tree. To make it useful, chain any combination of `setContentMapper`,
|
|
137
|
+
* `setHintMapper`, `setTagMapper`, and `setArrayMapper` to specify
|
|
138
|
+
* transformations for the individual node types.
|
|
139
|
+
*/
|
|
140
|
+
declare export function buildMapper<
|
|
141
|
+
C,
|
|
142
|
+
C,
|
|
143
|
+
H,
|
|
144
|
+
H,
|
|
145
|
+
T,
|
|
146
|
+
T
|
|
147
|
+
>(): TreeMapperJustForLeaves<C, C, H, H, T, T>;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This library provides support for Perseus multi-items: structured Perseus
|
|
3
|
+
* content that content creators can easily create, and that applications can
|
|
4
|
+
* easily render into different parts of the layout.
|
|
5
|
+
*
|
|
6
|
+
* For more details about application and motivation, see:
|
|
7
|
+
* https://sites.google.com/a/khanacademy.org/forge/for-developers/perseus-items-and-multi-items
|
|
8
|
+
*
|
|
9
|
+
* This file primarily exposes the `MultiRenderer` component, which performs
|
|
10
|
+
* multi-rendering. To multi-render a question, pass in the content of the item
|
|
11
|
+
* to the `MultiRenderer` component as a props. Then, pass in a function which
|
|
12
|
+
* takes an object of renderers (in the same structure as the content), and
|
|
13
|
+
* return a render tree. The `MultiRenderer` component will allow you to
|
|
14
|
+
* combine scores, serialized state, etc. without having to manually call on
|
|
15
|
+
* each of the functions. It also handles inter-widgets requests between the
|
|
16
|
+
* different renderers.
|
|
17
|
+
* For more details, see `multi-items/multi-renderer.jsx`.
|
|
18
|
+
*
|
|
19
|
+
* Example:
|
|
20
|
+
*
|
|
21
|
+
* item = {_multi: {
|
|
22
|
+
* left: <content data>,
|
|
23
|
+
* right: [<content data>, <content data>],
|
|
24
|
+
* }}
|
|
25
|
+
* shape = shapes.shape({
|
|
26
|
+
* left: shapes.content,
|
|
27
|
+
* right: shapes.arrayOf(shapes.content),
|
|
28
|
+
* })
|
|
29
|
+
*
|
|
30
|
+
* <MultiRenderer item={item} shape={shape}>
|
|
31
|
+
* {({renderers}) =>
|
|
32
|
+
* <div>
|
|
33
|
+
* <div id="left">{renderers.left}</div>
|
|
34
|
+
* <ul id="right">
|
|
35
|
+
* {renderers.right.map(r => <li>{r}</li>)}
|
|
36
|
+
* </ul>
|
|
37
|
+
* </div>
|
|
38
|
+
* }
|
|
39
|
+
* </MultiRenderer>
|
|
40
|
+
*
|
|
41
|
+
* This file also exposes `shapes`, which helps you construct a runtime type
|
|
42
|
+
* declaration for your particular class of multi-item. This can then be used
|
|
43
|
+
* to create a MultirendererEditor for your multi-item shape, and to validate
|
|
44
|
+
* that a multi-item conforms to the shape via `buildPropTypeForShape`.
|
|
45
|
+
* For more details, see `multi-items/shapes.js`.
|
|
46
|
+
*
|
|
47
|
+
* This file also exposes some utility functions for working with generic
|
|
48
|
+
* multi-items, like `findContentNodesInItem`, `findHintNodesInItem`,
|
|
49
|
+
* `inferItemShape`, and `buildEmptyItemForShape`.
|
|
50
|
+
* For more details, see `multi-items/items.js`.
|
|
51
|
+
*/
|
|
52
|
+
import { buildEmptyItemForShape, findContentNodesInItem, findHintNodesInItem, inferItemShape } from "./multi-items/items";
|
|
53
|
+
import MultiRenderer from "./multi-items/multi-renderer";
|
|
54
|
+
import { buildPropTypeForShape } from "./multi-items/prop-type-builders";
|
|
55
|
+
declare const _default: {
|
|
56
|
+
MultiRenderer: typeof MultiRenderer;
|
|
57
|
+
shapes: {
|
|
58
|
+
content: import(".").ContentShape;
|
|
59
|
+
hint: import(".").HintShape;
|
|
60
|
+
hints: import(".").ArrayShape;
|
|
61
|
+
tags: import(".").TagsShape;
|
|
62
|
+
arrayOf: (elementShape: import(".").Shape) => import(".").ArrayShape;
|
|
63
|
+
shape: (shape: {
|
|
64
|
+
[k: string]: import(".").Shape;
|
|
65
|
+
}) => import(".").ObjectShape;
|
|
66
|
+
};
|
|
67
|
+
buildPropTypeForShape: typeof buildPropTypeForShape;
|
|
68
|
+
buildEmptyItemForShape: typeof buildEmptyItemForShape;
|
|
69
|
+
findContentNodesInItem: typeof findContentNodesInItem;
|
|
70
|
+
findHintNodesInItem: typeof findHintNodesInItem;
|
|
71
|
+
inferItemShape: typeof inferItemShape;
|
|
72
|
+
};
|
|
73
|
+
export default _default;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Flowtype definitions for data
|
|
3
|
+
* Generated by Flowgen from a Typescript Definition
|
|
4
|
+
* Flowgen v1.21.0
|
|
5
|
+
* @flow
|
|
6
|
+
*/
|
|
7
|
+
import * as $Flowgen$Import$_2e_ from ".";
|
|
8
|
+
import {
|
|
9
|
+
buildEmptyItemForShape,
|
|
10
|
+
findContentNodesInItem,
|
|
11
|
+
findHintNodesInItem,
|
|
12
|
+
inferItemShape,
|
|
13
|
+
} from "./multi-items/items";
|
|
14
|
+
import MultiRenderer from "./multi-items/multi-renderer";
|
|
15
|
+
import { buildPropTypeForShape } from "./multi-items/prop-type-builders";
|
|
16
|
+
declare var _default: {|
|
|
17
|
+
MultiRenderer: typeof MultiRenderer,
|
|
18
|
+
shapes: {|
|
|
19
|
+
content: $Flowgen$Import$_2e_.ContentShape,
|
|
20
|
+
hint: $Flowgen$Import$_2e_.HintShape,
|
|
21
|
+
hints: $Flowgen$Import$_2e_.ArrayShape,
|
|
22
|
+
tags: $Flowgen$Import$_2e_.TagsShape,
|
|
23
|
+
arrayOf: (
|
|
24
|
+
elementShape: $Flowgen$Import$_2e_.Shape
|
|
25
|
+
) => $Flowgen$Import$_2e_.ArrayShape,
|
|
26
|
+
shape: (shape: {
|
|
27
|
+
[k: string]: $Flowgen$Import$_2e_.Shape,
|
|
28
|
+
}) => $Flowgen$Import$_2e_.ObjectShape,
|
|
29
|
+
|},
|
|
30
|
+
buildPropTypeForShape: typeof buildPropTypeForShape,
|
|
31
|
+
buildEmptyItemForShape: typeof buildEmptyItemForShape,
|
|
32
|
+
findContentNodesInItem: typeof findContentNodesInItem,
|
|
33
|
+
findHintNodesInItem: typeof findHintNodesInItem,
|
|
34
|
+
inferItemShape: typeof inferItemShape,
|
|
35
|
+
|};
|
|
36
|
+
declare export default typeof _default;
|