@pie-element/hotspot 11.1.1-next.1 → 11.1.1-next.11

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 (339) hide show
  1. package/CHANGELOG.json +997 -0
  2. package/CHANGELOG.md +2210 -0
  3. package/LICENSE.md +5 -0
  4. package/README.md +1 -0
  5. package/configure/CHANGELOG.json +682 -0
  6. package/configure/CHANGELOG.md +1947 -0
  7. package/configure/lib/DeleteWidget.js +64 -0
  8. package/configure/lib/DeleteWidget.js.map +1 -0
  9. package/configure/lib/button.js +42 -0
  10. package/configure/lib/button.js.map +1 -0
  11. package/configure/lib/buttons/circle.js +33 -0
  12. package/configure/lib/buttons/circle.js.map +1 -0
  13. package/configure/lib/buttons/polygon.js +39 -0
  14. package/configure/lib/buttons/polygon.js.map +1 -0
  15. package/configure/lib/buttons/rectangle.js +39 -0
  16. package/configure/lib/buttons/rectangle.js.map +1 -0
  17. package/configure/lib/defaults.js +155 -0
  18. package/configure/lib/defaults.js.map +1 -0
  19. package/configure/lib/hotspot-circle.js +192 -0
  20. package/configure/lib/hotspot-circle.js.map +1 -0
  21. package/configure/lib/hotspot-container.js +320 -0
  22. package/configure/lib/hotspot-container.js.map +1 -0
  23. package/configure/lib/hotspot-drawable.js +519 -0
  24. package/configure/lib/hotspot-drawable.js.map +1 -0
  25. package/configure/lib/hotspot-palette.js +107 -0
  26. package/configure/lib/hotspot-palette.js.map +1 -0
  27. package/configure/lib/hotspot-polygon.js +293 -0
  28. package/configure/lib/hotspot-polygon.js.map +1 -0
  29. package/configure/lib/hotspot-rectangle.js +190 -0
  30. package/configure/lib/hotspot-rectangle.js.map +1 -0
  31. package/configure/lib/icons.js +7 -0
  32. package/configure/lib/icons.js.map +1 -0
  33. package/configure/lib/image-konva.js +66 -0
  34. package/configure/lib/image-konva.js.map +1 -0
  35. package/configure/lib/index.js +194 -0
  36. package/configure/lib/index.js.map +1 -0
  37. package/configure/lib/root.js +330 -0
  38. package/configure/lib/root.js.map +1 -0
  39. package/configure/lib/shapes/circle.js +84 -0
  40. package/configure/lib/shapes/circle.js.map +1 -0
  41. package/configure/lib/shapes/index.js +50 -0
  42. package/configure/lib/shapes/index.js.map +1 -0
  43. package/configure/lib/shapes/polygon.js +82 -0
  44. package/configure/lib/shapes/polygon.js.map +1 -0
  45. package/configure/lib/shapes/rectagle.js +84 -0
  46. package/configure/lib/shapes/rectagle.js.map +1 -0
  47. package/configure/lib/shapes/utils.js +21 -0
  48. package/configure/lib/shapes/utils.js.map +1 -0
  49. package/configure/lib/upload-control.js +41 -0
  50. package/configure/lib/upload-control.js.map +1 -0
  51. package/configure/lib/utils.js +185 -0
  52. package/configure/lib/utils.js.map +1 -0
  53. package/configure/package.json +26 -0
  54. package/configure/src/DeleteWidget.jsx +51 -0
  55. package/configure/src/__tests__/DeleteWidget.test.jsx +366 -0
  56. package/configure/src/__tests__/button.test.jsx +198 -0
  57. package/configure/src/__tests__/hotspot-circle.test.jsx +259 -0
  58. package/configure/src/__tests__/hotspot-container.test.js +366 -0
  59. package/configure/src/__tests__/hotspot-drawable.test.js +271 -0
  60. package/configure/src/__tests__/hotspot-palette.test.jsx +71 -0
  61. package/configure/src/__tests__/image-konva.test.jsx +226 -0
  62. package/configure/src/__tests__/index.test.js +329 -0
  63. package/configure/src/__tests__/root.test.js +400 -0
  64. package/configure/src/__tests__/utils.test.js +241 -0
  65. package/configure/src/button.jsx +35 -0
  66. package/configure/src/buttons/circle.jsx +18 -0
  67. package/configure/src/buttons/polygon.jsx +29 -0
  68. package/configure/src/buttons/rectangle.jsx +29 -0
  69. package/configure/src/defaults.js +109 -0
  70. package/configure/src/hotspot-circle.jsx +183 -0
  71. package/configure/src/hotspot-container.jsx +330 -0
  72. package/configure/src/hotspot-drawable.jsx +527 -0
  73. package/configure/src/hotspot-palette.jsx +90 -0
  74. package/configure/src/hotspot-polygon.jsx +294 -0
  75. package/configure/src/hotspot-rectangle.jsx +169 -0
  76. package/configure/src/icons.js +5 -0
  77. package/configure/src/image-konva.jsx +63 -0
  78. package/configure/src/index.js +208 -0
  79. package/configure/src/root.jsx +346 -0
  80. package/configure/src/shapes/circle.js +81 -0
  81. package/configure/src/shapes/index.js +4 -0
  82. package/configure/src/shapes/polygon.js +81 -0
  83. package/configure/src/shapes/rectagle.js +82 -0
  84. package/configure/src/shapes/utils.js +16 -0
  85. package/configure/src/upload-control.jsx +33 -0
  86. package/configure/src/utils.js +210 -0
  87. package/controller/CHANGELOG.json +362 -0
  88. package/controller/CHANGELOG.md +1300 -0
  89. package/controller/lib/defaults.js +33 -0
  90. package/controller/lib/defaults.js.map +1 -0
  91. package/controller/lib/index.js +341 -0
  92. package/controller/lib/index.js.map +1 -0
  93. package/controller/lib/utils.js +32 -0
  94. package/controller/lib/utils.js.map +1 -0
  95. package/controller/package.json +18 -0
  96. package/controller/src/__tests__/index.test.js +419 -0
  97. package/controller/src/__tests__/utils.test.js +5 -0
  98. package/controller/src/defaults.js +19 -0
  99. package/controller/src/index.js +328 -0
  100. package/controller/src/utils.js +29 -0
  101. package/docs/config-schema.json +2023 -0
  102. package/docs/config-schema.json.md +1495 -0
  103. package/docs/demo/config.js +8 -0
  104. package/docs/demo/generate.js +118 -0
  105. package/docs/demo/index.html +1 -0
  106. package/docs/demo/session.js +11 -0
  107. package/docs/pie-schema.json +1204 -0
  108. package/docs/pie-schema.json.md +851 -0
  109. package/lib/hotspot/circle.js +156 -0
  110. package/lib/hotspot/circle.js.map +1 -0
  111. package/lib/hotspot/container.js +206 -0
  112. package/lib/hotspot/container.js.map +1 -0
  113. package/lib/hotspot/icons.js +8 -0
  114. package/lib/hotspot/icons.js.map +1 -0
  115. package/lib/hotspot/image-konva-tooltip.js +86 -0
  116. package/lib/hotspot/image-konva-tooltip.js.map +1 -0
  117. package/lib/hotspot/index.js +163 -0
  118. package/lib/hotspot/index.js.map +1 -0
  119. package/lib/hotspot/polygon.js +203 -0
  120. package/lib/hotspot/polygon.js.map +1 -0
  121. package/lib/hotspot/rectangle.js +175 -0
  122. package/lib/hotspot/rectangle.js.map +1 -0
  123. package/lib/index.js +213 -0
  124. package/lib/index.js.map +1 -0
  125. package/lib/session-updater.js +42 -0
  126. package/lib/session-updater.js.map +1 -0
  127. package/package.json +19 -57
  128. package/src/__tests__/container.test.jsx +58 -0
  129. package/src/__tests__/index.test.js +123 -0
  130. package/src/__tests__/session-updater.test.jsx +69 -0
  131. package/src/hotspot/__tests__/circle.test.jsx +464 -0
  132. package/src/hotspot/__tests__/container.test.jsx +546 -0
  133. package/src/hotspot/__tests__/image-konva-tooltip.test.jsx +510 -0
  134. package/src/hotspot/__tests__/polygon.test.jsx +502 -0
  135. package/src/hotspot/__tests__/rectangle.test.jsx +418 -0
  136. package/src/hotspot/circle.jsx +152 -0
  137. package/src/hotspot/container.jsx +217 -0
  138. package/src/hotspot/icons.js +7 -0
  139. package/src/hotspot/image-konva-tooltip.jsx +76 -0
  140. package/src/hotspot/index.jsx +165 -0
  141. package/src/hotspot/polygon.jsx +195 -0
  142. package/src/hotspot/rectangle.jsx +171 -0
  143. package/src/index.js +226 -0
  144. package/src/session-updater.js +29 -0
  145. package/dist/author/DeleteWidget.d.ts +0 -38
  146. package/dist/author/DeleteWidget.js +0 -46
  147. package/dist/author/button.d.ts +0 -31
  148. package/dist/author/button.js +0 -27
  149. package/dist/author/buttons/circle.d.ts +0 -18
  150. package/dist/author/buttons/circle.js +0 -25
  151. package/dist/author/buttons/polygon.d.ts +0 -18
  152. package/dist/author/buttons/polygon.js +0 -36
  153. package/dist/author/buttons/rectangle.d.ts +0 -18
  154. package/dist/author/buttons/rectangle.js +0 -36
  155. package/dist/author/defaults.d.ts +0 -157
  156. package/dist/author/defaults.js +0 -119
  157. package/dist/author/hotspot-circle.d.ts +0 -21
  158. package/dist/author/hotspot-circle.js +0 -124
  159. package/dist/author/hotspot-container.d.ts +0 -29
  160. package/dist/author/hotspot-container.js +0 -210
  161. package/dist/author/hotspot-drawable.d.ts +0 -31
  162. package/dist/author/hotspot-drawable.js +0 -312
  163. package/dist/author/hotspot-palette.d.ts +0 -14
  164. package/dist/author/hotspot-palette.js +0 -72
  165. package/dist/author/hotspot-polygon.d.ts +0 -38
  166. package/dist/author/hotspot-polygon.js +0 -200
  167. package/dist/author/hotspot-rectangle.d.ts +0 -20
  168. package/dist/author/hotspot-rectangle.js +0 -119
  169. package/dist/author/icons.d.ts +0 -9
  170. package/dist/author/icons.js +0 -4
  171. package/dist/author/image-konva.d.ts +0 -19
  172. package/dist/author/image-konva.js +0 -49
  173. package/dist/author/index.d.ts +0 -52
  174. package/dist/author/index.js +0 -143
  175. package/dist/author/root.d.ts +0 -15
  176. package/dist/author/root.js +0 -215
  177. package/dist/author/shapes/circle.d.ts +0 -18
  178. package/dist/author/shapes/circle.js +0 -47
  179. package/dist/author/shapes/index.d.ts +0 -12
  180. package/dist/author/shapes/polygon.d.ts +0 -19
  181. package/dist/author/shapes/polygon.js +0 -51
  182. package/dist/author/shapes/rectagle.d.ts +0 -18
  183. package/dist/author/shapes/rectagle.js +0 -57
  184. package/dist/author/shapes/utils.d.ts +0 -19
  185. package/dist/author/shapes/utils.js +0 -16
  186. package/dist/author/upload-control.d.ts +0 -29
  187. package/dist/author/upload-control.js +0 -28
  188. package/dist/author/utils.d.ts +0 -24
  189. package/dist/author/utils.js +0 -83
  190. package/dist/controller/defaults.d.ts +0 -35
  191. package/dist/controller/defaults.js +0 -29
  192. package/dist/controller/index.d.ts +0 -22
  193. package/dist/controller/index.js +0 -154
  194. package/dist/controller/utils.d.ts +0 -10
  195. package/dist/controller/utils.js +0 -13
  196. package/dist/delivery/hotspot/circle.d.ts +0 -19
  197. package/dist/delivery/hotspot/circle.js +0 -100
  198. package/dist/delivery/hotspot/container.d.ts +0 -16
  199. package/dist/delivery/hotspot/container.js +0 -150
  200. package/dist/delivery/hotspot/icons.d.ts +0 -10
  201. package/dist/delivery/hotspot/icons.js +0 -4
  202. package/dist/delivery/hotspot/image-konva-tooltip.d.ts +0 -19
  203. package/dist/delivery/hotspot/image-konva-tooltip.js +0 -66
  204. package/dist/delivery/hotspot/index.d.ts +0 -17
  205. package/dist/delivery/hotspot/index.js +0 -114
  206. package/dist/delivery/hotspot/polygon.d.ts +0 -21
  207. package/dist/delivery/hotspot/polygon.js +0 -108
  208. package/dist/delivery/hotspot/rectangle.d.ts +0 -19
  209. package/dist/delivery/hotspot/rectangle.js +0 -104
  210. package/dist/delivery/index.d.ts +0 -20
  211. package/dist/delivery/index.js +0 -107
  212. package/dist/delivery/session-updater.d.ts +0 -10
  213. package/dist/delivery/session-updater.js +0 -14
  214. package/dist/index.d.ts +0 -1
  215. package/dist/index.iife.d.ts +0 -8
  216. package/dist/index.iife.js +0 -169
  217. package/dist/index.js +0 -2
  218. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_DataView.js +0 -6
  219. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_Hash.js +0 -16
  220. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_ListCache.js +0 -16
  221. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_Map.js +0 -6
  222. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_MapCache.js +0 -16
  223. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_Promise.js +0 -6
  224. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_Set.js +0 -6
  225. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_SetCache.js +0 -11
  226. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_Stack.js +0 -14
  227. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_Symbol.js +0 -5
  228. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_Uint8Array.js +0 -5
  229. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_WeakMap.js +0 -6
  230. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_arrayEach.js +0 -7
  231. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_arrayFilter.js +0 -10
  232. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_arrayLikeKeys.js +0 -15
  233. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_arrayPush.js +0 -7
  234. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_arraySome.js +0 -7
  235. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_assignValue.js +0 -10
  236. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_assocIndexOf.js +0 -8
  237. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseAssign.js +0 -8
  238. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseAssignIn.js +0 -8
  239. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseAssignValue.js +0 -12
  240. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseClone.js +0 -57
  241. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseCreate.js +0 -14
  242. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseGetAllKeys.js +0 -9
  243. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseGetTag.js +0 -10
  244. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseIsArguments.js +0 -9
  245. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseIsEqual.js +0 -8
  246. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseIsEqualDeep.js +0 -30
  247. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseIsMap.js +0 -9
  248. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseIsNative.js +0 -11
  249. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseIsSet.js +0 -9
  250. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseIsTypedArray.js +0 -11
  251. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseKeys.js +0 -12
  252. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseKeysIn.js +0 -13
  253. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseTimes.js +0 -7
  254. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseUnary.js +0 -8
  255. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_cacheHas.js +0 -6
  256. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_cloneArrayBuffer.js +0 -8
  257. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_cloneBuffer.js +0 -10
  258. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_cloneDataView.js +0 -8
  259. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_cloneRegExp.js +0 -8
  260. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_cloneSymbol.js +0 -8
  261. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_cloneTypedArray.js +0 -8
  262. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_copyArray.js +0 -8
  263. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_copyObject.js +0 -14
  264. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_copySymbols.js +0 -8
  265. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_copySymbolsIn.js +0 -8
  266. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_coreJsData.js +0 -5
  267. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_defineProperty.js +0 -10
  268. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_equalArrays.js +0 -35
  269. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_equalByTag.js +0 -35
  270. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_equalObjects.js +0 -32
  271. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_freeGlobal.js +0 -4
  272. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_getAllKeys.js +0 -9
  273. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_getAllKeysIn.js +0 -9
  274. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_getMapData.js +0 -8
  275. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_getNative.js +0 -9
  276. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_getPrototype.js +0 -5
  277. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_getRawTag.js +0 -14
  278. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_getSymbols.js +0 -10
  279. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_getSymbolsIn.js +0 -11
  280. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_getTag.js +0 -23
  281. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_getValue.js +0 -6
  282. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_hashClear.js +0 -7
  283. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_hashDelete.js +0 -7
  284. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_hashGet.js +0 -13
  285. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_hashHas.js +0 -9
  286. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_hashSet.js +0 -9
  287. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_initCloneArray.js +0 -8
  288. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_initCloneByTag.js +0 -33
  289. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_initCloneObject.js +0 -9
  290. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_isIndex.js +0 -8
  291. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_isKeyable.js +0 -7
  292. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_isMasked.js +0 -11
  293. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_isPrototype.js +0 -8
  294. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_listCacheClear.js +0 -6
  295. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_listCacheDelete.js +0 -9
  296. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_listCacheGet.js +0 -8
  297. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_listCacheHas.js +0 -7
  298. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_listCacheSet.js +0 -8
  299. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_mapCacheClear.js +0 -13
  300. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_mapCacheDelete.js +0 -8
  301. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_mapCacheGet.js +0 -7
  302. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_mapCacheHas.js +0 -7
  303. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_mapCacheSet.js +0 -8
  304. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_mapToArray.js +0 -9
  305. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_nativeCreate.js +0 -5
  306. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_nativeKeys.js +0 -5
  307. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_nativeKeysIn.js +0 -8
  308. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_nodeUtil.js +0 -9
  309. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_objectToString.js +0 -7
  310. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_overArg.js +0 -8
  311. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_root.js +0 -5
  312. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_setCacheAdd.js +0 -7
  313. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_setCacheHas.js +0 -6
  314. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_setToArray.js +0 -9
  315. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_stackClear.js +0 -7
  316. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_stackDelete.js +0 -7
  317. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_stackGet.js +0 -6
  318. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_stackHas.js +0 -6
  319. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_stackSet.js +0 -16
  320. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_toSource.js +0 -15
  321. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/cloneDeep.js +0 -8
  322. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/eq.js +0 -6
  323. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isArguments.js +0 -10
  324. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isArray.js +0 -4
  325. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isArrayLike.js +0 -8
  326. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isBuffer.js +0 -6
  327. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isEmpty.js +0 -21
  328. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isEqual.js +0 -7
  329. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isFunction.js +0 -11
  330. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isLength.js +0 -7
  331. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isMap.js +0 -7
  332. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isObject.js +0 -7
  333. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isObjectLike.js +0 -6
  334. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isSet.js +0 -7
  335. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isTypedArray.js +0 -7
  336. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/keys.js +0 -9
  337. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/keysIn.js +0 -9
  338. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/stubArray.js +0 -6
  339. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/stubFalse.js +0 -6
