@pie-element/select-text 9.5.11-next.19 → 9.5.11-next.24

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/design.jsx"],"names":["Panel","settings","toggle","radio","dropdown","log","Design","props","val","apply","u","text","tokens","updateText","clearTokens","event","target","value","mode","correctTokenCount","filter","t","correct","length","max","isFinite","maxSelections","Math","fn","onModelChanged","model","update","feedback","partialScoring","prompt","teacherInstructions","rationale","elems","annotation","classes","id","forEach","elem","dataset","className","token","selectedElems","selectionDetails","start","end","Date","getTime","join","createDOMAnnotation","html","onClickHandler","container","document","createElement","innerHTML","splitSentences","pattern","matches","match","processNode","node","nodeType","Node","TEXT_NODE","sentences","textContent","fragment","createDocumentFragment","sentence","trim","span","addEventListener","e","appendChild","createTextNode","replaceWith","ELEMENT_NODE","Array","from","childNodes","selection","window","getSelection","detail","rangeCount","wrapSelectionInSpan","correctMode","state","classList","textRef","setState","tokenizedText","tokenized","wrapWordsInSpans","handleTokenClick","console","wrapSentencesInSpans","wrapParagraphContentInSpan","selectMode","nProps","onClick","words","split","word","querySelectorAll","p","firstChild","range","getRangeAt","collapsed","contents","extractContents","insertNode","removeAllRanges","textValue","configuration","imageSupport","onConfigurationChanged","uploadSoundSupport","baseInputConfiguration","correctAnswer","contentDimensions","highlightChoices","selectionCount","selections","settingsPanelDisabled","scoringType","spellCheck","studentInstructions","maxImageWidth","maxImageHeight","withRubric","mathMlOptions","language","languageChoices","errors","extraCSSRules","feedbackEnabled","promptEnabled","rationaleEnabled","spellCheckEnabled","teacherInstructionsEnabled","toolbarEditorPosition","promptError","rationaleError","selectionsError","teacherInstructionsError","tokensError","validationMessage","defaultImageMaxWidth","defaultImageMaxHeight","tokensModel","toolbarOpts","position","panelSettings","label","enabled","options","panelProperties","studentInstructionsEnabled","rubricEnabled","getPluginProps","Settings","Properties","promptHolder","onTeacherInstructionsChanged","inputConfiguration","errorText","onPromptChanged","subheader","selectWords","selectSentences","selectParagraphs","textContainer","r","clearSelection","handleSelection","__html","changeText","onRationaleChanged","changeFeedback","React","Component","PropTypes","object","isRequired","func","shape","add","theme","tokenizerContainer","paddingRight","marginRight","bottom","left","right","height","content","backgroundColor","palette","primary","main","marginBottom","spacing","unit","chip","marginTop","input","width","tokenizer","mainOpts","justifyContent","display","alignItems","paddingTop","tokensDetails","flexWrap","numberField","margin","tooltip","fontSize","typography","whiteSpace","maxWidth","color","error","paddingBottom","borderBottom","padding","border","borderRadius","overflowY","overflowWrap","userSelect","cursor"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport TextField from '@material-ui/core/TextField';\nimport { withStyles } from '@material-ui/core/styles';\nimport cloneDeep from 'lodash/cloneDeep';\nimport debounce from 'lodash/debounce';\nimport { Tokenizer, Controls } from '@pie-lib/pie-toolbox/text-select';\nimport { InputContainer, NumberTextField, FeedbackConfig, settings, layout } from '@pie-lib/pie-toolbox/config-ui';\nimport Chip from '@material-ui/core/Chip';\nimport Info from '@material-ui/icons/Info';\nimport debug from 'debug';\nimport { EditableHtml } from '@pie-lib/pie-toolbox/editable-html';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport { clearSelection, generateValidationMessage } from './utils';\n// import {\n// clearSelection,\n// getDOMNodes,\n// getLabelElement,\n// getRangeDetails,\n// isSideLabel,\n// wrapRange,\n// } from '@pie-element/extended-text-entry/src/annotation/annotation-utils';\nimport classNames from 'classnames';\n\nimport Switch from '@material-ui/core/Switch';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\n\nconst { Panel, toggle, radio, dropdown } = settings;\n\nconst log = debug('@pie-element:select-text:configure');\n\nexport class Design extends React.Component {\n static propTypes = {\n model: PropTypes.object.isRequired,\n configuration: PropTypes.object.isRequired,\n classes: PropTypes.object.isRequired,\n onModelChanged: PropTypes.func.isRequired,\n onConfigurationChanged: PropTypes.func.isRequired,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n uploadSoundSupport: PropTypes.object,\n };\n\n static defaultProps = {};\n\n constructor(props) {\n super(props);\n\n const { model } = this.props;\n\n this.state = {\n correctMode: false,\n selectMode: false,\n text: (model && model.text) || '',\n tokenizedText: (model && model.token) || '',\n };\n }\n\n UNSAFE_componentWillReceiveProps(nProps) {\n const { model } = nProps;\n\n if (model && model.text) {\n this.setState({\n text: model.text,\n tokenizedText: model.text,\n });\n\n // model.tokens.forEach((annotation) => {\n // console.log('annotation', annotation);\n // const [domStart, domEnd] = getDOMNodes(annotation.start, annotation.end, this.textRef);\n // console.log('domStart, domEnd', domStart, domEnd);\n //\n // if (domStart && domEnd) {\n // const range = document.createRange();\n //\n // range.setStart(domStart.node, domStart.offset);\n // range.setEnd(domEnd.node, domEnd.offset);\n //\n // const spans = wrapRange(range);\n //\n // this.createDOMAnnotation(spans, annotation);\n // }\n // });\n }\n }\n\n updateText = debounce((val) => {\n this.apply((u) => {\n u.text = val;\n u.tokens = [];\n });\n }, 200);\n\n changeText = (text) => {\n this.updateText(text);\n this.clearTokens();\n };\n\n changeTextEvent = (event) => this.updateText(event.target.value);\n\n changeTokens = (tokens, mode) => {\n this.apply((u) => {\n u.tokens = tokens;\n u.mode = mode;\n\n const correctTokenCount = tokens.filter((t) => t.correct).length;\n const max = isFinite(u.maxSelections) ? u.maxSelections : 0;\n\n u.maxSelections = Math.max(max, correctTokenCount);\n });\n };\n\n changeMaxSelections = (event, max) => {\n this.apply((u) => (u.maxSelections = max));\n };\n\n apply = (fn) => {\n const { onModelChanged, model } = this.props;\n const update = cloneDeep(model);\n\n fn(update);\n onModelChanged(update);\n };\n\n changeFeedback = (feedback) => {\n this.apply((u) => (u.feedback = feedback));\n };\n\n changePartialScoring = (partialScoring) => {\n const { onModelChanged, model } = this.props;\n const update = cloneDeep(model);\n update.partialScoring = partialScoring;\n\n onModelChanged(update);\n };\n\n onPromptChanged = (prompt) => {\n const { onModelChanged, model } = this.props;\n const update = cloneDeep(model);\n\n update.prompt = prompt;\n onModelChanged(update);\n };\n\n onTeacherInstructionsChanged = (teacherInstructions) => {\n const { onModelChanged, model } = this.props;\n const update = cloneDeep(model);\n\n update.teacherInstructions = teacherInstructions;\n onModelChanged(update);\n };\n\n onRationaleChanged = (rationale) => {\n const { onModelChanged, model } = this.props;\n\n onModelChanged({ ...model, rationale });\n };\n\n // Highlight functionalities based on extended-text-entry\n\n createDOMAnnotation = (elems, annotation) => {\n const { classes } = this.props;\n const { id } = annotation;\n\n (elems || []).forEach((elem) => {\n elem.dataset.id = id;\n elem.className = classNames(classes.token);\n // elem.onclick = !disabled && this.handleClick;\n // elem.onmouseover = this.handleHover;\n // elem.onmouseout = this.handleCancelHover;\n });\n };\n\n createNewAnnotation = (selectedElems, selectionDetails) => {\n const annotation = {\n id: [selectionDetails.start, selectionDetails.end, new Date().getTime()].join('-'),\n ...selectionDetails,\n };\n\n this.createDOMAnnotation(selectedElems, annotation);\n\n return annotation;\n };\n\n // addAnnotation = (type) => {\n // const { annotations, onChange } = this.props;\n // const annotation = this.createNewAnnotation('', type);\n // const labelElem = getLabelElement(annotation.id);\n //\n // annotations.push(annotation);\n //\n // this.setState({\n // openedMenu: false,\n // openedEditor: true,\n // annotationIndex: annotations.length - 1,\n // annotation,\n // labelElem,\n // });\n //\n // onChange(annotations);\n // };\n\n // new functionalities\n\n wrapWordsInSpans(html, onClick) {\n const { classes } = this.props;\n const container = document.createElement('div');\n container.innerHTML = html;\n\n const processNode = (node) => {\n if (node.nodeType === Node.TEXT_NODE) {\n const words = node.textContent.split(/(\\s+|\\b)/); // split by word boundaries + spaces\n const fragment = document.createDocumentFragment();\n\n for (const word of words) {\n if (word.trim()) {\n const span = document.createElement('span');\n\n span.className = classNames(classes.token);\n span.addEventListener('click', (e) => onClick(e));\n span.textContent = word;\n fragment.appendChild(span);\n } else {\n fragment.appendChild(document.createTextNode(word));\n }\n }\n\n node.replaceWith(fragment);\n } else if (node.nodeType === Node.ELEMENT_NODE) {\n Array.from(node.childNodes).forEach(processNode);\n }\n };\n\n Array.from(container.childNodes).forEach(processNode);\n\n return container.innerHTML;\n }\n\n wrapSentencesInSpans = (html, onClickHandler = null) => {\n const { classes } = this.props;\n const container = document.createElement('div');\n container.innerHTML = html;\n\n const splitSentences = (text) => {\n // Match sentences ending with punctuation:\n // \".\" or \"!\" or \"?\"\n const pattern = /([^.!?]+[.!?]+[\\s\"]*)|([^.!?]+$)/g;\n const matches = text.match(pattern);\n return matches || [];\n };\n\n const processNode = (node) => {\n if (node.nodeType === Node.TEXT_NODE) {\n const sentences = splitSentences(node.textContent);\n const fragment = document.createDocumentFragment();\n\n for (const sentence of sentences) {\n if (sentence.trim()) {\n const span = document.createElement('span');\n span.textContent = sentence;\n span.className = classNames(classes.token);\n\n if (onClickHandler) {\n span.addEventListener('click', (e) => {\n onClickHandler(e, sentence);\n });\n }\n\n fragment.appendChild(span);\n } else {\n fragment.appendChild(document.createTextNode(sentence));\n }\n }\n\n node.replaceWith(fragment);\n } else if (node.nodeType === Node.ELEMENT_NODE) {\n Array.from(node.childNodes).forEach(processNode);\n }\n };\n\n Array.from(container.childNodes).forEach(processNode);\n\n return container;\n };\n\n wrapParagraphContentInSpan(html) {\n const { classes } = this.props;\n const container = document.createElement('div');\n container.innerHTML = html;\n\n container.querySelectorAll('p').forEach((p) => {\n const span = document.createElement('span');\n span.className = classNames(classes.token);\n span.addEventListener('click', this.handleTokenClick);\n\n // Move all children of <p> into the span\n while (p.firstChild) {\n span.appendChild(p.firstChild);\n }\n\n p.appendChild(span);\n });\n\n return container;\n }\n\n wrapSelectionInSpan(selection) {\n const { classes } = this.props;\n const range = selection.getRangeAt(0);\n\n if (range.collapsed) {\n console.log('Selection is collapsed (no text selected).');\n return;\n }\n\n // Extract the contents of the selection\n const contents = range.extractContents();\n\n // Create the span wrapper\n const span = document.createElement('span');\n span.className = classNames(classes.token);\n span.addEventListener('click', this.handleTokenClick);\n span.appendChild(contents);\n\n // Insert back into the DOM\n range.insertNode(span);\n\n // Collapse the selection\n selection.removeAllRanges();\n }\n\n handleSelection = (event) => {\n const selection = window.getSelection();\n\n // prevent unwanted selections\n if (event.detail > 2) {\n clearSelection();\n return;\n }\n\n if (selection && selection.rangeCount > 0) {\n this.wrapSelectionInSpan(selection);\n clearSelection();\n }\n };\n\n handleTokenClick = (event) => {\n const { correctMode } = this.state;\n\n if (!correctMode) {\n return;\n }\n\n event.target.classList.toggle('correct');\n };\n\n clearTokens = () => {\n const { model } = this.props;\n\n const container = document.createElement('div');\n container.innerHTML = model.text;\n\n // Remove all children and add new content\n this.textRef.innerHTML = '';\n this.textRef.appendChild(container);\n\n this.setState({ tokenizedText: model.text });\n };\n\n selectWords = () => {\n const { text } = this.state;\n this.clearTokens();\n const tokenized = this.wrapWordsInSpans(text, (e) => this.handleTokenClick(e));\n\n console.log('words:', tokenized);\n\n this.setState({ tokenizedText: tokenized });\n };\n\n selectSentences = () => {\n const { text } = this.state;\n this.clearTokens();\n const container = this.wrapSentencesInSpans(text);\n\n // Remove all children and add new content\n this.textRef.innerHTML = '';\n this.textRef.appendChild(container);\n\n const tokenized = container.innerHTML;\n console.log('sentences:', tokenized);\n // this.setState({ tokenizedText: tokenized });\n };\n\n selectParagraphs = () => {\n const { text } = this.state;\n this.clearTokens();\n const container = this.wrapParagraphContentInSpan(text);\n\n // Remove all children and add new content\n this.textRef.innerHTML = '';\n this.textRef.appendChild(container);\n\n const tokenized = container.innerHTML;\n console.log('paragraphs:', tokenized);\n // this.setState({ tokenizedText: tokenized });\n };\n\n render() {\n const { text: textValue, correctMode, selectMode, tokenizedText } = this.state;\n const { classes, configuration, imageSupport, model, onConfigurationChanged, onModelChanged, uploadSoundSupport } =\n this.props;\n const {\n baseInputConfiguration = {},\n correctAnswer = {},\n contentDimensions = {},\n feedback = {},\n highlightChoices = {},\n mode = {},\n partialScoring = {},\n prompt = {},\n rationale = {},\n selectionCount = {},\n selections = {},\n settingsPanelDisabled,\n scoringType = {},\n spellCheck = {},\n studentInstructions = {},\n teacherInstructions = {},\n text = {},\n tokens = {},\n maxImageWidth = {},\n maxImageHeight = {},\n withRubric = {},\n mathMlOptions = {},\n language = {},\n languageChoices = {},\n } = configuration || {};\n const {\n errors,\n extraCSSRules,\n feedbackEnabled,\n promptEnabled,\n rationaleEnabled,\n spellCheckEnabled,\n teacherInstructionsEnabled,\n toolbarEditorPosition,\n } = model || {};\n\n const {\n prompt: promptError,\n rationale: rationaleError,\n selectionsError,\n teacherInstructions: teacherInstructionsError,\n tokensError,\n } = errors || {};\n const validationMessage = generateValidationMessage(configuration);\n\n const defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;\n const defaultImageMaxHeight = maxImageHeight && maxImageHeight.prompt;\n\n let { tokens: tokensModel } = model;\n tokensModel = tokensModel || [];\n\n const toolbarOpts = {\n position: toolbarEditorPosition === 'top' ? 'top' : 'bottom',\n };\n\n log('[render] maxSelections:', model.maxSelections);\n\n const panelSettings = {\n partialScoring: partialScoring.settings && toggle(partialScoring.label),\n highlightChoices: highlightChoices.settings && toggle(highlightChoices.label),\n feedbackEnabled: feedback.settings && toggle(feedback.label),\n 'language.enabled': language.settings && toggle(language.label, true),\n language: language.settings && language.enabled && dropdown(languageChoices.label, languageChoices.options),\n };\n\n const panelProperties = {\n teacherInstructionsEnabled: teacherInstructions.settings && toggle(teacherInstructions.label),\n studentInstructionsEnabled: studentInstructions.settings && toggle(studentInstructions.label),\n promptEnabled: prompt.settings && toggle(prompt.label),\n rationaleEnabled: rationale.settings && toggle(rationale.label),\n spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label),\n scoringType: scoringType.settings && radio(scoringType.label, ['auto', 'rubric']),\n rubricEnabled: withRubric?.settings && toggle(withRubric?.label),\n };\n\n const getPluginProps = (props = {}) => ({\n ...baseInputConfiguration,\n ...props,\n });\n\n return (\n <layout.ConfigLayout\n extraCSSRules={extraCSSRules}\n dimensions={contentDimensions}\n hideSettings={settingsPanelDisabled}\n settings={\n <Panel\n model={model}\n configuration={configuration}\n onChangeModel={(model) => onModelChanged(model)}\n onChangeConfiguration={onConfigurationChanged}\n groups={{\n Settings: panelSettings,\n Properties: panelProperties,\n }}\n />\n }\n >\n {teacherInstructionsEnabled && (\n <InputContainer label={teacherInstructions.label} className={classes.promptHolder}>\n <EditableHtml\n className={classes.prompt}\n markup={model.teacherInstructions || ''}\n onChange={this.onTeacherInstructionsChanged}\n imageSupport={imageSupport}\n nonEmpty={false}\n error={teacherInstructionsError}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(configuration?.teacherInstructions?.inputConfiguration)}\n spellCheck={spellCheckEnabled}\n maxImageWidth={(maxImageWidth && maxImageWidth.teacherInstructions) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.teacherInstructions) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n {teacherInstructionsError && <div className={classes.errorText}>{teacherInstructionsError}</div>}\n </InputContainer>\n )}\n\n {promptEnabled && (\n <InputContainer label={prompt.label || ''} className={classes.promptHolder}>\n <EditableHtml\n className={classes.prompt}\n markup={model.prompt}\n onChange={this.onPromptChanged}\n imageSupport={imageSupport}\n error={promptError}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(configuration?.prompt?.inputConfiguration)}\n spellCheck={spellCheckEnabled}\n maxImageWidth={defaultImageMaxWidth}\n maxImageHeight={defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n {promptError && <div className={classes.errorText}>{promptError}</div>}\n </InputContainer>\n )}\n\n {/*{text.settings && (*/}\n {/* <InputContainer label={text.label || ''} className={classes.promptHolder}>*/}\n {/* <TextField*/}\n {/* className={classes.input}*/}\n {/* multiline*/}\n {/* defaultValue={textValue}*/}\n {/* onChange={this.changeTextEvent}*/}\n {/* spellCheck={spellCheckEnabled}*/}\n {/* />*/}\n {/* </InputContainer>*/}\n {/*)}*/}\n\n {/*{tokens.settings && (*/}\n {/* <InputContainer label={tokens.label || ''} className={classes.tokenizerContainer}>*/}\n {/* <Tooltip*/}\n {/* classes={{ tooltip: classes.tooltip }}*/}\n {/* disableFocusListener*/}\n {/* disableTouchListener*/}\n {/* placement={'right'}*/}\n {/* title={validationMessage}*/}\n {/* >*/}\n {/* <Info fontSize={'small'} color={'primary'} style={{ position: 'absolute', left: '48px', top: '-3px' }} />*/}\n {/* </Tooltip>*/}\n\n {/* <Tokenizer*/}\n {/* className={classes.tokenizer}*/}\n {/* text={model.text}*/}\n {/* tokens={tokensModel}*/}\n {/* onChange={this.changeTokens}*/}\n {/* />*/}\n {/* </InputContainer>*/}\n {/*)}*/}\n {/*{tokensError && <div className={classes.errorText}>{tokensError}</div>}*/}\n {/*{selectionsError && <div className={classes.errorText}>{selectionsError}</div>}*/}\n\n {/*<div className={classes.tokensDetails}>*/}\n {/* {mode.settings && (*/}\n {/* <Chip label={`${mode.label}: ${model.mode ? model.mode : 'None'}`} className={classes.chip} />*/}\n {/* )}*/}\n\n {/* {selections.settings && (*/}\n {/* <Chip label={`${selections.label}: ${tokensModel.length}`} className={classes.chip} />*/}\n {/* )}*/}\n\n {/* {correctAnswer.settings && (*/}\n {/* <Chip*/}\n {/* label={`${correctAnswer.label}: ${tokensModel.filter((t) => t.correct).length}`}*/}\n {/* className={classes.chip}*/}\n {/* />*/}\n {/* )}*/}\n\n {/* {selectionCount.settings && (*/}\n {/* <NumberTextField*/}\n {/* min={tokensModel.filter((t) => t.correct).length || 0}*/}\n {/* label={`${selectionCount.label} (0:any)`}*/}\n {/* max={tokensModel.length}*/}\n {/* value={model.maxSelections}*/}\n {/* onChange={this.changeMaxSelections}*/}\n {/* className={classes.numberField}*/}\n {/* />*/}\n {/* )}*/}\n {/*</div>*/}\n\n <div className={classes.subheader}>\n NEW functionality\n <FormControlLabel\n control={<Switch checked={selectMode} onChange={() => this.setState({ selectMode: !selectMode })} />}\n label=\"Select tokens\"\n />\n </div>\n\n {selectMode && (\n <Controls\n onClear={this.clearTokens}\n onWords={this.selectWords}\n onSentences={this.selectSentences}\n onParagraphs={this.selectParagraphs}\n setCorrectMode={correctMode}\n onToggleCorrectMode={() => this.setState({ correctMode: !correctMode })}\n />\n )}\n\n {text.settings && (\n <InputContainer label={text.label || ''} className={classes.promptHolder}>\n {selectMode ? (\n <div\n className={classes.textContainer}\n ref={(r) => (this.textRef = r)}\n onMouseDown={selectMode && !correctMode ? clearSelection : () => {}}\n onMouseUp={selectMode && !correctMode ? this.handleSelection : () => {}}\n dangerouslySetInnerHTML={{ __html: tokenizedText }}\n />\n ) : (\n <EditableHtml\n className={classes.prompt}\n markup={textValue}\n onChange={this.changeText}\n nonEmpty={false}\n disableUnderline\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(text?.inputConfiguration)}\n spellCheck={spellCheckEnabled}\n imageSupport={imageSupport}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n )}\n </InputContainer>\n )}\n\n {rationaleEnabled && (\n <InputContainer label={rationale.label || ''} className={classes.promptHolder}>\n <EditableHtml\n className={classes.prompt}\n markup={model.rationale || ''}\n onChange={this.onRationaleChanged}\n imageSupport={imageSupport}\n error={rationaleError}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(configuration?.rationale?.inputConfiguration)}\n spellCheck={spellCheckEnabled}\n maxImageWidth={(maxImageWidth && maxImageWidth.rationale) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.rationale) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n {rationaleError && <div className={classes.errorText}>{rationaleError}</div>}\n </InputContainer>\n )}\n\n {feedbackEnabled && (\n <FeedbackConfig feedback={model.feedback} onChange={this.changeFeedback} toolbarOpts={toolbarOpts} />\n )}\n </layout.ConfigLayout>\n );\n }\n}\n\nexport default withStyles((theme) => ({\n tokenizerContainer: {\n paddingRight: 0,\n marginRight: 0,\n '&:after': {\n position: 'absolute',\n bottom: 0,\n left: 0,\n right: 0,\n height: '1px',\n content: '\"\"',\n backgroundColor: theme.palette.primary.main,\n },\n marginBottom: theme.spacing.unit,\n },\n chip: {\n marginTop: theme.spacing.unit / 2,\n marginRight: theme.spacing.unit * 2,\n },\n input: {\n width: '100%',\n },\n tokenizer: {\n marginTop: theme.spacing.unit * 2,\n },\n mainOpts: {\n width: '100%',\n justifyContent: 'space-between',\n display: 'flex',\n alignItems: 'baseline',\n },\n promptHolder: {\n width: '100%',\n paddingTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\n },\n tokensDetails: {\n display: 'flex',\n alignItems: 'center',\n flexWrap: 'wrap',\n marginBottom: theme.spacing.unit * 2.5,\n },\n numberField: {\n width: '180px',\n margin: `${theme.spacing.unit / 2}px auto 0`,\n },\n tooltip: {\n fontSize: theme.typography.fontSize - 2,\n whiteSpace: 'pre',\n maxWidth: '500px',\n },\n errorText: {\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingTop: theme.spacing.unit,\n },\n\n subheader: {\n paddingBottom: '8px',\n borderBottom: '1px solid grey',\n marginBottom: '16px',\n marginTop: '24px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n },\n textContainer: {\n padding: '15px 21px',\n border: '1px solid #ccc',\n borderRadius: '4px',\n overflowY: 'scroll',\n whiteSpace: 'pre-wrap',\n overflowWrap: 'break-word',\n '& p': {\n margin: 0,\n },\n '& span[data-latex]': {\n userSelect: 'none',\n '-webkit-user-select': 'none',\n '-moz-user-select': 'none',\n '-ms-user-select': 'none',\n },\n },\n token: {\n position: 'relative',\n cursor: 'pointer',\n backgroundColor: '#fff9c4',\n\n '&:hover': {\n backgroundColor: '#E5E0B0',\n },\n\n '&.correct': {\n backgroundColor: '#4caf50',\n },\n },\n}))(Design);\n"],"file":"design.js"}
1
+ {"version":3,"sources":["../src/design.jsx"],"names":["Panel","settings","toggle","radio","dropdown","log","Design","props","val","apply","u","text","tokens","event","updateText","target","value","mode","correctTokenCount","filter","t","correct","length","max","isFinite","maxSelections","Math","fn","onModelChanged","model","update","feedback","partialScoring","prompt","teacherInstructions","rationale","state","nProps","setState","textValue","classes","configuration","imageSupport","onConfigurationChanged","uploadSoundSupport","baseInputConfiguration","correctAnswer","contentDimensions","highlightChoices","selectionCount","selections","settingsPanelDisabled","scoringType","spellCheck","studentInstructions","maxImageWidth","maxImageHeight","withRubric","mathMlOptions","language","languageChoices","errors","extraCSSRules","feedbackEnabled","promptEnabled","rationaleEnabled","spellCheckEnabled","teacherInstructionsEnabled","toolbarEditorPosition","promptError","rationaleError","selectionsError","teacherInstructionsError","tokensError","validationMessage","defaultImageMaxWidth","defaultImageMaxHeight","tokensModel","toolbarOpts","position","panelSettings","label","enabled","options","panelProperties","studentInstructionsEnabled","rubricEnabled","getPluginProps","Settings","Properties","promptHolder","onTeacherInstructionsChanged","inputConfiguration","errorText","onPromptChanged","input","changeText","tokenizerContainer","tooltip","left","top","tokenizer","changeTokens","tokensDetails","chip","changeMaxSelections","numberField","onRationaleChanged","changeFeedback","React","Component","PropTypes","object","isRequired","func","shape","add","theme","paddingRight","marginRight","bottom","right","height","content","backgroundColor","palette","primary","main","marginBottom","spacing","unit","marginTop","width","mainOpts","justifyContent","display","alignItems","paddingTop","flexWrap","margin","fontSize","typography","whiteSpace","maxWidth","color","error"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport TextField from '@material-ui/core/TextField';\nimport { withStyles } from '@material-ui/core/styles';\nimport cloneDeep from 'lodash/cloneDeep';\nimport debounce from 'lodash/debounce';\nimport { Tokenizer } from '@pie-lib/pie-toolbox/text-select';\nimport { InputContainer, NumberTextField, FeedbackConfig, settings, layout } from '@pie-lib/pie-toolbox/config-ui';\nimport Chip from '@material-ui/core/Chip';\nimport Info from '@material-ui/icons/Info';\nimport debug from 'debug';\nimport { EditableHtml } from '@pie-lib/pie-toolbox/editable-html';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport { generateValidationMessage } from './utils';\n\nconst { Panel, toggle, radio, dropdown } = settings;\n\nconst log = debug('@pie-element:select-text:configure');\n\nexport class Design extends React.Component {\n static propTypes = {\n model: PropTypes.object.isRequired,\n configuration: PropTypes.object.isRequired,\n classes: PropTypes.object.isRequired,\n onModelChanged: PropTypes.func.isRequired,\n onConfigurationChanged: PropTypes.func.isRequired,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n uploadSoundSupport: PropTypes.object,\n };\n\n static defaultProps = {};\n\n constructor(props) {\n super(props);\n\n const { model } = this.props;\n\n this.state = {\n text: (model && model.text) || '',\n };\n }\n\n UNSAFE_componentWillReceiveProps(nProps) {\n const { model } = nProps;\n\n if (model && model.text) {\n this.setState({\n text: model.text,\n });\n }\n }\n\n updateText = debounce((val) => {\n this.apply((u) => {\n u.text = val;\n u.tokens = [];\n });\n }, 200);\n\n changeText = (event) => this.updateText(event.target.value);\n\n changeTokens = (tokens, mode) => {\n this.apply((u) => {\n u.tokens = tokens;\n u.mode = mode;\n\n const correctTokenCount = tokens.filter((t) => t.correct).length;\n const max = isFinite(u.maxSelections) ? u.maxSelections : 0;\n\n u.maxSelections = Math.max(max, correctTokenCount);\n });\n };\n\n changeMaxSelections = (event, max) => {\n this.apply((u) => (u.maxSelections = max));\n };\n\n apply = (fn) => {\n const { onModelChanged, model } = this.props;\n const update = cloneDeep(model);\n\n fn(update);\n onModelChanged(update);\n };\n\n changeFeedback = (feedback) => {\n this.apply((u) => (u.feedback = feedback));\n };\n\n changePartialScoring = (partialScoring) => {\n const { onModelChanged, model } = this.props;\n const update = cloneDeep(model);\n update.partialScoring = partialScoring;\n\n onModelChanged(update);\n };\n\n onPromptChanged = (prompt) => {\n const { onModelChanged, model } = this.props;\n const update = cloneDeep(model);\n\n update.prompt = prompt;\n onModelChanged(update);\n };\n\n onTeacherInstructionsChanged = (teacherInstructions) => {\n const { onModelChanged, model } = this.props;\n const update = cloneDeep(model);\n\n update.teacherInstructions = teacherInstructions;\n onModelChanged(update);\n };\n\n onRationaleChanged = (rationale) => {\n const { onModelChanged, model } = this.props;\n\n onModelChanged({ ...model, rationale });\n };\n\n render() {\n const { text: textValue } = this.state;\n const { classes, configuration, imageSupport, model, onConfigurationChanged, onModelChanged, uploadSoundSupport } =\n this.props;\n const {\n baseInputConfiguration = {},\n correctAnswer = {},\n contentDimensions = {},\n feedback = {},\n highlightChoices = {},\n mode = {},\n partialScoring = {},\n prompt = {},\n rationale = {},\n selectionCount = {},\n selections = {},\n settingsPanelDisabled,\n scoringType = {},\n spellCheck = {},\n studentInstructions = {},\n teacherInstructions = {},\n text = {},\n tokens = {},\n maxImageWidth = {},\n maxImageHeight = {},\n withRubric = {},\n mathMlOptions = {},\n language = {},\n languageChoices = {},\n } = configuration || {};\n const {\n errors,\n extraCSSRules,\n feedbackEnabled,\n promptEnabled,\n rationaleEnabled,\n spellCheckEnabled,\n teacherInstructionsEnabled,\n toolbarEditorPosition,\n } = model || {};\n\n const {\n prompt: promptError,\n rationale: rationaleError,\n selectionsError,\n teacherInstructions: teacherInstructionsError,\n tokensError,\n } = errors || {};\n const validationMessage = generateValidationMessage(configuration);\n\n const defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;\n const defaultImageMaxHeight = maxImageHeight && maxImageHeight.prompt;\n\n let { tokens: tokensModel } = model;\n tokensModel = tokensModel || [];\n\n const toolbarOpts = {\n position: toolbarEditorPosition === 'top' ? 'top' : 'bottom',\n };\n\n log('[render] maxSelections:', model.maxSelections);\n\n const panelSettings = {\n partialScoring: partialScoring.settings && toggle(partialScoring.label),\n highlightChoices: highlightChoices.settings && toggle(highlightChoices.label),\n feedbackEnabled: feedback.settings && toggle(feedback.label),\n 'language.enabled': language.settings && toggle(language.label, true),\n language: language.settings && language.enabled && dropdown(languageChoices.label, languageChoices.options),\n };\n\n const panelProperties = {\n teacherInstructionsEnabled: teacherInstructions.settings && toggle(teacherInstructions.label),\n studentInstructionsEnabled: studentInstructions.settings && toggle(studentInstructions.label),\n promptEnabled: prompt.settings && toggle(prompt.label),\n rationaleEnabled: rationale.settings && toggle(rationale.label),\n spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label),\n scoringType: scoringType.settings && radio(scoringType.label, ['auto', 'rubric']),\n rubricEnabled: withRubric?.settings && toggle(withRubric?.label),\n };\n\n const getPluginProps = (props = {}) => ({\n ...baseInputConfiguration,\n ...props,\n });\n\n return (\n <layout.ConfigLayout\n extraCSSRules={extraCSSRules}\n dimensions={contentDimensions}\n hideSettings={settingsPanelDisabled}\n settings={\n <Panel\n model={model}\n configuration={configuration}\n onChangeModel={(model) => onModelChanged(model)}\n onChangeConfiguration={onConfigurationChanged}\n groups={{\n Settings: panelSettings,\n Properties: panelProperties,\n }}\n />\n }\n >\n {teacherInstructionsEnabled && (\n <InputContainer label={teacherInstructions.label} className={classes.promptHolder}>\n <EditableHtml\n className={classes.prompt}\n markup={model.teacherInstructions || ''}\n onChange={this.onTeacherInstructionsChanged}\n imageSupport={imageSupport}\n nonEmpty={false}\n error={teacherInstructionsError}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(configuration?.teacherInstructions?.inputConfiguration)}\n spellCheck={spellCheckEnabled}\n maxImageWidth={(maxImageWidth && maxImageWidth.teacherInstructions) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.teacherInstructions) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n {teacherInstructionsError && <div className={classes.errorText}>{teacherInstructionsError}</div>}\n </InputContainer>\n )}\n\n {promptEnabled && (\n <InputContainer label={prompt.label || ''} className={classes.promptHolder}>\n <EditableHtml\n className={classes.prompt}\n markup={model.prompt}\n onChange={this.onPromptChanged}\n imageSupport={imageSupport}\n error={promptError}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(configuration?.prompt?.inputConfiguration)}\n spellCheck={spellCheckEnabled}\n maxImageWidth={defaultImageMaxWidth}\n maxImageHeight={defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n {promptError && <div className={classes.errorText}>{promptError}</div>}\n </InputContainer>\n )}\n\n {text.settings && (\n <InputContainer label={text.label || ''} className={classes.promptHolder}>\n <TextField\n className={classes.input}\n multiline\n defaultValue={textValue}\n onChange={this.changeText}\n spellCheck={spellCheckEnabled}\n />\n </InputContainer>\n )}\n\n {tokens.settings && (\n <InputContainer label={tokens.label || ''} className={classes.tokenizerContainer}>\n <Tooltip\n classes={{ tooltip: classes.tooltip }}\n disableFocusListener\n disableTouchListener\n placement={'right'}\n title={validationMessage}\n >\n <Info fontSize={'small'} color={'primary'} style={{ position: 'absolute', left: '48px', top: '-3px' }} />\n </Tooltip>\n\n <Tokenizer\n className={classes.tokenizer}\n text={model.text}\n tokens={tokensModel}\n onChange={this.changeTokens}\n />\n </InputContainer>\n )}\n {tokensError && <div className={classes.errorText}>{tokensError}</div>}\n {selectionsError && <div className={classes.errorText}>{selectionsError}</div>}\n\n <div className={classes.tokensDetails}>\n {mode.settings && (\n <Chip label={`${mode.label}: ${model.mode ? model.mode : 'None'}`} className={classes.chip} />\n )}\n\n {selections.settings && (\n <Chip label={`${selections.label}: ${tokensModel.length}`} className={classes.chip} />\n )}\n\n {correctAnswer.settings && (\n <Chip\n label={`${correctAnswer.label}: ${tokensModel.filter((t) => t.correct).length}`}\n className={classes.chip}\n />\n )}\n\n {selectionCount.settings && (\n <NumberTextField\n min={tokensModel.filter((t) => t.correct).length || 0}\n label={`${selectionCount.label} (0:any)`}\n max={tokensModel.length}\n value={model.maxSelections}\n onChange={this.changeMaxSelections}\n className={classes.numberField}\n />\n )}\n </div>\n\n {rationaleEnabled && (\n <InputContainer label={rationale.label || ''} className={classes.promptHolder}>\n <EditableHtml\n className={classes.prompt}\n markup={model.rationale || ''}\n onChange={this.onRationaleChanged}\n imageSupport={imageSupport}\n error={rationaleError}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(configuration?.rationale?.inputConfiguration)}\n spellCheck={spellCheckEnabled}\n maxImageWidth={(maxImageWidth && maxImageWidth.rationale) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.rationale) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n {rationaleError && <div className={classes.errorText}>{rationaleError}</div>}\n </InputContainer>\n )}\n\n {feedbackEnabled && (\n <FeedbackConfig feedback={model.feedback} onChange={this.changeFeedback} toolbarOpts={toolbarOpts} />\n )}\n </layout.ConfigLayout>\n );\n }\n}\n\nexport default withStyles((theme) => ({\n tokenizerContainer: {\n paddingRight: 0,\n marginRight: 0,\n '&:after': {\n position: 'absolute',\n bottom: 0,\n left: 0,\n right: 0,\n height: '1px',\n content: '\"\"',\n backgroundColor: theme.palette.primary.main,\n },\n marginBottom: theme.spacing.unit,\n },\n chip: {\n marginTop: theme.spacing.unit / 2,\n marginRight: theme.spacing.unit * 2,\n },\n input: {\n width: '100%',\n },\n tokenizer: {\n marginTop: theme.spacing.unit * 2,\n },\n mainOpts: {\n width: '100%',\n justifyContent: 'space-between',\n display: 'flex',\n alignItems: 'baseline',\n },\n promptHolder: {\n width: '100%',\n paddingTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\n },\n tokensDetails: {\n display: 'flex',\n alignItems: 'center',\n flexWrap: 'wrap',\n marginBottom: theme.spacing.unit * 2.5,\n },\n numberField: {\n width: '180px',\n margin: `${theme.spacing.unit / 2}px auto 0`,\n },\n tooltip: {\n fontSize: theme.typography.fontSize - 2,\n whiteSpace: 'pre',\n maxWidth: '500px',\n },\n errorText: {\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingTop: theme.spacing.unit,\n },\n}))(Design);\n"],"file":"design.js"}
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.generateValidationMessage = exports.generateModel = exports.clearSelection = void 0;
8
+ exports.generateValidationMessage = exports.generateModel = void 0;
9
9
 
