@gemx-dev/heatmap-react 3.5.46 → 3.5.47

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 (493) hide show
  1. package/dist/esm/components/Layout/HeatmapLayout.d.ts +3 -2
  2. package/dist/esm/components/Layout/HeatmapLayout.d.ts.map +1 -1
  3. package/dist/esm/components/VizDom/VizDomRenderer.d.ts.map +1 -1
  4. package/dist/esm/components/VizElement/HeatmapElements.d.ts +2 -2
  5. package/dist/esm/components/VizElement/HeatmapElements.d.ts.map +1 -1
  6. package/dist/esm/components/VizElement/HeatmapExample.d.ts +2 -0
  7. package/dist/esm/components/VizElement/HeatmapExample.d.ts.map +1 -0
  8. package/dist/esm/components/VizElement/VizElements.d.ts.map +1 -1
  9. package/dist/esm/components/VizLive/VizLiveHeatmap.d.ts.map +1 -1
  10. package/dist/esm/components/VizLive/VizLiveRenderer.d.ts.map +1 -1
  11. package/dist/esm/components/VizScrollmap/AverageFoldLine.d.ts +8 -0
  12. package/dist/esm/components/VizScrollmap/AverageFoldLine.d.ts.map +1 -0
  13. package/dist/esm/components/VizScrollmap/HoverZones.d.ts +10 -0
  14. package/dist/esm/components/VizScrollmap/HoverZones.d.ts.map +1 -0
  15. package/dist/esm/components/VizScrollmap/MetricRow.d.ts +1 -0
  16. package/dist/esm/components/VizScrollmap/MetricRow.d.ts.map +1 -0
  17. package/dist/esm/components/VizScrollmap/ScrollMapMinimap.d.ts +8 -0
  18. package/dist/esm/components/VizScrollmap/ScrollMapMinimap.d.ts.map +1 -0
  19. package/dist/esm/components/VizScrollmap/ScrollMapOverlay.d.ts +7 -0
  20. package/dist/esm/components/VizScrollmap/ScrollMapOverlay.d.ts.map +1 -0
  21. package/dist/esm/components/VizScrollmap/ScrollZoneHoverArea.d.ts +14 -0
  22. package/dist/esm/components/VizScrollmap/ScrollZoneHoverArea.d.ts.map +1 -0
  23. package/dist/esm/components/VizScrollmap/ScrollZoneTooltip.d.ts +10 -0
  24. package/dist/esm/components/VizScrollmap/ScrollZoneTooltip.d.ts.map +1 -0
  25. package/dist/esm/components/VizScrollmap/ScrollmapMarker.d.ts +7 -0
  26. package/dist/esm/components/VizScrollmap/ScrollmapMarker.d.ts.map +1 -0
  27. package/dist/esm/components/VizScrollmap/VizScrollMap.d.ts +7 -0
  28. package/dist/esm/components/VizScrollmap/VizScrollMap.d.ts.map +1 -0
  29. package/{src/components/VizScrollmap/index.ts → dist/esm/components/VizScrollmap/index.d.ts} +1 -0
  30. package/dist/esm/components/VizScrollmap/index.d.ts.map +1 -0
  31. package/dist/esm/components/VizScrollmapV2/ScrollmapOverlayV2.d.ts +5 -0
  32. package/dist/esm/components/VizScrollmapV2/ScrollmapOverlayV2.d.ts.map +1 -0
  33. package/{src/components/VizScrollmapV2/index.ts → dist/esm/components/VizScrollmapV2/index.d.ts} +1 -0
  34. package/dist/esm/components/VizScrollmapV2/index.d.ts.map +1 -0
  35. package/dist/esm/components/VizScrollmapV2/scrollmap.types.d.ts +18 -0
  36. package/dist/esm/components/VizScrollmapV2/scrollmap.types.d.ts.map +1 -0
  37. package/dist/esm/components/VizScrollmapV2/useScrollmapOverlay.d.ts +16 -0
  38. package/dist/esm/components/VizScrollmapV2/useScrollmapOverlay.d.ts.map +1 -0
  39. package/dist/esm/configs/style.d.ts +2 -0
  40. package/dist/esm/configs/style.d.ts.map +1 -1
  41. package/dist/esm/helpers/elm-getter.d.ts +2 -2
  42. package/dist/esm/helpers/elm-getter.d.ts.map +1 -1
  43. package/dist/esm/helpers/iframe-helper/fixer.d.ts +18 -0
  44. package/dist/esm/helpers/iframe-helper/fixer.d.ts.map +1 -0
  45. package/dist/esm/helpers/iframe-helper/index.d.ts +2 -0
  46. package/dist/esm/helpers/iframe-helper/index.d.ts.map +1 -0
  47. package/dist/esm/helpers/iframe-helper/init.d.ts +5 -0
  48. package/dist/esm/helpers/iframe-helper/init.d.ts.map +1 -0
  49. package/dist/esm/helpers/iframe-helper/navigation-blocker-v2.d.ts +28 -0
  50. package/dist/esm/helpers/iframe-helper/navigation-blocker-v2.d.ts.map +1 -0
  51. package/dist/esm/helpers/iframe-helper/navigation-blocker.d.ts +20 -0
  52. package/dist/esm/helpers/iframe-helper/navigation-blocker.d.ts.map +1 -0
  53. package/dist/esm/helpers/iframe-helper/style-replacer.d.ts +25 -0
  54. package/dist/esm/helpers/iframe-helper/style-replacer.d.ts.map +1 -0
  55. package/dist/esm/helpers/index.d.ts +2 -2
  56. package/dist/esm/helpers/index.d.ts.map +1 -1
  57. package/dist/esm/helpers/viz-canvas/area-clustering.d.ts +44 -0
  58. package/dist/esm/helpers/viz-canvas/area-clustering.d.ts.map +1 -0
  59. package/dist/esm/helpers/viz-canvas/area-overlay-manager-v2.d.ts +17 -0
  60. package/dist/esm/helpers/viz-canvas/area-overlay-manager-v2.d.ts.map +1 -0
  61. package/dist/esm/helpers/viz-canvas/area-overlay-manager.d.ts +51 -0
  62. package/dist/esm/helpers/viz-canvas/area-overlay-manager.d.ts.map +1 -0
  63. package/dist/esm/helpers/viz-canvas/hierarchical-area-clustering.d.ts +73 -0
  64. package/dist/esm/helpers/viz-canvas/hierarchical-area-clustering.d.ts.map +1 -0
  65. package/{src/helpers/viz-canvas/index.ts → dist/esm/helpers/viz-canvas/index.d.ts} +1 -0
  66. package/dist/esm/helpers/viz-canvas/index.d.ts.map +1 -0
  67. package/dist/esm/hooks/index.d.ts +2 -1
  68. package/dist/esm/hooks/index.d.ts.map +1 -1
  69. package/dist/esm/hooks/register/useRegisterData.d.ts +2 -2
  70. package/dist/esm/hooks/register/useRegisterData.d.ts.map +1 -1
  71. package/dist/esm/hooks/register/useRegisterHeatmap.d.ts +7 -2
  72. package/dist/esm/hooks/register/useRegisterHeatmap.d.ts.map +1 -1
  73. package/dist/esm/hooks/viz-area/useAreaHeatmap.d.ts +59 -0
  74. package/dist/esm/hooks/viz-area/useAreaHeatmap.d.ts.map +1 -0
  75. package/dist/esm/hooks/viz-area/useAreaHeatmapManager.d.ts +77 -0
  76. package/dist/esm/hooks/viz-area/useAreaHeatmapManager.d.ts.map +1 -0
  77. package/dist/esm/hooks/viz-canvas/index.d.ts +1 -1
  78. package/dist/esm/hooks/viz-canvas/index.d.ts.map +1 -1
  79. package/dist/esm/hooks/viz-canvas/useAreamap.d.ts +14 -0
  80. package/dist/esm/hooks/viz-canvas/useAreamap.d.ts.map +1 -0
  81. package/dist/esm/hooks/viz-canvas/useClickmap.d.ts +3 -1
  82. package/dist/esm/hooks/viz-canvas/useClickmap.d.ts.map +1 -1
  83. package/dist/esm/hooks/viz-canvas/useHeatmapCanvas.d.ts +4 -0
  84. package/dist/esm/hooks/viz-canvas/useHeatmapCanvas.d.ts.map +1 -0
  85. package/dist/esm/hooks/viz-canvas/useScrollmap.d.ts +3 -1
  86. package/dist/esm/hooks/viz-canvas/useScrollmap.d.ts.map +1 -1
  87. package/dist/esm/hooks/{vix-elements → viz-elements}/index.d.ts.map +1 -1
  88. package/dist/esm/hooks/{vix-elements → viz-elements}/useClickedElement.d.ts.map +1 -1
  89. package/dist/esm/hooks/{vix-elements → viz-elements}/useElementCalloutVisible.d.ts.map +1 -1
  90. package/dist/esm/hooks/{vix-elements → viz-elements}/useHeatmapEffects.d.ts.map +1 -1
  91. package/dist/esm/hooks/{vix-elements → viz-elements}/useHeatmapElementPosition.d.ts.map +1 -1
  92. package/dist/esm/hooks/viz-elements/useHeatmapMouseHandler.d.ts +34 -0
  93. package/dist/esm/hooks/viz-elements/useHeatmapMouseHandler.d.ts.map +1 -0
  94. package/dist/esm/hooks/{vix-elements → viz-elements}/useHoveredElement.d.ts +4 -0
  95. package/dist/esm/hooks/viz-elements/useHoveredElement.d.ts.map +1 -0
  96. package/dist/esm/hooks/viz-live/index.d.ts +1 -1
  97. package/dist/{umd/hooks/viz-live/useIframeMessage.d.ts → esm/hooks/viz-live/useVizLiveIframeMsg.d.ts} +2 -10
  98. package/dist/esm/hooks/viz-live/useVizLiveIframeMsg.d.ts.map +1 -0
  99. package/dist/esm/hooks/viz-live/useVizLiveRender.d.ts +4 -0
  100. package/dist/esm/hooks/viz-live/useVizLiveRender.d.ts.map +1 -0
  101. package/dist/esm/hooks/viz-render/useHeatmapRender.d.ts.map +1 -1
  102. package/dist/esm/hooks/viz-scale/useContainerDimensions.d.ts.map +1 -1
  103. package/dist/esm/hooks/viz-scale/useHeatmapScale.d.ts +1 -1
  104. package/dist/esm/hooks/viz-scale/useHeatmapScale.d.ts.map +1 -1
  105. package/dist/esm/hooks/viz-scale/useObserveIframeHeight.d.ts +10 -0
  106. package/dist/esm/hooks/viz-scale/useObserveIframeHeight.d.ts.map +1 -0
  107. package/{src/hooks/viz-scrollmap/index.ts → dist/esm/hooks/viz-scrollmap/index.d.ts} +1 -0
  108. package/dist/esm/hooks/viz-scrollmap/index.d.ts.map +1 -0
  109. package/dist/esm/hooks/viz-scrollmap/useScrollmapZones.d.ts +29 -0
  110. package/dist/esm/hooks/viz-scrollmap/useScrollmapZones.d.ts.map +1 -0
  111. package/dist/esm/hooks/viz-scrollmap/useZonePositions.d.ts +12 -0
  112. package/dist/esm/hooks/viz-scrollmap/useZonePositions.d.ts.map +1 -0
  113. package/dist/esm/index.d.ts +1 -1
  114. package/dist/esm/index.d.ts.map +1 -1
  115. package/dist/esm/index.js +1181 -210
  116. package/dist/esm/index.mjs +1181 -210
  117. package/dist/esm/stores/config.d.ts +5 -1
  118. package/dist/esm/stores/config.d.ts.map +1 -1
  119. package/dist/esm/stores/data.d.ts +5 -3
  120. package/dist/esm/stores/data.d.ts.map +1 -1
  121. package/dist/esm/stores/index.d.ts +2 -0
  122. package/dist/esm/stores/index.d.ts.map +1 -1
  123. package/dist/esm/stores/interaction.d.ts.map +1 -1
  124. package/dist/esm/stores/mode-live.d.ts +4 -0
  125. package/dist/esm/stores/mode-live.d.ts.map +1 -1
  126. package/dist/esm/stores/mode-single.d.ts +9 -0
  127. package/dist/esm/stores/mode-single.d.ts.map +1 -0
  128. package/dist/esm/stores/viz-scrollmap.d.ts +11 -0
  129. package/dist/esm/stores/viz-scrollmap.d.ts.map +1 -0
  130. package/dist/esm/stores/viz.d.ts +0 -4
  131. package/dist/esm/stores/viz.d.ts.map +1 -1
  132. package/dist/esm/types/clarity.d.ts +5 -0
  133. package/dist/esm/types/clarity.d.ts.map +1 -1
  134. package/dist/esm/types/heatmap-info.d.ts +11 -0
  135. package/dist/esm/types/heatmap-info.d.ts.map +1 -0
  136. package/dist/esm/types/heatmap.d.ts +13 -0
  137. package/dist/esm/types/heatmap.d.ts.map +1 -1
  138. package/dist/esm/types/iframe-helper.d.ts +20 -0
  139. package/dist/esm/types/iframe-helper.d.ts.map +1 -0
  140. package/dist/esm/types/index.d.ts +4 -1
  141. package/dist/esm/types/index.d.ts.map +1 -1
  142. package/dist/esm/types/viz-canvas.d.ts +23 -0
  143. package/dist/esm/types/viz-canvas.d.ts.map +1 -0
  144. package/dist/esm/types/viz-element.d.ts +0 -6
  145. package/dist/esm/types/viz-element.d.ts.map +1 -1
  146. package/dist/esm/types/viz-scrollmap.d.ts +27 -0
  147. package/dist/esm/types/viz-scrollmap.d.ts.map +1 -0
  148. package/dist/umd/components/Layout/HeatmapLayout.d.ts +3 -2
  149. package/dist/umd/components/Layout/HeatmapLayout.d.ts.map +1 -1
  150. package/dist/umd/components/VizDom/VizDomRenderer.d.ts.map +1 -1
  151. package/dist/umd/components/VizElement/HeatmapElements.d.ts +2 -2
  152. package/dist/umd/components/VizElement/HeatmapElements.d.ts.map +1 -1
  153. package/dist/umd/components/VizElement/HeatmapExample.d.ts +2 -0
  154. package/dist/umd/components/VizElement/HeatmapExample.d.ts.map +1 -0
  155. package/dist/umd/components/VizElement/VizElements.d.ts.map +1 -1
  156. package/dist/umd/components/VizLive/VizLiveHeatmap.d.ts.map +1 -1
  157. package/dist/umd/components/VizLive/VizLiveRenderer.d.ts.map +1 -1
  158. package/dist/umd/components/VizScrollmap/AverageFoldLine.d.ts +8 -0
  159. package/dist/umd/components/VizScrollmap/AverageFoldLine.d.ts.map +1 -0
  160. package/dist/umd/components/VizScrollmap/HoverZones.d.ts +10 -0
  161. package/dist/umd/components/VizScrollmap/HoverZones.d.ts.map +1 -0
  162. package/dist/umd/components/VizScrollmap/MetricRow.d.ts +1 -0
  163. package/dist/umd/components/VizScrollmap/MetricRow.d.ts.map +1 -0
  164. package/dist/umd/components/VizScrollmap/ScrollMapMinimap.d.ts +8 -0
  165. package/dist/umd/components/VizScrollmap/ScrollMapMinimap.d.ts.map +1 -0
  166. package/dist/umd/components/VizScrollmap/ScrollMapOverlay.d.ts +7 -0
  167. package/dist/umd/components/VizScrollmap/ScrollMapOverlay.d.ts.map +1 -0
  168. package/dist/umd/components/VizScrollmap/ScrollZoneHoverArea.d.ts +14 -0
  169. package/dist/umd/components/VizScrollmap/ScrollZoneHoverArea.d.ts.map +1 -0
  170. package/dist/umd/components/VizScrollmap/ScrollZoneTooltip.d.ts +10 -0
  171. package/dist/umd/components/VizScrollmap/ScrollZoneTooltip.d.ts.map +1 -0
  172. package/dist/umd/components/VizScrollmap/ScrollmapMarker.d.ts +7 -0
  173. package/dist/umd/components/VizScrollmap/ScrollmapMarker.d.ts.map +1 -0
  174. package/dist/umd/components/VizScrollmap/VizScrollMap.d.ts +7 -0
  175. package/dist/umd/components/VizScrollmap/VizScrollMap.d.ts.map +1 -0
  176. package/dist/umd/components/VizScrollmap/index.d.ts +2 -0
  177. package/dist/umd/components/VizScrollmap/index.d.ts.map +1 -0
  178. package/dist/umd/components/VizScrollmapV2/ScrollmapOverlayV2.d.ts +5 -0
  179. package/dist/umd/components/VizScrollmapV2/ScrollmapOverlayV2.d.ts.map +1 -0
  180. package/dist/umd/components/VizScrollmapV2/index.d.ts +2 -0
  181. package/dist/umd/components/VizScrollmapV2/index.d.ts.map +1 -0
  182. package/dist/umd/components/VizScrollmapV2/scrollmap.types.d.ts +18 -0
  183. package/dist/umd/components/VizScrollmapV2/scrollmap.types.d.ts.map +1 -0
  184. package/dist/umd/components/VizScrollmapV2/useScrollmapOverlay.d.ts +16 -0
  185. package/dist/umd/components/VizScrollmapV2/useScrollmapOverlay.d.ts.map +1 -0
  186. package/dist/umd/configs/style.d.ts +2 -0
  187. package/dist/umd/configs/style.d.ts.map +1 -1
  188. package/dist/umd/helpers/elm-getter.d.ts +2 -2
  189. package/dist/umd/helpers/elm-getter.d.ts.map +1 -1
  190. package/dist/umd/helpers/iframe-helper/fixer.d.ts +18 -0
  191. package/dist/umd/helpers/iframe-helper/fixer.d.ts.map +1 -0
  192. package/dist/umd/helpers/iframe-helper/index.d.ts +2 -0
  193. package/dist/umd/helpers/iframe-helper/index.d.ts.map +1 -0
  194. package/dist/umd/helpers/iframe-helper/init.d.ts +5 -0
  195. package/dist/umd/helpers/iframe-helper/init.d.ts.map +1 -0
  196. package/dist/umd/helpers/iframe-helper/navigation-blocker-v2.d.ts +28 -0
  197. package/dist/umd/helpers/iframe-helper/navigation-blocker-v2.d.ts.map +1 -0
  198. package/dist/umd/helpers/iframe-helper/navigation-blocker.d.ts +20 -0
  199. package/dist/umd/helpers/iframe-helper/navigation-blocker.d.ts.map +1 -0
  200. package/dist/umd/helpers/iframe-helper/style-replacer.d.ts +25 -0
  201. package/dist/umd/helpers/iframe-helper/style-replacer.d.ts.map +1 -0
  202. package/dist/umd/helpers/index.d.ts +2 -2
  203. package/dist/umd/helpers/index.d.ts.map +1 -1
  204. package/dist/umd/helpers/viz-canvas/area-clustering.d.ts +44 -0
  205. package/dist/umd/helpers/viz-canvas/area-clustering.d.ts.map +1 -0
  206. package/dist/umd/helpers/viz-canvas/area-overlay-manager-v2.d.ts +17 -0
  207. package/dist/umd/helpers/viz-canvas/area-overlay-manager-v2.d.ts.map +1 -0
  208. package/dist/umd/helpers/viz-canvas/area-overlay-manager.d.ts +51 -0
  209. package/dist/umd/helpers/viz-canvas/area-overlay-manager.d.ts.map +1 -0
  210. package/dist/umd/helpers/viz-canvas/hierarchical-area-clustering.d.ts +73 -0
  211. package/dist/umd/helpers/viz-canvas/hierarchical-area-clustering.d.ts.map +1 -0
  212. package/dist/umd/helpers/viz-canvas/index.d.ts +3 -0
  213. package/dist/umd/helpers/viz-canvas/index.d.ts.map +1 -0
  214. package/dist/umd/hooks/index.d.ts +2 -1
  215. package/dist/umd/hooks/index.d.ts.map +1 -1
  216. package/dist/umd/hooks/register/useRegisterData.d.ts +2 -2
  217. package/dist/umd/hooks/register/useRegisterData.d.ts.map +1 -1
  218. package/dist/umd/hooks/register/useRegisterHeatmap.d.ts +7 -2
  219. package/dist/umd/hooks/register/useRegisterHeatmap.d.ts.map +1 -1
  220. package/dist/umd/hooks/viz-area/useAreaHeatmap.d.ts +59 -0
  221. package/dist/umd/hooks/viz-area/useAreaHeatmap.d.ts.map +1 -0
  222. package/dist/umd/hooks/viz-area/useAreaHeatmapManager.d.ts +77 -0
  223. package/dist/umd/hooks/viz-area/useAreaHeatmapManager.d.ts.map +1 -0
  224. package/dist/umd/hooks/viz-canvas/index.d.ts +1 -1
  225. package/dist/umd/hooks/viz-canvas/index.d.ts.map +1 -1
  226. package/dist/umd/hooks/viz-canvas/useAreamap.d.ts +14 -0
  227. package/dist/umd/hooks/viz-canvas/useAreamap.d.ts.map +1 -0
  228. package/dist/umd/hooks/viz-canvas/useClickmap.d.ts +3 -1
  229. package/dist/umd/hooks/viz-canvas/useClickmap.d.ts.map +1 -1
  230. package/dist/umd/hooks/viz-canvas/useHeatmapCanvas.d.ts +4 -0
  231. package/dist/umd/hooks/viz-canvas/useHeatmapCanvas.d.ts.map +1 -0
  232. package/dist/umd/hooks/viz-canvas/useScrollmap.d.ts +3 -1
  233. package/dist/umd/hooks/viz-canvas/useScrollmap.d.ts.map +1 -1
  234. package/dist/umd/hooks/{vix-elements → viz-elements}/index.d.ts.map +1 -1
  235. package/dist/umd/hooks/{vix-elements → viz-elements}/useClickedElement.d.ts.map +1 -1
  236. package/dist/umd/hooks/{vix-elements → viz-elements}/useElementCalloutVisible.d.ts.map +1 -1
  237. package/dist/umd/hooks/{vix-elements → viz-elements}/useHeatmapEffects.d.ts.map +1 -1
  238. package/dist/umd/hooks/{vix-elements → viz-elements}/useHeatmapElementPosition.d.ts.map +1 -1
  239. package/dist/umd/hooks/viz-elements/useHeatmapMouseHandler.d.ts +34 -0
  240. package/dist/umd/hooks/viz-elements/useHeatmapMouseHandler.d.ts.map +1 -0
  241. package/dist/umd/hooks/{vix-elements → viz-elements}/useHoveredElement.d.ts +4 -0
  242. package/dist/umd/hooks/viz-elements/useHoveredElement.d.ts.map +1 -0
  243. package/dist/umd/hooks/viz-live/index.d.ts +1 -1
  244. package/dist/{esm/hooks/viz-live/useIframeMessage.d.ts → umd/hooks/viz-live/useVizLiveIframeMsg.d.ts} +2 -10
  245. package/dist/umd/hooks/viz-live/useVizLiveIframeMsg.d.ts.map +1 -0
  246. package/dist/umd/hooks/viz-live/useVizLiveRender.d.ts +4 -0
  247. package/dist/umd/hooks/viz-live/useVizLiveRender.d.ts.map +1 -0
  248. package/dist/umd/hooks/viz-render/useHeatmapRender.d.ts.map +1 -1
  249. package/dist/umd/hooks/viz-scale/useContainerDimensions.d.ts.map +1 -1
  250. package/dist/umd/hooks/viz-scale/useHeatmapScale.d.ts +1 -1
  251. package/dist/umd/hooks/viz-scale/useHeatmapScale.d.ts.map +1 -1
  252. package/dist/umd/hooks/viz-scale/useObserveIframeHeight.d.ts +10 -0
  253. package/dist/umd/hooks/viz-scale/useObserveIframeHeight.d.ts.map +1 -0
  254. package/dist/umd/hooks/viz-scrollmap/index.d.ts +3 -0
  255. package/dist/umd/hooks/viz-scrollmap/index.d.ts.map +1 -0
  256. package/dist/umd/hooks/viz-scrollmap/useScrollmapZones.d.ts +29 -0
  257. package/dist/umd/hooks/viz-scrollmap/useScrollmapZones.d.ts.map +1 -0
  258. package/dist/umd/hooks/viz-scrollmap/useZonePositions.d.ts +12 -0
  259. package/dist/umd/hooks/viz-scrollmap/useZonePositions.d.ts.map +1 -0
  260. package/dist/umd/index.d.ts +1 -1
  261. package/dist/umd/index.d.ts.map +1 -1
  262. package/dist/umd/index.js +2 -2
  263. package/dist/umd/stores/config.d.ts +5 -1
  264. package/dist/umd/stores/config.d.ts.map +1 -1
  265. package/dist/umd/stores/data.d.ts +5 -3
  266. package/dist/umd/stores/data.d.ts.map +1 -1
  267. package/dist/umd/stores/index.d.ts +2 -0
  268. package/dist/umd/stores/index.d.ts.map +1 -1
  269. package/dist/umd/stores/interaction.d.ts.map +1 -1
  270. package/dist/umd/stores/mode-live.d.ts +4 -0
  271. package/dist/umd/stores/mode-live.d.ts.map +1 -1
  272. package/dist/umd/stores/mode-single.d.ts +9 -0
  273. package/dist/umd/stores/mode-single.d.ts.map +1 -0
  274. package/dist/umd/stores/viz-scrollmap.d.ts +11 -0
  275. package/dist/umd/stores/viz-scrollmap.d.ts.map +1 -0
  276. package/dist/umd/stores/viz.d.ts +0 -4
  277. package/dist/umd/stores/viz.d.ts.map +1 -1
  278. package/dist/umd/types/clarity.d.ts +5 -0
  279. package/dist/umd/types/clarity.d.ts.map +1 -1
  280. package/dist/umd/types/heatmap-info.d.ts +11 -0
  281. package/dist/umd/types/heatmap-info.d.ts.map +1 -0
  282. package/dist/umd/types/heatmap.d.ts +13 -0
  283. package/dist/umd/types/heatmap.d.ts.map +1 -1
  284. package/dist/umd/types/iframe-helper.d.ts +20 -0
  285. package/dist/umd/types/iframe-helper.d.ts.map +1 -0
  286. package/dist/umd/types/index.d.ts +4 -1
  287. package/dist/umd/types/index.d.ts.map +1 -1
  288. package/dist/umd/types/viz-canvas.d.ts +23 -0
  289. package/dist/umd/types/viz-canvas.d.ts.map +1 -0
  290. package/dist/umd/types/viz-element.d.ts +0 -6
  291. package/dist/umd/types/viz-element.d.ts.map +1 -1
  292. package/dist/umd/types/viz-scrollmap.d.ts +27 -0
  293. package/dist/umd/types/viz-scrollmap.d.ts.map +1 -0
  294. package/package.json +14 -11
  295. package/dist/esm/components/Layout/ContentHeader.d.ts +0 -4
  296. package/dist/esm/components/Layout/ContentHeader.d.ts.map +0 -1
  297. package/dist/esm/components/Layout/VizMode.d.ts +0 -2
  298. package/dist/esm/components/Layout/VizMode.d.ts.map +0 -1
  299. package/dist/esm/components/Test.d.ts +0 -121
  300. package/dist/esm/components/Test.d.ts.map +0 -1
  301. package/dist/esm/components/VizDom/VizDomContainer.d.ts +0 -6
  302. package/dist/esm/components/VizDom/VizDomContainer.d.ts.map +0 -1
  303. package/dist/esm/components/VizElement/ClickedElementOverlay.d.ts +0 -17
  304. package/dist/esm/components/VizElement/ClickedElementOverlay.d.ts.map +0 -1
  305. package/dist/esm/components/VizElement/HoveredElementOverlay.d.ts +0 -12
  306. package/dist/esm/components/VizElement/HoveredElementOverlay.d.ts.map +0 -1
  307. package/dist/esm/components/VizElement/MissingElementMessage.d.ts +0 -7
  308. package/dist/esm/components/VizElement/MissingElementMessage.d.ts.map +0 -1
  309. package/dist/esm/components/VizElement/temp/ClarityVisualizer.d.ts +0 -150
  310. package/dist/esm/components/VizElement/temp/ClarityVisualizer.d.ts.map +0 -1
  311. package/dist/esm/components/VizElement/temp/VizElementRank.d.ts +0 -74
  312. package/dist/esm/components/VizElement/temp/VizElementRank.d.ts.map +0 -1
  313. package/dist/esm/components/VizLive/VizLive.d.ts +0 -2
  314. package/dist/esm/components/VizLive/VizLive.d.ts.map +0 -1
  315. package/dist/esm/helpers/viewport-fixer.d.ts +0 -13
  316. package/dist/esm/helpers/viewport-fixer.d.ts.map +0 -1
  317. package/dist/esm/helpers/viewport-replacer.d.ts +0 -26
  318. package/dist/esm/helpers/viewport-replacer.d.ts.map +0 -1
  319. package/dist/esm/hooks/vix-elements/useHoveredElement.d.ts.map +0 -1
  320. package/dist/esm/hooks/viz-canvas/useHeatmapVizCanvas.d.ts +0 -2
  321. package/dist/esm/hooks/viz-canvas/useHeatmapVizCanvas.d.ts.map +0 -1
  322. package/dist/esm/hooks/viz-live/useIframeMessage.d.ts.map +0 -1
  323. package/dist/esm/hooks/viz-scale/useIframeHeight.d.ts +0 -10
  324. package/dist/esm/hooks/viz-scale/useIframeHeight.d.ts.map +0 -1
  325. package/dist/esm/types/viewport-fixer.d.ts +0 -31
  326. package/dist/esm/types/viewport-fixer.d.ts.map +0 -1
  327. package/dist/umd/components/Layout/ContentHeader.d.ts +0 -4
  328. package/dist/umd/components/Layout/ContentHeader.d.ts.map +0 -1
  329. package/dist/umd/components/Test.d.ts +0 -121
  330. package/dist/umd/components/Test.d.ts.map +0 -1
  331. package/dist/umd/components/VizDom/VizDomContainer.d.ts +0 -2
  332. package/dist/umd/components/VizDom/VizDomContainer.d.ts.map +0 -1
  333. package/dist/umd/components/VizElement/ClickedElementOverlay.d.ts +0 -17
  334. package/dist/umd/components/VizElement/ClickedElementOverlay.d.ts.map +0 -1
  335. package/dist/umd/components/VizElement/HoveredElementOverlay.d.ts +0 -12
  336. package/dist/umd/components/VizElement/HoveredElementOverlay.d.ts.map +0 -1
  337. package/dist/umd/components/VizElement/MissingElementMessage.d.ts +0 -7
  338. package/dist/umd/components/VizElement/MissingElementMessage.d.ts.map +0 -1
  339. package/dist/umd/components/VizElement/temp/ClarityVisualizer.d.ts +0 -150
  340. package/dist/umd/components/VizElement/temp/ClarityVisualizer.d.ts.map +0 -1
  341. package/dist/umd/components/VizElement/temp/VizElementRank.d.ts +0 -74
  342. package/dist/umd/components/VizElement/temp/VizElementRank.d.ts.map +0 -1
  343. package/dist/umd/helpers/viewport-fixer.d.ts +0 -13
  344. package/dist/umd/helpers/viewport-fixer.d.ts.map +0 -1
  345. package/dist/umd/helpers/viewport-replacer.d.ts +0 -26
  346. package/dist/umd/helpers/viewport-replacer.d.ts.map +0 -1
  347. package/dist/umd/hooks/vix-elements/useHoveredElement.d.ts.map +0 -1
  348. package/dist/umd/hooks/viz-canvas/useHeatmapVizCanvas.d.ts +0 -2
  349. package/dist/umd/hooks/viz-canvas/useHeatmapVizCanvas.d.ts.map +0 -1
  350. package/dist/umd/hooks/viz-live/useIframeMessage.d.ts.map +0 -1
  351. package/dist/umd/hooks/viz-scale/useIframeHeight.d.ts +0 -10
  352. package/dist/umd/hooks/viz-scale/useIframeHeight.d.ts.map +0 -1
  353. package/dist/umd/types/viewport-fixer.d.ts +0 -31
  354. package/dist/umd/types/viewport-fixer.d.ts.map +0 -1
  355. package/src/components/GraphView.tsx +0 -58
  356. package/src/components/Layout/ContentMetricBar.tsx +0 -23
  357. package/src/components/Layout/ContentToolbar.tsx +0 -22
  358. package/src/components/Layout/ContentTopBar.tsx +0 -24
  359. package/src/components/Layout/ContentVizByMode.tsx +0 -14
  360. package/src/components/Layout/HeatmapLayout.tsx +0 -60
  361. package/src/components/Layout/LeftSidebar.tsx +0 -44
  362. package/src/components/Layout/WrapperLayout.tsx +0 -12
  363. package/src/components/Layout/WrapperPreview.tsx +0 -24
  364. package/src/components/Layout/index.ts +0 -1
  365. package/src/components/VizDom/ReplayControls.tsx +0 -48
  366. package/src/components/VizDom/VizContainer.tsx +0 -40
  367. package/src/components/VizDom/VizDomHeatmap.tsx +0 -28
  368. package/src/components/VizDom/VizDomRenderer.tsx +0 -82
  369. package/src/components/VizDom/VizLoading.tsx +0 -8
  370. package/src/components/VizDom/WrapperVisual.tsx +0 -73
  371. package/src/components/VizDom/index.ts +0 -5
  372. package/src/components/VizElement/DefaultRankBadges.tsx +0 -36
  373. package/src/components/VizElement/ElementCallout.tsx +0 -82
  374. package/src/components/VizElement/ElementMissing.tsx +0 -35
  375. package/src/components/VizElement/ElementOverlay.tsx +0 -66
  376. package/src/components/VizElement/HeatmapElements.tsx +0 -127
  377. package/src/components/VizElement/HeatmapExample.tsx +0 -70
  378. package/src/components/VizElement/RankBadge.tsx +0 -25
  379. package/src/components/VizElement/VizElements.tsx +0 -57
  380. package/src/components/VizElement/index.ts +0 -1
  381. package/src/components/VizLive/VizLiveHeatmap.tsx +0 -27
  382. package/src/components/VizLive/VizLiveRenderer.tsx +0 -47
  383. package/src/components/VizLive/index.ts +0 -1
  384. package/src/components/VizScrollmap/AverageFoldLine.tsx +0 -57
  385. package/src/components/VizScrollmap/HoverZones.tsx +0 -58
  386. package/src/components/VizScrollmap/MetricRow.tsx +0 -0
  387. package/src/components/VizScrollmap/ScrollMapMinimap.tsx +0 -64
  388. package/src/components/VizScrollmap/ScrollMapOverlay.tsx +0 -79
  389. package/src/components/VizScrollmap/ScrollZoneHoverArea.tsx +0 -35
  390. package/src/components/VizScrollmap/ScrollZoneTooltip.tsx +0 -146
  391. package/src/components/VizScrollmap/ScrollmapMarker.tsx +0 -106
  392. package/src/components/VizScrollmap/VizScrollMap.tsx +0 -36
  393. package/src/components/VizScrollmapV2/ScrollmapOverlay.css +0 -94
  394. package/src/components/VizScrollmapV2/ScrollmapOverlayV2.tsx +0 -130
  395. package/src/components/VizScrollmapV2/scrollmap.types.ts +0 -21
  396. package/src/components/VizScrollmapV2/useScrollmapOverlay.ts +0 -187
  397. package/src/components/index.tsx +0 -2
  398. package/src/configs/iframe.ts +0 -15
  399. package/src/configs/index.ts +0 -2
  400. package/src/configs/style.ts +0 -21
  401. package/src/constants/index.ts +0 -4
  402. package/src/global.d.ts +0 -5
  403. package/src/helpers/elm-callout.ts +0 -347
  404. package/src/helpers/elm-getter.ts +0 -70
  405. package/src/helpers/iframe-helper/fixer.ts +0 -100
  406. package/src/helpers/iframe-helper/index.ts +0 -1
  407. package/src/helpers/iframe-helper/init.ts +0 -56
  408. package/src/helpers/iframe-helper/navigation-blocker-v2.ts +0 -371
  409. package/src/helpers/iframe-helper/navigation-blocker.ts +0 -367
  410. package/src/helpers/iframe-helper/style-replacer.ts +0 -231
  411. package/src/helpers/iframe.ts +0 -42
  412. package/src/helpers/index.ts +0 -8
  413. package/src/helpers/viz-canvas/area-clustering.ts +0 -234
  414. package/src/helpers/viz-canvas/area-overlay-manager-v2.ts +0 -176
  415. package/src/helpers/viz-canvas/area-overlay-manager.ts +0 -273
  416. package/src/helpers/viz-canvas/hierarchical-area-clustering.ts +0 -420
  417. package/src/helpers/viz-elements.ts +0 -43
  418. package/src/hooks/index.ts +0 -8
  419. package/src/hooks/register/index.ts +0 -4
  420. package/src/hooks/register/useRegisterConfig.ts +0 -17
  421. package/src/hooks/register/useRegisterControl.ts +0 -13
  422. package/src/hooks/register/useRegisterData.ts +0 -36
  423. package/src/hooks/register/useRegisterHeatmap.ts +0 -38
  424. package/src/hooks/viz-area/useAreaHeatmap.ts +0 -336
  425. package/src/hooks/viz-area/useAreaHeatmapManager.ts +0 -692
  426. package/src/hooks/viz-canvas/index.ts +0 -1
  427. package/src/hooks/viz-canvas/useAreamap.ts +0 -162
  428. package/src/hooks/viz-canvas/useClickmap.ts +0 -24
  429. package/src/hooks/viz-canvas/useHeatmapCanvas.ts +0 -27
  430. package/src/hooks/viz-canvas/useScrollmap.ts +0 -22
  431. package/src/hooks/viz-elements/index.ts +0 -5
  432. package/src/hooks/viz-elements/useClickedElement.ts +0 -86
  433. package/src/hooks/viz-elements/useElementCalloutVisible.ts +0 -45
  434. package/src/hooks/viz-elements/useHeatmapEffects.ts +0 -30
  435. package/src/hooks/viz-elements/useHeatmapElementPosition.ts +0 -60
  436. package/src/hooks/viz-elements/useHeatmapMouseHandler.ts +0 -255
  437. package/src/hooks/viz-elements/useHoveredElement.ts +0 -170
  438. package/src/hooks/viz-live/index.ts +0 -1
  439. package/src/hooks/viz-live/useVizLiveIframeMsg.ts +0 -88
  440. package/src/hooks/viz-live/useVizLiveRender.ts +0 -67
  441. package/src/hooks/viz-render/index.ts +0 -1
  442. package/src/hooks/viz-render/useHeatmapRender.ts +0 -71
  443. package/src/hooks/viz-render/useHeatmapVizRender.ts +0 -20
  444. package/src/hooks/viz-render/useReplayRender.ts +0 -160
  445. package/src/hooks/viz-scale/index.ts +0 -2
  446. package/src/hooks/viz-scale/useContainerDimensions.ts +0 -48
  447. package/src/hooks/viz-scale/useContentDimensions.ts +0 -25
  448. package/src/hooks/viz-scale/useHeatmapScale.ts +0 -52
  449. package/src/hooks/viz-scale/useObserveIframeHeight.ts +0 -162
  450. package/src/hooks/viz-scale/useScaleCalculation.ts +0 -31
  451. package/src/hooks/viz-scale/useScrollSync.ts +0 -36
  452. package/src/hooks/viz-scale/useWrapperRefHeight.ts +0 -91
  453. package/src/hooks/viz-scrollmap/useScrollmapZones.ts +0 -165
  454. package/src/hooks/viz-scrollmap/useZonePositions.ts +0 -38
  455. package/src/index.ts +0 -10
  456. package/src/stores/comp.ts +0 -31
  457. package/src/stores/config.ts +0 -37
  458. package/src/stores/data.ts +0 -30
  459. package/src/stores/index.ts +0 -10
  460. package/src/stores/interaction.ts +0 -32
  461. package/src/stores/mode-live.ts +0 -38
  462. package/src/stores/mode-single.ts +0 -18
  463. package/src/stores/viz-scrollmap.ts +0 -22
  464. package/src/stores/viz.ts +0 -17
  465. package/src/styles/base.css +0 -1
  466. package/src/styles/style.css +0 -137
  467. package/src/types/clarity.ts +0 -45
  468. package/src/types/control.ts +0 -10
  469. package/src/types/elm-callout.ts +0 -9
  470. package/src/types/heatmap-info.ts +0 -11
  471. package/src/types/heatmap.ts +0 -25
  472. package/src/types/iframe-helper.ts +0 -18
  473. package/src/types/index.ts +0 -12
  474. package/src/types/viz-canvas.ts +0 -20
  475. package/src/types/viz-element.ts +0 -34
  476. package/src/types/viz-scrollmap.ts +0 -28
  477. package/src/ui/BoxStack/BoxStack.tsx +0 -136
  478. package/src/ui/BoxStack/index.ts +0 -1
  479. package/src/ui/index.ts +0 -1
  480. package/src/utils/debounce.ts +0 -10
  481. package/src/utils/device.ts +0 -7
  482. package/src/utils/retry.ts +0 -20
  483. package/src/utils/sort.ts +0 -5
  484. /package/dist/esm/hooks/{vix-elements → viz-elements}/index.d.ts +0 -0
  485. /package/dist/esm/hooks/{vix-elements → viz-elements}/useClickedElement.d.ts +0 -0
  486. /package/dist/esm/hooks/{vix-elements → viz-elements}/useElementCalloutVisible.d.ts +0 -0
  487. /package/dist/esm/hooks/{vix-elements → viz-elements}/useHeatmapEffects.d.ts +0 -0
  488. /package/dist/esm/hooks/{vix-elements → viz-elements}/useHeatmapElementPosition.d.ts +0 -0
  489. /package/dist/umd/hooks/{vix-elements → viz-elements}/index.d.ts +0 -0
  490. /package/dist/umd/hooks/{vix-elements → viz-elements}/useClickedElement.d.ts +0 -0
  491. /package/dist/umd/hooks/{vix-elements → viz-elements}/useElementCalloutVisible.d.ts +0 -0
  492. /package/dist/umd/hooks/{vix-elements → viz-elements}/useHeatmapEffects.d.ts +0 -0
  493. /package/dist/umd/hooks/{vix-elements → viz-elements}/useHeatmapElementPosition.d.ts +0 -0
