@pie-element/drawing-response 7.8.1-next.2 → 7.8.1-next.33

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.
@@ -53,7 +53,8 @@ var _default = {
53
53
  image: {
54
54
  disabled: false
55
55
  }
56
- }
56
+ },
57
+ required: false
57
58
  },
58
59
  settingsPanelDisabled: false,
59
60
  teacherInstructions: {
@@ -69,7 +70,8 @@ var _default = {
69
70
  image: {
70
71
  disabled: false
71
72
  }
72
- }
73
+ },
74
+ required: false
73
75
  },
74
76
  maxImageWidth: {
75
77
  teacherInstructions: 300,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/defaults.js"],"names":["model","prompt","imageUrl","imageDimensions","height","width","promptEnabled","teacherInstructionsEnabled","studentInstructionsEnabled","backgroundImageEnabled","spellCheckEnabled","toolbarEditorPosition","configuration","baseInputConfiguration","audio","disabled","video","image","spellCheck","label","settings","enabled","backgroundImage","inputConfiguration","settingsPanelDisabled","teacherInstructions","maxImageWidth","maxImageHeight","withRubric","mathMlOptions","mmlOutput","mmlEditing","language","languageChoices","options"],"mappings":";;;;;;eAAe;AACbA,EAAAA,KAAK,EAAE;AACLC,IAAAA,MAAM,EAAE,6BADH;AAELC,IAAAA,QAAQ,EAAE,EAFL;AAGLC,IAAAA,eAAe,EAAE;AACfC,MAAAA,MAAM,EAAE,CADO;AAEfC,MAAAA,KAAK,EAAE;AAFQ,KAHZ;AAOLC,IAAAA,aAAa,EAAE,IAPV;AAQLC,IAAAA,0BAA0B,EAAE,IARvB;AASLC,IAAAA,0BAA0B,EAAE,IATvB;AAULC,IAAAA,sBAAsB,EAAE,IAVnB;AAWLC,IAAAA,iBAAiB,EAAE,IAXd;AAYLC,IAAAA,qBAAqB,EAAE;AAZlB,GADM;AAebC,EAAAA,aAAa,EAAE;AACbC,IAAAA,sBAAsB,EAAE;AACtBC,MAAAA,KAAK,EAAE;AAAEC,QAAAA,QAAQ,EAAE;AAAZ,OADe;AAEtBC,MAAAA,KAAK,EAAE;AAAED,QAAAA,QAAQ,EAAE;AAAZ,OAFe;AAGtBE,MAAAA,KAAK,EAAE;AAAEF,QAAAA,QAAQ,EAAE;AAAZ;AAHe,KADX;AAMbG,IAAAA,UAAU,EAAE;AACVC,MAAAA,KAAK,EAAE,YADG;AAEVC,MAAAA,QAAQ,EAAE,KAFA;AAGVC,MAAAA,OAAO,EAAE;AAHC,KANC;AAWbC,IAAAA,eAAe,EAAE;AACfF,MAAAA,QAAQ,EAAE,IADK;AAEfD,MAAAA,KAAK,EAAE;AAFQ,KAXJ;AAeblB,IAAAA,MAAM,EAAE;AACNmB,MAAAA,QAAQ,EAAE,IADJ;AAEND,MAAAA,KAAK,EAAE,QAFD;AAGNI,MAAAA,kBAAkB,EAAE;AAClBT,QAAAA,KAAK,EAAE;AAAEC,UAAAA,QAAQ,EAAE;AAAZ,SADW;AAElBC,QAAAA,KAAK,EAAE;AAAED,UAAAA,QAAQ,EAAE;AAAZ,SAFW;AAGlBE,QAAAA,KAAK,EAAE;AAAEF,UAAAA,QAAQ,EAAE;AAAZ;AAHW;AAHd,KAfK;AAwBbS,IAAAA,qBAAqB,EAAE,KAxBV;AAyBbC,IAAAA,mBAAmB,EAAE;AACnBL,MAAAA,QAAQ,EAAE,IADS;AAEnBD,MAAAA,KAAK,EAAE,sBAFY;AAGnBI,MAAAA,kBAAkB,EAAE;AAClBT,QAAAA,KAAK,EAAE;AAAEC,UAAAA,QAAQ,EAAE;AAAZ,SADW;AAElBC,QAAAA,KAAK,EAAE;AAAED,UAAAA,QAAQ,EAAE;AAAZ,SAFW;AAGlBE,QAAAA,KAAK,EAAE;AAAEF,UAAAA,QAAQ,EAAE;AAAZ;AAHW;AAHD,KAzBR;AAkCbW,IAAAA,aAAa,EAAE;AACbD,MAAAA,mBAAmB,EAAE,GADR;AAEbxB,MAAAA,MAAM,EAAE;AAFK,KAlCF;AAsCb0B,IAAAA,cAAc,EAAE;AACdF,MAAAA,mBAAmB,EAAE,GADP;AAEdxB,MAAAA,MAAM,EAAE;AAFM,KAtCH;AA0Cb2B,IAAAA,UAAU,EAAE;AACVR,MAAAA,QAAQ,EAAE,KADA;AAEVD,MAAAA,KAAK,EAAE;AAFG,KA1CC;AA8CbU,IAAAA,aAAa,EAAE;AACbC,MAAAA,SAAS,EAAE,KADE;AAEbC,MAAAA,UAAU,EAAE;AAFC,KA9CF;AAkDbC,IAAAA,QAAQ,EAAE;AACRZ,MAAAA,QAAQ,EAAE,KADF;AAERD,MAAAA,KAAK,EAAE,kBAFC;AAGRE,MAAAA,OAAO,EAAE;AAHD,KAlDG;AAuDbY,IAAAA,eAAe,EAAE;AACfd,MAAAA,KAAK,EAAE,kBADQ;AAEfe,MAAAA,OAAO,EAAE;AAFM;AAvDJ;AAfF,C","sourcesContent":["export default {\n model: {\n prompt: 'This is the question prompt',\n imageUrl: '',\n imageDimensions: {\n height: 0,\n width: 0,\n },\n promptEnabled: true,\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true,\n backgroundImageEnabled: true,\n spellCheckEnabled: true,\n toolbarEditorPosition: 'bottom',\n },\n configuration: {\n baseInputConfiguration: {\n audio: { disabled: false },\n video: { disabled: false },\n image: { disabled: false },\n },\n spellCheck: {\n label: 'Spellcheck',\n settings: false,\n enabled: true,\n },\n backgroundImage: {\n settings: true,\n label: 'Background Image',\n },\n prompt: {\n settings: true,\n label: 'Prompt',\n inputConfiguration: {\n audio: { disabled: false },\n video: { disabled: false },\n image: { disabled: false },\n },\n },\n settingsPanelDisabled: false,\n teacherInstructions: {\n settings: true,\n label: 'Teacher Instructions',\n inputConfiguration: {\n audio: { disabled: false },\n video: { disabled: false },\n image: { disabled: false },\n },\n },\n maxImageWidth: {\n teacherInstructions: 300,\n prompt: 300,\n },\n maxImageHeight: {\n teacherInstructions: 300,\n prompt: 300,\n },\n withRubric: {\n settings: false,\n label: 'Add Rubric',\n },\n mathMlOptions: {\n mmlOutput: false,\n mmlEditing: false,\n },\n language: {\n settings: false,\n label: 'Specify Language',\n enabled: false,\n },\n languageChoices: {\n label: 'Language Choices',\n options: [],\n },\n },\n};\n"],"file":"defaults.js"}
1
+ {"version":3,"sources":["../src/defaults.js"],"names":["model","prompt","imageUrl","imageDimensions","height","width","promptEnabled","teacherInstructionsEnabled","studentInstructionsEnabled","backgroundImageEnabled","spellCheckEnabled","toolbarEditorPosition","configuration","baseInputConfiguration","audio","disabled","video","image","spellCheck","label","settings","enabled","backgroundImage","inputConfiguration","required","settingsPanelDisabled","teacherInstructions","maxImageWidth","maxImageHeight","withRubric","mathMlOptions","mmlOutput","mmlEditing","language","languageChoices","options"],"mappings":";;;;;;eAAe;AACbA,EAAAA,KAAK,EAAE;AACLC,IAAAA,MAAM,EAAE,6BADH;AAELC,IAAAA,QAAQ,EAAE,EAFL;AAGLC,IAAAA,eAAe,EAAE;AACfC,MAAAA,MAAM,EAAE,CADO;AAEfC,MAAAA,KAAK,EAAE;AAFQ,KAHZ;AAOLC,IAAAA,aAAa,EAAE,IAPV;AAQLC,IAAAA,0BAA0B,EAAE,IARvB;AASLC,IAAAA,0BAA0B,EAAE,IATvB;AAULC,IAAAA,sBAAsB,EAAE,IAVnB;AAWLC,IAAAA,iBAAiB,EAAE,IAXd;AAYLC,IAAAA,qBAAqB,EAAE;AAZlB,GADM;AAebC,EAAAA,aAAa,EAAE;AACbC,IAAAA,sBAAsB,EAAE;AACtBC,MAAAA,KAAK,EAAE;AAAEC,QAAAA,QAAQ,EAAE;AAAZ,OADe;AAEtBC,MAAAA,KAAK,EAAE;AAAED,QAAAA,QAAQ,EAAE;AAAZ,OAFe;AAGtBE,MAAAA,KAAK,EAAE;AAAEF,QAAAA,QAAQ,EAAE;AAAZ;AAHe,KADX;AAMbG,IAAAA,UAAU,EAAE;AACVC,MAAAA,KAAK,EAAE,YADG;AAEVC,MAAAA,QAAQ,EAAE,KAFA;AAGVC,MAAAA,OAAO,EAAE;AAHC,KANC;AAWbC,IAAAA,eAAe,EAAE;AACfF,MAAAA,QAAQ,EAAE,IADK;AAEfD,MAAAA,KAAK,EAAE;AAFQ,KAXJ;AAeblB,IAAAA,MAAM,EAAE;AACNmB,MAAAA,QAAQ,EAAE,IADJ;AAEND,MAAAA,KAAK,EAAE,QAFD;AAGNI,MAAAA,kBAAkB,EAAE;AAClBT,QAAAA,KAAK,EAAE;AAAEC,UAAAA,QAAQ,EAAE;AAAZ,SADW;AAElBC,QAAAA,KAAK,EAAE;AAAED,UAAAA,QAAQ,EAAE;AAAZ,SAFW;AAGlBE,QAAAA,KAAK,EAAE;AAAEF,UAAAA,QAAQ,EAAE;AAAZ;AAHW,OAHd;AAQNS,MAAAA,QAAQ,EAAE;AARJ,KAfK;AAyBbC,IAAAA,qBAAqB,EAAE,KAzBV;AA0BbC,IAAAA,mBAAmB,EAAE;AACnBN,MAAAA,QAAQ,EAAE,IADS;AAEnBD,MAAAA,KAAK,EAAE,sBAFY;AAGnBI,MAAAA,kBAAkB,EAAE;AAClBT,QAAAA,KAAK,EAAE;AAAEC,UAAAA,QAAQ,EAAE;AAAZ,SADW;AAElBC,QAAAA,KAAK,EAAE;AAAED,UAAAA,QAAQ,EAAE;AAAZ,SAFW;AAGlBE,QAAAA,KAAK,EAAE;AAAEF,UAAAA,QAAQ,EAAE;AAAZ;AAHW,OAHD;AAQnBS,MAAAA,QAAQ,EAAE;AARS,KA1BR;AAoCbG,IAAAA,aAAa,EAAE;AACbD,MAAAA,mBAAmB,EAAE,GADR;AAEbzB,MAAAA,MAAM,EAAE;AAFK,KApCF;AAwCb2B,IAAAA,cAAc,EAAE;AACdF,MAAAA,mBAAmB,EAAE,GADP;AAEdzB,MAAAA,MAAM,EAAE;AAFM,KAxCH;AA4Cb4B,IAAAA,UAAU,EAAE;AACVT,MAAAA,QAAQ,EAAE,KADA;AAEVD,MAAAA,KAAK,EAAE;AAFG,KA5CC;AAgDbW,IAAAA,aAAa,EAAE;AACbC,MAAAA,SAAS,EAAE,KADE;AAEbC,MAAAA,UAAU,EAAE;AAFC,KAhDF;AAoDbC,IAAAA,QAAQ,EAAE;AACRb,MAAAA,QAAQ,EAAE,KADF;AAERD,MAAAA,KAAK,EAAE,kBAFC;AAGRE,MAAAA,OAAO,EAAE;AAHD,KApDG;AAyDba,IAAAA,eAAe,EAAE;AACff,MAAAA,KAAK,EAAE,kBADQ;AAEfgB,MAAAA,OAAO,EAAE;AAFM;AAzDJ;AAfF,C","sourcesContent":["export default {\n model: {\n prompt: 'This is the question prompt',\n imageUrl: '',\n imageDimensions: {\n height: 0,\n width: 0,\n },\n promptEnabled: true,\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true,\n backgroundImageEnabled: true,\n spellCheckEnabled: true,\n toolbarEditorPosition: 'bottom',\n },\n configuration: {\n baseInputConfiguration: {\n audio: { disabled: false },\n video: { disabled: false },\n image: { disabled: false },\n },\n spellCheck: {\n label: 'Spellcheck',\n settings: false,\n enabled: true,\n },\n backgroundImage: {\n settings: true,\n label: 'Background Image',\n },\n prompt: {\n settings: true,\n label: 'Prompt',\n inputConfiguration: {\n audio: { disabled: false },\n video: { disabled: false },\n image: { disabled: false },\n },\n required: false,\n },\n settingsPanelDisabled: false,\n teacherInstructions: {\n settings: true,\n label: 'Teacher Instructions',\n inputConfiguration: {\n audio: { disabled: false },\n video: { disabled: false },\n image: { disabled: false },\n },\n required: false,\n },\n maxImageWidth: {\n teacherInstructions: 300,\n prompt: 300,\n },\n maxImageHeight: {\n teacherInstructions: 300,\n prompt: 300,\n },\n withRubric: {\n settings: false,\n label: 'Add Rubric',\n },\n mathMlOptions: {\n mmlOutput: false,\n mmlEditing: false,\n },\n language: {\n settings: false,\n label: 'Specify Language',\n enabled: false,\n },\n languageChoices: {\n label: 'Language Choices',\n options: [],\n },\n },\n};\n"],"file":"defaults.js"}
@@ -141,11 +141,15 @@ var Root = /*#__PURE__*/function (_React$Component) {
141
141
 
142
142
  var _ref2 = model || {},
143
143
  backgroundImageEnabled = _ref2.backgroundImageEnabled,
144
+ _ref2$errors = _ref2.errors,
145
+ errors = _ref2$errors === void 0 ? {} : _ref2$errors,
144
146
  promptEnabled = _ref2.promptEnabled,
145
147
  spellCheckEnabled = _ref2.spellCheckEnabled,
146
148
  teacherInstructionsEnabled = _ref2.teacherInstructionsEnabled,
147
149
  toolbarEditorPosition = _ref2.toolbarEditorPosition;
148
150
 
151
+ var promptError = errors.prompt,
152
+ teacherInstructionsError = errors.teacherInstructions;
149
153
  var defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;
150
154
  var defaultImageMaxHeight = maxImageHeight && maxImageHeight.prompt;
151
155
  var toolbarOpts = {
@@ -189,6 +193,7 @@ var Root = /*#__PURE__*/function (_React$Component) {
189
193
  onChange: this.onTeacherInstructionsChanged,
190
194
  imageSupport: imageSupport,
191
195
  nonEmpty: false,
196
+ error: teacherInstructionsError,
192
197
  toolbarOpts: toolbarOpts,
193
198
  pluginProps: getPluginProps(teacherInstructions === null || teacherInstructions === void 0 ? void 0 : teacherInstructions.inputConfiguration),
194
199
  spellCheck: spellCheckEnabled,
@@ -201,12 +206,15 @@ var Root = /*#__PURE__*/function (_React$Component) {
201
206
  language: 'special'
202
207
  }],
203
208
  mathMlOptions: mathMlOptions
204
- })), promptEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
209
+ }), teacherInstructionsError && /*#__PURE__*/_react["default"].createElement("div", {
210
+ className: classes.errorText
211
+ }, teacherInstructionsError)), promptEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
205
212
  label: "Item Stem",
