@pie-element/image-cloze-association 4.16.1 → 4.16.2-next.2

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.
@@ -2,6 +2,8 @@
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
 
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
5
7
  Object.defineProperty(exports, "__esModule", {
6
8
  value: true
7
9
  });
@@ -25,13 +27,15 @@ var _react = _interopRequireDefault(require("react"));
25
27
 
26
28
  var _propTypes = _interopRequireDefault(require("prop-types"));
27
29
 
28
- var _configUi = require("@pie-lib/config-ui");
30
+ var _configUi = _interopRequireWildcard(require("@pie-lib/pie-toolbox/config-ui"));
29
31
 
30
- var _editableHtml = _interopRequireDefault(require("@pie-lib/editable-html"));
32
+ var _editableHtml = _interopRequireDefault(require("@pie-lib/pie-toolbox/editable-html"));
31
33
 
32
34
  var _styles = require("@material-ui/core/styles");
33
35
 
34
- var _settings = require("@pie-lib/config-ui/lib/settings");
36
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
37
+
38
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
35
39
 
36
40
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
37
41
 
@@ -41,6 +45,7 @@ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflec
41
45
 
42
46
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
43
47
 
48
+ var dropdown = _configUi["default"].dropdown;
44
49
  var Panel = _configUi.settings.Panel,
45
50
  toggle = _configUi.settings.toggle;
46
51
 
@@ -108,7 +113,7 @@ var Root = /*#__PURE__*/function (_React$Component) {
108
113
  spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label),
109
114
  rubricEnabled: (withRubric === null || withRubric === void 0 ? void 0 : withRubric.settings) && toggle(withRubric === null || withRubric === void 0 ? void 0 : withRubric.label),
110
115
  'language.enabled': language.settings && toggle(language.label, true),
111
- language: language.settings && language.enabled && (0, _settings.dropdown)(languageChoices.label, languageChoices.options)
116
+ language: language.settings && language.enabled && dropdown(languageChoices.label, languageChoices.options)
112
117
  };
113
118
  return /*#__PURE__*/_react["default"].createElement(_configUi.layout.ConfigLayout, {
114
119
  dimensions: contentDimensions,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/root.jsx"],"names":["Panel","settings","toggle","Root","teacherInstructions","props","onModelChanged","model","classes","configuration","onConfigurationChanged","imageSupport","uploadSoundSupport","contentDimensions","maxImageWidth","maxImageHeight","settingsPanelDisabled","spellCheck","withRubric","mathMlOptions","language","languageChoices","spellCheckEnabled","panelProperties","teacherInstructionsEnabled","label","rubricEnabled","enabled","options","config","Properties","promptHolder","prompt","onTeacherInstructionsChanged","React","Component","styles","theme","width","paddingTop","spacing","unit","marginBottom","propTypes","PropTypes","object","isRequired","func","shape","add"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { settings, layout, InputContainer } from '@pie-lib/config-ui';\nimport EditableHtml from '@pie-lib/editable-html';\nimport { withStyles } from '@material-ui/core/styles';\nimport { dropdown } from '@pie-lib/config-ui/lib/settings';\n\nconst { Panel, toggle } = settings;\n\nexport class Root extends React.Component {\n onTeacherInstructionsChanged = (teacherInstructions) => {\n this.props.onModelChanged({ ...this.props.model, teacherInstructions });\n };\n\n render() {\n const { classes, model, configuration, onModelChanged, onConfigurationChanged, imageSupport, uploadSoundSupport } =\n this.props;\n const {\n contentDimensions = {},\n maxImageWidth = {},\n maxImageHeight = {},\n settingsPanelDisabled,\n spellCheck = {},\n teacherInstructions = {},\n withRubric = {},\n mathMlOptions = {},\n language = {},\n languageChoices = {},\n } = configuration || {};\n const { spellCheckEnabled } = model || {};\n\n const panelProperties = {\n teacherInstructionsEnabled: teacherInstructions.settings && toggle(teacherInstructions.label),\n spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label),\n rubricEnabled: withRubric?.settings && toggle(withRubric?.label),\n 'language.enabled': language.settings && toggle(language.label, true),\n language: language.settings && language.enabled && dropdown(languageChoices.label, languageChoices.options),\n };\n\n return (\n <layout.ConfigLayout\n dimensions={contentDimensions}\n hideSettings={settingsPanelDisabled}\n settings={\n <Panel\n model={model}\n configuration={configuration}\n onChangeModel={(model) => onModelChanged(model)}\n onChangeConfiguration={(config) => onConfigurationChanged(config)}\n groups={{\n Properties: panelProperties,\n }}\n />\n }\n >\n {model && model.teacherInstructionsEnabled && (\n <InputContainer label={teacherInstructions.label} className={classes.promptHolder}>\n <EditableHtml\n className={classes.prompt}\n markup={model.teacherInstructions || ''}\n onChange={this.onTeacherInstructionsChanged}\n imageSupport={imageSupport}\n nonEmpty={false}\n spellCheck={spellCheckEnabled}\n maxImageWidth={maxImageWidth && maxImageWidth.teacherInstructions}\n maxImageHeight={maxImageHeight && maxImageHeight.teacherInstructions}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n </InputContainer>\n )}\n\n <div>Image cloze association</div>\n </layout.ConfigLayout>\n );\n }\n}\n\nconst styles = (theme) => ({\n promptHolder: {\n width: '100%',\n paddingTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\n },\n});\n\nRoot.propTypes = {\n classes: PropTypes.object.isRequired,\n onModelChanged: PropTypes.func,\n onConfigurationChanged: PropTypes.func,\n model: PropTypes.object.isRequired,\n configuration: PropTypes.object.isRequired,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n uploadSoundSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n};\n\nexport default withStyles(styles)(Root);\n"],"file":"root.js"}
