@pie-lib/text-select 1.29.0 → 1.29.1
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/esm/index.js +1307 -0
- package/esm/index.js.map +1 -0
- package/lib/token-select/index.js +10 -2
- package/lib/token-select/index.js.map +1 -1
- package/package.json +12 -5
- package/src/token-select/index.jsx +3 -0
package/esm/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/tokenizer/controls.jsx","../src/tokenizer/builder.js","../src/tokenizer/selection-utils.js","../src/tokenizer/token-text.jsx","../src/tokenizer/index.jsx","../src/token-select/token.jsx","../src/token-select/index.jsx","../src/text-select.jsx","../src/legend.js","../src/utils.js"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport Button from '@material-ui/core/Button';\nimport { withStyles } from '@material-ui/core/styles';\nimport Switch from '@material-ui/core/Switch';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport { color } from '@pie-lib/render-ui';\nimport classNames from 'classnames';\n\nexport class Controls extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n onClear: PropTypes.func.isRequired,\n onWords: PropTypes.func.isRequired,\n onSentences: PropTypes.func.isRequired,\n onParagraphs: PropTypes.func.isRequired,\n setCorrectMode: PropTypes.bool.isRequired,\n onToggleCorrectMode: PropTypes.func.isRequired,\n };\n\n static defaultProps = {};\n\n render() {\n const { classes, onClear, onWords, onSentences, onParagraphs, setCorrectMode, onToggleCorrectMode } = this.props;\n\n return (\n <div className={classes.controls}>\n <div>\n <Button onClick={onWords} className={classes.button} size=\"small\" color=\"primary\" disabled={setCorrectMode}>\n Words\n </Button>\n <Button\n onClick={onSentences}\n className={classes.button}\n size=\"small\"\n color=\"primary\"\n disabled={setCorrectMode}\n >\n Sentences\n </Button>\n <Button\n onClick={onParagraphs}\n className={classes.button}\n size=\"small\"\n color=\"primary\"\n disabled={setCorrectMode}\n >\n Paragraphs\n </Button>\n <Button className={classes.button} size=\"small\" color=\"secondary\" onClick={onClear} disabled={setCorrectMode}>\n Clear\n </Button>\n </div>\n <FormControlLabel\n control={\n <Switch\n classes={{\n checked: classes.checkedThumb,\n bar: classNames({\n [classes.checkedBar]: setCorrectMode,\n }),\n }}\n checked={setCorrectMode}\n onChange={onToggleCorrectMode}\n />\n }\n label=\"Set correct answers\"\n />\n </div>\n );\n }\n}\nexport default withStyles((theme) => ({\n button: {\n marginRight: theme.spacing.unit,\n },\n controls: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n },\n checkedThumb: {\n color: `${color.tertiary()} !important`,\n },\n checkedBar: {\n backgroundColor: `${color.tertiaryLight()} !important`,\n },\n}))(Controls);\n","import compact from 'lodash/compact';\nimport English from '@pie-framework/parse-english';\nimport clone from 'lodash/clone';\n\nconst g = (str, node) => {\n if (node.children) {\n return node.children.reduce(g, str);\n } else if (node.value) {\n return str + node.value;\n } else {\n return str;\n }\n};\n\nconst getParagraph = (p) => g('', p);\n\nconst getSentence = (s) => g('', s);\n\nconst getWord = (w) => g('', w);\n\nexport const paragraphs = (text) => {\n const tree = new English().parse(text);\n\n const out = tree.children.reduce((acc, child) => {\n if (child.type === 'ParagraphNode') {\n const paragraph = {\n text: getParagraph(child),\n start: child.position.start.offset,\n end: child.position.end.offset,\n };\n\n return acc.concat([paragraph]);\n } else {\n return acc;\n }\n }, []);\n\n return out;\n};\n\nexport const handleSentence = (child, acc) => {\n const sentenceChilds = [];\n // we parse the children of the sentence\n let newAcc = child.children.reduce(function(acc, child) {\n // if we find a whitespace node that's \\n, we end the sentence\n if (child.type === 'WhiteSpaceNode' && child.value === '\\n') {\n if (sentenceChilds.length) {\n const firstWord = sentenceChilds[0];\n // we create a sentence starting from the first word until the new line\n const sentence = {\n text: sentenceChilds.map((d) => getSentence(d)).join(''),\n start: firstWord.position.start.offset,\n end: child.position.start.offset,\n };\n\n // we remove all the elements from the array\n sentenceChilds.splice(0, sentenceChilds.length);\n return acc.concat([sentence]);\n }\n } else {\n // otherwise we add it to the array that contains the child forming a sentence\n sentenceChilds.push(child);\n }\n\n return acc;\n }, acc);\n\n // we treat the case when no \\n character is found at the end\n // so we create a sentence from the last words or white spaces found\n if (sentenceChilds.length) {\n const firstWord = sentenceChilds[0];\n const lastWord = sentenceChilds[sentenceChilds.length - 1];\n const sentence = {\n text: sentenceChilds.map((d) => getSentence(d)).join(''),\n start: firstWord.position.start.offset,\n end: lastWord.position.end.offset,\n };\n\n newAcc = newAcc.concat([sentence]);\n\n sentenceChilds.splice(0, sentenceChilds.length);\n }\n\n return newAcc;\n};\n\nexport const sentences = (text) => {\n const tree = new English().parse(text);\n\n const out = tree.children.reduce((acc, child) => {\n if (child.type === 'ParagraphNode') {\n return child.children.reduce((acc, child) => {\n if (child.type === 'SentenceNode') {\n const newAcc = handleSentence(child, acc);\n\n return newAcc || acc;\n } else {\n return acc;\n }\n }, acc);\n } else {\n return acc;\n }\n }, []);\n\n return out;\n};\nexport const words = (text) => {\n const tree = new English().parse(text);\n\n const out = tree.children.reduce((acc, child) => {\n if (child.type === 'ParagraphNode') {\n return child.children.reduce((acc, child) => {\n if (child.type === 'SentenceNode') {\n return child.children.reduce((acc, child) => {\n if (child.type === 'WordNode') {\n const node = {\n text: getWord(child),\n start: child.position.start.offset,\n end: child.position.end.offset,\n };\n return acc.concat([node]);\n } else {\n return acc;\n }\n }, acc);\n } else {\n return acc;\n }\n }, acc);\n } else {\n return acc;\n }\n }, []);\n\n return out;\n};\n\nclass Intersection {\n constructor(results) {\n this.results = results;\n }\n\n get hasOverlap() {\n return this.results.filter((r) => r.type === 'overlap').length > 0;\n }\n\n get surroundedTokens() {\n return this.results.filter((r) => r.type === 'within-selection').map((t) => t.token);\n }\n}\n/**\n * get intersection info for the selection in relation to tokens.\n * @param {{start: number, end: number}} selection\n * @param {{start: number, end: number}[]} tokens\n * @return {tokens: [], type: 'overlap|no-overlap|contains'}\n */\nexport const intersection = (selection, tokens) => {\n const { start, end } = selection;\n\n const startsWithin = (t) => start >= t.start && start < t.end;\n const endsWithin = (t) => end > t.start && end <= t.end;\n\n const mapped = tokens.map((t) => {\n if (start === t.start && end === t.end) {\n return { token: t, type: 'exact-fit' };\n } else if (start <= t.start && end >= t.end) {\n return { token: t, type: 'within-selection' };\n } else if (startsWithin(t) || endsWithin(t)) {\n return { token: t, type: 'overlap' };\n }\n });\n return new Intersection(compact(mapped));\n};\n\nexport const sort = (tokens) => {\n if (!Array.isArray(tokens)) {\n return tokens;\n } else {\n const out = clone(tokens);\n out.sort((a, b) => {\n const s = a.start < b.start ? -1 : a.start > b.start ? 1 : 0;\n const e = a.end < b.end ? -1 : a.end > b.end ? 1 : 0;\n if (s === -1 && e !== -1) {\n throw new Error(`sort does not support intersecting tokens. a: ${a.start}-${a.end}, b: ${b.start}-${b.end}`);\n }\n return s;\n });\n return out;\n }\n};\n\nexport const normalize = (textToNormalize, tokens) => {\n // making sure text provided is a string\n const text = textToNormalize || '';\n\n if (!Array.isArray(tokens) || tokens.length === 0) {\n return [\n {\n text,\n start: 0,\n end: text.length,\n },\n ];\n }\n\n const out = sort(tokens).reduce(\n (acc, t, index, outer) => {\n let tokens = [];\n const lastIndex = acc.lastIndex;\n\n if (t.start === lastIndex) {\n tokens = [\n {\n text: text.substring(lastIndex, t.end),\n start: lastIndex,\n end: t.end,\n predefined: true,\n correct: t.correct,\n isMissing: t.isMissing,\n },\n ];\n } else if (lastIndex < t.start) {\n tokens = [\n {\n text: text.substring(lastIndex, t.start),\n start: lastIndex,\n end: t.start,\n },\n {\n text: text.substring(t.start, t.end),\n start: t.start,\n end: t.end,\n predefined: true,\n correct: t.correct,\n isMissing: t.isMissing,\n },\n ];\n }\n\n if (index === outer.length - 1 && t.end < text.length) {\n const last = {\n text: text.substring(t.end),\n start: t.end,\n end: text.length,\n };\n tokens.push(last);\n }\n\n return {\n lastIndex: tokens.length ? tokens[tokens.length - 1].end : lastIndex,\n result: acc.result.concat(tokens),\n };\n },\n { result: [], lastIndex: 0 },\n );\n\n return out.result;\n};\n","export const clearSelection = () => {\n if (document.getSelection) {\n // for all new browsers (IE9+, Chrome, Firefox)\n document.getSelection().removeAllRanges();\n document.getSelection().addRange(document.createRange());\n } else if (window.getSelection) {\n // equals with the document.getSelection (MSDN info)\n if (window.getSelection().removeAllRanges) {\n // for all new browsers (IE9+, Chrome, Firefox)\n window.getSelection().removeAllRanges();\n window.getSelection().addRange(document.createRange());\n } else if (window.getSelection().empty) {\n // Chrome supports this as well\n window.getSelection().empty();\n }\n } else if (document.selection) {\n // IE8-\n document.selection.empty();\n }\n};\n\nexport const getCaretCharacterOffsetWithin = (element) => {\n var caretOffset = 0;\n var doc = element.ownerDocument || element.document;\n var win = doc.defaultView || doc.parentWindow;\n var sel;\n if (typeof win.getSelection !== 'undefined') {\n sel = win.getSelection();\n if (sel.rangeCount > 0) {\n var range = win.getSelection().getRangeAt(0);\n var selected = range.toString().length;\n var preCaretRange = range.cloneRange();\n preCaretRange.selectNodeContents(element);\n preCaretRange.setEnd(range.endContainer, range.endOffset);\n if (selected) {\n caretOffset = preCaretRange.toString().length - selected;\n } else {\n caretOffset = preCaretRange.toString().length;\n }\n }\n } else if ((sel = doc.selection) && sel.type !== 'Control') {\n var textRange = sel.createRange();\n var preCaretTextRange = doc.body.createTextRange();\n preCaretTextRange.moveToElementText(element);\n preCaretTextRange.setEndPoint('EndToEnd', textRange);\n caretOffset = preCaretTextRange.text.length;\n }\n return caretOffset;\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport { normalize, intersection } from './builder';\nimport yellow from '@material-ui/core/colors/yellow';\nimport green from '@material-ui/core/colors/green';\nimport debug from 'debug';\nimport classNames from 'classnames';\n\nimport { clearSelection, getCaretCharacterOffsetWithin } from './selection-utils';\n\nconst log = debug('@pie-lib:text-select:token-text');\n\nexport const Text = withStyles(() => ({\n predefined: {\n cursor: 'pointer',\n backgroundColor: yellow[100],\n border: `dashed 0px ${yellow[700]}`,\n // we need this for nested tokenized elements like paragraphs, where p is inside span\n '& *': {\n cursor: 'pointer',\n backgroundColor: yellow[100],\n border: `dashed 0px ${yellow[700]}`,\n },\n },\n correct: {\n backgroundColor: green[500],\n '& *': {\n backgroundColor: green[500],\n },\n },\n}))(({ text, predefined, classes, onClick, correct }) => {\n const formattedText = (text || '').replace(/\\n/g, '<br>');\n\n if (predefined) {\n const className = classNames(classes.predefined, correct && classes.correct);\n\n return <span onClick={onClick} className={className} dangerouslySetInnerHTML={{ __html: formattedText }} />;\n } else {\n return <span dangerouslySetInnerHTML={{ __html: formattedText }} />;\n }\n});\n\nconst notAllowedCharacters = ['\\n', ' ', '\\t'];\n\nexport default class TokenText extends React.Component {\n static propTypes = {\n text: PropTypes.string.isRequired,\n tokens: PropTypes.array.isRequired,\n onTokenClick: PropTypes.func.isRequired,\n onSelectToken: PropTypes.func.isRequired,\n className: PropTypes.string,\n };\n\n /*\n Change this to onClick instead of mouseUp because previously, in some cases\n the onClick event from the <Text /> component was called right after the user\n selected token and that token was then removed because the setCorrectMode was not true.\n\n const { setCorrectMode } = this.state;\n\n if (setCorrectMode) {\n this.setCorrect(token);\n } else {\n this.removeToken(token);\n }\n */\n onClick = (event) => {\n const { onSelectToken, text, tokens } = this.props;\n\n event.preventDefault();\n\n if (typeof window === 'undefined') {\n return;\n }\n\n const selection = window.getSelection();\n const textSelected = selection.toString();\n\n if (textSelected.length > 0 && notAllowedCharacters.indexOf(textSelected) < 0) {\n if (this.root) {\n let offset = getCaretCharacterOffsetWithin(this.root);\n /*\n Since we implemented new line functionality (\\n) using <br /> dom elements\n and window.getSelection is not taking that into consideration, the offset might\n be off by a few characters.\n\n To combat that, we check if the selected text is right at the beginning of the offset.\n\n If it's not, we add the additional offset in order for that to be accurate\n */\n const newLineOffset = text.slice(offset).indexOf(textSelected);\n\n offset += newLineOffset;\n\n if (offset !== undefined) {\n const endIndex = offset + textSelected.length;\n\n if (endIndex <= text.length) {\n const i = intersection({ start: offset, end: endIndex }, tokens);\n if (i.hasOverlap) {\n log('hasOverlap - do nothing');\n clearSelection();\n } else {\n const tokensToRemove = i.surroundedTokens;\n const token = {\n text: textSelected,\n start: offset,\n end: endIndex,\n };\n\n onSelectToken(token, tokensToRemove);\n clearSelection();\n }\n }\n }\n }\n }\n };\n\n render() {\n const { text, tokens, className, onTokenClick } = this.props;\n const normalized = normalize(text, tokens);\n\n return (\n <div className={className} ref={(r) => (this.root = r)} onClick={this.onClick}>\n {normalized.map((t, index) => {\n return <Text key={index} {...t} onClick={() => onTokenClick(t)} />;\n })}\n </div>\n );\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Controls from './controls';\nimport { withStyles } from '@material-ui/core/styles';\nimport { words, sentences, paragraphs } from './builder';\nimport clone from 'lodash/clone';\nimport isEqual from 'lodash/isEqual';\nimport differenceWith from 'lodash/differenceWith';\nimport classNames from 'classnames';\nimport { noSelect } from '@pie-lib/style-utils';\nimport TokenText from './token-text';\n\nexport class Tokenizer extends React.Component {\n static propTypes = {\n text: PropTypes.string.isRequired,\n tokens: PropTypes.arrayOf(\n PropTypes.shape({\n text: PropTypes.string,\n correct: PropTypes.bool,\n start: PropTypes.number,\n end: PropTypes.number,\n }),\n ),\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n onChange: PropTypes.func.isRequired,\n };\n\n static defaultProps = {};\n\n constructor(props) {\n super(props);\n this.state = {\n setCorrectMode: false,\n mode: '',\n };\n }\n\n onChangeHandler = (token, mode) => {\n this.props.onChange(token, mode);\n\n this.setState({\n mode,\n });\n };\n\n toggleCorrectMode = () => this.setState({ setCorrectMode: !this.state.setCorrectMode });\n\n clear = () => {\n this.onChangeHandler([], '');\n };\n\n buildTokens = (type, fn) => {\n const { text } = this.props;\n const tokens = fn(text);\n\n this.onChangeHandler(tokens, type);\n };\n\n selectToken = (newToken, tokensToRemove) => {\n const { tokens } = this.props;\n const update = differenceWith(clone(tokens), tokensToRemove, isEqual);\n\n update.push(newToken);\n this.onChangeHandler(update, this.state.mode);\n };\n\n tokenClick = (token) => {\n const { setCorrectMode } = this.state;\n\n if (setCorrectMode) {\n this.setCorrect(token);\n } else {\n this.removeToken(token);\n }\n };\n\n tokenIndex = (token) => {\n const { tokens } = this.props;\n\n return tokens.findIndex((t) => {\n return t.text == token.text && t.start == token.start && t.end == token.end;\n });\n };\n\n setCorrect = (token) => {\n const { tokens } = this.props;\n const index = this.tokenIndex(token);\n if (index !== -1) {\n const t = tokens[index];\n\n t.correct = !t.correct;\n\n const update = clone(tokens);\n\n update.splice(index, 1, t);\n this.onChangeHandler(update, this.state.mode);\n }\n };\n\n removeToken = (token) => {\n const { tokens } = this.props;\n\n const index = this.tokenIndex(token);\n if (index !== -1) {\n const update = clone(tokens);\n\n update.splice(index, 1);\n\n this.onChangeHandler(update, this.state.mode);\n }\n };\n\n render() {\n const { text, tokens, classes, className } = this.props;\n const { setCorrectMode } = this.state;\n\n const tokenClassName = classNames(classes.text, setCorrectMode && classes.noselect);\n\n const rootName = classNames(classes.tokenizer, className);\n\n return (\n <div className={rootName}>\n <Controls\n onClear={this.clear}\n onWords={() => this.buildTokens('words', words)}\n onSentences={() => this.buildTokens('sentence', sentences)}\n onParagraphs={() => this.buildTokens('paragraphs', paragraphs)}\n setCorrectMode={setCorrectMode}\n onToggleCorrectMode={this.toggleCorrectMode}\n />\n <TokenText\n className={tokenClassName}\n text={text}\n tokens={tokens}\n onTokenClick={this.tokenClick}\n onSelectToken={this.selectToken}\n />\n </div>\n );\n }\n}\n\nexport default withStyles(() => ({\n text: {\n whiteSpace: 'pre-wrap',\n },\n noselect: { ...noSelect() },\n}))(Tokenizer);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport Check from '@material-ui/icons/Check';\nimport Close from '@material-ui/icons/Close';\n\nimport { color } from '@pie-lib/render-ui';\n\n// we need to use a larger line height for the token to be more readable\nconst LINE_HEIGHT_MULTIPLIER = 3.2;\n// we need a bit more space for correctness indicators\nconst CORRECTNESS_LINE_HEIGHT_MULTIPLIER = 3.4;\nconst CORRECTNESS_PADDING = 2;\n\nconst Wrapper = ({ useWrapper, children, classNameContainer, iconClass, Icon }) =>\n useWrapper ? (\n <span className={classNameContainer}>\n {children}\n <Icon className={iconClass} />\n </span>\n ) : (\n children\n );\n\nWrapper.propTypes = {\n useWrapper: PropTypes.bool,\n classNameContainer: PropTypes.string,\n iconClass: PropTypes.string,\n Icon: PropTypes.func,\n children: PropTypes.element,\n};\n\nexport const TokenTypes = {\n text: PropTypes.string,\n selectable: PropTypes.bool,\n};\n\nexport class Token extends React.Component {\n static rootClassName = 'tokenRootClass';\n\n static propTypes = {\n ...TokenTypes,\n classes: PropTypes.object.isRequired,\n text: PropTypes.string.isRequired,\n className: PropTypes.string,\n disabled: PropTypes.bool,\n highlight: PropTypes.bool,\n correct: PropTypes.bool,\n };\n\n static defaultProps = {\n selectable: false,\n text: '',\n };\n\n getClassAndIconConfig = () => {\n const {\n selectable,\n selected,\n classes,\n className: classNameProp,\n disabled,\n highlight,\n correct,\n animationsDisabled,\n isMissing,\n } = this.props;\n const isTouchEnabled = 'ontouchstart' in window || navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0;\n const baseClassName = Token.rootClassName;\n let classNameContainer;\n let Icon;\n let iconClass;\n\n if (correct === undefined && selected && disabled) {\n return {\n className: classNames(classes.token, classes.selected, classes.disabledBlack),\n };\n }\n\n if (correct !== undefined) {\n const isCorrect = correct === true;\n return {\n className: classNames(baseClassName, classes.custom),\n classNameContainer: classNames(isCorrect ? classes.correct : classes.incorrect, classes.commonTokenStyle),\n Icon: isCorrect ? Check : Close,\n iconClass: classNames(\n classes.correctnessIndicatorIcon,\n isCorrect ? classes.correctIcon : classes.incorrectIcon,\n ),\n };\n }\n\n if (isMissing) {\n return {\n className: classNames(baseClassName, classes.custom, classes.missing, classes.commonTokenStyle),\n classNameContainer: classes.commonTokenStyle,\n Icon: Close,\n iconClass: classNames(classes.correctnessIndicatorIcon, classes.incorrectIcon),\n };\n }\n\n return {\n className: classNames(\n baseClassName,\n classes.token,\n disabled && classes.disabled,\n selectable && !disabled && !isTouchEnabled && classes.selectable,\n selected && !disabled && classes.selected,\n selected && disabled && classes.disabledAndSelected,\n highlight && selectable && !disabled && !selected && classes.highlight,\n animationsDisabled && classes.print,\n classNameProp,\n ),\n classNameContainer,\n Icon,\n iconClass,\n };\n };\n\n render() {\n const { text, index, correct, isMissing } = this.props;\n const { className, classNameContainer, Icon, iconClass } = this.getClassAndIconConfig();\n\n return (\n <Wrapper\n useWrapper={correct !== undefined || isMissing}\n classNameContainer={classNameContainer}\n iconClass={iconClass}\n Icon={Icon}\n >\n <span\n className={className}\n dangerouslySetInnerHTML={{ __html: (text || '').replace(/\\n/g, '<br>') }}\n data-indexkey={index}\n />\n </Wrapper>\n );\n }\n}\n\nexport default withStyles((theme) => {\n return {\n token: {\n cursor: 'pointer',\n textIndent: 0,\n },\n disabled: {\n cursor: 'inherit',\n color: color.disabled(),\n },\n disabledBlack: {\n cursor: 'inherit',\n },\n disabledAndSelected: {\n backgroundColor: color.blueGrey100(),\n },\n selectable: {\n [theme.breakpoints.up(769)]: {\n '&:hover': {\n backgroundColor: color.blueGrey300(),\n color: theme.palette.common.black,\n '& > *': {\n backgroundColor: color.blueGrey300(),\n },\n },\n },\n },\n selected: {\n backgroundColor: color.blueGrey100(),\n color: theme.palette.common.black,\n lineHeight: `${theme.spacing.unit * LINE_HEIGHT_MULTIPLIER}px`,\n border: `solid 2px ${color.blueGrey900()}`,\n borderRadius: '4px',\n '& > *': {\n backgroundColor: color.blueGrey100(),\n },\n },\n highlight: {\n border: `dashed 2px ${color.blueGrey600()}`,\n borderRadius: '4px',\n lineHeight: `${theme.spacing.unit * LINE_HEIGHT_MULTIPLIER}px`,\n },\n print: {\n border: `dashed 2px ${color.blueGrey600()}`,\n borderRadius: '4px',\n lineHeight: `${theme.spacing.unit * LINE_HEIGHT_MULTIPLIER}px`,\n color: color.text(),\n },\n custom: {\n display: 'initial',\n },\n commonTokenStyle: {\n position: 'relative',\n borderRadius: '4px',\n color: theme.palette.common.black,\n lineHeight: `${theme.spacing.unit * CORRECTNESS_LINE_HEIGHT_MULTIPLIER + CORRECTNESS_PADDING}px`,\n padding: `${CORRECTNESS_PADDING}px`,\n },\n correct: {\n border: `${color.correctTertiary()} solid 2px`,\n },\n incorrect: {\n border: `${color.incorrectWithIcon()} solid 2px`,\n },\n missing: {\n border: `${color.incorrectWithIcon()} dashed 2px`,\n },\n incorrectIcon: {\n backgroundColor: color.incorrectWithIcon(),\n },\n correctIcon: {\n backgroundColor: color.correctTertiary(),\n },\n correctnessIndicatorIcon: {\n color: color.white(),\n position: 'absolute',\n top: '-8px',\n left: '-8px',\n borderRadius: '50%',\n fontSize: '12px',\n padding: '2px',\n },\n };\n})(Token);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Token, { TokenTypes } from './token';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport clone from 'lodash/clone';\nimport debug from 'debug';\nimport { noSelect } from '@pie-lib/style-utils';\nimport { renderToString } from 'react-dom/server';\nimport isEqual from 'lodash/isEqual';\n\nconst log = debug('@pie-lib:text-select:token-select');\n\nexport class TokenSelect extends React.Component {\n static propTypes = {\n tokens: PropTypes.arrayOf(PropTypes.shape(TokenTypes)).isRequired,\n className: PropTypes.string,\n classes: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n disabled: PropTypes.bool,\n highlightChoices: PropTypes.bool,\n animationsDisabled: PropTypes.bool,\n maxNoOfSelections: PropTypes.number,\n };\n\n static defaultProps = {\n highlightChoices: false,\n maxNoOfSelections: 0,\n tokens: [],\n };\n\n selectedCount = () => this.props.tokens.filter((t) => t.selected).length;\n\n canSelectMore = (selectedCount) => {\n const { maxNoOfSelections } = this.props;\n\n if (maxNoOfSelections === 1) {\n return true;\n }\n\n log('[canSelectMore] maxNoOfSelections: ', maxNoOfSelections, 'selectedCount: ', selectedCount);\n return maxNoOfSelections <= 0 || (isFinite(maxNoOfSelections) && selectedCount < maxNoOfSelections);\n };\n\n /**\n @function\n @param { object } event\n\n @description\n each token is wrapped into a span that has Token.rootClassName class and indexkey attribute (represents the index of the token)\n tokens are updated with the targeted token having the correct value set for 'selected' property\n */\n toggleToken = (event) => {\n const { target } = event;\n const { tokens, animationsDisabled } = this.props;\n const tokensCloned = clone(tokens);\n const targetSpanWrapper = target.closest(`.${Token.rootClassName}`);\n const targetedTokenIndex = targetSpanWrapper && targetSpanWrapper.dataset && targetSpanWrapper.dataset.indexkey;\n const t = targetedTokenIndex && tokensCloned[targetedTokenIndex];\n\n // don't toggle if we are in print mode, token correctness is defined or if it's missing\n // (missing means that it was evaluated as correct and not selected)\n if (t && t.correct === undefined && !animationsDisabled && !t.isMissing) {\n const { onChange, maxNoOfSelections } = this.props;\n const selected = !t.selected;\n\n if (maxNoOfSelections === 1 && this.selectedCount() === 1) {\n const selectedToken = (tokens || []).filter((t) => t.selected);\n\n const updatedTokens = tokensCloned.map((token) => {\n if (isEqual(token, selectedToken[0])) {\n return { ...token, selected: false };\n }\n\n return { ...token, selectable: true };\n });\n\n const update = { ...t, selected: !t.selected };\n\n updatedTokens.splice(targetedTokenIndex, 1, update);\n onChange(updatedTokens);\n } else {\n if (selected && maxNoOfSelections > 0 && this.selectedCount() >= maxNoOfSelections) {\n log('skip toggle max reached');\n return;\n }\n\n const update = { ...t, selected: !t.selected };\n\n tokensCloned.splice(targetedTokenIndex, 1, update);\n onChange(tokensCloned);\n }\n }\n };\n\n generateTokensInHtml = () => {\n const { tokens, disabled, highlightChoices, animationsDisabled } = this.props;\n const selectedCount = this.selectedCount();\n const isLineBreak = (text) => text === '\\n';\n const isNewParagraph = (text) => text === '\\n\\n';\n\n const reducer = (accumulator, t, index) => {\n const selectable = t.selected || (t.selectable && this.canSelectMore(selectedCount));\n const showCorrectAnswer = t.correct !== undefined && (t.selectable || t.selected);\n let finalAcc = accumulator;\n\n if (isNewParagraph(t.text)) {\n return finalAcc + '</p><p>';\n }\n\n if (isLineBreak(t.text)) {\n return finalAcc + '<br>';\n }\n\n if (\n (selectable && !disabled) ||\n showCorrectAnswer ||\n t.selected ||\n t.isMissing ||\n (animationsDisabled && t.predefined) // if we are in print mode\n ) {\n return (\n finalAcc +\n renderToString(\n <Token\n key={index}\n disabled={disabled}\n index={index}\n {...t}\n selectable={selectable}\n highlight={highlightChoices}\n animationsDisabled={animationsDisabled}\n />,\n )\n );\n } else {\n return accumulator + t.text;\n }\n };\n\n const reduceResult = (tokens || []).reduce(reducer, '<p>');\n\n return reduceResult + '</p>';\n };\n\n render() {\n const { classes, className: classNameProp } = this.props;\n const className = classNames(classes.tokenSelect, classNameProp);\n const html = this.generateTokensInHtml();\n\n return <div className={className} dangerouslySetInnerHTML={{ __html: html }} onClick={this.toggleToken} />;\n }\n}\n\nexport default withStyles(() => ({\n tokenSelect: {\n backgroundColor: 'none',\n whiteSpace: 'pre',\n ...noSelect(),\n '& p': {\n whiteSpace: 'break-spaces',\n },\n },\n}))(TokenSelect);\n\n// Re-export TokenTypes for external use\nexport { TokenTypes };\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport TokenSelect from './token-select';\nimport { normalize } from './tokenizer/builder';\nimport { TokenTypes } from './token-select/token';\nimport debug from 'debug';\n\nconst log = debug('@pie-lib:text-select');\n/**\n * Built on TokenSelect uses build.normalize to build the token set.\n */\nexport default class TextSelect extends React.Component {\n static propTypes = {\n onChange: PropTypes.func,\n disabled: PropTypes.bool,\n tokens: PropTypes.arrayOf(PropTypes.shape(TokenTypes)).isRequired,\n selectedTokens: PropTypes.arrayOf(PropTypes.shape(TokenTypes)).isRequired,\n text: PropTypes.string.isRequired,\n className: PropTypes.string,\n highlightChoices: PropTypes.bool,\n animationsDisabled: PropTypes.bool,\n maxNoOfSelections: PropTypes.number,\n };\n\n change = (tokens) => {\n const { onChange } = this.props;\n\n if (!onChange) {\n return;\n }\n const out = tokens.filter((t) => t.selected).map((t) => ({ start: t.start, end: t.end }));\n\n onChange(out);\n };\n\n render() {\n const {\n text,\n disabled,\n tokens,\n selectedTokens,\n className,\n highlightChoices,\n maxNoOfSelections,\n animationsDisabled,\n } = this.props;\n\n const normalized = normalize(text, tokens);\n log('normalized: ', normalized);\n const prepped = normalized.map((t) => {\n const selectedIndex = selectedTokens.findIndex((s) => {\n return s.start === t.start && s.end === t.end;\n });\n const selected = selectedIndex !== -1;\n const correct = selected ? t.correct : undefined;\n const isMissing = t.isMissing;\n return {\n ...t,\n selectable: !disabled && t.predefined,\n selected,\n correct,\n isMissing,\n };\n });\n\n return (\n <TokenSelect\n highlightChoices={!disabled && highlightChoices}\n className={className}\n tokens={prepped}\n disabled={disabled}\n onChange={this.change}\n maxNoOfSelections={maxNoOfSelections}\n animationsDisabled={animationsDisabled}\n />\n );\n }\n}\n","import React from 'react';\nimport { withStyles } from '@material-ui/core/styles';\nimport Check from '@material-ui/icons/Check';\nimport Close from '@material-ui/icons/Close';\nimport { color } from '@pie-lib/render-ui';\nimport Translator from '@pie-lib/translator';\nimport classNames from 'classnames';\n\nconst { translator } = Translator;\n\nexport const Legend = withStyles((theme) => ({\n flexContainer: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n gap: `${2 * theme.spacing.unit}px`,\n borderBottom: '1px solid lightgrey',\n borderTop: '1px solid lightgrey',\n paddingBottom: theme.spacing.unit,\n paddingTop: theme.spacing.unit,\n marginBottom: theme.spacing.unit,\n },\n key: {\n fontSize: '14px',\n fontWeight: 'bold',\n color: color.black(),\n marginLeft: theme.spacing.unit,\n },\n container: {\n position: 'relative',\n padding: '4px',\n fontSize: '14px',\n borderRadius: '4px',\n },\n correct: {\n border: `${color.correctTertiary()} solid 2px`,\n },\n incorrect: {\n border: `${color.incorrectWithIcon()} solid 2px`,\n },\n missing: {\n border: `${color.incorrectWithIcon()} dashed 2px`,\n },\n incorrectIcon: {\n backgroundColor: color.incorrectWithIcon(),\n },\n correctIcon: {\n backgroundColor: color.correctTertiary(),\n },\n icon: {\n color: color.white(),\n position: 'absolute',\n top: '-8px',\n left: '-8px',\n borderRadius: '50%',\n fontSize: '12px',\n padding: '2px',\n },\n}))(({ classes, language, showOnlyCorrect }) => {\n const legendItems = [\n {\n Icon: Check,\n label: translator.t('selectText.correctAnswerSelected', { lng: language }),\n containerClass: classNames(classes.correct, classes.container),\n iconClass: classNames(classes.correctIcon, classes.icon),\n },\n {\n Icon: Close,\n label: translator.t('selectText.incorrectSelection', { lng: language }),\n containerClass: classNames(classes.incorrect, classes.container),\n iconClass: classNames(classes.incorrectIcon, classes.icon),\n },\n {\n Icon: Close,\n label: translator.t('selectText.correctAnswerNotSelected', { lng: language }),\n containerClass: classNames(classes.missing, classes.container),\n iconClass: classNames(classes.incorrectIcon, classes.icon),\n },\n ];\n\n if (showOnlyCorrect) {\n legendItems.splice(1, 2);\n }\n\n return (\n <div className={classes.flexContainer}>\n <span className={classes.key}>{translator.t('selectText.key', { lng: language })}</span>\n {legendItems.map(({ Icon, label, containerClass, iconClass }, idx) => (\n <div key={idx} className={containerClass}>\n <Icon className={iconClass} />\n <span>{label}</span>\n </div>\n ))}\n </div>\n );\n});\n","const createElementFromHTML = (htmlString = '') => {\n const div = document.createElement('div');\n\n div.innerHTML = htmlString.trim();\n\n return div;\n};\n\nexport const parseBrs = (dom) => {\n const brs = dom.querySelectorAll('br');\n\n brs.forEach((br) => br.replaceWith('\\n'));\n\n dom.innerHTML = dom.innerHTML.replace(/\\n\\n/g, '\\n');\n};\n\nexport const parseParagraph = (paragraph, end) => {\n if (end) {\n return paragraph.innerHTML;\n }\n\n return `${paragraph.innerHTML}\\n\\n`;\n};\n\nexport const parseParagraphs = (dom) => {\n const paragraphs = dom.querySelectorAll('p');\n // separate variable for easily debugging, if needed\n let str = '';\n\n paragraphs.forEach((par, index) => {\n str += parseParagraph(par, index === paragraphs.length - 1);\n });\n\n return str || null;\n};\n\nexport const prepareText = (text) => {\n let txtDom = createElementFromHTML(text);\n const allDomElements = Array.from(txtDom.querySelectorAll('*'));\n\n if (txtDom.querySelectorAll('p').length === 0) {\n const div = document.createElement('div');\n\n div.innerHTML = `<p>${txtDom.innerHTML}</p>`;\n txtDom = div;\n }\n\n // if no dom elements, we just return the text\n if (allDomElements.length === 0) {\n return text;\n }\n\n parseBrs(txtDom);\n\n return parseParagraphs(txtDom);\n};\n"],"names":["Controls","React","Component","render","classes","onClear","onWords","onSentences","onParagraphs","setCorrectMode","onToggleCorrectMode","props","controls","button","checked","checkedThumb","bar","classNames","checkedBar","propTypes","PropTypes","object","isRequired","func","bool","defaultProps","withStyles","theme","marginRight","spacing","unit","display","alignItems","justifyContent","color","tertiary","backgroundColor","tertiaryLight","g","str","node","children","reduce","value","getParagraph","p","getSentence","s","getWord","w","paragraphs","text","tree","English","parse","out","acc","child","type","paragraph","start","position","offset","end","concat","handleSentence","sentenceChilds","newAcc","length","firstWord","sentence","map","d","join","splice","push","lastWord","sentences","words","Intersection","constructor","results","hasOverlap","filter","r","surroundedTokens","t","token","intersection","selection","tokens","startsWithin","endsWithin","mapped","compact","sort","Array","isArray","clone","a","b","e","Error","normalize","textToNormalize","index","outer","lastIndex","substring","predefined","correct","isMissing","last","result","clearSelection","document","getSelection","removeAllRanges","addRange","createRange","window","empty","getCaretCharacterOffsetWithin","element","caretOffset","doc","ownerDocument","win","defaultView","parentWindow","sel","rangeCount","range","getRangeAt","selected","toString","preCaretRange","cloneRange","selectNodeContents","setEnd","endContainer","endOffset","textRange","preCaretTextRange","body","createTextRange","moveToElementText","setEndPoint","log","debug","Text","cursor","yellow","border","green","onClick","formattedText","replace","className","__html","notAllowedCharacters","TokenText","event","onSelectToken","preventDefault","textSelected","indexOf","root","newLineOffset","slice","undefined","endIndex","i","tokensToRemove","onTokenClick","normalized","string","array","Tokenizer","onChangeHandler","mode","onChange","setState","toggleCorrectMode","state","clear","buildTokens","fn","selectToken","newToken","update","differenceWith","isEqual","tokenClick","setCorrect","removeToken","tokenIndex","findIndex","tokenClassName","noselect","rootName","tokenizer","arrayOf","shape","number","whiteSpace","noSelect","LINE_HEIGHT_MULTIPLIER","CORRECTNESS_LINE_HEIGHT_MULTIPLIER","CORRECTNESS_PADDING","Wrapper","useWrapper","classNameContainer","iconClass","Icon","TokenTypes","selectable","Token","getClassAndIconConfig","classNameProp","disabled","highlight","animationsDisabled","isTouchEnabled","navigator","maxTouchPoints","msMaxTouchPoints","baseClassName","rootClassName","disabledBlack","isCorrect","custom","incorrect","commonTokenStyle","Check","Close","correctnessIndicatorIcon","correctIcon","incorrectIcon","missing","disabledAndSelected","print","textIndent","blueGrey100","breakpoints","up","blueGrey300","palette","common","black","lineHeight","blueGrey900","borderRadius","blueGrey600","padding","correctTertiary","incorrectWithIcon","white","top","left","fontSize","TokenSelect","selectedCount","canSelectMore","maxNoOfSelections","isFinite","toggleToken","target","tokensCloned","targetSpanWrapper","closest","targetedTokenIndex","dataset","indexkey","selectedToken","updatedTokens","generateTokensInHtml","highlightChoices","isLineBreak","isNewParagraph","reducer","accumulator","showCorrectAnswer","finalAcc","renderToString","reduceResult","tokenSelect","html","TextSelect","change","selectedTokens","prepped","selectedIndex","translator","Translator","Legend","flexContainer","flexDirection","gap","borderBottom","borderTop","paddingBottom","paddingTop","marginBottom","key","fontWeight","marginLeft","container","icon","language","showOnlyCorrect","legendItems","label","lng","containerClass","idx","createElementFromHTML","htmlString","div","createElement","innerHTML","trim","parseBrs","dom","brs","querySelectorAll","forEach","br","replaceWith","parseParagraph","parseParagraphs","par","prepareText","txtDom","allDomElements","from"],"mappings":"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"}
|
|
@@ -7,7 +7,14 @@ var _typeof = require("@babel/runtime/helpers/typeof");
|
|
|
7
7
|
Object.defineProperty(exports, "__esModule", {
|
|
8
8
|
value: true
|
|
9
9
|
});
|
|
10
|
-
exports
|
|
10
|
+
exports.TokenSelect = void 0;
|
|
11
|
+
Object.defineProperty(exports, "TokenTypes", {
|
|
12
|
+
enumerable: true,
|
|
13
|
+
get: function get() {
|
|
14
|
+
return _token.TokenTypes;
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
exports["default"] = void 0;
|
|
11
18
|
|
|
12
19
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
13
20
|
|
|
@@ -244,7 +251,8 @@ var _default = (0, _styles.withStyles)(function () {
|
|
|
244
251
|
}
|
|
245
252
|
})
|
|
246
253
|
};
|
|
247
|
-
})(TokenSelect);
|
|
254
|
+
})(TokenSelect); // Re-export TokenTypes for external use
|
|
255
|
+
|
|
248
256
|
|
|
249
257
|
exports["default"] = _default;
|
|
250
258
|
//# 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,"sources":["../../src/token-select/index.jsx"],"names":["log","TokenSelect","props","tokens","filter","t","selected","length","selectedCount","maxNoOfSelections","isFinite","event","target","animationsDisabled","tokensCloned","targetSpanWrapper","closest","Token","rootClassName","targetedTokenIndex","dataset","indexkey","correct","undefined","isMissing","onChange","selectedToken","updatedTokens","map","token","selectable","update","splice","disabled","highlightChoices","isLineBreak","text","isNewParagraph","reducer","accumulator","index","canSelectMore","showCorrectAnswer","finalAcc","predefined","reduceResult","reduce","classes","classNameProp","className","tokenSelect","html","generateTokensInHtml","__html","toggleToken","React","Component","PropTypes","arrayOf","shape","TokenTypes","isRequired","string","object","func","bool","number","backgroundColor","whiteSpace"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport Token, { TokenTypes } from './token';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport clone from 'lodash/clone';\nimport debug from 'debug';\nimport { noSelect } from '@pie-lib/style-utils';\nimport { renderToString } from 'react-dom/server';\nimport isEqual from 'lodash/isEqual';\n\nconst log = debug('@pie-lib:text-select:token-select');\n\nexport class TokenSelect extends React.Component {\n static propTypes = {\n tokens: PropTypes.arrayOf(PropTypes.shape(TokenTypes)).isRequired,\n className: PropTypes.string,\n classes: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n disabled: PropTypes.bool,\n highlightChoices: PropTypes.bool,\n animationsDisabled: PropTypes.bool,\n maxNoOfSelections: PropTypes.number,\n };\n\n static defaultProps = {\n highlightChoices: false,\n maxNoOfSelections: 0,\n tokens: [],\n };\n\n selectedCount = () => this.props.tokens.filter((t) => t.selected).length;\n\n canSelectMore = (selectedCount) => {\n const { maxNoOfSelections } = this.props;\n\n if (maxNoOfSelections === 1) {\n return true;\n }\n\n log('[canSelectMore] maxNoOfSelections: ', maxNoOfSelections, 'selectedCount: ', selectedCount);\n return maxNoOfSelections <= 0 || (isFinite(maxNoOfSelections) && selectedCount < maxNoOfSelections);\n };\n\n /**\n @function\n @param { object } event\n\n @description\n each token is wrapped into a span that has Token.rootClassName class and indexkey attribute (represents the index of the token)\n tokens are updated with the targeted token having the correct value set for 'selected' property\n */\n toggleToken = (event) => {\n const { target } = event;\n const { tokens, animationsDisabled } = this.props;\n const tokensCloned = clone(tokens);\n const targetSpanWrapper = target.closest(`.${Token.rootClassName}`);\n const targetedTokenIndex = targetSpanWrapper && targetSpanWrapper.dataset && targetSpanWrapper.dataset.indexkey;\n const t = targetedTokenIndex && tokensCloned[targetedTokenIndex];\n\n // don't toggle if we are in print mode, token correctness is defined or if it's missing\n // (missing means that it was evaluated as correct and not selected)\n if (t && t.correct === undefined && !animationsDisabled && !t.isMissing) {\n const { onChange, maxNoOfSelections } = this.props;\n const selected = !t.selected;\n\n if (maxNoOfSelections === 1 && this.selectedCount() === 1) {\n const selectedToken = (tokens || []).filter((t) => t.selected);\n\n const updatedTokens = tokensCloned.map((token) => {\n if (isEqual(token, selectedToken[0])) {\n return { ...token, selected: false };\n }\n\n return { ...token, selectable: true };\n });\n\n const update = { ...t, selected: !t.selected };\n\n updatedTokens.splice(targetedTokenIndex, 1, update);\n onChange(updatedTokens);\n } else {\n if (selected && maxNoOfSelections > 0 && this.selectedCount() >= maxNoOfSelections) {\n log('skip toggle max reached');\n return;\n }\n\n const update = { ...t, selected: !t.selected };\n\n tokensCloned.splice(targetedTokenIndex, 1, update);\n onChange(tokensCloned);\n }\n }\n };\n\n generateTokensInHtml = () => {\n const { tokens, disabled, highlightChoices, animationsDisabled } = this.props;\n const selectedCount = this.selectedCount();\n const isLineBreak = (text) => text === '\\n';\n const isNewParagraph = (text) => text === '\\n\\n';\n\n const reducer = (accumulator, t, index) => {\n const selectable = t.selected || (t.selectable && this.canSelectMore(selectedCount));\n const showCorrectAnswer = t.correct !== undefined && (t.selectable || t.selected);\n let finalAcc = accumulator;\n\n if (isNewParagraph(t.text)) {\n return finalAcc + '</p><p>';\n }\n\n if (isLineBreak(t.text)) {\n return finalAcc + '<br>';\n }\n\n if (\n (selectable && !disabled) ||\n showCorrectAnswer ||\n t.selected ||\n t.isMissing ||\n (animationsDisabled && t.predefined) // if we are in print mode\n ) {\n return (\n finalAcc +\n renderToString(\n <Token\n key={index}\n disabled={disabled}\n index={index}\n {...t}\n selectable={selectable}\n highlight={highlightChoices}\n animationsDisabled={animationsDisabled}\n />,\n )\n );\n } else {\n return accumulator + t.text;\n }\n };\n\n const reduceResult = (tokens || []).reduce(reducer, '<p>');\n\n return reduceResult + '</p>';\n };\n\n render() {\n const { classes, className: classNameProp } = this.props;\n const className = classNames(classes.tokenSelect, classNameProp);\n const html = this.generateTokensInHtml();\n\n return <div className={className} dangerouslySetInnerHTML={{ __html: html }} onClick={this.toggleToken} />;\n }\n}\n\nexport default withStyles(() => ({\n tokenSelect: {\n backgroundColor: 'none',\n whiteSpace: 'pre',\n ...noSelect(),\n '& p': {\n whiteSpace: 'break-spaces',\n },\n },\n}))(TokenSelect);\n\n// Re-export TokenTypes for external use\nexport { TokenTypes };\n"],"file":"index.js"}
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"publishConfig": {
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
|
-
"version": "1.29.
|
|
6
|
+
"version": "1.29.1",
|
|
7
7
|
"description": "Some react components for text selection",
|
|
8
8
|
"keywords": [
|
|
9
9
|
"react",
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"dependencies": {
|
|
20
20
|
"@material-ui/icons": "^3.0.2",
|
|
21
21
|
"@pie-framework/parse-english": "^1.0.0",
|
|
22
|
-
"@pie-lib/render-ui": "^4.32.
|
|
22
|
+
"@pie-lib/render-ui": "^4.32.1",
|
|
23
23
|
"@pie-lib/style-utils": "^0.18.0",
|
|
24
24
|
"@pie-lib/translator": "^2.20.0",
|
|
25
25
|
"classnames": "^2.2.6",
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"devDependencies": {
|
|
33
33
|
"@material-ui/core": "^3.8.3",
|
|
34
34
|
"@pie-framework/parse-english": "^1.0.0",
|
|
35
|
-
"@pie-lib/test-utils": "^0.19.
|
|
35
|
+
"@pie-lib/test-utils": "^0.19.1",
|
|
36
36
|
"natural": "^0.6.3",
|
|
37
37
|
"react": "^16.8.1",
|
|
38
38
|
"react-dom": "^16.9.0"
|
|
@@ -41,6 +41,13 @@
|
|
|
41
41
|
"@material-ui/core": "^3.8.3",
|
|
42
42
|
"react": "^16.8.1"
|
|
43
43
|
},
|
|
44
|
-
"gitHead": "
|
|
45
|
-
"scripts": {}
|
|
44
|
+
"gitHead": "be0b7951407a81d53b8b8b4861b8407b31728809",
|
|
45
|
+
"scripts": {},
|
|
46
|
+
"exports": {
|
|
47
|
+
".": {
|
|
48
|
+
"import": "./esm/index.js",
|
|
49
|
+
"require": "./lib/index.js",
|
|
50
|
+
"default": "./esm/index.js"
|
|
51
|
+
}
|
|
52
|
+
}
|
|
46
53
|
}
|