206
213
  className: classes.promptHolder
207
214
  }, /*#__PURE__*/_react["default"].createElement(_editableHtml.EditableHtml, {
208
215
  markup: model.prompt,
209
216
  onChange: this.onPromptChanged,
217
+ error: promptError,
210
218
  toolbarOpts: toolbarOpts,
211
219
  spellCheck: spellCheckEnabled,
212
220
  pluginProps: getPluginProps(prompt === null || prompt === void 0 ? void 0 : prompt.inputConfiguration),
@@ -220,7 +228,9 @@ var Root = /*#__PURE__*/function (_React$Component) {
220
228
  language: 'special'
221
229
  }],
222
230
  mathMlOptions: mathMlOptions
223
- })), backgroundImageEnabled && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
231
+ }), promptError && /*#__PURE__*/_react["default"].createElement("div", {
232
+ className: classes.errorText
233
+ }, promptError)), backgroundImageEnabled && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
224
234
  variant: "subheading"
225
235
  }, "Define Background Image"), /*#__PURE__*/_react["default"].createElement(_imageContainer["default"], {
226
236
  imageUrl: model.imageUrl,
@@ -241,6 +251,11 @@ var styles = function styles(theme) {
241
251
  paddingTop: theme.spacing.unit * 2,
242
252
  marginBottom: theme.spacing.unit * 2,
243
253
  width: '100%'
254
+ },
255
+ errorText: {
256
+ fontSize: theme.typography.fontSize - 2,
257
+ color: theme.palette.error.main,
258
+ paddingTop: theme.spacing.unit
244
259
  }
245
260
  };
246
261
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/root.jsx"],"names":["Panel","settings","toggle","dropdown","Root","prompt","props","model","onModelChanged","update","teacherInstructions","dimensions","imageDimensions","imageUrl","classes","configuration","imageSupport","onConfigurationChanged","uploadSoundSupport","baseInputConfiguration","backgroundImage","contentDimensions","maxImageWidth","maxImageHeight","settingsPanelDisabled","spellCheck","withRubric","language","languageChoices","mathMlOptions","backgroundImageEnabled","promptEnabled","spellCheckEnabled","teacherInstructionsEnabled","toolbarEditorPosition","defaultImageMaxWidth","defaultImageMaxHeight","toolbarOpts","position","panelSettings","label","enabled","options","panelProperties","rubricEnabled","getPluginProps","Settings","Properties","promptHolder","onTeacherInstructionsChanged","inputConfiguration","onPromptChanged","onUpdateImageDimension","onImageUpload","React","Component","styles","theme","paddingTop","spacing","unit","marginBottom","width","propTypes","PropTypes","object","isRequired","shape","add","func"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { settings, layout, InputContainer } from '@pie-lib/pie-toolbox/config-ui';\nimport PropTypes from 'prop-types';\nimport { EditableHtml } from '@pie-lib/pie-toolbox/editable-html';\nimport Typography from '@material-ui/core/Typography';\nimport { withStyles } from '@material-ui/core/styles';\n\nimport ImageContainer from './image-container';\nimport cloneDeep from 'lodash/cloneDeep';\n\nconst { Panel, toggle, dropdown } = settings;\n\nexport class Root extends React.Component {\n onPromptChanged = (prompt) => {\n const { model, onModelChanged } = this.props;\n const update = cloneDeep(model);\n\n onModelChanged({ ...update, prompt });\n };\n\n onTeacherInstructionsChanged = (teacherInstructions) => {\n const { model, onModelChanged } = this.props;\n\n onModelChanged({ ...model, teacherInstructions });\n };\n\n onUpdateImageDimension = (dimensions) => {\n const { model, onModelChanged } = this.props;\n\n onModelChanged({ ...model, imageDimensions: dimensions });\n };\n\n onImageUpload = (imageUrl) => {\n const { model, onModelChanged } = this.props;\n\n onModelChanged({ ...model, imageUrl });\n };\n\n render() {\n const { classes, configuration, imageSupport, model, onConfigurationChanged, onModelChanged, uploadSoundSupport } =\n this.props;\n const {\n baseInputConfiguration = {},\n backgroundImage = {},\n contentDimensions = {},\n maxImageWidth = {},\n maxImageHeight = {},\n prompt = {},\n settingsPanelDisabled,\n spellCheck = {},\n teacherInstructions = {},\n withRubric = {},\n language = {},\n languageChoices = {},\n mathMlOptions = {},\n } = configuration || {};\n const {\n backgroundImageEnabled,\n promptEnabled,\n spellCheckEnabled,\n teacherInstructionsEnabled,\n toolbarEditorPosition,\n } = model || {};\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 backgroundImageEnabled: backgroundImage.settings && toggle(backgroundImage.label),\n promptEnabled: prompt.settings && toggle(prompt.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 spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label),\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 dimensions={contentDimensions}\n hideSettings={settingsPanelDisabled}\n settings={\n <Panel\n model={model}\n onChangeModel={onModelChanged}\n configuration={configuration}\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 markup={model.teacherInstructions || ''}\n onChange={this.onTeacherInstructionsChanged}\n imageSupport={imageSupport}\n nonEmpty={false}\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 />\n </InputContainer>\n )}\n\n {promptEnabled && (\n <InputContainer label=\"Item Stem\" className={classes.promptHolder}>\n <EditableHtml\n markup={model.prompt}\n onChange={this.onPromptChanged}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n pluginProps={getPluginProps(prompt?.inputConfiguration)}\n imageSupport={imageSupport}\n maxImageWidth={defaultImageMaxWidth}\n maxImageHeight={defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n </InputContainer>\n )}\n\n {backgroundImageEnabled && (\n <React.Fragment>\n <Typography variant=\"subheading\">Define Background Image</Typography>\n\n <ImageContainer\n imageUrl={model.imageUrl}\n onUpdateImageDimension={this.onUpdateImageDimension}\n onImageUpload={this.onImageUpload}\n imageDimensions={model.imageDimensions}\n />\n </React.Fragment>\n )}\n </layout.ConfigLayout>\n );\n }\n}\n\nconst styles = (theme) => ({\n promptHolder: {\n paddingTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\n width: '100%',\n },\n});\n\nRoot.propTypes = {\n classes: PropTypes.object.isRequired,\n configuration: PropTypes.object,\n model: PropTypes.object.isRequired,\n imageSupport: PropTypes.shape({\n add: PropTypes.func,\n delete: PropTypes.func,\n }),\n uploadSoundSupport: PropTypes.shape({\n add: PropTypes.func,\n delete: PropTypes.func,\n }),\n onModelChanged: PropTypes.func.isRequired,\n onConfigurationChanged: PropTypes.func.isRequired,\n};\n\nexport default withStyles(styles)(Root);\n"],"file":"root.js"}
1
+ {"version":3,"sources":["../src/root.jsx"],"names":["Panel","settings","toggle","dropdown","Root","prompt","props","model","onModelChanged","update","teacherInstructions","dimensions","imageDimensions","imageUrl","classes","configuration","imageSupport","onConfigurationChanged","uploadSoundSupport","baseInputConfiguration","backgroundImage","contentDimensions","maxImageWidth","maxImageHeight","settingsPanelDisabled","spellCheck","withRubric","language","languageChoices","mathMlOptions","backgroundImageEnabled","errors","promptEnabled","spellCheckEnabled","teacherInstructionsEnabled","toolbarEditorPosition","promptError","teacherInstructionsError","defaultImageMaxWidth","defaultImageMaxHeight","toolbarOpts","position","panelSettings","label","enabled","options","panelProperties","rubricEnabled","getPluginProps","Settings","Properties","promptHolder","onTeacherInstructionsChanged","inputConfiguration","errorText","onPromptChanged","onUpdateImageDimension","onImageUpload","React","Component","styles","theme","paddingTop","spacing","unit","marginBottom","width","fontSize","typography","color","palette","error","main","propTypes","PropTypes","object","isRequired","shape","add","func"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { settings, layout, InputContainer } from '@pie-lib/pie-toolbox/config-ui';\nimport PropTypes from 'prop-types';\nimport { EditableHtml } from '@pie-lib/pie-toolbox/editable-html';\nimport Typography from '@material-ui/core/Typography';\nimport { withStyles } from '@material-ui/core/styles';\n\nimport ImageContainer from './image-container';\nimport cloneDeep from 'lodash/cloneDeep';\n\nconst { Panel, toggle, dropdown } = settings;\n\nexport class Root extends React.Component {\n onPromptChanged = (prompt) => {\n const { model, onModelChanged } = this.props;\n const update = cloneDeep(model);\n\n onModelChanged({ ...update, prompt });\n };\n\n onTeacherInstructionsChanged = (teacherInstructions) => {\n const { model, onModelChanged } = this.props;\n\n onModelChanged({ ...model, teacherInstructions });\n };\n\n onUpdateImageDimension = (dimensions) => {\n const { model, onModelChanged } = this.props;\n\n onModelChanged({ ...model, imageDimensions: dimensions });\n };\n\n onImageUpload = (imageUrl) => {\n const { model, onModelChanged } = this.props;\n\n onModelChanged({ ...model, imageUrl });\n };\n\n render() {\n const { classes, configuration, imageSupport, model, onConfigurationChanged, onModelChanged, uploadSoundSupport } =\n this.props;\n const {\n baseInputConfiguration = {},\n backgroundImage = {},\n contentDimensions = {},\n maxImageWidth = {},\n maxImageHeight = {},\n prompt = {},\n settingsPanelDisabled,\n spellCheck = {},\n teacherInstructions = {},\n withRubric = {},\n language = {},\n languageChoices = {},\n mathMlOptions = {},\n } = configuration || {};\n const {\n backgroundImageEnabled,\n errors = {},\n promptEnabled,\n spellCheckEnabled,\n teacherInstructionsEnabled,\n toolbarEditorPosition,\n } = model || {};\n const { prompt: promptError, teacherInstructions: teacherInstructionsError } = errors;\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 backgroundImageEnabled: backgroundImage.settings && toggle(backgroundImage.label),\n promptEnabled: prompt.settings && toggle(prompt.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 spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label),\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 dimensions={contentDimensions}\n hideSettings={settingsPanelDisabled}\n settings={\n <Panel\n model={model}\n onChangeModel={onModelChanged}\n configuration={configuration}\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 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 />\n {teacherInstructionsError && <div className={classes.errorText}>{teacherInstructionsError}</div>}\n </InputContainer>\n )}\n\n {promptEnabled && (\n <InputContainer label=\"Item Stem\" className={classes.promptHolder}>\n <EditableHtml\n markup={model.prompt}\n onChange={this.onPromptChanged}\n error={promptError}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n pluginProps={getPluginProps(prompt?.inputConfiguration)}\n imageSupport={imageSupport}\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 {backgroundImageEnabled && (\n <React.Fragment>\n <Typography variant=\"subheading\">Define Background Image</Typography>\n\n <ImageContainer\n imageUrl={model.imageUrl}\n onUpdateImageDimension={this.onUpdateImageDimension}\n onImageUpload={this.onImageUpload}\n imageDimensions={model.imageDimensions}\n />\n </React.Fragment>\n )}\n </layout.ConfigLayout>\n );\n }\n}\n\nconst styles = (theme) => ({\n promptHolder: {\n paddingTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\n width: '100%',\n },\n errorText: {\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingTop: theme.spacing.unit,\n },\n});\n\nRoot.propTypes = {\n classes: PropTypes.object.isRequired,\n configuration: PropTypes.object,\n model: PropTypes.object.isRequired,\n imageSupport: PropTypes.shape({\n add: PropTypes.func,\n delete: PropTypes.func,\n }),\n uploadSoundSupport: PropTypes.shape({\n add: PropTypes.func,\n delete: PropTypes.func,\n }),\n onModelChanged: PropTypes.func.isRequired,\n onConfigurationChanged: PropTypes.func.isRequired,\n};\n\nexport default withStyles(styles)(Root);\n"],"file":"root.js"}
@@ -9,7 +9,7 @@
9
9
  "dependencies": {
10
10
  "@material-ui/core": "^3.9.2",
11
11
  "@pie-framework/pie-configure-events": "^1.3.0",
12
- "@pie-lib/pie-toolbox": "1.12.1",
12
+ "@pie-lib/pie-toolbox": "1.12.2",
13
13
  "classnames": "^2.2.6",
14
14
  "debug": "^3.1.0",
15
15
  "lodash": "^4.17.15",
@@ -57,6 +57,7 @@ exports[`Root snapshot renders 1`] = `
57
57
  },
58
58
  },
59
59
  "label": "Prompt",
60
+ "required": false,
60
61
  "settings": true,
61
62
  },
62
63
  "settingsPanelDisabled": false,
@@ -78,6 +79,7 @@ exports[`Root snapshot renders 1`] = `
78
79
  },
79
80
  },
80
81
  "label": "Teacher Instructions",
82
+ "required": false,
81
83
  "settings": true,
82
84
  },
83
85
  "withRubric": Object {
@@ -36,6 +36,7 @@ export default {
36
36
  video: { disabled: false },
37
37
  image: { disabled: false },
38
38
  },
39
+ required: false,
39
40
  },
40
41
  settingsPanelDisabled: false,
41
42
  teacherInstructions: {
@@ -46,6 +47,7 @@ export default {
46
47
  video: { disabled: false },
47
48
  image: { disabled: false },
48
49
  },
50
+ required: false,
49
51
  },
50
52
  maxImageWidth: {
51
53
  teacherInstructions: 300,
@@ -56,11 +56,13 @@ export class Root extends React.Component {
56
56
  } = configuration || {};
57
57
  const {
58
58
  backgroundImageEnabled,
59
+ errors = {},
59
60
  promptEnabled,
60
61
  spellCheckEnabled,
61
62
  teacherInstructionsEnabled,
62
63
  toolbarEditorPosition,
63
64
  } = model || {};
65
+ const { prompt: promptError, teacherInstructions: teacherInstructionsError } = errors;
64
66
 
65
67
  const defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;
66
68
  const defaultImageMaxHeight = maxImageHeight && maxImageHeight.prompt;
@@ -111,6 +113,7 @@ export class Root extends React.Component {
111
113
  onChange={this.onTeacherInstructionsChanged}
112
114
  imageSupport={imageSupport}
113
115
  nonEmpty={false}
116
+ error={teacherInstructionsError}
114
117
  toolbarOpts={toolbarOpts}
115
118
  pluginProps={getPluginProps(teacherInstructions?.inputConfiguration)}
116
119
  spellCheck={spellCheckEnabled}
@@ -120,6 +123,7 @@ export class Root extends React.Component {
120
123
  languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}
121
124
  mathMlOptions={mathMlOptions}
122
125
  />
126
+ {teacherInstructionsError && <div className={classes.errorText}>{teacherInstructionsError}</div>}
123
127
  </InputContainer>
124
128
  )}
125
129
 
@@ -128,6 +132,7 @@ export class Root extends React.Component {
128
132
  <EditableHtml
129
133
  markup={model.prompt}
130
134
  onChange={this.onPromptChanged}
135
+ error={promptError}
131
136
  toolbarOpts={toolbarOpts}
132
137
  spellCheck={spellCheckEnabled}
133
138
  pluginProps={getPluginProps(prompt?.inputConfiguration)}
@@ -138,6 +143,7 @@ export class Root extends React.Component {
138
143
  languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}
139
144
  mathMlOptions={mathMlOptions}
140
145
  />
146
+ {promptError && <div className={classes.errorText}>{promptError}</div>}
141
147
  </InputContainer>
142
148
  )}
