@pie-element/select-text 9.5.11-next.17 → 9.5.11-next.22

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.
@@ -49,8 +49,6 @@ var _Tooltip = _interopRequireDefault(require("@material-ui/core/Tooltip"));
49
49
 
50
50
  var _utils = require("./utils");
51
51
 
52
- var _annotationUtils = require("@pie-element/extended-text-entry/src/annotation/annotation-utils");
53
-
54
52
  var _classnames = _interopRequireDefault(require("classnames"));
55
53
 
56
54
  var _Switch = _interopRequireDefault(require("@material-ui/core/Switch"));
@@ -181,26 +179,6 @@ var Design = /*#__PURE__*/function (_React$Component) {
181
179
 
182
180
  return annotation;
183
181
  });
184
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "addAnnotation", function (type) {
185
- var _this$props6 = _this.props,
186
- annotations = _this$props6.annotations,
187
- onChange = _this$props6.onChange;
188
-
189
- var annotation = _this.createNewAnnotation('', type);
190
-
191
- var labelElem = (0, _annotationUtils.getLabelElement)(annotation.id);
192
- annotations.push(annotation);
193
-
194
- _this.setState({
195
- openedMenu: false,
196
- openedEditor: true,
197
- annotationIndex: annotations.length - 1,
198
- annotation: annotation,
199
- labelElem: labelElem
200
- });
201
-
202
- onChange(annotations);
203
- });
204
182
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "wrapSentencesInSpans", function (html) {
205
183
  var onClickHandler = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
206
184
  var classes = _this.props.classes;
@@ -266,14 +244,14 @@ var Design = /*#__PURE__*/function (_React$Component) {
266
244
  var selection = window.getSelection(); // prevent unwanted selections
267
245
 
268
246
  if (event.detail > 2) {
269
- (0, _annotationUtils.clearSelection)();
247
+ (0, _utils.clearSelection)();
270
248
  return;
271
249
  }
272
250
 
273
251
  if (selection && selection.rangeCount > 0) {
274
252
  _this.wrapSelectionInSpan(selection);
275
253
 
276
- (0, _annotationUtils.clearSelection)();
254
+ (0, _utils.clearSelection)();
277
255
  }
278
256
  });
279
257
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleTokenClick", function (event) {
@@ -286,10 +264,16 @@ var Design = /*#__PURE__*/function (_React$Component) {
286
264
  event.target.classList.toggle('correct');
287
265
  });
288
266
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "clearTokens", function () {
289
- var text = _this.state.text;
267
+ var model = _this.props.model;
268
+ var container = document.createElement('div');
269
+ container.innerHTML = model.text; // Remove all children and add new content
270
+
271
+ _this.textRef.innerHTML = '';
272
+
273
+ _this.textRef.appendChild(container);
290
274
 
291
275
  _this.setState({
292
- tokenizedText: text
276
+ tokenizedText: model.text
293
277
  });
294
278
  });
