@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.
- package/CHANGELOG.md +15 -0
- package/dist/components/highlighting/highlightable-content.d.ts +4 -4
- package/dist/components/highlighting/highlightable-content.js.flow +4 -7
- package/dist/components/highlighting/ui/highlight-renderer.d.ts +6 -6
- package/dist/components/highlighting/ui/highlight-renderer.js.flow +6 -8
- package/dist/components/highlighting/ui/highlight-set-renderer.d.ts +5 -5
- package/dist/components/highlighting/ui/highlight-set-renderer.js.flow +5 -8
- package/dist/components/highlighting/ui/highlight-tooltip.d.ts +2 -2
- package/dist/components/highlighting/ui/highlight-tooltip.js.flow +2 -4
- package/dist/components/highlighting/ui/highlighting-ui.d.ts +2 -2
- package/dist/components/highlighting/ui/highlighting-ui.js.flow +2 -2
- package/dist/components/highlighting/ui/selection-tracker.d.ts +5 -5
- package/dist/components/highlighting/ui/selection-tracker.js.flow +5 -7
- package/dist/components/highlighting/word-indexer.d.ts +2 -2
- package/dist/components/highlighting/word-indexer.js.flow +2 -2
- package/dist/components/inline-icon.d.ts +35 -1
- package/dist/components/inline-icon.js.flow +11 -1
- package/dist/components/simple-keypad-input.d.ts +1 -1
- package/dist/components/simple-keypad-input.js.flow +1 -1
- package/dist/components/tex-buttons.d.ts +2 -2
- package/dist/components/tex-buttons.js.flow +2 -2
- package/dist/error-boundary.d.ts +4 -4
- package/dist/error-boundary.js.flow +4 -6
- package/dist/es/index.js +7 -10
- package/dist/es/index.js.map +1 -1
- package/dist/index.js +7 -10
- package/dist/index.js.map +1 -1
- package/dist/perseus-types.d.ts +0 -1
- package/dist/perseus-types.js.flow +0 -1
- package/dist/widgets/__stories__/test-keypad-context-wrapper.d.ts +2 -2
- package/dist/widgets/__stories__/test-keypad-context-wrapper.js.flow +2 -4
- package/dist/widgets/expression.d.ts +2 -2
- package/dist/widgets/expression.js.flow +2 -2
- package/dist/widgets/interaction/element-container.d.ts +5 -4
- package/dist/widgets/interaction/element-container.js.flow +6 -11
- package/dist/widgets/label-image/marker.d.ts +4 -4
- package/dist/widgets/label-image/marker.js.flow +4 -6
- package/dist/widgets/numeric-input.d.ts +0 -2
- package/dist/widgets/numeric-input.js.flow +0 -4
- package/dist/widgets/radio/base-radio.d.ts +7 -1
- package/dist/widgets/radio/base-radio.js.flow +7 -1
- package/dist/widgets/radio/choice-icon/choice-icon.d.ts +1 -1
- package/dist/widgets/radio/choice-icon/choice-icon.js.flow +1 -1
- package/dist/widgets/radio/choice-icon/cross-out-line.d.ts +2 -2
- package/dist/widgets/radio/choice-icon/cross-out-line.js.flow +2 -2
- package/dist/widgets/radio/focus-ring.d.ts +8 -1
- package/dist/widgets/radio/focus-ring.js.flow +8 -1
- package/dist/widgets/radio/option-status.d.ts +2 -2
- package/dist/widgets/radio/option-status.js.flow +2 -2
- package/dist/widgets/video-transcript-link.d.ts +1 -1
- package/dist/widgets/video-transcript-link.js.flow +1 -1
- package/package.json +4 -4
- package/src/__stories__/item-renderer.stories.tsx +2 -6
- package/src/__stories__/server-item-renderer.stories.tsx +2 -6
- package/src/components/__stories__/button-group.stories.tsx +2 -6
- package/src/components/__stories__/fixed-to-responsive.stories.tsx +14 -16
- package/src/components/__stories__/graph.stories.tsx +3 -5
- package/src/components/__stories__/graphie.stories.tsx +3 -5
- package/src/components/__stories__/hud.stories.tsx +2 -6
- package/src/components/__stories__/icon.stories.tsx +1 -1
- package/src/components/__stories__/image-loader.stories.tsx +4 -4
- package/src/components/__stories__/info-tip.stories.tsx +2 -6
- package/src/components/__stories__/inline-icon.stories.tsx +4 -8
- package/src/components/__stories__/input-with-examples.stories.tsx +6 -10
- package/src/components/__stories__/lint.stories.tsx +12 -12
- package/src/components/__stories__/math-input.stories.tsx +4 -8
- package/src/components/__stories__/math-output.stories.tsx +3 -5
- package/src/components/__stories__/multi-button-group.stories.tsx +2 -6
- package/src/components/__stories__/number-input.stories.tsx +6 -8
- package/src/components/__stories__/prop-check-box.stories.tsx +9 -9
- package/src/components/__stories__/range-input.stories.tsx +4 -6
- package/src/components/__stories__/simple-keypad-input.stories.tsx +2 -4
- package/src/components/__stories__/sortable.stories.tsx +15 -15
- package/src/components/__stories__/stub-tag-editor.stories.tsx +5 -9
- package/src/components/__stories__/svg-image.stories.tsx +10 -18
- package/src/components/__stories__/tex.stories.tsx +1 -3
- package/src/components/__stories__/text-buttons.stories.tsx +10 -22
- package/src/components/__stories__/text-input.stories.tsx +4 -10
- package/src/components/__stories__/text-list-editor.stories.tsx +1 -3
- package/src/components/__stories__/zoomable-tex.stories.tsx +6 -4
- package/src/components/__stories__/zoomable.stories.tsx +1 -3
- package/src/components/highlighting/highlightable-content.tsx +4 -7
- package/src/components/highlighting/ui/highlight-renderer.tsx +6 -9
- package/src/components/highlighting/ui/highlight-set-renderer.tsx +5 -8
- package/src/components/highlighting/ui/highlight-tooltip.tsx +2 -2
- package/src/components/highlighting/ui/highlighting-ui.tsx +2 -2
- package/src/components/highlighting/ui/selection-tracker.tsx +5 -8
- package/src/components/highlighting/word-indexer.tsx +2 -2
- package/src/components/inline-icon.tsx +2 -2
- package/src/components/simple-keypad-input.tsx +2 -2
- package/src/components/tex-buttons.tsx +2 -2
- package/src/components/visibility-observer/__stories__/visibility-observer.stories.tsx +1 -3
- package/src/error-boundary.tsx +4 -7
- package/src/multi-items/__stories__/multi-renderer.stories.tsx +1 -1
- package/src/multi-items/__tests__/multi-renderer.test.tsx +2 -3
- package/src/perseus-types.ts +0 -3
- package/src/util/graphie.ts +3 -3
- package/src/widgets/__stories__/categorizer.stories.tsx +1 -1
- package/src/widgets/__stories__/cs-program.stories.tsx +1 -1
- package/src/widgets/__stories__/definition.stories.tsx +3 -7
- package/src/widgets/__stories__/dropdown.stories.tsx +1 -1
- package/src/widgets/__stories__/explanation.stories.tsx +2 -2
- package/src/widgets/__stories__/expression.stories.tsx +5 -11
- package/src/widgets/__stories__/graded-group-set.stories.tsx +1 -1
- package/src/widgets/__stories__/graded-group.stories.tsx +1 -1
- package/src/widgets/__stories__/grapher.stories.tsx +7 -21
- package/src/widgets/__stories__/group.stories.tsx +1 -1
- package/src/widgets/__stories__/iframe.stories.tsx +1 -1
- package/src/widgets/__stories__/image.stories.tsx +1 -1
- package/src/widgets/__stories__/input-number.stories.tsx +3 -12
- package/src/widgets/__stories__/interaction.stories.tsx +1 -1
- package/src/widgets/__stories__/interactive-graph.stories.tsx +9 -9
- package/src/widgets/__stories__/matcher.stories.tsx +1 -1
- package/src/widgets/__stories__/matrix.stories.tsx +1 -1
- package/src/widgets/__stories__/number-line.stories.tsx +1 -1
- package/src/widgets/__stories__/numeric-input.stories.tsx +3 -5
- package/src/widgets/__stories__/orderer.stories.tsx +1 -1
- package/src/widgets/__stories__/passage-ref.stories.tsx +2 -2
- package/src/widgets/__stories__/passage.stories.tsx +3 -9
- package/src/widgets/__stories__/radio.stories.tsx +3 -5
- package/src/widgets/__stories__/sorter.stories.tsx +1 -1
- package/src/widgets/__stories__/test-keypad-context-wrapper.tsx +2 -4
- package/src/widgets/__stories__/transformer.stories.tsx +1 -1
- package/src/widgets/__stories__/unit.stories.tsx +1 -3
- package/src/widgets/__stories__/video-transcript-link.stories.tsx +2 -6
- package/src/widgets/__stories__/video.stories.tsx +1 -1
- package/src/widgets/__testdata__/group.testdata.ts +0 -2
- package/src/widgets/__tests__/group.test.tsx +0 -2
- package/src/widgets/__tests__/radio/focus-ring.test.tsx +0 -1
- package/src/widgets/expression.tsx +3 -3
- package/src/widgets/interaction/element-container.tsx +7 -8
- package/src/widgets/label-image/__stories__/answer-choices.stories.tsx +2 -4
- package/src/widgets/label-image/__stories__/marker.stories.tsx +9 -19
- package/src/widgets/label-image/marker.tsx +4 -4
- package/src/widgets/numeric-input.tsx +0 -3
- package/src/widgets/passage/passage-markdown.tsx +2 -2
- package/src/widgets/radio/__stories__/base-radio.stories.tsx +11 -19
- package/src/widgets/radio/__stories__/choice-icon.stories.tsx +9 -11
- package/src/widgets/radio/__stories__/choice-none-above.stories.tsx +1 -1
- package/src/widgets/radio/__stories__/choice.stories.tsx +4 -4
- package/src/widgets/radio/__stories__/focus-ring.stories.tsx +1 -1
- package/src/widgets/radio/__stories__/option-status.stories.tsx +2 -4
- package/src/widgets/radio/base-radio.tsx +1 -1
- package/src/widgets/radio/choice-icon/choice-icon.tsx +5 -5
- package/src/widgets/radio/choice-icon/cross-out-line.tsx +1 -3
- package/src/widgets/radio/choice-none-above.tsx +2 -2
- package/src/widgets/radio/choice.tsx +1 -3
- package/src/widgets/radio/focus-ring.tsx +1 -1
- package/src/widgets/radio/option-status.tsx +2 -4
- package/src/widgets/radio/widget.tsx +0 -1
- package/src/widgets/reaction-diagram.tsx +2 -2
- package/src/widgets/video-transcript-link.tsx +1 -1
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -40,13 +40,11 @@ export default {
|
|
|
40
40
|
args: defaultProps,
|
|
41
41
|
};
|
|
42
42
|
|
|
43
|
-
const Panel: React.
|
|
44
|
-
children: React.ReactNode;
|
|
45
|
-
}> = (props): React.ReactElement => {
|
|
43
|
+
const Panel = (props: {children: React.ReactNode}): React.ReactElement => {
|
|
46
44
|
return <div style={{padding: "10px"}}>{props.children}</div>;
|
|
47
45
|
};
|
|
48
46
|
|
|
49
|
-
export const Interactive
|
|
47
|
+
export const Interactive = (args: StoryArgs): React.ReactElement => {
|
|
50
48
|
return (
|
|
51
49
|
<Panel>
|
|
52
50
|
<ChoiceIcon {...args} />
|
|
@@ -54,7 +52,7 @@ export const Interactive: React.FC<StoryArgs> = (args): React.ReactElement => {
|
|
|
54
52
|
);
|
|
55
53
|
};
|
|
56
54
|
|
|
57
|
-
export const Default
|
|
55
|
+
export const Default = (args: StoryArgs): React.ReactElement => {
|
|
58
56
|
return (
|
|
59
57
|
<Panel>
|
|
60
58
|
<ChoiceIcon {...defaultProps} />
|
|
@@ -63,7 +61,7 @@ export const Default: React.FC<StoryArgs> = (args): React.ReactElement => {
|
|
|
63
61
|
);
|
|
64
62
|
};
|
|
65
63
|
|
|
66
|
-
export const Focused
|
|
64
|
+
export const Focused = (args: StoryArgs): React.ReactElement => {
|
|
67
65
|
return (
|
|
68
66
|
<Panel>
|
|
69
67
|
<ChoiceIcon {...defaultProps} focused={true} />
|
|
@@ -76,7 +74,7 @@ export const Focused: React.FC<StoryArgs> = (args): React.ReactElement => {
|
|
|
76
74
|
);
|
|
77
75
|
};
|
|
78
76
|
|
|
79
|
-
export const Checked
|
|
77
|
+
export const Checked = (args: StoryArgs): React.ReactElement => {
|
|
80
78
|
return (
|
|
81
79
|
<Panel>
|
|
82
80
|
<ChoiceIcon {...defaultProps} checked={true} />
|
|
@@ -89,7 +87,7 @@ export const Checked: React.FC<StoryArgs> = (args): React.ReactElement => {
|
|
|
89
87
|
);
|
|
90
88
|
};
|
|
91
89
|
|
|
92
|
-
export const CrossedOut
|
|
90
|
+
export const CrossedOut = (args: StoryArgs): React.ReactElement => {
|
|
93
91
|
return (
|
|
94
92
|
<Panel>
|
|
95
93
|
<ChoiceIcon {...defaultProps} crossedOut={true} />
|
|
@@ -102,7 +100,7 @@ export const CrossedOut: React.FC<StoryArgs> = (args): React.ReactElement => {
|
|
|
102
100
|
);
|
|
103
101
|
};
|
|
104
102
|
|
|
105
|
-
export const Correct
|
|
103
|
+
export const Correct = (args: StoryArgs): React.ReactElement => {
|
|
106
104
|
return (
|
|
107
105
|
<Panel>
|
|
108
106
|
<ChoiceIcon
|
|
@@ -124,7 +122,7 @@ export const Correct: React.FC<StoryArgs> = (args): React.ReactElement => {
|
|
|
124
122
|
);
|
|
125
123
|
};
|
|
126
124
|
|
|
127
|
-
export const Incorrect
|
|
125
|
+
export const Incorrect = (args: StoryArgs): React.ReactElement => {
|
|
128
126
|
return (
|
|
129
127
|
<Panel>
|
|
130
128
|
<ChoiceIcon
|
|
@@ -146,7 +144,7 @@ export const Incorrect: React.FC<StoryArgs> = (args): React.ReactElement => {
|
|
|
146
144
|
);
|
|
147
145
|
};
|
|
148
146
|
|
|
149
|
-
export const AllPositions
|
|
147
|
+
export const AllPositions = (args: StoryArgs): React.ReactElement => {
|
|
150
148
|
// @ts-expect-error [FEI-5003] - TS2554 - Expected 1-3 arguments, but got 0.
|
|
151
149
|
const allLetters = Array(26).fill();
|
|
152
150
|
return (
|
|
@@ -34,7 +34,7 @@ const ChoiceDefaults = {
|
|
|
34
34
|
onChange: action("changed"),
|
|
35
35
|
} as const;
|
|
36
36
|
|
|
37
|
-
export const Example
|
|
37
|
+
export const Example = (args: StoryArgs): React.ReactElement => {
|
|
38
38
|
const combineProps = {...ChoiceDefaults, ...args} as const;
|
|
39
39
|
return <ChoiceNoneAbove {...combineProps} />;
|
|
40
40
|
};
|
|
@@ -45,11 +45,11 @@ export default {
|
|
|
45
45
|
args: defaultProps,
|
|
46
46
|
} as Story;
|
|
47
47
|
|
|
48
|
-
export const Interactive
|
|
48
|
+
export const Interactive = (args: StoryArgs): React.ReactElement => {
|
|
49
49
|
return <Choice {...args} />;
|
|
50
50
|
};
|
|
51
51
|
|
|
52
|
-
export const Checked
|
|
52
|
+
export const Checked = (args: StoryArgs): React.ReactElement => {
|
|
53
53
|
const sharedProps = {
|
|
54
54
|
...defaultProps,
|
|
55
55
|
checked: true,
|
|
@@ -73,7 +73,7 @@ export const Checked: React.FC<StoryArgs> = (args): React.ReactElement => {
|
|
|
73
73
|
);
|
|
74
74
|
};
|
|
75
75
|
|
|
76
|
-
export const ReviewMode
|
|
76
|
+
export const ReviewMode = (args: StoryArgs): React.ReactElement => {
|
|
77
77
|
const sharedProps = {
|
|
78
78
|
...defaultProps,
|
|
79
79
|
showCorrectness: true,
|
|
@@ -108,7 +108,7 @@ export const ReviewMode: React.FC<StoryArgs> = (args): React.ReactElement => {
|
|
|
108
108
|
);
|
|
109
109
|
};
|
|
110
110
|
|
|
111
|
-
export const Rationale
|
|
111
|
+
export const Rationale = (args: StoryArgs): React.ReactElement => {
|
|
112
112
|
const sharedProps = {
|
|
113
113
|
...defaultProps,
|
|
114
114
|
checked: true,
|
|
@@ -25,7 +25,7 @@ export default {
|
|
|
25
25
|
},
|
|
26
26
|
} as Story;
|
|
27
27
|
|
|
28
|
-
export const Interactive
|
|
28
|
+
export const Interactive = (args: StoryArgs): React.ReactElement => {
|
|
29
29
|
// faux choice is just for demonstration
|
|
30
30
|
const fauxChoiceStyles = {
|
|
31
31
|
height: "20px",
|
|
@@ -26,13 +26,11 @@ export default {
|
|
|
26
26
|
},
|
|
27
27
|
} as Story;
|
|
28
28
|
|
|
29
|
-
export const Interactive
|
|
29
|
+
export const Interactive = (args: StoryArgs): React.ReactElement => {
|
|
30
30
|
return <OptionStatus {...args} />;
|
|
31
31
|
};
|
|
32
32
|
|
|
33
|
-
export const AllPossibleOutputs: React.
|
|
34
|
-
args,
|
|
35
|
-
): React.ReactElement => {
|
|
33
|
+
export const AllPossibleOutputs = (args: StoryArgs): React.ReactElement => {
|
|
36
34
|
return (
|
|
37
35
|
<>
|
|
38
36
|
<div>
|
|
@@ -86,7 +86,7 @@ function getInstructionsText(
|
|
|
86
86
|
return i18n._("Choose 1 answer:");
|
|
87
87
|
}
|
|
88
88
|
|
|
89
|
-
const BaseRadio
|
|
89
|
+
const BaseRadio = function (props: Props): React.ReactElement {
|
|
90
90
|
const {
|
|
91
91
|
apiOptions,
|
|
92
92
|
reviewModeRubric,
|
|
@@ -27,11 +27,13 @@ type ChoiceIconProps = {
|
|
|
27
27
|
previouslyAnswered: boolean;
|
|
28
28
|
};
|
|
29
29
|
|
|
30
|
-
|
|
30
|
+
type ChoiceInnerProps = {
|
|
31
31
|
pos: number;
|
|
32
32
|
showCorrectness: boolean;
|
|
33
33
|
correct: boolean | null | undefined;
|
|
34
|
-
}
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
function ChoiceInner(props: ChoiceInnerProps) {
|
|
35
37
|
const {pos, showCorrectness, correct} = props;
|
|
36
38
|
const letter = getChoiceLetter(pos);
|
|
37
39
|
|
|
@@ -96,9 +98,7 @@ function getDynamicStyles(
|
|
|
96
98
|
return {backgroundColor, borderColor, color, borderRadius};
|
|
97
99
|
}
|
|
98
100
|
|
|
99
|
-
const ChoiceIcon
|
|
100
|
-
props,
|
|
101
|
-
): React.ReactElement {
|
|
101
|
+
const ChoiceIcon = function (props: ChoiceIconProps): React.ReactElement {
|
|
102
102
|
const {
|
|
103
103
|
checked,
|
|
104
104
|
crossedOut,
|
|
@@ -14,9 +14,7 @@ const CROSS_OUT_LINE_SIZE = CHOICE_ICON_SIZE + CROSS_OUT_LINE_PADDING * 2;
|
|
|
14
14
|
* The "cross-out line" that appears over the icon when the choice has been
|
|
15
15
|
* `crossedOut`.
|
|
16
16
|
*/
|
|
17
|
-
const CrossOutLine: React.
|
|
18
|
-
color: string;
|
|
19
|
-
}> = function (props): React.ReactElement {
|
|
17
|
+
const CrossOutLine = function (props: {color: string}): React.ReactElement {
|
|
20
18
|
return (
|
|
21
19
|
<svg
|
|
22
20
|
width={CROSS_OUT_LINE_SIZE}
|
|
@@ -17,8 +17,8 @@ type WithForwardRef = {
|
|
|
17
17
|
|
|
18
18
|
type PropsWithForwardRef = Props & WithForwardRef;
|
|
19
19
|
|
|
20
|
-
const ChoiceNoneAbove
|
|
21
|
-
props,
|
|
20
|
+
const ChoiceNoneAbove = function (
|
|
21
|
+
props: PropsWithForwardRef,
|
|
22
22
|
): React.ReactElement {
|
|
23
23
|
const {showContent, content, forwardedRef, ...rest} = props;
|
|
24
24
|
|
|
@@ -78,9 +78,7 @@ function uniqueId() {
|
|
|
78
78
|
return `choice-${id++}`;
|
|
79
79
|
}
|
|
80
80
|
|
|
81
|
-
const Choice
|
|
82
|
-
props,
|
|
83
|
-
): React.ReactElement {
|
|
81
|
+
const Choice = function (props: ChoicePropsWithForwardRef): React.ReactElement {
|
|
84
82
|
const {
|
|
85
83
|
disabled = false,
|
|
86
84
|
checked = false,
|
|
@@ -18,7 +18,7 @@ type Props = {
|
|
|
18
18
|
multipleSelect: boolean;
|
|
19
19
|
};
|
|
20
20
|
|
|
21
|
-
const FocusRing
|
|
21
|
+
const FocusRing = function (props: Props): React.ReactElement {
|
|
22
22
|
const {visible, color, children, multipleSelect} = props;
|
|
23
23
|
|
|
24
24
|
const borderColor = visible ? color : "transparent";
|
|
@@ -11,7 +11,7 @@ import * as i18n from "@khanacademy/wonder-blocks-i18n";
|
|
|
11
11
|
import {StyleSheet, css} from "aphrodite";
|
|
12
12
|
import * as React from "react";
|
|
13
13
|
|
|
14
|
-
type
|
|
14
|
+
type Props = {
|
|
15
15
|
// Was this option the correct answer?
|
|
16
16
|
correct: boolean;
|
|
17
17
|
// Did the user select this option as the answer?
|
|
@@ -47,9 +47,7 @@ function renderText(
|
|
|
47
47
|
return i18n._("Incorrect");
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
-
const OptionStatus
|
|
51
|
-
props,
|
|
52
|
-
): React.ReactElement {
|
|
50
|
+
const OptionStatus = function (props: Props): React.ReactElement {
|
|
53
51
|
const {checked, correct, crossedOut, previouslyAnswered, reviewMode} =
|
|
54
52
|
props;
|
|
55
53
|
|
|
@@ -502,7 +502,6 @@ class Radio extends React.Component<Props> {
|
|
|
502
502
|
return (
|
|
503
503
|
<BaseRadio
|
|
504
504
|
labelWrap={true}
|
|
505
|
-
// @ts-expect-error [FEI-5003] - TS2322 - Type 'boolean | undefined' is not assignable to type 'boolean'.
|
|
506
505
|
multipleSelect={this.props.multipleSelect}
|
|
507
506
|
countChoices={this.props.countChoices}
|
|
508
507
|
numCorrect={this.props.numCorrect}
|
|
@@ -7,6 +7,8 @@ import {Molecule} from "./molecule";
|
|
|
7
7
|
import type {WidgetExports} from "../types";
|
|
8
8
|
|
|
9
9
|
class Separator extends React.Component<any> {
|
|
10
|
+
arrowLength = 100;
|
|
11
|
+
|
|
10
12
|
static propTypes = {
|
|
11
13
|
// TODO(colin): figure out and add shape.
|
|
12
14
|
data: PropTypes.any,
|
|
@@ -21,8 +23,6 @@ class Separator extends React.Component<any> {
|
|
|
21
23
|
this.drawArrow();
|
|
22
24
|
}
|
|
23
25
|
|
|
24
|
-
arrowLength = 100;
|
|
25
|
-
|
|
26
26
|
drawArrow = () => {
|
|
27
27
|
// eslint-disable-next-line react/no-string-refs
|
|
28
28
|
const canvas = this.refs["arrowCanvas" + this.props.index];
|
|
@@ -31,7 +31,7 @@ type Props = {
|
|
|
31
31
|
/**
|
|
32
32
|
* Video Transcript Link Component.
|
|
33
33
|
*/
|
|
34
|
-
const VideoTranscriptLink
|
|
34
|
+
const VideoTranscriptLink = (props: Props): React.ReactElement => {
|
|
35
35
|
const {location} = props;
|
|
36
36
|
const {useVideo} = getDependencies();
|
|
37
37
|
const [id, kind] = IS_URL.test(location)
|