143
149
 
@@ -164,6 +170,11 @@ const styles = (theme) => ({
164
170
  marginBottom: theme.spacing.unit * 2,
165
171
  width: '100%',
166
172
  },
173
+ errorText: {
174
+ fontSize: theme.typography.fontSize - 2,
175
+ color: theme.palette.error.main,
176
+ paddingTop: theme.spacing.unit,
177
+ },
167
178
  });
168
179
 
169
180
  Root.propTypes = {
@@ -9,6 +9,7 @@ exports.createDefaultModel = void 0;
9
9
  exports.model = model;
10
10
  exports.normalize = void 0;
11
11
  exports.outcome = outcome;
12
+ exports.validate = void 0;
12
13
 
13
14
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
14
15
 
@@ -82,5 +83,31 @@ outcome() {
82
83
  note: 'Requires manual scoring'
83
84
  });
84
85
  });
85
- }
86
+ } // remove all html tags
87
+
88
+
89
+ var getInnerText = function getInnerText(html) {
90
+ return (html || '').replaceAll(/<[^>]*>/g, '');
91
+ }; // remove all html tags except img and iframe
92
+
93
+
94
+ var getContent = function getContent(html) {
95
+ return (html || '').replace(/(<(?!img|iframe)([^>]+)>)/gi, '');
96
+ };
97
+
98
+ var validate = function validate() {
99
+ var model = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
100
+ var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
101
+ var errors = {};
102
+ ['teacherInstructions', 'prompt'].forEach(function (field) {
103
+ var _config$field;
104
+
105
+ if ((_config$field = config[field]) !== null && _config$field !== void 0 && _config$field.required && !getContent(model[field])) {
106
+ errors[field] = 'This field is required.';
107
+ }
108
+ });
109
+ return errors;
110
+ };
111
+
112
+ exports.validate = validate;
86
113
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.js"],"names":["log","normalize","question","promptEnabled","teacherInstructionsEnabled","studentInstructionsEnabled","backgroundImageEnabled","model","session","env","normalizedQuestion","imageUrl","imageDimensions","prompt","language","Promise","resolve","out","disabled","mode","role","teacherInstructions","createDefaultModel","defaults","outcome","score","completed","note"],"mappings":";;;;;;;;;;;;;;AAAA;;AACA;;;;;;AAEA,IAAMA,GAAG,GAAG,uBAAM,0CAAN,CAAZ;;AAEO,IAAMC,SAAS,GAAG,SAAZA,SAAY,CAACC,QAAD;AAAA;AACvBC,IAAAA,aAAa,EAAE,IADQ;AAEvBC,IAAAA,0BAA0B,EAAE,IAFL;AAGvBC,IAAAA,0BAA0B,EAAE,IAHL;AAIvBC,IAAAA,sBAAsB,EAAE;AAJD,KAKpBJ,QALoB;AAAA,CAAlB;;;;AAQA,SAASK,KAAT,CAAeL,QAAf,EAAyBM,OAAzB,EAAkCC,GAAlC,EAAuC;AAC5C,MAAMC,kBAAkB,GAAGT,SAAS,CAACC,QAAD,CAApC;AACA,MAAQS,QAAR,GAA+FD,kBAA/F,CAAQC,QAAR;AAAA,MAAkBC,eAAlB,GAA+FF,kBAA/F,CAAkBE,eAAlB;AAAA,MAAmCC,MAAnC,GAA+FH,kBAA/F,CAAmCG,MAAnC;AAAA,MAA2CV,aAA3C,GAA+FO,kBAA/F,CAA2CP,aAA3C;AAAA,MAA0DG,sBAA1D,GAA+FI,kBAA/F,CAA0DJ,sBAA1D;AAAA,MAAkFQ,QAAlF,GAA+FJ,kBAA/F,CAAkFI,QAAlF;AAEA,SAAO,IAAIC,OAAJ,CAAY,UAACC,OAAD,EAAa;AAC9B,QAAMC,GAAG,GAAG;AACVC,MAAAA,QAAQ,EAAET,GAAG,CAACU,IAAJ,KAAa,QADb;AAEVA,MAAAA,IAAI,EAAEV,GAAG,CAACU,IAFA;AAGVP,MAAAA,eAAe,EAAfA,eAHU;AAIVD,MAAAA,QAAQ,EAARA,QAJU;AAKVE,MAAAA,MAAM,EAAEV,aAAa,GAAGU,MAAH,GAAY,IALvB;AAMVP,MAAAA,sBAAsB,EAAtBA,sBANU;AAOVQ,MAAAA,QAAQ,EAARA;AAPU,KAAZ;;AAUA,QAAIL,GAAG,CAACW,IAAJ,KAAa,YAAb,KAA8BX,GAAG,CAACU,IAAJ,KAAa,MAAb,IAAuBV,GAAG,CAACU,IAAJ,KAAa,UAAlE,CAAJ,EAAmF;AACjFF,MAAAA,GAAG,CAACI,mBAAJ,GAA0BX,kBAAkB,CAACN,0BAAnB,GACtBM,kBAAkB,CAACW,mBADG,GAEtB,IAFJ;AAGD,KAJD,MAIO;AACLJ,MAAAA,GAAG,CAACI,mBAAJ,GAA0B,IAA1B;AACD;;AAEDL,IAAAA,OAAO,CAACC,GAAD,CAAP;AACD,GApBM,CAAP;AAqBD;;AAEM,IAAMK,kBAAkB,GAAG,SAArBA,kBAAqB;AAAA,MAACf,KAAD,uEAAS,EAAT;AAAA,SAChC,IAAIQ,OAAJ,CAAY,UAACC,OAAD,EAAa;AACvBA,IAAAA,OAAO,iCACFO,oBADE,GAEFhB,KAFE,EAAP;AAID,GALD,CADgC;AAAA,CAA3B;;;;AAQA;AAAiB;AAARiB,OAAT,GAAsC;AAC3C,SAAO,IAAIT,OAAJ,CAAY,UAACC,OAAD,EAAa;AAC9BhB,IAAAA,GAAG,CAAC,YAAD,CAAH;AACAgB,IAAAA,OAAO,CAAC;AACNS,MAAAA,KAAK,EAAE,CADD;AAENC,MAAAA,SAAS,EAAE,KAFL;AAGNC,MAAAA,IAAI,EAAE;AAHA,KAAD,CAAP;AAKD,GAPM,CAAP;AAQD","sourcesContent":["import debug from 'debug';\nimport defaults from './defaults';\n\nconst log = debug('pie-elements:drawing-response:controller');\n\nexport const normalize = (question) => ({\n promptEnabled: true,\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true,\n backgroundImageEnabled: true,\n ...question,\n});\n\nexport function model(question, session, env) {\n const normalizedQuestion = normalize(question);\n const { imageUrl, imageDimensions, prompt, promptEnabled, backgroundImageEnabled, language } = normalizedQuestion;\n\n return new Promise((resolve) => {\n const out = {\n disabled: env.mode !== 'gather',\n mode: env.mode,\n imageDimensions,\n imageUrl,\n prompt: promptEnabled ? prompt : null,\n backgroundImageEnabled,\n language\n };\n\n if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {\n out.teacherInstructions = normalizedQuestion.teacherInstructionsEnabled\n ? normalizedQuestion.teacherInstructions\n : null;\n } else {\n out.teacherInstructions = null;\n }\n\n resolve(out);\n });\n}\n\nexport const createDefaultModel = (model = {}) =>\n new Promise((resolve) => {\n resolve({\n ...defaults,\n ...model,\n });\n });\n\nexport function outcome(/*config, session*/) {\n return new Promise((resolve) => {\n log('outcome...');\n resolve({\n score: 0,\n completed: 'n/a',\n note: 'Requires manual scoring',\n });\n });\n}\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../src/index.js"],"names":["log","normalize","question","promptEnabled","teacherInstructionsEnabled","studentInstructionsEnabled","backgroundImageEnabled","model","session","env","normalizedQuestion","imageUrl","imageDimensions","prompt","language","Promise","resolve","out","disabled","mode","role","teacherInstructions","createDefaultModel","defaults","outcome","score","completed","note","getInnerText","html","replaceAll","getContent","replace","validate","config","errors","forEach","field","required"],"mappings":";;;;;;;;;;;;;;;AAAA;;AACA;;;;;;AAEA,IAAMA,GAAG,GAAG,uBAAM,0CAAN,CAAZ;;AAEO,IAAMC,SAAS,GAAG,SAAZA,SAAY,CAACC,QAAD;AAAA;AACvBC,IAAAA,aAAa,EAAE,IADQ;AAEvBC,IAAAA,0BAA0B,EAAE,IAFL;AAGvBC,IAAAA,0BAA0B,EAAE,IAHL;AAIvBC,IAAAA,sBAAsB,EAAE;AAJD,KAKpBJ,QALoB;AAAA,CAAlB;;;;AAQA,SAASK,KAAT,CAAeL,QAAf,EAAyBM,OAAzB,EAAkCC,GAAlC,EAAuC;AAC5C,MAAMC,kBAAkB,GAAGT,SAAS,CAACC,QAAD,CAApC;AACA,MAAQS,QAAR,GAA+FD,kBAA/F,CAAQC,QAAR;AAAA,MAAkBC,eAAlB,GAA+FF,kBAA/F,CAAkBE,eAAlB;AAAA,MAAmCC,MAAnC,GAA+FH,kBAA/F,CAAmCG,MAAnC;AAAA,MAA2CV,aAA3C,GAA+FO,kBAA/F,CAA2CP,aAA3C;AAAA,MAA0DG,sBAA1D,GAA+FI,kBAA/F,CAA0DJ,sBAA1D;AAAA,MAAkFQ,QAAlF,GAA+FJ,kBAA/F,CAAkFI,QAAlF;AAEA,SAAO,IAAIC,OAAJ,CAAY,UAACC,OAAD,EAAa;AAC9B,QAAMC,GAAG,GAAG;AACVC,MAAAA,QAAQ,EAAET,GAAG,CAACU,IAAJ,KAAa,QADb;AAEVA,MAAAA,IAAI,EAAEV,GAAG,CAACU,IAFA;AAGVP,MAAAA,eAAe,EAAfA,eAHU;AAIVD,MAAAA,QAAQ,EAARA,QAJU;AAKVE,MAAAA,MAAM,EAAEV,aAAa,GAAGU,MAAH,GAAY,IALvB;AAMVP,MAAAA,sBAAsB,EAAtBA,sBANU;AAOVQ,MAAAA,QAAQ,EAARA;AAPU,KAAZ;;AAUA,QAAIL,GAAG,CAACW,IAAJ,KAAa,YAAb,KAA8BX,GAAG,CAACU,IAAJ,KAAa,MAAb,IAAuBV,GAAG,CAACU,IAAJ,KAAa,UAAlE,CAAJ,EAAmF;AACjFF,MAAAA,GAAG,CAACI,mBAAJ,GAA0BX,kBAAkB,CAACN,0BAAnB,GACtBM,kBAAkB,CAACW,mBADG,GAEtB,IAFJ;AAGD,KAJD,MAIO;AACLJ,MAAAA,GAAG,CAACI,mBAAJ,GAA0B,IAA1B;AACD;;AAEDL,IAAAA,OAAO,CAACC,GAAD,CAAP;AACD,GApBM,CAAP;AAqBD;;AAEM,IAAMK,kBAAkB,GAAG,SAArBA,kBAAqB;AAAA,MAACf,KAAD,uEAAS,EAAT;AAAA,SAChC,IAAIQ,OAAJ,CAAY,UAACC,OAAD,EAAa;AACvBA,IAAAA,OAAO,iCACFO,oBADE,GAEFhB,KAFE,EAAP;AAID,GALD,CADgC;AAAA,CAA3B;;;;AAQA;AAAiB;AAARiB,OAAT,GAAsC;AAC3C,SAAO,IAAIT,OAAJ,CAAY,UAACC,OAAD,EAAa;AAC9BhB,IAAAA,GAAG,CAAC,YAAD,CAAH;AACAgB,IAAAA,OAAO,CAAC;AACNS,MAAAA,KAAK,EAAE,CADD;AAENC,MAAAA,SAAS,EAAE,KAFL;AAGNC,MAAAA,IAAI,EAAE;AAHA,KAAD,CAAP;AAKD,GAPM,CAAP;AAQD,C,CAED;;;AACA,IAAMC,YAAY,GAAG,SAAfA,YAAe,CAACC,IAAD;AAAA,SAAU,CAACA,IAAI,IAAI,EAAT,EAAaC,UAAb,CAAwB,UAAxB,EAAoC,EAApC,CAAV;AAAA,CAArB,C,CAEA;;;AACA,IAAMC,UAAU,GAAG,SAAbA,UAAa,CAACF,IAAD;AAAA,SAAU,CAACA,IAAI,IAAI,EAAT,EAAaG,OAAb,CAAqB,6BAArB,EAAoD,EAApD,CAAV;AAAA,CAAnB;;AAEO,IAAMC,QAAQ,GAAG,SAAXA,QAAW,GAA6B;AAAA,MAA5B1B,KAA4B,uEAApB,EAAoB;AAAA,MAAhB2B,MAAgB,uEAAP,EAAO;AACnD,MAAMC,MAAM,GAAG,EAAf;AAEA,GAAC,qBAAD,EAAwB,QAAxB,EAAkCC,OAAlC,CAA0C,UAACC,KAAD,EAAW;AAAA;;AACnD,QAAI,iBAAAH,MAAM,CAACG,KAAD,CAAN,wDAAeC,QAAf,IAA2B,CAACP,UAAU,CAACxB,KAAK,CAAC8B,KAAD,CAAN,CAA1C,EAA0D;AACxDF,MAAAA,MAAM,CAACE,KAAD,CAAN,GAAgB,yBAAhB;AACD;AACF,GAJD;AAMA,SAAOF,MAAP;AACD,CAVM","sourcesContent":["import debug from 'debug';\nimport defaults from './defaults';\n\nconst log = debug('pie-elements:drawing-response:controller');\n\nexport const normalize = (question) => ({\n promptEnabled: true,\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true,\n backgroundImageEnabled: true,\n ...question,\n});\n\nexport function model(question, session, env) {\n const normalizedQuestion = normalize(question);\n const { imageUrl, imageDimensions, prompt, promptEnabled, backgroundImageEnabled, language } = normalizedQuestion;\n\n return new Promise((resolve) => {\n const out = {\n disabled: env.mode !== 'gather',\n mode: env.mode,\n imageDimensions,\n imageUrl,\n prompt: promptEnabled ? prompt : null,\n backgroundImageEnabled,\n language,\n };\n\n if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {\n out.teacherInstructions = normalizedQuestion.teacherInstructionsEnabled\n ? normalizedQuestion.teacherInstructions\n : null;\n } else {\n out.teacherInstructions = null;\n }\n\n resolve(out);\n });\n}\n\nexport const createDefaultModel = (model = {}) =>\n new Promise((resolve) => {\n resolve({\n ...defaults,\n ...model,\n });\n });\n\nexport function outcome(/*config, session*/) {\n return new Promise((resolve) => {\n log('outcome...');\n resolve({\n score: 0,\n completed: 'n/a',\n note: 'Requires manual scoring',\n });\n });\n}\n\n// remove all html tags\nconst getInnerText = (html) => (html || '').replaceAll(/<[^>]*>/g, '');\n\n// remove all html tags except img and iframe\nconst getContent = (html) => (html || '').replace(/(<(?!img|iframe)([^>]+)>)/gi, '');\n\nexport const validate = (model = {}, config = {}) => {\n const errors = {};\n\n ['teacherInstructions', 'prompt'].forEach((field) => {\n if (config[field]?.required && !getContent(model[field])) {\n errors[field] = 'This field is required.';\n }\n });\n\n return errors;\n};\n"],"file":"index.js"}
@@ -23,7 +23,7 @@ export function model(question, session, env) {
23
23
  imageUrl,
24
24
  prompt: promptEnabled ? prompt : null,
25
25
  backgroundImageEnabled,
26
- language
26
+ language,
27
27
  };
