@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.
- package/configure/lib/design.js +37 -36
- package/configure/lib/design.js.map +1 -1
- package/configure/lib/utils.js +27 -3
- package/configure/lib/utils.js.map +1 -1
- package/module/configure.js +53 -52
- package/package.json +2 -2
package/configure/lib/design.js
CHANGED
|
@@ -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,
|
|
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,
|
|
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
|
|
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: //
|
|
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$
|
|
483
|
-
classes = _this$
|
|
484
|
-
configuration = _this$
|
|
485
|
-
imageSupport = _this$
|
|
486
|
-
model = _this$
|
|
487
|
-
onConfigurationChanged = _this$
|
|
488
|
-
onModelChanged = _this$
|
|
489
|
-
uploadSoundSupport = _this$
|
|
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 ?
|
|
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"}
|
package/configure/lib/utils.js
CHANGED
|
@@ -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 =
|
|
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":";;;;;;;;;;;;;;;;;
|
|
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"}
|
package/module/configure.js
CHANGED
|
@@ -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 = (
|
|
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
|
-
|
|
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
|
-
|
|
103520
|
+
__init15() {
|
|
103524
103521
|
this.handleSelection = event => {
|
|
103525
103522
|
const selection = window.getSelection();
|
|
103526
103523
|
if (event.detail > 2) {
|
|
103527
|
-
clearSelection
|
|
103524
|
+
clearSelection();
|
|
103528
103525
|
return;
|
|
103529
103526
|
}
|
|
103530
103527
|
if (selection && selection.rangeCount > 0) {
|
|
103531
103528
|
this.wrapSelectionInSpan(selection);
|
|
103532
|
-
clearSelection
|
|
103529
|
+
clearSelection();
|
|
103533
103530
|
}
|
|
103534
103531
|
};
|
|
103535
103532
|
}
|
|
103536
|
-
|
|
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
|
-
|
|
103542
|
+
__init17() {
|
|
103546
103543
|
this.clearTokens = () => {
|
|
103547
|
-
const {
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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:
|
|
103635
|
+
lineNumber: 501
|
|
103635
103636
|
}
|
|
103636
103637
|
}),
|
|
103637
103638
|
__self: this,
|
|
103638
103639
|
__source: {
|
|
103639
103640
|
fileName: _jsxFileName,
|
|
103640
|
-
lineNumber:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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.
|
|
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": "
|
|
19
|
+
"gitHead": "c6bd45bda80cc4258278a5a943aec19e9ea2646d",
|
|
20
20
|
"scripts": {
|
|
21
21
|
"postpublish": "../../scripts/postpublish"
|
|
22
22
|
},
|