@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,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Flowtype definitions for data
|
|
3
|
+
* Generated by Flowgen from a Typescript Definition
|
|
4
|
+
* Flowgen v1.21.0
|
|
5
|
+
* @flow
|
|
6
|
+
*/
|
|
7
|
+
declare var WidgetJsonifyDeprecated: {|
|
|
8
|
+
+getUserInput: () => any,
|
|
9
|
+
+getUserInputFromProps: (props: any) => any,
|
|
10
|
+
|};
|
|
11
|
+
declare export default typeof WidgetJsonifyDeprecated;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* These are things that widgets should exclude when serializing themselves.
|
|
3
|
+
*
|
|
4
|
+
* The use of this list needs to die. Basically, there are codepaths that
|
|
5
|
+
* blindly serialize the "props" of a widget so that it can pass around its
|
|
6
|
+
* info. Unfortunately, props aren't guaranteed to be serializable, and
|
|
7
|
+
* automatically serializing schemaless list of attributes causes issues (e.g.
|
|
8
|
+
* circular JSON structures sometimes).
|
|
9
|
+
*
|
|
10
|
+
* This blocks things that we know don't need to be serialized.
|
|
11
|
+
*/
|
|
12
|
+
declare const denylist: string[];
|
|
13
|
+
export declare const removeDenylistProps: (props: any) => any;
|
|
14
|
+
export default denylist;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Flowtype definitions for data
|
|
3
|
+
* Generated by Flowgen from a Typescript Definition
|
|
4
|
+
* Flowgen v1.21.0
|
|
5
|
+
* @flow
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* These are things that widgets should exclude when serializing themselves.
|
|
9
|
+
*
|
|
10
|
+
* The use of this list needs to die. Basically, there are codepaths that
|
|
11
|
+
* blindly serialize the "props" of a widget so that it can pass around its
|
|
12
|
+
* info. Unfortunately, props aren't guaranteed to be serializable, and
|
|
13
|
+
* automatically serializing schemaless list of attributes causes issues (e.g.
|
|
14
|
+
* circular JSON structures sometimes).
|
|
15
|
+
*
|
|
16
|
+
* This blocks things that we know don't need to be serialized.
|
|
17
|
+
*/
|
|
18
|
+
declare var denylist: string[];
|
|
19
|
+
declare export var removeDenylistProps: (props: any) => any;
|
|
20
|
+
declare export default typeof denylist;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type definitions for multi-item types, including:
|
|
3
|
+
*
|
|
4
|
+
* - Item: A multi-item tree wrapped in a `_multi` key, to help us recognize it
|
|
5
|
+
* as a multi-item in other contexts and avoid misinterpreting its
|
|
6
|
+
* other properties.
|
|
7
|
+
* - ItemTree: A multi-item without the `_multi` key. Conforms to the Tree
|
|
8
|
+
* interface, so it's compatible with our tree traversal functions.
|
|
9
|
+
* - And the various types of nodes that compose a tree.
|
|
10
|
+
*/
|
|
11
|
+
import type { WidgetDict, ImageDict } from "../types";
|
|
12
|
+
import type { Tree, ArrayNode, ObjectNode } from "./tree-types";
|
|
13
|
+
export type ContentNode = {
|
|
14
|
+
__type: "content" | "item";
|
|
15
|
+
content?: string | null | undefined;
|
|
16
|
+
images?: ImageDict | null | undefined;
|
|
17
|
+
widgets?: WidgetDict | null | undefined;
|
|
18
|
+
};
|
|
19
|
+
export type HintNode = {
|
|
20
|
+
__type: "hint";
|
|
21
|
+
content?: string | null | undefined;
|
|
22
|
+
images?: ImageDict | null | undefined;
|
|
23
|
+
widgets?: WidgetDict | null | undefined;
|
|
24
|
+
replace?: boolean | null | undefined;
|
|
25
|
+
};
|
|
26
|
+
export type TagsNode = ReadonlyArray<string>;
|
|
27
|
+
export type ItemArrayNode = ArrayNode<ContentNode, HintNode, TagsNode>;
|
|
28
|
+
export type ItemObjectNode = ObjectNode<ContentNode, HintNode, TagsNode>;
|
|
29
|
+
export type ItemTree = Tree<ContentNode, HintNode, TagsNode>;
|
|
30
|
+
export type Item = {
|
|
31
|
+
_multi: ItemTree;
|
|
32
|
+
};
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility functions for constructing and manipulating multi-items.
|
|
3
|
+
*
|
|
4
|
+
* These functions apply *specifically* to Items and ItemTrees - things that
|
|
5
|
+
* actually semantically *are* multi-items. For more general functions for
|
|
6
|
+
* traversing and manipulating *anything* shaped like a multi-item (like a
|
|
7
|
+
* renderer tree or a score tree or, well, a multi-item), see trees.js.
|
|
8
|
+
*/
|
|
9
|
+
import type { Item, ItemTree, ContentNode, HintNode } from "./item-types";
|
|
10
|
+
import type { Shape } from "./shape-types";
|
|
11
|
+
/**
|
|
12
|
+
* Return a semantically empty ItemTree that conforms to the given shape.
|
|
13
|
+
*
|
|
14
|
+
* - An empty content node has an empty content string and no widgets/images.
|
|
15
|
+
* - An empty hint node has an empty content string and no widgets/images.
|
|
16
|
+
* - An empty array node has no elements.
|
|
17
|
+
* - An empty object node has a semantically empty node for each of its keys.
|
|
18
|
+
* (That is, we recursively call buildEmptyItemTreeForShape for each key.)
|
|
19
|
+
*/
|
|
20
|
+
export declare function buildEmptyItemTreeForShape(shape: Shape): ItemTree;
|
|
21
|
+
/**
|
|
22
|
+
* Return a semantically empty Item that conforms to the given shape.
|
|
23
|
+
*
|
|
24
|
+
* - An empty content node has an empty content string and no widgets/images.
|
|
25
|
+
* - An empty hint node has an empty content string and no widgets/images.
|
|
26
|
+
* - An empty array node has no elements.
|
|
27
|
+
* - An empty object node has a semantically empty node for each of its keys.
|
|
28
|
+
* (That is, we recursively call buildEmptyItemTreeForShape for each key.)
|
|
29
|
+
*/
|
|
30
|
+
export declare function buildEmptyItemForShape(shape: Shape): Item;
|
|
31
|
+
/**
|
|
32
|
+
* Given an Item and its Shape, yield all of its content nodes to the callback.
|
|
33
|
+
*/
|
|
34
|
+
export declare function findContentNodesInItem(item: Item, shape: Shape, callback: (c: ContentNode) => any): void;
|
|
35
|
+
/**
|
|
36
|
+
* Given an Item and its Shape, yield all of its hint nodes to the callback.
|
|
37
|
+
*/
|
|
38
|
+
export declare function findHintNodesInItem(item: Item, shape: Shape, callback: (h: HintNode) => any): void;
|
|
39
|
+
/**
|
|
40
|
+
* Given an ItemTree, return a Shape that it conforms to.
|
|
41
|
+
*
|
|
42
|
+
* The Shape might not be complete or correct Shape that this Item was designed
|
|
43
|
+
* for. If you have access to the intended Shape, use that instead.
|
|
44
|
+
*/
|
|
45
|
+
export declare function inferItemShape(item: Item): Shape;
|
|
46
|
+
/**
|
|
47
|
+
* Convert the given Item to an ItemTree, by unwrapping the `_multi` key.
|
|
48
|
+
*/
|
|
49
|
+
export declare function itemToTree(item: Item): ItemTree;
|
|
50
|
+
/**
|
|
51
|
+
* Convert the given ItemTree to an Item, by wrapping it in the `_multi` key.
|
|
52
|
+
*/
|
|
53
|
+
export declare function treeToItem(node: ItemTree): Item;
|
|
@@ -0,0 +1,66 @@
|
|
|
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 { Item, ItemTree, ContentNode, HintNode } from "./item-types";
|
|
8
|
+
import type { Shape } from "./shape-types";
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Return a semantically empty ItemTree that conforms to the given shape.
|
|
12
|
+
*
|
|
13
|
+
* - An empty content node has an empty content string and no widgets/images.
|
|
14
|
+
* - An empty hint node has an empty content string and no widgets/images.
|
|
15
|
+
* - An empty array node has no elements.
|
|
16
|
+
* - An empty object node has a semantically empty node for each of its keys.
|
|
17
|
+
* (That is, we recursively call buildEmptyItemTreeForShape for each key.)
|
|
18
|
+
*/
|
|
19
|
+
declare export function buildEmptyItemTreeForShape(shape: Shape): ItemTree;
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Return a semantically empty Item that conforms to the given shape.
|
|
23
|
+
*
|
|
24
|
+
* - An empty content node has an empty content string and no widgets/images.
|
|
25
|
+
* - An empty hint node has an empty content string and no widgets/images.
|
|
26
|
+
* - An empty array node has no elements.
|
|
27
|
+
* - An empty object node has a semantically empty node for each of its keys.
|
|
28
|
+
* (That is, we recursively call buildEmptyItemTreeForShape for each key.)
|
|
29
|
+
*/
|
|
30
|
+
declare export function buildEmptyItemForShape(shape: Shape): Item;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Given an Item and its Shape, yield all of its content nodes to the callback.
|
|
34
|
+
*/
|
|
35
|
+
declare export function findContentNodesInItem(
|
|
36
|
+
item: Item,
|
|
37
|
+
shape: Shape,
|
|
38
|
+
callback: (c: ContentNode) => any
|
|
39
|
+
): void;
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Given an Item and its Shape, yield all of its hint nodes to the callback.
|
|
43
|
+
*/
|
|
44
|
+
declare export function findHintNodesInItem(
|
|
45
|
+
item: Item,
|
|
46
|
+
shape: Shape,
|
|
47
|
+
callback: (h: HintNode) => any
|
|
48
|
+
): void;
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Given an ItemTree, return a Shape that it conforms to.
|
|
52
|
+
*
|
|
53
|
+
* The Shape might not be complete or correct Shape that this Item was designed
|
|
54
|
+
* for. If you have access to the intended Shape, use that instead.
|
|
55
|
+
*/
|
|
56
|
+
declare export function inferItemShape(item: Item): Shape;
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Convert the given Item to an ItemTree, by unwrapping the `_multi` key.
|
|
60
|
+
*/
|
|
61
|
+
declare export function itemToTree(item: Item): ItemTree;
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Convert the given ItemTree to an Item, by wrapping it in the `_multi` key.
|
|
65
|
+
*/
|
|
66
|
+
declare export function treeToItem(node: ItemTree): Item;
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import Renderer from "../renderer";
|
|
3
|
+
import type { Widget } from "../renderer";
|
|
4
|
+
import type { APIOptions, FilterCriterion } from "../types";
|
|
5
|
+
import type { Item, ContentNode, HintNode, TagsNode } from "./item-types";
|
|
6
|
+
import type { Shape, ArrayShape } from "./shape-types";
|
|
7
|
+
import type { Tree } from "./tree-types";
|
|
8
|
+
import type { TreeMapper, ContentMapper, HintMapper, Path } from "./trees";
|
|
9
|
+
type Hint = any;
|
|
10
|
+
type Score = any;
|
|
11
|
+
type SerializedState = any;
|
|
12
|
+
type RendererProps = JSX.LibraryManagedAttributes<typeof Renderer, React.ComponentProps<typeof Renderer>>;
|
|
13
|
+
type ContentRendererElement = React.ReactElement<any>;
|
|
14
|
+
type HintRendererElement = React.ReactElement<any>;
|
|
15
|
+
type ContentRendererData = {
|
|
16
|
+
makeRenderer: () => ContentRendererElement;
|
|
17
|
+
ref: Renderer | null | undefined;
|
|
18
|
+
};
|
|
19
|
+
type FindWidgetsFunc = (criterion: FilterCriterion) => ReadonlyArray<Widget | null | undefined>;
|
|
20
|
+
type HintRendererData = {
|
|
21
|
+
makeRenderer: () => HintRendererElement;
|
|
22
|
+
findExternalWidgets: FindWidgetsFunc | null | undefined;
|
|
23
|
+
ref: null;
|
|
24
|
+
hint: Hint;
|
|
25
|
+
};
|
|
26
|
+
type RendererData = ContentRendererData | HintRendererData;
|
|
27
|
+
type RendererDataTree = Tree<ContentRendererData, HintRendererData, null>;
|
|
28
|
+
/**
|
|
29
|
+
* TODO(somewhatabstract, JIRA-XXXX):
|
|
30
|
+
* Some usage of this type somewhere is causing Flow to believe that these
|
|
31
|
+
* elements should be components. Don't know where that is, to fix it up
|
|
32
|
+
* properly. In reality, these types are just too hard to use and aren't
|
|
33
|
+
* really helping us out as I now have to suppress this rather than
|
|
34
|
+
* get value from the type. :(
|
|
35
|
+
*/
|
|
36
|
+
type RendererTree = Tree<ContentRendererElement, HintRendererElement, null>;
|
|
37
|
+
type ScoreTree = Tree<Score, null, null>;
|
|
38
|
+
type SerializedStateTree = Tree<SerializedState, null, null>;
|
|
39
|
+
type Props = {
|
|
40
|
+
item: Item;
|
|
41
|
+
shape: Shape;
|
|
42
|
+
children: (tree: {
|
|
43
|
+
renderers: RendererTree;
|
|
44
|
+
}) => React.ReactElement<any>;
|
|
45
|
+
serializedState?: SerializedStateTree | null | undefined;
|
|
46
|
+
onSerializedStateUpdated?: (state: SerializedStateTree) => void;
|
|
47
|
+
onInteractWithWidget?: (id: string) => void;
|
|
48
|
+
apiOptions?: APIOptions;
|
|
49
|
+
reviewMode?: boolean | null | undefined;
|
|
50
|
+
};
|
|
51
|
+
type State = {
|
|
52
|
+
rendererDataTree: RendererDataTree | null | undefined;
|
|
53
|
+
renderError: Error | null | undefined;
|
|
54
|
+
};
|
|
55
|
+
declare class MultiRenderer extends React.Component<Props, State> {
|
|
56
|
+
rendererDataTreeMapper: TreeMapper<ContentNode, ContentRendererData, HintNode, HintRendererData, TagsNode, null>;
|
|
57
|
+
getRenderersMapper: TreeMapper<ContentRendererData, ContentRendererElement, HintRendererData, HintRendererElement, null, null>;
|
|
58
|
+
constructor(props: Props);
|
|
59
|
+
UNSAFE_componentWillReceiveProps(nextProps: Props): void;
|
|
60
|
+
/**
|
|
61
|
+
* Attempt to build a State that includes a renderer tree corresponding to
|
|
62
|
+
* the item provided in props. On error, return a state with `renderError`
|
|
63
|
+
* set instead.
|
|
64
|
+
*/
|
|
65
|
+
_tryMakeRendererState(props: Props): State;
|
|
66
|
+
_handleSerializedStateUpdated: (path: Path, newState?: any) => void;
|
|
67
|
+
/**
|
|
68
|
+
* Props that aren't directly used by the MultiRenderer are delegated to
|
|
69
|
+
* the underlying Renderers.
|
|
70
|
+
*/
|
|
71
|
+
_getRendererProps(): RendererProps;
|
|
72
|
+
/**
|
|
73
|
+
* Construct a Renderer and a ref placeholder for the given ContentNode.
|
|
74
|
+
*/
|
|
75
|
+
_makeContentRendererData(content: ContentNode, path: Path): ContentRendererData;
|
|
76
|
+
/**
|
|
77
|
+
* Construct a Renderer for the given HintNode, and keep track of the hint
|
|
78
|
+
* itself for future use, too.
|
|
79
|
+
*/
|
|
80
|
+
_makeHintRendererData(hint: HintNode): HintRendererData;
|
|
81
|
+
/**
|
|
82
|
+
* Construct a tree of interconnected RendererDatas, corresponding to the
|
|
83
|
+
* given item. Called in `_tryMakeRendererState`, in order to store this
|
|
84
|
+
* tree in the component state.
|
|
85
|
+
*/
|
|
86
|
+
_makeRendererDataTree(item: Item, shape: Shape): RendererDataTree;
|
|
87
|
+
/**
|
|
88
|
+
* Return all widgets that meet the given criterion, from all Renderers
|
|
89
|
+
* except the Renderer that triggered this call.
|
|
90
|
+
*
|
|
91
|
+
* This function is provided to each Renderer's `findExternalWidgets` prop,
|
|
92
|
+
* which enables widgets in different Renderers to discover each other and
|
|
93
|
+
* communicate.
|
|
94
|
+
*/
|
|
95
|
+
_findWidgets(callingData: RendererData, filterCriterion: FilterCriterion): ReadonlyArray<Widget | null | undefined>;
|
|
96
|
+
/**
|
|
97
|
+
* Copy the renderer tree, apply the given transformation to the leaf nodes
|
|
98
|
+
* and the optional given transformation to the array nodes, and return the
|
|
99
|
+
* result.
|
|
100
|
+
*
|
|
101
|
+
* Used to provide structured data to the call site (the Renderer tree on
|
|
102
|
+
* `render`, the Score tree on `getScores`, etc.), and to traverse the
|
|
103
|
+
* renderer tree even when we disregard the output (like in
|
|
104
|
+
* `_findWidgets`).
|
|
105
|
+
*/
|
|
106
|
+
_mapRenderers<O>(leafMapper: ContentMapper<RendererData, O> & HintMapper<RendererData, O>): Tree<O, O, null> | null | undefined;
|
|
107
|
+
_scoreFromRef(ref?: Renderer | null): Score;
|
|
108
|
+
/**
|
|
109
|
+
* Return a tree in the shape of the multi-item, with scores at each of
|
|
110
|
+
* the content nodes and `null` at the other leaf nodes.
|
|
111
|
+
*/
|
|
112
|
+
getScores(): ScoreTree;
|
|
113
|
+
/**
|
|
114
|
+
* Return a single composite score for all rendered content nodes.
|
|
115
|
+
* The `guess` is a tree in the shape of the multi-item, with an individual
|
|
116
|
+
* guess at each content node and `null` at the other leaf nodes.
|
|
117
|
+
*/
|
|
118
|
+
score(): Score;
|
|
119
|
+
/**
|
|
120
|
+
* Return a tree in the shape of the multi-item, with serialized state at
|
|
121
|
+
* each of the content nodes and `null` at the other leaf nodes.
|
|
122
|
+
*
|
|
123
|
+
* If the lastSerializedState argument is supplied, this function will fill
|
|
124
|
+
* in the state of not-currently-rendered content and hint nodes with the
|
|
125
|
+
* values from the previous serialized state. If no lastSerializedState is
|
|
126
|
+
* supplied, `null` will be returned for not-currently-rendered content and
|
|
127
|
+
* hint nodes.
|
|
128
|
+
*/
|
|
129
|
+
_getSerializedState(lastSerializedState?: SerializedStateTree): SerializedStateTree;
|
|
130
|
+
/**
|
|
131
|
+
* Given a tree in the shape of the multi-item, with serialized state at
|
|
132
|
+
* each of the content nodes, restore each state to the corresponding
|
|
133
|
+
* renderer if currently mounted.
|
|
134
|
+
*/
|
|
135
|
+
restoreSerializedState(serializedState: SerializedState, callback?: () => any): void;
|
|
136
|
+
/**
|
|
137
|
+
* Given an array of renderers, if it happens to be an array of *hint*
|
|
138
|
+
* renderers, then attach a `firstN` method to the array, which allows the
|
|
139
|
+
* layout to render the hints together in one HintsRenderer.
|
|
140
|
+
*/
|
|
141
|
+
_annotateRendererArray(renderers: ReadonlyArray<Renderer>, rendererDatas: ReadonlyArray<RendererData>, shape: ArrayShape): ReadonlyArray<Renderer>;
|
|
142
|
+
/**
|
|
143
|
+
* Return a tree in the shape of the multi-item, with a Renderer at each
|
|
144
|
+
* content node and a HintRenderer at each hint node.
|
|
145
|
+
*
|
|
146
|
+
* This is generated by running each of the `makeRenderer` functions at the
|
|
147
|
+
* leaf nodes.
|
|
148
|
+
*/
|
|
149
|
+
_getRenderers(): RendererTree;
|
|
150
|
+
render(): React.ReactNode;
|
|
151
|
+
}
|
|
152
|
+
export default MultiRenderer;
|
|
@@ -0,0 +1,213 @@
|
|
|
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 React from "react";
|
|
8
|
+
import Renderer from "../renderer";
|
|
9
|
+
import type { Widget } from "../renderer";
|
|
10
|
+
import type { APIOptions, FilterCriterion } from "../types";
|
|
11
|
+
import type { Item, ContentNode, HintNode, TagsNode } from "./item-types";
|
|
12
|
+
import type { Shape, ArrayShape } from "./shape-types";
|
|
13
|
+
import type { Tree } from "./tree-types";
|
|
14
|
+
import type { TreeMapper, ContentMapper, HintMapper, Path } from "./trees";
|
|
15
|
+
declare type Hint = any;
|
|
16
|
+
declare type Score = any;
|
|
17
|
+
declare type SerializedState = any;
|
|
18
|
+
declare type RendererProps = React.ElementConfig<typeof Renderer>;
|
|
19
|
+
declare type ContentRendererElement = React.Element<any>;
|
|
20
|
+
declare type HintRendererElement = React.Element<any>;
|
|
21
|
+
declare type ContentRendererData = {|
|
|
22
|
+
makeRenderer: () => ContentRendererElement,
|
|
23
|
+
ref: Renderer | null | void,
|
|
24
|
+
|};
|
|
25
|
+
declare type FindWidgetsFunc = (
|
|
26
|
+
criterion: FilterCriterion
|
|
27
|
+
) => $ReadOnlyArray<Widget | null | void>;
|
|
28
|
+
declare type HintRendererData = {|
|
|
29
|
+
makeRenderer: () => HintRendererElement,
|
|
30
|
+
findExternalWidgets: FindWidgetsFunc | null | void,
|
|
31
|
+
ref: null,
|
|
32
|
+
hint: Hint,
|
|
33
|
+
|};
|
|
34
|
+
declare type RendererData = ContentRendererData | HintRendererData;
|
|
35
|
+
declare type RendererDataTree = Tree<
|
|
36
|
+
ContentRendererData,
|
|
37
|
+
HintRendererData,
|
|
38
|
+
null
|
|
39
|
+
>;
|
|
40
|
+
/**
|
|
41
|
+
* TODO(somewhatabstract, JIRA-XXXX):
|
|
42
|
+
* Some usage of this type somewhere is causing Flow to believe that these
|
|
43
|
+
* elements should be components. Don't know where that is, to fix it up
|
|
44
|
+
* properly. In reality, these types are just too hard to use and aren't
|
|
45
|
+
* really helping us out as I now have to suppress this rather than
|
|
46
|
+
* get value from the type. :(
|
|
47
|
+
*/
|
|
48
|
+
declare type RendererTree = Tree<
|
|
49
|
+
ContentRendererElement,
|
|
50
|
+
HintRendererElement,
|
|
51
|
+
null
|
|
52
|
+
>;
|
|
53
|
+
declare type ScoreTree = Tree<Score, null, null>;
|
|
54
|
+
declare type SerializedStateTree = Tree<SerializedState, null, null>;
|
|
55
|
+
declare type Props = {|
|
|
56
|
+
item: Item,
|
|
57
|
+
shape: Shape,
|
|
58
|
+
children: (tree: {|
|
|
59
|
+
renderers: RendererTree,
|
|
60
|
+
|}) => React.Element<any>,
|
|
61
|
+
serializedState?: SerializedStateTree | null | void,
|
|
62
|
+
onSerializedStateUpdated?: (state: SerializedStateTree) => void,
|
|
63
|
+
onInteractWithWidget?: (id: string) => void,
|
|
64
|
+
apiOptions?: APIOptions,
|
|
65
|
+
reviewMode?: boolean | null | void,
|
|
66
|
+
|};
|
|
67
|
+
declare type State = {|
|
|
68
|
+
rendererDataTree: RendererDataTree | null | void,
|
|
69
|
+
renderError: Error | null | void,
|
|
70
|
+
|};
|
|
71
|
+
declare class MultiRenderer extends React.Component<Props, State> {
|
|
72
|
+
rendererDataTreeMapper: TreeMapper<
|
|
73
|
+
ContentNode,
|
|
74
|
+
ContentRendererData,
|
|
75
|
+
HintNode,
|
|
76
|
+
HintRendererData,
|
|
77
|
+
TagsNode,
|
|
78
|
+
null
|
|
79
|
+
>;
|
|
80
|
+
getRenderersMapper: TreeMapper<
|
|
81
|
+
ContentRendererData,
|
|
82
|
+
ContentRendererElement,
|
|
83
|
+
HintRendererData,
|
|
84
|
+
HintRendererElement,
|
|
85
|
+
null,
|
|
86
|
+
null
|
|
87
|
+
>;
|
|
88
|
+
constructor(props: Props): this;
|
|
89
|
+
UNSAFE_componentWillReceiveProps(nextProps: Props): void;
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Attempt to build a State that includes a renderer tree corresponding to
|
|
93
|
+
* the item provided in props. On error, return a state with `renderError`
|
|
94
|
+
* set instead.
|
|
95
|
+
*/
|
|
96
|
+
_tryMakeRendererState(props: Props): State;
|
|
97
|
+
_handleSerializedStateUpdated: (path: Path, newState?: any) => void;
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Props that aren't directly used by the MultiRenderer are delegated to
|
|
101
|
+
* the underlying Renderers.
|
|
102
|
+
*/
|
|
103
|
+
_getRendererProps(): RendererProps;
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Construct a Renderer and a ref placeholder for the given ContentNode.
|
|
107
|
+
*/
|
|
108
|
+
_makeContentRendererData(
|
|
109
|
+
content: ContentNode,
|
|
110
|
+
path: Path
|
|
111
|
+
): ContentRendererData;
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Construct a Renderer for the given HintNode, and keep track of the hint
|
|
115
|
+
* itself for future use, too.
|
|
116
|
+
*/
|
|
117
|
+
_makeHintRendererData(hint: HintNode): HintRendererData;
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* Construct a tree of interconnected RendererDatas, corresponding to the
|
|
121
|
+
* given item. Called in `_tryMakeRendererState`, in order to store this
|
|
122
|
+
* tree in the component state.
|
|
123
|
+
*/
|
|
124
|
+
_makeRendererDataTree(item: Item, shape: Shape): RendererDataTree;
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Return all widgets that meet the given criterion, from all Renderers
|
|
128
|
+
* except the Renderer that triggered this call.
|
|
129
|
+
*
|
|
130
|
+
* This function is provided to each Renderer's `findExternalWidgets` prop,
|
|
131
|
+
* which enables widgets in different Renderers to discover each other and
|
|
132
|
+
* communicate.
|
|
133
|
+
*/
|
|
134
|
+
_findWidgets(
|
|
135
|
+
callingData: RendererData,
|
|
136
|
+
filterCriterion: FilterCriterion
|
|
137
|
+
): $ReadOnlyArray<Widget | null | void>;
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Copy the renderer tree, apply the given transformation to the leaf nodes
|
|
141
|
+
* and the optional given transformation to the array nodes, and return the
|
|
142
|
+
* result.
|
|
143
|
+
*
|
|
144
|
+
* Used to provide structured data to the call site (the Renderer tree on
|
|
145
|
+
* `render`, the Score tree on `getScores`, etc.), and to traverse the
|
|
146
|
+
* renderer tree even when we disregard the output (like in
|
|
147
|
+
* `_findWidgets`).
|
|
148
|
+
*/
|
|
149
|
+
_mapRenderers<O>(leafMapper: {|
|
|
150
|
+
...ContentMapper<RendererData, O>,
|
|
151
|
+
...HintMapper<RendererData, O>,
|
|
152
|
+
|}): Tree<O, O, null> | null | void;
|
|
153
|
+
_scoreFromRef(ref?: Renderer | null): Score;
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* Return a tree in the shape of the multi-item, with scores at each of
|
|
157
|
+
* the content nodes and `null` at the other leaf nodes.
|
|
158
|
+
*/
|
|
159
|
+
getScores(): ScoreTree;
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* Return a single composite score for all rendered content nodes.
|
|
163
|
+
* The `guess` is a tree in the shape of the multi-item, with an individual
|
|
164
|
+
* guess at each content node and `null` at the other leaf nodes.
|
|
165
|
+
*/
|
|
166
|
+
score(): Score;
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* Return a tree in the shape of the multi-item, with serialized state at
|
|
170
|
+
* each of the content nodes and `null` at the other leaf nodes.
|
|
171
|
+
*
|
|
172
|
+
* If the lastSerializedState argument is supplied, this function will fill
|
|
173
|
+
* in the state of not-currently-rendered content and hint nodes with the
|
|
174
|
+
* values from the previous serialized state. If no lastSerializedState is
|
|
175
|
+
* supplied, `null` will be returned for not-currently-rendered content and
|
|
176
|
+
* hint nodes.
|
|
177
|
+
*/
|
|
178
|
+
_getSerializedState(
|
|
179
|
+
lastSerializedState?: SerializedStateTree
|
|
180
|
+
): SerializedStateTree;
|
|
181
|
+
|
|
182
|
+
/**
|
|
183
|
+
* Given a tree in the shape of the multi-item, with serialized state at
|
|
184
|
+
* each of the content nodes, restore each state to the corresponding
|
|
185
|
+
* renderer if currently mounted.
|
|
186
|
+
*/
|
|
187
|
+
restoreSerializedState(
|
|
188
|
+
serializedState: SerializedState,
|
|
189
|
+
callback?: () => any
|
|
190
|
+
): void;
|
|
191
|
+
|
|
192
|
+
/**
|
|
193
|
+
* Given an array of renderers, if it happens to be an array of *hint*
|
|
194
|
+
* renderers, then attach a `firstN` method to the array, which allows the
|
|
195
|
+
* layout to render the hints together in one HintsRenderer.
|
|
196
|
+
*/
|
|
197
|
+
_annotateRendererArray(
|
|
198
|
+
renderers: $ReadOnlyArray<Renderer>,
|
|
199
|
+
rendererDatas: $ReadOnlyArray<RendererData>,
|
|
200
|
+
shape: ArrayShape
|
|
201
|
+
): $ReadOnlyArray<Renderer>;
|
|
202
|
+
|
|
203
|
+
/**
|
|
204
|
+
* Return a tree in the shape of the multi-item, with a Renderer at each
|
|
205
|
+
* content node and a HintRenderer at each hint node.
|
|
206
|
+
*
|
|
207
|
+
* This is generated by running each of the `makeRenderer` functions at the
|
|
208
|
+
* leaf nodes.
|
|
209
|
+
*/
|
|
210
|
+
_getRenderers(): RendererTree;
|
|
211
|
+
render(): React.Node;
|
|
212
|
+
}
|
|
213
|
+
declare export default typeof MultiRenderer;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility functions to build React PropTypes for multi-items and shapes.
|
|
3
|
+
*
|
|
4
|
+
* If you're writing new components, though, consider using the Item and Shape
|
|
5
|
+
* Flow types instead.
|
|
6
|
+
*/
|
|
7
|
+
import type { Shape } from "./shape-types";
|
|
8
|
+
/**
|
|
9
|
+
* A recursive PropType that accepts Shape objects, and rejects other objects.
|
|
10
|
+
*
|
|
11
|
+
* Usage: `propTypes: {shape: shapePropType}`.
|
|
12
|
+
*/
|
|
13
|
+
export declare function shapePropType(...args: ReadonlyArray<any>): any;
|
|
14
|
+
/**
|
|
15
|
+
* Return a PropType that accepts Items of the given shape, and rejects other
|
|
16
|
+
* objects.
|
|
17
|
+
*
|
|
18
|
+
* Usage: `propTypes: {item: buildPropTypeForShape(myShape)}`
|
|
19
|
+
*/
|
|
20
|
+
export declare function buildPropTypeForShape(shape: Shape): any;
|
|
@@ -0,0 +1,22 @@
|
|
|
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 { Shape } from "./shape-types";
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* A recursive PropType that accepts Shape objects, and rejects other objects.
|
|
11
|
+
*
|
|
12
|
+
* Usage: `propTypes: {shape: shapePropType}`.
|
|
13
|
+
*/
|
|
14
|
+
declare export function shapePropType(...args: $ReadOnlyArray<any>): any;
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Return a PropType that accepts Items of the given shape, and rejects other
|
|
18
|
+
* objects.
|
|
19
|
+
*
|
|
20
|
+
* Usage: `propTypes: {item: buildPropTypeForShape(myShape)}`
|
|
21
|
+
*/
|
|
22
|
+
declare export function buildPropTypeForShape(shape: Shape): any;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type definitions for 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.
|
|
6
|
+
*
|
|
7
|
+
* We use shapes instead static compile-time typing because the CMS needs to
|
|
8
|
+
* understand the shape of our content library's multi-items at runtime, and
|
|
9
|
+
* it's not always possible to infer the full shape from an example multi-item.
|
|
10
|
+
*
|
|
11
|
+
* Shapes also enable us to traverse a multi-item-shaped tree with confidence,
|
|
12
|
+
* even when we can't infer the shape from the tree alone.
|
|
13
|
+
*
|
|
14
|
+
* We *could* go all-in on a more general library to make certain Flow types
|
|
15
|
+
* runtime-inspectable, in order to DRY some things up, but that's probably a
|
|
16
|
+
* big ol' infrastructural magic mess, and the narrower scope of Shapes makes
|
|
17
|
+
* it easier to be confident that we've covered all cases rather than having to
|
|
18
|
+
* deal with all possible Javascript types.
|
|
19
|
+
*/
|
|
20
|
+
export type ContentShape = {
|
|
21
|
+
type: "content";
|
|
22
|
+
};
|
|
23
|
+
export type HintShape = {
|
|
24
|
+
type: "hint";
|
|
25
|
+
};
|
|
26
|
+
export type TagsShape = {
|
|
27
|
+
type: "tags";
|
|
28
|
+
};
|
|
29
|
+
export type ArrayShape = {
|
|
30
|
+
type: "array";
|
|
31
|
+
/**
|
|
32
|
+
* Each element of an ArrayNode has the same shape, which is specified by
|
|
33
|
+
* the `elementShape` property.
|
|
34
|
+
*/
|
|
35
|
+
elementShape: Shape;
|
|
36
|
+
};
|
|
37
|
+
export type ObjectShape = {
|
|
38
|
+
type: "object";
|
|
39
|
+
/**
|
|
40
|
+
* Each property of an ObjectNode has its own shape, which is specified
|
|
41
|
+
* under the corresponding key in the `shape` property.
|
|
42
|
+
*/
|
|
43
|
+
shape: {
|
|
44
|
+
[k: string]: Shape;
|
|
45
|
+
};
|
|
46
|
+
};
|
|
47
|
+
export type Shape = ContentShape | HintShape | TagsShape | ArrayShape | ObjectShape;
|