28
28
 
29
29
  if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {
@@ -56,3 +56,21 @@ export function outcome(/*config, session*/) {
56
56
  });
57
57
  });
58
58
  }
59
+
60
+ // remove all html tags
61
+ const getInnerText = (html) => (html || '').replaceAll(/<[^>]*>/g, '');
62
+
63
+ // remove all html tags except img and iframe
64
+ const getContent = (html) => (html || '').replace(/(<(?!img|iframe)([^>]+)>)/gi, '');
65
+
66
+ export const validate = (model = {}, config = {}) => {
67
+ const errors = {};
68
+
69
+ ['teacherInstructions', 'prompt'].forEach((field) => {
70
+ if (config[field]?.required && !getContent(model[field])) {
71
+ errors[field] = 'This field is required.';
72
+ }
73
+ });
74
+
75
+ return errors;
76
+ };
@@ -128,7 +128,7 @@
128
128
  }
129
129
  },
130
130
  "teacherInstructions": {
131
- "title": "EditableHtmlPluginConfigure",
131
+ "title": "EditableHtmlPluginConfigureRequired",
132
132
  "type": "object",
133
133
  "properties": {
134
134
  "inputConfiguration": {
@@ -181,6 +181,11 @@
181
181
  }
182
182
  }
183
183
  },
