@pie-element/number-line 7.3.2-next.2 → 7.3.2-next.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -15,7 +15,7 @@ var model = {
15
15
  minor: 0.125,
16
16
  major: 0.5,
17
17
  labelStep: '1/2',
18
- tickIntervalType: 'Fraction',
18
+ tickIntervalType: 'Decimal',
19
19
  tickStep: '1/8'
20
20
  },
21
21
  arrows: {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/defaults.js"],"names":["model","correctResponse","graph","domain","min","max","ticks","minor","major","labelStep","tickIntervalType","tickStep","arrows","left","right","maxNumberOfPoints","width","initialType","exhibitOnly","toolbarEditorPosition","availableTypes","PF","initialElements","widthEnabled","feedback","correct","type","incorrect","partial","configuration","instruction","settings","enabled","label","prompt","teacherInstructions","numberLineDimensions","step","spellCheck","mathMlOptions","mmlOutput","mmlEditing","language","languageChoices","options","maxMaxElements","hidePointConfigButtons","availableTools"],"mappings":"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","sourcesContent":["export const model = {\n correctResponse: [],\n graph: {\n domain: {\n min: -1,\n max: 1,\n },\n ticks: {\n minor: 0.125,\n major: 0.5,\n labelStep: '1/2',\n tickIntervalType: 'Fraction',\n tickStep: '1/8',\n },\n arrows: {\n left: true,\n right: true,\n },\n maxNumberOfPoints: 1,\n width: 500,\n initialType: 'PF',\n exhibitOnly: false,\n toolbarEditorPosition: 'bottom',\n availableTypes: {\n PF: true,\n },\n initialElements: [],\n },\n widthEnabled: true,\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 instruction: {\n settings: false,\n enabled: true,\n label:\n 'Number line questions involve plotting points or other objects. To create one, first set up the number line, then select the plotting tools students will be offered and use them to define the correct answer.',\n },\n prompt: {\n settings: true,\n label: 'Item Stem',\n },\n teacherInstructions: {\n settings: true,\n label: 'Teacher Instructions',\n },\n numberLineDimensions: {\n settings: true,\n label: 'Width',\n enabled: true,\n min: 200,\n max: 800,\n step: 20,\n },\n spellCheck: {\n label: 'Spellcheck',\n settings: false,\n enabled: true,\n },\n mathMlOptions: {\n mmlOutput: false,\n mmlEditing: false,\n },\n language: {\n settings: false,\n label: 'Specify Language',\n enabled: false,\n },\n languageChoices: {\n label: 'Language Choices',\n options: [],\n },\n maxMaxElements: 20,\n hidePointConfigButtons: false,\n availableTools: ['PF', 'LFF', 'LEF', 'LFE', 'LEE', 'RFN', 'RFP', 'REN', 'REP'],\n};\n"],"file":"defaults.js"}
1
+ {"version":3,"sources":["../src/defaults.js"],"names":["model","correctResponse","graph","domain","min","max","ticks","minor","major","labelStep","tickIntervalType","tickStep","arrows","left","right","maxNumberOfPoints","width","initialType","exhibitOnly","toolbarEditorPosition","availableTypes","PF","initialElements","widthEnabled","feedback","correct","type","incorrect","partial","configuration","instruction","settings","enabled","label","prompt","teacherInstructions","numberLineDimensions","step","spellCheck","mathMlOptions","mmlOutput","mmlEditing","language","languageChoices","options","maxMaxElements","hidePointConfigButtons","availableTools"],"mappings":"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","sourcesContent":["export const model = {\n correctResponse: [],\n graph: {\n domain: {\n min: -1,\n max: 1,\n },\n ticks: {\n minor: 0.125,\n major: 0.5,\n labelStep: '1/2',\n tickIntervalType: 'Decimal',\n tickStep: '1/8',\n },\n arrows: {\n left: true,\n right: true,\n },\n maxNumberOfPoints: 1,\n width: 500,\n initialType: 'PF',\n exhibitOnly: false,\n toolbarEditorPosition: 'bottom',\n availableTypes: {\n PF: true,\n },\n initialElements: [],\n },\n widthEnabled: true,\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 instruction: {\n settings: false,\n enabled: true,\n label:\n 'Number line questions involve plotting points or other objects. To create one, first set up the number line, then select the plotting tools students will be offered and use them to define the correct answer.',\n },\n prompt: {\n settings: true,\n label: 'Item Stem',\n },\n teacherInstructions: {\n settings: true,\n label: 'Teacher Instructions',\n },\n numberLineDimensions: {\n settings: true,\n label: 'Width',\n enabled: true,\n min: 200,\n max: 800,\n step: 20,\n },\n spellCheck: {\n label: 'Spellcheck',\n settings: false,\n enabled: true,\n },\n mathMlOptions: {\n mmlOutput: false,\n mmlEditing: false,\n },\n language: {\n settings: false,\n label: 'Specify Language',\n enabled: false,\n },\n languageChoices: {\n label: 'Language Choices',\n options: [],\n },\n maxMaxElements: 20,\n hidePointConfigButtons: false,\n availableTools: ['PF', 'LFF', 'LEF', 'LFE', 'LEE', 'RFN', 'RFP', 'REN', 'REP'],\n};\n"],"file":"defaults.js"}
@@ -70,8 +70,13 @@ var Domain = /*#__PURE__*/function (_React$Component) {
70
70
  key: "change",
71
71
  value: function change(key, event, value) {
72
72
  var onChange = this.props.onChange;
73
+ var update; //Added condition when min and max is same, then it should not update the value
73
74
 
74
- var update = _objectSpread(_objectSpread({}, this.props.domain), {}, (0, _defineProperty2["default"])({}, key, value));
75
+ if (key === 'min' && value === this.props.domain.max || key === 'max' && value === this.props.domain.min) {
76
+ update = _objectSpread({}, this.props.domain);
77
+ } else {
78
+ update = _objectSpread(_objectSpread({}, this.props.domain), {}, (0, _defineProperty2["default"])({}, key, value));
79
+ }
75
80
 
76
81
  onChange(sort(update));
77
82
  }
@@ -86,12 +91,16 @@ var Domain = /*#__PURE__*/function (_React$Component) {
86
91
  }, /*#__PURE__*/_react["default"].createElement("div", {
87
92
  className: classes.flexRow
88
93
  }, /*#__PURE__*/_react["default"].createElement("label", null, "Min Value"), /*#__PURE__*/_react["default"].createElement(_numberTextField.MiniField, {
94
+ min: -100000,
95
+ max: 99999,
89
96
  value: domain.min,
90
97
  name: DOMAIN_BEGIN,
91
98
  onChange: this.changeMin
92
99
  })), /*#__PURE__*/_react["default"].createElement("div", {
93
100
  className: classes.flexRow
94
101
  }, /*#__PURE__*/_react["default"].createElement("label", null, "Max Value"), /*#__PURE__*/_react["default"].createElement(_numberTextField.MiniField, {
102
+ min: -99999,
103
+ max: 100000,
95
104
  value: domain.max,
96
105
  name: DOMAIN_END,
97
106
  onChange: this.changeMax
@@ -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","classes","displayFlex","flexRow","React","Component","propTypes","PropTypes","object","isRequired","shape","number","func","styles","theme","display","gap","alignItems"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;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;;AACD,SAAO;AAAEC,IAAAA,GAAG,EAAED,MAAM,CAACE,GAAd;AAAmBA,IAAAA,GAAG,EAAEF,MAAM,CAACC;AAA/B,GAAP;AACD,CALD;;IAOaE,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,wBAA4B,KAAKT,KAAjC;AAAA,UAAQU,OAAR,eAAQA,OAAR;AAAA,UAAiBd,MAAjB,eAAiBA,MAAjB;AAEA,0BACE;AAAK,QAAA,SAAS,EAAEc,OAAO,CAACC;AAAxB,sBACE;AAAK,QAAA,SAAS,EAAED,OAAO,CAACE;AAAxB,sBACE,2DADF,eAEE,gCAAC,0BAAD;AAAW,QAAA,KAAK,EAAEhB,MAAM,CAACC,GAAzB;AAA8B,QAAA,IAAI,EAAEJ,YAApC;AAAkD,QAAA,QAAQ,EAAE,KAAKQ;AAAjE,QAFF,CADF,eAKE;AAAK,QAAA,SAAS,EAAES,OAAO,CAACE;AAAxB,sBACE,2DADF,eAEE,gCAAC,0BAAD;AAAW,QAAA,KAAK,EAAEhB,MAAM,CAACE,GAAzB;AAA8B,QAAA,IAAI,EAAEJ,UAApC;AAAgD,QAAA,QAAQ,EAAE,KAAKU;AAA/D,QAFF,CALF,CADF;AAYD;;;EA7ByBS,kBAAMC,S;;;AA+BlCf,MAAM,CAACgB,SAAP,GAAmB;AACjBL,EAAAA,OAAO,EAAEM,sBAAUC,MAAV,CAAiBC,UADT;AAEjBtB,EAAAA,MAAM,EAAEoB,sBAAUG,KAAV,CAAgB;AAAEtB,IAAAA,GAAG,EAAEmB,sBAAUI,MAAjB;AAAyBtB,IAAAA,GAAG,EAAEkB,sBAAUI;AAAxC,GAAhB,CAFS;AAGjBZ,EAAAA,QAAQ,EAAEQ,sBAAUK,IAAV,CAAeH;AAHR,CAAnB;;AAKA,IAAMI,MAAM,GAAG,SAATA,MAAS,CAACC,KAAD;AAAA,SAAY;AACzBZ,IAAAA,WAAW,EAAE;AACXa,MAAAA,OAAO,EAAE,MADE;AAEXC,MAAAA,GAAG,EAAE;AAFM,KADY;AAKzBb,IAAAA,OAAO,EAAE;AACPY,MAAAA,OAAO,EAAE,MADF;AAEPE,MAAAA,UAAU,EAAE,QAFL;AAGPD,MAAAA,GAAG,EAAE;AAHE;AALgB,GAAZ;AAAA,CAAf;;eAWe,wBAAWH,MAAX,EAAmBvB,MAAnB,C","sourcesContent":["import { MiniField } from './number-text-field';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { withStyles } from '@material-ui/core/styles';\n\nconst DOMAIN_BEGIN = 'domainBegin';\nconst DOMAIN_END = 'domainEnd';\n\nconst sort = (domain) => {\n if (domain.min <= domain.max) {\n return domain;\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 { classes, domain } = this.props;\n\n return (\n <div className={classes.displayFlex}>\n <div className={classes.flexRow}>\n <label>Min Value</label>\n <MiniField value={domain.min} name={DOMAIN_BEGIN} onChange={this.changeMin} />\n </div>\n <div className={classes.flexRow}>\n <label>Max Value</label>\n <MiniField value={domain.max} name={DOMAIN_END} onChange={this.changeMax} />\n </div>\n </div>\n );\n }\n}\nDomain.propTypes = {\n classes: PropTypes.object.isRequired,\n domain: PropTypes.shape({ min: PropTypes.number, max: PropTypes.number }),\n onChange: PropTypes.func.isRequired,\n};\nconst styles = (theme) => ({\n displayFlex: {\n display: 'flex',\n gap: '20px',\n },\n flexRow: {\n display: 'flex',\n alignItems: 'center',\n gap: '10px',\n },\n});\nexport default withStyles(styles)(Domain);\n"],"file":"domain.js"}
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","classes","displayFlex","flexRow","React","Component","propTypes","PropTypes","object","isRequired","shape","number","func","styles","theme","display","gap","alignItems"],"mappings":"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","sourcesContent":["import { MiniField } from './number-text-field';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { withStyles } from '@material-ui/core/styles';\n\nconst DOMAIN_BEGIN = 'domainBegin';\nconst DOMAIN_END = 'domainEnd';\n\nconst sort = (domain) => {\n if (domain.min <= domain.max) {\n return domain;\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 let update;\n //Added condition when min and max is same, then it should not update the value\n if ((key === 'min' && value === this.props.domain.max) || (key === 'max' && value === this.props.domain.min)) {\n update = { ...this.props.domain };\n } else {\n update = { ...this.props.domain, [key]: value };\n }\n onChange(sort(update));\n }\n\n render() {\n const { classes, domain } = this.props;\n\n return (\n <div className={classes.displayFlex}>\n <div className={classes.flexRow}>\n <label>Min Value</label>\n <MiniField min={-100000} max={99999} value={domain.min} name={DOMAIN_BEGIN} onChange={this.changeMin} />\n </div>\n <div className={classes.flexRow}>\n <label>Max Value</label>\n <MiniField min={-99999} max={100000} value={domain.max} name={DOMAIN_END} onChange={this.changeMax} />\n </div>\n </div>\n );\n }\n}\nDomain.propTypes = {\n classes: PropTypes.object.isRequired,\n domain: PropTypes.shape({ min: PropTypes.number, max: PropTypes.number }),\n onChange: PropTypes.func.isRequired,\n};\nconst styles = (theme) => ({\n displayFlex: {\n display: 'flex',\n gap: '20px',\n },\n flexRow: {\n display: 'flex',\n alignItems: 'center',\n gap: '10px',\n },\n});\nexport default withStyles(styles)(Domain);\n"],"file":"domain.js"}
@@ -94,7 +94,7 @@ var trimModel = function trimModel(model) {
94
94
 
95
95
 
96
96
  var ticksModel = {
97
- tickIntervalType: 'Fraction',
97
+ tickIntervalType: 'Decimal',
98
98
  integerTick: 0,
99
99
  fractionTick: '0/1',
100
100
  decimalTick: 0,
@@ -342,6 +342,33 @@ var Main = /*#__PURE__*/function (_React$Component) {
342
342
  graph.ticks.tickStep = ticksModel.fractionTick;
343
343
  graph.ticks.labelStep = ticksModel.fractionLabel;
344
344
  });
345
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "assignGraphToTicksModel", function (ticks) {
346
+ if (ticks.tickIntervalType) {
347
+ ticksModel.tickIntervalType = ticks.tickIntervalType;
348
+ }
349
+
350
+ if (ticks.minor) {
351
+ ticksModel.decimalTick = ticks.minor;
352
+
353
+ if (ticksModel.tickIntervalType === 'Integer') {
354
+ ticksModel.integerTick = ticks.minor;
355
+ } else {
356
+ ticksModel.integerTick = math.ceil(ticks.minor);
357
+ }
358
+
359
+ if (ticks.tickStep) {
360
+ ticksModel.fractionTick = ticks.tickStep;
361
+ }
362
+ }
363
+
364
+ if (ticks.major) {
365
+ ticksModel.decimalLabel = ticks.major;
366
+
367
+ if (ticks.labelStep) {
368
+ ticksModel.fractionLabel = ticks.labelStep;
369
+ }
370
+ }
371
+ });
345
372
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "getAdjustedHeight", function (availableTypes, maxNumberOfPoints) {
346
373
  var onlyPFAvailable = true;
347
374
  Object.entries(availableTypes || {}).forEach(function (_ref2) {
@@ -607,6 +634,7 @@ var Main = /*#__PURE__*/function (_React$Component) {
607
634
  spellCheckEnabled = _ref9.spellCheckEnabled,
608
635
  toolbarEditorPosition = _ref9.toolbarEditorPosition;
609
636
 
637
+ this.assignGraphToTicksModel(graph.ticks);
610
638
  var _this$state = this.state,
611
639
  dialog = _this$state.dialog,
612
640
  correctAnswerDialog = _this$state.correctAnswerDialog;
@@ -731,6 +759,8 @@ var Main = /*#__PURE__*/function (_React$Component) {
731
759
  onAddElement: function onAddElement() {},
732
760
  onClearElements: function onClearElements() {},
733
761
  onUndoElement: function onUndoElement() {},
762
+ minWidth: numberLineDimensions.min,
763
+ maxWidth: numberLineDimensions.max,
734
764
  model: trimModel(initialModel)
735
765
  }), /*#__PURE__*/_react["default"].createElement(_configUi.FormSection, {
736
766
  label: 'Title',
@@ -777,6 +807,8 @@ var Main = /*#__PURE__*/function (_React$Component) {
777
807
  onAddElement: this.addCorrectResponse,
778
808
  onClearElements: this.clearCorrectResponse,
779
809
  onUndoElement: this.undoCorrectResponse,
810
+ minWidth: numberLineDimensions.min,
811
+ maxWidth: numberLineDimensions.max,
780
812
  answer: correctResponse //strip feedback for this model
781
813
  ,
782
814
  model: trimModel(model)
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/main.jsx"],"names":["trimModel","model","feedback","undefined","prompt","teacherInstructions","graph","title","disabled","correctResponse","ticksModel","tickIntervalType","integerTick","fractionTick","decimalTick","fractionLabel","decimalLabel","data","minorLimits","minorValues","majorValues","lineIsSwitched","dataConverter","switchGraphLine","toGraphFormat","toSessionFormat","styles","theme","maxNumberOfPoints","width","checkbox","marginTop","spacing","unit","marginBottom","row","display","flexWrap","paddingRight","pointTypeChooser","margin","promptContainer","paddingTop","tooltip","fontSize","typography","whiteSpace","maxWidth","inlineFlexContainer","resetButton","errorText","color","palette","error","main","flexRow","alignItems","gap","description","toPointType","response","rest","pointType","direction","leftPoint","rightPoint","type","toUpperCase","Main","props","obj","onChange","reloadTicksData","domain","ticks","assignTicksModelToGraph","height","graphChange","respIndex","forEach","correctResp","key","domainPosition","min","max","size","push","length","setState","correctAnswerDialog","open","text","indices","tickUtils","getMinorLimits","generateMinorValues","initTickModel","minor","decimal","fraction","math","number","indexOf","Number","isInteger","firstInteger","find","el","index","reduce","a","b","Math","abs","ceil","generateMajorValuesForMinor","major","currIndex","ticksData","out","buildTickData","filter","x","tickStep","labelStep","availableTypes","onlyPFAvailable","Object","entries","value","e","floor","isAvailableTypesGreaterThanMaxElements","dialog","getAdjustedHeight","maxElements","availableTypeCount","object","snapElements","initialElements","arrows","defaultModel","position","update","Set","map","v","some","d","pop","state","classes","configuration","uploadSoundSupport","contentDimensions","instruction","mathMlOptions","numberLineDimensions","maxMaxElements","hidePointConfigButtons","availableTools","errors","spellCheckEnabled","toolbarEditorPosition","widthError","domainError","maxError","pointsError","correctResponseError","validationMessage","initialModel","toolbarOpts","label","settings","language","marginLeft","changeTicks","widthEnabled","step","changeSize","changeArrows","changeGraphTitle","exhibitOnly","availableTypesChange","changeMaxNoOfPoints","moveCorrectResponse","deleteCorrectResponse","addCorrectResponse","clearCorrectResponse","undoCorrectResponse","React","Component","PropTypes","isRequired","func","name"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { FormSection, InputContainer, AlertDialog, layout } from '@pie-lib/pie-toolbox/config-ui';\nimport { EditableHtml } from '@pie-lib/pie-toolbox/editable-html';\nimport { NumberLineComponent, dataConverter, tickUtils } from '@pie-element/number-line';\nimport NumberTextField from './number-text-field';\nimport CardBar from './card-bar';\nimport Size from './size';\nimport PropTypes from 'prop-types';\nimport Domain from './domain';\nimport Arrows from './arrows';\nimport PointConfig from './point-config';\nimport cloneDeep from 'lodash/cloneDeep';\nimport { withStyles } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\nimport Info from '@material-ui/icons/Info';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport * as math from 'mathjs';\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 teacherInstructions: undefined,\n graph: { ...model.graph, title: undefined, disabled: true },\n correctResponse: undefined,\n});\n\n// Object holding information related to tick and label interval values.\nlet ticksModel = {\n tickIntervalType: 'Fraction',\n integerTick: 0,\n fractionTick: '0/1',\n decimalTick: 0,\n fractionLabel: '0/1',\n decimalLabel: 0,\n};\n// Object holding data related to possible values for ticks and label interval in array.\nlet data = {\n minorLimits: {},\n minorValues: {},\n majorValues: {},\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 marginBottom: theme.spacing.unit * 2,\n },\n row: {\n display: 'flex',\n flexWrap: 'wrap',\n '& > *': {\n paddingRight: theme.spacing.unit * 2,\n },\n },\n pointTypeChooser: {\n margin: `${theme.spacing.unit * 2.5}px 0`,\n },\n promptContainer: {\n paddingTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\n width: '100%',\n },\n title: {\n marginBottom: theme.spacing.unit * 4,\n },\n tooltip: {\n fontSize: theme.typography.fontSize - 2,\n whiteSpace: 'pre',\n maxWidth: '500px',\n },\n inlineFlexContainer: {\n display: 'inline-flex',\n },\n resetButton: {\n marginBottom: theme.spacing.unit * 2.5,\n },\n errorText: {\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingTop: theme.spacing.unit,\n },\n flexRow: {\n display: 'flex',\n alignItems: 'center',\n gap: '10px',\n },\n description: {\n marginBottom: theme.spacing.unit * 2.5,\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\n return response.pointType[0];\n }\n\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 this.state = {\n dialog: {\n open: false,\n text: '',\n },\n correctAnswerDialog: {\n open: false,\n text: '',\n },\n };\n this.graphChange({ height });\n }\n\n graphChange = (obj) => {\n const { model, onChange } = this.props;\n const graph = { ...model.graph, ...obj };\n this.reloadTicksData(graph.domain, graph.width, graph.ticks);\n this.assignTicksModelToGraph(graph);\n onChange({ graph });\n };\n\n changeSize = ({ width, height }) => this.graphChange({ width, height });\n\n /*\n * This function gets called whenever the min, max or width for number line is changed\n * and it calculates ticks and label values and stores in ticks model.\n * @param domain containing min and max values.\n * @param width represents number line width\n * @param ticks represnt current values for minor and major.\n * */\n reloadTicksData = (domain, width, ticks) => {\n //check correct response\n const { model } = this.props;\n const graph = { ...model.graph };\n let respIndex = [];\n model.correctResponse.forEach((correctResp, key) => {\n if (\n correctResp.domainPosition < domain.min ||\n correctResp.domainPosition > domain.max ||\n (correctResp.size &&\n (correctResp.domainPosition + correctResp.size < domain.min ||\n correctResp.domainPosition + correctResp.size > domain.max))\n ) {\n respIndex.push(key);\n }\n });\n if (respIndex.length > 0) {\n this.setState({\n correctAnswerDialog: {\n open: true,\n text:\n 'This\\n' +\n 'change would make it impossible for students to plot one or more elements in the current\\n' +\n 'correct answer. If you proceed, all such elements will be removed from the correct\\n' +\n 'answer.',\n indices: respIndex,\n graph: graph,\n },\n });\n }\n\n data.minorLimits = tickUtils.getMinorLimits(domain, width);\n data.minorValues = tickUtils.generateMinorValues(data.minorLimits);\n data.majorValues = {};\n const initTickModel = () => {\n if (ticks.tickIntervalType) ticksModel.tickIntervalType = ticks.tickIntervalType;\n //setting minor values\n if (ticks.minor < data.minorLimits.min || ticks.minor > data.minorLimits.max) {\n ticksModel.decimalTick = data.minorValues.decimal[0];\n ticksModel.fractionTick = data.minorValues.fraction[0];\n } else {\n ticksModel.decimalTick = math.number(ticks.minor);\n ticksModel.fractionTick = data.minorValues.fraction[data.minorValues.decimal.indexOf(ticksModel.decimalTick)];\n }\n if (Number.isInteger(ticksModel.decimalTick)) {\n ticksModel.integerTick = math.number(ticksModel.decimalTick);\n } else {\n const firstInteger = data.minorValues.decimal.find(function (el) {\n return Number.isInteger(el);\n });\n if (firstInteger) {\n const index = data.minorValues.decimal.indexOf(firstInteger);\n ticksModel.integerTick = math.number(firstInteger);\n if (ticksModel.tickIntervalType === 'Integer') {\n ticksModel.fractionTick = data.minorValues.fraction[index];\n ticksModel.decimalTick = data.minorValues.decimal[index];\n }\n } else {\n if (ticksModel.tickIntervalType === 'Integer') {\n ticksModel.tickIntervalType = 'Fraction';\n ticksModel.decimalTick = data.minorValues.decimal[data.minorValues.decimal.length - 1];\n ticksModel.fractionTick = data.minorValues.fraction[data.minorValues.fraction.length - 1];\n }\n ticksModel.integerTick = data.minorValues.decimal.reduce((a, b) => {\n return Math.abs(b - ticksModel.decimalTick) < Math.abs(a - ticksModel.decimalTick) ? b : a;\n });\n if (!Number.isInteger(ticksModel.integerTick)) {\n ticksModel.integerTick = math.ceil(ticksModel.integerTick);\n }\n }\n }\n //setting major values\n data.majorValues = tickUtils.generateMajorValuesForMinor(ticksModel.decimalTick, data.minorValues);\n if (!ticks.major) {\n ticksModel.decimalLabel = data.majorValues.decimal[0];\n ticksModel.fractionLabel = data.majorValues.fraction[0];\n } else {\n ticksModel.decimalLabel = math.number(ticks.major);\n if (data.majorValues.decimal.indexOf(ticksModel.decimalLabel) === -1) {\n let currIndex = 0;\n if (ticksModel.tickIntervalType === 'Integer') {\n currIndex = 4;\n } else {\n currIndex = data.majorValues.decimal.length - 1;\n }\n while (currIndex !== 0) {\n let ticksData = { minor: ticksModel.decimalTick, major: data.majorValues.decimal[currIndex] };\n let out = tickUtils.buildTickData(domain, width, ticksData, { fraction: undefined });\n if (out.filter((x) => x.type === 'major').length > 1) {\n break;\n } else {\n currIndex = currIndex - 1;\n }\n }\n ticksModel.decimalLabel = data.majorValues.decimal[currIndex];\n ticksModel.fractionLabel = data.majorValues.fraction[currIndex];\n } else {\n ticksModel.fractionLabel =\n data.majorValues.fraction[data.majorValues.decimal.indexOf(ticksModel.decimalLabel)];\n }\n }\n };\n initTickModel();\n };\n\n /*\n * This function updates calculated ticks values to graph model.\n * @param graph object\n * */\n assignTicksModelToGraph = (graph) => {\n graph.ticks.minor = ticksModel.decimalTick;\n graph.ticks.major = ticksModel.decimalLabel;\n graph.ticks.tickIntervalType = ticksModel.tickIntervalType;\n graph.ticks.tickStep = ticksModel.fractionTick;\n graph.ticks.labelStep = ticksModel.fractionLabel;\n };\n\n getAdjustedHeight = (availableTypes, maxNumberOfPoints) => {\n let onlyPFAvailable = true;\n Object.entries(availableTypes || {}).forEach(([type, value]) => {\n if (type !== 'PF' && value) {\n onlyPFAvailable = false;\n return;\n }\n });\n return maxNumberOfPoints && (maxNumberOfPoints === 1 || onlyPFAvailable)\n ? 100\n : 50 + (maxNumberOfPoints || 20) * 25;\n };\n\n changeMaxNoOfPoints = (e, maxNumberOfPoints) => {\n maxNumberOfPoints = Math.floor(maxNumberOfPoints);\n if (this.isAvailableTypesGreaterThanMaxElements(this.props.model.graph.availableTypes, maxNumberOfPoints)) {\n this.setState({\n dialog: {\n open: true,\n text: 'To use this value, you must first remove one or more elements from the available types.',\n },\n });\n return;\n }\n if (this.props.model.correctResponse.length > maxNumberOfPoints) {\n this.setState({\n dialog: {\n open: true,\n text: 'To use this value, you must first remove one or more elements from the correct answers.',\n },\n });\n return;\n }\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 /*\n * Validation check on wether available type of dot plot is greater than max elements allowed to plot.\n * @param availableTypes array of string.\n * @param maxElements number of max elements to use set by user.\n * @return boolean.\n * */\n isAvailableTypesGreaterThanMaxElements = (availableTypes, maxElements) => {\n let availableTypeCount = 0;\n Object.entries(availableTypes || {}).forEach(([type, value]) => {\n if (value) {\n availableTypeCount = availableTypeCount + 1;\n }\n });\n return availableTypeCount > maxElements;\n };\n\n changeGraphTitle = (title) => this.graphChange({ title });\n\n /*\n * Gets triggered whenever ticks related data is changed by user.\n * */\n changeTicks = (object) => {\n const { model, onChange } = this.props;\n const { ticks } = model.graph;\n ticks.minor = object.ticksModel.decimalTick;\n ticks.major = object.ticksModel.decimalLabel;\n ticks.tickIntervalType = object.ticksModel.tickIntervalType;\n ticks.tickStep = object.ticksModel.fractionTick;\n ticks.labelStep = object.ticksModel.fractionLabel;\n const correctResponse = tickUtils.snapElements(model.graph.domain, ticks, model.correctResponse);\n const initialElements = tickUtils.snapElements(model.graph.domain, ticks, model.graph.initialElements);\n const graph = { ...model.graph, ticks, initialElements };\n this.reloadTicksData(graph.domain, graph.width, graph.ticks);\n this.assignTicksModelToGraph(graph);\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 moveCorrectResponse = (index, el, position) => {\n el.position = position;\n\n const { onChange, model } = this.props;\n const update = toSessionFormat(el.type === 'line' && lineIsSwitched(el) ? switchGraphLine(el) : el);\n const correctResponse = [...model.correctResponse];\n correctResponse[index] = update;\n\n onChange({ correctResponse });\n };\n\n availableTypesChange = (availableTypes) => {\n const { model, onChange } = this.props;\n const {\n correctResponse,\n graph: { maxNumberOfPoints },\n } = model;\n\n let availableTypeCount = 0;\n Object.entries(availableTypes || {}).forEach(([type, value]) => {\n if (value) {\n availableTypeCount = availableTypeCount + 1;\n }\n });\n if (maxNumberOfPoints < availableTypeCount) {\n this.props.model.graph.maxNumberOfPoints = availableTypeCount;\n }\n\n new Set(correctResponse.map(toPointType)).forEach((pointType) => {\n availableTypes[pointType] = true;\n });\n\n const height = this.getAdjustedHeight(availableTypes, this.props.model.graph.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) => !indices.some((d) => d === index));\n\n onChange({ correctResponse });\n };\n\n addCorrectResponse = (data) => {\n const { model, onChange } = this.props;\n const correctResponse = [...model.correctResponse];\n correctResponse.push(toSessionFormat(data));\n\n onChange({ correctResponse });\n };\n\n clearCorrectResponse = () => {\n const { onChange } = this.props;\n\n onChange({ correctResponse: [] });\n };\n\n undoCorrectResponse = () => {\n const { model, onChange } = this.props;\n const correctResponse = [...model.correctResponse];\n correctResponse.pop();\n onChange({ correctResponse });\n };\n\n render() {\n const { classes, model, onChange, configuration, uploadSoundSupport } = this.props;\n const {\n contentDimensions = {},\n instruction = {},\n teacherInstructions = {},\n prompt = {},\n mathMlOptions = {},\n numberLineDimensions = {},\n maxMaxElements = 20,\n hidePointConfigButtons = false,\n availableTools = ['PF'],\n } = configuration || {};\n const { errors = {}, graph, spellCheckEnabled, toolbarEditorPosition } = model || {};\n const { dialog, correctAnswerDialog } = this.state;\n\n const { widthError, domainError, maxError, pointsError, correctResponseError } = errors || {};\n const validationMessage = generateValidationMessage();\n\n const correctResponse = cloneDeep(model.correctResponse || []).map(toGraphFormat);\n\n const initialModel = cloneDeep(model);\n initialModel['disabled'] = true;\n\n const toolbarOpts = {\n position: toolbarEditorPosition === 'top' ? 'top' : 'bottom',\n };\n\n return (\n <layout.ConfigLayout dimensions={contentDimensions} hideSettings={true} settings={null}>\n <Typography component=\"div\" type=\"body1\" className={classes.description}>\n {instruction.label}\n </Typography>\n\n {teacherInstructions.settings && (\n <InputContainer label={teacherInstructions.label} className={classes.promptContainer}>\n <EditableHtml\n className={classes.teacherInstructions}\n markup={model.teacherInstructions}\n onChange={(teacherInstructions) => onChange({ teacherInstructions })}\n nonEmpty={false}\n disableUnderline\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n </InputContainer>\n )}\n\n {prompt.settings && (\n <InputContainer label={prompt.label} className={classes.promptContainer}>\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 mathMlOptions={mathMlOptions}\n />\n </InputContainer>\n )}\n\n <CardBar\n header=\"Set Up Number Line\"\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: '8px' }} />\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 <div className={classes.row}>\n <Domain domain={graph.domain} errors={errors} onChange={(domain) => this.graphChange({ domain })} />\n </div>\n\n {maxError && <div className={classes.errorText}>{maxError}</div>}\n {domainError && <div className={classes.errorText}>{domainError}</div>}\n\n <div>\n <FormSection>\n <Ticks ticksModel={ticksModel} data={data} onChange={this.changeTicks} />\n </FormSection>\n </div>\n\n <div className={classes.flexRow}>\n {model.widthEnabled && (\n <Size\n size={graph}\n min={numberLineDimensions.min}\n max={numberLineDimensions.max}\n step={numberLineDimensions.step}\n onChange={this.changeSize}\n />\n )}\n <div></div>\n <Arrows arrows={graph.arrows} onChange={this.changeArrows} />\n </div>\n\n {widthError && <div className={classes.errorText}>{widthError}</div>}\n\n <NumberLineComponent\n onMoveElement={() => {}}\n onDeleteElements={() => {}}\n onAddElement={() => {}}\n onClearElements={() => {}}\n onUndoElement={() => {}}\n model={trimModel(initialModel)}\n />\n\n <FormSection label={'Title'} className={classes.title}>\n <EditableHtml\n markup={graph.title || ''}\n onChange={this.changeGraphTitle}\n toolbarOpts={toolbarOpts}\n activePlugins={[\n 'bold',\n 'html',\n 'italic',\n 'underline',\n 'strikethrough',\n 'image',\n 'math',\n 'languageCharacters',\n 'responseArea',\n ]}\n spellCheck={spellCheckEnabled}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n </FormSection>\n\n {!graph.exhibitOnly && (\n <React.Fragment>\n <CardBar header=\"Define Tool Set and 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 <CardBar header=\"Available Tools\" mini>\n Click on the input options to be displayed to the students. All inputs will display by default.\n </CardBar>\n\n <div className={classes.pointTypeChooser}>\n <PointConfig\n onSelectionChange={this.availableTypesChange}\n selection={graph.availableTypes}\n availableTools={availableTools}\n hideButtons={hidePointConfigButtons}\n />\n </div>\n\n <FormSection className={classes.flexRow}>\n <label>Max No of Elements</label>\n <NumberTextField\n className={classes.maxNumberOfPoints}\n min={1}\n max={maxMaxElements}\n onlyIntegersAllowed={true}\n value={graph.maxNumberOfPoints}\n onChange={this.changeMaxNoOfPoints}\n />\n {pointsError && <div className={classes.errorText}>{pointsError}</div>}\n </FormSection>\n\n <label>Correct Answer</label>\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 {correctResponseError && <div className={classes.errorText}>{correctResponseError}</div>}\n </React.Fragment>\n )}\n <AlertDialog\n open={dialog.open}\n title=\"Warning\"\n text={dialog.text}\n onConfirm={() => this.setState({ dialog: { open: false } })}\n />\n <AlertDialog\n open={correctAnswerDialog.open}\n title=\"Warning\"\n text={correctAnswerDialog.text}\n onConfirm={() => {\n let indices = this.state.correctAnswerDialog.indices;\n if (indices && indices.length > 0) {\n this.deleteCorrectResponse(indices);\n }\n this.setState({ correctAnswerDialog: { open: false } });\n }}\n onClose={() => {\n const graph = this.state.correctAnswerDialog.graph;\n this.reloadTicksData(graph.domain, graph.width, graph.ticks);\n this.assignTicksModelToGraph(graph);\n onChange({ graph });\n this.setState({ correctAnswerDialog: { open: false } });\n }}\n onConfirmText={'OK'}\n onCloseText={'Cancel'}\n />\n </layout.ConfigLayout>\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","teacherInstructions","graph","title","disabled","correctResponse","ticksModel","tickIntervalType","integerTick","fractionTick","decimalTick","fractionLabel","decimalLabel","data","minorLimits","minorValues","majorValues","lineIsSwitched","dataConverter","switchGraphLine","toGraphFormat","toSessionFormat","styles","theme","maxNumberOfPoints","width","checkbox","marginTop","spacing","unit","marginBottom","row","display","flexWrap","paddingRight","pointTypeChooser","margin","promptContainer","paddingTop","tooltip","fontSize","typography","whiteSpace","maxWidth","inlineFlexContainer","resetButton","errorText","color","palette","error","main","flexRow","alignItems","gap","description","toPointType","response","rest","pointType","direction","leftPoint","rightPoint","type","toUpperCase","Main","props","obj","onChange","reloadTicksData","domain","ticks","assignTicksModelToGraph","height","graphChange","respIndex","forEach","correctResp","key","domainPosition","min","max","size","push","length","setState","correctAnswerDialog","open","text","indices","tickUtils","getMinorLimits","generateMinorValues","initTickModel","minor","decimal","fraction","math","number","indexOf","Number","isInteger","firstInteger","find","el","index","reduce","a","b","Math","abs","ceil","generateMajorValuesForMinor","major","currIndex","ticksData","out","buildTickData","filter","x","tickStep","labelStep","availableTypes","onlyPFAvailable","Object","entries","value","e","floor","isAvailableTypesGreaterThanMaxElements","dialog","getAdjustedHeight","maxElements","availableTypeCount","object","snapElements","initialElements","arrows","defaultModel","position","update","Set","map","v","some","d","pop","state","classes","configuration","uploadSoundSupport","contentDimensions","instruction","mathMlOptions","numberLineDimensions","maxMaxElements","hidePointConfigButtons","availableTools","errors","spellCheckEnabled","toolbarEditorPosition","assignGraphToTicksModel","widthError","domainError","maxError","pointsError","correctResponseError","validationMessage","initialModel","toolbarOpts","label","settings","language","marginLeft","changeTicks","widthEnabled","step","changeSize","changeArrows","changeGraphTitle","exhibitOnly","availableTypesChange","changeMaxNoOfPoints","moveCorrectResponse","deleteCorrectResponse","addCorrectResponse","clearCorrectResponse","undoCorrectResponse","React","Component","PropTypes","isRequired","func","name"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;;;;;AAEA,IAAMA,SAAS,GAAG,SAAZA,SAAY,CAACC,KAAD;AAAA,yCACbA,KADa;AAEhBC,IAAAA,QAAQ,EAAEC,SAFM;AAGhBC,IAAAA,MAAM,EAAED,SAHQ;AAIhBE,IAAAA,mBAAmB,EAAEF,SAJL;AAKhBG,IAAAA,KAAK,kCAAOL,KAAK,CAACK,KAAb;AAAoBC,MAAAA,KAAK,EAAEJ,SAA3B;AAAsCK,MAAAA,QAAQ,EAAE;AAAhD,MALW;AAMhBC,IAAAA,eAAe,EAAEN;AAND;AAAA,CAAlB,C,CASA;;;AACA,IAAIO,UAAU,GAAG;AACfC,EAAAA,gBAAgB,EAAE,SADH;AAEfC,EAAAA,WAAW,EAAE,CAFE;AAGfC,EAAAA,YAAY,EAAE,KAHC;AAIfC,EAAAA,WAAW,EAAE,CAJE;AAKfC,EAAAA,aAAa,EAAE,KALA;AAMfC,EAAAA,YAAY,EAAE;AANC,CAAjB,C,CAQA;;AACA,IAAIC,IAAI,GAAG;AACTC,EAAAA,WAAW,EAAE,EADJ;AAETC,EAAAA,WAAW,EAAE,EAFJ;AAGTC,EAAAA,WAAW,EAAE;AAHJ,CAAX;AAMA,IAAQC,cAAR,GAA4EC,yBAA5E,CAAQD,cAAR;AAAA,IAAwBE,eAAxB,GAA4ED,yBAA5E,CAAwBC,eAAxB;AAAA,IAAyCC,aAAzC,GAA4EF,yBAA5E,CAAyCE,aAAzC;AAAA,IAAwDC,eAAxD,GAA4EH,yBAA5E,CAAwDG,eAAxD;;AAEA,IAAMC,MAAM,GAAG,SAATA,MAAS,CAACC,KAAD;AAAA,SAAY;AACzBC,IAAAA,iBAAiB,EAAE;AACjBC,MAAAA,KAAK,EAAE;AADU,KADM;AAIzBC,IAAAA,QAAQ,EAAE;AACRC,MAAAA,SAAS,EAAEJ,KAAK,CAACK,OAAN,CAAcC,IAAd,GAAqB,CADxB;AAERC,MAAAA,YAAY,EAAEP,KAAK,CAACK,OAAN,CAAcC,IAAd,GAAqB;AAF3B,KAJe;AAQzBE,IAAAA,GAAG,EAAE;AACHC,MAAAA,OAAO,EAAE,MADN;AAEHC,MAAAA,QAAQ,EAAE,MAFP;AAGH,eAAS;AACPC,QAAAA,YAAY,EAAEX,KAAK,CAACK,OAAN,CAAcC,IAAd,GAAqB;AAD5B;AAHN,KARoB;AAezBM,IAAAA,gBAAgB,EAAE;AAChBC,MAAAA,MAAM,YAAKb,KAAK,CAACK,OAAN,CAAcC,IAAd,GAAqB,GAA1B;AADU,KAfO;AAkBzBQ,IAAAA,eAAe,EAAE;AACfC,MAAAA,UAAU,EAAEf,KAAK,CAACK,OAAN,CAAcC,IAAd,GAAqB,CADlB;AAEfC,MAAAA,YAAY,EAAEP,KAAK,CAACK,OAAN,CAAcC,IAAd,GAAqB,CAFpB;AAGfJ,MAAAA,KAAK,EAAE;AAHQ,KAlBQ;AAuBzBtB,IAAAA,KAAK,EAAE;AACL2B,MAAAA,YAAY,EAAEP,KAAK,CAACK,OAAN,CAAcC,IAAd,GAAqB;AAD9B,KAvBkB;AA0BzBU,IAAAA,OAAO,EAAE;AACPC,MAAAA,QAAQ,EAAEjB,KAAK,CAACkB,UAAN,CAAiBD,QAAjB,GAA4B,CAD/B;AAEPE,MAAAA,UAAU,EAAE,KAFL;AAGPC,MAAAA,QAAQ,EAAE;AAHH,KA1BgB;AA+BzBC,IAAAA,mBAAmB,EAAE;AACnBZ,MAAAA,OAAO,EAAE;AADU,KA/BI;AAkCzBa,IAAAA,WAAW,EAAE;AACXf,MAAAA,YAAY,EAAEP,KAAK,CAACK,OAAN,CAAcC,IAAd,GAAqB;AADxB,KAlCY;AAqCzBiB,IAAAA,SAAS,EAAE;AACTN,MAAAA,QAAQ,EAAEjB,KAAK,CAACkB,UAAN,CAAiBD,QAAjB,GAA4B,CAD7B;AAETO,MAAAA,KAAK,EAAExB,KAAK,CAACyB,OAAN,CAAcC,KAAd,CAAoBC,IAFlB;AAGTZ,MAAAA,UAAU,EAAEf,KAAK,CAACK,OAAN,CAAcC;AAHjB,KArCc;AA0CzBsB,IAAAA,OAAO,EAAE;AACPnB,MAAAA,OAAO,EAAE,MADF;AAEPoB,MAAAA,UAAU,EAAE,QAFL;AAGPC,MAAAA,GAAG,EAAE;AAHE,KA1CgB;AA+CzBC,IAAAA,WAAW,EAAE;AACXxB,MAAAA,YAAY,EAAEP,KAAK,CAACK,OAAN,CAAcC,IAAd,GAAqB;AADxB;AA/CY,GAAZ;AAAA,CAAf;;AAoDO,IAAM0B,WAAW,GAAG,SAAdA,WAAc,CAACC,QAAD,EAAc;AACvC,WAASC,IAAT,CAAcD,QAAd,EAAwB;AACtB,QAAIA,QAAQ,CAACE,SAAb,EAAwB;AACtB,UAAIF,QAAQ,CAACG,SAAb,EAAwB;AACtB,yBAAUH,QAAQ,CAACE,SAAT,CAAmB,CAAnB,CAAV,SAAkCF,QAAQ,CAACG,SAAT,CAAmB,CAAnB,CAAlC;AACD;;AAED,aAAOH,QAAQ,CAACE,SAAT,CAAmB,CAAnB,CAAP;AACD;;AAED,qBAAUF,QAAQ,CAACI,SAAT,CAAmB,CAAnB,CAAV,SAAkCJ,QAAQ,CAACK,UAAT,CAAoB,CAApB,CAAlC;AACD;;AAED,SAAO,UAAGL,QAAQ,CAACM,IAAT,CAAc,CAAd,CAAH,SAAsBL,IAAI,CAACD,QAAD,CAA1B,EAAuCO,WAAvC,EAAP;AACD,CAdM;;;;IAgBMC,I;;;;;AASX,gBAAYC,KAAZ,EAAmB;AAAA;;AAAA;AACjB,8BAAMA,KAAN;AADiB,oGAqBL,UAACC,GAAD,EAAS;AACrB,wBAA4B,MAAKD,KAAjC;AAAA,UAAQpE,KAAR,eAAQA,KAAR;AAAA,UAAesE,QAAf,eAAeA,QAAf;;AACA,UAAMjE,KAAK,mCAAQL,KAAK,CAACK,KAAd,GAAwBgE,GAAxB,CAAX;;AACA,YAAKE,eAAL,CAAqBlE,KAAK,CAACmE,MAA3B,EAAmCnE,KAAK,CAACuB,KAAzC,EAAgDvB,KAAK,CAACoE,KAAtD;;AACA,YAAKC,uBAAL,CAA6BrE,KAA7B;;AACAiE,MAAAA,QAAQ,CAAC;AAAEjE,QAAAA,KAAK,EAALA;AAAF,OAAD,CAAR;AACD,KA3BkB;AAAA,mGA6BN;AAAA,UAAGuB,KAAH,QAAGA,KAAH;AAAA,UAAU+C,MAAV,QAAUA,MAAV;AAAA,aAAuB,MAAKC,WAAL,CAAiB;AAAEhD,QAAAA,KAAK,EAALA,KAAF;AAAS+C,QAAAA,MAAM,EAANA;AAAT,OAAjB,CAAvB;AAAA,KA7BM;AAAA,wGAsCD,UAACH,MAAD,EAAS5C,KAAT,EAAgB6C,KAAhB,EAA0B;AAC1C;AACA,UAAQzE,KAAR,GAAkB,MAAKoE,KAAvB,CAAQpE,KAAR;;AACA,UAAMK,KAAK,qBAAQL,KAAK,CAACK,KAAd,CAAX;;AACA,UAAIwE,SAAS,GAAG,EAAhB;AACA7E,MAAAA,KAAK,CAACQ,eAAN,CAAsBsE,OAAtB,CAA8B,UAACC,WAAD,EAAcC,GAAd,EAAsB;AAClD,YACED,WAAW,CAACE,cAAZ,GAA6BT,MAAM,CAACU,GAApC,IACAH,WAAW,CAACE,cAAZ,GAA6BT,MAAM,CAACW,GADpC,IAECJ,WAAW,CAACK,IAAZ,KACEL,WAAW,CAACE,cAAZ,GAA6BF,WAAW,CAACK,IAAzC,GAAgDZ,MAAM,CAACU,GAAvD,IACCH,WAAW,CAACE,cAAZ,GAA6BF,WAAW,CAACK,IAAzC,GAAgDZ,MAAM,CAACW,GAF1D,CAHH,EAME;AACAN,UAAAA,SAAS,CAACQ,IAAV,CAAeL,GAAf;AACD;AACF,OAVD;;AAWA,UAAIH,SAAS,CAACS,MAAV,GAAmB,CAAvB,EAA0B;AACxB,cAAKC,QAAL,CAAc;AACZC,UAAAA,mBAAmB,EAAE;AACnBC,YAAAA,IAAI,EAAE,IADa;AAEnBC,YAAAA,IAAI,EACF,WACA,4FADA,GAEA,sFAFA,GAGA,SANiB;AAOnBC,YAAAA,OAAO,EAAEd,SAPU;AAQnBxE,YAAAA,KAAK,EAAEA;AARY;AADT,SAAd;AAYD;;AAEDW,MAAAA,IAAI,CAACC,WAAL,GAAmB2E,sBAAUC,cAAV,CAAyBrB,MAAzB,EAAiC5C,KAAjC,CAAnB;AACAZ,MAAAA,IAAI,CAACE,WAAL,GAAmB0E,sBAAUE,mBAAV,CAA8B9E,IAAI,CAACC,WAAnC,CAAnB;AACAD,MAAAA,IAAI,CAACG,WAAL,GAAmB,EAAnB;;AACA,UAAM4E,aAAa,GAAG,SAAhBA,aAAgB,GAAM;AAC1B,YAAItB,KAAK,CAAC/D,gBAAV,EAA4BD,UAAU,CAACC,gBAAX,GAA8B+D,KAAK,CAAC/D,gBAApC,CADF,CAE1B;;AACA,YAAI+D,KAAK,CAACuB,KAAN,GAAchF,IAAI,CAACC,WAAL,CAAiBiE,GAA/B,IAAsCT,KAAK,CAACuB,KAAN,GAAchF,IAAI,CAACC,WAAL,CAAiBkE,GAAzE,EAA8E;AAC5E1E,UAAAA,UAAU,CAACI,WAAX,GAAyBG,IAAI,CAACE,WAAL,CAAiB+E,OAAjB,CAAyB,CAAzB,CAAzB;AACAxF,UAAAA,UAAU,CAACG,YAAX,GAA0BI,IAAI,CAACE,WAAL,CAAiBgF,QAAjB,CAA0B,CAA1B,CAA1B;AACD,SAHD,MAGO;AACLzF,UAAAA,UAAU,CAACI,WAAX,GAAyBsF,IAAI,CAACC,MAAL,CAAY3B,KAAK,CAACuB,KAAlB,CAAzB;AACAvF,UAAAA,UAAU,CAACG,YAAX,GAA0BI,IAAI,CAACE,WAAL,CAAiBgF,QAAjB,CAA0BlF,IAAI,CAACE,WAAL,CAAiB+E,OAAjB,CAAyBI,OAAzB,CAAiC5F,UAAU,CAACI,WAA5C,CAA1B,CAA1B;AACD;;AACD,YAAIyF,MAAM,CAACC,SAAP,CAAiB9F,UAAU,CAACI,WAA5B,CAAJ,EAA8C;AAC5CJ,UAAAA,UAAU,CAACE,WAAX,GAAyBwF,IAAI,CAACC,MAAL,CAAY3F,UAAU,CAACI,WAAvB,CAAzB;AACD,SAFD,MAEO;AACL,cAAM2F,YAAY,GAAGxF,IAAI,CAACE,WAAL,CAAiB+E,OAAjB,CAAyBQ,IAAzB,CAA8B,UAAUC,EAAV,EAAc;AAC/D,mBAAOJ,MAAM,CAACC,SAAP,CAAiBG,EAAjB,CAAP;AACD,WAFoB,CAArB;;AAGA,cAAIF,YAAJ,EAAkB;AAChB,gBAAMG,KAAK,GAAG3F,IAAI,CAACE,WAAL,CAAiB+E,OAAjB,CAAyBI,OAAzB,CAAiCG,YAAjC,CAAd;AACA/F,YAAAA,UAAU,CAACE,WAAX,GAAyBwF,IAAI,CAACC,MAAL,CAAYI,YAAZ,CAAzB;;AACA,gBAAI/F,UAAU,CAACC,gBAAX,KAAgC,SAApC,EAA+C;AAC7CD,cAAAA,UAAU,CAACG,YAAX,GAA0BI,IAAI,CAACE,WAAL,CAAiBgF,QAAjB,CAA0BS,KAA1B,CAA1B;AACAlG,cAAAA,UAAU,CAACI,WAAX,GAAyBG,IAAI,CAACE,WAAL,CAAiB+E,OAAjB,CAAyBU,KAAzB,CAAzB;AACD;AACF,WAPD,MAOO;AACL,gBAAIlG,UAAU,CAACC,gBAAX,KAAgC,SAApC,EAA+C;AAC7CD,cAAAA,UAAU,CAACC,gBAAX,GAA8B,UAA9B;AACAD,cAAAA,UAAU,CAACI,WAAX,GAAyBG,IAAI,CAACE,WAAL,CAAiB+E,OAAjB,CAAyBjF,IAAI,CAACE,WAAL,CAAiB+E,OAAjB,CAAyBX,MAAzB,GAAkC,CAA3D,CAAzB;AACA7E,cAAAA,UAAU,CAACG,YAAX,GAA0BI,IAAI,CAACE,WAAL,CAAiBgF,QAAjB,CAA0BlF,IAAI,CAACE,WAAL,CAAiBgF,QAAjB,CAA0BZ,MAA1B,GAAmC,CAA7D,CAA1B;AACD;;AACD7E,YAAAA,UAAU,CAACE,WAAX,GAAyBK,IAAI,CAACE,WAAL,CAAiB+E,OAAjB,CAAyBW,MAAzB,CAAgC,UAACC,CAAD,EAAIC,CAAJ,EAAU;AACjE,qBAAOC,IAAI,CAACC,GAAL,CAASF,CAAC,GAAGrG,UAAU,CAACI,WAAxB,IAAuCkG,IAAI,CAACC,GAAL,CAASH,CAAC,GAAGpG,UAAU,CAACI,WAAxB,CAAvC,GAA8EiG,CAA9E,GAAkFD,CAAzF;AACD,aAFwB,CAAzB;;AAGA,gBAAI,CAACP,MAAM,CAACC,SAAP,CAAiB9F,UAAU,CAACE,WAA5B,CAAL,EAA+C;AAC7CF,cAAAA,UAAU,CAACE,WAAX,GAAyBwF,IAAI,CAACc,IAAL,CAAUxG,UAAU,CAACE,WAArB,CAAzB;AACD;AACF;AACF,SApCyB,CAqC1B;;;AACAK,QAAAA,IAAI,CAACG,WAAL,GAAmByE,sBAAUsB,2BAAV,CAAsCzG,UAAU,CAACI,WAAjD,EAA8DG,IAAI,CAACE,WAAnE,CAAnB;;AACA,YAAI,CAACuD,KAAK,CAAC0C,KAAX,EAAkB;AAChB1G,UAAAA,UAAU,CAACM,YAAX,GAA0BC,IAAI,CAACG,WAAL,CAAiB8E,OAAjB,CAAyB,CAAzB,CAA1B;AACAxF,UAAAA,UAAU,CAACK,aAAX,GAA2BE,IAAI,CAACG,WAAL,CAAiB+E,QAAjB,CAA0B,CAA1B,CAA3B;AACD,SAHD,MAGO;AACLzF,UAAAA,UAAU,CAACM,YAAX,GAA0BoF,IAAI,CAACC,MAAL,CAAY3B,KAAK,CAAC0C,KAAlB,CAA1B;;AACA,cAAInG,IAAI,CAACG,WAAL,CAAiB8E,OAAjB,CAAyBI,OAAzB,CAAiC5F,UAAU,CAACM,YAA5C,MAA8D,CAAC,CAAnE,EAAsE;AACpE,gBAAIqG,SAAS,GAAG,CAAhB;;AACA,gBAAI3G,UAAU,CAACC,gBAAX,KAAgC,SAApC,EAA+C;AAC7C0G,cAAAA,SAAS,GAAG,CAAZ;AACD,aAFD,MAEO;AACLA,cAAAA,SAAS,GAAGpG,IAAI,CAACG,WAAL,CAAiB8E,OAAjB,CAAyBX,MAAzB,GAAkC,CAA9C;AACD;;AACD,mBAAO8B,SAAS,KAAK,CAArB,EAAwB;AACtB,kBAAIC,SAAS,GAAG;AAAErB,gBAAAA,KAAK,EAAEvF,UAAU,CAACI,WAApB;AAAiCsG,gBAAAA,KAAK,EAAEnG,IAAI,CAACG,WAAL,CAAiB8E,OAAjB,CAAyBmB,SAAzB;AAAxC,eAAhB;;AACA,kBAAIE,GAAG,GAAG1B,sBAAU2B,aAAV,CAAwB/C,MAAxB,EAAgC5C,KAAhC,EAAuCyF,SAAvC,EAAkD;AAAEnB,gBAAAA,QAAQ,EAAEhG;AAAZ,eAAlD,CAAV;;AACA,kBAAIoH,GAAG,CAACE,MAAJ,CAAW,UAACC,CAAD;AAAA,uBAAOA,CAAC,CAACxD,IAAF,KAAW,OAAlB;AAAA,eAAX,EAAsCqB,MAAtC,GAA+C,CAAnD,EAAsD;AACpD;AACD,eAFD,MAEO;AACL8B,gBAAAA,SAAS,GAAGA,SAAS,GAAG,CAAxB;AACD;AACF;;AACD3G,YAAAA,UAAU,CAACM,YAAX,GAA0BC,IAAI,CAACG,WAAL,CAAiB8E,OAAjB,CAAyBmB,SAAzB,CAA1B;AACA3G,YAAAA,UAAU,CAACK,aAAX,GAA2BE,IAAI,CAACG,WAAL,CAAiB+E,QAAjB,CAA0BkB,SAA1B,CAA3B;AACD,WAlBD,MAkBO;AACL3G,YAAAA,UAAU,CAACK,aAAX,GACEE,IAAI,CAACG,WAAL,CAAiB+E,QAAjB,CAA0BlF,IAAI,CAACG,WAAL,CAAiB8E,OAAjB,CAAyBI,OAAzB,CAAiC5F,UAAU,CAACM,YAA5C,CAA1B,CADF;AAED;AACF;AACF,OAnED;;AAoEAgF,MAAAA,aAAa;AACd,KA7IkB;AAAA,gHAmJO,UAAC1F,KAAD,EAAW;AACnCA,MAAAA,KAAK,CAACoE,KAAN,CAAYuB,KAAZ,GAAoBvF,UAAU,CAACI,WAA/B;AACAR,MAAAA,KAAK,CAACoE,KAAN,CAAY0C,KAAZ,GAAoB1G,UAAU,CAACM,YAA/B;AACAV,MAAAA,KAAK,CAACoE,KAAN,CAAY/D,gBAAZ,GAA+BD,UAAU,CAACC,gBAA1C;AACAL,MAAAA,KAAK,CAACoE,KAAN,CAAYiD,QAAZ,GAAuBjH,UAAU,CAACG,YAAlC;AACAP,MAAAA,KAAK,CAACoE,KAAN,CAAYkD,SAAZ,GAAwBlH,UAAU,CAACK,aAAnC;AACD,KAzJkB;AAAA,gHA+JO,UAAC2D,KAAD,EAAW;AACnC,UAAIA,KAAK,CAAC/D,gBAAV,EAA4B;AAC1BD,QAAAA,UAAU,CAACC,gBAAX,GAA8B+D,KAAK,CAAC/D,gBAApC;AACD;;AACD,UAAI+D,KAAK,CAACuB,KAAV,EAAiB;AACfvF,QAAAA,UAAU,CAACI,WAAX,GAAyB4D,KAAK,CAACuB,KAA/B;;AACA,YAAIvF,UAAU,CAACC,gBAAX,KAAgC,SAApC,EAA+C;AAC7CD,UAAAA,UAAU,CAACE,WAAX,GAAyB8D,KAAK,CAACuB,KAA/B;AACD,SAFD,MAEO;AACLvF,UAAAA,UAAU,CAACE,WAAX,GAAyBwF,IAAI,CAACc,IAAL,CAAUxC,KAAK,CAACuB,KAAhB,CAAzB;AACD;;AACD,YAAIvB,KAAK,CAACiD,QAAV,EAAoB;AAClBjH,UAAAA,UAAU,CAACG,YAAX,GAA0B6D,KAAK,CAACiD,QAAhC;AACD;AACF;;AACD,UAAIjD,KAAK,CAAC0C,KAAV,EAAiB;AACf1G,QAAAA,UAAU,CAACM,YAAX,GAA0B0D,KAAK,CAAC0C,KAAhC;;AACA,YAAI1C,KAAK,CAACkD,SAAV,EAAqB;AACnBlH,UAAAA,UAAU,CAACK,aAAX,GAA2B2D,KAAK,CAACkD,SAAjC;AACD;AACF;AACF,KApLkB;AAAA,0GAsLC,UAACC,cAAD,EAAiBjG,iBAAjB,EAAuC;AACzD,UAAIkG,eAAe,GAAG,IAAtB;AACAC,MAAAA,MAAM,CAACC,OAAP,CAAeH,cAAc,IAAI,EAAjC,EAAqC9C,OAArC,CAA6C,iBAAmB;AAAA;AAAA,YAAjBb,IAAiB;AAAA,YAAX+D,KAAW;;AAC9D,YAAI/D,IAAI,KAAK,IAAT,IAAiB+D,KAArB,EAA4B;AAC1BH,UAAAA,eAAe,GAAG,KAAlB;AACA;AACD;AACF,OALD;AAMA,aAAOlG,iBAAiB,KAAKA,iBAAiB,KAAK,CAAtB,IAA2BkG,eAAhC,CAAjB,GACH,GADG,GAEH,KAAK,CAAClG,iBAAiB,IAAI,EAAtB,IAA4B,EAFrC;AAGD,KAjMkB;AAAA,4GAmMG,UAACsG,CAAD,EAAItG,iBAAJ,EAA0B;AAC9CA,MAAAA,iBAAiB,GAAGoF,IAAI,CAACmB,KAAL,CAAWvG,iBAAX,CAApB;;AACA,UAAI,MAAKwG,sCAAL,CAA4C,MAAK/D,KAAL,CAAWpE,KAAX,CAAiBK,KAAjB,CAAuBuH,cAAnE,EAAmFjG,iBAAnF,CAAJ,EAA2G;AACzG,cAAK4D,QAAL,CAAc;AACZ6C,UAAAA,MAAM,EAAE;AACN3C,YAAAA,IAAI,EAAE,IADA;AAENC,YAAAA,IAAI,EAAE;AAFA;AADI,SAAd;;AAMA;AACD;;AACD,UAAI,MAAKtB,KAAL,CAAWpE,KAAX,CAAiBQ,eAAjB,CAAiC8E,MAAjC,GAA0C3D,iBAA9C,EAAiE;AAC/D,cAAK4D,QAAL,CAAc;AACZ6C,UAAAA,MAAM,EAAE;AACN3C,YAAAA,IAAI,EAAE,IADA;AAENC,YAAAA,IAAI,EAAE;AAFA;AADI,SAAd;;AAMA;AACD;;AACD,UAEakC,cAFb,GAII,MAAKxD,KAJT,CACEpE,KADF,CAEIK,KAFJ,CAEauH,cAFb;;AAKA,UAAMjD,MAAM,GAAG,MAAK0D,iBAAL,CAAuBT,cAAvB,EAAuCjG,iBAAvC,CAAf;;AAEA,YAAKiD,WAAL,CAAiB;AAAEjD,QAAAA,iBAAiB,EAAjBA,iBAAF;AAAqBgD,QAAAA,MAAM,EAANA;AAArB,OAAjB;AACD,KA/NkB;AAAA,+HAuOsB,UAACiD,cAAD,EAAiBU,WAAjB,EAAiC;AACxE,UAAIC,kBAAkB,GAAG,CAAzB;AACAT,MAAAA,MAAM,CAACC,OAAP,CAAeH,cAAc,IAAI,EAAjC,EAAqC9C,OAArC,CAA6C,iBAAmB;AAAA;AAAA,YAAjBb,IAAiB;AAAA,YAAX+D,KAAW;;AAC9D,YAAIA,KAAJ,EAAW;AACTO,UAAAA,kBAAkB,GAAGA,kBAAkB,GAAG,CAA1C;AACD;AACF,OAJD;AAKA,aAAOA,kBAAkB,GAAGD,WAA5B;AACD,KA/OkB;AAAA,yGAiPA,UAAChI,KAAD;AAAA,aAAW,MAAKsE,WAAL,CAAiB;AAAEtE,QAAAA,KAAK,EAALA;AAAF,OAAjB,CAAX;AAAA,KAjPA;AAAA,oGAsPL,UAACkI,MAAD,EAAY;AACxB,yBAA4B,MAAKpE,KAAjC;AAAA,UAAQpE,KAAR,gBAAQA,KAAR;AAAA,UAAesE,QAAf,gBAAeA,QAAf;AACA,UAAQG,KAAR,GAAkBzE,KAAK,CAACK,KAAxB,CAAQoE,KAAR;AACAA,MAAAA,KAAK,CAACuB,KAAN,GAAcwC,MAAM,CAAC/H,UAAP,CAAkBI,WAAhC;AACA4D,MAAAA,KAAK,CAAC0C,KAAN,GAAcqB,MAAM,CAAC/H,UAAP,CAAkBM,YAAhC;AACA0D,MAAAA,KAAK,CAAC/D,gBAAN,GAAyB8H,MAAM,CAAC/H,UAAP,CAAkBC,gBAA3C;AACA+D,MAAAA,KAAK,CAACiD,QAAN,GAAiBc,MAAM,CAAC/H,UAAP,CAAkBG,YAAnC;AACA6D,MAAAA,KAAK,CAACkD,SAAN,GAAkBa,MAAM,CAAC/H,UAAP,CAAkBK,aAApC;;AACA,UAAMN,eAAe,GAAGoF,sBAAU6C,YAAV,CAAuBzI,KAAK,CAACK,KAAN,CAAYmE,MAAnC,EAA2CC,KAA3C,EAAkDzE,KAAK,CAACQ,eAAxD,CAAxB;;AACA,UAAMkI,eAAe,GAAG9C,sBAAU6C,YAAV,CAAuBzI,KAAK,CAACK,KAAN,CAAYmE,MAAnC,EAA2CC,KAA3C,EAAkDzE,KAAK,CAACK,KAAN,CAAYqI,eAA9D,CAAxB;;AACA,UAAMrI,KAAK,mCAAQL,KAAK,CAACK,KAAd;AAAqBoE,QAAAA,KAAK,EAALA,KAArB;AAA4BiE,QAAAA,eAAe,EAAfA;AAA5B,QAAX;;AACA,YAAKnE,eAAL,CAAqBlE,KAAK,CAACmE,MAA3B,EAAmCnE,KAAK,CAACuB,KAAzC,EAAgDvB,KAAK,CAACoE,KAAtD;;AACA,YAAKC,uBAAL,CAA6BrE,KAA7B;;AACAiE,MAAAA,QAAQ,CAAC;AAAEjE,QAAAA,KAAK,EAALA,KAAF;AAASG,QAAAA,eAAe,EAAfA;AAAT,OAAD,CAAR;AACD,KApQkB;AAAA,qGAsQJ,UAACmI,MAAD;AAAA,aAAY,MAAK/D,WAAL,CAAiB;AAAE+D,QAAAA,MAAM,EAANA;AAAF,OAAjB,CAAZ;AAAA,KAtQI;AAAA,oGAwQL,YAAM;AAClB,gCAEIC,eAFJ,CACEvI,KADF;AAAA,UACWuH,cADX,uBACWA,cADX;AAAA,UAC2BjG,iBAD3B,uBAC2BA,iBAD3B;;AAGA,UAAMgD,MAAM,GAAG,MAAK0D,iBAAL,CAAuBT,cAAvB,EAAuCjG,iBAAvC,CAAf;;AACA,UAAMtB,KAAK,mCAAQ,2BAAUuI,gBAAavI,KAAvB,CAAR;AAAuCsE,QAAAA,MAAM,EAANA;AAAvC,QAAX;;AAEA,YAAKP,KAAL,CAAWE,QAAX,CAAoB;AAAEjE,QAAAA,KAAK,EAALA;AAAF,OAApB;AACD,KAhRkB;AAAA,4GAkRG,UAACsG,KAAD,EAAQD,EAAR,EAAYmC,QAAZ,EAAyB;AAC7CnC,MAAAA,EAAE,CAACmC,QAAH,GAAcA,QAAd;AAEA,yBAA4B,MAAKzE,KAAjC;AAAA,UAAQE,QAAR,gBAAQA,QAAR;AAAA,UAAkBtE,KAAlB,gBAAkBA,KAAlB;AACA,UAAM8I,MAAM,GAAGtH,eAAe,CAACkF,EAAE,CAACzC,IAAH,KAAY,MAAZ,IAAsB7C,cAAc,CAACsF,EAAD,CAApC,GAA2CpF,eAAe,CAACoF,EAAD,CAA1D,GAAiEA,EAAlE,CAA9B;AACA,UAAMlG,eAAe,uCAAOR,KAAK,CAACQ,eAAb,CAArB;AACAA,MAAAA,eAAe,CAACmG,KAAD,CAAf,GAAyBmC,MAAzB;AAEAxE,MAAAA,QAAQ,CAAC;AAAE9D,QAAAA,eAAe,EAAfA;AAAF,OAAD,CAAR;AACD,KA3RkB;AAAA,6GA6RI,UAACoH,cAAD,EAAoB;AACzC,yBAA4B,MAAKxD,KAAjC;AAAA,UAAQpE,KAAR,gBAAQA,KAAR;AAAA,UAAesE,QAAf,gBAAeA,QAAf;AACA,UACE9D,eADF,GAGIR,KAHJ,CACEQ,eADF;AAAA,UAEWmB,iBAFX,GAGI3B,KAHJ,CAEEK,KAFF,CAEWsB,iBAFX;AAKA,UAAI4G,kBAAkB,GAAG,CAAzB;AACAT,MAAAA,MAAM,CAACC,OAAP,CAAeH,cAAc,IAAI,EAAjC,EAAqC9C,OAArC,CAA6C,iBAAmB;AAAA;AAAA,YAAjBb,IAAiB;AAAA,YAAX+D,KAAW;;AAC9D,YAAIA,KAAJ,EAAW;AACTO,UAAAA,kBAAkB,GAAGA,kBAAkB,GAAG,CAA1C;AACD;AACF,OAJD;;AAKA,UAAI5G,iBAAiB,GAAG4G,kBAAxB,EAA4C;AAC1C,cAAKnE,KAAL,CAAWpE,KAAX,CAAiBK,KAAjB,CAAuBsB,iBAAvB,GAA2C4G,kBAA3C;AACD;;AAED,UAAIQ,GAAJ,CAAQvI,eAAe,CAACwI,GAAhB,CAAoBtF,WAApB,CAAR,EAA0CoB,OAA1C,CAAkD,UAACjB,SAAD,EAAe;AAC/D+D,QAAAA,cAAc,CAAC/D,SAAD,CAAd,GAA4B,IAA5B;AACD,OAFD;;AAIA,UAAMc,MAAM,GAAG,MAAK0D,iBAAL,CAAuBT,cAAvB,EAAuC,MAAKxD,KAAL,CAAWpE,KAAX,CAAiBK,KAAjB,CAAuBsB,iBAA9D,CAAf;;AACA,UAAMtB,KAAK,mCAAQL,KAAK,CAACK,KAAd;AAAqBuH,QAAAA,cAAc,EAAdA,cAArB;AAAqCjD,QAAAA,MAAM,EAANA;AAArC,QAAX;;AAEAL,MAAAA,QAAQ,CAAC;AAAEjE,QAAAA,KAAK,EAALA;AAAF,OAAD,CAAR;AACD,KAtTkB;AAAA,8GAwTK,UAACsF,OAAD,EAAa;AACnC,yBAA4B,MAAKvB,KAAjC;AAAA,UAAQpE,KAAR,gBAAQA,KAAR;AAAA,UAAesE,QAAf,gBAAeA,QAAf;AACA,UAAM9D,eAAe,GAAGR,KAAK,CAACQ,eAAN,CAAsBgH,MAAtB,CAA6B,UAACyB,CAAD,EAAItC,KAAJ;AAAA,eAAc,CAAChB,OAAO,CAACuD,IAAR,CAAa,UAACC,CAAD;AAAA,iBAAOA,CAAC,KAAKxC,KAAb;AAAA,SAAb,CAAf;AAAA,OAA7B,CAAxB;AAEArC,MAAAA,QAAQ,CAAC;AAAE9D,QAAAA,eAAe,EAAfA;AAAF,OAAD,CAAR;AACD,KA7TkB;AAAA,2GA+TE,UAACQ,IAAD,EAAU;AAC7B,yBAA4B,MAAKoD,KAAjC;AAAA,UAAQpE,KAAR,gBAAQA,KAAR;AAAA,UAAesE,QAAf,gBAAeA,QAAf;AACA,UAAM9D,eAAe,uCAAOR,KAAK,CAACQ,eAAb,CAArB;AACAA,MAAAA,eAAe,CAAC6E,IAAhB,CAAqB7D,eAAe,CAACR,IAAD,CAApC;AAEAsD,MAAAA,QAAQ,CAAC;AAAE9D,QAAAA,eAAe,EAAfA;AAAF,OAAD,CAAR;AACD,KArUkB;AAAA,6GAuUI,YAAM;AAC3B,UAAQ8D,QAAR,GAAqB,MAAKF,KAA1B,CAAQE,QAAR;AAEAA,MAAAA,QAAQ,CAAC;AAAE9D,QAAAA,eAAe,EAAE;AAAnB,OAAD,CAAR;AACD,KA3UkB;AAAA,4GA6UG,YAAM;AAC1B,yBAA4B,MAAK4D,KAAjC;AAAA,UAAQpE,KAAR,gBAAQA,KAAR;AAAA,UAAesE,QAAf,gBAAeA,QAAf;AACA,UAAM9D,eAAe,uCAAOR,KAAK,CAACQ,eAAb,CAArB;AACAA,MAAAA,eAAe,CAAC4I,GAAhB;AACA9E,MAAAA,QAAQ,CAAC;AAAE9D,QAAAA,eAAe,EAAfA;AAAF,OAAD,CAAR;AACD,KAlVkB;AAEjB,6BAII4D,KAJJ,CACEpE,KADF,CAEIK,KAFJ;AAAA,QAEauH,eAFb,sBAEaA,cAFb;AAAA,QAE6BjG,kBAF7B,sBAE6BA,iBAF7B;;AAKA,QAAMgD,OAAM,GAAG,MAAK0D,iBAAL,CAAuBT,eAAvB,EAAuCjG,kBAAvC,CAAf;;AACA,UAAK0H,KAAL,GAAa;AACXjB,MAAAA,MAAM,EAAE;AACN3C,QAAAA,IAAI,EAAE,KADA;AAENC,QAAAA,IAAI,EAAE;AAFA,OADG;AAKXF,MAAAA,mBAAmB,EAAE;AACnBC,QAAAA,IAAI,EAAE,KADa;AAEnBC,QAAAA,IAAI,EAAE;AAFa;AALV,KAAb;;AAUA,UAAKd,WAAL,CAAiB;AAAED,MAAAA,MAAM,EAANA;AAAF,KAAjB;;AAlBiB;AAmBlB;;;;WAiUD,kBAAS;AAAA;;AACP,yBAAwE,KAAKP,KAA7E;AAAA,UAAQkF,OAAR,gBAAQA,OAAR;AAAA,UAAiBtJ,KAAjB,gBAAiBA,KAAjB;AAAA,UAAwBsE,SAAxB,gBAAwBA,QAAxB;AAAA,UAAkCiF,aAAlC,gBAAkCA,aAAlC;AAAA,UAAiDC,kBAAjD,gBAAiDA,kBAAjD;;AACA,kBAUID,aAAa,IAAI,EAVrB;AAAA,wCACEE,iBADF;AAAA,UACEA,iBADF,sCACsB,EADtB;AAAA,oCAEEC,WAFF;AAAA,UAEEA,WAFF,kCAEgB,EAFhB;AAAA,wCAGEtJ,mBAHF;AAAA,UAGEA,mBAHF,sCAGwB,EAHxB;AAAA,+BAIED,MAJF;AAAA,UAIEA,MAJF,6BAIW,EAJX;AAAA,sCAKEwJ,aALF;AAAA,UAKEA,aALF,oCAKkB,EALlB;AAAA,wCAMEC,oBANF;AAAA,UAMEA,oBANF,sCAMyB,EANzB;AAAA,uCAOEC,cAPF;AAAA,UAOEA,cAPF,qCAOmB,EAPnB;AAAA,wCAQEC,sBARF;AAAA,UAQEA,sBARF,sCAQ2B,KAR3B;AAAA,uCASEC,cATF;AAAA,UASEA,cATF,qCASmB,CAAC,IAAD,CATnB;;AAWA,kBAAyE/J,KAAK,IAAI,EAAlF;AAAA,+BAAQgK,MAAR;AAAA,UAAQA,MAAR,6BAAiB,EAAjB;AAAA,UAAqB3J,KAArB,SAAqBA,KAArB;AAAA,UAA4B4J,iBAA5B,SAA4BA,iBAA5B;AAAA,UAA+CC,qBAA/C,SAA+CA,qBAA/C;;AACA,WAAKC,uBAAL,CAA6B9J,KAAK,CAACoE,KAAnC;AACA,wBAAwC,KAAK4E,KAA7C;AAAA,UAAQjB,MAAR,eAAQA,MAAR;AAAA,UAAgB5C,mBAAhB,eAAgBA,mBAAhB;;AAEA,mBAAiFwE,MAAM,IAAI,EAA3F;AAAA,UAAQI,UAAR,UAAQA,UAAR;AAAA,UAAoBC,WAApB,UAAoBA,WAApB;AAAA,UAAiCC,QAAjC,UAAiCA,QAAjC;AAAA,UAA2CC,WAA3C,UAA2CA,WAA3C;AAAA,UAAwDC,oBAAxD,UAAwDA,oBAAxD;;AACA,UAAMC,iBAAiB,GAAG,uCAA1B;AAEA,UAAMjK,eAAe,GAAG,2BAAUR,KAAK,CAACQ,eAAN,IAAyB,EAAnC,EAAuCwI,GAAvC,CAA2CzH,aAA3C,CAAxB;AAEA,UAAMmJ,YAAY,GAAG,2BAAU1K,KAAV,CAArB;AACA0K,MAAAA,YAAY,CAAC,UAAD,CAAZ,GAA2B,IAA3B;AAEA,UAAMC,WAAW,GAAG;AAClB9B,QAAAA,QAAQ,EAAEqB,qBAAqB,KAAK,KAA1B,GAAkC,KAAlC,GAA0C;AADlC,OAApB;AAIA,0BACE,gCAAC,gBAAD,CAAQ,YAAR;AAAqB,QAAA,UAAU,EAAET,iBAAjC;AAAoD,QAAA,YAAY,EAAE,IAAlE;AAAwE,QAAA,QAAQ,EAAE;AAAlF,sBACE,gCAAC,sBAAD;AAAY,QAAA,SAAS,EAAC,KAAtB;AAA4B,QAAA,IAAI,EAAC,OAAjC;AAAyC,QAAA,SAAS,EAAEH,OAAO,CAAC7F;AAA5D,SACGiG,WAAW,CAACkB,KADf,CADF,EAKGxK,mBAAmB,CAACyK,QAApB,iBACC,gCAAC,wBAAD;AAAgB,QAAA,KAAK,EAAEzK,mBAAmB,CAACwK,KAA3C;AAAkD,QAAA,SAAS,EAAEtB,OAAO,CAAC9G;AAArE,sBACE,gCAAC,0BAAD;AACE,QAAA,SAAS,EAAE8G,OAAO,CAAClJ,mBADrB;AAEE,QAAA,MAAM,EAAEJ,KAAK,CAACI,mBAFhB;AAGE,QAAA,QAAQ,EAAE,kBAACA,mBAAD;AAAA,iBAAyBkE,SAAQ,CAAC;AAAElE,YAAAA,mBAAmB,EAAnBA;AAAF,WAAD,CAAjC;AAAA,SAHZ;AAIE,QAAA,QAAQ,EAAE,KAJZ;AAKE,QAAA,gBAAgB,MALlB;AAME,QAAA,WAAW,EAAEuK,WANf;AAOE,QAAA,UAAU,EAAEV,iBAPd;AAQE,QAAA,kBAAkB,EAAET,kBARtB;AASE,QAAA,uBAAuB,EAAE,CAAC;AAAEsB,UAAAA,QAAQ,EAAE;AAAZ,SAAD,EAA0B;AAAEA,UAAAA,QAAQ,EAAE;AAAZ,SAA1B,CAT3B;AAUE,QAAA,aAAa,EAAEnB;AAVjB,QADF,CANJ,EAsBGxJ,MAAM,CAAC0K,QAAP,iBACC,gCAAC,wBAAD;AAAgB,QAAA,KAAK,EAAE1K,MAAM,CAACyK,KAA9B;AAAqC,QAAA,SAAS,EAAEtB,OAAO,CAAC9G;AAAxD,sBACE,gCAAC,0BAAD;AACE,QAAA,SAAS,EAAE8G,OAAO,CAACnJ,MADrB;AAEE,QAAA,MAAM,EAAEH,KAAK,CAACG,MAFhB;AAGE,QAAA,QAAQ,EAAE,kBAACA,MAAD;AAAA,iBAAYmE,SAAQ,CAAC;AAAEnE,YAAAA,MAAM,EAANA;AAAF,WAAD,CAApB;AAAA,SAHZ;AAIE,QAAA,QAAQ,EAAE,KAJZ;AAKE,QAAA,gBAAgB,MALlB;AAME,QAAA,WAAW,EAAEwK,WANf;AAOE,QAAA,UAAU,EAAEV,iBAPd;AAQE,QAAA,kBAAkB,EAAET,kBARtB;AASE,QAAA,uBAAuB,EAAE,CAAC;AAAEsB,UAAAA,QAAQ,EAAE;AAAZ,SAAD,EAA0B;AAAEA,UAAAA,QAAQ,EAAE;AAAZ,SAA1B,CAT3B;AAUE,QAAA,aAAa,EAAEnB;AAVjB,QADF,CAvBJ,eAuCE,gCAAC,mBAAD;AACE,QAAA,MAAM,EAAC,oBADT;AAEE,QAAA,IAAI,eACF,gCAAC,mBAAD;AACE,UAAA,OAAO,EAAE;AAAEjH,YAAAA,OAAO,EAAE4G,OAAO,CAAC5G;AAAnB,WADX;AAEE,UAAA,oBAAoB,MAFtB;AAGE,UAAA,oBAAoB,MAHtB;AAIE,UAAA,SAAS,EAAE,OAJb;AAKE,UAAA,KAAK,EAAE+H;AALT,wBAOE,gCAAC,gBAAD;AAAM,UAAA,QAAQ,EAAE,OAAhB;AAAyB,UAAA,KAAK,EAAE,SAAhC;AAA2C,UAAA,KAAK,EAAE;AAAEM,YAAAA,UAAU,EAAE;AAAd;AAAlD,UAPF;AAHJ,2KAvCF,eAyDE;AAAK,QAAA,SAAS,EAAEzB,OAAO,CAACpH;AAAxB,sBACE,gCAAC,kBAAD;AAAQ,QAAA,MAAM,EAAE7B,KAAK,CAACmE,MAAtB;AAA8B,QAAA,MAAM,EAAEwF,MAAtC;AAA8C,QAAA,QAAQ,EAAE,kBAACxF,MAAD;AAAA,iBAAY,MAAI,CAACI,WAAL,CAAiB;AAAEJ,YAAAA,MAAM,EAANA;AAAF,WAAjB,CAAZ;AAAA;AAAxD,QADF,CAzDF,EA6DG8F,QAAQ,iBAAI;AAAK,QAAA,SAAS,EAAEhB,OAAO,CAACrG;AAAxB,SAAoCqH,QAApC,CA7Df,EA8DGD,WAAW,iBAAI;AAAK,QAAA,SAAS,EAAEf,OAAO,CAACrG;AAAxB,SAAoCoH,WAApC,CA9DlB,eAgEE,0DACE,gCAAC,qBAAD,qBACE,gCAAC,iBAAD;AAAO,QAAA,UAAU,EAAE5J,UAAnB;AAA+B,QAAA,IAAI,EAAEO,IAArC;AAA2C,QAAA,QAAQ,EAAE,KAAKgK;AAA1D,QADF,CADF,CAhEF,eAsEE;AAAK,QAAA,SAAS,EAAE1B,OAAO,CAAChG;AAAxB,SACGtD,KAAK,CAACiL,YAAN,iBACC,gCAAC,gBAAD;AACE,QAAA,IAAI,EAAE5K,KADR;AAEE,QAAA,GAAG,EAAEuJ,oBAAoB,CAAC1E,GAF5B;AAGE,QAAA,GAAG,EAAE0E,oBAAoB,CAACzE,GAH5B;AAIE,QAAA,IAAI,EAAEyE,oBAAoB,CAACsB,IAJ7B;AAKE,QAAA,QAAQ,EAAE,KAAKC;AALjB,QAFJ,eAUE,4CAVF,eAWE,gCAAC,kBAAD;AAAQ,QAAA,MAAM,EAAE9K,KAAK,CAACsI,MAAtB;AAA8B,QAAA,QAAQ,EAAE,KAAKyC;AAA7C,QAXF,CAtEF,EAoFGhB,UAAU,iBAAI;AAAK,QAAA,SAAS,EAAEd,OAAO,CAACrG;AAAxB,SAAoCmH,UAApC,CApFjB,eAsFE,gCAAC,+BAAD;AACE,QAAA,aAAa,EAAE,yBAAM,CAAE,CADzB;AAEE,QAAA,gBAAgB,EAAE,4BAAM,CAAE,CAF5B;AAGE,QAAA,YAAY,EAAE,wBAAM,CAAE,CAHxB;AAIE,QAAA,eAAe,EAAE,2BAAM,CAAE,CAJ3B;AAKE,QAAA,aAAa,EAAE,yBAAM,CAAE,CALzB;AAME,QAAA,QAAQ,EAAER,oBAAoB,CAAC1E,GANjC;AAOE,QAAA,QAAQ,EAAE0E,oBAAoB,CAACzE,GAPjC;AAQE,QAAA,KAAK,EAAEpF,SAAS,CAAC2K,YAAD;AARlB,QAtFF,eAiGE,gCAAC,qBAAD;AAAa,QAAA,KAAK,EAAE,OAApB;AAA6B,QAAA,SAAS,EAAEpB,OAAO,CAAChJ;AAAhD,sBACE,gCAAC,0BAAD;AACE,QAAA,MAAM,EAAED,KAAK,CAACC,KAAN,IAAe,EADzB;AAEE,QAAA,QAAQ,EAAE,KAAK+K,gBAFjB;AAGE,QAAA,WAAW,EAAEV,WAHf;AAIE,QAAA,aAAa,EAAE,CACb,MADa,EAEb,MAFa,EAGb,QAHa,EAIb,WAJa,EAKb,eALa,EAMb,OANa,EAOb,MAPa,EAQb,oBARa,EASb,cATa,CAJjB;AAeE,QAAA,UAAU,EAAEV,iBAfd;AAgBE,QAAA,kBAAkB,EAAET,kBAhBtB;AAiBE,QAAA,uBAAuB,EAAE,CAAC;AAAEsB,UAAAA,QAAQ,EAAE;AAAZ,SAAD,EAA0B;AAAEA,UAAAA,QAAQ,EAAE;AAAZ,SAA1B,CAjB3B;AAkBE,QAAA,aAAa,EAAEnB;AAlBjB,QADF,CAjGF,EAwHG,CAACtJ,KAAK,CAACiL,WAAP,iBACC,gCAAC,iBAAD,CAAO,QAAP,qBACE,gCAAC,mBAAD;AAAS,QAAA,MAAM,EAAC;AAAhB,gKAEgC,iHAFhC,CADF,eAME,gCAAC,mBAAD;AAAS,QAAA,MAAM,EAAC,iBAAhB;AAAkC,QAAA,IAAI;AAAtC,2GANF,eAUE;AAAK,QAAA,SAAS,EAAEhC,OAAO,CAAChH;AAAxB,sBACE,gCAAC,uBAAD;AACE,QAAA,iBAAiB,EAAE,KAAKiJ,oBAD1B;AAEE,QAAA,SAAS,EAAElL,KAAK,CAACuH,cAFnB;AAGE,QAAA,cAAc,EAAEmC,cAHlB;AAIE,QAAA,WAAW,EAAED;AAJf,QADF,CAVF,eAmBE,gCAAC,qBAAD;AAAa,QAAA,SAAS,EAAER,OAAO,CAAChG;AAAhC,sBACE,oEADF,eAEE,gCAAC,2BAAD;AACE,QAAA,SAAS,EAAEgG,OAAO,CAAC3H,iBADrB;AAEE,QAAA,GAAG,EAAE,CAFP;AAGE,QAAA,GAAG,EAAEkI,cAHP;AAIE,QAAA,mBAAmB,EAAE,IAJvB;AAKE,QAAA,KAAK,EAAExJ,KAAK,CAACsB,iBALf;AAME,QAAA,QAAQ,EAAE,KAAK6J;AANjB,QAFF,EAUGjB,WAAW,iBAAI;AAAK,QAAA,SAAS,EAAEjB,OAAO,CAACrG;AAAxB,SAAoCsH,WAApC,CAVlB,CAnBF,eAgCE,gEAhCF,eAkCE,gCAAC,+BAAD;AACE,QAAA,aAAa,EAAE,KAAKkB,mBADtB;AAEE,QAAA,gBAAgB,EAAE,KAAKC,qBAFzB;AAGE,QAAA,YAAY,EAAE,KAAKC,kBAHrB;AAIE,QAAA,eAAe,EAAE,KAAKC,oBAJxB;AAKE,QAAA,aAAa,EAAE,KAAKC,mBALtB;AAME,QAAA,QAAQ,EAAEjC,oBAAoB,CAAC1E,GANjC;AAOE,QAAA,QAAQ,EAAE0E,oBAAoB,CAACzE,GAPjC;AAQE,QAAA,MAAM,EAAE3E,eARV,CASE;AATF;AAUE,QAAA,KAAK,EAAET,SAAS,CAACC,KAAD;AAVlB,QAlCF,EA8CGwK,oBAAoB,iBAAI;AAAK,QAAA,SAAS,EAAElB,OAAO,CAACrG;AAAxB,SAAoCuH,oBAApC,CA9C3B,CAzHJ,eA0KE,gCAAC,qBAAD;AACE,QAAA,IAAI,EAAEpC,MAAM,CAAC3C,IADf;AAEE,QAAA,KAAK,EAAC,SAFR;AAGE,QAAA,IAAI,EAAE2C,MAAM,CAAC1C,IAHf;AAIE,QAAA,SAAS,EAAE;AAAA,iBAAM,MAAI,CAACH,QAAL,CAAc;AAAE6C,YAAAA,MAAM,EAAE;AAAE3C,cAAAA,IAAI,EAAE;AAAR;AAAV,WAAd,CAAN;AAAA;AAJb,QA1KF,eAgLE,gCAAC,qBAAD;AACE,QAAA,IAAI,EAAED,mBAAmB,CAACC,IAD5B;AAEE,QAAA,KAAK,EAAC,SAFR;AAGE,QAAA,IAAI,EAAED,mBAAmB,CAACE,IAH5B;AAIE,QAAA,SAAS,EAAE,qBAAM;AACf,cAAIC,OAAO,GAAG,MAAI,CAAC0D,KAAL,CAAW7D,mBAAX,CAA+BG,OAA7C;;AACA,cAAIA,OAAO,IAAIA,OAAO,CAACL,MAAR,GAAiB,CAAhC,EAAmC;AACjC,YAAA,MAAI,CAACoG,qBAAL,CAA2B/F,OAA3B;AACD;;AACD,UAAA,MAAI,CAACJ,QAAL,CAAc;AAAEC,YAAAA,mBAAmB,EAAE;AAAEC,cAAAA,IAAI,EAAE;AAAR;AAAvB,WAAd;AACD,SAVH;AAWE,QAAA,OAAO,EAAE,mBAAM;AACb,cAAMpF,KAAK,GAAG,MAAI,CAACgJ,KAAL,CAAW7D,mBAAX,CAA+BnF,KAA7C;;AACA,UAAA,MAAI,CAACkE,eAAL,CAAqBlE,KAAK,CAACmE,MAA3B,EAAmCnE,KAAK,CAACuB,KAAzC,EAAgDvB,KAAK,CAACoE,KAAtD;;AACA,UAAA,MAAI,CAACC,uBAAL,CAA6BrE,KAA7B;;AACAiE,UAAAA,SAAQ,CAAC;AAAEjE,YAAAA,KAAK,EAALA;AAAF,WAAD,CAAR;;AACA,UAAA,MAAI,CAACkF,QAAL,CAAc;AAAEC,YAAAA,mBAAmB,EAAE;AAAEC,cAAAA,IAAI,EAAE;AAAR;AAAvB,WAAd;AACD,SAjBH;AAkBE,QAAA,aAAa,EAAE,IAlBjB;AAmBE,QAAA,WAAW,EAAE;AAnBf,QAhLF,CADF;AAwMD;;;EAlkBuBqG,kBAAMC,S;;;iCAAnB5H,I,eACQ;AACjBmF,EAAAA,OAAO,EAAE0C,sBAAUxD,MAAV,CAAiByD,UADT;AAEjBjM,EAAAA,KAAK,EAAEgM,sBAAUxD,MAAV,CAAiByD,UAFP;AAGjB1C,EAAAA,aAAa,EAAEyC,sBAAUxD,MAAV,CAAiByD,UAHf;AAIjB3H,EAAAA,QAAQ,EAAE0H,sBAAUE,IAAV,CAAeD,UAJR;AAKjBzC,EAAAA,kBAAkB,EAAEwC,sBAAUxD,MAAV,CAAiByD;AALpB,C;;eAokBN,wBAAWxK,MAAX,EAAmB;AAAE0K,EAAAA,IAAI,EAAE;AAAR,CAAnB,EAAqChI,IAArC,C","sourcesContent":["import React from 'react';\nimport { FormSection, InputContainer, AlertDialog, layout } from '@pie-lib/pie-toolbox/config-ui';\nimport { EditableHtml } from '@pie-lib/pie-toolbox/editable-html';\nimport { NumberLineComponent, dataConverter, tickUtils } from '@pie-element/number-line';\nimport NumberTextField from './number-text-field';\nimport CardBar from './card-bar';\nimport Size from './size';\nimport PropTypes from 'prop-types';\nimport Domain from './domain';\nimport Arrows from './arrows';\nimport PointConfig from './point-config';\nimport cloneDeep from 'lodash/cloneDeep';\nimport { withStyles } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\nimport Info from '@material-ui/icons/Info';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport * as math from 'mathjs';\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 teacherInstructions: undefined,\n graph: { ...model.graph, title: undefined, disabled: true },\n correctResponse: undefined,\n});\n\n// Object holding information related to tick and label interval values.\nlet ticksModel = {\n tickIntervalType: 'Decimal',\n integerTick: 0,\n fractionTick: '0/1',\n decimalTick: 0,\n fractionLabel: '0/1',\n decimalLabel: 0,\n};\n// Object holding data related to possible values for ticks and label interval in array.\nlet data = {\n minorLimits: {},\n minorValues: {},\n majorValues: {},\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 marginBottom: theme.spacing.unit * 2,\n },\n row: {\n display: 'flex',\n flexWrap: 'wrap',\n '& > *': {\n paddingRight: theme.spacing.unit * 2,\n },\n },\n pointTypeChooser: {\n margin: `${theme.spacing.unit * 2.5}px 0`,\n },\n promptContainer: {\n paddingTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\n width: '100%',\n },\n title: {\n marginBottom: theme.spacing.unit * 4,\n },\n tooltip: {\n fontSize: theme.typography.fontSize - 2,\n whiteSpace: 'pre',\n maxWidth: '500px',\n },\n inlineFlexContainer: {\n display: 'inline-flex',\n },\n resetButton: {\n marginBottom: theme.spacing.unit * 2.5,\n },\n errorText: {\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingTop: theme.spacing.unit,\n },\n flexRow: {\n display: 'flex',\n alignItems: 'center',\n gap: '10px',\n },\n description: {\n marginBottom: theme.spacing.unit * 2.5,\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\n return response.pointType[0];\n }\n\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 this.state = {\n dialog: {\n open: false,\n text: '',\n },\n correctAnswerDialog: {\n open: false,\n text: '',\n },\n };\n this.graphChange({ height });\n }\n\n graphChange = (obj) => {\n const { model, onChange } = this.props;\n const graph = { ...model.graph, ...obj };\n this.reloadTicksData(graph.domain, graph.width, graph.ticks);\n this.assignTicksModelToGraph(graph);\n onChange({ graph });\n };\n\n changeSize = ({ width, height }) => this.graphChange({ width, height });\n\n /*\n * This function gets called whenever the min, max or width for number line is changed\n * and it calculates ticks and label values and stores in ticks model.\n * @param domain containing min and max values.\n * @param width represents number line width\n * @param ticks represnt current values for minor and major.\n * */\n reloadTicksData = (domain, width, ticks) => {\n //check correct response\n const { model } = this.props;\n const graph = { ...model.graph };\n let respIndex = [];\n model.correctResponse.forEach((correctResp, key) => {\n if (\n correctResp.domainPosition < domain.min ||\n correctResp.domainPosition > domain.max ||\n (correctResp.size &&\n (correctResp.domainPosition + correctResp.size < domain.min ||\n correctResp.domainPosition + correctResp.size > domain.max))\n ) {\n respIndex.push(key);\n }\n });\n if (respIndex.length > 0) {\n this.setState({\n correctAnswerDialog: {\n open: true,\n text:\n 'This\\n' +\n 'change would make it impossible for students to plot one or more elements in the current\\n' +\n 'correct answer. If you proceed, all such elements will be removed from the correct\\n' +\n 'answer.',\n indices: respIndex,\n graph: graph,\n },\n });\n }\n\n data.minorLimits = tickUtils.getMinorLimits(domain, width);\n data.minorValues = tickUtils.generateMinorValues(data.minorLimits);\n data.majorValues = {};\n const initTickModel = () => {\n if (ticks.tickIntervalType) ticksModel.tickIntervalType = ticks.tickIntervalType;\n //setting minor values\n if (ticks.minor < data.minorLimits.min || ticks.minor > data.minorLimits.max) {\n ticksModel.decimalTick = data.minorValues.decimal[0];\n ticksModel.fractionTick = data.minorValues.fraction[0];\n } else {\n ticksModel.decimalTick = math.number(ticks.minor);\n ticksModel.fractionTick = data.minorValues.fraction[data.minorValues.decimal.indexOf(ticksModel.decimalTick)];\n }\n if (Number.isInteger(ticksModel.decimalTick)) {\n ticksModel.integerTick = math.number(ticksModel.decimalTick);\n } else {\n const firstInteger = data.minorValues.decimal.find(function (el) {\n return Number.isInteger(el);\n });\n if (firstInteger) {\n const index = data.minorValues.decimal.indexOf(firstInteger);\n ticksModel.integerTick = math.number(firstInteger);\n if (ticksModel.tickIntervalType === 'Integer') {\n ticksModel.fractionTick = data.minorValues.fraction[index];\n ticksModel.decimalTick = data.minorValues.decimal[index];\n }\n } else {\n if (ticksModel.tickIntervalType === 'Integer') {\n ticksModel.tickIntervalType = 'Fraction';\n ticksModel.decimalTick = data.minorValues.decimal[data.minorValues.decimal.length - 1];\n ticksModel.fractionTick = data.minorValues.fraction[data.minorValues.fraction.length - 1];\n }\n ticksModel.integerTick = data.minorValues.decimal.reduce((a, b) => {\n return Math.abs(b - ticksModel.decimalTick) < Math.abs(a - ticksModel.decimalTick) ? b : a;\n });\n if (!Number.isInteger(ticksModel.integerTick)) {\n ticksModel.integerTick = math.ceil(ticksModel.integerTick);\n }\n }\n }\n //setting major values\n data.majorValues = tickUtils.generateMajorValuesForMinor(ticksModel.decimalTick, data.minorValues);\n if (!ticks.major) {\n ticksModel.decimalLabel = data.majorValues.decimal[0];\n ticksModel.fractionLabel = data.majorValues.fraction[0];\n } else {\n ticksModel.decimalLabel = math.number(ticks.major);\n if (data.majorValues.decimal.indexOf(ticksModel.decimalLabel) === -1) {\n let currIndex = 0;\n if (ticksModel.tickIntervalType === 'Integer') {\n currIndex = 4;\n } else {\n currIndex = data.majorValues.decimal.length - 1;\n }\n while (currIndex !== 0) {\n let ticksData = { minor: ticksModel.decimalTick, major: data.majorValues.decimal[currIndex] };\n let out = tickUtils.buildTickData(domain, width, ticksData, { fraction: undefined });\n if (out.filter((x) => x.type === 'major').length > 1) {\n break;\n } else {\n currIndex = currIndex - 1;\n }\n }\n ticksModel.decimalLabel = data.majorValues.decimal[currIndex];\n ticksModel.fractionLabel = data.majorValues.fraction[currIndex];\n } else {\n ticksModel.fractionLabel =\n data.majorValues.fraction[data.majorValues.decimal.indexOf(ticksModel.decimalLabel)];\n }\n }\n };\n initTickModel();\n };\n\n /*\n * This function updates calculated ticks values to graph model.\n * @param graph object\n * */\n assignTicksModelToGraph = (graph) => {\n graph.ticks.minor = ticksModel.decimalTick;\n graph.ticks.major = ticksModel.decimalLabel;\n graph.ticks.tickIntervalType = ticksModel.tickIntervalType;\n graph.ticks.tickStep = ticksModel.fractionTick;\n graph.ticks.labelStep = ticksModel.fractionLabel;\n };\n\n /*\n * This function updates ticks model from ticks values in graph model.\n * @param ticks object\n * */\n assignGraphToTicksModel = (ticks) => {\n if (ticks.tickIntervalType) {\n ticksModel.tickIntervalType = ticks.tickIntervalType;\n }\n if (ticks.minor) {\n ticksModel.decimalTick = ticks.minor;\n if (ticksModel.tickIntervalType === 'Integer') {\n ticksModel.integerTick = ticks.minor;\n } else {\n ticksModel.integerTick = math.ceil(ticks.minor);\n }\n if (ticks.tickStep) {\n ticksModel.fractionTick = ticks.tickStep;\n }\n }\n if (ticks.major) {\n ticksModel.decimalLabel = ticks.major;\n if (ticks.labelStep) {\n ticksModel.fractionLabel = ticks.labelStep;\n }\n }\n };\n\n getAdjustedHeight = (availableTypes, maxNumberOfPoints) => {\n let onlyPFAvailable = true;\n Object.entries(availableTypes || {}).forEach(([type, value]) => {\n if (type !== 'PF' && value) {\n onlyPFAvailable = false;\n return;\n }\n });\n return maxNumberOfPoints && (maxNumberOfPoints === 1 || onlyPFAvailable)\n ? 100\n : 50 + (maxNumberOfPoints || 20) * 25;\n };\n\n changeMaxNoOfPoints = (e, maxNumberOfPoints) => {\n maxNumberOfPoints = Math.floor(maxNumberOfPoints);\n if (this.isAvailableTypesGreaterThanMaxElements(this.props.model.graph.availableTypes, maxNumberOfPoints)) {\n this.setState({\n dialog: {\n open: true,\n text: 'To use this value, you must first remove one or more elements from the available types.',\n },\n });\n return;\n }\n if (this.props.model.correctResponse.length > maxNumberOfPoints) {\n this.setState({\n dialog: {\n open: true,\n text: 'To use this value, you must first remove one or more elements from the correct answers.',\n },\n });\n return;\n }\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 /*\n * Validation check on wether available type of dot plot is greater than max elements allowed to plot.\n * @param availableTypes array of string.\n * @param maxElements number of max elements to use set by user.\n * @return boolean.\n * */\n isAvailableTypesGreaterThanMaxElements = (availableTypes, maxElements) => {\n let availableTypeCount = 0;\n Object.entries(availableTypes || {}).forEach(([type, value]) => {\n if (value) {\n availableTypeCount = availableTypeCount + 1;\n }\n });\n return availableTypeCount > maxElements;\n };\n\n changeGraphTitle = (title) => this.graphChange({ title });\n\n /*\n * Gets triggered whenever ticks related data is changed by user.\n * */\n changeTicks = (object) => {\n const { model, onChange } = this.props;\n const { ticks } = model.graph;\n ticks.minor = object.ticksModel.decimalTick;\n ticks.major = object.ticksModel.decimalLabel;\n ticks.tickIntervalType = object.ticksModel.tickIntervalType;\n ticks.tickStep = object.ticksModel.fractionTick;\n ticks.labelStep = object.ticksModel.fractionLabel;\n const correctResponse = tickUtils.snapElements(model.graph.domain, ticks, model.correctResponse);\n const initialElements = tickUtils.snapElements(model.graph.domain, ticks, model.graph.initialElements);\n const graph = { ...model.graph, ticks, initialElements };\n this.reloadTicksData(graph.domain, graph.width, graph.ticks);\n this.assignTicksModelToGraph(graph);\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 moveCorrectResponse = (index, el, position) => {\n el.position = position;\n\n const { onChange, model } = this.props;\n const update = toSessionFormat(el.type === 'line' && lineIsSwitched(el) ? switchGraphLine(el) : el);\n const correctResponse = [...model.correctResponse];\n correctResponse[index] = update;\n\n onChange({ correctResponse });\n };\n\n availableTypesChange = (availableTypes) => {\n const { model, onChange } = this.props;\n const {\n correctResponse,\n graph: { maxNumberOfPoints },\n } = model;\n\n let availableTypeCount = 0;\n Object.entries(availableTypes || {}).forEach(([type, value]) => {\n if (value) {\n availableTypeCount = availableTypeCount + 1;\n }\n });\n if (maxNumberOfPoints < availableTypeCount) {\n this.props.model.graph.maxNumberOfPoints = availableTypeCount;\n }\n\n new Set(correctResponse.map(toPointType)).forEach((pointType) => {\n availableTypes[pointType] = true;\n });\n\n const height = this.getAdjustedHeight(availableTypes, this.props.model.graph.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) => !indices.some((d) => d === index));\n\n onChange({ correctResponse });\n };\n\n addCorrectResponse = (data) => {\n const { model, onChange } = this.props;\n const correctResponse = [...model.correctResponse];\n correctResponse.push(toSessionFormat(data));\n\n onChange({ correctResponse });\n };\n\n clearCorrectResponse = () => {\n const { onChange } = this.props;\n\n onChange({ correctResponse: [] });\n };\n\n undoCorrectResponse = () => {\n const { model, onChange } = this.props;\n const correctResponse = [...model.correctResponse];\n correctResponse.pop();\n onChange({ correctResponse });\n };\n\n render() {\n const { classes, model, onChange, configuration, uploadSoundSupport } = this.props;\n const {\n contentDimensions = {},\n instruction = {},\n teacherInstructions = {},\n prompt = {},\n mathMlOptions = {},\n numberLineDimensions = {},\n maxMaxElements = 20,\n hidePointConfigButtons = false,\n availableTools = ['PF'],\n } = configuration || {};\n const { errors = {}, graph, spellCheckEnabled, toolbarEditorPosition } = model || {};\n this.assignGraphToTicksModel(graph.ticks);\n const { dialog, correctAnswerDialog } = this.state;\n\n const { widthError, domainError, maxError, pointsError, correctResponseError } = errors || {};\n const validationMessage = generateValidationMessage();\n\n const correctResponse = cloneDeep(model.correctResponse || []).map(toGraphFormat);\n\n const initialModel = cloneDeep(model);\n initialModel['disabled'] = true;\n\n const toolbarOpts = {\n position: toolbarEditorPosition === 'top' ? 'top' : 'bottom',\n };\n\n return (\n <layout.ConfigLayout dimensions={contentDimensions} hideSettings={true} settings={null}>\n <Typography component=\"div\" type=\"body1\" className={classes.description}>\n {instruction.label}\n </Typography>\n\n {teacherInstructions.settings && (\n <InputContainer label={teacherInstructions.label} className={classes.promptContainer}>\n <EditableHtml\n className={classes.teacherInstructions}\n markup={model.teacherInstructions}\n onChange={(teacherInstructions) => onChange({ teacherInstructions })}\n nonEmpty={false}\n disableUnderline\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n </InputContainer>\n )}\n\n {prompt.settings && (\n <InputContainer label={prompt.label} className={classes.promptContainer}>\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 mathMlOptions={mathMlOptions}\n />\n </InputContainer>\n )}\n\n <CardBar\n header=\"Set Up Number Line\"\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: '8px' }} />\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 <div className={classes.row}>\n <Domain domain={graph.domain} errors={errors} onChange={(domain) => this.graphChange({ domain })} />\n </div>\n\n {maxError && <div className={classes.errorText}>{maxError}</div>}\n {domainError && <div className={classes.errorText}>{domainError}</div>}\n\n <div>\n <FormSection>\n <Ticks ticksModel={ticksModel} data={data} onChange={this.changeTicks} />\n </FormSection>\n </div>\n\n <div className={classes.flexRow}>\n {model.widthEnabled && (\n <Size\n size={graph}\n min={numberLineDimensions.min}\n max={numberLineDimensions.max}\n step={numberLineDimensions.step}\n onChange={this.changeSize}\n />\n )}\n <div></div>\n <Arrows arrows={graph.arrows} onChange={this.changeArrows} />\n </div>\n\n {widthError && <div className={classes.errorText}>{widthError}</div>}\n\n <NumberLineComponent\n onMoveElement={() => {}}\n onDeleteElements={() => {}}\n onAddElement={() => {}}\n onClearElements={() => {}}\n onUndoElement={() => {}}\n minWidth={numberLineDimensions.min}\n maxWidth={numberLineDimensions.max}\n model={trimModel(initialModel)}\n />\n\n <FormSection label={'Title'} className={classes.title}>\n <EditableHtml\n markup={graph.title || ''}\n onChange={this.changeGraphTitle}\n toolbarOpts={toolbarOpts}\n activePlugins={[\n 'bold',\n 'html',\n 'italic',\n 'underline',\n 'strikethrough',\n 'image',\n 'math',\n 'languageCharacters',\n 'responseArea',\n ]}\n spellCheck={spellCheckEnabled}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n </FormSection>\n\n {!graph.exhibitOnly && (\n <React.Fragment>\n <CardBar header=\"Define Tool Set and 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 <CardBar header=\"Available Tools\" mini>\n Click on the input options to be displayed to the students. All inputs will display by default.\n </CardBar>\n\n <div className={classes.pointTypeChooser}>\n <PointConfig\n onSelectionChange={this.availableTypesChange}\n selection={graph.availableTypes}\n availableTools={availableTools}\n hideButtons={hidePointConfigButtons}\n />\n </div>\n\n <FormSection className={classes.flexRow}>\n <label>Max No of Elements</label>\n <NumberTextField\n className={classes.maxNumberOfPoints}\n min={1}\n max={maxMaxElements}\n onlyIntegersAllowed={true}\n value={graph.maxNumberOfPoints}\n onChange={this.changeMaxNoOfPoints}\n />\n {pointsError && <div className={classes.errorText}>{pointsError}</div>}\n </FormSection>\n\n <label>Correct Answer</label>\n\n <NumberLineComponent\n onMoveElement={this.moveCorrectResponse}\n onDeleteElements={this.deleteCorrectResponse}\n onAddElement={this.addCorrectResponse}\n onClearElements={this.clearCorrectResponse}\n onUndoElement={this.undoCorrectResponse}\n minWidth={numberLineDimensions.min}\n maxWidth={numberLineDimensions.max}\n answer={correctResponse}\n //strip feedback for this model\n model={trimModel(model)}\n />\n {correctResponseError && <div className={classes.errorText}>{correctResponseError}</div>}\n </React.Fragment>\n )}\n <AlertDialog\n open={dialog.open}\n title=\"Warning\"\n text={dialog.text}\n onConfirm={() => this.setState({ dialog: { open: false } })}\n />\n <AlertDialog\n open={correctAnswerDialog.open}\n title=\"Warning\"\n text={correctAnswerDialog.text}\n onConfirm={() => {\n let indices = this.state.correctAnswerDialog.indices;\n if (indices && indices.length > 0) {\n this.deleteCorrectResponse(indices);\n }\n this.setState({ correctAnswerDialog: { open: false } });\n }}\n onClose={() => {\n const graph = this.state.correctAnswerDialog.graph;\n this.reloadTicksData(graph.domain, graph.width, graph.ticks);\n this.assignTicksModelToGraph(graph);\n onChange({ graph });\n this.setState({ correctAnswerDialog: { open: false } });\n }}\n onConfirmText={'OK'}\n onCloseText={'Cancel'}\n />\n </layout.ConfigLayout>\n );\n }\n}\n\nexport default withStyles(styles, { name: 'Main' })(Main);\n"],"file":"main.js"}
@@ -58,24 +58,18 @@ var PointConfig = /*#__PURE__*/function (_React$Component) {
58
58
  var _super = _createSuper(PointConfig);
59
59
 
60
60
  function PointConfig(props) {
61
- var _this;
62
-
63
61
  (0, _classCallCheck2["default"])(this, PointConfig);
64
- _this = _super.call(this, props);
65
- _this.state = {
66
- selection: props.selection
67
- };
68
- return _this;
62
+ return _super.call(this, props);
69
63
  }
70
64
 
71
65
  (0, _createClass2["default"])(PointConfig, [{
72
66
  key: "toggle",
73
67
  value: function toggle(point) {
74
- var update = _objectSpread({}, this.state.selection);
68
+ var update = _objectSpread({}, this.props.selection);
75
69
 
76
70
  update[point] = !update[point];
77
71
 
78
- this._stateUpdate(update);
72
+ this._propsUpdate(update);
79
73
  }
80
74
  }, {
81
75
  key: "toggleAll",
@@ -85,28 +79,22 @@ var PointConfig = /*#__PURE__*/function (_React$Component) {
85
79
  return acc;
86
80
  }, {});
87
81
 
88
- this._stateUpdate(display);
82
+ this._propsUpdate(display);
89
83
  }
90
84
  }, {
91
- key: "_stateUpdate",
92
- value: function _stateUpdate(selection) {
93
- var _this2 = this;
94
-
95
- this.setState({
96
- selection: selection
97
- }, function () {
98
- _this2.props.onSelectionChange(_this2.state.selection);
99
- });
85
+ key: "_propsUpdate",
86
+ value: function _propsUpdate(selection) {
87
+ this.props.onSelectionChange(selection);
100
88
  }
101
89
  }, {
102
90
  key: "active",
103
91
  value: function active(point) {
104
- return this.state.selection[point] === true; // ? 'active' : '';
92
+ return this.props.selection[point] === true; // ? 'active' : '';
105
93
  }
106
94
  }, {
107
95
  key: "render",
108
96
  value: function render() {
109
- var _this3 = this;
97
+ var _this = this;
110
98
 
111
99
  // Setting default value if not passed in configuration properties.
112
100
  var _this$props = this.props,
@@ -118,8 +106,8 @@ var PointConfig = /*#__PURE__*/function (_React$Component) {
118
106
  return /*#__PURE__*/_react["default"].createElement(Point, {
119
107
  iconKey: point.toLowerCase(),
120
108
  key: point.toLowerCase(),
121
- onClick: _this3.toggle.bind(_this3, point),
122
- active: _this3.active(point)
109
+ onClick: _this.toggle.bind(_this, point),
110
+ active: _this.active(point)
123
111
  });
124
112
  });
125
113
  return /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("div", null, icons), /*#__PURE__*/_react["default"].createElement("div", {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/point-config.jsx"],"names":["Point","pointChooser","styles","theme","displayToggles","paddingTop","spacing","unit","marginRight","PointConfig","props","state","selection","point","update","_stateUpdate","value","display","types","reduce","acc","setState","onSelectionChange","classes","availableTools","hideButtons","icons","map","toLowerCase","toggle","bind","active","toggleAll","React","Component","PropTypes","func","object","array","bool","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 = (theme) => ({\n displayToggles: {\n paddingTop: theme.spacing.unit * 2.5,\n '& > :first-child': {\n marginRight: theme.spacing.unit,\n },\n },\n});\n\nclass PointConfig extends React.Component {\n static propTypes = {\n onSelectionChange: PropTypes.func,\n selection: PropTypes.object,\n classes: PropTypes.object,\n availableTools: PropTypes.array,\n hideButtons: PropTypes.bool,\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 // Setting default value if not passed in configuration properties.\n const { classes, availableTools, hideButtons = false } = this.props;\n\n const icons = (availableTools || []).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} hidden={hideButtons}>\n <Button variant=\"outlined\" size=\"small\" onClick={this.toggleAll.bind(this, true)}>\n Select 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
+ {"version":3,"sources":["../src/point-config.jsx"],"names":["Point","pointChooser","styles","theme","displayToggles","paddingTop","spacing","unit","marginRight","PointConfig","props","point","update","selection","_propsUpdate","value","display","types","reduce","acc","onSelectionChange","classes","availableTools","hideButtons","icons","map","toLowerCase","toggle","bind","active","toggleAll","React","Component","PropTypes","func","object","array","bool","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 = (theme) => ({\n displayToggles: {\n paddingTop: theme.spacing.unit * 2.5,\n '& > :first-child': {\n marginRight: theme.spacing.unit,\n },\n },\n});\n\nclass PointConfig extends React.Component {\n static propTypes = {\n onSelectionChange: PropTypes.func,\n selection: PropTypes.object,\n classes: PropTypes.object,\n availableTools: PropTypes.array,\n hideButtons: PropTypes.bool,\n };\n constructor(props) {\n super(props);\n }\n\n toggle(point) {\n const update = { ...this.props.selection };\n update[point] = !update[point];\n this._propsUpdate(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._propsUpdate(display);\n }\n\n _propsUpdate(selection) {\n this.props.onSelectionChange(selection);\n }\n\n active(point) {\n return this.props.selection[point] === true; // ? 'active' : '';\n }\n\n render() {\n // Setting default value if not passed in configuration properties.\n const { classes, availableTools, hideButtons = false } = this.props;\n\n const icons = (availableTools || []).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} hidden={hideButtons}>\n <Button variant=\"outlined\" size=\"small\" onClick={this.toggleAll.bind(this, true)}>\n Select 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"}
@@ -37,7 +37,7 @@ var Ticks = function Ticks(props) {
37
37
  var classes = props.classes,
38
38
  _props$ticksModel = props.ticksModel,
39
39
  ticksModel = _props$ticksModel === void 0 ? {
40
- tickIntervalType: 'Fraction',
40
+ tickIntervalType: 'Decimal',
41
41
  integerTick: 0,
42
42
  fractionTick: '0/1',
43
43
  decimalTick: 0,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ticks.jsx"],"names":["TickIntervals","Ticks","props","classes","ticksModel","tickIntervalType","integerTick","fractionTick","decimalTick","fractionLabel","decimalLabel","onChange","data","minorLimits","min","max","minorValues","fraction","decimal","rounded","majorValues","validateMinorValuesObject","validateMajorValuesObject","changeTickIntervalType","e","includes","changeIntegerTick","toString","changeFractionTick","indexOf","changeDecimalTick","changeFractionLabel","changeDecimalLabel","displayFlex","flexCol1","tableFixed","radioInputs","labelWidth","math","number","ceil","nl","numberTextField","round","flexCol2","propTypes","PropTypes","object","isRequired","func","shape","string","styles","display","gap","width","alignItems","paddingTop","paddingBottom","maxWidth"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport { NumberTextFieldCustom } from '@pie-lib/pie-toolbox/config-ui';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport RadioGroup from '@material-ui/core/RadioGroup';\nimport Radio from '@material-ui/core/Radio';\nimport * as math from 'mathjs';\n\n// This const will store available tick interval types.\nexport const TickIntervals = ['Integer', 'Fraction', 'Decimal'];\n\nexport const Ticks = (props) => {\n const {\n classes,\n ticksModel = {\n tickIntervalType: 'Fraction',\n integerTick: 0,\n fractionTick: '0/1',\n decimalTick: 0,\n fractionLabel: '0/1',\n decimalLabel: 0,\n },\n onChange,\n data = {\n minorLimits: { min: 0, max: 1 },\n minorValues: { fraction: [], decimal: [], rounded: [] },\n majorValues: { fraction: [], decimal: [], rounded: [] },\n }, // added default values if not present in model.\n } = props;\n\n /*\n * Function to validate minor values object\n * */\n const validateMinorValuesObject = () => {\n if (!data.minorValues) {\n return false;\n }\n return !!(data.minorValues.fraction || data.minorValues.decimal || data.minorValues.rounded);\n };\n\n /*\n * Function to validate major values object\n * */\n const validateMajorValuesObject = () => {\n if (!data.majorValues) {\n return false;\n }\n return !!(data.majorValues.fraction || data.majorValues.decimal || data.majorValues.rounded);\n };\n\n /*\n * Function to handle tick interval type radio group change\n * @param e change event object\n * @param tickIntervalType string value for changed tick interval type\n * */\n const changeTickIntervalType = (e, tickIntervalType) => {\n if (!TickIntervals.includes(tickIntervalType)) {\n return;\n }\n ticksModel.tickIntervalType = tickIntervalType;\n onChange({ ticksModel });\n };\n\n /*\n * Function to handle change in integer tick interval\n * @param e change event object\n * @param integerTick number value for changed tick\n * */\n const changeIntegerTick = (e, integerTick) => {\n ticksModel.integerTick = integerTick;\n ticksModel.fractionTick = integerTick.toString();\n ticksModel.decimalTick = integerTick;\n onChange({ ticksModel });\n };\n\n /*\n * Function to handle change in fraction tick interval\n * @param e change event object\n * @param fractionTick string value for changed tick\n * */\n const changeFractionTick = (e, fractionTick) => {\n if (validateMinorValuesObject()) {\n ticksModel.fractionTick = fractionTick;\n ticksModel.decimalTick = data.minorValues.decimal[data.minorValues.fraction.indexOf(ticksModel.fractionTick)];\n onChange({ ticksModel });\n }\n };\n\n /*\n * Function to handle change in decimal tick interval\n * @param e change event object\n * @param decimalTick number value for changed tick\n * */\n const changeDecimalTick = (e, decimalTick) => {\n if (validateMinorValuesObject()) {\n ticksModel.decimalTick = data.minorValues.decimal[data.minorValues.rounded.indexOf(decimalTick)];\n ticksModel.fractionTick = data.minorValues.fraction[data.minorValues.decimal.indexOf(ticksModel.decimalTick)];\n onChange({ ticksModel });\n }\n };\n\n /*\n * Function to handle change in fraction label interval value\n * @param e change event object\n * @param fractionLabel string value for changed label interval\n * */\n const changeFractionLabel = (e, fractionLabel) => {\n if (validateMajorValuesObject()) {\n ticksModel.fractionLabel = fractionLabel;\n ticksModel.decimalLabel = data.majorValues.decimal[data.majorValues.fraction.indexOf(ticksModel.fractionLabel)];\n onChange({ ticksModel });\n }\n };\n\n /*\n * Function to handle change in decimal label interval value\n * @param e change event object\n * @param decimalLabel number value for changed label interval\n * */\n const changeDecimalLabel = (e, decimalLabel) => {\n if (validateMajorValuesObject()) {\n ticksModel.decimalLabel = data.majorValues.decimal[data.majorValues.rounded.indexOf(decimalLabel)];\n ticksModel.fractionLabel = data.majorValues.fraction[data.majorValues.decimal.indexOf(ticksModel.decimalLabel)];\n onChange({ ticksModel });\n }\n };\n\n return (\n <div className={classes.displayFlex}>\n <div className={classes.flexCol1}>\n <label>Tick Interval</label>\n <RadioGroup\n aria-label=\"tick-interval-type\"\n name=\"tickIntervalType\"\n value={ticksModel.tickIntervalType}\n onChange={changeTickIntervalType}\n >\n <table className={classes.tableFixed}>\n <tbody>\n <tr className={classes.radioInputs}>\n <td className={classes.labelWidth}>\n <FormControlLabel\n value=\"Integer\"\n control={<Radio checked={ticksModel.tickIntervalType === 'Integer'} />}\n label=\"Integer\"\n disabled={data.minorLimits.max < 1}\n />\n </td>\n <td>\n <NumberTextFieldCustom\n value={ticksModel.integerTick}\n min={math.number(math.ceil(data.minorLimits.min))}\n max={math.number(math.ceil(data.minorLimits.max))}\n step={1}\n onlyIntegersAllowed={true}\n className={classes.nl}\n inputClassName={classes.numberTextField}\n onChange={changeIntegerTick}\n variant={'outlined'}\n type={'number'}\n disabled={ticksModel.tickIntervalType !== 'Integer' || data.minorLimits.max < 1}\n />\n </td>\n </tr>\n <tr className={classes.radioInputs}>\n <td className={classes.labelWidth}>\n <FormControlLabel\n value=\"Fraction\"\n control={<Radio checked={ticksModel.tickIntervalType === 'Fraction'} />}\n label=\"Unit Fraction\"\n />\n </td>\n <td>\n <NumberTextFieldCustom\n value={ticksModel.fractionTick}\n min={math.number(data.minorLimits.min)}\n max={math.number(data.minorLimits.max)}\n customValues={data.minorValues.fraction}\n className={classes.nl}\n inputClassName={classes.numberTextField}\n onChange={changeFractionTick}\n variant={'outlined'}\n type={'text'}\n disabled={ticksModel.tickIntervalType !== 'Fraction'}\n />\n </td>\n </tr>\n <tr className={classes.radioInputs}>\n <td className={classes.labelWidth}>\n <FormControlLabel\n value=\"Decimal\"\n control={<Radio checked={ticksModel.tickIntervalType === 'Decimal'} />}\n label=\"Decimal\"\n />\n </td>\n <td>\n <NumberTextFieldCustom\n value={math.number(math.round(ticksModel.decimalTick, 3))}\n min={math.number(data.minorLimits.min)}\n max={math.number(data.minorLimits.max)}\n customValues={data.minorValues.rounded}\n className={classes.nl}\n inputClassName={classes.numberTextField}\n onChange={changeDecimalTick}\n variant={'outlined'}\n type={'number'}\n disabled={ticksModel.tickIntervalType !== 'Decimal'}\n />\n </td>\n </tr>\n </tbody>\n </table>\n </RadioGroup>\n </div>\n <div className={classes.flexCol2}>\n <label>Label Interval</label>\n <NumberTextFieldCustom\n value={\n ticksModel.tickIntervalType === 'Fraction'\n ? ticksModel.fractionLabel\n : math.number(math.round(ticksModel.decimalLabel, 3))\n }\n className={classes.numberTextField}\n variant={'outlined'}\n customValues={\n ticksModel.tickIntervalType === 'Fraction' ? data.majorValues.fraction : data.majorValues.rounded\n }\n type={ticksModel.tickIntervalType === 'Fraction' ? 'text' : 'number'}\n onChange={ticksModel.tickIntervalType === 'Fraction' ? changeFractionLabel : changeDecimalLabel}\n />\n </div>\n </div>\n );\n};\nTicks.propTypes = {\n classes: PropTypes.object.isRequired,\n onChange: PropTypes.func,\n ticksModel: PropTypes.shape({\n integerTick: PropTypes.number,\n decimalTick: PropTypes.number,\n fractionTick: PropTypes.string,\n tickIntervalType: PropTypes.string,\n fractionLabel: PropTypes.string,\n decimalLabel: PropTypes.number,\n }),\n data: PropTypes.object,\n};\n\nconst styles = () => ({\n displayFlex: {\n display: 'flex',\n },\n flexCol1: {\n display: 'flex',\n 'flex-flow': 'column',\n gap: '10px',\n width: '65%',\n },\n flexCol2: {\n display: 'flex',\n 'flex-flow': 'column',\n gap: '10px',\n },\n radioInputs: {\n display: 'flex',\n alignItems: 'center',\n paddingTop: '5px',\n paddingBottom: '5px',\n },\n numberTextField: {\n maxWidth: '145px',\n },\n tableFixed: {\n 'table-layout': 'fixed',\n width: '100%',\n },\n labelWidth: {\n width: '35%',\n },\n});\nexport default withStyles(styles)(Ticks);\n"],"file":"ticks.js"}
1
+ {"version":3,"sources":["../src/ticks.jsx"],"names":["TickIntervals","Ticks","props","classes","ticksModel","tickIntervalType","integerTick","fractionTick","decimalTick","fractionLabel","decimalLabel","onChange","data","minorLimits","min","max","minorValues","fraction","decimal","rounded","majorValues","validateMinorValuesObject","validateMajorValuesObject","changeTickIntervalType","e","includes","changeIntegerTick","toString","changeFractionTick","indexOf","changeDecimalTick","changeFractionLabel","changeDecimalLabel","displayFlex","flexCol1","tableFixed","radioInputs","labelWidth","math","number","ceil","nl","numberTextField","round","flexCol2","propTypes","PropTypes","object","isRequired","func","shape","string","styles","display","gap","width","alignItems","paddingTop","paddingBottom","maxWidth"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport { NumberTextFieldCustom } from '@pie-lib/pie-toolbox/config-ui';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport RadioGroup from '@material-ui/core/RadioGroup';\nimport Radio from '@material-ui/core/Radio';\nimport * as math from 'mathjs';\n\n// This const will store available tick interval types.\nexport const TickIntervals = ['Integer', 'Fraction', 'Decimal'];\n\nexport const Ticks = (props) => {\n const {\n classes,\n ticksModel = {\n tickIntervalType: 'Decimal',\n integerTick: 0,\n fractionTick: '0/1',\n decimalTick: 0,\n fractionLabel: '0/1',\n decimalLabel: 0,\n },\n onChange,\n data = {\n minorLimits: { min: 0, max: 1 },\n minorValues: { fraction: [], decimal: [], rounded: [] },\n majorValues: { fraction: [], decimal: [], rounded: [] },\n }, // added default values if not present in model.\n } = props;\n\n /*\n * Function to validate minor values object\n * */\n const validateMinorValuesObject = () => {\n if (!data.minorValues) {\n return false;\n }\n return !!(data.minorValues.fraction || data.minorValues.decimal || data.minorValues.rounded);\n };\n\n /*\n * Function to validate major values object\n * */\n const validateMajorValuesObject = () => {\n if (!data.majorValues) {\n return false;\n }\n return !!(data.majorValues.fraction || data.majorValues.decimal || data.majorValues.rounded);\n };\n\n /*\n * Function to handle tick interval type radio group change\n * @param e change event object\n * @param tickIntervalType string value for changed tick interval type\n * */\n const changeTickIntervalType = (e, tickIntervalType) => {\n if (!TickIntervals.includes(tickIntervalType)) {\n return;\n }\n ticksModel.tickIntervalType = tickIntervalType;\n onChange({ ticksModel });\n };\n\n /*\n * Function to handle change in integer tick interval\n * @param e change event object\n * @param integerTick number value for changed tick\n * */\n const changeIntegerTick = (e, integerTick) => {\n ticksModel.integerTick = integerTick;\n ticksModel.fractionTick = integerTick.toString();\n ticksModel.decimalTick = integerTick;\n onChange({ ticksModel });\n };\n\n /*\n * Function to handle change in fraction tick interval\n * @param e change event object\n * @param fractionTick string value for changed tick\n * */\n const changeFractionTick = (e, fractionTick) => {\n if (validateMinorValuesObject()) {\n ticksModel.fractionTick = fractionTick;\n ticksModel.decimalTick = data.minorValues.decimal[data.minorValues.fraction.indexOf(ticksModel.fractionTick)];\n onChange({ ticksModel });\n }\n };\n\n /*\n * Function to handle change in decimal tick interval\n * @param e change event object\n * @param decimalTick number value for changed tick\n * */\n const changeDecimalTick = (e, decimalTick) => {\n if (validateMinorValuesObject()) {\n ticksModel.decimalTick = data.minorValues.decimal[data.minorValues.rounded.indexOf(decimalTick)];\n ticksModel.fractionTick = data.minorValues.fraction[data.minorValues.decimal.indexOf(ticksModel.decimalTick)];\n onChange({ ticksModel });\n }\n };\n\n /*\n * Function to handle change in fraction label interval value\n * @param e change event object\n * @param fractionLabel string value for changed label interval\n * */\n const changeFractionLabel = (e, fractionLabel) => {\n if (validateMajorValuesObject()) {\n ticksModel.fractionLabel = fractionLabel;\n ticksModel.decimalLabel = data.majorValues.decimal[data.majorValues.fraction.indexOf(ticksModel.fractionLabel)];\n onChange({ ticksModel });\n }\n };\n\n /*\n * Function to handle change in decimal label interval value\n * @param e change event object\n * @param decimalLabel number value for changed label interval\n * */\n const changeDecimalLabel = (e, decimalLabel) => {\n if (validateMajorValuesObject()) {\n ticksModel.decimalLabel = data.majorValues.decimal[data.majorValues.rounded.indexOf(decimalLabel)];\n ticksModel.fractionLabel = data.majorValues.fraction[data.majorValues.decimal.indexOf(ticksModel.decimalLabel)];\n onChange({ ticksModel });\n }\n };\n\n return (\n <div className={classes.displayFlex}>\n <div className={classes.flexCol1}>\n <label>Tick Interval</label>\n <RadioGroup\n aria-label=\"tick-interval-type\"\n name=\"tickIntervalType\"\n value={ticksModel.tickIntervalType}\n onChange={changeTickIntervalType}\n >\n <table className={classes.tableFixed}>\n <tbody>\n <tr className={classes.radioInputs}>\n <td className={classes.labelWidth}>\n <FormControlLabel\n value=\"Integer\"\n control={<Radio checked={ticksModel.tickIntervalType === 'Integer'} />}\n label=\"Integer\"\n disabled={data.minorLimits.max < 1}\n />\n </td>\n <td>\n <NumberTextFieldCustom\n value={ticksModel.integerTick}\n min={math.number(math.ceil(data.minorLimits.min))}\n max={math.number(math.ceil(data.minorLimits.max))}\n step={1}\n onlyIntegersAllowed={true}\n className={classes.nl}\n inputClassName={classes.numberTextField}\n onChange={changeIntegerTick}\n variant={'outlined'}\n type={'number'}\n disabled={ticksModel.tickIntervalType !== 'Integer' || data.minorLimits.max < 1}\n />\n </td>\n </tr>\n <tr className={classes.radioInputs}>\n <td className={classes.labelWidth}>\n <FormControlLabel\n value=\"Fraction\"\n control={<Radio checked={ticksModel.tickIntervalType === 'Fraction'} />}\n label=\"Unit Fraction\"\n />\n </td>\n <td>\n <NumberTextFieldCustom\n value={ticksModel.fractionTick}\n min={math.number(data.minorLimits.min)}\n max={math.number(data.minorLimits.max)}\n customValues={data.minorValues.fraction}\n className={classes.nl}\n inputClassName={classes.numberTextField}\n onChange={changeFractionTick}\n variant={'outlined'}\n type={'text'}\n disabled={ticksModel.tickIntervalType !== 'Fraction'}\n />\n </td>\n </tr>\n <tr className={classes.radioInputs}>\n <td className={classes.labelWidth}>\n <FormControlLabel\n value=\"Decimal\"\n control={<Radio checked={ticksModel.tickIntervalType === 'Decimal'} />}\n label=\"Decimal\"\n />\n </td>\n <td>\n <NumberTextFieldCustom\n value={math.number(math.round(ticksModel.decimalTick, 3))}\n min={math.number(data.minorLimits.min)}\n max={math.number(data.minorLimits.max)}\n customValues={data.minorValues.rounded}\n className={classes.nl}\n inputClassName={classes.numberTextField}\n onChange={changeDecimalTick}\n variant={'outlined'}\n type={'number'}\n disabled={ticksModel.tickIntervalType !== 'Decimal'}\n />\n </td>\n </tr>\n </tbody>\n </table>\n </RadioGroup>\n </div>\n <div className={classes.flexCol2}>\n <label>Label Interval</label>\n <NumberTextFieldCustom\n value={\n ticksModel.tickIntervalType === 'Fraction'\n ? ticksModel.fractionLabel\n : math.number(math.round(ticksModel.decimalLabel, 3))\n }\n className={classes.numberTextField}\n variant={'outlined'}\n customValues={\n ticksModel.tickIntervalType === 'Fraction' ? data.majorValues.fraction : data.majorValues.rounded\n }\n type={ticksModel.tickIntervalType === 'Fraction' ? 'text' : 'number'}\n onChange={ticksModel.tickIntervalType === 'Fraction' ? changeFractionLabel : changeDecimalLabel}\n />\n </div>\n </div>\n );\n};\nTicks.propTypes = {\n classes: PropTypes.object.isRequired,\n onChange: PropTypes.func,\n ticksModel: PropTypes.shape({\n integerTick: PropTypes.number,\n decimalTick: PropTypes.number,\n fractionTick: PropTypes.string,\n tickIntervalType: PropTypes.string,\n fractionLabel: PropTypes.string,\n decimalLabel: PropTypes.number,\n }),\n data: PropTypes.object,\n};\n\nconst styles = () => ({\n displayFlex: {\n display: 'flex',\n },\n flexCol1: {\n display: 'flex',\n 'flex-flow': 'column',\n gap: '10px',\n width: '65%',\n },\n flexCol2: {\n display: 'flex',\n 'flex-flow': 'column',\n gap: '10px',\n },\n radioInputs: {\n display: 'flex',\n alignItems: 'center',\n paddingTop: '5px',\n paddingBottom: '5px',\n },\n numberTextField: {\n maxWidth: '145px',\n },\n tableFixed: {\n 'table-layout': 'fixed',\n width: '100%',\n },\n labelWidth: {\n width: '35%',\n },\n});\nexport default withStyles(styles)(Ticks);\n"],"file":"ticks.js"}
@@ -244,7 +244,11 @@ var NumberLine = /*#__PURE__*/function (_React$Component) {
244
244
  model = _this$props2.model,
245
245
  classes = _this$props2.classes,
246
246
  onDeleteElements = _this$props2.onDeleteElements,
247
- onMoveElement = _this$props2.onMoveElement;
247
+ onMoveElement = _this$props2.onMoveElement,
248
+ _this$props2$minWidth = _this$props2.minWidth,
249
+ minWidth = _this$props2$minWidth === void 0 ? 400 : _this$props2$minWidth,
250
+ _this$props2$maxWidth = _this$props2.maxWidth,
251
+ maxWidth = _this$props2$maxWidth === void 0 ? 1600 : _this$props2$maxWidth;
248
252
  var _this$state = this.state,
249
253
  showCorrectAnswer = _this$state.showCorrectAnswer,
250
254
  answers = _this$state.answers,
@@ -274,7 +278,7 @@ var NumberLine = /*#__PURE__*/function (_React$Component) {
274
278
  availableTypes = graph.availableTypes,
275
279
  title = graph.title,
276
280
  fraction = graph.fraction;
277
- var width = this.getSize('width', 400, 1600, 600);
281
+ var width = this.getSize('width', minWidth, maxWidth, 600);
278
282
  var graphProps = {
279
283
  disabled: disabled,
280
284
  domain: domain,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/number-line/index.jsx"],"names":["translator","Translator","styles","mainContainer","color","text","backgroundColor","background","graphTitle","textAlign","pointerEvents","userSelect","numberLine","boxSizing","toggle","marginBottom","black_on_rose","white_on_black","prompt","verticalAlign","NumberLine","props","context","initialType","model","graph","toLowerCase","PointChooser","DEFAULT_TYPE","state","selectedElements","elementType","answers","answer","index","selected","indexOf","concat","filter","e","setState","t","x","hasMaxNoOfPoints","showMaxPointsWarning","setTimeout","ticks","domain","elementData","minor","contains","some","element","push","onAddElement","maxNumberOfPoints","length","nextProps","showCorrectAnswer","type","min","max","defaultValue","Math","onUndoElement","pop","onClearElements","classes","onDeleteElements","onMoveElement","corrected","correct","incorrect","disabled","correctResponse","emptyAnswer","feedback","colorContrast","language","addElement","bind","elementsSelected","arrows","height","availableTypes","title","fraction","width","getSize","graphProps","getAnswerElements","map","out","includes","undefined","getCorrectAnswerElements","r","elements","maxPointsMessage","lng","count","deleteElements","v","d","getIcons","Object","keys","k","onShowCorrectAnswer","show","adjustedWidth","names","elementTypeSelected","clearAll","undo","toggleElement","deselectElements","__html","React","Component","PropTypes","func","isRequired","object","array"],"mappings":"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","sourcesContent":["import Feedback from './feedback';\nimport Graph from './graph';\nimport PropTypes from 'prop-types';\nimport PointChooser from './point-chooser';\nimport React from 'react';\nimport Toggle from '@pie-lib/pie-toolbox/correct-answer-toggle';\nimport { buildElementModel } from './graph/elements/builder';\nimport classNames from 'classnames';\nimport cloneDeep from 'lodash/cloneDeep';\nimport { color, PreviewPrompt } from '@pie-lib/pie-toolbox/render-ui';\nimport injectSheet from 'react-jss';\nimport isArray from 'lodash/isArray';\nimport isNumber from 'lodash/isNumber';\nimport isEqual from 'lodash/isEqual';\nimport Translator from '@pie-lib/pie-toolbox/translator';\n\nconst { translator } = Translator;\n\nexport { Graph };\n\nconst styles = {\n mainContainer: {\n color: color.text(),\n backgroundColor: color.background(),\n },\n graphTitle: {\n textAlign: 'center',\n pointerEvents: 'none',\n userSelect: 'none',\n },\n numberLine: {\n boxSizing: 'unset',\n },\n toggle: {\n marginBottom: '16px',\n },\n black_on_rose: {\n backgroundColor: 'mistyrose',\n },\n white_on_black: {\n backgroundColor: 'black',\n '--correct-answer-toggle-label-color': 'white',\n '--tick-color': 'white',\n '--line-stroke': 'white',\n '--arrow-color': 'white',\n '--point-stroke': 'white',\n '--point-fill': 'black',\n },\n prompt: {\n verticalAlign: 'middle',\n marginBottom: '16px',\n },\n};\n\nexport class NumberLine extends React.Component {\n static propTypes = {\n onMoveElement: PropTypes.func.isRequired,\n onDeleteElements: PropTypes.func.isRequired,\n onAddElement: PropTypes.func.isRequired,\n onUndoElement: PropTypes.func.isRequired,\n onClearElements: PropTypes.func.isRequired,\n model: PropTypes.object.isRequired,\n answer: PropTypes.array,\n classes: PropTypes.object.isRequired,\n };\n\n constructor(props, context) {\n super(props, context);\n\n let initialType = props.model.graph ? props.model.graph.initialType : null;\n initialType = initialType ? initialType.toLowerCase() : PointChooser.DEFAULT_TYPE;\n\n this.state = {\n selectedElements: [],\n elementType: initialType,\n answers: props.answer,\n };\n }\n\n toggleElement(index) {\n let selected = [];\n if (this.state.selectedElements.indexOf(index) === -1) {\n selected = this.state.selectedElements.concat([index]);\n } else {\n selected = this.state.selectedElements.filter((e) => e !== index);\n }\n this.setState({ selectedElements: selected });\n }\n\n elementTypeSelected(t) {\n this.setState({ elementType: t });\n }\n\n addElement(x) {\n if (this.hasMaxNoOfPoints()) {\n this.setState({ showMaxPointsWarning: true });\n setTimeout(() => {\n this.setState({ showMaxPointsWarning: false });\n }, 2000);\n return;\n }\n\n const { ticks, domain } = this.props.model.graph;\n\n let elementData = buildElementModel(x, this.state.elementType, domain, ticks.minor);\n\n if (elementData) {\n const { answers } = this.state;\n\n const contains = answers.some((element) => {\n return isEqual(element, elementData);\n });\n\n if (!contains) {\n answers.push(elementData);\n this.setState({ answers });\n this.props.onAddElement(elementData);\n }\n }\n }\n\n hasMaxNoOfPoints() {\n let {\n answer,\n model: {\n graph: { maxNumberOfPoints },\n },\n } = this.props;\n\n return isNumber(maxNumberOfPoints) && maxNumberOfPoints > 0 && (answer || []).length >= maxNumberOfPoints;\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const { answer } = nextProps;\n\n if (!isEqual(this.state.answers, answer)) {\n this.setState({ showCorrectAnswer: false, answers: answer });\n }\n }\n\n deselectElements() {\n this.setState({ selectedElements: [] });\n }\n\n getSize(type, min, max, defaultValue) {\n const {\n model: { graph },\n } = this.props;\n\n if (graph && graph[type]) {\n return Math.max(min, Math.min(max, graph[type]));\n } else {\n return defaultValue;\n }\n }\n\n undo() {\n const { answers } = this.state;\n const { onUndoElement } = this.props;\n\n answers.pop();\n this.setState({ answers });\n onUndoElement();\n }\n\n clearAll() {\n const { onClearElements } = this.props;\n\n this.setState({ answers: [] });\n onClearElements();\n }\n\n render() {\n let { model, classes, onDeleteElements, onMoveElement } = this.props;\n let { showCorrectAnswer, answers, selectedElements, showMaxPointsWarning, elementType } = this.state;\n let {\n corrected = { correct: [], incorrect: [] },\n disabled,\n graph,\n correctResponse,\n prompt,\n emptyAnswer,\n feedback,\n colorContrast,\n language\n } = model;\n let addElement = this.addElement.bind(this);\n let elementsSelected = !disabled && selectedElements && selectedElements.length > 0;\n const { ticks, domain, arrows, maxNumberOfPoints, height, availableTypes, title, fraction } = graph;\n const width = this.getSize('width', 400, 1600, 600);\n const graphProps = {\n disabled,\n domain,\n ticks,\n width,\n height: height || 100,\n arrows,\n fraction,\n };\n\n let getAnswerElements = () => {\n return (answers || []).map((e, index) => {\n let out = cloneDeep(e);\n out.selected = selectedElements.indexOf(index) !== -1;\n out.correct = corrected.correct.includes(index)\n ? true\n : corrected.incorrect.includes(index)\n ? false\n : undefined;\n return out;\n });\n };\n\n let getCorrectAnswerElements = () => {\n return (correctResponse || []).map((r) => {\n r.correct = true;\n return r;\n });\n };\n\n let elements = showCorrectAnswer ? getCorrectAnswerElements() : getAnswerElements();\n\n let maxPointsMessage = () => maxNumberOfPoints == 1 ? translator.t('numberLine.addElementLimit_one', {\n lng: language,\n count: 1\n }) : translator.t('numberLine.addElementLimit_other', { lng: language, count: maxNumberOfPoints });\n\n let deleteElements = () => {\n onDeleteElements(selectedElements);\n\n answers = answers.filter((v, index) => {\n return !selectedElements.some((d) => d === index);\n });\n\n this.setState({ selectedElements: [], answers });\n };\n\n let getIcons = () => {\n if (availableTypes) {\n return Object.keys(availableTypes)\n .filter((k) => availableTypes[k])\n .map((k) => k.toLowerCase());\n }\n };\n\n let onShowCorrectAnswer = (show) => {\n this.setState({ showCorrectAnswer: show });\n };\n\n let adjustedWidth = graphProps.width - 20;\n\n const names = classNames(classes.numberLine, classes.mainContainer, classes[colorContrast]);\n\n return (\n <div className={names} style={{ width }}>\n {prompt && (\n <div className={classes.prompt}>\n <PreviewPrompt prompt={prompt} />\n </div>\n )}\n\n {!disabled && (\n <div style={{ width: adjustedWidth }} className={classes.toggle}>\n <Toggle\n show={isArray(correctResponse) && correctResponse.length && !emptyAnswer}\n toggled={showCorrectAnswer}\n onToggle={onShowCorrectAnswer}\n initialValue={false}\n language={language}\n />\n </div>\n )}\n\n {!disabled && (\n <PointChooser\n elementType={elementType}\n showDeleteButton={elementsSelected}\n onDeleteClick={deleteElements}\n onElementType={this.elementTypeSelected.bind(this)}\n onClearElements={this.clearAll.bind(this)}\n onUndoElement={this.undo.bind(this)}\n icons={getIcons()}\n language={language}\n />\n )}\n\n <Graph\n {...graphProps}\n elements={elements}\n onAddElement={addElement}\n onMoveElement={onMoveElement}\n onToggleElement={this.toggleElement.bind(this)}\n onDeselectElements={this.deselectElements.bind(this)}\n debug={false}\n />\n {title && <div className={classes.graphTitle} dangerouslySetInnerHTML={{ __html: title }} />}\n\n {showMaxPointsWarning && <Feedback type=\"info\" width={adjustedWidth} message={maxPointsMessage()} />}\n {feedback && !showCorrectAnswer && <Feedback {...feedback} width={adjustedWidth} />}\n </div>\n );\n }\n}\n\nexport default injectSheet(styles)(NumberLine);\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../src/number-line/index.jsx"],"names":["translator","Translator","styles","mainContainer","color","text","backgroundColor","background","graphTitle","textAlign","pointerEvents","userSelect","numberLine","boxSizing","toggle","marginBottom","black_on_rose","white_on_black","prompt","verticalAlign","NumberLine","props","context","initialType","model","graph","toLowerCase","PointChooser","DEFAULT_TYPE","state","selectedElements","elementType","answers","answer","index","selected","indexOf","concat","filter","e","setState","t","x","hasMaxNoOfPoints","showMaxPointsWarning","setTimeout","ticks","domain","elementData","minor","contains","some","element","push","onAddElement","maxNumberOfPoints","length","nextProps","showCorrectAnswer","type","min","max","defaultValue","Math","onUndoElement","pop","onClearElements","classes","onDeleteElements","onMoveElement","minWidth","maxWidth","corrected","correct","incorrect","disabled","correctResponse","emptyAnswer","feedback","colorContrast","language","addElement","bind","elementsSelected","arrows","height","availableTypes","title","fraction","width","getSize","graphProps","getAnswerElements","map","out","includes","undefined","getCorrectAnswerElements","r","elements","maxPointsMessage","lng","count","deleteElements","v","d","getIcons","Object","keys","k","onShowCorrectAnswer","show","adjustedWidth","names","elementTypeSelected","clearAll","undo","toggleElement","deselectElements","__html","React","Component","PropTypes","func","isRequired","object","array"],"mappings":"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","sourcesContent":["import Feedback from './feedback';\nimport Graph from './graph';\nimport PropTypes from 'prop-types';\nimport PointChooser from './point-chooser';\nimport React from 'react';\nimport Toggle from '@pie-lib/pie-toolbox/correct-answer-toggle';\nimport { buildElementModel } from './graph/elements/builder';\nimport classNames from 'classnames';\nimport cloneDeep from 'lodash/cloneDeep';\nimport { color, PreviewPrompt } from '@pie-lib/pie-toolbox/render-ui';\nimport injectSheet from 'react-jss';\nimport isArray from 'lodash/isArray';\nimport isNumber from 'lodash/isNumber';\nimport isEqual from 'lodash/isEqual';\nimport Translator from '@pie-lib/pie-toolbox/translator';\n\nconst { translator } = Translator;\n\nexport { Graph };\n\nconst styles = {\n mainContainer: {\n color: color.text(),\n backgroundColor: color.background(),\n },\n graphTitle: {\n textAlign: 'center',\n pointerEvents: 'none',\n userSelect: 'none',\n },\n numberLine: {\n boxSizing: 'unset',\n },\n toggle: {\n marginBottom: '16px',\n },\n black_on_rose: {\n backgroundColor: 'mistyrose',\n },\n white_on_black: {\n backgroundColor: 'black',\n '--correct-answer-toggle-label-color': 'white',\n '--tick-color': 'white',\n '--line-stroke': 'white',\n '--arrow-color': 'white',\n '--point-stroke': 'white',\n '--point-fill': 'black',\n },\n prompt: {\n verticalAlign: 'middle',\n marginBottom: '16px',\n },\n};\n\nexport class NumberLine extends React.Component {\n static propTypes = {\n onMoveElement: PropTypes.func.isRequired,\n onDeleteElements: PropTypes.func.isRequired,\n onAddElement: PropTypes.func.isRequired,\n onUndoElement: PropTypes.func.isRequired,\n onClearElements: PropTypes.func.isRequired,\n model: PropTypes.object.isRequired,\n answer: PropTypes.array,\n classes: PropTypes.object.isRequired,\n };\n\n constructor(props, context) {\n super(props, context);\n\n let initialType = props.model.graph ? props.model.graph.initialType : null;\n initialType = initialType ? initialType.toLowerCase() : PointChooser.DEFAULT_TYPE;\n\n this.state = {\n selectedElements: [],\n elementType: initialType,\n answers: props.answer,\n };\n }\n\n toggleElement(index) {\n let selected = [];\n if (this.state.selectedElements.indexOf(index) === -1) {\n selected = this.state.selectedElements.concat([index]);\n } else {\n selected = this.state.selectedElements.filter((e) => e !== index);\n }\n this.setState({ selectedElements: selected });\n }\n\n elementTypeSelected(t) {\n this.setState({ elementType: t });\n }\n\n addElement(x) {\n if (this.hasMaxNoOfPoints()) {\n this.setState({ showMaxPointsWarning: true });\n setTimeout(() => {\n this.setState({ showMaxPointsWarning: false });\n }, 2000);\n return;\n }\n\n const { ticks, domain } = this.props.model.graph;\n\n let elementData = buildElementModel(x, this.state.elementType, domain, ticks.minor);\n\n if (elementData) {\n const { answers } = this.state;\n\n const contains = answers.some((element) => {\n return isEqual(element, elementData);\n });\n\n if (!contains) {\n answers.push(elementData);\n this.setState({ answers });\n this.props.onAddElement(elementData);\n }\n }\n }\n\n hasMaxNoOfPoints() {\n let {\n answer,\n model: {\n graph: { maxNumberOfPoints },\n },\n } = this.props;\n\n return isNumber(maxNumberOfPoints) && maxNumberOfPoints > 0 && (answer || []).length >= maxNumberOfPoints;\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const { answer } = nextProps;\n\n if (!isEqual(this.state.answers, answer)) {\n this.setState({ showCorrectAnswer: false, answers: answer });\n }\n }\n\n deselectElements() {\n this.setState({ selectedElements: [] });\n }\n\n getSize(type, min, max, defaultValue) {\n const {\n model: { graph },\n } = this.props;\n\n if (graph && graph[type]) {\n return Math.max(min, Math.min(max, graph[type]));\n } else {\n return defaultValue;\n }\n }\n\n undo() {\n const { answers } = this.state;\n const { onUndoElement } = this.props;\n\n answers.pop();\n this.setState({ answers });\n onUndoElement();\n }\n\n clearAll() {\n const { onClearElements } = this.props;\n\n this.setState({ answers: [] });\n onClearElements();\n }\n\n render() {\n let { model, classes, onDeleteElements, onMoveElement, minWidth = 400, maxWidth = 1600 } = this.props;\n let { showCorrectAnswer, answers, selectedElements, showMaxPointsWarning, elementType } = this.state;\n let {\n corrected = { correct: [], incorrect: [] },\n disabled,\n graph,\n correctResponse,\n prompt,\n emptyAnswer,\n feedback,\n colorContrast,\n language\n } = model;\n let addElement = this.addElement.bind(this);\n let elementsSelected = !disabled && selectedElements && selectedElements.length > 0;\n const { ticks, domain, arrows, maxNumberOfPoints, height, availableTypes, title, fraction } = graph;\n const width = this.getSize('width', minWidth, maxWidth, 600);\n const graphProps = {\n disabled,\n domain,\n ticks,\n width,\n height: height || 100,\n arrows,\n fraction,\n };\n\n let getAnswerElements = () => {\n return (answers || []).map((e, index) => {\n let out = cloneDeep(e);\n out.selected = selectedElements.indexOf(index) !== -1;\n out.correct = corrected.correct.includes(index)\n ? true\n : corrected.incorrect.includes(index)\n ? false\n : undefined;\n return out;\n });\n };\n\n let getCorrectAnswerElements = () => {\n return (correctResponse || []).map((r) => {\n r.correct = true;\n return r;\n });\n };\n\n let elements = showCorrectAnswer ? getCorrectAnswerElements() : getAnswerElements();\n\n let maxPointsMessage = () => maxNumberOfPoints == 1 ? translator.t('numberLine.addElementLimit_one', {\n lng: language,\n count: 1\n }) : translator.t('numberLine.addElementLimit_other', { lng: language, count: maxNumberOfPoints });\n\n let deleteElements = () => {\n onDeleteElements(selectedElements);\n\n answers = answers.filter((v, index) => {\n return !selectedElements.some((d) => d === index);\n });\n\n this.setState({ selectedElements: [], answers });\n };\n\n let getIcons = () => {\n if (availableTypes) {\n return Object.keys(availableTypes)\n .filter((k) => availableTypes[k])\n .map((k) => k.toLowerCase());\n }\n };\n\n let onShowCorrectAnswer = (show) => {\n this.setState({ showCorrectAnswer: show });\n };\n\n let adjustedWidth = graphProps.width - 20;\n\n const names = classNames(classes.numberLine, classes.mainContainer, classes[colorContrast]);\n\n return (\n <div className={names} style={{ width }}>\n {prompt && (\n <div className={classes.prompt}>\n <PreviewPrompt prompt={prompt} />\n </div>\n )}\n\n {!disabled && (\n <div style={{ width: adjustedWidth }} className={classes.toggle}>\n <Toggle\n show={isArray(correctResponse) && correctResponse.length && !emptyAnswer}\n toggled={showCorrectAnswer}\n onToggle={onShowCorrectAnswer}\n initialValue={false}\n language={language}\n />\n </div>\n )}\n\n {!disabled && (\n <PointChooser\n elementType={elementType}\n showDeleteButton={elementsSelected}\n onDeleteClick={deleteElements}\n onElementType={this.elementTypeSelected.bind(this)}\n onClearElements={this.clearAll.bind(this)}\n onUndoElement={this.undo.bind(this)}\n icons={getIcons()}\n language={language}\n />\n )}\n\n <Graph\n {...graphProps}\n elements={elements}\n onAddElement={addElement}\n onMoveElement={onMoveElement}\n onToggleElement={this.toggleElement.bind(this)}\n onDeselectElements={this.deselectElements.bind(this)}\n debug={false}\n />\n {title && <div className={classes.graphTitle} dangerouslySetInnerHTML={{ __html: title }} />}\n\n {showMaxPointsWarning && <Feedback type=\"info\" width={adjustedWidth} message={maxPointsMessage()} />}\n {feedback && !showCorrectAnswer && <Feedback {...feedback} width={adjustedWidth} />}\n </div>\n );\n }\n}\n\nexport default injectSheet(styles)(NumberLine);\n"],"file":"index.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pie-element/number-line",
3
- "version": "7.3.2-next.2+9c6d9ac6b",
3
+ "version": "7.3.2-next.6+ec516c899",
4
4
  "repository": "pie-framework/pie-elements",
5
5
  "description": "",
6
6
  "publishConfig": {
@@ -23,7 +23,7 @@
23
23
  },
24
24
  "author": "pie framework developers",
25
25
  "license": "ISC",
26
- "gitHead": "9c6d9ac6b0bcdff48335b0d8a5c1f15ebcf179a4",
26
+ "gitHead": "ec516c899d74c74ed68cd5fe6ef0bf46881a2c4f",
27
27
  "scripts": {
28
28
  "postpublish": "../../scripts/postpublish"
29
29
  },