@pie-lib/text-select 1.29.0 → 1.29.3

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.
@@ -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","../../../node_modules/@babel/runtime/helpers/interopRequireDefault.js","../../../node_modules/@babel/runtime/helpers/setPrototypeOf.js","../../../node_modules/@babel/runtime/helpers/inheritsLoose.js","../../../node_modules/recompose/setStatic.js","../../../node_modules/recompose/setDisplayName.js","../../../node_modules/recompose/getDisplayName.js","../../../node_modules/recompose/wrapDisplayName.js","../../../node_modules/recompose/shouldUpdate.js","../../../node_modules/fbjs/lib/shallowEqual.js","../../../node_modules/recompose/shallowEqual.js","../../../node_modules/recompose/pure.js","../../../node_modules/@material-ui/icons/utils/createSvgIcon.js","../../../node_modules/@material-ui/icons/Check.js","../../../node_modules/@material-ui/icons/Close.js","../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","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inheritsLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar setStatic = function setStatic(key, value) {\n return function (BaseComponent) {\n /* eslint-disable no-param-reassign */\n BaseComponent[key] = value;\n /* eslint-enable no-param-reassign */\n\n return BaseComponent;\n };\n};\n\nvar _default = setStatic;\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _setStatic = _interopRequireDefault(require(\"./setStatic\"));\n\nvar setDisplayName = function setDisplayName(displayName) {\n return (0, _setStatic.default)('displayName', displayName);\n};\n\nvar _default = setDisplayName;\nexports.default = _default;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar getDisplayName = function getDisplayName(Component) {\n if (typeof Component === 'string') {\n return Component;\n }\n\n if (!Component) {\n return undefined;\n }\n\n return Component.displayName || Component.name || 'Component';\n};\n\nvar _default = getDisplayName;\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _getDisplayName = _interopRequireDefault(require(\"./getDisplayName\"));\n\nvar wrapDisplayName = function wrapDisplayName(BaseComponent, hocName) {\n return hocName + \"(\" + (0, _getDisplayName.default)(BaseComponent) + \")\";\n};\n\nvar _default = wrapDisplayName;\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _inheritsLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inheritsLoose\"));\n\nvar _react = require(\"react\");\n\nvar _setDisplayName = _interopRequireDefault(require(\"./setDisplayName\"));\n\nvar _wrapDisplayName = _interopRequireDefault(require(\"./wrapDisplayName\"));\n\nvar shouldUpdate = function shouldUpdate(test) {\n return function (BaseComponent) {\n var factory = (0, _react.createFactory)(BaseComponent);\n\n var ShouldUpdate =\n /*#__PURE__*/\n function (_Component) {\n (0, _inheritsLoose2.default)(ShouldUpdate, _Component);\n\n function ShouldUpdate() {\n return _Component.apply(this, arguments) || this;\n }\n\n var _proto = ShouldUpdate.prototype;\n\n _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n return test(this.props, nextProps);\n };\n\n _proto.render = function render() {\n return factory(this.props);\n };\n\n return ShouldUpdate;\n }(_react.Component);\n\n if (process.env.NODE_ENV !== 'production') {\n return (0, _setDisplayName.default)((0, _wrapDisplayName.default)(BaseComponent, 'shouldUpdate'))(ShouldUpdate);\n }\n\n return ShouldUpdate;\n };\n};\n\nvar _default = shouldUpdate;\nexports.default = _default;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n * \n */\n\n/*eslint-disable no-self-compare */\n\n'use strict';\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n // Added the nonzero y check to make Flow happy, but it is redundant\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n}\n\n/**\n * Performs equality by iterating through keys on an object and returning false\n * when any key has values which are not strictly equal between the arguments.\n * Returns true when the values of all keys are strictly equal.\n */\nfunction shallowEqual(objA, objB) {\n if (is(objA, objB)) {\n return true;\n }\n\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n // Test for A's keys different from B.\n for (var i = 0; i < keysA.length; i++) {\n if (!hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n\n return true;\n}\n\nmodule.exports = shallowEqual;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _shallowEqual = _interopRequireDefault(require(\"fbjs/lib/shallowEqual\"));\n\nvar _default = _shallowEqual.default;\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _shouldUpdate = _interopRequireDefault(require(\"./shouldUpdate\"));\n\nvar _shallowEqual = _interopRequireDefault(require(\"./shallowEqual\"));\n\nvar _setDisplayName = _interopRequireDefault(require(\"./setDisplayName\"));\n\nvar _wrapDisplayName = _interopRequireDefault(require(\"./wrapDisplayName\"));\n\nvar pure = function pure(BaseComponent) {\n var hoc = (0, _shouldUpdate.default)(function (props, nextProps) {\n return !(0, _shallowEqual.default)(props, nextProps);\n });\n\n if (process.env.NODE_ENV !== 'production') {\n return (0, _setDisplayName.default)((0, _wrapDisplayName.default)(BaseComponent, 'pure'))(hoc(BaseComponent));\n }\n\n return hoc(BaseComponent);\n};\n\nvar _default = pure;\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _pure = _interopRequireDefault(require(\"recompose/pure\"));\n\nvar _SvgIcon = _interopRequireDefault(require(\"@material-ui/core/SvgIcon\"));\n\nfunction createSvgIcon(path, displayName) {\n var Icon = function Icon(props) {\n return _react.default.createElement(_SvgIcon.default, props, path);\n };\n\n Icon.displayName = \"\".concat(displayName, \"Icon\");\n Icon = (0, _pure.default)(Icon);\n Icon.muiName = 'SvgIcon';\n return Icon;\n}\n\n;\nvar _default = createSvgIcon;\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)(_react.default.createElement(_react.default.Fragment, null, _react.default.createElement(\"path\", {\n fill: \"none\",\n d: \"M0 0h24v24H0z\"\n}), _react.default.createElement(\"path\", {\n d: \"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\"\n})), 'Check');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)(_react.default.createElement(_react.default.Fragment, null, _react.default.createElement(\"path\", {\n d: \"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"\n}), _react.default.createElement(\"path\", {\n fill: \"none\",\n d: \"M0 0h24v24H0z\"\n})), 'Close');\n\nexports.default = _default;","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","require$$0","setStatic_1","setStatic","setDisplayName_1","require$$1","setDisplayName","getDisplayName_1","getDisplayName","wrapDisplayName_1","wrapDisplayName","shouldUpdate_1","require$$2","require$$3","require$$4","shouldUpdate","pure_1","pure","createSvgIcon_1","createSvgIcon","Check","Close","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","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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","x_google_ignoreList":[5,6,7,8,9,10,11,12,13,14,15,16,17,18]}
@@ -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["default"] = exports.TokenSelect = void 0;
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.0",
6
+ "version": "1.29.3",
7
7
  "description": "Some react components for text selection",
