@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,510 @@
1
+ import React from 'react';
2
+ import { render, waitFor, fireEvent } from '@testing-library/react';
3
+ import Konva from 'konva';
4
+ import ImageComponent from '../image-konva-tooltip';
5
+
6
+ Konva.isBrowser = false;
7
+
8
+ jest.mock('react-konva', () => {
9
+ const React = require('react');
10
+ return {
11
+ Group: ({ children, ...props }) => React.createElement('div', { 'data-testid': 'group', ...props }, children),
12
+ Image: ({ onMouseEnter, onMouseLeave, ...props }) =>
13
+ React.createElement('div', {
14
+ 'data-testid': 'image',
15
+ onMouseEnter,
16
+ onMouseLeave,
17
+ ...props
18
+ }),
19
+ Text: (props) => React.createElement('div', { 'data-testid': 'text', ...props }),
20
+ Tag: (props) => React.createElement('div', { 'data-testid': 'tag', ...props }),
21
+ Label: ({ children, ...props }) => React.createElement('div', { 'data-testid': 'label', ...props }, children),
22
+ };
23
+ });
24
+
25
+ class MockImage {
26
+ constructor() {
27
+ this.src = '';
28
+ this._onload = null;
29
+ }
30
+
31
+ addEventListener(event, callback) {
32
+ if (event === 'load') {
33
+ this._onload = callback;
34
+ setTimeout(() => {
35
+ if (this._onload) {
36
+ this._onload();
37
+ }
38
+ }, 10);
39
+ }
40
+ }
41
+
42
+ removeEventListener() {
43
+ this._onload = null;
44
+ }
45
+ }
46
+
47
+ global.Image = MockImage;
48
+
49
+ describe('ImageComponent', () => {
50
+ let defaultProps;
51
+
52
+ beforeEach(() => {
53
+ defaultProps = {
54
+ src: 'test-image.png',
55
+ x: 100,
56
+ y: 150,
57
+ tooltip: 'Test tooltip',
58
+ };
59
+ });
60
+
61
+ describe('rendering', () => {
62
+ it('should render without crashing', () => {
63
+ const { container } = render(<ImageComponent {...defaultProps} />);
64
+ expect(container).toBeTruthy();
65
+ });
66
+
67
+ it('should render Group component', () => {
68
+ const { getByTestId } = render(<ImageComponent {...defaultProps} />);
69
+ const group = getByTestId('group');
70
+ expect(group).toBeInTheDocument();
71
+ });
72
+
73
+ it('should render Image component', () => {
74
+ const { getByTestId } = render(<ImageComponent {...defaultProps} />);
75
+ const image = getByTestId('image');
76
+ expect(image).toBeInTheDocument();
77
+ });
78
+
79
+ it('should have correct image dimensions', () => {
80
+ const { getByTestId } = render(<ImageComponent {...defaultProps} />);
81
+ const image = getByTestId('image');
82
+ expect(image).toHaveAttribute('width', '20');
83
+ expect(image).toHaveAttribute('height', '20');
84
+ });
85
+
86
+ it('should have correct position', () => {
87
+ const { getByTestId } = render(<ImageComponent {...defaultProps} />);
88
+ const image = getByTestId('image');
89
+ expect(image).toHaveAttribute('x', '100');
90
+ expect(image).toHaveAttribute('y', '150');
91
+ });
92
+ });
93
+
94
+ describe('image loading', () => {
95
+ it('should load image on mount', async () => {
96
+ const { getByTestId } = render(<ImageComponent {...defaultProps} />);
97
+ const image = getByTestId('image');
98
+
99
+ await waitFor(() => {
100
+ expect(image).toHaveAttribute('image');
101
+ }, { timeout: 100 });
102
+ });
103
+
104
+ it('should reload image when src prop changes', async () => {
105
+ const { getByTestId, rerender } = render(<ImageComponent {...defaultProps} />);
106
+
107
+ await waitFor(() => {
108
+ const image = getByTestId('image');
109
+ expect(image).toBeInTheDocument();
110
+ });
111
+
112
+ rerender(<ImageComponent {...defaultProps} src="new-image.png" />);
113
+
114
+ await waitFor(() => {
115
+ const image = getByTestId('image');
116
+ expect(image).toBeInTheDocument();
117
+ });
118
+ });
119
+
120
+ it('should set image state after load', async () => {
121
+ const { getByTestId } = render(<ImageComponent {...defaultProps} />);
122
+
123
+ await waitFor(() => {
124
+ const image = getByTestId('image');
125
+ expect(image).toBeInTheDocument();
126
+ }, { timeout: 100 });
127
+ });
128
+ });
129
+
130
+ describe('tooltip functionality', () => {
131
+ it('should not show tooltip initially', () => {
132
+ const { queryByTestId } = render(<ImageComponent {...defaultProps} />);
133
+ const label = queryByTestId('label');
134
+ expect(label).not.toBeInTheDocument();
135
+ });
136
+
137
+ it('should show tooltip on mouse enter', async () => {
138
+ const { getByTestId, queryByTestId } = render(<ImageComponent {...defaultProps} />);
139
+ const image = getByTestId('image');
140
+
141
+ // Initially no tooltip
142
+ expect(queryByTestId('label')).not.toBeInTheDocument();
143
+
144
+ // Simulate mouse enter
145
+ fireEvent.mouseEnter(image);
146
+
147
+ // Wait for state update
148
+ await waitFor(() => {
149
+ const label = queryByTestId('label');
150
+ expect(label).toBeInTheDocument();
151
+ });
152
+ });
153
+
154
+ it('should hide tooltip on mouse leave', async () => {
155
+ const { getByTestId, queryByTestId } = render(<ImageComponent {...defaultProps} />);
156
+ const image = getByTestId('image');
157
+
158
+ // Show tooltip
159
+ fireEvent.mouseEnter(image);
160
+
161
+ await waitFor(() => {
162
+ expect(queryByTestId('label')).toBeInTheDocument();
163
+ });
164
+
165
+ // Hide tooltip
166
+ fireEvent.mouseLeave(image);
167
+
168
+ await waitFor(() => {
169
+ expect(queryByTestId('label')).not.toBeInTheDocument();
170
+ });
171
+ });
172
+
173
+ it('should render tooltip with correct text', async () => {
174
+ const { getByTestId } = render(
175
+ <ImageComponent {...defaultProps} tooltip="Custom tooltip" />
176
+ );
177
+ const image = getByTestId('image');
178
+
179
+ fireEvent.mouseEnter(image);
180
+
181
+ await waitFor(() => {
182
+ const text = getByTestId('text');
183
+ expect(text).toHaveAttribute('text', 'Custom tooltip');
184
+ });
185
+ });
186
+
187
+ it('should not show tooltip when tooltip prop is empty', async () => {
188
+ const { getByTestId, queryByTestId } = render(
189
+ <ImageComponent {...defaultProps} tooltip="" />
190
+ );
191
+ const image = getByTestId('image');
192
+
193
+ fireEvent.mouseEnter(image);
194
+
195
+ // Even after mouse enter, tooltip should not show if text is empty
196
+ await new Promise(resolve => setTimeout(resolve, 50));
197
+ expect(queryByTestId('label')).not.toBeInTheDocument();
198
+ });
199
+
200
+ it('should handle long tooltip text', async () => {
201
+ const longTooltip = 'This is a very long tooltip text that should still render correctly without breaking the component layout';
202
+ const { getByTestId } = render(
203
+ <ImageComponent {...defaultProps} tooltip={longTooltip} />
204
+ );
205
+ const image = getByTestId('image');
206
+
207
+ fireEvent.mouseEnter(image);
208
+
209
+ await waitFor(() => {
210
+ const text = getByTestId('text');
211
+ expect(text).toHaveAttribute('text', longTooltip);
212
+ });
213
+ });
214
+ });
215
+
216
+ describe('positioning', () => {
217
+ it('should render at correct x position', () => {
218
+ const { getByTestId } = render(
219
+ <ImageComponent {...defaultProps} x={200} />
220
+ );
221
+ const image = getByTestId('image');
222
+ expect(image).toHaveAttribute('x', '200');
223
+ });
224
+
225
+ it('should render at correct y position', () => {
226
+ const { getByTestId } = render(
227
+ <ImageComponent {...defaultProps} y={300} />
228
+ );
229
+ const image = getByTestId('image');
230
+ expect(image).toHaveAttribute('y', '300');
231
+ });
232
+
233
+ it('should handle position at origin (0, 0)', () => {
234
+ const { getByTestId } = render(
235
+ <ImageComponent {...defaultProps} x={0} y={0} />
236
+ );
237
+ const image = getByTestId('image');
238
+ expect(image).toHaveAttribute('x', '0');
239
+ expect(image).toHaveAttribute('y', '0');
240
+ });
241
+
242
+ it('should handle negative positions', () => {
243
+ const { getByTestId } = render(
244
+ <ImageComponent {...defaultProps} x={-10} y={-20} />
245
+ );
246
+ const image = getByTestId('image');
247
+ expect(image).toHaveAttribute('x', '-10');
248
+ expect(image).toHaveAttribute('y', '-20');
249
+ });
250
+
251
+ it('should handle large position values', () => {
252
+ const { getByTestId } = render(
253
+ <ImageComponent {...defaultProps} x={1000} y={2000} />
254
+ );
255
+ const image = getByTestId('image');
256
+ expect(image).toHaveAttribute('x', '1000');
257
+ expect(image).toHaveAttribute('y', '2000');
258
+ });
259
+
260
+ it('should position tooltip relative to image', async () => {
261
+ const { getByTestId } = render(<ImageComponent {...defaultProps} x={100} y={150} />);
262
+ const image = getByTestId('image');
263
+
264
+ fireEvent.mouseEnter(image);
265
+
266
+ await waitFor(() => {
267
+ const label = getByTestId('label');
268
+ // Tooltip should be positioned at x - 30, y + 25
269
+ expect(label).toHaveAttribute('x', '70');
270
+ expect(label).toHaveAttribute('y', '175');
271
+ });
272
+ });
273
+ });
274
+
275
+ describe('image sources', () => {
276
+ it('should handle data URI image source', async () => {
277
+ const dataUri = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==';
278
+ const { getByTestId } = render(
279
+ <ImageComponent {...defaultProps} src={dataUri} />
280
+ );
281
+ const image = getByTestId('image');
282
+ expect(image).toBeInTheDocument();
283
+ });
284
+
285
+ it('should handle relative path image source', () => {
286
+ const { getByTestId } = render(
287
+ <ImageComponent {...defaultProps} src="./images/icon.png" />
288
+ );
289
+ const image = getByTestId('image');
290
+ expect(image).toBeInTheDocument();
291
+ });
292
+
293
+ it('should handle absolute URL image source', () => {
294
+ const { getByTestId } = render(
295
+ <ImageComponent {...defaultProps} src="https://example.com/image.png" />
296
+ );
297
+ const image = getByTestId('image');
298
+ expect(image).toBeInTheDocument();
299
+ });
300
+
301
+ it('should handle SVG image source', () => {
302
+ const { getByTestId } = render(
303
+ <ImageComponent {...defaultProps} src="icon.svg" />
304
+ );
305
+ const image = getByTestId('image');
306
+ expect(image).toBeInTheDocument();
307
+ });
308
+ });
309
+
310
+ describe('component lifecycle', () => {
311
+ it('should clean up event listener on unmount', () => {
312
+ const { unmount } = render(<ImageComponent {...defaultProps} />);
313
+
314
+ expect(() => {
315
+ unmount();
316
+ }).not.toThrow();
317
+ });
318
+
319
+ it('should handle multiple mount/unmount cycles', () => {
320
+ const { unmount } = render(<ImageComponent {...defaultProps} />);
321
+
322
+ unmount();
323
+
324
+ expect(() => {
325
+ render(<ImageComponent {...defaultProps} />);
326
+ }).not.toThrow();
327
+ });
328
+
329
+ it('should handle rapid prop changes', async () => {
330
+ const { rerender, container } = render(<ImageComponent {...defaultProps} />);
331
+
332
+ rerender(<ImageComponent {...defaultProps} x={150} y={200} />);
333
+
334
+ await new Promise(resolve => setTimeout(resolve, 20));
335
+
336
+ rerender(<ImageComponent {...defaultProps} x={200} y={250} />);
337
+
338
+ const image = container.querySelector('[data-testid="image"]');
339
+ expect(image).toHaveAttribute('x', '200');
340
+ expect(image).toHaveAttribute('y', '250');
341
+ });
342
+
343
+ it('should handle src changes during image load', async () => {
344
+ const { rerender, container } = render(<ImageComponent {...defaultProps} src="image1.png" />);
345
+
346
+ // Change src before image loads
347
+ rerender(<ImageComponent {...defaultProps} src="image2.png" />);
348
+
349
+ await waitFor(() => {
350
+ const image = container.querySelector('[data-testid="image"]');
351
+ expect(image).toBeInTheDocument();
352
+ });
353
+ });
354
+ });
355
+
356
+ describe('edge cases', () => {
357
+ it('should handle zero dimensions gracefully', () => {
358
+ const { getByTestId } = render(
359
+ <ImageComponent {...defaultProps} x={0} y={0} />
360
+ );
361
+ const image = getByTestId('image');
362
+ expect(image).toHaveAttribute('x', '0');
363
+ expect(image).toHaveAttribute('y', '0');
364
+ });
365
+
366
+ it('should render with special characters in tooltip', async () => {
367
+ const specialTooltip = 'Test <>&"\'tooltip';
368
+ const { getByTestId } = render(
369
+ <ImageComponent {...defaultProps} tooltip={specialTooltip} />
370
+ );
371
+ const image = getByTestId('image');
372
+
373
+ fireEvent.mouseEnter(image);
374
+
375
+ await waitFor(() => {
376
+ const text = getByTestId('text');
377
+ expect(text).toHaveAttribute('text', specialTooltip);
378
+ });
379
+ });
380
+
381
+ it('should handle Unicode characters in tooltip', async () => {
382
+ const unicodeTooltip = 'Test 你好 🎉 tooltip';
383
+ const { getByTestId } = render(
384
+ <ImageComponent {...defaultProps} tooltip={unicodeTooltip} />
385
+ );
386
+ const image = getByTestId('image');
387
+
388
+ fireEvent.mouseEnter(image);
389
+
390
+ await waitFor(() => {
391
+ const text = getByTestId('text');
392
+ expect(text).toHaveAttribute('text', unicodeTooltip);
393
+ });
394
+ });
395
+
396
+ it('should handle missing tooltip gracefully', () => {
397
+ const { getByTestId } = render(
398
+ <ImageComponent src="test.png" x={100} y={150} />
399
+ );
400
+ const image = getByTestId('image');
401
+ expect(image).toBeInTheDocument();
402
+ });
403
+ });
404
+
405
+ describe('tooltip styling', () => {
406
+ it('should render tooltip with Tag component', async () => {
407
+ const { getByTestId } = render(<ImageComponent {...defaultProps} />);
408
+ const image = getByTestId('image');
409
+
410
+ fireEvent.mouseEnter(image);
411
+
412
+ await waitFor(() => {
413
+ const tag = getByTestId('tag');
414
+ expect(tag).toBeInTheDocument();
415
+ });
416
+ });
417
+
418
+ it('should render tooltip with correct styling attributes', async () => {
419
+ const { getByTestId } = render(<ImageComponent {...defaultProps} />);
420
+ const image = getByTestId('image');
421
+
422
+ fireEvent.mouseEnter(image);
423
+
424
+ await waitFor(() => {
425
+ const tag = getByTestId('tag');
426
+ expect(tag).toHaveAttribute('fill', 'white');
427
+ expect(tag).toHaveAttribute('cornerRadius', '5');
428
+ expect(tag).toHaveAttribute('opacity', '0.9');
429
+ });
430
+ });
431
+
432
+ it('should render tooltip text with padding', async () => {
433
+ const { getByTestId } = render(<ImageComponent {...defaultProps} />);
434
+ const image = getByTestId('image');
435
+
436
+ fireEvent.mouseEnter(image);
437
+
438
+ await waitFor(() => {
439
+ const text = getByTestId('text');
440
+ expect(text).toHaveAttribute('padding', '5');
441
+ });
442
+ });
443
+ });
444
+
445
+ describe('state management', () => {
446
+ it('should update showTooltip state on mouse events', async () => {
447
+ const { getByTestId, queryByTestId } = render(<ImageComponent {...defaultProps} />);
448
+ const image = getByTestId('image');
449
+
450
+ // Initially no tooltip
451
+ expect(queryByTestId('label')).not.toBeInTheDocument();
452
+
453
+ // Show tooltip
454
+ fireEvent.mouseEnter(image);
455
+
456
+ await waitFor(() => {
457
+ expect(queryByTestId('label')).toBeInTheDocument();
458
+ });
459
+
460
+ // Hide tooltip
461
+ fireEvent.mouseLeave(image);
462
+
463
+ await waitFor(() => {
464
+ expect(queryByTestId('label')).not.toBeInTheDocument();
465
+ });
466
+ });
467
+
468
+ it('should update image state after load', async () => {
469
+ const { getByTestId } = render(<ImageComponent {...defaultProps} />);
470
+
471
+ await waitFor(() => {
472
+ const image = getByTestId('image');
473
+ expect(image).toHaveAttribute('image');
474
+ }, { timeout: 100 });
475
+ });
476
+ });
477
+
478
+ describe('PropTypes validation', () => {
479
+ it('should accept all required props', () => {
480
+ const { getByTestId } = render(<ImageComponent {...defaultProps} />);
481
+ const image = getByTestId('image');
482
+ expect(image).toBeInTheDocument();
483
+ });
484
+
485
+ it('should render with string src prop', () => {
486
+ const { getByTestId } = render(
487
+ <ImageComponent {...defaultProps} src="test.png" />
488
+ );
489
+ const image = getByTestId('image');
490
+ expect(image).toBeInTheDocument();
491
+ });
492
+
493
+ it('should render with number x and y props', () => {
494
+ const { getByTestId } = render(
495
+ <ImageComponent {...defaultProps} x={100} y={200} />
496
+ );
497
+ const image = getByTestId('image');
498
+ expect(image).toHaveAttribute('x', '100');
499
+ expect(image).toHaveAttribute('y', '200');
500
+ });
501
+
502
+ it('should render with string tooltip prop', () => {
503
+ const { getByTestId } = render(
504
+ <ImageComponent {...defaultProps} tooltip="Tooltip text" />
505
+ );
506
+ const image = getByTestId('image');
507
+ expect(image).toBeInTheDocument();
508
+ });
509
+ });
510
+ });