@pie-element/drawing-response 11.0.0-next.42 → 11.1.0-next.0
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/defaults.js +3 -0
- package/configure/lib/defaults.js.map +1 -1
- package/configure/lib/root.js +2 -2
- package/configure/lib/root.js.map +1 -1
- package/configure/package.json +6 -6
- package/configure/src/defaults.js +1 -0
- package/configure/src/root.jsx +1 -1
- package/controller/package.json +1 -1
- package/lib/drawing-response/drawable-main.js +5 -7
- package/lib/drawing-response/drawable-main.js.map +1 -1
- package/lib/index.js +2 -2
- package/lib/index.js.map +1 -1
- package/package.json +12 -9
- package/src/drawing-response/__tests__/drawing-main.test.jsx +1 -1
- package/src/drawing-response/drawable-main.jsx +1 -3
- package/src/index.js +1 -1
- package/module/configure.js +0 -1
- package/module/controller.js +0 -77
- package/module/demo.js +0 -39
- package/module/element.js +0 -1
- package/module/index.html +0 -21
- package/module/manifest.json +0 -14
- package/module/print-demo.js +0 -77
- package/module/print.html +0 -18
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaults.js","names":["model","backgroundImageEnabled","imageDimensions","height","width","imageUrl","prompt","promptEnabled","spellCheckEnabled","studentInstructionsEnabled","teacherInstructions","teacherInstructionsEnabled","toolbarEditorPosition","configuration","baseInputConfiguration","
|
|
1
|
+
{"version":3,"file":"defaults.js","names":["model","backgroundImageEnabled","imageDimensions","height","width","imageUrl","prompt","promptEnabled","spellCheckEnabled","studentInstructionsEnabled","teacherInstructions","teacherInstructionsEnabled","toolbarEditorPosition","configuration","baseInputConfiguration","h3","disabled","audio","video","image","textAlign","showParagraphs","separateParagraphs","spellCheck","label","settings","enabled","backgroundImage","inputConfiguration","required","settingsPanelDisabled","maxImageWidth","maxImageHeight","withRubric","mathMlOptions","mmlOutput","mmlEditing","language","languageChoices","options"],"sources":["../src/defaults.js"],"sourcesContent":["export default {\n model: {\n backgroundImageEnabled: true,\n imageDimensions: { height: 0, width: 0 },\n imageUrl: '',\n prompt: '',\n promptEnabled: true,\n spellCheckEnabled: true,\n studentInstructionsEnabled: true,\n teacherInstructions: '',\n teacherInstructionsEnabled: true,\n toolbarEditorPosition: 'bottom',\n },\n configuration: {\n baseInputConfiguration: {\n h3: { disabled: true },\n audio: { disabled: false },\n video: { disabled: false },\n image: { disabled: false },\n textAlign: { disabled: true },\n showParagraphs: { disabled: false },\n separateParagraphs: { disabled: true },\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"],"mappings":";;;;;;iCAAe;EACbA,KAAK,EAAE;IACLC,sBAAsB,EAAE,IAAI;IAC5BC,eAAe,EAAE;MAAEC,MAAM,EAAE,CAAC;MAAEC,KAAK,EAAE;IAAE,CAAC;IACxCC,QAAQ,EAAE,EAAE;IACZC,MAAM,EAAE,EAAE;IACVC,aAAa,EAAE,IAAI;IACnBC,iBAAiB,EAAE,IAAI;IACvBC,0BAA0B,EAAE,IAAI;IAChCC,mBAAmB,EAAE,EAAE;IACvBC,0BAA0B,EAAE,IAAI;IAChCC,qBAAqB,EAAE;EACzB,CAAC;EACDC,aAAa,EAAE;IACbC,sBAAsB,EAAE;MACtBC,EAAE,EAAE;QAAEC,QAAQ,EAAE;MAAK,CAAC;MACtBC,KAAK,EAAE;QAAED,QAAQ,EAAE;MAAM,CAAC;MAC1BE,KAAK,EAAE;QAAEF,QAAQ,EAAE;MAAM,CAAC;MAC1BG,KAAK,EAAE;QAAEH,QAAQ,EAAE;MAAM,CAAC;MAC1BI,SAAS,EAAE;QAAEJ,QAAQ,EAAE;MAAK,CAAC;MAC7BK,cAAc,EAAE;QAAEL,QAAQ,EAAE;MAAM,CAAC;MACnCM,kBAAkB,EAAE;QAAEN,QAAQ,EAAE;MAAK;IACvC,CAAC;IACDO,UAAU,EAAE;MACVC,KAAK,EAAE,YAAY;MACnBC,QAAQ,EAAE,KAAK;MACfC,OAAO,EAAE;IACX,CAAC;IACDC,eAAe,EAAE;MACfF,QAAQ,EAAE,IAAI;MACdD,KAAK,EAAE;IACT,CAAC;IACDlB,MAAM,EAAE;MACNmB,QAAQ,EAAE,IAAI;MACdD,KAAK,EAAE,QAAQ;MACfI,kBAAkB,EAAE;QAClBX,KAAK,EAAE;UAAED,QAAQ,EAAE;QAAM,CAAC;QAC1BE,KAAK,EAAE;UAAEF,QAAQ,EAAE;QAAM,CAAC;QAC1BG,KAAK,EAAE;UAAEH,QAAQ,EAAE;QAAM;MAC3B,CAAC;MACDa,QAAQ,EAAE;IACZ,CAAC;IACDC,qBAAqB,EAAE,KAAK;IAC5BpB,mBAAmB,EAAE;MACnBe,QAAQ,EAAE,IAAI;MACdD,KAAK,EAAE,sBAAsB;MAC7BI,kBAAkB,EAAE;QAClBX,KAAK,EAAE;UAAED,QAAQ,EAAE;QAAM,CAAC;QAC1BE,KAAK,EAAE;UAAEF,QAAQ,EAAE;QAAM,CAAC;QAC1BG,KAAK,EAAE;UAAEH,QAAQ,EAAE;QAAM;MAC3B,CAAC;MACDa,QAAQ,EAAE;IACZ,CAAC;IACDE,aAAa,EAAE;MACbrB,mBAAmB,EAAE,GAAG;MACxBJ,MAAM,EAAE;IACV,CAAC;IACD0B,cAAc,EAAE;MACdtB,mBAAmB,EAAE,GAAG;MACxBJ,MAAM,EAAE;IACV,CAAC;IACD2B,UAAU,EAAE;MACVR,QAAQ,EAAE,KAAK;MACfD,KAAK,EAAE;IACT,CAAC;IACDU,aAAa,EAAE;MACbC,SAAS,EAAE,KAAK;MAChBC,UAAU,EAAE;IACd,CAAC;IACDC,QAAQ,EAAE;MACRZ,QAAQ,EAAE,KAAK;MACfD,KAAK,EAAE,kBAAkB;MACzBE,OAAO,EAAE;IACX,CAAC;IACDY,eAAe,EAAE;MACfd,KAAK,EAAE,kBAAkB;MACzBe,OAAO,EAAE;IACX;EACF;AACF,CAAC","ignoreList":[]}
|
package/configure/lib/root.js
CHANGED
|
@@ -13,7 +13,7 @@ var _editableHtmlTipTap = _interopRequireDefault(require("@pie-lib/editable-html
|
|
|
13
13
|
var _Typography = _interopRequireDefault(require("@mui/material/Typography"));
|
|
14
14
|
var _styles = require("@mui/material/styles");
|
|
15
15
|
var _imageContainer = _interopRequireDefault(require("./image-container"));
|
|
16
|
-
var
|
|
16
|
+
var _lodashEs = require("lodash-es");
|
|
17
17
|
const {
|
|
18
18
|
Panel,
|
|
19
19
|
toggle,
|
|
@@ -42,7 +42,7 @@ class Root extends _react.default.Component {
|
|
|
42
42
|
model,
|
|
43
43
|
onModelChanged
|
|
44
44
|
} = this.props;
|
|
45
|
-
const update = (0,
|
|
45
|
+
const update = (0, _lodashEs.cloneDeep)(model);
|
|
46
46
|
onModelChanged({
|
|
47
47
|
...update,
|
|
48
48
|
prompt
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"root.js","names":["_react","_interopRequireDefault","require","_configUi","_propTypes","_editableHtmlTipTap","_Typography","_styles","_imageContainer","_cloneDeep","Panel","toggle","dropdown","settings","PromptHolder","styled","InputContainer","theme","paddingTop","spacing","marginTop","marginBottom","width","ErrorText","fontSize","typography","color","palette","error","main","Root","React","Component","constructor","args","_defineProperty2","default","prompt","model","onModelChanged","props","update","cloneDeep","teacherInstructions","dimensions","imageDimensions","imageUrl","render","configuration","imageSupport","onConfigurationChanged","uploadSoundSupport","baseInputConfiguration","backgroundImage","contentDimensions","maxImageWidth","maxImageHeight","settingsPanelDisabled","spellCheck","withRubric","language","languageChoices","mathMlOptions","backgroundImageEnabled","errors","extraCSSRules","promptEnabled","spellCheckEnabled","teacherInstructionsEnabled","toolbarEditorPosition","promptError","teacherInstructionsError","defaultImageMaxWidth","defaultImageMaxHeight","toolbarOpts","position","panelSettings","label","enabled","options","panelProperties","rubricEnabled","getPluginProps","createElement","layout","ConfigLayout","hideSettings","onChangeModel","onChangeConfiguration","groups","Settings","Properties","markup","onChange","onTeacherInstructionsChanged","nonEmpty","pluginProps","inputConfiguration","languageCharactersProps","onPromptChanged","Fragment","variant","onUpdateImageDimension","onImageUpload","insertImage","add","exports","propTypes","PropTypes","object","isRequired","shape","func","delete","_default"],"sources":["../src/root.jsx"],"sourcesContent":["import React from 'react';\nimport { settings, layout, InputContainer } from '@pie-lib/config-ui';\nimport PropTypes from 'prop-types';\nimport EditableHtml from '@pie-lib/editable-html-tip-tap';\nimport Typography from '@mui/material/Typography';\nimport { styled } from '@mui/material/styles';\n\nimport ImageContainer from './image-container';\nimport cloneDeep from 'lodash/cloneDeep';\n\nconst { Panel, toggle, dropdown } = settings;\n\nconst PromptHolder = styled(InputContainer)(({ theme }) => ({\n paddingTop: theme.spacing(1),\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(1),\n width: '100%',\n}));\n\nconst ErrorText = styled('div')(({ theme }) => ({\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingTop: theme.spacing(1),\n}));\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 { 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 extraCSSRules,\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 extraCSSRules={extraCSSRules}\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 <PromptHolder label={teacherInstructions.label}>\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 && <ErrorText>{teacherInstructionsError}</ErrorText>}\n </PromptHolder>\n )}\n\n {promptEnabled && (\n <PromptHolder label=\"Item Stem\">\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 && <ErrorText>{promptError}</ErrorText>}\n </PromptHolder>\n )}\n\n {backgroundImageEnabled && (\n <React.Fragment>\n <Typography variant=\"h6\">Define Background Image</Typography>\n\n <ImageContainer\n imageUrl={model.imageUrl}\n onUpdateImageDimension={this.onUpdateImageDimension}\n onImageUpload={this.onImageUpload}\n imageDimensions={model.imageDimensions}\n insertImage={imageSupport && imageSupport.add}\n />\n </React.Fragment>\n )}\n </layout.ConfigLayout>\n );\n }\n}\n\nRoot.propTypes = {\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 Root;\n"],"mappings":";;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,SAAA,GAAAD,OAAA;AACA,IAAAE,UAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,mBAAA,GAAAJ,sBAAA,CAAAC,OAAA;AACA,IAAAI,WAAA,GAAAL,sBAAA,CAAAC,OAAA;AACA,IAAAK,OAAA,GAAAL,OAAA;AAEA,IAAAM,eAAA,GAAAP,sBAAA,CAAAC,OAAA;AACA,IAAAO,UAAA,GAAAR,sBAAA,CAAAC,OAAA;AAEA,MAAM;EAAEQ,KAAK;EAAEC,MAAM;EAAEC;AAAS,CAAC,GAAGC,kBAAQ;AAE5C,MAAMC,YAAY,GAAG,IAAAC,cAAM,EAACC,wBAAc,CAAC,CAAC,CAAC;EAAEC;AAAM,CAAC,MAAM;EAC1DC,UAAU,EAAED,KAAK,CAACE,OAAO,CAAC,CAAC,CAAC;EAC5BC,SAAS,EAAEH,KAAK,CAACE,OAAO,CAAC,CAAC,CAAC;EAC3BE,YAAY,EAAEJ,KAAK,CAACE,OAAO,CAAC,CAAC,CAAC;EAC9BG,KAAK,EAAE;AACT,CAAC,CAAC,CAAC;AAEH,MAAMC,SAAS,GAAG,IAAAR,cAAM,EAAC,KAAK,CAAC,CAAC,CAAC;EAAEE;AAAM,CAAC,MAAM;EAC9CO,QAAQ,EAAEP,KAAK,CAACQ,UAAU,CAACD,QAAQ,GAAG,CAAC;EACvCE,KAAK,EAAET,KAAK,CAACU,OAAO,CAACC,KAAK,CAACC,IAAI;EAC/BX,UAAU,EAAED,KAAK,CAACE,OAAO,CAAC,CAAC;AAC7B,CAAC,CAAC,CAAC;AAEI,MAAMW,IAAI,SAASC,cAAK,CAACC,SAAS,CAAC;EAAAC,YAAA,GAAAC,IAAA;IAAA,SAAAA,IAAA;IAAA,IAAAC,gBAAA,CAAAC,OAAA,2BACrBC,MAAM,IAAK;MAC5B,MAAM;QAAEC,KAAK;QAAEC;MAAe,CAAC,GAAG,IAAI,CAACC,KAAK;MAC5C,MAAMC,MAAM,GAAG,IAAAC,kBAAS,EAACJ,KAAK,CAAC;MAE/BC,cAAc,CAAC;QAAE,GAAGE,MAAM;QAAEJ;MAAO,CAAC,CAAC;IACvC,CAAC;IAAA,IAAAF,gBAAA,CAAAC,OAAA,wCAE+BO,mBAAmB,IAAK;MACtD,MAAM;QAAEL,KAAK;QAAEC;MAAe,CAAC,GAAG,IAAI,CAACC,KAAK;MAE5CD,cAAc,CAAC;QAAE,GAAGD,KAAK;QAAEK;MAAoB,CAAC,CAAC;IACnD,CAAC;IAAA,IAAAR,gBAAA,CAAAC,OAAA,kCAEyBQ,UAAU,IAAK;MACvC,MAAM;QAAEN,KAAK;QAAEC;MAAe,CAAC,GAAG,IAAI,CAACC,KAAK;MAE5CD,cAAc,CAAC;QAAE,GAAGD,KAAK;QAAEO,eAAe,EAAED;MAAW,CAAC,CAAC;IAC3D,CAAC;IAAA,IAAAT,gBAAA,CAAAC,OAAA,yBAEgBU,QAAQ,IAAK;MAC5B,MAAM;QAAER,KAAK;QAAEC;MAAe,CAAC,GAAG,IAAI,CAACC,KAAK;MAE5CD,cAAc,CAAC;QAAE,GAAGD,KAAK;QAAEQ;MAAS,CAAC,CAAC;IACxC,CAAC;EAAA;EAEDC,MAAMA,CAAA,EAAG;IACP,MAAM;MAAEC,aAAa;MAAEC,YAAY;MAAEX,KAAK;MAAEY,sBAAsB;MAAEX,cAAc;MAAEY;IAAmB,CAAC,GACtG,IAAI,CAACX,KAAK;IACZ,MAAM;MACJY,sBAAsB,GAAG,CAAC,CAAC;MAC3BC,eAAe,GAAG,CAAC,CAAC;MACpBC,iBAAiB,GAAG,CAAC,CAAC;MACtBC,aAAa,GAAG,CAAC,CAAC;MAClBC,cAAc,GAAG,CAAC,CAAC;MACnBnB,MAAM,GAAG,CAAC,CAAC;MACXoB,qBAAqB;MACrBC,UAAU,GAAG,CAAC,CAAC;MACff,mBAAmB,GAAG,CAAC,CAAC;MACxBgB,UAAU,GAAG,CAAC,CAAC;MACfC,QAAQ,GAAG,CAAC,CAAC;MACbC,eAAe,GAAG,CAAC,CAAC;MACpBC,aAAa,GAAG,CAAC;IACnB,CAAC,GAAGd,aAAa,IAAI,CAAC,CAAC;IACvB,MAAM;MACJe,sBAAsB;MACtBC,MAAM,GAAG,CAAC,CAAC;MACXC,aAAa;MACbC,aAAa;MACbC,iBAAiB;MACjBC,0BAA0B;MAC1BC;IACF,CAAC,GAAG/B,KAAK,IAAI,CAAC,CAAC;IACf,MAAM;MAAED,MAAM,EAAEiC,WAAW;MAAE3B,mBAAmB,EAAE4B;IAAyB,CAAC,GAAGP,MAAM;IAErF,MAAMQ,oBAAoB,GAAGjB,aAAa,IAAIA,aAAa,CAAClB,MAAM;IAClE,MAAMoC,qBAAqB,GAAGjB,cAAc,IAAIA,cAAc,CAACnB,MAAM;IAErE,MAAMqC,WAAW,GAAG;MAClBC,QAAQ,EAAEN,qBAAqB,KAAK,KAAK,GAAG,KAAK,GAAG;IACtD,CAAC;IAED,MAAMO,aAAa,GAAG;MACpBb,sBAAsB,EAAEV,eAAe,CAACxC,QAAQ,IAAIF,MAAM,CAAC0C,eAAe,CAACwB,KAAK,CAAC;MACjFX,aAAa,EAAE7B,MAAM,CAACxB,QAAQ,IAAIF,MAAM,CAAC0B,MAAM,CAACwC,KAAK,CAAC;MACtD,kBAAkB,EAAEjB,QAAQ,CAAC/C,QAAQ,IAAIF,MAAM,CAACiD,QAAQ,CAACiB,KAAK,EAAE,IAAI,CAAC;MACrEjB,QAAQ,EAAEA,QAAQ,CAAC/C,QAAQ,IAAI+C,QAAQ,CAACkB,OAAO,IAAIlE,QAAQ,CAACiD,eAAe,CAACgB,KAAK,EAAEhB,eAAe,CAACkB,OAAO;IAC5G,CAAC;IAED,MAAMC,eAAe,GAAG;MACtBZ,0BAA0B,EAAEzB,mBAAmB,CAAC9B,QAAQ,IAAIF,MAAM,CAACgC,mBAAmB,CAACkC,KAAK,CAAC;MAC7FV,iBAAiB,EAAET,UAAU,CAAC7C,QAAQ,IAAIF,MAAM,CAAC+C,UAAU,CAACmB,KAAK,CAAC;MAClEI,aAAa,EAAEtB,UAAU,EAAE9C,QAAQ,IAAIF,MAAM,CAACgD,UAAU,EAAEkB,KAAK;IACjE,CAAC;IAED,MAAMK,cAAc,GAAGA,CAAC1C,KAAK,GAAG,CAAC,CAAC,MAAM;MACtC,GAAGY,sBAAsB;MACzB,GAAGZ;IACL,CAAC,CAAC;IAEF,oBACExC,MAAA,CAAAoC,OAAA,CAAA+C,aAAA,CAAChF,SAAA,CAAAiF,MAAM,CAACC,YAAY;MAClBpB,aAAa,EAAEA,aAAc;MAC7BrB,UAAU,EAAEU,iBAAkB;MAC9BgC,YAAY,EAAE7B,qBAAsB;MACpC5C,QAAQ,eACNb,MAAA,CAAAoC,OAAA,CAAA+C,aAAA,CAACzE,KAAK;QACJ4B,KAAK,EAAEA,KAAM;QACbiD,aAAa,EAAEhD,cAAe;QAC9BS,aAAa,EAAEA,aAAc;QAC7BwC,qBAAqB,EAAEtC,sBAAuB;QAC9CuC,MAAM,EAAE;UACNC,QAAQ,EAAEd,aAAa;UACvBe,UAAU,EAAEX;QACd;MAAE,CACH;IACF,GAEAZ,0BAA0B,iBACzBpE,MAAA,CAAAoC,OAAA,CAAA+C,aAAA,CAACrE,YAAY;MAAC+D,KAAK,EAAElC,mBAAmB,CAACkC;IAAM,gBAC7C7E,MAAA,CAAAoC,OAAA,CAAA+C,aAAA,CAAC9E,mBAAA,CAAA+B,OAAY;MACXwD,MAAM,EAAEtD,KAAK,CAACK,mBAAmB,IAAI,EAAG;MACxCkD,QAAQ,EAAE,IAAI,CAACC,4BAA6B;MAC5C7C,YAAY,EAAEA,YAAa;MAC3B8C,QAAQ,EAAE,KAAM;MAChBnE,KAAK,EAAE2C,wBAAyB;MAChCG,WAAW,EAAEA,WAAY;MACzBsB,WAAW,EAAEd,cAAc,CAACvC,mBAAmB,EAAEsD,kBAAkB,CAAE;MACrEvC,UAAU,EAAES,iBAAkB;MAC9BZ,aAAa,EAAGA,aAAa,IAAIA,aAAa,CAACZ,mBAAmB,IAAK6B,oBAAqB;MAC5FhB,cAAc,EAAGA,cAAc,IAAIA,cAAc,CAACb,mBAAmB,IAAK8B,qBAAsB;MAChGtB,kBAAkB,EAAEA,kBAAmB;MACvC+C,uBAAuB,EAAE,CAAC;QAAEtC,QAAQ,EAAE;MAAU,CAAC,EAAE;QAAEA,QAAQ,EAAE;MAAU,CAAC,CAAE;MAC5EE,aAAa,EAAEA;IAAc,CAC9B,CAAC,EACDS,wBAAwB,iBAAIvE,MAAA,CAAAoC,OAAA,CAAA+C,aAAA,CAAC5D,SAAS,QAAEgD,wBAAoC,CACjE,CACf,EAEAL,aAAa,iBACZlE,MAAA,CAAAoC,OAAA,CAAA+C,aAAA,CAACrE,YAAY;MAAC+D,KAAK,EAAC;IAAW,gBAC7B7E,MAAA,CAAAoC,OAAA,CAAA+C,aAAA,CAAC9E,mBAAA,CAAA+B,OAAY;MACXwD,MAAM,EAAEtD,KAAK,CAACD,MAAO;MACrBwD,QAAQ,EAAE,IAAI,CAACM,eAAgB;MAC/BvE,KAAK,EAAE0C,WAAY;MACnBI,WAAW,EAAEA,WAAY;MACzBhB,UAAU,EAAES,iBAAkB;MAC9B6B,WAAW,EAAEd,cAAc,CAAC7C,MAAM,EAAE4D,kBAAkB,CAAE;MACxDhD,YAAY,EAAEA,YAAa;MAC3BM,aAAa,EAAEiB,oBAAqB;MACpChB,cAAc,EAAEiB,qBAAsB;MACtCtB,kBAAkB,EAAEA,kBAAmB;MACvC+C,uBAAuB,EAAE,CAAC;QAAEtC,QAAQ,EAAE;MAAU,CAAC,EAAE;QAAEA,QAAQ,EAAE;MAAU,CAAC,CAAE;MAC5EE,aAAa,EAAEA;IAAc,CAC9B,CAAC,EACDQ,WAAW,iBAAItE,MAAA,CAAAoC,OAAA,CAAA+C,aAAA,CAAC5D,SAAS,QAAE+C,WAAuB,CACvC,CACf,EAEAP,sBAAsB,iBACrB/D,MAAA,CAAAoC,OAAA,CAAA+C,aAAA,CAACnF,MAAA,CAAAoC,OAAK,CAACgE,QAAQ,qBACbpG,MAAA,CAAAoC,OAAA,CAAA+C,aAAA,CAAC7E,WAAA,CAAA8B,OAAU;MAACiE,OAAO,EAAC;IAAI,GAAC,yBAAmC,CAAC,eAE7DrG,MAAA,CAAAoC,OAAA,CAAA+C,aAAA,CAAC3E,eAAA,CAAA4B,OAAc;MACbU,QAAQ,EAAER,KAAK,CAACQ,QAAS;MACzBwD,sBAAsB,EAAE,IAAI,CAACA,sBAAuB;MACpDC,aAAa,EAAE,IAAI,CAACA,aAAc;MAClC1D,eAAe,EAAEP,KAAK,CAACO,eAAgB;MACvC2D,WAAW,EAAEvD,YAAY,IAAIA,YAAY,CAACwD;IAAI,CAC/C,CACa,CAEC,CAAC;EAE1B;AACF;AAACC,OAAA,CAAA5E,IAAA,GAAAA,IAAA;AAEDA,IAAI,CAAC6E,SAAS,GAAG;EACf3D,aAAa,EAAE4D,kBAAS,CAACC,MAAM;EAC/BvE,KAAK,EAAEsE,kBAAS,CAACC,MAAM,CAACC,UAAU;EAClC7D,YAAY,EAAE2D,kBAAS,CAACG,KAAK,CAAC;IAC5BN,GAAG,EAAEG,kBAAS,CAACI,IAAI;IACnBC,MAAM,EAAEL,kBAAS,CAACI;EACpB,CAAC,CAAC;EACF7D,kBAAkB,EAAEyD,kBAAS,CAACG,KAAK,CAAC;IAClCN,GAAG,EAAEG,kBAAS,CAACI,IAAI;IACnBC,MAAM,EAAEL,kBAAS,CAACI;EACpB,CAAC,CAAC;EACFzE,cAAc,EAAEqE,kBAAS,CAACI,IAAI,CAACF,UAAU;EACzC5D,sBAAsB,EAAE0D,kBAAS,CAACI,IAAI,CAACF;AACzC,CAAC;AAAC,IAAAI,QAAA,GAAAR,OAAA,CAAAtE,OAAA,GAEaN,IAAI","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"root.js","names":["_react","_interopRequireDefault","require","_configUi","_propTypes","_editableHtmlTipTap","_Typography","_styles","_imageContainer","_lodashEs","Panel","toggle","dropdown","settings","PromptHolder","styled","InputContainer","theme","paddingTop","spacing","marginTop","marginBottom","width","ErrorText","fontSize","typography","color","palette","error","main","Root","React","Component","constructor","args","_defineProperty2","default","prompt","model","onModelChanged","props","update","cloneDeep","teacherInstructions","dimensions","imageDimensions","imageUrl","render","configuration","imageSupport","onConfigurationChanged","uploadSoundSupport","baseInputConfiguration","backgroundImage","contentDimensions","maxImageWidth","maxImageHeight","settingsPanelDisabled","spellCheck","withRubric","language","languageChoices","mathMlOptions","backgroundImageEnabled","errors","extraCSSRules","promptEnabled","spellCheckEnabled","teacherInstructionsEnabled","toolbarEditorPosition","promptError","teacherInstructionsError","defaultImageMaxWidth","defaultImageMaxHeight","toolbarOpts","position","panelSettings","label","enabled","options","panelProperties","rubricEnabled","getPluginProps","createElement","layout","ConfigLayout","hideSettings","onChangeModel","onChangeConfiguration","groups","Settings","Properties","markup","onChange","onTeacherInstructionsChanged","nonEmpty","pluginProps","inputConfiguration","languageCharactersProps","onPromptChanged","Fragment","variant","onUpdateImageDimension","onImageUpload","insertImage","add","exports","propTypes","PropTypes","object","isRequired","shape","func","delete","_default"],"sources":["../src/root.jsx"],"sourcesContent":["import React from 'react';\nimport { settings, layout, InputContainer } from '@pie-lib/config-ui';\nimport PropTypes from 'prop-types';\nimport EditableHtml from '@pie-lib/editable-html-tip-tap';\nimport Typography from '@mui/material/Typography';\nimport { styled } from '@mui/material/styles';\n\nimport ImageContainer from './image-container';\nimport { cloneDeep } from 'lodash-es';\n\nconst { Panel, toggle, dropdown } = settings;\n\nconst PromptHolder = styled(InputContainer)(({ theme }) => ({\n paddingTop: theme.spacing(1),\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(1),\n width: '100%',\n}));\n\nconst ErrorText = styled('div')(({ theme }) => ({\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingTop: theme.spacing(1),\n}));\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 { 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 extraCSSRules,\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 extraCSSRules={extraCSSRules}\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 <PromptHolder label={teacherInstructions.label}>\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 && <ErrorText>{teacherInstructionsError}</ErrorText>}\n </PromptHolder>\n )}\n\n {promptEnabled && (\n <PromptHolder label=\"Item Stem\">\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 && <ErrorText>{promptError}</ErrorText>}\n </PromptHolder>\n )}\n\n {backgroundImageEnabled && (\n <React.Fragment>\n <Typography variant=\"h6\">Define Background Image</Typography>\n\n <ImageContainer\n imageUrl={model.imageUrl}\n onUpdateImageDimension={this.onUpdateImageDimension}\n onImageUpload={this.onImageUpload}\n imageDimensions={model.imageDimensions}\n insertImage={imageSupport && imageSupport.add}\n />\n </React.Fragment>\n )}\n </layout.ConfigLayout>\n );\n }\n}\n\nRoot.propTypes = {\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 Root;\n"],"mappings":"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","ignoreList":[]}
|
package/configure/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-element/drawing-response-configure",
|
|
3
3
|
"private": true,
|
|
4
|
-
"version": "10.
|
|
4
|
+
"version": "10.1.0-next.0",
|
|
5
5
|
"description": "",
|
|
6
6
|
"main": "lib/index.js",
|
|
7
7
|
"module": "src/index.js",
|
|
@@ -12,13 +12,13 @@
|
|
|
12
12
|
"@mui/icons-material": "^7.3.4",
|
|
13
13
|
"@mui/material": "^7.3.4",
|
|
14
14
|
"@pie-framework/pie-configure-events": "^1.3.0",
|
|
15
|
-
"@pie-lib/config-ui": "12.1.1-next.
|
|
16
|
-
"@pie-lib/editable-html-tip-tap": "1.1.1-next.
|
|
15
|
+
"@pie-lib/config-ui": "12.1.1-next.3",
|
|
16
|
+
"@pie-lib/editable-html-tip-tap": "1.1.1-next.3",
|
|
17
17
|
"debug": "^4.1.1",
|
|
18
|
-
"lodash": "^4.17.
|
|
18
|
+
"lodash-es": "^4.17.23",
|
|
19
19
|
"prop-types": "^15.7.2",
|
|
20
|
-
"react": "18.
|
|
21
|
-
"react-dom": "18.
|
|
20
|
+
"react": "18.3.1",
|
|
21
|
+
"react-dom": "18.3.1"
|
|
22
22
|
},
|
|
23
23
|
"license": "ISC"
|
|
24
24
|
}
|
package/configure/src/root.jsx
CHANGED
|
@@ -6,7 +6,7 @@ import Typography from '@mui/material/Typography';
|
|
|
6
6
|
import { styled } from '@mui/material/styles';
|
|
7
7
|
|
|
8
8
|
import ImageContainer from './image-container';
|
|
9
|
-
import cloneDeep from 'lodash
|
|
9
|
+
import { cloneDeep } from 'lodash-es';
|
|
10
10
|
|
|
11
11
|
const { Panel, toggle, dropdown } = settings;
|
|
12
12
|
|
package/controller/package.json
CHANGED
|
@@ -9,9 +9,7 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
|
|
|
9
9
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
10
10
|
var _react = _interopRequireDefault(require("react"));
|
|
11
11
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
12
|
-
var
|
|
13
|
-
var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
|
|
14
|
-
var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
|
|
12
|
+
var _lodashEs = require("lodash-es");
|
|
15
13
|
var _reactKonva = require("react-konva");
|
|
16
14
|
var _styles = require("@mui/material/styles");
|
|
17
15
|
var _translator = _interopRequireDefault(require("@pie-lib/translator"));
|
|
@@ -57,7 +55,7 @@ class DrawableMain extends _react.default.Component {
|
|
|
57
55
|
value: TextEntry[`textarea_${text.id}`] && TextEntry[`textarea_${text.id}`].value
|
|
58
56
|
}))
|
|
59
57
|
};
|
|
60
|
-
if (!(0,
|
|
58
|
+
if (!(0, _lodashEs.isEqual)(newSession, session)) {
|
|
61
59
|
onSessionChange({
|
|
62
60
|
...session,
|
|
63
61
|
...newSession
|
|
@@ -207,9 +205,9 @@ class DrawableMain extends _react.default.Component {
|
|
|
207
205
|
drawables: currentDrawables
|
|
208
206
|
} = this.state;
|
|
209
207
|
if (nextProps.session.drawables) {
|
|
210
|
-
const newDrawables = (0,
|
|
208
|
+
const newDrawables = (0, _lodashEs.cloneDeep)(nextProps.session.drawables);
|
|
211
209
|
const drawablesString = JSON.stringify(currentDrawables);
|
|
212
|
-
const sessionDrawableString = JSON.stringify((newDrawables || []).map(drawable => (0,
|
|
210
|
+
const sessionDrawableString = JSON.stringify((newDrawables || []).map(drawable => (0, _lodashEs.omit)(drawable, 'type')));
|
|
213
211
|
if (drawablesString !== sessionDrawableString) {
|
|
214
212
|
const drawableArray = nextProps.session.drawables;
|
|
215
213
|
this.setState({
|
|
@@ -221,7 +219,7 @@ class DrawableMain extends _react.default.Component {
|
|
|
221
219
|
...(TextEntry[`text_${text.id}`] && TextEntry[`text_${text.id}`].attrs),
|
|
222
220
|
value: TextEntry[`textarea_${text.id}`] && TextEntry[`textarea_${text.id}`].value
|
|
223
221
|
}));
|
|
224
|
-
if (!(0,
|
|
222
|
+
if (!(0, _lodashEs.isEqual)(currentTexts, nextProps.session.texts)) {
|
|
225
223
|
TextEntry.setAll(nextProps.session.texts || []);
|
|
226
224
|
}
|
|
227
225
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drawable-main.js","names":["_react","_interopRequireDefault","require","_propTypes","_omit","_cloneDeep","_isEqual","_reactKonva","_styles","_translator","_drawableImage","_button","_factory","translator","Translator","Wrapper","styled","display","flexWrap","justifyContent","Base","position","width","UndoControls","marginTop","marginRight","DrawableMain","React","Component","constructor","props","_defineProperty2","default","onSessionChange","session","TextEntry","drawableDimensions","drawables","state","newSession","map","d","toJson","texts","all","text","id","attrs","value","isEqual","setState","isOver","e","document","body","style","overflow","newDrawable","textIsSelected","toolActive","fillColor","outlineColor","scale","length","stage","target","getStage","x","y","getPointerPosition","factory","type","startx","starty","createdAt","Date","drawableToAdd","registerMovement","push","handleSessionChange","bind","updatedNewDrawable","newDrawables","allData","sort","a","b","lastElement","pop","updatedAt","layer","componentWillUnmount","UNSAFE_componentWillReceiveProps","nextProps","currentDrawables","cloneDeep","drawablesString","JSON","stringify","sessionDrawableString","drawable","omit","drawableArray","currentTexts","setAll","render","disabled","imageDimensions","imageUrl","paintColor","backgroundImageEnabled","language","draggable","paint","drawableProps","forceUpdate","toggleTextSelected","onMouseOverElement","onMouseOutElement","listeners","onMouseUp","handleMouseUp","onTouchEnd","onMouseMove","handleMouseMove","onTouchMove","onMouseDown","handleMouseDown","onTouchStart","imageHeight","height","imageWidth","createElement","onClick","handleUndo","label","t","lng","handleClearAll","dimensions","url","renderTextareas","left","top","touchAction","cursor","Stage","_extends2","key","scaleX","scaleY","ref","Layer","exports","propTypes","PropTypes","bool","object","isRequired","string","func","number","_default"],"sources":["../../src/drawing-response/drawable-main.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport omit from 'lodash/omit';\nimport cloneDeep from 'lodash/cloneDeep';\nimport isEqual from 'lodash/isEqual';\nimport { Layer, Stage } from 'react-konva';\nimport { styled } from '@mui/material/styles';\nimport Translator from '@pie-lib/translator';\n\nconst { translator } = Translator;\nimport ImageBackground from './drawable-image';\nimport Button from './button';\nimport factory from './factory';\n\nconst Wrapper = styled('div')({\n display: 'flex',\n flexWrap: 'wrap',\n justifyContent: 'flex-end',\n});\n\nconst Base = styled('div')({\n position: 'relative',\n width: '100%',\n});\n\nconst UndoControls = styled('div')({\n marginTop: -43,\n marginRight: 10,\n position: 'absolute',\n});\n\nexport class DrawableMain extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n drawables: [],\n newDrawable: [],\n textIsSelected: false,\n };\n this.stage = null;\n this.layer = null;\n }\n\n componentWillUnmount() {\n // Clean up refs to prevent React Konva errors\n this.stage = null;\n this.layer = null;\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (nextProps.session) {\n const { TextEntry } = nextProps;\n const { drawables: currentDrawables } = this.state;\n\n if (nextProps.session.drawables) {\n const newDrawables = cloneDeep(nextProps.session.drawables);\n const drawablesString = JSON.stringify(currentDrawables);\n const sessionDrawableString = JSON.stringify((newDrawables || []).map((drawable) => omit(drawable, 'type')));\n\n if (drawablesString !== sessionDrawableString) {\n const drawableArray = nextProps.session.drawables;\n\n this.setState({\n drawables: drawableArray.map((drawable) => factory(drawable.type, drawable)),\n });\n }\n\n const currentTexts = TextEntry.all.map((text) => ({\n ...text,\n ...(TextEntry[`text_${text.id}`] && TextEntry[`text_${text.id}`].attrs),\n value: TextEntry[`textarea_${text.id}`] && TextEntry[`textarea_${text.id}`].value,\n }));\n\n if (!isEqual(currentTexts, nextProps.session.texts)) {\n TextEntry.setAll(nextProps.session.texts || []);\n }\n }\n } else {\n this.handleSessionChange();\n }\n }\n\n handleSessionChange = () => {\n const { onSessionChange, session, TextEntry, drawableDimensions } = this.props;\n const { drawables } = this.state;\n\n const newSession = {\n width: drawableDimensions.width,\n drawables: drawables.map((d) => d.toJson()),\n texts: TextEntry.all.map((text) => ({\n ...text,\n ...(TextEntry[`text_${text.id}`] && TextEntry[`text_${text.id}`].attrs),\n value: TextEntry[`textarea_${text.id}`] && TextEntry[`textarea_${text.id}`].value,\n })),\n };\n\n if (!isEqual(newSession, session)) {\n onSessionChange({\n ...session,\n ...newSession,\n });\n }\n };\n\n onMouseOverElement = () => this.setState({ isOver: true });\n\n onMouseOutElement = () => this.setState({ isOver: false });\n\n handleMouseDown = (e) => {\n // ONLY IF MOBILE?\n document.body.style.overflow = 'hidden';\n\n const { newDrawable, textIsSelected } = this.state;\n const { toolActive, fillColor, outlineColor, scale } = this.props;\n\n if (newDrawable.length === 0 && !textIsSelected) {\n const stage = e.target.getStage();\n if (!stage) return;\n\n const { x, y } = stage.getPointerPosition();\n\n const newDrawable = factory(toolActive.type, {\n startx: x / scale,\n starty: y / scale,\n fillColor,\n outlineColor,\n createdAt: new Date(),\n });\n\n this.setState({\n newDrawable: [newDrawable],\n });\n }\n };\n\n handleMouseUp = (e) => {\n // ONLY IF MOBILE?\n document.body.style.overflow = 'initial';\n\n const { newDrawable, drawables } = this.state;\n const { scale } = this.props;\n\n if (newDrawable.length === 1) {\n const stage = e.target.getStage();\n if (!stage) return;\n\n const { x, y } = stage.getPointerPosition();\n const drawableToAdd = newDrawable[0];\n\n drawableToAdd.registerMovement(x / scale, y / scale);\n drawables.push(drawableToAdd);\n\n this.setState(\n {\n newDrawable: [],\n drawables,\n },\n this.handleSessionChange.bind(this, drawableToAdd),\n );\n }\n };\n\n handleMouseMove = (e) => {\n const { newDrawable } = this.state;\n const { scale } = this.props;\n\n if (newDrawable.length === 1) {\n const stage = e.target.getStage();\n if (!stage) return;\n\n const { x, y } = stage.getPointerPosition();\n const updatedNewDrawable = newDrawable[0];\n\n updatedNewDrawable.registerMovement(x / scale, y / scale);\n\n this.setState({\n newDrawable: [updatedNewDrawable],\n });\n }\n };\n\n handleUndo = () => {\n const { drawables } = this.state;\n const { TextEntry } = this.props;\n\n const newDrawables = [...drawables];\n const allData = [...drawables, ...TextEntry.all];\n\n allData.sort((a, b) => new Date(a.createdAt) - new Date(b.createdAt));\n const lastElement = allData[allData.length - 1];\n\n if (lastElement && lastElement.type === 'text-entry') {\n TextEntry.all.pop();\n this.setState({ updatedAt: new Date() }, this.handleSessionChange);\n } else {\n newDrawables.pop();\n this.setState({ drawables: newDrawables }, this.handleSessionChange);\n }\n };\n\n handleClearAll = () => {\n const { TextEntry } = this.props;\n\n TextEntry.all = [];\n this.setState({ drawables: [], updatedAt: new Date() }, this.handleSessionChange);\n };\n\n toggleTextSelected = (textIsSelected) => this.setState({ textIsSelected });\n\n render() {\n const {\n disabled,\n drawableDimensions,\n fillColor,\n imageDimensions,\n imageUrl,\n paintColor,\n outlineColor,\n TextEntry,\n backgroundImageEnabled = true,\n toolActive: { type },\n scale,\n language,\n } = this.props;\n const { isOver, newDrawable } = this.state;\n\n const draggable = type === 'Select';\n const paint = type === 'PaintBucket';\n const drawables = [...this.state.drawables, ...this.state.newDrawable];\n\n const drawableProps = {\n draggable: draggable && !disabled,\n disabled,\n paint,\n fillColor,\n forceUpdate: () => this.setState({ updatedAt: new Date() }),\n paintColor,\n outlineColor,\n toggleTextSelected: this.toggleTextSelected,\n handleSessionChange: this.handleSessionChange,\n stage: this.stage,\n onMouseOverElement: this.onMouseOverElement,\n onMouseOutElement: this.onMouseOutElement,\n scale,\n };\n\n let listeners = {};\n\n if (!disabled) {\n listeners = {\n onMouseUp: this.handleMouseUp,\n onTouchEnd: this.handleMouseUp,\n onMouseMove: this.handleMouseMove,\n onTouchMove: this.handleMouseMove,\n };\n\n if (!draggable) {\n listeners.onMouseDown = this.handleMouseDown;\n listeners.onTouchStart = this.handleMouseDown;\n }\n }\n\n const imageHeight = imageDimensions?.height * scale;\n const imageWidth = imageDimensions?.width * scale;\n\n return (\n <Wrapper>\n <UndoControls>\n <Button\n disabled={disabled}\n onClick={this.handleUndo}\n label={translator.t('common:undo', { lng: language })}\n />\n <Button\n disabled={disabled}\n onClick={this.handleClearAll}\n label={translator.t('common:clearAll', { lng: language })}\n />\n </UndoControls>\n <Base>\n {backgroundImageEnabled && imageUrl && (\n <ImageBackground dimensions={{ height: imageHeight, width: imageWidth }} url={imageUrl} />\n )}\n\n {TextEntry.renderTextareas()}\n\n {/* Wrap Stage in a styled div instead of styling Stage directly */}\n <div\n style={{\n position: 'absolute',\n left: 0,\n top: 0,\n touchAction: 'none',\n cursor: draggable && (isOver || newDrawable.length === 1) ? 'pointer' : 'default',\n }}\n >\n <Stage\n key=\"drawing-stage\"\n scaleX={scale}\n scaleY={scale}\n ref={(ref) => (this.stage = ref)}\n height={drawableDimensions.height}\n width={drawableDimensions.width}\n {...listeners}\n >\n <Layer ref={(ref) => (this.layer = ref)}>\n {drawables.map((drawable, key) => drawable.render({ ...drawableProps, key }))}\n {TextEntry.render(drawableProps)}\n </Layer>\n </Stage>\n </div>\n </Base>\n </Wrapper>\n );\n }\n}\n\nDrawableMain.propTypes = {\n disabled: PropTypes.bool,\n drawableDimensions: PropTypes.object.isRequired,\n imageDimensions: PropTypes.object.isRequired,\n fillColor: PropTypes.string.isRequired,\n onSessionChange: PropTypes.func.isRequired,\n paintColor: PropTypes.string.isRequired,\n outlineColor: PropTypes.string.isRequired,\n imageUrl: PropTypes.string.isRequired,\n TextEntry: PropTypes.object.isRequired,\n toolActive: PropTypes.object.isRequired,\n session: PropTypes.object.isRequired,\n backgroundImageEnabled: PropTypes.bool.isRequired,\n scale: PropTypes.number.isRequired,\n language: PropTypes.string,\n};\n\nexport default DrawableMain;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"drawable-main.js","names":["_react","_interopRequireDefault","require","_propTypes","_lodashEs","_reactKonva","_styles","_translator","_drawableImage","_button","_factory","translator","Translator","Wrapper","styled","display","flexWrap","justifyContent","Base","position","width","UndoControls","marginTop","marginRight","DrawableMain","React","Component","constructor","props","_defineProperty2","default","onSessionChange","session","TextEntry","drawableDimensions","drawables","state","newSession","map","d","toJson","texts","all","text","id","attrs","value","isEqual","setState","isOver","e","document","body","style","overflow","newDrawable","textIsSelected","toolActive","fillColor","outlineColor","scale","length","stage","target","getStage","x","y","getPointerPosition","factory","type","startx","starty","createdAt","Date","drawableToAdd","registerMovement","push","handleSessionChange","bind","updatedNewDrawable","newDrawables","allData","sort","a","b","lastElement","pop","updatedAt","layer","componentWillUnmount","UNSAFE_componentWillReceiveProps","nextProps","currentDrawables","cloneDeep","drawablesString","JSON","stringify","sessionDrawableString","drawable","omit","drawableArray","currentTexts","setAll","render","disabled","imageDimensions","imageUrl","paintColor","backgroundImageEnabled","language","draggable","paint","drawableProps","forceUpdate","toggleTextSelected","onMouseOverElement","onMouseOutElement","listeners","onMouseUp","handleMouseUp","onTouchEnd","onMouseMove","handleMouseMove","onTouchMove","onMouseDown","handleMouseDown","onTouchStart","imageHeight","height","imageWidth","createElement","onClick","handleUndo","label","t","lng","handleClearAll","dimensions","url","renderTextareas","left","top","touchAction","cursor","Stage","_extends2","key","scaleX","scaleY","ref","Layer","exports","propTypes","PropTypes","bool","object","isRequired","string","func","number","_default"],"sources":["../../src/drawing-response/drawable-main.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { cloneDeep, isEqual, omit } from 'lodash-es';\nimport { Layer, Stage } from 'react-konva';\nimport { styled } from '@mui/material/styles';\nimport Translator from '@pie-lib/translator';\n\nconst { translator } = Translator;\nimport ImageBackground from './drawable-image';\nimport Button from './button';\nimport factory from './factory';\n\nconst Wrapper = styled('div')({\n display: 'flex',\n flexWrap: 'wrap',\n justifyContent: 'flex-end',\n});\n\nconst Base = styled('div')({\n position: 'relative',\n width: '100%',\n});\n\nconst UndoControls = styled('div')({\n marginTop: -43,\n marginRight: 10,\n position: 'absolute',\n});\n\nexport class DrawableMain extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n drawables: [],\n newDrawable: [],\n textIsSelected: false,\n };\n this.stage = null;\n this.layer = null;\n }\n\n componentWillUnmount() {\n // Clean up refs to prevent React Konva errors\n this.stage = null;\n this.layer = null;\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (nextProps.session) {\n const { TextEntry } = nextProps;\n const { drawables: currentDrawables } = this.state;\n\n if (nextProps.session.drawables) {\n const newDrawables = cloneDeep(nextProps.session.drawables);\n const drawablesString = JSON.stringify(currentDrawables);\n const sessionDrawableString = JSON.stringify((newDrawables || []).map((drawable) => omit(drawable, 'type')));\n\n if (drawablesString !== sessionDrawableString) {\n const drawableArray = nextProps.session.drawables;\n\n this.setState({\n drawables: drawableArray.map((drawable) => factory(drawable.type, drawable)),\n });\n }\n\n const currentTexts = TextEntry.all.map((text) => ({\n ...text,\n ...(TextEntry[`text_${text.id}`] && TextEntry[`text_${text.id}`].attrs),\n value: TextEntry[`textarea_${text.id}`] && TextEntry[`textarea_${text.id}`].value,\n }));\n\n if (!isEqual(currentTexts, nextProps.session.texts)) {\n TextEntry.setAll(nextProps.session.texts || []);\n }\n }\n } else {\n this.handleSessionChange();\n }\n }\n\n handleSessionChange = () => {\n const { onSessionChange, session, TextEntry, drawableDimensions } = this.props;\n const { drawables } = this.state;\n\n const newSession = {\n width: drawableDimensions.width,\n drawables: drawables.map((d) => d.toJson()),\n texts: TextEntry.all.map((text) => ({\n ...text,\n ...(TextEntry[`text_${text.id}`] && TextEntry[`text_${text.id}`].attrs),\n value: TextEntry[`textarea_${text.id}`] && TextEntry[`textarea_${text.id}`].value,\n })),\n };\n\n if (!isEqual(newSession, session)) {\n onSessionChange({\n ...session,\n ...newSession,\n });\n }\n };\n\n onMouseOverElement = () => this.setState({ isOver: true });\n\n onMouseOutElement = () => this.setState({ isOver: false });\n\n handleMouseDown = (e) => {\n // ONLY IF MOBILE?\n document.body.style.overflow = 'hidden';\n\n const { newDrawable, textIsSelected } = this.state;\n const { toolActive, fillColor, outlineColor, scale } = this.props;\n\n if (newDrawable.length === 0 && !textIsSelected) {\n const stage = e.target.getStage();\n if (!stage) return;\n\n const { x, y } = stage.getPointerPosition();\n\n const newDrawable = factory(toolActive.type, {\n startx: x / scale,\n starty: y / scale,\n fillColor,\n outlineColor,\n createdAt: new Date(),\n });\n\n this.setState({\n newDrawable: [newDrawable],\n });\n }\n };\n\n handleMouseUp = (e) => {\n // ONLY IF MOBILE?\n document.body.style.overflow = 'initial';\n\n const { newDrawable, drawables } = this.state;\n const { scale } = this.props;\n\n if (newDrawable.length === 1) {\n const stage = e.target.getStage();\n if (!stage) return;\n\n const { x, y } = stage.getPointerPosition();\n const drawableToAdd = newDrawable[0];\n\n drawableToAdd.registerMovement(x / scale, y / scale);\n drawables.push(drawableToAdd);\n\n this.setState(\n {\n newDrawable: [],\n drawables,\n },\n this.handleSessionChange.bind(this, drawableToAdd),\n );\n }\n };\n\n handleMouseMove = (e) => {\n const { newDrawable } = this.state;\n const { scale } = this.props;\n\n if (newDrawable.length === 1) {\n const stage = e.target.getStage();\n if (!stage) return;\n\n const { x, y } = stage.getPointerPosition();\n const updatedNewDrawable = newDrawable[0];\n\n updatedNewDrawable.registerMovement(x / scale, y / scale);\n\n this.setState({\n newDrawable: [updatedNewDrawable],\n });\n }\n };\n\n handleUndo = () => {\n const { drawables } = this.state;\n const { TextEntry } = this.props;\n\n const newDrawables = [...drawables];\n const allData = [...drawables, ...TextEntry.all];\n\n allData.sort((a, b) => new Date(a.createdAt) - new Date(b.createdAt));\n const lastElement = allData[allData.length - 1];\n\n if (lastElement && lastElement.type === 'text-entry') {\n TextEntry.all.pop();\n this.setState({ updatedAt: new Date() }, this.handleSessionChange);\n } else {\n newDrawables.pop();\n this.setState({ drawables: newDrawables }, this.handleSessionChange);\n }\n };\n\n handleClearAll = () => {\n const { TextEntry } = this.props;\n\n TextEntry.all = [];\n this.setState({ drawables: [], updatedAt: new Date() }, this.handleSessionChange);\n };\n\n toggleTextSelected = (textIsSelected) => this.setState({ textIsSelected });\n\n render() {\n const {\n disabled,\n drawableDimensions,\n fillColor,\n imageDimensions,\n imageUrl,\n paintColor,\n outlineColor,\n TextEntry,\n backgroundImageEnabled = true,\n toolActive: { type },\n scale,\n language,\n } = this.props;\n const { isOver, newDrawable } = this.state;\n\n const draggable = type === 'Select';\n const paint = type === 'PaintBucket';\n const drawables = [...this.state.drawables, ...this.state.newDrawable];\n\n const drawableProps = {\n draggable: draggable && !disabled,\n disabled,\n paint,\n fillColor,\n forceUpdate: () => this.setState({ updatedAt: new Date() }),\n paintColor,\n outlineColor,\n toggleTextSelected: this.toggleTextSelected,\n handleSessionChange: this.handleSessionChange,\n stage: this.stage,\n onMouseOverElement: this.onMouseOverElement,\n onMouseOutElement: this.onMouseOutElement,\n scale,\n };\n\n let listeners = {};\n\n if (!disabled) {\n listeners = {\n onMouseUp: this.handleMouseUp,\n onTouchEnd: this.handleMouseUp,\n onMouseMove: this.handleMouseMove,\n onTouchMove: this.handleMouseMove,\n };\n\n if (!draggable) {\n listeners.onMouseDown = this.handleMouseDown;\n listeners.onTouchStart = this.handleMouseDown;\n }\n }\n\n const imageHeight = imageDimensions?.height * scale;\n const imageWidth = imageDimensions?.width * scale;\n\n return (\n <Wrapper>\n <UndoControls>\n <Button\n disabled={disabled}\n onClick={this.handleUndo}\n label={translator.t('common:undo', { lng: language })}\n />\n <Button\n disabled={disabled}\n onClick={this.handleClearAll}\n label={translator.t('common:clearAll', { lng: language })}\n />\n </UndoControls>\n <Base>\n {backgroundImageEnabled && imageUrl && (\n <ImageBackground dimensions={{ height: imageHeight, width: imageWidth }} url={imageUrl} />\n )}\n\n {TextEntry.renderTextareas()}\n\n {/* Wrap Stage in a styled div instead of styling Stage directly */}\n <div\n style={{\n position: 'absolute',\n left: 0,\n top: 0,\n touchAction: 'none',\n cursor: draggable && (isOver || newDrawable.length === 1) ? 'pointer' : 'default',\n }}\n >\n <Stage\n key=\"drawing-stage\"\n scaleX={scale}\n scaleY={scale}\n ref={(ref) => (this.stage = ref)}\n height={drawableDimensions.height}\n width={drawableDimensions.width}\n {...listeners}\n >\n <Layer ref={(ref) => (this.layer = ref)}>\n {drawables.map((drawable, key) => drawable.render({ ...drawableProps, key }))}\n {TextEntry.render(drawableProps)}\n </Layer>\n </Stage>\n </div>\n </Base>\n </Wrapper>\n );\n }\n}\n\nDrawableMain.propTypes = {\n disabled: PropTypes.bool,\n drawableDimensions: PropTypes.object.isRequired,\n imageDimensions: PropTypes.object.isRequired,\n fillColor: PropTypes.string.isRequired,\n onSessionChange: PropTypes.func.isRequired,\n paintColor: PropTypes.string.isRequired,\n outlineColor: PropTypes.string.isRequired,\n imageUrl: PropTypes.string.isRequired,\n TextEntry: PropTypes.object.isRequired,\n toolActive: PropTypes.object.isRequired,\n session: PropTypes.object.isRequired,\n backgroundImageEnabled: PropTypes.bool.isRequired,\n scale: PropTypes.number.isRequired,\n language: PropTypes.string,\n};\n\nexport default DrawableMain;\n"],"mappings":"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","ignoreList":[]}
|
package/lib/index.js
CHANGED
|
@@ -8,7 +8,7 @@ exports.default = void 0;
|
|
|
8
8
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
9
9
|
var _react = _interopRequireDefault(require("react"));
|
|
10
10
|
var _client = require("react-dom/client");
|
|
11
|
-
var
|
|
11
|
+
var _lodashEs = require("lodash-es");
|
|
12
12
|
var _mathRendering = require("@pie-lib/math-rendering");
|
|
13
13
|
var _piePlayerEvents = require("@pie-framework/pie-player-events");
|
|
14
14
|
var _drawingResponse = _interopRequireDefault(require("./drawing-response"));
|
|
@@ -30,7 +30,7 @@ class DrawingResponse extends HTMLElement {
|
|
|
30
30
|
this._render();
|
|
31
31
|
}
|
|
32
32
|
isComplete() {
|
|
33
|
-
return this._session && (!(0,
|
|
33
|
+
return this._session && (!(0, _lodashEs.isEmpty)(this._session.drawables) || !(0, _lodashEs.isEmpty)(this._session.texts));
|
|
34
34
|
}
|
|
35
35
|
set session(s) {
|
|
36
36
|
this._session = s;
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_react","_interopRequireDefault","require","_client","
|
|
1
|
+
{"version":3,"file":"index.js","names":["_react","_interopRequireDefault","require","_client","_lodashEs","_mathRendering","_piePlayerEvents","_drawingResponse","DrawingResponse","HTMLElement","constructor","_defineProperty2","default","update","_session","drawables","texts","width","dispatchEvent","SessionChangedEvent","tagName","toLowerCase","isComplete","_render","_root","model","m","_model","ModelSetEvent","isEmpty","session","s","connectedCallback","el","React","createElement","DrawingResponseComponent","onSessionChange","sessionChanged","createRoot","render","queueMicrotask","renderMath","disconnectedCallback","unmount","exports"],"sources":["../src/index.js"],"sourcesContent":["import React from 'react';\nimport { createRoot } from 'react-dom/client';\nimport { isEmpty } from 'lodash-es';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport { ModelSetEvent, SessionChangedEvent } from '@pie-framework/pie-player-events';\n\nimport DrawingResponseComponent from './drawing-response';\n\nexport default class DrawingResponse extends HTMLElement {\n constructor() {\n super();\n this._root = null;\n }\n\n set model(m) {\n this._model = m;\n\n this.dispatchEvent(new ModelSetEvent(this.tagName.toLowerCase(), this.isComplete(), !!this._model));\n this._render();\n }\n\n isComplete() {\n return this._session && (!isEmpty(this._session.drawables) || !isEmpty(this._session.texts));\n }\n\n sessionChanged = (update) => {\n this._session.drawables = update.drawables;\n this._session.texts = update.texts;\n this._session.width = update.width;\n\n this.dispatchEvent(new SessionChangedEvent(this.tagName.toLowerCase(), this.isComplete()));\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 connectedCallback() {\n this._render();\n }\n\n _render() {\n if (this._model && this._session) {\n const el = React.createElement(DrawingResponseComponent, {\n model: this._model,\n session: this._session,\n onSessionChange: this.sessionChanged,\n });\n\n if (!this._root) {\n this._root = createRoot(this);\n }\n this._root.render(el);\n queueMicrotask(() => {\n renderMath(this);\n });\n }\n }\n\n disconnectedCallback() {\n if (this._root) {\n this._root.unmount();\n }\n }\n}\n"],"mappings":";;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,SAAA,GAAAF,OAAA;AACA,IAAAG,cAAA,GAAAH,OAAA;AACA,IAAAI,gBAAA,GAAAJ,OAAA;AAEA,IAAAK,gBAAA,GAAAN,sBAAA,CAAAC,OAAA;AAEe,MAAMM,eAAe,SAASC,WAAW,CAAC;EACvDC,WAAWA,CAAA,EAAG;IACZ,KAAK,CAAC,CAAC;IAAC,IAAAC,gBAAA,CAAAC,OAAA,0BAeQC,MAAM,IAAK;MAC3B,IAAI,CAACC,QAAQ,CAACC,SAAS,GAAGF,MAAM,CAACE,SAAS;MAC1C,IAAI,CAACD,QAAQ,CAACE,KAAK,GAAGH,MAAM,CAACG,KAAK;MAClC,IAAI,CAACF,QAAQ,CAACG,KAAK,GAAGJ,MAAM,CAACI,KAAK;MAElC,IAAI,CAACC,aAAa,CAAC,IAAIC,oCAAmB,CAAC,IAAI,CAACC,OAAO,CAACC,WAAW,CAAC,CAAC,EAAE,IAAI,CAACC,UAAU,CAAC,CAAC,CAAC,CAAC;MAE1F,IAAI,CAACC,OAAO,CAAC,CAAC;IAChB,CAAC;IAtBC,IAAI,CAACC,KAAK,GAAG,IAAI;EACnB;EAEA,IAAIC,KAAKA,CAACC,CAAC,EAAE;IACX,IAAI,CAACC,MAAM,GAAGD,CAAC;IAEf,IAAI,CAACR,aAAa,CAAC,IAAIU,8BAAa,CAAC,IAAI,CAACR,OAAO,CAACC,WAAW,CAAC,CAAC,EAAE,IAAI,CAACC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAACK,MAAM,CAAC,CAAC;IACnG,IAAI,CAACJ,OAAO,CAAC,CAAC;EAChB;EAEAD,UAAUA,CAAA,EAAG;IACX,OAAO,IAAI,CAACR,QAAQ,KAAK,CAAC,IAAAe,iBAAO,EAAC,IAAI,CAACf,QAAQ,CAACC,SAAS,CAAC,IAAI,CAAC,IAAAc,iBAAO,EAAC,IAAI,CAACf,QAAQ,CAACE,KAAK,CAAC,CAAC;EAC9F;EAYA,IAAIc,OAAOA,CAACC,CAAC,EAAE;IACb,IAAI,CAACjB,QAAQ,GAAGiB,CAAC;IACjB,IAAI,CAACR,OAAO,CAAC,CAAC;EAChB;EAEA,IAAIO,OAAOA,CAAA,EAAG;IACZ,OAAO,IAAI,CAAChB,QAAQ;EACtB;EAEAkB,iBAAiBA,CAAA,EAAG;IAClB,IAAI,CAACT,OAAO,CAAC,CAAC;EAChB;EAEAA,OAAOA,CAAA,EAAG;IACR,IAAI,IAAI,CAACI,MAAM,IAAI,IAAI,CAACb,QAAQ,EAAE;MAChC,MAAMmB,EAAE,gBAAGC,cAAK,CAACC,aAAa,CAACC,wBAAwB,EAAE;QACvDX,KAAK,EAAE,IAAI,CAACE,MAAM;QAClBG,OAAO,EAAE,IAAI,CAAChB,QAAQ;QACtBuB,eAAe,EAAE,IAAI,CAACC;MACxB,CAAC,CAAC;MAEF,IAAI,CAAC,IAAI,CAACd,KAAK,EAAE;QACf,IAAI,CAACA,KAAK,GAAG,IAAAe,kBAAU,EAAC,IAAI,CAAC;MAC/B;MACA,IAAI,CAACf,KAAK,CAACgB,MAAM,CAACP,EAAE,CAAC;MACrBQ,cAAc,CAAC,MAAM;QACnB,IAAAC,yBAAU,EAAC,IAAI,CAAC;MAClB,CAAC,CAAC;IACJ;EACF;EAEAC,oBAAoBA,CAAA,EAAG;IACrB,IAAI,IAAI,CAACnB,KAAK,EAAE;MACd,IAAI,CAACA,KAAK,CAACoB,OAAO,CAAC,CAAC;IACtB;EACF;AACF;AAACC,OAAA,CAAAjC,OAAA,GAAAJ,eAAA","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-element/drawing-response",
|
|
3
|
-
"
|
|
3
|
+
"repository": {
|
|
4
|
+
"type": "git",
|
|
5
|
+
"url": "https://github.com/pie-framework/pie-elements"
|
|
6
|
+
},
|
|
7
|
+
"version": "11.1.0-next.0+20d879b",
|
|
4
8
|
"description": "",
|
|
5
|
-
"repository": "pie-framework/pie-elements",
|
|
6
9
|
"publishConfig": {
|
|
7
10
|
"access": "public"
|
|
8
11
|
},
|
|
@@ -14,19 +17,19 @@
|
|
|
14
17
|
"@mui/icons-material": "^7.3.4",
|
|
15
18
|
"@mui/material": "^7.3.4",
|
|
16
19
|
"@pie-framework/pie-player-events": "^0.1.0",
|
|
17
|
-
"@pie-lib/math-rendering": "4.1.1-next.
|
|
18
|
-
"@pie-lib/render-ui": "5.1.1-next.
|
|
19
|
-
"@pie-lib/translator": "3.1.1-next.
|
|
20
|
+
"@pie-lib/math-rendering": "4.1.1-next.1",
|
|
21
|
+
"@pie-lib/render-ui": "5.1.1-next.1",
|
|
22
|
+
"@pie-lib/translator": "3.1.1-next.1",
|
|
20
23
|
"konva": "8.3.0",
|
|
21
|
-
"lodash": "^4.17.
|
|
24
|
+
"lodash-es": "^4.17.23",
|
|
22
25
|
"prop-types": "^15.6.1",
|
|
23
|
-
"react": "18.
|
|
24
|
-
"react-dom": "18.
|
|
26
|
+
"react": "18.3.1",
|
|
27
|
+
"react-dom": "18.3.1",
|
|
25
28
|
"react-konva": "^18.2.14"
|
|
26
29
|
},
|
|
27
30
|
"author": "pie framework developers",
|
|
28
31
|
"license": "ISC",
|
|
29
|
-
"gitHead": "
|
|
32
|
+
"gitHead": "20d879b8b8fa74decf5028d860d54cd09cbdf051",
|
|
30
33
|
"scripts": {
|
|
31
34
|
"postpublish": "../../scripts/postpublish"
|
|
32
35
|
},
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { render } from '@testing-library/react';
|
|
3
3
|
import { ThemeProvider, createTheme } from '@mui/material/styles';
|
|
4
|
-
import cloneDeep from 'lodash
|
|
4
|
+
import { cloneDeep } from 'lodash-es';
|
|
5
5
|
import FreePathDrawable from '../drawable-free-path';
|
|
6
6
|
import LineDrawable from '../drawable-line';
|
|
7
7
|
import RectangleDrawable from '../drawable-rectangle';
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
|
-
import omit from 'lodash
|
|
4
|
-
import cloneDeep from 'lodash/cloneDeep';
|
|
5
|
-
import isEqual from 'lodash/isEqual';
|
|
3
|
+
import { cloneDeep, isEqual, omit } from 'lodash-es';
|
|
6
4
|
import { Layer, Stage } from 'react-konva';
|
|
7
5
|
import { styled } from '@mui/material/styles';
|
|
8
6
|
import Translator from '@pie-lib/translator';
|
package/src/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { createRoot } from 'react-dom/client';
|
|
3
|
-
import isEmpty from 'lodash
|
|
3
|
+
import { isEmpty } from 'lodash-es';
|
|
4
4
|
import { renderMath } from '@pie-lib/math-rendering';
|
|
5
5
|
import { ModelSetEvent, SessionChangedEvent } from '@pie-framework/pie-player-events';
|
|
6
6
|
|
package/module/configure.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{_dll_react_dom as e,_dll_prop_types as t,_dll_mui__material_styles as i,_dll_mui__material as n,_dll_react as a,_dll_lodash as o,_dll_debug as s}from"../../../@pie-lib/shared-module@^3.0.5/module/index.js";import{_dll_pie_lib__config_ui as l}from"../../../@pie-lib/config-module@^3.0.0/module/index.js";import{_dll_pie_lib__editable_html_tip_tap as r}from"../../../@pie-lib/editable-html-module@^6.0.5/module/index.js";var d={};Object.defineProperty(d,"__esModule",{value:!0});class h extends CustomEvent{constructor(e,t=!1){super(h.TYPE,{bubbles:!0,detail:{update:e,reset:t}}),this.update=e,this.reset=t}}h.TYPE="model.updated";var c=d.ModelUpdatedEvent=h;class p extends CustomEvent{constructor(e,t){super(p.TYPE,{bubbles:!0,detail:{src:e,done:t}}),this.src=e,this.done=t}}p.TYPE="delete.image";var g=d.DeleteImageEvent=p;class u extends CustomEvent{constructor(e){super(u.TYPE,{bubbles:!0,detail:e}),this.handler=e}}u.TYPE="insert.image";var m=d.InsertImageEvent=u;class _ extends CustomEvent{constructor(e,t){super(_.TYPE,{bubbles:!0,detail:{src:e,done:t}}),this.src=e,this.done=t}}_.TYPE="delete.sound";var b=d.DeleteSoundEvent=_;class f extends CustomEvent{constructor(e){super(f.TYPE,{bubbles:!0,detail:e}),this.handler=e}}f.TYPE="insert.sound";var E,C=d.InsertSoundEvent=f,I=e;E=I.createRoot,I.hydrateRoot;const v=a,D=t,{styled:x}=i,{Button:y}=n,S=x(y)({marginLeft:8}),R=({label:e,onClick:t,disabled:i})=>v.createElement(S,{onClick:t,disabled:i,size:"small",variant:"contained"},e);R.propTypes={disabled:D.bool,label:D.string,onClick:D.func},R.defaultProps={className:"",disabled:!1,label:"Add",onClick:()=>{}};const w=a,{Component:k}=a,A=t,{styled:P}=i,U=e=>e.type.match(/image.*/),T=P("div")(({theme:e})=>({marginTop:e.spacing(1)})),M=P("div")(({active:e})=>({border:e?"1px solid #0032C2":"1px solid #E0E1E6",borderRadius:"5px"})),z=P("div")({alignItems:"center",display:"flex",flexDirection:"column",justifyContent:"center"}),O=P("div")({minHeight:350}),H=P("img")({alignItems:"center",display:"flex",justifyContent:"center"}),L=P("div")({position:"relative",width:"fit-content"}),W=P("div")({borderBottom:"1px solid #727272",borderRight:"1px solid #727272",bottom:"-10px",cursor:"se-resize",height:"10px",position:"absolute",right:"-10px",width:"10px"}),Y=P("input")({display:"none"}),j=P("div")({backgroundColor:"#ECEDF1",borderBottom:"1px solid #E0E1E6",borderTopLeftRadius:"5px",borderTopRightRadius:"5px",display:"flex",padding:"12px 8px"});class F extends k{static __initStatic(){this.propTypes={imageDimensions:A.object}}static __initStatic2(){this.defaultProps={}}constructor(e){super(e),F.prototype.__init.call(this),F.prototype.__init2.call(this),F.prototype.__init3.call(this),F.prototype.__init4.call(this),F.prototype.__init5.call(this),F.prototype.__init6.call(this),F.prototype.__init7.call(this),F.prototype.__init8.call(this),F.prototype.__init9.call(this),F.prototype.__init10.call(this),F.prototype.__init11.call(this),F.prototype.__init12.call(this),F.prototype.__init13.call(this),F.prototype.__init14.call(this),this.state={maxImageWidth:"100%",maxImageHeight:"auto",dragEnabled:!0,dropzoneActive:!1},this.fakeImageHandler={cancel:()=>{},done:(e,t)=>this.props.onImageUpload(t),fileChosen:()=>{},progress:()=>{}}}componentDidMount(){if(this.imageSection){const e=this.imageSection.getBoundingClientRect(),{height:t,width:i}=e;this.setState({maxImageWidth:i,maxImageHeight:t})}}__init(){this.handleFileRead=e=>{const{onImageUpload:t,insertImage:i}=this.props,n=new FileReader;n.onloadend=()=>t(n.result),n.readAsDataURL(e),i&&i({...this.fakeImageHandler,getChosenFile:()=>e,isPasted:!0})}}__init2(){this.handleUploadImage=e=>{e.preventDefault();const t=e.target.files[0];this.handleFileRead(t)}}__init3(){this.makeDropzoneActive=()=>this.setState({dropzoneActive:!0})}__init4(){this.makeDropzoneInactive=()=>this.setState({dropzoneActive:!1})}__init5(){this.handleOnDrop=e=>{e.preventDefault();const{items:t,files:i}=e.dataTransfer;if(t&&"file"===t[0].kind){const e=t[0].getAsFile();U(e)&&this.handleFileRead(e)}else U(i[0])&&this.handleFileRead(i[0]);this.makeDropzoneInactive()}}__init6(){this.handleOnDragOver=e=>{e.preventDefault();const{dropzoneActive:t}=this.state;t||this.makeDropzoneActive()}}__init7(){this.handleOnDragExit=e=>{e.preventDefault(),this.makeDropzoneInactive()}}__init8(){this.handleEnableDrag=()=>this.setState({dragEnabled:!0})}__init9(){this.handleDisableDrag=()=>this.setState({dragEnabled:!1})}__init10(){this.handleInputClick=()=>{const{insertImage:e}=this.props;e&&e(this.fakeImageHandler)}}__init11(){this.handleOnImageLoad=({target:{offsetHeight:e,offsetWidth:t,naturalHeight:i,naturalWidth:n}})=>{const{onUpdateImageDimension:a,imageDimensions:o}=this.props,s=this.resize,l={height:o&&o.height||e||i,width:o&&o.width||t||n},r=n/i;l.width!==l.height*r&&(l.width=l.height*r),this.setState({dimensions:l}),a(l),s.addEventListener("mousedown",this.initialiseResize,!1)}}__init12(){this.initialiseResize=()=>{window.addEventListener("mousemove",this.startResizing,!1),window.addEventListener("mouseup",this.stopResizing,!1)}}__init13(){this.stopResizing=()=>{const{onUpdateImageDimension:e}=this.props,{dimensions:t}=this.state;this.handleEnableDrag(),e(t),window.removeEventListener("mousemove",this.startResizing,!1),window.removeEventListener("mouseup",this.stopResizing,!1)}}__init14(){this.startResizing=e=>{const t=this.image,{maxImageWidth:i,maxImageHeight:n,dimensions:a}=this.state,o=e.target.getBoundingClientRect(),s=e.clientX-o.left,l=e.clientY-o.top,r=a.width/a.height;s<=i+5&&s/r<=n+5&&s>150&&l>150&&t&&(t.style.width=`${s}px`,t.style.height=s/r+"px",this.setState({dimensions:{width:s,height:s/r}})),this.handleDisableDrag()}}renderUploadControl(e){return w.createElement("div",null,w.createElement(R,{label:e,onClick:this.handleInputClick}),w.createElement(Y,{accept:"image/*",onChange:this.handleUploadImage,ref:e=>{this.input=e},type:"file"}))}render(){const{imageUrl:e,imageDimensions:t}=this.props,{dropzoneActive:i,dragEnabled:n,maxImageHeight:a,maxImageWidth:o}=this.state;return w.createElement(T,null,w.createElement(M,{active:i,...n?{onDragExit:this.handleOnDragExit,onDragLeave:this.handleOnDragExit,onDragOver:this.handleOnDragOver,onDrop:this.handleOnDrop}:{}},w.createElement(j,null,this.renderUploadControl(e?"Replace Image":"Upload Image")),w.createElement(O,{ref:e=>{this.imageSection=e}},e?w.createElement(L,null,w.createElement(H,{height:"auto",onLoad:this.handleOnImageLoad,ref:e=>{this.image=e},src:e,style:{width:t&&t.width?t.width:void 0,maxWidth:o,maxHeight:a},alt:""}),w.createElement(W,{ref:e=>{this.resize=e}})):w.createElement(O,{as:z},w.createElement("label",null,"Drag and drop or upload image from computer"),w.createElement("br",null),this.renderUploadControl("Upload Image")))))}}F.__initStatic(),F.__initStatic2(),F.propTypes={imageUrl:A.string.isRequired,onImageUpload:A.func.isRequired,onUpdateImageDimension:A.func.isRequired,insertImage:A.func};const q=a,B=t,{Typography:N}=n,{styled:X}=i,{cloneDeep:$}=o,{settings:G}=l,{layout:J}=l,{InputContainer:K}=l,Q=r;function V(e){let t,i=e[0],n=1;for(;n<e.length;){const a=e[n],o=e[n+1];if(n+=2,("optionalAccess"===a||"optionalCall"===a)&&null==i)return;"access"===a||"optionalAccess"===a?(t=i,i=o(i)):"call"!==a&&"optionalCall"!==a||(i=o((...e)=>i.call(t,...e)),t=void 0)}return i}const{Panel:Z,toggle:ee,dropdown:te}=G,ie=X(K)(({theme:e})=>({paddingTop:e.spacing(1),marginTop:e.spacing(2),marginBottom:e.spacing(1),width:"100%"})),ne=X("div")(({theme:e})=>({fontSize:e.typography.fontSize-2,color:e.palette.error.main,paddingTop:e.spacing(1)}));class ae extends q.Component{constructor(...e){super(...e),ae.prototype.__init.call(this),ae.prototype.__init2.call(this),ae.prototype.__init3.call(this),ae.prototype.__init4.call(this)}__init(){this.onPromptChanged=e=>{const{model:t,onModelChanged:i}=this.props;i({...$(t),prompt:e})}}__init2(){this.onTeacherInstructionsChanged=e=>{const{model:t,onModelChanged:i}=this.props;i({...t,teacherInstructions:e})}}__init3(){this.onUpdateImageDimension=e=>{const{model:t,onModelChanged:i}=this.props;i({...t,imageDimensions:e})}}__init4(){this.onImageUpload=e=>{const{model:t,onModelChanged:i}=this.props;i({...t,imageUrl:e})}}render(){const{configuration:e,imageSupport:t,model:i,onConfigurationChanged:n,onModelChanged:a,uploadSoundSupport:o}=this.props,{baseInputConfiguration:s={},backgroundImage:l={},contentDimensions:r={},maxImageWidth:d={},maxImageHeight:h={},prompt:c={},settingsPanelDisabled:p,spellCheck:g={},teacherInstructions:u={},withRubric:m={},language:_={},languageChoices:b={},mathMlOptions:f={}}=e||{},{backgroundImageEnabled:E,errors:C={},extraCSSRules:I,promptEnabled:v,spellCheckEnabled:D,teacherInstructionsEnabled:x,toolbarEditorPosition:y}=i||{},{prompt:S,teacherInstructions:R}=C,w=d&&d.prompt,k=h&&h.prompt,A={position:"top"===y?"top":"bottom"},P={backgroundImageEnabled:l.settings&&ee(l.label),promptEnabled:c.settings&&ee(c.label),"language.enabled":_.settings&&ee(_.label,!0),language:_.settings&&_.enabled&&te(b.label,b.options)},U={teacherInstructionsEnabled:u.settings&&ee(u.label),spellCheckEnabled:g.settings&&ee(g.label),rubricEnabled:V([m,"optionalAccess",e=>e.settings])&&ee(V([m,"optionalAccess",e=>e.label]))},T=(e={})=>({...s,...e});return q.createElement(J.ConfigLayout,{extraCSSRules:I,dimensions:r,hideSettings:p,settings:q.createElement(Z,{model:i,onChangeModel:a,configuration:e,onChangeConfiguration:n,groups:{Settings:P,Properties:U}})},x&&q.createElement(ie,{label:u.label},q.createElement(Q,{markup:i.teacherInstructions||"",onChange:this.onTeacherInstructionsChanged,imageSupport:t,nonEmpty:!1,error:R,toolbarOpts:A,pluginProps:T(V([u,"optionalAccess",e=>e.inputConfiguration])),spellCheck:D,maxImageWidth:d&&d.teacherInstructions||w,maxImageHeight:h&&h.teacherInstructions||k,uploadSoundSupport:o,languageCharactersProps:[{language:"spanish"},{language:"special"}],mathMlOptions:f}),R&&q.createElement(ne,null,R)),v&&q.createElement(ie,{label:"Item Stem"},q.createElement(Q,{markup:i.prompt,onChange:this.onPromptChanged,error:S,toolbarOpts:A,spellCheck:D,pluginProps:T(V([c,"optionalAccess",e=>e.inputConfiguration])),imageSupport:t,maxImageWidth:w,maxImageHeight:k,uploadSoundSupport:o,languageCharactersProps:[{language:"spanish"},{language:"special"}],mathMlOptions:f}),S&&q.createElement(ne,null,S)),E&&q.createElement(q.Fragment,null,q.createElement(N,{variant:"h6"},"Define Background Image"),q.createElement(F,{imageUrl:i.imageUrl,onUpdateImageDimension:this.onUpdateImageDimension,onImageUpload:this.onImageUpload,imageDimensions:i.imageDimensions,insertImage:t&&t.add})))}}ae.propTypes={configuration:B.object,model:B.object.isRequired,imageSupport:B.shape({add:B.func,delete:B.func}),uploadSoundSupport:B.shape({add:B.func,delete:B.func}),onModelChanged:B.func.isRequired,onConfigurationChanged:B.func.isRequired};var oe={backgroundImageEnabled:!0,imageDimensions:{height:0,width:0},imageUrl:"",prompt:"",promptEnabled:!0,spellCheckEnabled:!0,studentInstructionsEnabled:!0,teacherInstructions:"",teacherInstructionsEnabled:!0,toolbarEditorPosition:"bottom"},se={baseInputConfiguration:{audio:{disabled:!1},video:{disabled:!1},image:{disabled:!1},textAlign:{disabled:!0},showParagraphs:{disabled:!1},separateParagraphs:{disabled:!0}},spellCheck:{label:"Spellcheck",settings:!1,enabled:!0},backgroundImage:{settings:!0,label:"Background Image"},prompt:{settings:!0,label:"Prompt",inputConfiguration:{audio:{disabled:!1},video:{disabled:!1},image:{disabled:!1}},required:!1},settingsPanelDisabled:!1,teacherInstructions:{settings:!0,label:"Teacher Instructions",inputConfiguration:{audio:{disabled:!1},video:{disabled:!1},image:{disabled:!1}},required:!1},maxImageWidth:{teacherInstructions:300,prompt:300},maxImageHeight:{teacherInstructions:300,prompt:300},withRubric:{settings:!1,label:"Add Rubric"},mathMlOptions:{mmlOutput:!1,mmlEditing:!1},language:{settings:!1,label:"Specify Language",enabled:!1},languageChoices:{label:"Language Choices",options:[]}};const le=a;function re(e){let t,i=e[0],n=1;for(;n<e.length;){const a=e[n],o=e[n+1];if(n+=2,("optionalAccess"===a||"optionalCall"===a)&&null==i)return;"access"===a||"optionalAccess"===a?(t=i,i=o(i)):"call"!==a&&"optionalCall"!==a||(i=o((...e)=>i.call(t,...e)),t=void 0)}return i}const de=s("hotspot:configure");class he extends HTMLElement{static __initStatic(){this.createDefaultModel=(e={},t)=>{const i={...oe,...e};return re([t,"optionalAccess",e=>e.withRubric,"optionalAccess",e=>e.forceEnabled])&&!i.rubricEnabled&&(i.rubricEnabled=!0),i}}constructor(){super(),he.prototype.__init.call(this),he.prototype.__init2.call(this),he.prototype.__init3.call(this),he.prototype.__init4.call(this),this._root=null,this._configuration=se,re([this,"access",e=>e._configuration,"access",e=>e.withRubric,"optionalAccess",e=>e.forceEnabled])&&(this._configuration.withRubric.settings=!1),this._model=he.createDefaultModel({},this._configuration),this.onModelChanged=this.onModelChanged.bind(this)}set model(e){this._model=he.createDefaultModel(e,this._configuration),this._render()}set configuration(e){const t={...se,...e};this._configuration=t;const{withRubric:i={}}=e||{};re([i,"optionalAccess",e=>e.forceEnabled])&&(this._configuration.withRubric.settings=!1,this._model.rubricEnabled||(this._model.rubricEnabled=!0)),re([t,"optionalAccess",e=>e.language,"optionalAccess",e=>e.enabled])?re([t,"optionalAccess",e=>e.languageChoices,"optionalAccess",e=>e.options,"optionalAccess",e=>e.length])&&(this._model.language=re([t,"optionalAccess",e=>e.languageChoices,"access",e=>e.options,"access",e=>e[0],"access",e=>e.value])):t.language.settings&&this._model.language?(this._configuration.language.enabled=!0,this._configuration.languageChoices.options&&this._configuration.languageChoices.options.length||(this._configuration.languageChoices.options=[]),this._configuration.languageChoices.options.find(e=>e.value===this._model.language)||this._configuration.languageChoices.options.push({value:this._model.language,label:this._model.language})):delete this._model.language,this._render()}dispatchModelUpdated(e){const t=!!e;this.dispatchEvent(new c(this._model,t))}__init(){this.onModelChanged=(e,t)=>{this._model=e,this.dispatchModelUpdated(t),this._render()}}__init2(){this.onConfigurationChanged=e=>{this._configuration=e,this._render()}}__init3(){this.insertImage=e=>{this.dispatchEvent(new m(e))}}__init4(){this.onDeleteImage=(e,t)=>{this.dispatchEvent(new g(e,t))}}insertSound(e){this.dispatchEvent(new C(e))}onDeleteSound(e,t){this.dispatchEvent(new b(e,t))}_render(){de("_render");let e=le.createElement(ae,{model:this._model,configuration:this._configuration,onModelChanged:this.onModelChanged,onConfigurationChanged:this.onConfigurationChanged,imageSupport:{add:this.insertImage,delete:this.onDeleteImage},uploadSoundSupport:{add:this.insertSound.bind(this),delete:this.onDeleteSound.bind(this)}});this._root||(this._root=E(this)),this._root.render(e)}disconnectedCallback(){this._root&&this._root.unmount()}}he.__initStatic();export{he as default};
|
package/module/controller.js
DELETED
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
var defaults = {
|
|
2
|
-
backgroundImageEnabled: true,
|
|
3
|
-
imageDimensions: { height: 0, width: 0 },
|
|
4
|
-
imageUrl: '',
|
|
5
|
-
prompt: '',
|
|
6
|
-
promptEnabled: true,
|
|
7
|
-
spellCheckEnabled: true,
|
|
8
|
-
studentInstructionsEnabled: true,
|
|
9
|
-
teacherInstructions: '',
|
|
10
|
-
teacherInstructionsEnabled: true,
|
|
11
|
-
toolbarEditorPosition: 'bottom',
|
|
12
|
-
};
|
|
13
|
-
|
|
14
|
-
const normalize = (question) => ({ ...defaults, ...question });
|
|
15
|
-
|
|
16
|
-
function model(question, session, env) {
|
|
17
|
-
const normalizedQuestion = normalize(question);
|
|
18
|
-
const { extraCSSRules, imageUrl, imageDimensions, prompt, promptEnabled, backgroundImageEnabled, language } = normalizedQuestion;
|
|
19
|
-
|
|
20
|
-
return new Promise((resolve) => {
|
|
21
|
-
const out = {
|
|
22
|
-
disabled: env.mode !== 'gather',
|
|
23
|
-
mode: env.mode,
|
|
24
|
-
imageDimensions,
|
|
25
|
-
imageUrl,
|
|
26
|
-
prompt: promptEnabled ? prompt : null,
|
|
27
|
-
backgroundImageEnabled,
|
|
28
|
-
language,
|
|
29
|
-
extraCSSRules,
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {
|
|
33
|
-
out.teacherInstructions = normalizedQuestion.teacherInstructionsEnabled
|
|
34
|
-
? normalizedQuestion.teacherInstructions
|
|
35
|
-
: null;
|
|
36
|
-
} else {
|
|
37
|
-
out.teacherInstructions = null;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
resolve(out);
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
const createDefaultModel = (model = {}) =>
|
|
45
|
-
new Promise((resolve) => {
|
|
46
|
-
resolve({
|
|
47
|
-
...defaults,
|
|
48
|
-
...model,
|
|
49
|
-
});
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
function outcome(/*config, session*/) {
|
|
53
|
-
return new Promise((resolve) => {
|
|
54
|
-
resolve({
|
|
55
|
-
score: 0,
|
|
56
|
-
completed: 'n/a',
|
|
57
|
-
note: 'Requires manual scoring',
|
|
58
|
-
});
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
// remove all html tags except img, iframe and source tag for audio
|
|
63
|
-
const getContent = (html) => (html || '').replace(/(<(?!img|iframe|source)([^>]+)>)/gi, '');
|
|
64
|
-
|
|
65
|
-
const validate = (model = {}, config = {}) => {
|
|
66
|
-
const errors = {};
|
|
67
|
-
|
|
68
|
-
['teacherInstructions', 'prompt'].forEach((field) => {
|
|
69
|
-
if (config[field]?.required && !getContent(model[field])) {
|
|
70
|
-
errors[field] = 'This field is required.';
|
|
71
|
-
}
|
|
72
|
-
});
|
|
73
|
-
|
|
74
|
-
return errors;
|
|
75
|
-
};
|
|
76
|
-
|
|
77
|
-
export { createDefaultModel, model, normalize, outcome, validate };
|