@khanacademy/perseus-editor 1.1.0 → 2.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 +21 -0
- package/dist/all-editors.d.ts +2 -0
- package/dist/all-editors.js.flow +8 -0
- package/dist/all-widgets.d.ts +22 -0
- package/dist/all-widgets.js.flow +34 -0
- package/dist/article-editor.d.ts +59 -0
- package/dist/article-editor.js.flow +72 -0
- package/dist/components/blur-input.d.ts +19 -0
- package/dist/components/blur-input.js.flow +25 -0
- package/dist/components/checkbox.d.ts +20 -0
- package/dist/components/checkbox.js.flow +26 -0
- package/dist/components/device-framer.d.ts +15 -0
- package/dist/components/device-framer.js.flow +20 -0
- package/dist/components/drag-target.d.ts +2 -0
- package/dist/components/drag-target.js.flow +8 -0
- package/dist/components/dropdown-option.d.ts +35 -0
- package/dist/components/dropdown-option.js.flow +49 -0
- package/dist/components/form-wrapped-text-field.d.ts +48 -0
- package/dist/components/form-wrapped-text-field.js.flow +48 -0
- package/dist/components/graph-settings.d.ts +2 -0
- package/dist/components/graph-settings.js.flow +8 -0
- package/dist/components/hover-behavior.d.ts +85 -0
- package/dist/components/hover-behavior.js.flow +48 -0
- package/dist/components/json-editor.d.ts +2 -0
- package/dist/components/json-editor.js.flow +8 -0
- package/dist/components/link.d.ts +41 -0
- package/dist/components/link.js.flow +50 -0
- package/dist/components/simple-button.d.ts +16 -0
- package/dist/components/simple-button.js.flow +18 -0
- package/dist/components/sortable.d.ts +2 -0
- package/dist/components/sortable.js.flow +8 -0
- package/dist/components/util.d.ts +1 -0
- package/dist/components/util.js.flow +9 -0
- package/dist/components/viewport-resizer.d.ts +16 -0
- package/dist/components/viewport-resizer.js.flow +22 -0
- package/dist/diffs/__stories__/perseus-diff-wrapper.d.ts +5 -0
- package/dist/diffs/__stories__/perseus-diff-wrapper.js.flow +11 -0
- package/dist/diffs/article-diff.d.ts +50 -0
- package/dist/diffs/article-diff.js.flow +71 -0
- package/dist/diffs/item-diff.d.ts +23 -0
- package/dist/diffs/item-diff.js.flow +41 -0
- package/dist/diffs/renderer-diff.d.ts +22 -0
- package/dist/diffs/renderer-diff.js.flow +25 -0
- package/dist/diffs/split-diff.d.ts +2 -0
- package/dist/diffs/split-diff.js.flow +8 -0
- package/dist/diffs/string-array-diff.d.ts +2 -0
- package/dist/diffs/string-array-diff.js.flow +11 -0
- package/dist/diffs/structured-item-diff.d.ts +25 -0
- package/dist/diffs/structured-item-diff.js.flow +37 -0
- package/dist/diffs/tags-diff.d.ts +21 -0
- package/dist/diffs/tags-diff.js.flow +24 -0
- package/dist/diffs/text-diff.d.ts +15 -0
- package/dist/diffs/text-diff.js.flow +21 -0
- package/dist/diffs/widget-diff-performer.d.ts +2 -0
- package/dist/diffs/widget-diff-performer.js.flow +8 -0
- package/dist/diffs/widget-diff.d.ts +21 -0
- package/dist/diffs/widget-diff.js.flow +31 -0
- package/dist/editor-page.d.ts +57 -0
- package/dist/editor-page.js.flow +73 -0
- package/dist/editor.d.ts +82 -0
- package/dist/editor.js.flow +98 -0
- package/dist/es/index.js +1428 -2587
- package/dist/es/index.js.map +1 -1
- package/dist/hint-editor.d.ts +64 -0
- package/dist/hint-editor.js.flow +87 -0
- package/dist/i18n.d.ts +7 -0
- package/dist/i18n.js.flow +13 -0
- package/dist/iframe-content-renderer.d.ts +22 -0
- package/dist/iframe-content-renderer.js.flow +28 -0
- package/dist/index.d.ts +17 -2
- package/dist/index.js +1492 -2548
- package/dist/index.js.flow +23 -2
- package/dist/index.js.map +1 -1
- package/dist/item-editor.d.ts +36 -0
- package/dist/item-editor.js.flow +46 -0
- package/dist/item-extras-editor.d.ts +17 -0
- package/dist/item-extras-editor.js.flow +23 -0
- package/dist/katex-error-view.d.ts +16 -0
- package/dist/katex-error-view.js.flow +24 -0
- package/dist/multirenderer-editor.d.ts +32 -0
- package/dist/multirenderer-editor.js.flow +46 -0
- package/dist/section-control-button.d.ts +12 -0
- package/dist/section-control-button.js.flow +20 -0
- package/dist/stateful-article-editor.d.ts +10 -0
- package/dist/stateful-article-editor.js.flow +16 -0
- package/dist/stateful-editor-page.d.ts +2 -0
- package/dist/stateful-editor-page.js.flow +8 -0
- package/dist/testing-widgets.d.ts +22 -0
- package/dist/testing-widgets.js.flow +34 -0
- package/dist/util/register-all-widgets-and-editors-for-testing.d.ts +1 -0
- package/dist/util/register-all-widgets-and-editors-for-testing.js.flow +7 -0
- package/dist/widgets/categorizer-editor.d.ts +47 -0
- package/dist/widgets/categorizer-editor.js.flow +61 -0
- package/dist/widgets/cs-program-editor.d.ts +21 -0
- package/dist/widgets/cs-program-editor.js.flow +25 -0
- package/dist/widgets/definition-editor.d.ts +17 -0
- package/dist/widgets/definition-editor.js.flow +23 -0
- package/dist/widgets/dropdown-editor.d.ts +23 -0
- package/dist/widgets/dropdown-editor.js.flow +37 -0
- package/dist/widgets/example-graphie-widget-editor.d.ts +18 -0
- package/dist/widgets/example-graphie-widget-editor.js.flow +25 -0
- package/dist/widgets/example-graphie-widget.d.ts +87 -0
- package/dist/widgets/example-graphie-widget.js.flow +101 -0
- package/dist/widgets/example-widget-editor.d.ts +19 -0
- package/dist/widgets/example-widget-editor.js.flow +26 -0
- package/dist/widgets/example-widget.d.ts +71 -0
- package/dist/widgets/example-widget.js.flow +86 -0
- package/dist/widgets/explanation-editor.d.ts +21 -0
- package/dist/widgets/explanation-editor.js.flow +27 -0
- package/dist/widgets/expression-editor.d.ts +33 -0
- package/dist/widgets/expression-editor.js.flow +41 -0
- package/dist/widgets/graded-group-editor.d.ts +53 -0
- package/dist/widgets/graded-group-editor.js.flow +67 -0
- package/dist/widgets/graded-group-set-editor.d.ts +51 -0
- package/dist/widgets/graded-group-set-editor.js.flow +65 -0
- package/dist/widgets/grapher-editor.d.ts +14 -0
- package/dist/widgets/grapher-editor.js.flow +21 -0
- package/dist/widgets/group-editor.d.ts +49 -0
- package/dist/widgets/group-editor.js.flow +63 -0
- package/dist/widgets/iframe-editor.d.ts +18 -0
- package/dist/widgets/iframe-editor.js.flow +24 -0
- package/dist/widgets/image-editor.d.ts +2 -0
- package/dist/widgets/image-editor.js.flow +8 -0
- package/dist/widgets/input-number-editor.d.ts +47 -0
- package/dist/widgets/input-number-editor.js.flow +77 -0
- package/dist/widgets/interaction/constraint-editor.d.ts +26 -0
- package/dist/widgets/interaction/constraint-editor.js.flow +35 -0
- package/dist/widgets/interaction-editor.d.ts +28 -0
- package/dist/widgets/interaction-editor.js.flow +36 -0
- package/dist/widgets/interactive-graph-editor.d.ts +2 -0
- package/dist/widgets/interactive-graph-editor.js.flow +8 -0
- package/dist/widgets/label-image/answer-choices.d.ts +13 -0
- package/dist/widgets/label-image/answer-choices.js.flow +16 -0
- package/dist/widgets/label-image/behavior.d.ts +14 -0
- package/dist/widgets/label-image/behavior.js.flow +17 -0
- package/dist/widgets/label-image/marker.d.ts +30 -0
- package/dist/widgets/label-image/marker.js.flow +34 -0
- package/dist/widgets/label-image/question-markers.d.ts +22 -0
- package/dist/widgets/label-image/question-markers.js.flow +25 -0
- package/dist/widgets/label-image/select-image.d.ts +10 -0
- package/dist/widgets/label-image/select-image.js.flow +13 -0
- package/dist/widgets/label-image-editor.d.ts +45 -0
- package/dist/widgets/label-image-editor.js.flow +44 -0
- package/dist/widgets/lights-puzzle-editor.d.ts +24 -0
- package/dist/widgets/lights-puzzle-editor.js.flow +34 -0
- package/dist/widgets/matcher-editor.d.ts +19 -0
- package/dist/widgets/matcher-editor.js.flow +28 -0
- package/dist/widgets/matrix-editor.d.ts +20 -0
- package/dist/widgets/matrix-editor.js.flow +26 -0
- package/dist/widgets/measurer-editor.d.ts +32 -0
- package/dist/widgets/measurer-editor.js.flow +42 -0
- package/dist/widgets/molecule-editor.d.ts +17 -0
- package/dist/widgets/molecule-editor.js.flow +23 -0
- package/dist/widgets/number-line-editor.d.ts +36 -0
- package/dist/widgets/number-line-editor.js.flow +45 -0
- package/dist/widgets/numeric-input-editor.d.ts +2 -0
- package/dist/widgets/numeric-input-editor.js.flow +8 -0
- package/dist/widgets/orderer-editor.d.ts +20 -0
- package/dist/widgets/orderer-editor.js.flow +30 -0
- package/dist/widgets/passage-editor.d.ts +18 -0
- package/dist/widgets/passage-editor.js.flow +24 -0
- package/dist/widgets/passage-ref-editor.d.ts +11 -0
- package/dist/widgets/passage-ref-editor.js.flow +17 -0
- package/dist/widgets/passage-ref-target-editor.d.ts +16 -0
- package/dist/widgets/passage-ref-target-editor.js.flow +22 -0
- package/dist/widgets/plotter-editor.d.ts +45 -0
- package/dist/widgets/plotter-editor.js.flow +53 -0
- package/dist/widgets/radio/editor.d.ts +64 -0
- package/dist/widgets/radio/editor.js.flow +80 -0
- package/dist/widgets/reaction-diagram-editor.d.ts +20 -0
- package/dist/widgets/reaction-diagram-editor.js.flow +26 -0
- package/dist/widgets/sequence-editor.d.ts +56 -0
- package/dist/widgets/sequence-editor.js.flow +72 -0
- package/dist/widgets/simple-markdown-tester-editor.d.ts +14 -0
- package/dist/widgets/simple-markdown-tester-editor.js.flow +23 -0
- package/dist/widgets/simple-markdown-tester.d.ts +52 -0
- package/dist/widgets/simple-markdown-tester.js.flow +61 -0
- package/dist/widgets/simulator-editor.d.ts +20 -0
- package/dist/widgets/simulator-editor.js.flow +26 -0
- package/dist/widgets/sorter-editor.d.ts +16 -0
- package/dist/widgets/sorter-editor.js.flow +22 -0
- package/dist/widgets/table-editor.d.ts +18 -0
- package/dist/widgets/table-editor.js.flow +24 -0
- package/dist/widgets/transformer-editor.d.ts +11 -0
- package/dist/widgets/transformer-editor.js.flow +17 -0
- package/dist/widgets/unit-editor.d.ts +33 -0
- package/dist/widgets/unit-editor.js.flow +41 -0
- package/dist/widgets/video-editor.d.ts +19 -0
- package/dist/widgets/video-editor.js.flow +25 -0
- package/package.json +6 -5
- package/src/__stories__/{editor.stories.js → editor.stories.tsx} +4 -5
- package/src/__stories__/{section-control-button.stories.jsx → section-control-button.stories.tsx} +10 -11
- package/src/__testdata__/{input-number_testdata.js → input-number.testdata.ts} +2 -3
- package/src/__tests__/{editor_test.jsx → editor.test.tsx} +4 -7
- package/src/__tests__/{i18n_test.jsx → i18n.test.ts} +5 -5
- package/src/__tests__/{traversal_test.jsx → traversal.test.ts} +9 -10
- package/src/{all-editors_test.js → all-editors.test.ts} +1 -2
- package/src/all-editors.ts +83 -0
- package/src/all-widgets.ts +7 -0
- package/src/{article-editor.jsx → article-editor.tsx} +52 -42
- package/src/components/__stories__/{blur-input.stories.jsx → blur-input.stories.tsx} +2 -4
- package/src/components/{blur-input.jsx → blur-input.tsx} +12 -13
- package/src/components/{checkbox.jsx → checkbox.tsx} +18 -19
- package/src/components/{device-framer.jsx → device-framer.tsx} +4 -5
- package/src/components/{drag-target.jsx → drag-target.tsx} +0 -1
- package/src/components/{dropdown-option.jsx → dropdown-option.tsx} +40 -40
- package/src/components/{form-wrapped-text-field.jsx → form-wrapped-text-field.tsx} +47 -53
- package/src/components/{graph-settings.jsx → graph-settings.tsx} +4 -8
- package/src/components/{hover-behavior.jsx → hover-behavior.ts} +32 -33
- package/src/components/{json-editor.jsx → json-editor.tsx} +4 -3
- package/src/components/{link.jsx → link.ts} +33 -33
- package/src/components/{simple-button.jsx → simple-button.tsx} +3 -4
- package/src/components/{sortable.jsx → sortable.tsx} +3 -3
- package/src/components/{util.js → util.ts} +1 -2
- package/src/components/{viewport-resizer.jsx → viewport-resizer.tsx} +5 -6
- package/src/diffs/__stories__/{perseus-diff-wrapper.jsx → perseus-diff-wrapper.tsx} +3 -2
- package/src/diffs/__stories__/{structured-item-diff.stories.jsx → structured-item-diff.stories.tsx} +27 -22
- package/src/diffs/__stories__/{tags-diff.stories.jsx → tags-diff.stories.tsx} +12 -14
- package/src/diffs/__stories__/{text-diff.stories.jsx → text-diff.stories.tsx} +12 -14
- package/src/diffs/__tests__/{split-diff_test.js → split-diff.test.ts} +1 -2
- package/src/diffs/__tests__/{string-array-diff_test.js → string-array-diff.test.ts} +1 -2
- package/src/diffs/__tests__/{structured-item-diff_test.js → structured-item-diff.test.ts} +15 -14
- package/src/diffs/__tests__/{widget-diff-performer_test.js → widget-diff-performer.test.ts} +1 -2
- package/src/diffs/{article-diff.jsx → article-diff.tsx} +5 -6
- package/src/diffs/{item-diff.jsx → item-diff.tsx} +4 -5
- package/src/diffs/{renderer-diff.jsx → renderer-diff.tsx} +22 -28
- package/src/diffs/{split-diff.jsx → split-diff.ts} +4 -3
- package/src/diffs/{string-array-diff.jsx → string-array-diff.ts} +8 -9
- package/src/diffs/{structured-item-diff.jsx → structured-item-diff.tsx} +32 -27
- package/src/diffs/{tags-diff.jsx → tags-diff.tsx} +15 -16
- package/src/diffs/{text-diff.jsx → text-diff.tsx} +13 -13
- package/src/diffs/{widget-diff-performer.jsx → widget-diff-performer.ts} +3 -8
- package/src/diffs/{widget-diff.jsx → widget-diff.tsx} +15 -14
- package/src/{editor-page.jsx → editor-page.tsx} +52 -60
- package/src/{editor.jsx → editor.tsx} +315 -277
- package/src/{hint-editor.jsx → hint-editor.tsx} +105 -79
- package/src/{i18n.jsx → i18n.ts} +9 -6
- package/src/{iframe-content-renderer.jsx → iframe-content-renderer.tsx} +23 -17
- package/src/{index.js → index.ts} +15 -16
- package/src/{item-editor.jsx → item-editor.tsx} +35 -30
- package/src/{item-extras-editor.jsx → item-extras-editor.tsx} +3 -4
- package/src/{katex-error-view.jsx → katex-error-view.tsx} +4 -5
- package/src/{multirenderer-editor.jsx → multirenderer-editor.tsx} +132 -127
- package/src/{section-control-button.jsx → section-control-button.tsx} +10 -9
- package/src/{stateful-article-editor.jsx → stateful-article-editor.tsx} +2 -5
- package/src/{stateful-editor-page.jsx → stateful-editor-page.tsx} +1 -3
- package/src/{testing-widgets.js → testing-widgets.ts} +5 -6
- package/src/util/{register-all-widgets-and-editors-for-testing_test.js → register-all-widgets-and-editors-for-testing.test.ts} +1 -2
- package/src/util/{register-all-widgets-and-editors-for-testing.js → register-all-widgets-and-editors-for-testing.ts} +2 -3
- package/src/widgets/__stories__/{label-image-editor.stories.jsx → label-image-editor.stories.tsx} +22 -18
- package/src/widgets/__stories__/{radio-editor.stories.jsx → radio-editor.stories.tsx} +15 -10
- package/src/widgets/{categorizer-editor.jsx → categorizer-editor.tsx} +8 -6
- package/src/widgets/{cs-program-editor.jsx → cs-program-editor.tsx} +17 -17
- package/src/widgets/{definition-editor.jsx → definition-editor.tsx} +9 -8
- package/src/widgets/{dropdown-editor.jsx → dropdown-editor.tsx} +27 -19
- package/src/widgets/{example-graphie-widget-editor.jsx → example-graphie-widget-editor.tsx} +8 -8
- package/src/widgets/{example-graphie-widget.jsx → example-graphie-widget.tsx} +14 -17
- package/src/widgets/{example-widget-editor.jsx → example-widget-editor.tsx} +10 -7
- package/src/widgets/{example-widget.jsx → example-widget.tsx} +14 -12
- package/src/widgets/{explanation-editor.jsx → explanation-editor.tsx} +12 -10
- package/src/widgets/{expression-editor.jsx → expression-editor.tsx} +36 -26
- package/src/widgets/{graded-group-editor.jsx → graded-group-editor.tsx} +18 -10
- package/src/widgets/{graded-group-set-editor.jsx → graded-group-set-editor.tsx} +15 -12
- package/src/widgets/{grapher-editor.jsx → grapher-editor.tsx} +10 -9
- package/src/widgets/{group-editor.jsx → group-editor.tsx} +11 -9
- package/src/widgets/{iframe-editor.jsx → iframe-editor.tsx} +16 -13
- package/src/widgets/{image-editor.jsx → image-editor.tsx} +4 -7
- package/src/widgets/{input-number-editor.jsx → input-number-editor.tsx} +61 -47
- package/src/widgets/interaction/{constraint-editor.jsx → constraint-editor.tsx} +21 -24
- package/src/widgets/{interaction-editor.jsx → interaction-editor.tsx} +160 -61
- package/src/widgets/{interactive-graph-editor.jsx → interactive-graph-editor.tsx} +13 -10
- package/src/widgets/label-image/__stories__/{answer-choices.stories.jsx → answer-choices.stories.tsx} +22 -17
- package/src/widgets/label-image/__stories__/{behavior.stories.jsx → behavior.stories.tsx} +9 -10
- package/src/widgets/label-image/__stories__/{marker.stories.jsx → marker.stories.tsx} +11 -12
- package/src/widgets/label-image/__stories__/{question-markers.stories.jsx → question-markers.stories.tsx} +17 -16
- package/src/widgets/label-image/__stories__/{select-image.stories.jsx → select-image.stories.tsx} +12 -13
- package/src/widgets/label-image/{answer-choices.jsx → answer-choices.tsx} +18 -18
- package/src/widgets/label-image/{behavior.jsx → behavior.tsx} +9 -11
- package/src/widgets/label-image/{marker.jsx → marker.tsx} +17 -19
- package/src/widgets/label-image/{question-markers.jsx → question-markers.tsx} +16 -21
- package/src/widgets/label-image/{select-image.jsx → select-image.tsx} +5 -7
- package/src/widgets/{label-image-editor.jsx → label-image-editor.tsx} +38 -44
- package/src/widgets/{lights-puzzle-editor.jsx → lights-puzzle-editor.tsx} +34 -24
- package/src/widgets/{matcher-editor.jsx → matcher-editor.tsx} +9 -7
- package/src/widgets/{matrix-editor.jsx → matrix-editor.tsx} +10 -9
- package/src/widgets/{measurer-editor.jsx → measurer-editor.tsx} +21 -14
- package/src/widgets/{molecule-editor.jsx → molecule-editor.tsx} +9 -8
- package/src/widgets/{number-line-editor.jsx → number-line-editor.tsx} +19 -17
- package/src/widgets/{numeric-input-editor.jsx → numeric-input-editor.tsx} +10 -10
- package/src/widgets/{orderer-editor.jsx → orderer-editor.tsx} +17 -12
- package/src/widgets/{passage-editor.jsx → passage-editor.tsx} +9 -7
- package/src/widgets/{passage-ref-editor.jsx → passage-ref-editor.tsx} +8 -6
- package/src/widgets/{passage-ref-target-editor.jsx → passage-ref-target-editor.tsx} +9 -7
- package/src/widgets/{plotter-editor.jsx → plotter-editor.tsx} +34 -33
- package/src/widgets/radio/{editor.jsx → editor.tsx} +22 -21
- package/src/widgets/{reaction-diagram-editor.jsx → reaction-diagram-editor.tsx} +14 -10
- package/src/widgets/{sequence-editor.jsx → sequence-editor.tsx} +13 -13
- package/src/widgets/{simple-markdown-tester-editor.jsx → simple-markdown-tester-editor.tsx} +11 -9
- package/src/widgets/{simple-markdown-tester.jsx → simple-markdown-tester.tsx} +8 -7
- package/src/widgets/{simulator-editor.jsx → simulator-editor.tsx} +10 -8
- package/src/widgets/{sorter-editor.jsx → sorter-editor.tsx} +8 -6
- package/src/widgets/{table-editor.jsx → table-editor.tsx} +11 -10
- package/src/widgets/{transformer-editor.jsx → transformer-editor.tsx} +37 -35
- package/src/widgets/{unit-editor.jsx → unit-editor.tsx} +31 -25
- package/src/widgets/{video-editor.jsx → video-editor.tsx} +8 -9
- package/tsconfig.json +22 -0
- package/tsconfig.tsbuildinfo +1 -0
- package/src/all-editors.js +0 -85
- package/src/all-widgets.js +0 -10
- /package/dist/{strings.js → strings} +0 -0
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import CategorizerEditor from "./widgets/categorizer-editor";
|
|
2
|
+
import CSProgramEditor from "./widgets/cs-program-editor";
|
|
3
|
+
import DefinitionEditor from "./widgets/definition-editor";
|
|
4
|
+
import DropdownEditor from "./widgets/dropdown-editor";
|
|
5
|
+
import ExampleGraphieWidgetEditor from "./widgets/example-graphie-widget-editor";
|
|
6
|
+
import ExampleWidgetEditor from "./widgets/example-widget-editor";
|
|
7
|
+
import ExplanationEditor from "./widgets/explanation-editor";
|
|
8
|
+
import ExpressionEditor from "./widgets/expression-editor";
|
|
9
|
+
import GradedGroupEditor from "./widgets/graded-group-editor";
|
|
10
|
+
import GradedGroupSetEditor from "./widgets/graded-group-set-editor";
|
|
11
|
+
import GrapherEditor from "./widgets/grapher-editor";
|
|
12
|
+
import GroupEditor from "./widgets/group-editor";
|
|
13
|
+
import IframeEditor from "./widgets/iframe-editor";
|
|
14
|
+
import ImageEditor from "./widgets/image-editor";
|
|
15
|
+
import InputNumberEditor from "./widgets/input-number-editor";
|
|
16
|
+
import InteractionEditor from "./widgets/interaction-editor";
|
|
17
|
+
import InteractiveGraphEditor from "./widgets/interactive-graph-editor";
|
|
18
|
+
import LabelImageEditor from "./widgets/label-image-editor";
|
|
19
|
+
import LightsPuzzleEditor from "./widgets/lights-puzzle-editor";
|
|
20
|
+
import MatcherEditor from "./widgets/matcher-editor";
|
|
21
|
+
import MatrixEditor from "./widgets/matrix-editor";
|
|
22
|
+
import MeasurerEditor from "./widgets/measurer-editor";
|
|
23
|
+
import MoleculeEditor from "./widgets/molecule-editor";
|
|
24
|
+
import NumberLineEditor from "./widgets/number-line-editor";
|
|
25
|
+
import NumericInputEditor from "./widgets/numeric-input-editor";
|
|
26
|
+
import OrdererEditor from "./widgets/orderer-editor";
|
|
27
|
+
import PassageEditor from "./widgets/passage-editor";
|
|
28
|
+
import PassageRefEditor from "./widgets/passage-ref-editor";
|
|
29
|
+
import PassageRefTargetEditor from "./widgets/passage-ref-target-editor";
|
|
30
|
+
import PlotterEditor from "./widgets/plotter-editor";
|
|
31
|
+
import RadioEditor from "./widgets/radio/editor";
|
|
32
|
+
import ReactionDiagramEditor from "./widgets/reaction-diagram-editor";
|
|
33
|
+
import SequenceEditor from "./widgets/sequence-editor";
|
|
34
|
+
import SimpleMarkdownTesterEditor from "./widgets/simple-markdown-tester-editor";
|
|
35
|
+
import SimulatorEditor from "./widgets/simulator-editor";
|
|
36
|
+
import SorterEditor from "./widgets/sorter-editor";
|
|
37
|
+
import TableEditor from "./widgets/table-editor";
|
|
38
|
+
import TransformerEditor from "./widgets/transformer-editor";
|
|
39
|
+
import UnitEditor from "./widgets/unit-editor";
|
|
40
|
+
import VideoEditor from "./widgets/video-editor";
|
|
41
|
+
|
|
42
|
+
export default [
|
|
43
|
+
CategorizerEditor,
|
|
44
|
+
CSProgramEditor,
|
|
45
|
+
DefinitionEditor,
|
|
46
|
+
DropdownEditor,
|
|
47
|
+
ExampleGraphieWidgetEditor,
|
|
48
|
+
ExampleWidgetEditor,
|
|
49
|
+
ExplanationEditor,
|
|
50
|
+
ExpressionEditor,
|
|
51
|
+
GradedGroupEditor,
|
|
52
|
+
GradedGroupSetEditor,
|
|
53
|
+
GrapherEditor,
|
|
54
|
+
GroupEditor,
|
|
55
|
+
IframeEditor,
|
|
56
|
+
ImageEditor,
|
|
57
|
+
InputNumberEditor,
|
|
58
|
+
InteractionEditor,
|
|
59
|
+
InteractiveGraphEditor,
|
|
60
|
+
LabelImageEditor,
|
|
61
|
+
LightsPuzzleEditor,
|
|
62
|
+
MatcherEditor,
|
|
63
|
+
MatrixEditor,
|
|
64
|
+
MeasurerEditor,
|
|
65
|
+
MoleculeEditor,
|
|
66
|
+
NumberLineEditor,
|
|
67
|
+
NumericInputEditor,
|
|
68
|
+
OrdererEditor,
|
|
69
|
+
PassageEditor,
|
|
70
|
+
PassageRefEditor,
|
|
71
|
+
PassageRefTargetEditor,
|
|
72
|
+
PlotterEditor,
|
|
73
|
+
ReactionDiagramEditor,
|
|
74
|
+
SequenceEditor,
|
|
75
|
+
SimpleMarkdownTesterEditor,
|
|
76
|
+
SimulatorEditor,
|
|
77
|
+
SorterEditor,
|
|
78
|
+
TableEditor,
|
|
79
|
+
TransformerEditor,
|
|
80
|
+
UnitEditor,
|
|
81
|
+
VideoEditor,
|
|
82
|
+
RadioEditor,
|
|
83
|
+
];
|
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
/* eslint-disable jsx-a11y/anchor-is-valid */
|
|
2
|
-
// @flow
|
|
3
|
-
|
|
4
2
|
/**
|
|
5
3
|
* An article editor. Articles are long-form pieces of content, composed of
|
|
6
4
|
* multiple (Renderer) sections concatenated together.
|
|
@@ -18,47 +16,47 @@ import {
|
|
|
18
16
|
import * as React from "react";
|
|
19
17
|
import _ from "underscore";
|
|
20
18
|
|
|
21
|
-
import DeviceFramer from "./components/device-framer
|
|
22
|
-
import JsonEditor from "./components/json-editor
|
|
23
|
-
import Editor from "./editor
|
|
24
|
-
import IframeContentRenderer from "./iframe-content-renderer
|
|
25
|
-
import SectionControlButton from "./section-control-button
|
|
19
|
+
import DeviceFramer from "./components/device-framer";
|
|
20
|
+
import JsonEditor from "./components/json-editor";
|
|
21
|
+
import Editor from "./editor";
|
|
22
|
+
import IframeContentRenderer from "./iframe-content-renderer";
|
|
23
|
+
import SectionControlButton from "./section-control-button";
|
|
26
24
|
|
|
27
25
|
import type {APIOptions} from "@khanacademy/perseus";
|
|
28
26
|
|
|
29
27
|
const {HUD, InlineIcon} = components;
|
|
30
28
|
const {iconCircleArrowDown, iconCircleArrowUp, iconPlus, iconTrash} = icons;
|
|
31
29
|
|
|
32
|
-
type RendererProps = {
|
|
33
|
-
content?: string
|
|
34
|
-
widgets?:
|
|
35
|
-
images?:
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
type JsonType = RendererProps |
|
|
39
|
-
type DefaultProps = {
|
|
40
|
-
contentPaths?:
|
|
41
|
-
json: JsonType
|
|
42
|
-
mode: "diff" | "edit" | "json" | "preview"
|
|
43
|
-
screen: "phone" | "tablet" | "desktop"
|
|
44
|
-
sectionImageUploadGenerator: (
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
30
|
+
type RendererProps = {
|
|
31
|
+
content?: string;
|
|
32
|
+
widgets?: any;
|
|
33
|
+
images?: any;
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
type JsonType = RendererProps | ReadonlyArray<RendererProps>;
|
|
37
|
+
type DefaultProps = {
|
|
38
|
+
contentPaths?: ReadonlyArray<string>;
|
|
39
|
+
json: JsonType;
|
|
40
|
+
mode: "diff" | "edit" | "json" | "preview";
|
|
41
|
+
screen: "phone" | "tablet" | "desktop";
|
|
42
|
+
sectionImageUploadGenerator: (
|
|
43
|
+
i: number,
|
|
44
|
+
) => React.ReactElement<React.ComponentProps<"span">>;
|
|
45
|
+
useNewStyles: boolean;
|
|
46
|
+
};
|
|
47
|
+
type PerseusArticleEditorProps = DefaultProps & {
|
|
48
|
+
apiOptions?: APIOptions;
|
|
49
|
+
imageUploader?: (arg1: string, arg2: (arg1: string) => unknown) => unknown;
|
|
51
50
|
// URL of the route to show on initial load of the preview frames.
|
|
52
|
-
previewURL: string
|
|
53
|
-
|
|
54
|
-
|};
|
|
51
|
+
previewURL: string;
|
|
52
|
+
} & Changeable.ChangeableProps;
|
|
55
53
|
|
|
56
|
-
type State = {
|
|
57
|
-
highlightLint: boolean
|
|
58
|
-
|
|
54
|
+
type State = {
|
|
55
|
+
highlightLint: boolean;
|
|
56
|
+
};
|
|
59
57
|
export default class ArticleEditor extends React.Component<
|
|
60
58
|
PerseusArticleEditorProps,
|
|
61
|
-
State
|
|
59
|
+
State
|
|
62
60
|
> {
|
|
63
61
|
static defaultProps: DefaultProps = {
|
|
64
62
|
contentPaths: [],
|
|
@@ -85,6 +83,7 @@ export default class ArticleEditor extends React.Component<
|
|
|
85
83
|
_updatePreviewFrames() {
|
|
86
84
|
if (this.props.mode === "preview") {
|
|
87
85
|
// eslint-disable-next-line react/no-string-refs
|
|
86
|
+
// @ts-expect-error [FEI-5003] - TS2339 - Property 'sendNewData' does not exist on type 'ReactInstance'.
|
|
88
87
|
this.refs["frame-all"].sendNewData({
|
|
89
88
|
type: "article-all",
|
|
90
89
|
data: this._sections().map((section, i) => {
|
|
@@ -94,6 +93,7 @@ export default class ArticleEditor extends React.Component<
|
|
|
94
93
|
} else if (this.props.mode === "edit") {
|
|
95
94
|
this._sections().forEach((section, i) => {
|
|
96
95
|
// eslint-disable-next-line react/no-string-refs
|
|
96
|
+
// @ts-expect-error [FEI-5003] - TS2339 - Property 'sendNewData' does not exist on type 'ReactInstance'.
|
|
97
97
|
this.refs["frame-" + i].sendNewData({
|
|
98
98
|
type: "article",
|
|
99
99
|
data: this._apiOptionsForSection(section, i),
|
|
@@ -122,17 +122,18 @@ export default class ArticleEditor extends React.Component<
|
|
|
122
122
|
highlightLint: this.state.highlightLint,
|
|
123
123
|
paths: this.props.contentPaths,
|
|
124
124
|
},
|
|
125
|
+
// @ts-expect-error [FEI-5003] - TS2339 - Property 'getSaveWarnings' does not exist on type 'ReactInstance'.
|
|
125
126
|
legacyPerseusLint: editor ? editor.getSaveWarnings() : [],
|
|
126
127
|
};
|
|
127
128
|
}
|
|
128
129
|
|
|
129
|
-
_sections():
|
|
130
|
+
_sections(): ReadonlyArray<RendererProps> {
|
|
130
131
|
return Array.isArray(this.props.json)
|
|
131
132
|
? this.props.json
|
|
132
133
|
: [this.props.json];
|
|
133
134
|
}
|
|
134
135
|
|
|
135
|
-
_renderEditor(): React
|
|
136
|
+
_renderEditor(): React.ReactElement<React.ComponentProps<"div">> {
|
|
136
137
|
const {imageUploader, sectionImageUploadGenerator} = this.props;
|
|
137
138
|
|
|
138
139
|
const apiOptions = {
|
|
@@ -142,7 +143,7 @@ export default class ArticleEditor extends React.Component<
|
|
|
142
143
|
// Alignment options are always available in article editors
|
|
143
144
|
showAlignmentOptions: true,
|
|
144
145
|
isArticle: true,
|
|
145
|
-
};
|
|
146
|
+
} as const;
|
|
146
147
|
|
|
147
148
|
const {KatexProvider} = Dependencies.getDependencies();
|
|
148
149
|
|
|
@@ -240,7 +241,7 @@ export default class ArticleEditor extends React.Component<
|
|
|
240
241
|
/* eslint-enable max-len */
|
|
241
242
|
}
|
|
242
243
|
|
|
243
|
-
_renderAddSection(): React
|
|
244
|
+
_renderAddSection(): React.ReactElement<React.ComponentProps<"div">> {
|
|
244
245
|
return (
|
|
245
246
|
<div className="perseus-editor-row">
|
|
246
247
|
<div className="perseus-editor-left-cell">
|
|
@@ -260,7 +261,7 @@ export default class ArticleEditor extends React.Component<
|
|
|
260
261
|
);
|
|
261
262
|
}
|
|
262
263
|
|
|
263
|
-
_renderLinterHUD(): React
|
|
264
|
+
_renderLinterHUD(): React.ReactElement<any> {
|
|
264
265
|
return (
|
|
265
266
|
<HUD
|
|
266
267
|
message="Style warnings"
|
|
@@ -277,7 +278,7 @@ export default class ArticleEditor extends React.Component<
|
|
|
277
278
|
_renderIframePreview(
|
|
278
279
|
i: number | string,
|
|
279
280
|
nochrome: boolean,
|
|
280
|
-
): React
|
|
281
|
+
): React.ReactElement<any> {
|
|
281
282
|
const isMobile =
|
|
282
283
|
this.props.screen === "phone" || this.props.screen === "tablet";
|
|
283
284
|
|
|
@@ -295,7 +296,7 @@ export default class ArticleEditor extends React.Component<
|
|
|
295
296
|
);
|
|
296
297
|
}
|
|
297
298
|
|
|
298
|
-
_renderPreviewMode(): React
|
|
299
|
+
_renderPreviewMode(): React.ReactElement<React.ComponentProps<"div">> {
|
|
299
300
|
return (
|
|
300
301
|
<div className="standalone-preview">
|
|
301
302
|
{this._renderIframePreview("all", false)}
|
|
@@ -312,6 +313,7 @@ export default class ArticleEditor extends React.Component<
|
|
|
312
313
|
newProps,
|
|
313
314
|
) => {
|
|
314
315
|
const sections = _.clone(this._sections());
|
|
316
|
+
// @ts-expect-error [FEI-5003] - TS2542 - Index signature in type 'readonly RendererProps[]' only permits reading.
|
|
315
317
|
sections[i] = _.extend({}, sections[i], newProps);
|
|
316
318
|
this.props.onChange({json: sections});
|
|
317
319
|
};
|
|
@@ -322,7 +324,9 @@ export default class ArticleEditor extends React.Component<
|
|
|
322
324
|
}
|
|
323
325
|
const sections = _.clone(this._sections());
|
|
324
326
|
const section = sections[i];
|
|
327
|
+
// @ts-expect-error [FEI-5003] - TS2551 - Property 'splice' does not exist on type 'readonly RendererProps[]'. Did you mean 'slice'?
|
|
325
328
|
sections.splice(i, 1);
|
|
329
|
+
// @ts-expect-error [FEI-5003] - TS2551 - Property 'splice' does not exist on type 'readonly RendererProps[]'. Did you mean 'slice'?
|
|
326
330
|
sections.splice(i - 1, 0, section);
|
|
327
331
|
this.props.onChange({
|
|
328
332
|
json: sections,
|
|
@@ -335,7 +339,9 @@ export default class ArticleEditor extends React.Component<
|
|
|
335
339
|
return;
|
|
336
340
|
}
|
|
337
341
|
const section = sections[i];
|
|
342
|
+
// @ts-expect-error [FEI-5003] - TS2551 - Property 'splice' does not exist on type 'readonly RendererProps[]'. Did you mean 'slice'?
|
|
338
343
|
sections.splice(i, 1);
|
|
344
|
+
// @ts-expect-error [FEI-5003] - TS2551 - Property 'splice' does not exist on type 'readonly RendererProps[]'. Did you mean 'slice'?
|
|
339
345
|
sections.splice(i + 1, 0, section);
|
|
340
346
|
this.props.onChange({
|
|
341
347
|
json: sections,
|
|
@@ -358,6 +364,7 @@ export default class ArticleEditor extends React.Component<
|
|
|
358
364
|
widgets: sections[i].widgets,
|
|
359
365
|
}
|
|
360
366
|
: {};
|
|
367
|
+
// @ts-expect-error [FEI-5003] - TS2339 - Property 'splice' does not exist on type 'JsonType'.
|
|
361
368
|
sections.splice(i + 1, 0, newSection);
|
|
362
369
|
this.props.onChange({
|
|
363
370
|
json: sections,
|
|
@@ -366,6 +373,7 @@ export default class ArticleEditor extends React.Component<
|
|
|
366
373
|
|
|
367
374
|
_handleRemoveSection(i: number) {
|
|
368
375
|
const sections = _.clone(this._sections());
|
|
376
|
+
// @ts-expect-error [FEI-5003] - TS2551 - Property 'splice' does not exist on type 'readonly RendererProps[]'. Did you mean 'slice'?
|
|
369
377
|
sections.splice(i, 1);
|
|
370
378
|
this.props.onChange({
|
|
371
379
|
json: sections,
|
|
@@ -376,6 +384,7 @@ export default class ArticleEditor extends React.Component<
|
|
|
376
384
|
if (this.props.mode === "edit") {
|
|
377
385
|
return this._sections().map((section, i) => {
|
|
378
386
|
// eslint-disable-next-line react/no-string-refs
|
|
387
|
+
// @ts-expect-error [FEI-5003] - TS2339 - Property 'serialize' does not exist on type 'ReactInstance'.
|
|
379
388
|
return this.refs["editor" + i].serialize();
|
|
380
389
|
});
|
|
381
390
|
}
|
|
@@ -394,7 +403,7 @@ export default class ArticleEditor extends React.Component<
|
|
|
394
403
|
*
|
|
395
404
|
* This function can currently only be called in edit mode.
|
|
396
405
|
*/
|
|
397
|
-
getSaveWarnings():
|
|
406
|
+
getSaveWarnings(): ReadonlyArray<RendererProps> {
|
|
398
407
|
if (this.props.mode !== "edit") {
|
|
399
408
|
// TODO(joshuan): We should be able to get save warnings in
|
|
400
409
|
// preview mode.
|
|
@@ -406,11 +415,12 @@ export default class ArticleEditor extends React.Component<
|
|
|
406
415
|
|
|
407
416
|
return this._sections().map((section, i) => {
|
|
408
417
|
// eslint-disable-next-line react/no-string-refs
|
|
418
|
+
// @ts-expect-error [FEI-5003] - TS2339 - Property 'getSaveWarnings' does not exist on type 'ReactInstance'.
|
|
409
419
|
return this.refs["editor" + i].getSaveWarnings();
|
|
410
420
|
});
|
|
411
421
|
}
|
|
412
422
|
|
|
413
|
-
render(): React.
|
|
423
|
+
render(): React.ReactNode {
|
|
414
424
|
return (
|
|
415
425
|
<div className="framework-perseus perseus-article-editor">
|
|
416
426
|
{this.props.mode === "edit" && this._renderEditor()}
|
|
@@ -1,15 +1,13 @@
|
|
|
1
|
-
// @flow
|
|
2
|
-
|
|
3
1
|
import {action} from "@storybook/addon-actions";
|
|
4
2
|
import * as React from "react";
|
|
5
3
|
|
|
6
|
-
import BlurInput from "../blur-input
|
|
4
|
+
import BlurInput from "../blur-input";
|
|
7
5
|
|
|
8
6
|
export default {
|
|
9
7
|
title: "Perseus/Editor/Components/Blur Input",
|
|
10
8
|
};
|
|
11
9
|
|
|
12
|
-
export const Default = (): React.
|
|
10
|
+
export const Default = (): React.ReactElement => {
|
|
13
11
|
const [value, setValue] = React.useState("");
|
|
14
12
|
|
|
15
13
|
return (
|
|
@@ -1,18 +1,17 @@
|
|
|
1
|
-
// @flow
|
|
2
1
|
import * as React from "react";
|
|
3
2
|
|
|
4
3
|
import type {CSSProperties} from "aphrodite";
|
|
5
4
|
|
|
6
|
-
type Props = {
|
|
7
|
-
value: string
|
|
8
|
-
onChange: (string) => void
|
|
9
|
-
className?: string
|
|
10
|
-
style?: CSSProperties
|
|
11
|
-
|
|
5
|
+
type Props = {
|
|
6
|
+
value: string;
|
|
7
|
+
onChange: (arg1: string) => void;
|
|
8
|
+
className?: string;
|
|
9
|
+
style?: CSSProperties;
|
|
10
|
+
};
|
|
12
11
|
|
|
13
|
-
type State = {
|
|
14
|
-
value: string
|
|
15
|
-
|
|
12
|
+
type State = {
|
|
13
|
+
value: string;
|
|
14
|
+
};
|
|
16
15
|
|
|
17
16
|
/* You know when you want to propagate input to a parent...
|
|
18
17
|
* but then that parent does something with the input...
|
|
@@ -37,15 +36,15 @@ class BlurInput extends React.Component<Props, State> {
|
|
|
37
36
|
this.setState({value: nextProps.value});
|
|
38
37
|
}
|
|
39
38
|
|
|
40
|
-
handleChange: (e:
|
|
39
|
+
handleChange: (e: any) => void = (e) => {
|
|
41
40
|
this.setState({value: e.target.value});
|
|
42
41
|
};
|
|
43
42
|
|
|
44
|
-
handleBlur: (e:
|
|
43
|
+
handleBlur: (e: any) => void = (e) => {
|
|
45
44
|
this.props.onChange(e.target.value);
|
|
46
45
|
};
|
|
47
46
|
|
|
48
|
-
render(): React.
|
|
47
|
+
render(): React.ReactNode {
|
|
49
48
|
return (
|
|
50
49
|
<input
|
|
51
50
|
className={this.props.className}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
// @flow
|
|
2
1
|
/**
|
|
3
2
|
* Reusable checkbox component.
|
|
4
3
|
**/
|
|
@@ -6,50 +5,49 @@ import {globalStyles} from "@khanacademy/perseus";
|
|
|
6
5
|
import {css, StyleSheet} from "aphrodite";
|
|
7
6
|
import * as React from "react";
|
|
8
7
|
|
|
9
|
-
import HoverBehavior from "./hover-behavior
|
|
8
|
+
import HoverBehavior from "./hover-behavior";
|
|
10
9
|
|
|
11
10
|
const {borderRadius, colors} = globalStyles;
|
|
12
11
|
|
|
13
12
|
export type CheckboxProps = {
|
|
14
13
|
// Whether or not the checkbox is checked. The parent responsible for
|
|
15
14
|
// responding to onChange events and updating this prop appropriately.
|
|
16
|
-
checked: boolean
|
|
15
|
+
checked: boolean;
|
|
17
16
|
// When disable the checkbox will appear faded out and will not
|
|
18
17
|
// respond to events and cannot be tabbed to.
|
|
19
|
-
disabled?: boolean
|
|
18
|
+
disabled?: boolean;
|
|
20
19
|
// Appear as if disabled but allow it to respond to events and be
|
|
21
20
|
// tabbed to.
|
|
22
21
|
// This allows us to hook alternate responses into clicking on a
|
|
23
22
|
// disabled checkbox.
|
|
24
|
-
appearDisabled?: boolean
|
|
23
|
+
appearDisabled?: boolean;
|
|
25
24
|
// Called when the value has changed.
|
|
26
|
-
onChange: (event:
|
|
27
|
-
tabIndex?: number | string
|
|
28
|
-
style?: {
|
|
29
|
-
marginTop: number
|
|
30
|
-
|
|
25
|
+
onChange: (event: React.ChangeEvent<HTMLInputElement>) => void;
|
|
26
|
+
tabIndex?: number | string;
|
|
27
|
+
style?: {
|
|
28
|
+
marginTop: number;
|
|
29
|
+
};
|
|
31
30
|
// For e2e test
|
|
32
|
-
dataTestId?: string
|
|
31
|
+
dataTestId?: string;
|
|
33
32
|
// Unique identifier for this checkbox.
|
|
34
|
-
id?: string
|
|
35
|
-
...
|
|
33
|
+
id?: string;
|
|
36
34
|
};
|
|
37
35
|
|
|
38
36
|
// NOTE(jangmi): Checkbox may have `onChange` depends on circumstances but lack
|
|
39
37
|
// of onChange causes Dev only alert so we provide the no op func as default
|
|
40
38
|
// to prevent that.
|
|
41
|
-
const onChangeCheckboxNoop = (event:
|
|
39
|
+
const onChangeCheckboxNoop = (event: React.ChangeEvent<HTMLInputElement>) => {};
|
|
42
40
|
|
|
43
41
|
export default class Checkbox extends React.Component<CheckboxProps> {
|
|
44
|
-
static defaultProps: {
|
|
45
|
-
checked: boolean
|
|
46
|
-
onChange: (event:
|
|
47
|
-
|
|
42
|
+
static defaultProps: {
|
|
43
|
+
checked: boolean;
|
|
44
|
+
onChange: (event: React.ChangeEvent<HTMLInputElement>) => void;
|
|
45
|
+
} = {
|
|
48
46
|
checked: false,
|
|
49
47
|
onChange: onChangeCheckboxNoop,
|
|
50
48
|
};
|
|
51
49
|
|
|
52
|
-
render(): React.
|
|
50
|
+
render(): React.ReactNode {
|
|
53
51
|
const {
|
|
54
52
|
checked,
|
|
55
53
|
disabled,
|
|
@@ -132,6 +130,7 @@ export default class Checkbox extends React.Component<CheckboxProps> {
|
|
|
132
130
|
)}
|
|
133
131
|
disabled={disabled}
|
|
134
132
|
onChange={onChange}
|
|
133
|
+
// @ts-expect-error [FEI-5003] - TS2322 - Type 'string | number | undefined' is not assignable to type 'number | undefined'.
|
|
135
134
|
tabIndex={tabIndex}
|
|
136
135
|
/>
|
|
137
136
|
</div>
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
// @flow
|
|
2
1
|
/**
|
|
3
2
|
* A component that displays its contents inside a device frame.
|
|
4
3
|
*/
|
|
@@ -23,9 +22,9 @@ const SCREEN_SIZES = {
|
|
|
23
22
|
height: 600,
|
|
24
23
|
framedWidth: 688,
|
|
25
24
|
},
|
|
26
|
-
};
|
|
25
|
+
} as const;
|
|
27
26
|
|
|
28
|
-
type Props =
|
|
27
|
+
type Props = any;
|
|
29
28
|
|
|
30
29
|
class DeviceFramer extends React.Component<Props> {
|
|
31
30
|
static propTypes = {
|
|
@@ -39,7 +38,7 @@ class DeviceFramer extends React.Component<Props> {
|
|
|
39
38
|
nochrome: PropTypes.bool,
|
|
40
39
|
};
|
|
41
40
|
|
|
42
|
-
render(): React.
|
|
41
|
+
render(): React.ReactNode {
|
|
43
42
|
const deviceType = this.props.deviceType;
|
|
44
43
|
|
|
45
44
|
if (this.props.nochrome) {
|
|
@@ -78,7 +77,7 @@ class DeviceFramer extends React.Component<Props> {
|
|
|
78
77
|
border: "solid 1px #CCC",
|
|
79
78
|
margin: 8,
|
|
80
79
|
zoom: scale,
|
|
81
|
-
};
|
|
80
|
+
} as const;
|
|
82
81
|
|
|
83
82
|
return (
|
|
84
83
|
<div key="screen" className="screen" style={screenStyle}>
|