@pie-element/explicit-constructed-response 11.2.2-beta.4 → 11.2.2-beta.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/configure/CHANGELOG.md +8 -0
  3. package/configure/package.json +3 -3
  4. package/controller/CHANGELOG.md +8 -0
  5. package/controller/package.json +1 -1
  6. package/package.json +3 -3
  7. package/configure/lib/__tests__/alternateResponses.test.js +0 -503
  8. package/configure/lib/__tests__/alternateSection.test.js +0 -372
  9. package/configure/lib/__tests__/ecr-toolbar.test.js +0 -214
  10. package/configure/lib/__tests__/main.test.js +0 -470
  11. package/configure/lib/__tests__/markupUtils.test.js +0 -55
  12. package/configure/lib/__tests__/utils.test.js +0 -62
  13. package/configure/lib/alternateResponses.js +0 -199
  14. package/configure/lib/alternateResponses.js.map +0 -1
  15. package/configure/lib/alternateSection.js +0 -329
  16. package/configure/lib/alternateSection.js.map +0 -1
  17. package/configure/lib/defaults.js +0 -184
  18. package/configure/lib/defaults.js.map +0 -1
  19. package/configure/lib/ecr-toolbar.js +0 -181
  20. package/configure/lib/ecr-toolbar.js.map +0 -1
  21. package/configure/lib/index.js +0 -165
  22. package/configure/lib/index.js.map +0 -1
  23. package/configure/lib/main.js +0 -501
  24. package/configure/lib/main.js.map +0 -1
  25. package/configure/lib/markupUtils.js +0 -70
  26. package/configure/lib/markupUtils.js.map +0 -1
  27. package/configure/lib/utils.js +0 -15
  28. package/configure/lib/utils.js.map +0 -1
  29. package/controller/lib/__tests__/index.spec.js +0 -30
  30. package/controller/lib/__tests__/index.test.js +0 -950
  31. package/controller/lib/defaults.js +0 -23
  32. package/controller/lib/defaults.js.map +0 -1
  33. package/controller/lib/index.js +0 -368
  34. package/controller/lib/index.js.map +0 -1
  35. package/docs/demo/pie.manifest.json +0 -11
  36. package/lib/__tests__/main.test.js +0 -166
  37. package/lib/index.js +0 -92
  38. package/lib/index.js.map +0 -1
  39. package/lib/main.js +0 -205
  40. package/lib/main.js.map +0 -1
  41. package/lib/print.js +0 -71
  42. package/lib/print.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"markupUtils.js","names":["_lodashEs","require","tSymbols","nSymbols","matchTabAndNewLine","RegExp","removeUnwantedCharacters","markup","replace","exports","createElementFromHTML","htmlString","div","document","createElement","innerHTML","trim","processMarkup","newMarkup","slateMarkup","index","querySelectorAll","forEach","s","replaceWith","REGEX","createSlateMarkup","choices","match","g","label","escape","getAdjustedLength","length","stripHtmlTags","decodeHTML","html","doc","DOMParser","parseFromString","body","textContent"],"sources":["../src/markupUtils.js"],"sourcesContent":["import { escape } from 'lodash-es';\n\n// do not remove \\t from \\times, \\triangle, \\tan, \\theta or \\therefore\nconst tSymbols = 'imes|riangle|an|heta|herefore';\n// do not remove \\n from \\nthroot, \\nparallel, \\ncong, \\napprox, \\neq, \\ne or \\nsim\nconst nSymbols = 'throot|parallel|cong|approx|eq|e|sim';\n// match all \\t and \\n that are not part of math symbols that starts with \\t or \\n\nconst matchTabAndNewLine = new RegExp(\n `(\\\\t(?!${tSymbols}))|(\\\\n(?!${nSymbols}))|(\\\\\\\\t(?!${tSymbols}))|(\\\\\\\\n(?!${nSymbols}))`,\n 'g',\n);\n\nexport const removeUnwantedCharacters = (markup) =>\n markup.replace(matchTabAndNewLine, '').replace(/\\\\\"/g, '\"').replace(/\\\\\\//g, '/');\n\nconst createElementFromHTML = (htmlString = '') => {\n const div = document.createElement('div');\n\n div.innerHTML = htmlString.trim();\n\n return div;\n};\n\nexport const processMarkup = (markup) => {\n const newMarkup = removeUnwantedCharacters(markup || '');\n const slateMarkup = createElementFromHTML(newMarkup || '');\n let index = 0;\n\n slateMarkup.querySelectorAll('[data-type=\"explicit_constructed_response\"]').forEach((s) => {\n s.replaceWith(`{{${index++}}}`);\n });\n\n return slateMarkup.innerHTML;\n};\n\nconst REGEX = /\\{\\{(\\d+)\\}\\}/g;\n\nexport const createSlateMarkup = (markup, choices) => {\n if (!markup) {\n return '';\n }\n\n const newMarkup = removeUnwantedCharacters(markup);\n\n return newMarkup.replace(REGEX, (match, g) => {\n const label = choices[g][0].label || '';\n\n return `<span data-type=\"explicit_constructed_response\" data-index=\"${g}\" data-value=\"${escape(label)}\"></span>`;\n });\n};\n\n// also used in controller/src/index.js\nexport const getAdjustedLength = (length) => {\n if (length <= 2) {\n return length + 2;\n }\n\n if (length <= 4) {\n return length + 3;\n }\n\n if (length <= 6) {\n return length + 4;\n }\n\n return length + 5;\n};\n\nexport const stripHtmlTags = (markup) => {\n if (typeof markup !== 'string') {\n return '';\n }\n return markup.replace(/<\\/?[^>]+(>|$)/g, \"\");\n};\n\nexport const decodeHTML = (html) => {\n const doc = new DOMParser().parseFromString(html, 'text/html');\n return doc.body.textContent || '';\n};\n"],"mappings":"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","ignoreList":[]}
