@pie-lib/text-select 1.29.6-esmbeta.0 → 1.30.0-mui-update.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +41 -0
- package/lib/index.js +1 -12
- package/lib/index.js.map +1 -1
- package/lib/legend.js +87 -91
- 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 +49 -115
- package/lib/token-select/index.js.map +1 -1
- package/lib/token-select/token.js +152 -180
- 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 +37 -84
- 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 +14 -20
- package/src/legend.js +76 -67
- package/src/token-select/index.jsx +13 -19
- package/src/token-select/token.jsx +118 -114
- package/src/tokenizer/controls.jsx +40 -42
- package/src/tokenizer/index.jsx +17 -15
- package/src/tokenizer/token-text.jsx +12 -10
- package/esm/index.css +0 -847
- package/esm/index.js +0 -52662
- package/esm/index.js.map +0 -1
- package/esm/package.json +0 -1
|
@@ -1,118 +1,88 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
-
|
|
7
5
|
Object.defineProperty(exports, "__esModule", {
|
|
8
6
|
value: true
|
|
9
7
|
});
|
|
10
|
-
exports.TokenSelect = void 0;
|
|
11
|
-
Object.defineProperty(exports, "TokenTypes", {
|
|
12
|
-
enumerable: true,
|
|
13
|
-
get: function get() {
|
|
14
|
-
return _token.TokenTypes;
|
|
15
|
-
}
|
|
16
|
-
});
|
|
17
|
-
exports["default"] = void 0;
|
|
18
|
-
|
|
8
|
+
exports["default"] = exports.TokenSelect = void 0;
|
|
19
9
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
20
|
-
|
|
21
10
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
22
|
-
|
|
23
11
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
24
|
-
|
|
25
|
-
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
26
|
-
|
|
27
|
-
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
28
|
-
|
|
29
12
|
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
30
|
-
|
|
31
13
|
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
32
|
-
|
|
14
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
33
15
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
34
|
-
|
|
35
16
|
var _react = _interopRequireDefault(require("react"));
|
|
36
|
-
|
|
37
17
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
38
|
-
|
|
39
18
|
var _token = _interopRequireWildcard(require("./token"));
|
|
40
|
-
|
|
41
|
-
var _styles = require("@material-ui/core/styles");
|
|
42
|
-
|
|
43
|
-
var _classnames = _interopRequireDefault(require("classnames"));
|
|
44
|
-
|
|
19
|
+
var _styles = require("@mui/material/styles");
|
|
45
20
|
var _clone = _interopRequireDefault(require("lodash/clone"));
|
|
46
|
-
|
|
47
21
|
var _debug = _interopRequireDefault(require("debug"));
|
|
48
|
-
|
|
49
22
|
var _styleUtils = require("@pie-lib/style-utils");
|
|
50
|
-
|
|
51
23
|
var _server = require("react-dom/server");
|
|
52
|
-
|
|
53
24
|
var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
|
|
54
|
-
|
|
55
|
-
function
|
|
56
|
-
|
|
57
|
-
function
|
|
58
|
-
|
|
59
|
-
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; }
|
|
60
|
-
|
|
61
|
-
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; }
|
|
62
|
-
|
|
63
|
-
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); }; }
|
|
64
|
-
|
|
65
|
-
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; } }
|
|
66
|
-
|
|
25
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
26
|
+
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)); }
|
|
27
|
+
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
28
|
+
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; }
|
|
29
|
+
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; }
|
|
67
30
|
var log = (0, _debug["default"])('@pie-lib:text-select:token-select');
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
31
|
+
var StyledTokenSelect = (0, _styles.styled)('div')(function () {
|
|
32
|
+
return _objectSpread(_objectSpread({
|
|
33
|
+
backgroundColor: 'none',
|
|
34
|
+
whiteSpace: 'pre'
|
|
35
|
+
}, (0, _styleUtils.noSelect)()), {}, {
|
|
36
|
+
'& p': {
|
|
37
|
+
whiteSpace: 'break-spaces'
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
var TokenSelect = exports.TokenSelect = /*#__PURE__*/function (_React$Component) {
|
|
74
42
|
function TokenSelect() {
|
|
75
43
|
var _this;
|
|
76
|
-
|
|
77
44
|
(0, _classCallCheck2["default"])(this, TokenSelect);
|
|
78
|
-
|
|
79
45
|
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
80
46
|
args[_key] = arguments[_key];
|
|
81
47
|
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "selectedCount", function () {
|
|
48
|
+
_this = _callSuper(this, TokenSelect, [].concat(args));
|
|
49
|
+
(0, _defineProperty2["default"])(_this, "selectedCount", function () {
|
|
85
50
|
return _this.props.tokens.filter(function (t) {
|
|
86
51
|
return t.selected;
|
|
87
52
|
}).length;
|
|
88
53
|
});
|
|
89
|
-
(0, _defineProperty2["default"])(
|
|
54
|
+
(0, _defineProperty2["default"])(_this, "canSelectMore", function (selectedCount) {
|
|
90
55
|
var maxNoOfSelections = _this.props.maxNoOfSelections;
|
|
91
|
-
|
|
92
56
|
if (maxNoOfSelections === 1) {
|
|
93
57
|
return true;
|
|
94
58
|
}
|
|
95
|
-
|
|
96
59
|
log('[canSelectMore] maxNoOfSelections: ', maxNoOfSelections, 'selectedCount: ', selectedCount);
|
|
97
60
|
return maxNoOfSelections <= 0 || isFinite(maxNoOfSelections) && selectedCount < maxNoOfSelections;
|
|
98
61
|
});
|
|
99
|
-
|
|
62
|
+
/**
|
|
63
|
+
@function
|
|
64
|
+
@param { object } event
|
|
65
|
+
@description
|
|
66
|
+
each token is wrapped into a span that has Token.rootClassName class and indexkey attribute (represents the index of the token)
|
|
67
|
+
tokens are updated with the targeted token having the correct value set for 'selected' property
|
|
68
|
+
*/
|
|
69
|
+
(0, _defineProperty2["default"])(_this, "toggleToken", function (event) {
|
|
100
70
|
var target = event.target;
|
|
101
71
|
var _this$props = _this.props,
|
|
102
|
-
|
|
103
|
-
|
|
72
|
+
tokens = _this$props.tokens,
|
|
73
|
+
animationsDisabled = _this$props.animationsDisabled;
|
|
104
74
|
var tokensCloned = (0, _clone["default"])(tokens);
|
|
105
75
|
var targetSpanWrapper = target.closest(".".concat(_token["default"].rootClassName));
|
|
106
76
|
var targetedTokenIndex = targetSpanWrapper && targetSpanWrapper.dataset && targetSpanWrapper.dataset.indexkey;
|
|
107
|
-
var t = targetedTokenIndex && tokensCloned[targetedTokenIndex];
|
|
108
|
-
// (missing means that it was evaluated as correct and not selected)
|
|
77
|
+
var t = targetedTokenIndex && tokensCloned[targetedTokenIndex];
|
|
109
78
|
|
|
79
|
+
// don't toggle if we are in print mode, token correctness is defined or if it's missing
|
|
80
|
+
// (missing means that it was evaluated as correct and not selected)
|
|
110
81
|
if (t && t.correct === undefined && !animationsDisabled && !t.isMissing) {
|
|
111
82
|
var _this$props2 = _this.props,
|
|
112
|
-
|
|
113
|
-
|
|
83
|
+
onChange = _this$props2.onChange,
|
|
84
|
+
maxNoOfSelections = _this$props2.maxNoOfSelections;
|
|
114
85
|
var selected = !t.selected;
|
|
115
|
-
|
|
116
86
|
if (maxNoOfSelections === 1 && _this.selectedCount() === 1) {
|
|
117
87
|
var selectedToken = (tokens || []).filter(function (t) {
|
|
118
88
|
return t.selected;
|
|
@@ -123,16 +93,13 @@ var TokenSelect = /*#__PURE__*/function (_React$Component) {
|
|
|
123
93
|
selected: false
|
|
124
94
|
});
|
|
125
95
|
}
|
|
126
|
-
|
|
127
96
|
return _objectSpread(_objectSpread({}, token), {}, {
|
|
128
97
|
selectable: true
|
|
129
98
|
});
|
|
130
99
|
});
|
|
131
|
-
|
|
132
100
|
var update = _objectSpread(_objectSpread({}, t), {}, {
|
|
133
101
|
selected: !t.selected
|
|
134
102
|
});
|
|
135
|
-
|
|
136
103
|
updatedTokens.splice(targetedTokenIndex, 1, update);
|
|
137
104
|
onChange(updatedTokens);
|
|
138
105
|
} else {
|
|
@@ -140,50 +107,40 @@ var TokenSelect = /*#__PURE__*/function (_React$Component) {
|
|
|
140
107
|
log('skip toggle max reached');
|
|
141
108
|
return;
|
|
142
109
|
}
|
|
143
|
-
|
|
144
110
|
var _update = _objectSpread(_objectSpread({}, t), {}, {
|
|
145
111
|
selected: !t.selected
|
|
146
112
|
});
|
|
147
|
-
|
|
148
113
|
tokensCloned.splice(targetedTokenIndex, 1, _update);
|
|
149
114
|
onChange(tokensCloned);
|
|
150
115
|
}
|
|
151
116
|
}
|
|
152
117
|
});
|
|
153
|
-
(0, _defineProperty2["default"])(
|
|
118
|
+
(0, _defineProperty2["default"])(_this, "generateTokensInHtml", function () {
|
|
154
119
|
var _this$props3 = _this.props,
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
120
|
+
tokens = _this$props3.tokens,
|
|
121
|
+
disabled = _this$props3.disabled,
|
|
122
|
+
highlightChoices = _this$props3.highlightChoices,
|
|
123
|
+
animationsDisabled = _this$props3.animationsDisabled;
|
|
160
124
|
var selectedCount = _this.selectedCount();
|
|
161
|
-
|
|
162
125
|
var isLineBreak = function isLineBreak(text) {
|
|
163
126
|
return text === '\n';
|
|
164
127
|
};
|
|
165
|
-
|
|
166
128
|
var isNewParagraph = function isNewParagraph(text) {
|
|
167
129
|
return text === '\n\n';
|
|
168
130
|
};
|
|
169
|
-
|
|
170
131
|
var reducer = function reducer(accumulator, t, index) {
|
|
171
132
|
var selectable = t.selected || t.selectable && _this.canSelectMore(selectedCount);
|
|
172
|
-
|
|
173
133
|
var showCorrectAnswer = t.correct !== undefined && (t.selectable || t.selected);
|
|
174
134
|
var finalAcc = accumulator;
|
|
175
|
-
|
|
176
135
|
if (isNewParagraph(t.text)) {
|
|
177
136
|
return finalAcc + '</p><p>';
|
|
178
137
|
}
|
|
179
|
-
|
|
180
138
|
if (isLineBreak(t.text)) {
|
|
181
139
|
return finalAcc + '<br>';
|
|
182
140
|
}
|
|
183
|
-
|
|
184
141
|
if (selectable && !disabled || showCorrectAnswer || t.selected || t.isMissing || animationsDisabled && t.predefined // if we are in print mode
|
|
185
142
|
) {
|
|
186
|
-
return finalAcc + (0, _server.renderToString)(
|
|
143
|
+
return finalAcc + (0, _server.renderToString)(/*#__PURE__*/_react["default"].createElement(_token["default"], (0, _extends2["default"])({
|
|
187
144
|
key: index,
|
|
188
145
|
disabled: disabled,
|
|
189
146
|
index: index
|
|
@@ -196,23 +153,19 @@ var TokenSelect = /*#__PURE__*/function (_React$Component) {
|
|
|
196
153
|
return accumulator + t.text;
|
|
197
154
|
}
|
|
198
155
|
};
|
|
199
|
-
|
|
200
156
|
var reduceResult = (tokens || []).reduce(reducer, '<p>');
|
|
201
157
|
return reduceResult + '</p>';
|
|
202
158
|
});
|
|
203
159
|
return _this;
|
|
204
160
|
}
|
|
205
|
-
|
|
206
|
-
(0, _createClass2["default"])(TokenSelect, [{
|
|
161
|
+
(0, _inherits2["default"])(TokenSelect, _React$Component);
|
|
162
|
+
return (0, _createClass2["default"])(TokenSelect, [{
|
|
207
163
|
key: "render",
|
|
208
164
|
value: function render() {
|
|
209
|
-
var
|
|
210
|
-
classes = _this$props4.classes,
|
|
211
|
-
classNameProp = _this$props4.className;
|
|
212
|
-
var className = (0, _classnames["default"])(classes.tokenSelect, classNameProp);
|
|
165
|
+
var classNameProp = this.props.className;
|
|
213
166
|
var html = this.generateTokensInHtml();
|
|
214
|
-
return /*#__PURE__*/_react["default"].createElement(
|
|
215
|
-
className:
|
|
167
|
+
return /*#__PURE__*/_react["default"].createElement(StyledTokenSelect, {
|
|
168
|
+
className: classNameProp,
|
|
216
169
|
dangerouslySetInnerHTML: {
|
|
217
170
|
__html: html
|
|
218
171
|
},
|
|
@@ -220,14 +173,10 @@ var TokenSelect = /*#__PURE__*/function (_React$Component) {
|
|
|
220
173
|
});
|
|
221
174
|
}
|
|
222
175
|
}]);
|
|
223
|
-
return TokenSelect;
|
|
224
176
|
}(_react["default"].Component);
|
|
225
|
-
|
|
226
|
-
exports.TokenSelect = TokenSelect;
|
|
227
177
|
(0, _defineProperty2["default"])(TokenSelect, "propTypes", {
|
|
228
178
|
tokens: _propTypes["default"].arrayOf(_propTypes["default"].shape(_token.TokenTypes)).isRequired,
|
|
229
179
|
className: _propTypes["default"].string,
|
|
230
|
-
classes: _propTypes["default"].object.isRequired,
|
|
231
180
|
onChange: _propTypes["default"].func.isRequired,
|
|
232
181
|
disabled: _propTypes["default"].bool,
|
|
233
182
|
highlightChoices: _propTypes["default"].bool,
|
|
@@ -239,20 +188,5 @@ exports.TokenSelect = TokenSelect;
|
|
|
239
188
|
maxNoOfSelections: 0,
|
|
240
189
|
tokens: []
|
|
241
190
|
});
|
|
242
|
-
|
|
243
|
-
var _default = (0, _styles.withStyles)(function () {
|
|
244
|
-
return {
|
|
245
|
-
tokenSelect: _objectSpread(_objectSpread({
|
|
246
|
-
backgroundColor: 'none',
|
|
247
|
-
whiteSpace: 'pre'
|
|
248
|
-
}, (0, _styleUtils.noSelect)()), {}, {
|
|
249
|
-
'& p': {
|
|
250
|
-
whiteSpace: 'break-spaces'
|
|
251
|
-
}
|
|
252
|
-
})
|
|
253
|
-
};
|
|
254
|
-
})(TokenSelect); // Re-export TokenTypes for external use
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
exports["default"] = _default;
|
|
191
|
+
var _default = exports["default"] = TokenSelect;
|
|
258
192
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/token-select/index.jsx"],"names":["log","TokenSelect","props","tokens","filter","t","selected","length","selectedCount","maxNoOfSelections","isFinite","event","target","animationsDisabled","tokensCloned","targetSpanWrapper","closest","Token","rootClassName","targetedTokenIndex","dataset","indexkey","correct","undefined","isMissing","onChange","selectedToken","updatedTokens","map","token","selectable","update","splice","disabled","highlightChoices","isLineBreak","text","isNewParagraph","reducer","accumulator","index","canSelectMore","showCorrectAnswer","finalAcc","predefined","reduceResult","reduce","classes","classNameProp","className","tokenSelect","html","generateTokensInHtml","__html","toggleToken","React","Component","PropTypes","arrayOf","shape","TokenTypes","isRequired","string","object","func","bool","number","backgroundColor","whiteSpace"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport Token, { TokenTypes } from './token';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport clone from 'lodash/clone';\nimport debug from 'debug';\nimport { noSelect } from '@pie-lib/style-utils';\nimport { renderToString } from 'react-dom/server';\nimport isEqual from 'lodash/isEqual';\n\nconst log = debug('@pie-lib:text-select:token-select');\n\nexport class TokenSelect extends React.Component {\n static propTypes = {\n tokens: PropTypes.arrayOf(PropTypes.shape(TokenTypes)).isRequired,\n className: PropTypes.string,\n classes: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n disabled: PropTypes.bool,\n highlightChoices: PropTypes.bool,\n animationsDisabled: PropTypes.bool,\n maxNoOfSelections: PropTypes.number,\n };\n\n static defaultProps = {\n highlightChoices: false,\n maxNoOfSelections: 0,\n tokens: [],\n };\n\n selectedCount = () => this.props.tokens.filter((t) => t.selected).length;\n\n canSelectMore = (selectedCount) => {\n const { maxNoOfSelections } = this.props;\n\n if (maxNoOfSelections === 1) {\n return true;\n }\n\n log('[canSelectMore] maxNoOfSelections: ', maxNoOfSelections, 'selectedCount: ', selectedCount);\n return maxNoOfSelections <= 0 || (isFinite(maxNoOfSelections) && selectedCount < maxNoOfSelections);\n };\n\n /**\n @function\n @param { object } event\n\n @description\n each token is wrapped into a span that has Token.rootClassName class and indexkey attribute (represents the index of the token)\n tokens are updated with the targeted token having the correct value set for 'selected' property\n */\n toggleToken = (event) => {\n const { target } = event;\n const { tokens, animationsDisabled } = this.props;\n const tokensCloned = clone(tokens);\n const targetSpanWrapper = target.closest(`.${Token.rootClassName}`);\n const targetedTokenIndex = targetSpanWrapper && targetSpanWrapper.dataset && targetSpanWrapper.dataset.indexkey;\n const t = targetedTokenIndex && tokensCloned[targetedTokenIndex];\n\n // don't toggle if we are in print mode, token correctness is defined or if it's missing\n // (missing means that it was evaluated as correct and not selected)\n if (t && t.correct === undefined && !animationsDisabled && !t.isMissing) {\n const { onChange, maxNoOfSelections } = this.props;\n const selected = !t.selected;\n\n if (maxNoOfSelections === 1 && this.selectedCount() === 1) {\n const selectedToken = (tokens || []).filter((t) => t.selected);\n\n const updatedTokens = tokensCloned.map((token) => {\n if (isEqual(token, selectedToken[0])) {\n return { ...token, selected: false };\n }\n\n return { ...token, selectable: true };\n });\n\n const update = { ...t, selected: !t.selected };\n\n updatedTokens.splice(targetedTokenIndex, 1, update);\n onChange(updatedTokens);\n } else {\n if (selected && maxNoOfSelections > 0 && this.selectedCount() >= maxNoOfSelections) {\n log('skip toggle max reached');\n return;\n }\n\n const update = { ...t, selected: !t.selected };\n\n tokensCloned.splice(targetedTokenIndex, 1, update);\n onChange(tokensCloned);\n }\n }\n };\n\n generateTokensInHtml = () => {\n const { tokens, disabled, highlightChoices, animationsDisabled } = this.props;\n const selectedCount = this.selectedCount();\n const isLineBreak = (text) => text === '\\n';\n const isNewParagraph = (text) => text === '\\n\\n';\n\n const reducer = (accumulator, t, index) => {\n const selectable = t.selected || (t.selectable && this.canSelectMore(selectedCount));\n const showCorrectAnswer = t.correct !== undefined && (t.selectable || t.selected);\n let finalAcc = accumulator;\n\n if (isNewParagraph(t.text)) {\n return finalAcc + '</p><p>';\n }\n\n if (isLineBreak(t.text)) {\n return finalAcc + '<br>';\n }\n\n if (\n (selectable && !disabled) ||\n showCorrectAnswer ||\n t.selected ||\n t.isMissing ||\n (animationsDisabled && t.predefined) // if we are in print mode\n ) {\n return (\n finalAcc +\n renderToString(\n <Token\n key={index}\n disabled={disabled}\n index={index}\n {...t}\n selectable={selectable}\n highlight={highlightChoices}\n animationsDisabled={animationsDisabled}\n />,\n )\n );\n } else {\n return accumulator + t.text;\n }\n };\n\n const reduceResult = (tokens || []).reduce(reducer, '<p>');\n\n return reduceResult + '</p>';\n };\n\n render() {\n const { classes, className: classNameProp } = this.props;\n const className = classNames(classes.tokenSelect, classNameProp);\n const html = this.generateTokensInHtml();\n\n return <div className={className} dangerouslySetInnerHTML={{ __html: html }} onClick={this.toggleToken} />;\n }\n}\n\nexport default withStyles(() => ({\n tokenSelect: {\n backgroundColor: 'none',\n whiteSpace: 'pre',\n ...noSelect(),\n '& p': {\n whiteSpace: 'break-spaces',\n },\n },\n}))(TokenSelect);\n\n// Re-export TokenTypes for external use\nexport { TokenTypes };\n"],"file":"index.js"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["_react","_interopRequireDefault","require","_propTypes","_token","_interopRequireWildcard","_styles","_clone","_debug","_styleUtils","_server","_isEqual","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","_typeof","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_callSuper","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","Reflect","construct","constructor","apply","Boolean","prototype","valueOf","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","log","debug","StyledTokenSelect","styled","backgroundColor","whiteSpace","noSelect","TokenSelect","exports","_React$Component","_this","_classCallCheck2","_len","args","Array","_key","concat","props","tokens","selected","selectedCount","maxNoOfSelections","isFinite","event","target","_this$props","animationsDisabled","tokensCloned","clone","targetSpanWrapper","closest","Token","rootClassName","targetedTokenIndex","dataset","indexkey","correct","undefined","isMissing","_this$props2","onChange","selectedToken","updatedTokens","map","token","isEqual","selectable","update","splice","_this$props3","disabled","highlightChoices","isLineBreak","text","isNewParagraph","reducer","accumulator","index","canSelectMore","showCorrectAnswer","finalAcc","predefined","renderToString","createElement","_extends2","key","highlight","reduceResult","reduce","_inherits2","_createClass2","value","render","classNameProp","className","html","generateTokensInHtml","dangerouslySetInnerHTML","__html","onClick","toggleToken","React","Component","PropTypes","arrayOf","shape","TokenTypes","isRequired","string","func","bool","number","_default"],"sources":["../../src/token-select/index.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport Token, { TokenTypes } from './token';\nimport { styled } from '@mui/material/styles';\nimport clone from 'lodash/clone';\nimport debug from 'debug';\nimport { noSelect } from '@pie-lib/style-utils';\nimport { renderToString } from 'react-dom/server';\nimport isEqual from 'lodash/isEqual';\n\nconst log = debug('@pie-lib:text-select:token-select');\n\nconst StyledTokenSelect = styled('div')(() => ({\n backgroundColor: 'none',\n whiteSpace: 'pre',\n ...noSelect(),\n '& p': {\n whiteSpace: 'break-spaces',\n },\n}));\n\nexport class TokenSelect extends React.Component {\n static propTypes = {\n tokens: PropTypes.arrayOf(PropTypes.shape(TokenTypes)).isRequired,\n className: PropTypes.string,\n onChange: PropTypes.func.isRequired,\n disabled: PropTypes.bool,\n highlightChoices: PropTypes.bool,\n animationsDisabled: PropTypes.bool,\n maxNoOfSelections: PropTypes.number,\n };\n\n static defaultProps = {\n highlightChoices: false,\n maxNoOfSelections: 0,\n tokens: [],\n };\n\n selectedCount = () => this.props.tokens.filter((t) => t.selected).length;\n\n canSelectMore = (selectedCount) => {\n const { maxNoOfSelections } = this.props;\n\n if (maxNoOfSelections === 1) {\n return true;\n }\n\n log('[canSelectMore] maxNoOfSelections: ', maxNoOfSelections, 'selectedCount: ', selectedCount);\n return maxNoOfSelections <= 0 || (isFinite(maxNoOfSelections) && selectedCount < maxNoOfSelections);\n };\n\n /**\n @function\n @param { object } event\n\n @description\n each token is wrapped into a span that has Token.rootClassName class and indexkey attribute (represents the index of the token)\n tokens are updated with the targeted token having the correct value set for 'selected' property\n */\n toggleToken = (event) => {\n const { target } = event;\n const { tokens, animationsDisabled } = this.props;\n const tokensCloned = clone(tokens);\n const targetSpanWrapper = target.closest(`.${Token.rootClassName}`);\n const targetedTokenIndex = targetSpanWrapper && targetSpanWrapper.dataset && targetSpanWrapper.dataset.indexkey;\n const t = targetedTokenIndex && tokensCloned[targetedTokenIndex];\n\n // don't toggle if we are in print mode, token correctness is defined or if it's missing\n // (missing means that it was evaluated as correct and not selected)\n if (t && t.correct === undefined && !animationsDisabled && !t.isMissing) {\n const { onChange, maxNoOfSelections } = this.props;\n const selected = !t.selected;\n\n if (maxNoOfSelections === 1 && this.selectedCount() === 1) {\n const selectedToken = (tokens || []).filter((t) => t.selected);\n\n const updatedTokens = tokensCloned.map((token) => {\n if (isEqual(token, selectedToken[0])) {\n return { ...token, selected: false };\n }\n\n return { ...token, selectable: true };\n });\n\n const update = { ...t, selected: !t.selected };\n\n updatedTokens.splice(targetedTokenIndex, 1, update);\n onChange(updatedTokens);\n } else {\n if (selected && maxNoOfSelections > 0 && this.selectedCount() >= maxNoOfSelections) {\n log('skip toggle max reached');\n return;\n }\n\n const update = { ...t, selected: !t.selected };\n\n tokensCloned.splice(targetedTokenIndex, 1, update);\n onChange(tokensCloned);\n }\n }\n };\n\n generateTokensInHtml = () => {\n const { tokens, disabled, highlightChoices, animationsDisabled } = this.props;\n const selectedCount = this.selectedCount();\n const isLineBreak = (text) => text === '\\n';\n const isNewParagraph = (text) => text === '\\n\\n';\n\n const reducer = (accumulator, t, index) => {\n const selectable = t.selected || (t.selectable && this.canSelectMore(selectedCount));\n const showCorrectAnswer = t.correct !== undefined && (t.selectable || t.selected);\n let finalAcc = accumulator;\n\n if (isNewParagraph(t.text)) {\n return finalAcc + '</p><p>';\n }\n\n if (isLineBreak(t.text)) {\n return finalAcc + '<br>';\n }\n\n if (\n (selectable && !disabled) ||\n showCorrectAnswer ||\n t.selected ||\n t.isMissing ||\n (animationsDisabled && t.predefined) // if we are in print mode\n ) {\n return (\n finalAcc +\n renderToString(\n <Token\n key={index}\n disabled={disabled}\n index={index}\n {...t}\n selectable={selectable}\n highlight={highlightChoices}\n animationsDisabled={animationsDisabled}\n />,\n )\n );\n } else {\n return accumulator + t.text;\n }\n };\n\n const reduceResult = (tokens || []).reduce(reducer, '<p>');\n\n return reduceResult + '</p>';\n };\n\n render() {\n const { className: classNameProp } = this.props;\n const html = this.generateTokensInHtml();\n\n return <StyledTokenSelect className={classNameProp} dangerouslySetInnerHTML={{ __html: html }} onClick={this.toggleToken} />;\n }\n}\n\nexport default TokenSelect;\n"],"mappings":"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","ignoreList":[]}
|