@pie-element/categorize 9.14.1 → 9.14.2-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/configure/CHANGELOG.md +13 -0
  3. package/configure/lib/design/categories/RowLabel.js +3 -3
  4. package/configure/lib/design/categories/RowLabel.js.map +1 -1
  5. package/configure/lib/design/categories/alternateResponses.js +1 -1
  6. package/configure/lib/design/categories/alternateResponses.js.map +1 -1
  7. package/configure/lib/design/categories/choice-preview.js +2 -2
  8. package/configure/lib/design/categories/choice-preview.js.map +1 -1
  9. package/configure/lib/design/categories/droppable-placeholder.js +1 -1
  10. package/configure/lib/design/categories/droppable-placeholder.js.map +1 -1
  11. package/configure/lib/design/categories/index.js +32 -2
  12. package/configure/lib/design/categories/index.js.map +1 -1
  13. package/configure/lib/design/choices/choice.js +2 -2
  14. package/configure/lib/design/choices/choice.js.map +1 -1
  15. package/configure/lib/design/choices/index.js +2 -2
  16. package/configure/lib/design/choices/index.js.map +1 -1
  17. package/configure/lib/design/index.js +8 -8
  18. package/configure/lib/design/index.js.map +1 -1
  19. package/configure/lib/design/input-header.js +2 -2
  20. package/configure/lib/design/input-header.js.map +1 -1
  21. package/configure/lib/index.js +1 -1
  22. package/configure/lib/index.js.map +1 -1
  23. package/configure/package.json +8 -2
  24. package/controller/CHANGELOG.md +12 -0
  25. package/controller/lib/index.js +4 -4
  26. package/controller/lib/index.js.map +1 -1
  27. package/controller/package.json +5 -2
  28. package/docs/demo/.pie/.configure/package.json +10 -0
  29. package/docs/demo/.pie/.controllers/package.json +10 -0
  30. package/docs/demo/.pie/info.entry.js +89 -0
  31. package/docs/demo/.pie/info.webpack.config.js +108 -0
  32. package/docs/demo/.pie/package.json +10 -0
  33. package/docs/demo/pie.manifest.json +11 -0
  34. package/lib/categorize/categories.js +1 -1
  35. package/lib/categorize/categories.js.map +1 -1
  36. package/lib/categorize/category.js +1 -1
  37. package/lib/categorize/category.js.map +1 -1
  38. package/lib/categorize/choice.js +2 -2
  39. package/lib/categorize/choice.js.map +1 -1
  40. package/lib/categorize/droppable-placeholder.js +1 -1
  41. package/lib/categorize/droppable-placeholder.js.map +1 -1
  42. package/lib/categorize/index.js +7 -7
  43. package/lib/categorize/index.js.map +1 -1
  44. package/lib/index.js +2 -2
  45. package/lib/index.js.map +1 -1
  46. package/package.json +9 -3
  47. package/LICENSE.md +0 -5
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.js"],"names":["translator","Translator","getPartialScore","correctResponse","builtCategories","reduce","acc","choices","placements","length","score","filter","ch","correct","maxScore","extraPlacements","totalScore","parseFloat","toFixed","getAlternates","map","c","alternateResponses","alternate","getTotalScore","question","session","env","Object","keys","categories","answers","alternates","enabled","partialScoring","getCorrectness","Promise","resolve","mode","undefined","createDefaultModel","model","defaults","normalize","updateSession","normalizedQuestion","answerCorrectness","role","categoriesPerRow","choicesLabel","choicesPosition","feedback","feedbackEnabled","promptEnabled","prompt","rowLabels","rationaleEnabled","rationale","teacherInstructionsEnabled","teacherInstructions","language","maxChoicesPerCategory","extraCSSRules","minRowHeight","fontSizeFactor","autoplayAudioEnabled","completeAudioEnabled","customAudioButton","note","lockChoiceOrder","filteredCorrectResponse","response","filteredChoices","choice","fb","t","lng","out","correctness","disabled","showNote","outcome","reject","Error","empty","createCorrectResponseSession","id","getInnerText","html","replaceAll","getContent","replace","validate","config","maxAnswerChoices","minChoices","minCategories","maxCategories","maxLengthPerChoice","maxLengthPerCategory","reversedChoices","reverse","errors","choicesErrors","categoriesErrors","forEach","field","required","category","label","index","content","identicalAnswer","slice","some","nbOfCategories","nbOfChoices","categoriesError","choicesError","hasAssociations","duplicateAlternateIndex","duplicateCategory","duplicateAlternate","associationError"],"mappings":"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","sourcesContent":["import isEmpty from 'lodash/isEmpty';\nimport { buildState, score } from '@pie-lib/pie-toolbox/categorize';\nimport { getFeedbackForCorrectness } from '@pie-lib/pie-toolbox/feedback';\nimport { lockChoices, getShuffledChoices, partialScoring } from '@pie-lib/pie-toolbox/controller-utils';\nimport Translator from '@pie-lib/pie-toolbox/translator';\n\nconst { translator } = Translator;\nimport defaults from './defaults';\nimport { isAlternateDuplicated, isCorrectResponseDuplicated } from './utils';\n\n// eslint-disable-next-line no-console\n\nexport { score };\n\nexport const getPartialScore = (correctResponse, builtCategories) => {\n // in the resulted best scenario we make a sum with all the correct responses\n // and all the placements\n const { placements, score } = builtCategories.reduce(\n (acc, { choices = [] }) => ({\n placements: acc.placements + choices.length,\n score: acc.score + choices.filter((ch) => ch.correct).length,\n }),\n { placements: 0, score: 0 },\n );\n\n // in the correct response, we make a sum of the max possible score\n const { maxScore } = correctResponse.reduce(\n (acc, { choices }) => ({\n maxScore: acc.maxScore + choices.length,\n }),\n { maxScore: 0 },\n );\n\n // if there are any extra placements, we subtract from the obtained score\n const extraPlacements = placements > maxScore ? placements - maxScore : 0;\n const totalScore = (score - extraPlacements) / maxScore;\n\n return totalScore < 0 ? 0 : parseFloat(totalScore.toFixed(2));\n};\n\nconst getAlternates = (correctResponse) =>\n correctResponse.map((c) => c.alternateResponses).filter((alternate) => alternate);\n\nexport const getTotalScore = (question, session, env) => {\n if (!session) {\n return 0;\n }\n\n if (Object.keys(session).length === 0) {\n return 0;\n }\n const { categories, choices } = question || {};\n let { correctResponse } = question || {};\n let { answers } = session || {};\n answers = answers || [];\n correctResponse = correctResponse || [];\n\n // this function is used in pie-ui/categorize as well, in order to get the best scenario\n // so we get the best scenario and calculate the score\n const { categories: builtCategories, correct } = buildState(categories, choices, answers, correctResponse);\n\n const alternates = getAlternates(correctResponse);\n const enabled = partialScoring.enabled(question, env);\n\n // if there are any alternates, there will be no partial scoring!\n if (enabled && !alternates.length) {\n // we apply partial scoring\n return getPartialScore(correctResponse, builtCategories);\n }\n\n // else we apply dichotomous\n return correct ? 1 : 0;\n};\n\nexport const getCorrectness = (question, session, env) => {\n return new Promise((resolve) => {\n if (env.mode === 'evaluate') {\n const score = getTotalScore(question, session, env);\n if (score === 1) {\n resolve('correct');\n } else if (score === 0) {\n resolve('incorrect');\n } else {\n resolve('partially-correct');\n }\n } else {\n resolve(undefined);\n }\n });\n};\n\nexport const createDefaultModel = (model = {}) =>\n new Promise((resolve) => {\n resolve({\n ...defaults,\n ...model,\n });\n });\n\nexport const normalize = (question) => ({ ...defaults, ...question });\n\n/**\n *\n * @param {*} question\n * @param {*} session\n * @param {*} env\n * @param {*} updateSession - optional - a function that will set the properties passed into it on the session.\n */\nexport const model = (question, session, env, updateSession) =>\n new Promise(async (resolve) => {\n const normalizedQuestion = normalize(question);\n const answerCorrectness = await getCorrectness(normalizedQuestion, session, env);\n\n const { mode, role } = env || {};\n\n const {\n categories,\n categoriesPerRow,\n choicesLabel,\n choicesPosition,\n correctResponse,\n feedback,\n feedbackEnabled,\n promptEnabled,\n prompt,\n rowLabels,\n rationaleEnabled,\n rationale,\n teacherInstructionsEnabled,\n teacherInstructions,\n language,\n maxChoicesPerCategory,\n extraCSSRules,\n minRowHeight,\n fontSizeFactor,\n autoplayAudioEnabled,\n completeAudioEnabled,\n customAudioButton\n } = normalizedQuestion;\n let { choices, note } = normalizedQuestion;\n let fb;\n\n const lockChoiceOrder = lockChoices(normalizedQuestion, session, env);\n\n const filteredCorrectResponse = correctResponse.map((response) => {\n const filteredChoices = (response.choices || []).filter((choice) => choice !== 'null');\n return { ...response, choices: filteredChoices };\n });\n\n if (mode === 'evaluate' && feedbackEnabled) {\n fb = await getFeedbackForCorrectness(answerCorrectness, feedback);\n }\n\n if (!lockChoiceOrder) {\n choices = await getShuffledChoices(choices, session, updateSession, 'id');\n }\n\n if (!note) {\n note = translator.t('common:commonCorrectAnswerWithAlternates', { lng: language });\n }\n\n const alternates = getAlternates(filteredCorrectResponse);\n const out = {\n categories: categories || [],\n categoriesPerRow: categoriesPerRow || 2,\n maxChoicesPerCategory,\n correctness: answerCorrectness,\n choices: choices || [],\n choicesLabel: choicesLabel || '',\n choicesPosition,\n disabled: mode !== 'gather',\n feedback: fb,\n lockChoiceOrder,\n prompt: promptEnabled ? prompt : null,\n rowLabels,\n note,\n env,\n showNote: alternates && alternates.length > 0,\n correctResponse: mode === 'evaluate' ? filteredCorrectResponse : undefined,\n language,\n extraCSSRules,\n fontSizeFactor,\n minRowHeight: minRowHeight,\n autoplayAudioEnabled,\n completeAudioEnabled,\n customAudioButton\n };\n\n if (role === 'instructor' && (mode === 'view' || mode === 'evaluate')) {\n out.rationale = rationaleEnabled ? rationale : null;\n out.teacherInstructions = teacherInstructionsEnabled ? teacherInstructions : null;\n } else {\n out.rationale = null;\n out.teacherInstructions = null;\n }\n\n resolve(out);\n });\n\nexport const outcome = (question, session, env) => {\n if (env.mode !== 'evaluate') {\n return Promise.reject(new Error('Can not call outcome when mode is not evaluate'));\n } else {\n return new Promise((resolve) => {\n resolve({\n score: getTotalScore(question, session, env),\n empty: !session || isEmpty(session),\n });\n });\n }\n};\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise((resolve) => {\n const { mode, role } = env || {};\n\n if (mode !== 'evaluate' && role === 'instructor') {\n const { correctResponse } = question;\n\n resolve({ answers: correctResponse, id: 1 });\n } else {\n return resolve(null);\n }\n });\n};\n\n// remove all html tags\nconst getInnerText = (html) => (html || '').replaceAll(/<[^>]*>/g, '');\n\n// remove all html tags except img, iframe and source tag for audio\nconst getContent = (html) => (html || '').replace(/(<(?!img|iframe|source)([^>]+)>)/gi, '');\n\nexport const validate = (model = {}, config = {}) => {\n const { categories, choices, correctResponse, maxAnswerChoices } = model;\n const {\n minChoices = 1,\n minCategories = 1,\n maxCategories = 12,\n maxLengthPerChoice = 300,\n maxLengthPerCategory = 150,\n } = config;\n const reversedChoices = [...(choices || [])].reverse();\n const errors = {};\n const choicesErrors = {};\n const categoriesErrors = {};\n\n ['teacherInstructions', 'prompt', 'rationale'].forEach((field) => {\n if (config[field]?.required && !getContent(model[field])) {\n errors[field] = 'This field is required.';\n }\n });\n\n (categories || []).forEach((category) => {\n const { id, label } = category;\n\n if (getInnerText(label).length > maxLengthPerCategory) {\n categoriesErrors[id] = `Category labels should be no more than ${maxLengthPerCategory} characters long.`;\n }\n });\n\n (reversedChoices || []).forEach((choice, index) => {\n const { id, content } = choice;\n\n if (getInnerText(content).length > maxLengthPerChoice) {\n choicesErrors[id] = `Tokens should be no more than ${maxLengthPerChoice} characters long.`;\n }\n\n if (!getContent(content)) {\n choicesErrors[id] = 'Tokens should not be empty.';\n } else {\n const identicalAnswer = reversedChoices.slice(index + 1).some((c) => c.content === content);\n\n if (identicalAnswer) {\n choicesErrors[id] = 'Tokens content should be unique.';\n }\n }\n });\n\n const nbOfCategories = (categories || []).length;\n const nbOfChoices = (choices || []).length;\n\n if (nbOfCategories > maxCategories) {\n errors.categoriesError = `No more than ${maxCategories} categories should be defined.`;\n } else if (nbOfCategories < minCategories) {\n errors.categoriesError = `There should be at least ${minCategories} category defined.`;\n }\n\n if (nbOfChoices < minChoices) {\n errors.choicesError = `There should be at least ${minChoices} choices defined.`;\n } else if (nbOfChoices > maxAnswerChoices) {\n errors.choicesError = `No more than ${maxAnswerChoices} choices should be defined.`;\n }\n\n if (nbOfChoices && nbOfCategories) {\n let hasAssociations = false;\n\n (correctResponse || []).forEach((response) => {\n const { choices = [], alternateResponses = [] } = response;\n\n if (choices.length) {\n hasAssociations = true;\n } else {\n alternateResponses.forEach((alternate) => {\n if ((alternate || []).length) {\n hasAssociations = true;\n }\n });\n }\n });\n\n let duplicateAlternateIndex = -1;\n let duplicateCategory = '';\n (correctResponse || []).forEach((response) => {\n const { choices = [], alternateResponses = [], category } = response;\n\n if (duplicateAlternateIndex === -1) {\n duplicateAlternateIndex = isCorrectResponseDuplicated(choices, alternateResponses);\n\n if (duplicateAlternateIndex === -1) {\n duplicateAlternateIndex = isAlternateDuplicated(alternateResponses);\n }\n\n duplicateCategory = category;\n }\n });\n\n if (duplicateAlternateIndex > -1) {\n errors.duplicateAlternate = { index: duplicateAlternateIndex, category: duplicateCategory };\n }\n\n if (!hasAssociations) {\n errors.associationError = 'At least one token should be assigned to at least one category.';\n }\n }\n\n if (!isEmpty(choicesErrors)) {\n errors.choicesErrors = choicesErrors;\n }\n\n if (!isEmpty(categoriesErrors)) {\n errors.categoriesErrors = categoriesErrors;\n }\n\n return errors;\n};\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../src/index.js"],"names":["translator","Translator","getPartialScore","correctResponse","builtCategories","reduce","acc","choices","placements","length","score","filter","ch","correct","maxScore","extraPlacements","totalScore","parseFloat","toFixed","getAlternates","map","c","alternateResponses","alternate","getTotalScore","question","session","env","Object","keys","categories","answers","alternates","enabled","partialScoring","getCorrectness","Promise","resolve","mode","undefined","createDefaultModel","model","defaults","normalize","updateSession","normalizedQuestion","answerCorrectness","role","categoriesPerRow","choicesLabel","choicesPosition","feedback","feedbackEnabled","promptEnabled","prompt","rowLabels","rationaleEnabled","rationale","teacherInstructionsEnabled","teacherInstructions","language","maxChoicesPerCategory","extraCSSRules","minRowHeight","fontSizeFactor","autoplayAudioEnabled","completeAudioEnabled","customAudioButton","note","lockChoiceOrder","filteredCorrectResponse","response","filteredChoices","choice","fb","t","lng","out","correctness","disabled","showNote","outcome","reject","Error","empty","createCorrectResponseSession","id","getInnerText","html","replaceAll","getContent","replace","validate","config","maxAnswerChoices","minChoices","minCategories","maxCategories","maxLengthPerChoice","maxLengthPerCategory","reversedChoices","reverse","errors","choicesErrors","categoriesErrors","forEach","field","required","category","label","index","content","identicalAnswer","slice","some","nbOfCategories","nbOfChoices","categoriesError","choicesError","hasAssociations","duplicateAlternateIndex","duplicateCategory","duplicateAlternate","associationError"],"mappings":"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","sourcesContent":["import isEmpty from 'lodash/isEmpty';\nimport { buildState, score } from '@pie-lib/categorize';\nimport { getFeedbackForCorrectness } from '@pie-lib/feedback';\nimport { lockChoices, getShuffledChoices, partialScoring } from '@pie-lib/controller-utils';\nimport Translator from '@pie-lib/translator';\n\nconst { translator } = Translator;\nimport defaults from './defaults';\nimport { isAlternateDuplicated, isCorrectResponseDuplicated } from './utils';\n\n// eslint-disable-next-line no-console\n\nexport { score };\n\nexport const getPartialScore = (correctResponse, builtCategories) => {\n // in the resulted best scenario we make a sum with all the correct responses\n // and all the placements\n const { placements, score } = builtCategories.reduce(\n (acc, { choices = [] }) => ({\n placements: acc.placements + choices.length,\n score: acc.score + choices.filter((ch) => ch.correct).length,\n }),\n { placements: 0, score: 0 },\n );\n\n // in the correct response, we make a sum of the max possible score\n const { maxScore } = correctResponse.reduce(\n (acc, { choices }) => ({\n maxScore: acc.maxScore + choices.length,\n }),\n { maxScore: 0 },\n );\n\n // if there are any extra placements, we subtract from the obtained score\n const extraPlacements = placements > maxScore ? placements - maxScore : 0;\n const totalScore = (score - extraPlacements) / maxScore;\n\n return totalScore < 0 ? 0 : parseFloat(totalScore.toFixed(2));\n};\n\nconst getAlternates = (correctResponse) =>\n correctResponse.map((c) => c.alternateResponses).filter((alternate) => alternate);\n\nexport const getTotalScore = (question, session, env) => {\n if (!session) {\n return 0;\n }\n\n if (Object.keys(session).length === 0) {\n return 0;\n }\n const { categories, choices } = question || {};\n let { correctResponse } = question || {};\n let { answers } = session || {};\n answers = answers || [];\n correctResponse = correctResponse || [];\n\n // this function is used in pie-ui/categorize as well, in order to get the best scenario\n // so we get the best scenario and calculate the score\n const { categories: builtCategories, correct } = buildState(categories, choices, answers, correctResponse);\n\n const alternates = getAlternates(correctResponse);\n const enabled = partialScoring.enabled(question, env);\n\n // if there are any alternates, there will be no partial scoring!\n if (enabled && !alternates.length) {\n // we apply partial scoring\n return getPartialScore(correctResponse, builtCategories);\n }\n\n // else we apply dichotomous\n return correct ? 1 : 0;\n};\n\nexport const getCorrectness = (question, session, env) => {\n return new Promise((resolve) => {\n if (env.mode === 'evaluate') {\n const score = getTotalScore(question, session, env);\n if (score === 1) {\n resolve('correct');\n } else if (score === 0) {\n resolve('incorrect');\n } else {\n resolve('partially-correct');\n }\n } else {\n resolve(undefined);\n }\n });\n};\n\nexport const createDefaultModel = (model = {}) =>\n new Promise((resolve) => {\n resolve({\n ...defaults,\n ...model,\n });\n });\n\nexport const normalize = (question) => ({ ...defaults, ...question });\n\n/**\n *\n * @param {*} question\n * @param {*} session\n * @param {*} env\n * @param {*} updateSession - optional - a function that will set the properties passed into it on the session.\n */\nexport const model = (question, session, env, updateSession) =>\n new Promise(async (resolve) => {\n const normalizedQuestion = normalize(question);\n const answerCorrectness = await getCorrectness(normalizedQuestion, session, env);\n\n const { mode, role } = env || {};\n\n const {\n categories,\n categoriesPerRow,\n choicesLabel,\n choicesPosition,\n correctResponse,\n feedback,\n feedbackEnabled,\n promptEnabled,\n prompt,\n rowLabels,\n rationaleEnabled,\n rationale,\n teacherInstructionsEnabled,\n teacherInstructions,\n language,\n maxChoicesPerCategory,\n extraCSSRules,\n minRowHeight,\n fontSizeFactor,\n autoplayAudioEnabled,\n completeAudioEnabled,\n customAudioButton,\n } = normalizedQuestion;\n let { choices, note } = normalizedQuestion;\n let fb;\n\n const lockChoiceOrder = lockChoices(normalizedQuestion, session, env);\n\n const filteredCorrectResponse = correctResponse.map((response) => {\n const filteredChoices = (response.choices || []).filter((choice) => choice !== 'null');\n return { ...response, choices: filteredChoices };\n });\n\n if (mode === 'evaluate' && feedbackEnabled) {\n fb = await getFeedbackForCorrectness(answerCorrectness, feedback);\n }\n\n if (!lockChoiceOrder) {\n choices = await getShuffledChoices(choices, session, updateSession, 'id');\n }\n\n if (!note) {\n note = translator.t('common:commonCorrectAnswerWithAlternates', { lng: language });\n }\n\n const alternates = getAlternates(filteredCorrectResponse);\n const out = {\n categories: categories || [],\n categoriesPerRow: categoriesPerRow || 2,\n maxChoicesPerCategory,\n correctness: answerCorrectness,\n choices: choices || [],\n choicesLabel: choicesLabel || '',\n choicesPosition,\n disabled: mode !== 'gather',\n feedback: fb,\n lockChoiceOrder,\n prompt: promptEnabled ? prompt : null,\n rowLabels,\n note,\n env,\n showNote: alternates && alternates.length > 0,\n correctResponse: mode === 'evaluate' ? filteredCorrectResponse : undefined,\n language,\n extraCSSRules,\n fontSizeFactor,\n minRowHeight: minRowHeight,\n autoplayAudioEnabled,\n completeAudioEnabled,\n customAudioButton,\n };\n\n if (role === 'instructor' && (mode === 'view' || mode === 'evaluate')) {\n out.rationale = rationaleEnabled ? rationale : null;\n out.teacherInstructions = teacherInstructionsEnabled ? teacherInstructions : null;\n } else {\n out.rationale = null;\n out.teacherInstructions = null;\n }\n\n resolve(out);\n });\n\nexport const outcome = (question, session, env) => {\n if (env.mode !== 'evaluate') {\n return Promise.reject(new Error('Can not call outcome when mode is not evaluate'));\n } else {\n return new Promise((resolve) => {\n resolve({\n score: getTotalScore(question, session, env),\n empty: !session || isEmpty(session),\n });\n });\n }\n};\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise((resolve) => {\n const { mode, role } = env || {};\n\n if (mode !== 'evaluate' && role === 'instructor') {\n const { correctResponse } = question;\n\n resolve({ answers: correctResponse, id: 1 });\n } else {\n return resolve(null);\n }\n });\n};\n\n// remove all html tags\nconst getInnerText = (html) => (html || '').replaceAll(/<[^>]*>/g, '');\n\n// remove all html tags except img, iframe and source tag for audio\nconst getContent = (html) => (html || '').replace(/(<(?!img|iframe|source)([^>]+)>)/gi, '');\n\nexport const validate = (model = {}, config = {}) => {\n const { categories, choices, correctResponse, maxAnswerChoices } = model;\n const {\n minChoices = 1,\n minCategories = 1,\n maxCategories = 12,\n maxLengthPerChoice = 300,\n maxLengthPerCategory = 150,\n } = config;\n const reversedChoices = [...(choices || [])].reverse();\n const errors = {};\n const choicesErrors = {};\n const categoriesErrors = {};\n\n ['teacherInstructions', 'prompt', 'rationale'].forEach((field) => {\n if (config[field]?.required && !getContent(model[field])) {\n errors[field] = 'This field is required.';\n }\n });\n\n (categories || []).forEach((category) => {\n const { id, label } = category;\n\n if (getInnerText(label).length > maxLengthPerCategory) {\n categoriesErrors[id] = `Category labels should be no more than ${maxLengthPerCategory} characters long.`;\n }\n });\n\n (reversedChoices || []).forEach((choice, index) => {\n const { id, content } = choice;\n\n if (getInnerText(content).length > maxLengthPerChoice) {\n choicesErrors[id] = `Tokens should be no more than ${maxLengthPerChoice} characters long.`;\n }\n\n if (!getContent(content)) {\n choicesErrors[id] = 'Tokens should not be empty.';\n } else {\n const identicalAnswer = reversedChoices.slice(index + 1).some((c) => c.content === content);\n\n if (identicalAnswer) {\n choicesErrors[id] = 'Tokens content should be unique.';\n }\n }\n });\n\n const nbOfCategories = (categories || []).length;\n const nbOfChoices = (choices || []).length;\n\n if (nbOfCategories > maxCategories) {\n errors.categoriesError = `No more than ${maxCategories} categories should be defined.`;\n } else if (nbOfCategories < minCategories) {\n errors.categoriesError = `There should be at least ${minCategories} category defined.`;\n }\n\n if (nbOfChoices < minChoices) {\n errors.choicesError = `There should be at least ${minChoices} choices defined.`;\n } else if (nbOfChoices > maxAnswerChoices) {\n errors.choicesError = `No more than ${maxAnswerChoices} choices should be defined.`;\n }\n\n if (nbOfChoices && nbOfCategories) {\n let hasAssociations = false;\n\n (correctResponse || []).forEach((response) => {\n const { choices = [], alternateResponses = [] } = response;\n\n if (choices.length) {\n hasAssociations = true;\n } else {\n alternateResponses.forEach((alternate) => {\n if ((alternate || []).length) {\n hasAssociations = true;\n }\n });\n }\n });\n\n let duplicateAlternateIndex = -1;\n let duplicateCategory = '';\n (correctResponse || []).forEach((response) => {\n const { choices = [], alternateResponses = [], category } = response;\n\n if (duplicateAlternateIndex === -1) {\n duplicateAlternateIndex = isCorrectResponseDuplicated(choices, alternateResponses);\n\n if (duplicateAlternateIndex === -1) {\n duplicateAlternateIndex = isAlternateDuplicated(alternateResponses);\n }\n\n duplicateCategory = category;\n }\n });\n\n if (duplicateAlternateIndex > -1) {\n errors.duplicateAlternate = { index: duplicateAlternateIndex, category: duplicateCategory };\n }\n\n if (!hasAssociations) {\n errors.associationError = 'At least one token should be assigned to at least one category.';\n }\n }\n\n if (!isEmpty(choicesErrors)) {\n errors.choicesErrors = choicesErrors;\n }\n\n if (!isEmpty(categoriesErrors)) {\n errors.categoriesErrors = categoriesErrors;\n }\n\n return errors;\n};\n"],"file":"index.js"}
@@ -2,10 +2,13 @@
2
2
  "name": "@pie-element/categorize-controller",
