@pie-lib/text-select 1.12.7 → 1.12.8-next.1639
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.json +1 -632
- package/CHANGELOG.md +178 -28
- package/NEXT.CHANGELOG.json +1 -0
- package/lib/legend.js +63 -36
- package/lib/legend.js.map +1 -1
- package/lib/token-select/index.js +3 -2
- package/lib/token-select/index.js.map +1 -1
- package/lib/token-select/token.js +113 -74
- package/lib/token-select/token.js.map +1 -1
- package/lib/tokenizer/controls.js +14 -0
- package/lib/tokenizer/controls.js.map +1 -1
- package/lib/tokenizer/token-text.js +11 -2
- package/lib/tokenizer/token-text.js.map +1 -1
- package/package.json +8 -6
- package/src/__tests__/__snapshots__/text-select.test.jsx.snap +21 -0
- package/src/__tests__/text-select.test.jsx +34 -0
- package/src/__tests__/utils.test.jsx +27 -0
- package/src/legend.js +54 -36
- package/src/token-select/__tests__/__snapshots__/index.test.jsx.snap +49 -0
- package/src/token-select/__tests__/__snapshots__/token.test.jsx.snap +27 -0
- package/src/token-select/__tests__/index.test.jsx +257 -0
- package/src/token-select/__tests__/token.test.jsx +33 -0
- package/src/token-select/index.jsx +3 -1
- package/src/token-select/token.jsx +98 -72
- package/src/tokenizer/__tests__/__snapshots__/controls.test.jsx.snap +59 -0
- package/src/tokenizer/__tests__/__snapshots__/index.test.jsx.snap +31 -0
- package/src/tokenizer/__tests__/__snapshots__/token-text.test.jsx.snap +17 -0
- package/src/tokenizer/__tests__/builder.test.js +256 -0
- package/src/tokenizer/__tests__/controls.test.jsx +25 -0
- package/src/tokenizer/__tests__/index.test.jsx +140 -0
- package/src/tokenizer/__tests__/selection-utils.test.js +26 -0
- package/src/tokenizer/__tests__/token-text.test.jsx +136 -0
- package/src/tokenizer/controls.jsx +20 -1
- package/src/tokenizer/token-text.jsx +9 -0
- package/README.md +0 -3
|
@@ -11,6 +11,8 @@ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/cl
|
|
|
11
11
|
|
|
12
12
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
13
13
|
|
|
14
|
+
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
15
|
+
|
|
14
16
|
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
15
17
|
|
|
16
18
|
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
@@ -27,12 +29,12 @@ var _styles = require("@material-ui/core/styles");
|
|
|
27
29
|
|
|
28
30
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
29
31
|
|
|
30
|
-
var _renderUi = require("@pie-lib/render-ui");
|
|
31
|
-
|
|
32
32
|
var _Check = _interopRequireDefault(require("@material-ui/icons/Check"));
|
|
33
33
|
|
|
34
34
|
var _Close = _interopRequireDefault(require("@material-ui/icons/Close"));
|
|
35
35
|
|
|
36
|
+
var _renderUi = require("@pie-lib/render-ui");
|
|
37
|
+
|
|
36
38
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
37
39
|
|
|
38
40
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
@@ -41,23 +43,23 @@ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflec
|
|
|
41
43
|
|
|
42
44
|
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
43
45
|
|
|
46
|
+
// we need to use a larger line height for the token to be more readable
|
|
47
|
+
var LINE_HEIGHT_MULTIPLIER = 3.2; // we need a bit more space for correctness indicators
|
|
48
|
+
|
|
49
|
+
var CORRECTNESS_LINE_HEIGHT_MULTIPLIER = 3.4;
|
|
50
|
+
var CORRECTNESS_PADDING = 2;
|
|
51
|
+
|
|
44
52
|
var Wrapper = function Wrapper(_ref) {
|
|
45
53
|
var useWrapper = _ref.useWrapper,
|
|
46
54
|
children = _ref.children,
|
|
47
55
|
classNameContainer = _ref.classNameContainer,
|
|
48
56
|
iconClass = _ref.iconClass,
|
|
49
57
|
Icon = _ref.Icon;
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
className: iconClass,
|
|
56
|
-
viewBox: '0 1 24 24'
|
|
57
|
-
}));
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
return children;
|
|
58
|
+
return useWrapper ? /*#__PURE__*/_react["default"].createElement("span", {
|
|
59
|
+
className: classNameContainer
|
|
60
|
+
}, children, /*#__PURE__*/_react["default"].createElement(Icon, {
|
|
61
|
+
className: iconClass
|
|
62
|
+
})) : children;
|
|
61
63
|
};
|
|
62
64
|
|
|
63
65
|
Wrapper.propTypes = {
|
|
@@ -79,46 +81,84 @@ var Token = /*#__PURE__*/function (_React$Component) {
|
|
|
79
81
|
var _super = _createSuper(Token);
|
|
80
82
|
|
|
81
83
|
function Token() {
|
|
84
|
+
var _this;
|
|
85
|
+
|
|
82
86
|
(0, _classCallCheck2["default"])(this, Token);
|
|
83
|
-
return _super.apply(this, arguments);
|
|
84
|
-
}
|
|
85
87
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
88
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
89
|
+
args[_key] = arguments[_key];
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
_this = _super.call.apply(_super, [this].concat(args));
|
|
93
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "getClassAndIconConfig", function () {
|
|
94
|
+
var _this$props = _this.props,
|
|
91
95
|
selectable = _this$props.selectable,
|
|
92
96
|
selected = _this$props.selected,
|
|
93
97
|
classes = _this$props.classes,
|
|
94
98
|
classNameProp = _this$props.className,
|
|
95
99
|
disabled = _this$props.disabled,
|
|
96
|
-
index = _this$props.index,
|
|
97
100
|
highlight = _this$props.highlight,
|
|
98
101
|
correct = _this$props.correct,
|
|
99
102
|
animationsDisabled = _this$props.animationsDisabled,
|
|
100
103
|
isMissing = _this$props.isMissing;
|
|
101
104
|
var isTouchEnabled = 'ontouchstart' in window || navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0;
|
|
102
|
-
var
|
|
105
|
+
var baseClassName = Token.rootClassName;
|
|
103
106
|
var classNameContainer;
|
|
104
107
|
var Icon;
|
|
105
108
|
var iconClass;
|
|
106
109
|
|
|
107
110
|
if (correct === undefined && selected && disabled) {
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
111
|
+
return {
|
|
112
|
+
className: (0, _classnames["default"])(classes.token, classes.selected, classes.disabledBlack)
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
if (correct !== undefined) {
|
|
117
|
+
var isCorrect = correct === true;
|
|
118
|
+
return {
|
|
119
|
+
className: (0, _classnames["default"])(baseClassName, classes.custom),
|
|
120
|
+
classNameContainer: (0, _classnames["default"])(isCorrect ? classes.correct : classes.incorrect, classes.commonTokenStyle),
|
|
121
|
+
Icon: isCorrect ? _Check["default"] : _Close["default"],
|
|
122
|
+
iconClass: (0, _classnames["default"])(classes.correctnessIndicatorIcon, isCorrect ? classes.correctIcon : classes.incorrectIcon)
|
|
123
|
+
};
|
|
118
124
|
}
|
|
119
125
|
|
|
126
|
+
if (isMissing) {
|
|
127
|
+
return {
|
|
128
|
+
className: (0, _classnames["default"])(baseClassName, classes.custom, classes.missing, classes.commonTokenStyle),
|
|
129
|
+
classNameContainer: classes.commonTokenStyle,
|
|
130
|
+
Icon: _Close["default"],
|
|
131
|
+
iconClass: (0, _classnames["default"])(classes.correctnessIndicatorIcon, classes.incorrectIcon)
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
return {
|
|
136
|
+
className: (0, _classnames["default"])(baseClassName, classes.token, disabled && classes.disabled, selectable && !disabled && !isTouchEnabled && classes.selectable, selected && !disabled && classes.selected, selected && disabled && classes.disabledAndSelected, highlight && selectable && !disabled && !selected && classes.highlight, animationsDisabled && classes.print, classNameProp),
|
|
137
|
+
classNameContainer: classNameContainer,
|
|
138
|
+
Icon: Icon,
|
|
139
|
+
iconClass: iconClass
|
|
140
|
+
};
|
|
141
|
+
});
|
|
142
|
+
return _this;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
(0, _createClass2["default"])(Token, [{
|
|
146
|
+
key: "render",
|
|
147
|
+
value: function render() {
|
|
148
|
+
var _this$props2 = this.props,
|
|
149
|
+
text = _this$props2.text,
|
|
150
|
+
index = _this$props2.index,
|
|
151
|
+
correct = _this$props2.correct,
|
|
152
|
+
isMissing = _this$props2.isMissing;
|
|
153
|
+
|
|
154
|
+
var _this$getClassAndIcon = this.getClassAndIconConfig(),
|
|
155
|
+
className = _this$getClassAndIcon.className,
|
|
156
|
+
classNameContainer = _this$getClassAndIcon.classNameContainer,
|
|
157
|
+
Icon = _this$getClassAndIcon.Icon,
|
|
158
|
+
iconClass = _this$getClassAndIcon.iconClass;
|
|
159
|
+
|
|
120
160
|
return /*#__PURE__*/_react["default"].createElement(Wrapper, {
|
|
121
|
-
useWrapper: correct !== undefined,
|
|
161
|
+
useWrapper: correct !== undefined || isMissing,
|
|
122
162
|
classNameContainer: classNameContainer,
|
|
123
163
|
iconClass: iconClass,
|
|
124
164
|
Icon: Icon
|
|
@@ -138,11 +178,11 @@ exports.Token = Token;
|
|
|
138
178
|
(0, _defineProperty2["default"])(Token, "rootClassName", 'tokenRootClass');
|
|
139
179
|
(0, _defineProperty2["default"])(Token, "propTypes", _objectSpread(_objectSpread({}, TokenTypes), {}, {
|
|
140
180
|
classes: _propTypes["default"].object.isRequired,
|
|
181
|
+
text: _propTypes["default"].string.isRequired,
|
|
141
182
|
className: _propTypes["default"].string,
|
|
142
183
|
disabled: _propTypes["default"].bool,
|
|
143
184
|
highlight: _propTypes["default"].bool,
|
|
144
|
-
correct: _propTypes["default"].bool
|
|
145
|
-
text: _propTypes["default"].string.isRequired
|
|
185
|
+
correct: _propTypes["default"].bool
|
|
146
186
|
}));
|
|
147
187
|
(0, _defineProperty2["default"])(Token, "defaultProps", {
|
|
148
188
|
selectable: false,
|
|
@@ -153,11 +193,7 @@ var _default = (0, _styles.withStyles)(function (theme) {
|
|
|
153
193
|
return {
|
|
154
194
|
token: {
|
|
155
195
|
cursor: 'pointer',
|
|
156
|
-
textIndent: 0
|
|
157
|
-
padding: theme.spacing.unit / 2,
|
|
158
|
-
paddingRight: 0,
|
|
159
|
-
paddingLeft: 0,
|
|
160
|
-
transition: 'background-color 100ms ease-in'
|
|
196
|
+
textIndent: 0
|
|
161
197
|
},
|
|
162
198
|
disabled: {
|
|
163
199
|
cursor: 'inherit',
|
|
@@ -167,68 +203,71 @@ var _default = (0, _styles.withStyles)(function (theme) {
|
|
|
167
203
|
cursor: 'inherit'
|
|
168
204
|
},
|
|
169
205
|
disabledAndSelected: {
|
|
170
|
-
backgroundColor: _renderUi.color.
|
|
206
|
+
backgroundColor: _renderUi.color.blueGrey100()
|
|
171
207
|
},
|
|
172
208
|
selectable: (0, _defineProperty2["default"])({}, theme.breakpoints.up(769), {
|
|
173
209
|
'&:hover': {
|
|
174
|
-
backgroundColor: _renderUi.color.
|
|
210
|
+
backgroundColor: _renderUi.color.blueGrey300(),
|
|
211
|
+
color: theme.palette.common.black,
|
|
175
212
|
'& > *': {
|
|
176
|
-
backgroundColor: _renderUi.color.
|
|
213
|
+
backgroundColor: _renderUi.color.blueGrey300()
|
|
177
214
|
}
|
|
178
215
|
}
|
|
179
216
|
}),
|
|
180
217
|
selected: {
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
218
|
+
backgroundColor: _renderUi.color.blueGrey100(),
|
|
219
|
+
color: theme.palette.common.black,
|
|
220
|
+
lineHeight: "".concat(theme.spacing.unit * LINE_HEIGHT_MULTIPLIER, "px"),
|
|
221
|
+
border: "solid 2px ".concat(_renderUi.color.blueGrey900()),
|
|
222
|
+
borderRadius: '4px',
|
|
184
223
|
'& > *': {
|
|
185
|
-
backgroundColor: _renderUi.color.
|
|
224
|
+
backgroundColor: _renderUi.color.blueGrey100()
|
|
186
225
|
}
|
|
187
226
|
},
|
|
188
227
|
highlight: {
|
|
189
|
-
border: "dashed 2px ".concat(_renderUi.color.
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
marginTop: theme.spacing.unit / 2,
|
|
193
|
-
display: 'inline-block',
|
|
194
|
-
padding: theme.spacing.unit
|
|
228
|
+
border: "dashed 2px ".concat(_renderUi.color.blueGrey600()),
|
|
229
|
+
borderRadius: '4px',
|
|
230
|
+
lineHeight: "".concat(theme.spacing.unit * LINE_HEIGHT_MULTIPLIER, "px")
|
|
195
231
|
},
|
|
196
232
|
print: {
|
|
197
|
-
border: "dashed 2px ".concat(_renderUi.color.
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
marginTop: theme.spacing.unit / 2,
|
|
201
|
-
display: 'inline-block',
|
|
202
|
-
padding: theme.spacing.unit,
|
|
233
|
+
border: "dashed 2px ".concat(_renderUi.color.blueGrey600()),
|
|
234
|
+
borderRadius: '4px',
|
|
235
|
+
lineHeight: "".concat(theme.spacing.unit * LINE_HEIGHT_MULTIPLIER, "px"),
|
|
203
236
|
color: _renderUi.color.text()
|
|
204
237
|
},
|
|
205
238
|
custom: {
|
|
206
239
|
display: 'initial'
|
|
207
240
|
},
|
|
241
|
+
commonTokenStyle: {
|
|
242
|
+
position: 'relative',
|
|
243
|
+
borderRadius: '4px',
|
|
244
|
+
color: theme.palette.common.black,
|
|
245
|
+
lineHeight: "".concat(theme.spacing.unit * CORRECTNESS_LINE_HEIGHT_MULTIPLIER + CORRECTNESS_PADDING, "px"),
|
|
246
|
+
padding: "".concat(CORRECTNESS_PADDING, "px")
|
|
247
|
+
},
|
|
208
248
|
correct: {
|
|
209
|
-
|
|
210
|
-
border: "".concat(_renderUi.color.correct(), " solid 2px"),
|
|
211
|
-
lineHeight: "".concat(theme.spacing.unit * 4, "px")
|
|
249
|
+
border: "".concat(_renderUi.color.correctTertiary(), " solid 2px")
|
|
212
250
|
},
|
|
213
251
|
incorrect: {
|
|
214
|
-
|
|
215
|
-
border: "".concat(_renderUi.color.missing(), " solid 2px"),
|
|
216
|
-
lineHeight: "".concat(theme.spacing.unit * 4, "px")
|
|
252
|
+
border: "".concat(_renderUi.color.incorrectWithIcon(), " solid 2px")
|
|
217
253
|
},
|
|
218
254
|
missing: {
|
|
219
|
-
|
|
220
|
-
border: "".concat(_renderUi.color.missing(), " dashed 2px"),
|
|
221
|
-
textDecoration: "line-through ".concat(_renderUi.color.missing())
|
|
255
|
+
border: "".concat(_renderUi.color.incorrectWithIcon(), " dashed 2px")
|
|
222
256
|
},
|
|
223
257
|
incorrectIcon: {
|
|
224
|
-
|
|
225
|
-
fontSize: 'larger',
|
|
226
|
-
color: _renderUi.color.missing()
|
|
258
|
+
backgroundColor: _renderUi.color.incorrectWithIcon()
|
|
227
259
|
},
|
|
228
260
|
correctIcon: {
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
261
|
+
backgroundColor: _renderUi.color.correctTertiary()
|
|
262
|
+
},
|
|
263
|
+
correctnessIndicatorIcon: {
|
|
264
|
+
color: _renderUi.color.white(),
|
|
265
|
+
position: 'absolute',
|
|
266
|
+
top: '-8px',
|
|
267
|
+
left: '-8px',
|
|
268
|
+
borderRadius: '50%',
|
|
269
|
+
fontSize: '12px',
|
|
270
|
+
padding: '2px'
|
|
232
271
|
}
|
|
233
272
|
};
|
|
234
273
|
})(Token);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/token-select/token.jsx"],"names":["Wrapper","useWrapper","children","classNameContainer","iconClass","Icon","propTypes","PropTypes","bool","string","func","element","TokenTypes","text","selectable","Token","props","selected","classes","classNameProp","className","disabled","index","highlight","correct","animationsDisabled","isMissing","isTouchEnabled","window","navigator","maxTouchPoints","msMaxTouchPoints","undefined","token","disabledBlack","rootClassName","custom","Check","Close","incorrect","correctIcon","incorrectIcon","missing","disabledAndSelected","print","__html","replace","React","Component","object","isRequired","theme","cursor","textIndent","padding","spacing","unit","paddingRight","paddingLeft","transition","color","backgroundColor","secondaryLight","breakpoints","up","primaryLight","lineHeight","marginTop","border","boxSizing","display","correctSecondary","incorrectSecondary","textDecoration","verticalAlign","fontSize"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport { color } from '@pie-lib/render-ui';\nimport Check from '@material-ui/icons/Check';\nimport Close from '@material-ui/icons/Close';\n\nconst Wrapper = ({ useWrapper, children, classNameContainer, iconClass, Icon }) => {\n if (useWrapper) {\n return (\n <span className={classNameContainer}>\n {children}\n <Icon className={iconClass} viewBox={'0 1 24 24'} />\n </span>\n );\n }\n\n return children;\n};\n\nWrapper.propTypes = {\n useWrapper: PropTypes.bool,\n classNameContainer: PropTypes.string,\n iconClass: PropTypes.string,\n Icon: PropTypes.func,\n children: PropTypes.element,\n};\n\nexport const TokenTypes = {\n text: PropTypes.string,\n selectable: PropTypes.bool,\n};\n\nexport class Token extends React.Component {\n static rootClassName = 'tokenRootClass';\n\n static propTypes = {\n ...TokenTypes,\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n disabled: PropTypes.bool,\n highlight: PropTypes.bool,\n correct: PropTypes.bool,\n text: PropTypes.string.isRequired,\n };\n\n static defaultProps = {\n selectable: false,\n text: '',\n };\n\n render() {\n const {\n text,\n selectable,\n selected,\n classes,\n className: classNameProp,\n disabled,\n index,\n highlight,\n correct,\n animationsDisabled,\n isMissing,\n } = this.props;\n const isTouchEnabled = 'ontouchstart' in window || navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0;\n\n let className;\n let classNameContainer;\n let Icon;\n let iconClass;\n\n if (correct === undefined && selected && disabled) {\n className = classNames(classes.token, classes.selected, classes.disabledBlack);\n } else if (correct !== undefined) {\n className = classNames(Token.rootClassName, classes.custom);\n Icon = correct ? Check : Close;\n classNameContainer = correct === true ? classes.correct : classes.incorrect;\n iconClass = correct === true ? classes.correctIcon : classes.incorrectIcon;\n } else if (isMissing) {\n className = classNames(Token.rootClassName, classes.custom, isMissing === true && classes.missing);\n } else {\n className = classNames(\n Token.rootClassName,\n classes.token,\n disabled && classes.disabled,\n selectable && !disabled && !isTouchEnabled && classes.selectable,\n selected && !disabled && classes.selected,\n selected && disabled && classes.disabledAndSelected,\n highlight && selectable && !disabled && !selected && classes.highlight,\n animationsDisabled && classes.print,\n classNameProp,\n );\n }\n return (\n <Wrapper\n useWrapper={correct !== undefined}\n classNameContainer={classNameContainer}\n iconClass={iconClass}\n Icon={Icon}\n >\n <span\n className={className}\n dangerouslySetInnerHTML={{ __html: (text || '').replace(/\\n/g, '<br>') }}\n data-indexkey={index}\n />\n </Wrapper>\n );\n }\n}\n\nexport default withStyles((theme) => {\n return {\n token: {\n cursor: 'pointer',\n textIndent: 0,\n padding: theme.spacing.unit / 2,\n paddingRight: 0,\n paddingLeft: 0,\n transition: 'background-color 100ms ease-in',\n },\n disabled: {\n cursor: 'inherit',\n color: color.disabled(),\n },\n disabledBlack: {\n cursor: 'inherit',\n },\n disabledAndSelected: {\n backgroundColor: color.secondaryLight(),\n },\n selectable: {\n [theme.breakpoints.up(769)]: {\n '&:hover': {\n backgroundColor: color.primaryLight(),\n '& > *': {\n backgroundColor: color.primaryLight(),\n },\n },\n },\n },\n selected: {\n lineHeight: 2,\n marginTop: theme.spacing.unit / 2,\n backgroundColor: color.primaryLight(),\n '& > *': {\n backgroundColor: color.primaryLight(),\n },\n },\n highlight: {\n border: `dashed 2px ${color.disabled()}`,\n lineHeight: 2,\n boxSizing: 'border-box',\n marginTop: theme.spacing.unit / 2,\n display: 'inline-block',\n padding: theme.spacing.unit,\n },\n print: {\n border: `dashed 2px ${color.disabled()}`,\n lineHeight: 2,\n boxSizing: 'border-box',\n marginTop: theme.spacing.unit / 2,\n display: 'inline-block',\n padding: theme.spacing.unit,\n color: color.text(),\n },\n\n custom: {\n display: 'initial',\n },\n correct: {\n backgroundColor: color.correctSecondary(),\n border: `${color.correct()} solid 2px`,\n lineHeight: `${theme.spacing.unit * 4}px`,\n },\n incorrect: {\n backgroundColor: color.incorrectSecondary(),\n border: `${color.missing()} solid 2px`,\n lineHeight: `${theme.spacing.unit * 4}px`,\n },\n missing: {\n backgroundColor: color.incorrectSecondary(),\n border: `${color.missing()} dashed 2px`,\n textDecoration: `line-through ${color.missing()}`,\n },\n incorrectIcon: {\n verticalAlign: 'middle',\n fontSize: 'larger',\n color: color.missing(),\n },\n\n correctIcon: {\n verticalAlign: 'middle',\n fontSize: 'larger',\n color: color.correct(),\n },\n };\n})(Token);\n"],"file":"token.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/token-select/token.jsx"],"names":["LINE_HEIGHT_MULTIPLIER","CORRECTNESS_LINE_HEIGHT_MULTIPLIER","CORRECTNESS_PADDING","Wrapper","useWrapper","children","classNameContainer","iconClass","Icon","propTypes","PropTypes","bool","string","func","element","TokenTypes","text","selectable","Token","props","selected","classes","classNameProp","className","disabled","highlight","correct","animationsDisabled","isMissing","isTouchEnabled","window","navigator","maxTouchPoints","msMaxTouchPoints","baseClassName","rootClassName","undefined","token","disabledBlack","isCorrect","custom","incorrect","commonTokenStyle","Check","Close","correctnessIndicatorIcon","correctIcon","incorrectIcon","missing","disabledAndSelected","print","index","getClassAndIconConfig","__html","replace","React","Component","object","isRequired","theme","cursor","textIndent","color","backgroundColor","blueGrey100","breakpoints","up","blueGrey300","palette","common","black","lineHeight","spacing","unit","border","blueGrey900","borderRadius","blueGrey600","display","position","padding","correctTertiary","incorrectWithIcon","white","top","left","fontSize"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport Check from '@material-ui/icons/Check';\nimport Close from '@material-ui/icons/Close';\n\nimport { color } from '@pie-lib/render-ui';\n\n// we need to use a larger line height for the token to be more readable\nconst LINE_HEIGHT_MULTIPLIER = 3.2;\n// we need a bit more space for correctness indicators\nconst CORRECTNESS_LINE_HEIGHT_MULTIPLIER = 3.4;\nconst CORRECTNESS_PADDING = 2;\n\nconst Wrapper = ({ useWrapper, children, classNameContainer, iconClass, Icon }) =>\n useWrapper ? (\n <span className={classNameContainer}>\n {children}\n <Icon className={iconClass} />\n </span>\n ) : (\n children\n );\n\nWrapper.propTypes = {\n useWrapper: PropTypes.bool,\n classNameContainer: PropTypes.string,\n iconClass: PropTypes.string,\n Icon: PropTypes.func,\n children: PropTypes.element,\n};\n\nexport const TokenTypes = {\n text: PropTypes.string,\n selectable: PropTypes.bool,\n};\n\nexport class Token extends React.Component {\n static rootClassName = 'tokenRootClass';\n\n static propTypes = {\n ...TokenTypes,\n classes: PropTypes.object.isRequired,\n text: PropTypes.string.isRequired,\n className: PropTypes.string,\n disabled: PropTypes.bool,\n highlight: PropTypes.bool,\n correct: PropTypes.bool,\n };\n\n static defaultProps = {\n selectable: false,\n text: '',\n };\n\n getClassAndIconConfig = () => {\n const {\n selectable,\n selected,\n classes,\n className: classNameProp,\n disabled,\n highlight,\n correct,\n animationsDisabled,\n isMissing,\n } = this.props;\n const isTouchEnabled = 'ontouchstart' in window || navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0;\n const baseClassName = Token.rootClassName;\n let classNameContainer;\n let Icon;\n let iconClass;\n\n if (correct === undefined && selected && disabled) {\n return {\n className: classNames(classes.token, classes.selected, classes.disabledBlack),\n };\n }\n\n if (correct !== undefined) {\n const isCorrect = correct === true;\n return {\n className: classNames(baseClassName, classes.custom),\n classNameContainer: classNames(isCorrect ? classes.correct : classes.incorrect, classes.commonTokenStyle),\n Icon: isCorrect ? Check : Close,\n iconClass: classNames(\n classes.correctnessIndicatorIcon,\n isCorrect ? classes.correctIcon : classes.incorrectIcon,\n ),\n };\n }\n\n if (isMissing) {\n return {\n className: classNames(baseClassName, classes.custom, classes.missing, classes.commonTokenStyle),\n classNameContainer: classes.commonTokenStyle,\n Icon: Close,\n iconClass: classNames(classes.correctnessIndicatorIcon, classes.incorrectIcon),\n };\n }\n\n return {\n className: classNames(\n baseClassName,\n classes.token,\n disabled && classes.disabled,\n selectable && !disabled && !isTouchEnabled && classes.selectable,\n selected && !disabled && classes.selected,\n selected && disabled && classes.disabledAndSelected,\n highlight && selectable && !disabled && !selected && classes.highlight,\n animationsDisabled && classes.print,\n classNameProp,\n ),\n classNameContainer,\n Icon,\n iconClass,\n };\n };\n\n render() {\n const { text, index, correct, isMissing } = this.props;\n const { className, classNameContainer, Icon, iconClass } = this.getClassAndIconConfig();\n\n return (\n <Wrapper\n useWrapper={correct !== undefined || isMissing}\n classNameContainer={classNameContainer}\n iconClass={iconClass}\n Icon={Icon}\n >\n <span\n className={className}\n dangerouslySetInnerHTML={{ __html: (text || '').replace(/\\n/g, '<br>') }}\n data-indexkey={index}\n />\n </Wrapper>\n );\n }\n}\n\nexport default withStyles((theme) => {\n return {\n token: {\n cursor: 'pointer',\n textIndent: 0,\n },\n disabled: {\n cursor: 'inherit',\n color: color.disabled(),\n },\n disabledBlack: {\n cursor: 'inherit',\n },\n disabledAndSelected: {\n backgroundColor: color.blueGrey100(),\n },\n selectable: {\n [theme.breakpoints.up(769)]: {\n '&:hover': {\n backgroundColor: color.blueGrey300(),\n color: theme.palette.common.black,\n '& > *': {\n backgroundColor: color.blueGrey300(),\n },\n },\n },\n },\n selected: {\n backgroundColor: color.blueGrey100(),\n color: theme.palette.common.black,\n lineHeight: `${theme.spacing.unit * LINE_HEIGHT_MULTIPLIER}px`,\n border: `solid 2px ${color.blueGrey900()}`,\n borderRadius: '4px',\n '& > *': {\n backgroundColor: color.blueGrey100(),\n },\n },\n highlight: {\n border: `dashed 2px ${color.blueGrey600()}`,\n borderRadius: '4px',\n lineHeight: `${theme.spacing.unit * LINE_HEIGHT_MULTIPLIER}px`,\n },\n print: {\n border: `dashed 2px ${color.blueGrey600()}`,\n borderRadius: '4px',\n lineHeight: `${theme.spacing.unit * LINE_HEIGHT_MULTIPLIER}px`,\n color: color.text(),\n },\n custom: {\n display: 'initial',\n },\n commonTokenStyle: {\n position: 'relative',\n borderRadius: '4px',\n color: theme.palette.common.black,\n lineHeight: `${theme.spacing.unit * CORRECTNESS_LINE_HEIGHT_MULTIPLIER + CORRECTNESS_PADDING}px`,\n padding: `${CORRECTNESS_PADDING}px`,\n },\n correct: {\n border: `${color.correctTertiary()} solid 2px`,\n },\n incorrect: {\n border: `${color.incorrectWithIcon()} solid 2px`,\n },\n missing: {\n border: `${color.incorrectWithIcon()} dashed 2px`,\n },\n incorrectIcon: {\n backgroundColor: color.incorrectWithIcon(),\n },\n correctIcon: {\n backgroundColor: color.correctTertiary(),\n },\n correctnessIndicatorIcon: {\n color: color.white(),\n position: 'absolute',\n top: '-8px',\n left: '-8px',\n borderRadius: '50%',\n fontSize: '12px',\n padding: '2px',\n },\n };\n})(Token);\n"],"file":"token.js"}
|
|
@@ -31,6 +31,10 @@ var _Switch = _interopRequireDefault(require("@material-ui/core/Switch"));
|
|
|
31
31
|
|
|
32
32
|
var _FormControlLabel = _interopRequireDefault(require("@material-ui/core/FormControlLabel"));
|
|
33
33
|
|
|
34
|
+
var _renderUi = require("@pie-lib/render-ui");
|
|
35
|
+
|
|
36
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
37
|
+
|
|
34
38
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
|
|
35
39
|
|
|
36
40
|
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
@@ -84,6 +88,10 @@ var Controls = /*#__PURE__*/function (_React$Component) {
|
|
|
84
88
|
disabled: setCorrectMode
|
|
85
89
|
}, "Clear")), /*#__PURE__*/_react["default"].createElement(_FormControlLabel["default"], {
|
|
86
90
|
control: /*#__PURE__*/_react["default"].createElement(_Switch["default"], {
|
|
91
|
+
classes: {
|
|
92
|
+
checked: classes.checkedThumb,
|
|
93
|
+
bar: (0, _classnames["default"])((0, _defineProperty2["default"])({}, classes.checkedBar, setCorrectMode))
|
|
94
|
+
},
|
|
87
95
|
checked: setCorrectMode,
|
|
88
96
|
onChange: onToggleCorrectMode
|
|
89
97
|
}),
|
|
@@ -115,6 +123,12 @@ var _default = (0, _styles.withStyles)(function (theme) {
|
|
|
115
123
|
display: 'flex',
|
|
116
124
|
alignItems: 'center',
|
|
117
125
|
justifyContent: 'space-between'
|
|
126
|
+
},
|
|
127
|
+
checkedThumb: {
|
|
128
|
+
color: "".concat(_renderUi.color.tertiary(), " !important")
|
|
129
|
+
},
|
|
130
|
+
checkedBar: {
|
|
131
|
+
backgroundColor: "".concat(_renderUi.color.tertiaryLight(), " !important")
|
|
118
132
|
}
|
|
119
133
|
};
|
|
120
134
|
})(Controls);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/tokenizer/controls.jsx"],"names":["Controls","props","classes","onClear","onWords","onSentences","onParagraphs","setCorrectMode","onToggleCorrectMode","controls","button","React","Component","PropTypes","object","isRequired","func","bool","theme","marginRight","spacing","unit","display","alignItems","justifyContent"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;IAEaA,Q;;;;;;;;;;;;WAaX,kBAAS;AACP,wBAAsG,KAAKC,KAA3G;AAAA,UAAQC,OAAR,eAAQA,OAAR;AAAA,UAAiBC,OAAjB,eAAiBA,OAAjB;AAAA,UAA0BC,OAA1B,eAA0BA,OAA1B;AAAA,UAAmCC,WAAnC,eAAmCA,WAAnC;AAAA,UAAgDC,YAAhD,eAAgDA,YAAhD;AAAA,UAA8DC,cAA9D,eAA8DA,cAA9D;AAAA,UAA8EC,mBAA9E,eAA8EA,mBAA9E;AAEA,0BACE;AAAK,QAAA,SAAS,EAAEN,OAAO,CAACO;AAAxB,sBACE,0DACE,gCAAC,kBAAD;AAAQ,QAAA,OAAO,EAAEL,OAAjB;AAA0B,QAAA,SAAS,EAAEF,OAAO,CAACQ,MAA7C;AAAqD,QAAA,IAAI,EAAC,OAA1D;AAAkE,QAAA,KAAK,EAAC,SAAxE;AAAkF,QAAA,QAAQ,EAAEH;AAA5F,iBADF,eAIE,gCAAC,kBAAD;AACE,QAAA,OAAO,EAAEF,WADX;AAEE,QAAA,SAAS,EAAEH,OAAO,CAACQ,MAFrB;AAGE,QAAA,IAAI,EAAC,OAHP;AAIE,QAAA,KAAK,EAAC,SAJR;AAKE,QAAA,QAAQ,EAAEH;AALZ,qBAJF,eAaE,gCAAC,kBAAD;AACE,QAAA,OAAO,EAAED,YADX;AAEE,QAAA,SAAS,EAAEJ,OAAO,CAACQ,MAFrB;AAGE,QAAA,IAAI,EAAC,OAHP;AAIE,QAAA,KAAK,EAAC,SAJR;AAKE,QAAA,QAAQ,EAAEH;AALZ,sBAbF,eAsBE,gCAAC,kBAAD;AAAQ,QAAA,SAAS,EAAEL,OAAO,CAACQ,MAA3B;AAAmC,QAAA,IAAI,EAAC,OAAxC;AAAgD,QAAA,KAAK,EAAC,WAAtD;AAAkE,QAAA,OAAO,EAAEP,OAA3E;AAAoF,QAAA,QAAQ,EAAEI;AAA9F,iBAtBF,CADF,eA2BE,gCAAC,4BAAD;AACE,QAAA,OAAO,
|
|
1
|
+
{"version":3,"sources":["../../src/tokenizer/controls.jsx"],"names":["Controls","props","classes","onClear","onWords","onSentences","onParagraphs","setCorrectMode","onToggleCorrectMode","controls","button","checked","checkedThumb","bar","checkedBar","React","Component","PropTypes","object","isRequired","func","bool","theme","marginRight","spacing","unit","display","alignItems","justifyContent","color","tertiary","backgroundColor","tertiaryLight"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport Button from '@material-ui/core/Button';\nimport { withStyles } from '@material-ui/core/styles';\nimport Switch from '@material-ui/core/Switch';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport { color } from '@pie-lib/render-ui';\nimport classNames from 'classnames';\n\nexport class Controls extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n onClear: PropTypes.func.isRequired,\n onWords: PropTypes.func.isRequired,\n onSentences: PropTypes.func.isRequired,\n onParagraphs: PropTypes.func.isRequired,\n setCorrectMode: PropTypes.bool.isRequired,\n onToggleCorrectMode: PropTypes.func.isRequired,\n };\n\n static defaultProps = {};\n\n render() {\n const { classes, onClear, onWords, onSentences, onParagraphs, setCorrectMode, onToggleCorrectMode } = this.props;\n\n return (\n <div className={classes.controls}>\n <div>\n <Button onClick={onWords} className={classes.button} size=\"small\" color=\"primary\" disabled={setCorrectMode}>\n Words\n </Button>\n <Button\n onClick={onSentences}\n className={classes.button}\n size=\"small\"\n color=\"primary\"\n disabled={setCorrectMode}\n >\n Sentences\n </Button>\n <Button\n onClick={onParagraphs}\n className={classes.button}\n size=\"small\"\n color=\"primary\"\n disabled={setCorrectMode}\n >\n Paragraphs\n </Button>\n <Button className={classes.button} size=\"small\" color=\"secondary\" onClick={onClear} disabled={setCorrectMode}>\n Clear\n </Button>\n </div>\n <FormControlLabel\n control={\n <Switch\n classes={{\n checked: classes.checkedThumb,\n bar: classNames({\n [classes.checkedBar]: setCorrectMode,\n }),\n }}\n checked={setCorrectMode}\n onChange={onToggleCorrectMode}\n />\n }\n label=\"Set correct answers\"\n />\n </div>\n );\n }\n}\nexport default withStyles((theme) => ({\n button: {\n marginRight: theme.spacing.unit,\n },\n controls: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n },\n checkedThumb: {\n color: `${color.tertiary()} !important`,\n },\n checkedBar: {\n backgroundColor: `${color.tertiaryLight()} !important`,\n },\n}))(Controls);\n"],"file":"controls.js"}
|
|
@@ -51,10 +51,19 @@ var Text = (0, _styles.withStyles)(function () {
|
|
|
51
51
|
predefined: {
|
|
52
52
|
cursor: 'pointer',
|
|
53
53
|
backgroundColor: _yellow["default"][100],
|
|
54
|
-
border: "dashed 0px ".concat(_yellow["default"][700])
|
|
54
|
+
border: "dashed 0px ".concat(_yellow["default"][700]),
|
|
55
|
+
// we need this for nested tokenized elements like paragraphs, where p is inside span
|
|
56
|
+
'& *': {
|
|
57
|
+
cursor: 'pointer',
|
|
58
|
+
backgroundColor: _yellow["default"][100],
|
|
59
|
+
border: "dashed 0px ".concat(_yellow["default"][700])
|
|
60
|
+
}
|
|
55
61
|
},
|
|
56
62
|
correct: {
|
|
57
|
-
backgroundColor: _green["default"][500]
|
|
63
|
+
backgroundColor: _green["default"][500],
|
|
64
|
+
'& *': {
|
|
65
|
+
backgroundColor: _green["default"][500]
|
|
66
|
+
}
|
|
58
67
|
}
|
|
59
68
|
};
|
|
60
69
|
})(function (_ref) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/tokenizer/token-text.jsx"],"names":["log","Text","predefined","cursor","backgroundColor","yellow","border","correct","green","text","classes","onClick","formattedText","replace","className","__html","notAllowedCharacters","TokenText","event","props","onSelectToken","tokens","preventDefault","window","selection","getSelection","textSelected","toString","length","indexOf","root","offset","newLineOffset","slice","undefined","endIndex","i","start","end","hasOverlap","tokensToRemove","surroundedTokens","token","onTokenClick","normalized","r","map","t","index","React","Component","PropTypes","string","isRequired","array","func"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA;;;;;;AAEA,IAAMA,GAAG,GAAG,uBAAM,iCAAN,CAAZ;AAEO,IAAMC,IAAI,GAAG,wBAAW;AAAA,SAAO;AACpCC,IAAAA,UAAU,EAAE;AACVC,MAAAA,MAAM,EAAE,SADE;AAEVC,MAAAA,eAAe,EAAEC,mBAAO,GAAP,CAFP;AAGVC,MAAAA,MAAM,uBAAgBD,mBAAO,GAAP,CAAhB;
|
|
1
|
+
{"version":3,"sources":["../../src/tokenizer/token-text.jsx"],"names":["log","Text","predefined","cursor","backgroundColor","yellow","border","correct","green","text","classes","onClick","formattedText","replace","className","__html","notAllowedCharacters","TokenText","event","props","onSelectToken","tokens","preventDefault","window","selection","getSelection","textSelected","toString","length","indexOf","root","offset","newLineOffset","slice","undefined","endIndex","i","start","end","hasOverlap","tokensToRemove","surroundedTokens","token","onTokenClick","normalized","r","map","t","index","React","Component","PropTypes","string","isRequired","array","func"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport { normalize, intersection } from './builder';\nimport yellow from '@material-ui/core/colors/yellow';\nimport green from '@material-ui/core/colors/green';\nimport debug from 'debug';\nimport classNames from 'classnames';\n\nimport { clearSelection, getCaretCharacterOffsetWithin } from './selection-utils';\n\nconst log = debug('@pie-lib:text-select:token-text');\n\nexport const Text = withStyles(() => ({\n predefined: {\n cursor: 'pointer',\n backgroundColor: yellow[100],\n border: `dashed 0px ${yellow[700]}`,\n // we need this for nested tokenized elements like paragraphs, where p is inside span\n '& *': {\n cursor: 'pointer',\n backgroundColor: yellow[100],\n border: `dashed 0px ${yellow[700]}`,\n },\n },\n correct: {\n backgroundColor: green[500],\n '& *': {\n backgroundColor: green[500],\n },\n },\n}))(({ text, predefined, classes, onClick, correct }) => {\n const formattedText = (text || '').replace(/\\n/g, '<br>');\n\n if (predefined) {\n const className = classNames(classes.predefined, correct && classes.correct);\n\n return <span onClick={onClick} className={className} dangerouslySetInnerHTML={{ __html: formattedText }} />;\n } else {\n return <span dangerouslySetInnerHTML={{ __html: formattedText }} />;\n }\n});\n\nconst notAllowedCharacters = ['\\n', ' ', '\\t'];\n\nexport default class TokenText extends React.Component {\n static propTypes = {\n text: PropTypes.string.isRequired,\n tokens: PropTypes.array.isRequired,\n onTokenClick: PropTypes.func.isRequired,\n onSelectToken: PropTypes.func.isRequired,\n className: PropTypes.string,\n };\n\n /*\n Change this to onClick instead of mouseUp because previously, in some cases\n the onClick event from the <Text /> component was called right after the user\n selected token and that token was then removed because the setCorrectMode was not true.\n\n const { setCorrectMode } = this.state;\n\n if (setCorrectMode) {\n this.setCorrect(token);\n } else {\n this.removeToken(token);\n }\n */\n onClick = (event) => {\n const { onSelectToken, text, tokens } = this.props;\n\n event.preventDefault();\n\n if (typeof window === 'undefined') {\n return;\n }\n\n const selection = window.getSelection();\n const textSelected = selection.toString();\n\n if (textSelected.length > 0 && notAllowedCharacters.indexOf(textSelected) < 0) {\n if (this.root) {\n let offset = getCaretCharacterOffsetWithin(this.root);\n /*\n Since we implemented new line functionality (\\n) using <br /> dom elements\n and window.getSelection is not taking that into consideration, the offset might\n be off by a few characters.\n\n To combat that, we check if the selected text is right at the beginning of the offset.\n\n If it's not, we add the additional offset in order for that to be accurate\n */\n const newLineOffset = text.slice(offset).indexOf(textSelected);\n\n offset += newLineOffset;\n\n if (offset !== undefined) {\n const endIndex = offset + textSelected.length;\n\n if (endIndex <= text.length) {\n const i = intersection({ start: offset, end: endIndex }, tokens);\n if (i.hasOverlap) {\n log('hasOverlap - do nothing');\n clearSelection();\n } else {\n const tokensToRemove = i.surroundedTokens;\n const token = {\n text: textSelected,\n start: offset,\n end: endIndex,\n };\n\n onSelectToken(token, tokensToRemove);\n clearSelection();\n }\n }\n }\n }\n }\n };\n\n render() {\n const { text, tokens, className, onTokenClick } = this.props;\n const normalized = normalize(text, tokens);\n\n return (\n <div className={className} ref={(r) => (this.root = r)} onClick={this.onClick}>\n {normalized.map((t, index) => {\n return <Text key={index} {...t} onClick={() => onTokenClick(t)} />;\n })}\n </div>\n );\n }\n}\n"],"file":"token-text.js"}
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"publishConfig": {
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
|
-
"version": "1.12.
|
|
6
|
+
"version": "1.12.8-next.1639+4ac095ca",
|
|
7
7
|
"description": "Some react components for text selection",
|
|
8
8
|
"keywords": [
|
|
9
9
|
"react",
|
|
@@ -17,10 +17,11 @@
|
|
|
17
17
|
"author": "",
|
|
18
18
|
"license": "ISC",
|
|
19
19
|
"dependencies": {
|
|
20
|
+
"@material-ui/icons": "^3.0.2",
|
|
20
21
|
"@pie-framework/parse-english": "^1.0.0",
|
|
21
|
-
"@pie-lib/render-ui": "^4.15.
|
|
22
|
-
"@pie-lib/style-utils": "^0.1.
|
|
23
|
-
"@pie-lib/translator": "^2.3.
|
|
22
|
+
"@pie-lib/render-ui": "^4.15.10-next.1639+4ac095ca",
|
|
23
|
+
"@pie-lib/style-utils": "^0.1.44-next.1848+4ac095ca",
|
|
24
|
+
"@pie-lib/translator": "^2.3.1-next.1712+4ac095ca",
|
|
24
25
|
"classnames": "^2.2.6",
|
|
25
26
|
"debug": "^4.1.1",
|
|
26
27
|
"invariant": "^2.2.4",
|
|
@@ -30,7 +31,8 @@
|
|
|
30
31
|
},
|
|
31
32
|
"devDependencies": {
|
|
32
33
|
"@material-ui/core": "^3.8.3",
|
|
33
|
-
"@pie-
|
|
34
|
+
"@pie-framework/parse-english": "^1.0.0",
|
|
35
|
+
"@pie-lib/test-utils": "^0.2.34-next.1848+4ac095ca",
|
|
34
36
|
"natural": "^0.6.3",
|
|
35
37
|
"react": "^16.8.1",
|
|
36
38
|
"react-dom": "^16.9.0"
|
|
@@ -39,6 +41,6 @@
|
|
|
39
41
|
"@material-ui/core": "^3.8.3",
|
|
40
42
|
"react": "^16.8.1"
|
|
41
43
|
},
|
|
42
|
-
"gitHead": "
|
|
44
|
+
"gitHead": "4ac095ca931e5fe8f131f28f41dd61093bd55d98",
|
|
43
45
|
"scripts": {}
|
|
44
46
|
}
|
|
@@ -0,0 +1,21 @@
|
|
|
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
|
+
`;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import TextSelect from '../text-select';
|
|
2
|
+
import { shallow } from 'enzyme';
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import toJson from 'enzyme-to-json';
|
|
5
|
+
describe('text-select', () => {
|
|
6
|
+
describe('snapshot', () => {
|
|
7
|
+
it('renders', () => {
|
|
8
|
+
const w = shallow(
|
|
9
|
+
<TextSelect text="foo" tokens={[]} selectedTokens={[]} onChange={jest.fn()} maxNoOfSelections={4} />,
|
|
10
|
+
);
|
|
11
|
+
expect(w).toMatchSnapshot();
|
|
12
|
+
});
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
describe('logic', () => {
|
|
16
|
+
let w, onChange;
|
|
17
|
+
beforeEach(() => {
|
|
18
|
+
onChange = jest.fn();
|
|
19
|
+
w = shallow(<TextSelect text="foo" tokens={[]} selectedTokens={[]} onChange={onChange} />);
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
describe('change', () => {
|
|
23
|
+
it('calls onChange', () => {
|
|
24
|
+
const changeArgs = [
|
|
25
|
+
{ start: 0, end: 1, selected: true },
|
|
26
|
+
{ start: 1, end: 2 },
|
|
27
|
+
];
|
|
28
|
+
|
|
29
|
+
w.instance().change(changeArgs);
|
|
30
|
+
expect(onChange).toBeCalledWith([{ start: 0, end: 1 }]);
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
});
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { prepareText } from '../utils';
|
|
2
|
+
|
|
3
|
+
describe('logic', () => {
|
|
4
|
+
it('returns text if no html elements', () => {
|
|
5
|
+
const formattedText = prepareText(`foo bar`);
|
|
6
|
+
|
|
7
|
+
expect(formattedText).toEqual('foo bar');
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
it('replaces br with new lines', () => {
|
|
11
|
+
const formattedText = prepareText(`<p>foo<br>bar</p>`);
|
|
12
|
+
|
|
13
|
+
expect(formattedText).toEqual('foo\nbar');
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
it('replaces p with 2 new lines', () => {
|
|
17
|
+
const formattedText = prepareText(`<p>foo<br>bar</p><p>bar<br>foo</p>`);
|
|
18
|
+
|
|
19
|
+
expect(formattedText).toEqual('foo\nbar\n\nbar\nfoo');
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
it('adds p if there are no paragraphs', () => {
|
|
23
|
+
const formattedText = prepareText(`foo<br>bar<br>foo`);
|
|
24
|
+
|
|
25
|
+
expect(formattedText).toEqual('foo\nbar\nfoo');
|
|
26
|
+
});
|
|
27
|
+
});
|