@khanacademy/perseus 19.1.5 → 19.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/graph.d.ts +0 -1
- package/dist/components/graphie.d.ts +0 -1
- package/dist/es/index.js +319 -212
- package/dist/es/index.js.map +1 -1
- package/dist/index.js +338 -222
- package/dist/index.js.map +1 -1
- package/dist/interactive2/movable-point.d.ts +195 -1
- package/dist/interactive2/movable.d.ts +1 -1
- package/dist/interactive2/types.d.ts +4 -2
- package/dist/interactive2.d.ts +2 -1
- package/dist/server-item-renderer.d.ts +2 -2
- package/dist/util/graphie.d.ts +12 -2
- package/dist/widgets/expression.d.ts +6 -6
- package/package.json +11 -8
- package/.babelrc.js +0 -8
- package/.eslintrc.js +0 -12
- package/CHANGELOG.md +0 -1432
- package/src/__stories__/article-renderer.stories.tsx +0 -100
- package/src/__stories__/hints-renderer.stories.tsx +0 -55
- package/src/__stories__/server-item-renderer.stories.tsx +0 -44
- package/src/__testdata__/article-renderer.testdata.ts +0 -212
- package/src/__testdata__/graphie.testdata.ts +0 -51
- package/src/__testdata__/renderer.testdata.ts +0 -274
- package/src/__testdata__/server-item-renderer.testdata.ts +0 -171
- package/src/__tests__/__snapshots__/perseus-markdown.test.ts.snap +0 -507
- package/src/__tests__/__snapshots__/renderer.test.tsx.snap +0 -525
- package/src/__tests__/__snapshots__/server-item-renderer.test.tsx.snap +0 -285
- package/src/__tests__/a11y.test.ts +0 -303
- package/src/__tests__/article-renderer.test.tsx +0 -130
- package/src/__tests__/error-boundary.test.tsx +0 -76
- package/src/__tests__/extract-perseus-data.test.ts +0 -1027
- package/src/__tests__/init.test.ts +0 -10
- package/src/__tests__/jipt-paragraphs.test.ts +0 -32
- package/src/__tests__/mock-asset-loading-widget.tsx +0 -53
- package/src/__tests__/mock-widget.tsx +0 -33
- package/src/__tests__/perseus-markdown.test.ts +0 -764
- package/src/__tests__/renderability.test.ts +0 -480
- package/src/__tests__/renderer-api.test.tsx +0 -302
- package/src/__tests__/renderer.test.tsx +0 -1816
- package/src/__tests__/server-item-renderer.test.tsx +0 -582
- package/src/__tests__/test-items/image-item.ts +0 -24
- package/src/__tests__/test-items/input-number-1-item.ts +0 -26
- package/src/__tests__/test-items/input-number-2-item.ts +0 -38
- package/src/__tests__/test-items/table-item.ts +0 -29
- package/src/__tests__/tex-wrangler.test.ts +0 -82
- package/src/__tests__/util.test.ts +0 -40
- package/src/__tests__/widget-container.test.tsx +0 -126
- package/src/__tests__/widgets.test.ts +0 -91
- package/src/a11y.ts +0 -45
- package/src/all-widgets.ts +0 -9
- package/src/article-renderer.tsx +0 -237
- package/src/asset-context.ts +0 -30
- package/src/basic-widgets.ts +0 -16
- package/src/components/__stories__/button-group.stories.tsx +0 -55
- package/src/components/__stories__/fixed-to-responsive.stories.tsx +0 -141
- package/src/components/__stories__/graph.stories.tsx +0 -28
- package/src/components/__stories__/graphie.stories.tsx +0 -33
- package/src/components/__stories__/hud.stories.tsx +0 -35
- package/src/components/__stories__/icon.stories.tsx +0 -63
- package/src/components/__stories__/image-loader.stories.tsx +0 -63
- package/src/components/__stories__/info-tip.stories.tsx +0 -31
- package/src/components/__stories__/inline-icon.stories.tsx +0 -40
- package/src/components/__stories__/input-with-examples.stories.tsx +0 -53
- package/src/components/__stories__/lint.stories.tsx +0 -86
- package/src/components/__stories__/math-input.stories.tsx +0 -43
- package/src/components/__stories__/math-output.stories.tsx +0 -23
- package/src/components/__stories__/multi-button-group.stories.tsx +0 -66
- package/src/components/__stories__/number-input.stories.tsx +0 -41
- package/src/components/__stories__/prop-check-box.stories.tsx +0 -65
- package/src/components/__stories__/range-input.stories.tsx +0 -29
- package/src/components/__stories__/simple-keypad-input.stories.tsx +0 -27
- package/src/components/__stories__/sortable.stories.tsx +0 -77
- package/src/components/__stories__/stub-tag-editor.stories.tsx +0 -45
- package/src/components/__stories__/svg-image.stories.tsx +0 -74
- package/src/components/__stories__/tex.stories.tsx +0 -23
- package/src/components/__stories__/text-input.stories.tsx +0 -33
- package/src/components/__stories__/text-list-editor.stories.tsx +0 -32
- package/src/components/__stories__/tooltip.stories.tsx +0 -52
- package/src/components/__stories__/zoomable-tex.stories.tsx +0 -41
- package/src/components/__stories__/zoomable.stories.tsx +0 -49
- package/src/components/__testdata__/sorter.testdata.ts +0 -19
- package/src/components/__tests__/__snapshots__/sortable.test.tsx.snap +0 -163
- package/src/components/__tests__/__snapshots__/sorter.test.tsx.snap +0 -265
- package/src/components/__tests__/math-input.test.tsx +0 -147
- package/src/components/__tests__/number-input.test.tsx +0 -128
- package/src/components/__tests__/sortable.test.tsx +0 -269
- package/src/components/__tests__/sorter.test.tsx +0 -114
- package/src/components/__tests__/zoomable.test.tsx +0 -399
- package/src/components/button-group.tsx +0 -130
- package/src/components/constants.ts +0 -14
- package/src/components/fixed-to-responsive.tsx +0 -169
- package/src/components/graph.tsx +0 -444
- package/src/components/graphie-classes.ts +0 -153
- package/src/components/graphie-movables.ts +0 -338
- package/src/components/graphie.tsx +0 -400
- package/src/components/highlighting/highlightable-content.tsx +0 -240
- package/src/components/highlighting/highlights.ts +0 -207
- package/src/components/highlighting/ranges.ts +0 -304
- package/src/components/highlighting/types.ts +0 -73
- package/src/components/highlighting/ui/highlight-renderer.tsx +0 -172
- package/src/components/highlighting/ui/highlight-set-renderer.tsx +0 -185
- package/src/components/highlighting/ui/highlight-tooltip.tsx +0 -141
- package/src/components/highlighting/ui/highlighting-ui.tsx +0 -143
- package/src/components/highlighting/ui/selection-tracker.tsx +0 -186
- package/src/components/highlighting/ui/types.ts +0 -21
- package/src/components/highlighting/ui/util.ts +0 -165
- package/src/components/highlighting/word-indexer.tsx +0 -152
- package/src/components/hud.tsx +0 -167
- package/src/components/icon.tsx +0 -141
- package/src/components/image-loader.tsx +0 -177
- package/src/components/info-tip/info-tip.tsx +0 -144
- package/src/components/info-tip.tsx +0 -39
- package/src/components/inline-icon.tsx +0 -60
- package/src/components/input-with-examples.tsx +0 -249
- package/src/components/lint.tsx +0 -459
- package/src/components/math-input.tsx +0 -474
- package/src/components/math-output.tsx +0 -134
- package/src/components/multi-button-group.tsx +0 -135
- package/src/components/number-input.tsx +0 -249
- package/src/components/prop-check-box.tsx +0 -79
- package/src/components/range-input.tsx +0 -60
- package/src/components/simple-keypad-input.tsx +0 -88
- package/src/components/sortable.tsx +0 -958
- package/src/components/stub-tag-editor.tsx +0 -53
- package/src/components/svg-image.tsx +0 -779
- package/src/components/tex.tsx +0 -67
- package/src/components/text-input.tsx +0 -129
- package/src/components/text-list-editor.tsx +0 -166
- package/src/components/tooltip.tsx +0 -410
- package/src/components/visibility-observer/__stories__/visibility-observer.stories.tsx +0 -141
- package/src/components/visibility-observer/create-visibility-observer.ts +0 -108
- package/src/components/visibility-observer/get-scroll-parent.ts +0 -46
- package/src/components/visibility-observer/visibility-observer.tsx +0 -124
- package/src/components/zoomable-tex.tsx +0 -78
- package/src/components/zoomable.tsx +0 -304
- package/src/components.ts +0 -15
- package/src/definition-context.tsx +0 -59
- package/src/dependencies.ts +0 -40
- package/src/error-boundary.tsx +0 -70
- package/src/extra-widgets.ts +0 -75
- package/src/hint-renderer.tsx +0 -151
- package/src/hints-renderer.tsx +0 -372
- package/src/icon-paths.ts +0 -119
- package/src/index.ts +0 -171
- package/src/init.ts +0 -56
- package/src/interaction-tracker.ts +0 -62
- package/src/interactive2/__tests__/movable-mock.ts +0 -55
- package/src/interactive2/__tests__/movable-point.test.ts +0 -144
- package/src/interactive2/interactive-util.test.ts +0 -93
- package/src/interactive2/interactive-util.ts +0 -159
- package/src/interactive2/movable-helper-methods.ts +0 -166
- package/src/interactive2/movable-line-options.ts +0 -419
- package/src/interactive2/movable-line.ts +0 -307
- package/src/interactive2/movable-point-options.ts +0 -224
- package/src/interactive2/movable-point.tsx +0 -585
- package/src/interactive2/movable-polygon-options.ts +0 -389
- package/src/interactive2/movable-polygon.ts +0 -360
- package/src/interactive2/movable.test.ts +0 -249
- package/src/interactive2/movable.ts +0 -437
- package/src/interactive2/objective_.ts +0 -79
- package/src/interactive2/types.ts +0 -17
- package/src/interactive2/wrapped-defaults.ts +0 -87
- package/src/interactive2/wrapped-ellipse.ts +0 -94
- package/src/interactive2/wrapped-line.ts +0 -116
- package/src/interactive2/wrapped-path.ts +0 -51
- package/src/interactive2.ts +0 -70
- package/src/item-version.ts +0 -10
- package/src/jipt-paragraphs.ts +0 -49
- package/src/jquery.mobile.vmouse.js +0 -545
- package/src/loading-context.ts +0 -21
- package/src/logging/log.test.ts +0 -39
- package/src/logging/log.ts +0 -97
- package/src/mixins/__tests__/widget-prop-denylist.test.ts +0 -21
- package/src/mixins/changeable.ts +0 -133
- package/src/mixins/editor-jsonify.ts +0 -13
- package/src/mixins/widget-jsonify-deprecated.ts +0 -23
- package/src/mixins/widget-prop-denylist.ts +0 -48
- package/src/multi-items/__stories__/multi-renderer.stories.tsx +0 -83
- package/src/multi-items/__testdata__/multi-renderer.testdata.ts +0 -172
- package/src/multi-items/__tests__/__snapshots__/multi-renderer.test.tsx.snap +0 -1164
- package/src/multi-items/__tests__/items.test.ts +0 -240
- package/src/multi-items/__tests__/multi-renderer.test.tsx +0 -914
- package/src/multi-items/__tests__/prop-type-builders.test.ts +0 -133
- package/src/multi-items/__tests__/shapes.test.ts +0 -43
- package/src/multi-items/__tests__/trees.test.ts +0 -317
- package/src/multi-items/item-types.ts +0 -56
- package/src/multi-items/items.ts +0 -176
- package/src/multi-items/multi-renderer.tsx +0 -569
- package/src/multi-items/prop-type-builders.ts +0 -106
- package/src/multi-items/shape-types.ts +0 -52
- package/src/multi-items/shapes.ts +0 -52
- package/src/multi-items/tree-types.ts +0 -47
- package/src/multi-items/trees.ts +0 -360
- package/src/multi-items.ts +0 -75
- package/src/perseus-api.tsx +0 -188
- package/src/perseus-env.ts +0 -27
- package/src/perseus-error.ts +0 -17
- package/src/perseus-markdown.tsx +0 -405
- package/src/perseus-types.ts +0 -1366
- package/src/perseus-version.ts +0 -9
- package/src/question-paragraph.tsx +0 -34
- package/src/renderability.ts +0 -109
- package/src/renderer.tsx +0 -2000
- package/src/server-item-renderer.tsx +0 -495
- package/src/sigfigs.ts +0 -490
- package/src/styles/articles.less +0 -749
- package/src/styles/constants.ts +0 -94
- package/src/styles/global-constants.ts +0 -343
- package/src/styles/global-styles.ts +0 -306
- package/src/styles/khan-exercise.css +0 -1468
- package/src/styles/media-queries.ts +0 -47
- package/src/styles/perseus-renderer.less +0 -732
- package/src/styles/shared.ts +0 -130
- package/src/styles/util.less +0 -47
- package/src/styles/variables.boostrap.less +0 -277
- package/src/styles/variables.less +0 -56
- package/src/styles/variables.shared.less +0 -340
- package/src/styles/widgets/categorizer.less +0 -38
- package/src/styles/widgets/dropdown.less +0 -3
- package/src/styles/widgets/expression.less +0 -65
- package/src/styles/widgets/graded-group.less +0 -36
- package/src/styles/widgets/grapher.less +0 -12
- package/src/styles/widgets/group.less +0 -19
- package/src/styles/widgets/image.less +0 -54
- package/src/styles/widgets/interactive-graph.less +0 -64
- package/src/styles/widgets/label-image.less +0 -57
- package/src/styles/widgets/matcher.less +0 -8
- package/src/styles/widgets/matrix.less +0 -126
- package/src/styles/widgets/measurer.less +0 -20
- package/src/styles/widgets/orderer.less +0 -98
- package/src/styles/widgets/passage.less +0 -154
- package/src/styles/widgets/plotter.less +0 -31
- package/src/styles/widgets/radio.less +0 -58
- package/src/styles/widgets/reaction-diagram.less +0 -35
- package/src/styles/widgets/sequence.less +0 -5
- package/src/styles/widgets/sortable.less +0 -113
- package/src/styles/widgets/table.less +0 -57
- package/src/styles/widgets/unit.less +0 -15
- package/src/tex-wrangler.ts +0 -182
- package/src/translation-linter.ts +0 -126
- package/src/traversal.ts +0 -138
- package/src/types.ts +0 -513
- package/src/util/a11y.ts +0 -23
- package/src/util/answer-types.test.ts +0 -114
- package/src/util/answer-types.ts +0 -876
- package/src/util/colors.ts +0 -93
- package/src/util/drawing-transform.test.ts +0 -67
- package/src/util/drawing-transform.ts +0 -102
- package/src/util/extract-perseus-data.ts +0 -539
- package/src/util/fix-passage-refs.ts +0 -121
- package/src/util/geometry.test.ts +0 -75
- package/src/util/geometry.ts +0 -312
- package/src/util/graph-bounds.ts +0 -23
- package/src/util/graph-utils.ts +0 -15
- package/src/util/graphie.test.ts +0 -1277
- package/src/util/graphie.ts +0 -1576
- package/src/util/interactive.ts +0 -4174
- package/src/util/interval.ts +0 -4
- package/src/util/katex-preprocess.ts +0 -14
- package/src/util/math.test.ts +0 -11
- package/src/util/math.ts +0 -294
- package/src/util/mobile-native-utils.test.ts +0 -22
- package/src/util/mobile-native-utils.ts +0 -12
- package/src/util/parse-perseus-json.test.ts +0 -10
- package/src/util/parse-perseus-json.ts +0 -13
- package/src/util/react-render.tsx +0 -27
- package/src/util/register-all-widgets-for-testing.ts +0 -13
- package/src/util/scroll-utils.ts +0 -155
- package/src/util/sizing-utils.ts +0 -46
- package/src/util/tex.ts +0 -73
- package/src/util/url-utils.ts +0 -34
- package/src/util.graphie.test.ts +0 -45
- package/src/util.graphie.ts +0 -59
- package/src/util.ts +0 -966
- package/src/version.ts +0 -10
- package/src/widget-container.tsx +0 -199
- package/src/widgets/__stories__/categorizer.stories.tsx +0 -14
- package/src/widgets/__stories__/cs-program.stories.tsx +0 -14
- package/src/widgets/__stories__/definition.stories.tsx +0 -114
- package/src/widgets/__stories__/dropdown.stories.tsx +0 -14
- package/src/widgets/__stories__/explanation.stories.tsx +0 -18
- package/src/widgets/__stories__/expression.stories.tsx +0 -145
- package/src/widgets/__stories__/graded-group-set.stories.tsx +0 -31
- package/src/widgets/__stories__/graded-group.stories.tsx +0 -31
- package/src/widgets/__stories__/grapher.stories.tsx +0 -46
- package/src/widgets/__stories__/group.stories.tsx +0 -14
- package/src/widgets/__stories__/iframe.stories.tsx +0 -14
- package/src/widgets/__stories__/image.stories.tsx +0 -85
- package/src/widgets/__stories__/input-number.stories.tsx +0 -101
- package/src/widgets/__stories__/interaction.stories.tsx +0 -14
- package/src/widgets/__stories__/interactive-graph.stories.tsx +0 -60
- package/src/widgets/__stories__/label-image.stories.tsx +0 -130
- package/src/widgets/__stories__/matcher.stories.tsx +0 -14
- package/src/widgets/__stories__/matrix.stories.tsx +0 -14
- package/src/widgets/__stories__/number-line.stories.tsx +0 -14
- package/src/widgets/__stories__/numeric-input.stories.tsx +0 -105
- package/src/widgets/__stories__/orderer.stories.tsx +0 -18
- package/src/widgets/__stories__/passage-ref.stories.tsx +0 -33
- package/src/widgets/__stories__/passage.stories.tsx +0 -39
- package/src/widgets/__stories__/plotter.stories.tsx +0 -27
- package/src/widgets/__stories__/radio.stories.tsx +0 -86
- package/src/widgets/__stories__/random-widgets.stories.tsx +0 -59
- package/src/widgets/__stories__/sorter.stories.tsx +0 -14
- package/src/widgets/__stories__/test-keypad-context-wrapper.tsx +0 -66
- package/src/widgets/__stories__/unit.stories.tsx +0 -28
- package/src/widgets/__stories__/video-transcript-link.stories.tsx +0 -23
- package/src/widgets/__stories__/video.stories.tsx +0 -22
- package/src/widgets/__testdata__/base-radio.testdata.ts +0 -21
- package/src/widgets/__testdata__/categorizer.testdata.ts +0 -89
- package/src/widgets/__testdata__/cs-program.testdata.ts +0 -27
- package/src/widgets/__testdata__/dropdown.testdata.ts +0 -71
- package/src/widgets/__testdata__/explanation.testdata.ts +0 -85
- package/src/widgets/__testdata__/expression.testdata.ts +0 -198
- package/src/widgets/__testdata__/graded-group-set.testdata.ts +0 -356
- package/src/widgets/__testdata__/graded-group.testdata.ts +0 -77
- package/src/widgets/__testdata__/grapher.testdata.ts +0 -374
- package/src/widgets/__testdata__/group.testdata.ts +0 -153
- package/src/widgets/__testdata__/iframe.testdata.ts +0 -35
- package/src/widgets/__testdata__/image.testdata.ts +0 -36
- package/src/widgets/__testdata__/input-number.testdata.ts +0 -72
- package/src/widgets/__testdata__/interaction.testdata.ts +0 -262
- package/src/widgets/__testdata__/interactive-graph-random.testdata.ts +0 -269
- package/src/widgets/__testdata__/interactive-graph.testdata.ts +0 -644
- package/src/widgets/__testdata__/label-image.testdata.ts +0 -308
- package/src/widgets/__testdata__/matcher.testdata.ts +0 -33
- package/src/widgets/__testdata__/matrix.testdata.ts +0 -28
- package/src/widgets/__testdata__/number-line.testdata.ts +0 -30
- package/src/widgets/__testdata__/numeric-input.testdata.ts +0 -265
- package/src/widgets/__testdata__/orderer.testdata.ts +0 -123
- package/src/widgets/__testdata__/passage-ref.testdata.ts +0 -101
- package/src/widgets/__testdata__/passage.testdata.ts +0 -95
- package/src/widgets/__testdata__/plotter.testdata.ts +0 -36
- package/src/widgets/__testdata__/radio.testdata.ts +0 -324
- package/src/widgets/__testdata__/randomizers.ts +0 -51
- package/src/widgets/__testdata__/sorter.testdata.ts +0 -19
- package/src/widgets/__testdata__/video.testdata.ts +0 -61
- package/src/widgets/__tests__/__snapshots__/categorizer.test.ts.snap +0 -940
- package/src/widgets/__tests__/__snapshots__/cs-program.test.ts.snap +0 -67
- package/src/widgets/__tests__/__snapshots__/definition.test.ts.snap +0 -97
- package/src/widgets/__tests__/__snapshots__/dropdown.test.ts.snap +0 -133
- package/src/widgets/__tests__/__snapshots__/explanation.test.ts.snap +0 -425
- package/src/widgets/__tests__/__snapshots__/graded-group-set-jipt.test.ts.snap +0 -729
- package/src/widgets/__tests__/__snapshots__/graded-group-set.test.ts.snap +0 -339
- package/src/widgets/__tests__/__snapshots__/graded-group.test.ts.snap +0 -801
- package/src/widgets/__tests__/__snapshots__/grapher.test.ts.snap +0 -2673
- package/src/widgets/__tests__/__snapshots__/group.test.tsx.snap +0 -1211
- package/src/widgets/__tests__/__snapshots__/iframe.test.ts.snap +0 -61
- package/src/widgets/__tests__/__snapshots__/image.test.ts.snap +0 -378
- package/src/widgets/__tests__/__snapshots__/input-number.test.ts.snap +0 -495
- package/src/widgets/__tests__/__snapshots__/interaction.test.ts.snap +0 -292
- package/src/widgets/__tests__/__snapshots__/interactive-graph.test.ts.snap +0 -2889
- package/src/widgets/__tests__/__snapshots__/matcher.test.tsx.snap +0 -883
- package/src/widgets/__tests__/__snapshots__/matrix.test.ts.snap +0 -514
- package/src/widgets/__tests__/__snapshots__/number-line.test.ts.snap +0 -814
- package/src/widgets/__tests__/__snapshots__/numeric-input.test.ts.snap +0 -470
- package/src/widgets/__tests__/__snapshots__/orderer.test.ts.snap +0 -243
- package/src/widgets/__tests__/__snapshots__/passage-ref.test.ts.snap +0 -434
- package/src/widgets/__tests__/__snapshots__/passage.test.tsx.snap +0 -1956
- package/src/widgets/__tests__/__snapshots__/plotter.test.tsx.snap +0 -827
- package/src/widgets/__tests__/__snapshots__/radio.test.ts.snap +0 -4237
- package/src/widgets/__tests__/__snapshots__/unit.test.tsx.snap +0 -20
- package/src/widgets/__tests__/__snapshots__/video.test.ts.snap +0 -153
- package/src/widgets/__tests__/categorizer.test.ts +0 -203
- package/src/widgets/__tests__/cs-program.test.ts +0 -43
- package/src/widgets/__tests__/definition.test.ts +0 -136
- package/src/widgets/__tests__/dropdown.test.ts +0 -105
- package/src/widgets/__tests__/explanation.test.ts +0 -198
- package/src/widgets/__tests__/expression-mobile.test.tsx +0 -363
- package/src/widgets/__tests__/expression.test.tsx +0 -484
- package/src/widgets/__tests__/graded-group-set-jipt.test.ts +0 -30
- package/src/widgets/__tests__/graded-group-set.test.ts +0 -288
- package/src/widgets/__tests__/graded-group.test.ts +0 -232
- package/src/widgets/__tests__/grapher.cypress.ts +0 -576
- package/src/widgets/__tests__/grapher.test.ts +0 -33
- package/src/widgets/__tests__/group.test.tsx +0 -510
- package/src/widgets/__tests__/iframe.test.ts +0 -45
- package/src/widgets/__tests__/image.test.ts +0 -62
- package/src/widgets/__tests__/input-number.test.ts +0 -354
- package/src/widgets/__tests__/interaction.test.ts +0 -31
- package/src/widgets/__tests__/interactive-graph.cypress.ts +0 -815
- package/src/widgets/__tests__/interactive-graph.test.ts +0 -106
- package/src/widgets/__tests__/matcher.test.tsx +0 -176
- package/src/widgets/__tests__/matrix.test.ts +0 -82
- package/src/widgets/__tests__/number-line.test.ts +0 -79
- package/src/widgets/__tests__/numeric-input.test.ts +0 -575
- package/src/widgets/__tests__/orderer.test.ts +0 -73
- package/src/widgets/__tests__/passage-ref.test.ts +0 -168
- package/src/widgets/__tests__/passage.test.tsx +0 -224
- package/src/widgets/__tests__/plotter.test.tsx +0 -69
- package/src/widgets/__tests__/radio/base-radio.test.tsx +0 -470
- package/src/widgets/__tests__/radio/choice-icon.test.tsx +0 -90
- package/src/widgets/__tests__/radio/choice.test.tsx +0 -310
- package/src/widgets/__tests__/radio/focus-ring.test.tsx +0 -22
- package/src/widgets/__tests__/radio/option-status.test.tsx +0 -77
- package/src/widgets/__tests__/radio.test.ts +0 -807
- package/src/widgets/__tests__/randomizers.test.ts +0 -53
- package/src/widgets/__tests__/renderQuestion.tsx +0 -101
- package/src/widgets/__tests__/unit.test.tsx +0 -168
- package/src/widgets/__tests__/video.test.ts +0 -69
- package/src/widgets/categorizer.tsx +0 -344
- package/src/widgets/cs-program.tsx +0 -227
- package/src/widgets/definition.tsx +0 -121
- package/src/widgets/deprecated-standin/__stories__/deprecated-standin.stories.tsx +0 -30
- package/src/widgets/deprecated-standin/__tests__/__snapshots__/deprecated-standin.test.ts.snap +0 -70
- package/src/widgets/deprecated-standin/__tests__/deprecated-standin.test.ts +0 -93
- package/src/widgets/deprecated-standin/index.tsx +0 -58
- package/src/widgets/dropdown.tsx +0 -142
- package/src/widgets/explanation.tsx +0 -317
- package/src/widgets/expression.tsx +0 -707
- package/src/widgets/graded-group-answer-bar.tsx +0 -142
- package/src/widgets/graded-group-set.tsx +0 -338
- package/src/widgets/graded-group.tsx +0 -471
- package/src/widgets/grapher/util.tsx +0 -799
- package/src/widgets/grapher.tsx +0 -660
- package/src/widgets/group.tsx +0 -195
- package/src/widgets/iframe.tsx +0 -195
- package/src/widgets/image.tsx +0 -312
- package/src/widgets/input-number.tsx +0 -412
- package/src/widgets/interaction/arrow-picker.tsx +0 -38
- package/src/widgets/interaction/color-picker.tsx +0 -69
- package/src/widgets/interaction/dash-picker.tsx +0 -45
- package/src/widgets/interaction/element-container.tsx +0 -100
- package/src/widgets/interaction.tsx +0 -826
- package/src/widgets/interactive-graph.tsx +0 -2597
- package/src/widgets/label-image/__stories__/answer-choices.stories.tsx +0 -91
- package/src/widgets/label-image/__stories__/answer-pill.stories.tsx +0 -62
- package/src/widgets/label-image/__stories__/marker.stories.tsx +0 -171
- package/src/widgets/label-image/__tests__/answer-pill.test.tsx +0 -75
- package/src/widgets/label-image/__tests__/hide-answers-toggle.test.tsx +0 -39
- package/src/widgets/label-image/answer-choices.tsx +0 -88
- package/src/widgets/label-image/answer-pill.tsx +0 -103
- package/src/widgets/label-image/hide-answers-toggle.tsx +0 -40
- package/src/widgets/label-image/marker.tsx +0 -268
- package/src/widgets/label-image/strings.ts +0 -5
- package/src/widgets/label-image/types.ts +0 -27
- package/src/widgets/label-image.test.ts +0 -928
- package/src/widgets/label-image.tsx +0 -819
- package/src/widgets/lights-puzzle.tsx +0 -359
- package/src/widgets/matcher.tsx +0 -298
- package/src/widgets/matrix.tsx +0 -634
- package/src/widgets/measurer.tsx +0 -222
- package/src/widgets/molecule/__tests__/layout.test.ts +0 -162
- package/src/widgets/molecule/__tests__/parser.test.ts +0 -155
- package/src/widgets/molecule/molecule-drawing.ts +0 -173
- package/src/widgets/molecule/molecule-layout.ts +0 -362
- package/src/widgets/molecule/smiles-parser.ts +0 -296
- package/src/widgets/molecule.tsx +0 -172
- package/src/widgets/number-line.tsx +0 -862
- package/src/widgets/numeric-input.tsx +0 -576
- package/src/widgets/orderer.tsx +0 -786
- package/src/widgets/passage/__tests__/passage-markdown.test.ts +0 -376
- package/src/widgets/passage/passage-markdown.tsx +0 -475
- package/src/widgets/passage-ref-target.tsx +0 -76
- package/src/widgets/passage-ref.tsx +0 -213
- package/src/widgets/passage.tsx +0 -582
- package/src/widgets/plotter.tsx +0 -1194
- package/src/widgets/radio/__stories__/base-radio.stories.tsx +0 -196
- package/src/widgets/radio/__stories__/choice-icon.stories.tsx +0 -166
- package/src/widgets/radio/__stories__/choice-none-above.stories.tsx +0 -40
- package/src/widgets/radio/__stories__/choice.stories.tsx +0 -137
- package/src/widgets/radio/__stories__/focus-ring.stories.tsx +0 -43
- package/src/widgets/radio/__stories__/option-status.stories.tsx +0 -103
- package/src/widgets/radio/base-radio.tsx +0 -511
- package/src/widgets/radio/choice-a11y-text.ts +0 -61
- package/src/widgets/radio/choice-icon/choice-icon.tsx +0 -218
- package/src/widgets/radio/choice-icon/cross-out-line.tsx +0 -51
- package/src/widgets/radio/choice-icon/shared-styles.ts +0 -15
- package/src/widgets/radio/choice-none-above.tsx +0 -56
- package/src/widgets/radio/choice.jsx.fixture.ts +0 -45
- package/src/widgets/radio/choice.tsx +0 -359
- package/src/widgets/radio/focus-ring.tsx +0 -57
- package/src/widgets/radio/option-status.tsx +0 -98
- package/src/widgets/radio/util.test.ts +0 -18
- package/src/widgets/radio/util.ts +0 -31
- package/src/widgets/radio/widget.tsx +0 -520
- package/src/widgets/radio.ts +0 -157
- package/src/widgets/reaction-diagram.tsx +0 -144
- package/src/widgets/sequence.tsx +0 -142
- package/src/widgets/simulator.tsx +0 -829
- package/src/widgets/sorter.tsx +0 -155
- package/src/widgets/table.tsx +0 -393
- package/src/widgets/unit.tsx +0 -374
- package/src/widgets/video-transcript-link.test.tsx +0 -213
- package/src/widgets/video-transcript-link.tsx +0 -84
- package/src/widgets/video.tsx +0 -135
- package/src/widgets.ts +0 -489
- package/src/zoom.ts +0 -555
- package/tsconfig-build.json +0 -26
- package/tsconfig-build.tsbuildinfo +0 -1
|
@@ -1,419 +0,0 @@
|
|
|
1
|
-
/* eslint-disable @babel/no-invalid-this */
|
|
2
|
-
/**
|
|
3
|
-
* A library of options to pass to add/draw/remove/constraints
|
|
4
|
-
*/
|
|
5
|
-
import {vector as kvector, point as kpoint} from "@khanacademy/kmath";
|
|
6
|
-
import _ from "underscore";
|
|
7
|
-
|
|
8
|
-
import KhanMath from "../util/math";
|
|
9
|
-
|
|
10
|
-
import WrappedLine from "./wrapped-line";
|
|
11
|
-
import WrappedPath from "./wrapped-path";
|
|
12
|
-
|
|
13
|
-
import type {Coord} from "./types";
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Helper functions
|
|
17
|
-
*/
|
|
18
|
-
const getScaledAngle = function (line: any) {
|
|
19
|
-
const scaledA = line.graphie.scalePoint(line.coord(0));
|
|
20
|
-
const scaledZ = line.graphie.scalePoint(line.coord(1));
|
|
21
|
-
return kvector.polarDegFromCart(kvector.subtract(scaledZ, scaledA))[1];
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
// Given `coord` and `angle`, find the point where a line extended
|
|
25
|
-
// from `coord` in the direction of `angle` would be clipped by the
|
|
26
|
-
// edge of the graphie canvas. Then draw an arrowhead at that point
|
|
27
|
-
// pointing in the direction of `angle`.
|
|
28
|
-
const getClipPoint = function (graph, coord: Coord, angle: number) {
|
|
29
|
-
// Actually put the arrowheads 4px from the edge so they have
|
|
30
|
-
// a bit of room
|
|
31
|
-
const xExtent = graph.range[0][1] - graph.range[0][0];
|
|
32
|
-
const yExtent = graph.range[1][1] - graph.range[1][0];
|
|
33
|
-
|
|
34
|
-
// shoot a point off into the distance ...
|
|
35
|
-
const distance = xExtent + yExtent;
|
|
36
|
-
// we need to scale the point according to the scale of the axes
|
|
37
|
-
const angleVec = graph.unscaleVector(kvector.cartFromPolarDeg(1, angle));
|
|
38
|
-
const distVec = kvector.scale(kvector.normalize(angleVec), distance);
|
|
39
|
-
const farCoord = kvector.add(coord, distVec);
|
|
40
|
-
const scaledAngle = kvector.polarDegFromCart(angleVec)[1];
|
|
41
|
-
// ... and then bring it back
|
|
42
|
-
const clipPoint = graph.constrainToBoundsOnAngle(
|
|
43
|
-
farCoord,
|
|
44
|
-
4,
|
|
45
|
-
(scaledAngle * Math.PI) / 180,
|
|
46
|
-
);
|
|
47
|
-
return clipPoint;
|
|
48
|
-
};
|
|
49
|
-
|
|
50
|
-
// Given `coord` and `angle`, find the point where a line extended
|
|
51
|
-
// from `coord` in the direction of `angle` would be clipped by the
|
|
52
|
-
// edge of the graphie canvas. Then draw an arrowhead at that point
|
|
53
|
-
// pointing in the direction of `angle`.
|
|
54
|
-
const createArrow = function (graph, style: any) {
|
|
55
|
-
// Points that define the arrowhead
|
|
56
|
-
const center = [0.75, 0];
|
|
57
|
-
let points = [
|
|
58
|
-
[-3, 4],
|
|
59
|
-
[-2.75, 2.5],
|
|
60
|
-
[0, 0.25],
|
|
61
|
-
center,
|
|
62
|
-
[0, -0.25],
|
|
63
|
-
[-2.75, -2.5],
|
|
64
|
-
[-3, -4],
|
|
65
|
-
];
|
|
66
|
-
|
|
67
|
-
// Scale points by 1.4 around (0.75, 0)
|
|
68
|
-
const scale = 1.4;
|
|
69
|
-
points = _.map(points, function (point) {
|
|
70
|
-
const pv = kvector.subtract(point, center);
|
|
71
|
-
const pvScaled = kvector.scale(pv, scale);
|
|
72
|
-
return kvector.add(center, pvScaled);
|
|
73
|
-
});
|
|
74
|
-
|
|
75
|
-
// We can't just pass in a path to `graph.fixedPath` as we need to modify
|
|
76
|
-
// the points in some way, so instead we provide a function for creating
|
|
77
|
-
// the path once the points have been transformed
|
|
78
|
-
const createCubicPath = function (points) {
|
|
79
|
-
let path = "M" + points[0][0] + " " + points[0][1];
|
|
80
|
-
for (let i = 1; i < points.length; i += 3) {
|
|
81
|
-
path +=
|
|
82
|
-
"C" +
|
|
83
|
-
points[i][0] +
|
|
84
|
-
" " +
|
|
85
|
-
points[i][1] +
|
|
86
|
-
" " +
|
|
87
|
-
points[i + 1][0] +
|
|
88
|
-
" " +
|
|
89
|
-
points[i + 1][1] +
|
|
90
|
-
" " +
|
|
91
|
-
points[i + 2][0] +
|
|
92
|
-
" " +
|
|
93
|
-
points[i + 2][1];
|
|
94
|
-
}
|
|
95
|
-
return path;
|
|
96
|
-
};
|
|
97
|
-
|
|
98
|
-
// Create arrowhead
|
|
99
|
-
const unscaledPoints = _.map(points, graph.unscalePoint);
|
|
100
|
-
const options = {
|
|
101
|
-
center: graph.unscalePoint(center),
|
|
102
|
-
createPath: createCubicPath,
|
|
103
|
-
} as const;
|
|
104
|
-
const arrowHead = new WrappedPath(graph, unscaledPoints, options);
|
|
105
|
-
arrowHead.attr(
|
|
106
|
-
_.extend(
|
|
107
|
-
{
|
|
108
|
-
"stroke-linejoin": "round",
|
|
109
|
-
"stroke-linecap": "round",
|
|
110
|
-
"stroke-dasharray": "",
|
|
111
|
-
},
|
|
112
|
-
style,
|
|
113
|
-
),
|
|
114
|
-
);
|
|
115
|
-
|
|
116
|
-
// Add custom function for transforming arrowheads that accounts for
|
|
117
|
-
// center, scaling, etc.
|
|
118
|
-
arrowHead.toCoordAtAngle = function (coord: Coord, angle: number) {
|
|
119
|
-
const clipPoint = graph.scalePoint(getClipPoint(graph, coord, angle));
|
|
120
|
-
arrowHead.transform(
|
|
121
|
-
"translateX(" +
|
|
122
|
-
(clipPoint[0] + scale * center[0]) +
|
|
123
|
-
"px) " +
|
|
124
|
-
"translateY(" +
|
|
125
|
-
(clipPoint[1] + scale * center[1]) +
|
|
126
|
-
"px) " +
|
|
127
|
-
"translateZ(0) " +
|
|
128
|
-
"rotate(" +
|
|
129
|
-
(360 - KhanMath.bound(angle)) +
|
|
130
|
-
"deg)",
|
|
131
|
-
);
|
|
132
|
-
};
|
|
133
|
-
|
|
134
|
-
return arrowHead;
|
|
135
|
-
};
|
|
136
|
-
|
|
137
|
-
/**
|
|
138
|
-
* MovableLine option functions
|
|
139
|
-
*/
|
|
140
|
-
const add = {
|
|
141
|
-
// We do this in add as well as in standard so that we can call
|
|
142
|
-
// pointsToFront after the first draw (which adds `this.visibleShape`)
|
|
143
|
-
draw: function () {
|
|
144
|
-
this.draw();
|
|
145
|
-
},
|
|
146
|
-
|
|
147
|
-
pointsToFront: function (state: any) {
|
|
148
|
-
_.invoke(state.points, "toFront");
|
|
149
|
-
},
|
|
150
|
-
} as const;
|
|
151
|
-
|
|
152
|
-
// @ts-expect-error - TS2339 - Property 'standard' does not exist on type '{ readonly draw: () => void; readonly pointsToFront: (state: any) => void; }'.
|
|
153
|
-
add.standard = [add.draw, add.pointsToFront];
|
|
154
|
-
|
|
155
|
-
const modify = {
|
|
156
|
-
draw: function () {
|
|
157
|
-
this.draw();
|
|
158
|
-
},
|
|
159
|
-
} as const;
|
|
160
|
-
|
|
161
|
-
// @ts-expect-error - TS2339 - Property 'standard' does not exist on type '{ readonly draw: () => void; }'.
|
|
162
|
-
modify.standard = [modify.draw];
|
|
163
|
-
|
|
164
|
-
const draw = {
|
|
165
|
-
basic: function (state: any) {
|
|
166
|
-
// @ts-expect-error - TS2339 - Property 'graphie' does not exist on type '{ readonly basic: (state: any) => void; readonly arrows: (state: any) => void; readonly highlight: (state: any, prevState: any) => void; }'.
|
|
167
|
-
const graphie = this.graphie;
|
|
168
|
-
// @ts-expect-error - TS2339 - Property 'coord' does not exist on type '{ readonly basic: (state: any) => void; readonly arrows: (state: any) => void; readonly highlight: (state: any, prevState: any) => void; }'.
|
|
169
|
-
let start = this.coord(0);
|
|
170
|
-
// @ts-expect-error - TS2339 - Property 'coord' does not exist on type '{ readonly basic: (state: any) => void; readonly arrows: (state: any) => void; readonly highlight: (state: any, prevState: any) => void; }'.
|
|
171
|
-
let end = this.coord(1);
|
|
172
|
-
|
|
173
|
-
// @ts-expect-error - TS2339 - Property 'state' does not exist on type '{ readonly basic: (state: any) => void; readonly arrows: (state: any) => void; readonly highlight: (state: any, prevState: any) => void; }'.
|
|
174
|
-
if (!this.state.visibleShape) {
|
|
175
|
-
const options = {
|
|
176
|
-
thickness: 10,
|
|
177
|
-
} as const;
|
|
178
|
-
// @ts-expect-error - TS2339 - Property 'state' does not exist on type '{ readonly basic: (state: any) => void; readonly arrows: (state: any) => void; readonly highlight: (state: any, prevState: any) => void; }'.
|
|
179
|
-
this.state.visibleShape = new WrappedLine(
|
|
180
|
-
graphie,
|
|
181
|
-
start,
|
|
182
|
-
end,
|
|
183
|
-
options,
|
|
184
|
-
);
|
|
185
|
-
// @ts-expect-error - TS2339 - Property 'state' does not exist on type '{ readonly basic: (state: any) => void; readonly arrows: (state: any) => void; readonly highlight: (state: any, prevState: any) => void; }'. | TS2339 - Property 'normalStyle' does not exist on type '{ readonly basic: (state: any) => void; readonly arrows: (state: any) => void; readonly highlight: (state: any, prevState: any) => void; }'.
|
|
186
|
-
this.state.visibleShape.attr(this.normalStyle());
|
|
187
|
-
// @ts-expect-error - TS2339 - Property 'state' does not exist on type '{ readonly basic: (state: any) => void; readonly arrows: (state: any) => void; readonly highlight: (state: any, prevState: any) => void; }'.
|
|
188
|
-
this.state.visibleShape.toFront();
|
|
189
|
-
|
|
190
|
-
// @ts-expect-error - TS2339 - Property 'mouseTarget' does not exist on type '{ readonly basic: (state: any) => void; readonly arrows: (state: any) => void; readonly highlight: (state: any, prevState: any) => void; }'.
|
|
191
|
-
if (this.mouseTarget()) {
|
|
192
|
-
// @ts-expect-error - TS2339 - Property 'mouseTarget' does not exist on type '{ readonly basic: (state: any) => void; readonly arrows: (state: any) => void; readonly highlight: (state: any, prevState: any) => void; }'.
|
|
193
|
-
this.mouseTarget().toFront();
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
// Compute angle
|
|
198
|
-
const angle = getScaledAngle(this);
|
|
199
|
-
|
|
200
|
-
// Extend start, end if necessary (i.e., if not a line segment)
|
|
201
|
-
if (state.extendLine) {
|
|
202
|
-
start = getClipPoint(graphie, start, 360 - angle);
|
|
203
|
-
end = getClipPoint(graphie, end, (540 - angle) % 360);
|
|
204
|
-
} else if (state.extendRay) {
|
|
205
|
-
end = getClipPoint(graphie, end, 360 - angle);
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
// Move elements
|
|
209
|
-
// @ts-expect-error - TS2339 - Property 'state' does not exist on type '{ readonly basic: (state: any) => void; readonly arrows: (state: any) => void; readonly highlight: (state: any, prevState: any) => void; }'.
|
|
210
|
-
const elements = [this.state.visibleShape];
|
|
211
|
-
|
|
212
|
-
// @ts-expect-error - TS2339 - Property 'mouseTarget' does not exist on type '{ readonly basic: (state: any) => void; readonly arrows: (state: any) => void; readonly highlight: (state: any, prevState: any) => void; }'.
|
|
213
|
-
if (this.mouseTarget()) {
|
|
214
|
-
// @ts-expect-error - TS2339 - Property 'mouseTarget' does not exist on type '{ readonly basic: (state: any) => void; readonly arrows: (state: any) => void; readonly highlight: (state: any, prevState: any) => void; }'.
|
|
215
|
-
elements.push(this.mouseTarget());
|
|
216
|
-
}
|
|
217
|
-
_.each(elements, function (element) {
|
|
218
|
-
element.moveTo(start, end);
|
|
219
|
-
});
|
|
220
|
-
},
|
|
221
|
-
|
|
222
|
-
arrows: function (state: any) {
|
|
223
|
-
// Create arrows, if not yet created
|
|
224
|
-
// @ts-expect-error - TS2551 - Property '_arrows' does not exist on type '{ readonly basic: (state: any) => void; readonly arrows: (state: any) => void; readonly highlight: (state: any, prevState: any) => void; }'. Did you mean 'arrows'?
|
|
225
|
-
if (this._arrows == null) {
|
|
226
|
-
// @ts-expect-error - TS2551 - Property '_arrows' does not exist on type '{ readonly basic: (state: any) => void; readonly arrows: (state: any) => void; readonly highlight: (state: any, prevState: any) => void; }'. Did you mean 'arrows'?
|
|
227
|
-
this._arrows = [];
|
|
228
|
-
if (state.extendLine) {
|
|
229
|
-
// @ts-expect-error - TS2551 - Property '_arrows' does not exist on type '{ readonly basic: (state: any) => void; readonly arrows: (state: any) => void; readonly highlight: (state: any, prevState: any) => void; }'. Did you mean 'arrows'?
|
|
230
|
-
this._arrows.push(
|
|
231
|
-
// @ts-expect-error - TS2339 - Property 'graphie' does not exist on type '{ readonly basic: (state: any) => void; readonly arrows: (state: any) => void; readonly highlight: (state: any, prevState: any) => void; }'. | TS2339 - Property 'normalStyle' does not exist on type '{ readonly basic: (state: any) => void; readonly arrows: (state: any) => void; readonly highlight: (state: any, prevState: any) => void; }'.
|
|
232
|
-
createArrow(this.graphie, this.normalStyle()),
|
|
233
|
-
);
|
|
234
|
-
// @ts-expect-error - TS2551 - Property '_arrows' does not exist on type '{ readonly basic: (state: any) => void; readonly arrows: (state: any) => void; readonly highlight: (state: any, prevState: any) => void; }'. Did you mean 'arrows'?
|
|
235
|
-
this._arrows.push(
|
|
236
|
-
// @ts-expect-error - TS2339 - Property 'graphie' does not exist on type '{ readonly basic: (state: any) => void; readonly arrows: (state: any) => void; readonly highlight: (state: any, prevState: any) => void; }'. | TS2339 - Property 'normalStyle' does not exist on type '{ readonly basic: (state: any) => void; readonly arrows: (state: any) => void; readonly highlight: (state: any, prevState: any) => void; }'.
|
|
237
|
-
createArrow(this.graphie, this.normalStyle()),
|
|
238
|
-
);
|
|
239
|
-
} else if (state.extendRay) {
|
|
240
|
-
// @ts-expect-error - TS2551 - Property '_arrows' does not exist on type '{ readonly basic: (state: any) => void; readonly arrows: (state: any) => void; readonly highlight: (state: any, prevState: any) => void; }'. Did you mean 'arrows'?
|
|
241
|
-
this._arrows.push(
|
|
242
|
-
// @ts-expect-error - TS2339 - Property 'graphie' does not exist on type '{ readonly basic: (state: any) => void; readonly arrows: (state: any) => void; readonly highlight: (state: any, prevState: any) => void; }'. | TS2339 - Property 'normalStyle' does not exist on type '{ readonly basic: (state: any) => void; readonly arrows: (state: any) => void; readonly highlight: (state: any, prevState: any) => void; }'.
|
|
243
|
-
createArrow(this.graphie, this.normalStyle()),
|
|
244
|
-
);
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
// Transform arrows
|
|
249
|
-
const angle = getScaledAngle(this);
|
|
250
|
-
const angleForArrow = [360 - angle, (540 - angle) % 360];
|
|
251
|
-
_.each(
|
|
252
|
-
// @ts-expect-error - TS2551 - Property '_arrows' does not exist on type '{ readonly basic: (state: any) => void; readonly arrows: (state: any) => void; readonly highlight: (state: any, prevState: any) => void; }'. Did you mean 'arrows'?
|
|
253
|
-
this._arrows,
|
|
254
|
-
function (arrow, i) {
|
|
255
|
-
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
256
|
-
arrow.toCoordAtAngle(this.coord(i), angleForArrow[i]);
|
|
257
|
-
},
|
|
258
|
-
this,
|
|
259
|
-
);
|
|
260
|
-
},
|
|
261
|
-
|
|
262
|
-
highlight: function (state: any, prevState: any) {
|
|
263
|
-
// TODO(jack): Figure out a way to highlight the points attached to
|
|
264
|
-
// the line. Maybe this means an additional isHovering: []
|
|
265
|
-
// function to state of movable/movablepoint to define [additional?]
|
|
266
|
-
// times it should be highlighted
|
|
267
|
-
if (state.isHovering && !prevState.isHovering) {
|
|
268
|
-
state.visibleShape.animate(state.highlightStyle, 50);
|
|
269
|
-
} else if (!state.isHovering && prevState.isHovering) {
|
|
270
|
-
state.visibleShape.animate(state.normalStyle, 50);
|
|
271
|
-
}
|
|
272
|
-
},
|
|
273
|
-
} as const;
|
|
274
|
-
|
|
275
|
-
// @ts-expect-error - TS2339 - Property 'standard' does not exist on type '{ readonly basic: (state: any) => void; readonly arrows: (state: any) => void; readonly highlight: (state: any, prevState: any) => void; }'.
|
|
276
|
-
draw.standard = [draw.basic, draw.arrows, draw.highlight];
|
|
277
|
-
|
|
278
|
-
const remove = {
|
|
279
|
-
basic: function () {
|
|
280
|
-
// @ts-expect-error - TS2339 - Property 'state' does not exist on type '{ readonly basic: () => void; readonly arrows: () => void; }'.
|
|
281
|
-
if (this.state.visibleShape) {
|
|
282
|
-
// @ts-expect-error - TS2339 - Property 'state' does not exist on type '{ readonly basic: () => void; readonly arrows: () => void; }'.
|
|
283
|
-
this.state.visibleShape.remove();
|
|
284
|
-
}
|
|
285
|
-
},
|
|
286
|
-
|
|
287
|
-
arrows: function () {
|
|
288
|
-
// @ts-expect-error - TS2551 - Property '_arrows' does not exist on type '{ readonly basic: () => void; readonly arrows: () => void; }'. Did you mean 'arrows'?
|
|
289
|
-
if (this._arrows != null) {
|
|
290
|
-
// @ts-expect-error - TS2551 - Property '_arrows' does not exist on type '{ readonly basic: () => void; readonly arrows: () => void; }'. Did you mean 'arrows'?
|
|
291
|
-
_.invoke(this._arrows, "remove");
|
|
292
|
-
}
|
|
293
|
-
// @ts-expect-error - TS2551 - Property '_arrows' does not exist on type '{ readonly basic: () => void; readonly arrows: () => void; }'. Did you mean 'arrows'?
|
|
294
|
-
this._arrows = null;
|
|
295
|
-
},
|
|
296
|
-
} as const;
|
|
297
|
-
|
|
298
|
-
// @ts-expect-error - TS2339 - Property 'standard' does not exist on type '{ readonly basic: () => void; readonly arrows: () => void; }'.
|
|
299
|
-
remove.standard = [remove.basic, remove.arrows];
|
|
300
|
-
|
|
301
|
-
const constraints = {
|
|
302
|
-
fixed: function (): () => boolean {
|
|
303
|
-
return function () {
|
|
304
|
-
return false;
|
|
305
|
-
};
|
|
306
|
-
},
|
|
307
|
-
|
|
308
|
-
snap: function (snap: any): (arg1: Coord, arg2: Coord) => any {
|
|
309
|
-
return function (coord: Coord, prevCoord: Coord) {
|
|
310
|
-
if (snap === null) {
|
|
311
|
-
return true;
|
|
312
|
-
}
|
|
313
|
-
let delta = kvector.subtract(coord, prevCoord);
|
|
314
|
-
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
315
|
-
snap = snap || this.graphie.snap;
|
|
316
|
-
delta = kpoint.roundTo(delta, snap);
|
|
317
|
-
return kvector.add(prevCoord, delta);
|
|
318
|
-
};
|
|
319
|
-
},
|
|
320
|
-
|
|
321
|
-
bound: function (
|
|
322
|
-
range: any,
|
|
323
|
-
snap: any,
|
|
324
|
-
paddingPx: number,
|
|
325
|
-
): (arg1: any, arg2: any) => any {
|
|
326
|
-
if (paddingPx === undefined) {
|
|
327
|
-
if (range === undefined) {
|
|
328
|
-
paddingPx = 10;
|
|
329
|
-
} else {
|
|
330
|
-
paddingPx = 0;
|
|
331
|
-
}
|
|
332
|
-
}
|
|
333
|
-
return function (coord: Coord, prevCoord: Coord) {
|
|
334
|
-
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
335
|
-
const graphie = this.graphie;
|
|
336
|
-
const delta = kvector.subtract(coord, prevCoord);
|
|
337
|
-
range = range || graphie.range;
|
|
338
|
-
// A null snap means no snap; an undefined snap means
|
|
339
|
-
// default to graphie's
|
|
340
|
-
if (snap === undefined) {
|
|
341
|
-
snap = graphie.snap;
|
|
342
|
-
}
|
|
343
|
-
|
|
344
|
-
// Calculate the bounds for both points
|
|
345
|
-
let absoluteLower = graphie.unscalePoint([
|
|
346
|
-
paddingPx,
|
|
347
|
-
graphie.ypixels - paddingPx,
|
|
348
|
-
]);
|
|
349
|
-
let absoluteUpper = graphie.unscalePoint([
|
|
350
|
-
graphie.xpixels - paddingPx,
|
|
351
|
-
paddingPx,
|
|
352
|
-
]);
|
|
353
|
-
if (snap) {
|
|
354
|
-
absoluteLower = kpoint.ceilTo(absoluteLower, snap);
|
|
355
|
-
absoluteUpper = kpoint.floorTo(absoluteUpper, snap);
|
|
356
|
-
}
|
|
357
|
-
|
|
358
|
-
// Calculate the bounds for the delta.
|
|
359
|
-
const deltaBounds = _.map(
|
|
360
|
-
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
361
|
-
this.coords(),
|
|
362
|
-
function (coord: Coord, i: number) {
|
|
363
|
-
const max = kvector.subtract(absoluteUpper, coord);
|
|
364
|
-
const min = kvector.subtract(absoluteLower, coord);
|
|
365
|
-
return [min, max];
|
|
366
|
-
},
|
|
367
|
-
);
|
|
368
|
-
|
|
369
|
-
// bound the delta by the calculated bounds
|
|
370
|
-
const boundedDelta = _.reduce(
|
|
371
|
-
deltaBounds,
|
|
372
|
-
function (delta, bound) {
|
|
373
|
-
const lower = bound[0];
|
|
374
|
-
const upper = bound[1];
|
|
375
|
-
const deltaX = Math.max(
|
|
376
|
-
lower[0],
|
|
377
|
-
Math.min(upper[0], delta[0]),
|
|
378
|
-
);
|
|
379
|
-
const deltaY = Math.max(
|
|
380
|
-
lower[1],
|
|
381
|
-
Math.min(upper[1], delta[1]),
|
|
382
|
-
);
|
|
383
|
-
return [deltaX, deltaY];
|
|
384
|
-
},
|
|
385
|
-
delta,
|
|
386
|
-
);
|
|
387
|
-
|
|
388
|
-
return kvector.add(prevCoord, boundedDelta);
|
|
389
|
-
};
|
|
390
|
-
},
|
|
391
|
-
} as const;
|
|
392
|
-
|
|
393
|
-
// @ts-expect-error - TS2339 - Property 'standard' does not exist on type '{ readonly fixed: () => () => boolean; readonly snap: (snap: any) => (arg1: Coord, arg2: Coord) => any; readonly bound: (range: any, snap: any, paddingPx: number) => (arg1: any, arg2: any) => any; }'.
|
|
394
|
-
constraints.standard = null;
|
|
395
|
-
|
|
396
|
-
const onMove = {
|
|
397
|
-
updatePoints: function (coord: Coord, prevCoord: Coord) {
|
|
398
|
-
const actualDelta = kvector.subtract(coord, prevCoord);
|
|
399
|
-
// @ts-expect-error - TS2339 - Property 'state' does not exist on type '{ readonly updatePoints: (coord: Coord, prevCoord: Coord) => void; }'.
|
|
400
|
-
_.each(this.state.points, function (point) {
|
|
401
|
-
point.setCoord(kvector.add(point.coord(), actualDelta));
|
|
402
|
-
});
|
|
403
|
-
},
|
|
404
|
-
} as const;
|
|
405
|
-
|
|
406
|
-
// @ts-expect-error - TS2339 - Property 'standard' does not exist on type '{ readonly updatePoints: (coord: Coord, prevCoord: Coord) => void; }'.
|
|
407
|
-
onMove.standard = null;
|
|
408
|
-
|
|
409
|
-
export default {
|
|
410
|
-
add: add,
|
|
411
|
-
modify: modify,
|
|
412
|
-
draw: draw,
|
|
413
|
-
remove: remove,
|
|
414
|
-
|
|
415
|
-
onMoveStart: {standard: null},
|
|
416
|
-
constraints: constraints,
|
|
417
|
-
onMove: onMove,
|
|
418
|
-
onMoveEnd: {standard: null},
|
|
419
|
-
};
|