3
3
  "private": true,
4
4
  "dependencies": {
5
- "@pie-lib/pie-toolbox": "2.22.1",
5
+ "@pie-lib/categorize": "^0.17.0",
6
+ "@pie-lib/controller-utils": "^0.11.0",
7
+ "@pie-lib/feedback": "^0.13.0",
8
+ "@pie-lib/translator": "^2.12.0",
6
9
  "lodash": "^4.17.15"
7
10
  },
8
- "version": "7.9.1",
11
+ "version": "7.9.2",
9
12
  "description": "",
10
13
  "scripts": {},
11
14
  "main": "lib/index.js",
@@ -0,0 +1,10 @@
1
+ {
2
+ "description": "auto generated package.json",
3
+ "license": "MIT",
4
+ "name": "configure-generated-pkg",
5
+ "private": true,
6
+ "version": "0.0.1",
7
+ "dependencies": {
8
+ "@pie-element/categorize-configure": "file:../node_modules/@pie-element/categorize/configure"
9
+ }
10
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "description": "auto generated package.json",
3
+ "license": "MIT",
4
+ "name": "controller-generated-pkg",
5
+ "private": true,
6
+ "version": "0.0.1",
7
+ "dependencies": {
8
+ "@pie-element/categorize-controller": "file:../node_modules/@pie-element/categorize/controller"
9
+ }
10
+ }
@@ -0,0 +1,89 @@
1
+
2
+ /** Auto generated by /usr/local/lib/node_modules/pie/lib/apps/info/entry.js */
3
+
4
+ //pie controllers
5
+ let controllers = {};
6
+ controllers['categorize-element'] = require('@pie-element/categorize-controller');
7
+
8
+
9
+ //config declarations
10
+ import CategorizeElementConfigure from '@pie-element/categorize-configure';
11
+ if(!customElements.get('categorize-element-configure')){
12
+ customElements.define('categorize-element-configure', CategorizeElementConfigure);
13
+ }
14
+
15
+
16
+ //pie declarations
17
+ import CategorizeElement from '@pie-element/categorize';
18
+ if(!customElements.get('categorize-element')){
19
+ customElements.define('categorize-element', CategorizeElement);
20
+ }
21
+
22
+ // the catalog ui
23
+ import { defineRepoElements } from 'pie-catalog-client';
24
+
25
+ let initSock =
26
+ function (sockPath){
27
+
28
+ let sock = new SockJS(sockPath);
29
+
30
+ sock.onopen = function() {
31
+ console.log('sock is open');
32
+ };
33
+
34
+ function tryToParse(d){
35
+ try {
36
+ return JSON.parse(d);
37
+ } catch(e){
38
+ return null;
39
+ }
40
+ }
41
+
42
+ sock.onmessage = function(e) {
43
+ console.log('sock message', e.data);
44
+ let dataObj = tryToParse(e.data);
45
+ if(dataObj.type === 'reload'){
46
+ window.location.reload(false);
47
+ } else if(dataObj.type == 'error'){
48
+ //TODO - render the errors in the UI?
49
+ alert('webpack errors have occured - check the logs');
50
+ }
51
+ };
52
+
53
+ sock.onclose = function() {
54
+ console.log('sock is closed');
55
+ };
56
+ }
57
+
58
+
59
+ let init = () => {
60
+
61
+ defineRepoElements()
62
+ .then(() => {
63
+ let entry = document.querySelector('catalog-entry');
64
+ entry.element = window.element;
65
+
66
+ entry.config = window.orgRepo;
67
+
68
+ if (!window.demo.config) {
69
+ throw new Error('config is missing');
70
+ }
71
+ let demo = document.querySelector('catalog-demo');
72
+ demo.configureMap = {"categorize-element":"categorize-element-configure"};
73
+ demo.config = window.demo.config;
74
+ demo.controllers = controllers;
75
+ demo.markup = window.demo.markup;
76
+ demo.session = window.demo.session;
77
+
78
+ setTimeout(() => {
79
+ let c = document.querySelector('catalog-container');
80
+ c.isLoading(false);
81
+ }, 180);
82
+ });
83
+
84
+ initSock('/sock');
85
+ }
86
+
87
+ document.addEventListener('DOMContentLoaded', () => {
88
+ init();
89
+ });
@@ -0,0 +1,108 @@
1
+
2
+ //auto generated on: Thu Aug 07 2025 15:47:44 GMT+0300 (Eastern European Summer Time)
3
+
4
+ module.exports = {
5
+ "module": {
6
+ "rules": [
7
+ {
8
+ "test": /.*highlight\.js.*default\.css$/,
9
+ "use": [
10
+ "raw-loader"
11
+ ]
12
+ },
13
+ {
14
+ "test": /\.(png|jpg|gif|svg|eot|ttf|woff|woff2|otf)$/,
15
+ "use": [
16
+ {
17
+ "loader": "url-loader",
18
+ "options": {
19
+ "limit": 10000
20
+ }
21
+ }
22
+ ]
23
+ },
24
+ {
25
+ "test": /\.css$/,
26
+ "use": [
27
+ "style-loader",
28
+ {
29
+ "loader": "css-loader",
30
+ "options": {
31
+ "modules": false
32
+ }
33
+ }
34
+ ],
35
+ "exclude": [
36
+ /.*highlight\.js.*/
37
+ ]
38
+ },
39
+ {
40
+ "test": /\.(png|jpg|gif|svg|eot|ttf|woff|woff2|otf)$/,
41
+ "use": [
42
+ {
43
+ "loader": "url-loader",
44
+ "options": {
45
+ "limit": 10000
46
+ }
47
+ }
48
+ ]
49
+ },
50
+ {
51
+ "test": /\.less$/,
52
+ "use": [
53
+ "style-loader",
54
+ "css-loader",
55
+ "less-loader"
56
+ ]
57
+ },
58
+ {
59
+ "test": /\.(jsx)?$/,
60
+ "use": [
61
+ {
62
+ "loader": "babel-loader",
63
+ "options": {
64
+ "babelrc": false,
65
+ "presets": [
66
+ "/usr/local/lib/node_modules/pie/node_modules/babel-preset-react/lib/index.js",
67
+ "/usr/local/lib/node_modules/pie/node_modules/babel-preset-env/lib/index.js",
68
+ "/usr/local/lib/node_modules/pie/node_modules/babel-preset-stage-0/lib/index.js"
69
+ ]
70
+ }
71
+ }
72
+ ]
73
+ }
74
+ ]
75
+ },
76
+ "resolveLoader": {
77
+ "modules": [
78
+ "/Users/carlacostea/Pie_Work/pie-framework/pie-elements/packages/categorize/docs/demo/.pie/node_modules",
79
+ "node_modules",
80
+ "/usr/local/lib/node_modules/pie/node_modules"
81
+ ]
82
+ },
83
+ "context": "/Users/carlacostea/Pie_Work/pie-framework/pie-elements/packages/categorize/docs/demo/.pie",
84
+ "entry": "./info.entry.js",
85
+ "output": {
86
+ "filename": "info.bundle.js",
87
+ "path": "/Users/carlacostea/Pie_Work/pie-framework/pie-elements/packages/categorize/docs/demo/.pie"
88
+ },
89
+ "resolve": {
90
+ "extensions": [
91
+ ".js",
92
+ ".jsx"
93
+ ],
94
+ "modules": [
95
+ "/Users/carlacostea/Pie_Work/pie-framework/pie-elements/packages/categorize/docs/demo/.pie/node_modules",
96
+ "/Users/carlacostea/Pie_Work/pie-framework/pie-elements/packages/categorize/docs/demo/.pie/.configure/node_modules",
97
+ "/Users/carlacostea/Pie_Work/pie-framework/pie-elements/packages/categorize/docs/demo/.pie/.controllers/node_modules",
98
+ "node_modules",
99
+ "/usr/local/lib/node_modules/pie/node_modules"
100
+ ],
101
+ "mainFields": [
102
+ "browser",
103
+ "main"
104
+ ]
105
+ },
106
+ "devtool": "eval"
107
+ };
108
+
@@ -0,0 +1,10 @@
1
+ {
2
+ "description": "auto generated package.json",
3
+ "license": "MIT",
4
+ "name": "x",
5
+ "private": true,
6
+ "version": "0.0.1",
7
+ "dependencies": {
8
+ "@pie-element/categorize": "../../.."
9
+ }
10
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "hash": "-1338235779",
3
+ "info": [
4
+ {
5
+ "pie": "@pie-element/categorize",
6
+ "version": {
7
+ "requested": "latest"
8
+ }
9
+ }
10
+ ]
11
+ }
@@ -36,7 +36,7 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
36
36
 
