@khanacademy/perseus 4.0.2 → 5.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.
Files changed (153) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/components/highlighting/highlightable-content.d.ts +4 -4
  3. package/dist/components/highlighting/highlightable-content.js.flow +4 -7
  4. package/dist/components/highlighting/ui/highlight-renderer.d.ts +6 -6
  5. package/dist/components/highlighting/ui/highlight-renderer.js.flow +6 -8
  6. package/dist/components/highlighting/ui/highlight-set-renderer.d.ts +5 -5
  7. package/dist/components/highlighting/ui/highlight-set-renderer.js.flow +5 -8
  8. package/dist/components/highlighting/ui/highlight-tooltip.d.ts +2 -2
  9. package/dist/components/highlighting/ui/highlight-tooltip.js.flow +2 -4
  10. package/dist/components/highlighting/ui/highlighting-ui.d.ts +2 -2
  11. package/dist/components/highlighting/ui/highlighting-ui.js.flow +2 -2
  12. package/dist/components/highlighting/ui/selection-tracker.d.ts +5 -5
  13. package/dist/components/highlighting/ui/selection-tracker.js.flow +5 -7
  14. package/dist/components/highlighting/word-indexer.d.ts +2 -2
  15. package/dist/components/highlighting/word-indexer.js.flow +2 -2
  16. package/dist/components/inline-icon.d.ts +35 -1
  17. package/dist/components/inline-icon.js.flow +11 -1
  18. package/dist/components/simple-keypad-input.d.ts +1 -1
  19. package/dist/components/simple-keypad-input.js.flow +1 -1
  20. package/dist/components/tex-buttons.d.ts +2 -2
  21. package/dist/components/tex-buttons.js.flow +2 -2
  22. package/dist/error-boundary.d.ts +4 -4
  23. package/dist/error-boundary.js.flow +4 -6
  24. package/dist/es/index.js +7 -10
  25. package/dist/es/index.js.map +1 -1
  26. package/dist/index.js +7 -10
  27. package/dist/index.js.map +1 -1
  28. package/dist/perseus-types.d.ts +0 -1
  29. package/dist/perseus-types.js.flow +0 -1
  30. package/dist/widgets/__stories__/test-keypad-context-wrapper.d.ts +2 -2
  31. package/dist/widgets/__stories__/test-keypad-context-wrapper.js.flow +2 -4
  32. package/dist/widgets/expression.d.ts +2 -2
  33. package/dist/widgets/expression.js.flow +2 -2
  34. package/dist/widgets/interaction/element-container.d.ts +5 -4
  35. package/dist/widgets/interaction/element-container.js.flow +6 -11
  36. package/dist/widgets/label-image/marker.d.ts +4 -4
  37. package/dist/widgets/label-image/marker.js.flow +4 -6
  38. package/dist/widgets/numeric-input.d.ts +0 -2
  39. package/dist/widgets/numeric-input.js.flow +0 -4
  40. package/dist/widgets/radio/base-radio.d.ts +7 -1
  41. package/dist/widgets/radio/base-radio.js.flow +7 -1
  42. package/dist/widgets/radio/choice-icon/choice-icon.d.ts +1 -1
  43. package/dist/widgets/radio/choice-icon/choice-icon.js.flow +1 -1
  44. package/dist/widgets/radio/choice-icon/cross-out-line.d.ts +2 -2
  45. package/dist/widgets/radio/choice-icon/cross-out-line.js.flow +2 -2
  46. package/dist/widgets/radio/focus-ring.d.ts +8 -1
  47. package/dist/widgets/radio/focus-ring.js.flow +8 -1
  48. package/dist/widgets/radio/option-status.d.ts +2 -2
  49. package/dist/widgets/radio/option-status.js.flow +2 -2
  50. package/dist/widgets/video-transcript-link.d.ts +1 -1
  51. package/dist/widgets/video-transcript-link.js.flow +1 -1
  52. package/package.json +4 -4
  53. package/src/__stories__/item-renderer.stories.tsx +2 -6
  54. package/src/__stories__/server-item-renderer.stories.tsx +2 -6
  55. package/src/components/__stories__/button-group.stories.tsx +2 -6
  56. package/src/components/__stories__/fixed-to-responsive.stories.tsx +14 -16
  57. package/src/components/__stories__/graph.stories.tsx +3 -5
  58. package/src/components/__stories__/graphie.stories.tsx +3 -5
  59. package/src/components/__stories__/hud.stories.tsx +2 -6
  60. package/src/components/__stories__/icon.stories.tsx +1 -1
  61. package/src/components/__stories__/image-loader.stories.tsx +4 -4
  62. package/src/components/__stories__/info-tip.stories.tsx +2 -6
  63. package/src/components/__stories__/inline-icon.stories.tsx +4 -8
  64. package/src/components/__stories__/input-with-examples.stories.tsx +6 -10
  65. package/src/components/__stories__/lint.stories.tsx +12 -12
  66. package/src/components/__stories__/math-input.stories.tsx +4 -8
  67. package/src/components/__stories__/math-output.stories.tsx +3 -5
  68. package/src/components/__stories__/multi-button-group.stories.tsx +2 -6
  69. package/src/components/__stories__/number-input.stories.tsx +6 -8
  70. package/src/components/__stories__/prop-check-box.stories.tsx +9 -9
  71. package/src/components/__stories__/range-input.stories.tsx +4 -6
  72. package/src/components/__stories__/simple-keypad-input.stories.tsx +2 -4
  73. package/src/components/__stories__/sortable.stories.tsx +15 -15
  74. package/src/components/__stories__/stub-tag-editor.stories.tsx +5 -9
  75. package/src/components/__stories__/svg-image.stories.tsx +10 -18
  76. package/src/components/__stories__/tex.stories.tsx +1 -3
  77. package/src/components/__stories__/text-buttons.stories.tsx +10 -22
  78. package/src/components/__stories__/text-input.stories.tsx +4 -10
  79. package/src/components/__stories__/text-list-editor.stories.tsx +1 -3
  80. package/src/components/__stories__/zoomable-tex.stories.tsx +6 -4
  81. package/src/components/__stories__/zoomable.stories.tsx +1 -3
  82. package/src/components/highlighting/highlightable-content.tsx +4 -7
  83. package/src/components/highlighting/ui/highlight-renderer.tsx +6 -9
  84. package/src/components/highlighting/ui/highlight-set-renderer.tsx +5 -8
  85. package/src/components/highlighting/ui/highlight-tooltip.tsx +2 -2
  86. package/src/components/highlighting/ui/highlighting-ui.tsx +2 -2
  87. package/src/components/highlighting/ui/selection-tracker.tsx +5 -8
  88. package/src/components/highlighting/word-indexer.tsx +2 -2
  89. package/src/components/inline-icon.tsx +2 -2
  90. package/src/components/simple-keypad-input.tsx +2 -2
  91. package/src/components/tex-buttons.tsx +2 -2
  92. package/src/components/visibility-observer/__stories__/visibility-observer.stories.tsx +1 -3
  93. package/src/error-boundary.tsx +4 -7
  94. package/src/multi-items/__stories__/multi-renderer.stories.tsx +1 -1
  95. package/src/multi-items/__tests__/multi-renderer.test.tsx +2 -3
  96. package/src/perseus-types.ts +0 -3
  97. package/src/util/graphie.ts +3 -3
  98. package/src/widgets/__stories__/categorizer.stories.tsx +1 -1
  99. package/src/widgets/__stories__/cs-program.stories.tsx +1 -1
  100. package/src/widgets/__stories__/definition.stories.tsx +3 -7
  101. package/src/widgets/__stories__/dropdown.stories.tsx +1 -1
  102. package/src/widgets/__stories__/explanation.stories.tsx +2 -2
  103. package/src/widgets/__stories__/expression.stories.tsx +5 -11
  104. package/src/widgets/__stories__/graded-group-set.stories.tsx +1 -1
  105. package/src/widgets/__stories__/graded-group.stories.tsx +1 -1
  106. package/src/widgets/__stories__/grapher.stories.tsx +7 -21
  107. package/src/widgets/__stories__/group.stories.tsx +1 -1
  108. package/src/widgets/__stories__/iframe.stories.tsx +1 -1
  109. package/src/widgets/__stories__/image.stories.tsx +1 -1
  110. package/src/widgets/__stories__/input-number.stories.tsx +3 -12
  111. package/src/widgets/__stories__/interaction.stories.tsx +1 -1
  112. package/src/widgets/__stories__/interactive-graph.stories.tsx +9 -9
  113. package/src/widgets/__stories__/matcher.stories.tsx +1 -1
  114. package/src/widgets/__stories__/matrix.stories.tsx +1 -1
  115. package/src/widgets/__stories__/number-line.stories.tsx +1 -1
  116. package/src/widgets/__stories__/numeric-input.stories.tsx +3 -5
  117. package/src/widgets/__stories__/orderer.stories.tsx +1 -1
  118. package/src/widgets/__stories__/passage-ref.stories.tsx +2 -2
  119. package/src/widgets/__stories__/passage.stories.tsx +3 -9
  120. package/src/widgets/__stories__/radio.stories.tsx +3 -5
  121. package/src/widgets/__stories__/sorter.stories.tsx +1 -1
  122. package/src/widgets/__stories__/test-keypad-context-wrapper.tsx +2 -4
  123. package/src/widgets/__stories__/transformer.stories.tsx +1 -1
  124. package/src/widgets/__stories__/unit.stories.tsx +1 -3
  125. package/src/widgets/__stories__/video-transcript-link.stories.tsx +2 -6
  126. package/src/widgets/__stories__/video.stories.tsx +1 -1
  127. package/src/widgets/__testdata__/group.testdata.ts +0 -2
  128. package/src/widgets/__tests__/group.test.tsx +0 -2
  129. package/src/widgets/__tests__/radio/focus-ring.test.tsx +0 -1
  130. package/src/widgets/expression.tsx +3 -3
  131. package/src/widgets/interaction/element-container.tsx +7 -8
  132. package/src/widgets/label-image/__stories__/answer-choices.stories.tsx +2 -4
  133. package/src/widgets/label-image/__stories__/marker.stories.tsx +9 -19
  134. package/src/widgets/label-image/marker.tsx +4 -4
  135. package/src/widgets/numeric-input.tsx +0 -3
  136. package/src/widgets/passage/passage-markdown.tsx +2 -2
  137. package/src/widgets/radio/__stories__/base-radio.stories.tsx +11 -19
  138. package/src/widgets/radio/__stories__/choice-icon.stories.tsx +9 -11
  139. package/src/widgets/radio/__stories__/choice-none-above.stories.tsx +1 -1
  140. package/src/widgets/radio/__stories__/choice.stories.tsx +4 -4
  141. package/src/widgets/radio/__stories__/focus-ring.stories.tsx +1 -1
  142. package/src/widgets/radio/__stories__/option-status.stories.tsx +2 -4
  143. package/src/widgets/radio/base-radio.tsx +1 -1
  144. package/src/widgets/radio/choice-icon/choice-icon.tsx +5 -5
  145. package/src/widgets/radio/choice-icon/cross-out-line.tsx +1 -3
  146. package/src/widgets/radio/choice-none-above.tsx +2 -2
  147. package/src/widgets/radio/choice.tsx +1 -3
  148. package/src/widgets/radio/focus-ring.tsx +1 -1
  149. package/src/widgets/radio/option-status.tsx +2 -4
  150. package/src/widgets/radio/widget.tsx +0 -1
  151. package/src/widgets/reaction-diagram.tsx +2 -2
  152. package/src/widgets/video-transcript-link.tsx +1 -1
  153. package/tsconfig.tsbuildinfo +1 -1