10
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
11
 
@@ -110,31 +110,7 @@ var generateValidationMessage = function generateValidationMessage(config) {
110
110
  var selectionsMessage = '\nThere should be at least 1 ' + (maxSelections ? "and at most ".concat(maxSelections, " ") : '') + 'token' + (maxSelections ? 's' : '') + ' selected.';
111
111
  var message = 'Validation requirements:' + tokensMessage + selectionsMessage;
112
112
  return message;
113
- }; // also used in extended-text-entry
114
-
115
-
116
- exports.generateValidationMessage = generateValidationMessage;
117
-
118
- var clearSelection = function clearSelection() {
119
- if (document.getSelection) {
120
- // for all new browsers (IE9+, Chrome, Firefox)
121
- document.getSelection().removeAllRanges();
122
- document.getSelection().addRange(document.createRange());
123
- } else if (window.getSelection) {
124
- // equals with the document.getSelection (MSDN info)
125
- if (window.getSelection().removeAllRanges) {
126
- // for all new browsers (IE9+, Chrome, Firefox)
127
- window.getSelection().removeAllRanges();
128
- window.getSelection().addRange(document.createRange());
129
- } else if (window.getSelection().empty) {
130
- // Chrome supports this as well
131
- window.getSelection().empty();
132
- }
133
- } else if (document.selection) {
134
- // IE8-
135
- document.selection.empty();
136
- }
137
113
  };
