@pie-element/inline-dropdown 10.2.2-beta.6 → 10.2.2-beta.8
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 +8 -0
- package/configure/CHANGELOG.md +8 -0
- package/configure/lib/defaults.js +192 -0
- package/configure/lib/defaults.js.map +1 -0
- package/configure/lib/index.js +139 -0
- package/configure/lib/index.js.map +1 -0
- package/configure/lib/inline-dropdown-toolbar.js +462 -0
- package/configure/lib/inline-dropdown-toolbar.js.map +1 -0
- package/configure/lib/main.js +612 -0
- package/configure/lib/main.js.map +1 -0
- package/configure/lib/markupUtils.js +50 -0
- package/configure/lib/markupUtils.js.map +1 -0
- package/configure/lib/response-area.js +48 -0
- package/configure/lib/response-area.js.map +1 -0
- package/configure/lib/utils.js +22 -0
- package/configure/lib/utils.js.map +1 -0
- package/configure/package.json +3 -3
- package/controller/CHANGELOG.md +8 -0
- package/controller/lib/defaults.js +25 -0
- package/controller/lib/defaults.js.map +1 -0
- package/controller/lib/index.js +295 -0
- package/controller/lib/index.js.map +1 -0
- package/controller/lib/utils.js +32 -0
- package/controller/lib/utils.js.map +1 -0
- package/controller/package.json +1 -1
- package/lib/index.js +86 -0
- package/lib/index.js.map +1 -0
- package/lib/inline-dropdown.js +176 -0
- package/lib/inline-dropdown.js.map +1 -0
- package/package.json +3 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["_lodashEs","require","_controllerUtils","_defaults","_interopRequireDefault","_utils","getFeedback","correct","normalize","question","defaults","exports","model","session","env","updateSession","normalizedQuestion","value","choices","reduce","obj","area","key","map","choice","feedback","mode","allCorrectResponses","getAllCorrectResponses","respAreaLength","Object","keys","length","correctResponses","i","result","answer","correctChoice","isCorrect","lockChoiceOrder","lockChoices","shuffledValues","us","part","id","element","update","Promise","resolve","storedValues","getShuffledChoices","Array","isArray","isEmpty","catch","e","console","error","teacherInstructions","rationale","choicesWillNullRationales","acc","currentValue","role","rationaleEnabled","teacherInstructionsEnabled","choiceRationaleEnabled","out","disabled","prompt","promptEnabled","displayType","markup","responseCorrect","getScore","undefined","language","extraCSSRules","config","maxScore","correctCount","total","str","toFixed","parseFloat","getLogTrace","traceLog","responseAreaKeys","totalAreas","push","selectedAreas","entries","filter","val","trim","forEach","areaKey","studentSelection","correctOptions","parseInt","opt","join","partialScoringEnabled","partialScoring","enabled","score","outcome","empty","Math","floor","createCorrectResponseSession","correctChoices","c","getInnerText","html","replaceAll","getContent","replace","validate","maxResponseAreas","maxResponseAreaChoices","errors","field","required","nbOfResponseAreas","match","responseAreasError","choiceKey","responseAreaChoicesError"],"sources":["../src/index.js"],"sourcesContent":["import { isEmpty, map, reduce } from 'lodash-es';\nimport { lockChoices, getShuffledChoices, partialScoring } from '@pie-lib/controller-utils';\nimport defaults from './defaults';\n\nimport { getAllCorrectResponses } from './utils';\n\nconst getFeedback = (correct) => {\n if (correct) {\n return 'correct';\n }\n\n return 'incorrect';\n};\n\nexport const normalize = (question) => ({ ...defaults, ...question });\n\n/**\n *\n * @param {*} question\n * @param {*} session\n * @param {*} env\n * @param {*} updateSession - optional - a function that will set the properties passed into it on the session.\n */\nexport async function model(question, session, env, updateSession) {\n const normalizedQuestion = normalize(question);\n const { value = {} } = session || {};\n let choices = reduce(\n normalizedQuestion.choices,\n (obj, area, key) => {\n obj[key] = map(area, (choice) => choice);\n\n return obj;\n },\n {},\n );\n\n let feedback = {};\n\n if (env.mode === 'evaluate') {\n const allCorrectResponses = getAllCorrectResponses(normalizedQuestion);\n const respAreaLength = Object.keys(allCorrectResponses).length;\n let correctResponses = 0;\n\n for (let i = 0; i < respAreaLength; i++) {\n const result = reduce(\n allCorrectResponses,\n (obj, choices, key) => {\n const answer = (value && value[key]) || '';\n const correctChoice = choices[i] || '';\n const isCorrect = answer && correctChoice && correctChoice === answer;\n\n obj.feedback[key] = getFeedback(isCorrect);\n\n if (isCorrect) {\n obj.correctResponses += 1;\n }\n\n return obj;\n },\n { correctResponses: 0, feedback: {} },\n );\n\n if (result.correctResponses >= correctResponses) {\n correctResponses = result.correctResponses;\n feedback = result.feedback;\n }\n\n if (result.correctResponses === respAreaLength) {\n break;\n }\n }\n }\n\n const lockChoiceOrder = lockChoices(normalizedQuestion, session, env);\n\n if (!lockChoiceOrder) {\n const shuffledValues = {};\n const keys = Object.keys(choices);\n\n const us = (part) => (id, element, update) => {\n return new Promise((resolve) => {\n shuffledValues[part] = update.shuffledValues;\n resolve();\n });\n };\n\n let i;\n\n for (i = 0; i < keys.length; i++) {\n const key = keys[i];\n const storedValues = session?.shuffledValues?.[key];\n\n choices[key] = await getShuffledChoices(\n choices[key],\n // the shuffledValues structure was updated to an object like { choice_key: [] }\n // and we need to override shuffledValues if it's not an array\n { shuffledValues: Array.isArray(storedValues) ? storedValues : [] },\n us(key),\n 'value',\n );\n }\n\n if (!isEmpty(shuffledValues)) {\n if (session && updateSession && typeof updateSession === 'function') {\n updateSession(session.id, session.element, {\n shuffledValues,\n }).catch((e) => {\n // eslint-disable-next-line no-console\n console.error('update session failed', e);\n });\n }\n }\n }\n\n let teacherInstructions = null;\n let rationale = null;\n\n const choicesWillNullRationales = (Object.keys(choices) || []).reduce((acc, currentValue) => {\n acc[currentValue] = (choices[currentValue] || []).map((choice) => ({\n ...choice,\n rationale: null,\n }));\n\n return acc;\n }, {});\n\n if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {\n rationale = normalizedQuestion.rationaleEnabled ? normalizedQuestion.rationale : null;\n teacherInstructions = normalizedQuestion.teacherInstructionsEnabled ? normalizedQuestion.teacherInstructions : null;\n\n choices = normalizedQuestion.choiceRationaleEnabled ? normalizedQuestion.choices : choicesWillNullRationales;\n } else {\n rationale = null;\n teacherInstructions = null;\n choices = choicesWillNullRationales;\n }\n\n const out = {\n disabled: env.mode !== 'gather',\n mode: env.mode,\n prompt: normalizedQuestion.promptEnabled ? normalizedQuestion.prompt : null,\n displayType: normalizedQuestion.displayType,\n markup: normalizedQuestion.markup,\n choices,\n feedback,\n\n responseCorrect: env.mode === 'evaluate' ? getScore(normalizedQuestion, session) === 1 : undefined,\n rationale,\n teacherInstructions,\n language: normalizedQuestion.language,\n extraCSSRules: normalizedQuestion.extraCSSRules,\n };\n\n return out;\n}\n\nexport const getScore = (config, session) => {\n const { value = {} } = session || {};\n const maxScore = config && config.choices ? Object.keys(config.choices).length : 0;\n const allCorrectResponses = getAllCorrectResponses(config);\n let correctCount = 0;\n\n for (let i = 0; i < maxScore; i++) {\n const result = reduce(\n allCorrectResponses,\n (total, choices, key) => {\n const answer = (value && value[key]) || '';\n const correctChoice = choices[i] || '';\n\n if (correctChoice && answer && correctChoice === answer) {\n return total;\n }\n\n return total - 1;\n },\n maxScore,\n );\n\n if (result > correctCount) {\n correctCount = result;\n }\n\n if (result === maxScore) {\n break;\n }\n }\n\n const str = (correctCount / maxScore).toFixed(2);\n\n return parseFloat(str);\n};\n\n/**\n * Generates detailed trace log for scoring evaluation\n * @param {Object} model - the question model\n * @param {Object} session - the student session\n * @param {Object} env - the environment\n * @returns {Array} traceLog - array of trace messages\n */\nexport const getLogTrace = (model, session, env) => {\n const traceLog = [];\n const { value = {} } = session || {};\n const allCorrectResponses = getAllCorrectResponses(model);\n const responseAreaKeys = Object.keys(allCorrectResponses);\n const totalAreas = responseAreaKeys.length;\n \n traceLog.push(`${totalAreas} dropdown response area(s) defined in this question.`);\n \n if (value && Object.keys(value).length > 0) {\n const selectedAreas = Object.entries(value).filter(([key, val]) => val && val.trim()).length;\n traceLog.push(`Student selected options in ${selectedAreas} out of ${totalAreas} dropdown(s).`);\n \n responseAreaKeys.forEach((areaKey) => {\n const studentSelection = (value && value[areaKey]) || '';\n const correctOptions = allCorrectResponses[areaKey] || [];\n \n if (studentSelection.trim()) {\n traceLog.push(`Dropdown ${parseInt(areaKey) + 1}: student selected '${studentSelection}' (correct options: [${correctOptions.map(opt => `'${opt}'`).join(', ')}]).`);\n } else {\n traceLog.push(`Dropdown ${parseInt(areaKey) + 1}: no selection made (correct options: [${correctOptions.map(opt => `'${opt}'`).join(', ')}]).`);\n }\n });\n } else {\n traceLog.push('Student did not make any selections in the dropdowns.');\n }\n\n const partialScoringEnabled = partialScoring.enabled(model, env);\n traceLog.push(\n `Scoring method: ${\n partialScoringEnabled ? 'partial scoring' : 'all-or-nothing scoring'\n }.`\n );\n\n const score = getScore(model, session);\n traceLog.push(`Final score: ${score}.`);\n\n return traceLog;\n}\n\n/**\n *\n * The score is partial by default for checkbox mode, allOrNothing for radio mode.\n * To disable partial scoring for checkbox mode you either set model.partialScoring = false or env.partialScoring =\n * false. the value in `env` will override the value in `model`.\n * @param {Object} model - the main model\n * @param {boolean} model.partialScoring - is partial scoring enabled (if undefined set to to true)\n * @param {*} session\n * @param {Object} env\n * @param {boolean} env.partialScoring - is partial scoring enabled (if undefined default to true) This overrides\n * `model.partialScoring`.\n */\nexport function outcome(model, session, env = {}) {\n return new Promise((resolve) => {\n if (!session || isEmpty(session)) {\n resolve({ \n score: 0, \n empty: true, \n traceLog: ['Student did not make any selections in the dropdowns. Score is 0.'] \n });\n } else {\n const traceLog = getLogTrace(model, session, env);\n const score = getScore(model, session);\n const partialScoringEnabled = partialScoring.enabled(model, env);\n\n resolve({\n score: partialScoringEnabled ? score : Math.floor(score),\n empty: false,\n traceLog\n });\n }\n });\n}\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const { choices } = question;\n const value = {};\n\n if (choices) {\n Object.keys(choices).forEach((key, i) => {\n const correctChoices = choices[key] && choices[key].filter((c) => c.correct);\n\n value[i] = correctChoices && correctChoices[0].value;\n });\n }\n\n resolve({\n id: '1',\n value,\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 { markup, choices } = model;\n const { maxResponseAreas, maxResponseAreaChoices } = config;\n const errors = {};\n\n ['teacherInstructions', 'prompt', 'rationale'].forEach((field) => {\n if (config[field]?.required && !getContent(model[field])) {\n errors[field] = 'This field is required.';\n }\n });\n\n const nbOfResponseAreas = ((markup || '').match(/\\{\\{(\\d+)\\}\\}/g) || []).length;\n\n if (nbOfResponseAreas > maxResponseAreas) {\n errors.responseAreasError = `No more than ${maxResponseAreas} response areas should be defined.`;\n } else if (nbOfResponseAreas < 1) {\n errors.responseAreasError = 'There should be defined at least 1 response area.';\n }\n\n (Object.keys(choices) || []).forEach((choiceKey) => {\n if (choices[choiceKey] && choices[choiceKey].length > maxResponseAreaChoices) {\n errors.responseAreaChoicesError = `No more than ${maxResponseAreaChoices} choices per response area should be defined.`;\n }\n });\n\n return errors;\n};\n"],"mappings":";;;;;;;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,gBAAA,GAAAD,OAAA;AACA,IAAAE,SAAA,GAAAC,sBAAA,CAAAH,OAAA;AAEA,IAAAI,MAAA,GAAAJ,OAAA;AAEA,MAAMK,WAAW,GAAIC,OAAO,IAAK;EAC/B,IAAIA,OAAO,EAAE;IACX,OAAO,SAAS;EAClB;EAEA,OAAO,WAAW;AACpB,CAAC;AAEM,MAAMC,SAAS,GAAIC,QAAQ,KAAM;EAAE,GAAGC,iBAAQ;EAAE,GAAGD;AAAS,CAAC,CAAC;;AAErE;AACA;AACA;AACA;AACA;AACA;AACA;AANAE,OAAA,CAAAH,SAAA,GAAAA,SAAA;AAOO,eAAeI,KAAKA,CAACH,QAAQ,EAAEI,OAAO,EAAEC,GAAG,EAAEC,aAAa,EAAE;EACjE,MAAMC,kBAAkB,GAAGR,SAAS,CAACC,QAAQ,CAAC;EAC9C,MAAM;IAAEQ,KAAK,GAAG,CAAC;EAAE,CAAC,GAAGJ,OAAO,IAAI,CAAC,CAAC;EACpC,IAAIK,OAAO,GAAG,IAAAC,gBAAM,EAClBH,kBAAkB,CAACE,OAAO,EAC1B,CAACE,GAAG,EAAEC,IAAI,EAAEC,GAAG,KAAK;IAClBF,GAAG,CAACE,GAAG,CAAC,GAAG,IAAAC,aAAG,EAACF,IAAI,EAAGG,MAAM,IAAKA,MAAM,CAAC;IAExC,OAAOJ,GAAG;EACZ,CAAC,EACD,CAAC,CACH,CAAC;EAED,IAAIK,QAAQ,GAAG,CAAC,CAAC;EAEjB,IAAIX,GAAG,CAACY,IAAI,KAAK,UAAU,EAAE;IAC3B,MAAMC,mBAAmB,GAAG,IAAAC,6BAAsB,EAACZ,kBAAkB,CAAC;IACtE,MAAMa,cAAc,GAAGC,MAAM,CAACC,IAAI,CAACJ,mBAAmB,CAAC,CAACK,MAAM;IAC9D,IAAIC,gBAAgB,GAAG,CAAC;IAExB,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGL,cAAc,EAAEK,CAAC,EAAE,EAAE;MACvC,MAAMC,MAAM,GAAG,IAAAhB,gBAAM,EACnBQ,mBAAmB,EACnB,CAACP,GAAG,EAAEF,OAAO,EAAEI,GAAG,KAAK;QACrB,MAAMc,MAAM,GAAInB,KAAK,IAAIA,KAAK,CAACK,GAAG,CAAC,IAAK,EAAE;QAC1C,MAAMe,aAAa,GAAGnB,OAAO,CAACgB,CAAC,CAAC,IAAI,EAAE;QACtC,MAAMI,SAAS,GAAGF,MAAM,IAAIC,aAAa,IAAIA,aAAa,KAAKD,MAAM;QAErEhB,GAAG,CAACK,QAAQ,CAACH,GAAG,CAAC,GAAGhB,WAAW,CAACgC,SAAS,CAAC;QAE1C,IAAIA,SAAS,EAAE;UACblB,GAAG,CAACa,gBAAgB,IAAI,CAAC;QAC3B;QAEA,OAAOb,GAAG;MACZ,CAAC,EACD;QAAEa,gBAAgB,EAAE,CAAC;QAAER,QAAQ,EAAE,CAAC;MAAE,CACtC,CAAC;MAED,IAAIU,MAAM,CAACF,gBAAgB,IAAIA,gBAAgB,EAAE;QAC/CA,gBAAgB,GAAGE,MAAM,CAACF,gBAAgB;QAC1CR,QAAQ,GAAGU,MAAM,CAACV,QAAQ;MAC5B;MAEA,IAAIU,MAAM,CAACF,gBAAgB,KAAKJ,cAAc,EAAE;QAC9C;MACF;IACF;EACF;EAEA,MAAMU,eAAe,GAAG,IAAAC,4BAAW,EAACxB,kBAAkB,EAAEH,OAAO,EAAEC,GAAG,CAAC;EAErE,IAAI,CAACyB,eAAe,EAAE;IACpB,MAAME,cAAc,GAAG,CAAC,CAAC;IACzB,MAAMV,IAAI,GAAGD,MAAM,CAACC,IAAI,CAACb,OAAO,CAAC;IAEjC,MAAMwB,EAAE,GAAIC,IAAI,IAAK,CAACC,EAAE,EAAEC,OAAO,EAAEC,MAAM,KAAK;MAC5C,OAAO,IAAIC,OAAO,CAAEC,OAAO,IAAK;QAC9BP,cAAc,CAACE,IAAI,CAAC,GAAGG,MAAM,CAACL,cAAc;QAC5CO,OAAO,CAAC,CAAC;MACX,CAAC,CAAC;IACJ,CAAC;IAED,IAAId,CAAC;IAEL,KAAKA,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGH,IAAI,CAACC,MAAM,EAAEE,CAAC,EAAE,EAAE;MAChC,MAAMZ,GAAG,GAAGS,IAAI,CAACG,CAAC,CAAC;MACnB,MAAMe,YAAY,GAAGpC,OAAO,EAAE4B,cAAc,GAAGnB,GAAG,CAAC;MAEnDJ,OAAO,CAACI,GAAG,CAAC,GAAG,MAAM,IAAA4B,mCAAkB,EACrChC,OAAO,CAACI,GAAG,CAAC;MACZ;MACA;MACA;QAAEmB,cAAc,EAAEU,KAAK,CAACC,OAAO,CAACH,YAAY,CAAC,GAAGA,YAAY,GAAG;MAAG,CAAC,EACnEP,EAAE,CAACpB,GAAG,CAAC,EACP,OACF,CAAC;IACH;IAEA,IAAI,CAAC,IAAA+B,iBAAO,EAACZ,cAAc,CAAC,EAAE;MAC5B,IAAI5B,OAAO,IAAIE,aAAa,IAAI,OAAOA,aAAa,KAAK,UAAU,EAAE;QACnEA,aAAa,CAACF,OAAO,CAAC+B,EAAE,EAAE/B,OAAO,CAACgC,OAAO,EAAE;UACzCJ;QACF,CAAC,CAAC,CAACa,KAAK,CAAEC,CAAC,IAAK;UACd;UACAC,OAAO,CAACC,KAAK,CAAC,uBAAuB,EAAEF,CAAC,CAAC;QAC3C,CAAC,CAAC;MACJ;IACF;EACF;EAEA,IAAIG,mBAAmB,GAAG,IAAI;EAC9B,IAAIC,SAAS,GAAG,IAAI;EAEpB,MAAMC,yBAAyB,GAAG,CAAC9B,MAAM,CAACC,IAAI,CAACb,OAAO,CAAC,IAAI,EAAE,EAAEC,MAAM,CAAC,CAAC0C,GAAG,EAAEC,YAAY,KAAK;IAC3FD,GAAG,CAACC,YAAY,CAAC,GAAG,CAAC5C,OAAO,CAAC4C,YAAY,CAAC,IAAI,EAAE,EAAEvC,GAAG,CAAEC,MAAM,KAAM;MACjE,GAAGA,MAAM;MACTmC,SAAS,EAAE;IACb,CAAC,CAAC,CAAC;IAEH,OAAOE,GAAG;EACZ,CAAC,EAAE,CAAC,CAAC,CAAC;EAEN,IAAI/C,GAAG,CAACiD,IAAI,KAAK,YAAY,KAAKjD,GAAG,CAACY,IAAI,KAAK,MAAM,IAAIZ,GAAG,CAACY,IAAI,KAAK,UAAU,CAAC,EAAE;IACjFiC,SAAS,GAAG3C,kBAAkB,CAACgD,gBAAgB,GAAGhD,kBAAkB,CAAC2C,SAAS,GAAG,IAAI;IACrFD,mBAAmB,GAAG1C,kBAAkB,CAACiD,0BAA0B,GAAGjD,kBAAkB,CAAC0C,mBAAmB,GAAG,IAAI;IAEnHxC,OAAO,GAAGF,kBAAkB,CAACkD,sBAAsB,GAAGlD,kBAAkB,CAACE,OAAO,GAAG0C,yBAAyB;EAC9G,CAAC,MAAM;IACLD,SAAS,GAAG,IAAI;IAChBD,mBAAmB,GAAG,IAAI;IAC1BxC,OAAO,GAAG0C,yBAAyB;EACrC;EAEA,MAAMO,GAAG,GAAG;IACVC,QAAQ,EAAEtD,GAAG,CAACY,IAAI,KAAK,QAAQ;IAC/BA,IAAI,EAAEZ,GAAG,CAACY,IAAI;IACd2C,MAAM,EAAErD,kBAAkB,CAACsD,aAAa,GAAGtD,kBAAkB,CAACqD,MAAM,GAAG,IAAI;IAC3EE,WAAW,EAAEvD,kBAAkB,CAACuD,WAAW;IAC3CC,MAAM,EAAExD,kBAAkB,CAACwD,MAAM;IACjCtD,OAAO;IACPO,QAAQ;IAERgD,eAAe,EAAE3D,GAAG,CAACY,IAAI,KAAK,UAAU,GAAGgD,QAAQ,CAAC1D,kBAAkB,EAAEH,OAAO,CAAC,KAAK,CAAC,GAAG8D,SAAS;IAClGhB,SAAS;IACTD,mBAAmB;IACnBkB,QAAQ,EAAE5D,kBAAkB,CAAC4D,QAAQ;IACrCC,aAAa,EAAE7D,kBAAkB,CAAC6D;EACpC,CAAC;EAED,OAAOV,GAAG;AACZ;AAEO,MAAMO,QAAQ,GAAGA,CAACI,MAAM,EAAEjE,OAAO,KAAK;EAC3C,MAAM;IAAEI,KAAK,GAAG,CAAC;EAAE,CAAC,GAAGJ,OAAO,IAAI,CAAC,CAAC;EACpC,MAAMkE,QAAQ,GAAGD,MAAM,IAAIA,MAAM,CAAC5D,OAAO,GAAGY,MAAM,CAACC,IAAI,CAAC+C,MAAM,CAAC5D,OAAO,CAAC,CAACc,MAAM,GAAG,CAAC;EAClF,MAAML,mBAAmB,GAAG,IAAAC,6BAAsB,EAACkD,MAAM,CAAC;EAC1D,IAAIE,YAAY,GAAG,CAAC;EAEpB,KAAK,IAAI9C,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG6C,QAAQ,EAAE7C,CAAC,EAAE,EAAE;IACjC,MAAMC,MAAM,GAAG,IAAAhB,gBAAM,EACnBQ,mBAAmB,EACnB,CAACsD,KAAK,EAAE/D,OAAO,EAAEI,GAAG,KAAK;MACvB,MAAMc,MAAM,GAAInB,KAAK,IAAIA,KAAK,CAACK,GAAG,CAAC,IAAK,EAAE;MAC1C,MAAMe,aAAa,GAAGnB,OAAO,CAACgB,CAAC,CAAC,IAAI,EAAE;MAEtC,IAAIG,aAAa,IAAID,MAAM,IAAIC,aAAa,KAAKD,MAAM,EAAE;QACvD,OAAO6C,KAAK;MACd;MAEA,OAAOA,KAAK,GAAG,CAAC;IAClB,CAAC,EACDF,QACF,CAAC;IAED,IAAI5C,MAAM,GAAG6C,YAAY,EAAE;MACzBA,YAAY,GAAG7C,MAAM;IACvB;IAEA,IAAIA,MAAM,KAAK4C,QAAQ,EAAE;MACvB;IACF;EACF;EAEA,MAAMG,GAAG,GAAG,CAACF,YAAY,GAAGD,QAAQ,EAAEI,OAAO,CAAC,CAAC,CAAC;EAEhD,OAAOC,UAAU,CAACF,GAAG,CAAC;AACxB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AANAvE,OAAA,CAAA+D,QAAA,GAAAA,QAAA;AAOO,MAAMW,WAAW,GAAGA,CAACzE,KAAK,EAAEC,OAAO,EAAEC,GAAG,KAAK;EAClD,MAAMwE,QAAQ,GAAG,EAAE;EACnB,MAAM;IAAErE,KAAK,GAAG,CAAC;EAAE,CAAC,GAAGJ,OAAO,IAAI,CAAC,CAAC;EACpC,MAAMc,mBAAmB,GAAG,IAAAC,6BAAsB,EAAChB,KAAK,CAAC;EACzD,MAAM2E,gBAAgB,GAAGzD,MAAM,CAACC,IAAI,CAACJ,mBAAmB,CAAC;EACzD,MAAM6D,UAAU,GAAGD,gBAAgB,CAACvD,MAAM;EAE1CsD,QAAQ,CAACG,IAAI,CAAC,GAAGD,UAAU,sDAAsD,CAAC;EAElF,IAAIvE,KAAK,IAAIa,MAAM,CAACC,IAAI,CAACd,KAAK,CAAC,CAACe,MAAM,GAAG,CAAC,EAAE;IAC1C,MAAM0D,aAAa,GAAG5D,MAAM,CAAC6D,OAAO,CAAC1E,KAAK,CAAC,CAAC2E,MAAM,CAAC,CAAC,CAACtE,GAAG,EAAEuE,GAAG,CAAC,KAAKA,GAAG,IAAIA,GAAG,CAACC,IAAI,CAAC,CAAC,CAAC,CAAC9D,MAAM;IAC5FsD,QAAQ,CAACG,IAAI,CAAC,+BAA+BC,aAAa,WAAWF,UAAU,eAAe,CAAC;IAE/FD,gBAAgB,CAACQ,OAAO,CAAEC,OAAO,IAAK;MACpC,MAAMC,gBAAgB,GAAIhF,KAAK,IAAIA,KAAK,CAAC+E,OAAO,CAAC,IAAK,EAAE;MACxD,MAAME,cAAc,GAAGvE,mBAAmB,CAACqE,OAAO,CAAC,IAAI,EAAE;MAEzD,IAAIC,gBAAgB,CAACH,IAAI,CAAC,CAAC,EAAE;QAC3BR,QAAQ,CAACG,IAAI,CAAC,YAAYU,QAAQ,CAACH,OAAO,CAAC,GAAG,CAAC,uBAAuBC,gBAAgB,wBAAwBC,cAAc,CAAC3E,GAAG,CAAC6E,GAAG,IAAI,IAAIA,GAAG,GAAG,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;MACtK,CAAC,MAAM;QACLf,QAAQ,CAACG,IAAI,CAAC,YAAYU,QAAQ,CAACH,OAAO,CAAC,GAAG,CAAC,0CAA0CE,cAAc,CAAC3E,GAAG,CAAC6E,GAAG,IAAI,IAAIA,GAAG,GAAG,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;MACjJ;IACF,CAAC,CAAC;EACJ,CAAC,MAAM;IACLf,QAAQ,CAACG,IAAI,CAAC,uDAAuD,CAAC;EACxE;EAEA,MAAMa,qBAAqB,GAAGC,+BAAc,CAACC,OAAO,CAAC5F,KAAK,EAAEE,GAAG,CAAC;EAChEwE,QAAQ,CAACG,IAAI,CACX,mBACEa,qBAAqB,GAAG,iBAAiB,GAAG,wBAAwB,GAExE,CAAC;EAED,MAAMG,KAAK,GAAG/B,QAAQ,CAAC9D,KAAK,EAAEC,OAAO,CAAC;EACtCyE,QAAQ,CAACG,IAAI,CAAC,gBAAgBgB,KAAK,GAAG,CAAC;EAEvC,OAAOnB,QAAQ;AACjB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAXA3E,OAAA,CAAA0E,WAAA,GAAAA,WAAA;AAYO,SAASqB,OAAOA,CAAC9F,KAAK,EAAEC,OAAO,EAAEC,GAAG,GAAG,CAAC,CAAC,EAAE;EAChD,OAAO,IAAIiC,OAAO,CAAEC,OAAO,IAAK;IAC9B,IAAI,CAACnC,OAAO,IAAI,IAAAwC,iBAAO,EAACxC,OAAO,CAAC,EAAE;MAChCmC,OAAO,CAAC;QACNyD,KAAK,EAAE,CAAC;QACRE,KAAK,EAAE,IAAI;QACXrB,QAAQ,EAAE,CAAC,mEAAmE;MAChF,CAAC,CAAC;IACJ,CAAC,MAAM;MACL,MAAMA,QAAQ,GAAGD,WAAW,CAACzE,KAAK,EAAEC,OAAO,EAAEC,GAAG,CAAC;MACjD,MAAM2F,KAAK,GAAG/B,QAAQ,CAAC9D,KAAK,EAAEC,OAAO,CAAC;MACtC,MAAMyF,qBAAqB,GAAGC,+BAAc,CAACC,OAAO,CAAC5F,KAAK,EAAEE,GAAG,CAAC;MAEhEkC,OAAO,CAAC;QACNyD,KAAK,EAAEH,qBAAqB,GAAGG,KAAK,GAAGG,IAAI,CAACC,KAAK,CAACJ,KAAK,CAAC;QACxDE,KAAK,EAAE,KAAK;QACZrB;MACF,CAAC,CAAC;IACJ;EACF,CAAC,CAAC;AACJ;AAEO,MAAMwB,4BAA4B,GAAGA,CAACrG,QAAQ,EAAEK,GAAG,KAAK;EAC7D,OAAO,IAAIiC,OAAO,CAAEC,OAAO,IAAK;IAC9B,IAAIlC,GAAG,CAACY,IAAI,KAAK,UAAU,IAAIZ,GAAG,CAACiD,IAAI,KAAK,YAAY,EAAE;MACxD,MAAM;QAAE7C;MAAQ,CAAC,GAAGT,QAAQ;MAC5B,MAAMQ,KAAK,GAAG,CAAC,CAAC;MAEhB,IAAIC,OAAO,EAAE;QACXY,MAAM,CAACC,IAAI,CAACb,OAAO,CAAC,CAAC6E,OAAO,CAAC,CAACzE,GAAG,EAAEY,CAAC,KAAK;UACvC,MAAM6E,cAAc,GAAG7F,OAAO,CAACI,GAAG,CAAC,IAAIJ,OAAO,CAACI,GAAG,CAAC,CAACsE,MAAM,CAAEoB,CAAC,IAAKA,CAAC,CAACzG,OAAO,CAAC;UAE5EU,KAAK,CAACiB,CAAC,CAAC,GAAG6E,cAAc,IAAIA,cAAc,CAAC,CAAC,CAAC,CAAC9F,KAAK;QACtD,CAAC,CAAC;MACJ;MAEA+B,OAAO,CAAC;QACNJ,EAAE,EAAE,GAAG;QACP3B;MACF,CAAC,CAAC;IACJ,CAAC,MAAM;MACL+B,OAAO,CAAC,IAAI,CAAC;IACf;EACF,CAAC,CAAC;AACJ,CAAC;;AAED;AAAArC,OAAA,CAAAmG,4BAAA,GAAAA,4BAAA;AACA,MAAMG,YAAY,GAAIC,IAAI,IAAK,CAACA,IAAI,IAAI,EAAE,EAAEC,UAAU,CAAC,UAAU,EAAE,EAAE,CAAC;;AAEtE;AACA,MAAMC,UAAU,GAAIF,IAAI,IAAK,CAACA,IAAI,IAAI,EAAE,EAAEG,OAAO,CAAC,oCAAoC,EAAE,EAAE,CAAC;AAEpF,MAAMC,QAAQ,GAAGA,CAAC1G,KAAK,GAAG,CAAC,CAAC,EAAEkE,MAAM,GAAG,CAAC,CAAC,KAAK;EACnD,MAAM;IAAEN,MAAM;IAAEtD;EAAQ,CAAC,GAAGN,KAAK;EACjC,MAAM;IAAE2G,gBAAgB;IAAEC;EAAuB,CAAC,GAAG1C,MAAM;EAC3D,MAAM2C,MAAM,GAAG,CAAC,CAAC;EAEjB,CAAC,qBAAqB,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC1B,OAAO,CAAE2B,KAAK,IAAK;IAChE,IAAI5C,MAAM,CAAC4C,KAAK,CAAC,EAAEC,QAAQ,IAAI,CAACP,UAAU,CAACxG,KAAK,CAAC8G,KAAK,CAAC,CAAC,EAAE;MACxDD,MAAM,CAACC,KAAK,CAAC,GAAG,yBAAyB;IAC3C;EACF,CAAC,CAAC;EAEF,MAAME,iBAAiB,GAAG,CAAC,CAACpD,MAAM,IAAI,EAAE,EAAEqD,KAAK,CAAC,gBAAgB,CAAC,IAAI,EAAE,EAAE7F,MAAM;EAE/E,IAAI4F,iBAAiB,GAAGL,gBAAgB,EAAE;IACxCE,MAAM,CAACK,kBAAkB,GAAG,gBAAgBP,gBAAgB,oCAAoC;EAClG,CAAC,MAAM,IAAIK,iBAAiB,GAAG,CAAC,EAAE;IAChCH,MAAM,CAACK,kBAAkB,GAAG,mDAAmD;EACjF;EAEA,CAAChG,MAAM,CAACC,IAAI,CAACb,OAAO,CAAC,IAAI,EAAE,EAAE6E,OAAO,CAAEgC,SAAS,IAAK;IAClD,IAAI7G,OAAO,CAAC6G,SAAS,CAAC,IAAI7G,OAAO,CAAC6G,SAAS,CAAC,CAAC/F,MAAM,GAAGwF,sBAAsB,EAAE;MAC5EC,MAAM,CAACO,wBAAwB,GAAG,gBAAgBR,sBAAsB,+CAA+C;IACzH;EACF,CAAC,CAAC;EAEF,OAAOC,MAAM;AACf,CAAC;AAAC9G,OAAA,CAAA2G,QAAA,GAAAA,QAAA","ignoreList":[]}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getAllCorrectResponses = void 0;
|
|
7
|
+
var _lodashEs = require("lodash-es");
|
|
8
|
+
const getAllCorrectResponses = ({
|
|
9
|
+
choices,
|
|
10
|
+
alternateResponse
|
|
11
|
+
}) => {
|
|
12
|
+
alternateResponse = alternateResponse || {};
|
|
13
|
+
const correctAnswers = {};
|
|
14
|
+
(0, _lodashEs.forEach)(choices, (respArea, key) => {
|
|
15
|
+
if (!correctAnswers[key]) {
|
|
16
|
+
correctAnswers[key] = [];
|
|
17
|
+
}
|
|
18
|
+
if (respArea) {
|
|
19
|
+
respArea.forEach(choice => {
|
|
20
|
+
if (choice.correct) {
|
|
21
|
+
correctAnswers[key].push(choice.value);
|
|
22
|
+
if (alternateResponse[key]) {
|
|
23
|
+
correctAnswers[key] = [...correctAnswers[key], ...alternateResponse[key]];
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
return correctAnswers;
|
|
30
|
+
};
|
|
31
|
+
exports.getAllCorrectResponses = getAllCorrectResponses;
|
|
32
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","names":["_lodashEs","require","getAllCorrectResponses","choices","alternateResponse","correctAnswers","forEach","respArea","key","choice","correct","push","value","exports"],"sources":["../src/utils.js"],"sourcesContent":["import { forEach } from 'lodash-es';\n\nexport const getAllCorrectResponses = ({ choices, alternateResponse }) => {\n alternateResponse = alternateResponse || {};\n const correctAnswers = {};\n\n forEach(choices, (respArea, key) => {\n if (!correctAnswers[key]) {\n correctAnswers[key] = [];\n }\n\n if (respArea) {\n respArea.forEach((choice) => {\n if (choice.correct) {\n correctAnswers[key].push(choice.value);\n\n if (alternateResponse[key]) {\n correctAnswers[key] = [...correctAnswers[key], ...alternateResponse[key]];\n }\n }\n });\n }\n });\n\n return correctAnswers;\n};\n"],"mappings":";;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AAEO,MAAMC,sBAAsB,GAAGA,CAAC;EAAEC,OAAO;EAAEC;AAAkB,CAAC,KAAK;EACxEA,iBAAiB,GAAGA,iBAAiB,IAAI,CAAC,CAAC;EAC3C,MAAMC,cAAc,GAAG,CAAC,CAAC;EAEzB,IAAAC,iBAAO,EAACH,OAAO,EAAE,CAACI,QAAQ,EAAEC,GAAG,KAAK;IAClC,IAAI,CAACH,cAAc,CAACG,GAAG,CAAC,EAAE;MACxBH,cAAc,CAACG,GAAG,CAAC,GAAG,EAAE;IAC1B;IAEA,IAAID,QAAQ,EAAE;MACZA,QAAQ,CAACD,OAAO,CAAEG,MAAM,IAAK;QAC3B,IAAIA,MAAM,CAACC,OAAO,EAAE;UAClBL,cAAc,CAACG,GAAG,CAAC,CAACG,IAAI,CAACF,MAAM,CAACG,KAAK,CAAC;UAEtC,IAAIR,iBAAiB,CAACI,GAAG,CAAC,EAAE;YAC1BH,cAAc,CAACG,GAAG,CAAC,GAAG,CAAC,GAAGH,cAAc,CAACG,GAAG,CAAC,EAAE,GAAGJ,iBAAiB,CAACI,GAAG,CAAC,CAAC;UAC3E;QACF;MACF,CAAC,CAAC;IACJ;EACF,CAAC,CAAC;EAEF,OAAOH,cAAc;AACvB,CAAC;AAACQ,OAAA,CAAAX,sBAAA,GAAAA,sBAAA","ignoreList":[]}
|
package/controller/package.json
CHANGED
package/lib/index.js
ADDED
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
9
|
+
var _react = _interopRequireDefault(require("react"));
|
|
10
|
+
var _client = require("react-dom/client");
|
|
11
|
+
var _piePlayerEvents = require("@pie-framework/pie-player-events");
|
|
12
|
+
var _mathRendering = require("@pie-lib/math-rendering");
|
|
13
|
+
var _inlineDropdown = _interopRequireDefault(require("./inline-dropdown"));
|
|
14
|
+
class RootInlineDropdown extends HTMLElement {
|
|
15
|
+
constructor() {
|
|
16
|
+
super();
|
|
17
|
+
(0, _defineProperty2.default)(this, "_render", () => {
|
|
18
|
+
if (this._model && this._session) {
|
|
19
|
+
let elem = /*#__PURE__*/_react.default.createElement(_inlineDropdown.default, {
|
|
20
|
+
model: this._model,
|
|
21
|
+
prompt: this._model.prompt,
|
|
22
|
+
rationale: this._model.rationale,
|
|
23
|
+
teacherInstructions: this._model.teacherInstructions,
|
|
24
|
+
disabled: this._model.disabled,
|
|
25
|
+
displayType: this._model.displayType,
|
|
26
|
+
markup: this._model.markup,
|
|
27
|
+
mode: this._model.mode,
|
|
28
|
+
choices: this._model.choices,
|
|
29
|
+
value: this._session.value,
|
|
30
|
+
feedback: this._model.feedback,
|
|
31
|
+
language: this._model.language,
|
|
32
|
+
onChange: this.changeSession
|
|
33
|
+
});
|
|
34
|
+
this.setLangAttribute();
|
|
35
|
+
if (!this._root) {
|
|
36
|
+
this._root = (0, _client.createRoot)(this);
|
|
37
|
+
}
|
|
38
|
+
this._root.render(elem);
|
|
39
|
+
queueMicrotask(() => {
|
|
40
|
+
(0, _mathRendering.renderMath)(this);
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
(0, _defineProperty2.default)(this, "dispatchChangedEvent", () => {
|
|
45
|
+
this.dispatchEvent(new _piePlayerEvents.SessionChangedEvent(this.tagName.toLowerCase(), this.session && !!this.session.value));
|
|
46
|
+
});
|
|
47
|
+
(0, _defineProperty2.default)(this, "changeSession", value => {
|
|
48
|
+
this.session.value = value;
|
|
49
|
+
this.dispatchChangedEvent();
|
|
50
|
+
this._render();
|
|
51
|
+
});
|
|
52
|
+
this._model = null;
|
|
53
|
+
this._session = null;
|
|
54
|
+
this._root = null;
|
|
55
|
+
}
|
|
56
|
+
set model(m) {
|
|
57
|
+
this._model = m;
|
|
58
|
+
this.dispatchEvent(new _piePlayerEvents.ModelSetEvent(this.tagName.toLowerCase(), this.session && !!this.session.value, !!this._model));
|
|
59
|
+
this._render();
|
|
60
|
+
}
|
|
61
|
+
set session(s) {
|
|
62
|
+
this._session = s;
|
|
63
|
+
this._render();
|
|
64
|
+
}
|
|
65
|
+
get session() {
|
|
66
|
+
return this._session;
|
|
67
|
+
}
|
|
68
|
+
setLangAttribute() {
|
|
69
|
+
const language = this._model && typeof this._model.language ? this._model.language : '';
|
|
70
|
+
const lang = language ? language.slice(0, 2) : 'en';
|
|
71
|
+
this.setAttribute('lang', lang);
|
|
72
|
+
}
|
|
73
|
+
connectedCallback() {
|
|
74
|
+
this.setAttribute('aria-label', 'Inline Dropdown Question');
|
|
75
|
+
this.setAttribute('role', 'region');
|
|
76
|
+
this._render();
|
|
77
|
+
}
|
|
78
|
+
disconnectedCallback() {
|
|
79
|
+
if (this._root) {
|
|
80
|
+
this._root.unmount();
|
|
81
|
+
this._root = null;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
exports.default = RootInlineDropdown;
|
|
86
|
+
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["_react","_interopRequireDefault","require","_client","_piePlayerEvents","_mathRendering","_inlineDropdown","RootInlineDropdown","HTMLElement","constructor","_defineProperty2","default","_model","_session","elem","React","createElement","InlineDropdown","model","prompt","rationale","teacherInstructions","disabled","displayType","markup","mode","choices","value","feedback","language","onChange","changeSession","setLangAttribute","_root","createRoot","render","queueMicrotask","renderMath","dispatchEvent","SessionChangedEvent","tagName","toLowerCase","session","dispatchChangedEvent","_render","m","ModelSetEvent","s","lang","slice","setAttribute","connectedCallback","disconnectedCallback","unmount","exports"],"sources":["../src/index.js"],"sourcesContent":["import React from 'react';\nimport { createRoot } from 'react-dom/client';\nimport { ModelSetEvent, SessionChangedEvent } from '@pie-framework/pie-player-events';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport InlineDropdown from './inline-dropdown';\n\nexport default class RootInlineDropdown extends HTMLElement {\n constructor() {\n super();\n this._model = null;\n this._session = null;\n this._root = null;\n }\n set model(m) {\n this._model = m;\n this.dispatchEvent(\n new ModelSetEvent(this.tagName.toLowerCase(), this.session && !!this.session.value, !!this._model),\n );\n\n this._render();\n }\n\n set session(s) {\n this._session = s;\n this._render();\n }\n\n get session() {\n return this._session;\n }\n\n setLangAttribute() {\n const language = this._model && typeof this._model.language ? this._model.language : '';\n const lang = language ? language.slice(0, 2) : 'en';\n this.setAttribute('lang', lang);\n }\n\n _render = () => {\n if (this._model && this._session) {\n let elem = React.createElement(InlineDropdown, {\n model: this._model,\n prompt: this._model.prompt,\n rationale: this._model.rationale,\n teacherInstructions: this._model.teacherInstructions,\n disabled: this._model.disabled,\n displayType: this._model.displayType,\n markup: this._model.markup,\n mode: this._model.mode,\n choices: this._model.choices,\n value: this._session.value,\n feedback: this._model.feedback,\n language: this._model.language,\n onChange: this.changeSession,\n });\n\n this.setLangAttribute();\n\n if (!this._root) {\n this._root = createRoot(this);\n }\n this._root.render(elem);\n queueMicrotask(() => {\n renderMath(this);\n });\n }\n };\n\n dispatchChangedEvent = () => {\n this.dispatchEvent(new SessionChangedEvent(this.tagName.toLowerCase(), this.session && !!this.session.value));\n };\n\n changeSession = (value) => {\n this.session.value = value;\n this.dispatchChangedEvent();\n this._render();\n };\n\n connectedCallback() {\n this.setAttribute('aria-label', 'Inline Dropdown Question');\n this.setAttribute('role', 'region');\n\n this._render();\n }\n\n disconnectedCallback() {\n if (this._root) {\n this._root.unmount();\n this._root = null;\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = exports.InlineDropdown = void 0;
|
|
8
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
9
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
10
|
+
var _react = _interopRequireDefault(require("react"));
|
|
11
|
+
var _reactDom = _interopRequireDefault(require("react-dom"));
|
|
12
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
13
|
+
var _lodashEs = require("lodash-es");
|
|
14
|
+
var _correctAnswerToggle = _interopRequireDefault(require("@pie-lib/correct-answer-toggle"));
|
|
15
|
+
var _maskMarkup = require("@pie-lib/mask-markup");
|
|
16
|
+
var _renderUi = require("@pie-lib/render-ui");
|
|
17
|
+
var _mathRendering = require("@pie-lib/math-rendering");
|
|
18
|
+
var _styles = require("@mui/material/styles");
|
|
19
|
+
const StyledUiLayout = (0, _styles.styled)(_renderUi.UiLayout)({
|
|
20
|
+
color: _renderUi.color.text(),
|
|
21
|
+
backgroundColor: _renderUi.color.background()
|
|
22
|
+
});
|
|
23
|
+
const StyledCollapsible = (0, _styles.styled)(_renderUi.Collapsible)(({
|
|
24
|
+
theme
|
|
25
|
+
}) => ({
|
|
26
|
+
marginBottom: theme.spacing(2)
|
|
27
|
+
}));
|
|
28
|
+
const ChoiceRationaleWrapper = (0, _styles.styled)('div')(({
|
|
29
|
+
theme
|
|
30
|
+
}) => ({
|
|
31
|
+
'&:not(:last-child)': {
|
|
32
|
+
marginBottom: theme.spacing(2)
|
|
33
|
+
}
|
|
34
|
+
}));
|
|
35
|
+
const ChoiceRationale = (0, _styles.styled)('div')({
|
|
36
|
+
display: 'flex',
|
|
37
|
+
whiteSpace: 'break-spaces'
|
|
38
|
+
});
|
|
39
|
+
const ChoiceRationaleLabel = (0, _styles.styled)('div')(({
|
|
40
|
+
correct
|
|
41
|
+
}) => ({
|
|
42
|
+
display: 'flex',
|
|
43
|
+
...(correct ? {
|
|
44
|
+
color: _renderUi.color.correct()
|
|
45
|
+
} : {
|
|
46
|
+
color: _renderUi.color.incorrectWithIcon()
|
|
47
|
+
})
|
|
48
|
+
}));
|
|
49
|
+
const SrOnly = (0, _styles.styled)('h2')({
|
|
50
|
+
position: 'absolute',
|
|
51
|
+
left: '-10000px',
|
|
52
|
+
top: 'auto',
|
|
53
|
+
width: '1px',
|
|
54
|
+
height: '1px',
|
|
55
|
+
overflow: 'hidden'
|
|
56
|
+
});
|
|
57
|
+
class InlineDropdown extends _react.default.Component {
|
|
58
|
+
constructor(...args) {
|
|
59
|
+
super(...args);
|
|
60
|
+
(0, _defineProperty2.default)(this, "state", {
|
|
61
|
+
showCorrectAnswer: false
|
|
62
|
+
});
|
|
63
|
+
(0, _defineProperty2.default)(this, "toggleShowCorrect", () => {
|
|
64
|
+
this.setState({
|
|
65
|
+
showCorrectAnswer: !this.state.showCorrectAnswer
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
UNSAFE_componentWillReceiveProps(nextProps) {
|
|
70
|
+
if ((0, _lodashEs.isEmpty)(nextProps.feedback)) {
|
|
71
|
+
this.setState({
|
|
72
|
+
showCorrectAnswer: false
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
componentDidUpdate() {
|
|
77
|
+
// eslint-disable-next-line
|
|
78
|
+
const domNode = _reactDom.default.findDOMNode(this);
|
|
79
|
+
(0, _mathRendering.renderMath)(domNode);
|
|
80
|
+
}
|
|
81
|
+
render() {
|
|
82
|
+
const {
|
|
83
|
+
showCorrectAnswer
|
|
84
|
+
} = this.state;
|
|
85
|
+
const {
|
|
86
|
+
prompt,
|
|
87
|
+
mode,
|
|
88
|
+
model,
|
|
89
|
+
rationale,
|
|
90
|
+
teacherInstructions,
|
|
91
|
+
choices,
|
|
92
|
+
displayType,
|
|
93
|
+
language
|
|
94
|
+
} = this.props;
|
|
95
|
+
const {
|
|
96
|
+
extraCSSRules
|
|
97
|
+
} = model || {};
|
|
98
|
+
const showCorrectAnswerToggle = mode === 'evaluate';
|
|
99
|
+
let choiceRationalesHaveText = false;
|
|
100
|
+
const showRationale = rationale && ((0, _renderUi.hasText)(rationale) || (0, _renderUi.hasMedia)(rationale));
|
|
101
|
+
const showTeacherInstructions = teacherInstructions && ((0, _renderUi.hasText)(teacherInstructions) || (0, _renderUi.hasMedia)(teacherInstructions));
|
|
102
|
+
const choiceRationales = (Object.keys(choices) || []).map(key => (choices[key] || []).reduce((acc, currentValue) => {
|
|
103
|
+
if (currentValue.rationale && (0, _renderUi.hasText)(currentValue.rationale)) {
|
|
104
|
+
choiceRationalesHaveText = true;
|
|
105
|
+
acc.push(currentValue);
|
|
106
|
+
}
|
|
107
|
+
return acc;
|
|
108
|
+
}, []));
|
|
109
|
+
return /*#__PURE__*/_react.default.createElement(StyledUiLayout, {
|
|
110
|
+
extraCSSRules: extraCSSRules,
|
|
111
|
+
style: {
|
|
112
|
+
display: `${displayType}`
|
|
113
|
+
}
|
|
114
|
+
}, mode === 'gather' && /*#__PURE__*/_react.default.createElement(SrOnly, null, "Inline Dropdown Question"), showTeacherInstructions && /*#__PURE__*/_react.default.createElement(StyledCollapsible, {
|
|
115
|
+
labels: {
|
|
116
|
+
hidden: 'Show Teacher Instructions',
|
|
117
|
+
visible: 'Hide Teacher Instructions'
|
|
118
|
+
}
|
|
119
|
+
}, /*#__PURE__*/_react.default.createElement(_renderUi.PreviewPrompt, {
|
|
120
|
+
prompt: teacherInstructions
|
|
121
|
+
})), prompt && /*#__PURE__*/_react.default.createElement(_renderUi.PreviewPrompt, {
|
|
122
|
+
prompt: prompt
|
|
123
|
+
}), /*#__PURE__*/_react.default.createElement(_correctAnswerToggle.default, {
|
|
124
|
+
show: showCorrectAnswerToggle,
|
|
125
|
+
toggled: showCorrectAnswer,
|
|
126
|
+
onToggle: this.toggleShowCorrect,
|
|
127
|
+
language: language
|
|
128
|
+
}), /*#__PURE__*/_react.default.createElement(_maskMarkup.InlineDropdown, (0, _extends2.default)({}, this.props, {
|
|
129
|
+
showCorrectAnswer: showCorrectAnswer
|
|
130
|
+
})), choiceRationalesHaveText && /*#__PURE__*/_react.default.createElement(StyledCollapsible, {
|
|
131
|
+
labels: {
|
|
132
|
+
hidden: 'Show Rationale for choices',
|
|
133
|
+
visible: 'Hide Rationale for choices'
|
|
134
|
+
}
|
|
135
|
+
}, choiceRationales.map((choices, index) => /*#__PURE__*/_react.default.createElement(ChoiceRationaleWrapper, {
|
|
136
|
+
key: index
|
|
137
|
+
}, choices?.length > 0 && choices.map(choice => /*#__PURE__*/_react.default.createElement(ChoiceRationale, {
|
|
138
|
+
key: choice.label
|
|
139
|
+
}, /*#__PURE__*/_react.default.createElement(ChoiceRationaleLabel, {
|
|
140
|
+
correct: choice.correct,
|
|
141
|
+
dangerouslySetInnerHTML: {
|
|
142
|
+
__html: `${choice.label}: `
|
|
143
|
+
}
|
|
144
|
+
}), /*#__PURE__*/_react.default.createElement(_renderUi.PreviewPrompt, {
|
|
145
|
+
prompt: choice.rationale
|
|
146
|
+
})))))), showRationale && /*#__PURE__*/_react.default.createElement(_renderUi.Collapsible, {
|
|
147
|
+
labels: {
|
|
148
|
+
hidden: 'Show Rationale',
|
|
149
|
+
visible: 'Hide Rationale'
|
|
150
|
+
}
|
|
151
|
+
}, /*#__PURE__*/_react.default.createElement(_renderUi.PreviewPrompt, {
|
|
152
|
+
prompt: rationale
|
|
153
|
+
})));
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
exports.InlineDropdown = InlineDropdown;
|
|
157
|
+
(0, _defineProperty2.default)(InlineDropdown, "propTypes", {
|
|
158
|
+
prompt: _propTypes.default.string,
|
|
159
|
+
disabled: _propTypes.default.bool,
|
|
160
|
+
markup: _propTypes.default.string,
|
|
161
|
+
mode: _propTypes.default.string,
|
|
162
|
+
displayType: _propTypes.default.string,
|
|
163
|
+
rationale: _propTypes.default.string,
|
|
164
|
+
teacherInstructions: _propTypes.default.string,
|
|
165
|
+
model: _propTypes.default.object.isRequired,
|
|
166
|
+
choices: _propTypes.default.object,
|
|
167
|
+
value: _propTypes.default.object,
|
|
168
|
+
feedback: _propTypes.default.object,
|
|
169
|
+
onChange: _propTypes.default.func,
|
|
170
|
+
language: _propTypes.default.string
|
|
171
|
+
});
|
|
172
|
+
(0, _defineProperty2.default)(InlineDropdown, "defaultProps", {
|
|
173
|
+
value: {}
|
|
174
|
+
});
|
|
175
|
+
var _default = exports.default = InlineDropdown;
|
|
176
|
+
//# sourceMappingURL=inline-dropdown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inline-dropdown.js","names":["_react","_interopRequireDefault","require","_reactDom","_propTypes","_lodashEs","_correctAnswerToggle","_maskMarkup","_renderUi","_mathRendering","_styles","StyledUiLayout","styled","UiLayout","color","text","backgroundColor","background","StyledCollapsible","Collapsible","theme","marginBottom","spacing","ChoiceRationaleWrapper","ChoiceRationale","display","whiteSpace","ChoiceRationaleLabel","correct","incorrectWithIcon","SrOnly","position","left","top","width","height","overflow","InlineDropdown","React","Component","constructor","args","_defineProperty2","default","showCorrectAnswer","setState","state","UNSAFE_componentWillReceiveProps","nextProps","isEmpty","feedback","componentDidUpdate","domNode","ReactDOM","findDOMNode","renderMath","render","prompt","mode","model","rationale","teacherInstructions","choices","displayType","language","props","extraCSSRules","showCorrectAnswerToggle","choiceRationalesHaveText","showRationale","hasText","hasMedia","showTeacherInstructions","choiceRationales","Object","keys","map","key","reduce","acc","currentValue","push","createElement","style","labels","hidden","visible","PreviewPrompt","show","toggled","onToggle","toggleShowCorrect","_extends2","index","length","choice","label","dangerouslySetInnerHTML","__html","exports","PropTypes","string","disabled","bool","markup","object","isRequired","value","onChange","func","_default"],"sources":["../src/inline-dropdown.jsx"],"sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { isEmpty } from 'lodash-es';\nimport CorrectAnswerToggle from '@pie-lib/correct-answer-toggle';\nimport { InlineDropdown as DropDown } from '@pie-lib/mask-markup';\nimport { color, Collapsible, hasText, hasMedia, PreviewPrompt, UiLayout } from '@pie-lib/render-ui';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport { styled } from '@mui/material/styles';\n\nconst StyledUiLayout = styled(UiLayout)({\n color: color.text(),\n backgroundColor: color.background(),\n});\n\nconst StyledCollapsible = styled(Collapsible)(({ theme }) => ({\n marginBottom: theme.spacing(2),\n}));\n\nconst ChoiceRationaleWrapper = styled('div')(({ theme }) => ({\n '&:not(:last-child)': {\n marginBottom: theme.spacing(2),\n },\n}));\n\nconst ChoiceRationale = styled('div')({\n display: 'flex',\n whiteSpace: 'break-spaces',\n});\n\nconst ChoiceRationaleLabel = styled('div')(({ correct }) => ({\n display: 'flex',\n ...(correct\n ? {\n color: color.correct(),\n }\n : {\n color: color.incorrectWithIcon(),\n }),\n}));\n\nconst SrOnly = styled('h2')({\n position: 'absolute',\n left: '-10000px',\n top: 'auto',\n width: '1px',\n height: '1px',\n overflow: 'hidden',\n});\n\nexport class InlineDropdown extends React.Component {\n static propTypes = {\n prompt: PropTypes.string,\n disabled: PropTypes.bool,\n markup: PropTypes.string,\n mode: PropTypes.string,\n displayType: PropTypes.string,\n rationale: PropTypes.string,\n teacherInstructions: PropTypes.string,\n model: PropTypes.object.isRequired,\n choices: PropTypes.object,\n value: PropTypes.object,\n feedback: PropTypes.object,\n onChange: PropTypes.func,\n language: PropTypes.string,\n };\n\n static defaultProps = {\n value: {},\n };\n\n state = {\n showCorrectAnswer: false,\n };\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (isEmpty(nextProps.feedback)) {\n this.setState({ showCorrectAnswer: false });\n }\n }\n\n componentDidUpdate() {\n // eslint-disable-next-line\n const domNode = ReactDOM.findDOMNode(this);\n\n renderMath(domNode);\n }\n\n toggleShowCorrect = () => {\n this.setState({ showCorrectAnswer: !this.state.showCorrectAnswer });\n };\n\n render() {\n const { showCorrectAnswer } = this.state;\n const { prompt, mode, model, rationale, teacherInstructions, choices, displayType, language } = this.props;\n const { extraCSSRules } = model || {};\n const showCorrectAnswerToggle = mode === 'evaluate';\n let choiceRationalesHaveText = false;\n const showRationale = rationale && (hasText(rationale) || hasMedia(rationale));\n const showTeacherInstructions =\n teacherInstructions && (hasText(teacherInstructions) || hasMedia(teacherInstructions));\n\n const choiceRationales = (Object.keys(choices) || []).map((key) =>\n (choices[key] || []).reduce((acc, currentValue) => {\n if (currentValue.rationale && hasText(currentValue.rationale)) {\n choiceRationalesHaveText = true;\n\n acc.push(currentValue);\n }\n\n return acc;\n }, []),\n );\n\n return (\n <StyledUiLayout extraCSSRules={extraCSSRules} style={{ display: `${displayType}` }}>\n {mode === 'gather' && <SrOnly>Inline Dropdown Question</SrOnly>}\n\n {showTeacherInstructions && (\n <StyledCollapsible\n labels={{ hidden: 'Show Teacher Instructions', visible: 'Hide Teacher Instructions' }}\n >\n <PreviewPrompt prompt={teacherInstructions} />\n </StyledCollapsible>\n )}\n\n {prompt && <PreviewPrompt prompt={prompt} />}\n\n <CorrectAnswerToggle\n show={showCorrectAnswerToggle}\n toggled={showCorrectAnswer}\n onToggle={this.toggleShowCorrect}\n language={language}\n />\n\n <DropDown {...this.props} showCorrectAnswer={showCorrectAnswer} />\n\n {choiceRationalesHaveText && (\n <StyledCollapsible\n labels={{ hidden: 'Show Rationale for choices', visible: 'Hide Rationale for choices' }}\n >\n {choiceRationales.map((choices, index) => (\n <ChoiceRationaleWrapper key={index}>\n {choices?.length > 0 &&\n choices.map((choice) => (\n <ChoiceRationale key={choice.label}>\n <ChoiceRationaleLabel\n correct={choice.correct}\n dangerouslySetInnerHTML={{ __html: `${choice.label}: ` }}\n />\n <PreviewPrompt prompt={choice.rationale} />\n </ChoiceRationale>\n ))}\n </ChoiceRationaleWrapper>\n ))}\n </StyledCollapsible>\n )}\n\n {showRationale && (\n <Collapsible labels={{ hidden: 'Show Rationale', visible: 'Hide Rationale' }}>\n <PreviewPrompt prompt={rationale} />\n </Collapsible>\n )}\n </StyledUiLayout>\n );\n }\n}\n\nexport default InlineDropdown;\n"],"mappings":";;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,SAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,UAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,SAAA,GAAAH,OAAA;AACA,IAAAI,oBAAA,GAAAL,sBAAA,CAAAC,OAAA;AACA,IAAAK,WAAA,GAAAL,OAAA;AACA,IAAAM,SAAA,GAAAN,OAAA;AACA,IAAAO,cAAA,GAAAP,OAAA;AACA,IAAAQ,OAAA,GAAAR,OAAA;AAEA,MAAMS,cAAc,GAAG,IAAAC,cAAM,EAACC,kBAAQ,CAAC,CAAC;EACtCC,KAAK,EAAEA,eAAK,CAACC,IAAI,CAAC,CAAC;EACnBC,eAAe,EAAEF,eAAK,CAACG,UAAU,CAAC;AACpC,CAAC,CAAC;AAEF,MAAMC,iBAAiB,GAAG,IAAAN,cAAM,EAACO,qBAAW,CAAC,CAAC,CAAC;EAAEC;AAAM,CAAC,MAAM;EAC5DC,YAAY,EAAED,KAAK,CAACE,OAAO,CAAC,CAAC;AAC/B,CAAC,CAAC,CAAC;AAEH,MAAMC,sBAAsB,GAAG,IAAAX,cAAM,EAAC,KAAK,CAAC,CAAC,CAAC;EAAEQ;AAAM,CAAC,MAAM;EAC3D,oBAAoB,EAAE;IACpBC,YAAY,EAAED,KAAK,CAACE,OAAO,CAAC,CAAC;EAC/B;AACF,CAAC,CAAC,CAAC;AAEH,MAAME,eAAe,GAAG,IAAAZ,cAAM,EAAC,KAAK,CAAC,CAAC;EACpCa,OAAO,EAAE,MAAM;EACfC,UAAU,EAAE;AACd,CAAC,CAAC;AAEF,MAAMC,oBAAoB,GAAG,IAAAf,cAAM,EAAC,KAAK,CAAC,CAAC,CAAC;EAAEgB;AAAQ,CAAC,MAAM;EAC3DH,OAAO,EAAE,MAAM;EACf,IAAIG,OAAO,GACP;IACEd,KAAK,EAAEA,eAAK,CAACc,OAAO,CAAC;EACvB,CAAC,GACD;IACEd,KAAK,EAAEA,eAAK,CAACe,iBAAiB,CAAC;EACjC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,MAAMC,MAAM,GAAG,IAAAlB,cAAM,EAAC,IAAI,CAAC,CAAC;EAC1BmB,QAAQ,EAAE,UAAU;EACpBC,IAAI,EAAE,UAAU;EAChBC,GAAG,EAAE,MAAM;EACXC,KAAK,EAAE,KAAK;EACZC,MAAM,EAAE,KAAK;EACbC,QAAQ,EAAE;AACZ,CAAC,CAAC;AAEK,MAAMC,cAAc,SAASC,cAAK,CAACC,SAAS,CAAC;EAAAC,YAAA,GAAAC,IAAA;IAAA,SAAAA,IAAA;IAAA,IAAAC,gBAAA,CAAAC,OAAA,iBAqB1C;MACNC,iBAAiB,EAAE;IACrB,CAAC;IAAA,IAAAF,gBAAA,CAAAC,OAAA,6BAemB,MAAM;MACxB,IAAI,CAACE,QAAQ,CAAC;QAAED,iBAAiB,EAAE,CAAC,IAAI,CAACE,KAAK,CAACF;MAAkB,CAAC,CAAC;IACrE,CAAC;EAAA;EAfDG,gCAAgCA,CAACC,SAAS,EAAE;IAC1C,IAAI,IAAAC,iBAAO,EAACD,SAAS,CAACE,QAAQ,CAAC,EAAE;MAC/B,IAAI,CAACL,QAAQ,CAAC;QAAED,iBAAiB,EAAE;MAAM,CAAC,CAAC;IAC7C;EACF;EAEAO,kBAAkBA,CAAA,EAAG;IACnB;IACA,MAAMC,OAAO,GAAGC,iBAAQ,CAACC,WAAW,CAAC,IAAI,CAAC;IAE1C,IAAAC,yBAAU,EAACH,OAAO,CAAC;EACrB;EAMAI,MAAMA,CAAA,EAAG;IACP,MAAM;MAAEZ;IAAkB,CAAC,GAAG,IAAI,CAACE,KAAK;IACxC,MAAM;MAAEW,MAAM;MAAEC,IAAI;MAAEC,KAAK;MAAEC,SAAS;MAAEC,mBAAmB;MAAEC,OAAO;MAAEC,WAAW;MAAEC;IAAS,CAAC,GAAG,IAAI,CAACC,KAAK;IAC1G,MAAM;MAAEC;IAAc,CAAC,GAAGP,KAAK,IAAI,CAAC,CAAC;IACrC,MAAMQ,uBAAuB,GAAGT,IAAI,KAAK,UAAU;IACnD,IAAIU,wBAAwB,GAAG,KAAK;IACpC,MAAMC,aAAa,GAAGT,SAAS,KAAK,IAAAU,iBAAO,EAACV,SAAS,CAAC,IAAI,IAAAW,kBAAQ,EAACX,SAAS,CAAC,CAAC;IAC9E,MAAMY,uBAAuB,GAC3BX,mBAAmB,KAAK,IAAAS,iBAAO,EAACT,mBAAmB,CAAC,IAAI,IAAAU,kBAAQ,EAACV,mBAAmB,CAAC,CAAC;IAExF,MAAMY,gBAAgB,GAAG,CAACC,MAAM,CAACC,IAAI,CAACb,OAAO,CAAC,IAAI,EAAE,EAAEc,GAAG,CAAEC,GAAG,IAC5D,CAACf,OAAO,CAACe,GAAG,CAAC,IAAI,EAAE,EAAEC,MAAM,CAAC,CAACC,GAAG,EAAEC,YAAY,KAAK;MACjD,IAAIA,YAAY,CAACpB,SAAS,IAAI,IAAAU,iBAAO,EAACU,YAAY,CAACpB,SAAS,CAAC,EAAE;QAC7DQ,wBAAwB,GAAG,IAAI;QAE/BW,GAAG,CAACE,IAAI,CAACD,YAAY,CAAC;MACxB;MAEA,OAAOD,GAAG;IACZ,CAAC,EAAE,EAAE,CACP,CAAC;IAED,oBACE/E,MAAA,CAAA2C,OAAA,CAAAuC,aAAA,CAACvE,cAAc;MAACuD,aAAa,EAAEA,aAAc;MAACiB,KAAK,EAAE;QAAE1D,OAAO,EAAE,GAAGsC,WAAW;MAAG;IAAE,GAChFL,IAAI,KAAK,QAAQ,iBAAI1D,MAAA,CAAA2C,OAAA,CAAAuC,aAAA,CAACpD,MAAM,QAAC,0BAAgC,CAAC,EAE9D0C,uBAAuB,iBACtBxE,MAAA,CAAA2C,OAAA,CAAAuC,aAAA,CAAChE,iBAAiB;MAChBkE,MAAM,EAAE;QAAEC,MAAM,EAAE,2BAA2B;QAAEC,OAAO,EAAE;MAA4B;IAAE,gBAEtFtF,MAAA,CAAA2C,OAAA,CAAAuC,aAAA,CAAC1E,SAAA,CAAA+E,aAAa;MAAC9B,MAAM,EAAEI;IAAoB,CAAE,CAC5B,CACpB,EAEAJ,MAAM,iBAAIzD,MAAA,CAAA2C,OAAA,CAAAuC,aAAA,CAAC1E,SAAA,CAAA+E,aAAa;MAAC9B,MAAM,EAAEA;IAAO,CAAE,CAAC,eAE5CzD,MAAA,CAAA2C,OAAA,CAAAuC,aAAA,CAAC5E,oBAAA,CAAAqC,OAAmB;MAClB6C,IAAI,EAAErB,uBAAwB;MAC9BsB,OAAO,EAAE7C,iBAAkB;MAC3B8C,QAAQ,EAAE,IAAI,CAACC,iBAAkB;MACjC3B,QAAQ,EAAEA;IAAS,CACpB,CAAC,eAEFhE,MAAA,CAAA2C,OAAA,CAAAuC,aAAA,CAAC3E,WAAA,CAAA8B,cAAQ,MAAAuD,SAAA,CAAAjD,OAAA,MAAK,IAAI,CAACsB,KAAK;MAAErB,iBAAiB,EAAEA;IAAkB,EAAE,CAAC,EAEjEwB,wBAAwB,iBACvBpE,MAAA,CAAA2C,OAAA,CAAAuC,aAAA,CAAChE,iBAAiB;MAChBkE,MAAM,EAAE;QAAEC,MAAM,EAAE,4BAA4B;QAAEC,OAAO,EAAE;MAA6B;IAAE,GAEvFb,gBAAgB,CAACG,GAAG,CAAC,CAACd,OAAO,EAAE+B,KAAK,kBACnC7F,MAAA,CAAA2C,OAAA,CAAAuC,aAAA,CAAC3D,sBAAsB;MAACsD,GAAG,EAAEgB;IAAM,GAChC/B,OAAO,EAAEgC,MAAM,GAAG,CAAC,IAClBhC,OAAO,CAACc,GAAG,CAAEmB,MAAM,iBACjB/F,MAAA,CAAA2C,OAAA,CAAAuC,aAAA,CAAC1D,eAAe;MAACqD,GAAG,EAAEkB,MAAM,CAACC;IAAM,gBACjChG,MAAA,CAAA2C,OAAA,CAAAuC,aAAA,CAACvD,oBAAoB;MACnBC,OAAO,EAAEmE,MAAM,CAACnE,OAAQ;MACxBqE,uBAAuB,EAAE;QAAEC,MAAM,EAAE,GAAGH,MAAM,CAACC,KAAK;MAAK;IAAE,CAC1D,CAAC,eACFhG,MAAA,CAAA2C,OAAA,CAAAuC,aAAA,CAAC1E,SAAA,CAAA+E,aAAa;MAAC9B,MAAM,EAAEsC,MAAM,CAACnC;IAAU,CAAE,CAC3B,CAClB,CACmB,CACzB,CACgB,CACpB,EAEAS,aAAa,iBACZrE,MAAA,CAAA2C,OAAA,CAAAuC,aAAA,CAAC1E,SAAA,CAAAW,WAAW;MAACiE,MAAM,EAAE;QAAEC,MAAM,EAAE,gBAAgB;QAAEC,OAAO,EAAE;MAAiB;IAAE,gBAC3EtF,MAAA,CAAA2C,OAAA,CAAAuC,aAAA,CAAC1E,SAAA,CAAA+E,aAAa;MAAC9B,MAAM,EAAEG;IAAU,CAAE,CACxB,CAED,CAAC;EAErB;AACF;AAACuC,OAAA,CAAA9D,cAAA,GAAAA,cAAA;AAAA,IAAAK,gBAAA,CAAAC,OAAA,EApHYN,cAAc,eACN;EACjBoB,MAAM,EAAE2C,kBAAS,CAACC,MAAM;EACxBC,QAAQ,EAAEF,kBAAS,CAACG,IAAI;EACxBC,MAAM,EAAEJ,kBAAS,CAACC,MAAM;EACxB3C,IAAI,EAAE0C,kBAAS,CAACC,MAAM;EACtBtC,WAAW,EAAEqC,kBAAS,CAACC,MAAM;EAC7BzC,SAAS,EAAEwC,kBAAS,CAACC,MAAM;EAC3BxC,mBAAmB,EAAEuC,kBAAS,CAACC,MAAM;EACrC1C,KAAK,EAAEyC,kBAAS,CAACK,MAAM,CAACC,UAAU;EAClC5C,OAAO,EAAEsC,kBAAS,CAACK,MAAM;EACzBE,KAAK,EAAEP,kBAAS,CAACK,MAAM;EACvBvD,QAAQ,EAAEkD,kBAAS,CAACK,MAAM;EAC1BG,QAAQ,EAAER,kBAAS,CAACS,IAAI;EACxB7C,QAAQ,EAAEoC,kBAAS,CAACC;AACtB,CAAC;AAAA,IAAA3D,gBAAA,CAAAC,OAAA,EAfUN,cAAc,kBAiBH;EACpBsE,KAAK,EAAE,CAAC;AACV,CAAC;AAAA,IAAAG,QAAA,GAAAX,OAAA,CAAAxD,OAAA,GAmGYN,cAAc","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
7
|
-
"version": "10.2.2-beta.
|
|
7
|
+
"version": "10.2.2-beta.8",
|
|
8
8
|
"description": "",
|
|
9
9
|
"scripts": {
|
|
10
10
|
"postpublish": "../../scripts/postpublish"
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"@mui/material": "^7.3.4",
|
|
17
17
|
"@pie-framework/pie-player-events": "^0.1.0",
|
|
18
18
|
"@pie-lib/correct-answer-toggle": "4.0.5",
|
|
19
|
-
"@pie-lib/mask-markup": "3.1.6-beta.
|
|
19
|
+
"@pie-lib/mask-markup": "3.1.6-beta.3",
|
|
20
20
|
"@pie-lib/math-rendering": "5.1.0",
|
|
21
21
|
"@pie-lib/render-ui": "6.1.3",
|
|
22
22
|
"lodash-es": "^4.17.23",
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
},
|
|
27
27
|
"author": "",
|
|
28
28
|
"license": "ISC",
|
|
29
|
-
"gitHead": "
|
|
29
|
+
"gitHead": "675f5eade074184bdce556c2fac16b95d2bf1c60",
|
|
30
30
|
"main": "lib/index.js",
|
|
31
31
|
"module": "src/index.js"
|
|
32
32
|
}
|