@pie-lib/text-select 1.14.0-beta.0 → 1.14.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.
@@ -2,22 +2,26 @@ import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import { withStyles } from '@material-ui/core/styles';
4
4
  import classNames from 'classnames';
5
- import { color } from '@pie-lib/render-ui';
6
5
  import Check from '@material-ui/icons/Check';
7
6
  import Close from '@material-ui/icons/Close';
8
7
 
9
- const Wrapper = ({ useWrapper, children, classNameContainer, iconClass, Icon }) => {
10
- if (useWrapper) {
11
- return (
12
- <span className={classNameContainer}>
13
- {children}
14
- <Icon className={iconClass} viewBox={'0 1 24 24'} />
15
- </span>
16
- );
17
- }
8
+ import { color } from '../../render-ui/src/index';
18
9
 
19
- return children;
20
- };
10
+ // we need to use a larger line height for the token to be more readable
11
+ const LINE_HEIGHT_MULTIPLIER = 3.2;
12
+ // we need a bit more space for correctness indicators
13
+ const CORRECTNESS_LINE_HEIGHT_MULTIPLIER = 3.4;
14
+ const CORRECTNESS_PADDING = 2;
15
+
16
+ const Wrapper = ({ useWrapper, children, classNameContainer, iconClass, Icon }) =>
17
+ useWrapper ? (
18
+ <span className={classNameContainer}>
19
+ {children}
20
+ <Icon className={iconClass} />
21
+ </span>
22
+ ) : (
23
+ children
24
+ );
21
25
 