37
37
  var _styles = require("@material-ui/core/styles");
38
38
 
39
- var _renderUi = require("@pie-lib/pie-toolbox/render-ui");
39
+ var _renderUi = require("@pie-lib/render-ui");
40
40
 
41
41
  var _gridContent = _interopRequireDefault(require("./grid-content"));
42
42
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/categorize/categories.jsx"],"names":["Categories","props","classes","categories","model","disabled","onDropChoice","onRemoveChoice","rowLabels","categoriesPerRow","minRowHeight","chunkedCategories","cats","i","length","push","slice","hasNonEmptyString","array","found","forEach","element","trim","Math","ceil","map","cat","rowIndex","items","c","columnIndex","display","rowLabel","__html","categoryWrapper","label","h","id","category","concat","Array","fill","value","index","React","Component","PropTypes","object","isRequired","arrayOf","shape","CategoryType","number","bool","func","styles","theme","flex","color","text","backgroundColor","background","textAlign","paddingTop","spacing","unit","alignItems","justifyContent","marginRight","flexDirection"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport { color } from '@pie-lib/pie-toolbox/render-ui';\n\nimport GridContent from './grid-content';\nimport Category, { CategoryType } from './category';\n\nexport { CategoryType };\n\nexport class Categories extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n categories: PropTypes.arrayOf(PropTypes.shape(CategoryType)),\n model: PropTypes.shape({\n categoriesPerRow: PropTypes.number,\n }),\n disabled: PropTypes.bool,\n onDropChoice: PropTypes.func.isRequired,\n onRemoveChoice: PropTypes.func.isRequired,\n rowLabels: PropTypes.array\n };\n\n static defaultProps = {\n model: {\n categoriesPerRow: 1,\n },\n };\n\n render() {\n const { classes, categories, model, disabled, onDropChoice, onRemoveChoice, rowLabels } = this.props;\n const { categoriesPerRow, minRowHeight } = model;\n\n // split categories into an array of arrays (inner array),\n // where each inner array represents how many categories should be displayed on one row\n const chunkedCategories = [];\n const cats = categories || [];\n for (let i = 0; i < cats.length; i += categoriesPerRow) {\n chunkedCategories.push(cats.slice(i, i + categoriesPerRow));\n }\n\n const hasNonEmptyString = (array) => {\n let found = false;\n\n (array || []).forEach(element => {\n if (typeof element === 'string' && element.trim() !== '' && element.trim() !== '<div></div>') {\n found = true;\n }\n });\n\n return found;\n };\n\n return (\n <GridContent\n columns={categoriesPerRow}\n className={classes.categories}\n rows={Math.ceil(categories.length / categoriesPerRow) * 2}\n >\n {chunkedCategories.map((cat, rowIndex) => {\n let items = [];\n\n // for each inner array of categories, create a row with category titles\n // first cell of row has to be the row label\n cat.forEach((c, columnIndex) => {\n items.push(\n <div style={{ display: 'flex' }}>\n {columnIndex === 0 && hasNonEmptyString(rowLabels) ? (\n <div\n key={rowIndex}\n className={classes.rowLabel}\n dangerouslySetInnerHTML={{\n __html: rowLabels[rowIndex] || '',\n }}\n />\n ) : null}\n <div className={classes.categoryWrapper}>\n <div\n className={classes.label}\n key={`category-label-${rowIndex}-${columnIndex}`}\n dangerouslySetInnerHTML={{ __html: c.label }}\n />\n\n <Category\n minRowHeight={minRowHeight}\n onDropChoice={(h) => onDropChoice(c.id, h)}\n onRemoveChoice={onRemoveChoice}\n disabled={disabled}\n className={classes.category}\n key={`category-element-${rowIndex}-${columnIndex}`}\n {...c}\n />\n </div>\n </div>,\n );\n });\n\n // if the last row has fewer categories than max on a row, fill the spaces with divs\n items = items.concat(\n Array(categoriesPerRow - cat.length)\n .fill(<div />)\n .map((value, index) => <div key={`fill-space-final-${index}`} />),\n );\n\n return items;\n })}\n </GridContent>\n );\n }\n}\n\nconst styles = (theme) => ({\n categories: {\n flex: 1,\n },\n label: {\n color: color.text(),\n backgroundColor: color.background(),\n textAlign: 'center',\n paddingTop: theme.spacing.unit,\n },\n rowLabel: {\n alignItems: 'center',\n display: 'flex',\n justifyContent: 'center',\n flex: 0.5,\n marginRight: '12px'\n },\n categoryWrapper: {\n display: 'flex',\n flex: '2',\n flexDirection: 'column'\n },\n});\nexport default withStyles(styles)(Categories);\n"],"file":"categories.js"}
1
+ {"version":3,"sources":["../../src/categorize/categories.jsx"],"names":["Categories","props","classes","categories","model","disabled","onDropChoice","onRemoveChoice","rowLabels","categoriesPerRow","minRowHeight","chunkedCategories","cats","i","length","push","slice","hasNonEmptyString","array","found","forEach","element","trim","Math","ceil","map","cat","rowIndex","items","c","columnIndex","display","rowLabel","__html","categoryWrapper","label","h","id","category","concat","Array","fill","value","index","React","Component","PropTypes","object","isRequired","arrayOf","shape","CategoryType","number","bool","func","styles","theme","flex","color","text","backgroundColor","background","textAlign","paddingTop","spacing","unit","alignItems","justifyContent","marginRight","flexDirection"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport { color } from '@pie-lib/render-ui';\n\nimport GridContent from './grid-content';\nimport Category, { CategoryType } from './category';\n\nexport { CategoryType };\n\nexport class Categories extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n categories: PropTypes.arrayOf(PropTypes.shape(CategoryType)),\n model: PropTypes.shape({\n categoriesPerRow: PropTypes.number,\n }),\n disabled: PropTypes.bool,\n onDropChoice: PropTypes.func.isRequired,\n onRemoveChoice: PropTypes.func.isRequired,\n rowLabels: PropTypes.array,\n };\n\n static defaultProps = {\n model: {\n categoriesPerRow: 1,\n },\n };\n\n render() {\n const { classes, categories, model, disabled, onDropChoice, onRemoveChoice, rowLabels } = this.props;\n const { categoriesPerRow, minRowHeight } = model;\n\n // split categories into an array of arrays (inner array),\n // where each inner array represents how many categories should be displayed on one row\n const chunkedCategories = [];\n const cats = categories || [];\n for (let i = 0; i < cats.length; i += categoriesPerRow) {\n chunkedCategories.push(cats.slice(i, i + categoriesPerRow));\n }\n\n const hasNonEmptyString = (array) => {\n let found = false;\n\n (array || []).forEach((element) => {\n if (typeof element === 'string' && element.trim() !== '' && element.trim() !== '<div></div>') {\n found = true;\n }\n });\n\n return found;\n };\n\n return (\n <GridContent\n columns={categoriesPerRow}\n className={classes.categories}\n rows={Math.ceil(categories.length / categoriesPerRow) * 2}\n >\n {chunkedCategories.map((cat, rowIndex) => {\n let items = [];\n\n // for each inner array of categories, create a row with category titles\n // first cell of row has to be the row label\n cat.forEach((c, columnIndex) => {\n items.push(\n <div style={{ display: 'flex' }}>\n {columnIndex === 0 && hasNonEmptyString(rowLabels) ? (\n <div\n key={rowIndex}\n className={classes.rowLabel}\n dangerouslySetInnerHTML={{\n __html: rowLabels[rowIndex] || '',\n }}\n />\n ) : null}\n <div className={classes.categoryWrapper}>\n <div\n className={classes.label}\n key={`category-label-${rowIndex}-${columnIndex}`}\n dangerouslySetInnerHTML={{ __html: c.label }}\n />\n\n <Category\n minRowHeight={minRowHeight}\n onDropChoice={(h) => onDropChoice(c.id, h)}\n onRemoveChoice={onRemoveChoice}\n disabled={disabled}\n className={classes.category}\n key={`category-element-${rowIndex}-${columnIndex}`}\n {...c}\n />\n </div>\n </div>,\n );\n });\n\n // if the last row has fewer categories than max on a row, fill the spaces with divs\n items = items.concat(\n Array(categoriesPerRow - cat.length)\n .fill(<div />)\n .map((value, index) => <div key={`fill-space-final-${index}`} />),\n );\n\n return items;\n })}\n </GridContent>\n );\n }\n}\n\nconst styles = (theme) => ({\n categories: {\n flex: 1,\n },\n label: {\n color: color.text(),\n backgroundColor: color.background(),\n textAlign: 'center',\n paddingTop: theme.spacing.unit,\n },\n rowLabel: {\n alignItems: 'center',\n display: 'flex',\n justifyContent: 'center',\n flex: 0.5,\n marginRight: '12px',\n },\n categoryWrapper: {\n display: 'flex',\n flex: '2',\n flexDirection: 'column',\n },\n});\nexport default withStyles(styles)(Categories);\n"],"file":"categories.js"}
@@ -33,7 +33,7 @@ var _choice = _interopRequireDefault(require("./choice"));
33
33
 
34
34
  var _droppablePlaceholder = _interopRequireDefault(require("./droppable-placeholder"));
35
35
 
36
- var _renderUi = require("@pie-lib/pie-toolbox/render-ui");
36
+ var _renderUi = require("@pie-lib/render-ui");
37
37
 
38
38
  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; }
39
39
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/categorize/category.jsx"],"names":["CategoryType","id","PropTypes","string","isRequired","categoryId","Category","props","classes","className","choices","disabled","onDropChoice","onRemoveChoice","correct","minRowHeight","names","category","placeholderNames","placeholder","incorrect","map","c","index","React","Component","bool","object","func","styles","theme","border","color","padding","spacing","unit","borderRadius","gridColumnGap","gridRowGap","display","flexWrap","justifyContent","alignItems","alignContent","flexDirection","flex"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport Choice from './choice';\nimport PlaceHolder from './droppable-placeholder';\nimport { color } from '@pie-lib/pie-toolbox/render-ui';\n\nexport const CategoryType = {\n id: PropTypes.string.isRequired,\n categoryId: PropTypes.string,\n};\n\nexport class Category extends React.Component {\n static propTypes = {\n ...CategoryType,\n className: PropTypes.string,\n disabled: PropTypes.bool,\n classes: PropTypes.object.isRequired,\n onDropChoice: PropTypes.func,\n onRemoveChoice: PropTypes.func,\n minRowHeight: PropTypes.string,\n };\n\n static defaultProps = {};\n\n render() {\n const { classes, className, choices = [], disabled, onDropChoice, onRemoveChoice, id, correct, minRowHeight } = this.props;\n\n const names = classNames(classes.category, className);\n const placeholderNames = classNames(classes.placeholder, correct === false && classes.incorrect,\n correct === true && classes.correct);\n\n return (\n <div className={names}>\n <PlaceHolder onDropChoice={onDropChoice} disabled={disabled} className={placeholderNames} minRowHeight={minRowHeight}>\n {choices.map((c, index) => (\n <Choice\n onRemoveChoice={onRemoveChoice}\n disabled={disabled}\n key={index}\n choiceIndex={index}\n categoryId={id}\n {...c}\n />\n ))}\n </PlaceHolder>\n </div>\n );\n }\n}\n\nconst styles = (theme) => ({\n incorrect: {\n border: `solid 2px ${color.incorrect()}`,\n },\n correct: {\n border: `solid 2px ${color.correct()}`\n },\n placeholder: {\n padding: theme.spacing.unit / 2,\n borderRadius: theme.spacing.unit / 2,\n gridColumnGap: 0,\n gridRowGap: 0,\n display: 'flex',\n flexWrap: 'wrap',\n justifyContent: 'center',\n alignItems: 'center',\n alignContent: 'flex-start',\n },\n category: {\n display: 'flex',\n flexDirection: 'column',\n flex: 2\n },\n});\n\nexport default withStyles(styles)(Category);\n"],"file":"category.js"}
1
+ {"version":3,"sources":["../../src/categorize/category.jsx"],"names":["CategoryType","id","PropTypes","string","isRequired","categoryId","Category","props","classes","className","choices","disabled","onDropChoice","onRemoveChoice","correct","minRowHeight","names","category","placeholderNames","placeholder","incorrect","map","c","index","React","Component","bool","object","func","styles","theme","border","color","padding","spacing","unit","borderRadius","gridColumnGap","gridRowGap","display","flexWrap","justifyContent","alignItems","alignContent","flexDirection","flex"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport Choice from './choice';\nimport PlaceHolder from './droppable-placeholder';\nimport { color } from '@pie-lib/render-ui';\n\nexport const CategoryType = {\n id: PropTypes.string.isRequired,\n categoryId: PropTypes.string,\n};\n\nexport class Category extends React.Component {\n static propTypes = {\n ...CategoryType,\n className: PropTypes.string,\n disabled: PropTypes.bool,\n classes: PropTypes.object.isRequired,\n onDropChoice: PropTypes.func,\n onRemoveChoice: PropTypes.func,\n minRowHeight: PropTypes.string,\n };\n\n static defaultProps = {};\n\n render() {\n const {\n classes,\n className,\n choices = [],\n disabled,\n onDropChoice,\n onRemoveChoice,\n id,\n correct,\n minRowHeight,\n } = this.props;\n\n const names = classNames(classes.category, className);\n const placeholderNames = classNames(\n classes.placeholder,\n correct === false && classes.incorrect,\n correct === true && classes.correct,\n );\n\n return (\n <div className={names}>\n <PlaceHolder\n onDropChoice={onDropChoice}\n disabled={disabled}\n className={placeholderNames}\n minRowHeight={minRowHeight}\n >\n {choices.map((c, index) => (\n <Choice\n onRemoveChoice={onRemoveChoice}\n disabled={disabled}\n key={index}\n choiceIndex={index}\n categoryId={id}\n {...c}\n />\n ))}\n </PlaceHolder>\n </div>\n );\n }\n}\n\nconst styles = (theme) => ({\n incorrect: {\n border: `solid 2px ${color.incorrect()}`,\n },\n correct: {\n border: `solid 2px ${color.correct()}`,\n },\n placeholder: {\n padding: theme.spacing.unit / 2,\n borderRadius: theme.spacing.unit / 2,\n gridColumnGap: 0,\n gridRowGap: 0,\n display: 'flex',\n flexWrap: 'wrap',\n justifyContent: 'center',\n alignItems: 'center',\n alignContent: 'flex-start',\n },\n category: {\n display: 'flex',\n flexDirection: 'column',\n flex: 2,\n },\n});\n\nexport default withStyles(styles)(Category);\n"],"file":"category.js"}
@@ -31,13 +31,13 @@ var _classnames = _interopRequireDefault(require("classnames"));
31
31
 
32
32
  var _reactDnd = require("react-dnd");
33
33
 
34
- var _drag = require("@pie-lib/pie-toolbox/drag");
34
+ var _drag = require("@pie-lib/drag");
35
35
 
36
36
  var _Card = _interopRequireDefault(require("@material-ui/core/Card"));
37
37
 
38
38
  var _CardContent = _interopRequireDefault(require("@material-ui/core/CardContent"));
39
39
 
40
- var _renderUi = require("@pie-lib/pie-toolbox/render-ui");
40
+ var _renderUi = require("@pie-lib/render-ui");
41
41
 
42
42
  var _debug = _interopRequireDefault(require("debug"));
43
43
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/categorize/choice.jsx"],"names":["log","ChoiceType","content","PropTypes","string","isRequired","id","Layout","props","classes","className","isDragging","disabled","correct","rootNames","choice","dragging","cardNames","card","root","cardRoot","__html","React","Component","object","bool","styles","theme","direction","cursor","width","border","color","incorrect","borderRadius","text","backgroundColor","white","paddingBottom","spacing","unit","opacity","background","pointerEvents","Styled","Choice","e","preventDefault","ref","addEventListener","handleTouchStart","passive","removeEventListener","connectDragSource","extraStyle","margin","func","spec","canDrag","beginDrag","out","categoryId","choiceIndex","value","itemType","endDrag","monitor","didDrop","item","getItem","onRemoveChoice","DraggableChoice","uid","connect","dragSource","withUid"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport { DragSource } from 'react-dnd';\nimport { uid } from '@pie-lib/pie-toolbox/drag';\nimport Card from '@material-ui/core/Card';\nimport CardContent from '@material-ui/core/CardContent';\nimport { color } from '@pie-lib/pie-toolbox/render-ui';\nimport debug from 'debug';\n\nconst log = debug('@pie-ui:categorize:choice');\n\nexport const ChoiceType = {\n content: PropTypes.string.isRequired,\n id: PropTypes.string,\n};\n\nexport class Layout extends React.Component {\n static propTypes = {\n ...ChoiceType,\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n disabled: PropTypes.bool,\n correct: PropTypes.bool,\n };\n static defaultProps = {};\n render() {\n const { classes, className, content, isDragging, disabled, correct } = this.props;\n\n const rootNames = classNames(\n correct === true && 'correct',\n correct === false && 'incorrect',\n classes.choice,\n isDragging && classes.dragging,\n disabled && classes.disabled,\n className,\n );\n const cardNames = classNames(classes.card);\n return (\n <div className={rootNames}>\n <Card className={cardNames}>\n <CardContent classes={{ root: classes.cardRoot }} dangerouslySetInnerHTML={{ __html: content }} />\n </Card>\n </div>\n );\n }\n}\n\nconst styles = (theme) => ({\n choice: {\n direction: 'initial',\n cursor: 'pointer',\n width: '100%',\n '&.correct': {\n border: `solid 2px ${color.correct()}`,\n },\n '&.incorrect': {\n border: `solid 2px ${color.incorrect()}`,\n },\n borderRadius: '6px',\n },\n cardRoot: {\n color: color.text(),\n backgroundColor: color.white(),\n '&:last-child': {\n paddingBottom: theme.spacing.unit * 2,\n },\n borderRadius: '4px',\n border: '1px solid',\n },\n disabled: {\n cursor: 'not-allowed',\n opacity: '0.6',\n },\n dragging: {\n cursor: 'move',\n },\n card: {\n color: color.text(),\n backgroundColor: color.background(),\n width: '100%',\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 pointerEvents: 'none',\n },\n});\n\nconst Styled = withStyles(styles)(Layout);\n\nexport class Choice extends React.Component {\n static propTypes = {\n ...ChoiceType,\n extraStyle: PropTypes.object,\n connectDragSource: PropTypes.func.isRequired,\n };\n\n componentDidMount() {\n if (this.ref) {\n this.ref.addEventListener('touchstart', this.handleTouchStart, { passive: false });\n }\n }\n\n componentWillUnmount() {\n if (this.ref) {\n this.ref.removeEventListener('touchstart', this.handleTouchStart);\n }\n }\n\n handleTouchStart = (e) => {\n e.preventDefault();\n };\n\n render() {\n const { connectDragSource, id, content, disabled, isDragging, correct, extraStyle } = this.props;\n\n return connectDragSource(\n <div\n style={{ margin: '4px', ...extraStyle }}\n ref={(ref) => (this.ref = ref)}\n draggable={!disabled}\n >\n <Styled id={id} content={content} disabled={disabled} correct={correct} isDragging={isDragging} />\n </div>,\n );\n }\n}\n\nexport const spec = {\n canDrag: (props) => !props.disabled,\n beginDrag: (props) => {\n const out = {\n id: props.id,\n categoryId: props.categoryId,\n choiceIndex: props.choiceIndex,\n value: props.content,\n itemType: 'categorize'\n };\n log('[beginDrag] out:', out);\n return out;\n },\n endDrag: (props, monitor) => {\n if (!monitor.didDrop()) {\n const item = monitor.getItem();\n if (item.categoryId) {\n log('wasnt droppped - what to do?');\n props.onRemoveChoice(item);\n }\n }\n }\n};\n\nconst DraggableChoice = DragSource(\n ({ uid }) => uid,\n spec,\n (connect, monitor) => ({\n connectDragSource: connect.dragSource(),\n isDragging: monitor.isDragging(),\n }),\n)(Choice);\n\nexport default uid.withUid(DraggableChoice);\n"],"file":"choice.js"}
1
+ {"version":3,"sources":["../../src/categorize/choice.jsx"],"names":["log","ChoiceType","content","PropTypes","string","isRequired","id","Layout","props","classes","className","isDragging","disabled","correct","rootNames","choice","dragging","cardNames","card","root","cardRoot","__html","React","Component","object","bool","styles","theme","direction","cursor","width","border","color","incorrect","borderRadius","text","backgroundColor","white","paddingBottom","spacing","unit","opacity","background","pointerEvents","Styled","Choice","e","preventDefault","ref","addEventListener","handleTouchStart","passive","removeEventListener","connectDragSource","extraStyle","margin","func","spec","canDrag","beginDrag","out","categoryId","choiceIndex","value","itemType","endDrag","monitor","didDrop","item","getItem","onRemoveChoice","DraggableChoice","uid","connect","dragSource","withUid"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport { DragSource } from 'react-dnd';\nimport { uid } from '@pie-lib/drag';\nimport Card from '@material-ui/core/Card';\nimport CardContent from '@material-ui/core/CardContent';\nimport { color } from '@pie-lib/render-ui';\nimport debug from 'debug';\n\nconst log = debug('@pie-ui:categorize:choice');\n\nexport const ChoiceType = {\n content: PropTypes.string.isRequired,\n id: PropTypes.string,\n};\n\nexport class Layout extends React.Component {\n static propTypes = {\n ...ChoiceType,\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n disabled: PropTypes.bool,\n correct: PropTypes.bool,\n };\n static defaultProps = {};\n render() {\n const { classes, className, content, isDragging, disabled, correct } = this.props;\n\n const rootNames = classNames(\n correct === true && 'correct',\n correct === false && 'incorrect',\n classes.choice,\n isDragging && classes.dragging,\n disabled && classes.disabled,\n className,\n );\n const cardNames = classNames(classes.card);\n return (\n <div className={rootNames}>\n <Card className={cardNames}>\n <CardContent classes={{ root: classes.cardRoot }} dangerouslySetInnerHTML={{ __html: content }} />\n </Card>\n </div>\n );\n }\n}\n\nconst styles = (theme) => ({\n choice: {\n direction: 'initial',\n cursor: 'pointer',\n width: '100%',\n '&.correct': {\n border: `solid 2px ${color.correct()}`,\n },\n '&.incorrect': {\n border: `solid 2px ${color.incorrect()}`,\n },\n borderRadius: '6px',\n },\n cardRoot: {\n color: color.text(),\n backgroundColor: color.white(),\n '&:last-child': {\n paddingBottom: theme.spacing.unit * 2,\n },\n borderRadius: '4px',\n border: '1px solid',\n },\n disabled: {\n cursor: 'not-allowed',\n opacity: '0.6',\n },\n dragging: {\n cursor: 'move',\n },\n card: {\n color: color.text(),\n backgroundColor: color.background(),\n width: '100%',\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 pointerEvents: 'none',\n },\n});\n\nconst Styled = withStyles(styles)(Layout);\n\nexport class Choice extends React.Component {\n static propTypes = {\n ...ChoiceType,\n extraStyle: PropTypes.object,\n connectDragSource: PropTypes.func.isRequired,\n };\n\n componentDidMount() {\n if (this.ref) {\n this.ref.addEventListener('touchstart', this.handleTouchStart, { passive: false });\n }\n }\n\n componentWillUnmount() {\n if (this.ref) {\n this.ref.removeEventListener('touchstart', this.handleTouchStart);\n }\n }\n\n handleTouchStart = (e) => {\n e.preventDefault();\n };\n\n render() {\n const { connectDragSource, id, content, disabled, isDragging, correct, extraStyle } = this.props;\n\n return connectDragSource(\n <div style={{ margin: '4px', ...extraStyle }} ref={(ref) => (this.ref = ref)} draggable={!disabled}>\n <Styled id={id} content={content} disabled={disabled} correct={correct} isDragging={isDragging} />\n </div>,\n );\n }\n}\n\nexport const spec = {\n canDrag: (props) => !props.disabled,\n beginDrag: (props) => {\n const out = {\n id: props.id,\n categoryId: props.categoryId,\n choiceIndex: props.choiceIndex,\n value: props.content,\n itemType: 'categorize',\n };\n log('[beginDrag] out:', out);\n return out;\n },\n endDrag: (props, monitor) => {\n if (!monitor.didDrop()) {\n const item = monitor.getItem();\n if (item.categoryId) {\n log('wasnt droppped - what to do?');\n props.onRemoveChoice(item);\n }\n }\n },\n};\n\nconst DraggableChoice = DragSource(\n ({ uid }) => uid,\n spec,\n (connect, monitor) => ({\n connectDragSource: connect.dragSource(),\n isDragging: monitor.isDragging(),\n }),\n)(Choice);\n\nexport default uid.withUid(DraggableChoice);\n"],"file":"choice.js"}
@@ -21,7 +21,7 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
21
21
 
22
22
  var _react = _interopRequireDefault(require("react"));
23
23
 
24
- var _drag = require("@pie-lib/pie-toolbox/drag");
24
+ var _drag = require("@pie-lib/drag");
25
25
 
26
26
  var _propTypes = _interopRequireDefault(require("prop-types"));
27
27
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/categorize/droppable-placeholder.jsx"],"names":["log","DroppablePlaceholder","props","children","connectDropTarget","isOver","className","grid","disabled","choiceBoard","minRowHeight","flex","minHeight","React","Component","PropTypes","bool","func","isRequired","oneOfType","arrayOf","node","string","object","spec","drop","monitor","item","getItem","onDropChoice","canDrop","WithTarget","uid","connect","dropTarget","withUid"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAEA;;;;;;AAEA,IAAMA,GAAG,GAAG,uBAAM,0CAAN,CAAZ;;IAEaC,oB;;;;;;;;;;;;WAWX,kBAAS;AACP,wBASI,KAAKC,KATT;AAAA,UACEC,QADF,eACEA,QADF;AAAA,UAEEC,iBAFF,eAEEA,iBAFF;AAAA,UAGEC,MAHF,eAGEA,MAHF;AAAA,UAIEC,SAJF,eAIEA,SAJF;AAAA,UAKEC,IALF,eAKEA,IALF;AAAA,UAMEC,QANF,eAMEA,QANF;AAAA,UAOEC,WAPF,eAOEA,WAPF;AAAA,UAQEC,YARF,eAQEA,YARF;AAWA,aAAON,iBAAiB,eACtB;AAAK,QAAA,KAAK,EAAE;AAAEO,UAAAA,IAAI,EAAE,CAAR;AAAWC,UAAAA,SAAS,EAAEF,YAAY,IAAI;AAAtC;AAAZ,sBACE,gCAAC,iBAAD;AACE,QAAA,SAAS,EAAEJ,SADb;AAEE,QAAA,MAAM,EAAED,MAFV;AAGE,QAAA,IAAI,EAAEE,IAHR;AAIE,QAAA,QAAQ,EAAEC,QAJZ;AAKE,QAAA,WAAW,EAAEC,WALf;AAME,QAAA,YAAY;AANd,SAQGN,QARH,CADF,CADsB,CAAxB;AAcD;;;EArCuCU,kBAAMC,S;;;iCAAnCb,oB,eACQ;AACjBQ,EAAAA,WAAW,EAAEM,sBAAUC,IADN;AAEjBZ,EAAAA,iBAAiB,EAAEW,sBAAUE,IAAV,CAAeC,UAFjB;AAGjBb,EAAAA,MAAM,EAAEU,sBAAUC,IAHD;AAIjBb,EAAAA,QAAQ,EAAEY,sBAAUI,SAAV,CAAoB,CAACJ,sBAAUK,OAAV,CAAkBL,sBAAUM,IAA5B,CAAD,EAAoCN,sBAAUM,IAA9C,CAApB,EAAyEH,UAJlE;AAKjBZ,EAAAA,SAAS,EAAES,sBAAUO,MALJ;AAMjBf,EAAAA,IAAI,EAAEQ,sBAAUQ,MANC;AAOjBf,EAAAA,QAAQ,EAAEO,sBAAUC,IAPH;AAQjBN,EAAAA,YAAY,EAAEK,sBAAUO;AARP,C;AAuCd,IAAME,IAAI,GAAG;AAClBC,EAAAA,IAAI,EAAE,cAACvB,KAAD,EAAQwB,OAAR,EAAoB;AACxB1B,IAAAA,GAAG,CAAC,gBAAD,EAAmBE,KAAnB,CAAH;AACA,QAAMyB,IAAI,GAAGD,OAAO,CAACE,OAAR,EAAb;AACA1B,IAAAA,KAAK,CAAC2B,YAAN,CAAmBF,IAAnB;AACD,GALiB;AAMlBG,EAAAA,OAAO,EAAE,iBAAC5B;AAAM;AAAP,IAAyB;AAChC,WAAO,CAACA,KAAK,CAACM,QAAd;AACD;AARiB,CAAb;;AAWP,IAAMuB,UAAU,GAAG,0BACjB;AAAA,MAAGC,GAAH,QAAGA,GAAH;AAAA,SAAaA,GAAb;AAAA,CADiB,EAEjBR,IAFiB,EAGjB,UAACS,OAAD,EAAUP,OAAV;AAAA,SAAuB;AACrBtB,IAAAA,iBAAiB,EAAE6B,OAAO,CAACC,UAAR,EADE;AAErB7B,IAAAA,MAAM,EAAEqB,OAAO,CAACrB,MAAR;AAFa,GAAvB;AAAA,CAHiB,EAOjBJ,oBAPiB,CAAnB;;eASe+B,UAAIG,OAAJ,CAAYJ,UAAZ,C","sourcesContent":["import React from 'react';\nimport { PlaceHolder } from '@pie-lib/pie-toolbox/drag';\nimport PropTypes from 'prop-types';\nimport { DropTarget } from 'react-dnd';\nimport { uid } from '@pie-lib/pie-toolbox/drag';\nimport debug from 'debug';\n\nconst log = debug('@pie-ui:categorize:droppable-placeholder');\n\nexport class DroppablePlaceholder extends React.Component {\n static propTypes = {\n choiceBoard: PropTypes.bool,\n connectDropTarget: PropTypes.func.isRequired,\n isOver: PropTypes.bool,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired,\n className: PropTypes.string,\n grid: PropTypes.object,\n disabled: PropTypes.bool,\n minRowHeight: PropTypes.string,\n };\n render() {\n const {\n children,\n connectDropTarget,\n isOver,\n className,\n grid,\n disabled,\n choiceBoard,\n minRowHeight\n } = this.props;\n\n return connectDropTarget(\n <div style={{ flex: 1, minHeight: minRowHeight || '80px' }}>\n <PlaceHolder\n className={className}\n isOver={isOver}\n grid={grid}\n disabled={disabled}\n choiceBoard={choiceBoard}\n isCategorize\n >\n {children}\n </PlaceHolder>\n </div>,\n );\n }\n}\n\nexport const spec = {\n drop: (props, monitor) => {\n log('[drop] props: ', props);\n const item = monitor.getItem();\n props.onDropChoice(item);\n },\n canDrop: (props /*, monitor*/) => {\n return !props.disabled;\n },\n};\n\nconst WithTarget = DropTarget(\n ({ uid }) => uid,\n spec,\n (connect, monitor) => ({\n connectDropTarget: connect.dropTarget(),\n isOver: monitor.isOver(),\n }),\n)(DroppablePlaceholder);\n\nexport default uid.withUid(WithTarget);\n"],"file":"droppable-placeholder.js"}
1
+ {"version":3,"sources":["../../src/categorize/droppable-placeholder.jsx"],"names":["log","DroppablePlaceholder","props","children","connectDropTarget","isOver","className","grid","disabled","choiceBoard","minRowHeight","flex","minHeight","React","Component","PropTypes","bool","func","isRequired","oneOfType","arrayOf","node","string","object","spec","drop","monitor","item","getItem","onDropChoice","canDrop","WithTarget","uid","connect","dropTarget","withUid"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAEA;;;;;;AAEA,IAAMA,GAAG,GAAG,uBAAM,0CAAN,CAAZ;;IAEaC,oB;;;;;;;;;;;;WAWX,kBAAS;AACP,wBAAsG,KAAKC,KAA3G;AAAA,UAAQC,QAAR,eAAQA,QAAR;AAAA,UAAkBC,iBAAlB,eAAkBA,iBAAlB;AAAA,UAAqCC,MAArC,eAAqCA,MAArC;AAAA,UAA6CC,SAA7C,eAA6CA,SAA7C;AAAA,UAAwDC,IAAxD,eAAwDA,IAAxD;AAAA,UAA8DC,QAA9D,eAA8DA,QAA9D;AAAA,UAAwEC,WAAxE,eAAwEA,WAAxE;AAAA,UAAqFC,YAArF,eAAqFA,YAArF;AAEA,aAAON,iBAAiB,eACtB;AAAK,QAAA,KAAK,EAAE;AAAEO,UAAAA,IAAI,EAAE,CAAR;AAAWC,UAAAA,SAAS,EAAEF,YAAY,IAAI;AAAtC;AAAZ,sBACE,gCAAC,iBAAD;AACE,QAAA,SAAS,EAAEJ,SADb;AAEE,QAAA,MAAM,EAAED,MAFV;AAGE,QAAA,IAAI,EAAEE,IAHR;AAIE,QAAA,QAAQ,EAAEC,QAJZ;AAKE,QAAA,WAAW,EAAEC,WALf;AAME,QAAA,YAAY;AANd,SAQGN,QARH,CADF,CADsB,CAAxB;AAcD;;;EA5BuCU,kBAAMC,S;;;iCAAnCb,oB,eACQ;AACjBQ,EAAAA,WAAW,EAAEM,sBAAUC,IADN;AAEjBZ,EAAAA,iBAAiB,EAAEW,sBAAUE,IAAV,CAAeC,UAFjB;AAGjBb,EAAAA,MAAM,EAAEU,sBAAUC,IAHD;AAIjBb,EAAAA,QAAQ,EAAEY,sBAAUI,SAAV,CAAoB,CAACJ,sBAAUK,OAAV,CAAkBL,sBAAUM,IAA5B,CAAD,EAAoCN,sBAAUM,IAA9C,CAApB,EAAyEH,UAJlE;AAKjBZ,EAAAA,SAAS,EAAES,sBAAUO,MALJ;AAMjBf,EAAAA,IAAI,EAAEQ,sBAAUQ,MANC;AAOjBf,EAAAA,QAAQ,EAAEO,sBAAUC,IAPH;AAQjBN,EAAAA,YAAY,EAAEK,sBAAUO;AARP,C;AA8Bd,IAAME,IAAI,GAAG;AAClBC,EAAAA,IAAI,EAAE,cAACvB,KAAD,EAAQwB,OAAR,EAAoB;AACxB1B,IAAAA,GAAG,CAAC,gBAAD,EAAmBE,KAAnB,CAAH;AACA,QAAMyB,IAAI,GAAGD,OAAO,CAACE,OAAR,EAAb;AACA1B,IAAAA,KAAK,CAAC2B,YAAN,CAAmBF,IAAnB;AACD,GALiB;AAMlBG,EAAAA,OAAO,EAAE,iBAAC5B;AAAM;AAAP,IAAyB;AAChC,WAAO,CAACA,KAAK,CAACM,QAAd;AACD;AARiB,CAAb;;AAWP,IAAMuB,UAAU,GAAG,0BACjB;AAAA,MAAGC,GAAH,QAAGA,GAAH;AAAA,SAAaA,GAAb;AAAA,CADiB,EAEjBR,IAFiB,EAGjB,UAACS,OAAD,EAAUP,OAAV;AAAA,SAAuB;AACrBtB,IAAAA,iBAAiB,EAAE6B,OAAO,CAACC,UAAR,EADE;AAErB7B,IAAAA,MAAM,EAAEqB,OAAO,CAACrB,MAAR;AAFa,GAAvB;AAAA,CAHiB,EAOjBJ,oBAPiB,CAAnB;;eASe+B,UAAIG,OAAJ,CAAYJ,UAAZ,C","sourcesContent":["import React from 'react';\nimport { PlaceHolder } from '@pie-lib/drag';\nimport PropTypes from 'prop-types';\nimport { DropTarget } from 'react-dnd';\nimport { uid } from '@pie-lib/drag';\nimport debug from 'debug';\n\nconst log = debug('@pie-ui:categorize:droppable-placeholder');\n\nexport class DroppablePlaceholder extends React.Component {\n static propTypes = {\n choiceBoard: PropTypes.bool,\n connectDropTarget: PropTypes.func.isRequired,\n isOver: PropTypes.bool,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired,\n className: PropTypes.string,\n grid: PropTypes.object,\n disabled: PropTypes.bool,\n minRowHeight: PropTypes.string,\n };\n render() {\n const { children, connectDropTarget, isOver, className, grid, disabled, choiceBoard, minRowHeight } = this.props;\n\n return connectDropTarget(\n <div style={{ flex: 1, minHeight: minRowHeight || '80px' }}>\n <PlaceHolder\n className={className}\n isOver={isOver}\n grid={grid}\n disabled={disabled}\n choiceBoard={choiceBoard}\n isCategorize\n >\n {children}\n </PlaceHolder>\n </div>,\n );\n }\n}\n\nexport const spec = {\n drop: (props, monitor) => {\n log('[drop] props: ', props);\n const item = monitor.getItem();\n props.onDropChoice(item);\n },\n canDrop: (props /*, monitor*/) => {\n return !props.disabled;\n },\n};\n\nconst WithTarget = DropTarget(\n ({ uid }) => uid,\n spec,\n (connect, monitor) => ({\n connectDropTarget: connect.dropTarget(),\n isOver: monitor.isOver(),\n }),\n)(DroppablePlaceholder);\n\nexport default uid.withUid(WithTarget);\n"],"file":"droppable-placeholder.js"}