@@ -1,420 +0,0 @@
1
- import { ClickMapPoint, IClusterArea } from '../../types';
2
-
3
- export interface HierarchicalCluster extends IClusterArea {
4
- parentHash: string | null; // Hash của parent chung
5
- level: number; // Level trong DOM tree
6
- children: Set<string>; // IDs của child clusters
7
- }
8
-
9
- interface ClickElement {
10
- hash: string;
11
- element: HTMLElement;
12
- rect: Rect;
13
- totalclicks: number;
14
- level: number;
15
- parents: string[]; // Danh sách hash của parents
16
- }
17
-
18
- const HEATMAP_GRADIENT_COLORS: [number, number, number][] = [
19
- [0, 0, 255], // Blue
20
- [0, 255, 255], // Cyan
21
- [0, 255, 0], // Green
22
- [255, 255, 0], // Yellow
23
- [255, 0, 0], // Red
24
- ];
25
-
26
- const GRADIENT_COLOR_COUNT = HEATMAP_GRADIENT_COLORS.length - 1;
27
-
28
- const CLUSTERING_CONFIG = {
29
- maxDistance: 150, // Max distance để coi là cùng nhóm
30
- minElements: 1, // Min elements trong cluster
31
- maxClusterSize: 0.8, // Max 80% viewport size
32
- minClusterSize: 30, // Min 30px
33
- excludeTags: ['BODY', 'HTML', 'MAIN', 'SECTION', 'ARTICLE', 'DIV'], // Tags không nên làm parent trừ khi specific
34
- };
35
-
36
- export class HierarchicalAreaClusteringEngine {
37
- /**
38
- * Cluster areas với hierarchical logic
39
- */
40
- public clusterAreas(
41
- clickData: ClickMapPoint[],
42
- iframeDoc: Document,
43
- totalClicks: number,
44
- ): HierarchicalCluster[] {
45
- // 1. Build click elements với hierarchy info
46
- const clickElements = this.buildClickElements(clickData, iframeDoc);
47
- if (clickElements.length === 0) return [];
48
-
49
- console.log(`[HierarchicalClustering] Processing ${clickElements.length} elements`);
50
-
51
- // 2. Group by common parent
52
- const parentGroups = this.groupByCommonParent(clickElements);
53
-
54
- console.log(`[HierarchicalClustering] Found ${parentGroups.size} parent groups`);
55
-
56
- // 3. Create clusters from groups
57
- let clusters = this.createClustersFromGroups(parentGroups, totalClicks, iframeDoc);
58
-
59
- // 4. Remove nested clusters (child inside parent)
60
- clusters = this.removeNestedClusters(clusters);
61
-
62
- // 5. Filter out too large clusters
63
- clusters = this.filterLargeClusters(clusters, iframeDoc);
64
-
65
- // 6. Sort by click percentage
66
- clusters.sort((a, b) => b.clickPercentage - a.clickPercentage);
67
-
68
- console.log(`[HierarchicalClustering] Final: ${clusters.length} clusters`);
69
-
70
- return clusters;
71
- }
72
-
73
- /**
74
- * Build click elements với hierarchy info
75
- */
76
- private buildClickElements(clickData: ClickMapPoint[], iframeDoc: Document): ClickElement[] {
77
- const elements: ClickElement[] = [];
78
-
79
- clickData.forEach((item) => {
80
- const element = iframeDoc.querySelector(
81
- `[data-clarity-hashalpha="${item.hash}"]`,
82
- ) as HTMLElement;
83
-
84
- if (!element || item.totalclicks === 0) return;
85
-
86
- const rect = this.getElementRect(element);
87
-
88
- // Filter quá nhỏ
89
- if (rect.width < 10 || rect.height < 10) return;
90
-
91
- // Get DOM level
92
- const level = this.getDOMLevel(element);
93
-
94
- // Get all parent hashes
95
- const parents = this.getParentHashes(element);
96
-
97
- elements.push({
98
- hash: item.hash,
99
- element,
100
- rect,
101
- totalclicks: item.totalclicks,
102
- level,
103
- parents,
104
- });
105
- });
106
-
107
- return elements;
108
- }
109
-
110
- /**
111
- * Get DOM level (depth from body)
112
- */
113
- private getDOMLevel(element: HTMLElement): number {
114
- let level = 0;
115
- let current: HTMLElement | null = element;
116
-
117
- while (current && current.tagName !== 'BODY') {
118
- level++;
119
- current = current.parentElement;
120
- }
121
-
122
- return level;
123
- }
124
-
125
- /**
126
- * Get all parent hashes của element
127
- */
128
- private getParentHashes(element: HTMLElement): string[] {
129
- const hashes: string[] = [];
130
- let current: HTMLElement | null = element.parentElement;
131
-
132
- while (current && current.tagName !== 'BODY') {
133
- const hash = current.getAttribute('data-clarity-hashalpha');
134
- if (hash) {
135
- hashes.push(hash);
136
- }
137
- current = current.parentElement;
138
- }
139
-
140
- return hashes;
141
- }
142
-
143
- /**
144
- * Group elements by common parent
145
- */
146
- private groupByCommonParent(clickElements: ClickElement[]): Map<string, ClickElement[]> {
147
- const groups = new Map<string, ClickElement[]>();
148
-
149
- // Tìm common parent cho mỗi cặp elements
150
- for (let i = 0; i < clickElements.length; i++) {
151
- const el1 = clickElements[i];
152
- let foundGroup = false;
153
-
154
- // Check xem el1 có thuộc group nào chưa
155
- for (const [parentHash, group] of groups.entries()) {
156
- // Check nếu el1 share parent với group
157
- const hasCommonParent = group.some((el2) => {
158
- return this.hasCommonParent(el1, el2);
159
- });
160
-
161
- if (hasCommonParent) {
162
- group.push(el1);
163
- foundGroup = true;
164
- break;
165
- }
166
- }
167
-
168
- // Nếu chưa có group, tạo group mới với parent gần nhất
169
- if (!foundGroup) {
170
- const parentHash = this.getBestParentHash(el1);
171
- if (!groups.has(parentHash)) {
172
- groups.set(parentHash, []);
173
- }
174
- groups.get(parentHash)!.push(el1);
175
- }
176
- }
177
-
178
- return groups;
179
- }
180
-
181
- /**
182
- * Check if two elements have common parent
183
- */
184
- private hasCommonParent(el1: ClickElement, el2: ClickElement): boolean {
185
- // Check shared parents
186
- const commonParents = el1.parents.filter((p) => el2.parents.includes(p));
187
-
188
- if (commonParents.length === 0) return false;
189
-
190
- // Cũng check khoảng cách để đảm bảo không quá xa
191
- const distance = this.getDistance(el1.rect, el2.rect);
192
- return distance <= CLUSTERING_CONFIG.maxDistance;
193
- }
194
-
195
- /**
196
- * Get best parent hash (closest specific parent)
197
- */
198
- private getBestParentHash(el: ClickElement): string {
199
- // Ưu tiên parent có semantic tag (không phải DIV, SECTION...)
200
- for (const parentHash of el.parents) {
201
- const parent = el.element.ownerDocument.querySelector(
202
- `[data-clarity-hashalpha="${parentHash}"]`,
203
- ) as HTMLElement;
204
-
205
- if (parent && !CLUSTERING_CONFIG.excludeTags.includes(parent.tagName)) {
206
- return parentHash;
207
- }
208
- }
209
-
210
- // Fallback: parent gần nhất
211
- return el.parents[0] || `element_${el.hash}`;
212
- }
213
-
214
- /**
215
- * Create clusters from parent groups
216
- */
217
- private createClustersFromGroups(
218
- groups: Map<string, ClickElement[]>,
219
- totalClicks: number,
220
- iframeDoc: Document,
221
- ): HierarchicalCluster[] {
222
- const clusters: HierarchicalCluster[] = [];
223
- let index = 0;
224
-
225
- groups.forEach((elements, parentHash) => {
226
- if (elements.length === 0) return;
227
-
228
- const totalClusterClicks = elements.reduce((sum, el) => sum + el.totalclicks || 0, 0);
229
- const clickPercentage = (totalClusterClicks / totalClicks) * 100;
230
-
231
- // Calculate smart bounding rect
232
- const boundingRect = this.calculateSmartBoundingRect(elements, iframeDoc);
233
-
234
- // Get average level
235
- const avgLevel = Math.round(
236
- elements.reduce((sum, el) => sum + el.level, 0) / elements.length,
237
- );
238
-
239
- const cluster: HierarchicalCluster = {
240
- id: `cluster_${index++}`,
241
- parentHash: parentHash === `element_${elements[0].hash}` ? null : parentHash,
242
- level: avgLevel,
243
- elements: elements.map((e) => e.element),
244
- hashes: elements.map((e) => e.hash),
245
- boundingRect,
246
- totalClicks: totalClusterClicks,
247
- clickPercentage,
248
- color: this.getHeatmapColor(clickPercentage / 100),
249
- hoverColor: this.getHoverColor(clickPercentage / 100),
250
- children: new Set(),
251
- };
252
-
253
- clusters.push(cluster);
254
- });
255
-
256
- return clusters;
257
- }
258
-
259
- /**
260
- * Calculate smart bounding rect - không bao trọn toàn bộ parent
261
- */
262
- private calculateSmartBoundingRect(elements: ClickElement[], iframeDoc: Document): Rect {
263
- // Nếu chỉ có 1 element, dùng rect của nó
264
- if (elements.length === 1) {
265
- const rect = elements[0].rect;
266
- return { ...rect, right: rect.left + rect.width, bottom: rect.top + rect.height };
267
- }
268
-
269
- // Calculate tight bounding box với moderate padding
270
- const padding = 15;
271
-
272
- const minLeft = Math.min(...elements.map((e) => e.rect.left)) - padding;
273
- const minTop = Math.min(...elements.map((e) => e.rect.top)) - padding;
274
- const maxRight = Math.max(...elements.map((e) => e.rect.left + e.rect.width)) + padding;
275
- const maxBottom = Math.max(...elements.map((e) => e.rect.top + e.rect.height)) + padding;
276
-
277
- return {
278
- left: minLeft,
279
- top: minTop,
280
- width: maxRight - minLeft,
281
- height: maxBottom - minTop,
282
- right: maxRight,
283
- bottom: maxBottom,
284
- };
285
- }
286
-
287
- /**
288
- * Remove nested clusters - Loại bỏ cluster con nếu nằm trong cluster cha
289
- */
290
- private removeNestedClusters(clusters: HierarchicalCluster[]): HierarchicalCluster[] {
291
- const filtered: HierarchicalCluster[] = [];
292
-
293
- // Sort by level (lower level = closer to root = parent)
294
- const sorted = [...clusters].sort((a, b) => a.level - b.level);
295
-
296
- for (const cluster of sorted) {
297
- // Check if cluster is nested inside any existing filtered cluster
298
- const isNested = filtered.some((parent) => {
299
- return this.isClusterNested(cluster, parent);
300
- });
301
-
302
- if (!isNested) {
303
- filtered.push(cluster);
304
- } else {
305
- console.log(`[HierarchicalClustering] Removed nested cluster ${cluster.id}`);
306
- }
307
- }
308
-
309
- return filtered;
310
- }
311
-
312
- /**
313
- * Check if cluster1 is nested inside cluster2
314
- */
315
- private isClusterNested(child: HierarchicalCluster, parent: HierarchicalCluster): boolean {
316
- const childRect = child.boundingRect;
317
- const parentRect = parent.boundingRect;
318
-
319
- // Check bounding rect containment với threshold
320
- const threshold = 0.9; // 90% overlap considered nested
321
-
322
- const overlapArea = this.calculateOverlapArea(childRect, parentRect);
323
- const childArea = childRect.width * childRect.height;
324
-
325
- // Nếu > 90% diện tích child nằm trong parent -> nested
326
- return overlapArea / childArea > threshold;
327
- }
328
-
329
- /**
330
- * Calculate overlap area between two rects
331
- */
332
- private calculateOverlapArea(rect1: Rect, rect2: Rect): number {
333
- const xOverlap = Math.max(
334
- 0,
335
- Math.min(rect1.right, rect2.right) - Math.max(rect1.left, rect2.left),
336
- );
337
- const yOverlap = Math.max(
338
- 0,
339
- Math.min(rect1.bottom, rect2.bottom) - Math.max(rect1.top, rect2.top),
340
- );
341
-
342
- return xOverlap * yOverlap;
343
- }
344
-
345
- /**
346
- * Filter out too large clusters (không bao trọn body hoặc quá lớn)
347
- */
348
- private filterLargeClusters(
349
- clusters: HierarchicalCluster[],
350
- iframeDoc: Document,
351
- ): HierarchicalCluster[] {
352
- const viewportWidth = iframeDoc.documentElement.clientWidth;
353
- const viewportHeight = iframeDoc.documentElement.clientHeight;
354
-
355
- const maxWidth = viewportWidth * CLUSTERING_CONFIG.maxClusterSize;
356
- const maxHeight = viewportHeight * CLUSTERING_CONFIG.maxClusterSize;
357
-
358
- return clusters.filter((cluster) => {
359
- const rect = cluster.boundingRect;
360
-
361
- // Loại bỏ clusters quá lớn
362
- if (rect.width > maxWidth || rect.height > maxHeight) {
363
- console.log(
364
- `[HierarchicalClustering] Filtered large cluster ${cluster.id}: ${rect.width}x${rect.height}`,
365
- );
366
- return false;
367
- }
368
-
369
- // Loại bỏ clusters quá nhỏ
370
- if (
371
- rect.width < CLUSTERING_CONFIG.minClusterSize ||
372
- rect.height < CLUSTERING_CONFIG.minClusterSize
373
- ) {
374
- return false;
375
- }
376
-
377
- return true;
378
- });
379
- }
380
-
381
- // Utility methods
382
- private getElementRect(element: HTMLElement): Rect {
383
- const domRect = element.getBoundingClientRect();
384
- return {
385
- top: domRect.top,
386
- left: domRect.left,
387
- width: domRect.width,
388
- height: domRect.height,
389
- right: domRect.right,
390
- bottom: domRect.bottom,
391
- };
392
- }
393
-
394
- private getDistance(rect1: Rect, rect2: Rect): number {
395
- const horizontalDistance = Math.max(0, rect1.left - rect2.right, rect2.left - rect1.right);
396
- const verticalDistance = Math.max(0, rect1.top - rect2.bottom, rect2.top - rect1.bottom);
397
- return Math.sqrt(horizontalDistance ** 2 + verticalDistance ** 2);
398
- }
399
-
400
- private getHeatmapColor(percentage: number): string {
401
- const index = Math.min(Math.floor(percentage * GRADIENT_COLOR_COUNT), GRADIENT_COLOR_COUNT - 1);
402
- const [r, g, b] = HEATMAP_GRADIENT_COLORS[index];
403
- return `rgba(${r}, ${g}, ${b}, 0.5)`;
404
- }
405
-
406
- private getHoverColor(percentage: number): string {
407
- const index = Math.min(Math.floor(percentage * GRADIENT_COLOR_COUNT), GRADIENT_COLOR_COUNT - 1);
408
- const [r, g, b] = HEATMAP_GRADIENT_COLORS[index];
409
- return `rgba(${r}, ${g}, ${b}, 0.8)`;
410
- }
411
- }
412
-
413
- export interface Rect {
414
- top: number;
415
- left: number;
416
- width: number;
417
- height: number;
418
- right: number;
419
- bottom: number;
420
- }
@@ -1,43 +0,0 @@
1
- import type { ElementRect } from '../types';
2
-
3
- export function formatPercentage(value: number, decimals = 2): string {
4
- return value.toFixed(decimals);
5
- }
6
-
7
- export function calculateRankPosition(rect: ElementRect, widthScale: number) {
8
- const top = rect.top <= 18 ? rect.top + 3 : rect.top - 18;
9
- const left = rect.left <= 18 ? rect.left + 3 : rect.left - 18;
10
-
11
- return {
12
- transform: `scale(${1.2 * widthScale})`,
13
- top: Number.isNaN(top) ? undefined : top,
14
- left: Number.isNaN(left) ? undefined : left,
15
- };
16
- }
17
-
18
- export function isElementInViewport(
19
- elementRect: ElementRect,
20
- visualRef: React.RefObject<HTMLDivElement>,
21
- scale: number,
22
- ): boolean {
23
- if (!elementRect) return false;
24
-
25
- const visualRect = visualRef.current?.getBoundingClientRect();
26
- if (!visualRect) return false;
27
-
28
- // Element position relative to the document (or container's content)
29
- const elementTop = elementRect.top * scale;
30
- const elementBottom = (elementRect.top + elementRect.height) * scale;
31
-
32
- // Current scroll position
33
- const scrollTop = visualRef.current?.scrollTop || 0;
34
- const viewportHeight = visualRect.height;
35
-
36
- // Visible viewport range in the scrollable content
37
- const viewportTop = scrollTop;
38
- const viewportBottom = scrollTop + viewportHeight;
39
-
40
- // Check if element is within the visible viewport
41
- // Element is visible if it overlaps with the viewport
42
- return elementBottom > viewportTop && elementTop < viewportBottom;
43
- }
@@ -1,8 +0,0 @@
1
- export * from './register';
2
-
3
- export * from './viz-elements';
4
- export * from './viz-live';
5
- export * from './viz-render';
6
- export * from './viz-scale';
7
-
8
- export * from './viz-scrollmap';
@@ -1,4 +0,0 @@
1
- export * from './useRegisterConfig';
2
- export * from './useRegisterControl';
3
- export * from './useRegisterData';
4
- export * from './useRegisterHeatmap';
@@ -1,17 +0,0 @@
1
- import { useEffect } from 'react';
2
- import { useHeatmapConfigStore, useHeatmapDataStore } from '../../stores';
3
-
4
- export const useRegisterConfig = () => {
5
- const mode = useHeatmapConfigStore((state) => state.mode);
6
- const width = useHeatmapConfigStore((state) => state.width);
7
- const sidebarWidth = useHeatmapConfigStore((state) => state.sidebarWidth);
8
- const heatmapType = useHeatmapConfigStore((state) => state.heatmapType);
9
- const setIsRendering = useHeatmapDataStore((state) => state.setIsRendering);
10
-
11
- useEffect(() => {
12
- setIsRendering(true);
13
- setTimeout(() => {
14
- setIsRendering(false);
15
- }, 1000);
16
- }, [mode, width, sidebarWidth, heatmapType]);
17
- };
@@ -1,13 +0,0 @@
1
- import { useHeatmapControlStore } from '../../stores';
2
- import { IHeatmapControl } from '../../types/control';
3
-
4
- export const useRegisterControl = (control: IHeatmapControl) => {
5
- const registerControl = useHeatmapControlStore((state) => state.registerControl);
6
-
7
- registerControl('Sidebar', control.Sidebar);
8
- registerControl('TopBar', control.TopBar);
9
- registerControl('Toolbar', control.Toolbar);
10
- registerControl('MetricBar', control.MetricBar);
11
- registerControl('VizLoading', control.VizLoading);
12
- registerControl('ElementCallout', control.ElementCallout);
13
- };
@@ -1,36 +0,0 @@
1
- import { useCallback, useEffect } from 'react';
2
- import { useHeatmapDataStore } from '../../stores';
3
- import { DecodedPayload, IHeatmapInfo } from '../../types';
4
-
5
- export const useRegisterData = (data?: DecodedPayload[], dataInfo?: IHeatmapInfo) => {
6
- const setData = useHeatmapDataStore((state) => state.setData);
7
- const setIsRendering = useHeatmapDataStore((state) => state.setIsRendering);
8
- const setDataInfo = useHeatmapDataStore((state) => state.setDataInfo);
9
-
10
- const handleSetData = useCallback(
11
- (data?: DecodedPayload[]) => {
12
- if (!data) return;
13
-
14
- setData(data);
15
- setIsRendering(false);
16
- },
17
- [data],
18
- );
19
-
20
- const handleSetDataInfo = useCallback(
21
- (dataInfo?: IHeatmapInfo) => {
22
- if (!dataInfo) return;
23
-
24
- setDataInfo(dataInfo);
25
- },
26
- [setDataInfo],
27
- );
28
-
29
- useEffect(() => {
30
- handleSetData(data);
31
- }, [data]);
32
-
33
- useEffect(() => {
34
- handleSetDataInfo(dataInfo);
35
- }, [dataInfo]);
36
- };
@@ -1,38 +0,0 @@
1
- import { useCallback, useEffect } from 'react';
2
- import { useHeatmapDataStore } from '../../stores';
3
- import { ClickMapPoint, ScrollMapPoint } from '../../types';
4
-
5
- interface Props {
6
- clickmap?: ClickMapPoint[];
7
- scrollmap?: ScrollMapPoint[];
8
- }
9
- export const useRegisterHeatmap = ({ clickmap, scrollmap }: Props) => {
10
- const setClickmap = useHeatmapDataStore((state) => state.setClickmap);
11
- const setScrollmap = useHeatmapDataStore((state) => state.setScrollmap);
12
-
13
- const handleSetClickmap = useCallback(
14
- (clickmap?: ClickMapPoint[]) => {
15
- if (!clickmap) return;
16
-
17
- setClickmap(clickmap);
18
- },
19
- [clickmap],
20
- );
21
-
22
- const handleSetScrollmap = useCallback(
23
- (scrollmap?: ScrollMapPoint[]) => {
24
- if (!scrollmap) return;
25
-
26
- setScrollmap(scrollmap);
27
- },
28
- [scrollmap],
29
- );
30
-
31
- useEffect(() => {
32
- handleSetClickmap(clickmap);
33
- }, [clickmap]);
34
-
35
- useEffect(() => {
36
- handleSetScrollmap(scrollmap);
37
- }, [scrollmap]);
38
- };