295
279
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "selectWords", function () {
@@ -376,7 +360,24 @@ var Design = /*#__PURE__*/function (_React$Component) {
376
360
  }
377
361
  }, {
378
362
  key: "wrapWordsInSpans",
379
- value: // new functionalities
363
+ value: // addAnnotation = (type) => {
364
+ // const { annotations, onChange } = this.props;
365
+ // const annotation = this.createNewAnnotation('', type);
366
+ // const labelElem = getLabelElement(annotation.id);
367
+ //
368
+ // annotations.push(annotation);
369
+ //
370
+ // this.setState({
371
+ // openedMenu: false,
372
+ // openedEditor: true,
373
+ // annotationIndex: annotations.length - 1,
374
+ // annotation,
375
+ // labelElem,
376
+ // });
377
+ //
378
+ // onChange(annotations);
379
+ // };
380
+ // new functionalities
380
381
  function wrapWordsInSpans(html, onClick) {
381
382
  var classes = this.props.classes;
382
383
  var container = document.createElement('div');
@@ -479,14 +480,14 @@ var Design = /*#__PURE__*/function (_React$Component) {
479
480
  correctMode = _this$state.correctMode,
480
481
  selectMode = _this$state.selectMode,
481
482
  tokenizedText = _this$state.tokenizedText;
482
- var _this$props7 = this.props,
483
- classes = _this$props7.classes,
484
- configuration = _this$props7.configuration,
485
- imageSupport = _this$props7.imageSupport,
486
- model = _this$props7.model,
487
- onConfigurationChanged = _this$props7.onConfigurationChanged,
488
- onModelChanged = _this$props7.onModelChanged,
489
- uploadSoundSupport = _this$props7.uploadSoundSupport;
483
+ var _this$props6 = this.props,
484
+ classes = _this$props6.classes,
485
+ configuration = _this$props6.configuration,
486
+ imageSupport = _this$props6.imageSupport,
487
+ model = _this$props6.model,
488
+ onConfigurationChanged = _this$props6.onConfigurationChanged,
489
+ onModelChanged = _this$props6.onModelChanged,
490
+ uploadSoundSupport = _this$props6.uploadSoundSupport;
490
491
 
491
492
  var _ref = configuration || {},
492
493
  _ref$baseInputConfigu = _ref.baseInputConfiguration,
@@ -679,7 +680,7 @@ var Design = /*#__PURE__*/function (_React$Component) {
679
680
  ref: function ref(r) {
680
681
  return _this3.textRef = r;
681
682
  },
682
- onMouseDown: selectMode && !correctMode ? _annotationUtils.clearSelection : function () {},
683
+ onMouseDown: selectMode && !correctMode ? _utils.clearSelection : function () {},
683
684
  onMouseUp: selectMode && !correctMode ? this.handleSelection : function () {},
684
685
  dangerouslySetInnerHTML: {
685
686
  __html: tokenizedText
@@ -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","type","annotations","onChange","createNewAnnotation","labelElem","push","setState","openedMenu","openedEditor","annotationIndex","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","tokenizedText","tokenized","wrapWordsInSpans","handleTokenClick","console","wrapSentencesInSpans","textRef","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 { generateValidationMessage } from './utils';\nimport {\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 { text } = this.state;\n\n this.setState({ tokenizedText: 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","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"}
@@ -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 = void 0;
8
+ exports.generateValidationMessage = exports.generateModel = exports.clearSelection = void 0;
9
9
 
10
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
11
 
@@ -43,7 +43,7 @@ var parseParagraphs = function parseParagraphs(dom) {
43
43
  var prepareText = function prepareText(text) {
44
44
  var txtDom = createElementFromHTML(text);
45
45
  var div = document.createElement('div');
46
- div.innerHTML = '<div separator=\'true\'>'.concat(txtDom.innerHTML, '</div>');
46
+ div.innerHTML = "<div separator='true'>".concat(txtDom.innerHTML, '</div>');
47
47
  txtDom = div;
48
48
  var allDomElements = Array.from(txtDom.querySelectorAll('*'));
49
49
 
@@ -110,7 +110,31 @@ 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
- };
113
+ }; // also used in extended-text-entry
114
+
114
115
 
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
+ };
138
+
139
+ exports.clearSelection = clearSelection;
116
140
  //# 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"],"mappings":"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","sourcesContent":["\nvar 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"}
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,6 +1,5 @@
1
1
  import {_dll_react, _dll_prop_types, _dll_classnames, _dll_react_dom, _dll_debug, _dll_lodash, _dll_react_dom_server} from "../../../@pie-lib/pie-toolbox-math-rendering-module@5.1.4/module/index.js";
2
2
  import {_dll_pie_lib__pie_toolbox_config_ui, _dll_pie_lib__pie_toolbox_editable_html} from "../../../@pie-lib/pie-toolbox-module@8.1.1/module/index.js";
3
- import {getLabelElement, clearSelection as clearSelection$1} from '@pie-element/extended-text-entry/src/annotation/annotation-utils';
4
3
  var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
5
4
  function getDefaultExportFromCjs(x) {
6
5
  return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
@@ -98508,7 +98507,7 @@ Object.defineProperty(selectionUtils, "__esModule", {
98508
98507
  value: true
98509
98508
  });
98510
98509
  selectionUtils.getCaretCharacterOffsetWithin = selectionUtils.clearSelection = void 0;
98511
- var clearSelection = function clearSelection() {
98510
+ var clearSelection$1 = function clearSelection() {
98512
98511
  if (document.getSelection) {
98513
98512
  document.getSelection().removeAllRanges();
98514
98513
  document.getSelection().addRange(document.createRange());
@@ -98523,7 +98522,7 @@ var clearSelection = function clearSelection() {
98523
98522
  document.selection.empty();
98524
98523
  }
98525
98524
  };
98526
- selectionUtils.clearSelection = clearSelection;
98525
+ selectionUtils.clearSelection = clearSelection$1;
98527
98526
  var getCaretCharacterOffsetWithin = function getCaretCharacterOffsetWithin(element) {
98528
98527
  var caretOffset = 0;
98529
98528
  var doc = element.ownerDocument || element.document;
@@ -103172,7 +103171,7 @@ var parseParagraphs = function parseParagraphs(dom) {
103172
103171
  var prepareText = function prepareText(text) {
103173
103172
  var txtDom = createElementFromHTML(text);
103174
103173
  var div = document.createElement('div');
103175
- div.innerHTML = ('<div separator=\'true\'>').concat(txtDom.innerHTML, '</div>');
103174
+ div.innerHTML = ("<div separator='true'>").concat(txtDom.innerHTML, '</div>');
103176
103175
  txtDom = div;
103177
103176
  var allDomElements = Array.from(txtDom.querySelectorAll('*'));
103178
103177
  if (allDomElements.length === 0) {
@@ -103217,6 +103216,21 @@ const generateModel = model => {
103217
103216
  text: modelText
103218
103217
  };
103219
103218
  };
103219
+ const clearSelection = () => {
103220
+ if (document.getSelection) {
103221
+ document.getSelection().removeAllRanges();
103222
+ document.getSelection().addRange(document.createRange());
103223
+ } else if (window.getSelection) {
103224
+ if (window.getSelection().removeAllRanges) {
103225
+ window.getSelection().removeAllRanges();
103226
+ window.getSelection().addRange(document.createRange());
103227
+ } else if (window.getSelection().empty) {
103228
+ window.getSelection().empty();
103229
+ }
103230
+ } else if (document.selection) {
103231
+ document.selection.empty();
103232
+ }
103233
+ };
103220
103234
  const React$1 = _dll_react;
103221
103235
  const PropTypes = _dll_prop_types;
103222
103236
  const {cloneDeep: cloneDeep} = _dll_lodash;
@@ -103292,7 +103306,6 @@ class Design extends React$1.Component {
103292
103306
  Design.prototype.__init18.call(this);
103293
103307
  Design.prototype.__init19.call(this);
103294
103308
  Design.prototype.__init20.call(this);
103295
- Design.prototype.__init21.call(this);
103296
103309
  const {model} = this.props;
103297
103310
  this.state = {
103298
103311
  correctMode: false,
@@ -103409,22 +103422,6 @@ class Design extends React$1.Component {
103409
103422
  return annotation;
103410
103423
  };
103411
103424
  }
103412
- __init14() {
103413
- this.addAnnotation = type => {
103414
- const {annotations, onChange} = this.props;
103415
- const annotation = this.createNewAnnotation('', type);
103416
- const labelElem = getLabelElement(annotation.id);
103417
- annotations.push(annotation);
103418
- this.setState({
103419
- openedMenu: false,
103420
- openedEditor: true,
103421
- annotationIndex: annotations.length - 1,
103422
- annotation,
103423
- labelElem
103424
- });
103425
- onChange(annotations);
103426
- };
103427
- }
103428
103425
  wrapWordsInSpans(html, onClick) {
103429
103426
  const {classes} = this.props;
103430
103427
  const container = document.createElement('div');
@@ -103452,7 +103449,7 @@ class Design extends React$1.Component {
103452
103449
  Array.from(container.childNodes).forEach(processNode);
103453
103450
  return container.innerHTML;
103454
103451
  }
103455
- __init15() {
103452
+ __init14() {
103456
103453
  this.wrapSentencesInSpans = (html, onClickHandler = null) => {
103457
103454
  const {classes} = this.props;
103458
103455
  const container = document.createElement('div');
@@ -103520,20 +103517,20 @@ class Design extends React$1.Component {
103520
103517
  range.insertNode(span);
103521
103518
  selection.removeAllRanges();
103522
103519
  }
103523
- __init16() {
103520
+ __init15() {
103524
103521
  this.handleSelection = event => {
103525
103522
  const selection = window.getSelection();
103526
103523
  if (event.detail > 2) {
103527
- clearSelection$1();
103524
+ clearSelection();
103528
103525
  return;
103529
103526
  }
103530
103527
  if (selection && selection.rangeCount > 0) {
103531
103528
  this.wrapSelectionInSpan(selection);
103532
- clearSelection$1();
103529
+ clearSelection();
103533
103530
  }
103534
103531
  };
103535
103532
  }
103536
- __init17() {
103533
+ __init16() {
103537
103534
  this.handleTokenClick = event => {
103538
103535
  const {correctMode} = this.state;
103539
103536
  if (!correctMode) {
@@ -103542,15 +103539,19 @@ class Design extends React$1.Component {
103542
103539
  event.target.classList.toggle('correct');
103543
103540
  };
103544
103541
  }
103545
- __init18() {
103542
+ __init17() {
103546
103543
  this.clearTokens = () => {
103547
- const {text} = this.state;
103544
+ const {model} = this.props;
103545
+ const container = document.createElement('div');
103546
+ container.innerHTML = model.text;
103547
+ this.textRef.innerHTML = '';
103548
+ this.textRef.appendChild(container);
103548
103549
  this.setState({
103549
- tokenizedText: text
103550
+ tokenizedText: model.text
103550
103551
  });
103551
103552
  };
103552
103553
  }
103553
- __init19() {
103554
+ __init18() {
103554
103555
  this.selectWords = () => {
103555
103556
  const {text} = this.state;
103556
103557
  this.clearTokens();
@@ -103561,7 +103562,7 @@ class Design extends React$1.Component {
103561
103562
  });
103562
103563
  };
103563
103564
  }
103564
- __init20() {
103565
+ __init19() {
103565
103566
  this.selectSentences = () => {
103566
103567
  const {text} = this.state;
103567
103568
  this.clearTokens();
@@ -103572,7 +103573,7 @@ class Design extends React$1.Component {
103572
103573
  console.log('sentences:', tokenized);
103573
103574
  };
103574
103575
  }
103575
- __init21() {
103576
+ __init20() {
103576
103577
  this.selectParagraphs = () => {
103577
103578
  const {text} = this.state;
103578
103579
  this.clearTokens();
@@ -103631,13 +103632,13 @@ class Design extends React$1.Component {
103631
103632
  __self: this,
103632
103633
  __source: {
103633
103634
  fileName: _jsxFileName,
103634
- lineNumber: 494
103635
+ lineNumber: 501
103635
103636
  }
103636
103637
  }),
103637
103638
  __self: this,
103638
103639
  __source: {
103639
103640
  fileName: _jsxFileName,
103640
- lineNumber: 489
103641
+ lineNumber: 496
103641
103642
  }
103642
103643
  }, teacherInstructionsEnabled && React$1.createElement(InputContainer, {
103643
103644
  label: teacherInstructions.label,
@@ -103645,7 +103646,7 @@ class Design extends React$1.Component {
103645
103646
  __self: this,
103646
103647
  __source: {
103647
103648
  fileName: _jsxFileName,
103648
- lineNumber: 507
103649
+ lineNumber: 514
103649
103650
  }
103650
103651
  }, React$1.createElement(EditableHtml, {
103651
103652
  className: classes.prompt,
@@ -103669,14 +103670,14 @@ class Design extends React$1.Component {
103669
103670
  __self: this,
103670
103671
  __source: {
103671
103672
  fileName: _jsxFileName,
103672
- lineNumber: 508
103673
+ lineNumber: 515
103673
103674
  }
103674
103675
  }), teacherInstructionsError && React$1.createElement('div', {
103675
103676
  className: classes.errorText,
103676
103677
  __self: this,
103677
103678
  __source: {
103678
103679
  fileName: _jsxFileName,
103679
- lineNumber: 524
103680
+ lineNumber: 531
103680
103681
  }
103681
103682
  }, teacherInstructionsError)), promptEnabled && React$1.createElement(InputContainer, {
103682
103683
  label: prompt.label || '',
@@ -103684,7 +103685,7 @@ class Design extends React$1.Component {
103684
103685
  __self: this,
103685
103686
  __source: {
103686
103687
  fileName: _jsxFileName,
103687
- lineNumber: 529
103688
+ lineNumber: 536
103688
103689
  }
103689
103690
  }, React$1.createElement(EditableHtml, {
103690
103691
  className: classes.prompt,
@@ -103707,21 +103708,21 @@ class Design extends React$1.Component {
103707
103708
  __self: this,
103708
103709
  __source: {
103709
103710
  fileName: _jsxFileName,
103710
- lineNumber: 530
103711
+ lineNumber: 537
103711
103712
  }
103712
103713
  }), promptError && React$1.createElement('div', {
103713
103714
  className: classes.errorText,
103714
103715
  __self: this,
103715
103716
  __source: {
103716
103717
  fileName: _jsxFileName,
103717
- lineNumber: 545
103718
+ lineNumber: 552
103718
103719
  }
103719
103720
  }, promptError)), React$1.createElement('div', {
103720
103721
  className: classes.subheader,
103721
103722
  __self: this,
103722
103723
  __source: {
103723
103724
  fileName: _jsxFileName,
103724
- lineNumber: 612
103725
+ lineNumber: 619
103725
103726
  }
103726
103727
  }, "NEW functionality", React$1.createElement(FormControlLabel, {
103727
103728
  control: React$1.createElement(Switch, {
@@ -103732,14 +103733,14 @@ class Design extends React$1.Component {
103732
103733
  __self: this,
103733
103734
  __source: {
103734
103735
  fileName: _jsxFileName,
103735
- lineNumber: 615
103736
+ lineNumber: 622
103736
103737
  }
103737
103738
  }),
103738
103739
  label: "Select tokens",
103739
103740
  __self: this,
103740
103741
  __source: {
103741
103742
  fileName: _jsxFileName,
103742
- lineNumber: 614
103743
+ lineNumber: 621
103743
103744
  }
103744
103745
  })), selectMode && React$1.createElement(textSelect$2.Controls, {
103745
103746
  onClear: this.clearTokens,
@@ -103753,7 +103754,7 @@ class Design extends React$1.Component {
103753
103754
  __self: this,
103754
103755
  __source: {
103755
103756
  fileName: _jsxFileName,
103756
- lineNumber: 621
103757
+ lineNumber: 628
103757
103758
  }
103758
103759
  }), text.settings && React$1.createElement(InputContainer, {
103759
103760
  label: text.label || '',
@@ -103761,12 +103762,12 @@ class Design extends React$1.Component {
103761
103762
  __self: this,
103762
103763
  __source: {
103763
103764
  fileName: _jsxFileName,
103764
- lineNumber: 632
103765
+ lineNumber: 639
103765
103766
  }
103766
103767
  }, selectMode ? React$1.createElement('div', {
103767
103768
  className: classes.textContainer,
103768
103769
  ref: r => this.textRef = r,
103769
- onMouseDown: selectMode && !correctMode ? clearSelection$1 : () => {},
103770
+ onMouseDown: selectMode && !correctMode ? clearSelection : () => {},
103770
103771
  onMouseUp: selectMode && !correctMode ? this.handleSelection : () => {},
103771
103772
  dangerouslySetInnerHTML: {
103772
103773
  __html: tokenizedText
@@ -103774,7 +103775,7 @@ class Design extends React$1.Component {
103774
103775
  __self: this,
103775
103776
  __source: {
103776
103777
  fileName: _jsxFileName,
103777
- lineNumber: 634
103778
+ lineNumber: 641
103778
103779
  }
103779
103780
  }) : React$1.createElement(EditableHtml, {
103780
103781
  className: classes.prompt,
@@ -103796,7 +103797,7 @@ class Design extends React$1.Component {
103796
103797
  __self: this,
103797
103798
  __source: {
103798
103799
  fileName: _jsxFileName,
103799
- lineNumber: 642
103800
+ lineNumber: 649
103800
103801
  }
103801
103802
  })), rationaleEnabled && React$1.createElement(InputContainer, {
103802
103803
  label: rationale.label || '',
@@ -103804,7 +103805,7 @@ class Design extends React$1.Component {
103804
103805
  __self: this,
103805
103806
  __source: {
103806
103807
  fileName: _jsxFileName,
103807
- lineNumber: 661
103808
+ lineNumber: 668
103808
103809
  }
103809
103810
  }, React$1.createElement(EditableHtml, {
103810
103811
  className: classes.prompt,
@@ -103827,14 +103828,14 @@ class Design extends React$1.Component {
103827
103828
  __self: this,
103828
103829
  __source: {
103829
103830
  fileName: _jsxFileName,
103830
- lineNumber: 662
103831
+ lineNumber: 669
103831
103832
  }
103832
103833
  }), rationaleError && React$1.createElement('div', {
103833
103834
  className: classes.errorText,
103834
103835
  __self: this,
103835
103836
  __source: {
103836
103837
  fileName: _jsxFileName,
103837
- lineNumber: 677
103838
+ lineNumber: 684
103838
103839
  }
103839
103840
  }, rationaleError)), feedbackEnabled && React$1.createElement(FeedbackConfig, {
103840
103841
  feedback: model.feedback,
@@ -103843,7 +103844,7 @@ class Design extends React$1.Component {
103843
103844
  __self: this,
103844
103845
  __source: {
103845
103846
  fileName: _jsxFileName,
103846
- lineNumber: 682
103847
+ lineNumber: 689
103847
103848
  }
103848
103849
  }));
103849
103850
  }
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "access": "public"
5
5
  },
6
6
  "repository": "pie-framework/pie-elements",
7
- "version": "9.5.11-next.17+d97e157ba",
7
+ "version": "9.5.11-next.22+c6bd45bda",
8
8
  "description": "",
9
9
  "dependencies": {
10
10
  "@material-ui/core": "^3.9.2",
@@ -16,7 +16,7 @@
16
16
  },
17
17
  "author": "",
18
18
  "license": "ISC",
19
- "gitHead": "d97e157bac69c61c41989fc98b37e27f1bdd78c8",
19
+ "gitHead": "c6bd45bda80cc4258278a5a943aec19e9ea2646d",
20
20
  "scripts": {
21
21
  "postpublish": "../../scripts/postpublish"
22
22
  },