@pie-lib/text-select 1.32.2 → 1.32.3-next.155
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 +7 -78
- package/esm/package.json +3 -0
- package/lib/index.js +1 -12
- package/lib/index.js.map +1 -1
- package/lib/legend.js +87 -94
- package/lib/legend.js.map +1 -1
- package/lib/text-select.js +18 -51
- package/lib/text-select.js.map +1 -1
- package/lib/token-select/index.js +85 -128
- package/lib/token-select/index.js.map +1 -1
- package/lib/token-select/token.js +152 -192
- package/lib/token-select/token.js.map +1 -1
- package/lib/tokenizer/builder.js +23 -68
- package/lib/tokenizer/builder.js.map +1 -1
- package/lib/tokenizer/controls.js +50 -81
- package/lib/tokenizer/controls.js.map +1 -1
- package/lib/tokenizer/index.js +32 -88
- package/lib/tokenizer/index.js.map +1 -1
- package/lib/tokenizer/selection-utils.js +2 -12
- package/lib/tokenizer/selection-utils.js.map +1 -1
- package/lib/tokenizer/token-text.js +45 -78
- package/lib/tokenizer/token-text.js.map +1 -1
- package/lib/utils.js +8 -24
- package/lib/utils.js.map +1 -1
- package/package.json +23 -16
- package/src/__tests__/text-select.test.jsx +33 -23
- package/src/legend.js +76 -70
- package/src/token-select/__tests__/index.test.jsx +110 -242
- package/src/token-select/__tests__/token.test.jsx +21 -24
- package/src/token-select/index.jsx +73 -66
- package/src/token-select/token.jsx +126 -124
- package/src/tokenizer/__tests__/controls.test.jsx +20 -18
- package/src/tokenizer/__tests__/index.test.jsx +27 -120
- package/src/tokenizer/__tests__/token-text.test.jsx +23 -117
- package/src/tokenizer/controls.jsx +40 -42
- package/src/tokenizer/index.jsx +15 -18
- package/src/tokenizer/token-text.jsx +12 -10
- package/src/__tests__/__snapshots__/text-select.test.jsx.snap +0 -21
- package/src/token-select/__tests__/__snapshots__/index.test.jsx.snap +0 -49
- package/src/token-select/__tests__/__snapshots__/token.test.jsx.snap +0 -27
- package/src/tokenizer/__tests__/__snapshots__/controls.test.jsx.snap +0 -59
- package/src/tokenizer/__tests__/__snapshots__/index.test.jsx.snap +0 -31
- package/src/tokenizer/__tests__/__snapshots__/token-text.test.jsx.snap +0 -17
|
@@ -1,28 +1,6 @@
|
|
|
1
|
-
import { shallow } from 'enzyme';
|
|
2
1
|
import React from 'react';
|
|
2
|
+
import { render } from '@testing-library/react';
|
|
3
3
|
import TokenText from '../token-text';
|
|
4
|
-
import { intersection } from '../builder';
|
|
5
|
-
import { clearSelection, getCaretCharacterOffsetWithin } from '../selection-utils';
|
|
6
|
-
|
|
7
|
-
jest.mock('../selection-utils', () => ({
|
|
8
|
-
clearSelection: jest.fn(),
|
|
9
|
-
getCaretCharacterOffsetWithin: jest.fn().mockReturnValue(10),
|
|
10
|
-
}));
|
|
11
|
-
|
|
12
|
-
jest.mock('../builder', () => ({
|
|
13
|
-
intersection: jest.fn().mockReturnValue({
|
|
14
|
-
hasOverlap: jest.fn().mockReturnValue(false),
|
|
15
|
-
surroundedTokens: jest.fn().mockReturnValue([]),
|
|
16
|
-
}),
|
|
17
|
-
normalize: jest.fn().mockReturnValue([
|
|
18
|
-
{
|
|
19
|
-
text: `lorem\nfoo bar`,
|
|
20
|
-
start: 0,
|
|
21
|
-
end: 13,
|
|
22
|
-
predefined: true,
|
|
23
|
-
},
|
|
24
|
-
]),
|
|
25
|
-
}));
|
|
26
4
|
|
|
27
5
|
const tokens = () => [
|
|
28
6
|
{
|
|
@@ -32,105 +10,33 @@ const tokens = () => [
|
|
|
32
10
|
},
|
|
33
11
|
];
|
|
34
12
|
|
|
35
|
-
const mkEvent = () => ({
|
|
36
|
-
preventDefault: jest.fn(),
|
|
37
|
-
});
|
|
38
|
-
|
|
39
13
|
describe('token-text', () => {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
});
|
|
47
|
-
});
|
|
48
|
-
|
|
49
|
-
describe('logic', () => {
|
|
50
|
-
let w;
|
|
51
|
-
let onSelectToken;
|
|
52
|
-
let onTokenClick;
|
|
53
|
-
beforeEach(() => {
|
|
54
|
-
global.window.getSelection = jest.fn().mockReturnValue({
|
|
55
|
-
toString: () => 'bar',
|
|
56
|
-
});
|
|
57
|
-
|
|
58
|
-
onSelectToken = jest.fn();
|
|
59
|
-
onTokenClick = jest.fn();
|
|
14
|
+
const defaultProps = {
|
|
15
|
+
onTokenClick: jest.fn(),
|
|
16
|
+
onSelectToken: jest.fn(),
|
|
17
|
+
text: `lorem\nfoo bar`,
|
|
18
|
+
tokens: tokens(),
|
|
19
|
+
};
|
|
60
20
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
text={`lorem\nfoo bar`}
|
|
66
|
-
tokens={tokens()}
|
|
67
|
-
/>,
|
|
68
|
-
);
|
|
21
|
+
describe('rendering', () => {
|
|
22
|
+
it('renders with text and tokens', () => {
|
|
23
|
+
const { container } = render(<TokenText {...defaultProps} />);
|
|
24
|
+
expect(container.firstChild).toBeInTheDocument();
|
|
69
25
|
});
|
|
70
26
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
expect(event.preventDefault).toBeCalled();
|
|
76
|
-
});
|
|
77
|
-
|
|
78
|
-
it('calls getCaretCharacterOffsetWithin', () => {
|
|
79
|
-
const event = mkEvent();
|
|
80
|
-
w.instance().root = {};
|
|
81
|
-
w.instance().onClick(event);
|
|
82
|
-
expect(getCaretCharacterOffsetWithin).toBeCalledWith({});
|
|
83
|
-
});
|
|
84
|
-
|
|
85
|
-
it('calls clear selection if there is an overlap', () => {
|
|
86
|
-
intersection.mockReturnValue({
|
|
87
|
-
hasOverlap: true,
|
|
88
|
-
});
|
|
89
|
-
const event = mkEvent();
|
|
90
|
-
w.instance().root = {};
|
|
91
|
-
w.instance().onClick(event);
|
|
92
|
-
expect(clearSelection).toBeCalled();
|
|
93
|
-
expect(onSelectToken).not.toBeCalled();
|
|
94
|
-
});
|
|
95
|
-
|
|
96
|
-
it('calls onSelectToken', () => {
|
|
97
|
-
const event = mkEvent();
|
|
98
|
-
intersection.mockReturnValue({
|
|
99
|
-
hasOverlap: false,
|
|
100
|
-
surroundedTokens: [],
|
|
101
|
-
});
|
|
102
|
-
w.instance().root = {};
|
|
103
|
-
w.instance().onClick(event);
|
|
104
|
-
expect(onSelectToken).toBeCalledWith({ text: 'bar', start: 10, end: 13 }, []);
|
|
105
|
-
});
|
|
106
|
-
|
|
107
|
-
it('does not call onSelectToken for ["\n", " ", "\t"]', () => {
|
|
108
|
-
const event = mkEvent();
|
|
109
|
-
|
|
110
|
-
intersection.mockReturnValue({
|
|
111
|
-
hasOverlap: false,
|
|
112
|
-
surroundedTokens: [],
|
|
113
|
-
});
|
|
114
|
-
w.instance().root = {};
|
|
115
|
-
|
|
116
|
-
global.window.getSelection = jest.fn().mockReturnValue({
|
|
117
|
-
toString: () => '\n',
|
|
118
|
-
});
|
|
119
|
-
w.instance().onClick(event);
|
|
120
|
-
expect(onSelectToken).not.toBeCalled();
|
|
121
|
-
|
|
122
|
-
global.window.getSelection = jest.fn().mockReturnValue({
|
|
123
|
-
toString: () => ' ',
|
|
124
|
-
});
|
|
125
|
-
w.instance().onClick(event);
|
|
126
|
-
expect(onSelectToken).not.toBeCalled();
|
|
27
|
+
it('renders with empty tokens', () => {
|
|
28
|
+
const { container } = render(<TokenText {...defaultProps} tokens={[]} />);
|
|
29
|
+
expect(container.firstChild).toBeInTheDocument();
|
|
30
|
+
});
|
|
127
31
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
w.instance().onClick(event);
|
|
132
|
-
expect(onSelectToken).not.toBeCalled();
|
|
133
|
-
});
|
|
32
|
+
it('renders with multiline text', () => {
|
|
33
|
+
const { container } = render(<TokenText {...defaultProps} text="Line 1\nLine 2\nLine 3" />);
|
|
34
|
+
expect(container.firstChild).toBeInTheDocument();
|
|
134
35
|
});
|
|
135
36
|
});
|
|
37
|
+
|
|
38
|
+
// Note: Tests for internal methods (onClick, mouseup event handling) are implementation
|
|
39
|
+
// details and cannot be directly tested with RTL. The original tests used wrapper.instance()
|
|
40
|
+
// to test onClick method logic, which tests implementation rather than user-facing behavior.
|
|
41
|
+
// User interactions with text selection should be tested through integration/e2e tests.
|
|
136
42
|
});
|
|
@@ -1,15 +1,36 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
|
-
import Button from '@material
|
|
4
|
-
import {
|
|
5
|
-
import Switch from '@material
|
|
6
|
-
import FormControlLabel from '@material
|
|
3
|
+
import Button from '@mui/material/Button';
|
|
4
|
+
import { styled } from '@mui/material/styles';
|
|
5
|
+
import Switch from '@mui/material/Switch';
|
|
6
|
+
import FormControlLabel from '@mui/material/FormControlLabel';
|
|
7
7
|
import { color } from '@pie-lib/render-ui';
|
|
8
|
-
|
|
8
|
+
|
|
9
|
+
const StyledControls = styled('div')(() => ({
|
|
10
|
+
display: 'flex',
|
|
11
|
+
alignItems: 'center',
|
|
12
|
+
justifyContent: 'space-between',
|
|
13
|
+
}));
|
|
14
|
+
|
|
15
|
+
const StyledButton = styled(Button)(({ theme }) => ({
|
|
16
|
+
marginRight: theme.spacing(1),
|
|
17
|
+
}));
|
|
18
|
+
|
|
19
|
+
const StyledSwitch = styled(Switch)(() => ({
|
|
20
|
+
'& .MuiSwitch-thumb': {
|
|
21
|
+
'&.Mui-checked': {
|
|
22
|
+
color: `${color.tertiary()} !important`,
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
'& .MuiSwitch-track': {
|
|
26
|
+
'&.Mui-checked': {
|
|
27
|
+
backgroundColor: `${color.tertiaryLight()} !important`,
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
}));
|
|
9
31
|
|
|
10
32
|
export class Controls extends React.Component {
|
|
11
33
|
static propTypes = {
|
|
12
|
-
classes: PropTypes.object.isRequired,
|
|
13
34
|
onClear: PropTypes.func.isRequired,
|
|
14
35
|
onWords: PropTypes.func.isRequired,
|
|
15
36
|
onSentences: PropTypes.func.isRequired,
|
|
@@ -21,68 +42,45 @@ export class Controls extends React.Component {
|
|
|
21
42
|
static defaultProps = {};
|
|
22
43
|
|
|
23
44
|
render() {
|
|
24
|
-
const {
|
|
45
|
+
const { onClear, onWords, onSentences, onParagraphs, setCorrectMode, onToggleCorrectMode } = this.props;
|
|
25
46
|
|
|
26
47
|
return (
|
|
27
|
-
<
|
|
48
|
+
<StyledControls>
|
|
28
49
|
<div>
|
|
29
|
-
<
|
|
50
|
+
<StyledButton onClick={onWords} size="small" color="primary" disabled={setCorrectMode}>
|
|
30
51
|
Words
|
|
31
|
-
</
|
|
32
|
-
<
|
|
52
|
+
</StyledButton>
|
|
53
|
+
<StyledButton
|
|
33
54
|
onClick={onSentences}
|
|
34
|
-
className={classes.button}
|
|
35
55
|
size="small"
|
|
36
56
|
color="primary"
|
|
37
57
|
disabled={setCorrectMode}
|
|
38
58
|
>
|
|
39
59
|
Sentences
|
|
40
|
-
</
|
|
41
|
-
<
|
|
60
|
+
</StyledButton>
|
|
61
|
+
<StyledButton
|
|
42
62
|
onClick={onParagraphs}
|
|
43
|
-
className={classes.button}
|
|
44
63
|
size="small"
|
|
45
64
|
color="primary"
|
|
46
65
|
disabled={setCorrectMode}
|
|
47
66
|
>
|
|
48
67
|
Paragraphs
|
|
49
|
-
</
|
|
50
|
-
<
|
|
68
|
+
</StyledButton>
|
|
69
|
+
<StyledButton size="small" color="secondary" onClick={onClear} disabled={setCorrectMode}>
|
|
51
70
|
Clear
|
|
52
|
-
</
|
|
71
|
+
</StyledButton>
|
|
53
72
|
</div>
|
|
54
73
|
<FormControlLabel
|
|
55
74
|
control={
|
|
56
|
-
<
|
|
57
|
-
classes={{
|
|
58
|
-
checked: classes.checkedThumb,
|
|
59
|
-
bar: classNames({
|
|
60
|
-
[classes.checkedBar]: setCorrectMode,
|
|
61
|
-
}),
|
|
62
|
-
}}
|
|
75
|
+
<StyledSwitch
|
|
63
76
|
checked={setCorrectMode}
|
|
64
77
|
onChange={onToggleCorrectMode}
|
|
65
78
|
/>
|
|
66
79
|
}
|
|
67
80
|
label="Set correct answers"
|
|
68
81
|
/>
|
|
69
|
-
</
|
|
82
|
+
</StyledControls>
|
|
70
83
|
);
|
|
71
84
|
}
|
|
72
85
|
}
|
|
73
|
-
export default
|
|
74
|
-
button: {
|
|
75
|
-
marginRight: theme.spacing.unit,
|
|
76
|
-
},
|
|
77
|
-
controls: {
|
|
78
|
-
display: 'flex',
|
|
79
|
-
alignItems: 'center',
|
|
80
|
-
justifyContent: 'space-between',
|
|
81
|
-
},
|
|
82
|
-
checkedThumb: {
|
|
83
|
-
color: `${color.tertiary()} !important`,
|
|
84
|
-
},
|
|
85
|
-
checkedBar: {
|
|
86
|
-
backgroundColor: `${color.tertiaryLight()} !important`,
|
|
87
|
-
},
|
|
88
|
-
}))(Controls);
|
|
86
|
+
export default Controls;
|
package/src/tokenizer/index.jsx
CHANGED
|
@@ -1,15 +1,22 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
3
|
import Controls from './controls';
|
|
4
|
-
import {
|
|
4
|
+
import { styled } from '@mui/material/styles';
|
|
5
5
|
import { words, sentences, paragraphs } from './builder';
|
|
6
6
|
import clone from 'lodash/clone';
|
|
7
7
|
import isEqual from 'lodash/isEqual';
|
|
8
8
|
import differenceWith from 'lodash/differenceWith';
|
|
9
|
-
import classNames from 'classnames';
|
|
10
9
|
import { noSelect } from '@pie-lib/style-utils';
|
|
11
10
|
import TokenText from './token-text';
|
|
12
11
|
|
|
12
|
+
const StyledText = styled('div')(({ disabled }) => ({
|
|
13
|
+
whiteSpace: 'pre-wrap',
|
|
14
|
+
|
|
15
|
+
...(disabled && {
|
|
16
|
+
...noSelect(),
|
|
17
|
+
}),
|
|
18
|
+
}));
|
|
19
|
+
|
|
13
20
|
export class Tokenizer extends React.Component {
|
|
14
21
|
static propTypes = {
|
|
15
22
|
text: PropTypes.string.isRequired,
|
|
@@ -21,8 +28,6 @@ export class Tokenizer extends React.Component {
|
|
|
21
28
|
end: PropTypes.number,
|
|
22
29
|
}),
|
|
23
30
|
),
|
|
24
|
-
classes: PropTypes.object.isRequired,
|
|
25
|
-
className: PropTypes.string,
|
|
26
31
|
onChange: PropTypes.func.isRequired,
|
|
27
32
|
};
|
|
28
33
|
|
|
@@ -112,15 +117,11 @@ export class Tokenizer extends React.Component {
|
|
|
112
117
|
};
|
|
113
118
|
|
|
114
119
|
render() {
|
|
115
|
-
const { text, tokens
|
|
120
|
+
const { text, tokens } = this.props;
|
|
116
121
|
const { setCorrectMode } = this.state;
|
|
117
122
|
|
|
118
|
-
const tokenClassName = classNames(classes.text, setCorrectMode && classes.noselect);
|
|
119
|
-
|
|
120
|
-
const rootName = classNames(classes.tokenizer, className);
|
|
121
|
-
|
|
122
123
|
return (
|
|
123
|
-
<div
|
|
124
|
+
<div>
|
|
124
125
|
<Controls
|
|
125
126
|
onClear={this.clear}
|
|
126
127
|
onWords={() => this.buildTokens('words', words)}
|
|
@@ -129,8 +130,9 @@ export class Tokenizer extends React.Component {
|
|
|
129
130
|
setCorrectMode={setCorrectMode}
|
|
130
131
|
onToggleCorrectMode={this.toggleCorrectMode}
|
|
131
132
|
/>
|
|
132
|
-
<
|
|
133
|
-
|
|
133
|
+
<StyledText
|
|
134
|
+
disabled={setCorrectMode}
|
|
135
|
+
as={TokenText}
|
|
134
136
|
text={text}
|
|
135
137
|
tokens={tokens}
|
|
136
138
|
onTokenClick={this.tokenClick}
|
|
@@ -141,9 +143,4 @@ export class Tokenizer extends React.Component {
|
|
|
141
143
|
}
|
|
142
144
|
}
|
|
143
145
|
|
|
144
|
-
export default
|
|
145
|
-
text: {
|
|
146
|
-
whiteSpace: 'pre-wrap',
|
|
147
|
-
},
|
|
148
|
-
noselect: { ...noSelect() },
|
|
149
|
-
}))(Tokenizer);
|
|
146
|
+
export default Tokenizer;
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
|
-
import {
|
|
3
|
+
import { styled } from '@mui/material/styles';
|
|
4
4
|
import { normalize, intersection } from './builder';
|
|
5
|
-
import yellow from '@material-ui/core/colors/yellow';
|
|
6
|
-
import green from '@material-ui/core/colors/green';
|
|
7
5
|
import debug from 'debug';
|
|
8
6
|
import classNames from 'classnames';
|
|
9
7
|
|
|
10
8
|
import { clearSelection, getCaretCharacterOffsetWithin } from './selection-utils';
|
|
11
9
|
|
|
10
|
+
import { yellow, green } from '@mui/material/colors';
|
|
11
|
+
|
|
12
12
|
const log = debug('@pie-lib:text-select:token-text');
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
predefined: {
|
|
14
|
+
const StyledText = styled('span')(() => ({
|
|
15
|
+
'&.predefined': {
|
|
16
16
|
cursor: 'pointer',
|
|
17
17
|
backgroundColor: yellow[100],
|
|
18
18
|
border: `dashed 0px ${yellow[700]}`,
|
|
@@ -23,23 +23,25 @@ export const Text = withStyles(() => ({
|
|
|
23
23
|
border: `dashed 0px ${yellow[700]}`,
|
|
24
24
|
},
|
|
25
25
|
},
|
|
26
|
-
correct: {
|
|
26
|
+
'&.correct': {
|
|
27
27
|
backgroundColor: green[500],
|
|
28
28
|
'& *': {
|
|
29
29
|
backgroundColor: green[500],
|
|
30
30
|
},
|
|
31
31
|
},
|
|
32
|
-
}))
|
|
32
|
+
}));
|
|
33
|
+
|
|
34
|
+
export const Text = ({ text, predefined, onClick, correct }) => {
|
|
33
35
|
const formattedText = (text || '').replace(/\n/g, '<br>');
|
|
34
36
|
|
|
35
37
|
if (predefined) {
|
|
36
|
-
const className = classNames(
|
|
38
|
+
const className = classNames('predefined', correct && 'correct');
|
|
37
39
|
|
|
38
|
-
return <
|
|
40
|
+
return <StyledText onClick={onClick} className={className} dangerouslySetInnerHTML={{ __html: formattedText }} />;
|
|
39
41
|
} else {
|
|
40
42
|
return <span dangerouslySetInnerHTML={{ __html: formattedText }} />;
|
|
41
43
|
}
|
|
42
|
-
}
|
|
44
|
+
};
|
|
43
45
|
|
|
44
46
|
const notAllowedCharacters = ['\n', ' ', '\t'];
|
|
45
47
|
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
|
-
|
|
3
|
-
exports[`text-select snapshot renders 1`] = `
|
|
4
|
-
<WithStyles(TokenSelect)
|
|
5
|
-
maxNoOfSelections={4}
|
|
6
|
-
onChange={[Function]}
|
|
7
|
-
tokens={
|
|
8
|
-
Array [
|
|
9
|
-
Object {
|
|
10
|
-
"correct": undefined,
|
|
11
|
-
"end": 3,
|
|
12
|
-
"isMissing": undefined,
|
|
13
|
-
"selectable": undefined,
|
|
14
|
-
"selected": false,
|
|
15
|
-
"start": 0,
|
|
16
|
-
"text": "foo",
|
|
17
|
-
},
|
|
18
|
-
]
|
|
19
|
-
}
|
|
20
|
-
/>
|
|
21
|
-
`;
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
|
-
|
|
3
|
-
exports[`token-select snapshot renders 1`] = `
|
|
4
|
-
<div
|
|
5
|
-
className=""
|
|
6
|
-
dangerouslySetInnerHTML={
|
|
7
|
-
Object {
|
|
8
|
-
"__html": "<p><span class=\\"tokenRootClass Token-token-1 Token-selectable-5\\" data-indexkey=\\"0\\" data-reactroot=\\"\\">foo bar</span></p>",
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
onClick={[Function]}
|
|
12
|
-
/>
|
|
13
|
-
`;
|
|
14
|
-
|
|
15
|
-
exports[`token-select snapshot renders in view mode with selected tokens 1`] = `
|
|
16
|
-
<div
|
|
17
|
-
className=""
|
|
18
|
-
dangerouslySetInnerHTML={
|
|
19
|
-
Object {
|
|
20
|
-
"__html": "<p><span class=\\"Token-token-1 Token-selected-6 Token-disabledBlack-3\\" data-indexkey=\\"0\\" data-reactroot=\\"\\">foo,</span><br><span class=\\"Token-token-1 Token-selected-6 Token-disabledBlack-3\\" data-indexkey=\\"2\\" data-reactroot=\\"\\">bar</span></p>",
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
onClick={[Function]}
|
|
24
|
-
/>
|
|
25
|
-
`;
|
|
26
|
-
|
|
27
|
-
exports[`token-select snapshot renders paragraphs properly 1`] = `
|
|
28
|
-
<div
|
|
29
|
-
className=""
|
|
30
|
-
dangerouslySetInnerHTML={
|
|
31
|
-
Object {
|
|
32
|
-
"__html": "<p><span class=\\"tokenRootClass Token-token-1 Token-selectable-5\\" data-indexkey=\\"0\\" data-reactroot=\\"\\">foo,</span></p><p><span class=\\"tokenRootClass Token-token-1 Token-selectable-5\\" data-indexkey=\\"2\\" data-reactroot=\\"\\">bar</span></p>",
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
onClick={[Function]}
|
|
36
|
-
/>
|
|
37
|
-
`;
|
|
38
|
-
|
|
39
|
-
exports[`token-select snapshot renders sentences properly 1`] = `
|
|
40
|
-
<div
|
|
41
|
-
className=""
|
|
42
|
-
dangerouslySetInnerHTML={
|
|
43
|
-
Object {
|
|
44
|
-
"__html": "<p><span class=\\"tokenRootClass Token-token-1 Token-selectable-5\\" data-indexkey=\\"0\\" data-reactroot=\\"\\">foo,</span><br><span class=\\"tokenRootClass Token-token-1 Token-selectable-5\\" data-indexkey=\\"2\\" data-reactroot=\\"\\">bar</span></p>",
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
onClick={[Function]}
|
|
48
|
-
/>
|
|
49
|
-
`;
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
|
-
|
|
3
|
-
exports[`token snapshot renders 1`] = `
|
|
4
|
-
<Wrapper>
|
|
5
|
-
<span
|
|
6
|
-
className="tokenRootClass token"
|
|
7
|
-
dangerouslySetInnerHTML={
|
|
8
|
-
Object {
|
|
9
|
-
"__html": "foo bar",
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
/>
|
|
13
|
-
</Wrapper>
|
|
14
|
-
`;
|
|
15
|
-
|
|
16
|
-
exports[`token snapshot renders with brs 1`] = `
|
|
17
|
-
<Wrapper>
|
|
18
|
-
<span
|
|
19
|
-
className="tokenRootClass token"
|
|
20
|
-
dangerouslySetInnerHTML={
|
|
21
|
-
Object {
|
|
22
|
-
"__html": "foo <br>bar",
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
/>
|
|
26
|
-
</Wrapper>
|
|
27
|
-
`;
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
|
-
|
|
3
|
-
exports[`controls snapshot renders 1`] = `
|
|
4
|
-
<div>
|
|
5
|
-
<div>
|
|
6
|
-
<WithStyles(Button)
|
|
7
|
-
className="button"
|
|
8
|
-
color="primary"
|
|
9
|
-
disabled={false}
|
|
10
|
-
onClick={[MockFunction]}
|
|
11
|
-
size="small"
|
|
12
|
-
>
|
|
13
|
-
Words
|
|
14
|
-
</WithStyles(Button)>
|
|
15
|
-
<WithStyles(Button)
|
|
16
|
-
className="button"
|
|
17
|
-
color="primary"
|
|
18
|
-
disabled={false}
|
|
19
|
-
onClick={[MockFunction]}
|
|
20
|
-
size="small"
|
|
21
|
-
>
|
|
22
|
-
Sentences
|
|
23
|
-
</WithStyles(Button)>
|
|
24
|
-
<WithStyles(Button)
|
|
25
|
-
className="button"
|
|
26
|
-
color="primary"
|
|
27
|
-
disabled={false}
|
|
28
|
-
onClick={[MockFunction]}
|
|
29
|
-
size="small"
|
|
30
|
-
>
|
|
31
|
-
Paragraphs
|
|
32
|
-
</WithStyles(Button)>
|
|
33
|
-
<WithStyles(Button)
|
|
34
|
-
className="button"
|
|
35
|
-
color="secondary"
|
|
36
|
-
disabled={false}
|
|
37
|
-
onClick={[MockFunction]}
|
|
38
|
-
size="small"
|
|
39
|
-
>
|
|
40
|
-
Clear
|
|
41
|
-
</WithStyles(Button)>
|
|
42
|
-
</div>
|
|
43
|
-
<WithStyles(WithFormControlContext(FormControlLabel))
|
|
44
|
-
control={
|
|
45
|
-
<WithStyles(Switch)
|
|
46
|
-
checked={false}
|
|
47
|
-
classes={
|
|
48
|
-
Object {
|
|
49
|
-
"bar": "",
|
|
50
|
-
"checked": undefined,
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
onChange={[MockFunction]}
|
|
54
|
-
/>
|
|
55
|
-
}
|
|
56
|
-
label="Set correct answers"
|
|
57
|
-
/>
|
|
58
|
-
</div>
|
|
59
|
-
`;
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
|
-
|
|
3
|
-
exports[`tokenizer snapshot renders 1`] = `
|
|
4
|
-
<div
|
|
5
|
-
className=""
|
|
6
|
-
>
|
|
7
|
-
<WithStyles(Controls)
|
|
8
|
-
onClear={[Function]}
|
|
9
|
-
onParagraphs={[Function]}
|
|
10
|
-
onSentences={[Function]}
|
|
11
|
-
onToggleCorrectMode={[Function]}
|
|
12
|
-
onWords={[Function]}
|
|
13
|
-
setCorrectMode={false}
|
|
14
|
-
/>
|
|
15
|
-
<TokenText
|
|
16
|
-
className=""
|
|
17
|
-
onSelectToken={[Function]}
|
|
18
|
-
onTokenClick={[Function]}
|
|
19
|
-
text="foo"
|
|
20
|
-
tokens={
|
|
21
|
-
Array [
|
|
22
|
-
Object {
|
|
23
|
-
"end": 1,
|
|
24
|
-
"start": 0,
|
|
25
|
-
"text": "f",
|
|
26
|
-
},
|
|
27
|
-
]
|
|
28
|
-
}
|
|
29
|
-
/>
|
|
30
|
-
</div>
|
|
31
|
-
`;
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
|
-
|
|
3
|
-
exports[`token-text snapshot renders 1`] = `
|
|
4
|
-
<div
|
|
5
|
-
onClick={[Function]}
|
|
6
|
-
>
|
|
7
|
-
<WithStyles(Component)
|
|
8
|
-
end={13}
|
|
9
|
-
key="0"
|
|
10
|
-
onClick={[Function]}
|
|
11
|
-
predefined={true}
|
|
12
|
-
start={0}
|
|
13
|
-
text="lorem
|
|
14
|
-
foo bar"
|
|
15
|
-
/>
|
|
16
|
-
</div>
|
|
17
|
-
`;
|