@pie-element/number-line 9.6.7-next.8 → 9.6.8-next.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -0
- package/configure/CHANGELOG.md +14 -0
- package/configure/package.json +2 -2
- package/controller/CHANGELOG.md +15 -0
- package/controller/lib/index.js +2 -2
- package/controller/lib/index.js.map +1 -1
- package/controller/package.json +2 -2
- package/lib/number-line/index.js +2 -1
- package/lib/number-line/index.js.map +1 -1
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,22 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [9.6.7](https://github.com/pie-framework/pie-elements/compare/@pie-element/number-line@9.6.6...@pie-element/number-line@9.6.7) (2025-06-05)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* update pie-lib/pie-toolbox PD-4888, PD-3542, PD-4873, PD-4679 ([9c3bdef](https://github.com/pie-framework/pie-elements/commit/9c3bdef1b68f128ecc6338ef74f25fb74c482aa6))
|
|
12
|
+
* **math-inline, math-templated.number-line:** extend if fields also contai nmedia PD-3756 ([5340866](https://github.com/pie-framework/pie-elements/commit/53408664e7c25841253f47bfe36f836732fb4de7))
|
|
13
|
+
* add validation for audio content PD-4123 ([f0ce3f1](https://github.com/pie-framework/pie-elements/commit/f0ce3f19a12fd4cfe2d2159ca4af801d866dc8a9))
|
|
14
|
+
* update pie-lib pie-toolbox PD-3756 and revert changes for PD-4810 ([1e3030b](https://github.com/pie-framework/pie-elements/commit/1e3030bfdb13d0cce7b54ce0e9a109446c5ec2a2))
|
|
15
|
+
* update pie-lib-pie-toolbox PD-4810 ([6c81afc](https://github.com/pie-framework/pie-elements/commit/6c81afc6a8ad41e001bafb0bd1563164e9f32a10))
|
|
16
|
+
* update pie-lib-pie-toolbox PD-4810 ([0f9dd82](https://github.com/pie-framework/pie-elements/commit/0f9dd827c474e87770fd3bd146d870dd77d296df))
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
6
22
|
## [9.6.6](https://github.com/pie-framework/pie-elements/compare/@pie-element/number-line@9.6.5...@pie-element/number-line@9.6.6) (2025-05-22)
|
|
7
23
|
|
|
8
24
|
|
package/configure/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,20 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [8.5.7](https://github.com/pie-framework/pie-elements/compare/@pie-element/number-line-configure@8.5.6...@pie-element/number-line-configure@8.5.7) (2025-06-05)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* update pie-lib pie-toolbox PD-3756 and revert changes for PD-4810 ([1e3030b](https://github.com/pie-framework/pie-elements/commit/1e3030bfdb13d0cce7b54ce0e9a109446c5ec2a2))
|
|
12
|
+
* update pie-lib-pie-toolbox PD-4810 ([6c81afc](https://github.com/pie-framework/pie-elements/commit/6c81afc6a8ad41e001bafb0bd1563164e9f32a10))
|
|
13
|
+
* update pie-lib-pie-toolbox PD-4810 ([0f9dd82](https://github.com/pie-framework/pie-elements/commit/0f9dd827c474e87770fd3bd146d870dd77d296df))
|
|
14
|
+
* update pie-lib/pie-toolbox PD-4888, PD-3542, PD-4873, PD-4679 ([9c3bdef](https://github.com/pie-framework/pie-elements/commit/9c3bdef1b68f128ecc6338ef74f25fb74c482aa6))
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
6
20
|
## [8.5.6](https://github.com/pie-framework/pie-elements/compare/@pie-element/number-line-configure@8.5.5...@pie-element/number-line-configure@8.5.6) (2025-05-22)
|
|
7
21
|
|
|
8
22
|
|
package/configure/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-element/number-line-configure",
|
|
3
3
|
"private": true,
|
|
4
|
-
"version": "8.5.
|
|
4
|
+
"version": "8.5.7",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "src/index.js",
|
|
7
7
|
"dependencies": {
|
|
8
8
|
"@material-ui/core": "^3.9.2",
|
|
9
9
|
"@pie-framework/pie-configure-events": "^1.3.0",
|
|
10
|
-
"@pie-lib/pie-toolbox": "2.17.
|
|
10
|
+
"@pie-lib/pie-toolbox": "2.17.6",
|
|
11
11
|
"lodash": "^4.17.15",
|
|
12
12
|
"react": "^16.8.1",
|
|
13
13
|
"react-dom": "^16.8.1"
|
package/controller/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,21 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [6.2.7](https://github.com/pie-framework/pie-elements/compare/@pie-element/number-line-controller@6.2.6...@pie-element/number-line-controller@6.2.7) (2025-06-05)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* add validation for audio content PD-4123 ([f0ce3f1](https://github.com/pie-framework/pie-elements/commit/f0ce3f19a12fd4cfe2d2159ca4af801d866dc8a9))
|
|
12
|
+
* update pie-lib pie-toolbox PD-3756 and revert changes for PD-4810 ([1e3030b](https://github.com/pie-framework/pie-elements/commit/1e3030bfdb13d0cce7b54ce0e9a109446c5ec2a2))
|
|
13
|
+
* update pie-lib-pie-toolbox PD-4810 ([6c81afc](https://github.com/pie-framework/pie-elements/commit/6c81afc6a8ad41e001bafb0bd1563164e9f32a10))
|
|
14
|
+
* update pie-lib-pie-toolbox PD-4810 ([0f9dd82](https://github.com/pie-framework/pie-elements/commit/0f9dd827c474e87770fd3bd146d870dd77d296df))
|
|
15
|
+
* update pie-lib/pie-toolbox PD-4888, PD-3542, PD-4873, PD-4679 ([9c3bdef](https://github.com/pie-framework/pie-elements/commit/9c3bdef1b68f128ecc6338ef74f25fb74c482aa6))
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
6
21
|
## [6.2.6](https://github.com/pie-framework/pie-elements/compare/@pie-element/number-line-controller@6.2.5...@pie-element/number-line-controller@6.2.6) (2025-05-22)
|
|
7
22
|
|
|
8
23
|
|
package/controller/lib/index.js
CHANGED
|
@@ -403,11 +403,11 @@ exports.createCorrectResponseSession = createCorrectResponseSession;
|
|
|
403
403
|
|
|
404
404
|
var getInnerText = function getInnerText(html) {
|
|
405
405
|
return (html || '').replaceAll(/<[^>]*>/g, '');
|
|
406
|
-
}; // remove all html tags except img and
|
|
406
|
+
}; // remove all html tags except img, iframe and source tag for audio
|
|
407
407
|
|
|
408
408
|
|
|
409
409
|
var getContent = function getContent(html) {
|
|
410
|
-
return (html || '').replace(/(<(?!img|iframe)([^>]+)>)/gi, '');
|
|
410
|
+
return (html || '').replace(/(<(?!img|iframe|source)([^>]+)>)/gi, '');
|
|
411
411
|
};
|
|
412
412
|
|
|
413
413
|
var validate = function validate() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.js"],"names":["score","number","scaled","getPartialScore","corrected","ps","correct","rule","find","r","numberOfCorrect","length","scorePercentage","accumulateAnswer","correctResponse","total","answer","isCorrectResponse","some","cr","matches","outcome","model","session","env","Promise","resolve","empty","partialScoringEnabled","partialScoring","enabled","numCorrect","reduce","numIncorrect","getScore","question","getCorrected","correctness","getCorrectness","allowPartialScoring","filter","o","canDoPartialScoring","CLOSE_TO_PRECISION","closeTo","a","b","precision","expectedDiff","Math","pow","receivedDiff","abs","close","v","ov","incorrect","notInAnswer","noCorrectResponse","acc","index","match","push","splice","indexOf","normalize","feedback","defaults","createDefaultModel","out","graph","colorContrast","updateTicks","domain","labelStep","ticks","minor","major","min","Number","toFixed","max","fraction","tickIntervalType","step","math","evaluate","reject","Error","normalizedQuestion","normalizedModel","evaluateMode","mode","exhibitOnly","disabled","teacherInstructions","role","fb","undefined","then","feedbackMessage","prompt","type","message","accessibility","language","extraCSSRules","createCorrectResponseSession","id","getInnerText","html","replaceAll","getContent","replace","validate","config","maxMaxElements","numberLineDimensions","minWidth","maxWidth","width","maxNumberOfPoints","errors","forEach","field","required","widthError","MIN_DOMAIN","MAX_DOMAIN","domainError","maxError","pointsError","correctResponseError"],"mappings":"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","sourcesContent":["import cloneDeep from 'lodash/cloneDeep';\nimport find from 'lodash/find';\nimport isEmpty from 'lodash/isEmpty';\nimport isEqualWith from 'lodash/isEqualWith';\nimport merge from 'lodash/merge';\nimport omitBy from 'lodash/omitBy';\nimport { getFeedbackForCorrectness } from '@pie-lib/pie-toolbox/feedback';\nimport { partialScoring } from '@pie-lib/pie-toolbox/controller-utils';\nimport * as math from 'mathjs';\n\nimport defaults from './defaults';\nimport { reloadTicksData } from './utils';\n\nconst score = (number) => {\n return {\n score: {\n scaled: number,\n },\n };\n};\n\nconst getPartialScore = (corrected, ps) => {\n const { correct } = corrected;\n const rule = ps.find((r) => r.numberOfCorrect === correct.length);\n\n if (rule) {\n return 1.0 * (rule.scorePercentage / 100);\n } else {\n return 0;\n }\n};\n\nconst accumulateAnswer = (correctResponse) => (total, answer) => {\n const isCorrectResponse = correctResponse.some((cr) => matches(cr)(answer));\n return total + (isCorrectResponse ? 1 : 0);\n};\n\n/**\n */\nexport function outcome(model, session, env) {\n return new Promise((resolve) => {\n if (!session || isEmpty(session)) {\n resolve({ score: 0, empty: true });\n } else {\n const partialScoringEnabled = partialScoring.enabled(model, env);\n const numCorrect = (session.answer || []).reduce(accumulateAnswer(model.correctResponse), 0);\n\n let total = model.correctResponse.length;\n let numIncorrect = 0;\n\n if ((session.answer || []).length > total) {\n numIncorrect = (session.answer || []).length - total;\n }\n\n if (total === 0) {\n total = 1;\n }\n\n let score = numCorrect < 0 ? 0 : (numCorrect - numIncorrect) / total;\n\n if (score < 0) {\n score = 0;\n }\n\n resolve({ score: partialScoringEnabled ? score : score === 1 ? 1 : 0 });\n }\n });\n}\n\nexport function getScore(question, session) {\n return new Promise((resolve) => {\n if (!session || isEmpty(session)) {\n resolve({ score: { scaled: 0 } });\n } else {\n session.answer = session.answer || [];\n\n const corrected = getCorrected(session.answer, cloneDeep(question.correctResponse));\n\n const correctness = getCorrectness(corrected);\n\n if (correctness === 'correct') {\n resolve(score(1.0));\n } else if (correctness === 'incorrect') {\n resolve(score(0.0));\n } else if (correctness === 'partial') {\n const { allowPartialScoring, partialScoring } = question;\n const ps = (partialScoring || []).filter((o) => !isEmpty(o));\n const canDoPartialScoring = allowPartialScoring && ps.length > 0;\n if (canDoPartialScoring) {\n resolve(score(getPartialScore(corrected, ps)));\n } else {\n resolve(score(0.0));\n }\n } else {\n resolve({ score: { scaled: -1 } });\n }\n }\n });\n}\n\nexport const CLOSE_TO_PRECISION = 3;\n\nexport const closeTo = (a, b, precision) => {\n precision = precision || 5;\n const expectedDiff = Math.pow(10, -precision) / 2;\n const receivedDiff = Math.abs(a - b);\n const close = receivedDiff <= expectedDiff;\n return close;\n};\n\nconst matches = (a) => (v) => {\n return isEqualWith(a, v, (v, ov) => {\n if (typeof v === 'number' && typeof ov === 'number') {\n return closeTo(v, ov, CLOSE_TO_PRECISION);\n }\n });\n};\n\nexport const getCorrected = (answer, correctResponse) => {\n if (isEmpty(correctResponse) && answer.length > 0) {\n return {\n correct: [],\n incorrect: [],\n notInAnswer: [],\n noCorrectResponse: true,\n };\n }\n\n return answer.reduce(\n (acc, a, index) => {\n const { correct, incorrect, notInAnswer } = acc;\n\n const match = find(notInAnswer, matches(a));\n if (match) {\n correct.push(index);\n notInAnswer.splice(notInAnswer.indexOf(match), 1);\n } else {\n incorrect.push(index);\n }\n\n return {\n correct: correct,\n incorrect: incorrect,\n notInAnswer: notInAnswer,\n };\n },\n {\n correct: [],\n incorrect: [],\n notInAnswer: correctResponse,\n },\n );\n};\n\nexport const getCorrectness = (corrected) => {\n const { incorrect, correct, notInAnswer, noCorrectResponse } = corrected;\n\n if (noCorrectResponse) {\n return 'unknown';\n }\n\n if (incorrect.length === 0 && correct.length === 0) {\n return 'unanswered';\n }\n\n if (incorrect.length === 0 && notInAnswer.length === 0) {\n return 'correct';\n }\n\n if (incorrect.length > 0 || notInAnswer.length > 0) {\n if (correct.length > 0) {\n return 'partial';\n } else {\n return 'incorrect';\n }\n }\n\n return 'unknown';\n};\n\n/**\n * A sample of a normalize function see:\n * https://github.com/pie-framework/pie-elements/issues/21\n */\nexport function normalize(question) {\n const feedback = merge(defaults.feedback, question.feedback);\n\n return { ...defaults, ...question, feedback };\n}\n\nexport function createDefaultModel(model = {}) {\n return new Promise((resolve) => {\n const out = {\n ...model,\n graph: {\n ...defaults.graph,\n ...model.graph,\n },\n colorContrast: 'black_on_white',\n };\n\n resolve(omitBy(out, (v) => !v));\n });\n}\n\n// this function is duplicated in configure; at some point, use the same shared function\nconst updateTicks = (model) => {\n const { graph: { domain, labelStep, ticks = {} } = {} } = model;\n const { minor, major } = ticks;\n\n if (domain) {\n domain.min = Number((domain.min || 0).toFixed(2));\n domain.max = Number((domain.max || 0).toFixed(2));\n }\n\n if (labelStep && typeof labelStep === 'string' && labelStep.match(/^[1-9][0-9]*\\/[1-9][0-9]*$/g)) {\n model.graph.fraction = true;\n ticks.tickIntervalType = 'Fraction';\n\n // update the ticks frequency and label value to match the label step if needed\n const step = math.evaluate(labelStep);\n\n if (step !== major) {\n ticks.major = step;\n ticks.minor = step / (major / minor);\n }\n }\n\n return model;\n};\n\nexport function model(question, session, env) {\n if (!question) {\n return Promise.reject(new Error('question is null'));\n }\n\n return new Promise(async (resolve, reject) => {\n const normalizedQuestion = await normalize(question);\n const normalizedModel = updateTicks(normalizedQuestion);\n // this function is also called in configure, it is a duplicate to maintain consistency and correctness\n const graph = reloadTicksData(normalizedModel.graph);\n\n if (graph) {\n const evaluateMode = env.mode === 'evaluate';\n\n const correctResponse = cloneDeep(normalizedQuestion.correctResponse);\n const corrected = evaluateMode && getCorrected(session ? session.answer || [] : [], correctResponse);\n const correctness = evaluateMode && getCorrectness(corrected);\n\n const { exhibitOnly } = graph;\n const disabled = env.mode !== 'gather' || exhibitOnly === true;\n let teacherInstructions = null;\n\n if (env.role === 'instructor' && (env.mode === 'view' || evaluateMode)) {\n teacherInstructions = normalizedQuestion.teacherInstructions;\n }\n\n const fb = evaluateMode\n ? getFeedbackForCorrectness(correctness, normalizedQuestion.feedback)\n : Promise.resolve(undefined);\n\n fb.then((feedbackMessage) => {\n const out = {\n prompt: normalizedQuestion.prompt,\n teacherInstructions,\n graph,\n disabled,\n corrected,\n correctResponse:\n evaluateMode && ['unanswered', 'correct'].indexOf(correctness) === -1 && normalizedQuestion.correctResponse,\n feedback: feedbackMessage && {\n type: correctness,\n message: feedbackMessage,\n },\n colorContrast: (env.accessibility && env.accessibility.colorContrast) || 'black_on_white',\n language: normalizedQuestion.language,\n extraCSSRules: normalizedQuestion.extraCSSRules,\n };\n resolve(omitBy(out, (v) => !v));\n });\n } else {\n reject(new Error('graph is undefined'));\n }\n });\n}\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const { correctResponse: answer } = question;\n\n resolve({\n answer,\n id: '1',\n });\n } else {\n resolve(null);\n }\n });\n};\n\n// remove all html tags\nconst getInnerText = (html) => (html || '').replaceAll(/<[^>]*>/g, '');\n\n// remove all html tags except img and iframe\nconst getContent = (html) => (html || '').replace(/(<(?!img|iframe)([^>]+)>)/gi, '');\n\nexport const validate = (model = {}, config = {}) => {\n const { graph, correctResponse } = model || {};\n const { maxMaxElements = 20, numberLineDimensions: { min: minWidth = 200, max: maxWidth = 800 } = {} } = config || {};\n const { width, domain, maxNumberOfPoints } = graph || {};\n const { min, max } = domain || {};\n const errors = {};\n\n ['teacherInstructions', 'prompt'].forEach((field) => {\n if (config[field]?.required && !getContent(model[field])) {\n errors[field] = 'This field is required.';\n }\n });\n\n if (width < minWidth || width > maxWidth) {\n errors.widthError = `Width should be a value between ${minWidth} and ${maxWidth}.`;\n }\n\n const MIN_DOMAIN = -100000;\n const MAX_DOMAIN = 100000;\n\n if (min < MIN_DOMAIN || min > MAX_DOMAIN || max < MIN_DOMAIN || max > MAX_DOMAIN) {\n errors.domainError = `Min and max values must both be in the range [${MIN_DOMAIN}, ${MAX_DOMAIN}].`;\n }\n\n if (min >= max) {\n errors.maxError = 'Max value must be greater than min value.';\n }\n\n if (maxNumberOfPoints < 1 || maxNumberOfPoints > maxMaxElements) {\n errors.pointsError = `Max number of elements should be between 1 and ${maxMaxElements}.`;\n }\n\n if (correctResponse && correctResponse.length === 0) {\n errors.correctResponseError = 'The correct answer should include at least one number line object.';\n }\n\n return errors;\n};\n"],"file":"index.js"}
|
|
1
|
+
{"version":3,"sources":["../src/index.js"],"names":["score","number","scaled","getPartialScore","corrected","ps","correct","rule","find","r","numberOfCorrect","length","scorePercentage","accumulateAnswer","correctResponse","total","answer","isCorrectResponse","some","cr","matches","outcome","model","session","env","Promise","resolve","empty","partialScoringEnabled","partialScoring","enabled","numCorrect","reduce","numIncorrect","getScore","question","getCorrected","correctness","getCorrectness","allowPartialScoring","filter","o","canDoPartialScoring","CLOSE_TO_PRECISION","closeTo","a","b","precision","expectedDiff","Math","pow","receivedDiff","abs","close","v","ov","incorrect","notInAnswer","noCorrectResponse","acc","index","match","push","splice","indexOf","normalize","feedback","defaults","createDefaultModel","out","graph","colorContrast","updateTicks","domain","labelStep","ticks","minor","major","min","Number","toFixed","max","fraction","tickIntervalType","step","math","evaluate","reject","Error","normalizedQuestion","normalizedModel","evaluateMode","mode","exhibitOnly","disabled","teacherInstructions","role","fb","undefined","then","feedbackMessage","prompt","type","message","accessibility","language","extraCSSRules","createCorrectResponseSession","id","getInnerText","html","replaceAll","getContent","replace","validate","config","maxMaxElements","numberLineDimensions","minWidth","maxWidth","width","maxNumberOfPoints","errors","forEach","field","required","widthError","MIN_DOMAIN","MAX_DOMAIN","domainError","maxError","pointsError","correctResponseError"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AACA;;;;;;;;;;AAEA,IAAMA,KAAK,GAAG,SAARA,KAAQ,CAACC,MAAD,EAAY;AACxB,SAAO;AACLD,IAAAA,KAAK,EAAE;AACLE,MAAAA,MAAM,EAAED;AADH;AADF,GAAP;AAKD,CAND;;AAQA,IAAME,eAAe,GAAG,SAAlBA,eAAkB,CAACC,SAAD,EAAYC,EAAZ,EAAmB;AACzC,MAAQC,OAAR,GAAoBF,SAApB,CAAQE,OAAR;AACA,MAAMC,IAAI,GAAGF,EAAE,CAACG,IAAH,CAAQ,UAACC,CAAD;AAAA,WAAOA,CAAC,CAACC,eAAF,KAAsBJ,OAAO,CAACK,MAArC;AAAA,GAAR,CAAb;;AAEA,MAAIJ,IAAJ,EAAU;AACR,WAAO,OAAOA,IAAI,CAACK,eAAL,GAAuB,GAA9B,CAAP;AACD,GAFD,MAEO;AACL,WAAO,CAAP;AACD;AACF,CATD;;AAWA,IAAMC,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACC,eAAD;AAAA,SAAqB,UAACC,KAAD,EAAQC,MAAR,EAAmB;AAC/D,QAAMC,iBAAiB,GAAGH,eAAe,CAACI,IAAhB,CAAqB,UAACC,EAAD;AAAA,aAAQC,OAAO,CAACD,EAAD,CAAP,CAAYH,MAAZ,CAAR;AAAA,KAArB,CAA1B;AACA,WAAOD,KAAK,IAAIE,iBAAiB,GAAG,CAAH,GAAO,CAA5B,CAAZ;AACD,GAHwB;AAAA,CAAzB;AAKA;AACA;;;AACO,SAASI,OAAT,CAAiBC,KAAjB,EAAwBC,OAAxB,EAAiCC,GAAjC,EAAsC;AAC3C,SAAO,IAAIC,OAAJ,CAAY,UAACC,OAAD,EAAa;AAC9B,QAAI,CAACH,OAAD,IAAY,yBAAQA,OAAR,CAAhB,EAAkC;AAChCG,MAAAA,OAAO,CAAC;AAAE1B,QAAAA,KAAK,EAAE,CAAT;AAAY2B,QAAAA,KAAK,EAAE;AAAnB,OAAD,CAAP;AACD,KAFD,MAEO;AACL,UAAMC,qBAAqB,GAAGC,gCAAeC,OAAf,CAAuBR,KAAvB,EAA8BE,GAA9B,CAA9B;;AACA,UAAMO,UAAU,GAAG,CAACR,OAAO,CAACP,MAAR,IAAkB,EAAnB,EAAuBgB,MAAvB,CAA8BnB,gBAAgB,CAACS,KAAK,CAACR,eAAP,CAA9C,EAAuE,CAAvE,CAAnB;AAEA,UAAIC,KAAK,GAAGO,KAAK,CAACR,eAAN,CAAsBH,MAAlC;AACA,UAAIsB,YAAY,GAAG,CAAnB;;AAEA,UAAI,CAACV,OAAO,CAACP,MAAR,IAAkB,EAAnB,EAAuBL,MAAvB,GAAgCI,KAApC,EAA2C;AACzCkB,QAAAA,YAAY,GAAG,CAACV,OAAO,CAACP,MAAR,IAAkB,EAAnB,EAAuBL,MAAvB,GAAgCI,KAA/C;AACD;;AAED,UAAIA,KAAK,KAAK,CAAd,EAAiB;AACfA,QAAAA,KAAK,GAAG,CAAR;AACD;;AAED,UAAIf,MAAK,GAAG+B,UAAU,GAAG,CAAb,GAAiB,CAAjB,GAAqB,CAACA,UAAU,GAAGE,YAAd,IAA8BlB,KAA/D;;AAEA,UAAIf,MAAK,GAAG,CAAZ,EAAe;AACbA,QAAAA,MAAK,GAAG,CAAR;AACD;;AAED0B,MAAAA,OAAO,CAAC;AAAE1B,QAAAA,KAAK,EAAE4B,qBAAqB,GAAG5B,MAAH,GAAWA,MAAK,KAAK,CAAV,GAAc,CAAd,GAAkB;AAA3D,OAAD,CAAP;AACD;AACF,GA1BM,CAAP;AA2BD;;AAEM,SAASkC,QAAT,CAAkBC,QAAlB,EAA4BZ,OAA5B,EAAqC;AAC1C,SAAO,IAAIE,OAAJ,CAAY,UAACC,OAAD,EAAa;AAC9B,QAAI,CAACH,OAAD,IAAY,yBAAQA,OAAR,CAAhB,EAAkC;AAChCG,MAAAA,OAAO,CAAC;AAAE1B,QAAAA,KAAK,EAAE;AAAEE,UAAAA,MAAM,EAAE;AAAV;AAAT,OAAD,CAAP;AACD,KAFD,MAEO;AACLqB,MAAAA,OAAO,CAACP,MAAR,GAAiBO,OAAO,CAACP,MAAR,IAAkB,EAAnC;AAEA,UAAMZ,SAAS,GAAGgC,YAAY,CAACb,OAAO,CAACP,MAAT,EAAiB,2BAAUmB,QAAQ,CAACrB,eAAnB,CAAjB,CAA9B;AAEA,UAAMuB,WAAW,GAAGC,cAAc,CAAClC,SAAD,CAAlC;;AAEA,UAAIiC,WAAW,KAAK,SAApB,EAA+B;AAC7BX,QAAAA,OAAO,CAAC1B,KAAK,CAAC,GAAD,CAAN,CAAP;AACD,OAFD,MAEO,IAAIqC,WAAW,KAAK,WAApB,EAAiC;AACtCX,QAAAA,OAAO,CAAC1B,KAAK,CAAC,GAAD,CAAN,CAAP;AACD,OAFM,MAEA,IAAIqC,WAAW,KAAK,SAApB,EAA+B;AACpC,YAAQE,mBAAR,GAAgDJ,QAAhD,CAAQI,mBAAR;AAAA,YAA6BV,eAA7B,GAAgDM,QAAhD,CAA6BN,cAA7B;;AACA,YAAMxB,EAAE,GAAG,CAACwB,eAAc,IAAI,EAAnB,EAAuBW,MAAvB,CAA8B,UAACC,CAAD;AAAA,iBAAO,CAAC,yBAAQA,CAAR,CAAR;AAAA,SAA9B,CAAX;;AACA,YAAMC,mBAAmB,GAAGH,mBAAmB,IAAIlC,EAAE,CAACM,MAAH,GAAY,CAA/D;;AACA,YAAI+B,mBAAJ,EAAyB;AACvBhB,UAAAA,OAAO,CAAC1B,KAAK,CAACG,eAAe,CAACC,SAAD,EAAYC,EAAZ,CAAhB,CAAN,CAAP;AACD,SAFD,MAEO;AACLqB,UAAAA,OAAO,CAAC1B,KAAK,CAAC,GAAD,CAAN,CAAP;AACD;AACF,OATM,MASA;AACL0B,QAAAA,OAAO,CAAC;AAAE1B,UAAAA,KAAK,EAAE;AAAEE,YAAAA,MAAM,EAAE,CAAC;AAAX;AAAT,SAAD,CAAP;AACD;AACF;AACF,GA3BM,CAAP;AA4BD;;AAEM,IAAMyC,kBAAkB,GAAG,CAA3B;;;AAEA,IAAMC,OAAO,GAAG,SAAVA,OAAU,CAACC,CAAD,EAAIC,CAAJ,EAAOC,SAAP,EAAqB;AAC1CA,EAAAA,SAAS,GAAGA,SAAS,IAAI,CAAzB;AACA,MAAMC,YAAY,GAAGC,IAAI,CAACC,GAAL,CAAS,EAAT,EAAa,CAACH,SAAd,IAA2B,CAAhD;AACA,MAAMI,YAAY,GAAGF,IAAI,CAACG,GAAL,CAASP,CAAC,GAAGC,CAAb,CAArB;AACA,MAAMO,KAAK,GAAGF,YAAY,IAAIH,YAA9B;AACA,SAAOK,KAAP;AACD,CANM;;;;AAQP,IAAMjC,OAAO,GAAG,SAAVA,OAAU,CAACyB,CAAD;AAAA,SAAO,UAACS,CAAD,EAAO;AAC5B,WAAO,6BAAYT,CAAZ,EAAeS,CAAf,EAAkB,UAACA,CAAD,EAAIC,EAAJ,EAAW;AAClC,UAAI,OAAOD,CAAP,KAAa,QAAb,IAAyB,OAAOC,EAAP,KAAc,QAA3C,EAAqD;AACnD,eAAOX,OAAO,CAACU,CAAD,EAAIC,EAAJ,EAAQZ,kBAAR,CAAd;AACD;AACF,KAJM,CAAP;AAKD,GANe;AAAA,CAAhB;;AAQO,IAAMP,YAAY,GAAG,SAAfA,YAAe,CAACpB,MAAD,EAASF,eAAT,EAA6B;AACvD,MAAI,yBAAQA,eAAR,KAA4BE,MAAM,CAACL,MAAP,GAAgB,CAAhD,EAAmD;AACjD,WAAO;AACLL,MAAAA,OAAO,EAAE,EADJ;AAELkD,MAAAA,SAAS,EAAE,EAFN;AAGLC,MAAAA,WAAW,EAAE,EAHR;AAILC,MAAAA,iBAAiB,EAAE;AAJd,KAAP;AAMD;;AAED,SAAO1C,MAAM,CAACgB,MAAP,CACL,UAAC2B,GAAD,EAAMd,CAAN,EAASe,KAAT,EAAmB;AACjB,QAAQtD,OAAR,GAA4CqD,GAA5C,CAAQrD,OAAR;AAAA,QAAiBkD,SAAjB,GAA4CG,GAA5C,CAAiBH,SAAjB;AAAA,QAA4BC,WAA5B,GAA4CE,GAA5C,CAA4BF,WAA5B;AAEA,QAAMI,KAAK,GAAG,sBAAKJ,WAAL,EAAkBrC,OAAO,CAACyB,CAAD,CAAzB,CAAd;;AACA,QAAIgB,KAAJ,EAAW;AACTvD,MAAAA,OAAO,CAACwD,IAAR,CAAaF,KAAb;AACAH,MAAAA,WAAW,CAACM,MAAZ,CAAmBN,WAAW,CAACO,OAAZ,CAAoBH,KAApB,CAAnB,EAA+C,CAA/C;AACD,KAHD,MAGO;AACLL,MAAAA,SAAS,CAACM,IAAV,CAAeF,KAAf;AACD;;AAED,WAAO;AACLtD,MAAAA,OAAO,EAAEA,OADJ;AAELkD,MAAAA,SAAS,EAAEA,SAFN;AAGLC,MAAAA,WAAW,EAAEA;AAHR,KAAP;AAKD,GAjBI,EAkBL;AACEnD,IAAAA,OAAO,EAAE,EADX;AAEEkD,IAAAA,SAAS,EAAE,EAFb;AAGEC,IAAAA,WAAW,EAAE3C;AAHf,GAlBK,CAAP;AAwBD,CAlCM;;;;AAoCA,IAAMwB,cAAc,GAAG,SAAjBA,cAAiB,CAAClC,SAAD,EAAe;AAC3C,MAAQoD,SAAR,GAA+DpD,SAA/D,CAAQoD,SAAR;AAAA,MAAmBlD,OAAnB,GAA+DF,SAA/D,CAAmBE,OAAnB;AAAA,MAA4BmD,WAA5B,GAA+DrD,SAA/D,CAA4BqD,WAA5B;AAAA,MAAyCC,iBAAzC,GAA+DtD,SAA/D,CAAyCsD,iBAAzC;;AAEA,MAAIA,iBAAJ,EAAuB;AACrB,WAAO,SAAP;AACD;;AAED,MAAIF,SAAS,CAAC7C,MAAV,KAAqB,CAArB,IAA0BL,OAAO,CAACK,MAAR,KAAmB,CAAjD,EAAoD;AAClD,WAAO,YAAP;AACD;;AAED,MAAI6C,SAAS,CAAC7C,MAAV,KAAqB,CAArB,IAA0B8C,WAAW,CAAC9C,MAAZ,KAAuB,CAArD,EAAwD;AACtD,WAAO,SAAP;AACD;;AAED,MAAI6C,SAAS,CAAC7C,MAAV,GAAmB,CAAnB,IAAwB8C,WAAW,CAAC9C,MAAZ,GAAqB,CAAjD,EAAoD;AAClD,QAAIL,OAAO,CAACK,MAAR,GAAiB,CAArB,EAAwB;AACtB,aAAO,SAAP;AACD,KAFD,MAEO;AACL,aAAO,WAAP;AACD;AACF;;AAED,SAAO,SAAP;AACD,CAxBM;AA0BP;AACA;AACA;AACA;;;;;AACO,SAASsD,SAAT,CAAmB9B,QAAnB,EAA6B;AAClC,MAAM+B,QAAQ,GAAG,uBAAMC,qBAASD,QAAf,EAAyB/B,QAAQ,CAAC+B,QAAlC,CAAjB;AAEA,uDAAYC,oBAAZ,GAAyBhC,QAAzB;AAAmC+B,IAAAA,QAAQ,EAARA;AAAnC;AACD;;AAEM,SAASE,kBAAT,GAAwC;AAAA,MAAZ9C,KAAY,uEAAJ,EAAI;AAC7C,SAAO,IAAIG,OAAJ,CAAY,UAACC,OAAD,EAAa;AAC9B,QAAM2C,GAAG,mCACJ/C,KADI;AAEPgD,MAAAA,KAAK,kCACAH,qBAASG,KADT,GAEAhD,KAAK,CAACgD,KAFN,CAFE;AAMPC,MAAAA,aAAa,EAAE;AANR,MAAT;;AASA7C,IAAAA,OAAO,CAAC,wBAAO2C,GAAP,EAAY,UAACf,CAAD;AAAA,aAAO,CAACA,CAAR;AAAA,KAAZ,CAAD,CAAP;AACD,GAXM,CAAP;AAYD,C,CAED;;;AACA,IAAMkB,WAAW,GAAG,SAAdA,WAAc,CAAClD,KAAD,EAAW;AAC7B,qBAA0DA,KAA1D,CAAQgD,KAAR;AAAA,2CAAmD,EAAnD;AAAA,MAAiBG,MAAjB,gBAAiBA,MAAjB;AAAA,MAAyBC,SAAzB,gBAAyBA,SAAzB;AAAA,wCAAoCC,KAApC;AAAA,MAAoCA,KAApC,mCAA4C,EAA5C;AACA,MAAQC,KAAR,GAAyBD,KAAzB,CAAQC,KAAR;AAAA,MAAeC,KAAf,GAAyBF,KAAzB,CAAeE,KAAf;;AAEA,MAAIJ,MAAJ,EAAY;AACVA,IAAAA,MAAM,CAACK,GAAP,GAAaC,MAAM,CAAC,CAACN,MAAM,CAACK,GAAP,IAAc,CAAf,EAAkBE,OAAlB,CAA0B,CAA1B,CAAD,CAAnB;AACAP,IAAAA,MAAM,CAACQ,GAAP,GAAaF,MAAM,CAAC,CAACN,MAAM,CAACQ,GAAP,IAAc,CAAf,EAAkBD,OAAlB,CAA0B,CAA1B,CAAD,CAAnB;AACD;;AAED,MAAIN,SAAS,IAAI,OAAOA,SAAP,KAAqB,QAAlC,IAA8CA,SAAS,CAACb,KAAV,CAAgB,6BAAhB,CAAlD,EAAkG;AAChGvC,IAAAA,KAAK,CAACgD,KAAN,CAAYY,QAAZ,GAAuB,IAAvB;AACAP,IAAAA,KAAK,CAACQ,gBAAN,GAAyB,UAAzB,CAFgG,CAIhG;;AACA,QAAMC,IAAI,GAAGC,IAAI,CAACC,QAAL,CAAcZ,SAAd,CAAb;;AAEA,QAAIU,IAAI,KAAKP,KAAb,EAAoB;AAClBF,MAAAA,KAAK,CAACE,KAAN,GAAcO,IAAd;AACAT,MAAAA,KAAK,CAACC,KAAN,GAAcQ,IAAI,IAAIP,KAAK,GAAGD,KAAZ,CAAlB;AACD;AACF;;AAED,SAAOtD,KAAP;AACD,CAvBD;;AAyBO,SAASA,KAAT,CAAea,QAAf,EAAyBZ,OAAzB,EAAkCC,GAAlC,EAAuC;AAC5C,MAAI,CAACW,QAAL,EAAe;AACb,WAAOV,OAAO,CAAC8D,MAAR,CAAe,IAAIC,KAAJ,CAAU,kBAAV,CAAf,CAAP;AACD;;AAED,SAAO,IAAI/D,OAAJ;AAAA,6FAAY,iBAAOC,OAAP,EAAgB6D,MAAhB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBACgBtB,SAAS,CAAC9B,QAAD,CADzB;;AAAA;AACXsD,cAAAA,kBADW;AAEXC,cAAAA,eAFW,GAEOlB,WAAW,CAACiB,kBAAD,CAFlB,EAGjB;;AACMnB,cAAAA,KAJW,GAIH,4BAAgBoB,eAAe,CAACpB,KAAhC,CAJG;;AAMjB,kBAAIA,KAAJ,EAAW;AACHqB,gBAAAA,YADG,GACYnE,GAAG,CAACoE,IAAJ,KAAa,UADzB;AAGH9E,gBAAAA,eAHG,GAGe,2BAAU2E,kBAAkB,CAAC3E,eAA7B,CAHf;AAIHV,gBAAAA,SAJG,GAISuF,YAAY,IAAIvD,YAAY,CAACb,OAAO,GAAGA,OAAO,CAACP,MAAR,IAAkB,EAArB,GAA0B,EAAlC,EAAsCF,eAAtC,CAJrC;AAKHuB,gBAAAA,WALG,GAKWsD,YAAY,IAAIrD,cAAc,CAAClC,SAAD,CALzC;AAODyF,gBAAAA,WAPC,GAOevB,KAPf,CAODuB,WAPC;AAQHC,gBAAAA,QARG,GAQQtE,GAAG,CAACoE,IAAJ,KAAa,QAAb,IAAyBC,WAAW,KAAK,IARjD;AASLE,gBAAAA,mBATK,GASiB,IATjB;;AAWT,oBAAIvE,GAAG,CAACwE,IAAJ,KAAa,YAAb,KAA8BxE,GAAG,CAACoE,IAAJ,KAAa,MAAb,IAAuBD,YAArD,CAAJ,EAAwE;AACtEI,kBAAAA,mBAAmB,GAAGN,kBAAkB,CAACM,mBAAzC;AACD;;AAEKE,gBAAAA,EAfG,GAeEN,YAAY,GACnB,yCAA0BtD,WAA1B,EAAuCoD,kBAAkB,CAACvB,QAA1D,CADmB,GAEnBzC,OAAO,CAACC,OAAR,CAAgBwE,SAAhB,CAjBK;AAmBTD,gBAAAA,EAAE,CAACE,IAAH,CAAQ,UAACC,eAAD,EAAqB;AAC3B,sBAAM/B,GAAG,GAAG;AACVgC,oBAAAA,MAAM,EAAEZ,kBAAkB,CAACY,MADjB;AAEVN,oBAAAA,mBAAmB,EAAnBA,mBAFU;AAGVzB,oBAAAA,KAAK,EAALA,KAHU;AAIVwB,oBAAAA,QAAQ,EAARA,QAJU;AAKV1F,oBAAAA,SAAS,EAATA,SALU;AAMVU,oBAAAA,eAAe,EACb6E,YAAY,IAAI,CAAC,YAAD,EAAe,SAAf,EAA0B3B,OAA1B,CAAkC3B,WAAlC,MAAmD,CAAC,CAApE,IAAyEoD,kBAAkB,CAAC3E,eAPpF;AAQVoD,oBAAAA,QAAQ,EAAEkC,eAAe,IAAI;AAC3BE,sBAAAA,IAAI,EAAEjE,WADqB;AAE3BkE,sBAAAA,OAAO,EAAEH;AAFkB,qBARnB;AAYV7B,oBAAAA,aAAa,EAAG/C,GAAG,CAACgF,aAAJ,IAAqBhF,GAAG,CAACgF,aAAJ,CAAkBjC,aAAxC,IAA0D,gBAZ/D;AAaVkC,oBAAAA,QAAQ,EAAEhB,kBAAkB,CAACgB,QAbnB;AAcVC,oBAAAA,aAAa,EAAEjB,kBAAkB,CAACiB;AAdxB,mBAAZ;AAgBAhF,kBAAAA,OAAO,CAAC,wBAAO2C,GAAP,EAAY,UAACf,CAAD;AAAA,2BAAO,CAACA,CAAR;AAAA,mBAAZ,CAAD,CAAP;AACD,iBAlBD;AAmBD,eAtCD,MAsCO;AACLiC,gBAAAA,MAAM,CAAC,IAAIC,KAAJ,CAAU,oBAAV,CAAD,CAAN;AACD;;AA9CgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAZ;;AAAA;AAAA;AAAA;AAAA,MAAP;AAgDD;;AAEM,IAAMmB,4BAA4B,GAAG,SAA/BA,4BAA+B,CAACxE,QAAD,EAAWX,GAAX,EAAmB;AAC7D,SAAO,IAAIC,OAAJ,CAAY,UAACC,OAAD,EAAa;AAC9B,QAAIF,GAAG,CAACoE,IAAJ,KAAa,UAAb,IAA2BpE,GAAG,CAACwE,IAAJ,KAAa,YAA5C,EAA0D;AACxD,UAAyBhF,MAAzB,GAAoCmB,QAApC,CAAQrB,eAAR;AAEAY,MAAAA,OAAO,CAAC;AACNV,QAAAA,MAAM,EAANA,MADM;AAEN4F,QAAAA,EAAE,EAAE;AAFE,OAAD,CAAP;AAID,KAPD,MAOO;AACLlF,MAAAA,OAAO,CAAC,IAAD,CAAP;AACD;AACF,GAXM,CAAP;AAYD,CAbM,C,CAeP;;;;;AACA,IAAMmF,YAAY,GAAG,SAAfA,YAAe,CAACC,IAAD;AAAA,SAAU,CAACA,IAAI,IAAI,EAAT,EAAaC,UAAb,CAAwB,UAAxB,EAAoC,EAApC,CAAV;AAAA,CAArB,C,CAEA;;;AACA,IAAMC,UAAU,GAAG,SAAbA,UAAa,CAACF,IAAD;AAAA,SAAU,CAACA,IAAI,IAAI,EAAT,EAAaG,OAAb,CAAqB,oCAArB,EAA2D,EAA3D,CAAV;AAAA,CAAnB;;AAEO,IAAMC,QAAQ,GAAG,SAAXA,QAAW,GAA6B;AAAA,MAA5B5F,KAA4B,uEAApB,EAAoB;AAAA,MAAhB6F,MAAgB,uEAAP,EAAO;;AACnD,cAAmC7F,KAAK,IAAI,EAA5C;AAAA,MAAQgD,KAAR,SAAQA,KAAR;AAAA,MAAexD,eAAf,SAAeA,eAAf;;AACA,cAAyGqG,MAAM,IAAI,EAAnH;AAAA,mCAAQC,cAAR;AAAA,MAAQA,cAAR,qCAAyB,EAAzB;AAAA,oCAA6BC,oBAA7B;;AAAA,6DAAkG,EAAlG;AAAA,qDAAqDvC,GAArD;AAAA,MAA0DwC,QAA1D,uCAAqE,GAArE;AAAA,qDAA0ErC,GAA1E;AAAA,MAA+EsC,QAA/E,uCAA0F,GAA1F;;AACA,cAA6CjD,KAAK,IAAI,EAAtD;AAAA,MAAQkD,KAAR,SAAQA,KAAR;AAAA,MAAe/C,MAAf,SAAeA,MAAf;AAAA,MAAuBgD,iBAAvB,SAAuBA,iBAAvB;;AACA,cAAqBhD,MAAM,IAAI,EAA/B;AAAA,MAAQK,GAAR,SAAQA,GAAR;AAAA,MAAaG,GAAb,SAAaA,GAAb;;AACA,MAAMyC,MAAM,GAAG,EAAf;AAEA,GAAC,qBAAD,EAAwB,QAAxB,EAAkCC,OAAlC,CAA0C,UAACC,KAAD,EAAW;AAAA;;AACnD,QAAI,iBAAAT,MAAM,CAACS,KAAD,CAAN,wDAAeC,QAAf,IAA2B,CAACb,UAAU,CAAC1F,KAAK,CAACsG,KAAD,CAAN,CAA1C,EAA0D;AACxDF,MAAAA,MAAM,CAACE,KAAD,CAAN,GAAgB,yBAAhB;AACD;AACF,GAJD;;AAMA,MAAIJ,KAAK,GAAGF,QAAR,IAAoBE,KAAK,GAAGD,QAAhC,EAA0C;AACxCG,IAAAA,MAAM,CAACI,UAAP,6CAAuDR,QAAvD,kBAAuEC,QAAvE;AACD;;AAED,MAAMQ,UAAU,GAAG,CAAC,MAApB;AACA,MAAMC,UAAU,GAAG,MAAnB;;AAEA,MAAIlD,GAAG,GAAGiD,UAAN,IAAoBjD,GAAG,GAAGkD,UAA1B,IAAwC/C,GAAG,GAAG8C,UAA9C,IAA4D9C,GAAG,GAAG+C,UAAtE,EAAkF;AAChFN,IAAAA,MAAM,CAACO,WAAP,2DAAsEF,UAAtE,eAAqFC,UAArF;AACD;;AAED,MAAIlD,GAAG,IAAIG,GAAX,EAAgB;AACdyC,IAAAA,MAAM,CAACQ,QAAP,GAAkB,2CAAlB;AACD;;AAED,MAAIT,iBAAiB,GAAG,CAApB,IAAyBA,iBAAiB,GAAGL,cAAjD,EAAiE;AAC/DM,IAAAA,MAAM,CAACS,WAAP,4DAAuEf,cAAvE;AACD;;AAED,MAAItG,eAAe,IAAIA,eAAe,CAACH,MAAhB,KAA2B,CAAlD,EAAqD;AACnD+G,IAAAA,MAAM,CAACU,oBAAP,GAA8B,oEAA9B;AACD;;AAED,SAAOV,MAAP;AACD,CArCM","sourcesContent":["import cloneDeep from 'lodash/cloneDeep';\nimport find from 'lodash/find';\nimport isEmpty from 'lodash/isEmpty';\nimport isEqualWith from 'lodash/isEqualWith';\nimport merge from 'lodash/merge';\nimport omitBy from 'lodash/omitBy';\nimport { getFeedbackForCorrectness } from '@pie-lib/pie-toolbox/feedback';\nimport { partialScoring } from '@pie-lib/pie-toolbox/controller-utils';\nimport * as math from 'mathjs';\n\nimport defaults from './defaults';\nimport { reloadTicksData } from './utils';\n\nconst score = (number) => {\n return {\n score: {\n scaled: number,\n },\n };\n};\n\nconst getPartialScore = (corrected, ps) => {\n const { correct } = corrected;\n const rule = ps.find((r) => r.numberOfCorrect === correct.length);\n\n if (rule) {\n return 1.0 * (rule.scorePercentage / 100);\n } else {\n return 0;\n }\n};\n\nconst accumulateAnswer = (correctResponse) => (total, answer) => {\n const isCorrectResponse = correctResponse.some((cr) => matches(cr)(answer));\n return total + (isCorrectResponse ? 1 : 0);\n};\n\n/**\n */\nexport function outcome(model, session, env) {\n return new Promise((resolve) => {\n if (!session || isEmpty(session)) {\n resolve({ score: 0, empty: true });\n } else {\n const partialScoringEnabled = partialScoring.enabled(model, env);\n const numCorrect = (session.answer || []).reduce(accumulateAnswer(model.correctResponse), 0);\n\n let total = model.correctResponse.length;\n let numIncorrect = 0;\n\n if ((session.answer || []).length > total) {\n numIncorrect = (session.answer || []).length - total;\n }\n\n if (total === 0) {\n total = 1;\n }\n\n let score = numCorrect < 0 ? 0 : (numCorrect - numIncorrect) / total;\n\n if (score < 0) {\n score = 0;\n }\n\n resolve({ score: partialScoringEnabled ? score : score === 1 ? 1 : 0 });\n }\n });\n}\n\nexport function getScore(question, session) {\n return new Promise((resolve) => {\n if (!session || isEmpty(session)) {\n resolve({ score: { scaled: 0 } });\n } else {\n session.answer = session.answer || [];\n\n const corrected = getCorrected(session.answer, cloneDeep(question.correctResponse));\n\n const correctness = getCorrectness(corrected);\n\n if (correctness === 'correct') {\n resolve(score(1.0));\n } else if (correctness === 'incorrect') {\n resolve(score(0.0));\n } else if (correctness === 'partial') {\n const { allowPartialScoring, partialScoring } = question;\n const ps = (partialScoring || []).filter((o) => !isEmpty(o));\n const canDoPartialScoring = allowPartialScoring && ps.length > 0;\n if (canDoPartialScoring) {\n resolve(score(getPartialScore(corrected, ps)));\n } else {\n resolve(score(0.0));\n }\n } else {\n resolve({ score: { scaled: -1 } });\n }\n }\n });\n}\n\nexport const CLOSE_TO_PRECISION = 3;\n\nexport const closeTo = (a, b, precision) => {\n precision = precision || 5;\n const expectedDiff = Math.pow(10, -precision) / 2;\n const receivedDiff = Math.abs(a - b);\n const close = receivedDiff <= expectedDiff;\n return close;\n};\n\nconst matches = (a) => (v) => {\n return isEqualWith(a, v, (v, ov) => {\n if (typeof v === 'number' && typeof ov === 'number') {\n return closeTo(v, ov, CLOSE_TO_PRECISION);\n }\n });\n};\n\nexport const getCorrected = (answer, correctResponse) => {\n if (isEmpty(correctResponse) && answer.length > 0) {\n return {\n correct: [],\n incorrect: [],\n notInAnswer: [],\n noCorrectResponse: true,\n };\n }\n\n return answer.reduce(\n (acc, a, index) => {\n const { correct, incorrect, notInAnswer } = acc;\n\n const match = find(notInAnswer, matches(a));\n if (match) {\n correct.push(index);\n notInAnswer.splice(notInAnswer.indexOf(match), 1);\n } else {\n incorrect.push(index);\n }\n\n return {\n correct: correct,\n incorrect: incorrect,\n notInAnswer: notInAnswer,\n };\n },\n {\n correct: [],\n incorrect: [],\n notInAnswer: correctResponse,\n },\n );\n};\n\nexport const getCorrectness = (corrected) => {\n const { incorrect, correct, notInAnswer, noCorrectResponse } = corrected;\n\n if (noCorrectResponse) {\n return 'unknown';\n }\n\n if (incorrect.length === 0 && correct.length === 0) {\n return 'unanswered';\n }\n\n if (incorrect.length === 0 && notInAnswer.length === 0) {\n return 'correct';\n }\n\n if (incorrect.length > 0 || notInAnswer.length > 0) {\n if (correct.length > 0) {\n return 'partial';\n } else {\n return 'incorrect';\n }\n }\n\n return 'unknown';\n};\n\n/**\n * A sample of a normalize function see:\n * https://github.com/pie-framework/pie-elements/issues/21\n */\nexport function normalize(question) {\n const feedback = merge(defaults.feedback, question.feedback);\n\n return { ...defaults, ...question, feedback };\n}\n\nexport function createDefaultModel(model = {}) {\n return new Promise((resolve) => {\n const out = {\n ...model,\n graph: {\n ...defaults.graph,\n ...model.graph,\n },\n colorContrast: 'black_on_white',\n };\n\n resolve(omitBy(out, (v) => !v));\n });\n}\n\n// this function is duplicated in configure; at some point, use the same shared function\nconst updateTicks = (model) => {\n const { graph: { domain, labelStep, ticks = {} } = {} } = model;\n const { minor, major } = ticks;\n\n if (domain) {\n domain.min = Number((domain.min || 0).toFixed(2));\n domain.max = Number((domain.max || 0).toFixed(2));\n }\n\n if (labelStep && typeof labelStep === 'string' && labelStep.match(/^[1-9][0-9]*\\/[1-9][0-9]*$/g)) {\n model.graph.fraction = true;\n ticks.tickIntervalType = 'Fraction';\n\n // update the ticks frequency and label value to match the label step if needed\n const step = math.evaluate(labelStep);\n\n if (step !== major) {\n ticks.major = step;\n ticks.minor = step / (major / minor);\n }\n }\n\n return model;\n};\n\nexport function model(question, session, env) {\n if (!question) {\n return Promise.reject(new Error('question is null'));\n }\n\n return new Promise(async (resolve, reject) => {\n const normalizedQuestion = await normalize(question);\n const normalizedModel = updateTicks(normalizedQuestion);\n // this function is also called in configure, it is a duplicate to maintain consistency and correctness\n const graph = reloadTicksData(normalizedModel.graph);\n\n if (graph) {\n const evaluateMode = env.mode === 'evaluate';\n\n const correctResponse = cloneDeep(normalizedQuestion.correctResponse);\n const corrected = evaluateMode && getCorrected(session ? session.answer || [] : [], correctResponse);\n const correctness = evaluateMode && getCorrectness(corrected);\n\n const { exhibitOnly } = graph;\n const disabled = env.mode !== 'gather' || exhibitOnly === true;\n let teacherInstructions = null;\n\n if (env.role === 'instructor' && (env.mode === 'view' || evaluateMode)) {\n teacherInstructions = normalizedQuestion.teacherInstructions;\n }\n\n const fb = evaluateMode\n ? getFeedbackForCorrectness(correctness, normalizedQuestion.feedback)\n : Promise.resolve(undefined);\n\n fb.then((feedbackMessage) => {\n const out = {\n prompt: normalizedQuestion.prompt,\n teacherInstructions,\n graph,\n disabled,\n corrected,\n correctResponse:\n evaluateMode && ['unanswered', 'correct'].indexOf(correctness) === -1 && normalizedQuestion.correctResponse,\n feedback: feedbackMessage && {\n type: correctness,\n message: feedbackMessage,\n },\n colorContrast: (env.accessibility && env.accessibility.colorContrast) || 'black_on_white',\n language: normalizedQuestion.language,\n extraCSSRules: normalizedQuestion.extraCSSRules,\n };\n resolve(omitBy(out, (v) => !v));\n });\n } else {\n reject(new Error('graph is undefined'));\n }\n });\n}\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const { correctResponse: answer } = question;\n\n resolve({\n answer,\n id: '1',\n });\n } else {\n resolve(null);\n }\n });\n};\n\n// remove all html tags\nconst getInnerText = (html) => (html || '').replaceAll(/<[^>]*>/g, '');\n\n// remove all html tags except img, iframe and source tag for audio\nconst getContent = (html) => (html || '').replace(/(<(?!img|iframe|source)([^>]+)>)/gi, '');\n\nexport const validate = (model = {}, config = {}) => {\n const { graph, correctResponse } = model || {};\n const { maxMaxElements = 20, numberLineDimensions: { min: minWidth = 200, max: maxWidth = 800 } = {} } = config || {};\n const { width, domain, maxNumberOfPoints } = graph || {};\n const { min, max } = domain || {};\n const errors = {};\n\n ['teacherInstructions', 'prompt'].forEach((field) => {\n if (config[field]?.required && !getContent(model[field])) {\n errors[field] = 'This field is required.';\n }\n });\n\n if (width < minWidth || width > maxWidth) {\n errors.widthError = `Width should be a value between ${minWidth} and ${maxWidth}.`;\n }\n\n const MIN_DOMAIN = -100000;\n const MAX_DOMAIN = 100000;\n\n if (min < MIN_DOMAIN || min > MAX_DOMAIN || max < MIN_DOMAIN || max > MAX_DOMAIN) {\n errors.domainError = `Min and max values must both be in the range [${MIN_DOMAIN}, ${MAX_DOMAIN}].`;\n }\n\n if (min >= max) {\n errors.maxError = 'Max value must be greater than min value.';\n }\n\n if (maxNumberOfPoints < 1 || maxNumberOfPoints > maxMaxElements) {\n errors.pointsError = `Max number of elements should be between 1 and ${maxMaxElements}.`;\n }\n\n if (correctResponse && correctResponse.length === 0) {\n errors.correctResponseError = 'The correct answer should include at least one number line object.';\n }\n\n return errors;\n};\n"],"file":"index.js"}
|
package/controller/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-element/number-line-controller",
|
|
3
3
|
"private": true,
|
|
4
|
-
"version": "6.2.
|
|
4
|
+
"version": "6.2.7",
|
|
5
5
|
"description": "Controller logic for @pie-ui/number-line",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"pie",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"access": "public"
|
|
15
15
|
},
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"@pie-lib/pie-toolbox": "2.17.
|
|
17
|
+
"@pie-lib/pie-toolbox": "2.17.6",
|
|
18
18
|
"lodash": "^4.17.15",
|
|
19
19
|
"mathjs": "^7.5.1"
|
|
20
20
|
},
|
package/lib/number-line/index.js
CHANGED
|
@@ -295,6 +295,7 @@ var NumberLine = /*#__PURE__*/function (_React$Component) {
|
|
|
295
295
|
title = graph.title,
|
|
296
296
|
fraction = graph.fraction;
|
|
297
297
|
var width = this.getSize('width', minWidth, maxWidth, 600);
|
|
298
|
+
var showTeacherInstructions = teacherInstructions && ((0, _renderUi.hasText)(teacherInstructions) || (0, _renderUi.hasMedia)(teacherInstructions));
|
|
298
299
|
var graphProps = {
|
|
299
300
|
disabled: disabled,
|
|
300
301
|
domain: domain,
|
|
@@ -369,7 +370,7 @@ var NumberLine = /*#__PURE__*/function (_React$Component) {
|
|
|
369
370
|
return /*#__PURE__*/_react["default"].createElement(_renderUi.UiLayout, {
|
|
370
371
|
extraCSSRules: extraCSSRules,
|
|
371
372
|
className: containerNames
|
|
372
|
-
},
|
|
373
|
+
}, showTeacherInstructions && /*#__PURE__*/_react["default"].createElement(_renderUi.Collapsible, {
|
|
373
374
|
labels: {
|
|
374
375
|
hidden: 'Show Teacher Instructions',
|
|
375
376
|
visible: 'Hide Teacher Instructions'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/number-line/index.jsx"],"names":["translator","Translator","styles","theme","mainContainer","color","text","backgroundColor","background","graphTitle","textAlign","pointerEvents","userSelect","numberLine","boxSizing","toggle","marginBottom","black_on_rose","white_on_black","prompt","verticalAlign","collapsible","paddingBottom","spacing","unit","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","availableTypes","toUpperCase","elementData","minor","contains","some","element","push","onAddElement","maxNumberOfPoints","length","nextProps","showCorrectAnswer","type","min","max","defaultValue","Math","onUndoElement","pop","onClearElements","classes","onDeleteElements","onMoveElement","minWidth","maxWidth","maxHeight","corrected","correct","incorrect","disabled","extraCSSRules","correctResponse","emptyAnswer","feedback","colorContrast","language","teacherInstructions","addElement","bind","elementsSelected","arrows","height","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","containerNames","numberLineContainerNames","hidden","visible","elementTypeSelected","clearAll","undo","toggleElement","deselectElements","__html","React","Component","PropTypes","func","isRequired","object","array"],"mappings":"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","sourcesContent":["import React from 'react';\nimport Toggle from '@pie-lib/pie-toolbox/correct-answer-toggle';\nimport classNames from 'classnames';\nimport cloneDeep from 'lodash/cloneDeep';\nimport isArray from 'lodash/isArray';\nimport isNumber from 'lodash/isNumber';\nimport isEqual from 'lodash/isEqual';\nimport Translator from '@pie-lib/pie-toolbox/translator';\nimport { Collapsible, color, hasText, PreviewPrompt, UiLayout } from '@pie-lib/pie-toolbox/render-ui';\nimport { withStyles } from '@material-ui/core/styles';\n\nimport Feedback from './feedback';\nimport Graph from './graph';\nimport PropTypes from 'prop-types';\nimport PointChooser from './point-chooser';\nimport { buildElementModel } from './graph/elements/builder';\n\nconst { translator } = Translator;\n\nexport { Graph };\n\nconst styles = (theme) => ({\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 collapsible: {\n paddingBottom: theme.spacing.unit * 2,\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, availableTypes } = this.props.model.graph;\n\n // check if the element type is enabled in availableTypes\n if (availableTypes && !availableTypes[this.state.elementType.toUpperCase()]) {\n return;\n }\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, maxHeight } = this.props;\n let { showCorrectAnswer, answers, selectedElements, showMaxPointsWarning, elementType } = this.state;\n let {\n corrected = { correct: [], incorrect: [] },\n disabled,\n extraCSSRules,\n graph,\n correctResponse,\n prompt,\n emptyAnswer,\n feedback,\n colorContrast,\n language,\n teacherInstructions\n } = model;\n let addElement = this.addElement.bind(this);\n let elementsSelected = !disabled && selectedElements && selectedElements.length > 0;\n const { ticks, domain, arrows, maxNumberOfPoints, height = 100, availableTypes, title, fraction } = graph;\n const width = this.getSize('width', minWidth, maxWidth, 600);\n\n const graphProps = {\n disabled,\n domain,\n ticks,\n width,\n height: (height > maxHeight ? maxHeight : 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 = () =>\n maxNumberOfPoints == 1\n ? translator.t('numberLine.addElementLimit_one', { lng: language, 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 containerNames = classNames(classes.mainContainer, classes[colorContrast]);\n const numberLineContainerNames = classNames(classes.numberLine, classes.mainContainer, classes[colorContrast]);\n\n return (\n <UiLayout extraCSSRules={extraCSSRules} className={containerNames}>\n {teacherInstructions && hasText(teacherInstructions) && (\n <Collapsible\n labels={{\n hidden: 'Show Teacher Instructions',\n visible: 'Hide Teacher Instructions',\n }}\n className={classes.collapsible}\n >\n <PreviewPrompt prompt={teacherInstructions}/>\n </Collapsible>\n )}\n\n {prompt && (\n <div className={classes.prompt}>\n <PreviewPrompt prompt={prompt} />\n </div>\n )}\n\n <div className={numberLineContainerNames} style={{ width }}>\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 {!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 </UiLayout>\n );\n }\n}\n\nexport default withStyles(styles)(NumberLine);\n"],"file":"index.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/number-line/index.jsx"],"names":["translator","Translator","styles","theme","mainContainer","color","text","backgroundColor","background","graphTitle","textAlign","pointerEvents","userSelect","numberLine","boxSizing","toggle","marginBottom","black_on_rose","white_on_black","prompt","verticalAlign","collapsible","paddingBottom","spacing","unit","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","availableTypes","toUpperCase","elementData","minor","contains","some","element","push","onAddElement","maxNumberOfPoints","length","nextProps","showCorrectAnswer","type","min","max","defaultValue","Math","onUndoElement","pop","onClearElements","classes","onDeleteElements","onMoveElement","minWidth","maxWidth","maxHeight","corrected","correct","incorrect","disabled","extraCSSRules","correctResponse","emptyAnswer","feedback","colorContrast","language","teacherInstructions","addElement","bind","elementsSelected","arrows","height","title","fraction","width","getSize","showTeacherInstructions","graphProps","getAnswerElements","map","out","includes","undefined","getCorrectAnswerElements","r","elements","maxPointsMessage","lng","count","deleteElements","v","d","getIcons","Object","keys","k","onShowCorrectAnswer","show","adjustedWidth","containerNames","numberLineContainerNames","hidden","visible","elementTypeSelected","clearAll","undo","toggleElement","deselectElements","__html","React","Component","PropTypes","func","isRequired","object","array"],"mappings":"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","sourcesContent":["import React from 'react';\nimport Toggle from '@pie-lib/pie-toolbox/correct-answer-toggle';\nimport classNames from 'classnames';\nimport cloneDeep from 'lodash/cloneDeep';\nimport isArray from 'lodash/isArray';\nimport isNumber from 'lodash/isNumber';\nimport isEqual from 'lodash/isEqual';\nimport Translator from '@pie-lib/pie-toolbox/translator';\nimport { Collapsible, color, hasMedia, hasText, PreviewPrompt, UiLayout } from '@pie-lib/pie-toolbox/render-ui';\nimport { withStyles } from '@material-ui/core/styles';\n\nimport Feedback from './feedback';\nimport Graph from './graph';\nimport PropTypes from 'prop-types';\nimport PointChooser from './point-chooser';\nimport { buildElementModel } from './graph/elements/builder';\n\nconst { translator } = Translator;\n\nexport { Graph };\n\nconst styles = (theme) => ({\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 collapsible: {\n paddingBottom: theme.spacing.unit * 2,\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, availableTypes } = this.props.model.graph;\n\n // check if the element type is enabled in availableTypes\n if (availableTypes && !availableTypes[this.state.elementType.toUpperCase()]) {\n return;\n }\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, maxHeight } = this.props;\n let { showCorrectAnswer, answers, selectedElements, showMaxPointsWarning, elementType } = this.state;\n let {\n corrected = { correct: [], incorrect: [] },\n disabled,\n extraCSSRules,\n graph,\n correctResponse,\n prompt,\n emptyAnswer,\n feedback,\n colorContrast,\n language,\n teacherInstructions\n } = model;\n let addElement = this.addElement.bind(this);\n let elementsSelected = !disabled && selectedElements && selectedElements.length > 0;\n const { ticks, domain, arrows, maxNumberOfPoints, height = 100, availableTypes, title, fraction } = graph;\n const width = this.getSize('width', minWidth, maxWidth, 600);\n const showTeacherInstructions = teacherInstructions && (hasText(teacherInstructions) || hasMedia(teacherInstructions));\n\n const graphProps = {\n disabled,\n domain,\n ticks,\n width,\n height: (height > maxHeight ? maxHeight : 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 = () =>\n maxNumberOfPoints == 1\n ? translator.t('numberLine.addElementLimit_one', { lng: language, 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 containerNames = classNames(classes.mainContainer, classes[colorContrast]);\n const numberLineContainerNames = classNames(classes.numberLine, classes.mainContainer, classes[colorContrast]);\n\n return (\n <UiLayout extraCSSRules={extraCSSRules} className={containerNames}>\n {showTeacherInstructions && (\n <Collapsible\n labels={{\n hidden: 'Show Teacher Instructions',\n visible: 'Hide Teacher Instructions',\n }}\n className={classes.collapsible}\n >\n <PreviewPrompt prompt={teacherInstructions}/>\n </Collapsible>\n )}\n\n {prompt && (\n <div className={classes.prompt}>\n <PreviewPrompt prompt={prompt} />\n </div>\n )}\n\n <div className={numberLineContainerNames} style={{ width }}>\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 {!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 </UiLayout>\n );\n }\n}\n\nexport default withStyles(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": "9.6.
|
|
3
|
+
"version": "9.6.8-next.0+6e96523fc",
|
|
4
4
|
"repository": "pie-framework/pie-elements",
|
|
5
5
|
"description": "",
|
|
6
6
|
"publishConfig": {
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
},
|
|
9
9
|
"dependencies": {
|
|
10
10
|
"@material-ui/core": "^3.9.2",
|
|
11
|
-
"@pie-lib/pie-toolbox": "2.17.
|
|
11
|
+
"@pie-lib/pie-toolbox": "2.17.6",
|
|
12
12
|
"classnames": "^2.2.5",
|
|
13
13
|
"d3-scale": "^3.2.1",
|
|
14
14
|
"d3-selection": "^1.4.1",
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
},
|
|
24
24
|
"author": "pie framework developers",
|
|
25
25
|
"license": "ISC",
|
|
26
|
-
"gitHead": "
|
|
26
|
+
"gitHead": "6e96523fcee4d604e6e3e014c42e3353e771a37e",
|
|
27
27
|
"scripts": {
|
|
28
28
|
"postpublish": "../../scripts/postpublish"
|
|
29
29
|
},
|