138
114
 
139
- exports.clearSelection = clearSelection;
115
+ exports.generateValidationMessage = generateValidationMessage;
140
116
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/utils.js"],"names":["createElementFromHTML","htmlString","arguments","length","undefined","div","document","createElement","innerHTML","trim","parseParagraph","paragraph","end","concat","parseParagraphs","dom","paragraphs","querySelectorAll","str","forEach","par","index","prepareText","text","txtDom","allDomElements","Array","from","generateModel","model","modelText","newTokens","tokens","reduce","acc","token","tokenText","slice","start","getStartIndex","newStartIndex","indexOf","lastToken","newStart","newEnd","oldStart","oldEnd","generateValidationMessage","config","minTokens","maxTokens","maxSelections","tokensMessage","selectionsMessage","message","clearSelection","getSelection","removeAllRanges","addRange","createRange","window","empty","selection"],"mappings":"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","sourcesContent":["var createElementFromHTML = function createElementFromHTML() {\n var htmlString = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var div = document.createElement('div');\n div.innerHTML = htmlString.trim();\n return div;\n};\n\nvar parseParagraph = function parseParagraph(paragraph, end) {\n if (end) {\n return paragraph.innerHTML;\n }\n\n return ''.concat(paragraph.innerHTML, '\\n\\n');\n};\n\nvar parseParagraphs = function parseParagraphs(dom) {\n var paragraphs = dom.querySelectorAll('div[separator=true]'); // separate variable for easily debugging, if needed\n\n var str = '';\n paragraphs.forEach(function (par, index) {\n str += parseParagraph(par, index === paragraphs.length - 1);\n });\n return str || null;\n};\n\nvar prepareText = function prepareText(text) {\n var txtDom = createElementFromHTML(text);\n\n var div = document.createElement('div');\n div.innerHTML = \"<div separator='true'>\".concat(txtDom.innerHTML, '</div>');\n txtDom = div;\n\n var allDomElements = Array.from(txtDom.querySelectorAll('*'));\n\n if (allDomElements.length === 0) {\n return text;\n }\n\n return parseParagraphs(txtDom);\n};\n\nexport const generateModel = (model) => {\n if (!model) return model;\n\n // parsing\n const modelText = prepareText(model.text || '');\n\n const newTokens = (model.tokens || []).reduce((acc, token = {}) => {\n const tokenText = prepareText((model.text || '').slice(token.start, token.end));\n\n if (!tokenText) {\n return [...acc, token];\n }\n\n const getStartIndex = (start) => {\n let length = start;\n\n while (length >= 0) {\n let newStartIndex = modelText.slice(length).indexOf(tokenText);\n\n if (newStartIndex >= 0) {\n return newStartIndex + length;\n }\n\n length--;\n }\n\n return 0;\n };\n\n const lastToken = acc[acc.length - 1];\n const newStart = getStartIndex(lastToken ? lastToken.end : token.start);\n const newEnd = newStart + tokenText.length;\n\n return [\n ...acc,\n {\n ...token,\n text: tokenText,\n start: newStart,\n end: newEnd,\n // needed for getScore when tokens position is recalculated\n oldStart: token.start,\n oldEnd: token.end,\n },\n ];\n }, []);\n\n return {\n ...model,\n tokens: newTokens,\n text: modelText,\n };\n};\n\nexport const generateValidationMessage = (config) => {\n const { minTokens, maxTokens, maxSelections } = config;\n\n const tokensMessage =\n `\\nThere should be at least ${minTokens} ` + (maxTokens ? `and at most ${maxTokens} ` : '') + 'tokens defined.';\n\n const selectionsMessage =\n '\\nThere should be at least 1 ' +\n (maxSelections ? `and at most ${maxSelections} ` : '') +\n 'token' +\n (maxSelections ? 's' : '') +\n ' selected.';\n\n const message = 'Validation requirements:' + tokensMessage + selectionsMessage;\n\n return message;\n};\n\n// also used in extended-text-entry\nexport 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"],"file":"utils.js"}
1
+ {"version":3,"sources":["../src/utils.js"],"names":["createElementFromHTML","htmlString","arguments","length","undefined","div","document","createElement","innerHTML","trim","parseParagraph","paragraph","end","concat","parseParagraphs","dom","paragraphs","querySelectorAll","str","forEach","par","index","prepareText","text","txtDom","allDomElements","Array","from","generateModel","model","modelText","newTokens","tokens","reduce","acc","token","tokenText","slice","start","getStartIndex","newStartIndex","indexOf","lastToken","newStart","newEnd","oldStart","oldEnd","generateValidationMessage","config","minTokens","maxTokens","maxSelections","tokensMessage","selectionsMessage","message"],"mappings":"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","sourcesContent":["var createElementFromHTML = function createElementFromHTML() {\n var htmlString = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var div = document.createElement('div');\n div.innerHTML = htmlString.trim();\n return div;\n};\n\nvar parseParagraph = function parseParagraph(paragraph, end) {\n if (end) {\n return paragraph.innerHTML;\n }\n\n return ''.concat(paragraph.innerHTML, '\\n\\n');\n};\n\nvar parseParagraphs = function parseParagraphs(dom) {\n var paragraphs = dom.querySelectorAll('div[separator=true]'); // separate variable for easily debugging, if needed\n\n var str = '';\n paragraphs.forEach(function (par, index) {\n str += parseParagraph(par, index === paragraphs.length - 1);\n });\n return str || null;\n};\n\nvar prepareText = function prepareText(text) {\n var txtDom = createElementFromHTML(text);\n\n var div = document.createElement('div');\n div.innerHTML = \"<div separator='true'>\".concat(txtDom.innerHTML, '</div>');\n txtDom = div;\n\n var allDomElements = Array.from(txtDom.querySelectorAll('*'));\n\n if (allDomElements.length === 0) {\n return text;\n }\n\n return parseParagraphs(txtDom);\n};\n\nexport const generateModel = (model) => {\n if (!model) return model;\n\n // parsing\n const modelText = prepareText(model.text || '');\n\n const newTokens = (model.tokens || []).reduce((acc, token = {}) => {\n const tokenText = prepareText((model.text || '').slice(token.start, token.end));\n\n if (!tokenText) {\n return [...acc, token];\n }\n\n const getStartIndex = (start) => {\n let length = start;\n\n while (length >= 0) {\n let newStartIndex = modelText.slice(length).indexOf(tokenText);\n\n if (newStartIndex >= 0) {\n return newStartIndex + length;\n }\n\n length--;\n }\n\n return 0;\n };\n\n const lastToken = acc[acc.length - 1];\n const newStart = getStartIndex(lastToken ? lastToken.end : token.start);\n const newEnd = newStart + tokenText.length;\n\n return [\n ...acc,\n {\n ...token,\n text: tokenText,\n start: newStart,\n end: newEnd,\n // needed for getScore when tokens position is recalculated\n oldStart: token.start,\n oldEnd: token.end,\n },\n ];\n }, []);\n\n return {\n ...model,\n tokens: newTokens,\n text: modelText,\n };\n};\n\nexport const generateValidationMessage = (config) => {\n const { minTokens, maxTokens, maxSelections } = config;\n\n const tokensMessage =\n `\\nThere should be at least ${minTokens} ` + (maxTokens ? `and at most ${maxTokens} ` : '') + 'tokens defined.';\n\n const selectionsMessage =\n '\\nThere should be at least 1 ' +\n (maxSelections ? `and at most ${maxSelections} ` : '') +\n 'token' +\n (maxSelections ? 's' : '') +\n ' selected.';\n\n const message = 'Validation requirements:' + tokensMessage + selectionsMessage;\n\n return message;\n};\n"],"file":"utils.js"}
@@ -224,109 +224,52 @@ exports.model = (id, element) => {
224
224
  '<p>Select the sentence from&#160;&#34;The Gymnast&#34; that <span class="relative-emphasis">best</span> represents the theme.</p>',
225
225
  rationale:
226
226
  '<p>The final sentence of the passage best exemplifies the theme of the short story because Natasha&#39;s practice and determination finally pays off.</p>',
227
- // tokens: [
228
- // {
229
- // text: 'She thought about what she had to do, struggling to rein in her wild, fearful thoughts.',
230
- // end: 90,
231
- // start: 3,
232
- // correct: false,
233
- // },
234
- // {
235
- // start: 449,
236
- // end: 585,
237
- // text: 'Just for a hair of a moment, Natasha wondered if she really wanted a perfect 10, so weary was she of trying for but never achieving one.',
238
- // correct: false,
239
- // },
240
- // {
241
- // end: 627,
242
- // correct: false,
243
- // text: 'At last Natasha\'s moment arrived.',
244
- // start: 594,
245
- // },
246
- // {
247
- // end: 743,
248
- // text: 'The faces of past giants of gymnastics swam before her mind\'s eye, now razor&#8211;sharp with fierce determination.',
249
- // correct: false,
250
- // start: 628,
251
- // },
252
- // {
253
- // text: 'Suddenly, the din of the gymnasium was silent to her.',
254
- // end: 997,
255
- // correct: false,
256
- // start: 944,
257
- // },
258
- // {
259
- // end: 1087,
260
- // start: 998,
261
- // correct: false,
262
- // text: 'Forcing all sound out of her mind, she focused on the gleaming balance beam ahead of her.',
263
- // },
264
- // {
265
- // correct: true,
266
- // start: 1088,
267
- // end: 1225,
268
- // text: 'Taking a deep breath, Natasha made her graceful, yet powerful approach, mounted the beam flawlessly, and...executed her first perfect 10.',
269
- // },
270
- // ],
271
- // "element": "select-text",
272
- // text: '<p>She thought about what she had to do, struggling to rein in her wild, fearful thoughts. Coach Cummings always said that an undisciplined mind never scored a perfect 10. Natasha wanted to please her Coach, yet sometimes his approval wasn\'t as exciting as his anger. The gymnasts were unanimous about one thing: Coach Cummings\'s fits of disapproving rage were much more humorous to witness than his infrequent, backslapping moments of high praise. Just for a hair of a moment, Natasha wondered if she really wanted a perfect 10, so weary was she of trying for but never achieving one.</p>\n\n<p>At last Natasha\'s moment arrived. The faces of past giants of gymnastics swam before her mind\'s eye, now razor&#8211;sharp with fierce determination. "I am talented. I am not afraid. I will make a perfect 10," she spoke aloud to herself, as she approached the mat, dusted her hands with chalk to prevent slippage, and returned to her starting point. Suddenly, the din of the gymnasium was silent to her. Forcing all sound out of her mind, she focused on the gleaming balance beam ahead of her. Taking a deep breath, Natasha made her graceful, yet powerful approach, mounted the beam flawlessly, and...executed her first perfect 10.</p>\n',
273
227
  tokens: [
274
- // {
275
- // id: '0-30-1751440197593',
276
- // quote: 'She thought about what she had',
277
- // start: 0,
278
- // end: 30,
279
- // },
280
- // {
281
- // id: '185-206-1751440199435',
282
- // quote: 'o please her Coach, y',
283
- // start: 185,
284
- // end: 206,
285
- // },
286
- // {
287
- // id: '356-379-1751440202337',
288
- // quote: 'e much more humorous to',
289
- // start: 356,
290
- // end: 379,
291
- // },
292
- // {
293
- // id: '0-88-1751443110733',
294
- // quote: 'She thought about what she had to do, struggling to rein in her wild, fearful thoughts. ',
295
- // start: 0,
296
- // end: 88,
297
- // },
298
- // {
299
- // id: '590-607-1751443116013',
300
- // quote: "Át last Ñatasha's",
301
- // start: 590,
302
- // end: 607,
303
- // },
304
- // {
305
- // id: '624-641-1751443118643',
306
- // quote: 'The faces of past',
307
- // start: 624,
308
- // end: 641,
309
- // },
310
- // {
311
- // id: '1223-1231-1751443121777',
312
- // quote: 'header 2',
313
- // start: 1223,
314
- // end: 1231,
315
- // },
316
- // {
317
- // id: '358-376-1751443129379',
318
- // quote: '»»» were much more',
319
- // start: 358,
320
- // end: 376,
321
- // },
322
- // {
323
- // id: '137-154-1751443132310',
324
- // quote: 'mind never scored',
325
- // start: 137,
326
- // end: 154,
327
- // },
228
+ {
229
+ text: 'She thought about what she had to do, struggling to rein in her wild, fearful thoughts.',
230
+ end: 90,
231
+ start: 3,
232
+ correct: false,
233
+ },
234
+ {
235
+ start: 449,
236
+ end: 585,
237
+ text: 'Just for a hair of a moment, Natasha wondered if she really wanted a perfect 10, so weary was she of trying for but never achieving one.',
238
+ correct: false,
239
+ },
240
+ {
241
+ end: 627,
242
+ correct: false,
243
+ text: "At last Natasha's moment arrived.",
244
+ start: 594,
245
+ },
246
+ {
247
+ end: 743,
248
+ text: "The faces of past giants of gymnastics swam before her mind's eye, now razor&#8211;sharp with fierce determination.",
249
+ correct: false,
250
+ start: 628,
251
+ },
252
+ {
253
+ text: 'Suddenly, the din of the gymnasium was silent to her.',
254
+ end: 997,
255
+ correct: false,
256
+ start: 944,
257
+ },
258
+ {
259
+ end: 1087,
260
+ start: 998,
261
+ correct: false,
262
+ text: 'Forcing all sound out of her mind, she focused on the gleaming balance beam ahead of her.',
263
+ },
264
+ {
265
+ correct: true,
266
+ start: 1088,
267
+ end: 1225,
268
+ text: 'Taking a deep breath, Natasha made her graceful, yet powerful approach, mounted the beam flawlessly, and...executed her first perfect 10.',
269
+ },
328
270
  ],
329
- text: '<p>She thought about what she had to do, <u>struggling to rein</u> in her wild, <b>fearful thoughts</b>. Coach Cummings always said that an undisciplined mind <sup>never scored </sup>a perfect 10. Natasha €€€ wanted to please her Coach, yet sometimes his approval wasn&#x27;t as exciting as his anger. The gymnasts were unanimous about one thing: Coach Cummings&#x27;s fits of disapproving rage »»» were much more humorous to witness than his infrequent, backslapping moments of high praise. Just for a hair of a moment, Natasha wondered if she really wanted a perfect 10, so weary was she of trying for but never achieving one</p><p><em>Át last Ñatasha&#x27;s moment arrived.</em> The <s>faces</s> of past giants of gymnastics swam before her mind&#x27;s eye, now razor–sharp with fierce determination. &quot;I am talented. I am not afraid. I will make a perfect 10,&quot; she spoke aloud to herself, as she approached the mat, dusted her hands with chalk to prevent slippage, and returned to her starting point. Suddenly, the din of the gymnasium was silent to her. Forcing all sound out of her mind, she focused on the gleaming balance beam ahead of her. Taking a deep breath, Natasha made her graceful, yet powerful approach, mounted the beam flawlessly, and...executed her first perfect 10.</p><p></p><table border="1"><tbody><tr><td><p>header 1</p></td><td><p>header 2</p></td></tr><tr><td><p>row </p></td><td><p>row</p></td></tr></tbody></table><div></div>',
271
+ // "element": "select-text",
272
+ text: "<p>She thought about what she had to do, struggling to rein in her wild, fearful thoughts. Coach Cummings always said that an undisciplined mind never scored a perfect 10. Natasha wanted to please her Coach, yet sometimes his approval wasn't as exciting as his anger. The gymnasts were unanimous about one thing: Coach Cummings's fits of disapproving rage were much more humorous to witness than his infrequent, backslapping moments of high praise. Just for a hair of a moment, Natasha wondered if she really wanted a perfect 10, so weary was she of trying for but never achieving one.</p>\n\n<p>At last Natasha's moment arrived. The faces of past giants of gymnastics swam before her mind's eye, now razor&#8211;sharp with fierce determination. \"I am talented. I am not afraid. I will make a perfect 10,\" she spoke aloud to herself, as she approached the mat, dusted her hands with chalk to prevent slippage, and returned to her starting point. Suddenly, the din of the gymnasium was silent to her. Forcing all sound out of her mind, she focused on the gleaming balance beam ahead of her. Taking a deep breath, Natasha made her graceful, yet powerful approach, mounted the beam flawlessly, and...executed her first perfect 10.</p>\n",
330
273
  rubricEnabled: false,
331
274
  }),
332
275
  );