184
+ "required": {
185
+ "description": "Indicates if the item is required and the value cannot be empty",
186
+ "type": "boolean",
187
+ "title": "required"
188
+ },
184
189
  "settings": {
185
190
  "description": "Indicates if the item has to be displayed in the Settings Panel",
186
191
  "type": "boolean",
@@ -194,7 +199,7 @@
194
199
  }
195
200
  },
196
201
  "prompt": {
197
- "title": "EditableHtmlPluginConfigure",
202
+ "title": "EditableHtmlPluginConfigureRequired",
198
203
  "type": "object",
199
204
  "properties": {
200
205
  "inputConfiguration": {
@@ -247,6 +252,11 @@
247
252
  }
248
253
  }
249
254
  },
255
+ "required": {
256
+ "description": "Indicates if the item is required and the value cannot be empty",
257
+ "type": "boolean",
258
+ "title": "required"
259
+ },
250
260
  "settings": {
251
261
  "description": "Indicates if the item has to be displayed in the Settings Panel",
252
262
  "type": "boolean",
@@ -560,8 +570,8 @@
560
570
  }
561
571
  }
562
572
  },
563
- "EditableHtmlPluginConfigure": {
564
- "title": "EditableHtmlPluginConfigure",
573
+ "EditableHtmlPluginConfigureRequired": {
574
+ "title": "EditableHtmlPluginConfigureRequired",
565
575
  "type": "object",
566
576
  "properties": {
567
577
  "inputConfiguration": {
@@ -614,6 +624,11 @@
614
624
  }
615
625
  }
616
626
  },
627
+ "required": {
628
+ "description": "Indicates if the item is required and the value cannot be empty",
629
+ "type": "boolean",
630
+ "title": "required"
631
+ },
617
632
  "settings": {
618
633
  "description": "Indicates if the item has to be displayed in the Settings Panel",
619
634
  "type": "boolean",
@@ -135,6 +135,10 @@ Properties of the `image` object:
135
135
 
136
136
  Indicates if the plugin is disabled or not
137
137
 
138
+ ## `required` (boolean)
139
+
140
+ Indicates if the item is required and the value cannot be empty
141
+
138
142
  ## `settings` (boolean)
139
143
 
140
144
  Indicates if the item has to be displayed in the Settings Panel
@@ -183,6 +187,10 @@ Properties of the `image` object:
183
187
 
184
188
  Indicates if the plugin is disabled or not
185
189
 
190
+ ## `required` (boolean)
191
+
192
+ Indicates if the item is required and the value cannot be empty
193
+
186
194
  ## `settings` (boolean)
187
195
 
188
196
  Indicates if the item has to be displayed in the Settings Panel
@@ -425,9 +433,9 @@ Indicates if the item has to be displayed in the Settings Panel
425
433
 
426
434
  Indicates the label for the item that has to be displayed in the Settings Panel
427
435
 
428
- ## `EditableHtmlPluginConfigure` (object)
436
+ ## `EditableHtmlPluginConfigureRequired` (object)
429
437
 
430
- Properties of the `EditableHtmlPluginConfigure` object:
438
+ Properties of the `EditableHtmlPluginConfigureRequired` object:
431
439
 
432
440
  ### `inputConfiguration` (object)
433
441
 
@@ -465,6 +473,10 @@ Properties of the `image` object:
465
473
 
466
474
  Indicates if the plugin is disabled or not
467
475
 
476
+ ### `required` (boolean)
477
+
478
+ Indicates if the item is required and the value cannot be empty
479
+
468
480
  ### `settings` (boolean)
469
481
 
470
482
  Indicates if the item has to be displayed in the Settings Panel
@@ -213,8 +213,8 @@
213
213
  }
214
214
  }
