@pie-lib/text-select 1.28.3-next.2 → 1.29.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 +17 -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 +48 -106
- 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 +13 -12
- package/src/legend.js +76 -67
- package/src/token-select/index.jsx +13 -16
- 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
|
@@ -1,111 +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
8
|
exports["default"] = exports.TokenSelect = void 0;
|
|
11
|
-
|
|
12
9
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
13
|
-
|
|
14
10
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
15
|
-
|
|
16
11
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
17
|
-
|
|
18
|
-
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
19
|
-
|
|
20
|
-
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
21
|
-
|
|
22
12
|
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
23
|
-
|
|
24
13
|
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
25
|
-
|
|
14
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
26
15
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
27
|
-
|
|
28
16
|
var _react = _interopRequireDefault(require("react"));
|
|
29
|
-
|
|
30
17
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
31
|
-
|
|
32
18
|
var _token = _interopRequireWildcard(require("./token"));
|
|
33
|
-
|
|
34
|
-
var _styles = require("@material-ui/core/styles");
|
|
35
|
-
|
|
36
|
-
var _classnames = _interopRequireDefault(require("classnames"));
|
|
37
|
-
|
|
19
|
+
var _styles = require("@mui/material/styles");
|
|
38
20
|
var _clone = _interopRequireDefault(require("lodash/clone"));
|
|
39
|
-
|
|
40
21
|
var _debug = _interopRequireDefault(require("debug"));
|
|
41
|
-
|
|
42
22
|
var _styleUtils = require("@pie-lib/style-utils");
|
|
43
|
-
|
|
44
23
|
var _server = require("react-dom/server");
|
|
45
|
-
|
|
46
24
|
var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
|
|
47
|
-
|
|
48
|
-
function
|
|
49
|
-
|
|
50
|
-
function
|
|
51
|
-
|
|
52
|
-
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; }
|
|
53
|
-
|
|
54
|
-
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; }
|
|
55
|
-
|
|
56
|
-
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); }; }
|
|
57
|
-
|
|
58
|
-
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; } }
|
|
59
|
-
|
|
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; }
|
|
60
30
|
var log = (0, _debug["default"])('@pie-lib:text-select:token-select');
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
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) {
|
|
67
42
|
function TokenSelect() {
|
|
68
43
|
var _this;
|
|
69
|
-
|
|
70
44
|
(0, _classCallCheck2["default"])(this, TokenSelect);
|
|
71
|
-
|
|
72
45
|
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
73
46
|
args[_key] = arguments[_key];
|
|
74
47
|
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "selectedCount", function () {
|
|
48
|
+
_this = _callSuper(this, TokenSelect, [].concat(args));
|
|
49
|
+
(0, _defineProperty2["default"])(_this, "selectedCount", function () {
|
|
78
50
|
return _this.props.tokens.filter(function (t) {
|
|
79
51
|
return t.selected;
|
|
80
52
|
}).length;
|
|
81
53
|
});
|
|
82
|
-
(0, _defineProperty2["default"])(
|
|
54
|
+
(0, _defineProperty2["default"])(_this, "canSelectMore", function (selectedCount) {
|
|
83
55
|
var maxNoOfSelections = _this.props.maxNoOfSelections;
|
|
84
|
-
|
|
85
56
|
if (maxNoOfSelections === 1) {
|
|
86
57
|
return true;
|
|
87
58
|
}
|
|
88
|
-
|
|
89
59
|
log('[canSelectMore] maxNoOfSelections: ', maxNoOfSelections, 'selectedCount: ', selectedCount);
|
|
90
60
|
return maxNoOfSelections <= 0 || isFinite(maxNoOfSelections) && selectedCount < maxNoOfSelections;
|
|
91
61
|
});
|
|
92
|
-
|
|
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) {
|
|
93
70
|
var target = event.target;
|
|
94
71
|
var _this$props = _this.props,
|
|
95
|
-
|
|
96
|
-
|
|
72
|
+
tokens = _this$props.tokens,
|
|
73
|
+
animationsDisabled = _this$props.animationsDisabled;
|
|
97
74
|
var tokensCloned = (0, _clone["default"])(tokens);
|
|
98
75
|
var targetSpanWrapper = target.closest(".".concat(_token["default"].rootClassName));
|
|
99
76
|
var targetedTokenIndex = targetSpanWrapper && targetSpanWrapper.dataset && targetSpanWrapper.dataset.indexkey;
|
|
100
|
-
var t = targetedTokenIndex && tokensCloned[targetedTokenIndex];
|
|
101
|
-
// (missing means that it was evaluated as correct and not selected)
|
|
77
|
+
var t = targetedTokenIndex && tokensCloned[targetedTokenIndex];
|
|
102
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)
|
|
103
81
|
if (t && t.correct === undefined && !animationsDisabled && !t.isMissing) {
|
|
104
82
|
var _this$props2 = _this.props,
|
|
105
|
-
|
|
106
|
-
|
|
83
|
+
onChange = _this$props2.onChange,
|
|
84
|
+
maxNoOfSelections = _this$props2.maxNoOfSelections;
|
|
107
85
|
var selected = !t.selected;
|
|
108
|
-
|
|
109
86
|
if (maxNoOfSelections === 1 && _this.selectedCount() === 1) {
|
|
110
87
|
var selectedToken = (tokens || []).filter(function (t) {
|
|
111
88
|
return t.selected;
|
|
@@ -116,16 +93,13 @@ var TokenSelect = /*#__PURE__*/function (_React$Component) {
|
|
|
116
93
|
selected: false
|
|
117
94
|
});
|
|
118
95
|
}
|
|
119
|
-
|
|
120
96
|
return _objectSpread(_objectSpread({}, token), {}, {
|
|
121
97
|
selectable: true
|
|
122
98
|
});
|
|
123
99
|
});
|
|
124
|
-
|
|
125
100
|
var update = _objectSpread(_objectSpread({}, t), {}, {
|
|
126
101
|
selected: !t.selected
|
|
127
102
|
});
|
|
128
|
-
|
|
129
103
|
updatedTokens.splice(targetedTokenIndex, 1, update);
|
|
130
104
|
onChange(updatedTokens);
|
|
131
105
|
} else {
|
|
@@ -133,50 +107,40 @@ var TokenSelect = /*#__PURE__*/function (_React$Component) {
|
|
|
133
107
|
log('skip toggle max reached');
|
|
134
108
|
return;
|
|
135
109
|
}
|
|
136
|
-
|
|
137
110
|
var _update = _objectSpread(_objectSpread({}, t), {}, {
|
|
138
111
|
selected: !t.selected
|
|
139
112
|
});
|
|
140
|
-
|
|
141
113
|
tokensCloned.splice(targetedTokenIndex, 1, _update);
|
|
142
114
|
onChange(tokensCloned);
|
|
143
115
|
}
|
|
144
116
|
}
|
|
145
117
|
});
|
|
146
|
-
(0, _defineProperty2["default"])(
|
|
118
|
+
(0, _defineProperty2["default"])(_this, "generateTokensInHtml", function () {
|
|
147
119
|
var _this$props3 = _this.props,
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
120
|
+
tokens = _this$props3.tokens,
|
|
121
|
+
disabled = _this$props3.disabled,
|
|
122
|
+
highlightChoices = _this$props3.highlightChoices,
|
|
123
|
+
animationsDisabled = _this$props3.animationsDisabled;
|
|
153
124
|
var selectedCount = _this.selectedCount();
|
|
154
|
-
|
|
155
125
|
var isLineBreak = function isLineBreak(text) {
|
|
156
126
|
return text === '\n';
|
|
157
127
|
};
|
|
158
|
-
|
|
159
128
|
var isNewParagraph = function isNewParagraph(text) {
|
|
160
129
|
return text === '\n\n';
|
|
161
130
|
};
|
|
162
|
-
|
|
163
131
|
var reducer = function reducer(accumulator, t, index) {
|
|
164
132
|
var selectable = t.selected || t.selectable && _this.canSelectMore(selectedCount);
|
|
165
|
-
|
|
166
133
|
var showCorrectAnswer = t.correct !== undefined && (t.selectable || t.selected);
|
|
167
134
|
var finalAcc = accumulator;
|
|
168
|
-
|
|
169
135
|
if (isNewParagraph(t.text)) {
|
|
170
136
|
return finalAcc + '</p><p>';
|
|
171
137
|
}
|
|
172
|
-
|
|
173
138
|
if (isLineBreak(t.text)) {
|
|
174
139
|
return finalAcc + '<br>';
|
|
175
140
|
}
|
|
176
|
-
|
|
177
141
|
if (selectable && !disabled || showCorrectAnswer || t.selected || t.isMissing || animationsDisabled && t.predefined // if we are in print mode
|
|
178
142
|
) {
|
|
179
|
-
return finalAcc + (0, _server.renderToString)(
|
|
143
|
+
return finalAcc + (0, _server.renderToString)(/*#__PURE__*/_react["default"].createElement(_token["default"], (0, _extends2["default"])({
|
|
180
144
|
key: index,
|
|
181
145
|
disabled: disabled,
|
|
182
146
|
index: index
|
|
@@ -189,23 +153,19 @@ var TokenSelect = /*#__PURE__*/function (_React$Component) {
|
|
|
189
153
|
return accumulator + t.text;
|
|
190
154
|
}
|
|
191
155
|
};
|
|
192
|
-
|
|
193
156
|
var reduceResult = (tokens || []).reduce(reducer, '<p>');
|
|
194
157
|
return reduceResult + '</p>';
|
|
195
158
|
});
|
|
196
159
|
return _this;
|
|
197
160
|
}
|
|
198
|
-
|
|
199
|
-
(0, _createClass2["default"])(TokenSelect, [{
|
|
161
|
+
(0, _inherits2["default"])(TokenSelect, _React$Component);
|
|
162
|
+
return (0, _createClass2["default"])(TokenSelect, [{
|
|
200
163
|
key: "render",
|
|
201
164
|
value: function render() {
|
|
202
|
-
var
|
|
203
|
-
classes = _this$props4.classes,
|
|
204
|
-
classNameProp = _this$props4.className;
|
|
205
|
-
var className = (0, _classnames["default"])(classes.tokenSelect, classNameProp);
|
|
165
|
+
var classNameProp = this.props.className;
|
|
206
166
|
var html = this.generateTokensInHtml();
|
|
207
|
-
return /*#__PURE__*/_react["default"].createElement(
|
|
208
|
-
className:
|
|
167
|
+
return /*#__PURE__*/_react["default"].createElement(StyledTokenSelect, {
|
|
168
|
+
className: classNameProp,
|
|
209
169
|
dangerouslySetInnerHTML: {
|
|
210
170
|
__html: html
|
|
211
171
|
},
|
|
@@ -213,14 +173,10 @@ var TokenSelect = /*#__PURE__*/function (_React$Component) {
|
|
|
213
173
|
});
|
|
214
174
|
}
|
|
215
175
|
}]);
|
|
216
|
-
return TokenSelect;
|
|
217
176
|
}(_react["default"].Component);
|
|
218
|
-
|
|
219
|
-
exports.TokenSelect = TokenSelect;
|
|
220
177
|
(0, _defineProperty2["default"])(TokenSelect, "propTypes", {
|
|
221
178
|
tokens: _propTypes["default"].arrayOf(_propTypes["default"].shape(_token.TokenTypes)).isRequired,
|
|
222
179
|
className: _propTypes["default"].string,
|
|
223
|
-
classes: _propTypes["default"].object.isRequired,
|
|
224
180
|
onChange: _propTypes["default"].func.isRequired,
|
|
225
181
|
disabled: _propTypes["default"].bool,
|
|
226
182
|
highlightChoices: _propTypes["default"].bool,
|
|
@@ -232,19 +188,5 @@ exports.TokenSelect = TokenSelect;
|
|
|
232
188
|
maxNoOfSelections: 0,
|
|
233
189
|
tokens: []
|
|
234
190
|
});
|
|
235
|
-
|
|
236
|
-
var _default = (0, _styles.withStyles)(function () {
|
|
237
|
-
return {
|
|
238
|
-
tokenSelect: _objectSpread(_objectSpread({
|
|
239
|
-
backgroundColor: 'none',
|
|
240
|
-
whiteSpace: 'pre'
|
|
241
|
-
}, (0, _styleUtils.noSelect)()), {}, {
|
|
242
|
-
'& p': {
|
|
243
|
-
whiteSpace: 'break-spaces'
|
|
244
|
-
}
|
|
245
|
-
})
|
|
246
|
-
};
|
|
247
|
-
})(TokenSelect);
|
|
248
|
-
|
|
249
|
-
exports["default"] = _default;
|
|
191
|
+
var _default = exports["default"] = TokenSelect;
|
|
250
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"],"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":[]}
|