@pie-element/number-line 6.3.2-next.8 → 6.3.2-next.90
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/arrows.js.map +1 -1
- package/configure/lib/card-bar.js.map +1 -1
- package/configure/lib/defaults.js.map +1 -1
- package/configure/lib/domain.js.map +1 -1
- package/configure/lib/index.js.map +1 -1
- package/configure/lib/main.js +1 -1
- package/configure/lib/main.js.map +1 -1
- package/configure/lib/number-text-field.js.map +1 -1
- package/configure/lib/point-config.js.map +1 -1
- package/configure/lib/size.js.map +1 -1
- package/configure/lib/ticks.js.map +1 -1
- package/configure/lib/utils.js.map +1 -1
- package/configure/package.json +2 -2
- package/controller/lib/defaults.js.map +1 -1
- package/controller/lib/index.js.map +1 -1
- package/docs/config-schema.json.md +1 -1
- package/docs/demo/config.js +2 -2
- package/docs/demo/generate.js +20 -20
- package/docs/demo/index.html +1 -1
- package/docs/pie-schema.json.md +1 -1
- package/lib/data-converter.js.map +1 -1
- package/lib/draggable/index.js.map +1 -1
- package/lib/index.js.map +1 -1
- package/lib/number-line/feedback.js.map +1 -1
- package/lib/number-line/graph/arrow.js.map +1 -1
- package/lib/number-line/graph/elements/base.js.map +1 -1
- package/lib/number-line/graph/elements/builder.js.map +1 -1
- package/lib/number-line/graph/elements/line.js.map +1 -1
- package/lib/number-line/graph/elements/point.js +1 -1
- package/lib/number-line/graph/elements/point.js.map +1 -1
- package/lib/number-line/graph/elements/ray.js.map +1 -1
- package/lib/number-line/graph/index.js.map +1 -1
- package/lib/number-line/graph/line.js.map +1 -1
- package/lib/number-line/graph/stacks.js.map +1 -1
- package/lib/number-line/graph/tick-utils.js.map +1 -1
- package/lib/number-line/graph/ticks.js.map +1 -1
- package/lib/number-line/index.js.map +1 -1
- package/lib/number-line/point-chooser/button.js.map +1 -1
- package/lib/number-line/point-chooser/index.js.map +1 -1
- package/lib/number-line/point-chooser/styles.js +1 -1
- package/lib/number-line/point-chooser/styles.js.map +1 -1
- package/lib/number-line/transitions/fade.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/arrows.jsx"],"names":["Arrows","props","change","key","event","value","update","arrows","onChange","changeLeft","bind","changeRight","classes","className","checkbox","left","right","React","Component","PropTypes","object","isRequired","string","shape","bool","func","styles","theme","paddingTop","spacing","unit"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;IAEaA,M;;;;;
|
|
1
|
+
{"version":3,"sources":["../src/arrows.jsx"],"names":["Arrows","props","change","key","event","value","update","arrows","onChange","changeLeft","bind","changeRight","classes","className","checkbox","left","right","React","Component","PropTypes","object","isRequired","string","shape","bool","func","styles","theme","paddingTop","spacing","unit"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;IAEaA,M;;;;;AAWX,kBAAYC,KAAZ,EAAmB;AAAA;;AAAA;AACjB,8BAAMA,KAAN;;AAEA,UAAKC,MAAL,GAAc,UAACC,GAAD,EAAMC,KAAN,EAAaC,KAAb,EAAuB;AACnC,UAAMC,MAAM,mCAAQ,MAAKL,KAAL,CAAWM,MAAnB,4CAA4BJ,GAA5B,EAAkCE,KAAlC,EAAZ;;AACA,YAAKJ,KAAL,CAAWO,QAAX,CAAoBF,MAApB;AACD,KAHD;;AAIA,UAAKG,UAAL,GAAkB,MAAKP,MAAL,CAAYQ,IAAZ,iDAAuB,MAAvB,CAAlB;AACA,UAAKC,WAAL,GAAmB,MAAKT,MAAL,CAAYQ,IAAZ,iDAAuB,OAAvB,CAAnB;AARiB;AASlB;;;;WAED,kBAAS;AACP,wBAAuC,KAAKT,KAA5C;AAAA,UAAQW,OAAR,eAAQA,OAAR;AAAA,UAAiBC,SAAjB,eAAiBA,SAAjB;AAAA,UAA4BN,MAA5B,eAA4BA,MAA5B;AACA,0BACE;AAAK,QAAA,SAAS,EAAE,4BAAGK,OAAO,CAACL,MAAX,EAAmBM,SAAnB;AAAhB,sBACE,gCAAC,uBAAD;AAAe,QAAA,SAAS,EAAED,OAAO,CAACE,QAAlC;AAA4C,QAAA,KAAK,EAAE,MAAnD;AAA2D,QAAA,OAAO,EAAEP,MAAM,CAACQ,IAA3E;AAAiF,QAAA,QAAQ,EAAE,KAAKN;AAAhG,QADF,uBAGE,gCAAC,uBAAD;AACE,QAAA,SAAS,EAAEG,OAAO,CAACE,QADrB;AAEE,QAAA,KAAK,EAAE,OAFT;AAGE,QAAA,OAAO,EAAEP,MAAM,CAACS,KAHlB;AAIE,QAAA,QAAQ,EAAE,KAAKL;AAJjB,QAHF,CADF;AAYD;;;EApCyBM,kBAAMC,S;;;iCAArBlB,M,eACQ;AACjBY,EAAAA,OAAO,EAAEO,sBAAUC,MAAV,CAAiBC,UADT;AAEjBR,EAAAA,SAAS,EAAEM,sBAAUG,MAFJ;AAGjBf,EAAAA,MAAM,EAAEY,sBAAUI,KAAV,CAAgB;AAAER,IAAAA,IAAI,EAAEI,sBAAUK,IAAlB;AAAwBR,IAAAA,KAAK,EAAEG,sBAAUK;AAAzC,GAAhB,EAAiEH,UAHxD;AAIjBb,EAAAA,QAAQ,EAAEW,sBAAUM;AAJH,C;iCADRzB,M,kBAOW;AACpBO,EAAAA,MAAM,EAAE;AAAEQ,IAAAA,IAAI,EAAE,IAAR;AAAcC,IAAAA,KAAK,EAAE;AAArB;AADY,C;;AA+BxB,IAAMU,MAAM,GAAG,SAATA,MAAS,CAACC,KAAD;AAAA,SAAY;AACzBpB,IAAAA,MAAM,EAAE;AACNqB,MAAAA,UAAU,EAAED,KAAK,CAACE,OAAN,CAAcC,IAAd,GAAqB;AAD3B;AADiB,GAAZ;AAAA,CAAf;;eAKe,wBAAWJ,MAAX,EAAmB1B,MAAnB,C","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport cn from 'classnames';\nimport { InputCheckbox } from '@pie-lib/config-ui';\n\nexport class Arrows extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n arrows: PropTypes.shape({ left: PropTypes.bool, right: PropTypes.bool }).isRequired,\n onChange: PropTypes.func,\n };\n static defaultProps = {\n arrows: { left: true, right: true },\n };\n\n constructor(props) {\n super(props);\n\n this.change = (key, event, value) => {\n const update = { ...this.props.arrows, [key]: value };\n this.props.onChange(update);\n };\n this.changeLeft = this.change.bind(this, 'left');\n this.changeRight = this.change.bind(this, 'right');\n }\n\n render() {\n const { classes, className, arrows } = this.props;\n return (\n <div className={cn(classes.arrows, className)}>\n <InputCheckbox className={classes.checkbox} label={'Left'} checked={arrows.left} onChange={this.changeLeft} />\n \n <InputCheckbox\n className={classes.checkbox}\n label={'Right'}\n checked={arrows.right}\n onChange={this.changeRight}\n />\n </div>\n );\n }\n}\nconst styles = (theme) => ({\n arrows: {\n paddingTop: theme.spacing.unit * 2,\n },\n});\nexport default withStyles(styles)(Arrows);\n"],"file":"arrows.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/card-bar.jsx"],"names":["CardBar","props","classes","header","children","mini","info","cardBar","flexContainer","tooltip","button","propTypes","PropTypes","object","bool","string","node","styles","theme","display","justifyContent","paddingBottom","spacing","unit","paddingTop","margin","padding","fontSize","alignItems"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA,IAAMA,OAAO,GAAG,SAAVA,OAAU,
|
|
1
|
+
{"version":3,"sources":["../src/card-bar.jsx"],"names":["CardBar","props","classes","header","children","mini","info","cardBar","flexContainer","tooltip","button","propTypes","PropTypes","object","bool","string","node","styles","theme","display","justifyContent","paddingBottom","spacing","unit","paddingTop","margin","padding","fontSize","alignItems"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA,IAAMA,OAAO,GAAG,SAAVA,OAAU,CAACC,KAAD,EAAW;AACzB,MAAQC,OAAR,GAAkDD,KAAlD,CAAQC,OAAR;AAAA,MAAiBC,MAAjB,GAAkDF,KAAlD,CAAiBE,MAAjB;AAAA,MAAyBC,QAAzB,GAAkDH,KAAlD,CAAyBG,QAAzB;AAAA,MAAmCC,IAAnC,GAAkDJ,KAAlD,CAAmCI,IAAnC;AAAA,MAAyCC,IAAzC,GAAkDL,KAAlD,CAAyCK,IAAzC;AACA,sBACE;AAAK,IAAA,SAAS,EAAEJ,OAAO,CAACK;AAAxB,kBACE;AAAK,IAAA,SAAS,EAAEL,OAAO,CAACM;AAAxB,kBACE,gCAAC,sBAAD;AAAY,IAAA,OAAO,EAAEH,IAAI,GAAG,YAAH,GAAkB;AAA3C,KAAkDF,MAAlD,CADF,EAEGG,IAFH,CADF,EAKGF,QAAQ,iBACP,gCAAC,mBAAD;AAAS,IAAA,KAAK,EAAEA,QAAhB;AAA0B,IAAA,OAAO,EAAE;AAAEK,MAAAA,OAAO,EAAEP,OAAO,CAACO;AAAnB;AAAnC,kBACE,gCAAC,sBAAD;AAAY,kBAAW,QAAvB;AAAgC,IAAA,SAAS,EAAEP,OAAO,CAACQ;AAAnD,kBACE,gCAAC,uBAAD,OADF,CADF,CANJ,CADF;AAeD,CAjBD;;AAmBAV,OAAO,CAACW,SAAR,GAAoB;AAClBT,EAAAA,OAAO,EAAEU,sBAAUC,MADD;AAElBR,EAAAA,IAAI,EAAEO,sBAAUE,IAFE;AAGlBX,EAAAA,MAAM,EAAES,sBAAUG,MAHA;AAIlBX,EAAAA,QAAQ,EAAEQ,sBAAUI;AAJF,CAApB;;AAMA,IAAMC,MAAM,GAAG,SAATA,MAAS,CAACC,KAAD;AAAA,SAAY;AACzBX,IAAAA,OAAO,EAAE;AACPY,MAAAA,OAAO,EAAE,MADF;AAEPC,MAAAA,cAAc,EAAE,eAFT;AAGPC,MAAAA,aAAa,EAAEH,KAAK,CAACI,OAAN,CAAcC,IAAd,GAAqB,CAH7B;AAIPC,MAAAA,UAAU,EAAEN,KAAK,CAACI,OAAN,CAAcC,IAAd,GAAqB;AAJ1B,KADgB;AAOzBb,IAAAA,MAAM,EAAE;AACNe,MAAAA,MAAM,EAAE,CADF;AAENC,MAAAA,OAAO,EAAE;AAFH,KAPiB;AAWzBjB,IAAAA,OAAO,EAAE;AACPkB,MAAAA,QAAQ,EAAE;AADH,KAXgB;AAczBnB,IAAAA,aAAa,EAAE;AACbW,MAAAA,OAAO,EAAE,MADI;AAEbS,MAAAA,UAAU,EAAE;AAFC;AAdU,GAAZ;AAAA,CAAf;;eAmBe,wBAAWX,MAAX,EAAmBjB,OAAnB,C","sourcesContent":["import { withStyles } from '@material-ui/core/styles';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport HelpIcon from '@material-ui/icons/HelpOutline';\nimport IconButton from '@material-ui/core/IconButton';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport Typography from '@material-ui/core/Typography';\n\nconst CardBar = (props) => {\n const { classes, header, children, mini, info } = props;\n return (\n <div className={classes.cardBar}>\n <div className={classes.flexContainer}>\n <Typography variant={mini ? 'subheading' : 'h5'}>{header}</Typography>\n {info}\n </div>\n {children && (\n <Tooltip title={children} classes={{ tooltip: classes.tooltip }}>\n <IconButton aria-label=\"Delete\" className={classes.button}>\n <HelpIcon />\n </IconButton>\n </Tooltip>\n )}\n </div>\n );\n};\n\nCardBar.propTypes = {\n classes: PropTypes.object,\n mini: PropTypes.bool,\n header: PropTypes.string,\n children: PropTypes.node,\n};\nconst styles = (theme) => ({\n cardBar: {\n display: 'flex',\n justifyContent: 'space-between',\n paddingBottom: theme.spacing.unit * 2,\n paddingTop: theme.spacing.unit * 2,\n },\n button: {\n margin: 0,\n padding: 0,\n },\n tooltip: {\n fontSize: '12px',\n },\n flexContainer: {\n display: 'flex',\n alignItems: 'center',\n },\n});\nexport default withStyles(styles)(CardBar);\n"],"file":"card-bar.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/defaults.js"],"names":["model","correctResponse","graph","domain","min","max","ticks","minor","major","arrows","left","right","maxNumberOfPoints","width","initialType","exhibitOnly","toolbarEditorPosition","availableTypes","PF","LFF","LEF","LFE","LEE","RFN","RFP","REN","REP","initialElements","feedback","correct","type","incorrect","partial","configuration","prompt","settings","label","spellCheck","enabled"],"mappings":";;;;;;AAAO,IAAMA,KAAK,GAAG;AACnBC,EAAAA,eAAe,EAAE,EADE;AAEnBC,EAAAA,KAAK,EAAE;AACLC,IAAAA,MAAM,EAAE;AAAEC,MAAAA,GAAG,EAAE,CAAC,CAAR;AAAWC,MAAAA,GAAG,EAAE;AAAhB,KADH;AAELC,IAAAA,KAAK,EAAE;AACLC,MAAAA,KAAK,EAAE,CADF;AAELC,MAAAA,KAAK,EAAE;AAFF,KAFF;AAMLC,IAAAA,MAAM,EAAE;AACNC,MAAAA,IAAI,EAAE,IADA;AAENC,MAAAA,KAAK,EAAE;AAFD,KANH;AAULC,IAAAA,iBAAiB,EAAE,EAVd;AAWLC,IAAAA,KAAK,EAAE,GAXF;AAYLC,IAAAA,WAAW,EAAE,IAZR;AAaLC,IAAAA,WAAW,EAAE,KAbR;AAcLC,IAAAA,qBAAqB,EAAE,QAdlB;AAeLC,IAAAA,cAAc,EAAE;AACdC,MAAAA,EAAE,EAAE,IADU;AAEdC,MAAAA,GAAG,EAAE,IAFS;AAGdC,MAAAA,GAAG,EAAE,IAHS;AAIdC,MAAAA,GAAG,EAAE,IAJS;AAKdC,MAAAA,GAAG,EAAE,IALS;AAMdC,MAAAA,GAAG,EAAE,IANS;AAOdC,MAAAA,GAAG,EAAE,IAPS;AAQdC,MAAAA,GAAG,EAAE,IARS;AASdC,MAAAA,GAAG,EAAE;AATS,KAfX;AA0BLC,IAAAA,eAAe,EAAE;AA1BZ,GAFY;AA8BnBC,EAAAA,QAAQ,EAAE;AACRC,IAAAA,OAAO,EAAE;AACP,iBAAS,SADF;AAEPC,MAAAA,IAAI,EAAE;AAFC,KADD;AAKRC,IAAAA,SAAS,EAAE;AACT,iBAAS,WADA;AAETD,MAAAA,IAAI,EAAE;AAFG,KALH;AASRE,IAAAA,OAAO,EAAE;AACP,iBAAS,QADF;AAEPF,MAAAA,IAAI,EAAE;AAFC;AATD;AA9BS,CAAd;;AA8CA,IAAMG,aAAa,GAAG;AAC3BC,EAAAA,MAAM,EAAE;AACNC,IAAAA,QAAQ,EAAE,IADJ;AAENC,IAAAA,KAAK,EAAE;AAFD,GADmB;AAK3BC,EAAAA,UAAU,EAAE;AACVD,IAAAA,KAAK,EAAE,YADG;AAEVD,IAAAA,QAAQ,
|
|
1
|
+
{"version":3,"sources":["../src/defaults.js"],"names":["model","correctResponse","graph","domain","min","max","ticks","minor","major","arrows","left","right","maxNumberOfPoints","width","initialType","exhibitOnly","toolbarEditorPosition","availableTypes","PF","LFF","LEF","LFE","LEE","RFN","RFP","REN","REP","initialElements","feedback","correct","type","incorrect","partial","configuration","prompt","settings","label","spellCheck","enabled"],"mappings":";;;;;;AAAO,IAAMA,KAAK,GAAG;AACnBC,EAAAA,eAAe,EAAE,EADE;AAEnBC,EAAAA,KAAK,EAAE;AACLC,IAAAA,MAAM,EAAE;AAAEC,MAAAA,GAAG,EAAE,CAAC,CAAR;AAAWC,MAAAA,GAAG,EAAE;AAAhB,KADH;AAELC,IAAAA,KAAK,EAAE;AACLC,MAAAA,KAAK,EAAE,CADF;AAELC,MAAAA,KAAK,EAAE;AAFF,KAFF;AAMLC,IAAAA,MAAM,EAAE;AACNC,MAAAA,IAAI,EAAE,IADA;AAENC,MAAAA,KAAK,EAAE;AAFD,KANH;AAULC,IAAAA,iBAAiB,EAAE,EAVd;AAWLC,IAAAA,KAAK,EAAE,GAXF;AAYLC,IAAAA,WAAW,EAAE,IAZR;AAaLC,IAAAA,WAAW,EAAE,KAbR;AAcLC,IAAAA,qBAAqB,EAAE,QAdlB;AAeLC,IAAAA,cAAc,EAAE;AACdC,MAAAA,EAAE,EAAE,IADU;AAEdC,MAAAA,GAAG,EAAE,IAFS;AAGdC,MAAAA,GAAG,EAAE,IAHS;AAIdC,MAAAA,GAAG,EAAE,IAJS;AAKdC,MAAAA,GAAG,EAAE,IALS;AAMdC,MAAAA,GAAG,EAAE,IANS;AAOdC,MAAAA,GAAG,EAAE,IAPS;AAQdC,MAAAA,GAAG,EAAE,IARS;AASdC,MAAAA,GAAG,EAAE;AATS,KAfX;AA0BLC,IAAAA,eAAe,EAAE;AA1BZ,GAFY;AA8BnBC,EAAAA,QAAQ,EAAE;AACRC,IAAAA,OAAO,EAAE;AACP,iBAAS,SADF;AAEPC,MAAAA,IAAI,EAAE;AAFC,KADD;AAKRC,IAAAA,SAAS,EAAE;AACT,iBAAS,WADA;AAETD,MAAAA,IAAI,EAAE;AAFG,KALH;AASRE,IAAAA,OAAO,EAAE;AACP,iBAAS,QADF;AAEPF,MAAAA,IAAI,EAAE;AAFC;AATD;AA9BS,CAAd;;AA8CA,IAAMG,aAAa,GAAG;AAC3BC,EAAAA,MAAM,EAAE;AACNC,IAAAA,QAAQ,EAAE,IADJ;AAENC,IAAAA,KAAK,EAAE;AAFD,GADmB;AAK3BC,EAAAA,UAAU,EAAE;AACVD,IAAAA,KAAK,EAAE,YADG;AAEVD,IAAAA,QAAQ,EAAE,KAFA;AAGVG,IAAAA,OAAO,EAAE;AAHC;AALe,CAAtB","sourcesContent":["export const model = {\n correctResponse: [],\n graph: {\n domain: { min: -5, max: 5 },\n ticks: {\n minor: 1,\n major: 2,\n },\n arrows: {\n left: true,\n right: true,\n },\n maxNumberOfPoints: 20,\n width: 500,\n initialType: 'PF',\n exhibitOnly: false,\n toolbarEditorPosition: 'bottom',\n availableTypes: {\n PF: true,\n LFF: true,\n LEF: true,\n LFE: true,\n LEE: true,\n RFN: true,\n RFP: true,\n REN: true,\n REP: true,\n },\n initialElements: [],\n },\n feedback: {\n correct: {\n default: 'Correct',\n type: 'none',\n },\n incorrect: {\n default: 'Incorrect',\n type: 'none',\n },\n partial: {\n default: 'Nearly',\n type: 'none',\n },\n },\n};\n\nexport const configuration = {\n prompt: {\n settings: true,\n label: 'Prompt',\n },\n spellCheck: {\n label: 'Spellcheck',\n settings: false,\n enabled: true,\n },\n};\n"],"file":"defaults.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/domain.jsx"],"names":["DOMAIN_BEGIN","DOMAIN_END","sort","domain","min","max","Domain","props","changeMin","change","bind","changeMax","key","event","value","onChange","update","React","Component","propTypes","PropTypes","shape","number","func","isRequired"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;;;;;;;;;AAEA,IAAMA,YAAY,GAAG,aAArB;AACA,IAAMC,UAAU,GAAG,WAAnB;;AAEA,IAAMC,IAAI,GAAG,SAAPA,IAAO,
|
|
1
|
+
{"version":3,"sources":["../src/domain.jsx"],"names":["DOMAIN_BEGIN","DOMAIN_END","sort","domain","min","max","Domain","props","changeMin","change","bind","changeMax","key","event","value","onChange","update","React","Component","propTypes","PropTypes","shape","number","func","isRequired"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;;;;;;;;;AAEA,IAAMA,YAAY,GAAG,aAArB;AACA,IAAMC,UAAU,GAAG,WAAnB;;AAEA,IAAMC,IAAI,GAAG,SAAPA,IAAO,CAACC,MAAD,EAAY;AACvB,MAAIA,MAAM,CAACC,GAAP,IAAcD,MAAM,CAACE,GAAzB,EAA8B;AAC5B,WAAOF,MAAP;AACD;;AAED,SAAO;AAAEC,IAAAA,GAAG,EAAED,MAAM,CAACE,GAAd;AAAmBA,IAAAA,GAAG,EAAEF,MAAM,CAACC;AAA/B,GAAP;AACD,CAND;;IAQaE,M;;;;;AACX,kBAAYC,KAAZ,EAAmB;AAAA;;AAAA;AACjB,8BAAMA,KAAN;AAEA,UAAKC,SAAL,GAAiB,MAAKC,MAAL,CAAYC,IAAZ,iDAAuB,KAAvB,CAAjB;AACA,UAAKC,SAAL,GAAiB,MAAKF,MAAL,CAAYC,IAAZ,iDAAuB,KAAvB,CAAjB;AAJiB;AAKlB;;;;WAED,gBAAOE,GAAP,EAAYC,KAAZ,EAAmBC,KAAnB,EAA0B;AACxB,UAAQC,QAAR,GAAqB,KAAKR,KAA1B,CAAQQ,QAAR;;AACA,UAAMC,MAAM,mCAAQ,KAAKT,KAAL,CAAWJ,MAAnB,4CAA4BS,GAA5B,EAAkCE,KAAlC,EAAZ;;AACAC,MAAAA,QAAQ,CAACb,IAAI,CAACc,MAAD,CAAL,CAAR;AACD;;;WAED,kBAAS;AACP,UAAQb,MAAR,GAAmB,KAAKI,KAAxB,CAAQJ,MAAR;AAEA,0BACE,0DAEE,gCAAC,0BAAD;AAAW,QAAA,KAAK,EAAC,SAAjB;AAA2B,QAAA,KAAK,EAAEA,MAAM,CAACC,GAAzC;AAA8C,QAAA,IAAI,EAAEJ,YAApD;AAAkE,QAAA,QAAQ,EAAE,KAAKQ;AAAjF,QAFF,eAGE,gCAAC,0BAAD;AAAW,QAAA,KAAK,EAAC,SAAjB;AAA2B,QAAA,KAAK,EAAEL,MAAM,CAACE,GAAzC;AAA8C,QAAA,IAAI,EAAEJ,UAApD;AAAgE,QAAA,QAAQ,EAAE,KAAKU;AAA/E,QAHF,CADF;AAOD;;;EAxByBM,kBAAMC,S;;;AA0BlCZ,MAAM,CAACa,SAAP,GAAmB;AACjBhB,EAAAA,MAAM,EAAEiB,sBAAUC,KAAV,CAAgB;AAAEjB,IAAAA,GAAG,EAAEgB,sBAAUE,MAAjB;AAAyBjB,IAAAA,GAAG,EAAEe,sBAAUE;AAAxC,GAAhB,CADS;AAEjBP,EAAAA,QAAQ,EAAEK,sBAAUG,IAAV,CAAeC;AAFR,CAAnB;eAIelB,M","sourcesContent":["import { MiniField } from './number-text-field';\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nconst DOMAIN_BEGIN = 'domainBegin';\nconst DOMAIN_END = 'domainEnd';\n\nconst sort = (domain) => {\n if (domain.min <= domain.max) {\n return domain;\n }\n\n return { min: domain.max, max: domain.min };\n};\n\nexport class Domain extends React.Component {\n constructor(props) {\n super(props);\n\n this.changeMin = this.change.bind(this, 'min');\n this.changeMax = this.change.bind(this, 'max');\n }\n\n change(key, event, value) {\n const { onChange } = this.props;\n const update = { ...this.props.domain, [key]: value };\n onChange(sort(update));\n }\n\n render() {\n const { domain } = this.props;\n\n return (\n <div>\n {/* <Typography>Domain</Typography> */}\n <MiniField label=\"Minimum\" value={domain.min} name={DOMAIN_BEGIN} onChange={this.changeMin} />\n <MiniField label=\"Maximum\" value={domain.max} name={DOMAIN_END} onChange={this.changeMax} />\n </div>\n );\n }\n}\nDomain.propTypes = {\n domain: PropTypes.shape({ min: PropTypes.number, max: PropTypes.number }),\n onChange: PropTypes.func.isRequired,\n};\nexport default Domain;\n"],"file":"domain.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.js"],"names":["updateTicks","model","graph","domain","labelStep","ticks","minor","major","min","Number","toFixed","max","match","fraction","step","math","evaluate","NumberLine","o","_model","dispatchEvent","ModelUpdatedEvent","_rerender","createDefaultModel","_configuration","defaults","configuration","s","handler","InsertSoundEvent","src","done","DeleteSoundEvent","element","React","createElement","Main","onChange","uploadSoundSupport","add","insertSound","bind","onDeleteSound","ReactDOM","render","HTMLElement","normalizedModel"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;
|
|
1
|
+
{"version":3,"sources":["../src/index.js"],"names":["updateTicks","model","graph","domain","labelStep","ticks","minor","major","min","Number","toFixed","max","match","fraction","step","math","evaluate","NumberLine","o","_model","dispatchEvent","ModelUpdatedEvent","_rerender","createDefaultModel","_configuration","defaults","configuration","s","handler","InsertSoundEvent","src","done","DeleteSoundEvent","element","React","createElement","Main","onChange","uploadSoundSupport","add","insertSound","bind","onDeleteSound","ReactDOM","render","HTMLElement","normalizedModel"],"mappings":"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","sourcesContent":["import Main from './main';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { ModelUpdatedEvent, InsertSoundEvent, DeleteSoundEvent } from '@pie-framework/pie-configure-events';\nimport * as defaults from './defaults';\nimport * as math from 'mathjs';\n\n// this function is duplicated in controller; at some point, use the same shared function\nconst updateTicks = (model) => {\n const { graph: { domain, labelStep, ticks = {} } = {} } = model;\n const { minor, major } = ticks;\n\n if (domain) {\n domain.min = Number((domain.min || 0).toFixed(2));\n domain.max = Number((domain.max || 0).toFixed(2));\n }\n\n if (labelStep && typeof labelStep === 'string' && labelStep.match(/^[1-9][0-9]*\\/[1-9][0-9]*$/g)) {\n model.graph.fraction = true;\n\n // update the ticks frequency and label value to match the label step if needed\n const step = math.evaluate(labelStep);\n\n if (step !== major) {\n ticks.major = step;\n ticks.minor = step / (major / minor);\n }\n }\n\n return model;\n};\n\nexport default class NumberLine extends HTMLElement {\n static createDefaultModel = (model = {}) => {\n const normalizedModel = {\n ...defaults.model,\n ...model,\n };\n\n return updateTicks(normalizedModel);\n };\n\n constructor() {\n super();\n this._model = NumberLine.createDefaultModel();\n this._configuration = defaults.configuration;\n }\n\n set model(s) {\n this._model = NumberLine.createDefaultModel(s);\n this._rerender();\n }\n\n onChange = (o) => {\n this._model = { ...this._model, ...o };\n\n this.dispatchEvent(new ModelUpdatedEvent(this._model));\n\n this._rerender();\n };\n\n insertSound(handler) {\n this.dispatchEvent(new InsertSoundEvent(handler));\n }\n\n onDeleteSound(src, done) {\n this.dispatchEvent(new DeleteSoundEvent(src, done));\n }\n\n _rerender() {\n let element = React.createElement(Main, {\n model: this._model,\n configuration: this._configuration,\n onChange: this.onChange,\n uploadSoundSupport: {\n add: this.insertSound.bind(this),\n delete: this.onDeleteSound.bind(this),\n },\n });\n ReactDOM.render(element, this);\n }\n}\n"],"file":"index.js"}
|
package/configure/lib/main.js
CHANGED
|
@@ -573,7 +573,7 @@ var Main = /*#__PURE__*/function (_React$Component) {
|
|
|
573
573
|
onClick: this.setDefaults
|
|
574
574
|
}, "Reset to default values"), /*#__PURE__*/_react["default"].createElement("br", null), /*#__PURE__*/_react["default"].createElement("br", null), !graph.exhibitOnly && /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement(_cardBar["default"], {
|
|
575
575
|
header: "Correct Response"
|
|
576
|
-
}, "Select answer type and place it on the number line. Intersecting points, line segments and/or rays will appear above the number line.",
|
|
576
|
+
}, "Select answer type and place it on the number line. Intersecting points, line segments and/or rays will appear above the number line. ", /*#__PURE__*/_react["default"].createElement("i", null, "Note: A maximum of 20 points, line segments or rays may be plotted.")), pointsError && /*#__PURE__*/_react["default"].createElement("div", {
|
|
577
577
|
className: classes.errorText
|
|
578
578
|
}, pointsError), correctResponseError && /*#__PURE__*/_react["default"].createElement("div", {
|
|
579
579
|
className: classes.errorText
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/main.jsx"],"names":["trimModel","model","feedback","undefined","prompt","graph","title","correctResponse","lineIsSwitched","dataConverter","switchGraphLine","toGraphFormat","toSessionFormat","styles","theme","maxNumberOfPoints","width","checkbox","marginTop","spacing","unit","row","display","flexWrap","paddingRight","hide","opacity","resetDefaults","margin","pointTypeChooser","promptHolder","paddingBottom","marginBottom","paddingTop","section","padding","tooltip","fontSize","whiteSpace","maxWidth","inlineFlexContainer","errorText","color","toPointType","response","rest","pointType","direction","leftPoint","rightPoint","type","toUpperCase","Main","props","o","onChange","height","graphChange","availableTypes","onlyPFAvailable","Object","entries","forEach","value","e","getAdjustedHeight","ticks","tickUtils","snapElements","domain","initialElements","arrows","defaultModel","event","exhibitOnly","index","el","position","update","Set","map","indices","filter","v","some","d","data","push","pop","addInitialView","classes","configuration","uploadSoundSupport","spellCheckEnabled","errors","spellCheck","widthError","domainError","maxError","pointsError","correctResponseError","validationMessage","initialView","toolbarOpts","toolbarEditorPosition","root","settings","label","language","marginLeft","changeSize","changeTicks","changeArrows","changeGraphTitle","changeMaxNoOfPoints","setDefaults","moveCorrectResponse","deleteCorrectResponse","addCorrectResponse","clearCorrectResponse","undoCorrectResponse","availableTypesChange","moveInitialView","deleteInitialView","onAddElement","clearInitialView","undoInitialView","exhibitChanged","React","Component","PropTypes","object","isRequired","func","name"],"mappings":"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","sourcesContent":["import { InputCheckbox, FeedbackConfig, FormSection } from '@pie-lib/config-ui';\nimport NumberTextField from './number-text-field';\nimport CardBar from './card-bar';\nimport {\n NumberLineComponent,\n dataConverter,\n tickUtils\n} from '@pie-element/number-line';\nimport Size from './size';\nimport PropTypes from 'prop-types';\nimport Button from '@material-ui/core/Button';\nimport Domain from './domain';\nimport Arrows from './arrows';\nimport PointConfig from './point-config';\nimport React from 'react';\nimport cloneDeep from 'lodash/cloneDeep';\nimport { withStyles } from '@material-ui/core/styles';\nimport EditableHtml from '@pie-lib/editable-html';\nimport Info from '@material-ui/icons/Info';\nimport Tooltip from '@material-ui/core/Tooltip';\n\nimport Ticks from './ticks';\nimport { model as defaultModel } from './defaults';\nimport { generateValidationMessage } from './utils';\n\nconst trimModel = model => ({\n ...model,\n feedback: undefined,\n prompt: undefined,\n graph: { ...model.graph, title: undefined },\n correctResponse: undefined\n});\n\nconst {\n lineIsSwitched,\n switchGraphLine,\n toGraphFormat,\n toSessionFormat\n} = dataConverter;\n\nconst styles = theme => ({\n maxNumberOfPoints: {\n width: '150px'\n },\n checkbox: {\n marginTop: theme.spacing.unit * 2\n },\n row: {\n display: 'flex',\n flexWrap: 'wrap',\n '& > *': {\n paddingRight: theme.spacing.unit * 2\n }\n },\n hide: {\n opacity: 0.5\n },\n resetDefaults: {\n margin: '20px 0'\n },\n pointTypeChooser: {\n margin: '20px 0'\n },\n promptHolder: {\n width: '100%',\n paddingBottom: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2\n },\n prompt: {\n paddingTop: theme.spacing.unit * 2,\n width: '100%'\n },\n section: {\n margin: 0,\n padding: 0\n },\n tooltip: {\n fontSize: '12px',\n whiteSpace: 'pre',\n maxWidth: '500px'\n },\n inlineFlexContainer: {\n display: 'inline-flex',\n },\n errorText: {\n fontSize: '12px',\n color: 'red',\n padding: '5px 0'\n }\n});\n\nexport const toPointType = response => {\n function rest(response) {\n if (response.pointType) {\n if (response.direction) {\n return `${response.pointType[0]}${response.direction[0]}`;\n }\n return response.pointType[0];\n } else {\n return `${response.leftPoint[0]}${response.rightPoint[0]}`;\n }\n }\n return `${response.type[0]}${rest(response)}`.toUpperCase();\n};\n\nexport class Main extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n model: PropTypes.object.isRequired,\n configuration: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n uploadSoundSupport: PropTypes.object.isRequired\n };\n\n constructor(props) {\n super(props);\n const { model: { graph: { availableTypes, maxNumberOfPoints }}} = props;\n const height = this.getAdjustedHeight(availableTypes, maxNumberOfPoints);\n\n this.graphChange({ height });\n }\n\n graphChange = o => {\n const { onChange } = this.props;\n const graph = { ...this.props.model.graph, ...o };\n onChange({ graph });\n };\n\n changeSize = ({ width, height }) => this.graphChange({ width, height });\n\n getAdjustedHeight = (availableTypes, maxNumberOfPoints) => {\n let onlyPFAvailable = true;\n\n Object.entries(availableTypes || {}).forEach(([type, value]) => {\n if (type !== 'PF' && value) {\n onlyPFAvailable = false;\n return;\n }\n });\n\n const height = maxNumberOfPoints && (maxNumberOfPoints === 1 || onlyPFAvailable)\n ? 100 : (50 + (maxNumberOfPoints || 20) * 25);\n\n return height;\n };\n\n changeMaxNoOfPoints = (e, maxNumberOfPoints) => {\n const { model : { graph: { availableTypes }}} = this.props;\n const height = this.getAdjustedHeight(availableTypes, maxNumberOfPoints);\n\n this.graphChange({ maxNumberOfPoints, height });\n };\n\n changeGraphTitle = title => this.graphChange({ title });\n\n changeTicks = ticks => {\n const { model, onChange } = this.props;\n const correctResponse = tickUtils.snapElements(\n model.graph.domain,\n ticks,\n model.correctResponse\n );\n const initialElements = tickUtils.snapElements(\n model.graph.domain,\n ticks,\n model.graph.initialElements\n );\n\n const graph = { ...this.props.model.graph, ticks, initialElements };\n onChange({ graph, correctResponse });\n };\n\n changeArrows = arrows => this.graphChange({ arrows });\n\n setDefaults = () => {\n const { graph: { availableTypes, maxNumberOfPoints }} = defaultModel;\n const height = this.getAdjustedHeight(availableTypes, maxNumberOfPoints);\n const graph = { ...cloneDeep(defaultModel.graph), height };\n\n this.props.onChange({ graph });\n };\n\n exhibitChanged = (event, value) => {\n const graph = { ...this.props.model.graph, exhibitOnly: value };\n this.props.onChange({ graph });\n };\n\n moveCorrectResponse = (index, el, position) => {\n const { onChange, model } = this.props;\n el.position = position;\n const update = toSessionFormat(\n el.type === 'line' && lineIsSwitched(el) ? switchGraphLine(el) : el\n );\n const correctResponse = [...model.correctResponse];\n correctResponse[index] = update;\n onChange({ correctResponse });\n };\n\n moveInitialView = (index, el, position) => {\n const { model, onChange } = this.props;\n el.position = position;\n const update = toSessionFormat(\n el.type === 'line' && lineIsSwitched(el) ? switchGraphLine(el) : el\n );\n const initialElements = [...this.props.model.graph.initialElements];\n initialElements[index] = update;\n const graph = { ...model.graph, initialElements };\n onChange({ graph });\n };\n\n availableTypesChange = availableTypes => {\n const { model, onChange } = this.props;\n const { correctResponse, graph: { maxNumberOfPoints }} = model;\n\n new Set(correctResponse.map(toPointType)).forEach(pointType => {\n availableTypes[pointType] = true;\n });\n\n const height = this.getAdjustedHeight(availableTypes, maxNumberOfPoints);\n const graph = { ...model.graph, availableTypes, height };\n\n onChange({ graph });\n };\n\n deleteCorrectResponse = indices => {\n const { model, onChange } = this.props;\n const correctResponse = model.correctResponse.filter((v, index) => {\n return !indices.some(d => d === index);\n });\n onChange({ correctResponse });\n };\n\n deleteInitialView = indices => {\n const { model, onChange } = this.props;\n const initialElements = model.graph.initialElements.filter((v, index) => {\n return !indices.some(d => d === index);\n });\n const graph = { ...model.graph, initialElements };\n onChange({ graph });\n };\n\n addCorrectResponse = data => {\n const { model, onChange } = this.props;\n const correctResponse = [...model.correctResponse];\n correctResponse.push(toSessionFormat(data));\n onChange({ correctResponse });\n };\n\n addInitialView = data => {\n const { onChange, model } = this.props;\n const graph = { ...model.graph };\n graph.initialElements = graph.initialElements || [];\n graph.initialElements.push(toSessionFormat(data));\n onChange({ graph });\n };\n\n clearCorrectResponse = () => {\n const { onChange } = this.props;\n const correctResponse = [];\n onChange({ correctResponse });\n };\n\n clearInitialView = () => {\n const { model, onChange } = this.props;\n const initialElements = [];\n const graph = { ...model.graph, initialElements };\n onChange({ graph });\n };\n\n undoCorrectResponse = () => {\n const { model, onChange } = this.props;\n const correctResponse = [...model.correctResponse];\n correctResponse.pop();\n onChange({ correctResponse });\n };\n\n undoInitialView = () => {\n const { onChange, model } = this.props;\n const graph = { ...model.graph };\n graph.initialElements = graph.initialElements || [];\n graph.initialElements.pop();\n onChange({ graph });\n };\n\n onAddElement = this.addInitialView;\n\n render() {\n const { classes, model, onChange, configuration, uploadSoundSupport } = this.props;\n\n const { graph, spellCheckEnabled, errors } = model || {};\n const { prompt = {}, spellCheck = {} } = configuration || {};\n const { widthError, domainError, maxError, pointsError, correctResponseError } = errors || {};\n const validationMessage = generateValidationMessage();\n\n const correctResponse = cloneDeep(model.correctResponse || []).map(\n toGraphFormat\n );\n\n const initialView = cloneDeep(graph.initialElements || []).map(\n toGraphFormat\n );\n const toolbarOpts = {};\n\n switch (model.toolbarEditorPosition) {\n case 'top':\n toolbarOpts.position = 'top';\n break;\n default:\n toolbarOpts.position = 'bottom';\n break;\n }\n\n return (\n <div className={classes.root}>\n\n {prompt.settings && (\n <FormSection label={prompt.label}>\n <EditableHtml\n className={classes.prompt}\n markup={model.prompt}\n onChange={prompt => onChange({ prompt })}\n nonEmpty={false}\n disableUnderline\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n />\n </FormSection>\n )}\n <CardBar\n header=\"Attributes\"\n info={<Tooltip\n classes={{tooltip: classes.tooltip}}\n disableFocusListener\n disableTouchListener\n placement={'right'}\n title={validationMessage}\n >\n <Info fontSize={'small'} color={'primary'} style={{ marginLeft: '5px' }}/>\n </Tooltip>}\n >\n Set up the number line by entering the domain and number of tick marks\n to display. Labels on the number line can be edited or removed by\n clicking on the label.\n </CardBar>\n\n {widthError && <div className={classes.errorText}>{widthError}</div>}\n {domainError && <div className={classes.errorText}>{domainError}</div>}\n {maxError && <div className={classes.errorText}>{maxError}</div>}\n\n <div className={classes.row}>\n <FormSection label={'Size'}>\n <Size size={graph} onChange={this.changeSize} />\n </FormSection>\n\n <FormSection label={'Domain'}>\n <Domain\n domain={graph.domain}\n onChange={domain => this.graphChange({ domain })}\n />\n </FormSection>\n </div>\n <div className={classes.row}>\n <FormSection label={'Ticks'}>\n <Ticks\n ticks={graph.ticks}\n onChange={this.changeTicks}\n domain={graph.domain}\n />\n </FormSection>\n <FormSection label={'Arrows'}>\n <Arrows arrows={graph.arrows} onChange={this.changeArrows} />\n </FormSection>\n </div>\n <FormSection label={'Title'}>\n <EditableHtml\n markup={graph.title || ''}\n onChange={this.changeGraphTitle}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n />\n </FormSection>\n <FormSection label={'Limits'}>\n <NumberTextField\n className={classes.maxNumberOfPoints}\n label=\"Max No of Elements\"\n min={1}\n max={20}\n value={graph.maxNumberOfPoints}\n onChange={this.changeMaxNoOfPoints}\n />\n </FormSection>\n <Button\n variant=\"outlined\"\n mini\n color=\"primary\"\n onClick={this.setDefaults}\n >\n Reset to default values\n </Button>\n <br />\n <br />\n\n {!graph.exhibitOnly && (\n <div>\n <CardBar header=\"Correct Response\">\n Select answer type and place it on the number line. Intersecting\n points, line segments and/or rays will appear above the number\n line.{' '}\n <i>\n Note: A maximum of 20 points, line segments or rays may be\n plotted.\n </i>\n </CardBar>\n\n {pointsError && <div className={classes.errorText}>{pointsError}</div>}\n {correctResponseError && <div className={classes.errorText}>{correctResponseError}</div>}\n\n <NumberLineComponent\n onMoveElement={this.moveCorrectResponse}\n onDeleteElements={this.deleteCorrectResponse}\n onAddElement={this.addCorrectResponse}\n onClearElements={this.clearCorrectResponse}\n onUndoElement={this.undoCorrectResponse}\n answer={correctResponse}\n //strip feedback for this model\n model={trimModel(model)}\n />\n <CardBar header=\"Available Types\" mini>\n Click on the input options to be displayed to the students. All\n inputs will display by default.\n </CardBar>\n <div className={classes.pointTypeChooser}>\n <PointConfig\n onSelectionChange={this.availableTypesChange}\n selection={graph.availableTypes}\n />\n </div>\n </div>\n )}\n <CardBar header=\"Initial view/Make Exhibit\">\n Use this number line to set a starting point, line segment or ray.\n This is optional. <br />\n This number line may also be used to make an exhibit number line,\n which can not be manipulated by a student.\n </CardBar>\n <NumberLineComponent\n onMoveElement={this.moveInitialView}\n onDeleteElements={this.deleteInitialView}\n onAddElement={this.onAddElement}\n onClearElements={this.clearInitialView}\n onUndoElement={this.undoInitialView}\n answer={initialView}\n model={trimModel(model)}\n />\n <InputCheckbox\n label=\"Make exhibit\"\n className={classes.checkbox}\n checked={graph.exhibitOnly}\n onChange={this.exhibitChanged}\n value={'exhibitOnly'}\n />\n\n {!graph.exhibitOnly && (\n <React.Fragment>\n <br />\n <FeedbackConfig\n feedback={model.feedback}\n onChange={feedback => onChange({ feedback })}\n toolbarOpts={toolbarOpts}\n />\n </React.Fragment>\n )}\n </div>\n );\n }\n}\n\nexport default withStyles(styles, { name: 'Main' })(Main);\n"],"file":"main.js"}
|
|
1
|
+
{"version":3,"sources":["../src/main.jsx"],"names":["trimModel","model","feedback","undefined","prompt","graph","title","correctResponse","lineIsSwitched","dataConverter","switchGraphLine","toGraphFormat","toSessionFormat","styles","theme","maxNumberOfPoints","width","checkbox","marginTop","spacing","unit","row","display","flexWrap","paddingRight","hide","opacity","resetDefaults","margin","pointTypeChooser","promptHolder","paddingBottom","marginBottom","paddingTop","section","padding","tooltip","fontSize","whiteSpace","maxWidth","inlineFlexContainer","errorText","color","toPointType","response","rest","pointType","direction","leftPoint","rightPoint","type","toUpperCase","Main","props","o","onChange","height","graphChange","availableTypes","onlyPFAvailable","Object","entries","forEach","value","e","getAdjustedHeight","ticks","tickUtils","snapElements","domain","initialElements","arrows","defaultModel","event","exhibitOnly","index","el","position","update","Set","map","indices","filter","v","some","d","data","push","pop","addInitialView","classes","configuration","uploadSoundSupport","spellCheckEnabled","errors","spellCheck","widthError","domainError","maxError","pointsError","correctResponseError","validationMessage","initialView","toolbarOpts","toolbarEditorPosition","root","settings","label","language","marginLeft","changeSize","changeTicks","changeArrows","changeGraphTitle","changeMaxNoOfPoints","setDefaults","moveCorrectResponse","deleteCorrectResponse","addCorrectResponse","clearCorrectResponse","undoCorrectResponse","availableTypesChange","moveInitialView","deleteInitialView","onAddElement","clearInitialView","undoInitialView","exhibitChanged","React","Component","PropTypes","object","isRequired","func","name"],"mappings":"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","sourcesContent":["import { InputCheckbox, FeedbackConfig, FormSection } from '@pie-lib/config-ui';\nimport NumberTextField from './number-text-field';\nimport CardBar from './card-bar';\nimport { NumberLineComponent, dataConverter, tickUtils } from '@pie-element/number-line';\nimport Size from './size';\nimport PropTypes from 'prop-types';\nimport Button from '@material-ui/core/Button';\nimport Domain from './domain';\nimport Arrows from './arrows';\nimport PointConfig from './point-config';\nimport React from 'react';\nimport cloneDeep from 'lodash/cloneDeep';\nimport { withStyles } from '@material-ui/core/styles';\nimport EditableHtml from '@pie-lib/editable-html';\nimport Info from '@material-ui/icons/Info';\nimport Tooltip from '@material-ui/core/Tooltip';\n\nimport Ticks from './ticks';\nimport { model as defaultModel } from './defaults';\nimport { generateValidationMessage } from './utils';\n\nconst trimModel = (model) => ({\n ...model,\n feedback: undefined,\n prompt: undefined,\n graph: { ...model.graph, title: undefined },\n correctResponse: undefined,\n});\n\nconst { lineIsSwitched, switchGraphLine, toGraphFormat, toSessionFormat } = dataConverter;\n\nconst styles = (theme) => ({\n maxNumberOfPoints: {\n width: '150px',\n },\n checkbox: {\n marginTop: theme.spacing.unit * 2,\n },\n row: {\n display: 'flex',\n flexWrap: 'wrap',\n '& > *': {\n paddingRight: theme.spacing.unit * 2,\n },\n },\n hide: {\n opacity: 0.5,\n },\n resetDefaults: {\n margin: '20px 0',\n },\n pointTypeChooser: {\n margin: '20px 0',\n },\n promptHolder: {\n width: '100%',\n paddingBottom: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\n },\n prompt: {\n paddingTop: theme.spacing.unit * 2,\n width: '100%',\n },\n section: {\n margin: 0,\n padding: 0,\n },\n tooltip: {\n fontSize: '12px',\n whiteSpace: 'pre',\n maxWidth: '500px',\n },\n inlineFlexContainer: {\n display: 'inline-flex',\n },\n errorText: {\n fontSize: '12px',\n color: 'red',\n padding: '5px 0',\n },\n});\n\nexport const toPointType = (response) => {\n function rest(response) {\n if (response.pointType) {\n if (response.direction) {\n return `${response.pointType[0]}${response.direction[0]}`;\n }\n return response.pointType[0];\n } else {\n return `${response.leftPoint[0]}${response.rightPoint[0]}`;\n }\n }\n return `${response.type[0]}${rest(response)}`.toUpperCase();\n};\n\nexport class Main extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n model: PropTypes.object.isRequired,\n configuration: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n uploadSoundSupport: PropTypes.object.isRequired,\n };\n\n constructor(props) {\n super(props);\n const {\n model: {\n graph: { availableTypes, maxNumberOfPoints },\n },\n } = props;\n const height = this.getAdjustedHeight(availableTypes, maxNumberOfPoints);\n\n this.graphChange({ height });\n }\n\n graphChange = (o) => {\n const { onChange } = this.props;\n const graph = { ...this.props.model.graph, ...o };\n onChange({ graph });\n };\n\n changeSize = ({ width, height }) => this.graphChange({ width, height });\n\n getAdjustedHeight = (availableTypes, maxNumberOfPoints) => {\n let onlyPFAvailable = true;\n\n Object.entries(availableTypes || {}).forEach(([type, value]) => {\n if (type !== 'PF' && value) {\n onlyPFAvailable = false;\n return;\n }\n });\n\n const height =\n maxNumberOfPoints && (maxNumberOfPoints === 1 || onlyPFAvailable) ? 100 : 50 + (maxNumberOfPoints || 20) * 25;\n\n return height;\n };\n\n changeMaxNoOfPoints = (e, maxNumberOfPoints) => {\n const {\n model: {\n graph: { availableTypes },\n },\n } = this.props;\n const height = this.getAdjustedHeight(availableTypes, maxNumberOfPoints);\n\n this.graphChange({ maxNumberOfPoints, height });\n };\n\n changeGraphTitle = (title) => this.graphChange({ title });\n\n changeTicks = (ticks) => {\n const { model, onChange } = this.props;\n const correctResponse = tickUtils.snapElements(model.graph.domain, ticks, model.correctResponse);\n const initialElements = tickUtils.snapElements(model.graph.domain, ticks, model.graph.initialElements);\n\n const graph = { ...this.props.model.graph, ticks, initialElements };\n onChange({ graph, correctResponse });\n };\n\n changeArrows = (arrows) => this.graphChange({ arrows });\n\n setDefaults = () => {\n const {\n graph: { availableTypes, maxNumberOfPoints },\n } = defaultModel;\n const height = this.getAdjustedHeight(availableTypes, maxNumberOfPoints);\n const graph = { ...cloneDeep(defaultModel.graph), height };\n\n this.props.onChange({ graph });\n };\n\n exhibitChanged = (event, value) => {\n const graph = { ...this.props.model.graph, exhibitOnly: value };\n this.props.onChange({ graph });\n };\n\n moveCorrectResponse = (index, el, position) => {\n const { onChange, model } = this.props;\n el.position = position;\n const update = toSessionFormat(el.type === 'line' && lineIsSwitched(el) ? switchGraphLine(el) : el);\n const correctResponse = [...model.correctResponse];\n correctResponse[index] = update;\n onChange({ correctResponse });\n };\n\n moveInitialView = (index, el, position) => {\n const { model, onChange } = this.props;\n el.position = position;\n const update = toSessionFormat(el.type === 'line' && lineIsSwitched(el) ? switchGraphLine(el) : el);\n const initialElements = [...this.props.model.graph.initialElements];\n initialElements[index] = update;\n const graph = { ...model.graph, initialElements };\n onChange({ graph });\n };\n\n availableTypesChange = (availableTypes) => {\n const { model, onChange } = this.props;\n const {\n correctResponse,\n graph: { maxNumberOfPoints },\n } = model;\n\n new Set(correctResponse.map(toPointType)).forEach((pointType) => {\n availableTypes[pointType] = true;\n });\n\n const height = this.getAdjustedHeight(availableTypes, maxNumberOfPoints);\n const graph = { ...model.graph, availableTypes, height };\n\n onChange({ graph });\n };\n\n deleteCorrectResponse = (indices) => {\n const { model, onChange } = this.props;\n const correctResponse = model.correctResponse.filter((v, index) => {\n return !indices.some((d) => d === index);\n });\n onChange({ correctResponse });\n };\n\n deleteInitialView = (indices) => {\n const { model, onChange } = this.props;\n const initialElements = model.graph.initialElements.filter((v, index) => {\n return !indices.some((d) => d === index);\n });\n const graph = { ...model.graph, initialElements };\n onChange({ graph });\n };\n\n addCorrectResponse = (data) => {\n const { model, onChange } = this.props;\n const correctResponse = [...model.correctResponse];\n correctResponse.push(toSessionFormat(data));\n onChange({ correctResponse });\n };\n\n addInitialView = (data) => {\n const { onChange, model } = this.props;\n const graph = { ...model.graph };\n graph.initialElements = graph.initialElements || [];\n graph.initialElements.push(toSessionFormat(data));\n onChange({ graph });\n };\n\n clearCorrectResponse = () => {\n const { onChange } = this.props;\n const correctResponse = [];\n onChange({ correctResponse });\n };\n\n clearInitialView = () => {\n const { model, onChange } = this.props;\n const initialElements = [];\n const graph = { ...model.graph, initialElements };\n onChange({ graph });\n };\n\n undoCorrectResponse = () => {\n const { model, onChange } = this.props;\n const correctResponse = [...model.correctResponse];\n correctResponse.pop();\n onChange({ correctResponse });\n };\n\n undoInitialView = () => {\n const { onChange, model } = this.props;\n const graph = { ...model.graph };\n graph.initialElements = graph.initialElements || [];\n graph.initialElements.pop();\n onChange({ graph });\n };\n\n onAddElement = this.addInitialView;\n\n render() {\n const { classes, model, onChange, configuration, uploadSoundSupport } = this.props;\n\n const { graph, spellCheckEnabled, errors } = model || {};\n const { prompt = {}, spellCheck = {} } = configuration || {};\n const { widthError, domainError, maxError, pointsError, correctResponseError } = errors || {};\n const validationMessage = generateValidationMessage();\n\n const correctResponse = cloneDeep(model.correctResponse || []).map(toGraphFormat);\n\n const initialView = cloneDeep(graph.initialElements || []).map(toGraphFormat);\n const toolbarOpts = {};\n\n switch (model.toolbarEditorPosition) {\n case 'top':\n toolbarOpts.position = 'top';\n break;\n default:\n toolbarOpts.position = 'bottom';\n break;\n }\n\n return (\n <div className={classes.root}>\n {prompt.settings && (\n <FormSection label={prompt.label}>\n <EditableHtml\n className={classes.prompt}\n markup={model.prompt}\n onChange={(prompt) => onChange({ prompt })}\n nonEmpty={false}\n disableUnderline\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n />\n </FormSection>\n )}\n <CardBar\n header=\"Attributes\"\n info={\n <Tooltip\n classes={{ tooltip: classes.tooltip }}\n disableFocusListener\n disableTouchListener\n placement={'right'}\n title={validationMessage}\n >\n <Info fontSize={'small'} color={'primary'} style={{ marginLeft: '5px' }} />\n </Tooltip>\n }\n >\n Set up the number line by entering the domain and number of tick marks to display. Labels on the number line\n can be edited or removed by clicking on the label.\n </CardBar>\n\n {widthError && <div className={classes.errorText}>{widthError}</div>}\n {domainError && <div className={classes.errorText}>{domainError}</div>}\n {maxError && <div className={classes.errorText}>{maxError}</div>}\n\n <div className={classes.row}>\n <FormSection label={'Size'}>\n <Size size={graph} onChange={this.changeSize} />\n </FormSection>\n\n <FormSection label={'Domain'}>\n <Domain domain={graph.domain} onChange={(domain) => this.graphChange({ domain })} />\n </FormSection>\n </div>\n <div className={classes.row}>\n <FormSection label={'Ticks'}>\n <Ticks ticks={graph.ticks} onChange={this.changeTicks} domain={graph.domain} />\n </FormSection>\n <FormSection label={'Arrows'}>\n <Arrows arrows={graph.arrows} onChange={this.changeArrows} />\n </FormSection>\n </div>\n <FormSection label={'Title'}>\n <EditableHtml\n markup={graph.title || ''}\n onChange={this.changeGraphTitle}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n />\n </FormSection>\n <FormSection label={'Limits'}>\n <NumberTextField\n className={classes.maxNumberOfPoints}\n label=\"Max No of Elements\"\n min={1}\n max={20}\n value={graph.maxNumberOfPoints}\n onChange={this.changeMaxNoOfPoints}\n />\n </FormSection>\n <Button variant=\"outlined\" mini color=\"primary\" onClick={this.setDefaults}>\n Reset to default values\n </Button>\n <br />\n <br />\n\n {!graph.exhibitOnly && (\n <div>\n <CardBar header=\"Correct Response\">\n Select answer type and place it on the number line. Intersecting points, line segments and/or rays will\n appear above the number line. <i>Note: A maximum of 20 points, line segments or rays may be plotted.</i>\n </CardBar>\n\n {pointsError && <div className={classes.errorText}>{pointsError}</div>}\n {correctResponseError && <div className={classes.errorText}>{correctResponseError}</div>}\n\n <NumberLineComponent\n onMoveElement={this.moveCorrectResponse}\n onDeleteElements={this.deleteCorrectResponse}\n onAddElement={this.addCorrectResponse}\n onClearElements={this.clearCorrectResponse}\n onUndoElement={this.undoCorrectResponse}\n answer={correctResponse}\n //strip feedback for this model\n model={trimModel(model)}\n />\n <CardBar header=\"Available Types\" mini>\n Click on the input options to be displayed to the students. All inputs will display by default.\n </CardBar>\n <div className={classes.pointTypeChooser}>\n <PointConfig onSelectionChange={this.availableTypesChange} selection={graph.availableTypes} />\n </div>\n </div>\n )}\n <CardBar header=\"Initial view/Make Exhibit\">\n Use this number line to set a starting point, line segment or ray. This is optional. <br />\n This number line may also be used to make an exhibit number line, which can not be manipulated by a student.\n </CardBar>\n <NumberLineComponent\n onMoveElement={this.moveInitialView}\n onDeleteElements={this.deleteInitialView}\n onAddElement={this.onAddElement}\n onClearElements={this.clearInitialView}\n onUndoElement={this.undoInitialView}\n answer={initialView}\n model={trimModel(model)}\n />\n <InputCheckbox\n label=\"Make exhibit\"\n className={classes.checkbox}\n checked={graph.exhibitOnly}\n onChange={this.exhibitChanged}\n value={'exhibitOnly'}\n />\n\n {!graph.exhibitOnly && (\n <React.Fragment>\n <br />\n <FeedbackConfig\n feedback={model.feedback}\n onChange={(feedback) => onChange({ feedback })}\n toolbarOpts={toolbarOpts}\n />\n </React.Fragment>\n )}\n </div>\n );\n }\n}\n\nexport default withStyles(styles, { name: 'Main' })(Main);\n"],"file":"main.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/number-text-field.jsx"],"names":["NumberTextField","classes","props","undefined","textField","className","React","Component","PropTypes","object","isRequired","styles","theme","marginLeft","spacing","unit","miniStyles","maxWidth","MiniField"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;IAEaA,e;;;;;;;;;;;;WAKX,kBAAS;AACP,UAAQC,OAAR,GAAoB,KAAKC,KAAzB,CAAQD,OAAR;;AACA,UAAMC,KAAK,mCAAQ,KAAKA,KAAb;AAAoBD,QAAAA,OAAO,EAAEE;AAA7B,QAAX;;AACA,
|
|
1
|
+
{"version":3,"sources":["../src/number-text-field.jsx"],"names":["NumberTextField","classes","props","undefined","textField","className","React","Component","PropTypes","object","isRequired","styles","theme","marginLeft","spacing","unit","miniStyles","maxWidth","MiniField"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;IAEaA,e;;;;;;;;;;;;WAKX,kBAAS;AACP,UAAQC,OAAR,GAAoB,KAAKC,KAAzB,CAAQD,OAAR;;AACA,UAAMC,KAAK,mCAAQ,KAAKA,KAAb;AAAoBD,QAAAA,OAAO,EAAEE;AAA7B,QAAX;;AACA,0BAAO,gCAAC,yBAAD,gCAASD,KAAT;AAAgB,QAAA,SAAS,EAAE,4BAAGD,OAAO,CAACG,SAAX,EAAsBF,KAAK,CAACG,SAA5B,CAA3B;AAAmE,QAAA,OAAO,EAAC;AAA3E,SAAP;AACD;;;EATkCC,kBAAMC,S;;;iCAA9BP,e,eACQ;AACjBC,EAAAA,OAAO,EAAEO,sBAAUC,MAAV,CAAiBC;AADT,C;;AAWrB,IAAMC,MAAM,GAAG,SAATA,MAAS,CAACC,KAAD;AAAA,SAAY;AACzBR,IAAAA,SAAS,EAAE;AACTS,MAAAA,UAAU,EAAED,KAAK,CAACE,OAAN,CAAcC;AADjB;AADc,GAAZ;AAAA,CAAf;;AAMA,IAAMC,UAAU,GAAG,SAAbA,UAAa;AAAA,SAAO;AACxBZ,IAAAA,SAAS,EAAE;AACTa,MAAAA,QAAQ,EAAE;AADD;AADa,GAAP;AAAA,CAAnB;;AAKO,IAAMC,SAAS,GAAG,wBAAWF,UAAX,EAAuBhB,eAAvB,CAAlB;;;eAEQ,wBAAWW,MAAX,EAAmBX,eAAnB,C","sourcesContent":["import { NumberTextField as NTF } from '@pie-lib/config-ui';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { withStyles } from '@material-ui/core/styles';\nimport cn from 'classnames';\n\nexport class NumberTextField extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n };\n\n render() {\n const { classes } = this.props;\n const props = { ...this.props, classes: undefined };\n return <NTF {...props} className={cn(classes.textField, props.className)} variant=\"outlined\" />;\n }\n}\n\nconst styles = (theme) => ({\n textField: {\n marginLeft: theme.spacing.unit,\n },\n});\n\nconst miniStyles = () => ({\n textField: {\n maxWidth: '100px',\n },\n});\nexport const MiniField = withStyles(miniStyles)(NumberTextField);\n\nexport default withStyles(styles)(NumberTextField);\n"],"file":"number-text-field.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/point-config.jsx"],"names":["Point","pointChooser","styles","displayToggles","paddingTop","PointConfig","props","state","selection","point","update","_stateUpdate","value","display","types","reduce","acc","setState","onSelectionChange","classes","icons","map","toLowerCase","toggle","bind","active","toggleAll","React","Component","PropTypes","func","object","name"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;AACA,IAAQA,KAAR,GAAkBC,wBAAlB,CAAQD,KAAR;AAEA,IAAME,MAAM,GAAG;AACbC,EAAAA,cAAc,EAAE;AACdC,IAAAA,UAAU,EAAE;AADE;AADH,CAAf;;IAMMC,W;;;;;AAMJ,uBAAYC,KAAZ,EAAmB;AAAA;;AAAA;AACjB,8BAAMA,KAAN;AACA,UAAKC,KAAL,GAAa;AACXC,MAAAA,SAAS,EAAEF,KAAK,CAACE;AADN,KAAb;AAFiB;AAKlB;;;;WAED,gBAAOC,KAAP,EAAc;AACZ,UAAMC,MAAM,qBAAQ,KAAKH,KAAL,CAAWC,SAAnB,CAAZ;;AACAE,MAAAA,MAAM,CAACD,KAAD,CAAN,GAAgB,CAACC,MAAM,CAACD,KAAD,CAAvB;;AACA,WAAKE,YAAL,CAAkBD,MAAlB;AACD;;;WAED,mBAAUE,KAAV,EAAiB;AACf,UAAMC,OAAO,GAAG,oCAAIR,WAAW,CAACS,KAAhB,EAAuBC,MAAvB,CAA8B,UAACC,GAAD,EAAMP,KAAN,EAAgB;AAC5DO,QAAAA,GAAG,CAACP,KAAD,CAAH,GAAaG,KAAb;AAEA,eAAOI,GAAP;AACD,OAJe,EAIb,EAJa,CAAhB;;AAMA,WAAKL,YAAL,CAAkBE,OAAlB;AACD;;;WAED,sBAAaL,SAAb,EAAwB;AAAA;;AACtB,WAAKS,QAAL,CAAc;AAAET,QAAAA,SAAS,EAATA;AAAF,OAAd,EAA6B,YAAM;AACjC,QAAA,MAAI,CAACF,KAAL,CAAWY,iBAAX,CAA6B,MAAI,CAACX,KAAL,CAAWC,SAAxC;AACD,OAFD;AAGD;;;WAED,gBAAOC,KAAP,EAAc;AACZ,aAAO,KAAKF,KAAL,CAAWC,SAAX,CAAqBC,KAArB,MAAgC,IAAvC,CADY,CACiC;AAC9C;;;WAED,kBAAS;AAAA;;AACP,UAAQU,OAAR,GAAoB,KAAKb,KAAzB,CAAQa,OAAR;AAEA,UAAMC,KAAK,GAAGf,WAAW,CAACS,KAAZ,CAAkBO,GAAlB,CAAsB,
|
|
1
|
+
{"version":3,"sources":["../src/point-config.jsx"],"names":["Point","pointChooser","styles","displayToggles","paddingTop","PointConfig","props","state","selection","point","update","_stateUpdate","value","display","types","reduce","acc","setState","onSelectionChange","classes","icons","map","toLowerCase","toggle","bind","active","toggleAll","React","Component","PropTypes","func","object","name"],"mappings":"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","sourcesContent":["import Button from '@material-ui/core/Button';\nimport React from 'react';\nimport { pointChooser } from '@pie-element/number-line';\nimport { withStyles } from '@material-ui/core/styles';\nimport PropTypes from 'prop-types';\nconst { Point } = pointChooser;\n\nconst styles = {\n displayToggles: {\n paddingTop: '20px',\n },\n};\n\nclass PointConfig extends React.Component {\n static propTypes = {\n onSelectionChange: PropTypes.func,\n selection: PropTypes.object,\n classes: PropTypes.object,\n };\n constructor(props) {\n super(props);\n this.state = {\n selection: props.selection,\n };\n }\n\n toggle(point) {\n const update = { ...this.state.selection };\n update[point] = !update[point];\n this._stateUpdate(update);\n }\n\n toggleAll(value) {\n const display = [...PointConfig.types].reduce((acc, point) => {\n acc[point] = value;\n\n return acc;\n }, {});\n\n this._stateUpdate(display);\n }\n\n _stateUpdate(selection) {\n this.setState({ selection }, () => {\n this.props.onSelectionChange(this.state.selection);\n });\n }\n\n active(point) {\n return this.state.selection[point] === true; // ? 'active' : '';\n }\n\n render() {\n const { classes } = this.props;\n\n const icons = PointConfig.types.map((point) => {\n return (\n <Point\n iconKey={point.toLowerCase()}\n key={point.toLowerCase()}\n onClick={this.toggle.bind(this, point)}\n active={this.active(point)}\n />\n );\n });\n\n return (\n <div>\n <div>{icons}</div>\n <div className={classes.displayToggles}>\n <Button variant=\"outlined\" size=\"small\" onClick={this.toggleAll.bind(this, true)}>\n Display All\n </Button>\n <Button variant=\"outlined\" size=\"small\" onClick={this.toggleAll.bind(this, false)}>\n None\n </Button>\n </div>\n </div>\n );\n }\n}\n\nPointConfig.types = ['PF', 'LFF', 'LEF', 'LFE', 'LEE', 'RFN', 'RFP', 'REN', 'REP'];\n\nexport default withStyles(styles, { name: 'PointConfig' })(PointConfig);\n"],"file":"point-config.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/size.jsx"],"names":["Size","props","size","onChange","changeWidth","e","width","propTypes","PropTypes","shape","number","height","func","isRequired","styles"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;;;;;AAEA,IAAMA,IAAI,GAAG,SAAPA,IAAO,
|
|
1
|
+
{"version":3,"sources":["../src/size.jsx"],"names":["Size","props","size","onChange","changeWidth","e","width","propTypes","PropTypes","shape","number","height","func","isRequired","styles"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;;;;;AAEA,IAAMA,IAAI,GAAG,SAAPA,IAAO,CAACC,KAAD,EAAW;AACtB,MAAQC,IAAR,GAA2BD,KAA3B,CAAQC,IAAR;AAAA,MAAcC,QAAd,GAA2BF,KAA3B,CAAcE,QAAd;;AAEA,MAAMC,WAAW,GAAG,SAAdA,WAAc,CAACC,CAAD,EAAIC,KAAJ;AAAA,WAAcH,QAAQ,iCAAMF,KAAK,CAACC,IAAZ;AAAkBI,MAAAA,KAAK,EAALA;AAAlB,OAAtB;AAAA,GAApB;;AAEA,sBAAO,gCAAC,0BAAD;AAAW,IAAA,KAAK,EAAC,OAAjB;AAAyB,IAAA,KAAK,EAAEJ,IAAI,CAACI,KAArC;AAA4C,IAAA,QAAQ,EAAEF;AAAtD,IAAP;AACD,CAND;;AAQAJ,IAAI,CAACO,SAAL,GAAiB;AACfL,EAAAA,IAAI,EAAEM,sBAAUC,KAAV,CAAgB;AACpBH,IAAAA,KAAK,EAAEE,sBAAUE,MADG;AAEpBC,IAAAA,MAAM,EAAEH,sBAAUE;AAFE,GAAhB,CADS;AAKfP,EAAAA,QAAQ,EAAEK,sBAAUI,IAAV,CAAeC;AALV,CAAjB;;AAQA,IAAMC,MAAM,GAAG,SAATA,MAAS;AAAA,SAAO;AACpB,aAAO;AADa,GAAP;AAAA,CAAf;;eAGe,wBAAWA,MAAX,EAAmBd,IAAnB,C","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport { MiniField } from './number-text-field';\n\nconst Size = (props) => {\n const { size, onChange } = props;\n\n const changeWidth = (e, width) => onChange({ ...props.size, width });\n\n return <MiniField label=\"Width\" value={size.width} onChange={changeWidth} />;\n};\n\nSize.propTypes = {\n size: PropTypes.shape({\n width: PropTypes.number,\n height: PropTypes.number,\n }),\n onChange: PropTypes.func.isRequired,\n};\n\nconst styles = () => ({\n class: {},\n});\nexport default withStyles(styles)(Size);\n"],"file":"size.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ticks.jsx"],"names":["Ticks","props","classes","ticks","onChange","domain","changeMinor","e","minor","changeMajor","major","t","tickUtils","normalizeTicks","minorLimits","math","number","min","max","nl","propTypes","PropTypes","object","isRequired","func","shape","styles"],"mappings":";;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;AACO,IAAMA,KAAK,GAAG,SAARA,KAAQ,
|
|
1
|
+
{"version":3,"sources":["../src/ticks.jsx"],"names":["Ticks","props","classes","ticks","onChange","domain","changeMinor","e","minor","changeMajor","major","t","tickUtils","normalizeTicks","minorLimits","math","number","min","max","nl","propTypes","PropTypes","object","isRequired","func","shape","styles"],"mappings":";;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;AACO,IAAMA,KAAK,GAAG,SAARA,KAAQ,CAACC,KAAD,EAAW;AAC9B,MAAQC,OAAR,GAA6CD,KAA7C,CAAQC,OAAR;AAAA,MAAiBC,KAAjB,GAA6CF,KAA7C,CAAiBE,KAAjB;AAAA,MAAwBC,QAAxB,GAA6CH,KAA7C,CAAwBG,QAAxB;AAAA,MAAkCC,MAAlC,GAA6CJ,KAA7C,CAAkCI,MAAlC;;AAEA,MAAMC,WAAW,GAAG,SAAdA,WAAc,CAACC,CAAD,EAAIC,KAAJ;AAAA,WAAcJ,QAAQ,iCAAMH,KAAK,CAACE,KAAZ;AAAmBK,MAAAA,KAAK,EAALA;AAAnB,OAAtB;AAAA,GAApB;;AACA,MAAMC,WAAW,GAAG,SAAdA,WAAc,CAACF,CAAD,EAAIG,KAAJ;AAAA,WAAcN,QAAQ,iCAAMH,KAAK,CAACE,KAAZ;AAAmBO,MAAAA,KAAK,EAALA;AAAnB,OAAtB;AAAA,GAApB;;AAEA,MAAMC,CAAC,GAAGC,sBAAUC,cAAV,CAAyBR,MAAzB,EAAiCF,KAAjC,CAAV;;AAEA,MAAMW,WAAW,GAAGF,sBAAUE,WAAV,CAAsBT,MAAtB,CAApB;;AACA,sBACE,gCAAC,iBAAD,CAAO,QAAP,qBACE,gCAAC,0BAAD;AACE,IAAA,KAAK,EAAC,WADR;AAEE,IAAA,KAAK,EAAEU,IAAI,CAACC,MAAL,CAAYL,CAAC,CAACH,KAAd,CAFT;AAGE,IAAA,GAAG,EAAEO,IAAI,CAACC,MAAL,CAAYF,WAAW,CAACG,GAAxB,CAHP;AAIE,IAAA,GAAG,EAAEF,IAAI,CAACC,MAAL,CAAYF,WAAW,CAACI,GAAxB,CAJP;AAKE,IAAA,SAAS,EAAEhB,OAAO,CAACiB,EALrB;AAME,IAAA,QAAQ,EAAEb;AANZ,IADF,eASE,gCAAC,0BAAD;AAAW,IAAA,KAAK,EAAC,QAAjB;AAA0B,IAAA,KAAK,EAAES,IAAI,CAACC,MAAL,CAAYL,CAAC,CAACD,KAAd,CAAjC;AAAuD,IAAA,SAAS,EAAER,OAAO,CAACiB,EAA1E;AAA8E,IAAA,QAAQ,EAAEV;AAAxF,IATF,CADF;AAaD,CAtBM;;;AAuBPT,KAAK,CAACoB,SAAN,GAAkB;AAChBlB,EAAAA,OAAO,EAAEmB,sBAAUC,MAAV,CAAiBC,UADV;AAEhBnB,EAAAA,QAAQ,EAAEiB,sBAAUG,IAFJ;AAGhBrB,EAAAA,KAAK,EAAEkB,sBAAUI,KAAV,CAAgB;AACrBf,IAAAA,KAAK,EAAEW,sBAAUL,MADI;AAErBR,IAAAA,KAAK,EAAEa,sBAAUL;AAFI,GAAhB,CAHS;AAOhBX,EAAAA,MAAM,EAAEgB,sBAAUI,KAAV,CAAgB;AAAER,IAAAA,GAAG,EAAEI,sBAAUL,MAAjB;AAAyBE,IAAAA,GAAG,EAAEG,sBAAUL;AAAxC,GAAhB;AAPQ,CAAlB;;AAUA,IAAMU,MAAM,GAAG,SAATA,MAAS;AAAA,SAAO,EAAP;AAAA,CAAf;;eACe,wBAAWA,MAAX,EAAmB1B,KAAnB,C","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport { MiniField } from './number-text-field';\nimport { tickUtils } from '@pie-element/number-line';\nimport * as math from 'mathjs';\nexport const Ticks = (props) => {\n const { classes, ticks, onChange, domain } = props;\n\n const changeMinor = (e, minor) => onChange({ ...props.ticks, minor });\n const changeMajor = (e, major) => onChange({ ...props.ticks, major });\n\n const t = tickUtils.normalizeTicks(domain, ticks);\n\n const minorLimits = tickUtils.minorLimits(domain);\n return (\n <React.Fragment>\n <MiniField\n label=\"Frequency\"\n value={math.number(t.minor)}\n min={math.number(minorLimits.min)}\n max={math.number(minorLimits.max)}\n className={classes.nl}\n onChange={changeMinor}\n />\n <MiniField label=\"Labels\" value={math.number(t.major)} className={classes.nl} onChange={changeMajor} />\n </React.Fragment>\n );\n};\nTicks.propTypes = {\n classes: PropTypes.object.isRequired,\n onChange: PropTypes.func,\n ticks: PropTypes.shape({\n major: PropTypes.number,\n minor: PropTypes.number,\n }),\n domain: PropTypes.shape({ min: PropTypes.number, max: PropTypes.number }),\n};\n\nconst styles = () => ({});\nexport default withStyles(styles)(Ticks);\n"],"file":"ticks.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils.js"],"names":["generateValidationMessage","baselineValidationMessage"],"mappings":";;;;;;;AAAO,IAAMA,yBAAyB,GAAG,SAA5BA,yBAA4B,GAAM;AAC7C,MAAMC,yBAAyB,
|
|
1
|
+
{"version":3,"sources":["../src/utils.js"],"names":["generateValidationMessage","baselineValidationMessage"],"mappings":";;;;;;;AAAO,IAAMA,yBAAyB,GAAG,SAA5BA,yBAA4B,GAAM;AAC7C,MAAMC,yBAAyB,GAC7B,mDACA,2DADA,GAEA,iCAFA,GAGA,sDAHA,GAIA,sEALF;AAOA,SAAO,6BAA6BA,yBAApC;AACD,CATM","sourcesContent":["export const generateValidationMessage = () => {\n const baselineValidationMessage =\n '\\nWidth should be a value between 200 and 800.' +\n '\\nMin and max must both be in the range [-100000, 10000].' +\n '\\nMax must be greater than min.' +\n '\\nMax number of elements should be between 1 and 20.' +\n '\\nThe correct answer should include at least one number line object.';\n\n return 'Validation requirements:' + baselineValidationMessage;\n};\n"],"file":"utils.js"}
|
package/configure/package.json
CHANGED
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
"dependencies": {
|
|
8
8
|
"@material-ui/core": "^3.9.2",
|
|
9
9
|
"@pie-framework/pie-configure-events": "^1.3.0",
|
|
10
|
-
"@pie-lib/config-ui": "^11.0.
|
|
11
|
-
"@pie-lib/editable-html": "^9.2.
|
|
10
|
+
"@pie-lib/config-ui": "^11.0.26",
|
|
11
|
+
"@pie-lib/editable-html": "^9.2.8",
|
|
12
12
|
"react": "^16.8.1",
|
|
13
13
|
"react-dom": "^16.8.1"
|
|
14
14
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/defaults.js"],"names":["graph","domain","initialElements","type","pointType","domainPosition","maxNumberOfPoints","tickLabelOverrides","initialType","availableTypes","PF","PE","LFF","LEF","LFE","LEE","RFN","RFP","REN","REP","feedback","correct","incorrect","partial"],"mappings":";;;;;;eAAe;AACbA,EAAAA,KAAK,EAAE;AACLC,IAAAA,MAAM,EAAE,CAAC,CAAC,CAAF,EAAK,CAAL,CADH;AAELC,IAAAA,eAAe,EAAE,CACf;AACEC,MAAAA,IAAI,EAAE,OADR;AAEEC,MAAAA,SAAS,EAAE,OAFb;AAGEC,MAAAA,cAAc,EAAE,CAAC;AAHnB,KADe,CAFZ;AASLC,IAAAA,iBAAiB,EAAE,EATd;AAULC,IAAAA,kBAAkB,EAAE,EAVf;AAWLC,IAAAA,WAAW,EAAE,IAXR;AAYLC,IAAAA,cAAc,EAAE;AACdC,MAAAA,EAAE,EAAE,IADU;AAEdC,MAAAA,EAAE,EAAE,IAFU;AAGdC,MAAAA,GAAG,EAAE,IAHS;AAIdC,MAAAA,GAAG,EAAE,IAJS;AAKdC,MAAAA,GAAG,EAAE,IALS;AAMdC,MAAAA,GAAG,EAAE,IANS;AAOdC,MAAAA,GAAG,EAAE,IAPS;AAQdC,MAAAA,GAAG,EAAE,IARS;AASdC,MAAAA,GAAG,EAAE,IATS;AAUdC,MAAAA,GAAG,EAAE;AAVS;AAZX,GADM;AA0BbC,EAAAA,QAAQ,EAAE;AACRC,IAAAA,OAAO,EAAE;AACP,iBAAS,SADF;AAEPlB,MAAAA,IAAI,EAAE;AAFC,KADD;AAKRmB,IAAAA,SAAS,EAAE;AACT,iBAAS,WADA;AAETnB,MAAAA,IAAI,EAAE;AAFG,KALH;AASRoB,IAAAA,OAAO,EAAE;AACP,iBAAS,QADF;AAEPpB,MAAAA,IAAI,EAAE;AAFC;AATD;AA1BG,C","sourcesContent":["export default {\n graph: {\n domain: [-5, 5],\n initialElements: [\n {\n type: 'point',\n pointType: 'empty',\n domainPosition: -1
|
|
1
|
+
{"version":3,"sources":["../src/defaults.js"],"names":["graph","domain","initialElements","type","pointType","domainPosition","maxNumberOfPoints","tickLabelOverrides","initialType","availableTypes","PF","PE","LFF","LEF","LFE","LEE","RFN","RFP","REN","REP","feedback","correct","incorrect","partial"],"mappings":";;;;;;eAAe;AACbA,EAAAA,KAAK,EAAE;AACLC,IAAAA,MAAM,EAAE,CAAC,CAAC,CAAF,EAAK,CAAL,CADH;AAELC,IAAAA,eAAe,EAAE,CACf;AACEC,MAAAA,IAAI,EAAE,OADR;AAEEC,MAAAA,SAAS,EAAE,OAFb;AAGEC,MAAAA,cAAc,EAAE,CAAC;AAHnB,KADe,CAFZ;AASLC,IAAAA,iBAAiB,EAAE,EATd;AAULC,IAAAA,kBAAkB,EAAE,EAVf;AAWLC,IAAAA,WAAW,EAAE,IAXR;AAYLC,IAAAA,cAAc,EAAE;AACdC,MAAAA,EAAE,EAAE,IADU;AAEdC,MAAAA,EAAE,EAAE,IAFU;AAGdC,MAAAA,GAAG,EAAE,IAHS;AAIdC,MAAAA,GAAG,EAAE,IAJS;AAKdC,MAAAA,GAAG,EAAE,IALS;AAMdC,MAAAA,GAAG,EAAE,IANS;AAOdC,MAAAA,GAAG,EAAE,IAPS;AAQdC,MAAAA,GAAG,EAAE,IARS;AASdC,MAAAA,GAAG,EAAE,IATS;AAUdC,MAAAA,GAAG,EAAE;AAVS;AAZX,GADM;AA0BbC,EAAAA,QAAQ,EAAE;AACRC,IAAAA,OAAO,EAAE;AACP,iBAAS,SADF;AAEPlB,MAAAA,IAAI,EAAE;AAFC,KADD;AAKRmB,IAAAA,SAAS,EAAE;AACT,iBAAS,WADA;AAETnB,MAAAA,IAAI,EAAE;AAFG,KALH;AASRoB,IAAAA,OAAO,EAAE;AACP,iBAAS,QADF;AAEPpB,MAAAA,IAAI,EAAE;AAFC;AATD;AA1BG,C","sourcesContent":["export default {\n graph: {\n domain: [-5, 5],\n initialElements: [\n {\n type: 'point',\n pointType: 'empty',\n domainPosition: -1,\n },\n ],\n maxNumberOfPoints: 20,\n tickLabelOverrides: [],\n initialType: 'PF',\n availableTypes: {\n PF: true,\n PE: true,\n LFF: true,\n LEF: true,\n LFE: true,\n LEE: true,\n RFN: true,\n RFP: true,\n REN: true,\n REP: true,\n },\n },\n feedback: {\n correct: {\n default: 'Correct',\n type: 'none',\n },\n incorrect: {\n default: 'Incorrect',\n type: 'none',\n },\n partial: {\n default: 'Nearly',\n type: 'none',\n },\n },\n};\n"],"file":"defaults.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.js"],"names":["score","number","scaled","getPartialScore","corrected","ps","correct","rule","find","r","numberOfCorrect","length","scorePercentage","accumulateAnswer","correctResponse","total","answer","isCorrectResponse","some","cr","matches","outcome","model","session","env","Promise","resolve","empty","partialScoringEnabled","partialScoring","enabled","numCorrect","reduce","numIncorrect","getScore","question","getCorrected","correctness","getCorrectness","allowPartialScoring","filter","o","canDoPartialScoring","CLOSE_TO_PRECISION","closeTo","a","b","precision","expectedDiff","Math","pow","receivedDiff","abs","close","v","ov","incorrect","notInAnswer","noCorrectResponse","acc","index","match","push","splice","indexOf","normalize","feedback","defaults","createDefaultModel","out","graph","colorContrast","updateTicks","domain","labelStep","ticks","minor","major","min","Number","toFixed","max","fraction","step","math","evaluate","reject","Error","normalizedQuestion","evaluateMode","mode","exhibitOnly","disabled","fb","undefined","then","feedbackMessage","prompt","type","message","accessibility","createCorrectResponseSession","role","id","validate","config","width","maxNumberOfPoints","errors","widthError","domainError","maxError","pointsError","correctResponseError"],"mappings":"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","sourcesContent":["import cloneDeep from 'lodash/cloneDeep';\nimport find from 'lodash/find';\nimport isEmpty from 'lodash/isEmpty';\nimport isEqual from 'lodash/isEqual';\nimport isEqualWith from 'lodash/isEqualWith';\nimport merge from 'lodash/merge';\nimport omitBy from 'lodash/omitBy';\nimport { getFeedbackForCorrectness } from '@pie-lib/feedback';\nimport { partialScoring } from '@pie-lib/controller-utils';\nimport * as math from 'mathjs';\n\nimport defaults from './defaults';\n\nconst score = number => {\n return {\n score: {\n scaled: number\n }\n };\n};\n\nconst getPartialScore = (corrected, ps) => {\n const { correct } = corrected;\n const rule = ps.find(r => r.numberOfCorrect === correct.length);\n\n if (rule) {\n return 1.0 * (rule.scorePercentage / 100);\n } else {\n return 0;\n }\n};\n\nconst accumulateAnswer = correctResponse => (total, answer) => {\n const isCorrectResponse = correctResponse.some(cr => matches(cr)(answer));\n return total + (isCorrectResponse ? 1 : 0);\n};\n\n/**\n */\nexport function outcome(model, session, env) {\n return new Promise(resolve => {\n if (!session || isEmpty(session)) {\n resolve({ score: 0, empty: true });\n } else {\n const partialScoringEnabled = partialScoring.enabled(model, env);\n const numCorrect = (session.answer || []).reduce(\n accumulateAnswer(model.correctResponse),\n 0\n );\n\n let total = model.correctResponse.length;\n let numIncorrect = 0;\n\n if((session.answer || []).length > total) {\n numIncorrect = (session.answer || []).length - total;\n }\n\n if (total === 0) {\n total = 1;\n }\n\n let score = numCorrect < 0 ? 0 : (numCorrect - numIncorrect) / total;\n\n if(score < 0) {\n score = 0;\n }\n\n resolve({ score: partialScoringEnabled ? score : score === 1 ? 1 : 0 });\n }\n });\n}\n\nexport function getScore(question, session) {\n return new Promise(resolve => {\n if (!session || isEmpty(session)) {\n resolve({ score: { scaled: 0 } })\n } else {\n session.answer = session.answer || [];\n\n const corrected = getCorrected(\n session.answer,\n cloneDeep(question.correctResponse)\n );\n\n const correctness = getCorrectness(corrected);\n\n if (correctness === 'correct') {\n resolve(score(1.0));\n } else if (correctness === 'incorrect') {\n resolve(score(0.0));\n } else if (correctness === 'partial') {\n const { allowPartialScoring, partialScoring } = question;\n const ps = (partialScoring || []).filter(o => !isEmpty(o));\n const canDoPartialScoring = allowPartialScoring && ps.length > 0;\n if (canDoPartialScoring) {\n resolve(score(getPartialScore(corrected, ps)));\n } else {\n resolve(score(0.0));\n }\n } else {\n resolve({ score: { scaled: -1 } });\n }\n }\n });\n}\n\nexport const CLOSE_TO_PRECISION = 3;\n\nexport const closeTo = (a, b, precision) => {\n precision = precision || 5;\n const expectedDiff = Math.pow(10, -precision) / 2;\n const receivedDiff = Math.abs(a - b);\n const close = receivedDiff <= expectedDiff;\n return close;\n};\n\nconst matches = a => v => {\n return isEqualWith(a, v, (v, ov) => {\n if (typeof v === 'number' && typeof ov === 'number') {\n return closeTo(v, ov, CLOSE_TO_PRECISION);\n }\n });\n};\n\nexport const getCorrected = (answer, correctResponse) => {\n if (isEmpty(correctResponse) && answer.length > 0) {\n return {\n correct: [],\n incorrect: [],\n notInAnswer: [],\n noCorrectResponse: true\n };\n }\n\n return answer.reduce(\n (acc, a, index) => {\n const { correct, incorrect, notInAnswer } = acc;\n\n const match = find(notInAnswer, matches(a));\n if (match) {\n correct.push(index);\n notInAnswer.splice(notInAnswer.indexOf(match), 1);\n } else {\n incorrect.push(index);\n }\n\n return {\n correct: correct,\n incorrect: incorrect,\n notInAnswer: notInAnswer\n };\n },\n {\n correct: [],\n incorrect: [],\n notInAnswer: correctResponse\n }\n );\n};\n\nexport const getCorrectness = corrected => {\n const { incorrect, correct, notInAnswer, noCorrectResponse } = corrected;\n\n if (noCorrectResponse) {\n return 'unknown';\n }\n\n if (incorrect.length === 0 && correct.length === 0) {\n return 'unanswered';\n }\n\n if (incorrect.length === 0 && notInAnswer.length === 0) {\n return 'correct';\n }\n\n if (incorrect.length > 0 || notInAnswer.length > 0) {\n if (correct.length > 0) {\n return 'partial';\n } else {\n return 'incorrect';\n }\n }\n\n return 'unknown';\n};\n\n/**\n * A sample of a normalize function see:\n * https://github.com/pie-framework/pie-elements/issues/21\n */\nexport function normalize(question) {\n return new Promise(resolve => {\n const feedback = merge(defaults.feedback, question.feedback);\n\n if (isEqual(feedback, question.feedback)) {\n return resolve({ ...question });\n } else {\n resolve({ ...question, feedback });\n }\n });\n}\n\nexport function createDefaultModel(model = {}) {\n return new Promise(resolve => {\n const out = {\n ...model,\n graph: {\n ...defaults.graph,\n ...model.graph,\n },\n colorContrast: 'black_on_white'\n };\n\n resolve(omitBy(out, v => !v));\n });\n}\n\n// this function is duplicated in configure; at some point, use the same shared function\nconst updateTicks = model => {\n const { graph: { domain, labelStep, ticks = {}} = {}} = model;\n const { minor, major } = ticks;\n\n if (domain) {\n domain.min = Number((domain.min || 0).toFixed(2));\n domain.max = Number((domain.max || 0).toFixed(2));\n }\n\n if (labelStep && typeof labelStep === 'string' && labelStep.match(/^[1-9][0-9]*\\/[1-9][0-9]*$/g)) {\n model.graph.fraction = true;\n\n // update the ticks frequency and label value to match the label step if needed\n const step = math.evaluate(labelStep);\n\n if (step !== major) {\n ticks.major = step;\n ticks.minor = step / (major / minor);\n }\n }\n\n return model;\n};\n\nexport function model(question, session, env) {\n if (!question) {\n return Promise.reject(new Error('question is null'));\n }\n\n return new Promise(async (resolve, reject) => {\n const normalizedQuestion = await normalize(question);\n const { graph } = updateTicks(normalizedQuestion);\n\n if (graph) {\n const evaluateMode = env.mode === 'evaluate';\n\n const correctResponse = cloneDeep(normalizedQuestion.correctResponse);\n const corrected =\n evaluateMode &&\n getCorrected(session ? session.answer || [] : [], correctResponse);\n const correctness = evaluateMode && getCorrectness(corrected);\n\n const { exhibitOnly } = graph;\n const disabled = env.mode !== 'gather' || exhibitOnly === true;\n\n const fb = evaluateMode\n ? getFeedbackForCorrectness(correctness, normalizedQuestion.feedback)\n : Promise.resolve(undefined);\n\n fb.then(feedbackMessage => {\n const out = {\n prompt: normalizedQuestion.prompt,\n graph,\n disabled,\n corrected,\n correctResponse:\n evaluateMode &&\n ['unanswered', 'correct'].indexOf(correctness) === -1 &&\n normalizedQuestion.correctResponse,\n feedback: feedbackMessage && {\n type: correctness,\n message: feedbackMessage\n },\n colorContrast:\n (env.accessibility && env.accessibility.colorContrast) ||\n 'black_on_white'\n };\n\n resolve(omitBy(out, v => !v));\n });\n } else {\n reject(new Error('graph is undefined'));\n }\n });\n}\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise(resolve => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const { correctResponse: answer } = question;\n\n resolve({\n answer,\n id: '1'\n });\n } else {\n resolve(null);\n }\n });\n};\n\nexport const validate = (model = {}, config = {}) => {\n // TODO: add configurable validation props after authoring is updated\n const { graph, correctResponse } = model || {};\n const { width, domain, maxNumberOfPoints } = graph || {};\n const { min, max } = domain || {};\n const errors = {};\n\n if (width < 200 || width > 800) {\n errors.widthError = 'Width should be a value between 200 and 800.';\n }\n\n if (min < -100000 || min > 10000 || max < -100000 || max > 10000) {\n errors.domainError = 'Min and max must both be in the range [-100000, 10000].';\n }\n\n if (min >= max) {\n errors.maxError = 'Max must be greater than min.';\n }\n\n if (maxNumberOfPoints < 1 || maxNumberOfPoints > 20) {\n errors.pointsError = 'Max number of elements should be between 1 and 20.';\n }\n\n if (correctResponse && correctResponse.length === 0) {\n errors.correctResponseError = 'The correct answer should include at least one number line object.';\n }\n\n return errors;\n};\n"],"file":"index.js"}
|
|
1
|
+
{"version":3,"sources":["../src/index.js"],"names":["score","number","scaled","getPartialScore","corrected","ps","correct","rule","find","r","numberOfCorrect","length","scorePercentage","accumulateAnswer","correctResponse","total","answer","isCorrectResponse","some","cr","matches","outcome","model","session","env","Promise","resolve","empty","partialScoringEnabled","partialScoring","enabled","numCorrect","reduce","numIncorrect","getScore","question","getCorrected","correctness","getCorrectness","allowPartialScoring","filter","o","canDoPartialScoring","CLOSE_TO_PRECISION","closeTo","a","b","precision","expectedDiff","Math","pow","receivedDiff","abs","close","v","ov","incorrect","notInAnswer","noCorrectResponse","acc","index","match","push","splice","indexOf","normalize","feedback","defaults","createDefaultModel","out","graph","colorContrast","updateTicks","domain","labelStep","ticks","minor","major","min","Number","toFixed","max","fraction","step","math","evaluate","reject","Error","normalizedQuestion","evaluateMode","mode","exhibitOnly","disabled","fb","undefined","then","feedbackMessage","prompt","type","message","accessibility","createCorrectResponseSession","role","id","validate","config","width","maxNumberOfPoints","errors","widthError","domainError","maxError","pointsError","correctResponseError"],"mappings":"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","sourcesContent":["import cloneDeep from 'lodash/cloneDeep';\nimport find from 'lodash/find';\nimport isEmpty from 'lodash/isEmpty';\nimport isEqual from 'lodash/isEqual';\nimport isEqualWith from 'lodash/isEqualWith';\nimport merge from 'lodash/merge';\nimport omitBy from 'lodash/omitBy';\nimport { getFeedbackForCorrectness } from '@pie-lib/feedback';\nimport { partialScoring } from '@pie-lib/controller-utils';\nimport * as math from 'mathjs';\n\nimport defaults from './defaults';\n\nconst score = (number) => {\n return {\n score: {\n scaled: number,\n },\n };\n};\n\nconst getPartialScore = (corrected, ps) => {\n const { correct } = corrected;\n const rule = ps.find((r) => r.numberOfCorrect === correct.length);\n\n if (rule) {\n return 1.0 * (rule.scorePercentage / 100);\n } else {\n return 0;\n }\n};\n\nconst accumulateAnswer = (correctResponse) => (total, answer) => {\n const isCorrectResponse = correctResponse.some((cr) => matches(cr)(answer));\n return total + (isCorrectResponse ? 1 : 0);\n};\n\n/**\n */\nexport function outcome(model, session, env) {\n return new Promise((resolve) => {\n if (!session || isEmpty(session)) {\n resolve({ score: 0, empty: true });\n } else {\n const partialScoringEnabled = partialScoring.enabled(model, env);\n const numCorrect = (session.answer || []).reduce(accumulateAnswer(model.correctResponse), 0);\n\n let total = model.correctResponse.length;\n let numIncorrect = 0;\n\n if ((session.answer || []).length > total) {\n numIncorrect = (session.answer || []).length - total;\n }\n\n if (total === 0) {\n total = 1;\n }\n\n let score = numCorrect < 0 ? 0 : (numCorrect - numIncorrect) / total;\n\n if (score < 0) {\n score = 0;\n }\n\n resolve({ score: partialScoringEnabled ? score : score === 1 ? 1 : 0 });\n }\n });\n}\n\nexport function getScore(question, session) {\n return new Promise((resolve) => {\n if (!session || isEmpty(session)) {\n resolve({ score: { scaled: 0 } });\n } else {\n session.answer = session.answer || [];\n\n const corrected = getCorrected(session.answer, cloneDeep(question.correctResponse));\n\n const correctness = getCorrectness(corrected);\n\n if (correctness === 'correct') {\n resolve(score(1.0));\n } else if (correctness === 'incorrect') {\n resolve(score(0.0));\n } else if (correctness === 'partial') {\n const { allowPartialScoring, partialScoring } = question;\n const ps = (partialScoring || []).filter((o) => !isEmpty(o));\n const canDoPartialScoring = allowPartialScoring && ps.length > 0;\n if (canDoPartialScoring) {\n resolve(score(getPartialScore(corrected, ps)));\n } else {\n resolve(score(0.0));\n }\n } else {\n resolve({ score: { scaled: -1 } });\n }\n }\n });\n}\n\nexport const CLOSE_TO_PRECISION = 3;\n\nexport const closeTo = (a, b, precision) => {\n precision = precision || 5;\n const expectedDiff = Math.pow(10, -precision) / 2;\n const receivedDiff = Math.abs(a - b);\n const close = receivedDiff <= expectedDiff;\n return close;\n};\n\nconst matches = (a) => (v) => {\n return isEqualWith(a, v, (v, ov) => {\n if (typeof v === 'number' && typeof ov === 'number') {\n return closeTo(v, ov, CLOSE_TO_PRECISION);\n }\n });\n};\n\nexport const getCorrected = (answer, correctResponse) => {\n if (isEmpty(correctResponse) && answer.length > 0) {\n return {\n correct: [],\n incorrect: [],\n notInAnswer: [],\n noCorrectResponse: true,\n };\n }\n\n return answer.reduce(\n (acc, a, index) => {\n const { correct, incorrect, notInAnswer } = acc;\n\n const match = find(notInAnswer, matches(a));\n if (match) {\n correct.push(index);\n notInAnswer.splice(notInAnswer.indexOf(match), 1);\n } else {\n incorrect.push(index);\n }\n\n return {\n correct: correct,\n incorrect: incorrect,\n notInAnswer: notInAnswer,\n };\n },\n {\n correct: [],\n incorrect: [],\n notInAnswer: correctResponse,\n },\n );\n};\n\nexport const getCorrectness = (corrected) => {\n const { incorrect, correct, notInAnswer, noCorrectResponse } = corrected;\n\n if (noCorrectResponse) {\n return 'unknown';\n }\n\n if (incorrect.length === 0 && correct.length === 0) {\n return 'unanswered';\n }\n\n if (incorrect.length === 0 && notInAnswer.length === 0) {\n return 'correct';\n }\n\n if (incorrect.length > 0 || notInAnswer.length > 0) {\n if (correct.length > 0) {\n return 'partial';\n } else {\n return 'incorrect';\n }\n }\n\n return 'unknown';\n};\n\n/**\n * A sample of a normalize function see:\n * https://github.com/pie-framework/pie-elements/issues/21\n */\nexport function normalize(question) {\n return new Promise((resolve) => {\n const feedback = merge(defaults.feedback, question.feedback);\n\n if (isEqual(feedback, question.feedback)) {\n return resolve({ ...question });\n } else {\n resolve({ ...question, feedback });\n }\n });\n}\n\nexport function createDefaultModel(model = {}) {\n return new Promise((resolve) => {\n const out = {\n ...model,\n graph: {\n ...defaults.graph,\n ...model.graph,\n },\n colorContrast: 'black_on_white',\n };\n\n resolve(omitBy(out, (v) => !v));\n });\n}\n\n// this function is duplicated in configure; at some point, use the same shared function\nconst updateTicks = (model) => {\n const { graph: { domain, labelStep, ticks = {} } = {} } = model;\n const { minor, major } = ticks;\n\n if (domain) {\n domain.min = Number((domain.min || 0).toFixed(2));\n domain.max = Number((domain.max || 0).toFixed(2));\n }\n\n if (labelStep && typeof labelStep === 'string' && labelStep.match(/^[1-9][0-9]*\\/[1-9][0-9]*$/g)) {\n model.graph.fraction = true;\n\n // update the ticks frequency and label value to match the label step if needed\n const step = math.evaluate(labelStep);\n\n if (step !== major) {\n ticks.major = step;\n ticks.minor = step / (major / minor);\n }\n }\n\n return model;\n};\n\nexport function model(question, session, env) {\n if (!question) {\n return Promise.reject(new Error('question is null'));\n }\n\n return new Promise(async (resolve, reject) => {\n const normalizedQuestion = await normalize(question);\n const { graph } = updateTicks(normalizedQuestion);\n\n if (graph) {\n const evaluateMode = env.mode === 'evaluate';\n\n const correctResponse = cloneDeep(normalizedQuestion.correctResponse);\n const corrected = evaluateMode && getCorrected(session ? session.answer || [] : [], correctResponse);\n const correctness = evaluateMode && getCorrectness(corrected);\n\n const { exhibitOnly } = graph;\n const disabled = env.mode !== 'gather' || exhibitOnly === true;\n\n const fb = evaluateMode\n ? getFeedbackForCorrectness(correctness, normalizedQuestion.feedback)\n : Promise.resolve(undefined);\n\n fb.then((feedbackMessage) => {\n const out = {\n prompt: normalizedQuestion.prompt,\n graph,\n disabled,\n corrected,\n correctResponse:\n evaluateMode && ['unanswered', 'correct'].indexOf(correctness) === -1 && normalizedQuestion.correctResponse,\n feedback: feedbackMessage && {\n type: correctness,\n message: feedbackMessage,\n },\n colorContrast: (env.accessibility && env.accessibility.colorContrast) || 'black_on_white',\n };\n\n resolve(omitBy(out, (v) => !v));\n });\n } else {\n reject(new Error('graph is undefined'));\n }\n });\n}\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const { correctResponse: answer } = question;\n\n resolve({\n answer,\n id: '1',\n });\n } else {\n resolve(null);\n }\n });\n};\n\nexport const validate = (model = {}, config = {}) => {\n // TODO: add configurable validation props after authoring is updated\n const { graph, correctResponse } = model || {};\n const { width, domain, maxNumberOfPoints } = graph || {};\n const { min, max } = domain || {};\n const errors = {};\n\n if (width < 200 || width > 800) {\n errors.widthError = 'Width should be a value between 200 and 800.';\n }\n\n if (min < -100000 || min > 10000 || max < -100000 || max > 10000) {\n errors.domainError = 'Min and max must both be in the range [-100000, 10000].';\n }\n\n if (min >= max) {\n errors.maxError = 'Max must be greater than min.';\n }\n\n if (maxNumberOfPoints < 1 || maxNumberOfPoints > 20) {\n errors.pointsError = 'Max number of elements should be between 1 and 20.';\n }\n\n if (correctResponse && correctResponse.length === 0) {\n errors.correctResponseError = 'The correct answer should include at least one number line object.';\n }\n\n return errors;\n};\n"],"file":"index.js"}
|