22
26
  Wrapper.propTypes = {
23
27
  useWrapper: PropTypes.bool,
@@ -38,11 +42,11 @@ export class Token extends React.Component {
38
42
  static propTypes = {
39
43
  ...TokenTypes,
40
44
  classes: PropTypes.object.isRequired,
45
+ text: PropTypes.string.isRequired,
41
46
  className: PropTypes.string,
42
47
  disabled: PropTypes.bool,
43
48
  highlight: PropTypes.bool,
44
49
  correct: PropTypes.bool,
45
- text: PropTypes.string.isRequired,
46
50
  };
47
51
 
48
52
  static defaultProps = {
@@ -50,39 +54,55 @@ export class Token extends React.Component {
50
54
  text: '',
51
55
  };
52
56
 
53
- render() {
57
+ getClassAndIconConfig = () => {
54
58
  const {
55
- text,
56
59
  selectable,
57
60
  selected,
58
61
  classes,
59
62
  className: classNameProp,
60
63
  disabled,
61
- index,
62
64
  highlight,
63
65
  correct,
64
66
  animationsDisabled,
65
67
  isMissing,
66
68
  } = this.props;
67
69
  const isTouchEnabled = 'ontouchstart' in window || navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0;
68
-
69
- let className;
70
+ const baseClassName = Token.rootClassName;
70
71
  let classNameContainer;
71
72
  let Icon;
72
73
  let iconClass;
73
74
 
74
75
  if (correct === undefined && selected && disabled) {
75
- className = classNames(classes.token, classes.selected, classes.disabledBlack);
76
- } else if (correct !== undefined) {
77
- className = classNames(Token.rootClassName, classes.custom);
78
- Icon = correct ? Check : Close;
79
- classNameContainer = correct === true ? classes.correct : classes.incorrect;
80
- iconClass = correct === true ? classes.correctIcon : classes.incorrectIcon;
81
- } else if (isMissing) {
82
- className = classNames(Token.rootClassName, classes.custom, isMissing === true && classes.missing);
83
- } else {
84
- className = classNames(
85
- Token.rootClassName,
76
+ return {
77
+ className: classNames(classes.token, classes.selected, classes.disabledBlack),
78
+ };
79
+ }
80
+
81
+ if (correct !== undefined) {
82
+ const isCorrect = correct === true;
83
+ return {
84
+ className: classNames(baseClassName, classes.custom),
85
+ classNameContainer: classNames(isCorrect ? classes.correct : classes.incorrect, classes.commonTokenStyle),
86
+ Icon: isCorrect ? Check : Close,
87
+ iconClass: classNames(
88
+ classes.correctnessIndicatorIcon,
89
+ isCorrect ? classes.correctIcon : classes.incorrectIcon,
90
+ ),
91
+ };
92
+ }
93
+
94
+ if (isMissing) {
95
+ return {
96
+ className: classNames(baseClassName, classes.custom, classes.missing, classes.commonTokenStyle),
97
+ classNameContainer: classes.commonTokenStyle,
98
+ Icon: Close,
99
+ iconClass: classNames(classes.correctnessIndicatorIcon, classes.incorrectIcon),
100
+ };
101
+ }
102
+
103
+ return {
104
+ className: classNames(
105
+ baseClassName,
86
106
  classes.token,
87
107
  disabled && classes.disabled,
88
108
  selectable && !disabled && !isTouchEnabled && classes.selectable,
@@ -91,11 +111,20 @@ export class Token extends React.Component {
91
111
  highlight && selectable && !disabled && !selected && classes.highlight,
92
112
  animationsDisabled && classes.print,
93
113
  classNameProp,
94
- );
95
- }
114
+ ),
115
+ classNameContainer,
116
+ Icon,
117
+ iconClass,
118
+ };
119
+ };
120
+
121
+ render() {
122
+ const { text, index, correct, isMissing } = this.props;
123
+ const { className, classNameContainer, Icon, iconClass } = this.getClassAndIconConfig();
124
+
96
125
  return (
97
126
  <Wrapper
98
- useWrapper={correct !== undefined}
127
+ useWrapper={correct !== undefined || isMissing}
99
128
  classNameContainer={classNameContainer}
100
129
  iconClass={iconClass}
101
130
  Icon={Icon}
@@ -124,67 +153,73 @@ export default withStyles((theme) => {
124
153
  cursor: 'inherit',
125
154
  },
126
155
  disabledAndSelected: {
127
- backgroundColor: color.secondaryLight(),
156
+ backgroundColor: color.blueGrey100(),
128
157
  },
129
158
  selectable: {
130
159
  [theme.breakpoints.up(769)]: {
131
160
  '&:hover': {
132
- backgroundColor: color.primaryLight(),
161
+ backgroundColor: color.blueGrey300(),
133
162
  color: theme.palette.common.black,
134
163
  '& > *': {
135
- backgroundColor: color.primaryLight(),
164
+ backgroundColor: color.blueGrey300(),
136
165
  },
137
166
  },
138
167
  },
139
168
  },
140
169
  selected: {
141
- backgroundColor: color.primaryLight(),
170
+ backgroundColor: color.blueGrey100(),
142
171
  color: theme.palette.common.black,
143
- lineHeight: `${theme.spacing.unit * 3}px`,
172
+ lineHeight: `${theme.spacing.unit * LINE_HEIGHT_MULTIPLIER}px`,
173
+ border: `solid 2px ${color.blueGrey900()}`,
174
+ borderRadius: '4px',
144
175
  '& > *': {
145
- backgroundColor: color.primaryLight(),
176
+ backgroundColor: color.blueGrey100(),
146
177
  },
147
178
  },
148
179
  highlight: {
149
- border: `dashed 2px ${color.disabled()}`,
150
- lineHeight: `${theme.spacing.unit * 3}px`,
180
+ border: `dashed 2px ${color.blueGrey600()}`,
181
+ borderRadius: '4px',
182
+ lineHeight: `${theme.spacing.unit * LINE_HEIGHT_MULTIPLIER}px`,
151
183
  },
152
184
  print: {
153
- border: `dashed 2px ${color.disabled()}`,
154
- lineHeight: `${theme.spacing.unit * 3}px`,
185
+ border: `dashed 2px ${color.blueGrey600()}`,
186
+ borderRadius: '4px',
187
+ lineHeight: `${theme.spacing.unit * LINE_HEIGHT_MULTIPLIER}px`,
155
188
  color: color.text(),
156
189
  },
157
190
  custom: {
158
191
  display: 'initial',
159
192
  },
160
- correct: {
161
- backgroundColor: color.correctSecondary(),
162
- border: `${color.correct()} solid 2px`,
193
+ commonTokenStyle: {
194
+ position: 'relative',
195
+ borderRadius: '4px',
163
196
  color: theme.palette.common.black,
164
- lineHeight: `${theme.spacing.unit * 3}px`,
197
+ lineHeight: `${theme.spacing.unit * CORRECTNESS_LINE_HEIGHT_MULTIPLIER + CORRECTNESS_PADDING}px`,
198
+ padding: `${CORRECTNESS_PADDING}px`,
199
+ },
200
+ correct: {
201
+ border: `${color.correctTertiary()} solid 2px`,
165
202
  },
166
203
  incorrect: {
167
- backgroundColor: color.incorrectSecondary(),
168
- border: `${color.missing()} solid 2px`,
169
- color: theme.palette.common.black,
170
- lineHeight: `${theme.spacing.unit * 3}px`,
204
+ border: `${color.incorrectWithIcon()} solid 2px`,
171
205
  },
172
206
  missing: {
173
- backgroundColor: color.incorrectSecondary(),
174
- border: `${color.missing()} dashed 2px`,
175
- color: theme.palette.common.black,
176
- lineHeight: `${theme.spacing.unit * 3}px`,
177
- textDecoration: `line-through ${color.missing()}`,
207
+ border: `${color.incorrectWithIcon()} dashed 2px`,
178
208
  },
179
209
  incorrectIcon: {
180
- verticalAlign: 'middle',
181
- fontSize: 'larger',
182
- color: color.missing(),
210
+ backgroundColor: color.incorrectWithIcon(),
183
211
  },
184
212
  correctIcon: {
185
- verticalAlign: 'middle',
186
- fontSize: 'larger',
187
- color: color.correct(),
213
+ backgroundColor: color.correctTertiary(),
214
+ },
215
+ correctnessIndicatorIcon: {
216
+ color: color.white(),
217
+ position: 'absolute',
218
+ top: '-8px',
219
+ left: '-8px',
220
+ borderRadius: '50%',
221
+ fontSize: '12px',
222
+ padding: '2px',
188
223
  },
189
224
  };
190
225
  })(Token);
@@ -4,7 +4,7 @@ import Button from '@material-ui/core/Button';
4
4
  import { withStyles } from '@material-ui/core/styles';
5
5
  import Switch from '@material-ui/core/Switch';
6
6
  import FormControlLabel from '@material-ui/core/FormControlLabel';
7
- import { color } from '@pie-lib/render-ui';
7
+ import { color } from '../../../render-ui/src/index';
8
8
  import classNames from 'classnames';
9
9
 
10
10
  export class Controls extends React.Component {
@@ -53,17 +53,17 @@ export class Controls extends React.Component {
53
53
  </div>
54
54
  <FormControlLabel
55
55
  control={
56
- <Switch
56
+ <Switch
57
57
  classes={{
58
58
  checked: classes.checkedThumb,
59
59
  bar: classNames({
60
60
  [classes.checkedBar]: setCorrectMode,
61
61
  }),
62
62
  }}
63
- checked={setCorrectMode}
64
- onChange={onToggleCorrectMode}
65
- />
66
- }
63
+ checked={setCorrectMode}
64
+ onChange={onToggleCorrectMode}
65
+ />
66
+ }
67
67
  label="Set correct answers"
68
68
  />
69
69
  </div>
@@ -84,5 +84,5 @@ export default withStyles((theme) => ({
84
84
  },
85
85
  checkedBar: {
86
86
  backgroundColor: `${color.tertiaryLight()} !important`,
87
- }
87
+ },
88
88
  }))(Controls);
@@ -1,56 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- var _textSelect = _interopRequireDefault(require("../text-select"));
6
-
7
- var _enzyme = require("enzyme");
8
-
9
- var _react = _interopRequireDefault(require("react"));
10
-
11
- var _enzymeToJson = _interopRequireDefault(require("enzyme-to-json"));
12
-
13
- describe('text-select', function () {
14
- describe('snapshot', function () {
15
- it('renders', function () {
16
- var w = (0, _enzyme.shallow)( /*#__PURE__*/_react["default"].createElement(_textSelect["default"], {
17
- text: "foo",
18
- tokens: [],
19
- selectedTokens: [],
20
- onChange: jest.fn(),
21
- maxNoOfSelections: 4
22
- }));
23
- expect(w).toMatchSnapshot();
24
- });
25
- });
26
- describe('logic', function () {
27
- var w, onChange;
28
- beforeEach(function () {
29
- onChange = jest.fn();
30
- w = (0, _enzyme.shallow)( /*#__PURE__*/_react["default"].createElement(_textSelect["default"], {
31
- text: "foo",
32
- tokens: [],
33
- selectedTokens: [],
34
- onChange: onChange
35
- }));
36
- });
37
- describe('change', function () {
38
- it('calls onChange', function () {
39
- var changeArgs = [{
40
- start: 0,
41
- end: 1,
42
- selected: true
43
- }, {
44
- start: 1,
45
- end: 2
46
- }];
47
- w.instance().change(changeArgs);
48
- expect(onChange).toBeCalledWith([{
49
- start: 0,
50
- end: 1
51
- }]);
52
- });
53
- });
54
- });
55
- });
56
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vdGV4dC1zZWxlY3QudGVzdC5qc3giXSwibmFtZXMiOlsiZGVzY3JpYmUiLCJpdCIsInciLCJqZXN0IiwiZm4iLCJleHBlY3QiLCJ0b01hdGNoU25hcHNob3QiLCJvbkNoYW5nZSIsImJlZm9yZUVhY2giLCJjaGFuZ2VBcmdzIiwic3RhcnQiLCJlbmQiLCJzZWxlY3RlZCIsImluc3RhbmNlIiwiY2hhbmdlIiwidG9CZUNhbGxlZFdpdGgiXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQUEsUUFBUSxDQUFDLGFBQUQsRUFBZ0IsWUFBTTtBQUM1QkEsRUFBQUEsUUFBUSxDQUFDLFVBQUQsRUFBYSxZQUFNO0FBQ3pCQyxJQUFBQSxFQUFFLENBQUMsU0FBRCxFQUFZLFlBQU07QUFDbEIsVUFBTUMsQ0FBQyxHQUFHLG1DQUNSLGdDQUFDLHNCQUFEO0FBQVksUUFBQSxJQUFJLEVBQUMsS0FBakI7QUFBdUIsUUFBQSxNQUFNLEVBQUUsRUFBL0I7QUFBbUMsUUFBQSxjQUFjLEVBQUUsRUFBbkQ7QUFBdUQsUUFBQSxRQUFRLEVBQUVDLElBQUksQ0FBQ0MsRUFBTCxFQUFqRTtBQUE0RSxRQUFBLGlCQUFpQixFQUFFO0FBQS9GLFFBRFEsQ0FBVjtBQUdBQyxNQUFBQSxNQUFNLENBQUNILENBQUQsQ0FBTixDQUFVSSxlQUFWO0FBQ0QsS0FMQyxDQUFGO0FBTUQsR0FQTyxDQUFSO0FBU0FOLEVBQUFBLFFBQVEsQ0FBQyxPQUFELEVBQVUsWUFBTTtBQUN0QixRQUFJRSxDQUFKLEVBQU9LLFFBQVA7QUFDQUMsSUFBQUEsVUFBVSxDQUFDLFlBQU07QUFDZkQsTUFBQUEsUUFBUSxHQUFHSixJQUFJLENBQUNDLEVBQUwsRUFBWDtBQUNBRixNQUFBQSxDQUFDLEdBQUcsbUNBQVEsZ0NBQUMsc0JBQUQ7QUFBWSxRQUFBLElBQUksRUFBQyxLQUFqQjtBQUF1QixRQUFBLE1BQU0sRUFBRSxFQUEvQjtBQUFtQyxRQUFBLGNBQWMsRUFBRSxFQUFuRDtBQUF1RCxRQUFBLFFBQVEsRUFBRUs7QUFBakUsUUFBUixDQUFKO0FBQ0QsS0FIUyxDQUFWO0FBS0FQLElBQUFBLFFBQVEsQ0FBQyxRQUFELEVBQVcsWUFBTTtBQUN2QkMsTUFBQUEsRUFBRSxDQUFDLGdCQUFELEVBQW1CLFlBQU07QUFDekIsWUFBTVEsVUFBVSxHQUFHLENBQ2pCO0FBQUVDLFVBQUFBLEtBQUssRUFBRSxDQUFUO0FBQVlDLFVBQUFBLEdBQUcsRUFBRSxDQUFqQjtBQUFvQkMsVUFBQUEsUUFBUSxFQUFFO0FBQTlCLFNBRGlCLEVBRWpCO0FBQUVGLFVBQUFBLEtBQUssRUFBRSxDQUFUO0FBQVlDLFVBQUFBLEdBQUcsRUFBRTtBQUFqQixTQUZpQixDQUFuQjtBQUtBVCxRQUFBQSxDQUFDLENBQUNXLFFBQUYsR0FBYUMsTUFBYixDQUFvQkwsVUFBcEI7QUFDQUosUUFBQUEsTUFBTSxDQUFDRSxRQUFELENBQU4sQ0FBaUJRLGNBQWpCLENBQWdDLENBQUM7QUFBRUwsVUFBQUEsS0FBSyxFQUFFLENBQVQ7QUFBWUMsVUFBQUEsR0FBRyxFQUFFO0FBQWpCLFNBQUQsQ0FBaEM7QUFDRCxPQVJDLENBQUY7QUFTRCxLQVZPLENBQVI7QUFXRCxHQWxCTyxDQUFSO0FBbUJELENBN0JPLENBQVIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVGV4dFNlbGVjdCBmcm9tICcuLi90ZXh0LXNlbGVjdCc7XG5pbXBvcnQgeyBzaGFsbG93IH0gZnJvbSAnZW56eW1lJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdG9Kc29uIGZyb20gJ2VuenltZS10by1qc29uJztcbmRlc2NyaWJlKCd0ZXh0LXNlbGVjdCcsICgpID0+IHtcbiAgZGVzY3JpYmUoJ3NuYXBzaG90JywgKCkgPT4ge1xuICAgIGl0KCdyZW5kZXJzJywgKCkgPT4ge1xuICAgICAgY29uc3QgdyA9IHNoYWxsb3coXG4gICAgICAgIDxUZXh0U2VsZWN0IHRleHQ9XCJmb29cIiB0b2tlbnM9e1tdfSBzZWxlY3RlZFRva2Vucz17W119IG9uQ2hhbmdlPXtqZXN0LmZuKCl9IG1heE5vT2ZTZWxlY3Rpb25zPXs0fSAvPixcbiAgICAgICk7XG4gICAgICBleHBlY3QodykudG9NYXRjaFNuYXBzaG90KCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdsb2dpYycsICgpID0+IHtcbiAgICBsZXQgdywgb25DaGFuZ2U7XG4gICAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgICBvbkNoYW5nZSA9IGplc3QuZm4oKTtcbiAgICAgIHcgPSBzaGFsbG93KDxUZXh0U2VsZWN0IHRleHQ9XCJmb29cIiB0b2tlbnM9e1tdfSBzZWxlY3RlZFRva2Vucz17W119IG9uQ2hhbmdlPXtvbkNoYW5nZX0gLz4pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ2NoYW5nZScsICgpID0+IHtcbiAgICAgIGl0KCdjYWxscyBvbkNoYW5nZScsICgpID0+IHtcbiAgICAgICAgY29uc3QgY2hhbmdlQXJncyA9IFtcbiAgICAgICAgICB7IHN0YXJ0OiAwLCBlbmQ6IDEsIHNlbGVjdGVkOiB0cnVlIH0sXG4gICAgICAgICAgeyBzdGFydDogMSwgZW5kOiAyIH0sXG4gICAgICAgIF07XG5cbiAgICAgICAgdy5pbnN0YW5jZSgpLmNoYW5nZShjaGFuZ2VBcmdzKTtcbiAgICAgICAgZXhwZWN0KG9uQ2hhbmdlKS50b0JlQ2FsbGVkV2l0aChbeyBzdGFydDogMCwgZW5kOiAxIH1dKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
@@ -1,23 +0,0 @@
1
- "use strict";
2
-
3
- var _utils = require("../utils");
4
-
5
- describe('logic', function () {
6
- it('returns text if no html elements', function () {
7
- var formattedText = (0, _utils.prepareText)("foo bar");
8
- expect(formattedText).toEqual('foo bar');
9
- });
10
- it('replaces br with new lines', function () {
11
- var formattedText = (0, _utils.prepareText)("<p>foo<br>bar</p>");
12
- expect(formattedText).toEqual('foo\nbar');
13
- });
14
- it('replaces p with 2 new lines', function () {
15
- var formattedText = (0, _utils.prepareText)("<p>foo<br>bar</p><p>bar<br>foo</p>");
16
- expect(formattedText).toEqual('foo\nbar\n\nbar\nfoo');
17
- });
18
- it('adds p if there are no paragraphs', function () {
19
- var formattedText = (0, _utils.prepareText)("foo<br>bar<br>foo");
20
- expect(formattedText).toEqual('foo\nbar\nfoo');
21
- });
22
- });
23
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vdXRpbHMudGVzdC5qc3giXSwibmFtZXMiOlsiZGVzY3JpYmUiLCJpdCIsImZvcm1hdHRlZFRleHQiLCJleHBlY3QiLCJ0b0VxdWFsIl0sIm1hcHBpbmdzIjoiOztBQUFBOztBQUVBQSxRQUFRLENBQUMsT0FBRCxFQUFVLFlBQU07QUFDdEJDLEVBQUFBLEVBQUUsQ0FBQyxrQ0FBRCxFQUFxQyxZQUFNO0FBQzNDLFFBQU1DLGFBQWEsR0FBRyxrQ0FBdEI7QUFFQUMsSUFBQUEsTUFBTSxDQUFDRCxhQUFELENBQU4sQ0FBc0JFLE9BQXRCLENBQThCLFNBQTlCO0FBQ0QsR0FKQyxDQUFGO0FBTUFILEVBQUFBLEVBQUUsQ0FBQyw0QkFBRCxFQUErQixZQUFNO0FBQ3JDLFFBQU1DLGFBQWEsR0FBRyw0Q0FBdEI7QUFFQUMsSUFBQUEsTUFBTSxDQUFDRCxhQUFELENBQU4sQ0FBc0JFLE9BQXRCLENBQThCLFVBQTlCO0FBQ0QsR0FKQyxDQUFGO0FBTUFILEVBQUFBLEVBQUUsQ0FBQyw2QkFBRCxFQUFnQyxZQUFNO0FBQ3RDLFFBQU1DLGFBQWEsR0FBRyw2REFBdEI7QUFFQUMsSUFBQUEsTUFBTSxDQUFDRCxhQUFELENBQU4sQ0FBc0JFLE9BQXRCLENBQThCLHNCQUE5QjtBQUNELEdBSkMsQ0FBRjtBQU1BSCxFQUFBQSxFQUFFLENBQUMsbUNBQUQsRUFBc0MsWUFBTTtBQUM1QyxRQUFNQyxhQUFhLEdBQUcsNENBQXRCO0FBRUFDLElBQUFBLE1BQU0sQ0FBQ0QsYUFBRCxDQUFOLENBQXNCRSxPQUF0QixDQUE4QixlQUE5QjtBQUNELEdBSkMsQ0FBRjtBQUtELENBeEJPLENBQVIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwcmVwYXJlVGV4dCB9IGZyb20gJy4uL3V0aWxzJztcblxuZGVzY3JpYmUoJ2xvZ2ljJywgKCkgPT4ge1xuICBpdCgncmV0dXJucyB0ZXh0IGlmIG5vIGh0bWwgZWxlbWVudHMnLCAoKSA9PiB7XG4gICAgY29uc3QgZm9ybWF0dGVkVGV4dCA9IHByZXBhcmVUZXh0KGBmb28gYmFyYCk7XG5cbiAgICBleHBlY3QoZm9ybWF0dGVkVGV4dCkudG9FcXVhbCgnZm9vIGJhcicpO1xuICB9KTtcblxuICBpdCgncmVwbGFjZXMgYnIgd2l0aCBuZXcgbGluZXMnLCAoKSA9PiB7XG4gICAgY29uc3QgZm9ybWF0dGVkVGV4dCA9IHByZXBhcmVUZXh0KGA8cD5mb288YnI+YmFyPC9wPmApO1xuXG4gICAgZXhwZWN0KGZvcm1hdHRlZFRleHQpLnRvRXF1YWwoJ2Zvb1xcbmJhcicpO1xuICB9KTtcblxuICBpdCgncmVwbGFjZXMgcCB3aXRoIDIgbmV3IGxpbmVzJywgKCkgPT4ge1xuICAgIGNvbnN0IGZvcm1hdHRlZFRleHQgPSBwcmVwYXJlVGV4dChgPHA+Zm9vPGJyPmJhcjwvcD48cD5iYXI8YnI+Zm9vPC9wPmApO1xuXG4gICAgZXhwZWN0KGZvcm1hdHRlZFRleHQpLnRvRXF1YWwoJ2Zvb1xcbmJhclxcblxcbmJhclxcbmZvbycpO1xuICB9KTtcblxuICBpdCgnYWRkcyBwIGlmIHRoZXJlIGFyZSBubyBwYXJhZ3JhcGhzJywgKCkgPT4ge1xuICAgIGNvbnN0IGZvcm1hdHRlZFRleHQgPSBwcmVwYXJlVGV4dChgZm9vPGJyPmJhcjxicj5mb29gKTtcblxuICAgIGV4cGVjdChmb3JtYXR0ZWRUZXh0KS50b0VxdWFsKCdmb29cXG5iYXJcXG5mb28nKTtcbiAgfSk7XG59KTtcbiJdfQ==
package/lib/index.js DELETED
@@ -1,76 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- var _typeof = require("@babel/runtime/helpers/typeof");
6
-
7
- Object.defineProperty(exports, "__esModule", {
8
- value: true
9
- });
10
- Object.defineProperty(exports, "Controls", {
11
- enumerable: true,
12
- get: function get() {
13
- return _controls["default"];
14
- }
15
- });
16
- Object.defineProperty(exports, "Legend", {
17
- enumerable: true,
18
- get: function get() {
19
- return _legend.Legend;
20
- }
21
- });
22
- Object.defineProperty(exports, "TextSelect", {
23
- enumerable: true,
24
- get: function get() {
25
- return _textSelect["default"];
26
- }
27
- });
28
- Object.defineProperty(exports, "Token", {
29
- enumerable: true,
30
- get: function get() {
31
- return _token["default"];
32
- }
33
- });
34
- Object.defineProperty(exports, "TokenSelect", {
35
- enumerable: true,
36
- get: function get() {
37
- return _tokenSelect["default"];
38
- }
39
- });
40
- Object.defineProperty(exports, "TokenTypes", {
41
- enumerable: true,
42
- get: function get() {
43
- return _tokenSelect.TokenTypes;
44
- }
45
- });
46
- Object.defineProperty(exports, "Tokenizer", {
47
- enumerable: true,
48
- get: function get() {
49
- return _tokenizer["default"];
50
- }
51
- });
52
- Object.defineProperty(exports, "prepareText", {
53
- enumerable: true,
54
- get: function get() {
55
- return _utils.prepareText;
56
- }
57
- });
58
-
59
- var _controls = _interopRequireDefault(require("./tokenizer/controls"));
60
-
61
- var _tokenizer = _interopRequireDefault(require("./tokenizer"));
62
-
63
- var _tokenSelect = _interopRequireWildcard(require("./token-select"));
64
-
65
- var _textSelect = _interopRequireDefault(require("./text-select"));
66
-
67
- var _legend = require("./legend");
68
-
69
- var _token = _interopRequireDefault(require("./token-select/token"));
70
-
71
- var _utils = require("./utils");
72
-
73
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
74
-
75
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
76
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0EiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ29udHJvbHMgZnJvbSAnLi90b2tlbml6ZXIvY29udHJvbHMnO1xuaW1wb3J0IFRva2VuaXplciBmcm9tICcuL3Rva2VuaXplcic7XG5pbXBvcnQgVG9rZW5TZWxlY3QsIHsgVG9rZW5UeXBlcyB9IGZyb20gJy4vdG9rZW4tc2VsZWN0JztcbmltcG9ydCBUZXh0U2VsZWN0IGZyb20gJy4vdGV4dC1zZWxlY3QnO1xuaW1wb3J0IHsgTGVnZW5kIH0gZnJvbSAnLi9sZWdlbmQnO1xuaW1wb3J0IFRva2VuIGZyb20gJy4vdG9rZW4tc2VsZWN0L3Rva2VuJztcbmltcG9ydCB7IHByZXBhcmVUZXh0IH0gZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCB7IENvbnRyb2xzLCBUZXh0U2VsZWN0LCBUb2tlblR5cGVzLCBUb2tlbml6ZXIsIFRva2VuU2VsZWN0LCBUb2tlbiwgcHJlcGFyZVRleHQsIExlZ2VuZCB9O1xuIl19
package/lib/legend.js DELETED
@@ -1,99 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.Legend = void 0;
9
-
10
- var _react = _interopRequireDefault(require("react"));
11
-
12
- var _styles = require("@material-ui/core/styles");
13
-
14
- var _Check = _interopRequireDefault(require("@material-ui/icons/Check"));
15
-
16
- var _Close = _interopRequireDefault(require("@material-ui/icons/Close"));
17
-
18
- var _Remove = _interopRequireDefault(require("@material-ui/icons/Remove"));
19
-
20
- var _renderUi = require("@pie-lib/render-ui");
21
-
22
- var _translator = _interopRequireDefault(require("@pie-lib/translator"));
23
-
24
- var translator = _translator["default"].translator;
25
- var Legend = (0, _styles.withStyles)(function (theme) {
26
- return {
27
- flexContainer: {
28
- display: 'flex',
29
- flexDirection: 'row',
30
- gap: "".concat(2 * theme.spacing.unit, "px"),
31
- borderBottom: '1px solid lightgrey',
32
- borderTop: '1px solid lightgrey',
33
- paddingBottom: theme.spacing.unit,
34
- paddingTop: theme.spacing.unit,
35
- marginBottom: theme.spacing.unit
36
- },
37
- container: {
38
- display: 'flex',
39
- flexDirection: 'row',
40
- gap: "".concat(theme.spacing.unit / 2, "px"),
41
- alignItems: 'center'
42
- },
43
- correct: {
44
- fontSize: 'larger',
45
- color: _renderUi.color.correct(),
46
- backgroundColor: _renderUi.color.correctSecondary(),
47
- border: "2px solid ".concat(_renderUi.color.correct())
48
- },
49
- incorrect: {
50
- fontSize: 'larger',
51
- color: _renderUi.color.missing(),
52
- backgroundColor: _renderUi.color.incorrectSecondary(),
53
- border: "2px solid ".concat(_renderUi.color.missing())
54
- },
55
- missing: {
56
- fontSize: 'larger',
57
- color: _renderUi.color.missing(),
58
- backgroundColor: _renderUi.color.incorrectSecondary(),
59
- border: "2px dashed ".concat(_renderUi.color.missing())
60
- }
61
- };
62
- })(function (_ref) {
63
- var classes = _ref.classes,
64
- language = _ref.language;
65
- var icons = [{
66
- iconName: _Check["default"],
67
- label: translator.t('selectText.correctAnswerSelected', {
68
- lng: language
69
- }),
70
- className: classes.correct
71
- }, {
72
- iconName: _Remove["default"],
73
- label: translator.t('selectText.correctAnswerNotSelected', {
74
- lng: language
75
- }),
76
- className: classes.missing
77
- }, {
78
- iconName: _Close["default"],
79
- label: translator.t('selectText.incorrectSelection', {
80
- lng: language
81
- }),
82
- className: classes.incorrect
83
- }];
84
- return /*#__PURE__*/_react["default"].createElement("div", {
85
- className: classes.flexContainer
86
- }, icons.map(function (icon, index) {
87
- var Icon = icon.iconName;
88
- return /*#__PURE__*/_react["default"].createElement("div", {
89
- key: index,
90
- className: classes.container
91
- }, /*#__PURE__*/_react["default"].createElement(Icon, {
92
- className: icon.className,
93
- width: '19px',
94
- height: '19px'
95
- }), /*#__PURE__*/_react["default"].createElement("span", null, icon.label));
96
- }));
97
- });
98
- exports.Legend = Legend;
99
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9sZWdlbmQuanMiXSwibmFtZXMiOlsidHJhbnNsYXRvciIsIlRyYW5zbGF0b3IiLCJMZWdlbmQiLCJ0aGVtZSIsImZsZXhDb250YWluZXIiLCJkaXNwbGF5IiwiZmxleERpcmVjdGlvbiIsImdhcCIsInNwYWNpbmciLCJ1bml0IiwiYm9yZGVyQm90dG9tIiwiYm9yZGVyVG9wIiwicGFkZGluZ0JvdHRvbSIsInBhZGRpbmdUb3AiLCJtYXJnaW5Cb3R0b20iLCJjb250YWluZXIiLCJhbGlnbkl0ZW1zIiwiY29ycmVjdCIsImZvbnRTaXplIiwiY29sb3IiLCJiYWNrZ3JvdW5kQ29sb3IiLCJjb3JyZWN0U2Vjb25kYXJ5IiwiYm9yZGVyIiwiaW5jb3JyZWN0IiwibWlzc2luZyIsImluY29ycmVjdFNlY29uZGFyeSIsImNsYXNzZXMiLCJsYW5ndWFnZSIsImljb25zIiwiaWNvbk5hbWUiLCJDaGVjayIsImxhYmVsIiwidCIsImxuZyIsImNsYXNzTmFtZSIsIlJlbW92ZSIsIkNsb3NlIiwibWFwIiwiaWNvbiIsImluZGV4IiwiSWNvbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsSUFBUUEsVUFBUixHQUF1QkMsc0JBQXZCLENBQVFELFVBQVI7QUFFTyxJQUFNRSxNQUFNLEdBQUcsd0JBQVcsVUFBQ0MsS0FBRDtBQUFBLFNBQVk7QUFDM0NDLElBQUFBLGFBQWEsRUFBRTtBQUNiQyxNQUFBQSxPQUFPLEVBQUUsTUFESTtBQUViQyxNQUFBQSxhQUFhLEVBQUUsS0FGRjtBQUdiQyxNQUFBQSxHQUFHLFlBQUssSUFBSUosS0FBSyxDQUFDSyxPQUFOLENBQWNDLElBQXZCLE9BSFU7QUFJYkMsTUFBQUEsWUFBWSxFQUFFLHFCQUpEO0FBS2JDLE1BQUFBLFNBQVMsRUFBRSxxQkFMRTtBQU1iQyxNQUFBQSxhQUFhLEVBQUVULEtBQUssQ0FBQ0ssT0FBTixDQUFjQyxJQU5oQjtBQU9i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RUFBRTtBQUF4RCxNQURGLGVBRUUsOENBQU9JLElBQUksQ0FBQ1AsS0FBWixDQUZGLENBREY7QUFNRCxHQVJBLENBREgsQ0FERjtBQWFELENBbkVxQixDQUFmIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHdpdGhTdHlsZXMgfSBmcm9tICdAbWF0ZXJpYWwtdWkvY29yZS9zdHlsZXMnO1xuaW1wb3J0IENoZWNrIGZyb20gJ0BtYXRlcmlhbC11aS9pY29ucy9DaGVjayc7XG5pbXBvcnQgQ2xvc2UgZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL0Nsb3NlJztcbmltcG9ydCBSZW1vdmUgZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL1JlbW92ZSc7XG5pbXBvcnQgeyBjb2xvciB9IGZyb20gJ0BwaWUtbGliL3JlbmRlci11aSc7XG5pbXBvcnQgVHJhbnNsYXRvciBmcm9tICdAcGllLWxpYi90cmFuc2xhdG9yJztcblxuY29uc3QgeyB0cmFuc2xhdG9yIH0gPSBUcmFuc2xhdG9yO1xuXG5leHBvcnQgY29uc3QgTGVnZW5kID0gd2l0aFN0eWxlcygodGhlbWUpID0+ICh7XG4gIGZsZXhDb250YWluZXI6IHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgZmxleERpcmVjdGlvbjogJ3JvdycsXG4gICAgZ2FwOiBgJHsyICogdGhlbWUuc3BhY2luZy51bml0fXB4YCxcbiAgICBib3JkZXJCb3R0b206ICcxcHggc29saWQgbGlnaHRncmV5JyxcbiAgICBib3JkZXJUb3A6ICcxcHggc29saWQgbGlnaHRncmV5JyxcbiAgICBwYWRkaW5nQm90dG9tOiB0aGVtZS5zcGFjaW5nLnVuaXQsXG4gICAgcGFkZGluZ1RvcDogdGhlbWUuc3BhY2luZy51bml0LFxuICAgIG1hcmdpbkJvdHRvbTogdGhlbWUuc3BhY2luZy51bml0LFxuICB9LFxuICBjb250YWluZXI6IHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgZmxleERpcmVjdGlvbjogJ3JvdycsXG4gICAgZ2FwOiBgJHt0aGVtZS5zcGFjaW5nLnVuaXQgLyAyfXB4YCxcbiAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgfSxcbiAgY29ycmVjdDoge1xuICAgIGZvbnRTaXplOiAnbGFyZ2VyJyxcbiAgICBjb2xvcjogY29sb3IuY29ycmVjdCgpLFxuICAgIGJhY2tncm91bmRDb2xvcjogY29sb3IuY29ycmVjdFNlY29uZGFyeSgpLFxuICAgIGJvcmRlcjogYDJweCBzb2xpZCAke2NvbG9yLmNvcnJlY3QoKX1gLFxuICB9LFxuICBpbmNvcnJlY3Q6IHtcbiAgICBmb250U2l6ZTogJ2xhcmdlcicsXG4gICAgY29sb3I6IGNvbG9yLm1pc3NpbmcoKSxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IGNvbG9yLmluY29ycmVjdFNlY29uZGFyeSgpLFxuICAgIGJvcmRlcjogYDJweCBzb2xpZCAke2NvbG9yLm1pc3NpbmcoKX1gLFxuICB9LFxuICBtaXNzaW5nOiB7XG4gICAgZm9udFNpemU6ICdsYXJnZXInLFxuICAgIGNvbG9yOiBjb2xvci5taXNzaW5nKCksXG4gICAgYmFja2dyb3VuZENvbG9yOiBjb2xvci5pbmNvcnJlY3RTZWNvbmRhcnkoKSxcbiAgICBib3JkZXI6IGAycHggZGFzaGVkICR7Y29sb3IubWlzc2luZygpfWAsXG4gIH0sXG59KSkoKHsgY2xhc3NlcywgbGFuZ3VhZ2UgfSkgPT4ge1xuICBjb25zdCBpY29ucyA9IFtcbiAgICB7XG4gICAgICBpY29uTmFtZTogQ2hlY2ssXG4gICAgICBsYWJlbDogdHJhbnNsYXRvci50KCdzZWxlY3RUZXh0LmNvcnJlY3RBbnN3ZXJTZWxlY3RlZCcsIHsgbG5nOiBsYW5ndWFnZSB9KSxcbiAgICAgIGNsYXNzTmFtZTogY2xhc3Nlcy5jb3JyZWN0LFxuICAgIH0sXG4gICAge1xuICAgICAgaWNvbk5hbWU6IFJlbW92ZSxcbiAgICAgIGxhYmVsOiB0cmFuc2xhdG9yLnQoJ3NlbGVjdFRleHQuY29ycmVjdEFuc3dlck5vdFNlbGVjdGVkJywgeyBsbmc6IGxhbmd1YWdlIH0pLFxuICAgICAgY2xhc3NOYW1lOiBjbGFzc2VzLm1pc3NpbmcsXG4gICAgfSxcbiAgICB7XG4gICAgICBpY29uTmFtZTogQ2xvc2UsXG4gICAgICBsYWJlbDogdHJhbnNsYXRvci50KCdzZWxlY3RUZXh0LmluY29ycmVjdFNlbGVjdGlvbicsIHsgbG5nOiBsYW5ndWFnZSB9KSxcbiAgICAgIGNsYXNzTmFtZTogY2xhc3Nlcy5pbmNvcnJlY3QsXG4gICAgfSxcbiAgXTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2VzLmZsZXhDb250YWluZXJ9PlxuICAgICAge2ljb25zLm1hcCgoaWNvbiwgaW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgSWNvbiA9IGljb24uaWNvbk5hbWU7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPGRpdiBrZXk9e2luZGV4fSBjbGFzc05hbWU9e2NsYXNzZXMuY29udGFpbmVyfT5cbiAgICAgICAgICAgIDxJY29uIGNsYXNzTmFtZT17aWNvbi5jbGFzc05hbWV9IHdpZHRoPXsnMTlweCd9IGhlaWdodD17JzE5cHgnfT48L0ljb24+XG4gICAgICAgICAgICA8c3Bhbj57aWNvbi5sYWJlbH08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICk7XG4gICAgICB9KX1cbiAgICA8L2Rpdj5cbiAgKTtcbn0pO1xuIl19