@@ -1,15 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.generateValidationMessage = void 0;
7
- const generateValidationMessage = config => {
8
- const {
9
- maxResponseAreas
10
- } = config;
11
- const responseAreasMessage = '\nCorrect answers should not be blank.' + '\nEach answer defined for a response area should be unique.' + '\nThere should be at least 1 ' + (maxResponseAreas ? `and at most ${maxResponseAreas} ` : '') + 'response area' + (maxResponseAreas ? 's' : '') + ' defined.';
12
- return 'Validation requirements:' + responseAreasMessage;
13
- };
14
- exports.generateValidationMessage = generateValidationMessage;
15
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","names":["generateValidationMessage","config","maxResponseAreas","responseAreasMessage","exports"],"sources":["../src/utils.js"],"sourcesContent":["export const generateValidationMessage = (config) => {\n const { maxResponseAreas } = config;\n\n const responseAreasMessage =\n '\\nCorrect answers should not be blank.' +\n '\\nEach answer defined for a response area should be unique.' +\n '\\nThere should be at least 1 ' +\n (maxResponseAreas ? `and at most ${maxResponseAreas} ` : '') +\n 'response area' +\n (maxResponseAreas ? 's' : '') +\n ' defined.';\n\n return 'Validation requirements:' + responseAreasMessage;\n};\n"],"mappings":";;;;;;AAAO,MAAMA,yBAAyB,GAAIC,MAAM,IAAK;EACnD,MAAM;IAAEC;EAAiB,CAAC,GAAGD,MAAM;EAEnC,MAAME,oBAAoB,GACxB,wCAAwC,GACxC,6DAA6D,GAC7D,+BAA+B,IAC9BD,gBAAgB,GAAG,eAAeA,gBAAgB,GAAG,GAAG,EAAE,CAAC,GAC5D,eAAe,IACdA,gBAAgB,GAAG,GAAG,GAAG,EAAE,CAAC,GAC7B,WAAW;EAEb,OAAO,0BAA0B,GAAGC,oBAAoB;AAC1D,CAAC;AAACC,OAAA,CAAAJ,yBAAA,GAAAA,yBAAA","ignoreList":[]}
@@ -1,30 +0,0 @@
1
- "use strict";
2
-
3
- var _index = require("../index");
4
- const choice = (l, v) => ({
5
- label: l,
6
- value: v
7
- });
8
- const d = {
9
- prompt: '',
10
- teacherInstructions: true,
11
- studentInstructions: false,
12
- choices: {
13
- 0: [choice('A', '0'), choice('B', '1')]
14
- },
15
- markup: '<p>\n <strong>Esta cuadrícula de coordenadas representa el diseño del salón de matemáticas de Valerie. Cada unidad en la cuadricula representa 1 pie cuadrado.&nbsp;</strong>\n</p>\n<p>\n <strong>* El escritorio de Valeria se encuentra en (-3,-4)</strong>\n</p>\n<p>\n <strong>* El escritorio de la maestra se encuentra en (5,-4)</strong>\n</p>\n<p>\n <strong>* El cuarto de materiales se encuentra&nbsp; en (-3,-7)</strong>\n</p>\n<p>\n <strong><img src="https://storage.googleapis.com/pie-staging-221718-assets/image/180d28b2-0376-428e-b415-de96e158b7e7" alt=""></strong>\n</p>\n<p>\n &nbsp;\n</p>\n<p>\n <strong>Anota la distancia, en pies, desde el escritorio de Valerie al cuarto de materiales.</strong>\n</p>\n<p>\n {{0}} <strong>pies</strong>\n</p>',
16
- id: '2422330',
17
- rubric: '',
18
- element: 'explicit-constructed-response-element',
19
- autoScoring: 'partial',
20
- rationale: ''
21
- };
22
- describe('edge cases', () => {
23
- it('does not throw an error if the session has no value', async () => {
24
- const result = (0, _index.model)(d, {}, {
25
- mode: 'evaluate'
26
- });
27
- expect(result).toBeDefined();
28
- });
29
- });
30
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfaW5kZXgiLCJyZXF1aXJlIiwiY2hvaWNlIiwibCIsInYiLCJsYWJlbCIsInZhbHVlIiwiZCIsInByb21wdCIsInRlYWNoZXJJbnN0cnVjdGlvbnMiLCJzdHVkZW50SW5zdHJ1Y3Rpb25zIiwiY2hvaWNlcyIsIm1hcmt1cCIsImlkIiwicnVicmljIiwiZWxlbWVudCIsImF1dG9TY29yaW5nIiwicmF0aW9uYWxlIiwiZGVzY3JpYmUiLCJpdCIsInJlc3VsdCIsIm1vZGVsIiwibW9kZSIsImV4cGVjdCIsInRvQmVEZWZpbmVkIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL19fdGVzdHNfXy9pbmRleC5zcGVjLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG1vZGVsIH0gZnJvbSAnLi4vaW5kZXgnO1xuXG5jb25zdCBjaG9pY2UgPSAobCwgdikgPT4gKHsgbGFiZWw6IGwsIHZhbHVlOiB2IH0pO1xuXG5jb25zdCBkID0ge1xuICBwcm9tcHQ6ICcnLFxuICB0ZWFjaGVySW5zdHJ1Y3Rpb25zOiB0cnVlLFxuICBzdHVkZW50SW5zdHJ1Y3Rpb25zOiBmYWxzZSxcbiAgY2hvaWNlczoge1xuICAgIDA6IFtjaG9pY2UoJ0EnLCAnMCcpLCBjaG9pY2UoJ0InLCAnMScpXSxcbiAgfSxcbiAgbWFya3VwOlxuICAgICc8cD5cXG4gIDxzdHJvbmc+RXN0YSBjdWFkcsOtY3VsYSBkZSBjb29yZGVuYWRhcyByZXByZXNlbnRhIGVsIGRpc2XDsW8gZGVsIHNhbMOzbiBkZSBtYXRlbcOhdGljYXMgZGUgVmFsZXJpZS4gQ2FkYSB1bmlkYWQgZW4gbGEgY3VhZHJpY3VsYSByZXByZXNlbnRhIDEgcGllIGN1YWRyYWRvLiZuYnNwOzwvc3Ryb25nPlxcbjwvcD5cXG48cD5cXG4gIDxzdHJvbmc+KiBFbCBlc2NyaXRvcmlvIGRlIFZhbGVyaWEgc2UgZW5jdWVudHJhIGVuICgtMywtNCk8L3N0cm9uZz5cXG48L3A+XFxuPHA+XFxuICA8c3Ryb25nPiogRWwgZXNjcml0b3JpbyBkZSBsYSBtYWVzdHJhIHNlIGVuY3VlbnRyYSBlbiAoNSwtNCk8L3N0cm9uZz5cXG48L3A+XFxuPHA+XFxuICA8c3Ryb25nPiogRWwgY3VhcnRvIGRlIG1hdGVyaWFsZXMgc2UgZW5jdWVudHJhJm5ic3A7IGVuICgtMywtNyk8L3N0cm9uZz5cXG48L3A+XFxuPHA+XFxuICA8c3Ryb25nPjxpbWcgc3JjPVwiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL3BpZS1zdGFnaW5nLTIyMTcxOC1hc3NldHMvaW1hZ2UvMTgwZDI4YjItMDM3Ni00MjhlLWI0MTUtZGU5NmUxNThiN2U3XCIgYWx0PVwiXCI+PC9zdHJvbmc+XFxuPC9wPlxcbjxwPlxcbiAgJm5ic3A7XFxuPC9wPlxcbjxwPlxcbiAgPHN0cm9uZz5Bbm90YSBsYSBkaXN0YW5jaWEsIGVuIHBpZXMsIGRlc2RlIGVsIGVzY3JpdG9yaW8gZGUgVmFsZXJpZSBhbCBjdWFydG8gZGUgbWF0ZXJpYWxlcy48L3N0cm9uZz5cXG48L3A+XFxuPHA+XFxuICB7ezB9fSA8c3Ryb25nPnBpZXM8L3N0cm9uZz5cXG48L3A+JyxcbiAgaWQ6ICcyNDIyMzMwJyxcbiAgcnVicmljOiAnJyxcbiAgZWxlbWVudDogJ2V4cGxpY2l0LWNvbnN0cnVjdGVkLXJlc3BvbnNlLWVsZW1lbnQnLFxuICBhdXRvU2NvcmluZzogJ3BhcnRpYWwnLFxuICByYXRpb25hbGU6ICcnLFxufTtcblxuZGVzY3JpYmUoJ2VkZ2UgY2FzZXMnLCAoKSA9PiB7XG4gIGl0KCdkb2VzIG5vdCB0aHJvdyBhbiBlcnJvciBpZiB0aGUgc2Vzc2lvbiBoYXMgbm8gdmFsdWUnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcmVzdWx0ID0gbW9kZWwoZCwge30sIHsgbW9kZTogJ2V2YWx1YXRlJyB9KTtcbiAgICBleHBlY3QocmVzdWx0KS50b0JlRGVmaW5lZCgpO1xuICB9KTtcbn0pO1xuIl0sIm1hcHBpbmdzIjoiOztBQUFBLElBQUFBLE1BQUEsR0FBQUMsT0FBQTtBQUVBLE1BQU1DLE1BQU0sR0FBR0EsQ0FBQ0MsQ0FBQyxFQUFFQyxDQUFDLE1BQU07RUFBRUMsS0FBSyxFQUFFRixDQUFDO0VBQUVHLEtBQUssRUFBRUY7QUFBRSxDQUFDLENBQUM7QUFFakQsTUFBTUcsQ0FBQyxHQUFHO0VBQ1JDLE1BQU0sRUFBRSxFQUFFO0VBQ1ZDLG1CQUFtQixFQUFFLElBQUk7RUFDekJDLG1CQUFtQixFQUFFLEtBQUs7RUFDMUJDLE9BQU8sRUFBRTtJQUNQLENBQUMsRUFBRSxDQUFDVCxNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFQSxNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQztFQUN4QyxDQUFDO0VBQ0RVLE1BQU0sRUFDSiw0dkJBQTR2QjtFQUM5dkJDLEVBQUUsRUFBRSxTQUFTO0VBQ2JDLE1BQU0sRUFBRSxFQUFFO0VBQ1ZDLE9BQU8sRUFBRSx1Q0FBdUM7RUFDaERDLFdBQVcsRUFBRSxTQUFTO0VBQ3RCQyxTQUFTLEVBQUU7QUFDYixDQUFDO0FBRURDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsTUFBTTtFQUMzQkMsRUFBRSxDQUFDLHFEQUFxRCxFQUFFLFlBQVk7SUFDcEUsTUFBTUMsTUFBTSxHQUFHLElBQUFDLFlBQUssRUFBQ2QsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFO01BQUVlLElBQUksRUFBRTtJQUFXLENBQUMsQ0FBQztJQUNqREMsTUFBTSxDQUFDSCxNQUFNLENBQUMsQ0FBQ0ksV0FBVyxDQUFDLENBQUM7RUFDOUIsQ0FBQyxDQUFDO0FBQ0osQ0FBQyxDQUFDIiwiaWdub3JlTGlzdCI6W119