@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
package/lib/tokenizer/index.js
CHANGED
|
@@ -1,132 +1,97 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports["default"] = exports.Tokenizer = void 0;
|
|
9
|
-
|
|
10
8
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
|
-
|
|
12
9
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
13
|
-
|
|
14
|
-
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
15
|
-
|
|
16
|
-
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
17
|
-
|
|
18
10
|
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
19
|
-
|
|
20
11
|
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
21
|
-
|
|
12
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
22
13
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
23
|
-
|
|
24
14
|
var _react = _interopRequireDefault(require("react"));
|
|
25
|
-
|
|
26
15
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
27
|
-
|
|
28
16
|
var _controls = _interopRequireDefault(require("./controls"));
|
|
29
|
-
|
|
30
|
-
var _styles = require("@material-ui/core/styles");
|
|
31
|
-
|
|
17
|
+
var _styles = require("@mui/material/styles");
|
|
32
18
|
var _builder = require("./builder");
|
|
33
|
-
|
|
34
19
|
var _clone = _interopRequireDefault(require("lodash/clone"));
|
|
35
|
-
|
|
36
20
|
var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
|
|
37
|
-
|
|
38
21
|
var _differenceWith = _interopRequireDefault(require("lodash/differenceWith"));
|
|
39
|
-
|
|
40
|
-
var _classnames = _interopRequireDefault(require("classnames"));
|
|
41
|
-
|
|
42
22
|
var _styleUtils = require("@pie-lib/style-utils");
|
|
43
|
-
|
|
44
23
|
var _tokenText = _interopRequireDefault(require("./token-text"));
|
|
45
|
-
|
|
46
|
-
function
|
|
47
|
-
|
|
48
|
-
function _objectSpread(
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
var _super = _createSuper(Tokenizer);
|
|
58
|
-
|
|
24
|
+
function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
|
|
25
|
+
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
26
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
27
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
28
|
+
var StyledText = (0, _styles.styled)('div')(function (_ref) {
|
|
29
|
+
var disabled = _ref.disabled;
|
|
30
|
+
return _objectSpread({
|
|
31
|
+
whiteSpace: 'pre-wrap'
|
|
32
|
+
}, disabled && _objectSpread({}, (0, _styleUtils.noSelect)()));
|
|
33
|
+
});
|
|
34
|
+
var Tokenizer = exports.Tokenizer = /*#__PURE__*/function (_React$Component) {
|
|
59
35
|
function Tokenizer(props) {
|
|
60
36
|
var _this;
|
|
61
|
-
|
|
62
37
|
(0, _classCallCheck2["default"])(this, Tokenizer);
|
|
63
|
-
_this =
|
|
64
|
-
(0, _defineProperty2["default"])(
|
|
38
|
+
_this = _callSuper(this, Tokenizer, [props]);
|
|
39
|
+
(0, _defineProperty2["default"])(_this, "onChangeHandler", function (token, mode) {
|
|
65
40
|
_this.props.onChange(token, mode);
|
|
66
|
-
|
|
67
41
|
_this.setState({
|
|
68
42
|
mode: mode
|
|
69
43
|
});
|
|
70
44
|
});
|
|
71
|
-
(0, _defineProperty2["default"])(
|
|
45
|
+
(0, _defineProperty2["default"])(_this, "toggleCorrectMode", function () {
|
|
72
46
|
return _this.setState({
|
|
73
47
|
setCorrectMode: !_this.state.setCorrectMode
|
|
74
48
|
});
|
|
75
49
|
});
|
|
76
|
-
(0, _defineProperty2["default"])(
|
|
50
|
+
(0, _defineProperty2["default"])(_this, "clear", function () {
|
|
77
51
|
_this.onChangeHandler([], '');
|
|
78
52
|
});
|
|
79
|
-
(0, _defineProperty2["default"])(
|
|
53
|
+
(0, _defineProperty2["default"])(_this, "buildTokens", function (type, fn) {
|
|
80
54
|
var text = _this.props.text;
|
|
81
55
|
var tokens = fn(text);
|
|
82
|
-
|
|
83
56
|
_this.onChangeHandler(tokens, type);
|
|
84
57
|
});
|
|
85
|
-
(0, _defineProperty2["default"])(
|
|
58
|
+
(0, _defineProperty2["default"])(_this, "selectToken", function (newToken, tokensToRemove) {
|
|
86
59
|
var tokens = _this.props.tokens;
|
|
87
60
|
var update = (0, _differenceWith["default"])((0, _clone["default"])(tokens), tokensToRemove, _isEqual["default"]);
|
|
88
61
|
update.push(newToken);
|
|
89
|
-
|
|
90
62
|
_this.onChangeHandler(update, _this.state.mode);
|
|
91
63
|
});
|
|
92
|
-
(0, _defineProperty2["default"])(
|
|
64
|
+
(0, _defineProperty2["default"])(_this, "tokenClick", function (token) {
|
|
93
65
|
var setCorrectMode = _this.state.setCorrectMode;
|
|
94
|
-
|
|
95
66
|
if (setCorrectMode) {
|
|
96
67
|
_this.setCorrect(token);
|
|
97
68
|
} else {
|
|
98
69
|
_this.removeToken(token);
|
|
99
70
|
}
|
|
100
71
|
});
|
|
101
|
-
(0, _defineProperty2["default"])(
|
|
72
|
+
(0, _defineProperty2["default"])(_this, "tokenIndex", function (token) {
|
|
102
73
|
var tokens = _this.props.tokens;
|
|
103
74
|
return tokens.findIndex(function (t) {
|
|
104
75
|
return t.text == token.text && t.start == token.start && t.end == token.end;
|
|
105
76
|
});
|
|
106
77
|
});
|
|
107
|
-
(0, _defineProperty2["default"])(
|
|
78
|
+
(0, _defineProperty2["default"])(_this, "setCorrect", function (token) {
|
|
108
79
|
var tokens = _this.props.tokens;
|
|
109
|
-
|
|
110
80
|
var index = _this.tokenIndex(token);
|
|
111
|
-
|
|
112
81
|
if (index !== -1) {
|
|
113
82
|
var t = tokens[index];
|
|
114
83
|
t.correct = !t.correct;
|
|
115
84
|
var update = (0, _clone["default"])(tokens);
|
|
116
85
|
update.splice(index, 1, t);
|
|
117
|
-
|
|
118
86
|
_this.onChangeHandler(update, _this.state.mode);
|
|
119
87
|
}
|
|
120
88
|
});
|
|
121
|
-
(0, _defineProperty2["default"])(
|
|
89
|
+
(0, _defineProperty2["default"])(_this, "removeToken", function (token) {
|
|
122
90
|
var tokens = _this.props.tokens;
|
|
123
|
-
|
|
124
91
|
var index = _this.tokenIndex(token);
|
|
125
|
-
|
|
126
92
|
if (index !== -1) {
|
|
127
93
|
var update = (0, _clone["default"])(tokens);
|
|
128
94
|
update.splice(index, 1);
|
|
129
|
-
|
|
130
95
|
_this.onChangeHandler(update, _this.state.mode);
|
|
131
96
|
}
|
|
132
97
|
});
|
|
@@ -136,23 +101,16 @@ var Tokenizer = /*#__PURE__*/function (_React$Component) {
|
|
|
136
101
|
};
|
|
137
102
|
return _this;
|
|
138
103
|
}
|
|
139
|
-
|
|
140
|
-
(0, _createClass2["default"])(Tokenizer, [{
|
|
104
|
+
(0, _inherits2["default"])(Tokenizer, _React$Component);
|
|
105
|
+
return (0, _createClass2["default"])(Tokenizer, [{
|
|
141
106
|
key: "render",
|
|
142
107
|
value: function render() {
|
|
143
108
|
var _this2 = this;
|
|
144
|
-
|
|
145
109
|
var _this$props = this.props,
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
classes = _this$props.classes,
|
|
149
|
-
className = _this$props.className;
|
|
110
|
+
text = _this$props.text,
|
|
111
|
+
tokens = _this$props.tokens;
|
|
150
112
|
var setCorrectMode = this.state.setCorrectMode;
|
|
151
|
-
|
|
152
|
-
var rootName = (0, _classnames["default"])(classes.tokenizer, className);
|
|
153
|
-
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
154
|
-
className: rootName
|
|
155
|
-
}, /*#__PURE__*/_react["default"].createElement(_controls["default"], {
|
|
113
|
+
return /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement(_controls["default"], {
|
|
156
114
|
onClear: this.clear,
|
|
157
115
|
onWords: function onWords() {
|
|
158
116
|
return _this2.buildTokens('words', _builder.words);
|
|
@@ -165,8 +123,9 @@ var Tokenizer = /*#__PURE__*/function (_React$Component) {
|
|
|
165
123
|
},
|
|
166
124
|
setCorrectMode: setCorrectMode,
|
|
167
125
|
onToggleCorrectMode: this.toggleCorrectMode
|
|
168
|
-
}), /*#__PURE__*/_react["default"].createElement(
|
|
169
|
-
|
|
126
|
+
}), /*#__PURE__*/_react["default"].createElement(StyledText, {
|
|
127
|
+
disabled: setCorrectMode,
|
|
128
|
+
as: _tokenText["default"],
|
|
170
129
|
text: text,
|
|
171
130
|
tokens: tokens,
|
|
172
131
|
onTokenClick: this.tokenClick,
|
|
@@ -174,10 +133,7 @@ var Tokenizer = /*#__PURE__*/function (_React$Component) {
|
|
|
174
133
|
}));
|
|
175
134
|
}
|
|
176
135
|
}]);
|
|
177
|
-
return Tokenizer;
|
|
178
136
|
}(_react["default"].Component);
|
|
179
|
-
|
|
180
|
-
exports.Tokenizer = Tokenizer;
|
|
181
137
|
(0, _defineProperty2["default"])(Tokenizer, "propTypes", {
|
|
182
138
|
text: _propTypes["default"].string.isRequired,
|
|
183
139
|
tokens: _propTypes["default"].arrayOf(_propTypes["default"].shape({
|
|
@@ -186,20 +142,8 @@ exports.Tokenizer = Tokenizer;
|
|
|
186
142
|
start: _propTypes["default"].number,
|
|
187
143
|
end: _propTypes["default"].number
|
|
188
144
|
})),
|
|
189
|
-
classes: _propTypes["default"].object.isRequired,
|
|
190
|
-
className: _propTypes["default"].string,
|
|
191
145
|
onChange: _propTypes["default"].func.isRequired
|
|
192
146
|
});
|
|
193
147
|
(0, _defineProperty2["default"])(Tokenizer, "defaultProps", {});
|
|
194
|
-
|
|
195
|
-
var _default = (0, _styles.withStyles)(function () {
|
|
196
|
-
return {
|
|
197
|
-
text: {
|
|
198
|
-
whiteSpace: 'pre-wrap'
|
|
199
|
-
},
|
|
200
|
-
noselect: _objectSpread({}, (0, _styleUtils.noSelect)())
|
|
201
|
-
};
|
|
202
|
-
})(Tokenizer);
|
|
203
|
-
|
|
204
|
-
exports["default"] = _default;
|
|
148
|
+
var _default = exports["default"] = Tokenizer;
|
|
205
149
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/tokenizer/index.jsx"],"names":["Tokenizer","props","token","mode","onChange","setState","setCorrectMode","state","onChangeHandler","type","fn","text","tokens","newToken","tokensToRemove","update","isEqual","push","setCorrect","removeToken","findIndex","t","start","end","index","tokenIndex","correct","splice","classes","className","tokenClassName","noselect","rootName","tokenizer","clear","buildTokens","words","sentences","paragraphs","toggleCorrectMode","tokenClick","selectToken","React","Component","PropTypes","string","isRequired","arrayOf","shape","bool","number","object","func","whiteSpace"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport Controls from './controls';\nimport { withStyles } from '@material-ui/core/styles';\nimport { words, sentences, paragraphs } from './builder';\nimport clone from 'lodash/clone';\nimport isEqual from 'lodash/isEqual';\nimport differenceWith from 'lodash/differenceWith';\nimport classNames from 'classnames';\nimport { noSelect } from '@pie-lib/style-utils';\nimport TokenText from './token-text';\n\nexport class Tokenizer extends React.Component {\n static propTypes = {\n text: PropTypes.string.isRequired,\n tokens: PropTypes.arrayOf(\n PropTypes.shape({\n text: PropTypes.string,\n correct: PropTypes.bool,\n start: PropTypes.number,\n end: PropTypes.number,\n }),\n ),\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n onChange: PropTypes.func.isRequired,\n };\n\n static defaultProps = {};\n\n constructor(props) {\n super(props);\n this.state = {\n setCorrectMode: false,\n mode: '',\n };\n }\n\n onChangeHandler = (token, mode) => {\n this.props.onChange(token, mode);\n\n this.setState({\n mode,\n });\n };\n\n toggleCorrectMode = () => this.setState({ setCorrectMode: !this.state.setCorrectMode });\n\n clear = () => {\n this.onChangeHandler([], '');\n };\n\n buildTokens = (type, fn) => {\n const { text } = this.props;\n const tokens = fn(text);\n\n this.onChangeHandler(tokens, type);\n };\n\n selectToken = (newToken, tokensToRemove) => {\n const { tokens } = this.props;\n const update = differenceWith(clone(tokens), tokensToRemove, isEqual);\n\n update.push(newToken);\n this.onChangeHandler(update, this.state.mode);\n };\n\n tokenClick = (token) => {\n const { setCorrectMode } = this.state;\n\n if (setCorrectMode) {\n this.setCorrect(token);\n } else {\n this.removeToken(token);\n }\n };\n\n tokenIndex = (token) => {\n const { tokens } = this.props;\n\n return tokens.findIndex((t) => {\n return t.text == token.text && t.start == token.start && t.end == token.end;\n });\n };\n\n setCorrect = (token) => {\n const { tokens } = this.props;\n const index = this.tokenIndex(token);\n if (index !== -1) {\n const t = tokens[index];\n\n t.correct = !t.correct;\n\n const update = clone(tokens);\n\n update.splice(index, 1, t);\n this.onChangeHandler(update, this.state.mode);\n }\n };\n\n removeToken = (token) => {\n const { tokens } = this.props;\n\n const index = this.tokenIndex(token);\n if (index !== -1) {\n const update = clone(tokens);\n\n update.splice(index, 1);\n\n this.onChangeHandler(update, this.state.mode);\n }\n };\n\n render() {\n const { text, tokens, classes, className } = this.props;\n const { setCorrectMode } = this.state;\n\n const tokenClassName = classNames(classes.text, setCorrectMode && classes.noselect);\n\n const rootName = classNames(classes.tokenizer, className);\n\n return (\n <div className={rootName}>\n <Controls\n onClear={this.clear}\n onWords={() => this.buildTokens('words', words)}\n onSentences={() => this.buildTokens('sentence', sentences)}\n onParagraphs={() => this.buildTokens('paragraphs', paragraphs)}\n setCorrectMode={setCorrectMode}\n onToggleCorrectMode={this.toggleCorrectMode}\n />\n <TokenText\n className={tokenClassName}\n text={text}\n tokens={tokens}\n onTokenClick={this.tokenClick}\n onSelectToken={this.selectToken}\n />\n </div>\n );\n }\n}\n\nexport default withStyles(() => ({\n text: {\n whiteSpace: 'pre-wrap',\n },\n noselect: { ...noSelect() },\n}))(Tokenizer);\n"],"file":"index.js"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["_react","_interopRequireDefault","require","_propTypes","_controls","_styles","_builder","_clone","_isEqual","_differenceWith","_styleUtils","_tokenText","_callSuper","t","o","e","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","Reflect","construct","constructor","apply","Boolean","prototype","valueOf","call","ownKeys","r","Object","keys","getOwnPropertySymbols","filter","getOwnPropertyDescriptor","enumerable","push","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","StyledText","styled","_ref","disabled","whiteSpace","noSelect","Tokenizer","exports","_React$Component","props","_this","_classCallCheck2","token","mode","onChange","setState","setCorrectMode","state","onChangeHandler","type","fn","text","tokens","newToken","tokensToRemove","update","differenceWith","clone","isEqual","setCorrect","removeToken","findIndex","start","end","index","tokenIndex","correct","splice","_inherits2","_createClass2","key","value","render","_this2","_this$props","createElement","onClear","clear","onWords","buildTokens","words","onSentences","sentences","onParagraphs","paragraphs","onToggleCorrectMode","toggleCorrectMode","as","TokenText","onTokenClick","tokenClick","onSelectToken","selectToken","React","Component","PropTypes","string","isRequired","arrayOf","shape","bool","number","func","_default"],"sources":["../../src/tokenizer/index.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport Controls from './controls';\nimport { styled } from '@mui/material/styles';\nimport { words, sentences, paragraphs } from './builder';\nimport clone from 'lodash/clone';\nimport isEqual from 'lodash/isEqual';\nimport differenceWith from 'lodash/differenceWith';\nimport { noSelect } from '@pie-lib/style-utils';\nimport TokenText from './token-text';\n\nconst StyledText = styled('div')(({ disabled }) => ({\n whiteSpace: 'pre-wrap',\n\n ...(disabled && {\n ...noSelect(),\n }),\n}));\n\nexport class Tokenizer extends React.Component {\n static propTypes = {\n text: PropTypes.string.isRequired,\n tokens: PropTypes.arrayOf(\n PropTypes.shape({\n text: PropTypes.string,\n correct: PropTypes.bool,\n start: PropTypes.number,\n end: PropTypes.number,\n }),\n ),\n onChange: PropTypes.func.isRequired,\n };\n\n static defaultProps = {};\n\n constructor(props) {\n super(props);\n this.state = {\n setCorrectMode: false,\n mode: '',\n };\n }\n\n onChangeHandler = (token, mode) => {\n this.props.onChange(token, mode);\n\n this.setState({\n mode,\n });\n };\n\n toggleCorrectMode = () => this.setState({ setCorrectMode: !this.state.setCorrectMode });\n\n clear = () => {\n this.onChangeHandler([], '');\n };\n\n buildTokens = (type, fn) => {\n const { text } = this.props;\n const tokens = fn(text);\n\n this.onChangeHandler(tokens, type);\n };\n\n selectToken = (newToken, tokensToRemove) => {\n const { tokens } = this.props;\n const update = differenceWith(clone(tokens), tokensToRemove, isEqual);\n\n update.push(newToken);\n this.onChangeHandler(update, this.state.mode);\n };\n\n tokenClick = (token) => {\n const { setCorrectMode } = this.state;\n\n if (setCorrectMode) {\n this.setCorrect(token);\n } else {\n this.removeToken(token);\n }\n };\n\n tokenIndex = (token) => {\n const { tokens } = this.props;\n\n return tokens.findIndex((t) => {\n return t.text == token.text && t.start == token.start && t.end == token.end;\n });\n };\n\n setCorrect = (token) => {\n const { tokens } = this.props;\n const index = this.tokenIndex(token);\n if (index !== -1) {\n const t = tokens[index];\n\n t.correct = !t.correct;\n\n const update = clone(tokens);\n\n update.splice(index, 1, t);\n this.onChangeHandler(update, this.state.mode);\n }\n };\n\n removeToken = (token) => {\n const { tokens } = this.props;\n\n const index = this.tokenIndex(token);\n if (index !== -1) {\n const update = clone(tokens);\n\n update.splice(index, 1);\n\n this.onChangeHandler(update, this.state.mode);\n }\n };\n\n render() {\n const { text, tokens } = this.props;\n const { setCorrectMode } = this.state;\n\n return (\n <div>\n <Controls\n onClear={this.clear}\n onWords={() => this.buildTokens('words', words)}\n onSentences={() => this.buildTokens('sentence', sentences)}\n onParagraphs={() => this.buildTokens('paragraphs', paragraphs)}\n setCorrectMode={setCorrectMode}\n onToggleCorrectMode={this.toggleCorrectMode}\n />\n <StyledText\n disabled={setCorrectMode}\n as={TokenText}\n text={text}\n tokens={tokens}\n onTokenClick={this.tokenClick}\n onSelectToken={this.selectToken}\n />\n </div>\n );\n }\n}\n\nexport default Tokenizer;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -4,8 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.getCaretCharacterOffsetWithin = exports.clearSelection = void 0;
|
|
7
|
-
|
|
8
|
-
var clearSelection = function clearSelection() {
|
|
7
|
+
var clearSelection = exports.clearSelection = function clearSelection() {
|
|
9
8
|
if (document.getSelection) {
|
|
10
9
|
// for all new browsers (IE9+, Chrome, Firefox)
|
|
11
10
|
document.getSelection().removeAllRanges();
|
|
@@ -25,25 +24,19 @@ var clearSelection = function clearSelection() {
|
|
|
25
24
|
document.selection.empty();
|
|
26
25
|
}
|
|
27
26
|
};
|
|
28
|
-
|
|
29
|
-
exports.clearSelection = clearSelection;
|
|
30
|
-
|
|
31
|
-
var getCaretCharacterOffsetWithin = function getCaretCharacterOffsetWithin(element) {
|
|
27
|
+
var getCaretCharacterOffsetWithin = exports.getCaretCharacterOffsetWithin = function getCaretCharacterOffsetWithin(element) {
|
|
32
28
|
var caretOffset = 0;
|
|
33
29
|
var doc = element.ownerDocument || element.document;
|
|
34
30
|
var win = doc.defaultView || doc.parentWindow;
|
|
35
31
|
var sel;
|
|
36
|
-
|
|
37
32
|
if (typeof win.getSelection !== 'undefined') {
|
|
38
33
|
sel = win.getSelection();
|
|
39
|
-
|
|
40
34
|
if (sel.rangeCount > 0) {
|
|
41
35
|
var range = win.getSelection().getRangeAt(0);
|
|
42
36
|
var selected = range.toString().length;
|
|
43
37
|
var preCaretRange = range.cloneRange();
|
|
44
38
|
preCaretRange.selectNodeContents(element);
|
|
45
39
|
preCaretRange.setEnd(range.endContainer, range.endOffset);
|
|
46
|
-
|
|
47
40
|
if (selected) {
|
|
48
41
|
caretOffset = preCaretRange.toString().length - selected;
|
|
49
42
|
} else {
|
|
@@ -57,9 +50,6 @@ var getCaretCharacterOffsetWithin = function getCaretCharacterOffsetWithin(eleme
|
|
|
57
50
|
preCaretTextRange.setEndPoint('EndToEnd', textRange);
|
|
58
51
|
caretOffset = preCaretTextRange.text.length;
|
|
59
52
|
}
|
|
60
|
-
|
|
61
53
|
return caretOffset;
|
|
62
54
|
};
|
|
63
|
-
|
|
64
|
-
exports.getCaretCharacterOffsetWithin = getCaretCharacterOffsetWithin;
|
|
65
55
|
//# sourceMappingURL=selection-utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"selection-utils.js","names":["clearSelection","exports","document","getSelection","removeAllRanges","addRange","createRange","window","empty","selection","getCaretCharacterOffsetWithin","element","caretOffset","doc","ownerDocument","win","defaultView","parentWindow","sel","rangeCount","range","getRangeAt","selected","toString","length","preCaretRange","cloneRange","selectNodeContents","setEnd","endContainer","endOffset","type","textRange","preCaretTextRange","body","createTextRange","moveToElementText","setEndPoint","text"],"sources":["../../src/tokenizer/selection-utils.js"],"sourcesContent":["export const clearSelection = () => {\n if (document.getSelection) {\n // for all new browsers (IE9+, Chrome, Firefox)\n document.getSelection().removeAllRanges();\n document.getSelection().addRange(document.createRange());\n } else if (window.getSelection) {\n // equals with the document.getSelection (MSDN info)\n if (window.getSelection().removeAllRanges) {\n // for all new browsers (IE9+, Chrome, Firefox)\n window.getSelection().removeAllRanges();\n window.getSelection().addRange(document.createRange());\n } else if (window.getSelection().empty) {\n // Chrome supports this as well\n window.getSelection().empty();\n }\n } else if (document.selection) {\n // IE8-\n document.selection.empty();\n }\n};\n\nexport const getCaretCharacterOffsetWithin = (element) => {\n var caretOffset = 0;\n var doc = element.ownerDocument || element.document;\n var win = doc.defaultView || doc.parentWindow;\n var sel;\n if (typeof win.getSelection !== 'undefined') {\n sel = win.getSelection();\n if (sel.rangeCount > 0) {\n var range = win.getSelection().getRangeAt(0);\n var selected = range.toString().length;\n var preCaretRange = range.cloneRange();\n preCaretRange.selectNodeContents(element);\n preCaretRange.setEnd(range.endContainer, range.endOffset);\n if (selected) {\n caretOffset = preCaretRange.toString().length - selected;\n } else {\n caretOffset = preCaretRange.toString().length;\n }\n }\n } else if ((sel = doc.selection) && sel.type !== 'Control') {\n var textRange = sel.createRange();\n var preCaretTextRange = doc.body.createTextRange();\n preCaretTextRange.moveToElementText(element);\n preCaretTextRange.setEndPoint('EndToEnd', textRange);\n caretOffset = preCaretTextRange.text.length;\n }\n return caretOffset;\n};\n"],"mappings":";;;;;;AAAO,IAAMA,cAAc,GAAAC,OAAA,CAAAD,cAAA,GAAG,SAAjBA,cAAcA,CAAA,EAAS;EAClC,IAAIE,QAAQ,CAACC,YAAY,EAAE;IACzB;IACAD,QAAQ,CAACC,YAAY,CAAC,CAAC,CAACC,eAAe,CAAC,CAAC;IACzCF,QAAQ,CAACC,YAAY,CAAC,CAAC,CAACE,QAAQ,CAACH,QAAQ,CAACI,WAAW,CAAC,CAAC,CAAC;EAC1D,CAAC,MAAM,IAAIC,MAAM,CAACJ,YAAY,EAAE;IAC9B;IACA,IAAII,MAAM,CAACJ,YAAY,CAAC,CAAC,CAACC,eAAe,EAAE;MACzC;MACAG,MAAM,CAACJ,YAAY,CAAC,CAAC,CAACC,eAAe,CAAC,CAAC;MACvCG,MAAM,CAACJ,YAAY,CAAC,CAAC,CAACE,QAAQ,CAACH,QAAQ,CAACI,WAAW,CAAC,CAAC,CAAC;IACxD,CAAC,MAAM,IAAIC,MAAM,CAACJ,YAAY,CAAC,CAAC,CAACK,KAAK,EAAE;MACtC;MACAD,MAAM,CAACJ,YAAY,CAAC,CAAC,CAACK,KAAK,CAAC,CAAC;IAC/B;EACF,CAAC,MAAM,IAAIN,QAAQ,CAACO,SAAS,EAAE;IAC7B;IACAP,QAAQ,CAACO,SAAS,CAACD,KAAK,CAAC,CAAC;EAC5B;AACF,CAAC;AAEM,IAAME,6BAA6B,GAAAT,OAAA,CAAAS,6BAAA,GAAG,SAAhCA,6BAA6BA,CAAIC,OAAO,EAAK;EACxD,IAAIC,WAAW,GAAG,CAAC;EACnB,IAAIC,GAAG,GAAGF,OAAO,CAACG,aAAa,IAAIH,OAAO,CAACT,QAAQ;EACnD,IAAIa,GAAG,GAAGF,GAAG,CAACG,WAAW,IAAIH,GAAG,CAACI,YAAY;EAC7C,IAAIC,GAAG;EACP,IAAI,OAAOH,GAAG,CAACZ,YAAY,KAAK,WAAW,EAAE;IAC3Ce,GAAG,GAAGH,GAAG,CAACZ,YAAY,CAAC,CAAC;IACxB,IAAIe,GAAG,CAACC,UAAU,GAAG,CAAC,EAAE;MACtB,IAAIC,KAAK,GAAGL,GAAG,CAACZ,YAAY,CAAC,CAAC,CAACkB,UAAU,CAAC,CAAC,CAAC;MAC5C,IAAIC,QAAQ,GAAGF,KAAK,CAACG,QAAQ,CAAC,CAAC,CAACC,MAAM;MACtC,IAAIC,aAAa,GAAGL,KAAK,CAACM,UAAU,CAAC,CAAC;MACtCD,aAAa,CAACE,kBAAkB,CAAChB,OAAO,CAAC;MACzCc,aAAa,CAACG,MAAM,CAACR,KAAK,CAACS,YAAY,EAAET,KAAK,CAACU,SAAS,CAAC;MACzD,IAAIR,QAAQ,EAAE;QACZV,WAAW,GAAGa,aAAa,CAACF,QAAQ,CAAC,CAAC,CAACC,MAAM,GAAGF,QAAQ;MAC1D,CAAC,MAAM;QACLV,WAAW,GAAGa,aAAa,CAACF,QAAQ,CAAC,CAAC,CAACC,MAAM;MAC/C;IACF;EACF,CAAC,MAAM,IAAI,CAACN,GAAG,GAAGL,GAAG,CAACJ,SAAS,KAAKS,GAAG,CAACa,IAAI,KAAK,SAAS,EAAE;IAC1D,IAAIC,SAAS,GAAGd,GAAG,CAACZ,WAAW,CAAC,CAAC;IACjC,IAAI2B,iBAAiB,GAAGpB,GAAG,CAACqB,IAAI,CAACC,eAAe,CAAC,CAAC;IAClDF,iBAAiB,CAACG,iBAAiB,CAACzB,OAAO,CAAC;IAC5CsB,iBAAiB,CAACI,WAAW,CAAC,UAAU,EAAEL,SAAS,CAAC;IACpDpB,WAAW,GAAGqB,iBAAiB,CAACK,IAAI,CAACd,MAAM;EAC7C;EACA,OAAOZ,WAAW;AACpB,CAAC","ignoreList":[]}
|
|
@@ -1,82 +1,58 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports["default"] = exports.Text = void 0;
|
|
9
|
-
|
|
10
8
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
|
-
|
|
12
9
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
13
|
-
|
|
14
10
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
15
|
-
|
|
16
|
-
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
17
|
-
|
|
18
|
-
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
19
|
-
|
|
20
11
|
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
21
|
-
|
|
22
12
|
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
23
|
-
|
|
13
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
24
14
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
25
|
-
|
|
26
15
|
var _react = _interopRequireDefault(require("react"));
|
|
27
|
-
|
|
28
16
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
29
|
-
|
|
30
|
-
var _styles = require("@material-ui/core/styles");
|
|
31
|
-
|
|
17
|
+
var _styles = require("@mui/material/styles");
|
|
32
18
|
var _builder = require("./builder");
|
|
33
|
-
|
|
34
|
-
var _yellow = _interopRequireDefault(require("@material-ui/core/colors/yellow"));
|
|
35
|
-
|
|
36
|
-
var _green = _interopRequireDefault(require("@material-ui/core/colors/green"));
|
|
37
|
-
|
|
38
19
|
var _debug = _interopRequireDefault(require("debug"));
|
|
39
|
-
|
|
40
20
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
41
|
-
|
|
42
21
|
var _selectionUtils = require("./selection-utils");
|
|
43
|
-
|
|
44
|
-
function
|
|
45
|
-
|
|
46
|
-
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; } }
|
|
47
|
-
|
|
22
|
+
var _colors = require("@mui/material/colors");
|
|
23
|
+
function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
|
|
24
|
+
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
48
25
|
var log = (0, _debug["default"])('@pie-lib:text-select:token-text');
|
|
49
|
-
var
|
|
26
|
+
var StyledText = (0, _styles.styled)('span')(function () {
|
|
50
27
|
return {
|
|
51
|
-
predefined: {
|
|
28
|
+
'&.predefined': {
|
|
52
29
|
cursor: 'pointer',
|
|
53
|
-
backgroundColor:
|
|
54
|
-
border: "dashed 0px ".concat(
|
|
30
|
+
backgroundColor: _colors.yellow[100],
|
|
31
|
+
border: "dashed 0px ".concat(_colors.yellow[700]),
|
|
55
32
|
// we need this for nested tokenized elements like paragraphs, where p is inside span
|
|
56
33
|
'& *': {
|
|
57
34
|
cursor: 'pointer',
|
|
58
|
-
backgroundColor:
|
|
59
|
-
border: "dashed 0px ".concat(
|
|
35
|
+
backgroundColor: _colors.yellow[100],
|
|
36
|
+
border: "dashed 0px ".concat(_colors.yellow[700])
|
|
60
37
|
}
|
|
61
38
|
},
|
|
62
|
-
correct: {
|
|
63
|
-
backgroundColor:
|
|
39
|
+
'&.correct': {
|
|
40
|
+
backgroundColor: _colors.green[500],
|
|
64
41
|
'& *': {
|
|
65
|
-
backgroundColor:
|
|
42
|
+
backgroundColor: _colors.green[500]
|
|
66
43
|
}
|
|
67
44
|
}
|
|
68
45
|
};
|
|
69
|
-
})
|
|
46
|
+
});
|
|
47
|
+
var Text = exports.Text = function Text(_ref) {
|
|
70
48
|
var text = _ref.text,
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
correct = _ref.correct;
|
|
49
|
+
predefined = _ref.predefined,
|
|
50
|
+
onClick = _ref.onClick,
|
|
51
|
+
correct = _ref.correct;
|
|
75
52
|
var formattedText = (text || '').replace(/\n/g, '<br>');
|
|
76
|
-
|
|
77
53
|
if (predefined) {
|
|
78
|
-
var className = (0, _classnames["default"])(
|
|
79
|
-
return /*#__PURE__*/_react["default"].createElement(
|
|
54
|
+
var className = (0, _classnames["default"])('predefined', correct && 'correct');
|
|
55
|
+
return /*#__PURE__*/_react["default"].createElement(StyledText, {
|
|
80
56
|
onClick: onClick,
|
|
81
57
|
className: className,
|
|
82
58
|
dangerouslySetInnerHTML: {
|
|
@@ -90,39 +66,38 @@ var Text = (0, _styles.withStyles)(function () {
|
|
|
90
66
|
}
|
|
91
67
|
});
|
|
92
68
|
}
|
|
93
|
-
}
|
|
94
|
-
exports.Text = Text;
|
|
69
|
+
};
|
|
95
70
|
var notAllowedCharacters = ['\n', ' ', '\t'];
|
|
96
|
-
|
|
97
|
-
var TokenText = /*#__PURE__*/function (_React$Component) {
|
|
98
|
-
(0, _inherits2["default"])(TokenText, _React$Component);
|
|
99
|
-
|
|
100
|
-
var _super = _createSuper(TokenText);
|
|
101
|
-
|
|
71
|
+
var TokenText = exports["default"] = /*#__PURE__*/function (_React$Component) {
|
|
102
72
|
function TokenText() {
|
|
103
73
|
var _this;
|
|
104
|
-
|
|
105
74
|
(0, _classCallCheck2["default"])(this, TokenText);
|
|
106
|
-
|
|
107
75
|
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
108
76
|
args[_key] = arguments[_key];
|
|
109
77
|
}
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
78
|
+
_this = _callSuper(this, TokenText, [].concat(args));
|
|
79
|
+
/*
|
|
80
|
+
Change this to onClick instead of mouseUp because previously, in some cases
|
|
81
|
+
the onClick event from the <Text /> component was called right after the user
|
|
82
|
+
selected token and that token was then removed because the setCorrectMode was not true.
|
|
83
|
+
const { setCorrectMode } = this.state;
|
|
84
|
+
if (setCorrectMode) {
|
|
85
|
+
this.setCorrect(token);
|
|
86
|
+
} else {
|
|
87
|
+
this.removeToken(token);
|
|
88
|
+
}
|
|
89
|
+
*/
|
|
90
|
+
(0, _defineProperty2["default"])(_this, "onClick", function (event) {
|
|
113
91
|
var _this$props = _this.props,
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
92
|
+
onSelectToken = _this$props.onSelectToken,
|
|
93
|
+
text = _this$props.text,
|
|
94
|
+
tokens = _this$props.tokens;
|
|
117
95
|
event.preventDefault();
|
|
118
|
-
|
|
119
96
|
if (typeof window === 'undefined') {
|
|
120
97
|
return;
|
|
121
98
|
}
|
|
122
|
-
|
|
123
99
|
var selection = window.getSelection();
|
|
124
100
|
var textSelected = selection.toString();
|
|
125
|
-
|
|
126
101
|
if (textSelected.length > 0 && notAllowedCharacters.indexOf(textSelected) < 0) {
|
|
127
102
|
if (_this.root) {
|
|
128
103
|
var offset = (0, _selectionUtils.getCaretCharacterOffsetWithin)(_this.root);
|
|
@@ -133,19 +108,15 @@ var TokenText = /*#__PURE__*/function (_React$Component) {
|
|
|
133
108
|
To combat that, we check if the selected text is right at the beginning of the offset.
|
|
134
109
|
If it's not, we add the additional offset in order for that to be accurate
|
|
135
110
|
*/
|
|
136
|
-
|
|
137
111
|
var newLineOffset = text.slice(offset).indexOf(textSelected);
|
|
138
112
|
offset += newLineOffset;
|
|
139
|
-
|
|
140
113
|
if (offset !== undefined) {
|
|
141
114
|
var endIndex = offset + textSelected.length;
|
|
142
|
-
|
|
143
115
|
if (endIndex <= text.length) {
|
|
144
116
|
var i = (0, _builder.intersection)({
|
|
145
117
|
start: offset,
|
|
146
118
|
end: endIndex
|
|
147
119
|
}, tokens);
|
|
148
|
-
|
|
149
120
|
if (i.hasOverlap) {
|
|
150
121
|
log('hasOverlap - do nothing');
|
|
151
122
|
(0, _selectionUtils.clearSelection)();
|
|
@@ -166,17 +137,16 @@ var TokenText = /*#__PURE__*/function (_React$Component) {
|
|
|
166
137
|
});
|
|
167
138
|
return _this;
|
|
168
139
|
}
|
|
169
|
-
|
|
170
|
-
(0, _createClass2["default"])(TokenText, [{
|
|
140
|
+
(0, _inherits2["default"])(TokenText, _React$Component);
|
|
141
|
+
return (0, _createClass2["default"])(TokenText, [{
|
|
171
142
|
key: "render",
|
|
172
143
|
value: function render() {
|
|
173
144
|
var _this2 = this;
|
|
174
|
-
|
|
175
145
|
var _this$props2 = this.props,
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
146
|
+
text = _this$props2.text,
|
|
147
|
+
tokens = _this$props2.tokens,
|
|
148
|
+
className = _this$props2.className,
|
|
149
|
+
onTokenClick = _this$props2.onTokenClick;
|
|
180
150
|
var normalized = (0, _builder.normalize)(text, tokens);
|
|
181
151
|
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
182
152
|
className: className,
|
|
@@ -195,10 +165,7 @@ var TokenText = /*#__PURE__*/function (_React$Component) {
|
|
|
195
165
|
}));
|
|
196
166
|
}
|
|
197
167
|
}]);
|
|
198
|
-
return TokenText;
|
|
199
168
|
}(_react["default"].Component);
|
|
200
|
-
|
|
201
|
-
exports["default"] = TokenText;
|
|
202
169
|
(0, _defineProperty2["default"])(TokenText, "propTypes", {
|
|
203
170
|
text: _propTypes["default"].string.isRequired,
|
|
204
171
|
tokens: _propTypes["default"].array.isRequired,
|
|
@@ -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,CAHI;AAIV;AACA,aAAO;AACLF,QAAAA,MAAM,EAAE,SADH;AAELC,QAAAA,eAAe,EAAEC,mBAAO,GAAP,CAFZ;AAGLC,QAAAA,MAAM,uBAAgBD,mBAAO,GAAP,CAAhB;AAHD;AALG,KADwB;AAYpCE,IAAAA,OAAO,EAAE;AACPH,MAAAA,eAAe,EAAEI,kBAAM,GAAN,CADV;AAEP,aAAO;AACLJ,QAAAA,eAAe,EAAEI,kBAAM,GAAN;AADZ;AAFA;AAZ2B,GAAP;AAAA,CAAX,EAkBhB,gBAAqD;AAAA,MAAlDC,IAAkD,QAAlDA,IAAkD;AAAA,MAA5CP,UAA4C,QAA5CA,UAA4C;AAAA,MAAhCQ,OAAgC,QAAhCA,OAAgC;AAAA,MAAvBC,OAAuB,QAAvBA,OAAuB;AAAA,MAAdJ,OAAc,QAAdA,OAAc;AACvD,MAAMK,aAAa,GAAG,CAACH,IAAI,IAAI,EAAT,EAAaI,OAAb,CAAqB,KAArB,EAA4B,MAA5B,CAAtB;;AAEA,MAAIX,UAAJ,EAAgB;AACd,QAAMY,SAAS,GAAG,4BAAWJ,OAAO,CAACR,UAAnB,EAA+BK,OAAO,IAAIG,OAAO,CAACH,OAAlD,CAAlB;AAEA,wBAAO;AAAM,MAAA,OAAO,EAAEI,OAAf;AAAwB,MAAA,SAAS,EAAEG,SAAnC;AAA8C,MAAA,uBAAuB,EAAE;AAAEC,QAAAA,MAAM,EAAEH;AAAV;AAAvE,MAAP;AACD,GAJD,MAIO;AACL,wBAAO;AAAM,MAAA,uBAAuB,EAAE;AAAEG,QAAAA,MAAM,EAAEH;AAAV;AAA/B,MAAP;AACD;AACF,CA5BmB,CAAb;;AA8BP,IAAMI,oBAAoB,GAAG,CAAC,IAAD,EAAO,GAAP,EAAY,IAAZ,CAA7B;;IAEqBC,S;;;;;;;;;;;;;;;gGAsBT,UAACC,KAAD,EAAW;AACnB,wBAAwC,MAAKC,KAA7C;AAAA,UAAQC,aAAR,eAAQA,aAAR;AAAA,UAAuBX,IAAvB,eAAuBA,IAAvB;AAAA,UAA6BY,MAA7B,eAA6BA,MAA7B;AAEAH,MAAAA,KAAK,CAACI,cAAN;;AAEA,UAAI,OAAOC,MAAP,KAAkB,WAAtB,EAAmC;AACjC;AACD;;AAED,UAAMC,SAAS,GAAGD,MAAM,CAACE,YAAP,EAAlB;AACA,UAAMC,YAAY,GAAGF,SAAS,CAACG,QAAV,EAArB;;AAEA,UAAID,YAAY,CAACE,MAAb,GAAsB,CAAtB,IAA2BZ,oBAAoB,CAACa,OAArB,CAA6BH,YAA7B,IAA6C,CAA5E,EAA+E;AAC7E,YAAI,MAAKI,IAAT,EAAe;AACb,cAAIC,MAAM,GAAG,mDAA8B,MAAKD,IAAnC,CAAb;AACA;AACR;AACA;AACA;AACA;AACA;AACA;;AAGQ,cAAME,aAAa,GAAGvB,IAAI,CAACwB,KAAL,CAAWF,MAAX,EAAmBF,OAAnB,CAA2BH,YAA3B,CAAtB;AAEAK,UAAAA,MAAM,IAAIC,aAAV;;AAEA,cAAID,MAAM,KAAKG,SAAf,EAA0B;AACxB,gBAAMC,QAAQ,GAAGJ,MAAM,GAAGL,YAAY,CAACE,MAAvC;;AAEA,gBAAIO,QAAQ,IAAI1B,IAAI,CAACmB,MAArB,EAA6B;AAC3B,kBAAMQ,CAAC,GAAG,2BAAa;AAAEC,gBAAAA,KAAK,EAAEN,MAAT;AAAiBO,gBAAAA,GAAG,EAAEH;AAAtB,eAAb,EAA+Cd,MAA/C,CAAV;;AACA,kBAAIe,CAAC,CAACG,UAAN,EAAkB;AAChBvC,gBAAAA,GAAG,CAAC,0BAAD,CAAH;AACA;AACD,eAHD,MAGO;AACL,oBAAMwC,cAAc,GAAGJ,CAAC,CAACK,gBAAzB;AACA,oBAAMC,KAAK,GAAG;AACZjC,kBAAAA,IAAI,EAAEiB,YADM;AAEZW,kBAAAA,KAAK,EAAEN,MAFK;AAGZO,kBAAAA,GAAG,EAAEH;AAHO,iBAAd;AAMAf,gBAAAA,aAAa,CAACsB,KAAD,EAAQF,cAAR,CAAb;AACA;AACD;AACF;AACF;AACF;AACF;AACF,K;;;;;;WAED,kBAAS;AAAA;;AACP,yBAAkD,KAAKrB,KAAvD;AAAA,UAAQV,IAAR,gBAAQA,IAAR;AAAA,UAAcY,MAAd,gBAAcA,MAAd;AAAA,UAAsBP,SAAtB,gBAAsBA,SAAtB;AAAA,UAAiC6B,YAAjC,gBAAiCA,YAAjC;AACA,UAAMC,UAAU,GAAG,wBAAUnC,IAAV,EAAgBY,MAAhB,CAAnB;AAEA,0BACE;AAAK,QAAA,SAAS,EAAEP,SAAhB;AAA2B,QAAA,GAAG,EAAE,aAAC+B,CAAD;AAAA,iBAAQ,MAAI,CAACf,IAAL,GAAYe,CAApB;AAAA,SAAhC;AAAwD,QAAA,OAAO,EAAE,KAAKlC;AAAtE,SACGiC,UAAU,CAACE,GAAX,CAAe,UAACC,CAAD,EAAIC,KAAJ,EAAc;AAC5B,4BAAO,gCAAC,IAAD;AAAM,UAAA,GAAG,EAAEA;AAAX,WAAsBD,CAAtB;AAAyB,UAAA,OAAO,EAAE;AAAA,mBAAMJ,YAAY,CAACI,CAAD,CAAlB;AAAA;AAAlC,WAAP;AACD,OAFA,CADH,CADF;AAOD;;;EAtFoCE,kBAAMC,S;;;iCAAxBjC,S,eACA;AACjBR,EAAAA,IAAI,EAAE0C,sBAAUC,MAAV,CAAiBC,UADN;AAEjBhC,EAAAA,MAAM,EAAE8B,sBAAUG,KAAV,CAAgBD,UAFP;AAGjBV,EAAAA,YAAY,EAAEQ,sBAAUI,IAAV,CAAeF,UAHZ;AAIjBjC,EAAAA,aAAa,EAAE+B,sBAAUI,IAAV,CAAeF,UAJb;AAKjBvC,EAAAA,SAAS,EAAEqC,sBAAUC;AALJ,C","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"}
|
|
1
|
+
{"version":3,"file":"token-text.js","names":["_react","_interopRequireDefault","require","_propTypes","_styles","_builder","_debug","_classnames","_selectionUtils","_colors","_callSuper","t","o","e","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","Reflect","construct","constructor","apply","Boolean","prototype","valueOf","call","log","debug","StyledText","styled","cursor","backgroundColor","yellow","border","concat","green","Text","exports","_ref","text","predefined","onClick","correct","formattedText","replace","className","classNames","createElement","dangerouslySetInnerHTML","__html","notAllowedCharacters","TokenText","_React$Component","_this","_classCallCheck2","_len","arguments","length","args","Array","_key","_defineProperty2","event","_this$props","props","onSelectToken","tokens","preventDefault","window","selection","getSelection","textSelected","toString","indexOf","root","offset","getCaretCharacterOffsetWithin","newLineOffset","slice","undefined","endIndex","i","intersection","start","end","hasOverlap","clearSelection","tokensToRemove","surroundedTokens","token","_inherits2","_createClass2","key","value","render","_this2","_this$props2","onTokenClick","normalized","normalize","ref","r","map","index","_extends2","React","Component","PropTypes","string","isRequired","array","func"],"sources":["../../src/tokenizer/token-text.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { styled } from '@mui/material/styles';\nimport { normalize, intersection } from './builder';\nimport debug from 'debug';\nimport classNames from 'classnames';\n\nimport { clearSelection, getCaretCharacterOffsetWithin } from './selection-utils';\n\nimport { yellow, green } from '@mui/material/colors';\n\nconst log = debug('@pie-lib:text-select:token-text');\n\nconst StyledText = styled('span')(() => ({\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}));\n\nexport const Text = ({ text, predefined, onClick, correct }) => {\n const formattedText = (text || '').replace(/\\n/g, '<br>');\n\n if (predefined) {\n const className = classNames('predefined', correct && 'correct');\n\n return <StyledText 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"],"mappings":"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","ignoreList":[]}
|