215
215
  },
216
- "EditableHtmlPluginConfigure": {
217
- "title": "EditableHtmlPluginConfigure",
216
+ "EditableHtmlPluginConfigureRequired": {
217
+ "title": "EditableHtmlPluginConfigureRequired",
218
218
  "type": "object",
219
219
  "properties": {
220
220
  "inputConfiguration": {
@@ -267,6 +267,11 @@
267
267
  }
268
268
  }
269
269
  },
270
+ "required": {
271
+ "description": "Indicates if the item is required and the value cannot be empty",
272
+ "type": "boolean",
273
+ "title": "required"
274
+ },
270
275
  "settings": {
271
276
  "description": "Indicates if the item has to be displayed in the Settings Panel",
272
277
  "type": "boolean",
@@ -161,9 +161,9 @@ Indicates if the item has to be displayed in the Settings Panel
161
161
 
162
162
  Indicates the label for the item that has to be displayed in the Settings Panel
163
163
 
164
- ## `EditableHtmlPluginConfigure` (object)
164
+ ## `EditableHtmlPluginConfigureRequired` (object)
165
165
 
166
- Properties of the `EditableHtmlPluginConfigure` object:
166
+ Properties of the `EditableHtmlPluginConfigureRequired` object:
167
167
 
168
168
  ### `inputConfiguration` (object)
169
169
 
@@ -201,6 +201,10 @@ Properties of the `image` object:
201
201
 
202
202
  Indicates if the plugin is disabled or not
203
203
 
204
+ ### `required` (boolean)
205
+
206
+ Indicates if the item is required and the value cannot be empty
207
+
204
208
  ### `settings` (boolean)
205
209
 
206
210
  Indicates if the item has to be displayed in the Settings Panel
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pie-element/drawing-response",
3
- "version": "7.8.1-next.2+c90543115",
3
+ "version": "7.8.1-next.33+8fc82ab19",
4
4
  "description": "",
5
5
  "repository": "pie-framework/pie-elements",
6
6
  "publishConfig": {
@@ -11,7 +11,7 @@
11
11
  "@mdi/js": "^3.6.95",
12
12
  "@mdi/react": "^1.1.1",
13
13
  "@pie-framework/pie-player-events": "^0.1.0",
14
- "@pie-lib/pie-toolbox": "1.12.1",
14
+ "@pie-lib/pie-toolbox": "1.12.2",
15
15
  "classnames": "^2.2.6",
16
16
  "enzyme-to-json": "^3.3.5",
17
17
  "konva": "^3.4.1",
@@ -23,7 +23,7 @@
23
23
  },
24
24
  "author": "pie framework developers",
25
25
  "license": "ISC",
26
- "gitHead": "c90543115d39f285d97ea39308d32ca27d4e1489",
26
+ "gitHead": "8fc82ab19baf45aecb40e4b364a7c307a9840130",
27
27
  "scripts": {
28
28
  "postpublish": "../../scripts/postpublish"
29
29
  },