@pie-lib/text-select 1.44.0-mui-update.0 → 1.46.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 CHANGED
@@ -3,6 +3,25 @@
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
+ # [1.46.0-mui-update.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/text-select@1.45.0-mui-update.0...@pie-lib/text-select@1.46.0-mui-update.0) (2025-12-29)
7
+
8
+ **Note:** Version bump only for package @pie-lib/text-select
9
+
10
+
11
+
12
+
13
+
14
+ # [1.45.0-mui-update.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/text-select@1.44.0-mui-update.0...@pie-lib/text-select@1.45.0-mui-update.0) (2025-12-29)
15
+
16
+
17
+ ### Bug Fixes
18
+
19
+ * **text-select:** remove html tags from rendering ([71201bc](https://github.com/pie-framework/pie-lib/commit/71201bce2535668769047ea3db8405c6b49fe615))
20
+
21
+
22
+
23
+
24
+
6
25
  # [1.44.0-mui-update.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/text-select@1.43.0-mui-update.0...@pie-lib/text-select@1.44.0-mui-update.0) (2025-12-17)
7
26
 
8
27
  **Note:** Version bump only for package @pie-lib/text-select
@@ -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":[]}
@@ -19,7 +19,6 @@ 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)); }
@@ -115,7 +114,6 @@ var Tokenizer = exports.Tokenizer = /*#__PURE__*/function (_React$Component) {
115
114
  tokens = _this$props.tokens,
116
115
  className = _this$props.className;
117
116
  var setCorrectMode = this.state.setCorrectMode;
118
- var tokenClassName = (0, _classnames["default"])('text', setCorrectMode && 'noselect');
119
117
  return /*#__PURE__*/_react["default"].createElement(StyledTokenizer, {
120
118
  className: className
121
119
  }, /*#__PURE__*/_react["default"].createElement(_controls["default"], {
@@ -132,7 +130,7 @@ var Tokenizer = exports.Tokenizer = /*#__PURE__*/function (_React$Component) {
132
130
  setCorrectMode: setCorrectMode,
133
131
  onToggleCorrectMode: this.toggleCorrectMode
134
132
  }), /*#__PURE__*/_react["default"].createElement(StyledText, {
135
- className: tokenClassName,
133
+ className: setCorrectMode ? 'noselect' : '',
136
134
  as: _tokenText["default"],
137
135
  text: text,
138
136
  tokens: tokens,
@@ -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","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","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 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 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={setCorrectMode ? 'noselect' : ''}\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":[]}
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "1.44.0-mui-update.0",
6
+ "version": "1.46.0-mui-update.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.47.0-mui-update.0",
26
- "@pie-lib/style-utils": "0.33.0-mui-update.0",
27
- "@pie-lib/translator": "2.36.0-mui-update.0",
25
+ "@pie-lib/render-ui": "4.49.0-mui-update.0",
26
+ "@pie-lib/style-utils": "0.35.0-mui-update.0",
27
+ "@pie-lib/translator": "2.38.0-mui-update.0",
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.34.0-mui-update.0",
35
+ "@pie-lib/test-utils": "0.36.0-mui-update.0",
38
36
  "natural": "^0.6.3",
39
37
  "react": "^18.2.0",
40
38
  "react-dom": "^18.2.0"
@@ -42,6 +40,6 @@
42
40
  "peerDependencies": {
43
41
  "react": "^18.2.0"
44
42
  },
45
- "gitHead": "ba9b27bd2b3ece25d9f66f5ce4a51e4a280f930b",
43
+ "gitHead": "1e3f5fd7812b0a334d3b2719026a01c3102398c9",
46
44
  "scripts": {}
47
45
  }
@@ -19,6 +19,15 @@ const StyledTokenSelect = styled('div')(() => ({
19
19
  },
20
20
  }));
21
21
 
22
+ // strip HTML tags for plain text rendering
23
+ const stripHtmlTags = (text) => {
24
+ if (!text) {
25
+ return text;
26
+ }
27
+
28
+ return text.replace(/<[^>]+>/g, '');
29
+ };
30
+
22
31
  export class TokenSelect extends React.Component {
23
32
  static propTypes = {
24
33
  tokens: PropTypes.arrayOf(PropTypes.shape(TokenTypes)).isRequired,
@@ -129,14 +138,15 @@ export class TokenSelect extends React.Component {
129
138
  disabled={disabled}
130
139
  index={index}
131
140
  {...t}
141
+ text={stripHtmlTags(t.text)}
132
142
  selectable={selectable}
133
143
  highlight={highlightChoices}
134
144
  animationsDisabled={animationsDisabled}
135
- />
145
+ />,
136
146
  );
137
147
  } else {
138
148
  // raw text node – React will escape as needed
139
- currentChildren.push(<React.Fragment key={index}>{t.text}</React.Fragment>);
149
+ currentChildren.push(<React.Fragment key={index}>{stripHtmlTags(t.text)}</React.Fragment>);
140
150
  }
141
151
  });
142
152
 
@@ -158,4 +168,4 @@ export class TokenSelect extends React.Component {
158
168
  }
159
169
  }
160
170
 
161
- export default TokenSelect;
171
+ export default TokenSelect;
@@ -6,7 +6,6 @@ import { words, sentences, paragraphs } from './builder';
6
6
  import clone from 'lodash/clone';
7
7
  import isEqual from 'lodash/isEqual';
8
8
  import differenceWith from 'lodash/differenceWith';
9
- import classNames from 'classnames';
10
9
  import { noSelect } from '@pie-lib/style-utils';
11
10
  import TokenText from './token-text';
12
11
 
@@ -123,8 +122,6 @@ export class Tokenizer extends React.Component {
123
122
  const { text, tokens, className } = this.props;
124
123
  const { setCorrectMode } = this.state;
125
124
 
126
- const tokenClassName = classNames('text', setCorrectMode && 'noselect');
127
-
128
125
  return (
129
126
  <StyledTokenizer className={className}>
130
127
  <Controls
@@ -136,7 +133,7 @@ export class Tokenizer extends React.Component {
136
133
  onToggleCorrectMode={this.toggleCorrectMode}
137
134
  />
138
135
  <StyledText
139
- className={tokenClassName}
136
+ className={setCorrectMode ? 'noselect' : ''}
140
137
  as={TokenText}
141
138
  text={text}
142
139
  tokens={tokens}