@@ -0,0 +1,418 @@
1
+ import React from 'react';
2
+ import { render, fireEvent } from '@testing-library/react';
3
+ import Konva from 'konva';
4
+ import RectComponent from '../rectangle';
5
+
6
+ Konva.isBrowser = false;
7
+
8
+ jest.mock('react-konva', () => {
9
+ const React = require('react');
10
+ return {
11
+ Rect: ({ onClick, onTap, onMouseEnter, onMouseLeave, ...props }) => {
12
+ const handleClick = (e) => {
13
+ if (onClick) onClick(e);
14
+ if (onTap) onTap(e);
15
+ };
16
+ return React.createElement('div', {
17
+ 'data-testid': 'rect',
18
+ onClick: handleClick,
19
+ onMouseEnter,
20
+ onMouseLeave,
21
+ ...props,
22
+ });
23
+ },
24
+ Group: ({ children, ...props }) => React.createElement('div', { 'data-testid': 'group', ...props }, children),
25
+ };
26
+ });
27
+
28
+ jest.mock('../image-konva-tooltip', () => {
29
+ return function ImageComponent({ src, x, y, tooltip }) {
30
+ return <div data-testid="icon-image" data-src={src} data-x={x} data-y={y} data-tooltip={tooltip} />;
31
+ };
32
+ });
33
+
34
+ describe('RectComponent', () => {
35
+ let defaultProps;
36
+
37
+ beforeEach(() => {
38
+ defaultProps = {
39
+ id: 'rect1',
40
+ x: 10,
41
+ y: 20,
42
+ width: 100,
43
+ height: 80,
44
+ hotspotColor: '#FF0000',
45
+ selectedHotspotColor: '#00FF00',
46
+ outlineColor: '#0000FF',
47
+ hoverOutlineColor: '#FFFF00',
48
+ selected: false,
49
+ isCorrect: false,
50
+ isEvaluateMode: false,
51
+ disabled: false,
52
+ onClick: jest.fn(),
53
+ strokeWidth: 5,
54
+ scale: 1,
55
+ markAsCorrect: false,
56
+ showCorrectEnabled: false,
57
+ };
58
+ });
59
+
60
+ afterEach(() => {
61
+ document.body.style.cursor = 'default';
62
+ });
63
+
64
+ describe('rendering', () => {
65
+ it('should render without crashing', () => {
66
+ const { container } = render(<RectComponent {...defaultProps} />);
67
+ expect(container).toBeTruthy();
68
+ });
69
+
70
+ it('should render with correct dimensions', () => {
71
+ const { container } = render(<RectComponent {...defaultProps} />);
72
+ const rects = container.querySelectorAll('[data-testid="rect"]');
73
+ const mainRect = rects[rects.length - 1];
74
+
75
+ expect(mainRect).toHaveAttribute('x', '10');
76
+ expect(mainRect).toHaveAttribute('y', '20');
77
+ expect(mainRect).toHaveAttribute('width', '100');
78
+ expect(mainRect).toHaveAttribute('height', '80');
79
+ });
80
+
81
+ it('should render with hotspot color when not selected', () => {
82
+ const { container } = render(<RectComponent {...defaultProps} />);
83
+ const rects = container.querySelectorAll('[data-testid="rect"]');
84
+ const mainRect = rects[rects.length - 1];
85
+
86
+ expect(mainRect).toHaveAttribute('fill', '#FF0000');
87
+ });
88
+
89
+ it('should render with selected color when selected', () => {
90
+ const { container } = render(<RectComponent {...defaultProps} selected={true} />);
91
+ const rects = container.querySelectorAll('[data-testid="rect"]');
92
+ const mainRect = rects[rects.length - 1];
93
+
94
+ expect(mainRect).toHaveAttribute('fill', '#00FF00');
95
+ });
96
+
97
+ it('should apply scale transform', () => {
98
+ const { getByTestId } = render(<RectComponent {...defaultProps} scale={1.5} />);
99
+ const group = getByTestId('group');
100
+
101
+ expect(group).toHaveAttribute('scaleX', '1.5');
102
+ expect(group).toHaveAttribute('scaleY', '1.5');
103
+ });
104
+
105
+ it('should render with default scale of 1', () => {
106
+ const { getByTestId } = render(<RectComponent {...defaultProps} />);
107
+ const group = getByTestId('group');
108
+
109
+ expect(group).toHaveAttribute('scaleX', '1');
110
+ expect(group).toHaveAttribute('scaleY', '1');
111
+ });
112
+ });
113
+
114
+ describe('interactions', () => {
115
+ it('should call onClick when clicked', () => {
116
+ const onClick = jest.fn();
117
+ const { container } = render(<RectComponent {...defaultProps} onClick={onClick} />);
118
+ const rects = container.querySelectorAll('[data-testid="rect"]');
119
+ const mainRect = rects[rects.length - 1];
120
+
121
+ fireEvent.click(mainRect);
122
+
123
+ expect(onClick).toHaveBeenCalledWith({
124
+ id: 'rect1',
125
+ selected: true,
126
+ selector: 'Mouse',
127
+ });
128
+ });
129
+
130
+ it('should toggle selection state on click', () => {
131
+ const onClick = jest.fn();
132
+ const { container, rerender } = render(<RectComponent {...defaultProps} onClick={onClick} selected={false} />);
133
+ const rects = container.querySelectorAll('[data-testid="rect"]');
134
+ const mainRect = rects[rects.length - 1];
135
+
136
+ fireEvent.click(mainRect);
137
+
138
+ expect(onClick).toHaveBeenCalledWith({
139
+ id: 'rect1',
140
+ selected: true,
141
+ selector: 'Mouse',
142
+ });
143
+
144
+ rerender(<RectComponent {...defaultProps} onClick={onClick} selected={true} />);
145
+
146
+ const rectsAfter = container.querySelectorAll('[data-testid="rect"]');
147
+ const mainRectAfter = rectsAfter[rectsAfter.length - 1];
148
+ fireEvent.click(mainRectAfter);
149
+
150
+ expect(onClick).toHaveBeenCalledWith({
151
+ id: 'rect1',
152
+ selected: false,
153
+ selector: 'Mouse',
154
+ });
155
+ });
156
+
157
+ it('should not call onClick when disabled', () => {
158
+ const onClick = jest.fn();
159
+ const { container } = render(<RectComponent {...defaultProps} onClick={onClick} disabled={true} />);
160
+ const rects = container.querySelectorAll('[data-testid="rect"]');
161
+ const mainRect = rects[rects.length - 1];
162
+
163
+ fireEvent.click(mainRect);
164
+
165
+ expect(onClick).not.toHaveBeenCalled();
166
+ });
167
+
168
+ it('should change cursor to pointer on mouse enter when not disabled', () => {
169
+ const { container } = render(<RectComponent {...defaultProps} />);
170
+ const rects = container.querySelectorAll('[data-testid="rect"]');
171
+ const mainRect = rects[rects.length - 1];
172
+
173
+ fireEvent.mouseEnter(mainRect);
174
+
175
+ expect(document.body.style.cursor).toBe('pointer');
176
+ });
177
+
178
+ it('should not change cursor when disabled', () => {
179
+ const { container } = render(<RectComponent {...defaultProps} disabled={true} />);
180
+ const rects = container.querySelectorAll('[data-testid="rect"]');
181
+ const mainRect = rects[rects.length - 1];
182
+
183
+ fireEvent.mouseEnter(mainRect);
184
+
185
+ expect(document.body.style.cursor).toBe('default');
186
+ });
187
+
188
+ it('should reset cursor to default on mouse leave', () => {
189
+ const { container } = render(<RectComponent {...defaultProps} />);
190
+ const rects = container.querySelectorAll('[data-testid="rect"]');
191
+ const mainRect = rects[rects.length - 1];
192
+
193
+ fireEvent.mouseEnter(mainRect);
194
+ fireEvent.mouseLeave(mainRect);
195
+
196
+ expect(document.body.style.cursor).toBe('default');
197
+ });
198
+ });
199
+
200
+ describe('hover styling', () => {
201
+ it('should show hover outline when hoverOutlineColor is provided', () => {
202
+ const { container } = render(<RectComponent {...defaultProps} hoverOutlineColor="#FFFF00" />);
203
+ const rects = container.querySelectorAll('[data-testid="rect"]');
204
+ const mainRect = rects[rects.length - 1];
205
+
206
+ fireEvent.mouseEnter(mainRect);
207
+
208
+ const rectsAfterHover = container.querySelectorAll('[data-testid="rect"]');
209
+ expect(rectsAfterHover.length).toBeGreaterThan(1);
210
+ });
211
+
212
+ it('should not show hover outline when selected', () => {
213
+ const { container } = render(
214
+ <RectComponent {...defaultProps} selected={true} hoverOutlineColor="#FFFF00" />
215
+ );
216
+ const rects = container.querySelectorAll('[data-testid="rect"]');
217
+ const mainRect = rects[rects.length - 1];
218
+
219
+ fireEvent.mouseEnter(mainRect);
220
+
221
+ const hoverRect = container.querySelector('[stroke="#FFFF00"]');
222
+ if (hoverRect) {
223
+ expect(hoverRect).toHaveAttribute('stroke', 'transparent');
224
+ }
225
+ });
226
+ });
227
+
228
+ describe('evaluate mode', () => {
229
+ it('should show correct icon when correctly selected in evaluate mode', () => {
230
+ const { getByTestId } = render(
231
+ <RectComponent
232
+ {...defaultProps}
233
+ isEvaluateMode={true}
234
+ selected={true}
235
+ isCorrect={true}
236
+ showCorrectEnabled={false}
237
+ />
238
+ );
239
+
240
+ const icon = getByTestId('icon-image');
241
+ expect(icon).toBeInTheDocument();
242
+ expect(icon).toHaveAttribute('data-src');
243
+ });
244
+
245
+ it('should show wrong icon when incorrectly selected in evaluate mode', () => {
246
+ const { getByTestId } = render(
247
+ <RectComponent
248
+ {...defaultProps}
249
+ isEvaluateMode={true}
250
+ selected={true}
251
+ isCorrect={false}
252
+ showCorrectEnabled={false}
253
+ />
254
+ );
255
+
256
+ const icon = getByTestId('icon-image');
257
+ expect(icon).toBeInTheDocument();
258
+ });
259
+
260
+ it('should show wrong icon when incorrectly not selected', () => {
261
+ const { getByTestId } = render(
262
+ <RectComponent
263
+ {...defaultProps}
264
+ isEvaluateMode={true}
265
+ selected={false}
266
+ isCorrect={false}
267
+ showCorrectEnabled={false}
268
+ />
269
+ );
270
+
271
+ const icon = getByTestId('icon-image');
272
+ expect(icon).toBeInTheDocument();
273
+ });
274
+
275
+ it('should not show icon when correctly not selected in evaluate mode', () => {
276
+ const { queryByTestId } = render(
277
+ <RectComponent
278
+ {...defaultProps}
279
+ isEvaluateMode={true}
280
+ selected={false}
281
+ isCorrect={true}
282
+ showCorrectEnabled={false}
283
+ />
284
+ );
285
+
286
+ const icon = queryByTestId('icon-image');
287
+ expect(icon).not.toBeInTheDocument();
288
+ });
289
+
290
+ it('should show correct icon for showCorrect mode when correctly selected', () => {
291
+ const { getByTestId } = render(
292
+ <RectComponent
293
+ {...defaultProps}
294
+ isEvaluateMode={true}
295
+ selected={true}
296
+ isCorrect={true}
297
+ showCorrectEnabled={true}
298
+ />
299
+ );
300
+
301
+ const icon = getByTestId('icon-image');
302
+ expect(icon).toBeInTheDocument();
303
+ });
304
+
305
+ it('should show correct icon for showCorrect mode when incorrectly not selected', () => {
306
+ const { getByTestId } = render(
307
+ <RectComponent
308
+ {...defaultProps}
309
+ isEvaluateMode={true}
310
+ selected={false}
311
+ isCorrect={false}
312
+ showCorrectEnabled={true}
313
+ />
314
+ );
315
+
316
+ const icon = getByTestId('icon-image');
317
+ expect(icon).toBeInTheDocument();
318
+ });
319
+
320
+ it('should not show icon in showCorrect mode when correctly not selected', () => {
321
+ const { queryByTestId } = render(
322
+ <RectComponent
323
+ {...defaultProps}
324
+ isEvaluateMode={true}
325
+ selected={false}
326
+ isCorrect={true}
327
+ showCorrectEnabled={true}
328
+ />
329
+ );
330
+
331
+ const icon = queryByTestId('icon-image');
332
+ expect(icon).not.toBeInTheDocument();
333
+ });
334
+
335
+ it('should not show icon in showCorrect mode when incorrectly selected', () => {
336
+ const { queryByTestId } = render(
337
+ <RectComponent
338
+ {...defaultProps}
339
+ isEvaluateMode={true}
340
+ selected={true}
341
+ isCorrect={false}
342
+ showCorrectEnabled={true}
343
+ />
344
+ );
345
+
346
+ const icon = queryByTestId('icon-image');
347
+ expect(icon).not.toBeInTheDocument();
348
+ });
349
+
350
+ it('should show green outline when markAsCorrect is true', () => {
351
+ const { container } = render(
352
+ <RectComponent
353
+ {...defaultProps}
354
+ isEvaluateMode={true}
355
+ markAsCorrect={true}
356
+ />
357
+ );
358
+
359
+ const rects = container.querySelectorAll('[data-testid="rect"]');
360
+ const mainRect = rects[rects.length - 1];
361
+ expect(mainRect).toHaveAttribute('stroke', 'green');
362
+ });
363
+
364
+ it('should show red outline when incorrect and not markAsCorrect', () => {
365
+ const { container } = render(
366
+ <RectComponent
367
+ {...defaultProps}
368
+ isEvaluateMode={true}
369
+ isCorrect={false}
370
+ markAsCorrect={false}
371
+ />
372
+ );
373
+
374
+ const rects = container.querySelectorAll('[data-testid="rect"]');
375
+ const mainRect = rects[rects.length - 1];
376
+ expect(mainRect).toHaveAttribute('stroke', 'red');
377
+ });
378
+
379
+ it('should display evaluate text in tooltip', () => {
380
+ const { getByTestId } = render(
381
+ <RectComponent
382
+ {...defaultProps}
383
+ isEvaluateMode={true}
384
+ selected={true}
385
+ isCorrect={true}
386
+ evaluateText="Correct answer!"
387
+ showCorrectEnabled={false}
388
+ />
389
+ );
390
+
391
+ const icon = getByTestId('icon-image');
392
+ expect(icon).toHaveAttribute('data-tooltip', 'Correct answer!');
393
+ });
394
+ });
395
+
396
+ describe('icon positioning', () => {
397
+ it('should position icon at center of rectangle', () => {
398
+ const { getByTestId } = render(
399
+ <RectComponent
400
+ {...defaultProps}
401
+ x={10}
402
+ y={20}
403
+ width={100}
404
+ height={80}
405
+ isEvaluateMode={true}
406
+ selected={true}
407
+ isCorrect={true}
408
+ showCorrectEnabled={false}
409
+ />
410
+ );
411
+
412
+ const icon = getByTestId('icon-image');
413
+ // Icon should be centered: x + width/2 - 10, y + height/2 - 10
414
+ expect(icon).toHaveAttribute('data-x', '50'); // 10 + 100/2 - 10
415
+ expect(icon).toHaveAttribute('data-y', '50'); // 20 + 80/2 - 10
416
+ });
417
+ });
418
+ });
@@ -0,0 +1,152 @@
1
+ import React from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import { Circle, Group, Rect } from 'react-konva';
4
+ import ImageComponent from './image-konva-tooltip';
5
+ import { faCorrect, faWrong } from './icons';
6
+
7
+ class CircleComponent extends React.Component {
8
+ constructor(props) {
9
+ super(props);
10
+ this.state = {
11
+ hovered: false,
12
+ };
13
+ }
14
+
15
+ handleClick = (e) => {
16
+ const { onClick, id, selected, disabled } = this.props;
17
+
18
+ if (!disabled) {
19
+ e.cancelBubble = true;
20
+ onClick({ id, selected: !selected, selector: 'Mouse' });
21
+ }
22
+ };
23
+
24
+ handleMouseEnter = () => {
25
+ const { disabled } = this.props;
26
+
27
+ if (!disabled) {
28
+ document.body.style.cursor = 'pointer';
29
+ }
30
+ this.setState({ hovered: true });
31
+ };
32
+
33
+ handleMouseLeave = () => {
34
+ document.body.style.cursor = 'default';
35
+ this.setState({ hovered: false });
36
+ };
37
+
38
+ getEvaluateOutlineColor = (isCorrect, markAsCorrect, outlineColor) =>
39
+ markAsCorrect ? 'green' : isCorrect ? outlineColor : 'red';
40
+
41
+ getOutlineWidth = (showCorrectEnabled, selected, markAsCorrect, strokeWidth) =>
42
+ markAsCorrect || (!markAsCorrect && !showCorrectEnabled && selected) ? strokeWidth : 0;
43
+
44
+ render() {
45
+ const {
46
+ radius,
47
+ hotspotColor,
48
+ isCorrect,
49
+ isEvaluateMode,
50
+ hoverOutlineColor,
51
+ outlineColor,
52
+ selected,
53
+ x,
54
+ y,
55
+ evaluateText,
56
+ strokeWidth,
57
+ scale,
58
+ markAsCorrect,
59
+ selectedHotspotColor,
60
+ showCorrectEnabled,
61
+ } = this.props;
62
+
63
+ const { hovered } = this.state;
64
+
65
+ const outlineColorParsed = isEvaluateMode
66
+ ? this.getEvaluateOutlineColor(isCorrect, markAsCorrect, outlineColor)
67
+ : outlineColor;
68
+
69
+ const outlineWidth = this.getOutlineWidth(showCorrectEnabled, selected, markAsCorrect, strokeWidth);
70
+
71
+ const iconX = x - 10;
72
+ const iconY = y - 10; // Adjust position for the icon
73
+
74
+ let iconSrc;
75
+ if (showCorrectEnabled) {
76
+ if ((selected && isCorrect) || (!selected && !isCorrect)) {
77
+ iconSrc = faCorrect;
78
+ }
79
+ } else {
80
+ if (selected) {
81
+ if (isCorrect) {
82
+ iconSrc = faCorrect;
83
+ } else {
84
+ iconSrc = faWrong;
85
+ }
86
+ } else if (!isCorrect) {
87
+ iconSrc = faWrong;
88
+ }
89
+ }
90
+
91
+ const useHoveredStyle = hovered && hoverOutlineColor;
92
+
93
+ return (
94
+ <Group scaleX={scale} scaleY={scale}>
95
+ {useHoveredStyle && (
96
+ <Rect
97
+ x={x - radius}
98
+ y={y - radius}
99
+ width={radius * 2}
100
+ height={radius * 2}
101
+ stroke={selected ? 'transparent' : hoverOutlineColor}
102
+ strokeWidth={strokeWidth}
103
+ />
104
+ )}
105
+ <Circle
106
+ radius={radius}
107
+ fill={selected && selectedHotspotColor ? selectedHotspotColor : hotspotColor}
108
+ onClick={this.handleClick}
109
+ onTap={this.handleClick}
110
+ draggable={false}
111
+ stroke={useHoveredStyle && !selected ? 'transparent' : outlineColorParsed}
112
+ strokeWidth={useHoveredStyle && !selected ? 0 : outlineWidth}
113
+ onMouseLeave={this.handleMouseLeave}
114
+ onMouseEnter={this.handleMouseEnter}
115
+ x={x}
116
+ y={y}
117
+ />
118
+ {isEvaluateMode && iconSrc ? <ImageComponent src={iconSrc} x={iconX} y={iconY} tooltip={evaluateText} /> : null}
119
+ </Group>
120
+ );
121
+ }
122
+ }
123
+
124
+ CircleComponent.propTypes = {
125
+ radius: PropTypes.number.isRequired,
126
+ hotspotColor: PropTypes.string.isRequired,
127
+ id: PropTypes.string.isRequired,
128
+ isCorrect: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),
129
+ isEvaluateMode: PropTypes.bool.isRequired,
130
+ disabled: PropTypes.bool.isRequired,
131
+ hoverOutlineColor: PropTypes.string,
132
+ onClick: PropTypes.func.isRequired,
133
+ outlineColor: PropTypes.string.isRequired,
134
+ selected: PropTypes.bool.isRequired,
135
+ x: PropTypes.number.isRequired,
136
+ y: PropTypes.number.isRequired,
137
+ evaluateText: PropTypes.string,
138
+ strokeWidth: PropTypes.number,
139
+ scale: PropTypes.number,
140
+ selectedHotspotColor: PropTypes.string,
141
+ markAsCorrect: PropTypes.bool.isRequired,
142
+ showCorrectEnabled: PropTypes.bool.isRequired,
143
+ };
144
+
145
+ CircleComponent.defaultProps = {
146
+ isCorrect: false,
147
+ evaluateText: null,
148
+ strokeWidth: 5,
149
+ scale: 1,
150
+ };
151
+
152
+ export default CircleComponent;