@pie-lib/text-select 1.8.6-next.234 → 1.8.6-next.308

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/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA","sourcesContent":["import Tokenizer from './tokenizer';\nimport TokenSelect, { TokenTypes } from './token-select';\nimport TextSelect from './text-select';\nimport Token from './token-select/token';\nimport { prepareText } from './utils';\n\nexport { TextSelect, TokenTypes, Tokenizer, TokenSelect, Token, prepareText };\n"],"file":"index.js"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../src/index.js"],"sourcesContent":["import Tokenizer from './tokenizer';\nimport TokenSelect, { TokenTypes } from './token-select';\nimport TextSelect from './text-select';\nimport Token from './token-select/token';\nimport { prepareText } from './utils';\n\nexport { TextSelect, TokenTypes, Tokenizer, TokenSelect, Token, prepareText };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/text-select.jsx"],"names":["log","TextSelect","tokens","onChange","props","out","filter","t","selected","map","start","end","text","disabled","selectedTokens","className","highlightChoices","maxNoOfSelections","animationsDisabled","normalized","prepped","selectedIndex","findIndex","s","correct","undefined","selectable","predefined","change","React","Component","PropTypes","func","bool","arrayOf","shape","TokenTypes","isRequired","string","number"],"mappings":"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","sourcesContent":["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 return {\n ...t,\n selectable: !disabled && t.predefined,\n selected,\n correct\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"],"file":"text-select.js"}
1
+ {"version":3,"file":"text-select.js","names":["log","debug","TextSelect","tokens","onChange","props","out","filter","t","selected","map","start","end","text","disabled","selectedTokens","className","highlightChoices","maxNoOfSelections","animationsDisabled","normalized","normalize","prepped","selectedIndex","findIndex","s","correct","undefined","selectable","predefined","change","React","Component","PropTypes","func","bool","arrayOf","shape","TokenTypes","isRequired","string","number"],"sources":["../src/text-select.jsx"],"sourcesContent":["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 return {\n ...t,\n selectable: !disabled && t.predefined,\n selected,\n correct\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"],"mappings":"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"}
@@ -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","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 (\n maxNoOfSelections <= 0 || (isFinite(maxNoOfSelections) && selectedCount < maxNoOfSelections)\n );\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 =\n targetSpanWrapper && targetSpanWrapper.dataset && targetSpanWrapper.dataset.indexkey;\n const t = targetedTokenIndex && tokensCloned[targetedTokenIndex];\n\n if (t && t.correct === undefined && !animationsDisabled) {\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 (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 (\n <div\n className={className}\n dangerouslySetInnerHTML={{ __html: html }}\n onClick={this.toggleToken}\n />\n );\n }\n}\n\nexport default withStyles(() => ({\n tokenSelect: {\n backgroundColor: 'none',\n whiteSpace: 'pre',\n ...noSelect(),\n '& p': {\n whiteSpace: 'break-spaces'\n }\n }\n}))(TokenSelect);\n"],"file":"index.js"}
1
+ {"version":3,"file":"index.js","names":["log","debug","TokenSelect","props","tokens","filter","t","selected","length","selectedCount","maxNoOfSelections","isFinite","event","target","animationsDisabled","tokensCloned","clone","targetSpanWrapper","closest","Token","rootClassName","targetedTokenIndex","dataset","indexkey","correct","undefined","onChange","selectedToken","updatedTokens","map","token","isEqual","selectable","update","splice","disabled","highlightChoices","isLineBreak","text","isNewParagraph","reducer","accumulator","index","canSelectMore","showCorrectAnswer","finalAcc","predefined","renderToString","reduceResult","reduce","classes","classNameProp","className","classNames","tokenSelect","html","generateTokensInHtml","__html","toggleToken","React","Component","PropTypes","arrayOf","shape","TokenTypes","isRequired","string","object","func","bool","number","withStyles","backgroundColor","whiteSpace","noSelect"],"sources":["../../src/token-select/index.jsx"],"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 (\n maxNoOfSelections <= 0 || (isFinite(maxNoOfSelections) && selectedCount < maxNoOfSelections)\n );\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 =\n targetSpanWrapper && targetSpanWrapper.dataset && targetSpanWrapper.dataset.indexkey;\n const t = targetedTokenIndex && tokensCloned[targetedTokenIndex];\n\n if (t && t.correct === undefined && !animationsDisabled) {\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 (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 (\n <div\n className={className}\n dangerouslySetInnerHTML={{ __html: html }}\n onClick={this.toggleToken}\n />\n );\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"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/token-select/token.jsx"],"names":["TokenTypes","text","PropTypes","string","selectable","bool","Token","props","selected","classes","classNameProp","className","disabled","index","highlight","correct","animationsDisabled","undefined","token","disabledBlack","rootClassName","custom","incorrect","disabledAndSelected","print","__html","replace","React","Component","object","isRequired","theme","cursor","textIndent","padding","spacing","unit","paddingRight","paddingLeft","transition","color","backgroundColor","primaryLight","lineHeight","marginTop","border","boxSizing","display"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport { color } from '@pie-lib/render-ui';\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 className: PropTypes.string,\n disabled: PropTypes.bool,\n highlight: PropTypes.bool,\n correct: PropTypes.bool,\n text: PropTypes.string.isRequired\n };\n\n static defaultProps = {\n selectable: false,\n text: ''\n };\n\n render() {\n const {\n text,\n selectable,\n selected,\n classes,\n className: classNameProp,\n disabled,\n index,\n highlight,\n correct,\n animationsDisabled\n } = this.props;\n\n let className;\n\n if (correct === undefined && selected && disabled) {\n className = classNames(classes.token, classes.selected, classes.disabledBlack);\n } else if (correct !== undefined) {\n className = classNames(\n Token.rootClassName,\n classes.custom,\n correct === true && classes.correct,\n correct === false && classes.incorrect\n );\n } else {\n className = classNames(\n Token.rootClassName,\n classes.token,\n disabled && classes.disabled,\n selectable && !disabled && 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 }\n\n return (\n <span\n className={className}\n dangerouslySetInnerHTML={{ __html: (text || '').replace(/\\n/g, '<br>') }}\n data-indexkey={index}\n />\n );\n }\n}\n\nexport default withStyles(theme => {\n return {\n token: {\n cursor: 'pointer',\n textIndent: 0,\n padding: theme.spacing.unit / 2,\n paddingRight: 0,\n paddingLeft: 0,\n transition: 'background-color 100ms ease-in'\n },\n disabled: {\n cursor: 'inherit',\n color: 'grey' // TODO hardcoded color\n },\n disabledBlack: {\n cursor: 'inherit'\n },\n disabledAndSelected: {\n backgroundColor: 'pink' // TODO hardcoded color\n },\n selectable: {\n '&:hover': {\n backgroundColor: color.primaryLight(),\n '& > *': {\n backgroundColor: color.primaryLight()\n }\n }\n },\n selected: {\n lineHeight: 2,\n marginTop: theme.spacing.unit / 2,\n '&:hover': {\n backgroundColor: color.primaryLight()\n },\n backgroundColor: color.primaryLight(),\n '& > *': {\n backgroundColor: color.primaryLight()\n }\n },\n highlight: {\n // TODO hardcoded color,\n border: 'dashed 2px gray',\n lineHeight: 2,\n boxSizing: 'border-box',\n marginTop: theme.spacing.unit / 2,\n display: 'inline-block',\n padding: theme.spacing.unit\n },\n print: {\n border: 'dashed 2px gray',\n lineHeight: 2,\n boxSizing: 'border-box',\n marginTop: theme.spacing.unit / 2,\n display: 'inline-block',\n padding: theme.spacing.unit,\n color: color.text()\n },\n\n custom: {\n display: 'initial'\n },\n correct: {\n backgroundColor: color.correct()\n },\n incorrect: {\n backgroundColor: color.incorrect()\n }\n };\n})(Token);\n"],"file":"token.js"}
1
+ {"version":3,"file":"token.js","names":["TokenTypes","text","PropTypes","string","selectable","bool","Token","props","selected","classes","classNameProp","className","disabled","index","highlight","correct","animationsDisabled","undefined","classNames","token","disabledBlack","rootClassName","custom","incorrect","disabledAndSelected","print","__html","replace","React","Component","object","isRequired","withStyles","theme","cursor","textIndent","padding","spacing","unit","paddingRight","paddingLeft","transition","color","backgroundColor","primaryLight","lineHeight","marginTop","border","boxSizing","display"],"sources":["../../src/token-select/token.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport { color } from '@pie-lib/render-ui';\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 className: PropTypes.string,\n disabled: PropTypes.bool,\n highlight: PropTypes.bool,\n correct: PropTypes.bool,\n text: PropTypes.string.isRequired\n };\n\n static defaultProps = {\n selectable: false,\n text: ''\n };\n\n render() {\n const {\n text,\n selectable,\n selected,\n classes,\n className: classNameProp,\n disabled,\n index,\n highlight,\n correct,\n animationsDisabled\n } = this.props;\n\n let className;\n\n if (correct === undefined && selected && disabled) {\n className = classNames(classes.token, classes.selected, classes.disabledBlack);\n } else if (correct !== undefined) {\n className = classNames(\n Token.rootClassName,\n classes.custom,\n correct === true && classes.correct,\n correct === false && classes.incorrect\n );\n } else {\n className = classNames(\n Token.rootClassName,\n classes.token,\n disabled && classes.disabled,\n selectable && !disabled && 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 }\n\n return (\n <span\n className={className}\n dangerouslySetInnerHTML={{ __html: (text || '').replace(/\\n/g, '<br>') }}\n data-indexkey={index}\n />\n );\n }\n}\n\nexport default withStyles(theme => {\n return {\n token: {\n cursor: 'pointer',\n textIndent: 0,\n padding: theme.spacing.unit / 2,\n paddingRight: 0,\n paddingLeft: 0,\n transition: 'background-color 100ms ease-in'\n },\n disabled: {\n cursor: 'inherit',\n color: 'grey' // TODO hardcoded color\n },\n disabledBlack: {\n cursor: 'inherit'\n },\n disabledAndSelected: {\n backgroundColor: 'pink' // TODO hardcoded color\n },\n selectable: {\n '&:hover': {\n backgroundColor: color.primaryLight(),\n '& > *': {\n backgroundColor: color.primaryLight()\n }\n }\n },\n selected: {\n lineHeight: 2,\n marginTop: theme.spacing.unit / 2,\n '&:hover': {\n backgroundColor: color.primaryLight()\n },\n backgroundColor: color.primaryLight(),\n '& > *': {\n backgroundColor: color.primaryLight()\n }\n },\n highlight: {\n // TODO hardcoded color,\n border: 'dashed 2px gray',\n lineHeight: 2,\n boxSizing: 'border-box',\n marginTop: theme.spacing.unit / 2,\n display: 'inline-block',\n padding: theme.spacing.unit\n },\n print: {\n border: 'dashed 2px gray',\n lineHeight: 2,\n boxSizing: 'border-box',\n marginTop: theme.spacing.unit / 2,\n display: 'inline-block',\n padding: theme.spacing.unit,\n color: color.text()\n },\n\n custom: {\n display: 'initial'\n },\n correct: {\n backgroundColor: color.correct()\n },\n incorrect: {\n backgroundColor: color.incorrect()\n }\n };\n})(Token);\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/tokenizer/builder.js"],"names":["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","results","filter","r","t","token","intersection","selection","tokens","startsWithin","endsWithin","mapped","sort","Array","isArray","a","b","e","Error","normalize","textToNormalize","index","outer","lastIndex","substring","predefined","correct","last","result"],"mappings":"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","sourcesContent":["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(\n `sort does not support intersecting tokens. a: ${a.start}-${a.end}, b: ${b.start}-${b.end}`\n );\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 }\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 }\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"],"file":"builder.js"}
1
+ {"version":3,"file":"builder.js","names":["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","results","filter","r","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","last","result"],"sources":["../../src/tokenizer/builder.js"],"sourcesContent":["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(\n `sort does not support intersecting tokens. a: ${a.start}-${a.end}, b: ${b.start}-${b.end}`\n );\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 }\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 }\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"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/tokenizer/controls.jsx"],"names":["Controls","props","classes","onClear","onWords","onSentences","onParagraphs","setCorrectMode","onToggleCorrectMode","controls","button","React","Component","PropTypes","object","isRequired","func","bool","theme","marginRight","spacing","unit","display","alignItems","justifyContent"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;IAEaA,Q;;;;;;;;;;;;;WAaX,kBAAS;AACP,wBAQI,KAAKC,KART;AAAA,UACEC,OADF,eACEA,OADF;AAAA,UAEEC,OAFF,eAEEA,OAFF;AAAA,UAGEC,OAHF,eAGEA,OAHF;AAAA,UAIEC,WAJF,eAIEA,WAJF;AAAA,UAKEC,YALF,eAKEA,YALF;AAAA,UAMEC,cANF,eAMEA,cANF;AAAA,UAOEC,mBAPF,eAOEA,mBAPF;AAUA,0BACE;AAAK,QAAA,SAAS,EAAEN,OAAO,CAACO;AAAxB,sBACE,0DACE,gCAAC,kBAAD;AACE,QAAA,OAAO,EAAEL,OADX;AAEE,QAAA,SAAS,EAAEF,OAAO,CAACQ,MAFrB;AAGE,QAAA,IAAI,EAAC,OAHP;AAIE,QAAA,KAAK,EAAC,SAJR;AAKE,QAAA,QAAQ,EAAEH;AALZ,iBADF,eAUE,gCAAC,kBAAD;AACE,QAAA,OAAO,EAAEF,WADX;AAEE,QAAA,SAAS,EAAEH,OAAO,CAACQ,MAFrB;AAGE,QAAA,IAAI,EAAC,OAHP;AAIE,QAAA,KAAK,EAAC,SAJR;AAKE,QAAA,QAAQ,EAAEH;AALZ,qBAVF,eAmBE,gCAAC,kBAAD;AACE,QAAA,OAAO,EAAED,YADX;AAEE,QAAA,SAAS,EAAEJ,OAAO,CAACQ,MAFrB;AAGE,QAAA,IAAI,EAAC,OAHP;AAIE,QAAA,KAAK,EAAC,SAJR;AAKE,QAAA,QAAQ,EAAEH;AALZ,sBAnBF,eA4BE,gCAAC,kBAAD;AACE,QAAA,SAAS,EAAEL,OAAO,CAACQ,MADrB;AAEE,QAAA,IAAI,EAAC,OAFP;AAGE,QAAA,KAAK,EAAC,WAHR;AAIE,QAAA,OAAO,EAAEP,OAJX;AAKE,QAAA,QAAQ,EAAEI;AALZ,iBA5BF,CADF,eAuCE,gCAAC,4BAAD;AACE,QAAA,OAAO,eAAE,gCAAC,kBAAD;AAAQ,UAAA,OAAO,EAAEA,cAAjB;AAAiC,UAAA,QAAQ,EAAEC;AAA3C,UADX;AAEE,QAAA,KAAK,EAAC;AAFR,QAvCF,CADF;AA8CD;;;;EAtE2BG,kBAAMC,S;;;;gBAAvBZ,Q,eACQ;AACjBE,EAAAA,OAAO,EAAEW,sBAAUC,MAAV,CAAiBC,UADT;AAEjBZ,EAAAA,OAAO,EAAEU,sBAAUG,IAAV,CAAeD,UAFP;AAGjBX,EAAAA,OAAO,EAAES,sBAAUG,IAAV,CAAeD,UAHP;AAIjBV,EAAAA,WAAW,EAAEQ,sBAAUG,IAAV,CAAeD,UAJX;AAKjBT,EAAAA,YAAY,EAAEO,sBAAUG,IAAV,CAAeD,UALZ;AAMjBR,EAAAA,cAAc,EAAEM,sBAAUI,IAAV,CAAeF,UANd;AAOjBP,EAAAA,mBAAmB,EAAEK,sBAAUG,IAAV,CAAeD;AAPnB,C;;gBADRf,Q,kBAWW,E;;eA6DT,wBAAW,UAAAkB,KAAK;AAAA,SAAK;AAClCR,IAAAA,MAAM,EAAE;AACNS,MAAAA,WAAW,EAAED,KAAK,CAACE,OAAN,CAAcC;AADrB,KAD0B;AAIlCZ,IAAAA,QAAQ,EAAE;AACRa,MAAAA,OAAO,EAAE,MADD;AAERC,MAAAA,UAAU,EAAE,QAFJ;AAGRC,MAAAA,cAAc,EAAE;AAHR;AAJwB,GAAL;AAAA,CAAhB,EASXxB,QATW,C","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';\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 {\n classes,\n onClear,\n onWords,\n onSentences,\n onParagraphs,\n setCorrectMode,\n onToggleCorrectMode\n } = this.props;\n\n return (\n <div className={classes.controls}>\n <div>\n <Button\n onClick={onWords}\n className={classes.button}\n size=\"small\"\n color=\"primary\"\n disabled={setCorrectMode}\n >\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\n className={classes.button}\n size=\"small\"\n color=\"secondary\"\n onClick={onClear}\n disabled={setCorrectMode}\n >\n Clear\n </Button>\n </div>\n <FormControlLabel\n control={<Switch checked={setCorrectMode} onChange={onToggleCorrectMode} />}\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}))(Controls);\n"],"file":"controls.js"}
1
+ {"version":3,"file":"controls.js","names":["Controls","props","classes","onClear","onWords","onSentences","onParagraphs","setCorrectMode","onToggleCorrectMode","controls","button","React","Component","PropTypes","object","isRequired","func","bool","withStyles","theme","marginRight","spacing","unit","display","alignItems","justifyContent"],"sources":["../../src/tokenizer/controls.jsx"],"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';\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 {\n classes,\n onClear,\n onWords,\n onSentences,\n onParagraphs,\n setCorrectMode,\n onToggleCorrectMode\n } = this.props;\n\n return (\n <div className={classes.controls}>\n <div>\n <Button\n onClick={onWords}\n className={classes.button}\n size=\"small\"\n color=\"primary\"\n disabled={setCorrectMode}\n >\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\n className={classes.button}\n size=\"small\"\n color=\"secondary\"\n onClick={onClear}\n disabled={setCorrectMode}\n >\n Clear\n </Button>\n </div>\n <FormControlLabel\n control={<Switch checked={setCorrectMode} onChange={onToggleCorrectMode} />}\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}))(Controls);\n"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;IAEaA,Q;;;;;;;;;;;;;WAaX,kBAAS;MACP,kBAQI,KAAKC,KART;MAAA,IACEC,OADF,eACEA,OADF;MAAA,IAEEC,OAFF,eAEEA,OAFF;MAAA,IAGEC,OAHF,eAGEA,OAHF;MAAA,IAIEC,WAJF,eAIEA,WAJF;MAAA,IAKEC,YALF,eAKEA,YALF;MAAA,IAMEC,cANF,eAMEA,cANF;MAAA,IAOEC,mBAPF,eAOEA,mBAPF;MAUA,oBACE;QAAK,SAAS,EAAEN,OAAO,CAACO;MAAxB,gBACE,0DACE,gCAAC,kBAAD;QACE,OAAO,EAAEL,OADX;QAEE,SAAS,EAAEF,OAAO,CAACQ,MAFrB;QAGE,IAAI,EAAC,OAHP;QAIE,KAAK,EAAC,SAJR;QAKE,QAAQ,EAAEH;MALZ,WADF,eAUE,gCAAC,kBAAD;QACE,OAAO,EAAEF,WADX;QAEE,SAAS,EAAEH,OAAO,CAACQ,MAFrB;QAGE,IAAI,EAAC,OAHP;QAIE,KAAK,EAAC,SAJR;QAKE,QAAQ,EAAEH;MALZ,eAVF,eAmBE,gCAAC,kBAAD;QACE,OAAO,EAAED,YADX;QAEE,SAAS,EAAEJ,OAAO,CAACQ,MAFrB;QAGE,IAAI,EAAC,OAHP;QAIE,KAAK,EAAC,SAJR;QAKE,QAAQ,EAAEH;MALZ,gBAnBF,eA4BE,gCAAC,kBAAD;QACE,SAAS,EAAEL,OAAO,CAACQ,MADrB;QAEE,IAAI,EAAC,OAFP;QAGE,KAAK,EAAC,WAHR;QAIE,OAAO,EAAEP,OAJX;QAKE,QAAQ,EAAEI;MALZ,WA5BF,CADF,eAuCE,gCAAC,4BAAD;QACE,OAAO,eAAE,gCAAC,kBAAD;UAAQ,OAAO,EAAEA,cAAjB;UAAiC,QAAQ,EAAEC;QAA3C,EADX;QAEE,KAAK,EAAC;MAFR,EAvCF,CADF;IA8CD;;;;EAtE2BG,iBAAA,CAAMC,S;;;;gBAAvBZ,Q,eACQ;EACjBE,OAAO,EAAEW,qBAAA,CAAUC,MAAV,CAAiBC,UADT;EAEjBZ,OAAO,EAAEU,qBAAA,CAAUG,IAAV,CAAeD,UAFP;EAGjBX,OAAO,EAAES,qBAAA,CAAUG,IAAV,CAAeD,UAHP;EAIjBV,WAAW,EAAEQ,qBAAA,CAAUG,IAAV,CAAeD,UAJX;EAKjBT,YAAY,EAAEO,qBAAA,CAAUG,IAAV,CAAeD,UALZ;EAMjBR,cAAc,EAAEM,qBAAA,CAAUI,IAAV,CAAeF,UANd;EAOjBP,mBAAmB,EAAEK,qBAAA,CAAUG,IAAV,CAAeD;AAPnB,C;;gBADRf,Q,kBAWW,E;;eA6DT,IAAAkB,kBAAA,EAAW,UAAAC,KAAK;EAAA,OAAK;IAClCT,MAAM,EAAE;MACNU,WAAW,EAAED,KAAK,CAACE,OAAN,CAAcC;IADrB,CAD0B;IAIlCb,QAAQ,EAAE;MACRc,OAAO,EAAE,MADD;MAERC,UAAU,EAAE,QAFJ;MAGRC,cAAc,EAAE;IAHR;EAJwB,CAAL;AAAA,CAAhB,EASXzB,QATW,C"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/tokenizer/index.jsx"],"names":["Tokenizer","props","token","mode","onChange","setState","setCorrectMode","state","onChangeHandler","type","fn","text","tokens","newToken","tokensToRemove","update","isEqual","push","setCorrect","removeToken","findIndex","t","start","end","index","tokenIndex","correct","splice","classes","className","tokenClassName","noselect","rootName","tokenizer","clear","buildTokens","words","sentences","paragraphs","toggleCorrectMode","tokenClick","selectToken","React","Component","PropTypes","string","isRequired","arrayOf","shape","bool","number","object","func","theme","whiteSpace","marginTop","spacing","unit","paddingTop","paddingBottom"],"mappings":"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","sourcesContent":["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(theme => ({\n text: {\n whiteSpace: 'pre-wrap',\n marginTop: theme.spacing.unit,\n paddingTop: theme.spacing.unit,\n paddingBottom: theme.spacing.unit\n },\n noselect: { ...noSelect() }\n}))(Tokenizer);\n"],"file":"index.js"}
1
+ {"version":3,"file":"index.js","names":["Tokenizer","props","token","mode","onChange","setState","setCorrectMode","state","onChangeHandler","type","fn","text","tokens","newToken","tokensToRemove","update","differenceWith","clone","isEqual","push","setCorrect","removeToken","findIndex","t","start","end","index","tokenIndex","correct","splice","classes","className","tokenClassName","classNames","noselect","rootName","tokenizer","clear","buildTokens","words","sentences","paragraphs","toggleCorrectMode","tokenClick","selectToken","React","Component","PropTypes","string","isRequired","arrayOf","shape","bool","number","object","func","withStyles","theme","whiteSpace","marginTop","spacing","unit","paddingTop","paddingBottom","noSelect"],"sources":["../../src/tokenizer/index.jsx"],"sourcesContent":["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(theme => ({\n text: {\n whiteSpace: 'pre-wrap',\n marginTop: theme.spacing.unit,\n paddingTop: theme.spacing.unit,\n paddingBottom: theme.spacing.unit\n },\n noselect: { ...noSelect() }\n}))(Tokenizer);\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/tokenizer/selection-utils.js"],"names":["clearSelection","document","getSelection","removeAllRanges","addRange","createRange","window","empty","selection","getCaretCharacterOffsetWithin","element","caretOffset","doc","ownerDocument","win","defaultView","parentWindow","sel","rangeCount","range","getRangeAt","selected","toString","length","preCaretRange","cloneRange","selectNodeContents","setEnd","endContainer","endOffset","type","textRange","preCaretTextRange","body","createTextRange","moveToElementText","setEndPoint","text"],"mappings":";;;;;;;AAAO,IAAMA,cAAc,GAAG,SAAjBA,cAAiB,GAAM;AAClC,MAAIC,QAAQ,CAACC,YAAb,EAA2B;AACzB;AACAD,IAAAA,QAAQ,CAACC,YAAT,GAAwBC,eAAxB;AACAF,IAAAA,QAAQ,CAACC,YAAT,GAAwBE,QAAxB,CAAiCH,QAAQ,CAACI,WAAT,EAAjC;AACD,GAJD,MAIO,IAAIC,MAAM,CAACJ,YAAX,EAAyB;AAC9B;AACA,QAAII,MAAM,CAACJ,YAAP,GAAsBC,eAA1B,EAA2C;AACzC;AACAG,MAAAA,MAAM,CAACJ,YAAP,GAAsBC,eAAtB;AACAG,MAAAA,MAAM,CAACJ,YAAP,GAAsBE,QAAtB,CAA+BH,QAAQ,CAACI,WAAT,EAA/B;AACD,KAJD,MAIO,IAAIC,MAAM,CAACJ,YAAP,GAAsBK,KAA1B,EAAiC;AACtC;AACAD,MAAAA,MAAM,CAACJ,YAAP,GAAsBK,KAAtB;AACD;AACF,GAVM,MAUA,IAAIN,QAAQ,CAACO,SAAb,EAAwB;AAC7B;AACAP,IAAAA,QAAQ,CAACO,SAAT,CAAmBD,KAAnB;AACD;AACF,CAnBM;;;;AAqBA,IAAME,6BAA6B,GAAG,SAAhCA,6BAAgC,CAAAC,OAAO,EAAI;AACtD,MAAIC,WAAW,GAAG,CAAlB;AACA,MAAIC,GAAG,GAAGF,OAAO,CAACG,aAAR,IAAyBH,OAAO,CAACT,QAA3C;AACA,MAAIa,GAAG,GAAGF,GAAG,CAACG,WAAJ,IAAmBH,GAAG,CAACI,YAAjC;AACA,MAAIC,GAAJ;;AACA,MAAI,OAAOH,GAAG,CAACZ,YAAX,KAA4B,WAAhC,EAA6C;AAC3Ce,IAAAA,GAAG,GAAGH,GAAG,CAACZ,YAAJ,EAAN;;AACA,QAAIe,GAAG,CAACC,UAAJ,GAAiB,CAArB,EAAwB;AACtB,UAAIC,KAAK,GAAGL,GAAG,CAACZ,YAAJ,GAAmBkB,UAAnB,CAA8B,CAA9B,CAAZ;AACA,UAAIC,QAAQ,GAAGF,KAAK,CAACG,QAAN,GAAiBC,MAAhC;AACA,UAAIC,aAAa,GAAGL,KAAK,CAACM,UAAN,EAApB;AACAD,MAAAA,aAAa,CAACE,kBAAd,CAAiChB,OAAjC;AACAc,MAAAA,aAAa,CAACG,MAAd,CAAqBR,KAAK,CAACS,YAA3B,EAAyCT,KAAK,CAACU,SAA/C;;AACA,UAAIR,QAAJ,EAAc;AACZV,QAAAA,WAAW,GAAGa,aAAa,CAACF,QAAd,GAAyBC,MAAzB,GAAkCF,QAAhD;AACD,OAFD,MAEO;AACLV,QAAAA,WAAW,GAAGa,aAAa,CAACF,QAAd,GAAyBC,MAAvC;AACD;AACF;AACF,GAdD,MAcO,IAAI,CAACN,GAAG,GAAGL,GAAG,CAACJ,SAAX,KAAyBS,GAAG,CAACa,IAAJ,KAAa,SAA1C,EAAqD;AAC1D,QAAIC,SAAS,GAAGd,GAAG,CAACZ,WAAJ,EAAhB;AACA,QAAI2B,iBAAiB,GAAGpB,GAAG,CAACqB,IAAJ,CAASC,eAAT,EAAxB;AACAF,IAAAA,iBAAiB,CAACG,iBAAlB,CAAoCzB,OAApC;AACAsB,IAAAA,iBAAiB,CAACI,WAAlB,CAA8B,UAA9B,EAA0CL,SAA1C;AACApB,IAAAA,WAAW,GAAGqB,iBAAiB,CAACK,IAAlB,CAAuBd,MAArC;AACD;;AACD,SAAOZ,WAAP;AACD,CA3BM","sourcesContent":["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"],"file":"selection-utils.js"}
1
+ {"version":3,"file":"selection-utils.js","names":["clearSelection","document","getSelection","removeAllRanges","addRange","createRange","window","empty","selection","getCaretCharacterOffsetWithin","element","caretOffset","doc","ownerDocument","win","defaultView","parentWindow","sel","rangeCount","range","getRangeAt","selected","toString","length","preCaretRange","cloneRange","selectNodeContents","setEnd","endContainer","endOffset","type","textRange","preCaretTextRange","body","createTextRange","moveToElementText","setEndPoint","text"],"sources":["../../src/tokenizer/selection-utils.js"],"sourcesContent":["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"],"mappings":";;;;;;;AAAO,IAAMA,cAAc,GAAG,SAAjBA,cAAiB,GAAM;EAClC,IAAIC,QAAQ,CAACC,YAAb,EAA2B;IACzB;IACAD,QAAQ,CAACC,YAAT,GAAwBC,eAAxB;IACAF,QAAQ,CAACC,YAAT,GAAwBE,QAAxB,CAAiCH,QAAQ,CAACI,WAAT,EAAjC;EACD,CAJD,MAIO,IAAIC,MAAM,CAACJ,YAAX,EAAyB;IAC9B;IACA,IAAII,MAAM,CAACJ,YAAP,GAAsBC,eAA1B,EAA2C;MACzC;MACAG,MAAM,CAACJ,YAAP,GAAsBC,eAAtB;MACAG,MAAM,CAACJ,YAAP,GAAsBE,QAAtB,CAA+BH,QAAQ,CAACI,WAAT,EAA/B;IACD,CAJD,MAIO,IAAIC,MAAM,CAACJ,YAAP,GAAsBK,KAA1B,EAAiC;MACtC;MACAD,MAAM,CAACJ,YAAP,GAAsBK,KAAtB;IACD;EACF,CAVM,MAUA,IAAIN,QAAQ,CAACO,SAAb,EAAwB;IAC7B;IACAP,QAAQ,CAACO,SAAT,CAAmBD,KAAnB;EACD;AACF,CAnBM;;;;AAqBA,IAAME,6BAA6B,GAAG,SAAhCA,6BAAgC,CAAAC,OAAO,EAAI;EACtD,IAAIC,WAAW,GAAG,CAAlB;EACA,IAAIC,GAAG,GAAGF,OAAO,CAACG,aAAR,IAAyBH,OAAO,CAACT,QAA3C;EACA,IAAIa,GAAG,GAAGF,GAAG,CAACG,WAAJ,IAAmBH,GAAG,CAACI,YAAjC;EACA,IAAIC,GAAJ;;EACA,IAAI,OAAOH,GAAG,CAACZ,YAAX,KAA4B,WAAhC,EAA6C;IAC3Ce,GAAG,GAAGH,GAAG,CAACZ,YAAJ,EAAN;;IACA,IAAIe,GAAG,CAACC,UAAJ,GAAiB,CAArB,EAAwB;MACtB,IAAIC,KAAK,GAAGL,GAAG,CAACZ,YAAJ,GAAmBkB,UAAnB,CAA8B,CAA9B,CAAZ;MACA,IAAIC,QAAQ,GAAGF,KAAK,CAACG,QAAN,GAAiBC,MAAhC;MACA,IAAIC,aAAa,GAAGL,KAAK,CAACM,UAAN,EAApB;MACAD,aAAa,CAACE,kBAAd,CAAiChB,OAAjC;MACAc,aAAa,CAACG,MAAd,CAAqBR,KAAK,CAACS,YAA3B,EAAyCT,KAAK,CAACU,SAA/C;;MACA,IAAIR,QAAJ,EAAc;QACZV,WAAW,GAAGa,aAAa,CAACF,QAAd,GAAyBC,MAAzB,GAAkCF,QAAhD;MACD,CAFD,MAEO;QACLV,WAAW,GAAGa,aAAa,CAACF,QAAd,GAAyBC,MAAvC;MACD;IACF;EACF,CAdD,MAcO,IAAI,CAACN,GAAG,GAAGL,GAAG,CAACJ,SAAX,KAAyBS,GAAG,CAACa,IAAJ,KAAa,SAA1C,EAAqD;IAC1D,IAAIC,SAAS,GAAGd,GAAG,CAACZ,WAAJ,EAAhB;IACA,IAAI2B,iBAAiB,GAAGpB,GAAG,CAACqB,IAAJ,CAASC,eAAT,EAAxB;IACAF,iBAAiB,CAACG,iBAAlB,CAAoCzB,OAApC;IACAsB,iBAAiB,CAACI,WAAlB,CAA8B,UAA9B,EAA0CL,SAA1C;IACApB,WAAW,GAAGqB,iBAAiB,CAACK,IAAlB,CAAuBd,MAArC;EACD;;EACD,OAAOZ,WAAP;AACD,CA3BM"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/tokenizer/token-text.jsx"],"names":["log","Text","predefined","cursor","backgroundColor","yellow","border","correct","green","text","classes","onClick","formattedText","replace","className","__html","notAllowedCharacters","TokenText","event","props","onSelectToken","tokens","preventDefault","window","selection","getSelection","textSelected","toString","length","indexOf","root","offset","newLineOffset","slice","undefined","endIndex","i","start","end","hasOverlap","tokensToRemove","surroundedTokens","token","onTokenClick","normalized","r","map","t","index","React","Component","PropTypes","string","isRequired","array","func"],"mappings":"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","sourcesContent":["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 },\n correct: {\n backgroundColor: green[500]\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 (\n <span\n onClick={onClick}\n className={className}\n dangerouslySetInnerHTML={{ __html: formattedText }}\n />\n );\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"],"file":"token-text.js"}
1
+ {"version":3,"file":"token-text.js","names":["log","debug","Text","withStyles","predefined","cursor","backgroundColor","yellow","border","correct","green","text","classes","onClick","formattedText","replace","className","classNames","__html","notAllowedCharacters","TokenText","event","props","onSelectToken","tokens","preventDefault","window","selection","getSelection","textSelected","toString","length","indexOf","root","offset","getCaretCharacterOffsetWithin","newLineOffset","slice","undefined","endIndex","i","intersection","start","end","hasOverlap","clearSelection","tokensToRemove","surroundedTokens","token","onTokenClick","normalized","normalize","r","map","t","index","React","Component","PropTypes","string","isRequired","array","func"],"sources":["../../src/tokenizer/token-text.jsx"],"sourcesContent":["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 },\n correct: {\n backgroundColor: green[500]\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 (\n <span\n onClick={onClick}\n className={className}\n dangerouslySetInnerHTML={{ __html: formattedText }}\n />\n );\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"],"mappings":"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"}
package/lib/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/utils.js"],"names":["createElementFromHTML","htmlString","div","document","createElement","innerHTML","trim","parseBrs","dom","brs","querySelectorAll","forEach","br","replaceWith","replace","parseParagraph","paragraph","end","parseParagraphs","paragraphs","str","par","index","length","prepareText","text","txtDom","allDomElements","Array","from"],"mappings":";;;;;;;AAAA,IAAMA,qBAAqB,GAAG,SAAxBA,qBAAwB,GAAqB;AAAA,MAApBC,UAAoB,uEAAP,EAAO;AACjD,MAAMC,GAAG,GAAGC,QAAQ,CAACC,aAAT,CAAuB,KAAvB,CAAZ;AAEAF,EAAAA,GAAG,CAACG,SAAJ,GAAgBJ,UAAU,CAACK,IAAX,EAAhB;AAEA,SAAOJ,GAAP;AACD,CAND;;AAQO,IAAMK,QAAQ,GAAG,SAAXA,QAAW,CAAAC,GAAG,EAAI;AAC7B,MAAMC,GAAG,GAAGD,GAAG,CAACE,gBAAJ,CAAqB,IAArB,CAAZ;AAEAD,EAAAA,GAAG,CAACE,OAAJ,CAAY,UAAAC,EAAE;AAAA,WAAIA,EAAE,CAACC,WAAH,CAAe,IAAf,CAAJ;AAAA,GAAd;AAEAL,EAAAA,GAAG,CAACH,SAAJ,GAAgBG,GAAG,CAACH,SAAJ,CAAcS,OAAd,CAAsB,OAAtB,EAA+B,IAA/B,CAAhB;AACD,CANM;;;;AAQA,IAAMC,cAAc,GAAG,SAAjBA,cAAiB,CAACC,SAAD,EAAYC,GAAZ,EAAoB;AAChD,MAAIA,GAAJ,EAAS;AACP,WAAOD,SAAS,CAACX,SAAjB;AACD;;AAED,mBAAUW,SAAS,CAACX,SAApB;AACD,CANM;;;;AAQA,IAAMa,eAAe,GAAG,SAAlBA,eAAkB,CAAAV,GAAG,EAAI;AACpC,MAAMW,UAAU,GAAGX,GAAG,CAACE,gBAAJ,CAAqB,GAArB,CAAnB,CADoC,CAEpC;;AACA,MAAIU,GAAG,GAAG,EAAV;AAEAD,EAAAA,UAAU,CAACR,OAAX,CAAmB,UAACU,GAAD,EAAMC,KAAN,EAAgB;AACjCF,IAAAA,GAAG,IAAIL,cAAc,CAACM,GAAD,EAAMC,KAAK,KAAKH,UAAU,CAACI,MAAX,GAAoB,CAApC,CAArB;AACD,GAFD;AAIA,SAAOH,GAAG,IAAI,IAAd;AACD,CAVM;;;;AAYA,IAAMI,WAAW,GAAG,SAAdA,WAAc,CAAAC,IAAI,EAAI;AACjC,MAAIC,MAAM,GAAG1B,qBAAqB,CAACyB,IAAD,CAAlC;AACA,MAAME,cAAc,GAAGC,KAAK,CAACC,IAAN,CAAWH,MAAM,CAAChB,gBAAP,CAAwB,GAAxB,CAAX,CAAvB;;AAEA,MAAIgB,MAAM,CAAChB,gBAAP,CAAwB,GAAxB,EAA6Ba,MAA7B,KAAwC,CAA5C,EAA+C;AAC7C,QAAMrB,GAAG,GAAGC,QAAQ,CAACC,aAAT,CAAuB,KAAvB,CAAZ;AAEAF,IAAAA,GAAG,CAACG,SAAJ,gBAAsBqB,MAAM,CAACrB,SAA7B;AACAqB,IAAAA,MAAM,GAAGxB,GAAT;AACD,GATgC,CAWjC;;;AACA,MAAIyB,cAAc,CAACJ,MAAf,KAA0B,CAA9B,EAAiC;AAC/B,WAAOE,IAAP;AACD;;AAEDlB,EAAAA,QAAQ,CAACmB,MAAD,CAAR;AAEA,SAAOR,eAAe,CAACQ,MAAD,CAAtB;AACD,CAnBM","sourcesContent":["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"],"file":"utils.js"}
1
+ {"version":3,"file":"utils.js","names":["createElementFromHTML","htmlString","div","document","createElement","innerHTML","trim","parseBrs","dom","brs","querySelectorAll","forEach","br","replaceWith","replace","parseParagraph","paragraph","end","parseParagraphs","paragraphs","str","par","index","length","prepareText","text","txtDom","allDomElements","Array","from"],"sources":["../src/utils.js"],"sourcesContent":["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"],"mappings":";;;;;;;AAAA,IAAMA,qBAAqB,GAAG,SAAxBA,qBAAwB,GAAqB;EAAA,IAApBC,UAAoB,uEAAP,EAAO;EACjD,IAAMC,GAAG,GAAGC,QAAQ,CAACC,aAAT,CAAuB,KAAvB,CAAZ;EAEAF,GAAG,CAACG,SAAJ,GAAgBJ,UAAU,CAACK,IAAX,EAAhB;EAEA,OAAOJ,GAAP;AACD,CAND;;AAQO,IAAMK,QAAQ,GAAG,SAAXA,QAAW,CAAAC,GAAG,EAAI;EAC7B,IAAMC,GAAG,GAAGD,GAAG,CAACE,gBAAJ,CAAqB,IAArB,CAAZ;EAEAD,GAAG,CAACE,OAAJ,CAAY,UAAAC,EAAE;IAAA,OAAIA,EAAE,CAACC,WAAH,CAAe,IAAf,CAAJ;EAAA,CAAd;EAEAL,GAAG,CAACH,SAAJ,GAAgBG,GAAG,CAACH,SAAJ,CAAcS,OAAd,CAAsB,OAAtB,EAA+B,IAA/B,CAAhB;AACD,CANM;;;;AAQA,IAAMC,cAAc,GAAG,SAAjBA,cAAiB,CAACC,SAAD,EAAYC,GAAZ,EAAoB;EAChD,IAAIA,GAAJ,EAAS;IACP,OAAOD,SAAS,CAACX,SAAjB;EACD;;EAED,iBAAUW,SAAS,CAACX,SAApB;AACD,CANM;;;;AAQA,IAAMa,eAAe,GAAG,SAAlBA,eAAkB,CAAAV,GAAG,EAAI;EACpC,IAAMW,UAAU,GAAGX,GAAG,CAACE,gBAAJ,CAAqB,GAArB,CAAnB,CADoC,CAEpC;;EACA,IAAIU,GAAG,GAAG,EAAV;EAEAD,UAAU,CAACR,OAAX,CAAmB,UAACU,GAAD,EAAMC,KAAN,EAAgB;IACjCF,GAAG,IAAIL,cAAc,CAACM,GAAD,EAAMC,KAAK,KAAKH,UAAU,CAACI,MAAX,GAAoB,CAApC,CAArB;EACD,CAFD;EAIA,OAAOH,GAAG,IAAI,IAAd;AACD,CAVM;;;;AAYA,IAAMI,WAAW,GAAG,SAAdA,WAAc,CAAAC,IAAI,EAAI;EACjC,IAAIC,MAAM,GAAG1B,qBAAqB,CAACyB,IAAD,CAAlC;EACA,IAAME,cAAc,GAAGC,KAAK,CAACC,IAAN,CAAWH,MAAM,CAAChB,gBAAP,CAAwB,GAAxB,CAAX,CAAvB;;EAEA,IAAIgB,MAAM,CAAChB,gBAAP,CAAwB,GAAxB,EAA6Ba,MAA7B,KAAwC,CAA5C,EAA+C;IAC7C,IAAMrB,GAAG,GAAGC,QAAQ,CAACC,aAAT,CAAuB,KAAvB,CAAZ;IAEAF,GAAG,CAACG,SAAJ,gBAAsBqB,MAAM,CAACrB,SAA7B;IACAqB,MAAM,GAAGxB,GAAT;EACD,CATgC,CAWjC;;;EACA,IAAIyB,cAAc,CAACJ,MAAf,KAA0B,CAA9B,EAAiC;IAC/B,OAAOE,IAAP;EACD;;EAEDlB,QAAQ,CAACmB,MAAD,CAAR;EAEA,OAAOR,eAAe,CAACQ,MAAD,CAAtB;AACD,CAnBM"}
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "1.8.6-next.234+3bb6d0e9",
6
+ "version": "1.8.6-next.308+40b281fe",
7
7
  "description": "Some react components for text selection",
8
8
  "keywords": [
9
9
  "react",
@@ -18,7 +18,7 @@
18
18
  "license": "ISC",
19
19
  "dependencies": {
20
20
  "@pie-framework/parse-english": "^1.0.0",
21
- "@pie-lib/render-ui": "^4.12.1-next.234+3bb6d0e9",
21
+ "@pie-lib/render-ui": "^4.12.1-next.308+40b281fe",
22
22
  "@pie-lib/style-utils": "^0.1.25",
23
23
  "classnames": "^2.2.6",
24
24
  "debug": "^4.1.1",
@@ -38,6 +38,6 @@
38
38
  "@material-ui/core": "^3.8.3",
39
39
  "react": "^16.8.1"
40
40
  },
41
- "gitHead": "3bb6d0e9216e3292f4fcd4ff5c557397d62fb82f",
41
+ "gitHead": "40b281fe21d11c0fab3842c8bd271efcfbbe5214",
42
42
  "scripts": {}
43
43
  }