@pie-lib/text-select 1.44.0-mui-update.0 → 2.0.0-next.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 +11 -98
- package/lib/token-select/index.js +10 -1
- package/lib/token-select/index.js.map +1 -1
- package/lib/tokenizer/index.js +8 -17
- package/lib/tokenizer/index.js.map +1 -1
- package/package.json +16 -10
- package/src/__tests__/text-select.test.jsx +33 -23
- 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 +13 -3
- 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/index.jsx +8 -13
- 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/CHANGELOG.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
-
# [
|
|
6
|
+
# [2.0.0-next.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/text-select@1.32.3-next.0...@pie-lib/text-select@2.0.0-next.0) (2026-01-19)
|
|
7
7
|
|
|
8
8
|
**Note:** Version bump only for package @pie-lib/text-select
|
|
9
9
|
|
|
@@ -11,28 +11,12 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
|
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
**Note:** Version bump only for package @pie-lib/text-select
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
# [1.42.0-mui-update.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/text-select@1.41.0-mui-update.0...@pie-lib/text-select@1.42.0-mui-update.0) (2025-12-11)
|
|
23
|
-
|
|
24
|
-
**Note:** Version bump only for package @pie-lib/text-select
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
14
|
+
## [1.32.3-next.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/text-select@1.46.0-mui-update.0...@pie-lib/text-select@1.32.3-next.0) (2026-01-19)
|
|
28
15
|
|
|
29
16
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
### Features
|
|
17
|
+
### Bug Fixes
|
|
34
18
|
|
|
35
|
-
*
|
|
19
|
+
* bump config-ui PD-5265 ([77d0c78](https://github.com/pie-framework/pie-lib/commit/77d0c78cacfa57e93ed17e7a7f1257f4a9cf6ab3))
|
|
36
20
|
|
|
37
21
|
|
|
38
22
|
|
|
@@ -42,156 +26,85 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
|
|
|
42
26
|
|
|
43
27
|
**Note:** Version bump only for package @pie-lib/text-select
|
|
44
28
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
29
|
## [1.32.1](https://github.com/pie-framework/pie-lib/compare/@pie-lib/text-select@1.28.2...@pie-lib/text-select@1.32.1) (2025-10-22)
|
|
50
30
|
|
|
51
|
-
|
|
52
31
|
### Bug Fixes
|
|
53
32
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
33
|
+
- bump config-ui PD-5265 ([77d0c78](https://github.com/pie-framework/pie-lib/commit/77d0c78cacfa57e93ed17e7a7f1257f4a9cf6ab3))
|
|
59
34
|
|
|
60
35
|
# [1.32.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/text-select@1.31.0...@pie-lib/text-select@1.32.0) (2025-10-16)
|
|
61
36
|
|
|
62
37
|
**Note:** Version bump only for package @pie-lib/text-select
|
|
63
38
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
39
|
# [1.31.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/text-select@1.28.0...@pie-lib/text-select@1.31.0) (2025-10-16)
|
|
69
40
|
|
|
70
41
|
**Note:** Version bump only for package @pie-lib/text-select
|
|
71
42
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
43
|
# [1.30.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/text-select@1.28.0...@pie-lib/text-select@1.30.0) (2025-10-16)
|
|
77
44
|
|
|
78
45
|
**Note:** Version bump only for package @pie-lib/text-select
|
|
79
46
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
47
|
# [1.29.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/text-select@1.28.0...@pie-lib/text-select@1.29.0) (2025-10-16)
|
|
85
48
|
|
|
86
49
|
**Note:** Version bump only for package @pie-lib/text-select
|
|
87
50
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
51
|
## [1.28.2](https://github.com/pie-framework/pie-lib/compare/@pie-lib/text-select@1.28.1...@pie-lib/text-select@1.28.2) (2025-10-14)
|
|
93
52
|
|
|
94
53
|
**Note:** Version bump only for package @pie-lib/text-select
|
|
95
54
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
55
|
## [1.28.1](https://github.com/pie-framework/pie-lib/compare/@pie-lib/text-select@1.28.0...@pie-lib/text-select@1.28.1) (2025-10-09)
|
|
101
56
|
|
|
102
57
|
**Note:** Version bump only for package @pie-lib/text-select
|
|
103
58
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
59
|
# [1.28.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/text-select@1.12.7...@pie-lib/text-select@1.28.0) (2025-09-25)
|
|
109
60
|
|
|
110
|
-
|
|
111
61
|
### Bug Fixes
|
|
112
62
|
|
|
113
|
-
|
|
114
|
-
|
|
63
|
+
- fixed pie-lib/icons import [PD-5126](<[dcb506c](https://github.com/pie-framework/pie-lib/commit/dcb506c914a177f6d88bf73247a023bfe71dac1f)>)
|
|
115
64
|
|
|
116
65
|
### Features
|
|
117
66
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
67
|
+
- split pie-toolbox into multiple packages [PD-5126](<[7d55a25](https://github.com/pie-framework/pie-lib/commit/7d55a2552d084cd3d0d5c00dc77411b2ced2f5e2)>)
|
|
123
68
|
|
|
124
69
|
# [1.27.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/text-select@1.26.0...@pie-lib/text-select@1.27.0) (2025-09-18)
|
|
125
70
|
|
|
126
71
|
**Note:** Version bump only for package @pie-lib/text-select
|
|
127
72
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
73
|
# [1.26.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/text-select@1.25.0...@pie-lib/text-select@1.26.0) (2025-09-18)
|
|
133
74
|
|
|
134
75
|
**Note:** Version bump only for package @pie-lib/text-select
|
|
135
76
|
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
77
|
# [1.25.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/text-select@1.12.7...@pie-lib/text-select@1.25.0) (2025-09-18)
|
|
141
78
|
|
|
142
|
-
|
|
143
79
|
### Bug Fixes
|
|
144
80
|
|
|
145
|
-
|
|
146
|
-
|
|
81
|
+
- fixed pie-lib/icons import [PD-5126](<[dcb506c](https://github.com/pie-framework/pie-lib/commit/dcb506c914a177f6d88bf73247a023bfe71dac1f)>)
|
|
147
82
|
|
|
148
83
|
### Features
|
|
149
84
|
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
85
|
+
- split pie-toolbox into multiple packages [PD-5126](<[7d55a25](https://github.com/pie-framework/pie-lib/commit/7d55a2552d084cd3d0d5c00dc77411b2ced2f5e2)>)
|
|
155
86
|
|
|
156
87
|
# [1.24.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/text-select@1.23.0...@pie-lib/text-select@1.24.0) (2025-09-17)
|
|
157
88
|
|
|
158
89
|
**Note:** Version bump only for package @pie-lib/text-select
|
|
159
90
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
91
|
# [1.23.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/text-select@1.22.0...@pie-lib/text-select@1.23.0) (2025-09-17)
|
|
165
92
|
|
|
166
93
|
**Note:** Version bump only for package @pie-lib/text-select
|
|
167
94
|
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
95
|
# [1.22.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/text-select@1.21.1...@pie-lib/text-select@1.22.0) (2025-09-17)
|
|
173
96
|
|
|
174
97
|
**Note:** Version bump only for package @pie-lib/text-select
|
|
175
98
|
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
99
|
## [1.21.1](https://github.com/pie-framework/pie-lib/compare/@pie-lib/text-select@1.12.7...@pie-lib/text-select@1.21.1) (2025-08-11)
|
|
181
100
|
|
|
182
|
-
|
|
183
101
|
### Bug Fixes
|
|
184
102
|
|
|
185
|
-
|
|
186
|
-
|
|
103
|
+
- fixed pie-lib/icons import [PD-5126](<[dcb506c](https://github.com/pie-framework/pie-lib/commit/dcb506c914a177f6d88bf73247a023bfe71dac1f)>)
|
|
187
104
|
|
|
188
105
|
### Features
|
|
189
106
|
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
107
|
+
- split pie-toolbox into multiple packages [PD-5126](<[7d55a25](https://github.com/pie-framework/pie-lib/commit/7d55a2552d084cd3d0d5c00dc77411b2ced2f5e2)>)
|
|
195
108
|
|
|
196
109
|
# [1.21.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/text-select@1.12.7...@pie-lib/text-select@1.21.0) (2025-08-07)
|
|
197
110
|
|
|
@@ -38,6 +38,14 @@ var StyledTokenSelect = (0, _styles.styled)('div')(function () {
|
|
|
38
38
|
}
|
|
39
39
|
});
|
|
40
40
|
});
|
|
41
|
+
|
|
42
|
+
// strip HTML tags for plain text rendering
|
|
43
|
+
var stripHtmlTags = function stripHtmlTags(text) {
|
|
44
|
+
if (!text) {
|
|
45
|
+
return text;
|
|
46
|
+
}
|
|
47
|
+
return text.replace(/<[^>]+>/g, '');
|
|
48
|
+
};
|
|
41
49
|
var TokenSelect = exports.TokenSelect = /*#__PURE__*/function (_React$Component) {
|
|
42
50
|
function TokenSelect() {
|
|
43
51
|
var _this;
|
|
@@ -149,6 +157,7 @@ var TokenSelect = exports.TokenSelect = /*#__PURE__*/function (_React$Component)
|
|
|
149
157
|
disabled: disabled,
|
|
150
158
|
index: index
|
|
151
159
|
}, t, {
|
|
160
|
+
text: stripHtmlTags(t.text),
|
|
152
161
|
selectable: selectable,
|
|
153
162
|
highlight: highlightChoices,
|
|
154
163
|
animationsDisabled: animationsDisabled
|
|
@@ -157,7 +166,7 @@ var TokenSelect = exports.TokenSelect = /*#__PURE__*/function (_React$Component)
|
|
|
157
166
|
// raw text node – React will escape as needed
|
|
158
167
|
currentChildren.push(/*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, {
|
|
159
168
|
key: index
|
|
160
|
-
}, t.text));
|
|
169
|
+
}, stripHtmlTags(t.text)));
|
|
161
170
|
}
|
|
162
171
|
});
|
|
163
172
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_react","_interopRequireDefault","require","_propTypes","_token","_interopRequireWildcard","_styles","_clone","_debug","_styleUtils","_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","margin","TokenSelect","exports","_React$Component","_this","_classCallCheck2","_len","args","Array","_key","concat","props","tokens","selected","selectedCount","maxNoOfSelections","isFinite","event","_target$closest","_targetSpanWrapper$da","target","_this$props","animationsDisabled","tokensCloned","clone","targetSpanWrapper","closest","Token","rootClassName","targetedTokenIndex","dataset","indexkey","undefined","correct","isMissing","_this$props2","onChange","selectedToken","tk","updatedTokens","map","token","isEqual","selectable","update","splice","_this$props3","disabled","highlightChoices","isLineBreak","text","isNewParagraph","paragraphs","currentChildren","flushParagraph","createElement","key","index","canSelectMore","showCorrectAnswer","predefined","_extends2","highlight","Fragment","_inherits2","_createClass2","value","render","classNameProp","className","nodes","generateTokensNodes","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 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 margin: 0,\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) return true;\n\n log('[canSelectMore] maxNoOfSelections: ', maxNoOfSelections, 'selectedCount: ', selectedCount);\n return maxNoOfSelections <= 0 || (isFinite(maxNoOfSelections) && selectedCount < maxNoOfSelections);\n };\n\n toggleToken = (event) => {\n const { target } = event;\n const { tokens, animationsDisabled } = this.props;\n const tokensCloned = clone(tokens);\n\n const targetSpanWrapper = target.closest?.(`.${Token.rootClassName}`);\n const targetedTokenIndex = targetSpanWrapper?.dataset?.indexkey;\n const t = targetedTokenIndex !== undefined ? tokensCloned[targetedTokenIndex] : undefined;\n\n // don't toggle if in print mode, correctness is defined, or is missing\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((tk) => tk.selected);\n const updatedTokens = tokensCloned.map((token) => {\n if (isEqual(token, selectedToken[0])) {\n return { ...token, selected: false };\n }\n return { ...token, selectable: true };\n });\n\n const update = { ...t, selected };\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 const update = { ...t, selected };\n tokensCloned.splice(targetedTokenIndex, 1, update);\n onChange(tokensCloned);\n }\n }\n };\n\n /** Build a React tree instead of an HTML string so Emotion can inject CSS */\n generateTokensNodes = () => {\n const { tokens, disabled, highlightChoices, animationsDisabled } = this.props;\n const selectedCount = this.selectedCount();\n\n const isLineBreak = (text) => text === '\\n';\n const isNewParagraph = (text) => text === '\\n\\n';\n\n const paragraphs = [];\n let currentChildren = [];\n\n const flushParagraph = () => {\n // Always push a <p>, even if empty, to mirror previous behavior\n paragraphs.push(<p key={`p-${paragraphs.length}`}>{currentChildren}</p>);\n currentChildren = [];\n };\n\n (tokens || []).forEach((t, index) => {\n const selectable = t.selected || (t.selectable && this.canSelectMore(selectedCount));\n const showCorrectAnswer = t.correct !== undefined && (t.selectable || t.selected);\n\n if (isNewParagraph(t.text)) {\n flushParagraph();\n return;\n }\n\n if (isLineBreak(t.text)) {\n currentChildren.push(<br key={`br-${index}`} />);\n return;\n }\n\n if (\n (selectable && !disabled) ||\n showCorrectAnswer ||\n t.selected ||\n t.isMissing ||\n (animationsDisabled && t.predefined) // print mode\n ) {\n currentChildren.push(\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 } else {\n // raw text node – React will escape as needed\n currentChildren.push(<React.Fragment key={index}>{t.text}</React.Fragment>);\n }\n });\n\n // flush last paragraph\n flushParagraph();\n\n return paragraphs;\n };\n\n render() {\n const { className: classNameProp } = this.props;\n const nodes = this.generateTokensNodes();\n\n return (\n <StyledTokenSelect className={classNameProp} onClick={this.toggleToken}>\n {nodes}\n </StyledTokenSelect>\n );\n }\n}\n\nexport default TokenSelect;"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["_react","_interopRequireDefault","require","_propTypes","_token","_interopRequireWildcard","_styles","_clone","_debug","_styleUtils","_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","margin","stripHtmlTags","text","replace","TokenSelect","exports","_React$Component","_this","_classCallCheck2","_len","args","Array","_key","concat","props","tokens","selected","selectedCount","maxNoOfSelections","isFinite","event","_target$closest","_targetSpanWrapper$da","target","_this$props","animationsDisabled","tokensCloned","clone","targetSpanWrapper","closest","Token","rootClassName","targetedTokenIndex","dataset","indexkey","undefined","correct","isMissing","_this$props2","onChange","selectedToken","tk","updatedTokens","map","token","isEqual","selectable","update","splice","_this$props3","disabled","highlightChoices","isLineBreak","isNewParagraph","paragraphs","currentChildren","flushParagraph","createElement","key","index","canSelectMore","showCorrectAnswer","predefined","_extends2","highlight","Fragment","_inherits2","_createClass2","value","render","classNameProp","className","nodes","generateTokensNodes","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 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 margin: 0,\n },\n}));\n\n// strip HTML tags for plain text rendering\nconst stripHtmlTags = (text) => {\n if (!text) {\n return text;\n }\n\n return text.replace(/<[^>]+>/g, '');\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) return true;\n\n log('[canSelectMore] maxNoOfSelections: ', maxNoOfSelections, 'selectedCount: ', selectedCount);\n return maxNoOfSelections <= 0 || (isFinite(maxNoOfSelections) && selectedCount < maxNoOfSelections);\n };\n\n toggleToken = (event) => {\n const { target } = event;\n const { tokens, animationsDisabled } = this.props;\n const tokensCloned = clone(tokens);\n\n const targetSpanWrapper = target.closest?.(`.${Token.rootClassName}`);\n const targetedTokenIndex = targetSpanWrapper?.dataset?.indexkey;\n const t = targetedTokenIndex !== undefined ? tokensCloned[targetedTokenIndex] : undefined;\n\n // don't toggle if in print mode, correctness is defined, or is missing\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((tk) => tk.selected);\n const updatedTokens = tokensCloned.map((token) => {\n if (isEqual(token, selectedToken[0])) {\n return { ...token, selected: false };\n }\n return { ...token, selectable: true };\n });\n\n const update = { ...t, selected };\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 const update = { ...t, selected };\n tokensCloned.splice(targetedTokenIndex, 1, update);\n onChange(tokensCloned);\n }\n }\n };\n\n /** Build a React tree instead of an HTML string so Emotion can inject CSS */\n generateTokensNodes = () => {\n const { tokens, disabled, highlightChoices, animationsDisabled } = this.props;\n const selectedCount = this.selectedCount();\n\n const isLineBreak = (text) => text === '\\n';\n const isNewParagraph = (text) => text === '\\n\\n';\n\n const paragraphs = [];\n let currentChildren = [];\n\n const flushParagraph = () => {\n // Always push a <p>, even if empty, to mirror previous behavior\n paragraphs.push(<p key={`p-${paragraphs.length}`}>{currentChildren}</p>);\n currentChildren = [];\n };\n\n (tokens || []).forEach((t, index) => {\n const selectable = t.selected || (t.selectable && this.canSelectMore(selectedCount));\n const showCorrectAnswer = t.correct !== undefined && (t.selectable || t.selected);\n\n if (isNewParagraph(t.text)) {\n flushParagraph();\n return;\n }\n\n if (isLineBreak(t.text)) {\n currentChildren.push(<br key={`br-${index}`} />);\n return;\n }\n\n if (\n (selectable && !disabled) ||\n showCorrectAnswer ||\n t.selected ||\n t.isMissing ||\n (animationsDisabled && t.predefined) // print mode\n ) {\n currentChildren.push(\n <Token\n key={index}\n disabled={disabled}\n index={index}\n {...t}\n text={stripHtmlTags(t.text)}\n selectable={selectable}\n highlight={highlightChoices}\n animationsDisabled={animationsDisabled}\n />,\n );\n } else {\n // raw text node – React will escape as needed\n currentChildren.push(<React.Fragment key={index}>{stripHtmlTags(t.text)}</React.Fragment>);\n }\n });\n\n // flush last paragraph\n flushParagraph();\n\n return paragraphs;\n };\n\n render() {\n const { className: classNameProp } = this.props;\n const nodes = this.generateTokensNodes();\n\n return (\n <StyledTokenSelect className={classNameProp} onClick={this.toggleToken}>\n {nodes}\n </StyledTokenSelect>\n );\n }\n}\n\nexport default TokenSelect;\n"],"mappings":"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","ignoreList":[]}
|
package/lib/tokenizer/index.js
CHANGED
|
@@ -19,21 +19,17 @@ var _builder = require("./builder");
|
|
|
19
19
|
var _clone = _interopRequireDefault(require("lodash/clone"));
|
|
20
20
|
var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
|
|
21
21
|
var _differenceWith = _interopRequireDefault(require("lodash/differenceWith"));
|
|
22
|
-
var _classnames = _interopRequireDefault(require("classnames"));
|
|
23
22
|
var _styleUtils = require("@pie-lib/style-utils");
|
|
24
23
|
var _tokenText = _interopRequireDefault(require("./token-text"));
|
|
25
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)); }
|
|
26
25
|
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
27
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; }
|
|
28
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; }
|
|
29
|
-
var
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
whiteSpace: 'pre-wrap',
|
|
35
|
-
'&.noselect': _objectSpread({}, (0, _styleUtils.noSelect)())
|
|
36
|
-
};
|
|
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)()));
|
|
37
33
|
});
|
|
38
34
|
var Tokenizer = exports.Tokenizer = /*#__PURE__*/function (_React$Component) {
|
|
39
35
|
function Tokenizer(props) {
|
|
@@ -112,13 +108,9 @@ var Tokenizer = exports.Tokenizer = /*#__PURE__*/function (_React$Component) {
|
|
|
112
108
|
var _this2 = this;
|
|
113
109
|
var _this$props = this.props,
|
|
114
110
|
text = _this$props.text,
|
|
115
|
-
tokens = _this$props.tokens
|
|
116
|
-
className = _this$props.className;
|
|
111
|
+
tokens = _this$props.tokens;
|
|
117
112
|
var setCorrectMode = this.state.setCorrectMode;
|
|
118
|
-
|
|
119
|
-
return /*#__PURE__*/_react["default"].createElement(StyledTokenizer, {
|
|
120
|
-
className: className
|
|
121
|
-
}, /*#__PURE__*/_react["default"].createElement(_controls["default"], {
|
|
113
|
+
return /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement(_controls["default"], {
|
|
122
114
|
onClear: this.clear,
|
|
123
115
|
onWords: function onWords() {
|
|
124
116
|
return _this2.buildTokens('words', _builder.words);
|
|
@@ -132,7 +124,7 @@ var Tokenizer = exports.Tokenizer = /*#__PURE__*/function (_React$Component) {
|
|
|
132
124
|
setCorrectMode: setCorrectMode,
|
|
133
125
|
onToggleCorrectMode: this.toggleCorrectMode
|
|
134
126
|
}), /*#__PURE__*/_react["default"].createElement(StyledText, {
|
|
135
|
-
|
|
127
|
+
disabled: setCorrectMode,
|
|
136
128
|
as: _tokenText["default"],
|
|
137
129
|
text: text,
|
|
138
130
|
tokens: tokens,
|
|
@@ -150,7 +142,6 @@ var Tokenizer = exports.Tokenizer = /*#__PURE__*/function (_React$Component) {
|
|
|
150
142
|
start: _propTypes["default"].number,
|
|
151
143
|
end: _propTypes["default"].number
|
|
152
144
|
})),
|
|
153
|
-
className: _propTypes["default"].string,
|
|
154
145
|
onChange: _propTypes["default"].func.isRequired
|
|
155
146
|
});
|
|
156
147
|
(0, _defineProperty2["default"])(Tokenizer, "defaultProps", {});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_react","_interopRequireDefault","require","_propTypes","_controls","_styles","_builder","_clone","_isEqual","_differenceWith","_classnames","_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","StyledTokenizer","styled","StyledText","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","className","tokenClassName","classNames","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 classNames from 'classnames';\nimport { noSelect } from '@pie-lib/style-utils';\nimport TokenText from './token-text';\n\nconst StyledTokenizer = styled('div')(() => ({}));\n\nconst StyledText = styled('div')(() => ({\n whiteSpace: 'pre-wrap',\n '&.noselect': {\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 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, className } = this.props;\n const { setCorrectMode } = this.state;\n\n const tokenClassName = classNames('text', setCorrectMode && 'noselect');\n\n return (\n <StyledTokenizer className={className}>\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 className={tokenClassName}\n as={TokenText}\n text={text}\n tokens={tokens}\n onTokenClick={this.tokenClick}\n onSelectToken={this.selectToken}\n />\n </StyledTokenizer>\n );\n }\n}\n\nexport default Tokenizer;\n"],"mappings":"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","ignoreList":[]}
|
|
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":";;;;;;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,UAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,SAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,OAAA,GAAAH,OAAA;AACA,IAAAI,QAAA,GAAAJ,OAAA;AACA,IAAAK,MAAA,GAAAN,sBAAA,CAAAC,OAAA;AACA,IAAAM,QAAA,GAAAP,sBAAA,CAAAC,OAAA;AACA,IAAAO,eAAA,GAAAR,sBAAA,CAAAC,OAAA;AACA,IAAAQ,WAAA,GAAAR,OAAA;AACA,IAAAS,UAAA,GAAAV,sBAAA,CAAAC,OAAA;AAAqC,SAAAU,WAAAC,CAAA,EAAAC,CAAA,EAAAC,CAAA,WAAAD,CAAA,OAAAE,gBAAA,aAAAF,CAAA,OAAAG,2BAAA,aAAAJ,CAAA,EAAAK,yBAAA,KAAAC,OAAA,CAAAC,SAAA,CAAAN,CAAA,EAAAC,CAAA,YAAAC,gBAAA,aAAAH,CAAA,EAAAQ,WAAA,IAAAP,CAAA,CAAAQ,KAAA,CAAAT,CAAA,EAAAE,CAAA;AAAA,SAAAG,0BAAA,cAAAL,CAAA,IAAAU,OAAA,CAAAC,SAAA,CAAAC,OAAA,CAAAC,IAAA,CAAAP,OAAA,CAAAC,SAAA,CAAAG,OAAA,iCAAAV,CAAA,aAAAK,yBAAA,YAAAA,0BAAA,aAAAL,CAAA;AAAA,SAAAc,QAAAZ,CAAA,EAAAa,CAAA,QAAAf,CAAA,GAAAgB,MAAA,CAAAC,IAAA,CAAAf,CAAA,OAAAc,MAAA,CAAAE,qBAAA,QAAAjB,CAAA,GAAAe,MAAA,CAAAE,qBAAA,CAAAhB,CAAA,GAAAa,CAAA,KAAAd,CAAA,GAAAA,CAAA,CAAAkB,MAAA,WAAAJ,CAAA,WAAAC,MAAA,CAAAI,wBAAA,CAAAlB,CAAA,EAAAa,CAAA,EAAAM,UAAA,OAAArB,CAAA,CAAAsB,IAAA,CAAAb,KAAA,CAAAT,CAAA,EAAAC,CAAA,YAAAD,CAAA;AAAA,SAAAuB,cAAArB,CAAA,aAAAa,CAAA,MAAAA,CAAA,GAAAS,SAAA,CAAAC,MAAA,EAAAV,CAAA,UAAAf,CAAA,WAAAwB,SAAA,CAAAT,CAAA,IAAAS,SAAA,CAAAT,CAAA,QAAAA,CAAA,OAAAD,OAAA,CAAAE,MAAA,CAAAhB,CAAA,OAAA0B,OAAA,WAAAX,CAAA,QAAAY,gBAAA,aAAAzB,CAAA,EAAAa,CAAA,EAAAf,CAAA,CAAAe,CAAA,SAAAC,MAAA,CAAAY,yBAAA,GAAAZ,MAAA,CAAAa,gBAAA,CAAA3B,CAAA,EAAAc,MAAA,CAAAY,yBAAA,CAAA5B,CAAA,KAAAc,OAAA,CAAAE,MAAA,CAAAhB,CAAA,GAAA0B,OAAA,WAAAX,CAAA,IAAAC,MAAA,CAAAc,cAAA,CAAA5B,CAAA,EAAAa,CAAA,EAAAC,MAAA,CAAAI,wBAAA,CAAApB,CAAA,EAAAe,CAAA,iBAAAb,CAAA;AAErC,IAAM6B,UAAU,GAAG,IAAAC,cAAM,EAAC,KAAK,CAAC,CAAC,UAAAC,IAAA;EAAA,IAAGC,QAAQ,GAAAD,IAAA,CAARC,QAAQ;EAAA,OAAAX,aAAA;IAC1CY,UAAU,EAAE;EAAU,GAElBD,QAAQ,IAAAX,aAAA,KACP,IAAAa,oBAAQ,EAAC,CAAC,CACd;AAAA,CACD,CAAC;AAAC,IAESC,SAAS,GAAAC,OAAA,CAAAD,SAAA,0BAAAE,gBAAA;EAgBpB,SAAAF,UAAYG,KAAK,EAAE;IAAA,IAAAC,KAAA;IAAA,IAAAC,gBAAA,mBAAAL,SAAA;IACjBI,KAAA,GAAA1C,UAAA,OAAAsC,SAAA,GAAMG,KAAK;IAAE,IAAAb,gBAAA,aAAAc,KAAA,qBAOG,UAACE,KAAK,EAAEC,IAAI,EAAK;MACjCH,KAAA,CAAKD,KAAK,CAACK,QAAQ,CAACF,KAAK,EAAEC,IAAI,CAAC;MAEhCH,KAAA,CAAKK,QAAQ,CAAC;QACZF,IAAI,EAAJA;MACF,CAAC,CAAC;IACJ,CAAC;IAAA,IAAAjB,gBAAA,aAAAc,KAAA,uBAEmB;MAAA,OAAMA,KAAA,CAAKK,QAAQ,CAAC;QAAEC,cAAc,EAAE,CAACN,KAAA,CAAKO,KAAK,CAACD;MAAe,CAAC,CAAC;IAAA;IAAA,IAAApB,gBAAA,aAAAc,KAAA,WAE/E,YAAM;MACZA,KAAA,CAAKQ,eAAe,CAAC,EAAE,EAAE,EAAE,CAAC;IAC9B,CAAC;IAAA,IAAAtB,gBAAA,aAAAc,KAAA,iBAEa,UAACS,IAAI,EAAEC,EAAE,EAAK;MAC1B,IAAQC,IAAI,GAAKX,KAAA,CAAKD,KAAK,CAAnBY,IAAI;MACZ,IAAMC,MAAM,GAAGF,EAAE,CAACC,IAAI,CAAC;MAEvBX,KAAA,CAAKQ,eAAe,CAACI,MAAM,EAAEH,IAAI,CAAC;IACpC,CAAC;IAAA,IAAAvB,gBAAA,aAAAc,KAAA,iBAEa,UAACa,QAAQ,EAAEC,cAAc,EAAK;MAC1C,IAAQF,MAAM,GAAKZ,KAAA,CAAKD,KAAK,CAArBa,MAAM;MACd,IAAMG,MAAM,GAAG,IAAAC,0BAAc,EAAC,IAAAC,iBAAK,EAACL,MAAM,CAAC,EAAEE,cAAc,EAAEI,mBAAO,CAAC;MAErEH,MAAM,CAAClC,IAAI,CAACgC,QAAQ,CAAC;MACrBb,KAAA,CAAKQ,eAAe,CAACO,MAAM,EAAEf,KAAA,CAAKO,KAAK,CAACJ,IAAI,CAAC;IAC/C,CAAC;IAAA,IAAAjB,gBAAA,aAAAc,KAAA,gBAEY,UAACE,KAAK,EAAK;MACtB,IAAQI,cAAc,GAAKN,KAAA,CAAKO,KAAK,CAA7BD,cAAc;MAEtB,IAAIA,cAAc,EAAE;QAClBN,KAAA,CAAKmB,UAAU,CAACjB,KAAK,CAAC;MACxB,CAAC,MAAM;QACLF,KAAA,CAAKoB,WAAW,CAAClB,KAAK,CAAC;MACzB;IACF,CAAC;IAAA,IAAAhB,gBAAA,aAAAc,KAAA,gBAEY,UAACE,KAAK,EAAK;MACtB,IAAQU,MAAM,GAAKZ,KAAA,CAAKD,KAAK,CAArBa,MAAM;MAEd,OAAOA,MAAM,CAACS,SAAS,CAAC,UAAC9D,CAAC,EAAK;QAC7B,OAAOA,CAAC,CAACoD,IAAI,IAAIT,KAAK,CAACS,IAAI,IAAIpD,CAAC,CAAC+D,KAAK,IAAIpB,KAAK,CAACoB,KAAK,IAAI/D,CAAC,CAACgE,GAAG,IAAIrB,KAAK,CAACqB,GAAG;MAC7E,CAAC,CAAC;IACJ,CAAC;IAAA,IAAArC,gBAAA,aAAAc,KAAA,gBAEY,UAACE,KAAK,EAAK;MACtB,IAAQU,MAAM,GAAKZ,KAAA,CAAKD,KAAK,CAArBa,MAAM;MACd,IAAMY,KAAK,GAAGxB,KAAA,CAAKyB,UAAU,CAACvB,KAAK,CAAC;MACpC,IAAIsB,KAAK,KAAK,CAAC,CAAC,EAAE;QAChB,IAAMjE,CAAC,GAAGqD,MAAM,CAACY,KAAK,CAAC;QAEvBjE,CAAC,CAACmE,OAAO,GAAG,CAACnE,CAAC,CAACmE,OAAO;QAEtB,IAAMX,MAAM,GAAG,IAAAE,iBAAK,EAACL,MAAM,CAAC;QAE5BG,MAAM,CAACY,MAAM,CAACH,KAAK,EAAE,CAAC,EAAEjE,CAAC,CAAC;QAC1ByC,KAAA,CAAKQ,eAAe,CAACO,MAAM,EAAEf,KAAA,CAAKO,KAAK,CAACJ,IAAI,CAAC;MAC/C;IACF,CAAC;IAAA,IAAAjB,gBAAA,aAAAc,KAAA,iBAEa,UAACE,KAAK,EAAK;MACvB,IAAQU,MAAM,GAAKZ,KAAA,CAAKD,KAAK,CAArBa,MAAM;MAEd,IAAMY,KAAK,GAAGxB,KAAA,CAAKyB,UAAU,CAACvB,KAAK,CAAC;MACpC,IAAIsB,KAAK,KAAK,CAAC,CAAC,EAAE;QAChB,IAAMT,MAAM,GAAG,IAAAE,iBAAK,EAACL,MAAM,CAAC;QAE5BG,MAAM,CAACY,MAAM,CAACH,KAAK,EAAE,CAAC,CAAC;QAEvBxB,KAAA,CAAKQ,eAAe,CAACO,MAAM,EAAEf,KAAA,CAAKO,KAAK,CAACJ,IAAI,CAAC;MAC/C;IACF,CAAC;IA/ECH,KAAA,CAAKO,KAAK,GAAG;MACXD,cAAc,EAAE,KAAK;MACrBH,IAAI,EAAE;IACR,CAAC;IAAC,OAAAH,KAAA;EACJ;EAAC,IAAA4B,UAAA,aAAAhC,SAAA,EAAAE,gBAAA;EAAA,WAAA+B,aAAA,aAAAjC,SAAA;IAAAkC,GAAA;IAAAC,KAAA,EA6ED,SAAAC,MAAMA,CAAA,EAAG;MAAA,IAAAC,MAAA;MACP,IAAAC,WAAA,GAAyB,IAAI,CAACnC,KAAK;QAA3BY,IAAI,GAAAuB,WAAA,CAAJvB,IAAI;QAAEC,MAAM,GAAAsB,WAAA,CAANtB,MAAM;MACpB,IAAQN,cAAc,GAAK,IAAI,CAACC,KAAK,CAA7BD,cAAc;MAEtB,oBACE5D,MAAA,YAAAyF,aAAA,2BACEzF,MAAA,YAAAyF,aAAA,CAACrF,SAAA,WAAQ;QACPsF,OAAO,EAAE,IAAI,CAACC,KAAM;QACpBC,OAAO,EAAE,SAATA,OAAOA,CAAA;UAAA,OAAQL,MAAI,CAACM,WAAW,CAAC,OAAO,EAAEC,cAAK,CAAC;QAAA,CAAC;QAChDC,WAAW,EAAE,SAAbA,WAAWA,CAAA;UAAA,OAAQR,MAAI,CAACM,WAAW,CAAC,UAAU,EAAEG,kBAAS,CAAC;QAAA,CAAC;QAC3DC,YAAY,EAAE,SAAdA,YAAYA,CAAA;UAAA,OAAQV,MAAI,CAACM,WAAW,CAAC,YAAY,EAAEK,mBAAU,CAAC;QAAA,CAAC;QAC/DtC,cAAc,EAAEA,cAAe;QAC/BuC,mBAAmB,EAAE,IAAI,CAACC;MAAkB,CAC7C,CAAC,eACFpG,MAAA,YAAAyF,aAAA,CAAC7C,UAAU;QACTG,QAAQ,EAAEa,cAAe;QACzByC,EAAE,EAAEC,qBAAU;QACdrC,IAAI,EAAEA,IAAK;QACXC,MAAM,EAAEA,MAAO;QACfqC,YAAY,EAAE,IAAI,CAACC,UAAW;QAC9BC,aAAa,EAAE,IAAI,CAACC;MAAY,CACjC,CACE,CAAC;IAEV;EAAC;AAAA,EA3H4BC,iBAAK,CAACC,SAAS;AAAA,IAAApE,gBAAA,aAAjCU,SAAS,eACD;EACjBe,IAAI,EAAE4C,qBAAS,CAACC,MAAM,CAACC,UAAU;EACjC7C,MAAM,EAAE2C,qBAAS,CAACG,OAAO,CACvBH,qBAAS,CAACI,KAAK,CAAC;IACdhD,IAAI,EAAE4C,qBAAS,CAACC,MAAM;IACtB9B,OAAO,EAAE6B,qBAAS,CAACK,IAAI;IACvBtC,KAAK,EAAEiC,qBAAS,CAACM,MAAM;IACvBtC,GAAG,EAAEgC,qBAAS,CAACM;EACjB,CAAC,CACH,CAAC;EACDzD,QAAQ,EAAEmD,qBAAS,CAACO,IAAI,CAACL;AAC3B,CAAC;AAAA,IAAAvE,gBAAA,aAZUU,SAAS,kBAcE,CAAC,CAAC;AAAA,IAAAmE,QAAA,GAAAlE,OAAA,cAgHXD,SAAS","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"publishConfig": {
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
|
-
"version": "
|
|
6
|
+
"version": "2.0.0-next.0",
|
|
7
7
|
"description": "Some react components for text selection",
|
|
8
8
|
"keywords": [
|
|
9
9
|
"react",
|
|
@@ -22,19 +22,17 @@
|
|
|
22
22
|
"@mui/icons-material": "^7.3.4",
|
|
23
23
|
"@mui/material": "^7.3.4",
|
|
24
24
|
"@pie-framework/parse-english": "^1.0.0",
|
|
25
|
-
"@pie-lib/render-ui": "4.
|
|
26
|
-
"@pie-lib/style-utils": "0.
|
|
27
|
-
"@pie-lib/translator": "2.
|
|
25
|
+
"@pie-lib/render-ui": "4.35.3-next.15",
|
|
26
|
+
"@pie-lib/style-utils": "0.21.2-next.16",
|
|
27
|
+
"@pie-lib/translator": "2.23.2-next.16",
|
|
28
28
|
"classnames": "^2.2.6",
|
|
29
29
|
"debug": "^4.1.1",
|
|
30
|
-
"invariant": "^2.2.4",
|
|
31
30
|
"lodash": "^4.17.11",
|
|
32
|
-
"prop-types": "^15.6.2"
|
|
33
|
-
"unist-util-inspect": "^4.1.3"
|
|
31
|
+
"prop-types": "^15.6.2"
|
|
34
32
|
},
|
|
35
33
|
"devDependencies": {
|
|
36
34
|
"@pie-framework/parse-english": "^1.0.0",
|
|
37
|
-
"@pie-lib/test-utils": "0.
|
|
35
|
+
"@pie-lib/test-utils": "0.22.2-next.16",
|
|
38
36
|
"natural": "^0.6.3",
|
|
39
37
|
"react": "^18.2.0",
|
|
40
38
|
"react-dom": "^18.2.0"
|
|
@@ -42,6 +40,14 @@
|
|
|
42
40
|
"peerDependencies": {
|
|
43
41
|
"react": "^18.2.0"
|
|
44
42
|
},
|
|
45
|
-
"gitHead": "
|
|
46
|
-
"scripts": {}
|
|
43
|
+
"gitHead": "a6ae07ad459bbae1039b5a1a8b9c40e3c1f3af73",
|
|
44
|
+
"scripts": {},
|
|
45
|
+
"exports": {
|
|
46
|
+
".": {
|
|
47
|
+
"require": "./lib/index.js",
|
|
48
|
+
"import": "./src/index.js",
|
|
49
|
+
"default": "./lib/index.js"
|
|
50
|
+
},
|
|
51
|
+
"./esm": "./esm/index.js"
|
|
52
|
+
}
|
|
47
53
|
}
|
|
@@ -1,34 +1,44 @@
|
|
|
1
1
|
import TextSelect from '../text-select';
|
|
2
|
-
import { shallow } from 'enzyme';
|
|
3
2
|
import React from 'react';
|
|
4
|
-
import
|
|
3
|
+
import { render } from '@testing-library/react';
|
|
4
|
+
|
|
5
5
|
describe('text-select', () => {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
6
|
+
const defaultProps = {
|
|
7
|
+
text: 'foo',
|
|
8
|
+
tokens: [],
|
|
9
|
+
selectedTokens: [],
|
|
10
|
+
onChange: jest.fn(),
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
describe('rendering', () => {
|
|
14
|
+
it('renders with default props', () => {
|
|
15
|
+
const { container } = render(<TextSelect {...defaultProps} />);
|
|
16
|
+
expect(container.firstChild).toBeInTheDocument();
|
|
12
17
|
});
|
|
13
|
-
});
|
|
14
18
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
onChange = jest.fn();
|
|
19
|
-
w = shallow(<TextSelect text="foo" tokens={[]} selectedTokens={[]} onChange={onChange} />);
|
|
19
|
+
it('renders with maxNoOfSelections', () => {
|
|
20
|
+
const { container } = render(<TextSelect {...defaultProps} maxNoOfSelections={4} />);
|
|
21
|
+
expect(container.firstChild).toBeInTheDocument();
|
|
20
22
|
});
|
|
21
23
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
24
|
+
it('renders with tokens', () => {
|
|
25
|
+
const tokens = [
|
|
26
|
+
{ start: 0, end: 1, text: 'f' },
|
|
27
|
+
{ start: 1, end: 2, text: 'o' },
|
|
28
|
+
];
|
|
29
|
+
const { container } = render(<TextSelect {...defaultProps} tokens={tokens} />);
|
|
30
|
+
expect(container.firstChild).toBeInTheDocument();
|
|
31
|
+
});
|
|
28
32
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
});
|
|
33
|
+
it('renders with selectedTokens', () => {
|
|
34
|
+
const selectedTokens = [{ start: 0, end: 1, text: 'f' }];
|
|
35
|
+
const { container } = render(<TextSelect {...defaultProps} selectedTokens={selectedTokens} />);
|
|
36
|
+
expect(container.firstChild).toBeInTheDocument();
|
|
32
37
|
});
|
|
33
38
|
});
|
|
39
|
+
|
|
40
|
+
// Note: Tests for internal method (change) are implementation details and cannot
|
|
41
|
+
// be directly tested with RTL. The original test used wrapper.instance().change()
|
|
42
|
+
// to test internal logic, which tests implementation rather than user-facing behavior.
|
|
43
|
+
// Token selection behavior should be tested through integration/e2e tests.
|
|
34
44
|
});
|