@pie-element/hotspot 10.0.0-next.42 → 10.1.0-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/configure/lib/defaults.js +3 -0
  2. package/configure/lib/defaults.js.map +1 -1
  3. package/configure/lib/hotspot-circle.js +0 -1
  4. package/configure/lib/hotspot-circle.js.map +1 -1
  5. package/configure/lib/hotspot-drawable.js +5 -5
  6. package/configure/lib/hotspot-drawable.js.map +1 -1
  7. package/configure/lib/hotspot-polygon.js +1 -2
  8. package/configure/lib/hotspot-polygon.js.map +1 -1
  9. package/configure/lib/hotspot-rectangle.js +0 -1
  10. package/configure/lib/hotspot-rectangle.js.map +1 -1
  11. package/configure/lib/utils.js +2 -3
  12. package/configure/lib/utils.js.map +1 -1
  13. package/configure/package.json +6 -6
  14. package/configure/src/__tests__/DeleteWidget.test.jsx +366 -0
  15. package/configure/src/__tests__/button.test.jsx +198 -0
  16. package/configure/src/__tests__/hotspot-circle.test.jsx +259 -0
  17. package/configure/src/__tests__/hotspot-palette.test.jsx +71 -0
  18. package/configure/src/__tests__/image-konva.test.jsx +226 -0
  19. package/configure/src/defaults.js +1 -0
  20. package/configure/src/hotspot-circle.jsx +0 -1
  21. package/configure/src/hotspot-drawable.jsx +1 -1
  22. package/configure/src/hotspot-polygon.jsx +0 -1
  23. package/configure/src/hotspot-rectangle.jsx +0 -1
  24. package/configure/src/utils.js +1 -1
  25. package/controller/lib/index.js +2 -2
  26. package/controller/lib/index.js.map +1 -1
  27. package/controller/lib/utils.js +3 -5
  28. package/controller/lib/utils.js.map +1 -1
  29. package/controller/package.json +3 -3
  30. package/controller/src/index.js +1 -1
  31. package/controller/src/utils.js +1 -2
  32. package/lib/hotspot/circle.js +1 -2
  33. package/lib/hotspot/circle.js.map +1 -1
  34. package/lib/hotspot/polygon.js +0 -1
  35. package/lib/hotspot/polygon.js.map +1 -1
  36. package/lib/hotspot/rectangle.js +0 -1
  37. package/lib/hotspot/rectangle.js.map +1 -1
  38. package/package.json +12 -9
  39. package/src/hotspot/__tests__/circle.test.jsx +464 -0
  40. package/src/hotspot/__tests__/container.test.jsx +546 -0
  41. package/src/hotspot/__tests__/image-konva-tooltip.test.jsx +510 -0
  42. package/src/hotspot/__tests__/polygon.test.jsx +502 -0
  43. package/src/hotspot/__tests__/rectangle.test.jsx +418 -0
  44. package/src/hotspot/circle.jsx +0 -1
  45. package/src/hotspot/polygon.jsx +0 -1
  46. package/src/hotspot/rectangle.jsx +0 -1
  47. package/module/configure.js +0 -1
  48. package/module/controller.js +0 -4073
  49. package/module/demo.js +0 -143
  50. package/module/element.js +0 -1
  51. package/module/index.html +0 -21
  52. package/module/manifest.json +0 -14
  53. package/module/print-demo.js +0 -181
  54. package/module/print.html +0 -18
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_debug","_interopRequireDefault","require","_isEmpty","_controllerUtils","_utils","_defaults","log","debug","normalize","question","defaults","exports","model","session","env","normalizedQuestion","imageUrl","dimensions","hotspotColor","hoverOutlineColor","selectedHotspotColor","multipleCorrect","outlineColor","partialScoring","prompt","shapes","language","fontSizeFactor","autoplayAudioEnabled","completeAudioEnabled","customAudioButton","rectangles","polygons","circles","shouldIncludeCorrectResponse","mode","role","Promise","resolve","out","disabled","map","index","correct","rectProps","polyProps","circleProps","responseCorrect","isResponseCorrect","undefined","extraCSSRules","rationale","rationaleEnabled","teacherInstructions","teacherInstructionsEnabled","promptEnabled","strokeWidth","createDefaultModel","getScore","config","answers","partialScoringEnabled","enabled","correctAnswers","selectedChoices","choices","correctChoices","filter","choice","forEach","shape","selected","answer","id","correctlySelected","extraAnswers","length","total","str","toFixed","parseFloat","outcome","isEmpty","score","empty","returnShapesCorrect","i","push","createCorrectResponseSession","rectangleCorrect","polygonsCorrect","circlesCorrect","getInnerText","html","replaceAll","getContent","replace","validate","minShapes","maxShapes","maxSelections","errors","field","required","allShapes","Object","values","reduce","acc","nbOfSelections","nbOfShapes","selections"],"sources":["../src/index.js"],"sourcesContent":["import debug from 'debug';\nimport isEmpty from 'lodash/isEmpty';\nimport { partialScoring } from '@pie-lib/controller-utils';\n\nimport { isResponseCorrect } from './utils';\n\nimport defaults from './defaults';\n\nconst log = debug('pie-elements:hotspot:controller');\n\nexport const normalize = (question) => ({\n ...defaults,\n ...question,\n});\n\nexport function model(question, session, env) {\n const normalizedQuestion = normalize(question);\n const {\n imageUrl,\n dimensions,\n hotspotColor,\n hoverOutlineColor,\n selectedHotspotColor,\n multipleCorrect,\n outlineColor,\n partialScoring,\n prompt,\n shapes,\n language,\n fontSizeFactor,\n autoplayAudioEnabled,\n completeAudioEnabled,\n customAudioButton,\n } = normalizedQuestion;\n const { rectangles, polygons, circles } = shapes || {};\n\n const shouldIncludeCorrectResponse = env.mode === 'evaluate' || (env.role === 'instructor' && env.mode === 'view');\n\n return new Promise((resolve) => {\n const out = {\n disabled: env.mode !== 'gather',\n mode: env.mode,\n dimensions,\n imageUrl,\n outlineColor,\n hotspotColor,\n hoverOutlineColor,\n selectedHotspotColor,\n multipleCorrect,\n partialScoring,\n language,\n fontSizeFactor,\n autoplayAudioEnabled,\n completeAudioEnabled,\n customAudioButton,\n shapes: {\n ...shapes,\n // eslint-disable-next-line no-unused-vars\n rectangles: (rectangles || []).map(({ index, correct, ...rectProps }) =>\n shouldIncludeCorrectResponse ? { correct, ...rectProps } : { ...rectProps },\n ),\n // eslint-disable-next-line no-unused-vars\n polygons: (polygons || []).map(({ index, correct, ...polyProps }) =>\n shouldIncludeCorrectResponse ? { correct, ...polyProps } : { ...polyProps },\n ),\n // eslint-disable-next-line no-unused-vars\n circles: (circles || []).map(({ index, correct, ...circleProps }) =>\n shouldIncludeCorrectResponse ? { correct, ...circleProps } : { ...circleProps },\n ),\n },\n responseCorrect: env.mode === 'evaluate' ? isResponseCorrect(normalizedQuestion, session) : undefined,\n extraCSSRules: normalizedQuestion.extraCSSRules,\n };\n\n if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {\n out.rationale = normalizedQuestion.rationaleEnabled ? normalizedQuestion.rationale : null;\n out.teacherInstructions = normalizedQuestion.teacherInstructionsEnabled\n ? normalizedQuestion.teacherInstructions\n : null;\n } else {\n out.rationale = null;\n out.teacherInstructions = null;\n }\n\n out.prompt = normalizedQuestion.promptEnabled ? prompt : null;\n out.strokeWidth = normalizedQuestion.strokeWidth;\n\n resolve(out);\n });\n}\n\nexport const createDefaultModel = (model = {}) =>\n new Promise((resolve) => {\n resolve({\n ...defaults,\n ...model,\n });\n });\n\nconst getScore = (config, session, env = {}) => {\n const { answers } = session || {};\n\n if (!config.shapes || (!config.shapes.rectangles && !config.shapes.polygons && !config.shapes.circles)) {\n return 0;\n }\n\n const { shapes: { rectangles = [], polygons = [], circles = [] } = {} } = config;\n const partialScoringEnabled = partialScoring.enabled(config, env);\n\n if (!partialScoringEnabled) {\n return isResponseCorrect(config, session) ? 1 : 0;\n }\n\n let correctAnswers = 0;\n let selectedChoices = 0;\n\n const choices = [...rectangles, ...polygons, ...circles];\n\n const correctChoices = choices.filter((choice) => choice.correct);\n\n choices.forEach((shape) => {\n const selected = answers && answers.filter((answer) => answer.id === shape.id)[0];\n const correctlySelected = shape.correct && selected;\n\n if (selected) {\n selectedChoices += 1;\n }\n\n if (correctlySelected) {\n correctAnswers += 1;\n }\n });\n\n const extraAnswers = selectedChoices > correctChoices.length ? selectedChoices - correctChoices.length : 0;\n\n const total = correctChoices.length === 0 ? 1 : correctChoices.length;\n const str = ((correctAnswers - extraAnswers) / total).toFixed(2);\n\n return str < 0 ? 0 : parseFloat(str);\n};\n\nexport function outcome(config, session, env = {}) {\n return new Promise((resolve) => {\n log('outcome...');\n\n if (!session || isEmpty(session)) {\n resolve({ score: 0, empty: true });\n }\n\n if (session.answers) {\n const score = getScore(config, session, env);\n resolve({ score });\n } else {\n resolve({ score: 0, empty: true });\n }\n });\n}\n\nconst returnShapesCorrect = (shapes) => {\n let answers = [];\n\n shapes.forEach((i) => {\n const { correct, id } = i;\n if (correct) {\n answers.push({ id });\n }\n });\n return answers;\n};\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const { shapes: { rectangles = [], circles = [], polygons = {} } = {} } = question;\n\n const rectangleCorrect = returnShapesCorrect(rectangles);\n const polygonsCorrect = returnShapesCorrect(polygons);\n const circlesCorrect = returnShapesCorrect(circles);\n\n resolve({\n answers: [...rectangleCorrect, ...polygonsCorrect, ...circlesCorrect],\n id: '1',\n });\n } else {\n resolve(null);\n }\n });\n};\n\n// remove all html tags\nconst getInnerText = (html) => (html || '').replaceAll(/<[^>]*>/g, '');\n\n// remove all html tags except img, iframe and source tag for audio\nconst getContent = (html) => (html || '').replace(/(<(?!img|iframe|source)([^>]+)>)/gi, '');\n\nexport const validate = (model = {}, config = {}) => {\n const { shapes } = model;\n const { minShapes = 2, maxShapes, maxSelections } = config;\n const errors = {};\n\n ['teacherInstructions', 'prompt', 'rationale'].forEach((field) => {\n if (config[field]?.required && !getContent(model[field])) {\n errors[field] = 'This field is required.';\n }\n });\n\n const allShapes = Object.values(shapes || {}).reduce((acc, shape) => [...acc, ...shape], []);\n\n const nbOfSelections = (allShapes || []).reduce((acc, shape) => (shape.correct ? acc + 1 : acc), 0);\n\n const nbOfShapes = (allShapes || []).length;\n\n if (nbOfShapes < minShapes) {\n errors.shapes = `There should be at least ${minShapes} shapes defined.`;\n } else if (nbOfShapes > maxShapes) {\n errors.shapes = `No more than ${maxShapes} shapes should be defined.`;\n }\n\n if (nbOfSelections < 1) {\n errors.selections = 'There should be at least 1 shape selected.';\n } else if (nbOfSelections > maxSelections) {\n errors.selections = `No more than ${maxSelections} shapes should be selected.`;\n }\n\n return errors;\n};\n"],"mappings":";;;;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,QAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,gBAAA,GAAAF,OAAA;AAEA,IAAAG,MAAA,GAAAH,OAAA;AAEA,IAAAI,SAAA,GAAAL,sBAAA,CAAAC,OAAA;AAEA,MAAMK,GAAG,GAAG,IAAAC,cAAK,EAAC,iCAAiC,CAAC;AAE7C,MAAMC,SAAS,GAAIC,QAAQ,KAAM;EACtC,GAAGC,iBAAQ;EACX,GAAGD;AACL,CAAC,CAAC;AAACE,OAAA,CAAAH,SAAA,GAAAA,SAAA;AAEI,SAASI,KAAKA,CAACH,QAAQ,EAAEI,OAAO,EAAEC,GAAG,EAAE;EAC5C,MAAMC,kBAAkB,GAAGP,SAAS,CAACC,QAAQ,CAAC;EAC9C,MAAM;IACJO,QAAQ;IACRC,UAAU;IACVC,YAAY;IACZC,iBAAiB;IACjBC,oBAAoB;IACpBC,eAAe;IACfC,YAAY;IACZC,cAAc;IACdC,MAAM;IACNC,MAAM;IACNC,QAAQ;IACRC,cAAc;IACdC,oBAAoB;IACpBC,oBAAoB;IACpBC;EACF,CAAC,GAAGf,kBAAkB;EACtB,MAAM;IAAEgB,UAAU;IAAEC,QAAQ;IAAEC;EAAQ,CAAC,GAAGR,MAAM,IAAI,CAAC,CAAC;EAEtD,MAAMS,4BAA4B,GAAGpB,GAAG,CAACqB,IAAI,KAAK,UAAU,IAAKrB,GAAG,CAACsB,IAAI,KAAK,YAAY,IAAItB,GAAG,CAACqB,IAAI,KAAK,MAAO;EAElH,OAAO,IAAIE,OAAO,CAAEC,OAAO,IAAK;IAC9B,MAAMC,GAAG,GAAG;MACVC,QAAQ,EAAE1B,GAAG,CAACqB,IAAI,KAAK,QAAQ;MAC/BA,IAAI,EAAErB,GAAG,CAACqB,IAAI;MACdlB,UAAU;MACVD,QAAQ;MACRM,YAAY;MACZJ,YAAY;MACZC,iBAAiB;MACjBC,oBAAoB;MACpBC,eAAe;MACfE,cAAc;MACdG,QAAQ;MACRC,cAAc;MACdC,oBAAoB;MACpBC,oBAAoB;MACpBC,iBAAiB;MACjBL,MAAM,EAAE;QACN,GAAGA,MAAM;QACT;QACAM,UAAU,EAAE,CAACA,UAAU,IAAI,EAAE,EAAEU,GAAG,CAAC,CAAC;UAAEC,KAAK;UAAEC,OAAO;UAAE,GAAGC;QAAU,CAAC,KAClEV,4BAA4B,GAAG;UAAES,OAAO;UAAE,GAAGC;QAAU,CAAC,GAAG;UAAE,GAAGA;QAAU,CAC5E,CAAC;QACD;QACAZ,QAAQ,EAAE,CAACA,QAAQ,IAAI,EAAE,EAAES,GAAG,CAAC,CAAC;UAAEC,KAAK;UAAEC,OAAO;UAAE,GAAGE;QAAU,CAAC,KAC9DX,4BAA4B,GAAG;UAAES,OAAO;UAAE,GAAGE;QAAU,CAAC,GAAG;UAAE,GAAGA;QAAU,CAC5E,CAAC;QACD;QACAZ,OAAO,EAAE,CAACA,OAAO,IAAI,EAAE,EAAEQ,GAAG,CAAC,CAAC;UAAEC,KAAK;UAAEC,OAAO;UAAE,GAAGG;QAAY,CAAC,KAC9DZ,4BAA4B,GAAG;UAAES,OAAO;UAAE,GAAGG;QAAY,CAAC,GAAG;UAAE,GAAGA;QAAY,CAChF;MACF,CAAC;MACDC,eAAe,EAAEjC,GAAG,CAACqB,IAAI,KAAK,UAAU,GAAG,IAAAa,wBAAiB,EAACjC,kBAAkB,EAAEF,OAAO,CAAC,GAAGoC,SAAS;MACrGC,aAAa,EAAEnC,kBAAkB,CAACmC;IACpC,CAAC;IAED,IAAIpC,GAAG,CAACsB,IAAI,KAAK,YAAY,KAAKtB,GAAG,CAACqB,IAAI,KAAK,MAAM,IAAIrB,GAAG,CAACqB,IAAI,KAAK,UAAU,CAAC,EAAE;MACjFI,GAAG,CAACY,SAAS,GAAGpC,kBAAkB,CAACqC,gBAAgB,GAAGrC,kBAAkB,CAACoC,SAAS,GAAG,IAAI;MACzFZ,GAAG,CAACc,mBAAmB,GAAGtC,kBAAkB,CAACuC,0BAA0B,GACnEvC,kBAAkB,CAACsC,mBAAmB,GACtC,IAAI;IACV,CAAC,MAAM;MACLd,GAAG,CAACY,SAAS,GAAG,IAAI;MACpBZ,GAAG,CAACc,mBAAmB,GAAG,IAAI;IAChC;IAEAd,GAAG,CAACf,MAAM,GAAGT,kBAAkB,CAACwC,aAAa,GAAG/B,MAAM,GAAG,IAAI;IAC7De,GAAG,CAACiB,WAAW,GAAGzC,kBAAkB,CAACyC,WAAW;IAEhDlB,OAAO,CAACC,GAAG,CAAC;EACd,CAAC,CAAC;AACJ;AAEO,MAAMkB,kBAAkB,GAAGA,CAAC7C,KAAK,GAAG,CAAC,CAAC,KAC3C,IAAIyB,OAAO,CAAEC,OAAO,IAAK;EACvBA,OAAO,CAAC;IACN,GAAG5B,iBAAQ;IACX,GAAGE;EACL,CAAC,CAAC;AACJ,CAAC,CAAC;AAACD,OAAA,CAAA8C,kBAAA,GAAAA,kBAAA;AAEL,MAAMC,QAAQ,GAAGA,CAACC,MAAM,EAAE9C,OAAO,EAAEC,GAAG,GAAG,CAAC,CAAC,KAAK;EAC9C,MAAM;IAAE8C;EAAQ,CAAC,GAAG/C,OAAO,IAAI,CAAC,CAAC;EAEjC,IAAI,CAAC8C,MAAM,CAAClC,MAAM,IAAK,CAACkC,MAAM,CAAClC,MAAM,CAACM,UAAU,IAAI,CAAC4B,MAAM,CAAClC,MAAM,CAACO,QAAQ,IAAI,CAAC2B,MAAM,CAAClC,MAAM,CAACQ,OAAQ,EAAE;IACtG,OAAO,CAAC;EACV;EAEA,MAAM;IAAER,MAAM,EAAE;MAAEM,UAAU,GAAG,EAAE;MAAEC,QAAQ,GAAG,EAAE;MAAEC,OAAO,GAAG;IAAG,CAAC,GAAG,CAAC;EAAE,CAAC,GAAG0B,MAAM;EAChF,MAAME,qBAAqB,GAAGtC,+BAAc,CAACuC,OAAO,CAACH,MAAM,EAAE7C,GAAG,CAAC;EAEjE,IAAI,CAAC+C,qBAAqB,EAAE;IAC1B,OAAO,IAAAb,wBAAiB,EAACW,MAAM,EAAE9C,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;EACnD;EAEA,IAAIkD,cAAc,GAAG,CAAC;EACtB,IAAIC,eAAe,GAAG,CAAC;EAEvB,MAAMC,OAAO,GAAG,CAAC,GAAGlC,UAAU,EAAE,GAAGC,QAAQ,EAAE,GAAGC,OAAO,CAAC;EAExD,MAAMiC,cAAc,GAAGD,OAAO,CAACE,MAAM,CAAEC,MAAM,IAAKA,MAAM,CAACzB,OAAO,CAAC;EAEjEsB,OAAO,CAACI,OAAO,CAAEC,KAAK,IAAK;IACzB,MAAMC,QAAQ,GAAGX,OAAO,IAAIA,OAAO,CAACO,MAAM,CAAEK,MAAM,IAAKA,MAAM,CAACC,EAAE,KAAKH,KAAK,CAACG,EAAE,CAAC,CAAC,CAAC,CAAC;IACjF,MAAMC,iBAAiB,GAAGJ,KAAK,CAAC3B,OAAO,IAAI4B,QAAQ;IAEnD,IAAIA,QAAQ,EAAE;MACZP,eAAe,IAAI,CAAC;IACtB;IAEA,IAAIU,iBAAiB,EAAE;MACrBX,cAAc,IAAI,CAAC;IACrB;EACF,CAAC,CAAC;EAEF,MAAMY,YAAY,GAAGX,eAAe,GAAGE,cAAc,CAACU,MAAM,GAAGZ,eAAe,GAAGE,cAAc,CAACU,MAAM,GAAG,CAAC;EAE1G,MAAMC,KAAK,GAAGX,cAAc,CAACU,MAAM,KAAK,CAAC,GAAG,CAAC,GAAGV,cAAc,CAACU,MAAM;EACrE,MAAME,GAAG,GAAG,CAAC,CAACf,cAAc,GAAGY,YAAY,IAAIE,KAAK,EAAEE,OAAO,CAAC,CAAC,CAAC;EAEhE,OAAOD,GAAG,GAAG,CAAC,GAAG,CAAC,GAAGE,UAAU,CAACF,GAAG,CAAC;AACtC,CAAC;AAEM,SAASG,OAAOA,CAACtB,MAAM,EAAE9C,OAAO,EAAEC,GAAG,GAAG,CAAC,CAAC,EAAE;EACjD,OAAO,IAAIuB,OAAO,CAAEC,OAAO,IAAK;IAC9BhC,GAAG,CAAC,YAAY,CAAC;IAEjB,IAAI,CAACO,OAAO,IAAI,IAAAqE,gBAAO,EAACrE,OAAO,CAAC,EAAE;MAChCyB,OAAO,CAAC;QAAE6C,KAAK,EAAE,CAAC;QAAEC,KAAK,EAAE;MAAK,CAAC,CAAC;IACpC;IAEA,IAAIvE,OAAO,CAAC+C,OAAO,EAAE;MACnB,MAAMuB,KAAK,GAAGzB,QAAQ,CAACC,MAAM,EAAE9C,OAAO,EAAEC,GAAG,CAAC;MAC5CwB,OAAO,CAAC;QAAE6C;MAAM,CAAC,CAAC;IACpB,CAAC,MAAM;MACL7C,OAAO,CAAC;QAAE6C,KAAK,EAAE,CAAC;QAAEC,KAAK,EAAE;MAAK,CAAC,CAAC;IACpC;EACF,CAAC,CAAC;AACJ;AAEA,MAAMC,mBAAmB,GAAI5D,MAAM,IAAK;EACtC,IAAImC,OAAO,GAAG,EAAE;EAEhBnC,MAAM,CAAC4C,OAAO,CAAEiB,CAAC,IAAK;IACpB,MAAM;MAAE3C,OAAO;MAAE8B;IAAG,CAAC,GAAGa,CAAC;IACzB,IAAI3C,OAAO,EAAE;MACXiB,OAAO,CAAC2B,IAAI,CAAC;QAAEd;MAAG,CAAC,CAAC;IACtB;EACF,CAAC,CAAC;EACF,OAAOb,OAAO;AAChB,CAAC;AAEM,MAAM4B,4BAA4B,GAAGA,CAAC/E,QAAQ,EAAEK,GAAG,KAAK;EAC7D,OAAO,IAAIuB,OAAO,CAAEC,OAAO,IAAK;IAC9B,IAAIxB,GAAG,CAACqB,IAAI,KAAK,UAAU,IAAIrB,GAAG,CAACsB,IAAI,KAAK,YAAY,EAAE;MACxD,MAAM;QAAEX,MAAM,EAAE;UAAEM,UAAU,GAAG,EAAE;UAAEE,OAAO,GAAG,EAAE;UAAED,QAAQ,GAAG,CAAC;QAAE,CAAC,GAAG,CAAC;MAAE,CAAC,GAAGvB,QAAQ;MAElF,MAAMgF,gBAAgB,GAAGJ,mBAAmB,CAACtD,UAAU,CAAC;MACxD,MAAM2D,eAAe,GAAGL,mBAAmB,CAACrD,QAAQ,CAAC;MACrD,MAAM2D,cAAc,GAAGN,mBAAmB,CAACpD,OAAO,CAAC;MAEnDK,OAAO,CAAC;QACNsB,OAAO,EAAE,CAAC,GAAG6B,gBAAgB,EAAE,GAAGC,eAAe,EAAE,GAAGC,cAAc,CAAC;QACrElB,EAAE,EAAE;MACN,CAAC,CAAC;IACJ,CAAC,MAAM;MACLnC,OAAO,CAAC,IAAI,CAAC;IACf;EACF,CAAC,CAAC;AACJ,CAAC;;AAED;AAAA3B,OAAA,CAAA6E,4BAAA,GAAAA,4BAAA;AACA,MAAMI,YAAY,GAAIC,IAAI,IAAK,CAACA,IAAI,IAAI,EAAE,EAAEC,UAAU,CAAC,UAAU,EAAE,EAAE,CAAC;;AAEtE;AACA,MAAMC,UAAU,GAAIF,IAAI,IAAK,CAACA,IAAI,IAAI,EAAE,EAAEG,OAAO,CAAC,oCAAoC,EAAE,EAAE,CAAC;AAEpF,MAAMC,QAAQ,GAAGA,CAACrF,KAAK,GAAG,CAAC,CAAC,EAAE+C,MAAM,GAAG,CAAC,CAAC,KAAK;EACnD,MAAM;IAAElC;EAAO,CAAC,GAAGb,KAAK;EACxB,MAAM;IAAEsF,SAAS,GAAG,CAAC;IAAEC,SAAS;IAAEC;EAAc,CAAC,GAAGzC,MAAM;EAC1D,MAAM0C,MAAM,GAAG,CAAC,CAAC;EAEjB,CAAC,qBAAqB,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAChC,OAAO,CAAEiC,KAAK,IAAK;IAChE,IAAI3C,MAAM,CAAC2C,KAAK,CAAC,EAAEC,QAAQ,IAAI,CAACR,UAAU,CAACnF,KAAK,CAAC0F,KAAK,CAAC,CAAC,EAAE;MACxDD,MAAM,CAACC,KAAK,CAAC,GAAG,yBAAyB;IAC3C;EACF,CAAC,CAAC;EAEF,MAAME,SAAS,GAAGC,MAAM,CAACC,MAAM,CAACjF,MAAM,IAAI,CAAC,CAAC,CAAC,CAACkF,MAAM,CAAC,CAACC,GAAG,EAAEtC,KAAK,KAAK,CAAC,GAAGsC,GAAG,EAAE,GAAGtC,KAAK,CAAC,EAAE,EAAE,CAAC;EAE5F,MAAMuC,cAAc,GAAG,CAACL,SAAS,IAAI,EAAE,EAAEG,MAAM,CAAC,CAACC,GAAG,EAAEtC,KAAK,KAAMA,KAAK,CAAC3B,OAAO,GAAGiE,GAAG,GAAG,CAAC,GAAGA,GAAI,EAAE,CAAC,CAAC;EAEnG,MAAME,UAAU,GAAG,CAACN,SAAS,IAAI,EAAE,EAAE5B,MAAM;EAE3C,IAAIkC,UAAU,GAAGZ,SAAS,EAAE;IAC1BG,MAAM,CAAC5E,MAAM,GAAG,4BAA4ByE,SAAS,kBAAkB;EACzE,CAAC,MAAM,IAAIY,UAAU,GAAGX,SAAS,EAAE;IACjCE,MAAM,CAAC5E,MAAM,GAAG,gBAAgB0E,SAAS,4BAA4B;EACvE;EAEA,IAAIU,cAAc,GAAG,CAAC,EAAE;IACtBR,MAAM,CAACU,UAAU,GAAG,4CAA4C;EAClE,CAAC,MAAM,IAAIF,cAAc,GAAGT,aAAa,EAAE;IACzCC,MAAM,CAACU,UAAU,GAAG,gBAAgBX,aAAa,6BAA6B;EAChF;EAEA,OAAOC,MAAM;AACf,CAAC;AAAC1F,OAAA,CAAAsF,QAAA,GAAAA,QAAA","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["_debug","_interopRequireDefault","require","_lodashEs","_controllerUtils","_utils","_defaults","log","debug","normalize","question","defaults","exports","model","session","env","normalizedQuestion","imageUrl","dimensions","hotspotColor","hoverOutlineColor","selectedHotspotColor","multipleCorrect","outlineColor","partialScoring","prompt","shapes","language","fontSizeFactor","autoplayAudioEnabled","completeAudioEnabled","customAudioButton","rectangles","polygons","circles","shouldIncludeCorrectResponse","mode","role","Promise","resolve","out","disabled","map","index","correct","rectProps","polyProps","circleProps","responseCorrect","isResponseCorrect","undefined","extraCSSRules","rationale","rationaleEnabled","teacherInstructions","teacherInstructionsEnabled","promptEnabled","strokeWidth","createDefaultModel","getScore","config","answers","partialScoringEnabled","enabled","correctAnswers","selectedChoices","choices","correctChoices","filter","choice","forEach","shape","selected","answer","id","correctlySelected","extraAnswers","length","total","str","toFixed","parseFloat","outcome","isEmpty","score","empty","returnShapesCorrect","i","push","createCorrectResponseSession","rectangleCorrect","polygonsCorrect","circlesCorrect","getInnerText","html","replaceAll","getContent","replace","validate","minShapes","maxShapes","maxSelections","errors","field","required","allShapes","Object","values","reduce","acc","nbOfSelections","nbOfShapes","selections"],"sources":["../src/index.js"],"sourcesContent":["import debug from 'debug';\nimport { isEmpty } from 'lodash-es';\nimport { partialScoring } from '@pie-lib/controller-utils';\n\nimport { isResponseCorrect } from './utils';\n\nimport defaults from './defaults';\n\nconst log = debug('pie-elements:hotspot:controller');\n\nexport const normalize = (question) => ({\n ...defaults,\n ...question,\n});\n\nexport function model(question, session, env) {\n const normalizedQuestion = normalize(question);\n const {\n imageUrl,\n dimensions,\n hotspotColor,\n hoverOutlineColor,\n selectedHotspotColor,\n multipleCorrect,\n outlineColor,\n partialScoring,\n prompt,\n shapes,\n language,\n fontSizeFactor,\n autoplayAudioEnabled,\n completeAudioEnabled,\n customAudioButton,\n } = normalizedQuestion;\n const { rectangles, polygons, circles } = shapes || {};\n\n const shouldIncludeCorrectResponse = env.mode === 'evaluate' || (env.role === 'instructor' && env.mode === 'view');\n\n return new Promise((resolve) => {\n const out = {\n disabled: env.mode !== 'gather',\n mode: env.mode,\n dimensions,\n imageUrl,\n outlineColor,\n hotspotColor,\n hoverOutlineColor,\n selectedHotspotColor,\n multipleCorrect,\n partialScoring,\n language,\n fontSizeFactor,\n autoplayAudioEnabled,\n completeAudioEnabled,\n customAudioButton,\n shapes: {\n ...shapes,\n // eslint-disable-next-line no-unused-vars\n rectangles: (rectangles || []).map(({ index, correct, ...rectProps }) =>\n shouldIncludeCorrectResponse ? { correct, ...rectProps } : { ...rectProps },\n ),\n // eslint-disable-next-line no-unused-vars\n polygons: (polygons || []).map(({ index, correct, ...polyProps }) =>\n shouldIncludeCorrectResponse ? { correct, ...polyProps } : { ...polyProps },\n ),\n // eslint-disable-next-line no-unused-vars\n circles: (circles || []).map(({ index, correct, ...circleProps }) =>\n shouldIncludeCorrectResponse ? { correct, ...circleProps } : { ...circleProps },\n ),\n },\n responseCorrect: env.mode === 'evaluate' ? isResponseCorrect(normalizedQuestion, session) : undefined,\n extraCSSRules: normalizedQuestion.extraCSSRules,\n };\n\n if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {\n out.rationale = normalizedQuestion.rationaleEnabled ? normalizedQuestion.rationale : null;\n out.teacherInstructions = normalizedQuestion.teacherInstructionsEnabled\n ? normalizedQuestion.teacherInstructions\n : null;\n } else {\n out.rationale = null;\n out.teacherInstructions = null;\n }\n\n out.prompt = normalizedQuestion.promptEnabled ? prompt : null;\n out.strokeWidth = normalizedQuestion.strokeWidth;\n\n resolve(out);\n });\n}\n\nexport const createDefaultModel = (model = {}) =>\n new Promise((resolve) => {\n resolve({\n ...defaults,\n ...model,\n });\n });\n\nconst getScore = (config, session, env = {}) => {\n const { answers } = session || {};\n\n if (!config.shapes || (!config.shapes.rectangles && !config.shapes.polygons && !config.shapes.circles)) {\n return 0;\n }\n\n const { shapes: { rectangles = [], polygons = [], circles = [] } = {} } = config;\n const partialScoringEnabled = partialScoring.enabled(config, env);\n\n if (!partialScoringEnabled) {\n return isResponseCorrect(config, session) ? 1 : 0;\n }\n\n let correctAnswers = 0;\n let selectedChoices = 0;\n\n const choices = [...rectangles, ...polygons, ...circles];\n\n const correctChoices = choices.filter((choice) => choice.correct);\n\n choices.forEach((shape) => {\n const selected = answers && answers.filter((answer) => answer.id === shape.id)[0];\n const correctlySelected = shape.correct && selected;\n\n if (selected) {\n selectedChoices += 1;\n }\n\n if (correctlySelected) {\n correctAnswers += 1;\n }\n });\n\n const extraAnswers = selectedChoices > correctChoices.length ? selectedChoices - correctChoices.length : 0;\n\n const total = correctChoices.length === 0 ? 1 : correctChoices.length;\n const str = ((correctAnswers - extraAnswers) / total).toFixed(2);\n\n return str < 0 ? 0 : parseFloat(str);\n};\n\nexport function outcome(config, session, env = {}) {\n return new Promise((resolve) => {\n log('outcome...');\n\n if (!session || isEmpty(session)) {\n resolve({ score: 0, empty: true });\n }\n\n if (session.answers) {\n const score = getScore(config, session, env);\n resolve({ score });\n } else {\n resolve({ score: 0, empty: true });\n }\n });\n}\n\nconst returnShapesCorrect = (shapes) => {\n let answers = [];\n\n shapes.forEach((i) => {\n const { correct, id } = i;\n if (correct) {\n answers.push({ id });\n }\n });\n return answers;\n};\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const { shapes: { rectangles = [], circles = [], polygons = {} } = {} } = question;\n\n const rectangleCorrect = returnShapesCorrect(rectangles);\n const polygonsCorrect = returnShapesCorrect(polygons);\n const circlesCorrect = returnShapesCorrect(circles);\n\n resolve({\n answers: [...rectangleCorrect, ...polygonsCorrect, ...circlesCorrect],\n id: '1',\n });\n } else {\n resolve(null);\n }\n });\n};\n\n// remove all html tags\nconst getInnerText = (html) => (html || '').replaceAll(/<[^>]*>/g, '');\n\n// remove all html tags except img, iframe and source tag for audio\nconst getContent = (html) => (html || '').replace(/(<(?!img|iframe|source)([^>]+)>)/gi, '');\n\nexport const validate = (model = {}, config = {}) => {\n const { shapes } = model;\n const { minShapes = 2, maxShapes, maxSelections } = config;\n const errors = {};\n\n ['teacherInstructions', 'prompt', 'rationale'].forEach((field) => {\n if (config[field]?.required && !getContent(model[field])) {\n errors[field] = 'This field is required.';\n }\n });\n\n const allShapes = Object.values(shapes || {}).reduce((acc, shape) => [...acc, ...shape], []);\n\n const nbOfSelections = (allShapes || []).reduce((acc, shape) => (shape.correct ? acc + 1 : acc), 0);\n\n const nbOfShapes = (allShapes || []).length;\n\n if (nbOfShapes < minShapes) {\n errors.shapes = `There should be at least ${minShapes} shapes defined.`;\n } else if (nbOfShapes > maxShapes) {\n errors.shapes = `No more than ${maxShapes} shapes should be defined.`;\n }\n\n if (nbOfSelections < 1) {\n errors.selections = 'There should be at least 1 shape selected.';\n } else if (nbOfSelections > maxSelections) {\n errors.selections = `No more than ${maxSelections} shapes should be selected.`;\n }\n\n return errors;\n};\n"],"mappings":"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","ignoreList":[]}
@@ -1,12 +1,10 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
7
6
  exports.isResponseCorrect = exports.getCorrectResponse = void 0;
8
- var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
9
- var _isEmpty = _interopRequireDefault(require("lodash/isEmpty"));
7
+ var _lodashEs = require("lodash-es");
10
8
  const getCorrectResponse = choices => choices.filter(c => c.correct).map(c => c.id).sort();
11
9
  exports.getCorrectResponse = getCorrectResponse;
12
10
  const isResponseCorrect = (question, session) => {
@@ -19,12 +17,12 @@ const isResponseCorrect = (question, session) => {
19
17
  } = question;
20
18
  const choices = [...rectangles, ...polygons, ...circles];
21
19
  let correctResponseIds = getCorrectResponse(choices);
22
- if (!session || (0, _isEmpty.default)(session)) {
20
+ if (!session || (0, _lodashEs.isEmpty)(session)) {
23
21
  return false;
24
22
  }
25
23
  if (session.answers && session.answers.length) {
26
24
  let answerIds = (session.answers || []).map(a => a.id);
27
- return (0, _isEqual.default)(answerIds.sort(), correctResponseIds);
25
+ return (0, _lodashEs.isEqual)(answerIds.sort(), correctResponseIds);
28
26
  } else if (!(correctResponseIds && correctResponseIds.length)) {
29
27
  return true;
30
28
  }
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","names":["_isEqual","_interopRequireDefault","require","_isEmpty","getCorrectResponse","choices","filter","c","correct","map","id","sort","exports","isResponseCorrect","question","session","shapes","rectangles","polygons","circles","correctResponseIds","isEmpty","answers","length","answerIds","a","isEqual"],"sources":["../src/utils.js"],"sourcesContent":["import isEqual from 'lodash/isEqual';\nimport isEmpty from 'lodash/isEmpty';\n\nexport const getCorrectResponse = (choices) =>\n choices\n .filter((c) => c.correct)\n .map((c) => c.id)\n .sort();\n\nexport const isResponseCorrect = (question, session) => {\n const {\n shapes: { rectangles = [], polygons = [], circles = [] },\n } = question;\n const choices = [...rectangles, ...polygons, ...circles];\n let correctResponseIds = getCorrectResponse(choices);\n\n if (!session || isEmpty(session)) {\n return false;\n }\n\n if (session.answers && session.answers.length) {\n let answerIds = (session.answers || []).map((a) => a.id);\n\n return isEqual(answerIds.sort(), correctResponseIds);\n } else if (!(correctResponseIds && correctResponseIds.length)) {\n return true;\n }\n\n return false;\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,QAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,QAAA,GAAAF,sBAAA,CAAAC,OAAA;AAEO,MAAME,kBAAkB,GAAIC,OAAO,IACxCA,OAAO,CACJC,MAAM,CAAEC,CAAC,IAAKA,CAAC,CAACC,OAAO,CAAC,CACxBC,GAAG,CAAEF,CAAC,IAAKA,CAAC,CAACG,EAAE,CAAC,CAChBC,IAAI,CAAC,CAAC;AAACC,OAAA,CAAAR,kBAAA,GAAAA,kBAAA;AAEL,MAAMS,iBAAiB,GAAGA,CAACC,QAAQ,EAAEC,OAAO,KAAK;EACtD,MAAM;IACJC,MAAM,EAAE;MAAEC,UAAU,GAAG,EAAE;MAAEC,QAAQ,GAAG,EAAE;MAAEC,OAAO,GAAG;IAAG;EACzD,CAAC,GAAGL,QAAQ;EACZ,MAAMT,OAAO,GAAG,CAAC,GAAGY,UAAU,EAAE,GAAGC,QAAQ,EAAE,GAAGC,OAAO,CAAC;EACxD,IAAIC,kBAAkB,GAAGhB,kBAAkB,CAACC,OAAO,CAAC;EAEpD,IAAI,CAACU,OAAO,IAAI,IAAAM,gBAAO,EAACN,OAAO,CAAC,EAAE;IAChC,OAAO,KAAK;EACd;EAEA,IAAIA,OAAO,CAACO,OAAO,IAAIP,OAAO,CAACO,OAAO,CAACC,MAAM,EAAE;IAC7C,IAAIC,SAAS,GAAG,CAACT,OAAO,CAACO,OAAO,IAAI,EAAE,EAAEb,GAAG,CAAEgB,CAAC,IAAKA,CAAC,CAACf,EAAE,CAAC;IAExD,OAAO,IAAAgB,gBAAO,EAACF,SAAS,CAACb,IAAI,CAAC,CAAC,EAAES,kBAAkB,CAAC;EACtD,CAAC,MAAM,IAAI,EAAEA,kBAAkB,IAAIA,kBAAkB,CAACG,MAAM,CAAC,EAAE;IAC7D,OAAO,IAAI;EACb;EAEA,OAAO,KAAK;AACd,CAAC;AAACX,OAAA,CAAAC,iBAAA,GAAAA,iBAAA","ignoreList":[]}
1
+ {"version":3,"file":"utils.js","names":["_lodashEs","require","getCorrectResponse","choices","filter","c","correct","map","id","sort","exports","isResponseCorrect","question","session","shapes","rectangles","polygons","circles","correctResponseIds","isEmpty","answers","length","answerIds","a","isEqual"],"sources":["../src/utils.js"],"sourcesContent":["import { isEmpty, isEqual } from 'lodash-es';\n\nexport const getCorrectResponse = (choices) =>\n choices\n .filter((c) => c.correct)\n .map((c) => c.id)\n .sort();\n\nexport const isResponseCorrect = (question, session) => {\n const {\n shapes: { rectangles = [], polygons = [], circles = [] },\n } = question;\n const choices = [...rectangles, ...polygons, ...circles];\n let correctResponseIds = getCorrectResponse(choices);\n\n if (!session || isEmpty(session)) {\n return false;\n }\n\n if (session.answers && session.answers.length) {\n let answerIds = (session.answers || []).map((a) => a.id);\n\n return isEqual(answerIds.sort(), correctResponseIds);\n } else if (!(correctResponseIds && correctResponseIds.length)) {\n return true;\n }\n\n return false;\n};\n"],"mappings":";;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AAEO,MAAMC,kBAAkB,GAAIC,OAAO,IACxCA,OAAO,CACJC,MAAM,CAAEC,CAAC,IAAKA,CAAC,CAACC,OAAO,CAAC,CACxBC,GAAG,CAAEF,CAAC,IAAKA,CAAC,CAACG,EAAE,CAAC,CAChBC,IAAI,CAAC,CAAC;AAACC,OAAA,CAAAR,kBAAA,GAAAA,kBAAA;AAEL,MAAMS,iBAAiB,GAAGA,CAACC,QAAQ,EAAEC,OAAO,KAAK;EACtD,MAAM;IACJC,MAAM,EAAE;MAAEC,UAAU,GAAG,EAAE;MAAEC,QAAQ,GAAG,EAAE;MAAEC,OAAO,GAAG;IAAG;EACzD,CAAC,GAAGL,QAAQ;EACZ,MAAMT,OAAO,GAAG,CAAC,GAAGY,UAAU,EAAE,GAAGC,QAAQ,EAAE,GAAGC,OAAO,CAAC;EACxD,IAAIC,kBAAkB,GAAGhB,kBAAkB,CAACC,OAAO,CAAC;EAEpD,IAAI,CAACU,OAAO,IAAI,IAAAM,iBAAO,EAACN,OAAO,CAAC,EAAE;IAChC,OAAO,KAAK;EACd;EAEA,IAAIA,OAAO,CAACO,OAAO,IAAIP,OAAO,CAACO,OAAO,CAACC,MAAM,EAAE;IAC7C,IAAIC,SAAS,GAAG,CAACT,OAAO,CAACO,OAAO,IAAI,EAAE,EAAEb,GAAG,CAAEgB,CAAC,IAAKA,CAAC,CAACf,EAAE,CAAC;IAExD,OAAO,IAAAgB,iBAAO,EAACF,SAAS,CAACb,IAAI,CAAC,CAAC,EAAES,kBAAkB,CAAC;EACtD,CAAC,MAAM,IAAI,EAAEA,kBAAkB,IAAIA,kBAAkB,CAACG,MAAM,CAAC,EAAE;IAC7D,OAAO,IAAI;EACb;EAEA,OAAO,KAAK;AACd,CAAC;AAACX,OAAA,CAAAC,iBAAA,GAAAA,iBAAA","ignoreList":[]}
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@pie-element/hotspot-controller",
3
3
  "private": true,
4
- "version": "7.0.0-beta.1",
4
+ "version": "7.1.0-next.0",
5
5
  "description": "",
6
6
  "scripts": {
7
7
  "test": "echo \"Error: no test specified\" && exit 1"
@@ -11,8 +11,8 @@
11
11
  "main": "lib/index.js",
12
12
  "module": "src/index.js",
13
13
  "dependencies": {
14
- "@pie-lib/controller-utils": "1.1.1-next.0",
14
+ "@pie-lib/controller-utils": "1.1.1-next.1",
15
15
  "debug": "^4.1.1",
16
- "lodash": "^4.17.15"
16
+ "lodash-es": "^4.17.23"
17
17
  }
18
18
  }
@@ -1,5 +1,5 @@
1
1
  import debug from 'debug';
2
- import isEmpty from 'lodash/isEmpty';
2
+ import { isEmpty } from 'lodash-es';
3
3
  import { partialScoring } from '@pie-lib/controller-utils';
4
4
 
5
5
  import { isResponseCorrect } from './utils';
@@ -1,5 +1,4 @@
1
- import isEqual from 'lodash/isEqual';
2
- import isEmpty from 'lodash/isEmpty';
1
+ import { isEmpty, isEqual } from 'lodash-es';
3
2
 
4
3
  export const getCorrectResponse = (choices) =>
5
4
  choices
@@ -117,8 +117,7 @@ class CircleComponent extends _react.default.Component {
117
117
  onMouseLeave: this.handleMouseLeave,
118
118
  onMouseEnter: this.handleMouseEnter,
119
119
  x: x,
120
- y: y,
121
- opacity: 0.5
120
+ y: y
122
121
  }), isEvaluateMode && iconSrc ? /*#__PURE__*/_react.default.createElement(_imageKonvaTooltip.default, {
123
122
  src: iconSrc,
124
123
  x: iconX,
@@ -1 +1 @@
1
- {"version":3,"file":"circle.js","names":["_react","_interopRequireDefault","require","_propTypes","_reactKonva","_imageKonvaTooltip","_icons","CircleComponent","React","Component","constructor","props","_defineProperty2","default","e","onClick","id","selected","disabled","cancelBubble","selector","document","body","style","cursor","setState","hovered","isCorrect","markAsCorrect","outlineColor","showCorrectEnabled","strokeWidth","state","render","radius","hotspotColor","isEvaluateMode","hoverOutlineColor","x","y","evaluateText","scale","selectedHotspotColor","outlineColorParsed","getEvaluateOutlineColor","outlineWidth","getOutlineWidth","iconX","iconY","iconSrc","faCorrect","faWrong","useHoveredStyle","createElement","Group","scaleX","scaleY","Rect","width","height","stroke","Circle","fill","handleClick","onTap","draggable","onMouseLeave","handleMouseLeave","onMouseEnter","handleMouseEnter","opacity","src","tooltip","propTypes","PropTypes","number","isRequired","string","oneOfType","bool","func","defaultProps","_default","exports"],"sources":["../../src/hotspot/circle.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Circle, Group, Rect } from 'react-konva';\nimport ImageComponent from './image-konva-tooltip';\nimport { faCorrect, faWrong } from './icons';\n\nclass CircleComponent extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n hovered: false,\n };\n }\n\n handleClick = (e) => {\n const { onClick, id, selected, disabled } = this.props;\n\n if (!disabled) {\n e.cancelBubble = true;\n onClick({ id, selected: !selected, selector: 'Mouse' });\n }\n };\n\n handleMouseEnter = () => {\n const { disabled } = this.props;\n\n if (!disabled) {\n document.body.style.cursor = 'pointer';\n }\n this.setState({ hovered: true });\n };\n\n handleMouseLeave = () => {\n document.body.style.cursor = 'default';\n this.setState({ hovered: false });\n };\n\n getEvaluateOutlineColor = (isCorrect, markAsCorrect, outlineColor) =>\n markAsCorrect ? 'green' : isCorrect ? outlineColor : 'red';\n\n getOutlineWidth = (showCorrectEnabled, selected, markAsCorrect, strokeWidth) =>\n markAsCorrect || (!markAsCorrect && !showCorrectEnabled && selected) ? strokeWidth : 0;\n\n render() {\n const {\n radius,\n hotspotColor,\n isCorrect,\n isEvaluateMode,\n hoverOutlineColor,\n outlineColor,\n selected,\n x,\n y,\n evaluateText,\n strokeWidth,\n scale,\n markAsCorrect,\n selectedHotspotColor,\n showCorrectEnabled,\n } = this.props;\n\n const { hovered } = this.state;\n\n const outlineColorParsed = isEvaluateMode\n ? this.getEvaluateOutlineColor(isCorrect, markAsCorrect, outlineColor)\n : outlineColor;\n\n const outlineWidth = this.getOutlineWidth(showCorrectEnabled, selected, markAsCorrect, strokeWidth);\n\n const iconX = x - 10;\n const iconY = y - 10; // Adjust position for the icon\n\n let iconSrc;\n if (showCorrectEnabled) {\n if ((selected && isCorrect) || (!selected && !isCorrect)) {\n iconSrc = faCorrect;\n }\n } else {\n if (selected) {\n if (isCorrect) {\n iconSrc = faCorrect;\n } else {\n iconSrc = faWrong;\n }\n } else if (!isCorrect) {\n iconSrc = faWrong;\n }\n }\n\n const useHoveredStyle = hovered && hoverOutlineColor;\n\n return (\n <Group scaleX={scale} scaleY={scale}>\n {useHoveredStyle && (\n <Rect\n x={x - radius}\n y={y - radius}\n width={radius * 2}\n height={radius * 2}\n stroke={selected ? 'transparent' : hoverOutlineColor}\n strokeWidth={strokeWidth}\n />\n )}\n <Circle\n radius={radius}\n fill={selected && selectedHotspotColor ? selectedHotspotColor : hotspotColor}\n onClick={this.handleClick}\n onTap={this.handleClick}\n draggable={false}\n stroke={useHoveredStyle && !selected ? 'transparent' : outlineColorParsed}\n strokeWidth={useHoveredStyle && !selected ? 0 : outlineWidth}\n onMouseLeave={this.handleMouseLeave}\n onMouseEnter={this.handleMouseEnter}\n x={x}\n y={y}\n opacity={0.5}\n />\n {isEvaluateMode && iconSrc ? <ImageComponent src={iconSrc} x={iconX} y={iconY} tooltip={evaluateText} /> : null}\n </Group>\n );\n }\n}\n\nCircleComponent.propTypes = {\n radius: PropTypes.number.isRequired,\n hotspotColor: PropTypes.string.isRequired,\n id: PropTypes.string.isRequired,\n isCorrect: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n isEvaluateMode: PropTypes.bool.isRequired,\n disabled: PropTypes.bool.isRequired,\n hoverOutlineColor: PropTypes.string,\n onClick: PropTypes.func.isRequired,\n outlineColor: PropTypes.string.isRequired,\n selected: PropTypes.bool.isRequired,\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired,\n evaluateText: PropTypes.string,\n strokeWidth: PropTypes.number,\n scale: PropTypes.number,\n selectedHotspotColor: PropTypes.string,\n markAsCorrect: PropTypes.bool.isRequired,\n showCorrectEnabled: PropTypes.bool.isRequired,\n};\n\nCircleComponent.defaultProps = {\n isCorrect: false,\n evaluateText: null,\n strokeWidth: 5,\n scale: 1,\n};\n\nexport default CircleComponent;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"circle.js","names":["_react","_interopRequireDefault","require","_propTypes","_reactKonva","_imageKonvaTooltip","_icons","CircleComponent","React","Component","constructor","props","_defineProperty2","default","e","onClick","id","selected","disabled","cancelBubble","selector","document","body","style","cursor","setState","hovered","isCorrect","markAsCorrect","outlineColor","showCorrectEnabled","strokeWidth","state","render","radius","hotspotColor","isEvaluateMode","hoverOutlineColor","x","y","evaluateText","scale","selectedHotspotColor","outlineColorParsed","getEvaluateOutlineColor","outlineWidth","getOutlineWidth","iconX","iconY","iconSrc","faCorrect","faWrong","useHoveredStyle","createElement","Group","scaleX","scaleY","Rect","width","height","stroke","Circle","fill","handleClick","onTap","draggable","onMouseLeave","handleMouseLeave","onMouseEnter","handleMouseEnter","src","tooltip","propTypes","PropTypes","number","isRequired","string","oneOfType","bool","func","defaultProps","_default","exports"],"sources":["../../src/hotspot/circle.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Circle, Group, Rect } from 'react-konva';\nimport ImageComponent from './image-konva-tooltip';\nimport { faCorrect, faWrong } from './icons';\n\nclass CircleComponent extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n hovered: false,\n };\n }\n\n handleClick = (e) => {\n const { onClick, id, selected, disabled } = this.props;\n\n if (!disabled) {\n e.cancelBubble = true;\n onClick({ id, selected: !selected, selector: 'Mouse' });\n }\n };\n\n handleMouseEnter = () => {\n const { disabled } = this.props;\n\n if (!disabled) {\n document.body.style.cursor = 'pointer';\n }\n this.setState({ hovered: true });\n };\n\n handleMouseLeave = () => {\n document.body.style.cursor = 'default';\n this.setState({ hovered: false });\n };\n\n getEvaluateOutlineColor = (isCorrect, markAsCorrect, outlineColor) =>\n markAsCorrect ? 'green' : isCorrect ? outlineColor : 'red';\n\n getOutlineWidth = (showCorrectEnabled, selected, markAsCorrect, strokeWidth) =>\n markAsCorrect || (!markAsCorrect && !showCorrectEnabled && selected) ? strokeWidth : 0;\n\n render() {\n const {\n radius,\n hotspotColor,\n isCorrect,\n isEvaluateMode,\n hoverOutlineColor,\n outlineColor,\n selected,\n x,\n y,\n evaluateText,\n strokeWidth,\n scale,\n markAsCorrect,\n selectedHotspotColor,\n showCorrectEnabled,\n } = this.props;\n\n const { hovered } = this.state;\n\n const outlineColorParsed = isEvaluateMode\n ? this.getEvaluateOutlineColor(isCorrect, markAsCorrect, outlineColor)\n : outlineColor;\n\n const outlineWidth = this.getOutlineWidth(showCorrectEnabled, selected, markAsCorrect, strokeWidth);\n\n const iconX = x - 10;\n const iconY = y - 10; // Adjust position for the icon\n\n let iconSrc;\n if (showCorrectEnabled) {\n if ((selected && isCorrect) || (!selected && !isCorrect)) {\n iconSrc = faCorrect;\n }\n } else {\n if (selected) {\n if (isCorrect) {\n iconSrc = faCorrect;\n } else {\n iconSrc = faWrong;\n }\n } else if (!isCorrect) {\n iconSrc = faWrong;\n }\n }\n\n const useHoveredStyle = hovered && hoverOutlineColor;\n\n return (\n <Group scaleX={scale} scaleY={scale}>\n {useHoveredStyle && (\n <Rect\n x={x - radius}\n y={y - radius}\n width={radius * 2}\n height={radius * 2}\n stroke={selected ? 'transparent' : hoverOutlineColor}\n strokeWidth={strokeWidth}\n />\n )}\n <Circle\n radius={radius}\n fill={selected && selectedHotspotColor ? selectedHotspotColor : hotspotColor}\n onClick={this.handleClick}\n onTap={this.handleClick}\n draggable={false}\n stroke={useHoveredStyle && !selected ? 'transparent' : outlineColorParsed}\n strokeWidth={useHoveredStyle && !selected ? 0 : outlineWidth}\n onMouseLeave={this.handleMouseLeave}\n onMouseEnter={this.handleMouseEnter}\n x={x}\n y={y}\n />\n {isEvaluateMode && iconSrc ? <ImageComponent src={iconSrc} x={iconX} y={iconY} tooltip={evaluateText} /> : null}\n </Group>\n );\n }\n}\n\nCircleComponent.propTypes = {\n radius: PropTypes.number.isRequired,\n hotspotColor: PropTypes.string.isRequired,\n id: PropTypes.string.isRequired,\n isCorrect: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n isEvaluateMode: PropTypes.bool.isRequired,\n disabled: PropTypes.bool.isRequired,\n hoverOutlineColor: PropTypes.string,\n onClick: PropTypes.func.isRequired,\n outlineColor: PropTypes.string.isRequired,\n selected: PropTypes.bool.isRequired,\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired,\n evaluateText: PropTypes.string,\n strokeWidth: PropTypes.number,\n scale: PropTypes.number,\n selectedHotspotColor: PropTypes.string,\n markAsCorrect: PropTypes.bool.isRequired,\n showCorrectEnabled: PropTypes.bool.isRequired,\n};\n\nCircleComponent.defaultProps = {\n isCorrect: false,\n evaluateText: null,\n strokeWidth: 5,\n scale: 1,\n};\n\nexport default CircleComponent;\n"],"mappings":";;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,UAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AACA,IAAAG,kBAAA,GAAAJ,sBAAA,CAAAC,OAAA;AACA,IAAAI,MAAA,GAAAJ,OAAA;AAEA,MAAMK,eAAe,SAASC,cAAK,CAACC,SAAS,CAAC;EAC5CC,WAAWA,CAACC,KAAK,EAAE;IACjB,KAAK,CAACA,KAAK,CAAC;IAAC,IAAAC,gBAAA,CAAAC,OAAA,uBAMAC,CAAC,IAAK;MACnB,MAAM;QAAEC,OAAO;QAAEC,EAAE;QAAEC,QAAQ;QAAEC;MAAS,CAAC,GAAG,IAAI,CAACP,KAAK;MAEtD,IAAI,CAACO,QAAQ,EAAE;QACbJ,CAAC,CAACK,YAAY,GAAG,IAAI;QACrBJ,OAAO,CAAC;UAAEC,EAAE;UAAEC,QAAQ,EAAE,CAACA,QAAQ;UAAEG,QAAQ,EAAE;QAAQ,CAAC,CAAC;MACzD;IACF,CAAC;IAAA,IAAAR,gBAAA,CAAAC,OAAA,4BAEkB,MAAM;MACvB,MAAM;QAAEK;MAAS,CAAC,GAAG,IAAI,CAACP,KAAK;MAE/B,IAAI,CAACO,QAAQ,EAAE;QACbG,QAAQ,CAACC,IAAI,CAACC,KAAK,CAACC,MAAM,GAAG,SAAS;MACxC;MACA,IAAI,CAACC,QAAQ,CAAC;QAAEC,OAAO,EAAE;MAAK,CAAC,CAAC;IAClC,CAAC;IAAA,IAAAd,gBAAA,CAAAC,OAAA,4BAEkB,MAAM;MACvBQ,QAAQ,CAACC,IAAI,CAACC,KAAK,CAACC,MAAM,GAAG,SAAS;MACtC,IAAI,CAACC,QAAQ,CAAC;QAAEC,OAAO,EAAE;MAAM,CAAC,CAAC;IACnC,CAAC;IAAA,IAAAd,gBAAA,CAAAC,OAAA,mCAEyB,CAACc,SAAS,EAAEC,aAAa,EAAEC,YAAY,KAC/DD,aAAa,GAAG,OAAO,GAAGD,SAAS,GAAGE,YAAY,GAAG,KAAK;IAAA,IAAAjB,gBAAA,CAAAC,OAAA,2BAE1C,CAACiB,kBAAkB,EAAEb,QAAQ,EAAEW,aAAa,EAAEG,WAAW,KACzEH,aAAa,IAAK,CAACA,aAAa,IAAI,CAACE,kBAAkB,IAAIb,QAAS,GAAGc,WAAW,GAAG,CAAC;IAhCtF,IAAI,CAACC,KAAK,GAAG;MACXN,OAAO,EAAE;IACX,CAAC;EACH;EA+BAO,MAAMA,CAAA,EAAG;IACP,MAAM;MACJC,MAAM;MACNC,YAAY;MACZR,SAAS;MACTS,cAAc;MACdC,iBAAiB;MACjBR,YAAY;MACZZ,QAAQ;MACRqB,CAAC;MACDC,CAAC;MACDC,YAAY;MACZT,WAAW;MACXU,KAAK;MACLb,aAAa;MACbc,oBAAoB;MACpBZ;IACF,CAAC,GAAG,IAAI,CAACnB,KAAK;IAEd,MAAM;MAAEe;IAAQ,CAAC,GAAG,IAAI,CAACM,KAAK;IAE9B,MAAMW,kBAAkB,GAAGP,cAAc,GACrC,IAAI,CAACQ,uBAAuB,CAACjB,SAAS,EAAEC,aAAa,EAAEC,YAAY,CAAC,GACpEA,YAAY;IAEhB,MAAMgB,YAAY,GAAG,IAAI,CAACC,eAAe,CAAChB,kBAAkB,EAAEb,QAAQ,EAAEW,aAAa,EAAEG,WAAW,CAAC;IAEnG,MAAMgB,KAAK,GAAGT,CAAC,GAAG,EAAE;IACpB,MAAMU,KAAK,GAAGT,CAAC,GAAG,EAAE,CAAC,CAAC;;IAEtB,IAAIU,OAAO;IACX,IAAInB,kBAAkB,EAAE;MACtB,IAAKb,QAAQ,IAAIU,SAAS,IAAM,CAACV,QAAQ,IAAI,CAACU,SAAU,EAAE;QACxDsB,OAAO,GAAGC,gBAAS;MACrB;IACF,CAAC,MAAM;MACL,IAAIjC,QAAQ,EAAE;QACZ,IAAIU,SAAS,EAAE;UACbsB,OAAO,GAAGC,gBAAS;QACrB,CAAC,MAAM;UACLD,OAAO,GAAGE,cAAO;QACnB;MACF,CAAC,MAAM,IAAI,CAACxB,SAAS,EAAE;QACrBsB,OAAO,GAAGE,cAAO;MACnB;IACF;IAEA,MAAMC,eAAe,GAAG1B,OAAO,IAAIW,iBAAiB;IAEpD,oBACErC,MAAA,CAAAa,OAAA,CAAAwC,aAAA,CAACjD,WAAA,CAAAkD,KAAK;MAACC,MAAM,EAAEd,KAAM;MAACe,MAAM,EAAEf;IAAM,GACjCW,eAAe,iBACdpD,MAAA,CAAAa,OAAA,CAAAwC,aAAA,CAACjD,WAAA,CAAAqD,IAAI;MACHnB,CAAC,EAAEA,CAAC,GAAGJ,MAAO;MACdK,CAAC,EAAEA,CAAC,GAAGL,MAAO;MACdwB,KAAK,EAAExB,MAAM,GAAG,CAAE;MAClByB,MAAM,EAAEzB,MAAM,GAAG,CAAE;MACnB0B,MAAM,EAAE3C,QAAQ,GAAG,aAAa,GAAGoB,iBAAkB;MACrDN,WAAW,EAAEA;IAAY,CAC1B,CACF,eACD/B,MAAA,CAAAa,OAAA,CAAAwC,aAAA,CAACjD,WAAA,CAAAyD,MAAM;MACL3B,MAAM,EAAEA,MAAO;MACf4B,IAAI,EAAE7C,QAAQ,IAAIyB,oBAAoB,GAAGA,oBAAoB,GAAGP,YAAa;MAC7EpB,OAAO,EAAE,IAAI,CAACgD,WAAY;MAC1BC,KAAK,EAAE,IAAI,CAACD,WAAY;MACxBE,SAAS,EAAE,KAAM;MACjBL,MAAM,EAAER,eAAe,IAAI,CAACnC,QAAQ,GAAG,aAAa,GAAG0B,kBAAmB;MAC1EZ,WAAW,EAAEqB,eAAe,IAAI,CAACnC,QAAQ,GAAG,CAAC,GAAG4B,YAAa;MAC7DqB,YAAY,EAAE,IAAI,CAACC,gBAAiB;MACpCC,YAAY,EAAE,IAAI,CAACC,gBAAiB;MACpC/B,CAAC,EAAEA,CAAE;MACLC,CAAC,EAAEA;IAAE,CACN,CAAC,EACDH,cAAc,IAAIa,OAAO,gBAAGjD,MAAA,CAAAa,OAAA,CAAAwC,aAAA,CAAChD,kBAAA,CAAAQ,OAAc;MAACyD,GAAG,EAAErB,OAAQ;MAACX,CAAC,EAAES,KAAM;MAACR,CAAC,EAAES,KAAM;MAACuB,OAAO,EAAE/B;IAAa,CAAE,CAAC,GAAG,IACtG,CAAC;EAEZ;AACF;AAEAjC,eAAe,CAACiE,SAAS,GAAG;EAC1BtC,MAAM,EAAEuC,kBAAS,CAACC,MAAM,CAACC,UAAU;EACnCxC,YAAY,EAAEsC,kBAAS,CAACG,MAAM,CAACD,UAAU;EACzC3D,EAAE,EAAEyD,kBAAS,CAACG,MAAM,CAACD,UAAU;EAC/BhD,SAAS,EAAE8C,kBAAS,CAACI,SAAS,CAAC,CAACJ,kBAAS,CAACK,IAAI,EAAEL,kBAAS,CAACG,MAAM,CAAC,CAAC;EAClExC,cAAc,EAAEqC,kBAAS,CAACK,IAAI,CAACH,UAAU;EACzCzD,QAAQ,EAAEuD,kBAAS,CAACK,IAAI,CAACH,UAAU;EACnCtC,iBAAiB,EAAEoC,kBAAS,CAACG,MAAM;EACnC7D,OAAO,EAAE0D,kBAAS,CAACM,IAAI,CAACJ,UAAU;EAClC9C,YAAY,EAAE4C,kBAAS,CAACG,MAAM,CAACD,UAAU;EACzC1D,QAAQ,EAAEwD,kBAAS,CAACK,IAAI,CAACH,UAAU;EACnCrC,CAAC,EAAEmC,kBAAS,CAACC,MAAM,CAACC,UAAU;EAC9BpC,CAAC,EAAEkC,kBAAS,CAACC,MAAM,CAACC,UAAU;EAC9BnC,YAAY,EAAEiC,kBAAS,CAACG,MAAM;EAC9B7C,WAAW,EAAE0C,kBAAS,CAACC,MAAM;EAC7BjC,KAAK,EAAEgC,kBAAS,CAACC,MAAM;EACvBhC,oBAAoB,EAAE+B,kBAAS,CAACG,MAAM;EACtChD,aAAa,EAAE6C,kBAAS,CAACK,IAAI,CAACH,UAAU;EACxC7C,kBAAkB,EAAE2C,kBAAS,CAACK,IAAI,CAACH;AACrC,CAAC;AAEDpE,eAAe,CAACyE,YAAY,GAAG;EAC7BrD,SAAS,EAAE,KAAK;EAChBa,YAAY,EAAE,IAAI;EAClBT,WAAW,EAAE,CAAC;EACdU,KAAK,EAAE;AACT,CAAC;AAAC,IAAAwC,QAAA,GAAAC,OAAA,CAAArE,OAAA,GAEaN,eAAe","ignoreList":[]}
@@ -166,7 +166,6 @@ class PolygonComponent extends _react.default.Component {
166
166
  strokeWidth: useHoveredStyle && !selected ? 0 : outlineWidth,
167
167
  onMouseLeave: this.handleMouseLeave,
168
168
  onMouseEnter: this.handleMouseEnter,
169
- opacity: 0.5,
170
169
  cursor: "pointer",
171
170
  position: "relative"
172
171
  }), isEvaluateMode && iconSrc ? /*#__PURE__*/_react.default.createElement(_imageKonvaTooltip.default, {
@@ -1 +1 @@
1
- {"version":3,"file":"polygon.js","names":["_react","_interopRequireDefault","require","_propTypes","_reactKonva","_imageKonvaTooltip","_icons","PolygonComponent","React","Component","constructor","props","_defineProperty2","default","points","x","map","y","minX","Math","min","apply","maxX","max","minY","maxY","parsedPoints","forEach","push","e","onClick","id","selected","disabled","cancelBubble","selector","document","body","style","cursor","setState","hovered","isCorrect","markAsCorrect","outlineColor","showCorrectEnabled","strokeWidth","state","render","hotspotColor","isEvaluateMode","hoverOutlineColor","evaluateText","scale","selectedHotspotColor","outlineColorParsed","getEvaluateOutlineColor","outlineWidth","getOutlineWidth","pointsParsed","parsePointsForKonva","center","getPolygonCenter","iconX","iconY","iconSrc","faCorrect","faWrong","useHoveredStyle","xValues","filter","_","index","yValues","rectX","rectY","rectWidth","rectHeight","createElement","Group","scaleX","scaleY","Rect","width","height","stroke","Line","closed","fill","handleClick","onTap","draggable","onMouseLeave","handleMouseLeave","onMouseEnter","handleMouseEnter","opacity","position","src","tooltip","propTypes","PropTypes","string","isRequired","bool","func","array","number","defaultProps","_default","exports"],"sources":["../../src/hotspot/polygon.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Line, Group, Rect } from 'react-konva';\nimport ImageComponent from './image-konva-tooltip';\nimport { faCorrect, faWrong } from './icons';\n\nclass PolygonComponent extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n hovered: false,\n };\n }\n\n getPolygonCenter = (points) => {\n const x = points.map(({ x }) => x);\n const y = points.map(({ y }) => y);\n const minX = Math.min.apply(null, x);\n const maxX = Math.max.apply(null, x);\n const minY = Math.min.apply(null, y);\n const maxY = Math.max.apply(null, y);\n return [(minX + maxX) / 2, (minY + maxY) / 2];\n };\n\n parsePointsForKonva = (points) => {\n const parsedPoints = [];\n points.forEach(({ x, y }) => {\n parsedPoints.push(x);\n parsedPoints.push(y);\n });\n return parsedPoints;\n };\n\n handleClick = (e) => {\n const { onClick, id, selected, disabled } = this.props;\n\n if (!disabled) {\n e.cancelBubble = true;\n onClick({ id, selected: !selected, selector: 'Mouse' });\n }\n };\n\n handleMouseEnter = () => {\n const { disabled } = this.props;\n\n if (!disabled) {\n document.body.style.cursor = 'pointer';\n }\n this.setState({ hovered: true });\n };\n\n handleMouseLeave = () => {\n document.body.style.cursor = 'default';\n this.setState({ hovered: false });\n };\n\n getEvaluateOutlineColor = (isCorrect, markAsCorrect, outlineColor) =>\n markAsCorrect ? 'green' : isCorrect ? outlineColor : 'red';\n\n getOutlineWidth = (showCorrectEnabled, selected, markAsCorrect, strokeWidth) =>\n markAsCorrect || (!markAsCorrect && !showCorrectEnabled && selected) ? strokeWidth : 0;\n\n render() {\n const {\n hotspotColor,\n isCorrect,\n isEvaluateMode,\n hoverOutlineColor,\n outlineColor,\n selected,\n points,\n evaluateText,\n strokeWidth,\n scale,\n markAsCorrect,\n selectedHotspotColor,\n showCorrectEnabled,\n } = this.props;\n\n const { hovered } = this.state;\n\n const outlineColorParsed = isEvaluateMode\n ? this.getEvaluateOutlineColor(isCorrect, markAsCorrect, outlineColor)\n : outlineColor;\n const outlineWidth = this.getOutlineWidth(showCorrectEnabled, selected, markAsCorrect, strokeWidth);\n\n const pointsParsed = this.parsePointsForKonva(points);\n const center = this.getPolygonCenter(points);\n const iconX = center[0];\n const iconY = center[1];\n\n // \"Show Correct Answer\" Enabled:\n // - Correctly Selected: white checkmark in green circle\n // - Correctly Not Selected: none\n // - Incorrectly Selected: none\n // - Incorrectly Not Selected: white checkmark in green circle\n // \"Show Correct Answer\" Disabled:\n // - Correctly Selected:\n // - white checkmark in green circle\n // - heavy outline, as on “Gather”\n // - Correctly Not Selected: none\n // - Incorrectly Selected:\n // - white \"X\" in red circle\n // - heavy outline around the selection should appear in red\n // - Incorrectly Not Selected: white \"X\" in red circle\n let iconSrc;\n\n if (showCorrectEnabled) {\n if ((selected && isCorrect) || (!selected && !isCorrect)) {\n iconSrc = faCorrect;\n }\n } else {\n if (selected) {\n if (isCorrect) {\n iconSrc = faCorrect;\n } else {\n iconSrc = faWrong;\n }\n } else if (!isCorrect) {\n iconSrc = faWrong;\n }\n }\n const useHoveredStyle = hovered && hoverOutlineColor;\n\n const xValues = pointsParsed.filter((_, index) => index % 2 === 0); // Even indices are x-coordinates\n const yValues = pointsParsed.filter((_, index) => index % 2 !== 0); // Odd indices are y-coordinates\n\n const minX = Math.min(...xValues);\n const maxX = Math.max(...xValues);\n const minY = Math.min(...yValues);\n const maxY = Math.max(...yValues);\n\n const rectX = minX;\n const rectY = minY;\n const rectWidth = maxX - minX;\n const rectHeight = maxY - minY;\n\n return (\n <Group scaleX={scale} scaleY={scale}>\n {useHoveredStyle && (\n <Rect\n x={rectX}\n y={rectY}\n width={rectWidth}\n height={rectHeight}\n stroke={selected ? 'transparent' : hoverOutlineColor}\n strokeWidth={strokeWidth}\n />\n )}\n <Line\n points={pointsParsed}\n closed={true}\n fill={selected && selectedHotspotColor? selectedHotspotColor : hotspotColor}\n onClick={this.handleClick}\n onTap={this.handleClick}\n draggable={false}\n stroke={useHoveredStyle && !selected ? 'transparent' : outlineColorParsed}\n strokeWidth={useHoveredStyle && !selected ? 0 : outlineWidth}\n onMouseLeave={this.handleMouseLeave}\n onMouseEnter={this.handleMouseEnter}\n opacity={0.5}\n cursor='pointer'\n position='relative'\n />\n {isEvaluateMode && iconSrc ? <ImageComponent src={iconSrc} x={iconX} y={iconY} tooltip={evaluateText} /> : null}\n </Group>\n );\n }\n}\n\nPolygonComponent.propTypes = {\n hotspotColor: PropTypes.string.isRequired,\n id: PropTypes.string.isRequired,\n isCorrect: PropTypes.bool.isRequired,\n isEvaluateMode: PropTypes.bool.isRequired,\n hoverOutlineColor: PropTypes.string,\n disabled: PropTypes.bool.isRequired,\n onClick: PropTypes.func.isRequired,\n outlineColor: PropTypes.string.isRequired,\n points: PropTypes.array.isRequired,\n selected: PropTypes.bool.isRequired,\n evaluateText: PropTypes.string,\n selectedHotspotColor: PropTypes.string,\n strokeWidth: PropTypes.number,\n scale: PropTypes.number,\n markAsCorrect: PropTypes.bool.isRequired,\n showCorrectEnabled: PropTypes.bool.isRequired,\n};\n\nPolygonComponent.defaultProps = {\n evaluateText: null,\n strokeWidth: 5,\n scale: 1,\n};\n\nexport default PolygonComponent;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"polygon.js","names":["_react","_interopRequireDefault","require","_propTypes","_reactKonva","_imageKonvaTooltip","_icons","PolygonComponent","React","Component","constructor","props","_defineProperty2","default","points","x","map","y","minX","Math","min","apply","maxX","max","minY","maxY","parsedPoints","forEach","push","e","onClick","id","selected","disabled","cancelBubble","selector","document","body","style","cursor","setState","hovered","isCorrect","markAsCorrect","outlineColor","showCorrectEnabled","strokeWidth","state","render","hotspotColor","isEvaluateMode","hoverOutlineColor","evaluateText","scale","selectedHotspotColor","outlineColorParsed","getEvaluateOutlineColor","outlineWidth","getOutlineWidth","pointsParsed","parsePointsForKonva","center","getPolygonCenter","iconX","iconY","iconSrc","faCorrect","faWrong","useHoveredStyle","xValues","filter","_","index","yValues","rectX","rectY","rectWidth","rectHeight","createElement","Group","scaleX","scaleY","Rect","width","height","stroke","Line","closed","fill","handleClick","onTap","draggable","onMouseLeave","handleMouseLeave","onMouseEnter","handleMouseEnter","position","src","tooltip","propTypes","PropTypes","string","isRequired","bool","func","array","number","defaultProps","_default","exports"],"sources":["../../src/hotspot/polygon.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Line, Group, Rect } from 'react-konva';\nimport ImageComponent from './image-konva-tooltip';\nimport { faCorrect, faWrong } from './icons';\n\nclass PolygonComponent extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n hovered: false,\n };\n }\n\n getPolygonCenter = (points) => {\n const x = points.map(({ x }) => x);\n const y = points.map(({ y }) => y);\n const minX = Math.min.apply(null, x);\n const maxX = Math.max.apply(null, x);\n const minY = Math.min.apply(null, y);\n const maxY = Math.max.apply(null, y);\n return [(minX + maxX) / 2, (minY + maxY) / 2];\n };\n\n parsePointsForKonva = (points) => {\n const parsedPoints = [];\n points.forEach(({ x, y }) => {\n parsedPoints.push(x);\n parsedPoints.push(y);\n });\n return parsedPoints;\n };\n\n handleClick = (e) => {\n const { onClick, id, selected, disabled } = this.props;\n\n if (!disabled) {\n e.cancelBubble = true;\n onClick({ id, selected: !selected, selector: 'Mouse' });\n }\n };\n\n handleMouseEnter = () => {\n const { disabled } = this.props;\n\n if (!disabled) {\n document.body.style.cursor = 'pointer';\n }\n this.setState({ hovered: true });\n };\n\n handleMouseLeave = () => {\n document.body.style.cursor = 'default';\n this.setState({ hovered: false });\n };\n\n getEvaluateOutlineColor = (isCorrect, markAsCorrect, outlineColor) =>\n markAsCorrect ? 'green' : isCorrect ? outlineColor : 'red';\n\n getOutlineWidth = (showCorrectEnabled, selected, markAsCorrect, strokeWidth) =>\n markAsCorrect || (!markAsCorrect && !showCorrectEnabled && selected) ? strokeWidth : 0;\n\n render() {\n const {\n hotspotColor,\n isCorrect,\n isEvaluateMode,\n hoverOutlineColor,\n outlineColor,\n selected,\n points,\n evaluateText,\n strokeWidth,\n scale,\n markAsCorrect,\n selectedHotspotColor,\n showCorrectEnabled,\n } = this.props;\n\n const { hovered } = this.state;\n\n const outlineColorParsed = isEvaluateMode\n ? this.getEvaluateOutlineColor(isCorrect, markAsCorrect, outlineColor)\n : outlineColor;\n const outlineWidth = this.getOutlineWidth(showCorrectEnabled, selected, markAsCorrect, strokeWidth);\n\n const pointsParsed = this.parsePointsForKonva(points);\n const center = this.getPolygonCenter(points);\n const iconX = center[0];\n const iconY = center[1];\n\n // \"Show Correct Answer\" Enabled:\n // - Correctly Selected: white checkmark in green circle\n // - Correctly Not Selected: none\n // - Incorrectly Selected: none\n // - Incorrectly Not Selected: white checkmark in green circle\n // \"Show Correct Answer\" Disabled:\n // - Correctly Selected:\n // - white checkmark in green circle\n // - heavy outline, as on “Gather”\n // - Correctly Not Selected: none\n // - Incorrectly Selected:\n // - white \"X\" in red circle\n // - heavy outline around the selection should appear in red\n // - Incorrectly Not Selected: white \"X\" in red circle\n let iconSrc;\n\n if (showCorrectEnabled) {\n if ((selected && isCorrect) || (!selected && !isCorrect)) {\n iconSrc = faCorrect;\n }\n } else {\n if (selected) {\n if (isCorrect) {\n iconSrc = faCorrect;\n } else {\n iconSrc = faWrong;\n }\n } else if (!isCorrect) {\n iconSrc = faWrong;\n }\n }\n const useHoveredStyle = hovered && hoverOutlineColor;\n\n const xValues = pointsParsed.filter((_, index) => index % 2 === 0); // Even indices are x-coordinates\n const yValues = pointsParsed.filter((_, index) => index % 2 !== 0); // Odd indices are y-coordinates\n\n const minX = Math.min(...xValues);\n const maxX = Math.max(...xValues);\n const minY = Math.min(...yValues);\n const maxY = Math.max(...yValues);\n\n const rectX = minX;\n const rectY = minY;\n const rectWidth = maxX - minX;\n const rectHeight = maxY - minY;\n\n return (\n <Group scaleX={scale} scaleY={scale}>\n {useHoveredStyle && (\n <Rect\n x={rectX}\n y={rectY}\n width={rectWidth}\n height={rectHeight}\n stroke={selected ? 'transparent' : hoverOutlineColor}\n strokeWidth={strokeWidth}\n />\n )}\n <Line\n points={pointsParsed}\n closed={true}\n fill={selected && selectedHotspotColor? selectedHotspotColor : hotspotColor}\n onClick={this.handleClick}\n onTap={this.handleClick}\n draggable={false}\n stroke={useHoveredStyle && !selected ? 'transparent' : outlineColorParsed}\n strokeWidth={useHoveredStyle && !selected ? 0 : outlineWidth}\n onMouseLeave={this.handleMouseLeave}\n onMouseEnter={this.handleMouseEnter}\n cursor='pointer'\n position='relative'\n />\n {isEvaluateMode && iconSrc ? <ImageComponent src={iconSrc} x={iconX} y={iconY} tooltip={evaluateText} /> : null}\n </Group>\n );\n }\n}\n\nPolygonComponent.propTypes = {\n hotspotColor: PropTypes.string.isRequired,\n id: PropTypes.string.isRequired,\n isCorrect: PropTypes.bool.isRequired,\n isEvaluateMode: PropTypes.bool.isRequired,\n hoverOutlineColor: PropTypes.string,\n disabled: PropTypes.bool.isRequired,\n onClick: PropTypes.func.isRequired,\n outlineColor: PropTypes.string.isRequired,\n points: PropTypes.array.isRequired,\n selected: PropTypes.bool.isRequired,\n evaluateText: PropTypes.string,\n selectedHotspotColor: PropTypes.string,\n strokeWidth: PropTypes.number,\n scale: PropTypes.number,\n markAsCorrect: PropTypes.bool.isRequired,\n showCorrectEnabled: PropTypes.bool.isRequired,\n};\n\nPolygonComponent.defaultProps = {\n evaluateText: null,\n strokeWidth: 5,\n scale: 1,\n};\n\nexport default PolygonComponent;\n"],"mappings":"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","ignoreList":[]}
@@ -135,7 +135,6 @@ class RectComponent extends _react.default.Component {
135
135
  strokeWidth: useHoveredStyle && !selected ? 0 : outlineWidth,
136
136
  onMouseLeave: this.handleMouseLeave,
137
137
  onMouseEnter: this.handleMouseEnter,
138
- opacity: 0.5,
139
138
  cursor: "pointer"
140
139
  }), isEvaluateMode && iconSrc ? /*#__PURE__*/_react.default.createElement(_imageKonvaTooltip.default, {
141
140
  src: iconSrc,
@@ -1 +1 @@
1
- {"version":3,"file":"rectangle.js","names":["_react","_interopRequireDefault","require","_propTypes","_reactKonva","_imageKonvaTooltip","_icons","RectComponent","React","Component","constructor","props","_defineProperty2","default","e","onClick","id","selected","disabled","cancelBubble","selector","document","body","style","cursor","setState","hovered","isCorrect","markAsCorrect","outlineColor","showCorrectEnabled","strokeWidth","state","render","height","hotspotColor","hoverOutlineColor","selectedHotspotColor","isEvaluateMode","width","x","y","evaluateText","scale","outlineColorParsed","getEvaluateOutlineColor","outlineWidth","getOutlineWidth","iconX","iconY","iconSrc","faCorrect","faWrong","useHoveredStyle","createElement","Group","scaleX","scaleY","Rect","stroke","listening","fill","handleClick","onTap","draggable","onMouseLeave","handleMouseLeave","onMouseEnter","handleMouseEnter","opacity","src","tooltip","propTypes","PropTypes","number","isRequired","string","oneOfType","bool","func","defaultProps","_default","exports"],"sources":["../../src/hotspot/rectangle.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Rect, Group } from 'react-konva';\nimport ImageComponent from './image-konva-tooltip';\nimport { faCorrect, faWrong } from './icons';\n\nclass RectComponent extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n hovered: false,\n };\n }\n\n handleClick = (e) => {\n const { onClick, id, selected, disabled } = this.props;\n\n if (!disabled) {\n e.cancelBubble = true;\n onClick({ id, selected: !selected, selector: 'Mouse' });\n }\n };\n\n handleMouseEnter = () => {\n const { disabled } = this.props;\n\n if (!disabled) {\n document.body.style.cursor = 'pointer';\n }\n this.setState({ hovered: true });\n };\n\n handleMouseLeave = () => {\n document.body.style.cursor = 'default';\n this.setState({ hovered: false });\n };\n\n getEvaluateOutlineColor = (isCorrect, markAsCorrect, outlineColor) =>\n markAsCorrect ? 'green' : isCorrect ? outlineColor : 'red';\n\n getOutlineWidth = (showCorrectEnabled, selected, markAsCorrect, strokeWidth) =>\n markAsCorrect || (!markAsCorrect && !showCorrectEnabled && selected) ? strokeWidth : 0;\n\n render() {\n const {\n height,\n hotspotColor,\n hoverOutlineColor,\n selectedHotspotColor,\n isCorrect,\n isEvaluateMode,\n outlineColor,\n selected,\n width,\n x,\n y,\n evaluateText,\n strokeWidth,\n scale,\n markAsCorrect,\n showCorrectEnabled,\n } = this.props;\n\n const outlineColorParsed = isEvaluateMode\n ? this.getEvaluateOutlineColor(isCorrect, markAsCorrect, outlineColor)\n : outlineColor;\n\n const outlineWidth = this.getOutlineWidth(showCorrectEnabled, selected, markAsCorrect, strokeWidth);\n\n const iconX = x + width / 2 - 10;\n const iconY = y + height / 2 - 10;\n\n // \"Show Correct Answer\" Enabled:\n // - Correctly Selected: white checkmark in green circle\n // - Correctly Not Selected: none\n // - Incorrectly Selected: none\n // - Incorrectly Not Selected: white checkmark in green circle\n // \"Show Correct Answer\" Disabled:\n // - Correctly Selected:\n // - white checkmark in green circle\n // - heavy outline, as on “Gather”\n // - Correctly Not Selected: none\n // - Incorrectly Selected:\n // - white \"X\" in red circle\n // - heavy outline around the selection should appear in red\n // - Incorrectly Not Selected: white \"X\" in red circle\n let iconSrc;\n\n if (showCorrectEnabled) {\n if ((selected && isCorrect) || (!selected && !isCorrect)) {\n iconSrc = faCorrect;\n }\n } else {\n if (selected) {\n if (isCorrect) {\n iconSrc = faCorrect;\n } else {\n iconSrc = faWrong;\n }\n } else if (!isCorrect) {\n iconSrc = faWrong;\n }\n }\n\n const { hovered } = this.state;\n const useHoveredStyle = hovered && hoverOutlineColor;\n\n return (\n <Group scaleX={scale} scaleY={scale}>\n {useHoveredStyle && (\n <Rect\n x={x}\n y={y}\n width={width}\n height={height}\n stroke={selected ? 'transparent' : hoverOutlineColor}\n strokeWidth={strokeWidth}\n listening={false}\n />\n )}\n <Rect\n x={x}\n y={y}\n width={width}\n height={height}\n fill={selected && selectedHotspotColor ? selectedHotspotColor : hotspotColor}\n onClick={this.handleClick}\n onTap={this.handleClick}\n draggable={false}\n stroke={useHoveredStyle && !selected ? 'transparent' : outlineColorParsed}\n strokeWidth={useHoveredStyle && !selected ? 0 : outlineWidth}\n onMouseLeave={this.handleMouseLeave}\n onMouseEnter={this.handleMouseEnter}\n opacity={0.5}\n cursor=\"pointer\"\n />\n {isEvaluateMode && iconSrc ? <ImageComponent src={iconSrc} x={iconX} y={iconY} tooltip={evaluateText} /> : null}\n </Group>\n );\n }\n}\n\nRectComponent.propTypes = {\n height: PropTypes.number.isRequired,\n hotspotColor: PropTypes.string.isRequired,\n id: PropTypes.string.isRequired,\n isCorrect: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n isEvaluateMode: PropTypes.bool.isRequired,\n hoverOutlineColor: PropTypes.string,\n disabled: PropTypes.bool.isRequired,\n onClick: PropTypes.func.isRequired,\n outlineColor: PropTypes.string.isRequired,\n selected: PropTypes.bool.isRequired,\n width: PropTypes.number.isRequired,\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired,\n evaluateText: PropTypes.string,\n strokeWidth: PropTypes.number,\n scale: PropTypes.number,\n selectedHotspotColor: PropTypes.string,\n markAsCorrect: PropTypes.bool.isRequired,\n showCorrectEnabled: PropTypes.bool.isRequired,\n};\n\nRectComponent.defaultProps = {\n isCorrect: false,\n evaluateText: null,\n strokeWidth: 5,\n scale: 1,\n};\n\nexport default RectComponent;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"rectangle.js","names":["_react","_interopRequireDefault","require","_propTypes","_reactKonva","_imageKonvaTooltip","_icons","RectComponent","React","Component","constructor","props","_defineProperty2","default","e","onClick","id","selected","disabled","cancelBubble","selector","document","body","style","cursor","setState","hovered","isCorrect","markAsCorrect","outlineColor","showCorrectEnabled","strokeWidth","state","render","height","hotspotColor","hoverOutlineColor","selectedHotspotColor","isEvaluateMode","width","x","y","evaluateText","scale","outlineColorParsed","getEvaluateOutlineColor","outlineWidth","getOutlineWidth","iconX","iconY","iconSrc","faCorrect","faWrong","useHoveredStyle","createElement","Group","scaleX","scaleY","Rect","stroke","listening","fill","handleClick","onTap","draggable","onMouseLeave","handleMouseLeave","onMouseEnter","handleMouseEnter","src","tooltip","propTypes","PropTypes","number","isRequired","string","oneOfType","bool","func","defaultProps","_default","exports"],"sources":["../../src/hotspot/rectangle.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Rect, Group } from 'react-konva';\nimport ImageComponent from './image-konva-tooltip';\nimport { faCorrect, faWrong } from './icons';\n\nclass RectComponent extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n hovered: false,\n };\n }\n\n handleClick = (e) => {\n const { onClick, id, selected, disabled } = this.props;\n\n if (!disabled) {\n e.cancelBubble = true;\n onClick({ id, selected: !selected, selector: 'Mouse' });\n }\n };\n\n handleMouseEnter = () => {\n const { disabled } = this.props;\n\n if (!disabled) {\n document.body.style.cursor = 'pointer';\n }\n this.setState({ hovered: true });\n };\n\n handleMouseLeave = () => {\n document.body.style.cursor = 'default';\n this.setState({ hovered: false });\n };\n\n getEvaluateOutlineColor = (isCorrect, markAsCorrect, outlineColor) =>\n markAsCorrect ? 'green' : isCorrect ? outlineColor : 'red';\n\n getOutlineWidth = (showCorrectEnabled, selected, markAsCorrect, strokeWidth) =>\n markAsCorrect || (!markAsCorrect && !showCorrectEnabled && selected) ? strokeWidth : 0;\n\n render() {\n const {\n height,\n hotspotColor,\n hoverOutlineColor,\n selectedHotspotColor,\n isCorrect,\n isEvaluateMode,\n outlineColor,\n selected,\n width,\n x,\n y,\n evaluateText,\n strokeWidth,\n scale,\n markAsCorrect,\n showCorrectEnabled,\n } = this.props;\n\n const outlineColorParsed = isEvaluateMode\n ? this.getEvaluateOutlineColor(isCorrect, markAsCorrect, outlineColor)\n : outlineColor;\n\n const outlineWidth = this.getOutlineWidth(showCorrectEnabled, selected, markAsCorrect, strokeWidth);\n\n const iconX = x + width / 2 - 10;\n const iconY = y + height / 2 - 10;\n\n // \"Show Correct Answer\" Enabled:\n // - Correctly Selected: white checkmark in green circle\n // - Correctly Not Selected: none\n // - Incorrectly Selected: none\n // - Incorrectly Not Selected: white checkmark in green circle\n // \"Show Correct Answer\" Disabled:\n // - Correctly Selected:\n // - white checkmark in green circle\n // - heavy outline, as on “Gather”\n // - Correctly Not Selected: none\n // - Incorrectly Selected:\n // - white \"X\" in red circle\n // - heavy outline around the selection should appear in red\n // - Incorrectly Not Selected: white \"X\" in red circle\n let iconSrc;\n\n if (showCorrectEnabled) {\n if ((selected && isCorrect) || (!selected && !isCorrect)) {\n iconSrc = faCorrect;\n }\n } else {\n if (selected) {\n if (isCorrect) {\n iconSrc = faCorrect;\n } else {\n iconSrc = faWrong;\n }\n } else if (!isCorrect) {\n iconSrc = faWrong;\n }\n }\n\n const { hovered } = this.state;\n const useHoveredStyle = hovered && hoverOutlineColor;\n\n return (\n <Group scaleX={scale} scaleY={scale}>\n {useHoveredStyle && (\n <Rect\n x={x}\n y={y}\n width={width}\n height={height}\n stroke={selected ? 'transparent' : hoverOutlineColor}\n strokeWidth={strokeWidth}\n listening={false}\n />\n )}\n <Rect\n x={x}\n y={y}\n width={width}\n height={height}\n fill={selected && selectedHotspotColor ? selectedHotspotColor : hotspotColor}\n onClick={this.handleClick}\n onTap={this.handleClick}\n draggable={false}\n stroke={useHoveredStyle && !selected ? 'transparent' : outlineColorParsed}\n strokeWidth={useHoveredStyle && !selected ? 0 : outlineWidth}\n onMouseLeave={this.handleMouseLeave}\n onMouseEnter={this.handleMouseEnter}\n cursor=\"pointer\"\n />\n {isEvaluateMode && iconSrc ? <ImageComponent src={iconSrc} x={iconX} y={iconY} tooltip={evaluateText} /> : null}\n </Group>\n );\n }\n}\n\nRectComponent.propTypes = {\n height: PropTypes.number.isRequired,\n hotspotColor: PropTypes.string.isRequired,\n id: PropTypes.string.isRequired,\n isCorrect: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n isEvaluateMode: PropTypes.bool.isRequired,\n hoverOutlineColor: PropTypes.string,\n disabled: PropTypes.bool.isRequired,\n onClick: PropTypes.func.isRequired,\n outlineColor: PropTypes.string.isRequired,\n selected: PropTypes.bool.isRequired,\n width: PropTypes.number.isRequired,\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired,\n evaluateText: PropTypes.string,\n strokeWidth: PropTypes.number,\n scale: PropTypes.number,\n selectedHotspotColor: PropTypes.string,\n markAsCorrect: PropTypes.bool.isRequired,\n showCorrectEnabled: PropTypes.bool.isRequired,\n};\n\nRectComponent.defaultProps = {\n isCorrect: false,\n evaluateText: null,\n strokeWidth: 5,\n scale: 1,\n};\n\nexport default RectComponent;\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,8 +1,11 @@
1
1
  {
2
2
  "name": "@pie-element/hotspot",
3
- "version": "10.0.0-next.42+bb1f3eb4e",
3
+ "repository": {
4
+ "type": "git",
5
+ "url": "https://github.com/pie-framework/pie-elements"
6
+ },
7
+ "version": "10.1.0-next.0+20d879b",
4
8
  "description": "",
5
- "repository": "pie-framework/pie-elements",
6
9
  "publishConfig": {
7
10
  "access": "public"
8
11
  },
@@ -12,19 +15,19 @@
12
15
  "@mui/icons-material": "^7.3.4",
13
16
  "@mui/material": "^7.3.4",
14
17
  "@pie-framework/pie-player-events": "^0.1.0",
15
- "@pie-lib/correct-answer-toggle": "3.1.1-next.0",
16
- "@pie-lib/math-rendering": "4.1.1-next.0",
17
- "@pie-lib/render-ui": "5.1.1-next.0",
18
- "@pie-lib/test-utils": "1.1.1-next.0",
18
+ "@pie-lib/correct-answer-toggle": "3.1.1-next.1",
19
+ "@pie-lib/math-rendering": "4.1.1-next.1",
20
+ "@pie-lib/render-ui": "5.1.1-next.1",
21
+ "@pie-lib/test-utils": "1.1.1-next.1",
19
22
  "konva": "8.3.0",
20
23
  "prop-types": "^15.8.1",
21
- "react": "18.2.0",
22
- "react-dom": "18.2.0",
24
+ "react": "18.3.1",
25
+ "react-dom": "18.3.1",
23
26
  "react-konva": "^18.2.14"
24
27
  },
25
28
  "author": "pie framework developers",
26
29
  "license": "ISC",
27
- "gitHead": "bb1f3eb4e3b5b1cb15024d459ffd6e94bf419712",
30
+ "gitHead": "20d879b8b8fa74decf5028d860d54cd09cbdf051",
28
31
  "scripts": {
29
32
  "postpublish": "../../scripts/postpublish"
30
33
  },