@gemx-dev/heatmap-react 3.5.50 → 3.5.51

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 (304) hide show
  1. package/dist/esm/components/Layout/HeatmapLayout.d.ts +2 -2
  2. package/dist/esm/components/Layout/HeatmapLayout.d.ts.map +1 -1
  3. package/dist/esm/components/VizElement/ElementCallout.d.ts.map +1 -1
  4. package/dist/esm/components/VizElement/HeatmapElements.d.ts.map +1 -1
  5. package/dist/esm/components/VizElement/VizElements.d.ts.map +1 -1
  6. package/dist/esm/components/VizScrollmap/HoverZones.d.ts +1 -1
  7. package/dist/esm/components/VizScrollmap/HoverZones.d.ts.map +1 -1
  8. package/dist/esm/components/VizScrollmap/ScrollMapMinimap.d.ts +1 -1
  9. package/dist/esm/components/VizScrollmap/ScrollMapMinimap.d.ts.map +1 -1
  10. package/dist/esm/components/VizScrollmap/ScrollMapOverlay.d.ts.map +1 -1
  11. package/dist/esm/components/VizScrollmap/ScrollZoneHoverArea.d.ts +1 -2
  12. package/dist/esm/components/VizScrollmap/ScrollZoneHoverArea.d.ts.map +1 -1
  13. package/dist/esm/components/VizScrollmap/ScrollZoneTooltip.d.ts +1 -1
  14. package/dist/esm/components/VizScrollmap/ScrollZoneTooltip.d.ts.map +1 -1
  15. package/dist/esm/components/VizScrollmapV2/ScrollmapOverlayV2.d.ts +1 -2
  16. package/dist/esm/components/VizScrollmapV2/ScrollmapOverlayV2.d.ts.map +1 -1
  17. package/dist/esm/components/VizScrollmapV2/useScrollmapOverlay.d.ts +1 -1
  18. package/dist/esm/components/VizScrollmapV2/useScrollmapOverlay.d.ts.map +1 -1
  19. package/dist/esm/contexts/CompareViewContext.d.ts +1 -1
  20. package/dist/esm/contexts/CompareViewContext.d.ts.map +1 -1
  21. package/dist/esm/helpers/iframe-helper/fixer.d.ts +1 -1
  22. package/dist/esm/helpers/iframe-helper/fixer.d.ts.map +1 -1
  23. package/dist/esm/helpers/iframe-helper/init.d.ts +1 -1
  24. package/dist/esm/helpers/iframe-helper/init.d.ts.map +1 -1
  25. package/dist/esm/helpers/iframe.d.ts +1 -1
  26. package/dist/esm/helpers/iframe.d.ts.map +1 -1
  27. package/dist/esm/helpers/index.d.ts +2 -3
  28. package/dist/esm/helpers/index.d.ts.map +1 -1
  29. package/dist/esm/helpers/viz-canvas/area-clustering.d.ts +1 -1
  30. package/dist/esm/helpers/viz-canvas/area-clustering.d.ts.map +1 -1
  31. package/dist/esm/helpers/viz-canvas/area-overlay-manager-v2.d.ts +2 -2
  32. package/dist/esm/helpers/viz-canvas/area-overlay-manager-v2.d.ts.map +1 -1
  33. package/dist/esm/helpers/viz-canvas/area-overlay-manager.d.ts +1 -1
  34. package/dist/esm/helpers/viz-canvas/area-overlay-manager.d.ts.map +1 -1
  35. package/dist/esm/helpers/viz-canvas/hierarchical-area-clustering.d.ts +1 -1
  36. package/dist/esm/helpers/viz-canvas/hierarchical-area-clustering.d.ts.map +1 -1
  37. package/dist/esm/helpers/viz-elm-callout/constants.d.ts +4 -0
  38. package/dist/esm/helpers/viz-elm-callout/constants.d.ts.map +1 -0
  39. package/dist/esm/helpers/viz-elm-callout/dimensions.d.ts +4 -0
  40. package/dist/esm/helpers/viz-elm-callout/dimensions.d.ts.map +1 -0
  41. package/dist/esm/helpers/{elm-getter.d.ts → viz-elm-callout/getter.d.ts} +2 -2
  42. package/dist/esm/helpers/viz-elm-callout/getter.d.ts.map +1 -0
  43. package/dist/esm/helpers/viz-elm-callout/index.d.ts +3 -0
  44. package/dist/esm/helpers/viz-elm-callout/index.d.ts.map +1 -0
  45. package/dist/esm/helpers/viz-elm-callout/position-calculator.d.ts +14 -0
  46. package/dist/esm/helpers/viz-elm-callout/position-calculator.d.ts.map +1 -0
  47. package/dist/esm/helpers/viz-elm-callout/position-candidates.d.ts +6 -0
  48. package/dist/esm/helpers/viz-elm-callout/position-candidates.d.ts.map +1 -0
  49. package/dist/esm/helpers/viz-elm-callout/position-selector.d.ts +10 -0
  50. package/dist/esm/helpers/viz-elm-callout/position-selector.d.ts.map +1 -0
  51. package/dist/esm/helpers/viz-elm-callout/position-validator.d.ts +4 -0
  52. package/dist/esm/helpers/viz-elm-callout/position-validator.d.ts.map +1 -0
  53. package/dist/esm/helpers/viz-elm-callout/types.d.ts +17 -0
  54. package/dist/esm/helpers/viz-elm-callout/types.d.ts.map +1 -0
  55. package/dist/{umd/helpers/elm-callout.d.ts → esm/helpers/viz-elm-callout/viz-elm.d.ts} +4 -3
  56. package/dist/esm/helpers/viz-elm-callout/viz-elm.d.ts.map +1 -0
  57. package/dist/esm/helpers/{viz-elements.d.ts → viz-elm.d.ts} +1 -1
  58. package/dist/esm/helpers/viz-elm.d.ts.map +1 -0
  59. package/dist/esm/hooks/common/index.d.ts +2 -0
  60. package/dist/esm/hooks/common/index.d.ts.map +1 -0
  61. package/dist/esm/hooks/common/useDebounceCallback.d.ts +17 -0
  62. package/dist/esm/hooks/common/useDebounceCallback.d.ts.map +1 -0
  63. package/dist/esm/hooks/index.d.ts +2 -1
  64. package/dist/esm/hooks/index.d.ts.map +1 -1
  65. package/dist/esm/hooks/register/useRegisterControl.d.ts +1 -1
  66. package/dist/esm/hooks/register/useRegisterControl.d.ts.map +1 -1
  67. package/dist/esm/hooks/register/useRegisterData.d.ts +1 -1
  68. package/dist/esm/hooks/register/useRegisterData.d.ts.map +1 -1
  69. package/dist/esm/hooks/register/useRegisterHeatmap.d.ts +1 -1
  70. package/dist/esm/hooks/register/useRegisterHeatmap.d.ts.map +1 -1
  71. package/dist/esm/hooks/view-context/useHeatmapData.d.ts +1 -1
  72. package/dist/esm/hooks/view-context/useHeatmapData.d.ts.map +1 -1
  73. package/dist/esm/hooks/view-context/useHeatmapInteraction.d.ts +2 -2
  74. package/dist/esm/hooks/view-context/useHeatmapInteraction.d.ts.map +1 -1
  75. package/dist/esm/hooks/view-context/useHeatmapViz.d.ts +1 -1
  76. package/dist/esm/hooks/view-context/useHeatmapViz.d.ts.map +1 -1
  77. package/dist/esm/hooks/view-context/useHeatmapVizScrollmap.d.ts +1 -1
  78. package/dist/esm/hooks/view-context/useHeatmapVizScrollmap.d.ts.map +1 -1
  79. package/dist/esm/hooks/viz-area/useAreaHeatmap.d.ts +1 -1
  80. package/dist/esm/hooks/viz-area/useAreaHeatmap.d.ts.map +1 -1
  81. package/dist/esm/hooks/viz-area/useAreaHeatmapManager.d.ts.map +1 -1
  82. package/dist/esm/hooks/viz-canvas/useAreamap.d.ts +1 -1
  83. package/dist/esm/hooks/viz-canvas/useAreamap.d.ts.map +1 -1
  84. package/dist/esm/hooks/viz-elm/index.d.ts.map +1 -0
  85. package/dist/esm/hooks/viz-elm/useClickedElement.d.ts.map +1 -0
  86. package/dist/esm/hooks/viz-elm/useElementCalloutVisible.d.ts.map +1 -0
  87. package/dist/esm/hooks/viz-elm/useHeatmapEffects.d.ts.map +1 -0
  88. package/dist/esm/hooks/viz-elm/useHeatmapElementPosition.d.ts.map +1 -0
  89. package/dist/esm/hooks/{viz-elements → viz-elm}/useHeatmapMouseHandler.d.ts +1 -1
  90. package/dist/esm/hooks/{viz-elements → viz-elm}/useHeatmapMouseHandler.d.ts.map +1 -1
  91. package/dist/esm/hooks/viz-elm/useHoveredElement.d.ts.map +1 -0
  92. package/dist/esm/hooks/viz-render/useHeatmapRender.d.ts.map +1 -1
  93. package/dist/esm/hooks/viz-render/useReplayRender.d.ts.map +1 -1
  94. package/dist/esm/hooks/viz-scrollmap/useScrollmapZones.d.ts +1 -1
  95. package/dist/esm/hooks/viz-scrollmap/useScrollmapZones.d.ts.map +1 -1
  96. package/dist/esm/hooks/viz-scrollmap/useZonePositions.d.ts +2 -2
  97. package/dist/esm/hooks/viz-scrollmap/useZonePositions.d.ts.map +1 -1
  98. package/dist/esm/index.js +238 -199
  99. package/dist/esm/index.mjs +238 -199
  100. package/dist/esm/performance/index.d.ts +3 -3
  101. package/dist/esm/performance/index.d.ts.map +1 -1
  102. package/dist/{umd/performance/PerformanceLogger.d.ts → esm/performance/performance-logger.d.ts} +1 -1
  103. package/dist/esm/performance/performance-logger.d.ts.map +1 -0
  104. package/dist/esm/performance/storeTracker.d.ts.map +1 -1
  105. package/dist/esm/performance/utils.d.ts +0 -18
  106. package/dist/esm/performance/utils.d.ts.map +1 -1
  107. package/dist/esm/performance/withPerformanceTracking.d.ts +1 -1
  108. package/dist/esm/performance/withPerformanceTracking.d.ts.map +1 -1
  109. package/dist/esm/stores/comp.d.ts +1 -1
  110. package/dist/esm/stores/comp.d.ts.map +1 -1
  111. package/dist/esm/stores/data.d.ts +1 -1
  112. package/dist/esm/stores/data.d.ts.map +1 -1
  113. package/dist/esm/stores/interaction.d.ts +1 -1
  114. package/dist/esm/stores/interaction.d.ts.map +1 -1
  115. package/dist/esm/stores/mode-compare.d.ts +1 -1
  116. package/dist/esm/stores/mode-compare.d.ts.map +1 -1
  117. package/dist/esm/stores/mode-live.d.ts +1 -1
  118. package/dist/esm/stores/mode-live.d.ts.map +1 -1
  119. package/dist/esm/stores/mode-single.d.ts +1 -1
  120. package/dist/esm/stores/mode-single.d.ts.map +1 -1
  121. package/dist/esm/stores/viz-scrollmap.d.ts +1 -1
  122. package/dist/esm/stores/viz-scrollmap.d.ts.map +1 -1
  123. package/dist/esm/types/heatmap-info.d.ts +2 -2
  124. package/dist/esm/types/heatmap-info.d.ts.map +1 -1
  125. package/dist/esm/types/index.d.ts +2 -2
  126. package/dist/esm/types/index.d.ts.map +1 -1
  127. package/dist/{umd/types/elm-callout.d.ts → esm/types/viz-elm-callout.d.ts} +1 -1
  128. package/dist/esm/types/viz-elm-callout.d.ts.map +1 -0
  129. package/dist/esm/types/{viz-element.d.ts → viz-elm.d.ts} +1 -1
  130. package/dist/esm/types/viz-elm.d.ts.map +1 -0
  131. package/dist/esm/utils/sort.d.ts +1 -1
  132. package/dist/esm/utils/sort.d.ts.map +1 -1
  133. package/dist/umd/components/Layout/HeatmapLayout.d.ts +2 -2
  134. package/dist/umd/components/Layout/HeatmapLayout.d.ts.map +1 -1
  135. package/dist/umd/components/VizElement/ElementCallout.d.ts.map +1 -1
  136. package/dist/umd/components/VizElement/HeatmapElements.d.ts.map +1 -1
  137. package/dist/umd/components/VizElement/VizElements.d.ts.map +1 -1
  138. package/dist/umd/components/VizScrollmap/HoverZones.d.ts +1 -1
  139. package/dist/umd/components/VizScrollmap/HoverZones.d.ts.map +1 -1
  140. package/dist/umd/components/VizScrollmap/ScrollMapMinimap.d.ts +1 -1
  141. package/dist/umd/components/VizScrollmap/ScrollMapMinimap.d.ts.map +1 -1
  142. package/dist/umd/components/VizScrollmap/ScrollMapOverlay.d.ts.map +1 -1
  143. package/dist/umd/components/VizScrollmap/ScrollZoneHoverArea.d.ts +1 -2
  144. package/dist/umd/components/VizScrollmap/ScrollZoneHoverArea.d.ts.map +1 -1
  145. package/dist/umd/components/VizScrollmap/ScrollZoneTooltip.d.ts +1 -1
  146. package/dist/umd/components/VizScrollmap/ScrollZoneTooltip.d.ts.map +1 -1
  147. package/dist/umd/components/VizScrollmapV2/ScrollmapOverlayV2.d.ts +1 -2
  148. package/dist/umd/components/VizScrollmapV2/ScrollmapOverlayV2.d.ts.map +1 -1
  149. package/dist/umd/components/VizScrollmapV2/useScrollmapOverlay.d.ts +1 -1
  150. package/dist/umd/components/VizScrollmapV2/useScrollmapOverlay.d.ts.map +1 -1
  151. package/dist/umd/contexts/CompareViewContext.d.ts +1 -1
  152. package/dist/umd/contexts/CompareViewContext.d.ts.map +1 -1
  153. package/dist/umd/helpers/iframe-helper/fixer.d.ts +1 -1
  154. package/dist/umd/helpers/iframe-helper/fixer.d.ts.map +1 -1
  155. package/dist/umd/helpers/iframe-helper/init.d.ts +1 -1
  156. package/dist/umd/helpers/iframe-helper/init.d.ts.map +1 -1
  157. package/dist/umd/helpers/iframe.d.ts +1 -1
  158. package/dist/umd/helpers/iframe.d.ts.map +1 -1
  159. package/dist/umd/helpers/index.d.ts +2 -3
  160. package/dist/umd/helpers/index.d.ts.map +1 -1
  161. package/dist/umd/helpers/viz-canvas/area-clustering.d.ts +1 -1
  162. package/dist/umd/helpers/viz-canvas/area-clustering.d.ts.map +1 -1
  163. package/dist/umd/helpers/viz-canvas/area-overlay-manager-v2.d.ts +2 -2
  164. package/dist/umd/helpers/viz-canvas/area-overlay-manager-v2.d.ts.map +1 -1
  165. package/dist/umd/helpers/viz-canvas/area-overlay-manager.d.ts +1 -1
  166. package/dist/umd/helpers/viz-canvas/area-overlay-manager.d.ts.map +1 -1
  167. package/dist/umd/helpers/viz-canvas/hierarchical-area-clustering.d.ts +1 -1
  168. package/dist/umd/helpers/viz-canvas/hierarchical-area-clustering.d.ts.map +1 -1
  169. package/dist/umd/helpers/viz-elm-callout/constants.d.ts +4 -0
  170. package/dist/umd/helpers/viz-elm-callout/constants.d.ts.map +1 -0
  171. package/dist/umd/helpers/viz-elm-callout/dimensions.d.ts +4 -0
  172. package/dist/umd/helpers/viz-elm-callout/dimensions.d.ts.map +1 -0
  173. package/dist/umd/helpers/{elm-getter.d.ts → viz-elm-callout/getter.d.ts} +2 -2
  174. package/dist/umd/helpers/viz-elm-callout/getter.d.ts.map +1 -0
  175. package/dist/umd/helpers/viz-elm-callout/index.d.ts +3 -0
  176. package/dist/umd/helpers/viz-elm-callout/index.d.ts.map +1 -0
  177. package/dist/umd/helpers/viz-elm-callout/position-calculator.d.ts +14 -0
  178. package/dist/umd/helpers/viz-elm-callout/position-calculator.d.ts.map +1 -0
  179. package/dist/umd/helpers/viz-elm-callout/position-candidates.d.ts +6 -0
  180. package/dist/umd/helpers/viz-elm-callout/position-candidates.d.ts.map +1 -0
  181. package/dist/umd/helpers/viz-elm-callout/position-selector.d.ts +10 -0
  182. package/dist/umd/helpers/viz-elm-callout/position-selector.d.ts.map +1 -0
  183. package/dist/umd/helpers/viz-elm-callout/position-validator.d.ts +4 -0
  184. package/dist/umd/helpers/viz-elm-callout/position-validator.d.ts.map +1 -0
  185. package/dist/umd/helpers/viz-elm-callout/types.d.ts +17 -0
  186. package/dist/umd/helpers/viz-elm-callout/types.d.ts.map +1 -0
  187. package/dist/{esm/helpers/elm-callout.d.ts → umd/helpers/viz-elm-callout/viz-elm.d.ts} +4 -3
  188. package/dist/umd/helpers/viz-elm-callout/viz-elm.d.ts.map +1 -0
  189. package/dist/umd/helpers/{viz-elements.d.ts → viz-elm.d.ts} +1 -1
  190. package/dist/umd/helpers/viz-elm.d.ts.map +1 -0
  191. package/dist/umd/hooks/common/index.d.ts +2 -0
  192. package/dist/umd/hooks/common/index.d.ts.map +1 -0
  193. package/dist/umd/hooks/common/useDebounceCallback.d.ts +17 -0
  194. package/dist/umd/hooks/common/useDebounceCallback.d.ts.map +1 -0
  195. package/dist/umd/hooks/index.d.ts +2 -1
  196. package/dist/umd/hooks/index.d.ts.map +1 -1
  197. package/dist/umd/hooks/register/useRegisterControl.d.ts +1 -1
  198. package/dist/umd/hooks/register/useRegisterControl.d.ts.map +1 -1
  199. package/dist/umd/hooks/register/useRegisterData.d.ts +1 -1
  200. package/dist/umd/hooks/register/useRegisterData.d.ts.map +1 -1
  201. package/dist/umd/hooks/register/useRegisterHeatmap.d.ts +1 -1
  202. package/dist/umd/hooks/register/useRegisterHeatmap.d.ts.map +1 -1
  203. package/dist/umd/hooks/view-context/useHeatmapData.d.ts +1 -1
  204. package/dist/umd/hooks/view-context/useHeatmapData.d.ts.map +1 -1
  205. package/dist/umd/hooks/view-context/useHeatmapInteraction.d.ts +2 -2
  206. package/dist/umd/hooks/view-context/useHeatmapInteraction.d.ts.map +1 -1
  207. package/dist/umd/hooks/view-context/useHeatmapViz.d.ts +1 -1
  208. package/dist/umd/hooks/view-context/useHeatmapViz.d.ts.map +1 -1
  209. package/dist/umd/hooks/view-context/useHeatmapVizScrollmap.d.ts +1 -1
  210. package/dist/umd/hooks/view-context/useHeatmapVizScrollmap.d.ts.map +1 -1
  211. package/dist/umd/hooks/viz-area/useAreaHeatmap.d.ts +1 -1
  212. package/dist/umd/hooks/viz-area/useAreaHeatmap.d.ts.map +1 -1
  213. package/dist/umd/hooks/viz-area/useAreaHeatmapManager.d.ts.map +1 -1
  214. package/dist/umd/hooks/viz-canvas/useAreamap.d.ts +1 -1
  215. package/dist/umd/hooks/viz-canvas/useAreamap.d.ts.map +1 -1
  216. package/dist/umd/hooks/viz-elm/index.d.ts.map +1 -0
  217. package/dist/umd/hooks/viz-elm/useClickedElement.d.ts.map +1 -0
  218. package/dist/umd/hooks/viz-elm/useElementCalloutVisible.d.ts.map +1 -0
  219. package/dist/umd/hooks/viz-elm/useHeatmapEffects.d.ts.map +1 -0
  220. package/dist/umd/hooks/viz-elm/useHeatmapElementPosition.d.ts.map +1 -0
  221. package/dist/umd/hooks/{viz-elements → viz-elm}/useHeatmapMouseHandler.d.ts +1 -1
  222. package/dist/umd/hooks/{viz-elements → viz-elm}/useHeatmapMouseHandler.d.ts.map +1 -1
  223. package/dist/umd/hooks/viz-elm/useHoveredElement.d.ts.map +1 -0
  224. package/dist/umd/hooks/viz-render/useHeatmapRender.d.ts.map +1 -1
  225. package/dist/umd/hooks/viz-render/useReplayRender.d.ts.map +1 -1
  226. package/dist/umd/hooks/viz-scrollmap/useScrollmapZones.d.ts +1 -1
  227. package/dist/umd/hooks/viz-scrollmap/useScrollmapZones.d.ts.map +1 -1
  228. package/dist/umd/hooks/viz-scrollmap/useZonePositions.d.ts +2 -2
  229. package/dist/umd/hooks/viz-scrollmap/useZonePositions.d.ts.map +1 -1
  230. package/dist/umd/index.js +1 -1
  231. package/dist/umd/performance/index.d.ts +3 -3
  232. package/dist/umd/performance/index.d.ts.map +1 -1
  233. package/dist/{esm/performance/PerformanceLogger.d.ts → umd/performance/performance-logger.d.ts} +1 -1
  234. package/dist/umd/performance/performance-logger.d.ts.map +1 -0
  235. package/dist/umd/performance/storeTracker.d.ts.map +1 -1
  236. package/dist/umd/performance/utils.d.ts +0 -18
  237. package/dist/umd/performance/utils.d.ts.map +1 -1
  238. package/dist/umd/performance/withPerformanceTracking.d.ts +1 -1
  239. package/dist/umd/performance/withPerformanceTracking.d.ts.map +1 -1
  240. package/dist/umd/stores/comp.d.ts +1 -1
  241. package/dist/umd/stores/comp.d.ts.map +1 -1
  242. package/dist/umd/stores/data.d.ts +1 -1
  243. package/dist/umd/stores/data.d.ts.map +1 -1
  244. package/dist/umd/stores/interaction.d.ts +1 -1
  245. package/dist/umd/stores/interaction.d.ts.map +1 -1
  246. package/dist/umd/stores/mode-compare.d.ts +1 -1
  247. package/dist/umd/stores/mode-compare.d.ts.map +1 -1
  248. package/dist/umd/stores/mode-live.d.ts +1 -1
  249. package/dist/umd/stores/mode-live.d.ts.map +1 -1
  250. package/dist/umd/stores/mode-single.d.ts +1 -1
  251. package/dist/umd/stores/mode-single.d.ts.map +1 -1
  252. package/dist/umd/stores/viz-scrollmap.d.ts +1 -1
  253. package/dist/umd/stores/viz-scrollmap.d.ts.map +1 -1
  254. package/dist/umd/types/heatmap-info.d.ts +2 -2
  255. package/dist/umd/types/heatmap-info.d.ts.map +1 -1
  256. package/dist/umd/types/index.d.ts +2 -2
  257. package/dist/umd/types/index.d.ts.map +1 -1
  258. package/dist/{esm/types/elm-callout.d.ts → umd/types/viz-elm-callout.d.ts} +1 -1
  259. package/dist/umd/types/viz-elm-callout.d.ts.map +1 -0
  260. package/dist/umd/types/{viz-element.d.ts → viz-elm.d.ts} +1 -1
  261. package/dist/umd/types/viz-elm.d.ts.map +1 -0
  262. package/dist/umd/utils/sort.d.ts +1 -1
  263. package/dist/umd/utils/sort.d.ts.map +1 -1
  264. package/package.json +4 -1
  265. package/dist/esm/components/VizElement/HeatmapExample.d.ts +0 -2
  266. package/dist/esm/components/VizElement/HeatmapExample.d.ts.map +0 -1
  267. package/dist/esm/helpers/elm-callout.d.ts.map +0 -1
  268. package/dist/esm/helpers/elm-getter.d.ts.map +0 -1
  269. package/dist/esm/helpers/viz-elements.d.ts.map +0 -1
  270. package/dist/esm/hooks/viz-elements/index.d.ts.map +0 -1
  271. package/dist/esm/hooks/viz-elements/useClickedElement.d.ts.map +0 -1
  272. package/dist/esm/hooks/viz-elements/useElementCalloutVisible.d.ts.map +0 -1
  273. package/dist/esm/hooks/viz-elements/useHeatmapEffects.d.ts.map +0 -1
  274. package/dist/esm/hooks/viz-elements/useHeatmapElementPosition.d.ts.map +0 -1
  275. package/dist/esm/hooks/viz-elements/useHoveredElement.d.ts.map +0 -1
  276. package/dist/esm/performance/PerformanceLogger.d.ts.map +0 -1
  277. package/dist/esm/types/elm-callout.d.ts.map +0 -1
  278. package/dist/esm/types/viz-element.d.ts.map +0 -1
  279. package/dist/umd/components/VizElement/HeatmapExample.d.ts +0 -2
  280. package/dist/umd/components/VizElement/HeatmapExample.d.ts.map +0 -1
  281. package/dist/umd/helpers/elm-callout.d.ts.map +0 -1
  282. package/dist/umd/helpers/elm-getter.d.ts.map +0 -1
  283. package/dist/umd/helpers/viz-elements.d.ts.map +0 -1
  284. package/dist/umd/hooks/viz-elements/index.d.ts.map +0 -1
  285. package/dist/umd/hooks/viz-elements/useClickedElement.d.ts.map +0 -1
  286. package/dist/umd/hooks/viz-elements/useElementCalloutVisible.d.ts.map +0 -1
  287. package/dist/umd/hooks/viz-elements/useHeatmapEffects.d.ts.map +0 -1
  288. package/dist/umd/hooks/viz-elements/useHeatmapElementPosition.d.ts.map +0 -1
  289. package/dist/umd/hooks/viz-elements/useHoveredElement.d.ts.map +0 -1
  290. package/dist/umd/performance/PerformanceLogger.d.ts.map +0 -1
  291. package/dist/umd/types/elm-callout.d.ts.map +0 -1
  292. package/dist/umd/types/viz-element.d.ts.map +0 -1
  293. /package/dist/esm/hooks/{viz-elements → viz-elm}/index.d.ts +0 -0
  294. /package/dist/esm/hooks/{viz-elements → viz-elm}/useClickedElement.d.ts +0 -0
  295. /package/dist/esm/hooks/{viz-elements → viz-elm}/useElementCalloutVisible.d.ts +0 -0
  296. /package/dist/esm/hooks/{viz-elements → viz-elm}/useHeatmapEffects.d.ts +0 -0
  297. /package/dist/esm/hooks/{viz-elements → viz-elm}/useHeatmapElementPosition.d.ts +0 -0
  298. /package/dist/esm/hooks/{viz-elements → viz-elm}/useHoveredElement.d.ts +0 -0
  299. /package/dist/umd/hooks/{viz-elements → viz-elm}/index.d.ts +0 -0
  300. /package/dist/umd/hooks/{viz-elements → viz-elm}/useClickedElement.d.ts +0 -0
  301. /package/dist/umd/hooks/{viz-elements → viz-elm}/useElementCalloutVisible.d.ts +0 -0
  302. /package/dist/umd/hooks/{viz-elements → viz-elm}/useHeatmapEffects.d.ts +0 -0
  303. /package/dist/umd/hooks/{viz-elements → viz-elm}/useHeatmapElementPosition.d.ts +0 -0
  304. /package/dist/umd/hooks/{viz-elements → viz-elm}/useHoveredElement.d.ts +0 -0