8
8
  "keywords": [
9
9
  "react",
@@ -19,9 +19,9 @@
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.0",
23
- "@pie-lib/style-utils": "^0.18.0",
24
- "@pie-lib/translator": "^2.20.0",
22
+ "@pie-lib/render-ui": "^4.32.3",
23
+ "@pie-lib/style-utils": "^0.18.2",
24
+ "@pie-lib/translator": "^2.20.2",
25
25
  "classnames": "^2.2.6",
26
26
  "debug": "^4.1.1",
27
27
  "invariant": "^2.2.4",
@@ -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.0",
35
+ "@pie-lib/test-utils": "^0.19.3",
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": "d6cccc4cca72fde471ababc7dce4c6236f5cbc0a",
45
- "scripts": {}
44
+ "gitHead": "8a327571bd64249e4c88c0c8e750d16d6213f535",
45
+ "scripts": {},
46
+ "exports": {
47
+ ".": {
48
+ "import": "./esm/index.js",
49
+ "require": "./lib/index.js",
50
+ "default": "./esm/index.js"
51
+ }
52
+ }
46
53
  }
@@ -162,3 +162,6 @@ export default withStyles(() => ({
162
162
  },
163
163
  },
164
164
  }))(TokenSelect);
165
+
166
+ // Re-export TokenTypes for external use
167
+ export { TokenTypes };
package/LICENSE.md DELETED
@@ -1,5 +0,0 @@
1
- Copyright 2019 CoreSpring Inc
2
-
3
- Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.
4
-
5
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.