@pie-element/categorize 9.13.7-next.20 → 9.13.7-next.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/configure/lib/design/categories/choice-preview.js +6 -1
- package/configure/lib/design/categories/choice-preview.js.map +1 -1
- package/configure/lib/design/input-header.js +2 -1
- package/configure/lib/design/input-header.js.map +1 -1
- package/controller/lib/index.js +2 -2
- package/controller/lib/index.js.map +1 -1
- package/package.json +2 -2
|
@@ -84,6 +84,7 @@ var ChoicePreview = /*#__PURE__*/function (_React$Component) {
|
|
|
84
84
|
category: category,
|
|
85
85
|
choice: choice,
|
|
86
86
|
choiceIndex: choiceIndex,
|
|
87
|
+
className: classes.overflowChoice,
|
|
87
88
|
onRemoveChoice: function onRemoveChoice() {
|
|
88
89
|
return _this2["delete"]();
|
|
89
90
|
}
|
|
@@ -115,7 +116,8 @@ exports.ChoicePreview = ChoicePreview;
|
|
|
115
116
|
var styles = function styles() {
|
|
116
117
|
return {
|
|
117
118
|
choicePreview: {
|
|
118
|
-
position: 'relative'
|
|
119
|
+
position: 'relative',
|
|
120
|
+
overflow: 'auto'
|
|
119
121
|
},
|
|
120
122
|
"delete": {
|
|
121
123
|
position: 'absolute',
|
|
@@ -128,6 +130,9 @@ var styles = function styles() {
|
|
|
128
130
|
},
|
|
129
131
|
customColor: {
|
|
130
132
|
color: "".concat(_renderUi.color.tertiary(), " !important")
|
|
133
|
+
},
|
|
134
|
+
overflowChoice: {
|
|
135
|
+
overflow: 'auto'
|
|
131
136
|
}
|
|
132
137
|
};
|
|
133
138
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/design/categories/choice-preview.jsx"],"names":["ChoicePreview","props","onDelete","choice","alternateResponseIndex","category","classes","className","choiceIndex","choicePreview","content","breakWord","customColor","React","Component","PropTypes","number","object","isRequired","string","func","styles","position","right","top","maxWidth","wordBreak","color","tertiary"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;IAGaA,a;;;;;;;;;;;;;;;+FAYF,YAAM;AACb,wBAA6B,MAAKC,KAAlC;AAAA,UAAQC,QAAR,eAAQA,QAAR;AAAA,UAAkBC,MAAlB,eAAkBA,MAAlB;AACAD,MAAAA,QAAQ,CAACC,MAAD,CAAR;AACD,K;;;;;;WAED,kBAAS;AAAA;;AACP,yBAAsF,KAAKF,KAA3F;AAAA,UAAQG,sBAAR,gBAAQA,sBAAR;AAAA,UAAgCC,QAAhC,gBAAgCA,QAAhC;AAAA,UAA0CC,OAA1C,gBAA0CA,OAA1C;AAAA,UAAmDC,SAAnD,gBAAmDA,SAAnD;AAAA,UAA8DJ,MAA9D,gBAA8DA,MAA9D;AAAA,UAAsEK,WAAtE,gBAAsEA,WAAtE;AACA,0BACE;AAAK,QAAA,SAAS,EAAE,4BAAWF,OAAO,CAACG,aAAnB,EAAkCF,SAAlC;AAAhB,SACGJ,MAAM,gBACL,gCAAC,YAAD;AACE,QAAA,sBAAsB,EAAEC,sBAD1B;AAEE,QAAA,QAAQ,EAAEC,QAFZ;AAGE,QAAA,MAAM,EAAEF,MAHV;AAIE,QAAA,WAAW,EAAEK,WAJf;AAKE,QAAA,cAAc,EAAE;AAAA,iBAAM,MAAI,UAAJ,EAAN;AAAA;
|
|
1
|
+
{"version":3,"sources":["../../../src/design/categories/choice-preview.jsx"],"names":["ChoicePreview","props","onDelete","choice","alternateResponseIndex","category","classes","className","choiceIndex","choicePreview","overflowChoice","content","breakWord","customColor","React","Component","PropTypes","number","object","isRequired","string","func","styles","position","overflow","right","top","maxWidth","wordBreak","color","tertiary"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;IAGaA,a;;;;;;;;;;;;;;;+FAYF,YAAM;AACb,wBAA6B,MAAKC,KAAlC;AAAA,UAAQC,QAAR,eAAQA,QAAR;AAAA,UAAkBC,MAAlB,eAAkBA,MAAlB;AACAD,MAAAA,QAAQ,CAACC,MAAD,CAAR;AACD,K;;;;;;WAED,kBAAS;AAAA;;AACP,yBAAsF,KAAKF,KAA3F;AAAA,UAAQG,sBAAR,gBAAQA,sBAAR;AAAA,UAAgCC,QAAhC,gBAAgCA,QAAhC;AAAA,UAA0CC,OAA1C,gBAA0CA,OAA1C;AAAA,UAAmDC,SAAnD,gBAAmDA,SAAnD;AAAA,UAA8DJ,MAA9D,gBAA8DA,MAA9D;AAAA,UAAsEK,WAAtE,gBAAsEA,WAAtE;AACA,0BACE;AAAK,QAAA,SAAS,EAAE,4BAAWF,OAAO,CAACG,aAAnB,EAAkCF,SAAlC;AAAhB,SACGJ,MAAM,gBACL,gCAAC,YAAD;AACE,QAAA,sBAAsB,EAAEC,sBAD1B;AAEE,QAAA,QAAQ,EAAEC,QAFZ;AAGE,QAAA,MAAM,EAAEF,MAHV;AAIE,QAAA,WAAW,EAAEK,WAJf;AAKE,QAAA,SAAS,EAAEF,OAAO,CAACI,cALrB;AAME,QAAA,cAAc,EAAE;AAAA,iBAAM,MAAI,UAAJ,EAAN;AAAA;AANlB,sBAQE,gCAAC,qBAAD;AAAa,QAAA,IAAI,EAAEP,MAAF,aAAEA,MAAF,uBAAEA,MAAM,CAAEQ,OAA3B;AAAoC,QAAA,SAAS,YAAKL,OAAO,CAACM,SAAb;AAA7C,QARF,eASE,gCAAC,sBAAD;AAAY,sBAAW,QAAvB;AAAgC,QAAA,SAAS,EAAE,4BAAWN,OAAO,UAAlB,EAA2BA,OAAO,CAACO,WAAnC,CAA3C;AAA4F,QAAA,OAAO,EAAE;AAArG,sBACE,gCAAC,+BAAD,OADF,CATF,CADK,GAcH,IAfN,CADF;AAmBD;;;EAtCgCC,kBAAMC,S;;;iCAA5Bf,a,eACQ;AACjBI,EAAAA,sBAAsB,EAAEY,sBAAUC,MADjB;AAEjBZ,EAAAA,QAAQ,EAAEW,sBAAUE,MAFH;AAGjBZ,EAAAA,OAAO,EAAEU,sBAAUE,MAAV,CAAiBC,UAHT;AAIjBZ,EAAAA,SAAS,EAAES,sBAAUI,MAJJ;AAKjBjB,EAAAA,MAAM,EAAEa,sBAAUE,MAAV,CAAiBC,UALR;AAMjBX,EAAAA,WAAW,EAAEQ,sBAAUC,MANN;AAOjBf,EAAAA,QAAQ,EAAEc,sBAAUK,IAAV,CAAeF;AAPR,C;iCADRnB,a,kBAUW,E;;AA8BxB,IAAMsB,MAAM,GAAG,SAATA,MAAS;AAAA,SAAO;AACpBb,IAAAA,aAAa,EAAE;AACbc,MAAAA,QAAQ,EAAE,UADG;AAEbC,MAAAA,QAAQ,EAAE;AAFG,KADK;AAKpB,cAAQ;AACND,MAAAA,QAAQ,EAAE,UADJ;AAENE,MAAAA,KAAK,EAAE,CAFD;AAGNC,MAAAA,GAAG,EAAE;AAHC,KALY;AAUpBd,IAAAA,SAAS,EAAE;AACTe,MAAAA,QAAQ,EAAE,KADD;AAETC,MAAAA,SAAS,EAAE;AAFF,KAVS;AAcpBf,IAAAA,WAAW,EAAE;AACXgB,MAAAA,KAAK,YAAKA,gBAAMC,QAAN,EAAL;AADM,KAdO;AAiBpBpB,IAAAA,cAAc,EAAE;AACdc,MAAAA,QAAQ,EAAE;AADI;AAjBI,GAAP;AAAA,CAAf;;eAqBe,wBAAWF,MAAX,EAAmBtB,aAAnB,C","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport { Choice } from '@pie-lib/pie-toolbox/drag';\nimport IconButton from '@material-ui/core/IconButton';\nimport RemoveCircleOutlineIcon from '@material-ui/icons/RemoveCircleOutline';\nimport { HtmlAndMath } from '@pie-lib/pie-toolbox/render-ui';\nimport { color } from '@pie-lib/pie-toolbox/render-ui';\n\nexport class ChoicePreview extends React.Component {\n static propTypes = {\n alternateResponseIndex: PropTypes.number,\n category: PropTypes.object,\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n choice: PropTypes.object.isRequired,\n choiceIndex: PropTypes.number,\n onDelete: PropTypes.func.isRequired,\n };\n static defaultProps = {};\n\n delete = () => {\n const { onDelete, choice } = this.props;\n onDelete(choice);\n };\n\n render() {\n const { alternateResponseIndex, category, classes, className, choice, choiceIndex } = this.props;\n return (\n <div className={classNames(classes.choicePreview, className)}>\n {choice ? (\n <Choice\n alternateResponseIndex={alternateResponseIndex}\n category={category}\n choice={choice}\n choiceIndex={choiceIndex}\n className={classes.overflowChoice}\n onRemoveChoice={() => this.delete()}\n >\n <HtmlAndMath html={choice?.content} className={`${classes.breakWord}`} />\n <IconButton aria-label=\"delete\" className={classNames(classes.delete, classes.customColor)} onClick={this.delete}>\n <RemoveCircleOutlineIcon />\n </IconButton>\n </Choice>\n ) : null}\n </div>\n );\n }\n}\nconst styles = () => ({\n choicePreview: {\n position: 'relative',\n overflow: 'auto',\n },\n delete: {\n position: 'absolute',\n right: 0,\n top: 0,\n },\n breakWord: {\n maxWidth: '90%',\n wordBreak: 'break-all',\n },\n customColor: {\n color: `${color.tertiary()} !important`\n },\n overflowChoice: {\n overflow: 'auto',\n }\n});\nexport default withStyles(styles)(ChoicePreview);\n"],"file":"choice-preview.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/design/input-header.jsx"],"names":["InputHeader","props","focusedEl","index","inputRef","focus","onChange","configuration","label","classes","className","deleteFocusedEl","disabled","imageSupport","toolbarOpts","spellCheck","error","maxImageWidth","maxImageHeight","uploadSoundSupport","mathMlOptions","headers","baseInputConfiguration","inputHeader","ref","editor","inputConfiguration","language","React","Component","PropTypes","object","isRequired","string","func","bool","number","onDelete","shape","add","styles","theme","flex","paddingBottom","spacing","unit","iconButtonRoot","width","height","display","justifyContent"],"mappings":"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
|
|
1
|
+
{"version":3,"sources":["../../src/design/input-header.jsx"],"names":["InputHeader","props","focusedEl","index","inputRef","focus","onChange","configuration","label","classes","className","deleteFocusedEl","disabled","imageSupport","toolbarOpts","spellCheck","error","maxImageWidth","maxImageHeight","uploadSoundSupport","mathMlOptions","headers","baseInputConfiguration","inputHeader","ref","editor","inputConfiguration","language","React","Component","PropTypes","object","isRequired","string","func","bool","number","onDelete","shape","add","styles","theme","flex","paddingBottom","spacing","unit","maxWidth","iconButtonRoot","width","height","display","justifyContent"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;IAEaA,W;;;;;AA6BX,uBAAYC,KAAZ,EAAmB;AAAA;AAAA,6BACXA,KADW;AAElB;;;;WAED,6BAAoB;AAClB,wBAA6B,KAAKA,KAAlC;AAAA,UAAQC,SAAR,eAAQA,SAAR;AAAA,UAAmBC,KAAnB,eAAmBA,KAAnB;;AACA,UAAID,SAAS,IAAIC,KAAb,IAAsBD,SAAS,KAAKC,KAAxC,EAA+C;AAC7C,aAAKC,QAAL,CAAcC,KAAd,CAAoB,KAApB,EAA2B,IAA3B,EAAiC,IAAjC;AACD;AACF;;;WAED,kBAAS;AAAA;;AACP,yBAgBI,KAAKJ,KAhBT;AAAA,UACEK,QADF,gBACEA,QADF;AAAA,UAEEC,aAFF,gBAEEA,aAFF;AAAA,UAGEC,KAHF,gBAGEA,KAHF;AAAA,UAIEC,OAJF,gBAIEA,OAJF;AAAA,UAKEC,SALF,gBAKEA,SALF;AAAA,UAMEC,eANF,gBAMEA,eANF;AAAA,UAOEC,QAPF,gBAOEA,QAPF;AAAA,UAQEC,YARF,gBAQEA,YARF;AAAA,UASEC,WATF,gBASEA,WATF;AAAA,UAUEC,UAVF,gBAUEA,UAVF;AAAA,UAWEC,KAXF,gBAWEA,KAXF;AAAA,UAYEC,aAZF,gBAYEA,aAZF;AAAA,UAaEC,cAbF,gBAaEA,cAbF;AAAA,UAcEC,kBAdF,gBAcEA,kBAdF;AAAA,+CAeEC,aAfF;AAAA,UAeEA,aAfF,sCAekB,EAflB;AAkBA,UAAQC,OAAR,GAA4Cd,aAA5C,CAAQc,OAAR;AAAA,UAAiBC,sBAAjB,GAA4Cf,aAA5C,CAAiBe,sBAAjB;AAEA,0BACE;AAAK,QAAA,SAAS,EAAE,4BAAWb,OAAO,CAACc,WAAnB,EAAgCb,SAAhC;AAAhB,sBACE,gCAAC,0BAAD;AACE,QAAA,YAAY,EAAEG,YADhB;AAEE,QAAA,QAAQ,EAAED,QAFZ;AAGE,QAAA,GAAG,EAAE,aAACY,IAAD;AAAA,iBAAU,KAAI,CAACpB,QAAL,GAAgBoB,IAA1B;AAAA,SAHP;AAIE,QAAA,gBAAgB,MAJlB;AAKE,QAAA,KAAK,EAAE,OALT;AAME,QAAA,MAAM,EAAEhB,KANV;AAOE,QAAA,QAAQ,EAAEF,QAPZ;AAQE,QAAA,SAAS,EAAEG,OAAO,CAACgB,MARrB;AASE,QAAA,WAAW,EAAE,2BAAeJ,OAAf,aAAeA,OAAf,uBAAeA,OAAO,CAAEK,kBAAxB,EAA4CJ,sBAA5C,CATf;AAUE,QAAA,WAAW,EAAER,WAVf;AAWE,QAAA,UAAU,EAAEC,UAXd;AAYE,QAAA,KAAK,EAAEC,KAZT;AAaE,QAAA,aAAa,EAAEC,aAbjB;AAcE,QAAA,cAAc,EAAEC,cAdlB;AAeE,QAAA,kBAAkB,EAAEC,kBAftB;AAgBE,QAAA,uBAAuB,EAAE,CAAC;AAAEQ,UAAAA,QAAQ,EAAE;AAAZ,SAAD,EAA0B;AAAEA,UAAAA,QAAQ,EAAE;AAAZ,SAA1B,CAhB3B;AAiBE,QAAA,MAAM,EAAE,kBAAM;AACZhB,UAAAA,eAAe,IAAIA,eAAe,EAAlC;AACD,SAnBH;AAoBE,QAAA,aAAa,EAAES;AApBjB,QADF,CADF;AA0BD;;;EAvF8BQ,kBAAMC,S;;;iCAA1B7B,W,eACQ;AACjBS,EAAAA,OAAO,EAAEqB,sBAAUC,MAAV,CAAiBC,UADT;AAEjBtB,EAAAA,SAAS,EAAEoB,sBAAUG,MAFJ;AAGjB1B,EAAAA,aAAa,EAAEuB,sBAAUC,MAAV,CAAiBC,UAHf;AAIjBrB,EAAAA,eAAe,EAAEmB,sBAAUI,IAJV;AAKjBtB,EAAAA,QAAQ,EAAEkB,sBAAUK,IALH;AAMjBjC,EAAAA,SAAS,EAAE4B,sBAAUM,MANJ;AAOjBjC,EAAAA,KAAK,EAAE2B,sBAAUM,MAPA;AAQjB5B,EAAAA,KAAK,EAAEsB,sBAAUG,MARA;AASjBhB,EAAAA,aAAa,EAAEa,sBAAUC,MATR;AAUjBb,EAAAA,cAAc,EAAEY,sBAAUC,MAVT;AAWjBzB,EAAAA,QAAQ,EAAEwB,sBAAUI,IAXH;AAYjBG,EAAAA,QAAQ,EAAEP,sBAAUI,IAZH;AAajBrB,EAAAA,YAAY,EAAEiB,sBAAUQ,KAAV,CAAgB;AAC5BC,IAAAA,GAAG,EAAET,sBAAUI,IAAV,CAAeF,UADQ;AAE5B,cAAQF,sBAAUI,IAAV,CAAeF;AAFK,GAAhB,CAbG;AAiBjBb,EAAAA,kBAAkB,EAAEW,sBAAUQ,KAAV,CAAgB;AAClCC,IAAAA,GAAG,EAAET,sBAAUI,IAAV,CAAeF,UADc;AAElC,cAAQF,sBAAUI,IAAV,CAAeF;AAFW,GAAhB,CAjBH;AAqBjBlB,EAAAA,WAAW,EAAEgB,sBAAUC,MArBN;AAsBjBf,EAAAA,KAAK,EAAEc,sBAAUG,MAtBA;AAuBjBlB,EAAAA,UAAU,EAAEe,sBAAUK;AAvBL,C;iCADRnC,W,kBA2BW,E;;AA8DxB,IAAMwC,MAAM,GAAG,SAATA,MAAS,CAACC,KAAD;AAAA,SAAY;AACzBhB,IAAAA,MAAM,EAAE;AACNiB,MAAAA,IAAI,EAAE,GADA;AAENC,MAAAA,aAAa,EAAEF,KAAK,CAACG,OAAN,CAAcC,IAFvB;AAGNC,MAAAA,QAAQ,EAAE;AAHJ,KADiB;AAMzBC,IAAAA,cAAc,EAAE;AACdC,MAAAA,KAAK,EAAE,MADO;AAEdC,MAAAA,MAAM,EAAE;AAFM,KANS;AAUzB1B,IAAAA,WAAW,EAAE;AACX2B,MAAAA,OAAO,EAAE,MADE;AAEXC,MAAAA,cAAc,EAAE;AAFL;AAVY,GAAZ;AAAA,CAAf;;eAee,wBAAWX,MAAX,EAAmBxC,WAAnB,C","sourcesContent":["import { getPluginProps } from './utils';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport { EditableHtml } from '@pie-lib/pie-toolbox/editable-html';\n\nexport class InputHeader extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n configuration: PropTypes.object.isRequired,\n deleteFocusedEl: PropTypes.func,\n disabled: PropTypes.bool,\n focusedEl: PropTypes.number,\n index: PropTypes.number,\n label: PropTypes.string,\n maxImageWidth: PropTypes.object,\n maxImageHeight: PropTypes.object,\n onChange: PropTypes.func,\n onDelete: PropTypes.func,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n uploadSoundSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n toolbarOpts: PropTypes.object,\n error: PropTypes.string,\n spellCheck: PropTypes.bool,\n };\n\n static defaultProps = {};\n\n constructor(props) {\n super(props);\n }\n\n componentDidMount() {\n const { focusedEl, index } = this.props;\n if (focusedEl && index && focusedEl === index) {\n this.inputRef.focus('end', null, true);\n }\n }\n\n render() {\n const {\n onChange,\n configuration,\n label,\n classes,\n className,\n deleteFocusedEl,\n disabled,\n imageSupport,\n toolbarOpts,\n spellCheck,\n error,\n maxImageWidth,\n maxImageHeight,\n uploadSoundSupport,\n mathMlOptions = {},\n } = this.props;\n\n const { headers, baseInputConfiguration } = configuration;\n\n return (\n <div className={classNames(classes.inputHeader, className)}>\n <EditableHtml\n imageSupport={imageSupport}\n disabled={disabled}\n ref={(ref) => (this.inputRef = ref)}\n autoWidthToolbar\n label={'label'}\n markup={label}\n onChange={onChange}\n className={classes.editor}\n pluginProps={getPluginProps(headers?.inputConfiguration, baseInputConfiguration)}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheck}\n error={error}\n maxImageWidth={maxImageWidth}\n maxImageHeight={maxImageHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n onDone={() => {\n deleteFocusedEl && deleteFocusedEl();\n }}\n mathMlOptions={mathMlOptions}\n />\n </div>\n );\n }\n}\nconst styles = (theme) => ({\n editor: {\n flex: '1',\n paddingBottom: theme.spacing.unit,\n maxWidth: '100%',\n },\n iconButtonRoot: {\n width: 'auto',\n height: 'auto',\n },\n inputHeader: {\n display: 'flex',\n justifyContent: 'space-between',\n },\n});\nexport default withStyles(styles)(InputHeader);\n"],"file":"input-header.js"}
|
package/controller/lib/index.js
CHANGED
|
@@ -345,11 +345,11 @@ exports.createCorrectResponseSession = createCorrectResponseSession;
|
|
|
345
345
|
|
|
346
346
|
var getInnerText = function getInnerText(html) {
|
|
347
347
|
return (html || '').replaceAll(/<[^>]*>/g, '');
|
|
348
|
-
}; // remove all html tags except img and
|
|
348
|
+
}; // remove all html tags except img, iframe and source tag for audio
|
|
349
349
|
|
|
350
350
|
|
|
351
351
|
var getContent = function getContent(html) {
|
|
352
|
-
return (html || '').replace(/(<(?!img|iframe)([^>]+)>)/gi, '');
|
|
352
|
+
return (html || '').replace(/(<(?!img|iframe|source)([^>]+)>)/gi, '');
|
|
353
353
|
};
|
|
354
354
|
|
|
355
355
|
var validate = function validate() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.js"],"names":["translator","Translator","disableAlternateResponses","question","correctResponse","mappedCorrectResponse","map","cr","alternateResponses","response","allowAlternateEnabled","getPartialScore","builtCategories","reduce","acc","choices","placements","length","score","filter","ch","correct","maxScore","extraPlacements","totalScore","parseFloat","toFixed","getAlternates","c","alternate","getTotalScore","session","env","Object","keys","categories","answers","alternates","enabled","partialScoring","getCorrectness","Promise","resolve","mode","undefined","createDefaultModel","model","defaults","normalize","updateSession","normalizedQuestion","answerCorrectness","role","categoriesPerRow","choicesLabel","choicesPosition","feedback","feedbackEnabled","promptEnabled","prompt","rowLabels","rationaleEnabled","rationale","teacherInstructionsEnabled","teacherInstructions","language","maxChoicesPerCategory","extraCSSRules","minRowHeight","fontSizeFactor","autoplayAudioEnabled","completeAudioEnabled","customAudioButton","note","lockChoiceOrder","filteredCorrectResponse","filteredChoices","choice","fb","t","lng","out","correctness","disabled","showNote","outcome","reject","Error","empty","createCorrectResponseSession","id","getInnerText","html","replaceAll","getContent","replace","validate","config","maxAnswerChoices","minChoices","minCategories","maxCategories","maxLengthPerChoice","maxLengthPerCategory","reversedChoices","reverse","errors","choicesErrors","categoriesErrors","forEach","field","required","category","label","index","content","identicalAnswer","slice","some","nbOfCategories","nbOfChoices","categoriesError","choicesError","hasAssociations","duplicateAlternateIndex","duplicateCategory","duplicateAlternate","associationError"],"mappings":"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","sourcesContent":["import isEmpty from 'lodash/isEmpty';\nimport { buildState, score } from '@pie-lib/pie-toolbox/categorize';\nimport { getFeedbackForCorrectness } from '@pie-lib/pie-toolbox/feedback';\nimport { lockChoices, getShuffledChoices, partialScoring } from '@pie-lib/pie-toolbox/controller-utils';\nimport Translator from '@pie-lib/pie-toolbox/translator';\n\nconst { translator } = Translator;\nimport defaults from './defaults';\nimport { isAlternateDuplicated, isCorrectResponseDuplicated } from './utils';\n\n// eslint-disable-next-line no-console\n\nexport { score };\n\n// PD-2960: make sure we don't have alternates in model or possibility to add them (temporary solution)\n// this function is used in configure part, too\nconst disableAlternateResponses = (question) => {\n let { correctResponse } = question || {};\n correctResponse = correctResponse || [];\n const mappedCorrectResponse = correctResponse.map((cr) => {\n const { alternateResponses, ...response } = cr;\n return response;\n });\n return {\n ...question,\n correctResponse: mappedCorrectResponse,\n allowAlternateEnabled: false,\n };\n};\n\nexport const getPartialScore = (correctResponse, builtCategories) => {\n // in the resulted best scenario we make a sum with all the correct responses\n // and all the placements\n const { placements, score } = builtCategories.reduce(\n (acc, { choices = [] }) => ({\n placements: acc.placements + choices.length,\n score: acc.score + choices.filter((ch) => ch.correct).length,\n }),\n { placements: 0, score: 0 },\n );\n\n // in the correct response, we make a sum of the max possible score\n const { maxScore } = correctResponse.reduce(\n (acc, { choices }) => ({\n maxScore: acc.maxScore + choices.length,\n }),\n { maxScore: 0 },\n );\n\n // if there are any extra placements, we subtract from the obtained score\n const extraPlacements = placements > maxScore ? placements - maxScore : 0;\n const totalScore = (score - extraPlacements) / maxScore;\n\n return totalScore < 0 ? 0 : parseFloat(totalScore.toFixed(2));\n};\n\nconst getAlternates = (correctResponse) =>\n correctResponse.map((c) => c.alternateResponses).filter((alternate) => alternate);\n\nexport const getTotalScore = (question, session, env) => {\n if (!session) {\n return 0;\n }\n\n if (Object.keys(session).length === 0) {\n return 0;\n }\n const { categories, choices } = question || {};\n let { correctResponse } = question || {};\n let { answers } = session || {};\n answers = answers || [];\n correctResponse = correctResponse || [];\n\n // this function is used in pie-ui/categorize as well, in order to get the best scenario\n // so we get the best scenario and calculate the score\n const { categories: builtCategories, correct } = buildState(categories, choices, answers, correctResponse);\n\n const alternates = getAlternates(correctResponse);\n const enabled = partialScoring.enabled(question, env);\n\n // if there are any alternates, there will be no partial scoring!\n if (enabled && !alternates.length) {\n // we apply partial scoring\n return getPartialScore(correctResponse, builtCategories);\n }\n\n // else we apply dichotomous\n return correct ? 1 : 0;\n};\n\nexport const getCorrectness = (question, session, env) => {\n return new Promise((resolve) => {\n if (env.mode === 'evaluate') {\n const score = getTotalScore(question, session, env);\n if (score === 1) {\n resolve('correct');\n } else if (score === 0) {\n resolve('incorrect');\n } else {\n resolve('partially-correct');\n }\n } else {\n resolve(undefined);\n }\n });\n};\n\nexport const createDefaultModel = (model = {}) =>\n new Promise((resolve) => {\n resolve({\n ...defaults,\n ...model,\n });\n });\n\nexport const normalize = (question) => ({ ...defaults, ...question });\n\n/**\n *\n * @param {*} question\n * @param {*} session\n * @param {*} env\n * @param {*} updateSession - optional - a function that will set the properties passed into it on the session.\n */\nexport const model = (question, session, env, updateSession) =>\n new Promise(async (resolve) => {\n const normalizedQuestion = normalize(question);\n const answerCorrectness = await getCorrectness(normalizedQuestion, session, env);\n\n const { mode, role } = env || {};\n\n const {\n categories,\n categoriesPerRow,\n choicesLabel,\n choicesPosition,\n correctResponse,\n feedback,\n feedbackEnabled,\n promptEnabled,\n prompt,\n rowLabels,\n rationaleEnabled,\n rationale,\n teacherInstructionsEnabled,\n teacherInstructions,\n language,\n maxChoicesPerCategory,\n extraCSSRules,\n minRowHeight,\n fontSizeFactor,\n autoplayAudioEnabled,\n completeAudioEnabled,\n customAudioButton\n } = normalizedQuestion;\n let { choices, note } = normalizedQuestion;\n let fb;\n\n const lockChoiceOrder = lockChoices(normalizedQuestion, session, env);\n\n const filteredCorrectResponse = correctResponse.map((response) => {\n const filteredChoices = (response.choices || []).filter((choice) => choice !== 'null');\n return { ...response, choices: filteredChoices };\n });\n\n if (mode === 'evaluate' && feedbackEnabled) {\n fb = await getFeedbackForCorrectness(answerCorrectness, feedback);\n }\n\n if (!lockChoiceOrder) {\n choices = await getShuffledChoices(choices, session, updateSession, 'id');\n }\n\n if (!note) {\n note = translator.t('common:commonCorrectAnswerWithAlternates', { lng: language });\n }\n\n const alternates = getAlternates(filteredCorrectResponse);\n const out = {\n categories: categories || [],\n categoriesPerRow: categoriesPerRow || 2,\n maxChoicesPerCategory,\n correctness: answerCorrectness,\n choices: choices || [],\n choicesLabel: choicesLabel || '',\n choicesPosition,\n disabled: mode !== 'gather',\n feedback: fb,\n lockChoiceOrder,\n prompt: promptEnabled ? prompt : null,\n rowLabels,\n note,\n env,\n showNote: alternates && alternates.length > 0,\n correctResponse: mode === 'evaluate' ? filteredCorrectResponse : undefined,\n language,\n extraCSSRules,\n fontSizeFactor,\n minRowHeight: minRowHeight,\n autoplayAudioEnabled,\n completeAudioEnabled,\n customAudioButton\n };\n\n if (role === 'instructor' && (mode === 'view' || mode === 'evaluate')) {\n out.rationale = rationaleEnabled ? rationale : null;\n out.teacherInstructions = teacherInstructionsEnabled ? teacherInstructions : null;\n } else {\n out.rationale = null;\n out.teacherInstructions = null;\n }\n\n resolve(out);\n });\n\nexport const outcome = (question, session, env) => {\n if (env.mode !== 'evaluate') {\n return Promise.reject(new Error('Can not call outcome when mode is not evaluate'));\n } else {\n return new Promise((resolve) => {\n resolve({\n score: getTotalScore(question, session, env),\n empty: !session || isEmpty(session),\n });\n });\n }\n};\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise((resolve) => {\n const { mode, role } = env || {};\n\n if (mode !== 'evaluate' && role === 'instructor') {\n const { correctResponse } = question;\n\n resolve({ answers: correctResponse, id: 1 });\n } else {\n return resolve(null);\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 { categories, choices, correctResponse, maxAnswerChoices } = model;\n const {\n minChoices = 1,\n minCategories = 1,\n maxCategories = 12,\n maxLengthPerChoice = 300,\n maxLengthPerCategory = 150,\n } = config;\n const reversedChoices = [...(choices || [])].reverse();\n const errors = {};\n const choicesErrors = {};\n const categoriesErrors = {};\n\n ['teacherInstructions', 'prompt', 'rationale'].forEach((field) => {\n if (config[field]?.required && !getContent(model[field])) {\n errors[field] = 'This field is required.';\n }\n });\n\n (categories || []).forEach((category) => {\n const { id, label } = category;\n\n if (getInnerText(label).length > maxLengthPerCategory) {\n categoriesErrors[id] = `Category labels should be no more than ${maxLengthPerCategory} characters long.`;\n }\n });\n\n (reversedChoices || []).forEach((choice, index) => {\n const { id, content } = choice;\n\n if (getInnerText(content).length > maxLengthPerChoice) {\n choicesErrors[id] = `Tokens should be no more than ${maxLengthPerChoice} characters long.`;\n }\n\n if (!getContent(content)) {\n choicesErrors[id] = 'Tokens should not be empty.';\n } else {\n const identicalAnswer = reversedChoices.slice(index + 1).some((c) => c.content === content);\n\n if (identicalAnswer) {\n choicesErrors[id] = 'Tokens content should be unique.';\n }\n }\n });\n\n const nbOfCategories = (categories || []).length;\n const nbOfChoices = (choices || []).length;\n\n if (nbOfCategories > maxCategories) {\n errors.categoriesError = `No more than ${maxCategories} categories should be defined.`;\n } else if (nbOfCategories < minCategories) {\n errors.categoriesError = `There should be at least ${minCategories} category defined.`;\n }\n\n if (nbOfChoices < minChoices) {\n errors.choicesError = `There should be at least ${minChoices} choices defined.`;\n } else if (nbOfChoices > maxAnswerChoices) {\n errors.choicesError = `No more than ${maxAnswerChoices} choices should be defined.`;\n }\n\n if (nbOfChoices && nbOfCategories) {\n let hasAssociations = false;\n\n (correctResponse || []).forEach((response) => {\n const { choices = [], alternateResponses = [] } = response;\n\n if (choices.length) {\n hasAssociations = true;\n } else {\n alternateResponses.forEach((alternate) => {\n if ((alternate || []).length) {\n hasAssociations = true;\n }\n });\n }\n });\n\n let duplicateAlternateIndex = -1;\n let duplicateCategory = '';\n (correctResponse || []).forEach((response) => {\n const { choices = [], alternateResponses = [], category } = response;\n\n if (duplicateAlternateIndex === -1) {\n duplicateAlternateIndex = isCorrectResponseDuplicated(choices, alternateResponses);\n\n if (duplicateAlternateIndex === -1) {\n duplicateAlternateIndex = isAlternateDuplicated(alternateResponses);\n }\n\n duplicateCategory = category;\n }\n });\n\n if (duplicateAlternateIndex > -1) {\n errors.duplicateAlternate = { index: duplicateAlternateIndex, category: duplicateCategory };\n }\n\n if (!hasAssociations) {\n errors.associationError = 'At least one token should be assigned to at least one category.';\n }\n }\n\n if (!isEmpty(choicesErrors)) {\n errors.choicesErrors = choicesErrors;\n }\n\n if (!isEmpty(categoriesErrors)) {\n errors.categoriesErrors = categoriesErrors;\n }\n\n return errors;\n};\n"],"file":"index.js"}
|
|
1
|
+
{"version":3,"sources":["../src/index.js"],"names":["translator","Translator","disableAlternateResponses","question","correctResponse","mappedCorrectResponse","map","cr","alternateResponses","response","allowAlternateEnabled","getPartialScore","builtCategories","reduce","acc","choices","placements","length","score","filter","ch","correct","maxScore","extraPlacements","totalScore","parseFloat","toFixed","getAlternates","c","alternate","getTotalScore","session","env","Object","keys","categories","answers","alternates","enabled","partialScoring","getCorrectness","Promise","resolve","mode","undefined","createDefaultModel","model","defaults","normalize","updateSession","normalizedQuestion","answerCorrectness","role","categoriesPerRow","choicesLabel","choicesPosition","feedback","feedbackEnabled","promptEnabled","prompt","rowLabels","rationaleEnabled","rationale","teacherInstructionsEnabled","teacherInstructions","language","maxChoicesPerCategory","extraCSSRules","minRowHeight","fontSizeFactor","autoplayAudioEnabled","completeAudioEnabled","customAudioButton","note","lockChoiceOrder","filteredCorrectResponse","filteredChoices","choice","fb","t","lng","out","correctness","disabled","showNote","outcome","reject","Error","empty","createCorrectResponseSession","id","getInnerText","html","replaceAll","getContent","replace","validate","config","maxAnswerChoices","minChoices","minCategories","maxCategories","maxLengthPerChoice","maxLengthPerCategory","reversedChoices","reverse","errors","choicesErrors","categoriesErrors","forEach","field","required","category","label","index","content","identicalAnswer","slice","some","nbOfCategories","nbOfChoices","categoriesError","choicesError","hasAssociations","duplicateAlternateIndex","duplicateCategory","duplicateAlternate","associationError"],"mappings":"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","sourcesContent":["import isEmpty from 'lodash/isEmpty';\nimport { buildState, score } from '@pie-lib/pie-toolbox/categorize';\nimport { getFeedbackForCorrectness } from '@pie-lib/pie-toolbox/feedback';\nimport { lockChoices, getShuffledChoices, partialScoring } from '@pie-lib/pie-toolbox/controller-utils';\nimport Translator from '@pie-lib/pie-toolbox/translator';\n\nconst { translator } = Translator;\nimport defaults from './defaults';\nimport { isAlternateDuplicated, isCorrectResponseDuplicated } from './utils';\n\n// eslint-disable-next-line no-console\n\nexport { score };\n\n// PD-2960: make sure we don't have alternates in model or possibility to add them (temporary solution)\n// this function is used in configure part, too\nconst disableAlternateResponses = (question) => {\n let { correctResponse } = question || {};\n correctResponse = correctResponse || [];\n const mappedCorrectResponse = correctResponse.map((cr) => {\n const { alternateResponses, ...response } = cr;\n return response;\n });\n return {\n ...question,\n correctResponse: mappedCorrectResponse,\n allowAlternateEnabled: false,\n };\n};\n\nexport const getPartialScore = (correctResponse, builtCategories) => {\n // in the resulted best scenario we make a sum with all the correct responses\n // and all the placements\n const { placements, score } = builtCategories.reduce(\n (acc, { choices = [] }) => ({\n placements: acc.placements + choices.length,\n score: acc.score + choices.filter((ch) => ch.correct).length,\n }),\n { placements: 0, score: 0 },\n );\n\n // in the correct response, we make a sum of the max possible score\n const { maxScore } = correctResponse.reduce(\n (acc, { choices }) => ({\n maxScore: acc.maxScore + choices.length,\n }),\n { maxScore: 0 },\n );\n\n // if there are any extra placements, we subtract from the obtained score\n const extraPlacements = placements > maxScore ? placements - maxScore : 0;\n const totalScore = (score - extraPlacements) / maxScore;\n\n return totalScore < 0 ? 0 : parseFloat(totalScore.toFixed(2));\n};\n\nconst getAlternates = (correctResponse) =>\n correctResponse.map((c) => c.alternateResponses).filter((alternate) => alternate);\n\nexport const getTotalScore = (question, session, env) => {\n if (!session) {\n return 0;\n }\n\n if (Object.keys(session).length === 0) {\n return 0;\n }\n const { categories, choices } = question || {};\n let { correctResponse } = question || {};\n let { answers } = session || {};\n answers = answers || [];\n correctResponse = correctResponse || [];\n\n // this function is used in pie-ui/categorize as well, in order to get the best scenario\n // so we get the best scenario and calculate the score\n const { categories: builtCategories, correct } = buildState(categories, choices, answers, correctResponse);\n\n const alternates = getAlternates(correctResponse);\n const enabled = partialScoring.enabled(question, env);\n\n // if there are any alternates, there will be no partial scoring!\n if (enabled && !alternates.length) {\n // we apply partial scoring\n return getPartialScore(correctResponse, builtCategories);\n }\n\n // else we apply dichotomous\n return correct ? 1 : 0;\n};\n\nexport const getCorrectness = (question, session, env) => {\n return new Promise((resolve) => {\n if (env.mode === 'evaluate') {\n const score = getTotalScore(question, session, env);\n if (score === 1) {\n resolve('correct');\n } else if (score === 0) {\n resolve('incorrect');\n } else {\n resolve('partially-correct');\n }\n } else {\n resolve(undefined);\n }\n });\n};\n\nexport const createDefaultModel = (model = {}) =>\n new Promise((resolve) => {\n resolve({\n ...defaults,\n ...model,\n });\n });\n\nexport const normalize = (question) => ({ ...defaults, ...question });\n\n/**\n *\n * @param {*} question\n * @param {*} session\n * @param {*} env\n * @param {*} updateSession - optional - a function that will set the properties passed into it on the session.\n */\nexport const model = (question, session, env, updateSession) =>\n new Promise(async (resolve) => {\n const normalizedQuestion = normalize(question);\n const answerCorrectness = await getCorrectness(normalizedQuestion, session, env);\n\n const { mode, role } = env || {};\n\n const {\n categories,\n categoriesPerRow,\n choicesLabel,\n choicesPosition,\n correctResponse,\n feedback,\n feedbackEnabled,\n promptEnabled,\n prompt,\n rowLabels,\n rationaleEnabled,\n rationale,\n teacherInstructionsEnabled,\n teacherInstructions,\n language,\n maxChoicesPerCategory,\n extraCSSRules,\n minRowHeight,\n fontSizeFactor,\n autoplayAudioEnabled,\n completeAudioEnabled,\n customAudioButton\n } = normalizedQuestion;\n let { choices, note } = normalizedQuestion;\n let fb;\n\n const lockChoiceOrder = lockChoices(normalizedQuestion, session, env);\n\n const filteredCorrectResponse = correctResponse.map((response) => {\n const filteredChoices = (response.choices || []).filter((choice) => choice !== 'null');\n return { ...response, choices: filteredChoices };\n });\n\n if (mode === 'evaluate' && feedbackEnabled) {\n fb = await getFeedbackForCorrectness(answerCorrectness, feedback);\n }\n\n if (!lockChoiceOrder) {\n choices = await getShuffledChoices(choices, session, updateSession, 'id');\n }\n\n if (!note) {\n note = translator.t('common:commonCorrectAnswerWithAlternates', { lng: language });\n }\n\n const alternates = getAlternates(filteredCorrectResponse);\n const out = {\n categories: categories || [],\n categoriesPerRow: categoriesPerRow || 2,\n maxChoicesPerCategory,\n correctness: answerCorrectness,\n choices: choices || [],\n choicesLabel: choicesLabel || '',\n choicesPosition,\n disabled: mode !== 'gather',\n feedback: fb,\n lockChoiceOrder,\n prompt: promptEnabled ? prompt : null,\n rowLabels,\n note,\n env,\n showNote: alternates && alternates.length > 0,\n correctResponse: mode === 'evaluate' ? filteredCorrectResponse : undefined,\n language,\n extraCSSRules,\n fontSizeFactor,\n minRowHeight: minRowHeight,\n autoplayAudioEnabled,\n completeAudioEnabled,\n customAudioButton\n };\n\n if (role === 'instructor' && (mode === 'view' || mode === 'evaluate')) {\n out.rationale = rationaleEnabled ? rationale : null;\n out.teacherInstructions = teacherInstructionsEnabled ? teacherInstructions : null;\n } else {\n out.rationale = null;\n out.teacherInstructions = null;\n }\n\n resolve(out);\n });\n\nexport const outcome = (question, session, env) => {\n if (env.mode !== 'evaluate') {\n return Promise.reject(new Error('Can not call outcome when mode is not evaluate'));\n } else {\n return new Promise((resolve) => {\n resolve({\n score: getTotalScore(question, session, env),\n empty: !session || isEmpty(session),\n });\n });\n }\n};\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise((resolve) => {\n const { mode, role } = env || {};\n\n if (mode !== 'evaluate' && role === 'instructor') {\n const { correctResponse } = question;\n\n resolve({ answers: correctResponse, id: 1 });\n } else {\n return resolve(null);\n }\n });\n};\n\n// remove all html tags\nconst getInnerText = (html) => (html || '').replaceAll(/<[^>]*>/g, '');\n\n// remove all html tags except img, iframe and source tag for audio\nconst getContent = (html) => (html || '').replace(/(<(?!img|iframe|source)([^>]+)>)/gi, '');\n\nexport const validate = (model = {}, config = {}) => {\n const { categories, choices, correctResponse, maxAnswerChoices } = model;\n const {\n minChoices = 1,\n minCategories = 1,\n maxCategories = 12,\n maxLengthPerChoice = 300,\n maxLengthPerCategory = 150,\n } = config;\n const reversedChoices = [...(choices || [])].reverse();\n const errors = {};\n const choicesErrors = {};\n const categoriesErrors = {};\n\n ['teacherInstructions', 'prompt', 'rationale'].forEach((field) => {\n if (config[field]?.required && !getContent(model[field])) {\n errors[field] = 'This field is required.';\n }\n });\n\n (categories || []).forEach((category) => {\n const { id, label } = category;\n\n if (getInnerText(label).length > maxLengthPerCategory) {\n categoriesErrors[id] = `Category labels should be no more than ${maxLengthPerCategory} characters long.`;\n }\n });\n\n (reversedChoices || []).forEach((choice, index) => {\n const { id, content } = choice;\n\n if (getInnerText(content).length > maxLengthPerChoice) {\n choicesErrors[id] = `Tokens should be no more than ${maxLengthPerChoice} characters long.`;\n }\n\n if (!getContent(content)) {\n choicesErrors[id] = 'Tokens should not be empty.';\n } else {\n const identicalAnswer = reversedChoices.slice(index + 1).some((c) => c.content === content);\n\n if (identicalAnswer) {\n choicesErrors[id] = 'Tokens content should be unique.';\n }\n }\n });\n\n const nbOfCategories = (categories || []).length;\n const nbOfChoices = (choices || []).length;\n\n if (nbOfCategories > maxCategories) {\n errors.categoriesError = `No more than ${maxCategories} categories should be defined.`;\n } else if (nbOfCategories < minCategories) {\n errors.categoriesError = `There should be at least ${minCategories} category defined.`;\n }\n\n if (nbOfChoices < minChoices) {\n errors.choicesError = `There should be at least ${minChoices} choices defined.`;\n } else if (nbOfChoices > maxAnswerChoices) {\n errors.choicesError = `No more than ${maxAnswerChoices} choices should be defined.`;\n }\n\n if (nbOfChoices && nbOfCategories) {\n let hasAssociations = false;\n\n (correctResponse || []).forEach((response) => {\n const { choices = [], alternateResponses = [] } = response;\n\n if (choices.length) {\n hasAssociations = true;\n } else {\n alternateResponses.forEach((alternate) => {\n if ((alternate || []).length) {\n hasAssociations = true;\n }\n });\n }\n });\n\n let duplicateAlternateIndex = -1;\n let duplicateCategory = '';\n (correctResponse || []).forEach((response) => {\n const { choices = [], alternateResponses = [], category } = response;\n\n if (duplicateAlternateIndex === -1) {\n duplicateAlternateIndex = isCorrectResponseDuplicated(choices, alternateResponses);\n\n if (duplicateAlternateIndex === -1) {\n duplicateAlternateIndex = isAlternateDuplicated(alternateResponses);\n }\n\n duplicateCategory = category;\n }\n });\n\n if (duplicateAlternateIndex > -1) {\n errors.duplicateAlternate = { index: duplicateAlternateIndex, category: duplicateCategory };\n }\n\n if (!hasAssociations) {\n errors.associationError = 'At least one token should be assigned to at least one category.';\n }\n }\n\n if (!isEmpty(choicesErrors)) {\n errors.choicesErrors = choicesErrors;\n }\n\n if (!isEmpty(categoriesErrors)) {\n errors.categoriesErrors = categoriesErrors;\n }\n\n return errors;\n};\n"],"file":"index.js"}
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
7
|
-
"version": "9.13.7-next.
|
|
7
|
+
"version": "9.13.7-next.25+1be632237",
|
|
8
8
|
"description": "",
|
|
9
9
|
"author": "pie framework developers",
|
|
10
10
|
"license": "ISC",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"react-dnd": "^14.0.5",
|
|
21
21
|
"react-dom": "^16.8.1"
|
|
22
22
|
},
|
|
23
|
-
"gitHead": "
|
|
23
|
+
"gitHead": "1be6322375f0933165a37643c644a68d17856e6b",
|
|
24
24
|
"scripts": {
|
|
25
25
|
"postpublish": "../../scripts/postpublish"
|
|
26
26
|
},
|