@@ -1,7 +1,7 @@
1
1
  "use client"
2
2
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
3
3
  import { useNodesState, ReactFlow, Controls, Background } from '@xyflow/react';
4
- import { useEffect, createContext, useContext, useMemo, useCallback, useState, useRef, forwardRef, Fragment as Fragment$1 } from 'react';
4
+ import { useEffect, useRef, useCallback, createContext, useContext, useMemo, useState, forwardRef, Fragment as Fragment$1 } from 'react';
5
5
  import { create } from 'zustand';
6
6
  import { subscribeWithSelector } from 'zustand/middleware';
7
7
  import { decode } from '@gemx-dev/clarity-decode';
@@ -102,6 +102,36 @@ const Z_INDEX = {
102
102
  SIDEBAR_POPOVER: 4001,
103
103
  };
104
104
 
105
+ /**
106
+ * Creates a debounced version of a callback that delays invoking until after
107
+ * wait milliseconds have elapsed since the last time it was invoked.
108
+ *
109
+ * @param callback - The function to debounce
110
+ * @param delay - The number of milliseconds to delay
111
+ * @returns A debounced version of the callback
112
+ *
113
+ * @example
114
+ * ```tsx
115
+ * const handleSearch = useDebounceCallback((query: string) => {
116
+ * searchAPI(query);
117
+ * }, 300);
118
+ * ```
119
+ */
120
+ function useDebounceCallback(callback, delay) {
121
+ const timeoutRef = useRef();
122
+ const callbackRef = useRef(callback);
123
+ // Update callback ref when callback changes
124
+ callbackRef.current = callback;
125
+ return useCallback((...args) => {
126
+ if (timeoutRef.current) {
127
+ clearTimeout(timeoutRef.current);
128
+ }
129
+ timeoutRef.current = setTimeout(() => {
130
+ callbackRef.current(...args);
131
+ }, delay);
132
+ }, [delay]);
133
+ }
134
+
105
135
  const useHeatmapControlStore = create()((set, get) => {
106
136
  return {
107
137
  controls: {
@@ -145,7 +175,7 @@ var IScrollType;
145
175
  IScrollType["Revenue"] = "revenue-scroll";
146
176
  })(IScrollType || (IScrollType = {}));
147
177
 
148
- const useHeatmapConfigStore = create()((set, get) => {
178
+ const useHeatmapConfigStore = create()((set) => {
149
179
  return {
150
180
  mode: 'single',
151
181
  width: 1440,
@@ -165,7 +195,7 @@ const useHeatmapConfigStore = create()((set, get) => {
165
195
  };
166
196
  });
167
197
 
168
- const useHeatmapDataStore = create()(subscribeWithSelector((set, get) => {
198
+ const useHeatmapDataStore = create()(subscribeWithSelector((set) => {
169
199
  return {
170
200
  data: { [DEFAULT_VIEW_ID]: undefined },
171
201
  clickmap: { [DEFAULT_VIEW_ID]: undefined },
@@ -217,7 +247,7 @@ const useHeatmapDataStore = create()(subscribeWithSelector((set, get) => {
217
247
  const DEFAULT_STATE = {
218
248
  hideSidebar: false,
219
249
  };
220
- const useHeatmapInteractionStore = create()(subscribeWithSelector((set, get) => {
250
+ const useHeatmapInteractionStore = create()(subscribeWithSelector((set) => {
221
251
  return {
222
252
  state: { [DEFAULT_VIEW_ID]: DEFAULT_STATE },
223
253
  selectedElement: { [DEFAULT_VIEW_ID]: null },
@@ -278,7 +308,7 @@ const useHeatmapInteractionStore = create()(subscribeWithSelector((set, get) =>
278
308
  };
279
309
  }));
280
310
 
281
- const useHeatmapVizStore = create()(subscribeWithSelector((set, get) => {
311
+ const useHeatmapVizStore = create()(subscribeWithSelector((set) => {
282
312
  return {
283
313
  isRenderViz: { [DEFAULT_VIEW_ID]: false },
284
314
  zoomRatio: { [DEFAULT_VIEW_ID]: 100 },
@@ -339,7 +369,7 @@ const useHeatmapVizStore = create()(subscribeWithSelector((set, get) => {
339
369
  };
340
370
  }));
341
371
 
342
- const useHeatmapVizScrollmapStore = create()(subscribeWithSelector((set, get) => {
372
+ const useHeatmapVizScrollmapStore = create()(subscribeWithSelector((set) => {
343
373
  return {
344
374
  zones: { [DEFAULT_VIEW_ID]: [] },
345
375
  hoveredZone: { [DEFAULT_VIEW_ID]: null },
@@ -392,7 +422,7 @@ const initialState = {
392
422
  payloads: [],
393
423
  htmlContent: '',
394
424
  };
395
- const useHeatmapLiveStore = create()((set, get) => {
425
+ const useHeatmapLiveStore = create()((set) => {
396
426
  return {
397
427
  ...initialState,
398
428
  reset: () => set(initialState),
@@ -402,7 +432,7 @@ const useHeatmapLiveStore = create()((set, get) => {
402
432
  };
403
433
  });
404
434
 
405
- const useHeatmapSingleStore = create()(subscribeWithSelector((set, get) => {
435
+ const useHeatmapSingleStore = create()(subscribeWithSelector((set) => {
406
436
  return {
407
437
  vizRef: { [DEFAULT_VIEW_ID]: null },
408
438
  iframeHeight: { [DEFAULT_VIEW_ID]: 0 },
@@ -873,23 +903,146 @@ const useRegisterHeatmap = ({ clickmap, scrollmap }) => {
873
903
  }, [scrollmap]);
874
904
  };
875
905
 
906
+ function findLastSizeOfDom(data) {
907
+ const listDocs = data
908
+ .filter((item) => item.doc?.find((doc) => doc.data.width && doc.data.height))
909
+ .flatMap((item) => item.doc?.flatMap((doc) => doc.data));
910
+ const lastDoc = listDocs?.[listDocs.length - 1];
911
+ const docSize = {
912
+ width: lastDoc?.width,
913
+ height: lastDoc?.height,
914
+ };
915
+ const listResizes = data.filter((item) => !!item.resize).flatMap((item) => item.resize);
916
+ const lastResizeEvent = listResizes?.[listResizes.length - 1];
917
+ const resize = {
918
+ width: lastResizeEvent?.data.width,
919
+ height: lastResizeEvent?.data.height,
920
+ };
921
+ return {
922
+ doc: docSize,
923
+ resize: resize,
924
+ size: {
925
+ width: resize.width || docSize.width,
926
+ height: resize.height || docSize.height,
927
+ },
928
+ };
929
+ }
930
+ function decodePayloads(payload) {
931
+ try {
932
+ return decode(payload);
933
+ }
934
+ catch (error) {
935
+ return null;
936
+ }
937
+ }
938
+
939
+ function calculateRankPosition(rect, widthScale) {
940
+ const top = rect.top <= 18 ? rect.top + 3 : rect.top - 18;
941
+ const left = rect.left <= 18 ? rect.left + 3 : rect.left - 18;
942
+ return {
943
+ transform: `scale(${1.2 * widthScale})`,
944
+ top: Number.isNaN(top) ? undefined : top,
945
+ left: Number.isNaN(left) ? undefined : left,
946
+ };
947
+ }
948
+ function isElementInViewport(elementRect, visualRef, scale) {
949
+ if (!elementRect)
950
+ return false;
951
+ const visualRect = visualRef.current?.getBoundingClientRect();
952
+ if (!visualRect)
953
+ return false;
954
+ // Element position relative to the document (or container's content)
955
+ const elementTop = elementRect.top * scale;
956
+ const elementBottom = (elementRect.top + elementRect.height) * scale;
957
+ // Current scroll position
958
+ const scrollTop = visualRef.current?.scrollTop || 0;
959
+ const viewportHeight = visualRect.height;
960
+ // Visible viewport range in the scrollable content
961
+ const viewportTop = scrollTop;
962
+ const viewportBottom = scrollTop + viewportHeight;
963
+ // Check if element is within the visible viewport
964
+ // Element is visible if it overlaps with the viewport
965
+ return elementBottom > viewportTop && elementTop < viewportBottom;
966
+ }
967
+
968
+ function getElementLayout(element) {
969
+ if (!element?.getBoundingClientRect)
970
+ return null;
971
+ const rect = element.getBoundingClientRect();
972
+ if (rect.width === 0 && rect.height === 0)
973
+ return null;
974
+ return {
975
+ top: rect.top,
976
+ left: rect.left,
977
+ width: rect.width,
978
+ height: rect.height,
979
+ };
980
+ }
981
+ const getElementAtPoint = (doc, x, y) => {
982
+ let el = null;
983
+ if ('caretPositionFromPoint' in doc) {
984
+ el = doc.caretPositionFromPoint(x, y)?.offsetNode ?? null;
985
+ }
986
+ el = el ?? doc.elementFromPoint(x, y);
987
+ let element = el;
988
+ while (element && element.nodeType === Node.TEXT_NODE) {
989
+ element = element.parentElement;
990
+ }
991
+ return element;
992
+ };
993
+ function getElementHash(element) {
994
+ return (element.getAttribute('data-clarity-hash') ||
995
+ element.getAttribute('data-clarity-hashalpha') ||
996
+ element.getAttribute('data-clarity-hashbeta'));
997
+ }
998
+ const getElementRank = (hash, elements) => {
999
+ if (!elements)
1000
+ return 0;
1001
+ return elements.findIndex((e) => e.hash === hash) + 1;
1002
+ };
1003
+ const buildElementInfo = (hash, rect, heatmapInfo) => {
1004
+ if (!rect || !heatmapInfo)
1005
+ return null;
1006
+ const info = heatmapInfo.elementMapInfo?.[hash];
1007
+ if (!info)
1008
+ return null;
1009
+ const rank = getElementRank(hash, heatmapInfo.sortedElements);
1010
+ const clicks = info.totalclicks ?? 0;
1011
+ const selector = info.selector ?? '';
1012
+ const baseInfo = {
1013
+ hash,
1014
+ clicks,
1015
+ rank,
1016
+ selector,
1017
+ };
1018
+ return {
1019
+ ...baseInfo,
1020
+ ...rect,
1021
+ };
1022
+ };
1023
+
876
1024
  const PADDING = 0;
877
1025
  const ARROW_SIZE = 8;
878
1026
  const HORIZONTAL_OFFSET = 0;
879
- // ============================================================================
880
- // Viewport & Dimensions
881
- // ============================================================================
882
- const getViewportDimensions = () => ({
883
- width: window.innerWidth,
884
- height: window.innerHeight,
885
- });
1027
+
1028
+ const getViewportDimensions = (containerElm) => {
1029
+ if (containerElm) {
1030
+ const containerRect = containerElm.getBoundingClientRect();
1031
+ return {
1032
+ width: containerRect.width,
1033
+ height: containerRect.height,
1034
+ };
1035
+ }
1036
+ return {
1037
+ width: window.innerWidth,
1038
+ height: window.innerHeight,
1039
+ };
1040
+ };
886
1041
  const getElementDimensions = (targetElm, calloutElm) => ({
887
1042
  targetRect: targetElm.getBoundingClientRect(),
888
1043
  calloutRect: calloutElm.getBoundingClientRect(),
889
1044
  });
890
- // ============================================================================
891
- // Alignment Order
892
- // ============================================================================
1045
+
893
1046
  const getAlignmentOrder = (alignment) => {
894
1047
  switch (alignment) {
895
1048
  case 'center':
@@ -900,9 +1053,6 @@ const getAlignmentOrder = (alignment) => {
900
1053
  return ['right', 'center', 'left'];
901
1054
  }
902
1055
  };
903
- // ============================================================================
904
- // Position Calculation
905
- // ============================================================================
906
1056
  const calculateLeftPosition = ({ targetRect, calloutRect, hozOffset, align, }) => {
907
1057
  switch (align) {
908
1058
  case 'left':
@@ -926,31 +1076,40 @@ const calculateHorizontalPlacementPosition = (targetRect, calloutRect, placement
926
1076
  : targetRect.left - calloutRect.width - padding - arrowSize;
927
1077
  return { top, left };
928
1078
  };
929
- // ============================================================================
930
- // Validation
931
- // ============================================================================
932
- const isLeftPositionValid = (leftPos, calloutWidth, viewportWidth, padding) => {
1079
+
1080
+ const isLeftPositionValid = (leftPos, calloutWidth, viewportWidth, padding, containerRect) => {
1081
+ if (containerRect) {
1082
+ return leftPos >= containerRect.left + padding && leftPos + calloutWidth <= containerRect.right - padding;
1083
+ }
933
1084
  return leftPos >= padding && leftPos + calloutWidth <= viewportWidth - padding;
934
1085
  };
935
- const isVerticalPositionValid = (targetRect, calloutRect, placement, viewportHeight, padding, arrowSize) => {
1086
+ const isVerticalPositionValid = (targetRect, calloutRect, placement, viewportHeight, padding, arrowSize, containerRect) => {
1087
+ if (containerRect) {
1088
+ return placement === 'top'
1089
+ ? targetRect.top - calloutRect.height - padding - arrowSize >= containerRect.top
1090
+ : targetRect.bottom + calloutRect.height + padding + arrowSize <= containerRect.bottom;
1091
+ }
936
1092
  return placement === 'top'
937
1093
  ? targetRect.top - calloutRect.height - padding - arrowSize > 0
938
1094
  : targetRect.bottom + calloutRect.height + padding + arrowSize < viewportHeight;
939
1095
  };
940
- const isHorizontalPlacementValid = (targetRect, calloutRect, placement, viewportWidth, padding, arrowSize) => {
1096
+ const isHorizontalPlacementValid = (targetRect, calloutRect, placement, viewportWidth, padding, arrowSize, containerRect) => {
1097
+ if (containerRect) {
1098
+ return placement === 'right'
1099
+ ? targetRect.right + calloutRect.width + padding + arrowSize <= containerRect.right
1100
+ : targetRect.left - calloutRect.width - padding - arrowSize >= containerRect.left;
1101
+ }
941
1102
  return placement === 'right'
942
1103
  ? targetRect.right + calloutRect.width + padding + arrowSize < viewportWidth
943
1104
  : targetRect.left - calloutRect.width - padding - arrowSize > 0;
944
1105
  };
945
- // ============================================================================
946
- // Position Candidates Generation
947
- // ============================================================================
948
- const generateVerticalPositionCandidates = (targetRect, calloutRect, viewportHeight, viewportWidth, alignment, hozOffset, padding, arrowSize) => {
1106
+
1107
+ const generateVerticalPositionCandidates = (targetRect, calloutRect, viewportHeight, viewportWidth, alignment, hozOffset, padding, arrowSize, containerRect) => {
949
1108
  const candidates = [];
950
1109
  const placements = ['top', 'bottom'];
951
1110
  placements.forEach((placement) => {
952
1111
  const verticalPos = calculateVerticalPosition(targetRect, calloutRect, placement, padding, arrowSize);
953
- const verticalValid = isVerticalPositionValid(targetRect, calloutRect, placement, viewportHeight, padding, arrowSize);
1112
+ const verticalValid = isVerticalPositionValid(targetRect, calloutRect, placement, viewportHeight, padding, arrowSize, containerRect);
954
1113
  const alignmentOrder = getAlignmentOrder(alignment);
955
1114
  alignmentOrder.forEach((align) => {
956
1115
  const horizontalPos = calculateLeftPosition({
@@ -965,13 +1124,13 @@ const generateVerticalPositionCandidates = (targetRect, calloutRect, viewportHei
965
1124
  left: horizontalPos,
966
1125
  horizontalAlign: align,
967
1126
  valid: verticalValid &&
968
- isLeftPositionValid(horizontalPos, calloutRect.width, viewportWidth, padding),
1127
+ isLeftPositionValid(horizontalPos, calloutRect.width, viewportWidth, padding, containerRect),
969
1128
  });
970
1129
  });
971
1130
  });
972
1131
  return candidates;
973
1132
  };
974
- const generateHorizontalPositionCandidates = (targetRect, calloutRect, viewportWidth, padding, arrowSize) => {
1133
+ const generateHorizontalPositionCandidates = (targetRect, calloutRect, viewportWidth, padding, arrowSize, containerRect) => {
975
1134
  const placements = ['left', 'right'];
976
1135
  return placements.map((placement) => {
977
1136
  const { top, left } = calculateHorizontalPlacementPosition(targetRect, calloutRect, placement, padding, arrowSize);
@@ -980,46 +1139,45 @@ const generateHorizontalPositionCandidates = (targetRect, calloutRect, viewportW
980
1139
  top,
981
1140
  left,
982
1141
  horizontalAlign: 'center',
983
- valid: isHorizontalPlacementValid(targetRect, calloutRect, placement, viewportWidth, padding, arrowSize),
1142
+ valid: isHorizontalPlacementValid(targetRect, calloutRect, placement, viewportWidth, padding, arrowSize, containerRect),
984
1143
  };
985
1144
  });
986
1145
  };
987
- const generateAllPositionCandidates = (rectDimensions, viewport, alignment, hozOffset, padding, arrowSize) => {
1146
+ const generateAllPositionCandidates = (rectDimensions, viewport, alignment, hozOffset, padding, arrowSize, containerRect) => {
988
1147
  const { targetRect, calloutRect } = rectDimensions;
989
- const verticalCandidates = generateVerticalPositionCandidates(targetRect, calloutRect, viewport.height, viewport.width, alignment, hozOffset, padding, arrowSize);
990
- const horizontalCandidates = generateHorizontalPositionCandidates(targetRect, calloutRect, viewport.width, padding, arrowSize);
1148
+ const verticalCandidates = generateVerticalPositionCandidates(targetRect, calloutRect, viewport.height, viewport.width, alignment, hozOffset, padding, arrowSize, containerRect);
1149
+ const horizontalCandidates = generateHorizontalPositionCandidates(targetRect, calloutRect, viewport.width, padding, arrowSize, containerRect);
991
1150
  return [...verticalCandidates, ...horizontalCandidates];
992
1151
  };
993
- // ============================================================================
994
- // Position Selection
995
- // ============================================================================
1152
+
996
1153
  const selectBestPosition = (candidates) => {
997
1154
  return candidates.find((p) => p.valid) || candidates[0];
998
1155
  };
999
- // ============================================================================
1000
- // Viewport Boundary Adjustment
1001
- // ============================================================================
1002
- const constrainToViewport = (position, calloutRect, viewport, padding) => {
1156
+ const constrainToViewport = (position, calloutRect, viewport, padding, containerRect) => {
1157
+ if (containerRect) {
1158
+ const left = Math.max(containerRect.left + padding, Math.min(position.left, containerRect.right - calloutRect.width - padding));
1159
+ const top = Math.max(containerRect.top + padding, Math.min(position.top, containerRect.bottom - calloutRect.height - padding));
1160
+ return { top, left };
1161
+ }
1003
1162
  const left = Math.max(padding, Math.min(position.left, viewport.width - calloutRect.width - padding));
1004
1163
  const top = Math.max(padding, Math.min(position.top, viewport.height - calloutRect.height - padding));
1005
1164
  return { top, left };
1006
1165
  };
1007
- // ============================================================================
1008
- // Main Function
1009
- // ============================================================================
1010
- const calcCalloutPosition = ({ targetElm, calloutElm, setPosition, hozOffset = HORIZONTAL_OFFSET, alignment = 'center', }) => {
1166
+
1167
+ const calcCalloutPosition = ({ targetElm, calloutElm, setPosition, hozOffset = HORIZONTAL_OFFSET, alignment = 'center', containerElm, }) => {
1011
1168
  return () => {
1012
1169
  // 1. Get dimensions
1013
1170
  const rectDimensions = getElementDimensions(targetElm, calloutElm);
1014
- const viewport = getViewportDimensions();
1171
+ const viewport = getViewportDimensions(containerElm);
1172
+ const containerRect = containerElm?.getBoundingClientRect();
1015
1173
  const padding = PADDING;
1016
1174
  const arrowSize = ARROW_SIZE;
1017
1175
  // 2. Generate all position candidates
1018
- const candidates = generateAllPositionCandidates(rectDimensions, viewport, alignment, hozOffset, padding, arrowSize);
1176
+ const candidates = generateAllPositionCandidates(rectDimensions, viewport, alignment, hozOffset, padding, arrowSize, containerRect);
1019
1177
  // 3. Select best position
1020
1178
  const bestPosition = selectBestPosition(candidates);
1021
1179
  // 4. Constrain to viewport
1022
- const constrainedPosition = constrainToViewport({ top: bestPosition.top, left: bestPosition.left }, rectDimensions.calloutRect, viewport, padding);
1180
+ const constrainedPosition = constrainToViewport({ top: bestPosition.top, left: bestPosition.left }, rectDimensions.calloutRect, viewport, padding, containerRect);
1023
1181
  // 5. Create final position object
1024
1182
  const finalPosition = {
1025
1183
  top: constrainedPosition.top,
@@ -1031,124 +1189,6 @@ const calcCalloutPosition = ({ targetElm, calloutElm, setPosition, hozOffset = H
1031
1189
  };
1032
1190
  };
1033
1191
 
1034
- function getElementLayout(element) {
1035
- if (!element?.getBoundingClientRect)
1036
- return null;
1037
- const rect = element.getBoundingClientRect();
1038
- if (rect.width === 0 && rect.height === 0)
1039
- return null;
1040
- return {
1041
- top: rect.top,
1042
- left: rect.left,
1043
- width: rect.width,
1044
- height: rect.height,
1045
- };
1046
- }
1047
- const getElementAtPoint = (doc, x, y) => {
1048
- let el = null;
1049
- if ('caretPositionFromPoint' in doc) {
1050
- el = doc.caretPositionFromPoint(x, y)?.offsetNode ?? null;
1051
- }
1052
- el = el ?? doc.elementFromPoint(x, y);
1053
- let element = el;
1054
- while (element && element.nodeType === Node.TEXT_NODE) {
1055
- element = element.parentElement;
1056
- }
1057
- return element;
1058
- };
1059
- function getElementHash(element) {
1060
- return (element.getAttribute('data-clarity-hash') ||
1061
- element.getAttribute('data-clarity-hashalpha') ||
1062
- element.getAttribute('data-clarity-hashbeta'));
1063
- }
1064
- const getElementRank = (hash, elements) => {
1065
- if (!elements)
1066
- return 0;
1067
- return elements.findIndex((e) => e.hash === hash) + 1;
1068
- };
1069
- const buildElementInfo = (hash, rect, heatmapInfo) => {
1070
- if (!rect || !heatmapInfo)
1071
- return null;
1072
- const info = heatmapInfo.elementMapInfo?.[hash];
1073
- if (!info)
1074
- return null;
1075
- const rank = getElementRank(hash, heatmapInfo.sortedElements);
1076
- const clicks = info.totalclicks ?? 0;
1077
- const selector = info.selector ?? '';
1078
- const baseInfo = {
1079
- hash,
1080
- clicks,
1081
- rank,
1082
- selector,
1083
- };
1084
- return {
1085
- ...baseInfo,
1086
- ...rect,
1087
- };
1088
- };
1089
-
1090
- function findLastSizeOfDom(data) {
1091
- const listDocs = data
1092
- .filter((item) => item.doc?.find((doc) => doc.data.width && doc.data.height))
1093
- .flatMap((item) => item.doc?.flatMap((doc) => doc.data));
1094
- const lastDoc = listDocs?.[listDocs.length - 1];
1095
- const docSize = {
1096
- width: lastDoc?.width,
1097
- height: lastDoc?.height,
1098
- };
1099
- const listResizes = data.filter((item) => !!item.resize).flatMap((item) => item.resize);
1100
- const lastResizeEvent = listResizes?.[listResizes.length - 1];
1101
- const resize = {
1102
- width: lastResizeEvent?.data.width,
1103
- height: lastResizeEvent?.data.height,
1104
- };
1105
- return {
1106
- doc: docSize,
1107
- resize: resize,
1108
- size: {
1109
- width: resize.width || docSize.width,
1110
- height: resize.height || docSize.height,
1111
- },
1112
- };
1113
- }
1114
- function decodePayloads(payload) {
1115
- try {
1116
- return decode(payload);
1117
- }
1118
- catch (error) {
1119
- return null;
1120
- }
1121
- }
1122
-
1123
- function calculateRankPosition(rect, widthScale) {
1124
- const top = rect.top <= 18 ? rect.top + 3 : rect.top - 18;
1125
- const left = rect.left <= 18 ? rect.left + 3 : rect.left - 18;
1126
- return {
1127
- transform: `scale(${1.2 * widthScale})`,
1128
- top: Number.isNaN(top) ? undefined : top,
1129
- left: Number.isNaN(left) ? undefined : left,
1130
- };
1131
- }
1132
- function isElementInViewport(elementRect, visualRef, scale) {
1133
- if (!elementRect)
1134
- return false;
1135
- const visualRect = visualRef.current?.getBoundingClientRect();
1136
- if (!visualRect)
1137
- return false;
1138
- // Element position relative to the document (or container's content)
1139
- const elementTop = elementRect.top * scale;
1140
- const elementBottom = (elementRect.top + elementRect.height) * scale;
1141
- // Current scroll position
1142
- const scrollTop = visualRef.current?.scrollTop || 0;
1143
- const viewportHeight = visualRect.height;
1144
- // Visible viewport range in the scrollable content
1145
- const viewportTop = scrollTop;
1146
- const viewportBottom = scrollTop + viewportHeight;
1147
- // Check if element is within the visible viewport
1148
- // Element is visible if it overlaps with the viewport
1149
- return elementBottom > viewportTop && elementTop < viewportBottom;
1150
- }
1151
-
1152
1192
  class IframeNavigationBlockerV2 {
1153
1193
  doc;
1154
1194
  win;
@@ -2018,11 +2058,12 @@ const useHoveredElement = ({ iframeRef, getRect }) => {
2018
2058
  return;
2019
2059
  }
2020
2060
  const hash = getElementHash(targetElement);
2021
- if (!!hash)
2061
+ if (hash)
2022
2062
  return hash;
2023
2063
  reset();
2024
2064
  return;
2025
- }, [dataInfo, iframeRef, getRect, widthScale, reset]);
2065
+ }, [dataInfo, iframeRef, widthScale, reset]);
2066
+ // eslint-disable-next-line react-hooks/exhaustive-deps
2026
2067
  const handleMouseMove = useCallback(debounce((event) => {
2027
2068
  if (!dataInfo) {
2028
2069
  reset();
@@ -2046,6 +2087,7 @@ const useHoveredElement = ({ iframeRef, getRect }) => {
2046
2087
  if (!hoveredElement?.hash)
2047
2088
  return;
2048
2089
  setSelectedElement(hoveredElement.hash);
2090
+ // eslint-disable-next-line react-hooks/exhaustive-deps
2049
2091
  }, [hoveredElement?.hash]);
2050
2092
  return {
2051
2093
  hoveredElement,
@@ -2071,7 +2113,6 @@ const findTargetElement = (doc, x, y, heatmapInfo) => {
2071
2113
  const element = elementsAtPoint[i];
2072
2114
  const elementHash = element.getAttribute(HEATMAP_ELEMENT_ATTRIBUTE);
2073
2115
  if (elementHash && heatmapInfo.elementMapInfo?.[elementHash]) {
2074
- heatmapInfo.elementMapInfo[elementHash];
2075
2116
  const boundingBox = getBoundingBox(element);
2076
2117
  if (boundingBox) {
2077
2118
  dataElement = element;
@@ -2079,7 +2120,7 @@ const findTargetElement = (doc, x, y, heatmapInfo) => {
2079
2120
  }
2080
2121
  }
2081
2122
  }
2082
- if (!!dataElement) {
2123
+ if (dataElement) {
2083
2124
  return dataElement;
2084
2125
  }
2085
2126
  let targetElement = getElementAtPoint(doc, x, y);
@@ -2733,7 +2774,7 @@ const useWrapperRefHeight = (props) => {
2733
2774
  return {};
2734
2775
  };
2735
2776
 
2736
- const useZonePositions = (options) => {
2777
+ const useZonePositions = (_options) => {
2737
2778
  const { iframeHeight } = useHeatmapViz();
2738
2779
  const getZonePosition = useCallback((zone) => {
2739
2780
  if (!iframeHeight) {
@@ -3188,7 +3229,7 @@ function withPerformanceTracking(Component, options = {}) {
3188
3229
  const name = componentName || Component.displayName || Component.name || 'Unknown';
3189
3230
  const viewId = viewIdProp in props ? props[viewIdProp] : undefined;
3190
3231
  if (trackProps) {
3191
- useWhyDidYouUpdate(name, props, viewId);
3232
+ useWhyDidYouUpdate(name, props, viewId); // eslint-disable-line react-hooks/rules-of-hooks
3192
3233
  }
3193
3234
  return jsx(Component, { ...props });
3194
3235
  };
@@ -3261,16 +3302,10 @@ function trackStoreAction(storeName, action, viewId, metadata) {
3261
3302
  performanceLogger.log(metric);
3262
3303
  }
3263
3304
 
3264
- /**
3265
- * Get performance report as JSON string
3266
- */
3267
3305
  function getPerformanceReportJSON() {
3268
3306
  const report = performanceLogger.generateReport();
3269
3307
  return JSON.stringify(report, null, 2);
3270
3308
  }
3271
- /**
3272
- * Download performance report as JSON file
3273
- */
3274
3309
  function downloadPerformanceReport(filename = 'heatmap-performance-report.json') {
3275
3310
  const report = performanceLogger.generateReport();
3276
3311
  const blob = new Blob([JSON.stringify(report, null, 2)], { type: 'application/json' });
@@ -3281,9 +3316,6 @@ function downloadPerformanceReport(filename = 'heatmap-performance-report.json')
3281
3316
  link.click();
3282
3317
  URL.revokeObjectURL(url);
3283
3318
  }
3284
- /**
3285
- * Send performance report to external endpoint
3286
- */
3287
3319
  async function sendPerformanceReport(endpoint) {
3288
3320
  const report = performanceLogger.generateReport();
3289
3321
  try {
@@ -3303,9 +3335,6 @@ async function sendPerformanceReport(endpoint) {
3303
3335
  throw error;
3304
3336
  }
3305
3337
  }
3306
- /**
3307
- * Print performance summary to console
3308
- */
3309
3338
  function printPerformanceSummary() {
3310
3339
  const report = performanceLogger.generateReport();
3311
3340
  console.group('📊 Performance Summary');
@@ -3331,9 +3360,6 @@ function printPerformanceSummary() {
3331
3360
  }
3332
3361
  console.groupEnd();
3333
3362
  }
3334
- /**
3335
- * Get performance metrics filtered by viewId
3336
- */
3337
3363
  function getMetricsByViewId(viewId) {
3338
3364
  const allMetrics = performanceLogger.getMetrics();
3339
3365
  const filteredMetrics = allMetrics.filter((m) => {
@@ -3349,17 +3375,28 @@ function getMetricsByViewId(viewId) {
3349
3375
  totalHookCalls: filteredMetrics.filter((m) => m.type === 'hook').length,
3350
3376
  totalStoreUpdates: filteredMetrics.filter((m) => m.type === 'store').length,
3351
3377
  averageRenderTime: 0, // Recalculate if needed
3352
- viewMetrics: { [viewId]: report.summary.viewMetrics[viewId] || { renders: 0, hookCalls: 0, storeUpdates: 0 } },
3378
+ viewMetrics: {
3379
+ [viewId]: report.summary.viewMetrics[viewId] || {
3380
+ renders: 0,
3381
+ hookCalls: 0,
3382
+ storeUpdates: 0,
3383
+ },
3384
+ },
3353
3385
  },
3354
3386
  };
3355
3387
  }
3356
- /**
3357
- * Compare performance between two viewIds
3358
- */
3359
3388
  function compareViewPerformance(viewId1, viewId2) {
3360
3389
  const report = performanceLogger.generateReport();
3361
- const view1Metrics = report.summary.viewMetrics[viewId1] || { renders: 0, hookCalls: 0, storeUpdates: 0 };
3362
- const view2Metrics = report.summary.viewMetrics[viewId2] || { renders: 0, hookCalls: 0, storeUpdates: 0 };
3390
+ const view1Metrics = report.summary.viewMetrics[viewId1] || {
3391
+ renders: 0,
3392
+ hookCalls: 0,
3393
+ storeUpdates: 0,
3394
+ };
3395
+ const view2Metrics = report.summary.viewMetrics[viewId2] || {
3396
+ renders: 0,
3397
+ hookCalls: 0,
3398
+ storeUpdates: 0,
3399
+ };
3363
3400
  return {
3364
3401
  view1: view1Metrics,
3365
3402
  view2: view2Metrics,
@@ -3382,7 +3419,7 @@ const BoxStack = forwardRef(({ children, ...props }, ref) => {
3382
3419
  const style = props.style || {};
3383
3420
  const gap = props.gap || 0;
3384
3421
  const height = props.height || 'auto';
3385
- const isZIndexDefined = typeof props.zIndex !== undefined;
3422
+ const isZIndexDefined = typeof props.zIndex !== 'undefined';
3386
3423
  const zIndex = props.zIndex;
3387
3424
  const backgroundColor = props.backgroundColor || 'transparent';
3388
3425
  const styleGap = useMemo(() => {
@@ -3413,6 +3450,7 @@ const BoxStack = forwardRef(({ children, ...props }, ref) => {
3413
3450
  };
3414
3451
  return (jsx("div", { id: id, style: styleProps, ref: ref, children: children }));
3415
3452
  });
3453
+ BoxStack.displayName = 'BoxStack';
3416
3454
 
3417
3455
  const ContentTopBar = () => {
3418
3456
  const controls = useHeatmapControlStore((state) => state.controls);
@@ -3638,6 +3676,7 @@ const ElementCallout = (props) => {
3638
3676
  setPosition,
3639
3677
  hozOffset,
3640
3678
  alignment,
3679
+ containerElm: visualRef?.current,
3641
3680
  });
3642
3681
  positionFn();
3643
3682
  const handleUpdate = () => {
@@ -4214,4 +4253,4 @@ const HeatmapLayout = ({ data, clickmap, scrollmap, controls, dataInfo, }) => {
4214
4253
  }
4215
4254
  };
4216
4255
 
4217
- export { DEFAULT_SIDEBAR_WIDTH, DEFAULT_VIEW_ID, GraphView, HEATMAP_CONFIG, HEATMAP_IFRAME, HEATMAP_STYLE, HeatmapLayout, IClickType, IHeatmapType, IScrollType, ViewIdContext, Z_INDEX, compareViewPerformance, convertViewportToIframeCoords, createStorePerformanceTracker, downloadPerformanceReport, getCompareViewId, getCompareViewIndex, getMetricsByViewId, getPerformanceReportJSON, getScrollGradientColor, isCompareViewId, performanceLogger, printPerformanceSummary, sendPerformanceReport, trackStoreAction, useClickedElement, useElementCalloutVisible, useHeatmapCompareStore, useHeatmapConfigStore, useHeatmapCopyView, useHeatmapData, useHeatmapDataStore, useHeatmapEffects, useHeatmapElementPosition, useHeatmapInteraction, useHeatmapInteractionStore, useHeatmapLiveStore, useHeatmapScale, useHeatmapSingleStore, useHeatmapViz, useHeatmapVizRender, useHeatmapVizScrollmap, useHeatmapVizScrollmapStore, useHeatmapVizStore, useHoveredElement, useIsCompareMode, useMeasureFunction, useRegisterConfig, useRegisterControl, useRegisterData, useRegisterHeatmap, useRenderCount, useScrollmapZones, useTrackHookCall, useViewId, useVizLiveRender, useWhyDidYouUpdate, useWrapperRefHeight, useZonePositions, withPerformanceTracking };
4256
+ export { DEFAULT_SIDEBAR_WIDTH, DEFAULT_VIEW_ID, GraphView, HEATMAP_CONFIG, HEATMAP_IFRAME, HEATMAP_STYLE, HeatmapLayout, IClickType, IHeatmapType, IScrollType, ViewIdContext, Z_INDEX, compareViewPerformance, convertViewportToIframeCoords, createStorePerformanceTracker, downloadPerformanceReport, getCompareViewId, getCompareViewIndex, getMetricsByViewId, getPerformanceReportJSON, getScrollGradientColor, isCompareViewId, performanceLogger, printPerformanceSummary, sendPerformanceReport, trackStoreAction, useClickedElement, useDebounceCallback, useElementCalloutVisible, useHeatmapCompareStore, useHeatmapConfigStore, useHeatmapCopyView, useHeatmapData, useHeatmapDataStore, useHeatmapEffects, useHeatmapElementPosition, useHeatmapInteraction, useHeatmapInteractionStore, useHeatmapLiveStore, useHeatmapScale, useHeatmapSingleStore, useHeatmapViz, useHeatmapVizRender, useHeatmapVizScrollmap, useHeatmapVizScrollmapStore, useHeatmapVizStore, useHoveredElement, useIsCompareMode, useMeasureFunction, useRegisterConfig, useRegisterControl, useRegisterData, useRegisterHeatmap, useRenderCount, useScrollmapZones, useTrackHookCall, useViewId, useVizLiveRender, useWhyDidYouUpdate, useWrapperRefHeight, useZonePositions, withPerformanceTracking };