1
+ {"version":3,"sources":["../src/root.jsx"],"names":["dropdown","ConfigUiSettings","Panel","settings","toggle","Root","teacherInstructions","props","onModelChanged","model","classes","configuration","onConfigurationChanged","imageSupport","uploadSoundSupport","contentDimensions","maxImageWidth","maxImageHeight","settingsPanelDisabled","spellCheck","withRubric","mathMlOptions","language","languageChoices","spellCheckEnabled","panelProperties","teacherInstructionsEnabled","label","rubricEnabled","enabled","options","config","Properties","promptHolder","prompt","onTeacherInstructionsChanged","React","Component","styles","theme","width","paddingTop","spacing","unit","marginBottom","propTypes","PropTypes","object","isRequired","func","shape","add"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { settings, layout, InputContainer } from '@pie-lib/pie-toolbox/config-ui';\nimport EditableHtml from '@pie-lib/pie-toolbox/editable-html';\nimport { withStyles } from '@material-ui/core/styles';\nimport ConfigUiSettings from '@pie-lib/pie-toolbox/config-ui';\n\nconst { dropdown } = ConfigUiSettings;\nconst { Panel, toggle } = settings;\n\nexport class Root extends React.Component {\n onTeacherInstructionsChanged = (teacherInstructions) => {\n this.props.onModelChanged({ ...this.props.model, teacherInstructions });\n };\n\n render() {\n const { classes, model, configuration, onModelChanged, onConfigurationChanged, imageSupport, uploadSoundSupport } =\n this.props;\n const {\n contentDimensions = {},\n maxImageWidth = {},\n maxImageHeight = {},\n settingsPanelDisabled,\n spellCheck = {},\n teacherInstructions = {},\n withRubric = {},\n mathMlOptions = {},\n language = {},\n languageChoices = {},\n } = configuration || {};\n const { spellCheckEnabled } = model || {};\n\n const panelProperties = {\n teacherInstructionsEnabled: teacherInstructions.settings && toggle(teacherInstructions.label),\n spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label),\n rubricEnabled: withRubric?.settings && toggle(withRubric?.label),\n 'language.enabled': language.settings && toggle(language.label, true),\n language: language.settings && language.enabled && dropdown(languageChoices.label, languageChoices.options),\n };\n\n return (\n <layout.ConfigLayout\n dimensions={contentDimensions}\n hideSettings={settingsPanelDisabled}\n settings={\n <Panel\n model={model}\n configuration={configuration}\n onChangeModel={(model) => onModelChanged(model)}\n onChangeConfiguration={(config) => onConfigurationChanged(config)}\n groups={{\n Properties: panelProperties,\n }}\n />\n }\n >\n {model && model.teacherInstructionsEnabled && (\n <InputContainer label={teacherInstructions.label} className={classes.promptHolder}>\n <EditableHtml\n className={classes.prompt}\n markup={model.teacherInstructions || ''}\n onChange={this.onTeacherInstructionsChanged}\n imageSupport={imageSupport}\n nonEmpty={false}\n spellCheck={spellCheckEnabled}\n maxImageWidth={maxImageWidth && maxImageWidth.teacherInstructions}\n maxImageHeight={maxImageHeight && maxImageHeight.teacherInstructions}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n </InputContainer>\n )}\n\n <div>Image cloze association</div>\n </layout.ConfigLayout>\n );\n }\n}\n\nconst styles = (theme) => ({\n promptHolder: {\n width: '100%',\n paddingTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\n },\n});\n\nRoot.propTypes = {\n classes: PropTypes.object.isRequired,\n onModelChanged: PropTypes.func,\n onConfigurationChanged: PropTypes.func,\n model: PropTypes.object.isRequired,\n configuration: PropTypes.object.isRequired,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n uploadSoundSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n};\n\nexport default withStyles(styles)(Root);\n"],"file":"root.js"}
@@ -9,8 +9,7 @@
9
9
  "dependencies": {
10
10
  "@material-ui/core": "^3.9.2",
11
11
  "@pie-framework/pie-configure-events": "^1.3.0",
12
- "@pie-lib/config-ui": "^11.9.24",
13
- "@pie-lib/editable-html": "^11.1.1",
12
+ "@pie-lib/pie-toolbox": "1.0.1",
14
13
  "debug": "^3.1.0",
15
14
  "prop-types": "^15.7.2",
16
15
  "react": "^16.8.6",
@@ -9,7 +9,7 @@ jest.mock('react-dom', () => ({
9
9
  render: jest.fn(),
10
10
  }));
11
11
 
12
- jest.mock('@pie-lib/config-ui', () => ({
12
+ jest.mock('@pie-lib/pie-toolbox/config-ui', () => ({
13
13
  FeedbackConfig: (props) => <div />,
14
14
  InputCheckbox: (props) => <div />,
15
15
  layout: {
@@ -1,10 +1,11 @@
1
1
  import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
- import { settings, layout, InputContainer } from '@pie-lib/config-ui';
4
- import EditableHtml from '@pie-lib/editable-html';
3
+ import { settings, layout, InputContainer } from '@pie-lib/pie-toolbox/config-ui';
4
+ import EditableHtml from '@pie-lib/pie-toolbox/editable-html';
5
5
  import { withStyles } from '@material-ui/core/styles';
6
- import { dropdown } from '@pie-lib/config-ui/lib/settings';
6
+ import ConfigUiSettings from '@pie-lib/pie-toolbox/config-ui';
7
7
 
8
+ const { dropdown } = ConfigUiSettings;
8
9
  const { Panel, toggle } = settings;
9
10
 
10
11
  export class Root extends React.Component {
@@ -20,7 +20,7 @@ var _shuffle = _interopRequireDefault(require("lodash/shuffle"));
20
20
 
21
21
  var _humps = require("humps");
22
22
 
23
- var _controllerUtils = require("@pie-lib/controller-utils");
23
+ var _controllerUtils = require("@pie-lib/pie-toolbox/controller-utils");
24
24
 
25
25
  var _utils = require("./utils");
26
26
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.js"],"names":["log","normalize","question","rationaleEnabled","teacherInstructionsEnabled","studentInstructionsEnabled","model","session","env","questionNormalized","questionCamelized","Promise","resolve","out","disabled","mode","responseCorrect","getScore","undefined","shuffle","possibleResponses","possible_responses","role","teacherInstructions","rationale","isResponseCorrect","responses","isCorrect","totalValidResponses","forEach","value","images","length","answers","answer","containerIndex","includes","keepNonEmptyResponses","filtered","filter","response","isDefaultOrAltResponseCorrect","altResponses","validation","validResponse","altResponse","getDeductionPerContainer","valid","totalStack","item","incorrectStack","maxValid","ignored","slice","getPartialScore","maxResponsePerZone","correctAnswers","incorrectAnswers","all","deductionList","id","nonEmptyResponses","denominator","str","toFixed","parseFloat","config","isPartialScoring","partialScoring","enabled","correct","outcome","score","empty","configCamelized","createCorrectResponseSession","valid_response","container","i","v","push"],"mappings":"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","sourcesContent":["import debug from 'debug';\nimport isEmpty from 'lodash/isEmpty';\nimport shuffle from 'lodash/shuffle';\nimport { camelizeKeys } from 'humps';\nimport { partialScoring } from '@pie-lib/controller-utils';\n\nimport { getAllUniqueCorrectness } from './utils';\nimport { cloneDeep } from 'lodash';\n\nconst log = debug('pie-elements:image-cloze-association:controller');\n\nexport const normalize = (question) => ({\n rationaleEnabled: true,\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true,\n ...question,\n});\n\nexport function model(question, session, env) {\n const questionNormalized = normalize(question);\n const questionCamelized = camelizeKeys(questionNormalized);\n\n return new Promise((resolve) => {\n const out = {\n disabled: env.mode !== 'gather',\n mode: env.mode,\n ...questionCamelized,\n responseCorrect: env.mode === 'evaluate' ? getScore(questionCamelized, session) === 1 : undefined,\n };\n\n if (questionNormalized.shuffle) {\n out.possibleResponses = shuffle(questionNormalized.possible_responses);\n }\n\n if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {\n out.teacherInstructions = questionCamelized.teacherInstructionsEnabled\n ? questionCamelized.teacherInstructions\n : null;\n out.rationale = questionCamelized.rationale\n ? questionCamelized.rationale\n : null;\n } else {\n out.teacherInstructions = null;\n out.rationale = null;\n }\n\n resolve(out);\n });\n}\n\nexport const isResponseCorrect = (responses, session) => {\n let isCorrect = true;\n let totalValidResponses = 0;\n\n if (!session || isEmpty(session)) {\n return false;\n }\n\n responses.forEach((value) => (totalValidResponses += (value.images || []).length));\n\n if (session.answers && totalValidResponses === session.answers.length) {\n session.answers.forEach((answer) => {\n if (!(responses[answer.containerIndex] && responses[answer.containerIndex].images || []).includes(answer.value)) {\n isCorrect = false;\n }\n });\n } else {\n isCorrect = false;\n }\n return isCorrect;\n};\n\n// This applies for correct responses that have empty values\nconst keepNonEmptyResponses = (responses) => {\n const filtered = responses.filter(response => response.images && response.images.length);\n return cloneDeep(filtered);\n};\n\n// This applies for items that don't support partial scoring.\nconst isDefaultOrAltResponseCorrect = (question, session) => {\n const {\n validation: { altResponses }\n } = question;\n let {\n validation: {\n validResponse: { value },\n }\n } = question;\n\n let isCorrect = isResponseCorrect(value, session);\n\n // Look for correct answers in alternate responses.\n if (!isCorrect && altResponses && altResponses.length) {\n altResponses.forEach((altResponse) => {\n if (isResponseCorrect(altResponse.value, session)) {\n isCorrect = true;\n }\n });\n }\n return isCorrect;\n};\n\n// Deduct only the items that exceeded the maximum valid response per container.\nconst getDeductionPerContainer = (containerIndex, answers, valid) => {\n const totalStack = answers.filter((item) => item.containerIndex === containerIndex);\n const incorrectStack = totalStack.filter((item) => !item.isCorrect);\n const maxValid = (valid.value[containerIndex].images || []).length;\n\n if (totalStack.length > maxValid) {\n const ignored = totalStack.length - maxValid;\n return incorrectStack.slice(-ignored);\n }\n return [];\n};\n\nexport const getPartialScore = (question, session) => {\n const {\n validation: { validResponse },\n maxResponsePerZone,\n } = question;\n let correctAnswers = 0;\n let incorrectAnswers = 0;\n let possibleResponses = 0;\n\n if (!session || isEmpty(session)) {\n return 0;\n }\n\n validResponse.value.forEach((value) => (possibleResponses += (value.images || []).length));\n\n if (session.answers && session.answers.length) {\n const all = getAllUniqueCorrectness(session.answers, validResponse.value);\n correctAnswers = all.filter((item) => item.isCorrect).length;\n incorrectAnswers = all.filter((item) => !item.isCorrect).length;\n\n // deduction rules: https://docs.google.com/document/d/1Oprm8Qs5fg_Dwoj2pNpsfu4D63QgCZgvcqTgeaVel7I/edit\n session.answers.forEach((answer) => {\n if (maxResponsePerZone > 1) {\n const deductionList = getDeductionPerContainer(answer.containerIndex, all, validResponse);\n\n if (deductionList.length) {\n deductionList.forEach((item) => {\n if (item.id === answer.id) {\n correctAnswers -= 1;\n }\n });\n }\n }\n });\n\n if (!maxResponsePerZone || maxResponsePerZone <= 1) {\n correctAnswers -= incorrectAnswers;\n }\n } else {\n correctAnswers = 0;\n }\n // negative values will implicitly make the score equal to zero\n correctAnswers = correctAnswers < 0 ? 0 : correctAnswers;\n\n // use length of validResponse since some containers can be left empty\n const nonEmptyResponses = keepNonEmptyResponses(validResponse.value);\n const denominator = maxResponsePerZone > 1 ? possibleResponses : (nonEmptyResponses || []).length;\n const str = (correctAnswers / denominator).toFixed(2);\n\n return parseFloat(str);\n};\n\nconst getScore = (config, session, env = {}) => {\n const isPartialScoring = partialScoring.enabled(config, env);\n const correct = isDefaultOrAltResponseCorrect(config, session);\n\n return isPartialScoring ? getPartialScore(config, session) : correct ? 1 : 0;\n};\n\nexport function outcome(config, session, env = {}) {\n return new Promise((resolve) => {\n log('outcome...');\n if (!session || isEmpty(session)) {\n resolve({ score: 0, empty: true });\n }\n\n const configCamelized = camelizeKeys(config);\n\n if (session.answers || []) {\n const score = getScore(configCamelized, session, env);\n resolve({ score });\n }\n });\n}\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const {\n validation: {\n valid_response: { value },\n },\n } = question;\n const answers = [];\n\n if (value) {\n value.forEach((container, i) => {\n (container.images || []).forEach((v) => {\n answers.push({\n value: v,\n containerIndex: i,\n });\n });\n });\n }\n\n resolve({\n answers,\n id: '1',\n });\n } else {\n resolve(null);\n }\n });\n};\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../src/index.js"],"names":["log","normalize","question","rationaleEnabled","teacherInstructionsEnabled","studentInstructionsEnabled","model","session","env","questionNormalized","questionCamelized","Promise","resolve","out","disabled","mode","responseCorrect","getScore","undefined","shuffle","possibleResponses","possible_responses","role","teacherInstructions","rationale","isResponseCorrect","responses","isCorrect","totalValidResponses","forEach","value","images","length","answers","answer","containerIndex","includes","keepNonEmptyResponses","filtered","filter","response","isDefaultOrAltResponseCorrect","altResponses","validation","validResponse","altResponse","getDeductionPerContainer","valid","totalStack","item","incorrectStack","maxValid","ignored","slice","getPartialScore","maxResponsePerZone","correctAnswers","incorrectAnswers","all","deductionList","id","nonEmptyResponses","denominator","str","toFixed","parseFloat","config","isPartialScoring","partialScoring","enabled","correct","outcome","score","empty","configCamelized","createCorrectResponseSession","valid_response","container","i","v","push"],"mappings":"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","sourcesContent":["import debug from 'debug';\nimport isEmpty from 'lodash/isEmpty';\nimport shuffle from 'lodash/shuffle';\nimport { camelizeKeys } from 'humps';\nimport { partialScoring } from '@pie-lib/pie-toolbox/controller-utils';\n\nimport { getAllUniqueCorrectness } from './utils';\nimport { cloneDeep } from 'lodash';\n\nconst log = debug('pie-elements:image-cloze-association:controller');\n\nexport const normalize = (question) => ({\n rationaleEnabled: true,\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true,\n ...question,\n});\n\nexport function model(question, session, env) {\n const questionNormalized = normalize(question);\n const questionCamelized = camelizeKeys(questionNormalized);\n\n return new Promise((resolve) => {\n const out = {\n disabled: env.mode !== 'gather',\n mode: env.mode,\n ...questionCamelized,\n responseCorrect: env.mode === 'evaluate' ? getScore(questionCamelized, session) === 1 : undefined,\n };\n\n if (questionNormalized.shuffle) {\n out.possibleResponses = shuffle(questionNormalized.possible_responses);\n }\n\n if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {\n out.teacherInstructions = questionCamelized.teacherInstructionsEnabled\n ? questionCamelized.teacherInstructions\n : null;\n out.rationale = questionCamelized.rationale\n ? questionCamelized.rationale\n : null;\n } else {\n out.teacherInstructions = null;\n out.rationale = null;\n }\n\n resolve(out);\n });\n}\n\nexport const isResponseCorrect = (responses, session) => {\n let isCorrect = true;\n let totalValidResponses = 0;\n\n if (!session || isEmpty(session)) {\n return false;\n }\n\n responses.forEach((value) => (totalValidResponses += (value.images || []).length));\n\n if (session.answers && totalValidResponses === session.answers.length) {\n session.answers.forEach((answer) => {\n if (!(responses[answer.containerIndex] && responses[answer.containerIndex].images || []).includes(answer.value)) {\n isCorrect = false;\n }\n });\n } else {\n isCorrect = false;\n }\n return isCorrect;\n};\n\n// This applies for correct responses that have empty values\nconst keepNonEmptyResponses = (responses) => {\n const filtered = responses.filter(response => response.images && response.images.length);\n return cloneDeep(filtered);\n};\n\n// This applies for items that don't support partial scoring.\nconst isDefaultOrAltResponseCorrect = (question, session) => {\n const {\n validation: { altResponses }\n } = question;\n let {\n validation: {\n validResponse: { value },\n }\n } = question;\n\n let isCorrect = isResponseCorrect(value, session);\n\n // Look for correct answers in alternate responses.\n if (!isCorrect && altResponses && altResponses.length) {\n altResponses.forEach((altResponse) => {\n if (isResponseCorrect(altResponse.value, session)) {\n isCorrect = true;\n }\n });\n }\n return isCorrect;\n};\n\n// Deduct only the items that exceeded the maximum valid response per container.\nconst getDeductionPerContainer = (containerIndex, answers, valid) => {\n const totalStack = answers.filter((item) => item.containerIndex === containerIndex);\n const incorrectStack = totalStack.filter((item) => !item.isCorrect);\n const maxValid = (valid.value[containerIndex].images || []).length;\n\n if (totalStack.length > maxValid) {\n const ignored = totalStack.length - maxValid;\n return incorrectStack.slice(-ignored);\n }\n return [];\n};\n\nexport const getPartialScore = (question, session) => {\n const {\n validation: { validResponse },\n maxResponsePerZone,\n } = question;\n let correctAnswers = 0;\n let incorrectAnswers = 0;\n let possibleResponses = 0;\n\n if (!session || isEmpty(session)) {\n return 0;\n }\n\n validResponse.value.forEach((value) => (possibleResponses += (value.images || []).length));\n\n if (session.answers && session.answers.length) {\n const all = getAllUniqueCorrectness(session.answers, validResponse.value);\n correctAnswers = all.filter((item) => item.isCorrect).length;\n incorrectAnswers = all.filter((item) => !item.isCorrect).length;\n\n // deduction rules: https://docs.google.com/document/d/1Oprm8Qs5fg_Dwoj2pNpsfu4D63QgCZgvcqTgeaVel7I/edit\n session.answers.forEach((answer) => {\n if (maxResponsePerZone > 1) {\n const deductionList = getDeductionPerContainer(answer.containerIndex, all, validResponse);\n\n if (deductionList.length) {\n deductionList.forEach((item) => {\n if (item.id === answer.id) {\n correctAnswers -= 1;\n }\n });\n }\n }\n });\n\n if (!maxResponsePerZone || maxResponsePerZone <= 1) {\n correctAnswers -= incorrectAnswers;\n }\n } else {\n correctAnswers = 0;\n }\n // negative values will implicitly make the score equal to zero\n correctAnswers = correctAnswers < 0 ? 0 : correctAnswers;\n\n // use length of validResponse since some containers can be left empty\n const nonEmptyResponses = keepNonEmptyResponses(validResponse.value);\n const denominator = maxResponsePerZone > 1 ? possibleResponses : (nonEmptyResponses || []).length;\n const str = (correctAnswers / denominator).toFixed(2);\n\n return parseFloat(str);\n};\n\nconst getScore = (config, session, env = {}) => {\n const isPartialScoring = partialScoring.enabled(config, env);\n const correct = isDefaultOrAltResponseCorrect(config, session);\n\n return isPartialScoring ? getPartialScore(config, session) : correct ? 1 : 0;\n};\n\nexport function outcome(config, session, env = {}) {\n return new Promise((resolve) => {\n log('outcome...');\n if (!session || isEmpty(session)) {\n resolve({ score: 0, empty: true });\n }\n\n const configCamelized = camelizeKeys(config);\n\n if (session.answers || []) {\n const score = getScore(configCamelized, session, env);\n resolve({ score });\n }\n });\n}\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const {\n validation: {\n valid_response: { value },\n },\n } = question;\n const answers = [];\n\n if (value) {\n value.forEach((container, i) => {\n (container.images || []).forEach((v) => {\n answers.push({\n value: v,\n containerIndex: i,\n });\n });\n });\n }\n\n resolve({\n answers,\n id: '1',\n });\n } else {\n resolve(null);\n }\n });\n};\n"],"file":"index.js"}
@@ -11,7 +11,7 @@
11
11
  "main": "lib/index.js",
12
12
  "module": "src/index.js",
13
13
  "dependencies": {
14
- "@pie-lib/controller-utils": "^0.2.44",
14
+ "@pie-lib/pie-toolbox": "1.0.1",
15
15
  "debug": "^4.1.1",
16
16
  "humps": "^2.0.1",
17
17
  "lodash": "^4.17.15"
@@ -2,7 +2,7 @@ import debug from 'debug';
2
2
  import isEmpty from 'lodash/isEmpty';
3
3
  import shuffle from 'lodash/shuffle';
4
4
  import { camelizeKeys } from 'humps';
5
- import { partialScoring } from '@pie-lib/controller-utils';
5
+ import { partialScoring } from '@pie-lib/pie-toolbox/controller-utils';
6
6
 
7
7
  import { getAllUniqueCorrectness } from './utils';
8
8
  import { cloneDeep } from 'lodash';
@@ -17,7 +17,7 @@ var _Check = _interopRequireDefault(require("@material-ui/icons/Check"));
17
17
 
18
18
  var _Close = _interopRequireDefault(require("@material-ui/icons/Close"));
19
19
 
20
- var _renderUi = require("@pie-lib/render-ui");
20
+ var _renderUi = require("@pie-lib/pie-toolbox/render-ui");
21
21
 
22
22
  var getCorrectnessClass = function getCorrectnessClass(isCorrect, filled) {
23
23
  if (filled) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/evaluation-icon.jsx"],"names":["getCorrectnessClass","isCorrect","filled","EvaluationIcon","classes","containerStyle","Icon","Check","Close","showCorrectness","undefined","correctness","icon","propTypes","PropTypes","object","bool","oneOfType","number","defaultProps","styles","correctEmpty","color","correct","correctFilled","background","backgroundColor","incorrectEmpty","incorrect","incorrectFilled"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA,IAAMA,mBAAmB,GAAG,SAAtBA,mBAAsB,CAACC,SAAD,EAAYC,MAAZ,EAAuB;AACjD,MAAIA,MAAJ,EAAY;AACV,WAAOD,SAAS,GAAG,eAAH,GAAqB,iBAArC;AACD;;AACD,SAAOA,SAAS,GAAG,cAAH,GAAoB,gBAApC;AACD,CALD;;AAOA,IAAME,cAAc,GAAG,SAAjBA,cAAiB,OAAoD;AAAA,MAAjDC,OAAiD,QAAjDA,OAAiD;AAAA,MAAxCC,cAAwC,QAAxCA,cAAwC;AAAA,MAAxBJ,SAAwB,QAAxBA,SAAwB;AAAA,MAAbC,MAAa,QAAbA,MAAa;AACzE,MAAMI,IAAI,GAAGL,SAAS,GAAGM,iBAAH,GAAWC,iBAAjC;AACA,MAAMC,eAAe,GAAGR,SAAS,KAAKS,SAAtC;AACA,MAAMC,WAAW,GAAGF,eAAe,GAAGT,mBAAmB,CAACC,SAAD,EAAYC,MAAZ,CAAtB,GAA4C,EAA/E;AAEA,SAAOO,eAAe,gBAAG,gCAAC,IAAD;AAAM,IAAA,SAAS,YAAKL,OAAO,CAACQ,IAAb,cAAqBR,OAAO,CAACO,WAAD,CAA5B,CAAf;AAA4D,IAAA,KAAK,EAAEN;AAAnE,IAAH,GAA2F,IAAjH;AACD,CAND;;AAQAF,cAAc,CAACU,SAAf,GAA2B;AACzBT,EAAAA,OAAO,EAAEU,sBAAUC,MADM;AAEzBV,EAAAA,cAAc,EAAES,sBAAUC,MAFD;AAGzBb,EAAAA,MAAM,EAAEY,sBAAUE,IAHO;AAIzBf,EAAAA,SAAS,EAAEa,sBAAUG,SAAV,CAAoB,CAACH,sBAAUE,IAAX,EAAiBF,sBAAUI,MAA3B,CAApB;AAJc,CAA3B;AAOAf,cAAc,CAACgB,YAAf,GAA8B;AAC5Bf,EAAAA,OAAO,EAAE,EADmB;AAE5BC,EAAAA,cAAc,EAAE,EAFY;AAG5BH,EAAAA,MAAM,EAAE,KAHoB;AAI5BD,EAAAA,SAAS,EAAES;AAJiB,CAA9B;;AAOA,IAAMU,MAAM,GAAG,SAATA,MAAS;AAAA,SAAO;AACpBC,IAAAA,YAAY,EAAE;AACZC,MAAAA,KAAK,EAAEA,gBAAMC,OAAN;AADK,KADM;AAIpBC,IAAAA,aAAa,EAAE;AACbF,MAAAA,KAAK,EAAEA,gBAAMG,UAAN,EADM;AAEbC,MAAAA,eAAe,EAAEJ,gBAAMC,OAAN;AAFJ,KAJK;AAQpBI,IAAAA,cAAc,EAAE;AACdL,MAAAA,KAAK,EAAEA,gBAAMM,SAAN;AADO,KARI;AAWpBC,IAAAA,eAAe,EAAE;AACfP,MAAAA,KAAK,EAAEA,gBAAMG,UAAN,EADQ;AAEfC,MAAAA,eAAe,EAAEJ,gBAAMM,SAAN;AAFF;AAXG,GAAP;AAAA,CAAf;;eAiBe,sBAAWR,MAAX,EAAmBjB,cAAnB,C","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core';\nimport Check from '@material-ui/icons/Check';\nimport Close from '@material-ui/icons/Close';\nimport { color } from '@pie-lib/render-ui';\n\nconst getCorrectnessClass = (isCorrect, filled) => {\n if (filled) {\n return isCorrect ? 'correctFilled' : 'incorrectFilled';\n }\n return isCorrect ? 'correctEmpty' : 'incorrectEmpty';\n};\n\nconst EvaluationIcon = ({ classes, containerStyle, isCorrect, filled }) => {\n const Icon = isCorrect ? Check : Close;\n const showCorrectness = isCorrect !== undefined;\n const correctness = showCorrectness ? getCorrectnessClass(isCorrect, filled) : '';\n\n return showCorrectness ? <Icon className={`${classes.icon} ${classes[correctness]}`} style={containerStyle} /> : null;\n};\n\nEvaluationIcon.propTypes = {\n classes: PropTypes.object,\n containerStyle: PropTypes.object,\n filled: PropTypes.bool,\n isCorrect: PropTypes.oneOfType([PropTypes.bool, PropTypes.number]),\n};\n\nEvaluationIcon.defaultProps = {\n classes: {},\n containerStyle: {},\n filled: false,\n isCorrect: undefined,\n};\n\nconst styles = () => ({\n correctEmpty: {\n color: color.correct(),\n },\n correctFilled: {\n color: color.background(),\n backgroundColor: color.correct(),\n },\n incorrectEmpty: {\n color: color.incorrect(),\n },\n incorrectFilled: {\n color: color.background(),\n backgroundColor: color.incorrect(),\n },\n});\n\nexport default withStyles(styles)(EvaluationIcon);\n"],"file":"evaluation-icon.js"}
1
+ {"version":3,"sources":["../src/evaluation-icon.jsx"],"names":["getCorrectnessClass","isCorrect","filled","EvaluationIcon","classes","containerStyle","Icon","Check","Close","showCorrectness","undefined","correctness","icon","propTypes","PropTypes","object","bool","oneOfType","number","defaultProps","styles","correctEmpty","color","correct","correctFilled","background","backgroundColor","incorrectEmpty","incorrect","incorrectFilled"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA,IAAMA,mBAAmB,GAAG,SAAtBA,mBAAsB,CAACC,SAAD,EAAYC,MAAZ,EAAuB;AACjD,MAAIA,MAAJ,EAAY;AACV,WAAOD,SAAS,GAAG,eAAH,GAAqB,iBAArC;AACD;;AACD,SAAOA,SAAS,GAAG,cAAH,GAAoB,gBAApC;AACD,CALD;;AAOA,IAAME,cAAc,GAAG,SAAjBA,cAAiB,OAAoD;AAAA,MAAjDC,OAAiD,QAAjDA,OAAiD;AAAA,MAAxCC,cAAwC,QAAxCA,cAAwC;AAAA,MAAxBJ,SAAwB,QAAxBA,SAAwB;AAAA,MAAbC,MAAa,QAAbA,MAAa;AACzE,MAAMI,IAAI,GAAGL,SAAS,GAAGM,iBAAH,GAAWC,iBAAjC;AACA,MAAMC,eAAe,GAAGR,SAAS,KAAKS,SAAtC;AACA,MAAMC,WAAW,GAAGF,eAAe,GAAGT,mBAAmB,CAACC,SAAD,EAAYC,MAAZ,CAAtB,GAA4C,EAA/E;AAEA,SAAOO,eAAe,gBAAG,gCAAC,IAAD;AAAM,IAAA,SAAS,YAAKL,OAAO,CAACQ,IAAb,cAAqBR,OAAO,CAACO,WAAD,CAA5B,CAAf;AAA4D,IAAA,KAAK,EAAEN;AAAnE,IAAH,GAA2F,IAAjH;AACD,CAND;;AAQAF,cAAc,CAACU,SAAf,GAA2B;AACzBT,EAAAA,OAAO,EAAEU,sBAAUC,MADM;AAEzBV,EAAAA,cAAc,EAAES,sBAAUC,MAFD;AAGzBb,EAAAA,MAAM,EAAEY,sBAAUE,IAHO;AAIzBf,EAAAA,SAAS,EAAEa,sBAAUG,SAAV,CAAoB,CAACH,sBAAUE,IAAX,EAAiBF,sBAAUI,MAA3B,CAApB;AAJc,CAA3B;AAOAf,cAAc,CAACgB,YAAf,GAA8B;AAC5Bf,EAAAA,OAAO,EAAE,EADmB;AAE5BC,EAAAA,cAAc,EAAE,EAFY;AAG5BH,EAAAA,MAAM,EAAE,KAHoB;AAI5BD,EAAAA,SAAS,EAAES;AAJiB,CAA9B;;AAOA,IAAMU,MAAM,GAAG,SAATA,MAAS;AAAA,SAAO;AACpBC,IAAAA,YAAY,EAAE;AACZC,MAAAA,KAAK,EAAEA,gBAAMC,OAAN;AADK,KADM;AAIpBC,IAAAA,aAAa,EAAE;AACbF,MAAAA,KAAK,EAAEA,gBAAMG,UAAN,EADM;AAEbC,MAAAA,eAAe,EAAEJ,gBAAMC,OAAN;AAFJ,KAJK;AAQpBI,IAAAA,cAAc,EAAE;AACdL,MAAAA,KAAK,EAAEA,gBAAMM,SAAN;AADO,KARI;AAWpBC,IAAAA,eAAe,EAAE;AACfP,MAAAA,KAAK,EAAEA,gBAAMG,UAAN,EADQ;AAEfC,MAAAA,eAAe,EAAEJ,gBAAMM,SAAN;AAFF;AAXG,GAAP;AAAA,CAAf;;eAiBe,sBAAWR,MAAX,EAAmBjB,cAAnB,C","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core';\nimport Check from '@material-ui/icons/Check';\nimport Close from '@material-ui/icons/Close';\nimport { color } from '@pie-lib/pie-toolbox/render-ui';\n\nconst getCorrectnessClass = (isCorrect, filled) => {\n if (filled) {\n return isCorrect ? 'correctFilled' : 'incorrectFilled';\n }\n return isCorrect ? 'correctEmpty' : 'incorrectEmpty';\n};\n\nconst EvaluationIcon = ({ classes, containerStyle, isCorrect, filled }) => {\n const Icon = isCorrect ? Check : Close;\n const showCorrectness = isCorrect !== undefined;\n const correctness = showCorrectness ? getCorrectnessClass(isCorrect, filled) : '';\n\n return showCorrectness ? <Icon className={`${classes.icon} ${classes[correctness]}`} style={containerStyle} /> : null;\n};\n\nEvaluationIcon.propTypes = {\n classes: PropTypes.object,\n containerStyle: PropTypes.object,\n filled: PropTypes.bool,\n isCorrect: PropTypes.oneOfType([PropTypes.bool, PropTypes.number]),\n};\n\nEvaluationIcon.defaultProps = {\n classes: {},\n containerStyle: {},\n filled: false,\n isCorrect: undefined,\n};\n\nconst styles = () => ({\n correctEmpty: {\n color: color.correct(),\n },\n correctFilled: {\n color: color.background(),\n backgroundColor: color.correct(),\n },\n incorrectEmpty: {\n color: color.incorrect(),\n },\n incorrectFilled: {\n color: color.background(),\n backgroundColor: color.incorrect(),\n },\n});\n\nexport default withStyles(styles)(EvaluationIcon);\n"],"file":"evaluation-icon.js"}
@@ -11,11 +11,11 @@ var _react = _interopRequireDefault(require("react"));
11
11
 
12
12
  var _propTypes = _interopRequireDefault(require("prop-types"));
13
13
 
14
- var _drag = require("@pie-lib/drag");
14
+ var _drag = require("@pie-lib/pie-toolbox/drag");
15
15
 
16
16
  var _styles = require("@material-ui/core/styles");
17
17
 
18
- var _renderUi = require("@pie-lib/render-ui");
18
+ var _renderUi = require("@pie-lib/pie-toolbox/render-ui");
19
19
 
20
20
  var _possibleResponse = _interopRequireDefault(require("./possible-response"));
21
21
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/image-drop-target.jsx"],"names":["ImageDropTarget","answers","canDrag","classes","containerStyle","draggingElement","duplicateResponses","onDragAnswerBegin","onDragAnswerEnd","showDashedBorder","connectDropTarget","responseContainer","id","responseContainerDashed","responseContainerActive","length","map","answer","isCorrect","undefined","borderWidth","propTypes","PropTypes","object","bool","isRequired","func","onDrop","defaultProps","styles","display","flexWrap","dragOverContainer","backgroundColor","color","background","pointerEvents","width","position","border","text","Styled","tileSource","hover","props","monitor","isOver","shallow","drop","item","getItem","c","types","response","connect","dropTarget","dragItem"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { DropTarget } from '@pie-lib/drag';\nimport { withStyles } from '@material-ui/core/styles';\nimport { color } from '@pie-lib/render-ui';\n\nimport PossibleResponse from './possible-response';\nimport c from './constants';\n\nconst ImageDropTarget = ({\n answers,\n canDrag,\n classes,\n containerStyle,\n draggingElement,\n duplicateResponses,\n onDragAnswerBegin,\n onDragAnswerEnd,\n showDashedBorder,\n // dnd-related props\n connectDropTarget,\n}) =>\n connectDropTarget(\n <div\n className={`\n ${classes.responseContainer}\n ${showDashedBorder && !draggingElement.id ? classes.responseContainerDashed : ''}\n ${draggingElement.id ? classes.responseContainerActive : ''}\n `}\n style={containerStyle}\n >\n {answers.length || (duplicateResponses && answers.length) ? (\n <div className={classes.answers}>\n {answers.map((answer) => (\n <PossibleResponse\n canDrag={canDrag}\n containerStyle={answer.isCorrect === undefined ? { borderWidth: 0 } : {}}\n key={answer.id}\n data={answer}\n onDragBegin={() => onDragAnswerBegin(answer)}\n onDragEnd={onDragAnswerEnd}\n />\n ))}\n </div>\n ) : null}\n </div>,\n );\n\nImageDropTarget.propTypes = {\n answer: PropTypes.object,\n canDrag: PropTypes.bool.isRequired,\n classes: PropTypes.object,\n containerStyle: PropTypes.object.isRequired,\n draggingElement: PropTypes.object.isRequired,\n onDragAnswerBegin: PropTypes.func.isRequired,\n onDragAnswerEnd: PropTypes.func.isRequired,\n onDrop: PropTypes.func.isRequired,\n showDashedBorder: PropTypes.bool,\n};\n\nImageDropTarget.defaultProps = {\n answer: {},\n classes: {},\n};\n\nconst styles = () => ({\n answers: {\n display: 'flex',\n flexWrap: 'wrap',\n },\n dragOverContainer: {\n backgroundColor: color.background(),\n pointerEvents: 'none',\n width: 'fit-content',\n },\n responseContainer: {\n position: 'absolute',\n },\n responseContainerActive: {\n border: `2px solid ${color.text()}`,\n backgroundColor: 'rgba(230, 242, 252, .8)',\n },\n responseContainerDashed: {\n border: `2px dashed ${color.text()}`,\n },\n});\n\nconst Styled = withStyles(styles)(ImageDropTarget);\n\nconst tileSource = {\n hover(props, monitor) {\n monitor.isOver({ shallow: true });\n },\n drop(props, monitor) {\n const item = monitor.getItem();\n props.onDrop(item);\n },\n};\n\nexport default DropTarget(c.types.response, tileSource, (connect, monitor) => ({\n connectDropTarget: connect.dropTarget(),\n isOver: monitor.isOver(),\n dragItem: monitor.getItem(),\n}))(Styled);\n"],"file":"image-drop-target.js"}
1
+ {"version":3,"sources":["../src/image-drop-target.jsx"],"names":["ImageDropTarget","answers","canDrag","classes","containerStyle","draggingElement","duplicateResponses","onDragAnswerBegin","onDragAnswerEnd","showDashedBorder","connectDropTarget","responseContainer","id","responseContainerDashed","responseContainerActive","length","map","answer","isCorrect","undefined","borderWidth","propTypes","PropTypes","object","bool","isRequired","func","onDrop","defaultProps","styles","display","flexWrap","dragOverContainer","backgroundColor","color","background","pointerEvents","width","position","border","text","Styled","tileSource","hover","props","monitor","isOver","shallow","drop","item","getItem","c","types","response","connect","dropTarget","dragItem"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AACA;;AAEA,IAAMA,eAAe,GAAG,SAAlBA,eAAkB;AAAA,MACtBC,OADsB,QACtBA,OADsB;AAAA,MAEtBC,OAFsB,QAEtBA,OAFsB;AAAA,MAGtBC,OAHsB,QAGtBA,OAHsB;AAAA,MAItBC,cAJsB,QAItBA,cAJsB;AAAA,MAKtBC,eALsB,QAKtBA,eALsB;AAAA,MAMtBC,kBANsB,QAMtBA,kBANsB;AAAA,MAOtBC,iBAPsB,QAOtBA,iBAPsB;AAAA,MAQtBC,eARsB,QAQtBA,eARsB;AAAA,MAStBC,gBATsB,QAStBA,gBATsB;AAAA,MAWtBC,iBAXsB,QAWtBA,iBAXsB;AAAA,SAatBA,iBAAiB,eACf;AACE,IAAA,SAAS,sBACLP,OAAO,CAACQ,iBADH,uBAELF,gBAAgB,IAAI,CAACJ,eAAe,CAACO,EAArC,GAA0CT,OAAO,CAACU,uBAAlD,GAA4E,EAFvE,uBAGLR,eAAe,CAACO,EAAhB,GAAqBT,OAAO,CAACW,uBAA7B,GAAuD,EAHlD,aADX;AAME,IAAA,KAAK,EAAEV;AANT,KAQGH,OAAO,CAACc,MAAR,IAAmBT,kBAAkB,IAAIL,OAAO,CAACc,MAAjD,gBACC;AAAK,IAAA,SAAS,EAAEZ,OAAO,CAACF;AAAxB,KACGA,OAAO,CAACe,GAAR,CAAY,UAACC,MAAD;AAAA,wBACX,gCAAC,4BAAD;AACE,MAAA,OAAO,EAAEf,OADX;AAEE,MAAA,cAAc,EAAEe,MAAM,CAACC,SAAP,KAAqBC,SAArB,GAAiC;AAAEC,QAAAA,WAAW,EAAE;AAAf,OAAjC,GAAsD,EAFxE;AAGE,MAAA,GAAG,EAAEH,MAAM,CAACL,EAHd;AAIE,MAAA,IAAI,EAAEK,MAJR;AAKE,MAAA,WAAW,EAAE;AAAA,eAAMV,iBAAiB,CAACU,MAAD,CAAvB;AAAA,OALf;AAME,MAAA,SAAS,EAAET;AANb,MADW;AAAA,GAAZ,CADH,CADD,GAaG,IArBN,CADe,CAbK;AAAA,CAAxB;;AAuCAR,eAAe,CAACqB,SAAhB,GAA4B;AAC1BJ,EAAAA,MAAM,EAAEK,sBAAUC,MADQ;AAE1BrB,EAAAA,OAAO,EAAEoB,sBAAUE,IAAV,CAAeC,UAFE;AAG1BtB,EAAAA,OAAO,EAAEmB,sBAAUC,MAHO;AAI1BnB,EAAAA,cAAc,EAAEkB,sBAAUC,MAAV,CAAiBE,UAJP;AAK1BpB,EAAAA,eAAe,EAAEiB,sBAAUC,MAAV,CAAiBE,UALR;AAM1BlB,EAAAA,iBAAiB,EAAEe,sBAAUI,IAAV,CAAeD,UANR;AAO1BjB,EAAAA,eAAe,EAAEc,sBAAUI,IAAV,CAAeD,UAPN;AAQ1BE,EAAAA,MAAM,EAAEL,sBAAUI,IAAV,CAAeD,UARG;AAS1BhB,EAAAA,gBAAgB,EAAEa,sBAAUE;AATF,CAA5B;AAYAxB,eAAe,CAAC4B,YAAhB,GAA+B;AAC7BX,EAAAA,MAAM,EAAE,EADqB;AAE7Bd,EAAAA,OAAO,EAAE;AAFoB,CAA/B;;AAKA,IAAM0B,MAAM,GAAG,SAATA,MAAS;AAAA,SAAO;AACpB5B,IAAAA,OAAO,EAAE;AACP6B,MAAAA,OAAO,EAAE,MADF;AAEPC,MAAAA,QAAQ,EAAE;AAFH,KADW;AAKpBC,IAAAA,iBAAiB,EAAE;AACjBC,MAAAA,eAAe,EAAEC,gBAAMC,UAAN,EADA;AAEjBC,MAAAA,aAAa,EAAE,MAFE;AAGjBC,MAAAA,KAAK,EAAE;AAHU,KALC;AAUpB1B,IAAAA,iBAAiB,EAAE;AACjB2B,MAAAA,QAAQ,EAAE;AADO,KAVC;AAapBxB,IAAAA,uBAAuB,EAAE;AACvByB,MAAAA,MAAM,sBAAeL,gBAAMM,IAAN,EAAf,CADiB;AAEvBP,MAAAA,eAAe,EAAE;AAFM,KAbL;AAiBpBpB,IAAAA,uBAAuB,EAAE;AACvB0B,MAAAA,MAAM,uBAAgBL,gBAAMM,IAAN,EAAhB;AADiB;AAjBL,GAAP;AAAA,CAAf;;AAsBA,IAAMC,MAAM,GAAG,wBAAWZ,MAAX,EAAmB7B,eAAnB,CAAf;AAEA,IAAM0C,UAAU,GAAG;AACjBC,EAAAA,KADiB,iBACXC,KADW,EACJC,OADI,EACK;AACpBA,IAAAA,OAAO,CAACC,MAAR,CAAe;AAAEC,MAAAA,OAAO,EAAE;AAAX,KAAf;AACD,GAHgB;AAIjBC,EAAAA,IAJiB,gBAIZJ,KAJY,EAILC,OAJK,EAII;AACnB,QAAMI,IAAI,GAAGJ,OAAO,CAACK,OAAR,EAAb;AACAN,IAAAA,KAAK,CAACjB,MAAN,CAAasB,IAAb;AACD;AAPgB,CAAnB;;eAUe,sBAAWE,sBAAEC,KAAF,CAAQC,QAAnB,EAA6BX,UAA7B,EAAyC,UAACY,OAAD,EAAUT,OAAV;AAAA,SAAuB;AAC7EnC,IAAAA,iBAAiB,EAAE4C,OAAO,CAACC,UAAR,EAD0D;AAE7ET,IAAAA,MAAM,EAAED,OAAO,CAACC,MAAR,EAFqE;AAG7EU,IAAAA,QAAQ,EAAEX,OAAO,CAACK,OAAR;AAHmE,GAAvB;AAAA,CAAzC,EAIXT,MAJW,C","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { DropTarget } from '@pie-lib/pie-toolbox/drag';\nimport { withStyles } from '@material-ui/core/styles';\nimport { color } from '@pie-lib/pie-toolbox/render-ui';\n\nimport PossibleResponse from './possible-response';\nimport c from './constants';\n\nconst ImageDropTarget = ({\n answers,\n canDrag,\n classes,\n containerStyle,\n draggingElement,\n duplicateResponses,\n onDragAnswerBegin,\n onDragAnswerEnd,\n showDashedBorder,\n // dnd-related props\n connectDropTarget,\n}) =>\n connectDropTarget(\n <div\n className={`\n ${classes.responseContainer}\n ${showDashedBorder && !draggingElement.id ? classes.responseContainerDashed : ''}\n ${draggingElement.id ? classes.responseContainerActive : ''}\n `}\n style={containerStyle}\n >\n {answers.length || (duplicateResponses && answers.length) ? (\n <div className={classes.answers}>\n {answers.map((answer) => (\n <PossibleResponse\n canDrag={canDrag}\n containerStyle={answer.isCorrect === undefined ? { borderWidth: 0 } : {}}\n key={answer.id}\n data={answer}\n onDragBegin={() => onDragAnswerBegin(answer)}\n onDragEnd={onDragAnswerEnd}\n />\n ))}\n </div>\n ) : null}\n </div>,\n );\n\nImageDropTarget.propTypes = {\n answer: PropTypes.object,\n canDrag: PropTypes.bool.isRequired,\n classes: PropTypes.object,\n containerStyle: PropTypes.object.isRequired,\n draggingElement: PropTypes.object.isRequired,\n onDragAnswerBegin: PropTypes.func.isRequired,\n onDragAnswerEnd: PropTypes.func.isRequired,\n onDrop: PropTypes.func.isRequired,\n showDashedBorder: PropTypes.bool,\n};\n\nImageDropTarget.defaultProps = {\n answer: {},\n classes: {},\n};\n\nconst styles = () => ({\n answers: {\n display: 'flex',\n flexWrap: 'wrap',\n },\n dragOverContainer: {\n backgroundColor: color.background(),\n pointerEvents: 'none',\n width: 'fit-content',\n },\n responseContainer: {\n position: 'absolute',\n },\n responseContainerActive: {\n border: `2px solid ${color.text()}`,\n backgroundColor: 'rgba(230, 242, 252, .8)',\n },\n responseContainerDashed: {\n border: `2px dashed ${color.text()}`,\n },\n});\n\nconst Styled = withStyles(styles)(ImageDropTarget);\n\nconst tileSource = {\n hover(props, monitor) {\n monitor.isOver({ shallow: true });\n },\n drop(props, monitor) {\n const item = monitor.getItem();\n props.onDrop(item);\n },\n};\n\nexport default DropTarget(c.types.response, tileSource, (connect, monitor) => ({\n connectDropTarget: connect.dropTarget(),\n isOver: monitor.isOver(),\n dragItem: monitor.getItem(),\n}))(Styled);\n"],"file":"image-drop-target.js"}
package/lib/index.js CHANGED
@@ -23,7 +23,7 @@ var _react = _interopRequireDefault(require("react"));
23
23
 
24
24
  var _reactDom = _interopRequireDefault(require("react-dom"));
25
25
 
26
- var _mathRendering = require("@pie-lib/math-rendering");
26
+ var _mathRendering = require("@pie-lib/pie-toolbox/math-rendering");
27
27
 
28
28
  var _piePlayerEvents = require("@pie-framework/pie-player-events");
29
29
 
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.js"],"names":["ImageClozeAssociation","m","_model","dispatchEvent","ModelSetEvent","tagName","toLowerCase","isComplete","_render","_session","Array","isArray","answers","length","s","data","SessionChangedEvent","el","React","createElement","ImageClozeAssociationComponent","model","session","updateAnswer","bind","ReactDOM","render","HTMLElement"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAEA;;;;;;IAEqBA,qB;;;;;;;;;;;;SACnB,aAAUC,CAAV,EAAa;AACX,WAAKC,MAAL,GAAcD,CAAd;AAEA,WAAKE,aAAL,CAAmB,IAAIC,8BAAJ,CAAkB,KAAKC,OAAL,CAAaC,WAAb,EAAlB,EAA8C,KAAKC,UAAL,EAA9C,EAAiE,CAAC,CAAC,KAAKL,MAAxE,CAAnB;;AACA,WAAKM,OAAL;AACD;;;WAED,sBAAa;AACX,UAAI,CAAC,KAAKC,QAAV,EAAoB;AAClB,eAAO,KAAP;AACD;;AAED,aAAOC,KAAK,CAACC,OAAN,CAAc,KAAKF,QAAL,CAAcG,OAA5B,KAAwC,KAAKH,QAAL,CAAcG,OAAd,CAAsBC,MAAtB,GAA+B,CAA9E;AACD;;;SAWD,eAAc;AACZ,aAAO,KAAKJ,QAAZ;AACD,K;SAXD,aAAYK,CAAZ,EAAe;AACb,UAAIA,CAAC,IAAI,CAACA,CAAC,CAACF,OAAZ,EAAqB;AACnBE,QAAAA,CAAC,CAACF,OAAF,GAAY,EAAZ;AACD;;AAED,WAAKH,QAAL,GAAgBK,CAAhB;;AACA,WAAKN,OAAL;AACD;;;WAMD,sBAAaO,IAAb,EAAmB;AACjB,WAAKN,QAAL,CAAcG,OAAd,GAAwBG,IAAxB;AAEA,WAAKZ,aAAL,CAAmB,IAAIa,oCAAJ,CAAwB,KAAKX,OAAL,CAAaC,WAAb,EAAxB,EAAoD,KAAKC,UAAL,EAApD,CAAnB;;AAEA,WAAKC,OAAL;AACD;;;WAED,6BAAoB;AAClB,WAAKA,OAAL;AACD;;;WAED,mBAAU;AAAA;;AACR,UAAI,KAAKN,MAAL,IAAe,KAAKO,QAAxB,EAAkC;AAChC,YAAMQ,EAAE,gBAAGC,kBAAMC,aAAN,CAAoBC,gBAApB,EAAoD;AAC7DC,UAAAA,KAAK,EAAE,KAAKnB,MADiD;AAE7DoB,UAAAA,OAAO,EAAE,KAAKb,QAF+C;AAG7Dc,UAAAA,YAAY,EAAE,KAAKA,YAAL,CAAkBC,IAAlB,CAAuB,IAAvB;AAH+C,SAApD,CAAX;;AAMAC,6BAASC,MAAT,CAAgBT,EAAhB,EAAoB,IAApB,EAA0B,YAAM;AAC9B,yCAAW,KAAX;AACD,SAFD;AAGD;AACF;;;kDArDgDU,W","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport { ModelSetEvent, SessionChangedEvent } from '@pie-framework/pie-player-events';\n\nimport ImageClozeAssociationComponent from './root';\n\nexport default class ImageClozeAssociation extends HTMLElement {\n set model(m) {\n this._model = m;\n\n this.dispatchEvent(new ModelSetEvent(this.tagName.toLowerCase(), this.isComplete(), !!this._model));\n this._render();\n }\n\n isComplete() {\n if (!this._session) {\n return false;\n }\n\n return Array.isArray(this._session.answers) && this._session.answers.length > 0;\n }\n\n set session(s) {\n if (s && !s.answers) {\n s.answers = [];\n }\n\n this._session = s;\n this._render();\n }\n\n get session() {\n return this._session;\n }\n\n updateAnswer(data) {\n this._session.answers = data;\n\n this.dispatchEvent(new SessionChangedEvent(this.tagName.toLowerCase(), this.isComplete()));\n\n this._render();\n }\n\n connectedCallback() {\n this._render();\n }\n\n _render() {\n if (this._model && this._session) {\n const el = React.createElement(ImageClozeAssociationComponent, {\n model: this._model,\n session: this._session,\n updateAnswer: this.updateAnswer.bind(this),\n });\n\n ReactDOM.render(el, this, () => {\n renderMath(this);\n });\n }\n }\n}\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../src/index.js"],"names":["ImageClozeAssociation","m","_model","dispatchEvent","ModelSetEvent","tagName","toLowerCase","isComplete","_render","_session","Array","isArray","answers","length","s","data","SessionChangedEvent","el","React","createElement","ImageClozeAssociationComponent","model","session","updateAnswer","bind","ReactDOM","render","HTMLElement"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAEA;;;;;;IAEqBA,qB;;;;;;;;;;;;SACnB,aAAUC,CAAV,EAAa;AACX,WAAKC,MAAL,GAAcD,CAAd;AAEA,WAAKE,aAAL,CAAmB,IAAIC,8BAAJ,CAAkB,KAAKC,OAAL,CAAaC,WAAb,EAAlB,EAA8C,KAAKC,UAAL,EAA9C,EAAiE,CAAC,CAAC,KAAKL,MAAxE,CAAnB;;AACA,WAAKM,OAAL;AACD;;;WAED,sBAAa;AACX,UAAI,CAAC,KAAKC,QAAV,EAAoB;AAClB,eAAO,KAAP;AACD;;AAED,aAAOC,KAAK,CAACC,OAAN,CAAc,KAAKF,QAAL,CAAcG,OAA5B,KAAwC,KAAKH,QAAL,CAAcG,OAAd,CAAsBC,MAAtB,GAA+B,CAA9E;AACD;;;SAWD,eAAc;AACZ,aAAO,KAAKJ,QAAZ;AACD,K;SAXD,aAAYK,CAAZ,EAAe;AACb,UAAIA,CAAC,IAAI,CAACA,CAAC,CAACF,OAAZ,EAAqB;AACnBE,QAAAA,CAAC,CAACF,OAAF,GAAY,EAAZ;AACD;;AAED,WAAKH,QAAL,GAAgBK,CAAhB;;AACA,WAAKN,OAAL;AACD;;;WAMD,sBAAaO,IAAb,EAAmB;AACjB,WAAKN,QAAL,CAAcG,OAAd,GAAwBG,IAAxB;AAEA,WAAKZ,aAAL,CAAmB,IAAIa,oCAAJ,CAAwB,KAAKX,OAAL,CAAaC,WAAb,EAAxB,EAAoD,KAAKC,UAAL,EAApD,CAAnB;;AAEA,WAAKC,OAAL;AACD;;;WAED,6BAAoB;AAClB,WAAKA,OAAL;AACD;;;WAED,mBAAU;AAAA;;AACR,UAAI,KAAKN,MAAL,IAAe,KAAKO,QAAxB,EAAkC;AAChC,YAAMQ,EAAE,gBAAGC,kBAAMC,aAAN,CAAoBC,gBAApB,EAAoD;AAC7DC,UAAAA,KAAK,EAAE,KAAKnB,MADiD;AAE7DoB,UAAAA,OAAO,EAAE,KAAKb,QAF+C;AAG7Dc,UAAAA,YAAY,EAAE,KAAKA,YAAL,CAAkBC,IAAlB,CAAuB,IAAvB;AAH+C,SAApD,CAAX;;AAMAC,6BAASC,MAAT,CAAgBT,EAAhB,EAAoB,IAApB,EAA0B,YAAM;AAC9B,yCAAW,KAAX;AACD,SAFD;AAGD;AACF;;;kDArDgDU,W","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { renderMath } from '@pie-lib/pie-toolbox/math-rendering';\nimport { ModelSetEvent, SessionChangedEvent } from '@pie-framework/pie-player-events';\n\nimport ImageClozeAssociationComponent from './root';\n\nexport default class ImageClozeAssociation extends HTMLElement {\n set model(m) {\n this._model = m;\n\n this.dispatchEvent(new ModelSetEvent(this.tagName.toLowerCase(), this.isComplete(), !!this._model));\n this._render();\n }\n\n isComplete() {\n if (!this._session) {\n return false;\n }\n\n return Array.isArray(this._session.answers) && this._session.answers.length > 0;\n }\n\n set session(s) {\n if (s && !s.answers) {\n s.answers = [];\n }\n\n this._session = s;\n this._render();\n }\n\n get session() {\n return this._session;\n }\n\n updateAnswer(data) {\n this._session.answers = data;\n\n this.dispatchEvent(new SessionChangedEvent(this.tagName.toLowerCase(), this.isComplete()));\n\n this._render();\n }\n\n connectedCallback() {\n this._render();\n }\n\n _render() {\n if (this._model && this._session) {\n const el = React.createElement(ImageClozeAssociationComponent, {\n model: this._model,\n session: this._session,\n updateAnswer: this.updateAnswer.bind(this),\n });\n\n ReactDOM.render(el, this, () => {\n renderMath(this);\n });\n }\n }\n}\n"],"file":"index.js"}
@@ -23,7 +23,7 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
23
23
 
24
24
  var _core = require("@material-ui/core");
25
25
 
26
- var _renderUi = require("@pie-lib/render-ui");
26
+ var _renderUi = require("@pie-lib/pie-toolbox/render-ui");
27
27
 
28
28
  var _evaluationIcon = _interopRequireDefault(require("./evaluation-icon"));
29
29
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/interactive-section.jsx"],"names":["InteractiveSection","props","classes","responseCorrect","styleProp","undefined","children","classname","getClassname","evaluationStyle","display","margin","marginTop","React","Component","propTypes","PropTypes","object","oneOfType","element","array","isRequired","bool","number","defaultProps","styles","theme","interactiveDefault","spacing","unit","border","color","disabled","interactiveCorrect","correct","interactiveIncorrect","incorrect"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAEA;;;;;;IAEMA,kB;;;;;;;;;;;;WACJ,wBAAe;AACb,wBAAqC,KAAKC,KAA1C;AAAA,UAAQC,OAAR,eAAQA,OAAR;AAAA,UAAiBC,eAAjB,eAAiBA,eAAjB;AACA,UAAIC,SAAJ;;AAEA,cAAQD,eAAR;AACE,aAAKE,SAAL;AACED,UAAAA,SAAS,GAAG,oBAAZ;AACA;;AACF,aAAK,IAAL;AACEA,UAAAA,SAAS,GAAG,oBAAZ;AACA;;AACF;AACEA,UAAAA,SAAS,GAAG,sBAAZ;AACA;AATJ;;AAWA,aAAOF,OAAO,CAACE,SAAD,CAAd;AACD;;;WAED,kBAAS;AACP,yBAAsC,KAAKH,KAA3C;AAAA,UAAQK,QAAR,gBAAQA,QAAR;AAAA,UAAkBH,eAAlB,gBAAkBA,eAAlB;AACA,UAAMI,SAAS,GAAG,KAAKC,YAAL,EAAlB;AACA,UAAMC,eAAe,GAAG;AACtBC,QAAAA,OAAO,EAAE,MADa;AAEtBC,QAAAA,MAAM,EAAE,QAFc;AAGtBC,QAAAA,SAAS,EAAE,CAAC;AAHU,OAAxB;AAMA,0BACE;AAAK,QAAA,SAAS,EAAEL;AAAhB,sBACE,gCAAC,0BAAD;AAAgB,QAAA,cAAc,EAAEE,eAAhC;AAAiD,QAAA,MAAM,MAAvD;AAAwD,QAAA,SAAS,EAAEN;AAAnE,QADF,EAEGG,QAFH,CADF;AAMD;;;EAlC8BO,kBAAMC,S;;AAqCvCd,kBAAkB,CAACe,SAAnB,GAA+B;AAC7Bb,EAAAA,OAAO,EAAEc,sBAAUC,MADU;AAE7BX,EAAAA,QAAQ,EAAEU,sBAAUE,SAAV,CAAoB,CAACF,sBAAUG,OAAX,EAAoBH,sBAAUI,KAA9B,CAApB,EAA0DC,UAFvC;AAG7BlB,EAAAA,eAAe,EAAEa,sBAAUE,SAAV,CAAoB,CAACF,sBAAUM,IAAX,EAAiBN,sBAAUO,MAA3B,CAApB;AAHY,CAA/B;AAMAvB,kBAAkB,CAACwB,YAAnB,GAAkC;AAChCtB,EAAAA,OAAO,EAAE,EADuB;AAEhCC,EAAAA,eAAe,EAAEE;AAFe,CAAlC;;AAKA,IAAMoB,MAAM,GAAG,SAATA,MAAS,CAACC,KAAD;AAAA,SAAY;AACzBC,IAAAA,kBAAkB,EAAE;AAClBf,MAAAA,SAAS,EAAEc,KAAK,CAACE,OAAN,CAAcC,IAAd,GAAqB,CADd;AAElBC,MAAAA,MAAM,sBAAeC,gBAAMC,QAAN,EAAf;AAFY,KADK;AAKzBC,IAAAA,kBAAkB,EAAE;AAClBrB,MAAAA,SAAS,EAAEc,KAAK,CAACE,OAAN,CAAcC,IAAd,GAAqB,CADd;AAElBC,MAAAA,MAAM,sBAAeC,gBAAMG,OAAN,EAAf;AAFY,KALK;AASzBC,IAAAA,oBAAoB,EAAE;AACpBvB,MAAAA,SAAS,EAAEc,KAAK,CAACE,OAAN,CAAcC,IAAd,GAAqB,CADZ;AAEpBC,MAAAA,MAAM,sBAAeC,gBAAMK,SAAN,EAAf;AAFc;AATG,GAAZ;AAAA,CAAf;;eAee,sBAAWX,MAAX,EAAmBzB,kBAAnB,C","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core';\nimport { color } from '@pie-lib/render-ui';\n\nimport EvaluationIcon from './evaluation-icon';\n\nclass InteractiveSection extends React.Component {\n getClassname() {\n const { classes, responseCorrect } = this.props;\n let styleProp;\n\n switch (responseCorrect) {\n case undefined:\n styleProp = 'interactiveDefault';\n break;\n case true:\n styleProp = 'interactiveCorrect';\n break;\n default:\n styleProp = 'interactiveIncorrect';\n break;\n }\n return classes[styleProp];\n }\n\n render() {\n const { children, responseCorrect } = this.props;\n const classname = this.getClassname();\n const evaluationStyle = {\n display: 'flex',\n margin: '0 auto',\n marginTop: -14,\n };\n\n return (\n <div className={classname}>\n <EvaluationIcon containerStyle={evaluationStyle} filled isCorrect={responseCorrect} />\n {children}\n </div>\n );\n }\n}\n\nInteractiveSection.propTypes = {\n classes: PropTypes.object,\n children: PropTypes.oneOfType([PropTypes.element, PropTypes.array]).isRequired,\n responseCorrect: PropTypes.oneOfType([PropTypes.bool, PropTypes.number]),\n};\n\nInteractiveSection.defaultProps = {\n classes: {},\n responseCorrect: undefined,\n};\n\nconst styles = (theme) => ({\n interactiveDefault: {\n marginTop: theme.spacing.unit * 2,\n border: `1px solid ${color.disabled()}`,\n },\n interactiveCorrect: {\n marginTop: theme.spacing.unit * 2,\n border: `2px solid ${color.correct()}`,\n },\n interactiveIncorrect: {\n marginTop: theme.spacing.unit * 2,\n border: `2px solid ${color.incorrect()}`,\n },\n});\n\nexport default withStyles(styles)(InteractiveSection);\n"],"file":"interactive-section.js"}
1
+ {"version":3,"sources":["../src/interactive-section.jsx"],"names":["InteractiveSection","props","classes","responseCorrect","styleProp","undefined","children","classname","getClassname","evaluationStyle","display","margin","marginTop","React","Component","propTypes","PropTypes","object","oneOfType","element","array","isRequired","bool","number","defaultProps","styles","theme","interactiveDefault","spacing","unit","border","color","disabled","interactiveCorrect","correct","interactiveIncorrect","incorrect"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAEA;;;;;;IAEMA,kB;;;;;;;;;;;;WACJ,wBAAe;AACb,wBAAqC,KAAKC,KAA1C;AAAA,UAAQC,OAAR,eAAQA,OAAR;AAAA,UAAiBC,eAAjB,eAAiBA,eAAjB;AACA,UAAIC,SAAJ;;AAEA,cAAQD,eAAR;AACE,aAAKE,SAAL;AACED,UAAAA,SAAS,GAAG,oBAAZ;AACA;;AACF,aAAK,IAAL;AACEA,UAAAA,SAAS,GAAG,oBAAZ;AACA;;AACF;AACEA,UAAAA,SAAS,GAAG,sBAAZ;AACA;AATJ;;AAWA,aAAOF,OAAO,CAACE,SAAD,CAAd;AACD;;;WAED,kBAAS;AACP,yBAAsC,KAAKH,KAA3C;AAAA,UAAQK,QAAR,gBAAQA,QAAR;AAAA,UAAkBH,eAAlB,gBAAkBA,eAAlB;AACA,UAAMI,SAAS,GAAG,KAAKC,YAAL,EAAlB;AACA,UAAMC,eAAe,GAAG;AACtBC,QAAAA,OAAO,EAAE,MADa;AAEtBC,QAAAA,MAAM,EAAE,QAFc;AAGtBC,QAAAA,SAAS,EAAE,CAAC;AAHU,OAAxB;AAMA,0BACE;AAAK,QAAA,SAAS,EAAEL;AAAhB,sBACE,gCAAC,0BAAD;AAAgB,QAAA,cAAc,EAAEE,eAAhC;AAAiD,QAAA,MAAM,MAAvD;AAAwD,QAAA,SAAS,EAAEN;AAAnE,QADF,EAEGG,QAFH,CADF;AAMD;;;EAlC8BO,kBAAMC,S;;AAqCvCd,kBAAkB,CAACe,SAAnB,GAA+B;AAC7Bb,EAAAA,OAAO,EAAEc,sBAAUC,MADU;AAE7BX,EAAAA,QAAQ,EAAEU,sBAAUE,SAAV,CAAoB,CAACF,sBAAUG,OAAX,EAAoBH,sBAAUI,KAA9B,CAApB,EAA0DC,UAFvC;AAG7BlB,EAAAA,eAAe,EAAEa,sBAAUE,SAAV,CAAoB,CAACF,sBAAUM,IAAX,EAAiBN,sBAAUO,MAA3B,CAApB;AAHY,CAA/B;AAMAvB,kBAAkB,CAACwB,YAAnB,GAAkC;AAChCtB,EAAAA,OAAO,EAAE,EADuB;AAEhCC,EAAAA,eAAe,EAAEE;AAFe,CAAlC;;AAKA,IAAMoB,MAAM,GAAG,SAATA,MAAS,CAACC,KAAD;AAAA,SAAY;AACzBC,IAAAA,kBAAkB,EAAE;AAClBf,MAAAA,SAAS,EAAEc,KAAK,CAACE,OAAN,CAAcC,IAAd,GAAqB,CADd;AAElBC,MAAAA,MAAM,sBAAeC,gBAAMC,QAAN,EAAf;AAFY,KADK;AAKzBC,IAAAA,kBAAkB,EAAE;AAClBrB,MAAAA,SAAS,EAAEc,KAAK,CAACE,OAAN,CAAcC,IAAd,GAAqB,CADd;AAElBC,MAAAA,MAAM,sBAAeC,gBAAMG,OAAN,EAAf;AAFY,KALK;AASzBC,IAAAA,oBAAoB,EAAE;AACpBvB,MAAAA,SAAS,EAAEc,KAAK,CAACE,OAAN,CAAcC,IAAd,GAAqB,CADZ;AAEpBC,MAAAA,MAAM,sBAAeC,gBAAMK,SAAN,EAAf;AAFc;AATG,GAAZ;AAAA,CAAf;;eAee,sBAAWX,MAAX,EAAmBzB,kBAAnB,C","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core';\nimport { color } from '@pie-lib/pie-toolbox/render-ui';\n\nimport EvaluationIcon from './evaluation-icon';\n\nclass InteractiveSection extends React.Component {\n getClassname() {\n const { classes, responseCorrect } = this.props;\n let styleProp;\n\n switch (responseCorrect) {\n case undefined:\n styleProp = 'interactiveDefault';\n break;\n case true:\n styleProp = 'interactiveCorrect';\n break;\n default:\n styleProp = 'interactiveIncorrect';\n break;\n }\n return classes[styleProp];\n }\n\n render() {\n const { children, responseCorrect } = this.props;\n const classname = this.getClassname();\n const evaluationStyle = {\n display: 'flex',\n margin: '0 auto',\n marginTop: -14,\n };\n\n return (\n <div className={classname}>\n <EvaluationIcon containerStyle={evaluationStyle} filled isCorrect={responseCorrect} />\n {children}\n </div>\n );\n }\n}\n\nInteractiveSection.propTypes = {\n classes: PropTypes.object,\n children: PropTypes.oneOfType([PropTypes.element, PropTypes.array]).isRequired,\n responseCorrect: PropTypes.oneOfType([PropTypes.bool, PropTypes.number]),\n};\n\nInteractiveSection.defaultProps = {\n classes: {},\n responseCorrect: undefined,\n};\n\nconst styles = (theme) => ({\n interactiveDefault: {\n marginTop: theme.spacing.unit * 2,\n border: `1px solid ${color.disabled()}`,\n },\n interactiveCorrect: {\n marginTop: theme.spacing.unit * 2,\n border: `2px solid ${color.correct()}`,\n },\n interactiveIncorrect: {\n marginTop: theme.spacing.unit * 2,\n border: `2px solid ${color.incorrect()}`,\n },\n});\n\nexport default withStyles(styles)(InteractiveSection);\n"],"file":"interactive-section.js"}
@@ -25,11 +25,11 @@ var _react = _interopRequireDefault(require("react"));
25
25
 
26
26
  var _propTypes = _interopRequireDefault(require("prop-types"));
27
27
 
28
- var _drag = require("@pie-lib/drag");
28
+ var _drag = require("@pie-lib/pie-toolbox/drag");
29
29
 
30
30
  var _styles = require("@material-ui/core/styles");
31
31
 
32
- var _renderUi = require("@pie-lib/render-ui");
32
+ var _renderUi = require("@pie-lib/pie-toolbox/render-ui");
33
33
 
34
34
  var _classnames = _interopRequireDefault(require("classnames"));
35
35
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/possible-response.jsx"],"names":["PossibleResponse","props","classes","isCorrect","data","styleProp","undefined","connectDragSource","containerStyle","additionalClass","getClassname","evaluationStyle","fontSize","position","bottom","right","base","span","hiddenSpan","hidden","value","React","Component","propTypes","canDrag","PropTypes","bool","isRequired","object","func","onDragBegin","onDragEnd","defaultProps","styles","backgroundColor","color","background","border","primary","display","alignItems","justifyContent","minHeight","padding","marginLeft","marginTop","width","baseCorrect","correct","baseIncorrect","incorrect","pointerEvents","visibility","Styled","tileSource","beginDrag","id","containerIndex","endDrag","c","types","response","connect","monitor","dragSource","isDragging"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { DragSource } from '@pie-lib/drag';\nimport { withStyles } from '@material-ui/core/styles';\nimport { color } from '@pie-lib/render-ui';\nimport classNames from 'classnames';\nimport { PreviewPrompt } from '@pie-lib/render-ui';\nimport EvaluationIcon from './evaluation-icon';\nimport c from './constants';\n\nexport class PossibleResponse extends React.Component {\n getClassname = () => {\n const {\n classes,\n data: { isCorrect },\n } = this.props;\n let styleProp;\n\n switch (isCorrect) {\n case undefined:\n styleProp = null;\n break;\n case true:\n styleProp = 'baseCorrect';\n break;\n default:\n styleProp = 'baseIncorrect';\n break;\n }\n return styleProp ? classes[styleProp] : '';\n };\n\n render() {\n const { classes, connectDragSource, containerStyle, data } = this.props;\n const additionalClass = this.getClassname();\n const evaluationStyle = {\n fontSize: 14,\n position: 'absolute',\n bottom: '3px',\n right: '3px',\n };\n\n return connectDragSource(\n <div className={`${classes.base} ${additionalClass}`} style={containerStyle}>\n <PreviewPrompt className={classNames([classes.span, { [classes.hiddenSpan]: data.hidden }])} prompt={data.value} tagName=\"span\" />\n <EvaluationIcon isCorrect={data.isCorrect} containerStyle={evaluationStyle} />\n </div>,\n );\n }\n}\n\nPossibleResponse.propTypes = {\n canDrag: PropTypes.bool.isRequired,\n classes: PropTypes.object,\n connectDragSource: PropTypes.func,\n containerStyle: PropTypes.object,\n data: PropTypes.object.isRequired,\n onDragBegin: PropTypes.func.isRequired,\n onDragEnd: PropTypes.func.isRequired,\n};\n\nPossibleResponse.defaultProps = {\n classes: {},\n connectDragSource: () => {},\n containerStyle: {},\n};\n\nconst styles = () => ({\n base: {\n position: 'relative',\n backgroundColor: color.background(),\n border: `1px solid ${color.primary()}`,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n minHeight: '28px',\n padding: '0 3px',\n marginLeft: 2,\n marginTop: 2,\n width: 'fit-content',\n },\n baseCorrect: {\n border: `2px solid ${color.correct()}`,\n },\n baseIncorrect: {\n border: `2px solid ${color.incorrect()}`,\n },\n span: {\n backgroundColor: color.background(),\n // Added for touch devices, for image content.\n // This will prevent the context menu from appearing and not allowing other interactions with the image.\n // If interactions with the image in the token will be requested we should handle only the context Menu.\n pointerEvents: 'none',\n },\n hiddenSpan: {\n visibility: 'hidden',\n },\n});\n\nconst Styled = withStyles(styles)(PossibleResponse);\n\nconst tileSource = {\n canDrag(props) {\n const { canDrag } = props;\n return canDrag;\n },\n beginDrag(props) {\n const {\n data,\n data: { id, value, containerIndex },\n onDragBegin,\n } = props;\n onDragBegin(data);\n return {\n id,\n value,\n containerIndex,\n };\n },\n endDrag(props) {\n props.onDragEnd();\n },\n};\n\nexport default DragSource(c.types.response, tileSource, (connect, monitor) => ({\n connectDragSource: connect.dragSource(),\n isDragging: monitor.isDragging(),\n}))(Styled);\n"],"file":"possible-response.js"}
1
+ {"version":3,"sources":["../src/possible-response.jsx"],"names":["PossibleResponse","props","classes","isCorrect","data","styleProp","undefined","connectDragSource","containerStyle","additionalClass","getClassname","evaluationStyle","fontSize","position","bottom","right","base","span","hiddenSpan","hidden","value","React","Component","propTypes","canDrag","PropTypes","bool","isRequired","object","func","onDragBegin","onDragEnd","defaultProps","styles","backgroundColor","color","background","border","primary","display","alignItems","justifyContent","minHeight","padding","marginLeft","marginTop","width","baseCorrect","correct","baseIncorrect","incorrect","pointerEvents","visibility","Styled","tileSource","beginDrag","id","containerIndex","endDrag","c","types","response","connect","monitor","dragSource","isDragging"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AACA;;;;;;IAEaA,gB;;;;;;;;;;;;;;;qGACI,YAAM;AACnB,wBAGI,MAAKC,KAHT;AAAA,UACEC,OADF,eACEA,OADF;AAAA,UAEUC,SAFV,eAEEC,IAFF,CAEUD,SAFV;AAIA,UAAIE,SAAJ;;AAEA,cAAQF,SAAR;AACE,aAAKG,SAAL;AACED,UAAAA,SAAS,GAAG,IAAZ;AACA;;AACF,aAAK,IAAL;AACEA,UAAAA,SAAS,GAAG,aAAZ;AACA;;AACF;AACEA,UAAAA,SAAS,GAAG,eAAZ;AACA;AATJ;;AAWA,aAAOA,SAAS,GAAGH,OAAO,CAACG,SAAD,CAAV,GAAwB,EAAxC;AACD,K;;;;;;WAED,kBAAS;AACP,yBAA6D,KAAKJ,KAAlE;AAAA,UAAQC,OAAR,gBAAQA,OAAR;AAAA,UAAiBK,iBAAjB,gBAAiBA,iBAAjB;AAAA,UAAoCC,cAApC,gBAAoCA,cAApC;AAAA,UAAoDJ,IAApD,gBAAoDA,IAApD;AACA,UAAMK,eAAe,GAAG,KAAKC,YAAL,EAAxB;AACA,UAAMC,eAAe,GAAG;AACtBC,QAAAA,QAAQ,EAAE,EADY;AAEtBC,QAAAA,QAAQ,EAAE,UAFY;AAGtBC,QAAAA,MAAM,EAAE,KAHc;AAItBC,QAAAA,KAAK,EAAE;AAJe,OAAxB;AAOA,aAAOR,iBAAiB,eACtB;AAAK,QAAA,SAAS,YAAKL,OAAO,CAACc,IAAb,cAAqBP,eAArB,CAAd;AAAsD,QAAA,KAAK,EAAED;AAA7D,sBACE,gCAAC,uBAAD;AAAe,QAAA,SAAS,EAAE,4BAAW,CAACN,OAAO,CAACe,IAAT,uCAAkBf,OAAO,CAACgB,UAA1B,EAAuCd,IAAI,CAACe,MAA5C,EAAX,CAA1B;AAA6F,QAAA,MAAM,EAAEf,IAAI,CAACgB,KAA1G;AAAiH,QAAA,OAAO,EAAC;AAAzH,QADF,eAEE,gCAAC,0BAAD;AAAgB,QAAA,SAAS,EAAEhB,IAAI,CAACD,SAAhC;AAA2C,QAAA,cAAc,EAAEQ;AAA3D,QAFF,CADsB,CAAxB;AAMD;;;EAtCmCU,kBAAMC,S;;;AAyC5CtB,gBAAgB,CAACuB,SAAjB,GAA6B;AAC3BC,EAAAA,OAAO,EAAEC,sBAAUC,IAAV,CAAeC,UADG;AAE3BzB,EAAAA,OAAO,EAAEuB,sBAAUG,MAFQ;AAG3BrB,EAAAA,iBAAiB,EAAEkB,sBAAUI,IAHF;AAI3BrB,EAAAA,cAAc,EAAEiB,sBAAUG,MAJC;AAK3BxB,EAAAA,IAAI,EAAEqB,sBAAUG,MAAV,CAAiBD,UALI;AAM3BG,EAAAA,WAAW,EAAEL,sBAAUI,IAAV,CAAeF,UAND;AAO3BI,EAAAA,SAAS,EAAEN,sBAAUI,IAAV,CAAeF;AAPC,CAA7B;AAUA3B,gBAAgB,CAACgC,YAAjB,GAAgC;AAC9B9B,EAAAA,OAAO,EAAE,EADqB;AAE9BK,EAAAA,iBAAiB,EAAE,6BAAM,CAAE,CAFG;AAG9BC,EAAAA,cAAc,EAAE;AAHc,CAAhC;;AAMA,IAAMyB,MAAM,GAAG,SAATA,MAAS;AAAA,SAAO;AACpBjB,IAAAA,IAAI,EAAE;AACJH,MAAAA,QAAQ,EAAE,UADN;AAEJqB,MAAAA,eAAe,EAAEC,gBAAMC,UAAN,EAFb;AAGJC,MAAAA,MAAM,sBAAeF,gBAAMG,OAAN,EAAf,CAHF;AAIJC,MAAAA,OAAO,EAAE,MAJL;AAKJC,MAAAA,UAAU,EAAE,QALR;AAMJC,MAAAA,cAAc,EAAE,QANZ;AAOJC,MAAAA,SAAS,EAAE,MAPP;AAQJC,MAAAA,OAAO,EAAE,OARL;AASJC,MAAAA,UAAU,EAAE,CATR;AAUJC,MAAAA,SAAS,EAAE,CAVP;AAWJC,MAAAA,KAAK,EAAE;AAXH,KADc;AAcpBC,IAAAA,WAAW,EAAE;AACXV,MAAAA,MAAM,sBAAeF,gBAAMa,OAAN,EAAf;AADK,KAdO;AAiBpBC,IAAAA,aAAa,EAAE;AACbZ,MAAAA,MAAM,sBAAeF,gBAAMe,SAAN,EAAf;AADO,KAjBK;AAoBpBjC,IAAAA,IAAI,EAAE;AACJiB,MAAAA,eAAe,EAAEC,gBAAMC,UAAN,EADb;AAEJ;AACA;AACA;AACAe,MAAAA,aAAa,EAAE;AALX,KApBc;AA2BpBjC,IAAAA,UAAU,EAAE;AACVkC,MAAAA,UAAU,EAAE;AADF;AA3BQ,GAAP;AAAA,CAAf;;AAgCA,IAAMC,MAAM,GAAG,wBAAWpB,MAAX,EAAmBjC,gBAAnB,CAAf;AAEA,IAAMsD,UAAU,GAAG;AACjB9B,EAAAA,OADiB,mBACTvB,KADS,EACF;AACb,QAAQuB,OAAR,GAAoBvB,KAApB,CAAQuB,OAAR;AACA,WAAOA,OAAP;AACD,GAJgB;AAKjB+B,EAAAA,SALiB,qBAKPtD,KALO,EAKA;AACf,QACEG,IADF,GAIIH,KAJJ,CACEG,IADF;AAAA,sBAIIH,KAJJ,CAEEG,IAFF;AAAA,QAEUoD,EAFV,eAEUA,EAFV;AAAA,QAEcpC,KAFd,eAEcA,KAFd;AAAA,QAEqBqC,cAFrB,eAEqBA,cAFrB;AAAA,QAGE3B,WAHF,GAII7B,KAJJ,CAGE6B,WAHF;AAKAA,IAAAA,WAAW,CAAC1B,IAAD,CAAX;AACA,WAAO;AACLoD,MAAAA,EAAE,EAAFA,EADK;AAELpC,MAAAA,KAAK,EAALA,KAFK;AAGLqC,MAAAA,cAAc,EAAdA;AAHK,KAAP;AAKD,GAjBgB;AAkBjBC,EAAAA,OAlBiB,mBAkBTzD,KAlBS,EAkBF;AACbA,IAAAA,KAAK,CAAC8B,SAAN;AACD;AApBgB,CAAnB;;eAuBe,sBAAW4B,sBAAEC,KAAF,CAAQC,QAAnB,EAA6BP,UAA7B,EAAyC,UAACQ,OAAD,EAAUC,OAAV;AAAA,SAAuB;AAC7ExD,IAAAA,iBAAiB,EAAEuD,OAAO,CAACE,UAAR,EAD0D;AAE7EC,IAAAA,UAAU,EAAEF,OAAO,CAACE,UAAR;AAFiE,GAAvB;AAAA,CAAzC,EAGXZ,MAHW,C","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { DragSource } from '@pie-lib/pie-toolbox/drag';\nimport { withStyles } from '@material-ui/core/styles';\nimport { color } from '@pie-lib/pie-toolbox/render-ui';\nimport classNames from 'classnames';\nimport { PreviewPrompt } from '@pie-lib/pie-toolbox/render-ui';\nimport EvaluationIcon from './evaluation-icon';\nimport c from './constants';\n\nexport class PossibleResponse extends React.Component {\n getClassname = () => {\n const {\n classes,\n data: { isCorrect },\n } = this.props;\n let styleProp;\n\n switch (isCorrect) {\n case undefined:\n styleProp = null;\n break;\n case true:\n styleProp = 'baseCorrect';\n break;\n default:\n styleProp = 'baseIncorrect';\n break;\n }\n return styleProp ? classes[styleProp] : '';\n };\n\n render() {\n const { classes, connectDragSource, containerStyle, data } = this.props;\n const additionalClass = this.getClassname();\n const evaluationStyle = {\n fontSize: 14,\n position: 'absolute',\n bottom: '3px',\n right: '3px',\n };\n\n return connectDragSource(\n <div className={`${classes.base} ${additionalClass}`} style={containerStyle}>\n <PreviewPrompt className={classNames([classes.span, { [classes.hiddenSpan]: data.hidden }])} prompt={data.value} tagName=\"span\" />\n <EvaluationIcon isCorrect={data.isCorrect} containerStyle={evaluationStyle} />\n </div>,\n );\n }\n}\n\nPossibleResponse.propTypes = {\n canDrag: PropTypes.bool.isRequired,\n classes: PropTypes.object,\n connectDragSource: PropTypes.func,\n containerStyle: PropTypes.object,\n data: PropTypes.object.isRequired,\n onDragBegin: PropTypes.func.isRequired,\n onDragEnd: PropTypes.func.isRequired,\n};\n\nPossibleResponse.defaultProps = {\n classes: {},\n connectDragSource: () => {},\n containerStyle: {},\n};\n\nconst styles = () => ({\n base: {\n position: 'relative',\n backgroundColor: color.background(),\n border: `1px solid ${color.primary()}`,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n minHeight: '28px',\n padding: '0 3px',\n marginLeft: 2,\n marginTop: 2,\n width: 'fit-content',\n },\n baseCorrect: {\n border: `2px solid ${color.correct()}`,\n },\n baseIncorrect: {\n border: `2px solid ${color.incorrect()}`,\n },\n span: {\n backgroundColor: color.background(),\n // Added for touch devices, for image content.\n // This will prevent the context menu from appearing and not allowing other interactions with the image.\n // If interactions with the image in the token will be requested we should handle only the context Menu.\n pointerEvents: 'none',\n },\n hiddenSpan: {\n visibility: 'hidden',\n },\n});\n\nconst Styled = withStyles(styles)(PossibleResponse);\n\nconst tileSource = {\n canDrag(props) {\n const { canDrag } = props;\n return canDrag;\n },\n beginDrag(props) {\n const {\n data,\n data: { id, value, containerIndex },\n onDragBegin,\n } = props;\n onDragBegin(data);\n return {\n id,\n value,\n containerIndex,\n };\n },\n endDrag(props) {\n props.onDragEnd();\n },\n};\n\nexport default DragSource(c.types.response, tileSource, (connect, monitor) => ({\n connectDragSource: connect.dragSource(),\n isDragging: monitor.isDragging(),\n}))(Styled);\n"],"file":"possible-response.js"}
@@ -13,9 +13,9 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
13
13
 
14
14
  var _core = require("@material-ui/core");
15
15
 
16
- var _renderUi = require("@pie-lib/render-ui");
16
+ var _renderUi = require("@pie-lib/pie-toolbox/render-ui");
17
17
 
18
- var _drag = require("@pie-lib/drag");
18
+ var _drag = require("@pie-lib/pie-toolbox/drag");
19
19
 
20
20
  var _possibleResponse = _interopRequireDefault(require("./possible-response"));
21
21
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/possible-responses.jsx"],"names":["PossibleResponses","canDrag","classes","data","onAnswerRemove","onDragBegin","onDragEnd","base","map","item","id","propTypes","PropTypes","bool","isRequired","object","array","func","defaultProps","styles","theme","backgroundColor","color","background","padding","spacing","unit"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AAEA,IAAMA,iBAAiB,GAAG,SAApBA,iBAAoB;AAAA,MAAGC,OAAH,QAAGA,OAAH;AAAA,MAAYC,OAAZ,QAAYA,OAAZ;AAAA,MAAqBC,IAArB,QAAqBA,IAArB;AAAA,MAA2BC,cAA3B,QAA2BA,cAA3B;AAAA,MAA2CC,WAA3C,QAA2CA,WAA3C;AAAA,MAAwDC,SAAxD,QAAwDA,SAAxD;AAAA,sBACxB;AAAK,IAAA,SAAS,EAAEJ,OAAO,CAACK;AAAxB,kBACE,gCAAC,6BAAD;AAAyB,IAAA,QAAQ,EAAE,CAACN,OAApC;AAA6C,IAAA,cAAc,EAAEG;AAA7D,KACGD,IAAI,CAACK,GAAL,CAAS,UAACC,IAAD;AAAA,wBACR,gCAAC,4BAAD;AAAkB,MAAA,OAAO,EAAER,OAA3B;AAAoC,MAAA,GAAG,EAAEQ,IAAI,CAACC,EAA9C;AAAkD,MAAA,IAAI,EAAED,IAAxD;AAA8D,MAAA,WAAW,EAAEJ,WAA3E;AAAwF,MAAA,SAAS,EAAEC;AAAnG,MADQ;AAAA,GAAT,CADH,CADF,CADwB;AAAA,CAA1B;;AAUAN,iBAAiB,CAACW,SAAlB,GAA8B;AAC5BV,EAAAA,OAAO,EAAEW,sBAAUC,IAAV,CAAeC,UADI;AAE5BZ,EAAAA,OAAO,EAAEU,sBAAUG,MAFS;AAG5BZ,EAAAA,IAAI,EAAES,sBAAUI,KAAV,CAAgBF,UAHM;AAI5BV,EAAAA,cAAc,EAAEQ,sBAAUK,IAAV,CAAeH,UAJH;AAK5BT,EAAAA,WAAW,EAAEO,sBAAUK,IAAV,CAAeH,UALA;AAM5BR,EAAAA,SAAS,EAAEM,sBAAUK,IAAV,CAAeH;AANE,CAA9B;AASAd,iBAAiB,CAACkB,YAAlB,GAAiC;AAC/BhB,EAAAA,OAAO,EAAE;AADsB,CAAjC;;AAIA,IAAMiB,MAAM,GAAG,SAATA,MAAS,CAACC,KAAD;AAAA,SAAY;AACzBb,IAAAA,IAAI,EAAE;AACJc,MAAAA,eAAe,EAAEC,gBAAMC,UAAN,EADb;AAEJC,MAAAA,OAAO,EAAEJ,KAAK,CAACK,OAAN,CAAcC,IAAd,GAAqB;AAF1B;AADmB,GAAZ;AAAA,CAAf;;eAOe,sBAAWP,MAAX,EAAmBnB,iBAAnB,C","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core';\nimport { color } from '@pie-lib/render-ui';\nimport { ICADroppablePlaceholder } from '@pie-lib/drag';\n\nimport PossibleResponse from './possible-response';\n\nconst PossibleResponses = ({ canDrag, classes, data, onAnswerRemove, onDragBegin, onDragEnd }) => (\n <div className={classes.base}>\n <ICADroppablePlaceholder disabled={!canDrag} onRemoveAnswer={onAnswerRemove}>\n {data.map((item) => (\n <PossibleResponse canDrag={canDrag} key={item.id} data={item} onDragBegin={onDragBegin} onDragEnd={onDragEnd} />\n ))}\n </ICADroppablePlaceholder>\n </div>\n);\n\nPossibleResponses.propTypes = {\n canDrag: PropTypes.bool.isRequired,\n classes: PropTypes.object,\n data: PropTypes.array.isRequired,\n onAnswerRemove: PropTypes.func.isRequired,\n onDragBegin: PropTypes.func.isRequired,\n onDragEnd: PropTypes.func.isRequired,\n};\n\nPossibleResponses.defaultProps = {\n classes: {},\n};\n\nconst styles = (theme) => ({\n base: {\n backgroundColor: color.background(),\n padding: theme.spacing.unit * 2,\n },\n});\n\nexport default withStyles(styles)(PossibleResponses);\n"],"file":"possible-responses.js"}
1
+ {"version":3,"sources":["../src/possible-responses.jsx"],"names":["PossibleResponses","canDrag","classes","data","onAnswerRemove","onDragBegin","onDragEnd","base","map","item","id","propTypes","PropTypes","bool","isRequired","object","array","func","defaultProps","styles","theme","backgroundColor","color","background","padding","spacing","unit"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AAEA,IAAMA,iBAAiB,GAAG,SAApBA,iBAAoB;AAAA,MAAGC,OAAH,QAAGA,OAAH;AAAA,MAAYC,OAAZ,QAAYA,OAAZ;AAAA,MAAqBC,IAArB,QAAqBA,IAArB;AAAA,MAA2BC,cAA3B,QAA2BA,cAA3B;AAAA,MAA2CC,WAA3C,QAA2CA,WAA3C;AAAA,MAAwDC,SAAxD,QAAwDA,SAAxD;AAAA,sBACxB;AAAK,IAAA,SAAS,EAAEJ,OAAO,CAACK;AAAxB,kBACE,gCAAC,6BAAD;AAAyB,IAAA,QAAQ,EAAE,CAACN,OAApC;AAA6C,IAAA,cAAc,EAAEG;AAA7D,KACGD,IAAI,CAACK,GAAL,CAAS,UAACC,IAAD;AAAA,wBACR,gCAAC,4BAAD;AAAkB,MAAA,OAAO,EAAER,OAA3B;AAAoC,MAAA,GAAG,EAAEQ,IAAI,CAACC,EAA9C;AAAkD,MAAA,IAAI,EAAED,IAAxD;AAA8D,MAAA,WAAW,EAAEJ,WAA3E;AAAwF,MAAA,SAAS,EAAEC;AAAnG,MADQ;AAAA,GAAT,CADH,CADF,CADwB;AAAA,CAA1B;;AAUAN,iBAAiB,CAACW,SAAlB,GAA8B;AAC5BV,EAAAA,OAAO,EAAEW,sBAAUC,IAAV,CAAeC,UADI;AAE5BZ,EAAAA,OAAO,EAAEU,sBAAUG,MAFS;AAG5BZ,EAAAA,IAAI,EAAES,sBAAUI,KAAV,CAAgBF,UAHM;AAI5BV,EAAAA,cAAc,EAAEQ,sBAAUK,IAAV,CAAeH,UAJH;AAK5BT,EAAAA,WAAW,EAAEO,sBAAUK,IAAV,CAAeH,UALA;AAM5BR,EAAAA,SAAS,EAAEM,sBAAUK,IAAV,CAAeH;AANE,CAA9B;AASAd,iBAAiB,CAACkB,YAAlB,GAAiC;AAC/BhB,EAAAA,OAAO,EAAE;AADsB,CAAjC;;AAIA,IAAMiB,MAAM,GAAG,SAATA,MAAS,CAACC,KAAD;AAAA,SAAY;AACzBb,IAAAA,IAAI,EAAE;AACJc,MAAAA,eAAe,EAAEC,gBAAMC,UAAN,EADb;AAEJC,MAAAA,OAAO,EAAEJ,KAAK,CAACK,OAAN,CAAcC,IAAd,GAAqB;AAF1B;AADmB,GAAZ;AAAA,CAAf;;eAOe,sBAAWP,MAAX,EAAmBnB,iBAAnB,C","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core';\nimport { color } from '@pie-lib/pie-toolbox/render-ui';\nimport { ICADroppablePlaceholder } from '@pie-lib/pie-toolbox/drag';\n\nimport PossibleResponse from './possible-response';\n\nconst PossibleResponses = ({ canDrag, classes, data, onAnswerRemove, onDragBegin, onDragEnd }) => (\n <div className={classes.base}>\n <ICADroppablePlaceholder disabled={!canDrag} onRemoveAnswer={onAnswerRemove}>\n {data.map((item) => (\n <PossibleResponse canDrag={canDrag} key={item.id} data={item} onDragBegin={onDragBegin} onDragEnd={onDragEnd} />\n ))}\n </ICADroppablePlaceholder>\n </div>\n);\n\nPossibleResponses.propTypes = {\n canDrag: PropTypes.bool.isRequired,\n classes: PropTypes.object,\n data: PropTypes.array.isRequired,\n onAnswerRemove: PropTypes.func.isRequired,\n onDragBegin: PropTypes.func.isRequired,\n onDragEnd: PropTypes.func.isRequired,\n};\n\nPossibleResponses.defaultProps = {\n classes: {},\n};\n\nconst styles = (theme) => ({\n base: {\n backgroundColor: color.background(),\n padding: theme.spacing.unit * 2,\n },\n});\n\nexport default withStyles(styles)(PossibleResponses);\n"],"file":"possible-responses.js"}
package/lib/root.js CHANGED
@@ -27,19 +27,19 @@ var _react = _interopRequireDefault(require("react"));
27
27
 
28
28
  var _propTypes = _interopRequireDefault(require("prop-types"));
29
29
 
30
- var _drag = require("@pie-lib/drag");
30
+ var _drag = require("@pie-lib/pie-toolbox/drag");
31
31
 
32
32
  var _reactTransitionGroup = require("react-transition-group");
33
33
 
34
- var _icons = require("@pie-lib/icons");
34
+ var _icons = require("@pie-lib/pie-toolbox/icons");
35
35
 
36
- var _renderUi = require("@pie-lib/render-ui");
36
+ var _renderUi = require("@pie-lib/pie-toolbox/render-ui");
37
37
 
38
38
  var _styles = require("@material-ui/core/styles");
39
39
 
40
- var _correctAnswerToggle = _interopRequireDefault(require("@pie-lib/correct-answer-toggle"));
40
+ var _correctAnswerToggle = _interopRequireDefault(require("@pie-lib/pie-toolbox/correct-answer-toggle"));
41
41
 
42
- var _translator = _interopRequireDefault(require("@pie-lib/translator"));
42
+ var _translator = _interopRequireDefault(require("@pie-lib/pie-toolbox/translator"));
43
43
 
44
44
  var _imageContainer = _interopRequireDefault(require("./image-container"));
45
45
 
package/lib/root.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/root.jsx"],"names":["translator","Translator","generateId","Math","random","toString","substring","Date","getTime","styles","theme","main","color","text","backgroundColor","background","stimulus","fontSize","typography","teacherInstructions","marginBottom","spacing","unit","rationale","marginTop","ImageClozeAssociationComponent","props","draggingElement","setState","id","value","answer","responseContainerIndex","duplicateResponses","model","updateAnswer","state","answers","possibleResponses","maxResponsePerZone","answersToStore","filter","a","containerIndex","length","answersInThisContainer","answersInOtherContainers","b","shiftedItem","shift","maxResponsePerZoneWarning","push","_","max","map","c","parseInt","isNaN","response","shouldNotPushInPossibleResponses","undefined","showCorrect","responseContainers","session","possibleResponsesWithIds","item","index","groupBy","grp","slice","flatMap","possibleResponsesFiltered","find","classes","disabled","image","responseCorrect","validation","prompt","showDashedBorder","mode","language","isEvaluateMode","showToggle","validResponse","correctAnswers","forEach","container","i","images","v","warningMessage","t","lng","count","answersToShow","hidden","visible","toggleCorrect","handleOnAnswerSelect","beginDrag","handleOnDragEnd","handleOnAnswerRemove","React","Component","WarningInfo","warning","margin","padding","display","alignItems","width","height","message","paddingLeft","userSelect","__html","propTypes","PropTypes","string","object","isRequired","func","defaultProps","StyledComponent"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withDragContext } from '@pie-lib/drag';\nimport { CSSTransition, TransitionGroup } from 'react-transition-group';\nimport { ShowRationale } from '@pie-lib/icons';\nimport { color, Collapsible, PreviewPrompt, hasText } from '@pie-lib/render-ui';\nimport { withStyles } from '@material-ui/core/styles';\nimport CorrectAnswerToggle from '@pie-lib/correct-answer-toggle';\nimport Translator from '@pie-lib/translator';\n\nconst { translator } = Translator;\nimport Image from './image-container';\nimport InteractiveSection from './interactive-section';\nimport PossibleResponses from './possible-responses';\nimport { getUnansweredAnswers, getAnswersCorrectness } from './utils-correctness';\nimport _ from 'lodash';\n\nconst generateId = () => Math.random().toString(36).substring(2) + new Date().getTime().toString(36);\n\nconst styles = (theme) => ({\n main: {\n color: color.text(),\n backgroundColor: color.background(),\n },\n stimulus: {\n fontSize: theme.typography.fontSize,\n },\n teacherInstructions: {\n marginBottom: theme.spacing.unit * 2,\n },\n rationale: {\n marginTop: theme.spacing.unit * 2,\n }\n});\n\nclass ImageClozeAssociationComponent extends React.Component {\n constructor(props) {\n super(props);\n const {\n model: { possibleResponses, responseContainers, duplicateResponses, maxResponsePerZone },\n session,\n } = props;\n let { answers } = session || {};\n // set id for each possible response\n const possibleResponsesWithIds = (possibleResponses || []).map((item, index) => ({\n value: item,\n id: `${index}`,\n }));\n\n answers = _(answers || [])\n .groupBy('containerIndex')\n // keep only last maxResponsePerZone answers for each zone\n .map((grp) => grp.slice(-(maxResponsePerZone || 1)))\n .flatMap()\n // set id for each answer\n .map((answer, index) => ({ ...answer, id: `${index}` }))\n // return only answer which have a valid container index\n .filter((answer) => answer.containerIndex < responseContainers.length)\n .value();\n\n const possibleResponsesFiltered = possibleResponsesWithIds.filter(\n (response) => !answers.find((answer) => answer.value === response.value),\n );\n this.state = {\n answers: answers || [],\n draggingElement: { id: '', value: '' },\n possibleResponses: duplicateResponses ? possibleResponsesWithIds : possibleResponsesFiltered,\n // set id for each response containers\n responseContainers: responseContainers.map((item, index) => ({\n index,\n ...item,\n id: `${index}`,\n })),\n maxResponsePerZone: maxResponsePerZone || 1,\n showCorrect: false,\n };\n }\n\n beginDrag = (draggingElement) => {\n this.setState({\n draggingElement,\n });\n };\n\n handleOnDragEnd = () => {\n this.setState({\n draggingElement: { id: '', value: '' },\n });\n };\n\n handleOnAnswerSelect = (answer, responseContainerIndex) => {\n const {\n model: { duplicateResponses },\n updateAnswer,\n } = this.props;\n const { answers, possibleResponses, maxResponsePerZone } = this.state;\n let answersToStore;\n\n if (maxResponsePerZone === answers.filter((a) => a.containerIndex === responseContainerIndex).length) {\n const answersInThisContainer = answers.filter((a) => a.containerIndex === responseContainerIndex);\n const answersInOtherContainers = answers.filter((b) => b.containerIndex !== responseContainerIndex);\n\n const shiftedItem = answersInThisContainer[0];\n if (maxResponsePerZone === 1) {\n answersInThisContainer.shift(); // FIFO\n } else {\n this.setState({ maxResponsePerZoneWarning: true });\n return;\n }\n\n // if duplicates are not allowed, make sure to put the shifted value back in possible responses\n if (!duplicateResponses) {\n possibleResponses.push({\n ...shiftedItem,\n containerIndex: '',\n id: `${_.max(possibleResponses.map((c) => parseInt(c.id)).filter((id) => !isNaN(id))) + 1}`,\n });\n }\n\n // answers will be:\n // + shifted answers for the current container\n // + if duplicatesAllowed, all the other answers from other containers\n // else: all the answers from other containers that are not having the same value\n // + new answer\n answersToStore = [\n ...answersInThisContainer, // shifted\n // TODO allow duplicates case Question: should we remove answer from a container if dragged to another container?\n // if yes, this should do it: add a.id !== answer.id instead of 'true'\n ...answersInOtherContainers.filter((a) => (duplicateResponses ? true : a.value !== answer.value)), // un-shifted\n {\n ...answer,\n containerIndex: responseContainerIndex,\n ...(duplicateResponses ? { id: generateId() } : {}),\n },\n ];\n } else {\n // answers will be:\n // + if duplicatesAllowed, all the other answers, except the one that was dragged\n // else: all the answers that are not having the same value\n // + new answer\n answersToStore = [\n // TODO allow duplicates case Question: should we remove answer from a container if dragged to another container?\n // if yes, this should do it: add a.id !== answer.id instead of 'true'\n ...answers.filter((a) => (duplicateResponses ? a.id !== answer.id : a.value !== answer.value)),\n {\n ...answer,\n containerIndex: responseContainerIndex,\n ...(duplicateResponses ? { id: generateId() } : {}),\n },\n ];\n }\n\n this.setState({\n maxResponsePerZoneWarning: false,\n answers: answersToStore,\n possibleResponses:\n // for single response per container remove answer from possible responses\n duplicateResponses\n ? possibleResponses\n : possibleResponses.filter((response) => response.value !== answer.value),\n });\n updateAnswer(answersToStore);\n };\n\n handleOnAnswerRemove = (answer) => {\n const {\n model: { duplicateResponses },\n updateAnswer,\n } = this.props;\n const { answers, possibleResponses } = this.state;\n const answersToStore = answers.filter((a) => a.id !== answer.id);\n const shouldNotPushInPossibleResponses = answer.containerIndex === undefined; // don't duplicate possible responses\n\n this.setState({\n maxResponsePerZoneWarning: false,\n answers: answersToStore,\n // push back into possible responses the removed answer if responses cannot be duplicated\n possibleResponses:\n duplicateResponses || shouldNotPushInPossibleResponses\n ? possibleResponses\n : [\n ...possibleResponses,\n {\n ...answer,\n containerIndex: undefined,\n },\n ],\n });\n updateAnswer(answersToStore);\n };\n\n toggleCorrect = (showCorrect) => this.setState({ showCorrect });\n\n render() {\n const {\n classes,\n model: {\n disabled,\n duplicateResponses,\n image,\n stimulus,\n responseCorrect,\n validation,\n teacherInstructions,\n prompt,\n showDashedBorder,\n mode,\n rationale,\n language\n },\n } = this.props;\n const {\n answers,\n draggingElement,\n possibleResponses,\n responseContainers,\n maxResponsePerZone,\n maxResponsePerZoneWarning,\n showCorrect,\n } = this.state;\n const isEvaluateMode = mode === 'evaluate';\n const showToggle = isEvaluateMode && !responseCorrect;\n\n const { validResponse } = validation || {};\n const correctAnswers = [];\n\n if (validResponse) {\n (validResponse.value || []).forEach((container, i) => {\n (container.images || []).forEach((v) => {\n correctAnswers.push({\n value: v,\n containerIndex: i,\n });\n });\n });\n }\n\n const warningMessage = translator.t('imageClozeAssociation.reachedLimit_other',\n { lng: language, count: maxResponsePerZone });\n\n let answersToShow =\n responseCorrect !== undefined ? getAnswersCorrectness(answers, validation, duplicateResponses) : answers;\n\n if (responseCorrect === false && maxResponsePerZone === 1) {\n answersToShow = [...answersToShow, ...getUnansweredAnswers(answersToShow, validation)];\n }\n\n return (\n <div className={classes.main}>\n {teacherInstructions && hasText(teacherInstructions) && (\n <Collapsible\n className={classes.teacherInstructions}\n labels={{\n hidden: 'Show Teacher Instructions',\n visible: 'Hide Teacher Instructions',\n }}\n >\n <PreviewPrompt prompt={teacherInstructions} />\n </Collapsible>\n )}\n\n <PreviewPrompt className=\"prompt\" prompt={prompt} />\n\n <PreviewPrompt defaultClassName={classes.stimulus} prompt={stimulus} />\n\n <CorrectAnswerToggle show={showToggle} toggled={showCorrect} onToggle={this.toggleCorrect} language={language}/>\n\n {showCorrect && showToggle ? (\n <InteractiveSection responseCorrect={true}>\n <Image\n canDrag={false}\n answers={correctAnswers}\n draggingElement={draggingElement}\n duplicateResponses={duplicateResponses}\n image={image}\n onAnswerSelect={this.handleOnAnswerSelect}\n onDragAnswerBegin={this.beginDrag}\n onDragAnswerEnd={this.handleOnDragEnd}\n responseContainers={responseContainers}\n showDashedBorder={showDashedBorder}\n />\n </InteractiveSection>\n ) : (\n <InteractiveSection responseCorrect={responseCorrect}>\n <Image\n canDrag={!disabled}\n answers={answersToShow}\n draggingElement={draggingElement}\n duplicateResponses={duplicateResponses}\n image={image}\n onAnswerSelect={this.handleOnAnswerSelect}\n onDragAnswerBegin={this.beginDrag}\n onDragAnswerEnd={this.handleOnDragEnd}\n responseContainers={responseContainers}\n showDashedBorder={showDashedBorder}\n />\n\n {maxResponsePerZoneWarning && <WarningInfo message={warningMessage} />}\n\n <PossibleResponses\n canDrag={!disabled}\n data={possibleResponses}\n onAnswerRemove={this.handleOnAnswerRemove}\n onDragBegin={this.beginDrag}\n onDragEnd={this.handleOnDragEnd}\n />\n </InteractiveSection>\n )}\n\n {rationale && hasText(rationale) && (\n <Collapsible\n className={classes.rationale}\n labels={{\n hidden: 'Show Rationale',\n visible: 'Hide Rationale',\n }}\n >\n <PreviewPrompt prompt={rationale} />\n </Collapsible>\n )}\n </div>\n );\n }\n}\n\nconst WarningInfo = withStyles((theme) => ({\n warning: {\n margin: `0 ${theme.spacing.unit * 2}px`,\n backgroundColor: '#dddddd',\n padding: theme.spacing.unit,\n display: 'flex',\n alignItems: 'center',\n width: 'fit-content',\n '& svg': {\n height: '30px',\n },\n '& h1': {\n padding: '0px',\n margin: '0px',\n },\n },\n message: {\n paddingLeft: theme.spacing.unit / 2,\n userSelect: 'none',\n },\n}))(({ classes, message }) => (\n <TransitionGroup>\n <CSSTransition classNames={'fb'} key=\"fb\" timeout={300}>\n <div key=\"panel\" className={classes.warning}>\n <ShowRationale iconSet=\"emoji\" shape=\"square\" />\n <span className={classes.message} dangerouslySetInnerHTML={{ __html: message }} />\n </div>\n </CSSTransition>\n </TransitionGroup>\n));\n\nWarningInfo.propTypes = {\n message: PropTypes.string,\n classes: PropTypes.object.isRequired,\n};\n\nImageClozeAssociationComponent.propTypes = {\n classes: PropTypes.object,\n model: PropTypes.object.isRequired,\n session: PropTypes.object,\n updateAnswer: PropTypes.func.isRequired,\n};\n\nImageClozeAssociationComponent.defaultProps = {\n classes: {},\n};\n\nconst StyledComponent = withStyles(styles)(ImageClozeAssociationComponent);\n\nexport default withDragContext(StyledComponent);\n"],"file":"root.js"}
1
+ {"version":3,"sources":["../src/root.jsx"],"names":["translator","Translator","generateId","Math","random","toString","substring","Date","getTime","styles","theme","main","color","text","backgroundColor","background","stimulus","fontSize","typography","teacherInstructions","marginBottom","spacing","unit","rationale","marginTop","ImageClozeAssociationComponent","props","draggingElement","setState","id","value","answer","responseContainerIndex","duplicateResponses","model","updateAnswer","state","answers","possibleResponses","maxResponsePerZone","answersToStore","filter","a","containerIndex","length","answersInThisContainer","answersInOtherContainers","b","shiftedItem","shift","maxResponsePerZoneWarning","push","_","max","map","c","parseInt","isNaN","response","shouldNotPushInPossibleResponses","undefined","showCorrect","responseContainers","session","possibleResponsesWithIds","item","index","groupBy","grp","slice","flatMap","possibleResponsesFiltered","find","classes","disabled","image","responseCorrect","validation","prompt","showDashedBorder","mode","language","isEvaluateMode","showToggle","validResponse","correctAnswers","forEach","container","i","images","v","warningMessage","t","lng","count","answersToShow","hidden","visible","toggleCorrect","handleOnAnswerSelect","beginDrag","handleOnDragEnd","handleOnAnswerRemove","React","Component","WarningInfo","warning","margin","padding","display","alignItems","width","height","message","paddingLeft","userSelect","__html","propTypes","PropTypes","string","object","isRequired","func","defaultProps","StyledComponent"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withDragContext } from '@pie-lib/pie-toolbox/drag';\nimport { CSSTransition, TransitionGroup } from 'react-transition-group';\nimport { ShowRationale } from '@pie-lib/pie-toolbox/icons';\nimport { color, Collapsible, PreviewPrompt, hasText } from '@pie-lib/pie-toolbox/render-ui';\nimport { withStyles } from '@material-ui/core/styles';\nimport CorrectAnswerToggle from '@pie-lib/pie-toolbox/correct-answer-toggle';\nimport Translator from '@pie-lib/pie-toolbox/translator';\n\nconst { translator } = Translator;\nimport Image from './image-container';\nimport InteractiveSection from './interactive-section';\nimport PossibleResponses from './possible-responses';\nimport { getUnansweredAnswers, getAnswersCorrectness } from './utils-correctness';\nimport _ from 'lodash';\n\nconst generateId = () => Math.random().toString(36).substring(2) + new Date().getTime().toString(36);\n\nconst styles = (theme) => ({\n main: {\n color: color.text(),\n backgroundColor: color.background(),\n },\n stimulus: {\n fontSize: theme.typography.fontSize,\n },\n teacherInstructions: {\n marginBottom: theme.spacing.unit * 2,\n },\n rationale: {\n marginTop: theme.spacing.unit * 2,\n }\n});\n\nclass ImageClozeAssociationComponent extends React.Component {\n constructor(props) {\n super(props);\n const {\n model: { possibleResponses, responseContainers, duplicateResponses, maxResponsePerZone },\n session,\n } = props;\n let { answers } = session || {};\n // set id for each possible response\n const possibleResponsesWithIds = (possibleResponses || []).map((item, index) => ({\n value: item,\n id: `${index}`,\n }));\n\n answers = _(answers || [])\n .groupBy('containerIndex')\n // keep only last maxResponsePerZone answers for each zone\n .map((grp) => grp.slice(-(maxResponsePerZone || 1)))\n .flatMap()\n // set id for each answer\n .map((answer, index) => ({ ...answer, id: `${index}` }))\n // return only answer which have a valid container index\n .filter((answer) => answer.containerIndex < responseContainers.length)\n .value();\n\n const possibleResponsesFiltered = possibleResponsesWithIds.filter(\n (response) => !answers.find((answer) => answer.value === response.value),\n );\n this.state = {\n answers: answers || [],\n draggingElement: { id: '', value: '' },\n possibleResponses: duplicateResponses ? possibleResponsesWithIds : possibleResponsesFiltered,\n // set id for each response containers\n responseContainers: responseContainers.map((item, index) => ({\n index,\n ...item,\n id: `${index}`,\n })),\n maxResponsePerZone: maxResponsePerZone || 1,\n showCorrect: false,\n };\n }\n\n beginDrag = (draggingElement) => {\n this.setState({\n draggingElement,\n });\n };\n\n handleOnDragEnd = () => {\n this.setState({\n draggingElement: { id: '', value: '' },\n });\n };\n\n handleOnAnswerSelect = (answer, responseContainerIndex) => {\n const {\n model: { duplicateResponses },\n updateAnswer,\n } = this.props;\n const { answers, possibleResponses, maxResponsePerZone } = this.state;\n let answersToStore;\n\n if (maxResponsePerZone === answers.filter((a) => a.containerIndex === responseContainerIndex).length) {\n const answersInThisContainer = answers.filter((a) => a.containerIndex === responseContainerIndex);\n const answersInOtherContainers = answers.filter((b) => b.containerIndex !== responseContainerIndex);\n\n const shiftedItem = answersInThisContainer[0];\n if (maxResponsePerZone === 1) {\n answersInThisContainer.shift(); // FIFO\n } else {\n this.setState({ maxResponsePerZoneWarning: true });\n return;\n }\n\n // if duplicates are not allowed, make sure to put the shifted value back in possible responses\n if (!duplicateResponses) {\n possibleResponses.push({\n ...shiftedItem,\n containerIndex: '',\n id: `${_.max(possibleResponses.map((c) => parseInt(c.id)).filter((id) => !isNaN(id))) + 1}`,\n });\n }\n\n // answers will be:\n // + shifted answers for the current container\n // + if duplicatesAllowed, all the other answers from other containers\n // else: all the answers from other containers that are not having the same value\n // + new answer\n answersToStore = [\n ...answersInThisContainer, // shifted\n // TODO allow duplicates case Question: should we remove answer from a container if dragged to another container?\n // if yes, this should do it: add a.id !== answer.id instead of 'true'\n ...answersInOtherContainers.filter((a) => (duplicateResponses ? true : a.value !== answer.value)), // un-shifted\n {\n ...answer,\n containerIndex: responseContainerIndex,\n ...(duplicateResponses ? { id: generateId() } : {}),\n },\n ];\n } else {\n // answers will be:\n // + if duplicatesAllowed, all the other answers, except the one that was dragged\n // else: all the answers that are not having the same value\n // + new answer\n answersToStore = [\n // TODO allow duplicates case Question: should we remove answer from a container if dragged to another container?\n // if yes, this should do it: add a.id !== answer.id instead of 'true'\n ...answers.filter((a) => (duplicateResponses ? a.id !== answer.id : a.value !== answer.value)),\n {\n ...answer,\n containerIndex: responseContainerIndex,\n ...(duplicateResponses ? { id: generateId() } : {}),\n },\n ];\n }\n\n this.setState({\n maxResponsePerZoneWarning: false,\n answers: answersToStore,\n possibleResponses:\n // for single response per container remove answer from possible responses\n duplicateResponses\n ? possibleResponses\n : possibleResponses.filter((response) => response.value !== answer.value),\n });\n updateAnswer(answersToStore);\n };\n\n handleOnAnswerRemove = (answer) => {\n const {\n model: { duplicateResponses },\n updateAnswer,\n } = this.props;\n const { answers, possibleResponses } = this.state;\n const answersToStore = answers.filter((a) => a.id !== answer.id);\n const shouldNotPushInPossibleResponses = answer.containerIndex === undefined; // don't duplicate possible responses\n\n this.setState({\n maxResponsePerZoneWarning: false,\n answers: answersToStore,\n // push back into possible responses the removed answer if responses cannot be duplicated\n possibleResponses:\n duplicateResponses || shouldNotPushInPossibleResponses\n ? possibleResponses\n : [\n ...possibleResponses,\n {\n ...answer,\n containerIndex: undefined,\n },\n ],\n });\n updateAnswer(answersToStore);\n };\n\n toggleCorrect = (showCorrect) => this.setState({ showCorrect });\n\n render() {\n const {\n classes,\n model: {\n disabled,\n duplicateResponses,\n image,\n stimulus,\n responseCorrect,\n validation,\n teacherInstructions,\n prompt,\n showDashedBorder,\n mode,\n rationale,\n language\n },\n } = this.props;\n const {\n answers,\n draggingElement,\n possibleResponses,\n responseContainers,\n maxResponsePerZone,\n maxResponsePerZoneWarning,\n showCorrect,\n } = this.state;\n const isEvaluateMode = mode === 'evaluate';\n const showToggle = isEvaluateMode && !responseCorrect;\n\n const { validResponse } = validation || {};\n const correctAnswers = [];\n\n if (validResponse) {\n (validResponse.value || []).forEach((container, i) => {\n (container.images || []).forEach((v) => {\n correctAnswers.push({\n value: v,\n containerIndex: i,\n });\n });\n });\n }\n\n const warningMessage = translator.t('imageClozeAssociation.reachedLimit_other',\n { lng: language, count: maxResponsePerZone });\n\n let answersToShow =\n responseCorrect !== undefined ? getAnswersCorrectness(answers, validation, duplicateResponses) : answers;\n\n if (responseCorrect === false && maxResponsePerZone === 1) {\n answersToShow = [...answersToShow, ...getUnansweredAnswers(answersToShow, validation)];\n }\n\n return (\n <div className={classes.main}>\n {teacherInstructions && hasText(teacherInstructions) && (\n <Collapsible\n className={classes.teacherInstructions}\n labels={{\n hidden: 'Show Teacher Instructions',\n visible: 'Hide Teacher Instructions',\n }}\n >\n <PreviewPrompt prompt={teacherInstructions} />\n </Collapsible>\n )}\n\n <PreviewPrompt className=\"prompt\" prompt={prompt} />\n\n <PreviewPrompt defaultClassName={classes.stimulus} prompt={stimulus} />\n\n <CorrectAnswerToggle show={showToggle} toggled={showCorrect} onToggle={this.toggleCorrect} language={language}/>\n\n {showCorrect && showToggle ? (\n <InteractiveSection responseCorrect={true}>\n <Image\n canDrag={false}\n answers={correctAnswers}\n draggingElement={draggingElement}\n duplicateResponses={duplicateResponses}\n image={image}\n onAnswerSelect={this.handleOnAnswerSelect}\n onDragAnswerBegin={this.beginDrag}\n onDragAnswerEnd={this.handleOnDragEnd}\n responseContainers={responseContainers}\n showDashedBorder={showDashedBorder}\n />\n </InteractiveSection>\n ) : (\n <InteractiveSection responseCorrect={responseCorrect}>\n <Image\n canDrag={!disabled}\n answers={answersToShow}\n draggingElement={draggingElement}\n duplicateResponses={duplicateResponses}\n image={image}\n onAnswerSelect={this.handleOnAnswerSelect}\n onDragAnswerBegin={this.beginDrag}\n onDragAnswerEnd={this.handleOnDragEnd}\n responseContainers={responseContainers}\n showDashedBorder={showDashedBorder}\n />\n\n {maxResponsePerZoneWarning && <WarningInfo message={warningMessage} />}\n\n <PossibleResponses\n canDrag={!disabled}\n data={possibleResponses}\n onAnswerRemove={this.handleOnAnswerRemove}\n onDragBegin={this.beginDrag}\n onDragEnd={this.handleOnDragEnd}\n />\n </InteractiveSection>\n )}\n\n {rationale && hasText(rationale) && (\n <Collapsible\n className={classes.rationale}\n labels={{\n hidden: 'Show Rationale',\n visible: 'Hide Rationale',\n }}\n >\n <PreviewPrompt prompt={rationale} />\n </Collapsible>\n )}\n </div>\n );\n }\n}\n\nconst WarningInfo = withStyles((theme) => ({\n warning: {\n margin: `0 ${theme.spacing.unit * 2}px`,\n backgroundColor: '#dddddd',\n padding: theme.spacing.unit,\n display: 'flex',\n alignItems: 'center',\n width: 'fit-content',\n '& svg': {\n height: '30px',\n },\n '& h1': {\n padding: '0px',\n margin: '0px',\n },\n },\n message: {\n paddingLeft: theme.spacing.unit / 2,\n userSelect: 'none',\n },\n}))(({ classes, message }) => (\n <TransitionGroup>\n <CSSTransition classNames={'fb'} key=\"fb\" timeout={300}>\n <div key=\"panel\" className={classes.warning}>\n <ShowRationale iconSet=\"emoji\" shape=\"square\" />\n <span className={classes.message} dangerouslySetInnerHTML={{ __html: message }} />\n </div>\n </CSSTransition>\n </TransitionGroup>\n));\n\nWarningInfo.propTypes = {\n message: PropTypes.string,\n classes: PropTypes.object.isRequired,\n};\n\nImageClozeAssociationComponent.propTypes = {\n classes: PropTypes.object,\n model: PropTypes.object.isRequired,\n session: PropTypes.object,\n updateAnswer: PropTypes.func.isRequired,\n};\n\nImageClozeAssociationComponent.defaultProps = {\n classes: {},\n};\n\nconst StyledComponent = withStyles(styles)(ImageClozeAssociationComponent);\n\nexport default withDragContext(StyledComponent);\n"],"file":"root.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pie-element/image-cloze-association",
3
- "version": "4.16.1",
3
+ "version": "4.16.2-next.2+f22cd60fc",
4
4
  "description": "",
5
5
  "repository": "pie-framework/pie-elements",
6
6
  "publishConfig": {
@@ -10,11 +10,7 @@
10
10
  "@material-ui/core": "^3.9.3",
11
11
  "@material-ui/icons": "^3.0.1",
12
12
  "@pie-framework/pie-player-events": "^0.1.0",
13
- "@pie-lib/correct-answer-toggle": "^2.5.11",
14
- "@pie-lib/drag": "^2.2.9",
15
- "@pie-lib/math-rendering": "2.5.18",
16
- "@pie-lib/render-ui": "^4.15.9",
17
- "@pie-lib/translator": "^2.3.0",
13
+ "@pie-lib/pie-toolbox": "1.0.1",
18
14
  "classnames": "^2.2.6",
19
15
  "prop-types": "^15.6.1",
20
16
  "react": "^16.8.1",
@@ -22,7 +18,7 @@
22
18
  },
23
19
  "author": "pie framework developers",
24
20
  "license": "ISC",
25
- "gitHead": "9017d16cb1939e7d65fa2b3c8f62a8d70898d1c1",
21
+ "gitHead": "f22cd60fc479d41808d66319151a90d1fa6b4499",
26
22
  "scripts": {
27
23
  "postpublish": "../../scripts/postpublish"
28
24
  },
@@ -1,42 +1,63 @@
1
1
  // Jest Snapshot v1, https://goo.gl/fbAQLP
2
2
 
3
3
  exports[`Root snapshots model renders 1`] = `
4
- <ImageClozeAssociationComponent
5
- classes={
4
+ <Memo(DndProvider)
5
+ backend={[Function]}
6
+ context={[Window]}
7
+ options={
6
8
  Object {
7
- "main": "ImageClozeAssociationComponent-main-1",
8
- "rationale": "ImageClozeAssociationComponent-rationale-4",
9
- "stimulus": "ImageClozeAssociationComponent-stimulus-2",
10
- "teacherInstructions": "ImageClozeAssociationComponent-teacherInstructions-3",
11
- }
12
- }
13
- model={
14
- Object {
15
- "answers": Array [
9
+ "backends": Array [
16
10
  Object {
17
- "containerIndex": 0,
18
- "id": 1,
19
- "value": "1",
11
+ "backend": [Function],
20
12
  },
21
13
  Object {
22
- "containerIndex": 1,
23
- "id": 2,
24
- "value": "2",
14
+ "backend": [Function],
15
+ "options": Object {
16
+ "enableMouseEvents": true,
17
+ "enableTouchEvents": true,
18
+ },
19
+ "preview": true,
20
+ "skipDispatchOnTransition": true,
21
+ "transition": Object {
22
+ "_isMBTransition": true,
23
+ "check": [Function],
24
+ "event": "touchstart",
25
+ },
25
26
  },
26
27
  ],
27
- "canDrag": true,
28
- "draggingElement": Object {},
29
- "duplicateResponses": false,
30
- "image": Object {},
31
- "maxResponsePerZone": 5,
32
- "onAnswerSelect": [Function],
33
- "onDragAnswerBegin": [Function],
34
- "onDragAnswerEnd": [Function],
35
- "possibleResponses": Array [],
36
- "responseContainers": Array [],
37
- "showDashedBorder": true,
38
28
  }
39
29
  }
40
- updateAnswer={[Function]}
41
- />
30
+ >
31
+ <WithStyles(ImageClozeAssociationComponent)
32
+ model={
33
+ Object {
34
+ "answers": Array [
35
+ Object {
36
+ "containerIndex": 0,
37
+ "id": 1,
38
+ "value": "1",
39
+ },
40
+ Object {
41
+ "containerIndex": 1,
42
+ "id": 2,
43
+ "value": "2",
44
+ },
45
+ ],
46
+ "canDrag": true,
47
+ "draggingElement": Object {},
48
+ "duplicateResponses": false,
49
+ "image": Object {},
50
+ "maxResponsePerZone": 5,
51
+ "onAnswerSelect": [Function],
52
+ "onDragAnswerBegin": [Function],
53
+ "onDragAnswerEnd": [Function],
54
+ "possibleResponses": Array [],
55
+ "responseContainers": Array [],
56
+ "showDashedBorder": true,
57
+ }
58
+ }
59
+ updateAnswer={[Function]}
60
+ />
61
+ <PreviewComponent />
62
+ </Memo(DndProvider)>
42
63
  `;
@@ -3,7 +3,7 @@ import PropTypes from 'prop-types';
3
3
  import { withStyles } from '@material-ui/core';
4
4
  import Check from '@material-ui/icons/Check';
5
5
  import Close from '@material-ui/icons/Close';
6
- import { color } from '@pie-lib/render-ui';
6
+ import { color } from '@pie-lib/pie-toolbox/render-ui';
7
7
 
8
8
  const getCorrectnessClass = (isCorrect, filled) => {
9
9
  if (filled) {
@@ -1,8 +1,8 @@
1
1
  import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
- import { DropTarget } from '@pie-lib/drag';
3
+ import { DropTarget } from '@pie-lib/pie-toolbox/drag';
4
4
  import { withStyles } from '@material-ui/core/styles';
5
- import { color } from '@pie-lib/render-ui';
5
+ import { color } from '@pie-lib/pie-toolbox/render-ui';
6
6
 
7
7
  import PossibleResponse from './possible-response';
8
8
  import c from './constants';
package/src/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import ReactDOM from 'react-dom';
3
- import { renderMath } from '@pie-lib/math-rendering';
3
+ import { renderMath } from '@pie-lib/pie-toolbox/math-rendering';
4
4
  import { ModelSetEvent, SessionChangedEvent } from '@pie-framework/pie-player-events';
5
5
 
6
6
  import ImageClozeAssociationComponent from './root';
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import { withStyles } from '@material-ui/core';
4
- import { color } from '@pie-lib/render-ui';
4
+ import { color } from '@pie-lib/pie-toolbox/render-ui';
5
5
 
6
6
  import EvaluationIcon from './evaluation-icon';
7
7
 
@@ -1,10 +1,10 @@
1
1
  import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
- import { DragSource } from '@pie-lib/drag';
3
+ import { DragSource } from '@pie-lib/pie-toolbox/drag';
4
4
  import { withStyles } from '@material-ui/core/styles';
5
- import { color } from '@pie-lib/render-ui';
5
+ import { color } from '@pie-lib/pie-toolbox/render-ui';
6
6
  import classNames from 'classnames';
7
- import { PreviewPrompt } from '@pie-lib/render-ui';
7
+ import { PreviewPrompt } from '@pie-lib/pie-toolbox/render-ui';
8
8
  import EvaluationIcon from './evaluation-icon';
9
9
  import c from './constants';
10
10
 
@@ -1,8 +1,8 @@
1
1
  import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import { withStyles } from '@material-ui/core';
4
- import { color } from '@pie-lib/render-ui';
5
- import { ICADroppablePlaceholder } from '@pie-lib/drag';
4
+ import { color } from '@pie-lib/pie-toolbox/render-ui';
5
+ import { ICADroppablePlaceholder } from '@pie-lib/pie-toolbox/drag';
6
6
 
7
7
  import PossibleResponse from './possible-response';
8
8
 
package/src/root.jsx CHANGED
@@ -1,12 +1,12 @@
1
1
  import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
- import { withDragContext } from '@pie-lib/drag';
3
+ import { withDragContext } from '@pie-lib/pie-toolbox/drag';
4
4
  import { CSSTransition, TransitionGroup } from 'react-transition-group';
5
- import { ShowRationale } from '@pie-lib/icons';
6
- import { color, Collapsible, PreviewPrompt, hasText } from '@pie-lib/render-ui';
5
+ import { ShowRationale } from '@pie-lib/pie-toolbox/icons';
6
+ import { color, Collapsible, PreviewPrompt, hasText } from '@pie-lib/pie-toolbox/render-ui';
7
7
  import { withStyles } from '@material-ui/core/styles';
8
- import CorrectAnswerToggle from '@pie-lib/correct-answer-toggle';
9
- import Translator from '@pie-lib/translator';
8
+ import CorrectAnswerToggle from '@pie-lib/pie-toolbox/correct-answer-toggle';
9
+ import Translator from '@pie-lib/pie-toolbox/translator';
10
10
 
11
11
  const { translator } = Translator;
12
12
  import Image from './image-container';