@pie-element/explicit-constructed-response 9.3.2-tip-tap.4 → 9.3.2-tip-tap.6
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/alternateResponses.js +1 -1
- package/configure/lib/alternateResponses.js.map +1 -0
- package/configure/lib/alternateSection.js +1 -1
- package/configure/lib/alternateSection.js.map +1 -0
- package/configure/lib/defaults.js +1 -1
- package/configure/lib/defaults.js.map +1 -0
- package/configure/lib/ecr-toolbar.js +2 -2
- package/configure/lib/ecr-toolbar.js.map +1 -0
- package/configure/lib/index.js +1 -1
- package/configure/lib/index.js.map +1 -0
- package/configure/lib/main.js +1 -1
- package/configure/lib/main.js.map +1 -0
- package/configure/lib/markupUtils.js +1 -1
- package/configure/lib/markupUtils.js.map +1 -0
- package/configure/lib/utils.js +1 -1
- package/configure/lib/utils.js.map +1 -0
- package/configure/package.json +2 -2
- package/controller/lib/defaults.js +1 -1
- package/controller/lib/defaults.js.map +1 -0
- package/controller/lib/index.js +1 -1
- package/controller/lib/index.js.map +1 -0
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -0
- package/lib/main.js +1 -1
- package/lib/main.js.map +1 -0
- package/lib/print.js +1 -1
- package/lib/print.js.map +1 -0
- package/package.json +2 -2
- package/configure/lib/__tests__/alternateResponses.test.js +0 -335
- package/configure/lib/__tests__/alternateSection.test.js +0 -289
- package/configure/lib/__tests__/ecr-toolbar.test.js +0 -87
- package/configure/lib/__tests__/main.test.js +0 -320
- package/configure/lib/__tests__/markupUtils.test.js +0 -56
- package/configure/lib/__tests__/utils.test.js +0 -66
- package/controller/lib/__tests__/index.spec.js +0 -52
- package/controller/lib/__tests__/index.test.js +0 -1205
- package/docs/demo/pie.manifest.json +0 -11
- package/lib/__tests__/main.test.js +0 -124
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/main.jsx"],"names":["toggle","settings","Panel","dropdown","styles","theme","promptHolder","width","paddingTop","spacing","unit","marginBottom","markup","minHeight","choiceConfiguration","paddingBottom","switchElement","justifyContent","margin","addButton","text","fontSize","typography","tooltip","whiteSpace","maxWidth","errorText","color","palette","error","main","flexContainer","display","alignItems","responseHeader","marginTop","createElementFromHTML","htmlString","div","document","createElement","innerHTML","trim","Main","newVal","props","onModelChanged","model","prompt","rationale","teacherInstructions","slateMarkup","choices","maxLengthPerChoice","index","newValLength","length","label","value","nbOfMissingChoices","Array","fill","splice","domMarkup","allRespAreas","querySelectorAll","allChoices","updatedMaxLengthPerChoice","forEach","el","newChoices","dataset","callback","setState","cachedChoices","undefined","nodes","state","newCachedChoices","node","keyForNode","data","get","Object","assign","hasOwnProperty","trailing","leading","undefinedLengths","values","choice","labelLengthsArr","map","Math","max","classes","configuration","onConfigurationChanged","imageSupport","uploadSoundSupport","baseInputConfiguration","contentDimensions","maxImageWidth","maxImageHeight","maxResponseAreas","partialScoring","playerSpellCheck","template","settingsPanelDisabled","spellCheck","editSource","withRubric","mathMlOptions","language","languageChoices","spanishButton","responseAreaInputConfiguration","errors","extraCSSRules","maxLengthPerChoiceEnabled","promptEnabled","rationaleEnabled","spellCheckEnabled","teacherInstructionsEnabled","toolbarEditorPosition","choicesErrors","promptError","rationaleError","responseAreasError","responseAreas","teacherInstructionsError","validationMessage","defaultImageMaxWidth","defaultImageMaxHeight","toolbarOpts","position","panelSettings","enabled","options","panelProperties","playerSpellCheckEnabled","rubricEnabled","getPluginProps","onModelChange","Settings","Properties","onTeacherInstructionsChanged","inputConfiguration","onPromptChanged","marginLeft","ALL_PLUGINS","type","duplicates","respAreaToolbar","editor","onToolbarDone","correctChoice","attrs","onChangeResponse","onHandleAreaChange","onChange","onBlur","onResponsesChanged","onLengthChanged","onRationaleChanged","React","Component","PropTypes","object","isRequired","disableSidePanel","bool","func","shape","add","Styled"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport cloneDeep from 'lodash/cloneDeep';\nimport isEmpty from 'lodash/isEmpty';\nimport pick from 'lodash/pick';\nimport throttle from 'lodash/throttle';\nimport EditableHtml, { ALL_PLUGINS } from '@pie-lib/editable-html-tip-tap';\nimport { InputContainer, layout, settings } from '@pie-lib/config-ui';\nimport { withStyles } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\nimport Info from '@material-ui/icons/Info';\nimport Tooltip from '@material-ui/core/Tooltip';\n\nimport ECRToolbar from './ecr-toolbar';\nimport AlternateResponses from './alternateResponses';\nimport { decodeHTML, getAdjustedLength } from './markupUtils';\nimport { generateValidationMessage } from './utils';\nimport classnames from 'classnames';\n\nconst { toggle, Panel, dropdown } = settings;\n\nconst styles = (theme) => ({\n promptHolder: {\n width: '100%',\n paddingTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\n },\n markup: {\n minHeight: '100px',\n paddingTop: theme.spacing.unit,\n width: '100%',\n '& [data-slate-editor=\"true\"]': {\n minHeight: '100px',\n },\n },\n choiceConfiguration: {\n paddingTop: theme.spacing.unit * 2,\n paddingBottom: theme.spacing.unit * 2,\n },\n switchElement: {\n justifyContent: 'space-between',\n margin: 0,\n },\n addButton: {\n float: 'right',\n },\n text: {\n fontSize: theme.typography.fontSize + 2,\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 flexContainer: {\n display: 'flex',\n alignItems: 'center',\n },\n responseHeader: {\n marginTop: theme.spacing.unit * 3,\n marginBottom: theme.spacing.unit,\n },\n});\n\nconst createElementFromHTML = (htmlString) => {\n const div = document.createElement('div');\n div.innerHTML = htmlString.trim();\n\n return div;\n};\n\nexport class Main extends React.Component {\n static propTypes = {\n configuration: PropTypes.object.isRequired,\n model: PropTypes.object.isRequired,\n disableSidePanel: PropTypes.bool,\n onModelChanged: PropTypes.func.isRequired,\n onConfigurationChanged: PropTypes.func.isRequired,\n classes: PropTypes.object.isRequired,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n uploadSoundSupport: PropTypes.object,\n };\n\n state = {};\n\n componentDidMount() {\n const {\n model: { slateMarkup, choices, maxLengthPerChoice = [] },\n onModelChanged,\n } = this.props;\n const undefinedLengths = !maxLengthPerChoice.length;\n\n this.setState({ markup: slateMarkup });\n\n // calculate maxLengthPerChoice array if it is not defined or defined incorrectly\n Object.values(choices).forEach((choice, index) => {\n const labelLengthsArr = choice.map((choice) => decodeHTML(choice.label || '').length);\n const length = Math.max(...labelLengthsArr);\n\n if (\n undefinedLengths ||\n !maxLengthPerChoice[index] ||\n maxLengthPerChoice[index] < length ||\n maxLengthPerChoice[index] > length + 10\n ) {\n maxLengthPerChoice[index] = getAdjustedLength(length);\n }\n });\n\n onModelChanged({ ...this.props.model, maxLengthPerChoice });\n }\n\n onModelChange = (newVal) => {\n this.props.onModelChanged({ ...this.props.model, ...newVal });\n };\n\n onPromptChanged = (prompt) => {\n this.props.onModelChanged({ ...this.props.model, prompt });\n };\n\n onRationaleChanged = (rationale) => {\n this.props.onModelChanged({ ...this.props.model, rationale });\n };\n\n onTeacherInstructionsChanged = (teacherInstructions) => {\n const { model, onModelChanged } = this.props;\n\n onModelChanged({ ...model, teacherInstructions });\n };\n\n onMarkupChanged = (slateMarkup) => {\n this.props.onModelChanged({ ...this.props.model, slateMarkup });\n };\n\n onResponsesChanged = (choices) => {\n this.props.onModelChanged({ ...this.props.model, choices });\n };\n\n onLengthChanged = (maxLengthPerChoice) => {\n const { model, onModelChanged } = this.props;\n\n onModelChanged({ ...model, maxLengthPerChoice });\n };\n\n onChangeResponse = (index, newVal) => {\n const { model, onModelChanged } = this.props;\n const { choices } = model;\n let { maxLengthPerChoice } = model;\n const newValLength = decodeHTML(newVal || '').length;\n\n if (!choices[index]) {\n choices[index] = [{ label: newVal || '', value: '0' }];\n\n // add default values for missing choices up to the new index position\n const nbOfMissingChoices = index > maxLengthPerChoice.length ? index - maxLengthPerChoice.length : 0;\n\n maxLengthPerChoice = [...maxLengthPerChoice, ...Array(nbOfMissingChoices).fill(1)];\n\n maxLengthPerChoice.splice(index, 0, getAdjustedLength(newValLength));\n } else {\n choices[index][0].label = newVal || '';\n\n if (\n maxLengthPerChoice &&\n (maxLengthPerChoice[index] < newValLength || maxLengthPerChoice[index] > newValLength + 10)\n ) {\n maxLengthPerChoice[index] = getAdjustedLength(newValLength);\n }\n }\n\n onModelChanged({ ...model, choices, maxLengthPerChoice });\n };\n\n onChange = (markup) => {\n const {\n model: { choices, maxLengthPerChoice },\n onModelChanged,\n } = this.props;\n const domMarkup = createElementFromHTML(markup);\n const allRespAreas = domMarkup.querySelectorAll('[data-type=\"explicit_constructed_response\"]');\n\n const allChoices = {};\n const updatedMaxLengthPerChoice = [];\n\n allRespAreas.forEach((el, index) => {\n const newChoices = cloneDeep(choices[el.dataset.index]);\n\n if (newChoices) {\n newChoices[0] = {\n label: el.dataset.value || '',\n value: '0',\n };\n\n updatedMaxLengthPerChoice[index] = maxLengthPerChoice[el.dataset.index];\n }\n\n allChoices[index] = newChoices;\n el.dataset.index = index;\n });\n\n const callback = () =>\n onModelChanged({\n ...this.props.model,\n choices: allChoices,\n slateMarkup: domMarkup.innerHTML,\n maxLengthPerChoice: updatedMaxLengthPerChoice,\n });\n\n this.setState({ cachedChoices: undefined }, callback);\n };\n\n onHandleAreaChange = throttle(\n (nodes) => {\n const {\n model: { choices },\n onModelChanged,\n } = this.props;\n const { cachedChoices } = this.state;\n\n if (!nodes) {\n return;\n }\n\n const newChoices = choices ? cloneDeep(choices) : {};\n const newCachedChoices = cachedChoices ? cloneDeep(cachedChoices) : {};\n\n nodes.forEach((node) => {\n const keyForNode = node.data.get('index');\n\n if (!newChoices[keyForNode] && newCachedChoices[keyForNode]) {\n Object.assign(newChoices, pick(newCachedChoices, keyForNode));\n\n if (newCachedChoices.hasOwnProperty(keyForNode)) {\n delete newCachedChoices[keyForNode];\n }\n } else {\n Object.assign(newCachedChoices, pick(newChoices, keyForNode));\n\n if (newChoices.hasOwnProperty(keyForNode)) {\n delete newChoices[keyForNode];\n }\n }\n });\n\n const callback = () => onModelChanged({ ...this.props.model, choices: newChoices });\n\n this.setState({ cachedChoices: newCachedChoices }, callback);\n },\n 500,\n { trailing: false, leading: true },\n );\n\n render() {\n const { classes, model, configuration, onConfigurationChanged, imageSupport, uploadSoundSupport } = this.props;\n\n const {\n baseInputConfiguration = {},\n contentDimensions = {},\n maxImageWidth = {},\n maxImageHeight = {},\n maxLengthPerChoice = {},\n maxResponseAreas,\n partialScoring = {},\n playerSpellCheck = {},\n prompt = {},\n rationale = {},\n template = {},\n settingsPanelDisabled,\n spellCheck = {},\n editSource = {},\n teacherInstructions = {},\n withRubric = {},\n mathMlOptions = {},\n language = {},\n languageChoices = {},\n spanishButton = {},\n responseAreaInputConfiguration = {},\n } = configuration || {};\n const {\n errors,\n extraCSSRules,\n maxLengthPerChoiceEnabled,\n promptEnabled,\n rationaleEnabled,\n spellCheckEnabled,\n teacherInstructionsEnabled,\n toolbarEditorPosition,\n } = model || {};\n\n const {\n choices: choicesErrors = {},\n prompt: promptError,\n rationale: rationaleError,\n responseAreas: responseAreasError,\n teacherInstructions: teacherInstructionsError,\n } = errors || {};\n const validationMessage = generateValidationMessage(configuration);\n\n const defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;\n const defaultImageMaxHeight = maxImageHeight && maxImageHeight.prompt;\n\n const toolbarOpts = {\n position: toolbarEditorPosition === 'top' ? 'top' : 'bottom',\n };\n\n const panelSettings = {\n partialScoring: partialScoring.settings && toggle(partialScoring.label),\n maxLengthPerChoiceEnabled: maxLengthPerChoice.settings && toggle(maxLengthPerChoice.label),\n 'language.enabled': language.settings && toggle(language.label, true),\n language: language.settings && language.enabled && dropdown(languageChoices.label, languageChoices.options),\n 'responseAreaInputConfiguration.inputConfiguration.characters.disabled':\n spanishButton.settings && toggle(spanishButton.label, true),\n };\n const panelProperties = {\n teacherInstructionsEnabled: teacherInstructions.settings && toggle(teacherInstructions.label),\n rationaleEnabled: rationale.settings && toggle(rationale.label),\n promptEnabled: prompt.settings && toggle(prompt.label),\n spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label),\n playerSpellCheckEnabled: playerSpellCheck.settings && toggle(playerSpellCheck.label),\n rubricEnabled: withRubric?.settings && toggle(withRubric?.label),\n 'editSource.enabled': editSource?.settings && toggle(editSource.label, true),\n };\n\n const getPluginProps = (props = {}) => ({\n ...baseInputConfiguration,\n ...props,\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) => this.onModelChange(model)}\n onChangeConfiguration={(configuration) => onConfigurationChanged(configuration, true)}\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(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 autoWidthToolbar\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 nonEmpty={false}\n disableUnderline\n error={promptError}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(prompt?.inputConfiguration)}\n spellCheck={spellCheckEnabled}\n maxImageWidth={defaultImageMaxWidth}\n maxImageHeight={defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n autoWidthToolbar\n />\n {promptError && <div className={classes.errorText}>{promptError}</div>}\n </InputContainer>\n )}\n\n <div className={classes.flexContainer}>\n <Typography className={classes.text} component=\"div\">\n Define Template, Choices, and Correct Responses\n </Typography>\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={{ marginLeft: '8px' }} />\n </Tooltip>\n </div>\n\n <EditableHtml\n activePlugins={ALL_PLUGINS}\n toolbarOpts={{ position: 'top' }}\n spellCheck={spellCheckEnabled}\n pluginProps={getPluginProps(template?.inputConfiguration)}\n responseAreaProps={{\n type: 'explicit-constructed-response',\n options: {\n duplicates: true,\n },\n maxResponseAreas: maxResponseAreas,\n respAreaToolbar: (node, editor, onToolbarDone) => {\n const { model } = this.props;\n const correctChoice = (model.choices[node.attrs.index] || [])[0];\n return () => (\n <ECRToolbar\n onChangeResponse={(newVal) => this.onChangeResponse(node.attrs.index, newVal)}\n node={node}\n editor={editor}\n onToolbarDone={onToolbarDone}\n correctChoice={correctChoice}\n maxLengthPerChoiceEnabled={maxLengthPerChoiceEnabled}\n pluginProps={getPluginProps(responseAreaInputConfiguration?.inputConfiguration)}\n />\n );\n },\n error: () => choicesErrors,\n onHandleAreaChange: this.onHandleAreaChange,\n }}\n className={classes.markup}\n markup={model.slateMarkup}\n onChange={this.onChange}\n imageSupport={imageSupport}\n disableImageAlignmentButtons={true}\n onBlur={this.onBlur}\n disabled={false}\n highlightShape={false}\n error={responseAreasError}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n autoWidthToolbar\n />\n {responseAreasError && <div className={classes.errorText}>{responseAreasError}</div>}\n\n {!isEmpty(model.choices) && (\n <Typography className={classnames(classes.text, classes.responseHeader)}>\n {`Define Alternates ${maxLengthPerChoiceEnabled ? 'and Character Limits' : ''}`}\n </Typography>\n )}\n <AlternateResponses\n model={model}\n onChange={this.onResponsesChanged}\n onLengthChange={this.onLengthChanged}\n maxLengthPerChoiceEnabled={maxLengthPerChoiceEnabled}\n spellCheck={spellCheckEnabled}\n choicesErrors={choicesErrors}\n pluginProps={getPluginProps(responseAreaInputConfiguration?.inputConfiguration)}\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(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 autoWidthToolbar\n />\n {rationaleError && <div className={classes.errorText}>{rationaleError}</div>}\n </InputContainer>\n )}\n </layout.ConfigLayout>\n );\n }\n}\n\nconst Styled = withStyles(styles)(Main);\n\nexport default Styled;\n"],"file":"main.js"}
|
|
@@ -91,4 +91,4 @@ var decodeHTML = function decodeHTML(html) {
|
|
|
91
91
|
};
|
|
92
92
|
|
|
93
93
|
exports.decodeHTML = decodeHTML;
|
|
94
|
-
//# sourceMappingURL=
|
|
94
|
+
//# sourceMappingURL=markupUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/markupUtils.js"],"names":["tSymbols","nSymbols","matchTabAndNewLine","RegExp","removeUnwantedCharacters","markup","replace","createElementFromHTML","htmlString","div","document","createElement","innerHTML","trim","processMarkup","newMarkup","slateMarkup","index","querySelectorAll","forEach","s","replaceWith","REGEX","createSlateMarkup","choices","match","g","label","getAdjustedLength","length","stripHtmlTags","decodeHTML","html","doc","DOMParser","parseFromString","body","textContent"],"mappings":"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","sourcesContent":["import escape from 'lodash/escape';\n\n// do not remove \\t from \\times, \\triangle, \\tan, \\theta or \\therefore\nconst tSymbols = 'imes|riangle|an|heta|herefore';\n// do not remove \\n from \\nthroot, \\nparallel, \\ncong, \\napprox, \\neq, \\ne or \\nsim\nconst nSymbols = 'throot|parallel|cong|approx|eq|e|sim';\n// match all \\t and \\n that are not part of math symbols that starts with \\t or \\n\nconst matchTabAndNewLine = new RegExp(\n `(\\\\t(?!${tSymbols}))|(\\\\n(?!${nSymbols}))|(\\\\\\\\t(?!${tSymbols}))|(\\\\\\\\n(?!${nSymbols}))`,\n 'g',\n);\n\nexport const removeUnwantedCharacters = (markup) =>\n markup.replace(matchTabAndNewLine, '').replace(/\\\\\"/g, '\"').replace(/\\\\\\//g, '/');\n\nconst createElementFromHTML = (htmlString = '') => {\n const div = document.createElement('div');\n\n div.innerHTML = htmlString.trim();\n\n return div;\n};\n\nexport const processMarkup = (markup) => {\n const newMarkup = removeUnwantedCharacters(markup || '');\n const slateMarkup = createElementFromHTML(newMarkup || '');\n let index = 0;\n\n slateMarkup.querySelectorAll('[data-type=\"explicit_constructed_response\"]').forEach((s) => {\n s.replaceWith(`{{${index++}}}`);\n });\n\n return slateMarkup.innerHTML;\n};\n\nconst REGEX = /\\{\\{(\\d+)\\}\\}/g;\n\nexport const createSlateMarkup = (markup, choices) => {\n if (!markup) {\n return '';\n }\n\n const newMarkup = removeUnwantedCharacters(markup);\n\n return newMarkup.replace(REGEX, (match, g) => {\n const label = choices[g][0].label || '';\n\n return `<span data-type=\"explicit_constructed_response\" data-index=\"${g}\" data-value=\"${escape(label)}\"></span>`;\n });\n};\n\n// also used in controller/src/index.js\nexport const getAdjustedLength = (length) => {\n if (length <= 2) {\n return length + 2;\n }\n\n if (length <= 4) {\n return length + 3;\n }\n\n if (length <= 6) {\n return length + 4;\n }\n\n return length + 5;\n};\n\nexport const stripHtmlTags = (markup) => {\n if (typeof markup !== 'string') {\n return '';\n }\n return markup.replace(/<\\/?[^>]+(>|$)/g, \"\");\n};\n\nexport const decodeHTML = (html) => {\n const doc = new DOMParser().parseFromString(html, 'text/html');\n return doc.body.textContent || '';\n};"],"file":"markupUtils.js"}
|
package/configure/lib/utils.js
CHANGED
|
@@ -12,4 +12,4 @@ var generateValidationMessage = function generateValidationMessage(config) {
|
|
|
12
12
|
};
|
|
13
13
|
|
|
14
14
|
exports.generateValidationMessage = generateValidationMessage;
|
|
15
|
-
//# sourceMappingURL=
|
|
15
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/utils.js"],"names":["generateValidationMessage","config","maxResponseAreas","responseAreasMessage"],"mappings":";;;;;;;AAAO,IAAMA,yBAAyB,GAAG,SAA5BA,yBAA4B,CAACC,MAAD,EAAY;AACnD,MAAQC,gBAAR,GAA6BD,MAA7B,CAAQC,gBAAR;AAEA,MAAMC,oBAAoB,GACxB,2CACA,6DADA,GAEA,+BAFA,IAGCD,gBAAgB,yBAAkBA,gBAAlB,SAAwC,EAHzD,IAIA,eAJA,IAKCA,gBAAgB,GAAG,GAAH,GAAS,EAL1B,IAMA,WAPF;AASA,SAAO,6BAA6BC,oBAApC;AACD,CAbM","sourcesContent":["export const generateValidationMessage = (config) => {\n const { maxResponseAreas } = config;\n\n const responseAreasMessage =\n '\\nCorrect answers should not be blank.' +\n '\\nEach answer defined for a response area should be unique.' +\n '\\nThere should be at least 1 ' +\n (maxResponseAreas ? `and at most ${maxResponseAreas} ` : '') +\n 'response area' +\n (maxResponseAreas ? 's' : '') +\n ' defined.';\n\n return 'Validation requirements:' + responseAreasMessage;\n};\n"],"file":"utils.js"}
|
package/configure/package.json
CHANGED
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
"@material-ui/core": "^3.9.2",
|
|
9
9
|
"@material-ui/icons": "^3.0.1",
|
|
10
10
|
"@pie-framework/pie-configure-events": "^1.3.0",
|
|
11
|
-
"@pie-lib/config-ui": "11.30.2-beta-
|
|
12
|
-
"@pie-lib/editable-html-tip-tap": "^1.0.
|
|
11
|
+
"@pie-lib/config-ui": "11.30.2-beta-8",
|
|
12
|
+
"@pie-lib/editable-html-tip-tap": "^1.0.13",
|
|
13
13
|
"@pie-lib/math-toolbar": "1.31.2-beta.3",
|
|
14
14
|
"classnames": "^2.2.6",
|
|
15
15
|
"debug": "^3.1.0",
|
|
@@ -21,4 +21,4 @@ var _default = {
|
|
|
21
21
|
toolbarEditorPosition: 'bottom'
|
|
22
22
|
};
|
|
23
23
|
exports["default"] = _default;
|
|
24
|
-
//# sourceMappingURL=
|
|
24
|
+
//# sourceMappingURL=defaults.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/defaults.js"],"names":["choices","displayType","markup","maxLengthPerChoiceEnabled","playerSpellCheckEnabled","prompt","promptEnabled","rationale","rationaleEnabled","spellCheckEnabled","studentInstructionsEnabled","teacherInstructions","teacherInstructionsEnabled","toolbarEditorPosition"],"mappings":";;;;;;eAAe;AACbA,EAAAA,OAAO,EAAE,EADI;AAEbC,EAAAA,WAAW,EAAE,OAFA;AAGbC,EAAAA,MAAM,EAAE,EAHK;AAIbC,EAAAA,yBAAyB,EAAE,IAJd;AAKbC,EAAAA,uBAAuB,EAAE,IALZ;AAMbC,EAAAA,MAAM,EAAE,EANK;AAObC,EAAAA,aAAa,EAAE,IAPF;AAQbC,EAAAA,SAAS,EAAE,EARE;AASbC,EAAAA,gBAAgB,EAAE,IATL;AAUbC,EAAAA,iBAAiB,EAAE,IAVN;AAWbC,EAAAA,0BAA0B,EAAE,IAXf;AAYbC,EAAAA,mBAAmB,EAAE,EAZR;AAabC,EAAAA,0BAA0B,EAAE,IAbf;AAcbC,EAAAA,qBAAqB,EAAE;AAdV,C","sourcesContent":["export default {\n choices: {},\n displayType: 'block',\n markup: '',\n maxLengthPerChoiceEnabled: true,\n playerSpellCheckEnabled: true,\n prompt: '',\n promptEnabled: true,\n rationale: '',\n rationaleEnabled: true,\n spellCheckEnabled: true,\n studentInstructionsEnabled: true,\n teacherInstructions: '',\n teacherInstructionsEnabled: true,\n toolbarEditorPosition: 'bottom',\n};\n"],"file":"defaults.js"}
|
package/controller/lib/index.js
CHANGED
|
@@ -383,4 +383,4 @@ var validate = function validate() {
|
|
|
383
383
|
};
|
|
384
384
|
|
|
385
385
|
exports.validate = validate;
|
|
386
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJ0cmFuc2xhdG9yIiwiVHJhbnNsYXRvciIsImxvZyIsInByZXBhcmVDaG9pY2UiLCJtb2RlIiwiZGVmYXVsdEZlZWRiYWNrIiwiY2hvaWNlIiwib3V0IiwibGFiZWwiLCJ2YWx1ZSIsImNvcnJlY3QiLCJmZWVkYmFja1R5cGUiLCJmZWVkYmFjayIsInR5cGUiLCJnZXRGZWVkYmFjayIsImdldEFkanVzdGVkTGVuZ3RoIiwibGVuZ3RoIiwiZGVjb2RlSHRtbEVudGl0aWVzIiwic3RyIiwicmVwbGFjZSIsIm5vcm1hbGl6ZSIsInF1ZXN0aW9uIiwiZGVmYXVsdHMiLCJtb2RlbCIsInNlc3Npb24iLCJlbnYiLCJQcm9taXNlIiwicmVzb2x2ZSIsImNob2ljZXMiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsImtleSIsIm1hcCIsIml0ZW0iLCJpbmRleCIsIm5vcm1hbGl6ZWRRdWVzdGlvbiIsImFzc2lnbiIsImluY29ycmVjdCIsInByZXBhcmVDaG9pY2VGbiIsIm9iaiIsImFyZWEiLCJyZXNwQXJlYSIsImNob3NlblZhbHVlIiwidmFsIiwiYyIsInByZXBhcmVWYWwiLCJzaG93Tm90ZSIsInZhbHVlcyIsInNvbWUiLCJub3RlIiwidCIsImxuZyIsImxhbmd1YWdlIiwibWF4TGVuZ3RoUGVyQ2hvaWNlIiwibWF4TGVuZ3RoUGVyQ2hvaWNlRW5hYmxlZCIsInVuZGVmaW5lZExlbmd0aHMiLCJsYWJlbExlbmd0aHNBcnIiLCJNYXRoIiwibWF4IiwiZGlzYWJsZWQiLCJkaXNwbGF5VHlwZSIsInJvbGUiLCJtYXJrdXAiLCJwbGF5ZXJTcGVsbENoZWNrRW5hYmxlZCIsInByb21wdCIsInByb21wdEVuYWJsZWQiLCJyYXRpb25hbGUiLCJyZXNwb25zZUNvcnJlY3QiLCJnZXRTY29yZSIsInVuZGVmaW5lZCIsInRlYWNoZXJJbnN0cnVjdGlvbnMiLCJyZXNwb25zZUFyZWFJbnB1dENvbmZpZ3VyYXRpb24iLCJleHRyYUNTU1J1bGVzIiwicmF0aW9uYWxlRW5hYmxlZCIsInRlYWNoZXJJbnN0cnVjdGlvbnNFbmFibGVkIiwiaHRtbCIsImRlY29kZUhUTUwiLCJnZXRJbm5lclRleHQiLCJ0cmltIiwiY29uZmlnIiwicmVzcG9uc2VBcmVhcyIsIm1hdGNoIiwibWF4U2NvcmUiLCJjb3JyZWN0Q291bnQiLCJ0b3RhbCIsInRvRml4ZWQiLCJwYXJzZUZsb2F0Iiwib3V0Y29tZSIsInBhcnRpYWxTY29yaW5nRW5hYmxlZCIsInBhcnRpYWxTY29yaW5nIiwiZW5hYmxlZCIsInNjb3JlIiwiZW1wdHkiLCJjcmVhdGVDb3JyZWN0UmVzcG9uc2VTZXNzaW9uIiwiaSIsImlkIiwicmVwbGFjZUFsbCIsImdldENvbnRlbnQiLCJ2YWxpZGF0ZSIsIm1heFJlc3BvbnNlQXJlYXMiLCJhbGxDaG9pY2VzRXJyb3JzIiwiZXJyb3JzIiwiZmllbGQiLCJyZXF1aXJlZCIsImVudHJpZXMiLCJyZXZlcnNlZENob2ljZXMiLCJyZXZlcnNlIiwiY2hvaWNlc0Vycm9ycyIsImlkZW50aWNhbEFuc3dlciIsInNsaWNlIiwibmJPZlJlc3BvbnNlQXJlYXMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7OztBQUVBLElBQVFBLFVBQVIsR0FBdUJDLHNCQUF2QixDQUFRRCxVQUFSO0FBRUEsSUFBTUUsR0FBRyxHQUFHLHVCQUFNLDBDQUFOLENBQVo7O0FBRU8sSUFBTUMsYUFBYSxHQUFHLFNBQWhCQSxhQUFnQixDQUFDQyxJQUFELEVBQU9DLGVBQVA7QUFBQSxTQUEyQixVQUFDQyxNQUFELEVBQVk7QUFDbEUsUUFBTUMsR0FBRyxHQUFHO0FBQ1ZDLE1BQUFBLEtBQUssRUFBRUYsTUFBTSxDQUFDRSxLQURKO0FBRVZDLE1BQUFBLEtBQUssRUFBRUgsTUFBTSxDQUFDRztBQUZKLEtBQVo7O0FBS0EsUUFBSUwsSUFBSSxLQUFLLFVBQWIs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QUFELENBQWIsR0FBdUIsOEJBQXZCO0FBQ0QsT0FGRCxNQUVPO0FBQ0wsWUFBTW9HLGVBQWUsR0FBR0gsZUFBZSxDQUFDSSxLQUFoQixDQUFzQjNFLEtBQUssR0FBRyxDQUE5QixFQUFpQ2MsSUFBakMsQ0FBc0MsVUFBQ0osQ0FBRDtBQUFBLGlCQUFPQSxDQUFDLENBQUNyQyxLQUFGLEtBQVlBLEtBQW5CO0FBQUEsU0FBdEMsQ0FBeEI7O0FBRUEsWUFBSXFHLGVBQUosRUFBcUI7QUFDbkJELFVBQUFBLGFBQWEsQ0FBQ25HLEtBQUQsQ0FBYixHQUF1QiwyQkFBdkI7QUFDRDtBQUNGO0FBQ0YsS0FaRDs7QUFjQSxRQUFJLENBQUMseUJBQVFtRyxhQUFSLENBQUwsRUFBNkI7QUFDM0JQLE1BQUFBLGdCQUFnQixDQUFDckUsR0FBRCxDQUFoQixHQUF3QjRFLGFBQXhCO0FBQ0Q7QUFDRixHQXJCRDtBQXVCQSxNQUFNRyxpQkFBaUIsR0FBRyxDQUFDaEQsTUFBTSxDQUFDbUIsS0FBUCxDQUFhLGdCQUFiLEtBQWtDLEVBQW5DLEVBQXVDbEUsTUFBakU7O0FBRUEsTUFBSStGLGlCQUFpQixHQUFHWCxnQkFBeEIsRUFBMEM7QUFDeENFLElBQUFBLE1BQU0sQ0FBQ3JCLGFBQVAsMEJBQXVDbUIsZ0JBQXZDO0FBQ0QsR0FGRCxNQUVPLElBQUlXLGlCQUFpQixHQUFHLENBQXhCLEVBQTJCO0FBQ2hDVCxJQUFBQSxNQUFNLENBQUNyQixhQUFQLEdBQXVCLG1EQUF2QjtBQUNEOztBQUVELE1BQUksQ0FBQyx5QkFBUW9CLGdCQUFSLENBQUwsRUFBZ0M7QUFDOUJDLElBQUFBLE1BQU0sQ0FBQzFFLE9BQVAsR0FBaUJ5RSxnQkFBakI7QUFDRDs7QUFFRCxTQUFPQyxNQUFQO0FBQ0QsQ0FoRE0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IG1hcCBmcm9tICdsb2Rhc2gvbWFwJztcbmltcG9ydCByZWR1Y2UgZnJvbSAnbG9kYXNoL3JlZHVjZSc7XG5pbXBvcnQgZmluZCBmcm9tICdsb2Rhc2gvZmluZCc7XG5pbXBvcnQgaXNFbXB0eSBmcm9tICdsb2Rhc2gvaXNFbXB0eSc7XG5pbXBvcnQgeyBkZWNvZGUgfSBmcm9tICdoZSc7XG5pbXBvcnQgeyBwYXJ0aWFsU2NvcmluZyB9IGZyb20gJ0BwaWUtbGliL2NvbnRyb2xsZXItdXRpbHMnO1xuaW1wb3J0IFRyYW5zbGF0b3IgZnJvbSAnQHBpZS1saWIvdHJhbnNsYXRvcic7XG5pbXBvcnQgZGVmYXVsdHMgZnJvbSAnLi9kZWZhdWx0cyc7XG5cbmNvbnN0IHsgdHJhbnNsYXRvciB9ID0gVHJhbnNsYXRvcjtcblxuY29uc3QgbG9nID0gZGVidWcoJ2V4cGxpY2l0LWNvbnN0cnVjdGVkLXJlc3BvbnNlOmNvbnRyb2xsZXInKTtcblxuZXhwb3J0IGNvbnN0IHByZXBhcmVDaG9pY2UgPSAobW9kZSwgZGVmYXVsdEZlZWRiYWNrKSA9PiAoY2hvaWNlKSA9PiB7XG4gIGNvbnN0IG91dCA9IHtcbiAgICBsYWJlbDogY2hvaWNlLmxhYmVsLFxuICAgIHZhbHVlOiBjaG9pY2UudmFsdWUsXG4gIH07XG5cbiAgaWYgKG1vZGUgPT09ICdldmFsdWF0ZScpIHtcbiAgICBvdXQuY29ycmVjdCA9IHRydWU7XG5cbiAgICBjb25zdCBmZWVkYmFja1R5cGUgPSAoY2hvaWNlLmZlZWRiYWNrICYmIGNob2ljZS5mZWVkYmFjay50eXBlKSB8fCAnbm9uZSc7XG5cbiAgICBpZiAoZmVlZGJhY2tUeXBlID09PSAnZGVmYXVsdCcpIHtcbiAgICAgIG91dC5mZWVkYmFjayA9IGRlZmF1bHRGZWVkYmFja1snY29ycmVjdCddO1xuICAgIH0gZWxzZSBpZiAoZmVlZGJhY2tUeXBlID09PSAnY3VzdG9tJykge1xuICAgICAgb3V0LmZlZWRiYWNrID0gY2hvaWNlLmZlZWRiYWNrLnZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvdXQ7XG59O1xuXG5jb25zdCBnZXRGZWVkYmFjayA9ICh2YWx1ZSkgPT4ge1xuICBpZiAodmFsdWUpIHtcbiAgICByZXR1cm4gJ2NvcnJlY3QnO1xuICB9XG5cbiAgcmV0dXJuICdpbmNvcnJlY3QnO1xufTtcblxuLy8gYWxzbyB1c2VkIGluIGNvbmZpZ3VyZS9zcmMvbWFya3VwVXRpbHMuanNcbmNvbnN0IGdldEFkanVzdGVkTGVuZ3RoID0gKGxlbmd0aCkgPT4ge1xuICBpZiAobGVuZ3RoIDw9IDIpIHtcbiAgICByZXR1cm4gbGVuZ3RoICsgMjtcbiAgfVxuXG4gIGlmIChsZW5ndGggPD0gNCkge1xuICAgIHJldHVybiBsZW5ndGggKyAzO1xuICB9XG5cbiAgaWYgKGxlbmd0aCA8PSA2KSB7XG4gICAgcmV0dXJuIGxlbmd0aCArIDQ7XG4gIH1cblxuICByZXR1cm4gbGVuZ3RoICsgNTtcbn07XG5cbi8vIHdlIGNhbid0IHVzZSB0aGUgZG9tIHBhcnNlciBoZXJlIGJlY2F1c2UgaXQgaXMgbm90IGF2YWlsYWJsZSBpbiB0aGUgbm9kZSBlbnZpcm9ubWVudFxuY29uc3QgZGVjb2RlSHRtbEVudGl0aWVzID0gKHN0cikgPT4ge1xuICBpZiAoIXN0cikgcmV0dXJuICcnO1xuICByZXR1cm4gc3RyXG4gICAgLnJlcGxhY2UoLyZsdDsvZywgJzwnKVxuICAgIC5yZXBsYWNlKC8mZ3Q7L2csICc+JylcbiAgICAucmVwbGFjZSgvJnF1b3Q7L2csICdcIicpXG4gICAgLnJlcGxhY2UoLyYjeDI3O3wmIzM5Oy9nLCAnXFwnJylcbiAgICAucmVwbGFjZSgvJmFtcDsvZywgJyYnKTtcbn07XG5cbmV4cG9ydCBjb25zdCBub3JtYWxpemUgPSAocXVlc3Rpb24pID0+ICh7IC4uLmRlZmF1bHRzLCAuLi5xdWVzdGlvbiB9KTtcblxuLyoqXG4gKlxuICogQHBhcmFtIHsqfSBxdWVzdGlvblxuICogQHBhcmFtIHsqfSBzZXNzaW9uXG4gKiBAcGFyYW0geyp9IGVudlxuICovXG5leHBvcnQgZnVuY3Rpb24gbW9kZWwocXVlc3Rpb24sIHNlc3Npb24sIGVudikge1xuICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUpID0+IHtcbiAgICAvLyB0aGlzIHdhcyBhZGRlZCB0byB0cmVhdCBhbiBleGNlcHRpb24sIHdoZW4gdGhlIG1vZGVsIGhhcyBjaG9pY2VzIHdpdGhvdXRcbiAgICAvLyB0aGUgXCJ2YWx1ZVwiIHByb3BlcnR5IGxpa2U6IHsgbGFiZWw6ICd0ZXN0JyB9XG4gICAgaWYgKHF1ZXN0aW9uLmNob2ljZXMpIHtcbiAgICAgIE9iamVjdC5rZXlzKHF1ZXN0aW9uLmNob2ljZXMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICBxdWVzdGlvbi5jaG9pY2VzW2tleV0gPSAocXVlc3Rpb24uY2hvaWNlc1trZXldIHx8IFtdKS5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgaWYgKCFpdGVtLnZhbHVlKSB7XG4gICAgICAgICAgICBsb2coJ0Nob2ljZSBkb2VzIG5vdCBjb250YWluIFwidmFsdWVcIiBwcm9wZXJ0eSwgd2hpY2ggaXMgcmVxdWlyZWQuJywgaXRlbSk7XG4gICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogYCR7aW5kZXh9YCwgLi4uaXRlbSB9O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IG5vcm1hbGl6ZWRRdWVzdGlvbiA9IG5vcm1hbGl6ZShxdWVzdGlvbik7XG4gICAgY29uc3QgZGVmYXVsdEZlZWRiYWNrID0gT2JqZWN0LmFzc2lnbihcbiAgICAgIHsgY29ycmVjdDogJ0NvcnJlY3QnLCBpbmNvcnJlY3Q6ICdJbmNvcnJlY3QnIH0sXG4gICAgICBub3JtYWxpemVkUXVlc3Rpb24uZGVmYXVsdEZlZWRiYWNrLFxuICAgICk7XG4gICAgY29uc3QgcHJlcGFyZUNob2ljZUZuID0gcHJlcGFyZUNob2ljZShlbnYubW9kZSwgZGVmYXVsdEZlZWRiYWNrKTtcbiAgICBjb25zdCBjaG9pY2VzID0gcmVkdWNlKFxuICAgICAgbm9ybWFsaXplZFF1ZXN0aW9uLmNob2ljZXMsXG4gICAgICAob2JqLCBhcmVhLCBrZXkpID0+IHtcbiAgICAgICAgb2JqW2tleV0gPSBtYXAoYXJlYSwgcHJlcGFyZUNob2ljZUZuKTtcblxuICAgICAgICByZXR1cm4gb2JqO1xuICAgICAgfSxcbiAgICAgIHt9LFxuICAgICk7XG5cbiAgICBjb25zdCB7IHZhbHVlID0ge30gfSA9IHNlc3Npb24gfHwge307XG4gICAgY29uc3QgZmVlZGJhY2sgPVxuICAgICAgZW52Lm1vZGUgPT09ICdldmFsdWF0ZSdcbiAgICAgICAgPyByZWR1Y2UoXG4gICAgICAgICAgICBub3JtYWxpemVkUXVlc3Rpb24uY2hvaWNlcyxcbiAgICAgICAgICAgIChvYmosIHJlc3BBcmVhLCBrZXkpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgY2hvc2VuVmFsdWUgPSB2YWx1ZSAmJiB2YWx1ZVtrZXldO1xuICAgICAgICAgICAgICBjb25zdCB2YWwgPVxuICAgICAgICAgICAgICAgICFpc0VtcHR5KGNob3NlblZhbHVlKSAmJiBmaW5kKHJlc3BBcmVhLCAoYykgPT4gcHJlcGFyZVZhbChjLmxhYmVsKSA9PT0gcHJlcGFyZVZhbChjaG9zZW5WYWx1ZSkpO1xuXG4gICAgICAgICAgICAgIG9ialtrZXldID0gZ2V0RmVlZGJhY2sodmFsKTtcblxuICAgICAgICAgICAgICByZXR1cm4gb2JqO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHt9LFxuICAgICAgICAgIClcbiAgICAgICAgOiB7fTtcblxuICAgIC8vIGNoZWNrIGlmIGF0IGxlYXN0IG9uZSBjaG9pY2UgaGFzIGFuIGFsdGVybmF0ZVxuICAgIGNvbnN0IHNob3dOb3RlID0gT2JqZWN0LnZhbHVlcyhjaG9pY2VzKS5zb21lKChjaG9pY2UpID0+IGNob2ljZT8ubGVuZ3RoID4gMSk7XG4gICAgY29uc3Qgbm90ZSA9XG4gICAgICBub3JtYWxpemVkUXVlc3Rpb24ubm90ZSB8fFxuICAgICAgdHJhbnNsYXRvci50KCdjb21tb246Y29tbW9uQ29ycmVjdEFuc3dlcldpdGhBbHRlcm5hdGVzJywgeyBsbmc6IG5vcm1hbGl6ZWRRdWVzdGlvbi5sYW5ndWFnZSB9KTtcblxuICAgIGNvbnN0IHsgbWF4TGVuZ3RoUGVyQ2hvaWNlID0gW10sIG1heExlbmd0aFBlckNob2ljZUVuYWJsZWQgfSA9IG5vcm1hbGl6ZWRRdWVzdGlvbjtcbiAgICBjb25zdCB1bmRlZmluZWRMZW5ndGhzID0gIW1heExlbmd0aFBlckNob2ljZS5sZW5ndGg7XG5cbiAgICAvLyBjYWxjdWxhdGUgbWF4TGVuZ3RoUGVyQ2hvaWNlIGFycmF5IGlmIGl0IGlzIG5vdCBkZWZpbmVkIG9yIGRlZmluZWQgaW5jb3JyZWN0bHlcbiAgICBPYmplY3QudmFsdWVzKGNob2ljZXMpLmZvckVhY2goKGNob2ljZSwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IGxhYmVsTGVuZ3Roc0FyciA9IChjaG9pY2UgfHwgW10pLm1hcCgoY2hvaWNlKSA9PiBkZWNvZGVIdG1sRW50aXRpZXMoY2hvaWNlLmxhYmVsIHx8ICcnKS5sZW5ndGgpO1xuICAgICAgY29uc3QgbGVuZ3RoID0gTWF0aC5tYXgoLi4ubGFiZWxMZW5ndGhzQXJyKTtcblxuICAgICAgaWYgKFxuICAgICAgICB1bmRlZmluZWRMZW5ndGhzIHx8XG4gICAgICAgICFtYXhMZW5ndGhQZXJDaG9pY2VbaW5kZXhdIHx8XG4gICAgICAgIG1heExlbmd0aFBlckNob2ljZVtpbmRleF0gPCBsZW5ndGggfHxcbiAgICAgICAgbWF4TGVuZ3RoUGVyQ2hvaWNlW2luZGV4XSA+IGxlbmd0aCArIDEwXG4gICAgICApIHtcbiAgICAgICAgbWF4TGVuZ3RoUGVyQ2hvaWNlW2luZGV4XSA9IGdldEFkanVzdGVkTGVuZ3RoKGxlbmd0aCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb25zdCBvdXQgPSB7XG4gICAgICBjaG9pY2VzLFxuICAgICAgZGlzYWJsZWQ6IGVudi5tb2RlICE9PSAnZ2F0aGVyJyxcbiAgICAgIGRpc3BsYXlUeXBlOiBub3JtYWxpemVkUXVlc3Rpb24uZGlzcGxheVR5cGUsXG4gICAgICBtb2RlOiBlbnYubW9kZSxcbiAgICAgIHJvbGU6IGVudi5yb2xlLFxuICAgICAgZmVlZGJhY2ssXG4gICAgICBsYW5ndWFnZTogbm9ybWFsaXplZFF1ZXN0aW9uLmxhbmd1YWdlLFxuICAgICAgbWFya3VwOiBub3JtYWxpemVkUXVlc3Rpb24ubWFya3VwLFxuICAgICAgbWF4TGVuZ3RoUGVyQ2hvaWNlLFxuICAgICAgbWF4TGVuZ3RoUGVyQ2hvaWNlRW5hYmxlZCxcbiAgICAgIG5vdGUsXG4gICAgICBwbGF5ZXJTcGVsbENoZWNrRW5hYmxlZDogbm9ybWFsaXplZFF1ZXN0aW9uLnBsYXllclNwZWxsQ2hlY2tFbmFibGVkLFxuICAgICAgcHJvbXB0OiBub3JtYWxpemVkUXVlc3Rpb24ucHJvbXB0RW5hYmxlZCA/IG5vcm1hbGl6ZWRRdWVzdGlvbi5wcm9tcHQgOiBkZWZhdWx0cy5wcm9tcHQsXG4gICAgICByYXRpb25hbGU6IGRlZmF1bHRzLnJhdGlvbmFsZSxcbiAgICAgIHJlc3BvbnNlQ29ycmVjdDogZW52Lm1vZGUgPT09ICdldmFsdWF0ZScgPyBnZXRTY29yZShub3JtYWxpemVkUXVlc3Rpb24sIHNlc3Npb24pID09PSAxIDogdW5kZWZpbmVkLFxuICAgICAgc2hvd05vdGUsXG4gICAgICB0ZWFjaGVySW5zdHJ1Y3Rpb25zOiBkZWZhdWx0cy50ZWFjaGVySW5zdHJ1Y3Rpb25zLFxuICAgICAgcmVzcG9uc2VBcmVhSW5wdXRDb25maWd1cmF0aW9uOiBub3JtYWxpemVkUXVlc3Rpb24ucmVzcG9uc2VBcmVhSW5wdXRDb25maWd1cmF0aW9uLFxuICAgICAgZXh0cmFDU1NSdWxlczogbm9ybWFsaXplZFF1ZXN0aW9uLmV4dHJhQ1NTUnVsZXMsXG4gICAgfTtcblxuICAgIGlmIChlbnYucm9sZSA9PT0gJ2luc3RydWN0b3InICYmIChlbnYubW9kZSA9PT0gJ3ZpZXcnIHx8IGVudi5tb2RlID09PSAnZXZhbHVhdGUnKSkge1xuICAgICAgb3V0LnJhdGlvbmFsZSA9IG5vcm1hbGl6ZWRRdWVzdGlvbi5yYXRpb25hbGVFbmFibGVkID8gbm9ybWFsaXplZFF1ZXN0aW9uLnJhdGlvbmFsZSA6IGRlZmF1bHRzLnJhdGlvbmFsZTtcbiAgICAgIG91dC50ZWFjaGVySW5zdHJ1Y3Rpb25zID0gbm9ybWFsaXplZFF1ZXN0aW9uLnRlYWNoZXJJbnN0cnVjdGlvbnNFbmFibGVkXG4gICAgICAgID8gbm9ybWFsaXplZFF1ZXN0aW9uLnRlYWNoZXJJbnN0cnVjdGlvbnNcbiAgICAgICAgOiBkZWZhdWx0cy50ZWFjaGVySW5zdHJ1Y3Rpb25zO1xuICAgIH1cblxuICAgIHJlc29sdmUob3V0KTtcbiAgfSk7XG59XG5cbmV4cG9ydCBjb25zdCBwcmVwYXJlVmFsID0gKGh0bWwpID0+IHtcbiAgcmV0dXJuIGRlY29kZUhUTUwoZ2V0SW5uZXJUZXh0KGh0bWwpLnRyaW0oKSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U2NvcmUgPSAoY29uZmlnLCBzZXNzaW9uKSA9PiB7XG4gIGNvbnN0IHsgdmFsdWUgfSA9IHNlc3Npb24gfHwge307XG5cbiAgaWYgKCFzZXNzaW9uIHx8IGlzRW1wdHkoc2Vzc2lvbikgfHwgIXZhbHVlKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBjb25zdCByZXNwb25zZUFyZWFzID0gY29uZmlnLm1hcmt1cCAmJiBjb25maWcubWFya3VwLm1hdGNoKC9cXHtcXHsoLis/KVxcfVxcfS9nKTtcbiAgY29uc3QgbWF4U2NvcmUgPSByZXNwb25zZUFyZWFzID8gcmVzcG9uc2VBcmVhcy5sZW5ndGggOiAwO1xuICBjb25zdCBjb3JyZWN0Q291bnQgPSByZWR1Y2UoXG4gICAgY29uZmlnLmNob2ljZXMsXG4gICAgKHRvdGFsLCByZXNwQXJlYSwga2V5KSA9PiB7XG4gICAgICBjb25zdCBjaG9zZW5WYWx1ZSA9IHZhbHVlICYmIHZhbHVlW2tleV07XG5cbiAgICAgIGlmIChpc0VtcHR5KGNob3NlblZhbHVlKSB8fCAhZmluZChyZXNwQXJlYSwgKGMpID0+IHByZXBhcmVWYWwoYy5sYWJlbCkgPT09IHByZXBhcmVWYWwoY2hvc2VuVmFsdWUpKSkge1xuICAgICAgICByZXR1cm4gdG90YWw7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0b3RhbCArIDE7XG4gICAgfSxcbiAgICAwLFxuICApO1xuXG4gIGNvbnN0IHN0ciA9IG1heFNjb3JlID8gKGNvcnJlY3RDb3VudCAvIG1heFNjb3JlKS50b0ZpeGVkKDIpIDogMDtcblxuICByZXR1cm4gcGFyc2VGbG9hdChzdHIpO1xufTtcblxuLyoqXG4gKiBUaGUgc2NvcmUgaXMgcGFydGlhbCBieSBkZWZhdWx0IGZvciBjaGVja2JveCBtb2RlLCBhbGxPck5vdGhpbmcgZm9yIHJhZGlvIG1vZGUuXG4gKiBUbyBkaXNhYmxlIHBhcnRpYWwgc2NvcmluZyBmb3IgY2hlY2tib3ggbW9kZSB5b3UgZWl0aGVyIHNldCBtb2RlbC5wYXJ0aWFsU2NvcmluZyA9IGZhbHNlIG9yIGVudi5wYXJ0aWFsU2NvcmluZyA9XG4gKiBmYWxzZS4gdGhlIHZhbHVlIGluIGBlbnZgIHdpbGwgb3ZlcnJpZGUgdGhlIHZhbHVlIGluIGBtb2RlbGAuXG4gKiBAcGFyYW0ge09iamVjdH0gbW9kZWwgLSB0aGUgbWFpbiBtb2RlbFxuICogQHBhcmFtIHtib29sZWFufSBtb2RlbC5wYXJ0aWFsU2NvcmluZyAtIGlzIHBhcnRpYWwgc2NvcmluZyBlbmFibGVkIChpZiB1bmRlZmluZWQgc2V0IHRvIHRvIHRydWUpXG4gKiBAcGFyYW0geyp9IHNlc3Npb25cbiAqIEBwYXJhbSB7T2JqZWN0fSBlbnZcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gZW52LnBhcnRpYWxTY29yaW5nIC0gaXMgcGFydGlhbCBzY29yaW5nIGVuYWJsZWQgKGlmIHVuZGVmaW5lZCBkZWZhdWx0IHRvIHRydWUpIFRoaXMgb3ZlcnJpZGVzXG4gKiAgIGBtb2RlbC5wYXJ0aWFsU2NvcmluZ2AuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvdXRjb21lKG1vZGVsLCBzZXNzaW9uLCBlbnYgPSB7fSkge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICBjb25zdCBwYXJ0aWFsU2NvcmluZ0VuYWJsZWQgPSBwYXJ0aWFsU2NvcmluZy5lbmFibGVkKG1vZGVsLCBlbnYpO1xuICAgIGNvbnN0IHNjb3JlID0gZ2V0U2NvcmUobW9kZWwsIHNlc3Npb24pO1xuXG4gICAgcmVzb2x2ZSh7IHNjb3JlOiBwYXJ0aWFsU2NvcmluZ0VuYWJsZWQgPyBzY29yZSA6IHNjb3JlID09PSAxID8gMSA6IDAsIGVtcHR5OiBpc0VtcHR5KHNlc3Npb24pIH0pO1xuICB9KTtcbn1cblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUNvcnJlY3RSZXNwb25zZVNlc3Npb24gPSAocXVlc3Rpb24sIGVudikgPT4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICBpZiAoZW52Lm1vZGUgIT09ICdldmFsdWF0ZScgJiYgZW52LnJvbGUgPT09ICdpbnN0cnVjdG9yJykge1xuICAgICAgY29uc3QgeyBjaG9pY2VzIH0gPSBxdWVzdGlvbjtcbiAgICAgIGNvbnN0IHZhbHVlID0ge307XG5cbiAgICAgIE9iamVjdC5rZXlzKGNob2ljZXMpLmZvckVhY2goKGtleSwgaSkgPT4ge1xuICAgICAgICB2YWx1ZVtpXSA9IGNob2ljZXNba2V5XVswXS5sYWJlbDtcbiAgICAgIH0pO1xuXG4gICAgICByZXNvbHZlKHsgaWQ6ICcxJywgdmFsdWUgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc29sdmUobnVsbCk7XG4gICAgfVxuICB9KTtcbn07XG5cbi8vIHJlbW92ZSBhbGwgaHRtbCB0YWdzXG4vLyBjb25zdCBnZXRJbm5lclRleHQgPSAoaHRtbCkgPT4gKGh0bWwgfHwgJycpLnJlcGxhY2VBbGwoLzxbXj5dKj4vZywgJycpO1xuY29uc3QgZ2V0SW5uZXJUZXh0ID0gKGh0bWwpID0+IHtcbiAgaWYgKHR5cGVvZiBodG1sICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiAnJztcbiAgfVxuICBpZiAodHlwZW9mIGh0bWwucmVwbGFjZUFsbCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBodG1sLnJlcGxhY2VBbGwoLzxbXj5dKj4vZywgJycpO1xuICB9IGVsc2Uge1xuICAgIC8vIFBvbHlmaWxsIGZvciByZXBsYWNlQWxsIHVzaW5nIHJlcGxhY2UgYW5kIGEgZ2xvYmFsIHJlZ2V4XG4gICAgcmV0dXJuIGh0bWwucmVwbGFjZSgvPFtePl0qPi9nLCAnJyk7XG4gIH1cbn07XG5cbmNvbnN0IGRlY29kZUhUTUwgPSAoaHRtbCkgPT4gZGVjb2RlKGh0bWwpO1xuXG4vLyByZW1vdmUgYWxsIGh0bWwgdGFncyBleGNlcHQgaW1nLCBpZnJhbWUgYW5kIHNvdXJjZSB0YWcgZm9yIGF1ZGlvXG5jb25zdCBnZXRDb250ZW50ID0gKGh0bWwpID0+IChodG1sIHx8ICcnKS5yZXBsYWNlKC8oPCg/IWltZ3xpZnJhbWV8c291cmNlKShbXj5dKyk+KS9naSwgJycpO1xuXG5leHBvcnQgY29uc3QgdmFsaWRhdGUgPSAobW9kZWwgPSB7fSwgY29uZmlnID0ge30pID0+IHtcbiAgY29uc3QgeyBjaG9pY2VzLCBtYXJrdXAgfSA9IG1vZGVsO1xuICBjb25zdCB7IG1heFJlc3BvbnNlQXJlYXMgfSA9IGNvbmZpZztcbiAgY29uc3QgYWxsQ2hvaWNlc0Vycm9ycyA9IHt9O1xuICBjb25zdCBlcnJvcnMgPSB7fTtcblxuICBbJ3RlYWNoZXJJbnN0cnVjdGlvbnMnLCAncHJvbXB0JywgJ3JhdGlvbmFsZSddLmZvckVhY2goKGZpZWxkKSA9PiB7XG4gICAgaWYgKGNvbmZpZ1tmaWVsZF0/LnJlcXVpcmVkICYmICFnZXRDb250ZW50KG1vZGVsW2ZpZWxkXSkpIHtcbiAgICAgIGVycm9yc1tmaWVsZF0gPSAnVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4nO1xuICAgIH1cbiAgfSk7XG5cbiAgT2JqZWN0LmVudHJpZXMoY2hvaWNlcyB8fCB7fSkuZm9yRWFjaCgoW2tleSwgdmFsdWVzXSkgPT4ge1xuICAgIGNvbnN0IHJldmVyc2VkQ2hvaWNlcyA9IFsuLi4odmFsdWVzIHx8IFtdKV0ucmV2ZXJzZSgpO1xuICAgIGNvbnN0IGNob2ljZXNFcnJvcnMgPSB7fTtcblxuICAgIHJldmVyc2VkQ2hvaWNlcy5mb3JFYWNoKChjaG9pY2UsIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCB7IHZhbHVlLCBsYWJlbCB9ID0gY2hvaWNlO1xuXG4gICAgICBpZiAobGFiZWwgPT09ICcnIHx8IGxhYmVsID09PSAnPGRpdj48L2Rpdj4nKSB7XG4gICAgICAgIGNob2ljZXNFcnJvcnNbdmFsdWVdID0gJ0NvbnRlbnQgc2hvdWxkIG5vdCBiZSBlbXB0eS4nO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgaWRlbnRpY2FsQW5zd2VyID0gcmV2ZXJzZWRDaG9pY2VzLnNsaWNlKGluZGV4ICsgMSkuc29tZSgoYykgPT4gYy5sYWJlbCA9PT0gbGFiZWwpO1xuXG4gICAgICAgIGlmIChpZGVudGljYWxBbnN3ZXIpIHtcbiAgICAgICAgICBjaG9pY2VzRXJyb3JzW3ZhbHVlXSA9ICdDb250ZW50IHNob3VsZCBiZSB1bmlxdWUuJztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKCFpc0VtcHR5KGNob2ljZXNFcnJvcnMpKSB7XG4gICAgICBhbGxDaG9pY2VzRXJyb3JzW2tleV0gPSBjaG9pY2VzRXJyb3JzO1xuICAgIH1cbiAgfSk7XG5cbiAgY29uc3QgbmJPZlJlc3BvbnNlQXJlYXMgPSAobWFya3VwLm1hdGNoKC9cXHtcXHsoXFxkKylcXH1cXH0vZykgfHwgW10pLmxlbmd0aDtcblxuICBpZiAobmJPZlJlc3BvbnNlQXJlYXMgPiBtYXhSZXNwb25zZUFyZWFzKSB7XG4gICAgZXJyb3JzLnJlc3BvbnNlQXJlYXMgPSBgTm8gbW9yZSB0aGFuICR7bWF4UmVzcG9uc2VBcmVhc30gcmVzcG9uc2UgYXJlYXMgc2hvdWxkIGJlIGRlZmluZWQuYDtcbiAgfSBlbHNlIGlmIChuYk9mUmVzcG9uc2VBcmVhcyA8IDEpIHtcbiAgICBlcnJvcnMucmVzcG9uc2VBcmVhcyA9ICdUaGVyZSBzaG91bGQgYmUgYXQgbGVhc3QgMSByZXNwb25zZSBhcmVhIGRlZmluZWQuJztcbiAgfVxuXG4gIGlmICghaXNFbXB0eShhbGxDaG9pY2VzRXJyb3JzKSkge1xuICAgIGVycm9ycy5jaG9pY2VzID0gYWxsQ2hvaWNlc0Vycm9ycztcbiAgfVxuXG4gIHJldHVybiBlcnJvcnM7XG59O1xuIl19
|
|
386
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.js"],"names":["translator","Translator","log","prepareChoice","mode","defaultFeedback","choice","out","label","value","correct","feedbackType","feedback","type","getFeedback","getAdjustedLength","length","decodeHtmlEntities","str","replace","normalize","question","defaults","model","session","env","Promise","resolve","choices","Object","keys","forEach","key","map","item","index","normalizedQuestion","assign","incorrect","prepareChoiceFn","obj","area","respArea","chosenValue","val","c","prepareVal","showNote","values","some","note","t","lng","language","maxLengthPerChoice","maxLengthPerChoiceEnabled","undefinedLengths","labelLengthsArr","Math","max","disabled","displayType","role","markup","playerSpellCheckEnabled","prompt","promptEnabled","rationale","responseCorrect","getScore","undefined","teacherInstructions","responseAreaInputConfiguration","extraCSSRules","rationaleEnabled","teacherInstructionsEnabled","html","decodeHTML","getInnerText","trim","config","responseAreas","match","maxScore","correctCount","total","toFixed","parseFloat","outcome","partialScoringEnabled","partialScoring","enabled","score","empty","createCorrectResponseSession","i","id","replaceAll","getContent","validate","maxResponseAreas","allChoicesErrors","errors","field","required","entries","reversedChoices","reverse","choicesErrors","identicalAnswer","slice","nbOfResponseAreas"],"mappings":"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","sourcesContent":["import debug from 'debug';\nimport map from 'lodash/map';\nimport reduce from 'lodash/reduce';\nimport find from 'lodash/find';\nimport isEmpty from 'lodash/isEmpty';\nimport { decode } from 'he';\nimport { partialScoring } from '@pie-lib/controller-utils';\nimport Translator from '@pie-lib/translator';\nimport defaults from './defaults';\n\nconst { translator } = Translator;\n\nconst log = debug('explicit-constructed-response:controller');\n\nexport const prepareChoice = (mode, defaultFeedback) => (choice) => {\n const out = {\n label: choice.label,\n value: choice.value,\n };\n\n if (mode === 'evaluate') {\n out.correct = true;\n\n const feedbackType = (choice.feedback && choice.feedback.type) || 'none';\n\n if (feedbackType === 'default') {\n out.feedback = defaultFeedback['correct'];\n } else if (feedbackType === 'custom') {\n out.feedback = choice.feedback.value;\n }\n }\n\n return out;\n};\n\nconst getFeedback = (value) => {\n if (value) {\n return 'correct';\n }\n\n return 'incorrect';\n};\n\n// also used in configure/src/markupUtils.js\nconst getAdjustedLength = (length) => {\n if (length <= 2) {\n return length + 2;\n }\n\n if (length <= 4) {\n return length + 3;\n }\n\n if (length <= 6) {\n return length + 4;\n }\n\n return length + 5;\n};\n\n// we can't use the dom parser here because it is not available in the node environment\nconst decodeHtmlEntities = (str) => {\n if (!str) return '';\n return str\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/"/g, '\"')\n .replace(/'|'/g, '\\'')\n .replace(/&/g, '&');\n};\n\nexport const normalize = (question) => ({ ...defaults, ...question });\n\n/**\n *\n * @param {*} question\n * @param {*} session\n * @param {*} env\n */\nexport function model(question, session, env) {\n return new Promise(async (resolve) => {\n // this was added to treat an exception, when the model has choices without\n // the \"value\" property like: { label: 'test' }\n if (question.choices) {\n Object.keys(question.choices).forEach((key) => {\n question.choices[key] = (question.choices[key] || []).map((item, index) => {\n if (!item.value) {\n log('Choice does not contain \"value\" property, which is required.', item);\n return { value: `${index}`, ...item };\n }\n\n return item;\n });\n });\n }\n\n const normalizedQuestion = normalize(question);\n const defaultFeedback = Object.assign(\n { correct: 'Correct', incorrect: 'Incorrect' },\n normalizedQuestion.defaultFeedback,\n );\n const prepareChoiceFn = prepareChoice(env.mode, defaultFeedback);\n const choices = reduce(\n normalizedQuestion.choices,\n (obj, area, key) => {\n obj[key] = map(area, prepareChoiceFn);\n\n return obj;\n },\n {},\n );\n\n const { value = {} } = session || {};\n const feedback =\n env.mode === 'evaluate'\n ? reduce(\n normalizedQuestion.choices,\n (obj, respArea, key) => {\n const chosenValue = value && value[key];\n const val =\n !isEmpty(chosenValue) && find(respArea, (c) => prepareVal(c.label) === prepareVal(chosenValue));\n\n obj[key] = getFeedback(val);\n\n return obj;\n },\n {},\n )\n : {};\n\n // check if at least one choice has an alternate\n const showNote = Object.values(choices).some((choice) => choice?.length > 1);\n const note =\n normalizedQuestion.note ||\n translator.t('common:commonCorrectAnswerWithAlternates', { lng: normalizedQuestion.language });\n\n const { maxLengthPerChoice = [], maxLengthPerChoiceEnabled } = normalizedQuestion;\n const undefinedLengths = !maxLengthPerChoice.length;\n\n // calculate maxLengthPerChoice array if it is not defined or defined incorrectly\n Object.values(choices).forEach((choice, index) => {\n const labelLengthsArr = (choice || []).map((choice) => decodeHtmlEntities(choice.label || '').length);\n const length = Math.max(...labelLengthsArr);\n\n if (\n undefinedLengths ||\n !maxLengthPerChoice[index] ||\n maxLengthPerChoice[index] < length ||\n maxLengthPerChoice[index] > length + 10\n ) {\n maxLengthPerChoice[index] = getAdjustedLength(length);\n }\n });\n\n const out = {\n choices,\n disabled: env.mode !== 'gather',\n displayType: normalizedQuestion.displayType,\n mode: env.mode,\n role: env.role,\n feedback,\n language: normalizedQuestion.language,\n markup: normalizedQuestion.markup,\n maxLengthPerChoice,\n maxLengthPerChoiceEnabled,\n note,\n playerSpellCheckEnabled: normalizedQuestion.playerSpellCheckEnabled,\n prompt: normalizedQuestion.promptEnabled ? normalizedQuestion.prompt : defaults.prompt,\n rationale: defaults.rationale,\n responseCorrect: env.mode === 'evaluate' ? getScore(normalizedQuestion, session) === 1 : undefined,\n showNote,\n teacherInstructions: defaults.teacherInstructions,\n responseAreaInputConfiguration: normalizedQuestion.responseAreaInputConfiguration,\n extraCSSRules: normalizedQuestion.extraCSSRules,\n };\n\n if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {\n out.rationale = normalizedQuestion.rationaleEnabled ? normalizedQuestion.rationale : defaults.rationale;\n out.teacherInstructions = normalizedQuestion.teacherInstructionsEnabled\n ? normalizedQuestion.teacherInstructions\n : defaults.teacherInstructions;\n }\n\n resolve(out);\n });\n}\n\nexport const prepareVal = (html) => {\n return decodeHTML(getInnerText(html).trim());\n};\n\nexport const getScore = (config, session) => {\n const { value } = session || {};\n\n if (!session || isEmpty(session) || !value) {\n return 0;\n }\n\n const responseAreas = config.markup && config.markup.match(/\\{\\{(.+?)\\}\\}/g);\n const maxScore = responseAreas ? responseAreas.length : 0;\n const correctCount = reduce(\n config.choices,\n (total, respArea, key) => {\n const chosenValue = value && value[key];\n\n if (isEmpty(chosenValue) || !find(respArea, (c) => prepareVal(c.label) === prepareVal(chosenValue))) {\n return total;\n }\n\n return total + 1;\n },\n 0,\n );\n\n const str = maxScore ? (correctCount / maxScore).toFixed(2) : 0;\n\n return parseFloat(str);\n};\n\n/**\n * The score is partial by default for checkbox mode, allOrNothing for radio mode.\n * To disable partial scoring for checkbox mode you either set model.partialScoring = false or env.partialScoring =\n * false. the value in `env` will override the value in `model`.\n * @param {Object} model - the main model\n * @param {boolean} model.partialScoring - is partial scoring enabled (if undefined set to to true)\n * @param {*} session\n * @param {Object} env\n * @param {boolean} env.partialScoring - is partial scoring enabled (if undefined default to true) This overrides\n * `model.partialScoring`.\n */\nexport function outcome(model, session, env = {}) {\n return new Promise((resolve) => {\n const partialScoringEnabled = partialScoring.enabled(model, env);\n const score = getScore(model, session);\n\n resolve({ score: partialScoringEnabled ? score : score === 1 ? 1 : 0, empty: isEmpty(session) });\n });\n}\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const { choices } = question;\n const value = {};\n\n Object.keys(choices).forEach((key, i) => {\n value[i] = choices[key][0].label;\n });\n\n resolve({ id: '1', value });\n } else {\n resolve(null);\n }\n });\n};\n\n// remove all html tags\n// const getInnerText = (html) => (html || '').replaceAll(/<[^>]*>/g, '');\nconst getInnerText = (html) => {\n if (typeof html !== 'string') {\n return '';\n }\n if (typeof html.replaceAll === 'function') {\n return html.replaceAll(/<[^>]*>/g, '');\n } else {\n // Polyfill for replaceAll using replace and a global regex\n return html.replace(/<[^>]*>/g, '');\n }\n};\n\nconst decodeHTML = (html) => decode(html);\n\n// remove all html tags except img, iframe and source tag for audio\nconst getContent = (html) => (html || '').replace(/(<(?!img|iframe|source)([^>]+)>)/gi, '');\n\nexport const validate = (model = {}, config = {}) => {\n const { choices, markup } = model;\n const { maxResponseAreas } = config;\n const allChoicesErrors = {};\n const errors = {};\n\n ['teacherInstructions', 'prompt', 'rationale'].forEach((field) => {\n if (config[field]?.required && !getContent(model[field])) {\n errors[field] = 'This field is required.';\n }\n });\n\n Object.entries(choices || {}).forEach(([key, values]) => {\n const reversedChoices = [...(values || [])].reverse();\n const choicesErrors = {};\n\n reversedChoices.forEach((choice, index) => {\n const { value, label } = choice;\n\n if (label === '' || label === '<div></div>') {\n choicesErrors[value] = 'Content should not be empty.';\n } else {\n const identicalAnswer = reversedChoices.slice(index + 1).some((c) => c.label === label);\n\n if (identicalAnswer) {\n choicesErrors[value] = 'Content should be unique.';\n }\n }\n });\n\n if (!isEmpty(choicesErrors)) {\n allChoicesErrors[key] = choicesErrors;\n }\n });\n\n const nbOfResponseAreas = (markup.match(/\\{\\{(\\d+)\\}\\}/g) || []).length;\n\n if (nbOfResponseAreas > maxResponseAreas) {\n errors.responseAreas = `No more than ${maxResponseAreas} response areas should be defined.`;\n } else if (nbOfResponseAreas < 1) {\n errors.responseAreas = 'There should be at least 1 response area defined.';\n }\n\n if (!isEmpty(allChoicesErrors)) {\n errors.choices = allChoicesErrors;\n }\n\n return errors;\n};\n"],"file":"index.js"}
|
package/lib/index.js
CHANGED
|
@@ -132,4 +132,4 @@ var InlineDropdown = /*#__PURE__*/function (_HTMLElement) {
|
|
|
132
132
|
}( /*#__PURE__*/(0, _wrapNativeSuper2["default"])(HTMLElement));
|
|
133
133
|
|
|
134
134
|
exports["default"] = InlineDropdown;
|
|
135
|
-
//# sourceMappingURL=
|
|
135
|
+
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.js"],"names":["InlineDropdown","_model","_session","elem","React","createElement","Main","choices","disabled","displayType","feedback","language","markup","maxLengthPerChoice","maxLengthPerChoiceEnabled","mode","note","onChange","changeSession","playerSpellCheckEnabled","prompt","rationale","role","showNote","teacherInstructions","value","responseAreaInputConfiguration","ReactDOM","render","dispatchEvent","SessionChangedEvent","tagName","toLowerCase","session","dispatchChangedEvent","_render","lang","slice","setAttribute","m","ModelSetEvent","setLangAttribute","s","HTMLElement"],"mappings":"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","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { ModelSetEvent, SessionChangedEvent } from '@pie-framework/pie-player-events';\nimport { renderMath } from '@pie-lib/math-rendering';\n\nimport Main from './main';\n\nexport default class InlineDropdown extends HTMLElement {\n constructor() {\n super();\n this._model = null;\n this._session = null;\n }\n\n setLangAttribute() {\n const language = this._model && typeof this._model.language ? this._model.language : '';\n const lang = language ? language.slice(0, 2) : 'en';\n this.setAttribute('lang', lang);\n }\n\n set model(m) {\n this._model = m;\n this.dispatchEvent(\n new ModelSetEvent(this.tagName.toLowerCase(), this.session && !!this.session.value, !!this._model),\n );\n this.setLangAttribute();\n\n this._render();\n }\n\n set session(s) {\n this._session = s;\n this._render();\n }\n\n get session() {\n return this._session;\n }\n\n _render = () => {\n if (this._model && this._session) {\n let elem = React.createElement(Main, {\n choices: this._model.choices,\n disabled: this._model.disabled,\n displayType: this._model.displayType,\n feedback: this._model.feedback,\n language: this._model.language,\n markup: this._model.markup,\n maxLengthPerChoice: this._model.maxLengthPerChoice,\n maxLengthPerChoiceEnabled: this._model.maxLengthPerChoiceEnabled,\n mode: this._model.mode,\n note: this._model.note,\n onChange: this.changeSession,\n playerSpellCheckEnabled: this._model.playerSpellCheckEnabled,\n prompt: this._model.prompt,\n rationale: this._model.rationale,\n role: this._model.role,\n showNote: this._model.showNote,\n teacherInstructions: this._model.teacherInstructions,\n value: this._session.value,\n responseAreaInputConfiguration: this._model.responseAreaInputConfiguration,\n });\n\n ReactDOM.render(elem, this, () => {\n renderMath(this);\n });\n }\n };\n\n dispatchChangedEvent = () => {\n this.dispatchEvent(new SessionChangedEvent(this.tagName.toLowerCase(), this.session && !!this.session.value));\n };\n\n changeSession = (value) => {\n this.session.value = value;\n this.dispatchChangedEvent();\n this._render();\n };\n\n connectedCallback() {\n this.setAttribute('aria-label', 'Fill in the Blank Question');\n this.setAttribute('role', 'region');\n\n this._render();\n }\n}\n"],"file":"index.js"}
|
package/lib/main.js
CHANGED
|
@@ -278,4 +278,4 @@ var styles = function styles(theme) {
|
|
|
278
278
|
var _default = (0, _styles.withStyles)(styles)(Main);
|
|
279
279
|
|
|
280
280
|
exports["default"] = _default;
|
|
281
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tYWluLmpzeCJdLCJuYW1lcyI6WyJ0cmFuc2xhdG9yIiwiVHJhbnNsYXRvciIsIk1haW4iLCJzaG93Q29ycmVjdEFuc3dlciIsInByb3BzIiwiYWx3YXlzU2hvd0NvcnJlY3QiLCJtYXhMZW5ndGhQZXJDaG9pY2UiLCJldmVyeSIsInZhbCIsImkiLCJhcnIiLCJvbkNoYW5nZSIsIm1heFdhaXQiLCJzZXRTdGF0ZSIsInN0YXRlIiwiZ2V0Q2hhbmdlU2Vzc2lvbiIsInZhbHVlIiwiY2hhbmdlU2Vzc2lvbiIsIm5leHRQcm9wcyIsImxhbmd1YWdlIiwibm90ZSIsImZlZWRiYWNrIiwidCIsImxuZyIsImFuaW1hdGlvbnNEaXNhYmxlZCIsImNsYXNzZXMiLCJtb2RlIiwiZGlzcGxheVR5cGUiLCJyb2xlIiwibWF4TGVuZ3RoUGVyQ2hvaWNlRW5hYmxlZCIsInBsYXllclNwZWxsQ2hlY2tFbmFibGVkIiwicHJvbXB0IiwicmF0aW9uYWxlIiwic2hvd05vdGUiLCJ0ZWFjaGVySW5zdHJ1Y3Rpb25zIiwicmVzcG9uc2VBcmVhSW5wdXRDb25maWd1cmF0aW9uIiwibW9kZWwiLCJleHRyYUNTU1J1bGVzIiwiZGlzcGxheU5vdGUiLCJtYWluQ2xhc3NlcyIsIm1haW5Db250YWluZXIiLCJub0JvcmRlckNvbG9yIiwidGVhY2hlckluc3RydWN0aW9uc0RpdiIsInJhdGlvbmFsZURpdiIsInNob3dSYXRpb25hbGUiLCJzaG93VGVhY2hlckluc3RydWN0aW9ucyIsImRpc3BsYXkiLCJzck9ubHkiLCJjb2xsYXBzaWJsZSIsImhpZGRlbiIsInZpc2libGUiLCJ0b2dnbGVTaG93Q29ycmVjdCIsIl9faHRtbCIsIlJlYWN0IiwiQ29tcG9uZW50IiwiUHJvcFR5cGVzIiwiYm9vbCIsIm9iamVjdCIsImlzUmVxdWlyZWQiLCJkaXNhYmxlZCIsInN0cmluZyIsIm1hcmt1cCIsImFycmF5IiwiZnVuYyIsInN0eWxlcyIsInRoZW1lIiwiY29sb3IiLCJ0ZXh0IiwiYmFja2dyb3VuZENvbG9yIiwiYmFja2dyb3VuZCIsImlubGluZURpc3BsYXkiLCJibG9ja0Rpc3BsYXkiLCJtYXJnaW5Cb3R0b20iLCJzcGFjaW5nIiwidW5pdCIsImJvcmRlckNvbG9yIiwicG9zaXRpb24iLCJsZWZ0IiwidG9wIiwid2lkdGgiLCJoZWlnaHQiLCJvdmVyZmxvdyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7QUFFQSxJQUFRQSxVQUFSLEdBQXVCQyxzQkFBdkIsQ0FBUUQsVUFBUjs7SUFFYUUsSTs7Ozs7Ozs7Ozs7Ozs7OzhGQThCSDtBQUNOQyxNQUFBQSxpQkFBaUIsRUFBRSxNQUFLQyxLQUFMLENBQVdDLGlCQUFYLElBQWdDO0FBRDdDLEs7eUdBS1csVUFBQ0Msa0JBQUQ7QUFBQSxhQUNqQkEsa0JBQWtCLElBQUlBLGtCQUFrQixDQUFDQyxLQUFuQixDQUF5QixVQUFDQyxHQUFELEVBQU1DLENBQU4sRUFBU0MsR0FBVDtBQUFBLGVBQWlCRixHQUFHLEtBQUtFLEdBQUcsQ0FBQyxDQUFELENBQVgsSUFBa0JGLEdBQUcsS0FBSyxDQUEzQztBQUFBLE9BQXpCLENBQXRCLEdBQ0ksTUFBS0osS0FBTCxDQUFXTyxRQURmLEdBRUksMEJBQVMsTUFBS1AsS0FBTCxDQUFXTyxRQUFwQixFQUE4QixHQUE5QixFQUFtQztBQUFFQyxRQUFBQSxPQUFPLEVBQUU7QUFBWCxPQUFuQyxDQUhhO0FBQUEsSzswR0FrQ0MsWUFBTTtBQUN4QixZQUFLQyxRQUFMLENBQWM7QUFBRVYsUUFBQUEsaUJBQWlCLEVBQUUsQ0FBQyxNQUFLVyxLQUFMLENBQVdYO0FBQWpDLE9BQWQ7QUFDRCxLO3NHQUVlLE1BQUtZLGdCQUFMLENBQXNCLE1BQUtYLEtBQUwsQ0FBV0Usa0JBQWpDLEM7aUdBRUwsVUFBQ1UsS0FBRCxFQUFXO0FBQ3BCLFlBQUtDLGFBQUwsQ0FBbUJELEtBQW5CO0FBQ0QsSzs7Ozs7O1dBckNELDBDQUFpQ0UsU0FBakMsRUFBNEM7QUFDMUMsd0JBQXlDLEtBQUtkLEtBQTlDO0FBQUEsVUFBUUUsa0JBQVIsZUFBUUEsa0JBQVI7QUFBQSxVQUE0QmEsUUFBNUIsZUFBNEJBLFFBQTVCO0FBQ0EsVUFBTUMsSUFBTixHQUFlLEtBQUtoQixLQUFwQixDQUFNZ0IsSUFBTjs7QUFFQSxVQUFJLHlCQUFRRixTQUFTLENBQUNHLFFBQWxCLENBQUosRUFBaUM7QUFDL0IsYUFBS1IsUUFBTCxDQUFjO0FBQUVWLFVBQUFBLGlCQUFpQixFQUFFO0FBQXJCLFNBQWQ7QUFDRDs7QUFFRCxVQUFJZSxTQUFTLENBQUNiLGlCQUFkLEVBQWlDO0FBQy9CLGFBQUtRLFFBQUwsQ0FBYztBQUFFVixVQUFBQSxpQkFBaUIsRUFBRTtBQUFyQixTQUFkO0FBQ0Q7O0FBRUQsVUFBSUcsa0JBQWtCLElBQUksQ0FBQyx5QkFBUUEsa0JBQVIsRUFBNEJZLFNBQVMsQ0FBQ1osa0JBQXRDLENBQTNCLEVBQXNGO0FBQ3BGLGFBQUtXLGFBQUwsR0FBcUIsS0FBS0YsZ0JBQUwsQ0FBc0JHLFNBQVMsQ0FBQ1osa0JBQWhDLENBQXJCO0FBQ0QsT0FkeUMsQ0FnQjFDO0FBQ0E7QUFDQTs7O0FBQ0EsVUFDRWMsSUFBSSxJQUNKRCxRQURBLElBRUFBLFFBQVEsS0FBS0QsU0FBUyxDQUFDQyxRQUZ2QixJQUdBQyxJQUFJLEtBQUtwQixVQUFVLENBQUNzQixDQUFYLENBQWEsMENBQWIsRUFBeUQ7QUFBRUMsUUFBQUEsR0FBRyxFQUFFSjtBQUFQLE9BQXpELENBSlgsRUFLRTtBQUNBQyxRQUFBQSxJQUFJLEdBQUdwQixVQUFVLENBQUNzQixDQUFYLENBQWEsMENBQWIsRUFBeUQ7QUFBRUMsVUFBQUEsR0FBRyxFQUFFTCxTQUFTLENBQUNDO0FBQWpCLFNBQXpELENBQVA7QUFDRDtBQUNGOzs7V0FZRCxrQkFBUztBQUNQLFVBQVFoQixpQkFBUixHQUE4QixLQUFLVyxLQUFuQyxDQUFRWCxpQkFBUjtBQUNBLHlCQW1CSSxLQUFLQyxLQW5CVDtBQUFBLFVBQ0VDLGlCQURGLGdCQUNFQSxpQkFERjtBQUFBLFVBRUVtQixrQkFGRixnQkFFRUEsa0JBRkY7QUFBQSxVQUdFQyxPQUhGLGdCQUdFQSxPQUhGO0FBQUEsVUFJRUMsSUFKRixnQkFJRUEsSUFKRjtBQUFBLFVBS0VDLFdBTEYsZ0JBS0VBLFdBTEY7QUFBQSxVQU1FQyxJQU5GLGdCQU1FQSxJQU5GO0FBQUEsVUFPRVQsUUFQRixnQkFPRUEsUUFQRjtBQUFBLFVBUUViLGtCQVJGLGdCQVFFQSxrQkFSRjtBQUFBLFVBU0V1Qix5QkFURixnQkFTRUEseUJBVEY7QUFBQSxVQVVFVCxJQVZGLGdCQVVFQSxJQVZGO0FBQUEsVUFXRVUsdUJBWEYsZ0JBV0VBLHVCQVhGO0FBQUEsVUFZRUMsTUFaRixnQkFZRUEsTUFaRjtBQUFBLFVBYUVDLFNBYkYsZ0JBYUVBLFNBYkY7QUFBQSxVQWNFQyxRQWRGLGdCQWNFQSxRQWRGO0FBQUEsVUFlRUMsbUJBZkYsZ0JBZUVBLG1CQWZGO0FBQUEsVUFnQkVDLDhCQWhCRixnQkFnQkVBLDhCQWhCRjtBQUFBLFVBaUJFQyxLQWpCRixnQkFpQkVBLEtBakJGO0FBQUEsVUFrQkVwQixLQWxCRixnQkFrQkVBLEtBbEJGOztBQXFCQSxpQkFBMEJvQixLQUFLLElBQUksRUFBbkM7QUFBQSxVQUFRQyxhQUFSLFFBQVFBLGFBQVI7O0FBQ0EsVUFBTUMsV0FBVyxHQUFHLENBQUNuQyxpQkFBaUIsSUFBS3VCLElBQUksS0FBSyxNQUFULElBQW1CRSxJQUFJLEtBQUssWUFBbkQsS0FBcUVLLFFBQXJFLElBQWlGYixJQUFyRztBQUNBLFVBQU1tQixXQUFXLEdBQUcsNEJBQVcsQ0FDN0JkLE9BQU8sQ0FBQ2UsYUFEcUIsdUNBRzFCZixPQUFPLENBQUNnQixhQUhrQixFQUdGcEMsaUJBSEUsRUFBWCxDQUFwQjs7QUFPQSxVQUFNcUMsc0JBQXNCLGdCQUMxQixnQ0FBQyx1QkFBRDtBQUFlLFFBQUEsZ0JBQWdCLEVBQUMsc0JBQWhDO0FBQXVELFFBQUEsTUFBTSxFQUFFUjtBQUEvRCxRQURGOztBQUlBLFVBQU1TLFlBQVksZ0JBQUcsZ0NBQUMsdUJBQUQ7QUFBZSxRQUFBLE1BQU0sRUFBRVg7QUFBdkIsUUFBckI7O0FBRUEsVUFBTVksYUFBYSxHQUFHWixTQUFTLEtBQUssdUJBQVFBLFNBQVIsS0FBc0Isd0JBQVNBLFNBQVQsQ0FBM0IsQ0FBL0I7QUFDQSxVQUFNYSx1QkFBdUIsR0FDM0JYLG1CQUFtQixLQUFLLHVCQUFRQSxtQkFBUixLQUFnQyx3QkFBU0EsbUJBQVQsQ0FBckMsQ0FEckI7QUFHQSwwQkFDRSxnQ0FBQyxrQkFBRDtBQUFVLFFBQUEsYUFBYSxFQUFFRyxhQUF6QjtBQUF3QyxRQUFBLFNBQVMsRUFBRUUsV0FBbkQ7QUFBZ0UsUUFBQSxLQUFLLEVBQUU7QUFBRU8sVUFBQUEsT0FBTyxZQUFLbkIsV0FBTDtBQUFUO0FBQXZFLFNBQ0dELElBQUksS0FBSyxRQUFULGlCQUFxQjtBQUFJLFFBQUEsU0FBUyxFQUFFRCxPQUFPLENBQUNzQjtBQUF2QixzQ0FEeEIsRUFHR0YsdUJBQXVCLGlCQUN0QjtBQUFLLFFBQUEsU0FBUyxFQUFFcEIsT0FBTyxDQUFDdUI7QUFBeEIsU0FDRyxDQUFDeEIsa0JBQUQsZ0JBQ0MsZ0NBQUMscUJBQUQ7QUFBYSxRQUFBLE1BQU0sRUFBRTtBQUFFeUIsVUFBQUEsTUFBTSxFQUFFLDJCQUFWO0FBQXVDQyxVQUFBQSxPQUFPLEVBQUU7QUFBaEQ7QUFBckIsU0FDR1Isc0JBREgsQ0FERCxHQUtDQSxzQkFOSixDQUpKLEVBZUdYLE1BQU0saUJBQUksZ0NBQUMsdUJBQUQ7QUFBZSxRQUFBLE1BQU0sRUFBRUE7QUFBdkIsUUFmYixFQWlCRyxDQUFDMUIsaUJBQUQsaUJBQ0MsZ0NBQUMsK0JBQUQ7QUFDRSxRQUFBLElBQUksRUFBRXFCLElBQUksS0FBSyxVQURqQjtBQUVFLFFBQUEsT0FBTyxFQUFFdkIsaUJBRlg7QUFHRSxRQUFBLFFBQVEsRUFBRSxLQUFLZ0QsaUJBSGpCO0FBSUUsUUFBQSxRQUFRLEVBQUVoQztBQUpaLFFBbEJKLGVBMEJFLGdDQUFDLCtCQUFELGdDQUNNLEtBQUtmLEtBRFg7QUFFRSxRQUFBLFFBQVEsRUFBRSxLQUFLTyxRQUZqQjtBQUdFLFFBQUEsaUJBQWlCLEVBQUVSLGlCQUhyQjtBQUlFLFFBQUEsS0FBSyxFQUFFYSxLQUpUO0FBS0UsUUFBQSxTQUFTLEVBQUVWLGtCQUxiO0FBTUUsUUFBQSxhQUFhLEVBQUV1Qix5QkFOakI7QUFPRSxRQUFBLFVBQVUsRUFBRUMsdUJBUGQ7QUFRRSxRQUFBLFdBQVcsRUFBRUs7QUFSZixTQTFCRixFQXFDR0csV0FBVyxpQkFBSTtBQUFLLFFBQUEsU0FBUyxFQUFFLDRCQUFXYixPQUFPLENBQUNMLElBQW5CLEVBQXlCLE1BQXpCLENBQWhCO0FBQWtELFFBQUEsdUJBQXVCLEVBQUU7QUFBRWdDLFVBQUFBLE1BQU0sRUFBRWhDO0FBQVY7QUFBM0UsUUFyQ2xCLEVBdUNHd0IsYUFBYSxpQkFDWjtBQUFLLFFBQUEsU0FBUyxFQUFFbkIsT0FBTyxDQUFDdUI7QUFBeEIsU0FDRyxDQUFDeEIsa0JBQUQsZ0JBQ0MsZ0NBQUMscUJBQUQ7QUFBYSxRQUFBLE1BQU0sRUFBRTtBQUFFeUIsVUFBQUEsTUFBTSxFQUFFLGdCQUFWO0FBQTRCQyxVQUFBQSxPQUFPLEVBQUU7QUFBckM7QUFBckIsU0FBK0VQLFlBQS9FLENBREQsR0FHQ0EsWUFKSixDQXhDSixDQURGO0FBbUREOzs7RUE1S3VCVSxrQkFBTUMsUzs7O2lDQUFuQnBELEksZUFDUTtBQUNqQkcsRUFBQUEsaUJBQWlCLEVBQUVrRCxzQkFBVUMsSUFEWjtBQUVqQmhDLEVBQUFBLGtCQUFrQixFQUFFK0Isc0JBQVVDLElBRmI7QUFHakIvQixFQUFBQSxPQUFPLEVBQUU4QixzQkFBVUUsTUFBVixDQUFpQkMsVUFIVDtBQUlqQkMsRUFBQUEsUUFBUSxFQUFFSixzQkFBVUMsSUFKSDtBQUtqQjdCLEVBQUFBLFdBQVcsRUFBRTRCLHNCQUFVSyxNQUxOO0FBTWpCdkMsRUFBQUEsUUFBUSxFQUFFa0Msc0JBQVVFLE1BTkg7QUFPakJ0QyxFQUFBQSxRQUFRLEVBQUVvQyxzQkFBVUssTUFQSDtBQVFqQkMsRUFBQUEsTUFBTSxFQUFFTixzQkFBVUssTUFSRDtBQVNqQnRELEVBQUFBLGtCQUFrQixFQUFFaUQsc0JBQVVPLEtBVGI7QUFVakJqQyxFQUFBQSx5QkFBeUIsRUFBRTBCLHNCQUFVQyxJQVZwQjtBQVdqQjlCLEVBQUFBLElBQUksRUFBRTZCLHNCQUFVSyxNQVhDO0FBWWpCeEMsRUFBQUEsSUFBSSxFQUFFbUMsc0JBQVVLLE1BWkM7QUFhakJqRCxFQUFBQSxRQUFRLEVBQUU0QyxzQkFBVVEsSUFiSDtBQWNqQmpDLEVBQUFBLHVCQUF1QixFQUFFeUIsc0JBQVVDLElBZGxCO0FBZWpCekIsRUFBQUEsTUFBTSxFQUFFd0Isc0JBQVVLLE1BZkQ7QUFnQmpCNUIsRUFBQUEsU0FBUyxFQUFFdUIsc0JBQVVLLE1BaEJKO0FBaUJqQmhDLEVBQUFBLElBQUksRUFBRTJCLHNCQUFVSyxNQWpCQztBQWtCakIzQixFQUFBQSxRQUFRLEVBQUVzQixzQkFBVUMsSUFsQkg7QUFtQmpCdEIsRUFBQUEsbUJBQW1CLEVBQUVxQixzQkFBVUssTUFuQmQ7QUFvQmpCNUMsRUFBQUEsS0FBSyxFQUFFdUMsc0JBQVVFLE1BcEJBO0FBcUJqQnRCLEVBQUFBLDhCQUE4QixFQUFFb0Isc0JBQVVFLE1BckJ6QjtBQXNCakJyQixFQUFBQSxLQUFLLEVBQUVtQixzQkFBVUUsTUFBVixDQUFpQkM7QUF0QlAsQztpQ0FEUnhELEksa0JBMEJXO0FBQ3BCYyxFQUFBQSxLQUFLLEVBQUU7QUFEYSxDOztBQXFKeEIsSUFBTWdELE1BQU0sR0FBRyxTQUFUQSxNQUFTLENBQUNDLEtBQUQ7QUFBQSxTQUFZO0FBQ3pCekIsSUFBQUEsYUFBYSxFQUFFO0FBQ2IwQixNQUFBQSxLQUFLLEVBQUVBLGdCQUFNQyxJQUFOLEVBRE07QUFFYkMsTUFBQUEsZUFBZSxFQUFFRixnQkFBTUcsVUFBTjtBQUZKLEtBRFU7QUFLekJDLElBQUFBLGFBQWEsRUFBRTtBQUNieEIsTUFBQUEsT0FBTyxFQUFFO0FBREksS0FMVTtBQVF6QnlCLElBQUFBLFlBQVksRUFBRTtBQUNaekIsTUFBQUEsT0FBTyxFQUFFO0FBREcsS0FSVztBQVd6QjFCLElBQUFBLElBQUksRUFBRTtBQUNKb0QsTUFBQUEsWUFBWSxFQUFFUCxLQUFLLENBQUNRLE9BQU4sQ0FBY0MsSUFBZCxHQUFxQjtBQUQvQixLQVhtQjtBQWN6QjFCLElBQUFBLFdBQVcsRUFBRTtBQUNYd0IsTUFBQUEsWUFBWSxFQUFFUCxLQUFLLENBQUNRLE9BQU4sQ0FBY0MsSUFBZCxHQUFxQjtBQUR4QixLQWRZO0FBaUJ6QmpDLElBQUFBLGFBQWEsRUFBRTtBQUNiLGFBQU87QUFDTGtDLFFBQUFBLFdBQVcsWUFBS1QsZ0JBQU1DLElBQU4sRUFBTDtBQUROO0FBRE0sS0FqQlU7QUFzQnpCcEIsSUFBQUEsTUFBTSxFQUFFO0FBQ042QixNQUFBQSxRQUFRLEVBQUUsVUFESjtBQUVOQyxNQUFBQSxJQUFJLEVBQUUsVUFGQTtBQUdOQyxNQUFBQSxHQUFHLEVBQUUsTUFIQztBQUlOQyxNQUFBQSxLQUFLLEVBQUUsS0FKRDtBQUtOQyxNQUFBQSxNQUFNLEVBQUUsS0FMRjtBQU1OQyxNQUFBQSxRQUFRLEVBQUU7QUFOSjtBQXRCaUIsR0FBWjtBQUFBLENBQWY7O2VBZ0NlLHdCQUFXakIsTUFBWCxFQUFtQjlELElBQW5CLEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBkZWJvdW5jZSBmcm9tICdsb2Rhc2gvZGVib3VuY2UnO1xuaW1wb3J0IGlzRW1wdHkgZnJvbSAnbG9kYXNoL2lzRW1wdHknO1xuaW1wb3J0IGlzRXF1YWwgZnJvbSAnbG9kYXNoL2lzRXF1YWwnO1xuaW1wb3J0IENvcnJlY3RBbnN3ZXJUb2dnbGUgZnJvbSAnQHBpZS1saWIvY29ycmVjdC1hbnN3ZXItdG9nZ2xlJztcbmltcG9ydCB7IENvbnN0cnVjdGVkUmVzcG9uc2UgfSBmcm9tICdAcGllLWxpYi9tYXNrLW1hcmt1cCc7XG5pbXBvcnQgeyBjb2xvciwgQ29sbGFwc2libGUsIGhhc1RleHQsIGhhc01lZGlhLCBQcmV2aWV3UHJvbXB0LCBVaUxheW91dCB9IGZyb20gJ0BwaWUtbGliL3JlbmRlci11aSc7XG5pbXBvcnQgeyB3aXRoU3R5bGVzIH0gZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvc3R5bGVzJztcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IFRyYW5zbGF0b3IgZnJvbSAnQHBpZS1saWIvdHJhbnNsYXRvcic7XG5cbmNvbnN0IHsgdHJhbnNsYXRvciB9ID0gVHJhbnNsYXRvcjtcblxuZXhwb3J0IGNsYXNzIE1haW4gZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgIGFsd2F5c1Nob3dDb3JyZWN0OiBQcm9wVHlwZXMuYm9vbCxcbiAgICBhbmltYXRpb25zRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICAgIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gICAgZGlzcGxheVR5cGU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgZmVlZGJhY2s6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgbGFuZ3VhZ2U6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgbWFya3VwOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIG1heExlbmd0aFBlckNob2ljZTogUHJvcFR5cGVzLmFycmF5LFxuICAgIG1heExlbmd0aFBlckNob2ljZUVuYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICAgIG1vZGU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgbm90ZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMsXG4gICAgcGxheWVyU3BlbGxDaGVja0VuYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICAgIHByb21wdDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICByYXRpb25hbGU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgcm9sZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBzaG93Tm90ZTogUHJvcFR5cGVzLmJvb2wsXG4gICAgdGVhY2hlckluc3RydWN0aW9uczogUHJvcFR5cGVzLnN0cmluZyxcbiAgICB2YWx1ZTogUHJvcFR5cGVzLm9iamVjdCxcbiAgICByZXNwb25zZUFyZWFJbnB1dENvbmZpZ3VyYXRpb246IFByb3BUeXBlcy5vYmplY3QsXG4gICAgbW9kZWw6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgfTtcblxuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgIHZhbHVlOiB7fSxcbiAgfTtcblxuICBzdGF0ZSA9IHtcbiAgICBzaG93Q29ycmVjdEFuc3dlcjogdGhpcy5wcm9wcy5hbHdheXNTaG93Q29ycmVjdCB8fCBmYWxzZSxcbiAgfTtcblxuICAvLyBpZiBmb3IgYWxsIHJlc3BvbnNlcyBtYXggbGVuZ3RoIGlzIDEsIGNhbGwgb25DaGFuZ2UgZm9yIGVhY2gga2V5c3Ryb2tlXG4gIGdldENoYW5nZVNlc3Npb24gPSAobWF4TGVuZ3RoUGVyQ2hvaWNlKSA9PlxuICAgIG1heExlbmd0aFBlckNob2ljZSAmJiBtYXhMZW5ndGhQZXJDaG9pY2UuZXZlcnkoKHZhbCwgaSwgYXJyKSA9PiB2YWwgPT09IGFyclswXSAmJiB2YWwgPT09IDEpXG4gICAgICA/IHRoaXMucHJvcHMub25DaGFuZ2VcbiAgICAgIDogZGVib3VuY2UodGhpcy5wcm9wcy5vbkNoYW5nZSwgMjAwLCB7IG1heFdhaXQ6IDIwMCB9KTtcblxuICBVTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhuZXh0UHJvcHMpIHtcbiAgICBjb25zdCB7IG1heExlbmd0aFBlckNob2ljZSwgbGFuZ3VhZ2UgfSA9IHRoaXMucHJvcHM7XG4gICAgbGV0IHsgbm90ZSB9ID0gdGhpcy5wcm9wcztcblxuICAgIGlmIChpc0VtcHR5KG5leHRQcm9wcy5mZWVkYmFjaykpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBzaG93Q29ycmVjdEFuc3dlcjogZmFsc2UgfSk7XG4gICAgfVxuXG4gICAgaWYgKG5leHRQcm9wcy5hbHdheXNTaG93Q29ycmVjdCkge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7IHNob3dDb3JyZWN0QW5zd2VyOiB0cnVlIH0pO1xuICAgIH1cblxuICAgIGlmIChtYXhMZW5ndGhQZXJDaG9pY2UgJiYgIWlzRXF1YWwobWF4TGVuZ3RoUGVyQ2hvaWNlLCBuZXh0UHJvcHMubWF4TGVuZ3RoUGVyQ2hvaWNlKSkge1xuICAgICAgdGhpcy5jaGFuZ2VTZXNzaW9uID0gdGhpcy5nZXRDaGFuZ2VTZXNzaW9uKG5leHRQcm9wcy5tYXhMZW5ndGhQZXJDaG9pY2UpO1xuICAgIH1cblxuICAgIC8vIGNoZWNrIGlmIHRoZSBub3RlIGlzIHRoZSBkZWZhdWx0IG9uZSBmb3IgcHJldiBsYW5ndWFnZSBhbmQgY2hhbmdlIHRvIHRoZSBkZWZhdWx0IG9uZSBmb3IgbmV3IGxhbmd1YWdlXG4gICAgLy8gdGhpcyBjaGVjayBpcyBuZWNlc3NhcnkgaW4gb3JkZXIgdG8gZGlmZXJhbmNpYXRlIGJldHdlZW4gZGVmYXVsdCBhbmQgYXV0aG91ciBkZWZpbmVkIG5vdGVcbiAgICAvLyBhbmQgb25seSBjaGFuZ2UgYmV0d2VlbiBsYW5ndWFnZXMgZm9yIGRlZmF1bHQgb25lc1xuICAgIGlmIChcbiAgICAgIG5vdGUgJiZcbiAgICAgIGxhbmd1YWdlICYmXG4gICAgICBsYW5ndWFnZSAhPT0gbmV4dFByb3BzLmxhbmd1YWdlICYmXG4gICAgICBub3RlID09PSB0cmFuc2xhdG9yLnQoJ2NvbW1vbjpjb21tb25Db3JyZWN0QW5zd2VyV2l0aEFsdGVybmF0ZXMnLCB7IGxuZzogbGFuZ3VhZ2UgfSlcbiAgICApIHtcbiAgICAgIG5vdGUgPSB0cmFuc2xhdG9yLnQoJ2NvbW1vbjpjb21tb25Db3JyZWN0QW5zd2VyV2l0aEFsdGVybmF0ZXMnLCB7IGxuZzogbmV4dFByb3BzLmxhbmd1YWdlIH0pO1xuICAgIH1cbiAgfVxuXG4gIHRvZ2dsZVNob3dDb3JyZWN0ID0gKCkgPT4ge1xuICAgIHRoaXMuc2V0U3RhdGUoeyBzaG93Q29ycmVjdEFuc3dlcjogIXRoaXMuc3RhdGUuc2hvd0NvcnJlY3RBbnN3ZXIgfSk7XG4gIH07XG5cbiAgY2hhbmdlU2Vzc2lvbiA9IHRoaXMuZ2V0Q2hhbmdlU2Vzc2lvbih0aGlzLnByb3BzLm1heExlbmd0aFBlckNob2ljZSk7XG5cbiAgb25DaGFuZ2UgPSAodmFsdWUpID0+IHtcbiAgICB0aGlzLmNoYW5nZVNlc3Npb24odmFsdWUpO1xuICB9O1xuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7IHNob3dDb3JyZWN0QW5zd2VyIH0gPSB0aGlzLnN0YXRlO1xuICAgIGNvbnN0IHtcbiAgICAgIGFsd2F5c1Nob3dDb3JyZWN0LFxuICAgICAgYW5pbWF0aW9uc0Rpc2FibGVkLFxuICAgICAgY2xhc3NlcyxcbiAgICAgIG1vZGUsXG4gICAgICBkaXNwbGF5VHlwZSxcbiAgICAgIHJvbGUsXG4gICAgICBsYW5ndWFnZSxcbiAgICAgIG1heExlbmd0aFBlckNob2ljZSxcbiAgICAgIG1heExlbmd0aFBlckNob2ljZUVuYWJsZWQsXG4gICAgICBub3RlLFxuICAgICAgcGxheWVyU3BlbGxDaGVja0VuYWJsZWQsXG4gICAgICBwcm9tcHQsXG4gICAgICByYXRpb25hbGUsXG4gICAgICBzaG93Tm90ZSxcbiAgICAgIHRlYWNoZXJJbnN0cnVjdGlvbnMsXG4gICAgICByZXNwb25zZUFyZWFJbnB1dENvbmZpZ3VyYXRpb24sXG4gICAgICBtb2RlbCxcbiAgICAgIHZhbHVlLFxuICAgIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgY29uc3QgeyBleHRyYUNTU1J1bGVzIH0gPSBtb2RlbCB8fCB7fTtcbiAgICBjb25zdCBkaXNwbGF5Tm90ZSA9IChzaG93Q29ycmVjdEFuc3dlciB8fCAobW9kZSA9PT0gJ3ZpZXcnICYmIHJvbGUgPT09ICdpbnN0cnVjdG9yJykpICYmIHNob3dOb3RlICYmIG5vdGU7XG4gICAgY29uc3QgbWFpbkNsYXNzZXMgPSBjbGFzc05hbWVzKFtcbiAgICAgIGNsYXNzZXMubWFpbkNvbnRhaW5lcixcbiAgICAgIHtcbiAgICAgICAgW2NsYXNzZXMubm9Cb3JkZXJDb2xvcl06IGFsd2F5c1Nob3dDb3JyZWN0LFxuICAgICAgfSxcbiAgICBdKTtcblxuICAgIGNvbnN0IHRlYWNoZXJJbnN0cnVjdGlvbnNEaXYgPSAoXG4gICAgICA8UHJldmlld1Byb21wdCBkZWZhdWx0Q2xhc3NOYW1lPVwidGVhY2hlci1pbnN0cnVjdGlvbnNcIiBwcm9tcHQ9e3RlYWNoZXJJbnN0cnVjdGlvbnN9IC8+XG4gICAgKTtcblxuICAgIGNvbnN0IHJhdGlvbmFsZURpdiA9IDxQcmV2aWV3UHJvbXB0IHByb21wdD17cmF0aW9uYWxlfSAvPjtcblxuICAgIGNvbnN0IHNob3dSYXRpb25hbGUgPSByYXRpb25hbGUgJiYgKGhhc1RleHQocmF0aW9uYWxlKSB8fCBoYXNNZWRpYShyYXRpb25hbGUpKTtcbiAgICBjb25zdCBzaG93VGVhY2hlckluc3RydWN0aW9ucyA9XG4gICAgICB0ZWFjaGVySW5zdHJ1Y3Rpb25zICYmIChoYXNUZXh0KHRlYWNoZXJJbnN0cnVjdGlvbnMpIHx8IGhhc01lZGlhKHRlYWNoZXJJbnN0cnVjdGlvbnMpKTtcblxuICAgIHJldHVybiAoXG4gICAgICA8VWlMYXlvdXQgZXh0cmFDU1NSdWxlcz17ZXh0cmFDU1NSdWxlc30gY2xhc3NOYW1lPXttYWluQ2xhc3Nlc30gc3R5bGU9e3sgZGlzcGxheTogYCR7ZGlzcGxheVR5cGV9YCB9fT5cbiAgICAgICAge21vZGUgPT09ICdnYXRoZXInICYmIDxoMiBjbGFzc05hbWU9e2NsYXNzZXMuc3JPbmx5fT5GaWxsIGluIHRoZSBCbGFuayBRdWVzdGlvbjwvaDI+fVxuXG4gICAgICAgIHtzaG93VGVhY2hlckluc3RydWN0aW9ucyAmJiAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzZXMuY29sbGFwc2libGV9PlxuICAgICAgICAgICAgeyFhbmltYXRpb25zRGlzYWJsZWQgPyAoXG4gICAgICAgICAgICAgIDxDb2xsYXBzaWJsZSBsYWJlbHM9e3sgaGlkZGVuOiAnU2hvdyBUZWFjaGVyIEluc3RydWN0aW9ucycsIHZpc2libGU6ICdIaWRlIFRlYWNoZXIgSW5zdHJ1Y3Rpb25zJyB9fT5cbiAgICAgICAgICAgICAgICB7dGVhY2hlckluc3RydWN0aW9uc0Rpdn1cbiAgICAgICAgICAgICAgPC9Db2xsYXBzaWJsZT5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIHRlYWNoZXJJbnN0cnVjdGlvbnNEaXZcbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICl9XG5cbiAgICAgICAge3Byb21wdCAmJiA8UHJldmlld1Byb21wdCBwcm9tcHQ9e3Byb21wdH0gLz59XG5cbiAgICAgICAgeyFhbHdheXNTaG93Q29ycmVjdCAmJiAoXG4gICAgICAgICAgPENvcnJlY3RBbnN3ZXJUb2dnbGVcbiAgICAgICAgICAgIHNob3c9e21vZGUgPT09ICdldmFsdWF0ZSd9XG4gICAgICAgICAgICB0b2dnbGVkPXtzaG93Q29ycmVjdEFuc3dlcn1cbiAgICAgICAgICAgIG9uVG9nZ2xlPXt0aGlzLnRvZ2dsZVNob3dDb3JyZWN0fVxuICAgICAgICAgICAgbGFuZ3VhZ2U9e2xhbmd1YWdlfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG5cbiAgICAgICAgPENvbnN0cnVjdGVkUmVzcG9uc2VcbiAgICAgICAgICB7Li4udGhpcy5wcm9wc31cbiAgICAgICAgICBvbkNoYW5nZT17dGhpcy5vbkNoYW5nZX1cbiAgICAgICAgICBzaG93Q29ycmVjdEFuc3dlcj17c2hvd0NvcnJlY3RBbnN3ZXJ9XG4gICAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgIG1heExlbmd0aD17bWF4TGVuZ3RoUGVyQ2hvaWNlfVxuICAgICAgICAgIGFkanVzdGVkTGltaXQ9e21heExlbmd0aFBlckNob2ljZUVuYWJsZWR9XG4gICAgICAgICAgc3BlbGxDaGVjaz17cGxheWVyU3BlbGxDaGVja0VuYWJsZWR9XG4gICAgICAgICAgcGx1Z2luUHJvcHM9e3Jlc3BvbnNlQXJlYUlucHV0Q29uZmlndXJhdGlvbn1cbiAgICAgICAgLz5cblxuICAgICAgICB7ZGlzcGxheU5vdGUgJiYgPGRpdiBjbGFzc05hbWU9e2NsYXNzTmFtZXMoY2xhc3Nlcy5ub3RlLCAnbm90ZScpfSBkYW5nZXJvdXNseVNldElubmVySFRNTD17eyBfX2h0bWw6IG5vdGUgfX0gLz59XG5cbiAgICAgICAge3Nob3dSYXRpb25hbGUgJiYgKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2VzLmNvbGxhcHNpYmxlfT5cbiAgICAgICAgICAgIHshYW5pbWF0aW9uc0Rpc2FibGVkID8gKFxuICAgICAgICAgICAgICA8Q29sbGFwc2libGUgbGFiZWxzPXt7IGhpZGRlbjogJ1Nob3cgUmF0aW9uYWxlJywgdmlzaWJsZTogJ0hpZGUgUmF0aW9uYWxlJyB9fT57cmF0aW9uYWxlRGl2fTwvQ29sbGFwc2libGU+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICByYXRpb25hbGVEaXZcbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICl9XG4gICAgICA8L1VpTGF5b3V0PlxuICAgICk7XG4gIH1cbn1cblxuY29uc3Qgc3R5bGVzID0gKHRoZW1lKSA9PiAoe1xuICBtYWluQ29udGFpbmVyOiB7XG4gICAgY29sb3I6IGNvbG9yLnRleHQoKSxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IGNvbG9yLmJhY2tncm91bmQoKSxcbiAgfSxcbiAgaW5saW5lRGlzcGxheToge1xuICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICB9LFxuICBibG9ja0Rpc3BsYXk6IHtcbiAgICBkaXNwbGF5OiAnYmxvY2snLFxuICB9LFxuICBub3RlOiB7XG4gICAgbWFyZ2luQm90dG9tOiB0aGVtZS5zcGFjaW5nLnVuaXQgKiAyLFxuICB9LFxuICBjb2xsYXBzaWJsZToge1xuICAgIG1hcmdpbkJvdHRvbTogdGhlbWUuc3BhY2luZy51bml0ICogMixcbiAgfSxcbiAgbm9Cb3JkZXJDb2xvcjoge1xuICAgICcmIConOiB7XG4gICAgICBib3JkZXJDb2xvcjogYCR7Y29sb3IudGV4dCgpfSAhaW1wb3J0YW50YCxcbiAgICB9LFxuICB9LFxuICBzck9ubHk6IHtcbiAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICBsZWZ0OiAnLTEwMDAwcHgnLFxuICAgIHRvcDogJ2F1dG8nLFxuICAgIHdpZHRoOiAnMXB4JyxcbiAgICBoZWlnaHQ6ICcxcHgnLFxuICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgfSxcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCB3aXRoU3R5bGVzKHN0eWxlcykoTWFpbik7XG4iXX0=
|
|
281
|
+
//# sourceMappingURL=main.js.map
|
package/lib/main.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/main.jsx"],"names":["translator","Translator","Main","showCorrectAnswer","props","alwaysShowCorrect","maxLengthPerChoice","every","val","i","arr","onChange","maxWait","setState","state","getChangeSession","value","changeSession","nextProps","language","note","feedback","t","lng","animationsDisabled","classes","mode","displayType","role","maxLengthPerChoiceEnabled","playerSpellCheckEnabled","prompt","rationale","showNote","teacherInstructions","responseAreaInputConfiguration","model","extraCSSRules","displayNote","mainClasses","mainContainer","noBorderColor","teacherInstructionsDiv","rationaleDiv","showRationale","showTeacherInstructions","display","srOnly","collapsible","hidden","visible","toggleShowCorrect","__html","React","Component","PropTypes","bool","object","isRequired","disabled","string","markup","array","func","styles","theme","color","text","backgroundColor","background","inlineDisplay","blockDisplay","marginBottom","spacing","unit","borderColor","position","left","top","width","height","overflow"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport debounce from 'lodash/debounce';\nimport isEmpty from 'lodash/isEmpty';\nimport isEqual from 'lodash/isEqual';\nimport CorrectAnswerToggle from '@pie-lib/correct-answer-toggle';\nimport { ConstructedResponse } from '@pie-lib/mask-markup';\nimport { color, Collapsible, hasText, hasMedia, PreviewPrompt, UiLayout } from '@pie-lib/render-ui';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport Translator from '@pie-lib/translator';\n\nconst { translator } = Translator;\n\nexport class Main extends React.Component {\n static propTypes = {\n alwaysShowCorrect: PropTypes.bool,\n animationsDisabled: PropTypes.bool,\n classes: PropTypes.object.isRequired,\n disabled: PropTypes.bool,\n displayType: PropTypes.string,\n feedback: PropTypes.object,\n language: PropTypes.string,\n markup: PropTypes.string,\n maxLengthPerChoice: PropTypes.array,\n maxLengthPerChoiceEnabled: PropTypes.bool,\n mode: PropTypes.string,\n note: PropTypes.string,\n onChange: PropTypes.func,\n playerSpellCheckEnabled: PropTypes.bool,\n prompt: PropTypes.string,\n rationale: PropTypes.string,\n role: PropTypes.string,\n showNote: PropTypes.bool,\n teacherInstructions: PropTypes.string,\n value: PropTypes.object,\n responseAreaInputConfiguration: PropTypes.object,\n model: PropTypes.object.isRequired,\n };\n\n static defaultProps = {\n value: {},\n };\n\n state = {\n showCorrectAnswer: this.props.alwaysShowCorrect || false,\n };\n\n // if for all responses max length is 1, call onChange for each keystroke\n getChangeSession = (maxLengthPerChoice) =>\n maxLengthPerChoice && maxLengthPerChoice.every((val, i, arr) => val === arr[0] && val === 1)\n ? this.props.onChange\n : debounce(this.props.onChange, 200, { maxWait: 200 });\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const { maxLengthPerChoice, language } = this.props;\n let { note } = this.props;\n\n if (isEmpty(nextProps.feedback)) {\n this.setState({ showCorrectAnswer: false });\n }\n\n if (nextProps.alwaysShowCorrect) {\n this.setState({ showCorrectAnswer: true });\n }\n\n if (maxLengthPerChoice && !isEqual(maxLengthPerChoice, nextProps.maxLengthPerChoice)) {\n this.changeSession = this.getChangeSession(nextProps.maxLengthPerChoice);\n }\n\n // check if the note is the default one for prev language and change to the default one for new language\n // this check is necessary in order to diferanciate between default and authour defined note\n // and only change between languages for default ones\n if (\n note &&\n language &&\n language !== nextProps.language &&\n note === translator.t('common:commonCorrectAnswerWithAlternates', { lng: language })\n ) {\n note = translator.t('common:commonCorrectAnswerWithAlternates', { lng: nextProps.language });\n }\n }\n\n toggleShowCorrect = () => {\n this.setState({ showCorrectAnswer: !this.state.showCorrectAnswer });\n };\n\n changeSession = this.getChangeSession(this.props.maxLengthPerChoice);\n\n onChange = (value) => {\n this.changeSession(value);\n };\n\n render() {\n const { showCorrectAnswer } = this.state;\n const {\n alwaysShowCorrect,\n animationsDisabled,\n classes,\n mode,\n displayType,\n role,\n language,\n maxLengthPerChoice,\n maxLengthPerChoiceEnabled,\n note,\n playerSpellCheckEnabled,\n prompt,\n rationale,\n showNote,\n teacherInstructions,\n responseAreaInputConfiguration,\n model,\n value,\n } = this.props;\n\n const { extraCSSRules } = model || {};\n const displayNote = (showCorrectAnswer || (mode === 'view' && role === 'instructor')) && showNote && note;\n const mainClasses = classNames([\n classes.mainContainer,\n {\n [classes.noBorderColor]: alwaysShowCorrect,\n },\n ]);\n\n const teacherInstructionsDiv = (\n <PreviewPrompt defaultClassName=\"teacher-instructions\" prompt={teacherInstructions} />\n );\n\n const rationaleDiv = <PreviewPrompt prompt={rationale} />;\n\n const showRationale = rationale && (hasText(rationale) || hasMedia(rationale));\n const showTeacherInstructions =\n teacherInstructions && (hasText(teacherInstructions) || hasMedia(teacherInstructions));\n\n return (\n <UiLayout extraCSSRules={extraCSSRules} className={mainClasses} style={{ display: `${displayType}` }}>\n {mode === 'gather' && <h2 className={classes.srOnly}>Fill in the Blank Question</h2>}\n\n {showTeacherInstructions && (\n <div className={classes.collapsible}>\n {!animationsDisabled ? (\n <Collapsible labels={{ hidden: 'Show Teacher Instructions', visible: 'Hide Teacher Instructions' }}>\n {teacherInstructionsDiv}\n </Collapsible>\n ) : (\n teacherInstructionsDiv\n )}\n </div>\n )}\n\n {prompt && <PreviewPrompt prompt={prompt} />}\n\n {!alwaysShowCorrect && (\n <CorrectAnswerToggle\n show={mode === 'evaluate'}\n toggled={showCorrectAnswer}\n onToggle={this.toggleShowCorrect}\n language={language}\n />\n )}\n\n <ConstructedResponse\n {...this.props}\n onChange={this.onChange}\n showCorrectAnswer={showCorrectAnswer}\n value={value}\n maxLength={maxLengthPerChoice}\n adjustedLimit={maxLengthPerChoiceEnabled}\n spellCheck={playerSpellCheckEnabled}\n pluginProps={responseAreaInputConfiguration}\n />\n\n {displayNote && <div className={classNames(classes.note, 'note')} dangerouslySetInnerHTML={{ __html: note }} />}\n\n {showRationale && (\n <div className={classes.collapsible}>\n {!animationsDisabled ? (\n <Collapsible labels={{ hidden: 'Show Rationale', visible: 'Hide Rationale' }}>{rationaleDiv}</Collapsible>\n ) : (\n rationaleDiv\n )}\n </div>\n )}\n </UiLayout>\n );\n }\n}\n\nconst styles = (theme) => ({\n mainContainer: {\n color: color.text(),\n backgroundColor: color.background(),\n },\n inlineDisplay: {\n display: 'inline-block',\n },\n blockDisplay: {\n display: 'block',\n },\n note: {\n marginBottom: theme.spacing.unit * 2,\n },\n collapsible: {\n marginBottom: theme.spacing.unit * 2,\n },\n noBorderColor: {\n '& *': {\n borderColor: `${color.text()} !important`,\n },\n },\n srOnly: {\n position: 'absolute',\n left: '-10000px',\n top: 'auto',\n width: '1px',\n height: '1px',\n overflow: 'hidden',\n },\n});\n\nexport default withStyles(styles)(Main);\n"],"file":"main.js"}
|
package/lib/print.js
CHANGED
|
@@ -112,4 +112,4 @@ var ExplicitConstructedResponsePrint = /*#__PURE__*/function (_HTMLElement) {
|
|
|
112
112
|
}( /*#__PURE__*/(0, _wrapNativeSuper2["default"])(HTMLElement));
|
|
113
113
|
|
|
114
114
|
exports["default"] = ExplicitConstructedResponsePrint;
|
|
115
|
-
//# sourceMappingURL=
|
|
115
|
+
//# sourceMappingURL=print.js.map
|
package/lib/print.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/print.js"],"names":["log","preparePrintModel","model","opts","isInstructor","role","prompt","promptEnabled","undefined","teacherInstructions","teacherInstructionsEnabled","rationale","rationaleEnabled","alwaysShowCorrect","mode","disabled","animationsDisabled","ExplicitConstructedResponsePrint","_options","_model","_session","_rerender","printModel","element","React","createElement","Main","onChange","ReactDOM","render","leading","trailing","o","s","HTMLElement"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;AAEA,IAAMA,GAAG,GAAG,uBAAM,iDAAN,CAAZ;;AAEA,IAAMC,iBAAiB,GAAG,SAApBA,iBAAoB,CAACC,KAAD,EAAQC,IAAR,EAAiB;AACzC,MAAMC,YAAY,GAAGD,IAAI,CAACE,IAAL,KAAc,YAAnC;AAEAH,EAAAA,KAAK,CAACI,MAAN,GAAeJ,KAAK,CAACK,aAAN,KAAwB,KAAxB,GAAgCL,KAAK,CAACI,MAAtC,GAA+CE,SAA9D;AACAN,EAAAA,KAAK,CAACO,mBAAN,GACEL,YAAY,IAAIF,KAAK,CAACQ,0BAAN,KAAqC,KAArD,GAA6DR,KAAK,CAACO,mBAAnE,GAAyFD,SAD3F;AAEAN,EAAAA,KAAK,CAACS,SAAN,GAAkBP,YAAY,IAAIF,KAAK,CAACU,gBAAN,KAA2B,KAA3C,GAAmDV,KAAK,CAACS,SAAzD,GAAqEH,SAAvF;AACAN,EAAAA,KAAK,CAACW,iBAAN,GAA0BT,YAA1B;AACAF,EAAAA,KAAK,CAACY,IAAN,GAAaV,YAAY,GAAG,UAAH,GAAgBF,KAAK,CAACY,IAA/C;AACAZ,EAAAA,KAAK,CAACa,QAAN,GAAiB,IAAjB;AACAb,EAAAA,KAAK,CAACc,kBAAN,GAA2B,IAA3B;AAEA,SAAOd,KAAP;AACD,CAbD;;IAeqBe,gC;;;;;AACnB,8CAAc;AAAA;;AAAA;AACZ;AACA,UAAKC,QAAL,GAAgB,IAAhB;AACA,UAAKC,MAAL,GAAc,IAAd;AACA,UAAKC,QAAL,GAAgB,EAAhB;AAEA,UAAKC,SAAL,GAAiB,0BACf,YAAM;AACJ,UAAI,MAAKF,MAAL,IAAe,MAAKC,QAAxB,EAAkC;AAChC,YAAME,UAAU,GAAGrB,iBAAiB,CAAC,MAAKkB,MAAN,EAAc,MAAKD,QAAnB,CAApC;;AAEA,YAAMK,OAAO,GACX,MAAKL,QAAL,iBACAM,kBAAMC,aAAN,CAAoBC,gBAApB,kCACKJ,UADL;AAEEK,UAAAA,QAAQ,EAAE,oBAAM,CAAE;AAFpB,WAFF;;AAOAC,6BAASC,MAAT,CAAgBN,OAAhB,kDAA+B,YAAM;AACnCvB,UAAAA,GAAG,CAAC,+BAAD,CAAH;AACA;AACD,SAHD;AAID,OAdD,MAcO;AACLA,QAAAA,GAAG,CAAC,MAAD,CAAH;AACD;AACF,KAnBc,EAoBf,EApBe,EAqBf;AAAE8B,MAAAA,OAAO,EAAE,KAAX;AAAkBC,MAAAA,QAAQ,EAAE;AAA5B,KArBe,CAAjB;AANY;AA6Bb;;;;SAED,aAAYC,CAAZ,EAAe;AACb,WAAKd,QAAL,GAAgBc,CAAhB;AACD;;;SAED,aAAUC,CAAV,EAAa;AACX,WAAKd,MAAL,GAAcc,CAAd;;AACA,WAAKZ,SAAL;AACD;;;WAED,6BAAoB,CAAE;;;kDAzCsCa,W","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport debounce from 'lodash/debounce';\nimport Main from './main';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport debug from 'debug';\n\nconst log = debug('pie-element:explicit-constructed-response:print');\n\nconst preparePrintModel = (model, opts) => {\n const isInstructor = opts.role === 'instructor';\n\n model.prompt = model.promptEnabled !== false ? model.prompt : undefined;\n model.teacherInstructions =\n isInstructor && model.teacherInstructionsEnabled !== false ? model.teacherInstructions : undefined;\n model.rationale = isInstructor && model.rationaleEnabled !== false ? model.rationale : undefined;\n model.alwaysShowCorrect = isInstructor;\n model.mode = isInstructor ? 'evaluate' : model.mode;\n model.disabled = true;\n model.animationsDisabled = true;\n\n return model;\n};\n\nexport default class ExplicitConstructedResponsePrint extends HTMLElement {\n constructor() {\n super();\n this._options = null;\n this._model = null;\n this._session = [];\n\n this._rerender = debounce(\n () => {\n if (this._model && this._session) {\n const printModel = preparePrintModel(this._model, this._options);\n\n const element =\n this._options &&\n React.createElement(Main, {\n ...printModel,\n onChange: () => {},\n });\n\n ReactDOM.render(element, this, () => {\n log('render complete - render math');\n renderMath(this);\n });\n } else {\n log('skip');\n }\n },\n 50,\n { leading: false, trailing: true },\n );\n }\n\n set options(o) {\n this._options = o;\n }\n\n set model(s) {\n this._model = s;\n this._rerender();\n }\n\n connectedCallback() {}\n}\n"],"file":"print.js"}
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
6
|
"repository": "pie-framework/pie-elements",
|
|
7
|
-
"version": "9.3.2-tip-tap.
|
|
7
|
+
"version": "9.3.2-tip-tap.6",
|
|
8
8
|
"description": "",
|
|
9
9
|
"scripts": {
|
|
10
10
|
"postpublish": "../../scripts/postpublish"
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"@material-ui/core": "^3.9.2",
|
|
14
14
|
"@pie-framework/pie-player-events": "^0.1.0",
|
|
15
15
|
"@pie-lib/correct-answer-toggle": "^2.25.1",
|
|
16
|
-
"@pie-lib/mask-markup": "1.33.2-beta-
|
|
16
|
+
"@pie-lib/mask-markup": "1.33.2-beta-13",
|
|
17
17
|
"@pie-lib/math-rendering": "^3.22.1",
|
|
18
18
|
"@pie-lib/math-toolbar": "1.31.2-beta.3",
|
|
19
19
|
"@pie-lib/render-ui": "^4.35.1",
|