@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
package/.babelrc.js
CHANGED
package/.eslintrc.js
CHANGED
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,26 @@
|
|
|
1
1
|
# @khanacademy/perseus-editor
|
|
2
2
|
|
|
3
|
+
## 2.0.0
|
|
4
|
+
|
|
5
|
+
### Major Changes
|
|
6
|
+
|
|
7
|
+
- 53fd3768: Migrate source code to TypeScript
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- Updated dependencies [53fd3768]
|
|
12
|
+
- Updated dependencies [53fd3768]
|
|
13
|
+
- @khanacademy/perseus@4.0.0
|
|
14
|
+
- @khanacademy/kas@0.3.0
|
|
15
|
+
- @khanacademy/kmath@0.1.0
|
|
16
|
+
|
|
17
|
+
## 1.1.1
|
|
18
|
+
|
|
19
|
+
### Patch Changes
|
|
20
|
+
|
|
21
|
+
- Updated dependencies [8ca2a1a6]
|
|
22
|
+
- @khanacademy/perseus@3.0.0
|
|
23
|
+
|
|
3
24
|
## 1.1.0
|
|
4
25
|
|
|
5
26
|
### Minor Changes
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
declare const _default: readonly Readonly<{
|
|
3
|
+
name: string;
|
|
4
|
+
displayName: string;
|
|
5
|
+
getWidget?: (() => import("react").ComponentType<any>) | undefined;
|
|
6
|
+
accessible?: boolean | ((props: any) => boolean) | undefined;
|
|
7
|
+
hidden?: boolean | undefined;
|
|
8
|
+
version?: import("@khanacademy/perseus").Version | undefined;
|
|
9
|
+
supportedAlignments?: readonly import("@khanacademy/perseus").Alignment[] | undefined;
|
|
10
|
+
defaultAlignment?: import("@khanacademy/perseus").Alignment | undefined;
|
|
11
|
+
getDefaultAlignment?: (() => import("@khanacademy/perseus").Alignment) | undefined;
|
|
12
|
+
isLintable?: boolean | undefined;
|
|
13
|
+
transform?: import("../../perseus/src/types").WidgetTransform | undefined;
|
|
14
|
+
tracking?: import("../../perseus/src/types").Tracking | undefined;
|
|
15
|
+
staticTransform?: import("../../perseus/src/types").WidgetTransform | undefined;
|
|
16
|
+
traverseChildWidgets?: any;
|
|
17
|
+
propUpgrades?: {
|
|
18
|
+
[key: string]: (arg1: any) => any;
|
|
19
|
+
} | undefined;
|
|
20
|
+
widget: import("react").ComponentType<any>;
|
|
21
|
+
}>[];
|
|
22
|
+
export default _default;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Flowtype definitions for data
|
|
3
|
+
* Generated by Flowgen from a Typescript Definition
|
|
4
|
+
* Flowgen v1.21.0
|
|
5
|
+
* @flow
|
|
6
|
+
*/
|
|
7
|
+
import * as $Flowgen$Import$react from "react";
|
|
8
|
+
import * as $Flowgen$Import$_40_khanacademy_2f_perseus from "@khanacademy/perseus";
|
|
9
|
+
import * as $Flowgen$Import$_2e__2e__2f__2e__2e__2f_perseus_2f_src_2f_types from "../../perseus/src/types";
|
|
10
|
+
declare var _default: $ReadOnlyArray<
|
|
11
|
+
$ReadOnly<{|
|
|
12
|
+
name: string,
|
|
13
|
+
displayName: string,
|
|
14
|
+
getWidget?: (() => $Flowgen$Import$react.ComponentType<any>) | void,
|
|
15
|
+
accessible?: boolean | ((props: any) => boolean) | void,
|
|
16
|
+
hidden?: boolean | void,
|
|
17
|
+
version?: $Flowgen$Import$_40_khanacademy_2f_perseus.Version | void,
|
|
18
|
+
supportedAlignments?: $ReadOnlyArray<$Flowgen$Import$_40_khanacademy_2f_perseus.Alignment> | void,
|
|
19
|
+
defaultAlignment?: $Flowgen$Import$_40_khanacademy_2f_perseus.Alignment | void,
|
|
20
|
+
getDefaultAlignment?:
|
|
21
|
+
| (() => $Flowgen$Import$_40_khanacademy_2f_perseus.Alignment)
|
|
22
|
+
| void,
|
|
23
|
+
isLintable?: boolean | void,
|
|
24
|
+
transform?: $Flowgen$Import$_2e__2e__2f__2e__2e__2f_perseus_2f_src_2f_types.WidgetTransform | void,
|
|
25
|
+
tracking?: $Flowgen$Import$_2e__2e__2f__2e__2e__2f_perseus_2f_src_2f_types.Tracking | void,
|
|
26
|
+
staticTransform?: $Flowgen$Import$_2e__2e__2f__2e__2e__2f_perseus_2f_src_2f_types.WidgetTransform | void,
|
|
27
|
+
traverseChildWidgets?: any,
|
|
28
|
+
propUpgrades?: {
|
|
29
|
+
[key: string]: (arg1: any) => any,
|
|
30
|
+
} | void,
|
|
31
|
+
widget: $Flowgen$Import$react.ComponentType<any>,
|
|
32
|
+
|}>
|
|
33
|
+
>;
|
|
34
|
+
declare export default typeof _default;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* An article editor. Articles are long-form pieces of content, composed of
|
|
3
|
+
* multiple (Renderer) sections concatenated together.
|
|
4
|
+
*/
|
|
5
|
+
import { Changeable } from "@khanacademy/perseus";
|
|
6
|
+
import * as React from "react";
|
|
7
|
+
import type { APIOptions } from "@khanacademy/perseus";
|
|
8
|
+
type RendererProps = {
|
|
9
|
+
content?: string;
|
|
10
|
+
widgets?: any;
|
|
11
|
+
images?: any;
|
|
12
|
+
};
|
|
13
|
+
type JsonType = RendererProps | ReadonlyArray<RendererProps>;
|
|
14
|
+
type DefaultProps = {
|
|
15
|
+
contentPaths?: ReadonlyArray<string>;
|
|
16
|
+
json: JsonType;
|
|
17
|
+
mode: "diff" | "edit" | "json" | "preview";
|
|
18
|
+
screen: "phone" | "tablet" | "desktop";
|
|
19
|
+
sectionImageUploadGenerator: (i: number) => React.ReactElement<React.ComponentProps<"span">>;
|
|
20
|
+
useNewStyles: boolean;
|
|
21
|
+
};
|
|
22
|
+
type PerseusArticleEditorProps = DefaultProps & {
|
|
23
|
+
apiOptions?: APIOptions;
|
|
24
|
+
imageUploader?: (arg1: string, arg2: (arg1: string) => unknown) => unknown;
|
|
25
|
+
previewURL: string;
|
|
26
|
+
} & Changeable.ChangeableProps;
|
|
27
|
+
type State = {
|
|
28
|
+
highlightLint: boolean;
|
|
29
|
+
};
|
|
30
|
+
export default class ArticleEditor extends React.Component<PerseusArticleEditorProps, State> {
|
|
31
|
+
static defaultProps: DefaultProps;
|
|
32
|
+
state: State;
|
|
33
|
+
componentDidMount(): void;
|
|
34
|
+
componentDidUpdate(): void;
|
|
35
|
+
_updatePreviewFrames(): void;
|
|
36
|
+
_apiOptionsForSection(section: RendererProps, sectionIndex: number): any;
|
|
37
|
+
_sections(): ReadonlyArray<RendererProps>;
|
|
38
|
+
_renderEditor(): React.ReactElement<React.ComponentProps<"div">>;
|
|
39
|
+
_renderAddSection(): React.ReactElement<React.ComponentProps<"div">>;
|
|
40
|
+
_renderLinterHUD(): React.ReactElement<any>;
|
|
41
|
+
_renderIframePreview(i: number | string, nochrome: boolean): React.ReactElement<any>;
|
|
42
|
+
_renderPreviewMode(): React.ReactElement<React.ComponentProps<"div">>;
|
|
43
|
+
_handleJsonChange: (newJson: JsonType) => void;
|
|
44
|
+
_handleEditorChange: (i: number, newProps: RendererProps) => void;
|
|
45
|
+
_handleMoveSectionEarlier(i: number): void;
|
|
46
|
+
_handleMoveSectionLater(i: number): void;
|
|
47
|
+
_handleAddSectionAfter(i: number): void;
|
|
48
|
+
_handleRemoveSection(i: number): void;
|
|
49
|
+
serialize(): JsonType;
|
|
50
|
+
/**
|
|
51
|
+
* Returns an array, with one element be section.
|
|
52
|
+
* Each element is an array of lint warnings present in that section.
|
|
53
|
+
*
|
|
54
|
+
* This function can currently only be called in edit mode.
|
|
55
|
+
*/
|
|
56
|
+
getSaveWarnings(): ReadonlyArray<RendererProps>;
|
|
57
|
+
render(): React.ReactNode;
|
|
58
|
+
}
|
|
59
|
+
export {};
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Flowtype definitions for data
|
|
3
|
+
* Generated by Flowgen from a Typescript Definition
|
|
4
|
+
* Flowgen v1.21.0
|
|
5
|
+
* @flow
|
|
6
|
+
*/
|
|
7
|
+
import { Changeable } from "@khanacademy/perseus";
|
|
8
|
+
import * as React from "react";
|
|
9
|
+
import type { APIOptions } from "@khanacademy/perseus";
|
|
10
|
+
declare type RendererProps = {|
|
|
11
|
+
content?: string,
|
|
12
|
+
widgets?: any,
|
|
13
|
+
images?: any,
|
|
14
|
+
|};
|
|
15
|
+
declare type JsonType = RendererProps | $ReadOnlyArray<RendererProps>;
|
|
16
|
+
declare type DefaultProps = {|
|
|
17
|
+
contentPaths?: $ReadOnlyArray<string>,
|
|
18
|
+
json: JsonType,
|
|
19
|
+
mode: "diff" | "edit" | "json" | "preview",
|
|
20
|
+
screen: "phone" | "tablet" | "desktop",
|
|
21
|
+
sectionImageUploadGenerator: (
|
|
22
|
+
i: number
|
|
23
|
+
) => React.Element<"span">,
|
|
24
|
+
useNewStyles: boolean,
|
|
25
|
+
|};
|
|
26
|
+
declare type PerseusArticleEditorProps = {|
|
|
27
|
+
...DefaultProps,
|
|
28
|
+
...{|
|
|
29
|
+
apiOptions?: APIOptions,
|
|
30
|
+
imageUploader?: (arg1: string, arg2: (arg1: string) => mixed) => mixed,
|
|
31
|
+
previewURL: string,
|
|
32
|
+
|},
|
|
33
|
+
...Changeable.ChangeableProps,
|
|
34
|
+
|};
|
|
35
|
+
declare type State = {|
|
|
36
|
+
highlightLint: boolean,
|
|
37
|
+
|};
|
|
38
|
+
declare export default class ArticleEditor
|
|
39
|
+
extends React.Component<PerseusArticleEditorProps, State>
|
|
40
|
+
{
|
|
41
|
+
static defaultProps: DefaultProps;
|
|
42
|
+
state: State;
|
|
43
|
+
componentDidMount(): void;
|
|
44
|
+
componentDidUpdate(): void;
|
|
45
|
+
_updatePreviewFrames(): void;
|
|
46
|
+
_apiOptionsForSection(section: RendererProps, sectionIndex: number): any;
|
|
47
|
+
_sections(): $ReadOnlyArray<RendererProps>;
|
|
48
|
+
_renderEditor(): React.Element<"div">;
|
|
49
|
+
_renderAddSection(): React.Element<"div">;
|
|
50
|
+
_renderLinterHUD(): React.Element<any>;
|
|
51
|
+
_renderIframePreview(
|
|
52
|
+
i: number | string,
|
|
53
|
+
nochrome: boolean
|
|
54
|
+
): React.Element<any>;
|
|
55
|
+
_renderPreviewMode(): React.Element<"div">;
|
|
56
|
+
_handleJsonChange: (newJson: JsonType) => void;
|
|
57
|
+
_handleEditorChange: (i: number, newProps: RendererProps) => void;
|
|
58
|
+
_handleMoveSectionEarlier(i: number): void;
|
|
59
|
+
_handleMoveSectionLater(i: number): void;
|
|
60
|
+
_handleAddSectionAfter(i: number): void;
|
|
61
|
+
_handleRemoveSection(i: number): void;
|
|
62
|
+
serialize(): JsonType;
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Returns an array, with one element be section.
|
|
66
|
+
* Each element is an array of lint warnings present in that section.
|
|
67
|
+
*
|
|
68
|
+
* This function can currently only be called in edit mode.
|
|
69
|
+
*/
|
|
70
|
+
getSaveWarnings(): $ReadOnlyArray<RendererProps>;
|
|
71
|
+
render(): React.Node;
|
|
72
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import type { CSSProperties } from "aphrodite";
|
|
3
|
+
type Props = {
|
|
4
|
+
value: string;
|
|
5
|
+
onChange: (arg1: string) => void;
|
|
6
|
+
className?: string;
|
|
7
|
+
style?: CSSProperties;
|
|
8
|
+
};
|
|
9
|
+
type State = {
|
|
10
|
+
value: string;
|
|
11
|
+
};
|
|
12
|
+
declare class BlurInput extends React.Component<Props, State> {
|
|
13
|
+
constructor(props: Props);
|
|
14
|
+
UNSAFE_componentWillReceiveProps(nextProps: Props): void;
|
|
15
|
+
handleChange: (e: any) => void;
|
|
16
|
+
handleBlur: (e: any) => void;
|
|
17
|
+
render(): React.ReactNode;
|
|
18
|
+
}
|
|
19
|
+
export default BlurInput;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Flowtype definitions for data
|
|
3
|
+
* Generated by Flowgen from a Typescript Definition
|
|
4
|
+
* Flowgen v1.21.0
|
|
5
|
+
* @flow
|
|
6
|
+
*/
|
|
7
|
+
import * as React from "react";
|
|
8
|
+
import type { CSSProperties } from "aphrodite";
|
|
9
|
+
declare type Props = {|
|
|
10
|
+
value: string,
|
|
11
|
+
onChange: (arg1: string) => void,
|
|
12
|
+
className?: string,
|
|
13
|
+
style?: CSSProperties,
|
|
14
|
+
|};
|
|
15
|
+
declare type State = {|
|
|
16
|
+
value: string,
|
|
17
|
+
|};
|
|
18
|
+
declare class BlurInput extends React.Component<Props, State> {
|
|
19
|
+
constructor(props: Props): this;
|
|
20
|
+
UNSAFE_componentWillReceiveProps(nextProps: Props): void;
|
|
21
|
+
handleChange: (e: any) => void;
|
|
22
|
+
handleBlur: (e: any) => void;
|
|
23
|
+
render(): React.Node;
|
|
24
|
+
}
|
|
25
|
+
declare export default typeof BlurInput;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export type CheckboxProps = {
|
|
3
|
+
checked: boolean;
|
|
4
|
+
disabled?: boolean;
|
|
5
|
+
appearDisabled?: boolean;
|
|
6
|
+
onChange: (event: React.ChangeEvent<HTMLInputElement>) => void;
|
|
7
|
+
tabIndex?: number | string;
|
|
8
|
+
style?: {
|
|
9
|
+
marginTop: number;
|
|
10
|
+
};
|
|
11
|
+
dataTestId?: string;
|
|
12
|
+
id?: string;
|
|
13
|
+
};
|
|
14
|
+
export default class Checkbox extends React.Component<CheckboxProps> {
|
|
15
|
+
static defaultProps: {
|
|
16
|
+
checked: boolean;
|
|
17
|
+
onChange: (event: React.ChangeEvent<HTMLInputElement>) => void;
|
|
18
|
+
};
|
|
19
|
+
render(): React.ReactNode;
|
|
20
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
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
|
+
export type CheckboxProps = {|
|
|
9
|
+
checked: boolean,
|
|
10
|
+
disabled?: boolean,
|
|
11
|
+
appearDisabled?: boolean,
|
|
12
|
+
onChange: (event: SyntheticInputEvent<HTMLInputElement>) => void,
|
|
13
|
+
tabIndex?: number | string,
|
|
14
|
+
style?: {|
|
|
15
|
+
marginTop: number,
|
|
16
|
+
|},
|
|
17
|
+
dataTestId?: string,
|
|
18
|
+
id?: string,
|
|
19
|
+
|};
|
|
20
|
+
declare export default class Checkbox extends React.Component<CheckboxProps> {
|
|
21
|
+
static defaultProps: {|
|
|
22
|
+
checked: boolean,
|
|
23
|
+
onChange: (event: SyntheticInputEvent<HTMLInputElement>) => void,
|
|
24
|
+
|};
|
|
25
|
+
render(): React.Node;
|
|
26
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A component that displays its contents inside a device frame.
|
|
3
|
+
*/
|
|
4
|
+
import PropTypes from "prop-types";
|
|
5
|
+
import * as React from "react";
|
|
6
|
+
type Props = any;
|
|
7
|
+
declare class DeviceFramer extends React.Component<Props> {
|
|
8
|
+
static propTypes: {
|
|
9
|
+
children: PropTypes.Validator<PropTypes.ReactElementLike>;
|
|
10
|
+
deviceType: PropTypes.Validator<NonNullable<"phone" | "tablet" | "desktop">>;
|
|
11
|
+
nochrome: PropTypes.Requireable<boolean>;
|
|
12
|
+
};
|
|
13
|
+
render(): React.ReactNode;
|
|
14
|
+
}
|
|
15
|
+
export default DeviceFramer;
|
|
@@ -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
|
+
import PropTypes from "prop-types";
|
|
8
|
+
import * as React from "react";
|
|
9
|
+
declare type Props = any;
|
|
10
|
+
declare class DeviceFramer extends React.Component<Props> {
|
|
11
|
+
static propTypes: {|
|
|
12
|
+
children: PropTypes.Validator<PropTypes.ReactElementLike>,
|
|
13
|
+
deviceType: PropTypes.Validator<
|
|
14
|
+
$NonMaybeType<"phone" | "tablet" | "desktop">
|
|
15
|
+
>,
|
|
16
|
+
nochrome: PropTypes.Requireable<boolean>,
|
|
17
|
+
|};
|
|
18
|
+
render(): React.Node;
|
|
19
|
+
}
|
|
20
|
+
declare export default typeof DeviceFramer;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export type OptionRenderer = (children: React.ReactElement<any> | null | undefined, value: string, selected: boolean, disabled?: boolean) => React.ReactElement<any>;
|
|
3
|
+
type OptionProps = {
|
|
4
|
+
value: string;
|
|
5
|
+
children?: React.ReactNode;
|
|
6
|
+
selected?: boolean;
|
|
7
|
+
disabled?: boolean;
|
|
8
|
+
onClick?: () => void;
|
|
9
|
+
optionRenderer?: OptionRenderer;
|
|
10
|
+
onDropdownClose?: () => void;
|
|
11
|
+
hideFocusState?: boolean;
|
|
12
|
+
testId?: string;
|
|
13
|
+
ariaLabel?: string;
|
|
14
|
+
};
|
|
15
|
+
export declare const optionHeight = 30;
|
|
16
|
+
declare class Option extends React.Component<OptionProps> {
|
|
17
|
+
node: HTMLDivElement;
|
|
18
|
+
handleKeyDown(event: any): void;
|
|
19
|
+
render(): React.ReactNode;
|
|
20
|
+
}
|
|
21
|
+
declare class OptionGroup extends React.Component<{
|
|
22
|
+
onSelected: (value: string) => void;
|
|
23
|
+
children?: Array<React.ReactElement<React.ComponentProps<typeof Option>>>;
|
|
24
|
+
selectedValues: Array<string>;
|
|
25
|
+
optionRenderer?: OptionRenderer;
|
|
26
|
+
noMargin?: boolean;
|
|
27
|
+
onDropdownClose?: () => void;
|
|
28
|
+
hideFocusState?: boolean;
|
|
29
|
+
}> {
|
|
30
|
+
focusedElement: Element;
|
|
31
|
+
componentDidMount(): void;
|
|
32
|
+
render(): React.ReactNode;
|
|
33
|
+
}
|
|
34
|
+
export { OptionGroup };
|
|
35
|
+
export default Option;
|
|
@@ -0,0 +1,49 @@
|
|
|
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
|
+
export type OptionRenderer = (
|
|
9
|
+
children: React.Element<any> | null | void,
|
|
10
|
+
value: string,
|
|
11
|
+
selected: boolean,
|
|
12
|
+
disabled?: boolean
|
|
13
|
+
) => React.Element<any>;
|
|
14
|
+
declare type OptionProps = {|
|
|
15
|
+
value: string,
|
|
16
|
+
children?: React.Node,
|
|
17
|
+
selected?: boolean,
|
|
18
|
+
disabled?: boolean,
|
|
19
|
+
onClick?: () => void,
|
|
20
|
+
optionRenderer?: OptionRenderer,
|
|
21
|
+
onDropdownClose?: () => void,
|
|
22
|
+
hideFocusState?: boolean,
|
|
23
|
+
testId?: string,
|
|
24
|
+
ariaLabel?: string,
|
|
25
|
+
|};
|
|
26
|
+
declare export var optionHeight: 30;
|
|
27
|
+
declare class Option extends React.Component<OptionProps> {
|
|
28
|
+
node: HTMLDivElement;
|
|
29
|
+
handleKeyDown(event: any): void;
|
|
30
|
+
render(): React.Node;
|
|
31
|
+
}
|
|
32
|
+
declare class OptionGroup
|
|
33
|
+
extends
|
|
34
|
+
React.Component<{|
|
|
35
|
+
onSelected: (value: string) => void,
|
|
36
|
+
children?: Array<React.Element<typeof Option>>,
|
|
37
|
+
selectedValues: Array<string>,
|
|
38
|
+
optionRenderer?: OptionRenderer,
|
|
39
|
+
noMargin?: boolean,
|
|
40
|
+
onDropdownClose?: () => void,
|
|
41
|
+
hideFocusState?: boolean,
|
|
42
|
+
|}>
|
|
43
|
+
{
|
|
44
|
+
focusedElement: Element;
|
|
45
|
+
componentDidMount(): void;
|
|
46
|
+
render(): React.Node;
|
|
47
|
+
}
|
|
48
|
+
declare export { OptionGroup };
|
|
49
|
+
declare export default typeof Option;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DEPRECATED: Use <TextField> from ./text-field.jsx instead.
|
|
3
|
+
*
|
|
4
|
+
* This component wraps an <input> in a <form> to make it easier to add an
|
|
5
|
+
* `onSubmit` handler. In practice though this can complicate things because
|
|
6
|
+
* each field is in it's own form which is not how forms should be structured.
|
|
7
|
+
* If you need to handle `onSubmit`, please use <TextField> directly with your
|
|
8
|
+
* own <form> that wraps all text fields in the form.
|
|
9
|
+
**/
|
|
10
|
+
import { components } from "@khanacademy/perseus";
|
|
11
|
+
import * as React from "react";
|
|
12
|
+
type Props = {
|
|
13
|
+
id?: string;
|
|
14
|
+
testId?: string;
|
|
15
|
+
type?: string;
|
|
16
|
+
name?: string;
|
|
17
|
+
readOnly?: boolean;
|
|
18
|
+
value?: string | ReadonlyArray<string> | number | undefined;
|
|
19
|
+
placeholder?: string;
|
|
20
|
+
defaultValue?: string | number | ReadonlyArray<string> | undefined;
|
|
21
|
+
disabled?: boolean;
|
|
22
|
+
autoFocus?: boolean;
|
|
23
|
+
maxLength?: number;
|
|
24
|
+
invalid?: "true" | "false";
|
|
25
|
+
style?: React.CSSProperties | undefined;
|
|
26
|
+
className?: string;
|
|
27
|
+
width?: number | string;
|
|
28
|
+
grow?: boolean | number;
|
|
29
|
+
shrink?: boolean | number;
|
|
30
|
+
labelMediumInputText?: boolean;
|
|
31
|
+
icon?: React.ReactElement<React.ComponentProps<typeof components.Icon>>;
|
|
32
|
+
leftSideIcon?: boolean;
|
|
33
|
+
backgroundColor?: string;
|
|
34
|
+
focusBorderColor?: string;
|
|
35
|
+
borderColor?: string;
|
|
36
|
+
color?: string;
|
|
37
|
+
onSubmit?: (arg1: React.ChangeEvent<HTMLInputElement>) => unknown;
|
|
38
|
+
onBlur?: (arg1: React.ChangeEvent<HTMLInputElement>) => unknown;
|
|
39
|
+
onFocus?: (arg1: React.ChangeEvent<HTMLInputElement>) => unknown;
|
|
40
|
+
onChange?: (arg1: React.ChangeEvent<HTMLInputElement>) => unknown;
|
|
41
|
+
onClick?: (arg1: React.MouseEvent<HTMLInputElement>) => unknown;
|
|
42
|
+
onKeyPress?: (arg1: React.KeyboardEvent<HTMLInputElement>) => unknown;
|
|
43
|
+
onKeyDown?: (arg1: React.KeyboardEvent<HTMLInputElement>) => unknown;
|
|
44
|
+
["aria-label"]?: string;
|
|
45
|
+
["aria-describedby"]?: string | undefined;
|
|
46
|
+
};
|
|
47
|
+
declare const _default: React.ForwardRefExoticComponent<Props & React.RefAttributes<HTMLInputElement>>;
|
|
48
|
+
export default _default;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Flowtype definitions for data
|
|
3
|
+
* Generated by Flowgen from a Typescript Definition
|
|
4
|
+
* Flowgen v1.21.0
|
|
5
|
+
* @flow
|
|
6
|
+
*/
|
|
7
|
+
import { components } from "@khanacademy/perseus";
|
|
8
|
+
import * as React from "react";
|
|
9
|
+
declare type Props = {|
|
|
10
|
+
id?: string,
|
|
11
|
+
testId?: string,
|
|
12
|
+
type?: string,
|
|
13
|
+
name?: string,
|
|
14
|
+
readOnly?: boolean,
|
|
15
|
+
value?: string | $ReadOnlyArray<string> | number | void,
|
|
16
|
+
placeholder?: string,
|
|
17
|
+
defaultValue?: string | number | $ReadOnlyArray<string> | void,
|
|
18
|
+
disabled?: boolean,
|
|
19
|
+
autoFocus?: boolean,
|
|
20
|
+
maxLength?: number,
|
|
21
|
+
invalid?: "true" | "false",
|
|
22
|
+
style?: React.CSSProperties | void,
|
|
23
|
+
className?: string,
|
|
24
|
+
width?: number | string,
|
|
25
|
+
grow?: boolean | number,
|
|
26
|
+
shrink?: boolean | number,
|
|
27
|
+
labelMediumInputText?: boolean,
|
|
28
|
+
icon?: React.Element<typeof components.Icon>,
|
|
29
|
+
leftSideIcon?: boolean,
|
|
30
|
+
backgroundColor?: string,
|
|
31
|
+
focusBorderColor?: string,
|
|
32
|
+
borderColor?: string,
|
|
33
|
+
color?: string,
|
|
34
|
+
onSubmit?: (arg1: SyntheticInputEvent<HTMLInputElement>) => mixed,
|
|
35
|
+
onBlur?: (arg1: SyntheticInputEvent<HTMLInputElement>) => mixed,
|
|
36
|
+
onFocus?: (arg1: SyntheticInputEvent<HTMLInputElement>) => mixed,
|
|
37
|
+
onChange?: (arg1: SyntheticInputEvent<HTMLInputElement>) => mixed,
|
|
38
|
+
onClick?: (arg1: SyntheticMouseEvent<HTMLInputElement>) => mixed,
|
|
39
|
+
onKeyPress?: (arg1: SyntheticKeyboardEvent<HTMLInputElement>) => mixed,
|
|
40
|
+
onKeyDown?: (arg1: SyntheticKeyboardEvent<HTMLInputElement>) => mixed,
|
|
41
|
+
"aria-label": string | void,
|
|
42
|
+
"aria-describedby": (string | void) | void,
|
|
43
|
+
|};
|
|
44
|
+
declare var _default: React.ForwardRefExoticComponent<{|
|
|
45
|
+
...Props,
|
|
46
|
+
...React.RefAttributes<HTMLInputElement>,
|
|
47
|
+
|}>;
|
|
48
|
+
declare export default typeof _default;
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Add hover behavior to another component.
|
|
3
|
+
*
|
|
4
|
+
* This component provides hover and focus status updates in a consistent way
|
|
5
|
+
* across desktop and mobile.
|
|
6
|
+
*
|
|
7
|
+
* For advice on when to use this component instead of Button, see README.md.
|
|
8
|
+
*
|
|
9
|
+
* Many mobile browsers treat :hover as sticky which results in buttons looking
|
|
10
|
+
* pressed even when the user has lifted their finger. This component ensures
|
|
11
|
+
* that when user lifts their finger the hover state is removed.
|
|
12
|
+
*
|
|
13
|
+
* We also chnage how the focus state works. Browsers immediately set the
|
|
14
|
+
* focus state as soon as you click on a button. This component only sets the
|
|
15
|
+
* focus state when a user starts navigating between elements via keybaord.
|
|
16
|
+
*
|
|
17
|
+
* HoverBehavior accepts a function as 'children' which is passed state and
|
|
18
|
+
* an object containing event handlers. The 'children' function should return
|
|
19
|
+
* an React Element of some sort.
|
|
20
|
+
*
|
|
21
|
+
* Example:
|
|
22
|
+
*
|
|
23
|
+
* class MyButtonLikeComponent extends React.Component {
|
|
24
|
+
* render(): React.Node {
|
|
25
|
+
* return <HoverBehavior
|
|
26
|
+
* disabled={this.props.disabled}
|
|
27
|
+
* onClick={this.handleClick}
|
|
28
|
+
* >
|
|
29
|
+
* {({hovered}, handlers) =>
|
|
30
|
+
* <RoundRect
|
|
31
|
+
* textcolor='white'
|
|
32
|
+
* backgroundColor={hovered ? 'red' : 'blue'}/>}
|
|
33
|
+
* {...handlers}
|
|
34
|
+
* >
|
|
35
|
+
* {this.props.children}
|
|
36
|
+
* </RoundRect>
|
|
37
|
+
* }
|
|
38
|
+
* </HoverBehavior>
|
|
39
|
+
* }
|
|
40
|
+
* }
|
|
41
|
+
*
|
|
42
|
+
* This follows a pattern call 'Function as Child Components':
|
|
43
|
+
* https://medium.com/merrickchristensen/function-as-child-components-5f3920a9ace9#.sw0jiio8b
|
|
44
|
+
*/
|
|
45
|
+
import * as React from "react";
|
|
46
|
+
type Handlers = {
|
|
47
|
+
onBlur: () => unknown;
|
|
48
|
+
onClick: (e: React.MouseEvent) => unknown;
|
|
49
|
+
onFocus: () => unknown;
|
|
50
|
+
onMouseDown: () => unknown;
|
|
51
|
+
onMouseEnter: () => unknown;
|
|
52
|
+
onMouseLeave: () => unknown;
|
|
53
|
+
onTouchStart: () => unknown;
|
|
54
|
+
onTouchEnd: () => unknown;
|
|
55
|
+
};
|
|
56
|
+
type State = {
|
|
57
|
+
focused: boolean;
|
|
58
|
+
hovered: boolean;
|
|
59
|
+
};
|
|
60
|
+
type Props = {
|
|
61
|
+
children?: (state: State, handlers: Handlers) => React.ReactElement;
|
|
62
|
+
disabled?: boolean;
|
|
63
|
+
onClick?: (e: React.MouseEvent) => unknown;
|
|
64
|
+
startHovered: boolean;
|
|
65
|
+
shouldUpdate: () => boolean;
|
|
66
|
+
};
|
|
67
|
+
export default class HoverBehavior extends React.Component<Props, State> {
|
|
68
|
+
static defaultProps: {
|
|
69
|
+
shouldUpdate: () => boolean;
|
|
70
|
+
startHovered: boolean;
|
|
71
|
+
};
|
|
72
|
+
constructor(props: Props);
|
|
73
|
+
focusFlag: boolean;
|
|
74
|
+
waitingForClick: boolean;
|
|
75
|
+
handleClick: (e: React.MouseEvent) => void;
|
|
76
|
+
handleMouseEnter: () => void;
|
|
77
|
+
handleMouseLeave: () => void;
|
|
78
|
+
handleTouchStart: () => void;
|
|
79
|
+
handleTouchEnd: () => void;
|
|
80
|
+
handleMouseDown: () => void;
|
|
81
|
+
handleBlur: () => void;
|
|
82
|
+
handleFocus: () => void;
|
|
83
|
+
render(): React.ReactNode;
|
|
84
|
+
}
|
|
85
|
+
export {};
|