@@ -361,7 +361,6 @@ export type PerseusNumericInputWidgetOptions = {
361
361
  labelText: string;
362
362
  size: string;
363
363
  coefficient: boolean;
364
- multipleNumberInput?: boolean;
365
364
  rightAlign?: boolean;
366
365
  static: boolean;
367
366
  answerForms?: ReadonlyArray<PerseusNumericInputAnswerForm>;
@@ -532,7 +532,6 @@ export type PerseusNumericInputWidgetOptions = {|
532
532
  labelText: string,
533
533
  size: string,
534
534
  coefficient: boolean,
535
- multipleNumberInput?: boolean,
536
535
  rightAlign?: boolean,
537
536
  static: boolean,
538
537
  answerForms?: $ReadOnlyArray<PerseusNumericInputAnswerForm>,
@@ -1,6 +1,6 @@
1
1
  import * as React from "react";
2
- type TestKeypadContextWrapperProps = {
2
+ type Props = {
3
3
  children: React.ReactElement;
4
4
  };
5
- declare const TestKeypadContextWrapper: (props: TestKeypadContextWrapperProps) => React.ReactElement;
5
+ declare const TestKeypadContextWrapper: (props: Props) => React.ReactElement;
6
6
  export default TestKeypadContextWrapper;
@@ -5,10 +5,8 @@
5
5
  * @flow
6
6
  */
7
7
  import * as React from "react";
8
- declare type TestKeypadContextWrapperProps = {|
8
+ declare type Props = {|
9
9
  children: React.Element<any>,
10
10
  |};
11
- declare var TestKeypadContextWrapper: (
12
- props: TestKeypadContextWrapperProps
13
- ) => React.Element<any>;
11
+ declare var TestKeypadContextWrapper: (props: Props) => React.Element<any>;
14
12
  declare export default typeof TestKeypadContextWrapper;
@@ -30,6 +30,8 @@ type DefaultProps = {
30
30
  };
31
31
  type OnInputErrorFunctionType = (arg1?: any, arg2?: any, arg3?: any) => boolean | null | undefined;
32
32
  export declare class Expression extends React.Component<Props, ExpressionState> {
33
+ _isMounted: boolean;
34
+ errorTimeout: null | number;
33
35
  static validate(userInput: string, rubric: Rubric, onInputError?: OnInputErrorFunctionType): PerseusScore;
34
36
  static getUserInputFromProps(props: Props): string;
35
37
  static getOneCorrectAnswerFromRubric(rubric: Rubric): string | null | undefined;
@@ -39,8 +41,6 @@ export declare class Expression extends React.Component<Props, ExpressionState>
39
41
  componentDidMount: () => void;
40
42
  componentDidUpdate: (prevProps: Props) => void;
41
43
  componentWillUnmount: () => void;
42
- _isMounted: boolean;
43
- errorTimeout: null | number;
44
44
  simpleValidate: (rubric: Rubric, onInputError: OnInputErrorFunctionType) => PerseusScore;
45
45
  getUserInput: () => string;
46
46
  change: (...args: any) => any | undefined;
@@ -46,6 +46,8 @@ declare type OnInputErrorFunctionType = (
46
46
  declare export class Expression
47
47
  extends React.Component<Props, ExpressionState>
48
48
  {
49
+ _isMounted: boolean;
50
+ errorTimeout: null | number;
49
51
  static validate(
50
52
  userInput: string,
51
53
  rubric: Rubric,
@@ -59,8 +61,6 @@ declare export class Expression
59
61
  componentDidMount: () => void;
60
62
  componentDidUpdate: (prevProps: Props) => void;
61
63
  componentWillUnmount: () => void;
62
- _isMounted: boolean;
63
- errorTimeout: null | number;
64
64
  simpleValidate: (
65
65
  rubric: Rubric,
66
66
  onInputError: OnInputErrorFunctionType
@@ -1,5 +1,5 @@
1
1
  import * as React from "react";
2
- type ElementContainerProps = {
2
+ type Props = {
3
3
  children: React.ReactElement<any> | ReadonlyArray<React.ReactElement<any>>;
4
4
  initiallyVisible: boolean;
5
5
  onDelete?: () => void | null | undefined;
@@ -7,14 +7,15 @@ type ElementContainerProps = {
7
7
  onUp?: () => void | null | undefined;
8
8
  title: string | React.ReactElement<any>;
9
9
  };
10
- declare class ElementContainer extends React.Component<ElementContainerProps, {
10
+ type State = {
11
11
  show: boolean;
12
- }> {
12
+ };
13
+ declare class ElementContainer extends React.Component<Props, State> {
13
14
  static defaultProps: {
14
15
  initiallyVisible: boolean;
15
16
  title: string;
16
17
  };
17
- constructor(props: ElementContainerProps);
18
+ constructor(props: Props);
18
19
  toggle: (e: React.SyntheticEvent) => void;
19
20
  render(): React.ReactNode;
20
21
  }
@@ -5,7 +5,7 @@
5
5
  * @flow
6
6
  */
7
7
  import * as React from "react";
8
- declare type ElementContainerProps = {|
8
+ declare type Props = {|
9
9
  children: React.Element<any> | $ReadOnlyArray<React.Element<any>>,
10
10
  initiallyVisible: boolean,
11
11
  onDelete?: () => void | null | void,
@@ -13,20 +13,15 @@ declare type ElementContainerProps = {|
13
13
  onUp?: () => void | null | void,
14
14
  title: string | React.Element<any>,
15
15
  |};
16
- declare class ElementContainer
17
- extends
18
- React.Component<
19
- ElementContainerProps,
20
- {|
21
- show: boolean,
22
- |}
23
- >
24
- {
16
+ declare type State = {|
17
+ show: boolean,
18
+ |};
19
+ declare class ElementContainer extends React.Component<Props, State> {
25
20
  static defaultProps: {|
26
21
  initiallyVisible: boolean,
27
22
  title: string,
28
23
  |};
29
- constructor(props: ElementContainerProps): this;
24
+ constructor(props: Props): this;
30
25
  toggle: (e: SyntheticEvent<>) => void;
31
26
  render(): React.Node;
32
27
  }
@@ -5,21 +5,21 @@
5
5
  */
6
6
  import * as React from "react";
7
7
  import type { InteractiveMarkerType } from "./types";
8
- type MarkerProps = InteractiveMarkerType & {
8
+ type Props = InteractiveMarkerType & {
9
9
  showSelected: boolean;
10
10
  showPulsate: boolean;
11
11
  onClick: (e: MouseEvent) => void;
12
12
  onKeyDown: (e: KeyboardEvent) => void;
13
13
  };
14
- type MarkerState = {
14
+ type State = {
15
15
  isFocused: boolean;
16
16
  };
17
- export default class Marker extends React.Component<MarkerProps, MarkerState> {
17
+ export default class Marker extends React.Component<Props, State> {
18
18
  _icon: HTMLElement | null | undefined;
19
19
  static defaultProps: {
20
20
  selected: ReadonlyArray<any>;
21
21
  };
22
- state: MarkerState;
22
+ state: State;
23
23
  handleFocus(): void;
24
24
  handleBlur(): void;
25
25
  renderIcon(): React.ReactElement<React.ComponentProps<"div">>;
@@ -6,7 +6,7 @@
6
6
  */
7
7
  import * as React from "react";
8
8
  import type { InteractiveMarkerType } from "./types";
9
- declare type MarkerProps = {|
9
+ declare type Props = {|
10
10
  ...InteractiveMarkerType,
11
11
  ...{|
12
12
  showSelected: boolean,
@@ -15,17 +15,15 @@ declare type MarkerProps = {|
15
15
  onKeyDown: (e: KeyboardEvent) => void,
16
16
  |},
17
17
  |};
18
- declare type MarkerState = {|
18
+ declare type State = {|
19
19
  isFocused: boolean,
20
20
  |};
21
- declare export default class Marker
22
- extends React.Component<MarkerProps, MarkerState>
23
- {
21
+ declare export default class Marker extends React.Component<Props, State> {
24
22
  _icon: HTMLElement | null | void;
25
23
  static defaultProps: {|
26
24
  selected: $ReadOnlyArray<any>,
27
25
  |};
28
- state: MarkerState;
26
+ state: State;
29
27
  handleFocus(): void;
30
28
  handleBlur(): void;
31
29
  renderIcon(): React.Element<"div">;
@@ -16,7 +16,6 @@ type Props = ExternalProps & {
16
16
  answerForms: NonNullable<ExternalProps["answerForms"]>;
17
17
  labelText: NonNullable<ExternalProps["labelText"]>;
18
18
  linterContext: NonNullable<ExternalProps["linterContext"]>;
19
- multipleNumberInput: NonNullable<ExternalProps["multipleNumberInput"]>;
20
19
  currentValue: string;
21
20
  };
22
21
  type DefaultProps = {
@@ -28,7 +27,6 @@ type DefaultProps = {
28
27
  answerForms: Props["answerForms"];
29
28
  labelText: Props["labelText"];
30
29
  linterContext: Props["linterContext"];
31
- multipleNumberInput: Props["multipleNumberInput"];
32
30
  };
33
31
  type State = {
34
32
  previousValues: ReadonlyArray<string>;
@@ -31,9 +31,6 @@ declare type Props = {|
31
31
  answerForms: $NonMaybeType<$PropertyType<ExternalProps, "answerForms">>,
32
32
  labelText: $NonMaybeType<$PropertyType<ExternalProps, "labelText">>,
33
33
  linterContext: $NonMaybeType<$PropertyType<ExternalProps, "linterContext">>,
34
- multipleNumberInput: $NonMaybeType<
35
- $PropertyType<ExternalProps, "multipleNumberInput">
36
- >,
37
34
  currentValue: string,
38
35
  |},
39
36
  |};
@@ -46,7 +43,6 @@ declare type DefaultProps = {|
46
43
  answerForms: $PropertyType<Props, "answerForms">,
47
44
  labelText: $PropertyType<Props, "labelText">,
48
45
  linterContext: $PropertyType<Props, "linterContext">,
49
- multipleNumberInput: $PropertyType<Props, "multipleNumberInput">,
50
46
  |};
51
47
  declare type State = {|
52
48
  previousValues: $ReadOnlyArray<string>,
@@ -34,5 +34,11 @@ type Props = {
34
34
  registerFocusFunction?: (arg1: FocusFunction) => void;
35
35
  isLastUsedWidget?: boolean;
36
36
  };
37
- declare const BaseRadio: React.FC<Props>;
37
+ declare const BaseRadio: {
38
+ (props: Props): React.ReactElement;
39
+ defaultProps: {
40
+ editMode: boolean;
41
+ multipleSelect: boolean;
42
+ };
43
+ };
38
44
  export default BaseRadio;
@@ -40,5 +40,11 @@ declare type Props = {|
40
40
  registerFocusFunction?: (arg1: FocusFunction) => void,
41
41
  isLastUsedWidget?: boolean,
42
42
  |};
43
- declare var BaseRadio: React.StatelessFunctionalComponent<Props>;
43
+ declare var BaseRadio: {|
44
+ (props: Props): React.Element<any>,
45
+ defaultProps: {|
46
+ editMode: boolean,
47
+ multipleSelect: boolean,
48
+ |},
49
+ |};
44
50
  declare export default typeof BaseRadio;
@@ -12,5 +12,5 @@ type ChoiceIconProps = {
12
12
  reviewMode: boolean;
13
13
  previouslyAnswered: boolean;
14
14
  };
15
- declare const ChoiceIcon: React.FC<ChoiceIconProps>;
15
+ declare const ChoiceIcon: (props: ChoiceIconProps) => React.ReactElement;
16
16
  export default ChoiceIcon;
@@ -18,5 +18,5 @@ declare type ChoiceIconProps = {|
18
18
  reviewMode: boolean,
19
19
  previouslyAnswered: boolean,
20
20
  |};
21
- declare var ChoiceIcon: React.StatelessFunctionalComponent<ChoiceIconProps>;
21
+ declare var ChoiceIcon: (props: ChoiceIconProps) => React.Element<any>;
22
22
  declare export default typeof ChoiceIcon;
@@ -3,7 +3,7 @@ import * as React from "react";
3
3
  * The "cross-out line" that appears over the icon when the choice has been
4
4
  * `crossedOut`.
5
5
  */
6
- declare const CrossOutLine: React.FC<{
6
+ declare const CrossOutLine: (props: {
7
7
  color: string;
8
- }>;
8
+ }) => React.ReactElement;
9
9
  export default CrossOutLine;
@@ -10,7 +10,7 @@ import * as React from "react";
10
10
  * The "cross-out line" that appears over the icon when the choice has been
11
11
  * `crossedOut`.
12
12
  */
13
- declare var CrossOutLine: React.StatelessFunctionalComponent<{|
13
+ declare var CrossOutLine: (props: {|
14
14
  color: string,
15
- |}>;
15
+ |}) => React.Element<any>;
16
16
  declare export default typeof CrossOutLine;
@@ -8,5 +8,12 @@ type Props = {
8
8
  color: string;
9
9
  multipleSelect: boolean;
10
10
  };
11
- declare const FocusRing: React.FC<Props>;
11
+ declare const FocusRing: {
12
+ (props: Props): React.ReactElement;
13
+ defaultProps: {
14
+ visible: boolean;
15
+ color: string;
16
+ multipleSelect: boolean;
17
+ };
18
+ };
12
19
  export default FocusRing;
@@ -11,5 +11,12 @@ declare type Props = {|
11
11
  color: string,
12
12
  multipleSelect: boolean,
13
13
  |};
14
- declare var FocusRing: React.StatelessFunctionalComponent<Props>;
14
+ declare var FocusRing: {|
15
+ (props: Props): React.Element<any>,
16
+ defaultProps: {|
17
+ visible: boolean,
18
+ color: string,
19
+ multipleSelect: boolean,
20
+ |},
21
+ |};
15
22
  declare export default typeof FocusRing;
@@ -6,12 +6,12 @@
6
6
  * between the states more immediately clear to users.
7
7
  */
8
8
  import * as React from "react";
9
- type OptionStatusProps = {
9
+ type Props = {
10
10
  correct: boolean;
11
11
  checked: boolean;
12
12
  crossedOut: boolean;
13
13
  previouslyAnswered: boolean;
14
14
  reviewMode: boolean;
15
15
  };
16
- declare const OptionStatus: React.FC<OptionStatusProps>;
16
+ declare const OptionStatus: (props: Props) => React.ReactElement;
17
17
  export default OptionStatus;
@@ -5,12 +5,12 @@
5
5
  * @flow
6
6
  */
7
7
  import * as React from "react";
8
- declare type OptionStatusProps = {|
8
+ declare type Props = {|
9
9
  correct: boolean,
10
10
  checked: boolean,
11
11
  crossedOut: boolean,
12
12
  previouslyAnswered: boolean,
13
13
  reviewMode: boolean,
14
14
  |};
15
- declare var OptionStatus: React.StatelessFunctionalComponent<OptionStatusProps>;
15
+ declare var OptionStatus: (props: Props) => React.Element<any>;
16
16
  declare export default typeof OptionStatus;
@@ -8,5 +8,5 @@ type Props = {
8
8
  /**
9
9
  * Video Transcript Link Component.
10
10
  */
11
- declare const VideoTranscriptLink: React.FC<Props>;
11
+ declare const VideoTranscriptLink: (props: Props) => React.ReactElement;
12
12
  export default VideoTranscriptLink;
@@ -11,5 +11,5 @@ declare type Props = {|
11
11
  /**
12
12
  * Video Transcript Link Component.
13
13
  */
14
- declare var VideoTranscriptLink: React.StatelessFunctionalComponent<Props>;
14
+ declare var VideoTranscriptLink: (props: Props) => React.Element<any>;
15
15
  declare export default typeof VideoTranscriptLink;
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "description": "Core Perseus API (includes renderers and widgets)",
4
4
  "author": "Khan Academy",
5
5
  "license": "MIT",
6
- "version": "4.0.2",
6
+ "version": "5.0.0",
7
7
  "publishConfig": {
8
8
  "access": "public"
9
9
  },
@@ -23,10 +23,10 @@
23
23
  "dependencies": {
24
24
  "@khanacademy/kas": "^0.3.1",
25
25
  "@khanacademy/kmath": "^0.1.1",
26
- "@khanacademy/math-input": "^0.7.2",
26
+ "@khanacademy/math-input": "^1.0.0",
27
27
  "@khanacademy/perseus-linter": "^0.3.1",
28
- "@khanacademy/pure-markdown": "^0.2.2",
29
- "@khanacademy/simple-markdown": "^0.9.2",
28
+ "@khanacademy/pure-markdown": "^0.2.3",
29
+ "@khanacademy/simple-markdown": "^0.9.3",
30
30
  "mathquill": "git+https://git@github.com/Khan/mathquill.git#a9ae54e057c5c1acc8244a5627acbff29901d992"
31
31
  },
32
32
  "devDependencies": {
@@ -16,14 +16,10 @@ export default {
16
16
  title: "Perseus/Renderers/Item Renderer",
17
17
  } as Story;
18
18
 
19
- export const InputNumberItem: React.FC<StoryArgs> = (
20
- args,
21
- ): React.ReactElement => {
19
+ export const InputNumberItem = (args: StoryArgs): React.ReactElement => {
22
20
  return <ItemRendererWithDebugUI item={itemWithInput} />;
23
21
  };
24
22
 
25
- export const LabelImageItem: React.FC<StoryArgs> = (
26
- args,
27
- ): React.ReactElement => {
23
+ export const LabelImageItem = (args: StoryArgs): React.ReactElement => {
28
24
  return <ItemRendererWithDebugUI item={labelImageItem} />;
29
25
  };
@@ -16,14 +16,10 @@ export default {
16
16
  title: "Perseus/Renderers/Server Item Renderer",
17
17
  } as Story;
18
18
 
19
- export const InputNumberItem: React.FC<StoryArgs> = (
20
- args,
21
- ): React.ReactElement => {
19
+ export const InputNumberItem = (args: StoryArgs): React.ReactElement => {
22
20
  return <ServerItemRendererWithDebugUI item={itemWithInput} />;
23
21
  };
24
22
 
25
- export const LabelImageItem: React.FC<StoryArgs> = (
26
- args,
27
- ): React.ReactElement => {
23
+ export const LabelImageItem = (args: StoryArgs): React.ReactElement => {
28
24
  return <ServerItemRendererWithDebugUI item={labelImageItem} />;
29
25
  };
@@ -30,9 +30,7 @@ const HarnassedButtonGroup = (
30
30
  );
31
31
  };
32
32
 
33
- export const ButtonsWithNoTitles: React.FC<StoryArgs> = (
34
- args,
35
- ): React.ReactElement => {
33
+ export const ButtonsWithNoTitles = (args: StoryArgs): React.ReactElement => {
36
34
  return (
37
35
  <HarnassedButtonGroup
38
36
  buttons={[
@@ -44,9 +42,7 @@ export const ButtonsWithNoTitles: React.FC<StoryArgs> = (
44
42
  );
45
43
  };
46
44
 
47
- export const ButtonsWithTitles: React.FC<StoryArgs> = (
48
- args,
49
- ): React.ReactElement => {
45
+ export const ButtonsWithTitles = (args: StoryArgs): React.ReactElement => {
50
46
  return (
51
47
  <HarnassedButtonGroup
52
48
  buttons={[
@@ -21,8 +21,8 @@ export default {
21
21
  title: "Perseus/Components/Fixed to Responsive",
22
22
  } as Story;
23
23
 
24
- export const SmallImageWithSmallContainer: React.FC<StoryArgs> = (
25
- args,
24
+ export const SmallImageWithSmallContainer = (
25
+ args: StoryArgs,
26
26
  ): React.ReactElement => {
27
27
  return (
28
28
  <FixedToResponsive width={width} height={sizeSmall}>
@@ -36,8 +36,8 @@ export const SmallImageWithSmallContainer: React.FC<StoryArgs> = (
36
36
  );
37
37
  };
38
38
 
39
- export const SmallImageWithMediumContainer: React.FC<StoryArgs> = (
40
- args,
39
+ export const SmallImageWithMediumContainer = (
40
+ args: StoryArgs,
41
41
  ): React.ReactElement => {
42
42
  return (
43
43
  <FixedToResponsive width={width} height={sizeMedium}>
@@ -51,8 +51,8 @@ export const SmallImageWithMediumContainer: React.FC<StoryArgs> = (
51
51
  );
52
52
  };
53
53
 
54
- export const LargeImageWithLargeContainer: React.FC<StoryArgs> = (
55
- args,
54
+ export const LargeImageWithLargeContainer = (
55
+ args: StoryArgs,
56
56
  ): React.ReactElement => {
57
57
  return (
58
58
  <FixedToResponsive width={width} height={sizeLarge}>
@@ -66,8 +66,8 @@ export const LargeImageWithLargeContainer: React.FC<StoryArgs> = (
66
66
  );
67
67
  };
68
68
 
69
- export const LargeImageWithSmallerContainer: React.FC<StoryArgs> = (
70
- args,
69
+ export const LargeImageWithSmallerContainer = (
70
+ args: StoryArgs,
71
71
  ): React.ReactElement => {
72
72
  return (
73
73
  <FixedToResponsive width={width} height={sizeSmall}>
@@ -81,9 +81,9 @@ export const LargeImageWithSmallerContainer: React.FC<StoryArgs> = (
81
81
  );
82
82
  };
83
83
 
84
- export const TwoOverlayedImagesInsteadOneResponsiveContainer: React.FC<
85
- StoryArgs
86
- > = (args): React.ReactElement => {
84
+ export const TwoOverlayedImagesInsteadOneResponsiveContainer = (
85
+ args: StoryArgs,
86
+ ): React.ReactElement => {
87
87
  return (
88
88
  <FixedToResponsive width={width} height={sizeSmall}>
89
89
  <img
@@ -104,8 +104,8 @@ export const TwoOverlayedImagesInsteadOneResponsiveContainer: React.FC<
104
104
  );
105
105
  };
106
106
 
107
- export const HeightConstrainingAnImage: React.FC<StoryArgs> = (
108
- args,
107
+ export const HeightConstrainingAnImage = (
108
+ args: StoryArgs,
109
109
  ): React.ReactElement => {
110
110
  return (
111
111
  <FixedToResponsive
@@ -123,9 +123,7 @@ export const HeightConstrainingAnImage: React.FC<StoryArgs> = (
123
123
  );
124
124
  };
125
125
 
126
- export const AllowingFullBleed: React.FC<StoryArgs> = (
127
- args,
128
- ): React.ReactElement => {
126
+ export const AllowingFullBleed = (args: StoryArgs): React.ReactElement => {
129
127
  return (
130
128
  <FixedToResponsive
131
129
  width={width}
@@ -15,15 +15,13 @@ export default {
15
15
  title: "Perseus/Components/Graph",
16
16
  } as Story;
17
17
 
18
- export const SquareBoxSizeAndOtherwiseEmpty: React.FC<StoryArgs> = (
19
- args,
18
+ export const SquareBoxSizeAndOtherwiseEmpty = (
19
+ args: StoryArgs,
20
20
  ): React.ReactElement => {
21
21
  return <Graph box={[size, size]} />;
22
22
  };
23
23
 
24
- export const LabeledSquaredBox: React.FC<StoryArgs> = (
25
- args,
26
- ): React.ReactElement => {
24
+ export const LabeledSquaredBox = (args: StoryArgs): React.ReactElement => {
27
25
  return (
28
26
  <Graph box={[size, size]} labels={["First label", "Second label"]} />
29
27
  );
@@ -16,8 +16,8 @@ export default {
16
16
  title: "Perseus/Components/Graphie",
17
17
  } as Story;
18
18
 
19
- export const SquareBoxSizeAndOtherwiseEmpty: React.FC<StoryArgs> = (
20
- args,
19
+ export const SquareBoxSizeAndOtherwiseEmpty = (
20
+ args: StoryArgs,
21
21
  ): React.ReactElement => {
22
22
  return (
23
23
  <Graphie
@@ -28,8 +28,6 @@ export const SquareBoxSizeAndOtherwiseEmpty: React.FC<StoryArgs> = (
28
28
  );
29
29
  };
30
30
 
31
- export const PieChartGraphieLabels: React.FC<StoryArgs> = (
32
- args,
33
- ): React.ReactElement => {
31
+ export const PieChartGraphieLabels = (args: StoryArgs): React.ReactElement => {
34
32
  return <ItemRendererWithDebugUI item={itemWithPieChart} />;
35
33
  };
@@ -12,9 +12,7 @@ export default {
12
12
  title: "Perseus/Components/HUD",
13
13
  } as Story;
14
14
 
15
- export const TestMessageDisabled: React.FC<StoryArgs> = (
16
- args,
17
- ): React.ReactElement => {
15
+ export const TestMessageDisabled = (args: StoryArgs): React.ReactElement => {
18
16
  return (
19
17
  <Hud
20
18
  fixedPosition={false}
@@ -25,9 +23,7 @@ export const TestMessageDisabled: React.FC<StoryArgs> = (
25
23
  );
26
24
  };
27
25
 
28
- export const TestMessageEnabled: React.FC<StoryArgs> = (
29
- args,
30
- ): React.ReactElement => {
26
+ export const TestMessageEnabled = (args: StoryArgs): React.ReactElement => {
31
27
  return (
32
28
  <Hud
33
29
  fixedPosition={false}
@@ -54,7 +54,7 @@ export default {
54
54
  },
55
55
  } as Story;
56
56
 
57
- export const Icon: React.FC<StoryArgs> = (args): React.ReactElement => (
57
+ export const Icon = (args: StoryArgs): React.ReactElement => (
58
58
  <IconComponent
59
59
  style={{display: "block"}}
60
60
  icon={IconPaths.iconCheck}
@@ -15,7 +15,7 @@ export default {
15
15
  title: "Perseus/Components/Image Loader",
16
16
  } as Story;
17
17
 
18
- export const SvgImage: React.FC<StoryArgs> = (args): React.ReactElement => {
18
+ export const SvgImage = (args: StoryArgs): React.ReactElement => {
19
19
  return (
20
20
  <ImageLoader
21
21
  src={svgUrl}
@@ -29,7 +29,7 @@ export const SvgImage: React.FC<StoryArgs> = (args): React.ReactElement => {
29
29
  );
30
30
  };
31
31
 
32
- export const PngImage: React.FC<StoryArgs> = (args): React.ReactElement => {
32
+ export const PngImage = (args: StoryArgs): React.ReactElement => {
33
33
  return (
34
34
  <ImageLoader
35
35
  src={imgUrl}
@@ -43,8 +43,8 @@ export const PngImage: React.FC<StoryArgs> = (args): React.ReactElement => {
43
43
  );
44
44
  };
45
45
 
46
- export const InvalidImageWithChildrenForFailedLoading: React.FC<StoryArgs> = (
47
- args,
46
+ export const InvalidImageWithChildrenForFailedLoading = (
47
+ args: StoryArgs,
48
48
  ): React.ReactElement => {
49
49
  return (
50
50
  <ImageLoader