@gemx-dev/heatmap-react 3.5.46 → 3.5.48

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 (499) hide show
  1. package/dist/esm/components/Layout/ContentToolbar.d.ts.map +1 -1
  2. package/dist/esm/components/Layout/HeatmapLayout.d.ts +3 -2
  3. package/dist/esm/components/Layout/HeatmapLayout.d.ts.map +1 -1
  4. package/dist/esm/components/VizDom/VizDomRenderer.d.ts.map +1 -1
  5. package/dist/esm/components/VizElement/HeatmapElements.d.ts +2 -2
  6. package/dist/esm/components/VizElement/HeatmapElements.d.ts.map +1 -1
  7. package/dist/esm/components/VizElement/HeatmapExample.d.ts +2 -0
  8. package/dist/esm/components/VizElement/HeatmapExample.d.ts.map +1 -0
  9. package/dist/esm/components/VizElement/VizElements.d.ts.map +1 -1
  10. package/dist/esm/components/VizLive/VizLiveHeatmap.d.ts.map +1 -1
  11. package/dist/esm/components/VizLive/VizLiveRenderer.d.ts.map +1 -1
  12. package/dist/esm/components/VizScrollmap/AverageFoldLine.d.ts +8 -0
  13. package/dist/esm/components/VizScrollmap/AverageFoldLine.d.ts.map +1 -0
  14. package/dist/esm/components/VizScrollmap/HoverZones.d.ts +10 -0
  15. package/dist/esm/components/VizScrollmap/HoverZones.d.ts.map +1 -0
  16. package/dist/esm/components/VizScrollmap/MetricRow.d.ts +1 -0
  17. package/dist/esm/components/VizScrollmap/MetricRow.d.ts.map +1 -0
  18. package/dist/esm/components/VizScrollmap/ScrollMapMinimap.d.ts +8 -0
  19. package/dist/esm/components/VizScrollmap/ScrollMapMinimap.d.ts.map +1 -0
  20. package/dist/esm/components/VizScrollmap/ScrollMapOverlay.d.ts +7 -0
  21. package/dist/esm/components/VizScrollmap/ScrollMapOverlay.d.ts.map +1 -0
  22. package/dist/esm/components/VizScrollmap/ScrollZoneHoverArea.d.ts +14 -0
  23. package/dist/esm/components/VizScrollmap/ScrollZoneHoverArea.d.ts.map +1 -0
  24. package/dist/esm/components/VizScrollmap/ScrollZoneTooltip.d.ts +10 -0
  25. package/dist/esm/components/VizScrollmap/ScrollZoneTooltip.d.ts.map +1 -0
  26. package/dist/esm/components/VizScrollmap/ScrollmapMarker.d.ts +7 -0
  27. package/dist/esm/components/VizScrollmap/ScrollmapMarker.d.ts.map +1 -0
  28. package/dist/esm/components/VizScrollmap/VizScrollMap.d.ts +7 -0
  29. package/dist/esm/components/VizScrollmap/VizScrollMap.d.ts.map +1 -0
  30. package/{src/components/VizScrollmap/index.ts → dist/esm/components/VizScrollmap/index.d.ts} +1 -0
  31. package/dist/esm/components/VizScrollmap/index.d.ts.map +1 -0
  32. package/dist/esm/components/VizScrollmapV2/ScrollmapOverlayV2.d.ts +5 -0
  33. package/dist/esm/components/VizScrollmapV2/ScrollmapOverlayV2.d.ts.map +1 -0
  34. package/{src/components/VizScrollmapV2/index.ts → dist/esm/components/VizScrollmapV2/index.d.ts} +1 -0
  35. package/dist/esm/components/VizScrollmapV2/index.d.ts.map +1 -0
  36. package/dist/esm/components/VizScrollmapV2/scrollmap.types.d.ts +18 -0
  37. package/dist/esm/components/VizScrollmapV2/scrollmap.types.d.ts.map +1 -0
  38. package/dist/esm/components/VizScrollmapV2/useScrollmapOverlay.d.ts +16 -0
  39. package/dist/esm/components/VizScrollmapV2/useScrollmapOverlay.d.ts.map +1 -0
  40. package/dist/esm/configs/style.d.ts +2 -0
  41. package/dist/esm/configs/style.d.ts.map +1 -1
  42. package/dist/esm/helpers/elm-getter.d.ts +2 -2
  43. package/dist/esm/helpers/elm-getter.d.ts.map +1 -1
  44. package/dist/esm/helpers/iframe-helper/fixer.d.ts +18 -0
  45. package/dist/esm/helpers/iframe-helper/fixer.d.ts.map +1 -0
  46. package/dist/esm/helpers/iframe-helper/index.d.ts +2 -0
  47. package/dist/esm/helpers/iframe-helper/index.d.ts.map +1 -0
  48. package/dist/esm/helpers/iframe-helper/init.d.ts +5 -0
  49. package/dist/esm/helpers/iframe-helper/init.d.ts.map +1 -0
  50. package/dist/esm/helpers/iframe-helper/navigation-blocker-v2.d.ts +28 -0
  51. package/dist/esm/helpers/iframe-helper/navigation-blocker-v2.d.ts.map +1 -0
  52. package/dist/esm/helpers/iframe-helper/navigation-blocker.d.ts +20 -0
  53. package/dist/esm/helpers/iframe-helper/navigation-blocker.d.ts.map +1 -0
  54. package/dist/esm/helpers/iframe-helper/style-replacer.d.ts +25 -0
  55. package/dist/esm/helpers/iframe-helper/style-replacer.d.ts.map +1 -0
  56. package/dist/esm/helpers/index.d.ts +2 -2
  57. package/dist/esm/helpers/index.d.ts.map +1 -1
  58. package/dist/esm/helpers/viz-canvas/area-clustering.d.ts +44 -0
  59. package/dist/esm/helpers/viz-canvas/area-clustering.d.ts.map +1 -0
  60. package/dist/esm/helpers/viz-canvas/area-overlay-manager-v2.d.ts +17 -0
  61. package/dist/esm/helpers/viz-canvas/area-overlay-manager-v2.d.ts.map +1 -0
  62. package/dist/esm/helpers/viz-canvas/area-overlay-manager.d.ts +51 -0
  63. package/dist/esm/helpers/viz-canvas/area-overlay-manager.d.ts.map +1 -0
  64. package/dist/esm/helpers/viz-canvas/hierarchical-area-clustering.d.ts +73 -0
  65. package/dist/esm/helpers/viz-canvas/hierarchical-area-clustering.d.ts.map +1 -0
  66. package/{src/helpers/viz-canvas/index.ts → dist/esm/helpers/viz-canvas/index.d.ts} +1 -0
  67. package/dist/esm/helpers/viz-canvas/index.d.ts.map +1 -0
  68. package/dist/esm/hooks/index.d.ts +2 -1
  69. package/dist/esm/hooks/index.d.ts.map +1 -1
  70. package/dist/esm/hooks/register/useRegisterData.d.ts +2 -2
  71. package/dist/esm/hooks/register/useRegisterData.d.ts.map +1 -1
  72. package/dist/esm/hooks/register/useRegisterHeatmap.d.ts +7 -2
  73. package/dist/esm/hooks/register/useRegisterHeatmap.d.ts.map +1 -1
  74. package/dist/esm/hooks/viz-area/useAreaHeatmap.d.ts +59 -0
  75. package/dist/esm/hooks/viz-area/useAreaHeatmap.d.ts.map +1 -0
  76. package/dist/esm/hooks/viz-area/useAreaHeatmapManager.d.ts +77 -0
  77. package/dist/esm/hooks/viz-area/useAreaHeatmapManager.d.ts.map +1 -0
  78. package/dist/esm/hooks/viz-canvas/index.d.ts +1 -1
  79. package/dist/esm/hooks/viz-canvas/index.d.ts.map +1 -1
  80. package/dist/esm/hooks/viz-canvas/useAreamap.d.ts +14 -0
  81. package/dist/esm/hooks/viz-canvas/useAreamap.d.ts.map +1 -0
  82. package/dist/esm/hooks/viz-canvas/useClickmap.d.ts +3 -1
  83. package/dist/esm/hooks/viz-canvas/useClickmap.d.ts.map +1 -1
  84. package/dist/esm/hooks/viz-canvas/useHeatmapCanvas.d.ts +4 -0
  85. package/dist/esm/hooks/viz-canvas/useHeatmapCanvas.d.ts.map +1 -0
  86. package/dist/esm/hooks/viz-canvas/useScrollmap.d.ts +3 -1
  87. package/dist/esm/hooks/viz-canvas/useScrollmap.d.ts.map +1 -1
  88. package/dist/esm/hooks/{vix-elements → viz-elements}/index.d.ts.map +1 -1
  89. package/dist/esm/hooks/{vix-elements → viz-elements}/useClickedElement.d.ts.map +1 -1
  90. package/dist/esm/hooks/{vix-elements → viz-elements}/useElementCalloutVisible.d.ts.map +1 -1
  91. package/dist/esm/hooks/{vix-elements → viz-elements}/useHeatmapEffects.d.ts.map +1 -1
  92. package/dist/esm/hooks/{vix-elements → viz-elements}/useHeatmapElementPosition.d.ts.map +1 -1
  93. package/dist/esm/hooks/viz-elements/useHeatmapMouseHandler.d.ts +34 -0
  94. package/dist/esm/hooks/viz-elements/useHeatmapMouseHandler.d.ts.map +1 -0
  95. package/dist/esm/hooks/{vix-elements → viz-elements}/useHoveredElement.d.ts +4 -0
  96. package/dist/esm/hooks/viz-elements/useHoveredElement.d.ts.map +1 -0
  97. package/dist/esm/hooks/viz-live/index.d.ts +1 -1
  98. package/dist/{umd/hooks/viz-live/useIframeMessage.d.ts → esm/hooks/viz-live/useVizLiveIframeMsg.d.ts} +2 -10
  99. package/dist/esm/hooks/viz-live/useVizLiveIframeMsg.d.ts.map +1 -0
  100. package/dist/esm/hooks/viz-live/useVizLiveRender.d.ts +4 -0
  101. package/dist/esm/hooks/viz-live/useVizLiveRender.d.ts.map +1 -0
  102. package/dist/esm/hooks/viz-render/useHeatmapRender.d.ts.map +1 -1
  103. package/dist/esm/hooks/viz-scale/useContainerDimensions.d.ts.map +1 -1
  104. package/dist/esm/hooks/viz-scale/useHeatmapScale.d.ts +1 -1
  105. package/dist/esm/hooks/viz-scale/useHeatmapScale.d.ts.map +1 -1
  106. package/dist/esm/hooks/viz-scale/useObserveIframeHeight.d.ts +10 -0
  107. package/dist/esm/hooks/viz-scale/useObserveIframeHeight.d.ts.map +1 -0
  108. package/dist/esm/hooks/viz-scale/useScaleCalculation.d.ts +4 -0
  109. package/dist/esm/hooks/viz-scale/useScaleCalculation.d.ts.map +1 -1
  110. package/{src/hooks/viz-scrollmap/index.ts → dist/esm/hooks/viz-scrollmap/index.d.ts} +1 -0
  111. package/dist/esm/hooks/viz-scrollmap/index.d.ts.map +1 -0
  112. package/dist/esm/hooks/viz-scrollmap/useScrollmapZones.d.ts +29 -0
  113. package/dist/esm/hooks/viz-scrollmap/useScrollmapZones.d.ts.map +1 -0
  114. package/dist/esm/hooks/viz-scrollmap/useZonePositions.d.ts +12 -0
  115. package/dist/esm/hooks/viz-scrollmap/useZonePositions.d.ts.map +1 -0
  116. package/dist/esm/index.d.ts +1 -1
  117. package/dist/esm/index.d.ts.map +1 -1
  118. package/dist/esm/index.js +1237 -220
  119. package/dist/esm/index.mjs +1237 -220
  120. package/dist/esm/stores/config.d.ts +5 -1
  121. package/dist/esm/stores/config.d.ts.map +1 -1
  122. package/dist/esm/stores/data.d.ts +5 -3
  123. package/dist/esm/stores/data.d.ts.map +1 -1
  124. package/dist/esm/stores/index.d.ts +2 -0
  125. package/dist/esm/stores/index.d.ts.map +1 -1
  126. package/dist/esm/stores/interaction.d.ts.map +1 -1
  127. package/dist/esm/stores/mode-live.d.ts +4 -0
  128. package/dist/esm/stores/mode-live.d.ts.map +1 -1
  129. package/dist/esm/stores/mode-single.d.ts +9 -0
  130. package/dist/esm/stores/mode-single.d.ts.map +1 -0
  131. package/dist/esm/stores/viz-scrollmap.d.ts +11 -0
  132. package/dist/esm/stores/viz-scrollmap.d.ts.map +1 -0
  133. package/dist/esm/stores/viz.d.ts +6 -4
  134. package/dist/esm/stores/viz.d.ts.map +1 -1
  135. package/dist/esm/types/clarity.d.ts +5 -0
  136. package/dist/esm/types/clarity.d.ts.map +1 -1
  137. package/dist/esm/types/heatmap-info.d.ts +11 -0
  138. package/dist/esm/types/heatmap-info.d.ts.map +1 -0
  139. package/dist/esm/types/heatmap.d.ts +13 -0
  140. package/dist/esm/types/heatmap.d.ts.map +1 -1
  141. package/dist/esm/types/iframe-helper.d.ts +20 -0
  142. package/dist/esm/types/iframe-helper.d.ts.map +1 -0
  143. package/dist/esm/types/index.d.ts +4 -1
  144. package/dist/esm/types/index.d.ts.map +1 -1
  145. package/dist/esm/types/viz-canvas.d.ts +23 -0
  146. package/dist/esm/types/viz-canvas.d.ts.map +1 -0
  147. package/dist/esm/types/viz-element.d.ts +0 -6
  148. package/dist/esm/types/viz-element.d.ts.map +1 -1
  149. package/dist/esm/types/viz-scrollmap.d.ts +27 -0
  150. package/dist/esm/types/viz-scrollmap.d.ts.map +1 -0
  151. package/dist/umd/components/Layout/ContentToolbar.d.ts.map +1 -1
  152. package/dist/umd/components/Layout/HeatmapLayout.d.ts +3 -2
  153. package/dist/umd/components/Layout/HeatmapLayout.d.ts.map +1 -1
  154. package/dist/umd/components/VizDom/VizDomRenderer.d.ts.map +1 -1
  155. package/dist/umd/components/VizElement/HeatmapElements.d.ts +2 -2
  156. package/dist/umd/components/VizElement/HeatmapElements.d.ts.map +1 -1
  157. package/dist/umd/components/VizElement/HeatmapExample.d.ts +2 -0
  158. package/dist/umd/components/VizElement/HeatmapExample.d.ts.map +1 -0
  159. package/dist/umd/components/VizElement/VizElements.d.ts.map +1 -1
  160. package/dist/umd/components/VizLive/VizLiveHeatmap.d.ts.map +1 -1
  161. package/dist/umd/components/VizLive/VizLiveRenderer.d.ts.map +1 -1
  162. package/dist/umd/components/VizScrollmap/AverageFoldLine.d.ts +8 -0
  163. package/dist/umd/components/VizScrollmap/AverageFoldLine.d.ts.map +1 -0
  164. package/dist/umd/components/VizScrollmap/HoverZones.d.ts +10 -0
  165. package/dist/umd/components/VizScrollmap/HoverZones.d.ts.map +1 -0
  166. package/dist/umd/components/VizScrollmap/MetricRow.d.ts +1 -0
  167. package/dist/umd/components/VizScrollmap/MetricRow.d.ts.map +1 -0
  168. package/dist/umd/components/VizScrollmap/ScrollMapMinimap.d.ts +8 -0
  169. package/dist/umd/components/VizScrollmap/ScrollMapMinimap.d.ts.map +1 -0
  170. package/dist/umd/components/VizScrollmap/ScrollMapOverlay.d.ts +7 -0
  171. package/dist/umd/components/VizScrollmap/ScrollMapOverlay.d.ts.map +1 -0
  172. package/dist/umd/components/VizScrollmap/ScrollZoneHoverArea.d.ts +14 -0
  173. package/dist/umd/components/VizScrollmap/ScrollZoneHoverArea.d.ts.map +1 -0
  174. package/dist/umd/components/VizScrollmap/ScrollZoneTooltip.d.ts +10 -0
  175. package/dist/umd/components/VizScrollmap/ScrollZoneTooltip.d.ts.map +1 -0
  176. package/dist/umd/components/VizScrollmap/ScrollmapMarker.d.ts +7 -0
  177. package/dist/umd/components/VizScrollmap/ScrollmapMarker.d.ts.map +1 -0
  178. package/dist/umd/components/VizScrollmap/VizScrollMap.d.ts +7 -0
  179. package/dist/umd/components/VizScrollmap/VizScrollMap.d.ts.map +1 -0
  180. package/dist/umd/components/VizScrollmap/index.d.ts +2 -0
  181. package/dist/umd/components/VizScrollmap/index.d.ts.map +1 -0
  182. package/dist/umd/components/VizScrollmapV2/ScrollmapOverlayV2.d.ts +5 -0
  183. package/dist/umd/components/VizScrollmapV2/ScrollmapOverlayV2.d.ts.map +1 -0
  184. package/dist/umd/components/VizScrollmapV2/index.d.ts +2 -0
  185. package/dist/umd/components/VizScrollmapV2/index.d.ts.map +1 -0
  186. package/dist/umd/components/VizScrollmapV2/scrollmap.types.d.ts +18 -0
  187. package/dist/umd/components/VizScrollmapV2/scrollmap.types.d.ts.map +1 -0
  188. package/dist/umd/components/VizScrollmapV2/useScrollmapOverlay.d.ts +16 -0
  189. package/dist/umd/components/VizScrollmapV2/useScrollmapOverlay.d.ts.map +1 -0
  190. package/dist/umd/configs/style.d.ts +2 -0
  191. package/dist/umd/configs/style.d.ts.map +1 -1
  192. package/dist/umd/helpers/elm-getter.d.ts +2 -2
  193. package/dist/umd/helpers/elm-getter.d.ts.map +1 -1
  194. package/dist/umd/helpers/iframe-helper/fixer.d.ts +18 -0
  195. package/dist/umd/helpers/iframe-helper/fixer.d.ts.map +1 -0
  196. package/dist/umd/helpers/iframe-helper/index.d.ts +2 -0
  197. package/dist/umd/helpers/iframe-helper/index.d.ts.map +1 -0
  198. package/dist/umd/helpers/iframe-helper/init.d.ts +5 -0
  199. package/dist/umd/helpers/iframe-helper/init.d.ts.map +1 -0
  200. package/dist/umd/helpers/iframe-helper/navigation-blocker-v2.d.ts +28 -0
  201. package/dist/umd/helpers/iframe-helper/navigation-blocker-v2.d.ts.map +1 -0
  202. package/dist/umd/helpers/iframe-helper/navigation-blocker.d.ts +20 -0
  203. package/dist/umd/helpers/iframe-helper/navigation-blocker.d.ts.map +1 -0
  204. package/dist/umd/helpers/iframe-helper/style-replacer.d.ts +25 -0
  205. package/dist/umd/helpers/iframe-helper/style-replacer.d.ts.map +1 -0
  206. package/dist/umd/helpers/index.d.ts +2 -2
  207. package/dist/umd/helpers/index.d.ts.map +1 -1
  208. package/dist/umd/helpers/viz-canvas/area-clustering.d.ts +44 -0
  209. package/dist/umd/helpers/viz-canvas/area-clustering.d.ts.map +1 -0
  210. package/dist/umd/helpers/viz-canvas/area-overlay-manager-v2.d.ts +17 -0
  211. package/dist/umd/helpers/viz-canvas/area-overlay-manager-v2.d.ts.map +1 -0
  212. package/dist/umd/helpers/viz-canvas/area-overlay-manager.d.ts +51 -0
  213. package/dist/umd/helpers/viz-canvas/area-overlay-manager.d.ts.map +1 -0
  214. package/dist/umd/helpers/viz-canvas/hierarchical-area-clustering.d.ts +73 -0
  215. package/dist/umd/helpers/viz-canvas/hierarchical-area-clustering.d.ts.map +1 -0
  216. package/dist/umd/helpers/viz-canvas/index.d.ts +3 -0
  217. package/dist/umd/helpers/viz-canvas/index.d.ts.map +1 -0
  218. package/dist/umd/hooks/index.d.ts +2 -1
  219. package/dist/umd/hooks/index.d.ts.map +1 -1
  220. package/dist/umd/hooks/register/useRegisterData.d.ts +2 -2
  221. package/dist/umd/hooks/register/useRegisterData.d.ts.map +1 -1
  222. package/dist/umd/hooks/register/useRegisterHeatmap.d.ts +7 -2
  223. package/dist/umd/hooks/register/useRegisterHeatmap.d.ts.map +1 -1
  224. package/dist/umd/hooks/viz-area/useAreaHeatmap.d.ts +59 -0
  225. package/dist/umd/hooks/viz-area/useAreaHeatmap.d.ts.map +1 -0
  226. package/dist/umd/hooks/viz-area/useAreaHeatmapManager.d.ts +77 -0
  227. package/dist/umd/hooks/viz-area/useAreaHeatmapManager.d.ts.map +1 -0
  228. package/dist/umd/hooks/viz-canvas/index.d.ts +1 -1
  229. package/dist/umd/hooks/viz-canvas/index.d.ts.map +1 -1
  230. package/dist/umd/hooks/viz-canvas/useAreamap.d.ts +14 -0
  231. package/dist/umd/hooks/viz-canvas/useAreamap.d.ts.map +1 -0
  232. package/dist/umd/hooks/viz-canvas/useClickmap.d.ts +3 -1
  233. package/dist/umd/hooks/viz-canvas/useClickmap.d.ts.map +1 -1
  234. package/dist/umd/hooks/viz-canvas/useHeatmapCanvas.d.ts +4 -0
  235. package/dist/umd/hooks/viz-canvas/useHeatmapCanvas.d.ts.map +1 -0
  236. package/dist/umd/hooks/viz-canvas/useScrollmap.d.ts +3 -1
  237. package/dist/umd/hooks/viz-canvas/useScrollmap.d.ts.map +1 -1
  238. package/dist/umd/hooks/{vix-elements → viz-elements}/index.d.ts.map +1 -1
  239. package/dist/umd/hooks/{vix-elements → viz-elements}/useClickedElement.d.ts.map +1 -1
  240. package/dist/umd/hooks/{vix-elements → viz-elements}/useElementCalloutVisible.d.ts.map +1 -1
  241. package/dist/umd/hooks/{vix-elements → viz-elements}/useHeatmapEffects.d.ts.map +1 -1
  242. package/dist/umd/hooks/{vix-elements → viz-elements}/useHeatmapElementPosition.d.ts.map +1 -1
  243. package/dist/umd/hooks/viz-elements/useHeatmapMouseHandler.d.ts +34 -0
  244. package/dist/umd/hooks/viz-elements/useHeatmapMouseHandler.d.ts.map +1 -0
  245. package/dist/umd/hooks/{vix-elements → viz-elements}/useHoveredElement.d.ts +4 -0
  246. package/dist/umd/hooks/viz-elements/useHoveredElement.d.ts.map +1 -0
  247. package/dist/umd/hooks/viz-live/index.d.ts +1 -1
  248. package/dist/{esm/hooks/viz-live/useIframeMessage.d.ts → umd/hooks/viz-live/useVizLiveIframeMsg.d.ts} +2 -10
  249. package/dist/umd/hooks/viz-live/useVizLiveIframeMsg.d.ts.map +1 -0
  250. package/dist/umd/hooks/viz-live/useVizLiveRender.d.ts +4 -0
  251. package/dist/umd/hooks/viz-live/useVizLiveRender.d.ts.map +1 -0
  252. package/dist/umd/hooks/viz-render/useHeatmapRender.d.ts.map +1 -1
  253. package/dist/umd/hooks/viz-scale/useContainerDimensions.d.ts.map +1 -1
  254. package/dist/umd/hooks/viz-scale/useHeatmapScale.d.ts +1 -1
  255. package/dist/umd/hooks/viz-scale/useHeatmapScale.d.ts.map +1 -1
  256. package/dist/umd/hooks/viz-scale/useObserveIframeHeight.d.ts +10 -0
  257. package/dist/umd/hooks/viz-scale/useObserveIframeHeight.d.ts.map +1 -0
  258. package/dist/umd/hooks/viz-scale/useScaleCalculation.d.ts +4 -0
  259. package/dist/umd/hooks/viz-scale/useScaleCalculation.d.ts.map +1 -1
  260. package/dist/umd/hooks/viz-scrollmap/index.d.ts +3 -0
  261. package/dist/umd/hooks/viz-scrollmap/index.d.ts.map +1 -0
  262. package/dist/umd/hooks/viz-scrollmap/useScrollmapZones.d.ts +29 -0
  263. package/dist/umd/hooks/viz-scrollmap/useScrollmapZones.d.ts.map +1 -0
  264. package/dist/umd/hooks/viz-scrollmap/useZonePositions.d.ts +12 -0
  265. package/dist/umd/hooks/viz-scrollmap/useZonePositions.d.ts.map +1 -0
  266. package/dist/umd/index.d.ts +1 -1
  267. package/dist/umd/index.d.ts.map +1 -1
  268. package/dist/umd/index.js +2 -2
  269. package/dist/umd/stores/config.d.ts +5 -1
  270. package/dist/umd/stores/config.d.ts.map +1 -1
  271. package/dist/umd/stores/data.d.ts +5 -3
  272. package/dist/umd/stores/data.d.ts.map +1 -1
  273. package/dist/umd/stores/index.d.ts +2 -0
  274. package/dist/umd/stores/index.d.ts.map +1 -1
  275. package/dist/umd/stores/interaction.d.ts.map +1 -1
  276. package/dist/umd/stores/mode-live.d.ts +4 -0
  277. package/dist/umd/stores/mode-live.d.ts.map +1 -1
  278. package/dist/umd/stores/mode-single.d.ts +9 -0
  279. package/dist/umd/stores/mode-single.d.ts.map +1 -0
  280. package/dist/umd/stores/viz-scrollmap.d.ts +11 -0
  281. package/dist/umd/stores/viz-scrollmap.d.ts.map +1 -0
  282. package/dist/umd/stores/viz.d.ts +6 -4
  283. package/dist/umd/stores/viz.d.ts.map +1 -1
  284. package/dist/umd/types/clarity.d.ts +5 -0
  285. package/dist/umd/types/clarity.d.ts.map +1 -1
  286. package/dist/umd/types/heatmap-info.d.ts +11 -0
  287. package/dist/umd/types/heatmap-info.d.ts.map +1 -0
  288. package/dist/umd/types/heatmap.d.ts +13 -0
  289. package/dist/umd/types/heatmap.d.ts.map +1 -1
  290. package/dist/umd/types/iframe-helper.d.ts +20 -0
  291. package/dist/umd/types/iframe-helper.d.ts.map +1 -0
  292. package/dist/umd/types/index.d.ts +4 -1
  293. package/dist/umd/types/index.d.ts.map +1 -1
  294. package/dist/umd/types/viz-canvas.d.ts +23 -0
  295. package/dist/umd/types/viz-canvas.d.ts.map +1 -0
  296. package/dist/umd/types/viz-element.d.ts +0 -6
  297. package/dist/umd/types/viz-element.d.ts.map +1 -1
  298. package/dist/umd/types/viz-scrollmap.d.ts +27 -0
  299. package/dist/umd/types/viz-scrollmap.d.ts.map +1 -0
  300. package/package.json +14 -11
  301. package/dist/esm/components/Layout/ContentHeader.d.ts +0 -4
  302. package/dist/esm/components/Layout/ContentHeader.d.ts.map +0 -1
  303. package/dist/esm/components/Layout/VizMode.d.ts +0 -2
  304. package/dist/esm/components/Layout/VizMode.d.ts.map +0 -1
  305. package/dist/esm/components/Test.d.ts +0 -121
  306. package/dist/esm/components/Test.d.ts.map +0 -1
  307. package/dist/esm/components/VizDom/VizDomContainer.d.ts +0 -6
  308. package/dist/esm/components/VizDom/VizDomContainer.d.ts.map +0 -1
  309. package/dist/esm/components/VizElement/ClickedElementOverlay.d.ts +0 -17
  310. package/dist/esm/components/VizElement/ClickedElementOverlay.d.ts.map +0 -1
  311. package/dist/esm/components/VizElement/HoveredElementOverlay.d.ts +0 -12
  312. package/dist/esm/components/VizElement/HoveredElementOverlay.d.ts.map +0 -1
  313. package/dist/esm/components/VizElement/MissingElementMessage.d.ts +0 -7
  314. package/dist/esm/components/VizElement/MissingElementMessage.d.ts.map +0 -1
  315. package/dist/esm/components/VizElement/temp/ClarityVisualizer.d.ts +0 -150
  316. package/dist/esm/components/VizElement/temp/ClarityVisualizer.d.ts.map +0 -1
  317. package/dist/esm/components/VizElement/temp/VizElementRank.d.ts +0 -74
  318. package/dist/esm/components/VizElement/temp/VizElementRank.d.ts.map +0 -1
  319. package/dist/esm/components/VizLive/VizLive.d.ts +0 -2
  320. package/dist/esm/components/VizLive/VizLive.d.ts.map +0 -1
  321. package/dist/esm/helpers/viewport-fixer.d.ts +0 -13
  322. package/dist/esm/helpers/viewport-fixer.d.ts.map +0 -1
  323. package/dist/esm/helpers/viewport-replacer.d.ts +0 -26
  324. package/dist/esm/helpers/viewport-replacer.d.ts.map +0 -1
  325. package/dist/esm/hooks/vix-elements/useHoveredElement.d.ts.map +0 -1
  326. package/dist/esm/hooks/viz-canvas/useHeatmapVizCanvas.d.ts +0 -2
  327. package/dist/esm/hooks/viz-canvas/useHeatmapVizCanvas.d.ts.map +0 -1
  328. package/dist/esm/hooks/viz-live/useIframeMessage.d.ts.map +0 -1
  329. package/dist/esm/hooks/viz-scale/useIframeHeight.d.ts +0 -10
  330. package/dist/esm/hooks/viz-scale/useIframeHeight.d.ts.map +0 -1
  331. package/dist/esm/types/viewport-fixer.d.ts +0 -31
  332. package/dist/esm/types/viewport-fixer.d.ts.map +0 -1
  333. package/dist/umd/components/Layout/ContentHeader.d.ts +0 -4
  334. package/dist/umd/components/Layout/ContentHeader.d.ts.map +0 -1
  335. package/dist/umd/components/Test.d.ts +0 -121
  336. package/dist/umd/components/Test.d.ts.map +0 -1
  337. package/dist/umd/components/VizDom/VizDomContainer.d.ts +0 -2
  338. package/dist/umd/components/VizDom/VizDomContainer.d.ts.map +0 -1
  339. package/dist/umd/components/VizElement/ClickedElementOverlay.d.ts +0 -17
  340. package/dist/umd/components/VizElement/ClickedElementOverlay.d.ts.map +0 -1
  341. package/dist/umd/components/VizElement/HoveredElementOverlay.d.ts +0 -12
  342. package/dist/umd/components/VizElement/HoveredElementOverlay.d.ts.map +0 -1
  343. package/dist/umd/components/VizElement/MissingElementMessage.d.ts +0 -7
  344. package/dist/umd/components/VizElement/MissingElementMessage.d.ts.map +0 -1
  345. package/dist/umd/components/VizElement/temp/ClarityVisualizer.d.ts +0 -150
  346. package/dist/umd/components/VizElement/temp/ClarityVisualizer.d.ts.map +0 -1
  347. package/dist/umd/components/VizElement/temp/VizElementRank.d.ts +0 -74
  348. package/dist/umd/components/VizElement/temp/VizElementRank.d.ts.map +0 -1
  349. package/dist/umd/helpers/viewport-fixer.d.ts +0 -13
  350. package/dist/umd/helpers/viewport-fixer.d.ts.map +0 -1
  351. package/dist/umd/helpers/viewport-replacer.d.ts +0 -26
  352. package/dist/umd/helpers/viewport-replacer.d.ts.map +0 -1
  353. package/dist/umd/hooks/vix-elements/useHoveredElement.d.ts.map +0 -1
  354. package/dist/umd/hooks/viz-canvas/useHeatmapVizCanvas.d.ts +0 -2
  355. package/dist/umd/hooks/viz-canvas/useHeatmapVizCanvas.d.ts.map +0 -1
  356. package/dist/umd/hooks/viz-live/useIframeMessage.d.ts.map +0 -1
  357. package/dist/umd/hooks/viz-scale/useIframeHeight.d.ts +0 -10
  358. package/dist/umd/hooks/viz-scale/useIframeHeight.d.ts.map +0 -1
  359. package/dist/umd/types/viewport-fixer.d.ts +0 -31
  360. package/dist/umd/types/viewport-fixer.d.ts.map +0 -1
  361. package/src/components/GraphView.tsx +0 -58
  362. package/src/components/Layout/ContentMetricBar.tsx +0 -23
  363. package/src/components/Layout/ContentToolbar.tsx +0 -22
  364. package/src/components/Layout/ContentTopBar.tsx +0 -24
  365. package/src/components/Layout/ContentVizByMode.tsx +0 -14
  366. package/src/components/Layout/HeatmapLayout.tsx +0 -60
  367. package/src/components/Layout/LeftSidebar.tsx +0 -44
  368. package/src/components/Layout/WrapperLayout.tsx +0 -12
  369. package/src/components/Layout/WrapperPreview.tsx +0 -24
  370. package/src/components/Layout/index.ts +0 -1
  371. package/src/components/VizDom/ReplayControls.tsx +0 -48
  372. package/src/components/VizDom/VizContainer.tsx +0 -40
  373. package/src/components/VizDom/VizDomHeatmap.tsx +0 -28
  374. package/src/components/VizDom/VizDomRenderer.tsx +0 -82
  375. package/src/components/VizDom/VizLoading.tsx +0 -8
  376. package/src/components/VizDom/WrapperVisual.tsx +0 -73
  377. package/src/components/VizDom/index.ts +0 -5
  378. package/src/components/VizElement/DefaultRankBadges.tsx +0 -36
  379. package/src/components/VizElement/ElementCallout.tsx +0 -82
  380. package/src/components/VizElement/ElementMissing.tsx +0 -35
  381. package/src/components/VizElement/ElementOverlay.tsx +0 -66
  382. package/src/components/VizElement/HeatmapElements.tsx +0 -127
  383. package/src/components/VizElement/HeatmapExample.tsx +0 -70
  384. package/src/components/VizElement/RankBadge.tsx +0 -25
  385. package/src/components/VizElement/VizElements.tsx +0 -57
  386. package/src/components/VizElement/index.ts +0 -1
  387. package/src/components/VizLive/VizLiveHeatmap.tsx +0 -27
  388. package/src/components/VizLive/VizLiveRenderer.tsx +0 -47
  389. package/src/components/VizLive/index.ts +0 -1
  390. package/src/components/VizScrollmap/AverageFoldLine.tsx +0 -57
  391. package/src/components/VizScrollmap/HoverZones.tsx +0 -58
  392. package/src/components/VizScrollmap/MetricRow.tsx +0 -0
  393. package/src/components/VizScrollmap/ScrollMapMinimap.tsx +0 -64
  394. package/src/components/VizScrollmap/ScrollMapOverlay.tsx +0 -79
  395. package/src/components/VizScrollmap/ScrollZoneHoverArea.tsx +0 -35
  396. package/src/components/VizScrollmap/ScrollZoneTooltip.tsx +0 -146
  397. package/src/components/VizScrollmap/ScrollmapMarker.tsx +0 -106
  398. package/src/components/VizScrollmap/VizScrollMap.tsx +0 -36
  399. package/src/components/VizScrollmapV2/ScrollmapOverlay.css +0 -94
  400. package/src/components/VizScrollmapV2/ScrollmapOverlayV2.tsx +0 -130
  401. package/src/components/VizScrollmapV2/scrollmap.types.ts +0 -21
  402. package/src/components/VizScrollmapV2/useScrollmapOverlay.ts +0 -187
  403. package/src/components/index.tsx +0 -2
  404. package/src/configs/iframe.ts +0 -15
  405. package/src/configs/index.ts +0 -2
  406. package/src/configs/style.ts +0 -21
  407. package/src/constants/index.ts +0 -4
  408. package/src/global.d.ts +0 -5
  409. package/src/helpers/elm-callout.ts +0 -347
  410. package/src/helpers/elm-getter.ts +0 -70
  411. package/src/helpers/iframe-helper/fixer.ts +0 -100
  412. package/src/helpers/iframe-helper/index.ts +0 -1
  413. package/src/helpers/iframe-helper/init.ts +0 -56
  414. package/src/helpers/iframe-helper/navigation-blocker-v2.ts +0 -371
  415. package/src/helpers/iframe-helper/navigation-blocker.ts +0 -367
  416. package/src/helpers/iframe-helper/style-replacer.ts +0 -231
  417. package/src/helpers/iframe.ts +0 -42
  418. package/src/helpers/index.ts +0 -8
  419. package/src/helpers/viz-canvas/area-clustering.ts +0 -234
  420. package/src/helpers/viz-canvas/area-overlay-manager-v2.ts +0 -176
  421. package/src/helpers/viz-canvas/area-overlay-manager.ts +0 -273
  422. package/src/helpers/viz-canvas/hierarchical-area-clustering.ts +0 -420
  423. package/src/helpers/viz-elements.ts +0 -43
  424. package/src/hooks/index.ts +0 -8
  425. package/src/hooks/register/index.ts +0 -4
  426. package/src/hooks/register/useRegisterConfig.ts +0 -17
  427. package/src/hooks/register/useRegisterControl.ts +0 -13
  428. package/src/hooks/register/useRegisterData.ts +0 -36
  429. package/src/hooks/register/useRegisterHeatmap.ts +0 -38
  430. package/src/hooks/viz-area/useAreaHeatmap.ts +0 -336
  431. package/src/hooks/viz-area/useAreaHeatmapManager.ts +0 -692
  432. package/src/hooks/viz-canvas/index.ts +0 -1
  433. package/src/hooks/viz-canvas/useAreamap.ts +0 -162
  434. package/src/hooks/viz-canvas/useClickmap.ts +0 -24
  435. package/src/hooks/viz-canvas/useHeatmapCanvas.ts +0 -27
  436. package/src/hooks/viz-canvas/useScrollmap.ts +0 -22
  437. package/src/hooks/viz-elements/index.ts +0 -5
  438. package/src/hooks/viz-elements/useClickedElement.ts +0 -86
  439. package/src/hooks/viz-elements/useElementCalloutVisible.ts +0 -45
  440. package/src/hooks/viz-elements/useHeatmapEffects.ts +0 -30
  441. package/src/hooks/viz-elements/useHeatmapElementPosition.ts +0 -60
  442. package/src/hooks/viz-elements/useHeatmapMouseHandler.ts +0 -255
  443. package/src/hooks/viz-elements/useHoveredElement.ts +0 -170
  444. package/src/hooks/viz-live/index.ts +0 -1
  445. package/src/hooks/viz-live/useVizLiveIframeMsg.ts +0 -88
  446. package/src/hooks/viz-live/useVizLiveRender.ts +0 -67
  447. package/src/hooks/viz-render/index.ts +0 -1
  448. package/src/hooks/viz-render/useHeatmapRender.ts +0 -71
  449. package/src/hooks/viz-render/useHeatmapVizRender.ts +0 -20
  450. package/src/hooks/viz-render/useReplayRender.ts +0 -160
  451. package/src/hooks/viz-scale/index.ts +0 -2
  452. package/src/hooks/viz-scale/useContainerDimensions.ts +0 -48
  453. package/src/hooks/viz-scale/useContentDimensions.ts +0 -25
  454. package/src/hooks/viz-scale/useHeatmapScale.ts +0 -52
  455. package/src/hooks/viz-scale/useObserveIframeHeight.ts +0 -162
  456. package/src/hooks/viz-scale/useScaleCalculation.ts +0 -31
  457. package/src/hooks/viz-scale/useScrollSync.ts +0 -36
  458. package/src/hooks/viz-scale/useWrapperRefHeight.ts +0 -91
  459. package/src/hooks/viz-scrollmap/useScrollmapZones.ts +0 -165
  460. package/src/hooks/viz-scrollmap/useZonePositions.ts +0 -38
  461. package/src/index.ts +0 -10
  462. package/src/stores/comp.ts +0 -31
  463. package/src/stores/config.ts +0 -37
  464. package/src/stores/data.ts +0 -30
  465. package/src/stores/index.ts +0 -10
  466. package/src/stores/interaction.ts +0 -32
  467. package/src/stores/mode-live.ts +0 -38
  468. package/src/stores/mode-single.ts +0 -18
  469. package/src/stores/viz-scrollmap.ts +0 -22
  470. package/src/stores/viz.ts +0 -17
  471. package/src/styles/base.css +0 -1
  472. package/src/styles/style.css +0 -137
  473. package/src/types/clarity.ts +0 -45
  474. package/src/types/control.ts +0 -10
  475. package/src/types/elm-callout.ts +0 -9
  476. package/src/types/heatmap-info.ts +0 -11
  477. package/src/types/heatmap.ts +0 -25
  478. package/src/types/iframe-helper.ts +0 -18
  479. package/src/types/index.ts +0 -12
  480. package/src/types/viz-canvas.ts +0 -20
  481. package/src/types/viz-element.ts +0 -34
  482. package/src/types/viz-scrollmap.ts +0 -28
  483. package/src/ui/BoxStack/BoxStack.tsx +0 -136
  484. package/src/ui/BoxStack/index.ts +0 -1
  485. package/src/ui/index.ts +0 -1
  486. package/src/utils/debounce.ts +0 -10
  487. package/src/utils/device.ts +0 -7
  488. package/src/utils/retry.ts +0 -20
  489. package/src/utils/sort.ts +0 -5
  490. /package/dist/esm/hooks/{vix-elements → viz-elements}/index.d.ts +0 -0
  491. /package/dist/esm/hooks/{vix-elements → viz-elements}/useClickedElement.d.ts +0 -0
  492. /package/dist/esm/hooks/{vix-elements → viz-elements}/useElementCalloutVisible.d.ts +0 -0
  493. /package/dist/esm/hooks/{vix-elements → viz-elements}/useHeatmapEffects.d.ts +0 -0
  494. /package/dist/esm/hooks/{vix-elements → viz-elements}/useHeatmapElementPosition.d.ts +0 -0
  495. /package/dist/umd/hooks/{vix-elements → viz-elements}/index.d.ts +0 -0
  496. /package/dist/umd/hooks/{vix-elements → viz-elements}/useClickedElement.d.ts +0 -0
  497. /package/dist/umd/hooks/{vix-elements → viz-elements}/useElementCalloutVisible.d.ts +0 -0
  498. /package/dist/umd/hooks/{vix-elements → viz-elements}/useHeatmapEffects.d.ts +0 -0
  499. /package/dist/umd/hooks/{vix-elements → viz-elements}/useHeatmapElementPosition.d.ts +0 -0
@@ -1,692 +0,0 @@
1
- import { useCallback, useEffect, useRef, useState } from 'react';
2
-
3
- // ============================================================================
4
- // Type Definitions
5
- // ============================================================================
6
-
7
- interface ObservableValue<T> {
8
- observe: (callback: (value: T) => void) => void;
9
- unobserve: (callback: (value: T) => void) => void;
10
- update: (value: T) => void;
11
- value: T;
12
- }
13
-
14
- interface Rect {
15
- width: number;
16
- height: number;
17
- top: number;
18
- left: number;
19
- absoluteLeft: number;
20
- absoluteTop: number;
21
- absoluteRight: number;
22
- absoluteBottom: number;
23
- }
24
-
25
- interface AreaNode {
26
- id: string;
27
- hash: string;
28
- element: HTMLElement;
29
- shadowElement?: HTMLElement;
30
- shadowStyleElement?: HTMLStyleElement;
31
- areaElement?: HTMLDivElement;
32
- rect: ObservableValue<Rect>;
33
- kind: 'area' | 'money';
34
- totalclicks: number;
35
- clickDist: number;
36
- color: string;
37
- hoverColor: string;
38
- isFixed: boolean;
39
- priority: boolean;
40
- parentNode?: AreaNode;
41
- childNodes: Set<AreaNode>;
42
- cumulativeMaxClicks?: number;
43
- changeObserver?: { disconnect: () => void };
44
- iframe?: HTMLIFrameElement; // Iframe chứa element này
45
- }
46
-
47
- interface ElementInfo {
48
- hash: string;
49
- dataId: string;
50
- }
51
-
52
- interface AreaRenderOptions {
53
- areaContainerStyles?: Record<string, any>;
54
- initialAreas?: string[];
55
- }
56
-
57
- interface AreaInfo {
58
- areas: AreaNode[];
59
- selectArea: (area: AreaNode | undefined) => void;
60
- observeAreas: (callback: (areas: AreaNode[]) => void) => void;
61
- unobserveAreas: (callback: (areas: AreaNode[]) => void) => void;
62
- observeSelectedArea: (callback: (area?: AreaNode) => void) => void;
63
- unobserveSelectedArea: (callback: (area?: AreaNode) => void) => void;
64
- observeHoveredArea: (callback: (area?: AreaNode) => void) => void;
65
- unobserveHoveredArea: (callback: (area?: AreaNode) => void) => void;
66
- observerEditing: (callback: (editing: boolean) => void) => void;
67
- unobserveEditing: (callback: (editing: boolean) => void) => void;
68
- enterEditing: () => void;
69
- exitEditing: () => void;
70
- removeArea: (area: AreaNode) => void;
71
- }
72
-
73
- interface ClickData {
74
- hash: string;
75
- clicks: number[];
76
- x: number[];
77
- y: number[];
78
- points: number;
79
- totalclicks: number;
80
- selector: string;
81
- }
82
-
83
- export interface HeatmapData {
84
- clickData: ClickData[];
85
- totalClicks: number;
86
- }
87
-
88
- // ============================================================================
89
- // Constants
90
- // ============================================================================
91
-
92
- const HEATMAP_GRADIENT_COLORS: [number, number, number][] = [
93
- [0, 0, 255], // Blue
94
- [0, 255, 255], // Cyan
95
- [0, 255, 0], // Green
96
- [255, 255, 0], // Yellow
97
- [255, 0, 0], // Red
98
- ];
99
-
100
- const GRADIENT_COLOR_COUNT = HEATMAP_GRADIENT_COLORS.length - 1;
101
- const HOVER_BOX_SHADOW = '0 0 0 1px #0078D4, 0 0 0 1px #0078D4 inset, 0 0 0 2px white inset';
102
- const AREA_MAP_DIV_ATTRIBUTE = 'data-clarity-area-map-div';
103
- const MIN_LABEL_WIDTH = 67;
104
- const MIN_LABEL_HEIGHT = 30;
105
-
106
- // ============================================================================
107
- // Observable Pattern
108
- // ============================================================================
109
-
110
- function createObservable<T>(initialValue: T): ObservableValue<T> {
111
- const observers = new Set<(value: T) => void>();
112
-
113
- const observable: ObservableValue<T> = {
114
- observe: (callback: (value: T) => void) => {
115
- observers.add(callback);
116
- if (observable.value !== undefined) {
117
- callback(observable.value);
118
- }
119
- },
120
- unobserve: (callback: (value: T) => void) => {
121
- observers.delete(callback);
122
- },
123
- update: (newValue: T) => {
124
- observable.value = newValue;
125
- observers.forEach((callback) => {
126
- callback(observable.value);
127
- });
128
- },
129
- value: initialValue,
130
- };
131
-
132
- return observable;
133
- }
134
-
135
- // ============================================================================
136
- // Color Utilities
137
- // ============================================================================
138
-
139
- function getHeatmapColor(percentage: number): string {
140
- const index = Math.min(Math.floor(percentage * GRADIENT_COLOR_COUNT), GRADIENT_COLOR_COUNT - 1);
141
- const [r, g, b] = HEATMAP_GRADIENT_COLORS[index];
142
- return `rgba(${r}, ${g}, ${b}, 0.5)`;
143
- }
144
-
145
- function getHoverColor(percentage: number): string {
146
- const index = Math.min(Math.floor(percentage * GRADIENT_COLOR_COUNT), GRADIENT_COLOR_COUNT - 1);
147
- const [r, g, b] = HEATMAP_GRADIENT_COLORS[index];
148
- return `rgba(${r}, ${g}, ${b}, 0.8)`;
149
- }
150
-
151
- // ============================================================================
152
- // DOM & Iframe Utilities
153
- // ============================================================================
154
-
155
- function getShadowRoot(element: HTMLElement): ShadowRoot {
156
- return element.shadowRoot ?? element.attachShadow({ mode: 'open' });
157
- }
158
-
159
- /**
160
- * Lấy tất cả iframes trong document, bao gồm nested iframes
161
- */
162
- function getAllIframes(doc: Document): HTMLIFrameElement[] {
163
- const iframes: HTMLIFrameElement[] = [];
164
- const iframeElements = doc.querySelectorAll('iframe');
165
-
166
- iframeElements.forEach((iframe) => {
167
- iframes.push(iframe);
168
-
169
- // Thử truy cập vào nested iframes (nếu same-origin)
170
- try {
171
- if (iframe.contentDocument) {
172
- const nestedIframes = getAllIframes(iframe.contentDocument);
173
- iframes.push(...nestedIframes);
174
- }
175
- } catch (e) {
176
- console.warn('Cannot access iframe content (cross-origin):', e);
177
- }
178
- });
179
-
180
- return iframes;
181
- }
182
-
183
- /**
184
- * Tính toán vị trí element bên trong iframe so với parent document
185
- */
186
- function getIframeOffset(iframe: HTMLIFrameElement): { top: number; left: number } {
187
- const iframeRect = iframe.getBoundingClientRect();
188
- let top = iframeRect.top;
189
- let left = iframeRect.left;
190
-
191
- // Nếu iframe nằm trong iframe khác, tính tổng offset
192
- let parentWindow = iframe.ownerDocument.defaultView?.parent;
193
- let currentIframe = iframe;
194
-
195
- while (parentWindow && parentWindow !== window) {
196
- try {
197
- const parentIframes = parentWindow.document.querySelectorAll('iframe');
198
- const parentIframe = Array.from(parentIframes).find(
199
- (frame) => frame.contentWindow === currentIframe.ownerDocument.defaultView,
200
- );
201
-
202
- if (parentIframe) {
203
- const parentRect = parentIframe.getBoundingClientRect();
204
- top += parentRect.top;
205
- left += parentRect.left;
206
- currentIframe = parentIframe;
207
- parentWindow = parentIframe.ownerDocument.defaultView?.parent;
208
- } else {
209
- break;
210
- }
211
- } catch (e) {
212
- break;
213
- }
214
- }
215
-
216
- return { top, left };
217
- }
218
-
219
- /**
220
- * Lấy rect của element, xử lý cả trường hợp element trong iframe
221
- */
222
- function getElementRect(
223
- element: HTMLElement,
224
- containerElement?: HTMLElement,
225
- iframe?: HTMLIFrameElement,
226
- ): Rect {
227
- const elementRect = element.getBoundingClientRect();
228
- let width = elementRect.width;
229
- let height = elementRect.height;
230
- let top = elementRect.top;
231
- let left = elementRect.left;
232
-
233
- // Nếu element nằm trong iframe, cộng thêm offset của iframe
234
- if (iframe) {
235
- const iframeOffset = getIframeOffset(iframe);
236
- top += iframeOffset.top;
237
- left += iframeOffset.left;
238
- }
239
-
240
- // Tính toán vị trí tương đối với container
241
- let relativeTop = top;
242
- let relativeLeft = left;
243
-
244
- if (containerElement) {
245
- const containerRect = containerElement.getBoundingClientRect();
246
- relativeTop = top - containerRect.top;
247
- relativeLeft = left - containerRect.left;
248
- }
249
-
250
- return {
251
- width,
252
- height,
253
- top: relativeTop,
254
- left: relativeLeft,
255
- absoluteLeft: left,
256
- absoluteTop: top,
257
- absoluteRight: left + width,
258
- absoluteBottom: top + height,
259
- };
260
- }
261
-
262
- function getElementInfo(element: HTMLElement, useHashBeta = false): ElementInfo {
263
- return {
264
- hash:
265
- element.getAttribute(useHashBeta ? 'data-clarity-hashbeta' : 'data-clarity-hashalpha') || '',
266
- dataId: element.getAttribute('data-clarity-id') || '',
267
- };
268
- }
269
-
270
- /**
271
- * Tìm element trong document hoặc trong các iframes
272
- */
273
- function findElementByHash(
274
- hash: string,
275
- rootDocument: Document,
276
- ): { element: HTMLElement | null; iframe?: HTMLIFrameElement } {
277
- // Tìm trong document chính
278
- let element = rootDocument.querySelector(`[data-clarity-hashalpha="${hash}"]`) as HTMLElement;
279
- if (element) {
280
- return { element };
281
- }
282
-
283
- // Tìm trong các iframes
284
- const iframes = getAllIframes(rootDocument);
285
- for (const iframe of iframes) {
286
- try {
287
- if (iframe.contentDocument) {
288
- element = iframe.contentDocument.querySelector(
289
- `[data-clarity-hashalpha="${hash}"]`,
290
- ) as HTMLElement;
291
- if (element) {
292
- return { element, iframe };
293
- }
294
- }
295
- } catch (e) {
296
- console.warn('Cannot access iframe content:', e);
297
- }
298
- }
299
-
300
- return { element: null };
301
- }
302
-
303
- // ============================================================================
304
- // Overlay Creation
305
- // ============================================================================
306
-
307
- /**
308
- * Tạo overlay div để hiển thị trên element (bao gồm cả element trong iframe)
309
- */
310
- function createOverlayElement(
311
- areaNode: AreaNode,
312
- parentContainer: HTMLElement,
313
- displayMode: 'area' | 'money' = 'area',
314
- ): HTMLDivElement {
315
- const overlayDiv = document.createElement('div');
316
- const rect = areaNode.rect.value;
317
-
318
- // Style cho overlay
319
- Object.assign(overlayDiv.style, {
320
- position: 'absolute',
321
- top: `${rect.top}px`,
322
- left: `${rect.left}px`,
323
- width: `${rect.width}px`,
324
- height: `${rect.height}px`,
325
- backgroundColor: areaNode.color,
326
- boxShadow: '0 0 0 2px white inset',
327
- display: 'flex',
328
- alignItems: 'center',
329
- justifyContent: 'center',
330
- pointerEvents: 'auto',
331
- cursor: 'pointer',
332
- transition: 'all 0.2s ease',
333
- zIndex: '9999',
334
- boxSizing: 'border-box',
335
- });
336
-
337
- overlayDiv.setAttribute(AREA_MAP_DIV_ATTRIBUTE, '1');
338
- overlayDiv.setAttribute('data-area-id', areaNode.id);
339
-
340
- // Thêm label nếu đủ lớn
341
- if (rect.width >= MIN_LABEL_WIDTH && rect.height >= MIN_LABEL_HEIGHT) {
342
- const label = createLabelElement(areaNode, displayMode);
343
- overlayDiv.appendChild(label);
344
- }
345
-
346
- // Event handlers
347
- overlayDiv.addEventListener('mouseenter', () => {
348
- overlayDiv.style.backgroundColor = areaNode.hoverColor;
349
- overlayDiv.style.boxShadow = HOVER_BOX_SHADOW;
350
- });
351
-
352
- overlayDiv.addEventListener('mouseleave', () => {
353
- overlayDiv.style.backgroundColor = areaNode.color;
354
- overlayDiv.style.boxShadow = '0 0 0 2px white inset';
355
- });
356
-
357
- return overlayDiv;
358
- }
359
-
360
- function createLabelElement(areaNode: AreaNode, displayMode: 'area' | 'money'): HTMLDivElement {
361
- const labelDiv = document.createElement('div');
362
-
363
- if (displayMode === 'area') {
364
- labelDiv.textContent = `${areaNode.clickDist.toFixed(2)}%`;
365
- }
366
-
367
- Object.assign(labelDiv.style, {
368
- color: '#161514',
369
- backgroundColor: 'rgba(255, 255, 255, 0.86)',
370
- display: 'flex',
371
- flexDirection: 'column',
372
- alignItems: 'center',
373
- padding: '8px',
374
- borderRadius: '4px',
375
- fontSize: '16px',
376
- lineHeight: '20px',
377
- minWidth: '56px',
378
- fontWeight: '600',
379
- fontFamily:
380
- '"Segoe UI", "Segoe UI Web (West European)", "Segoe UI", -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif',
381
- pointerEvents: 'none',
382
- });
383
-
384
- return labelDiv;
385
- }
386
-
387
- // ============================================================================
388
- // Area Renderer
389
- // ============================================================================
390
-
391
- function createAreaRenderer(): any {
392
- let selectedArea: AreaNode | undefined;
393
- let overlayContainer: HTMLDivElement | null = null;
394
-
395
- const areasObservable = createObservable<AreaNode[]>([]);
396
- const selectedAreaObservable = createObservable<AreaNode | undefined>(undefined);
397
- const hoveredAreaObservable = createObservable<AreaNode | undefined>(undefined);
398
- const editingObservable = createObservable<boolean>(false);
399
-
400
- const areaSet = new Set<AreaNode>();
401
- const overlayMap = new Map<string, HTMLDivElement>(); // areaId -> overlay element
402
-
403
- const selectArea = (area: AreaNode | undefined) => {
404
- selectedArea = area;
405
- selectedAreaObservable.update(selectedArea);
406
- };
407
-
408
- const removeArea = (area: AreaNode, skipUpdate = false) => {
409
- areaSet.delete(area);
410
-
411
- // Xóa overlay element
412
- const overlay = overlayMap.get(area.id);
413
- if (overlay && overlay.parentElement) {
414
- overlay.parentElement.removeChild(overlay);
415
- }
416
- overlayMap.delete(area.id);
417
-
418
- if (!skipUpdate) {
419
- updateAreasObservable();
420
- }
421
- };
422
-
423
- const areaInfo: AreaInfo = {
424
- areas: [],
425
- selectArea,
426
- observeAreas: areasObservable.observe,
427
- unobserveAreas: areasObservable.unobserve,
428
- observeSelectedArea: selectedAreaObservable.observe,
429
- unobserveSelectedArea: selectedAreaObservable.unobserve,
430
- observeHoveredArea: hoveredAreaObservable.observe,
431
- unobserveHoveredArea: hoveredAreaObservable.unobserve,
432
- observerEditing: editingObservable.observe,
433
- unobserveEditing: editingObservable.unobserve,
434
- enterEditing: () => {},
435
- exitEditing: () => {},
436
- removeArea,
437
- };
438
-
439
- const updateAreasObservable = () => {
440
- const areas = Array.from(areaSet);
441
- areaInfo.areas = areas;
442
- areasObservable.update(areas);
443
- };
444
-
445
- const renderArea = (area: AreaNode) => {
446
- if (!overlayContainer) return;
447
-
448
- // Tạo overlay element
449
- const overlay = createOverlayElement(area, overlayContainer, 'area');
450
- overlayContainer.appendChild(overlay);
451
- overlayMap.set(area.id, overlay);
452
-
453
- // Click handler
454
- overlay.addEventListener('click', () => {
455
- selectArea(area);
456
- });
457
- };
458
-
459
- const renderer = {
460
- lazyRenderArea: (area: AreaNode) => areaSet.add(area),
461
- removeArea,
462
- render: () => {
463
- // Render tất cả areas
464
- areaSet.forEach(renderArea);
465
- updateAreasObservable();
466
- },
467
- clear: () => {
468
- // Xóa tất cả overlays
469
- areaSet.forEach((area) => {
470
- const overlay = overlayMap.get(area.id);
471
- if (overlay && overlay.parentElement) {
472
- overlay.parentElement.removeChild(overlay);
473
- }
474
- });
475
-
476
- areaSet.clear();
477
- overlayMap.clear();
478
- updateAreasObservable();
479
- },
480
- getAreas: () => Array.from(areaSet),
481
- getAreaInfo: () => areaInfo,
482
- init: (container: HTMLDivElement) => {
483
- overlayContainer = container;
484
- },
485
- areaInfo,
486
- updateHoveredArea: hoveredAreaObservable.update,
487
- };
488
-
489
- return renderer;
490
- }
491
-
492
- // ============================================================================
493
- // CUSTOM REACT HOOK
494
- // ============================================================================
495
-
496
- interface UseHeatmapOptions {
497
- data?: HeatmapData;
498
- iframeRef?: React.RefObject<HTMLIFrameElement>;
499
- options?: AreaRenderOptions;
500
- enabled?: boolean;
501
- includeIframes?: boolean; // Có scan iframes không?
502
- }
503
-
504
- interface UseHeatmapReturn {
505
- areas: AreaNode[];
506
- selectedArea: AreaNode | undefined;
507
- hoveredArea: AreaNode | undefined;
508
- isEditing: boolean;
509
- selectArea: (area: AreaNode | undefined) => void;
510
- enterEditing: () => void;
511
- exitEditing: () => void;
512
- clear: () => void;
513
- refresh: () => void;
514
- }
515
-
516
- export function useHeatmap({
517
- data,
518
- iframeRef,
519
- options = {},
520
- enabled = true,
521
- includeIframes = true,
522
- }: UseHeatmapOptions = {}): UseHeatmapReturn {
523
- const [areas, setAreas] = useState<AreaNode[]>([]);
524
- const [selectedArea, setSelectedArea] = useState<AreaNode | undefined>();
525
- const [hoveredArea, setHoveredArea] = useState<AreaNode | undefined>();
526
- const [isEditing, setIsEditing] = useState(false);
527
-
528
- const rendererRef = useRef<any>(null);
529
- const overlayContainerRef = useRef<HTMLDivElement | null>(null);
530
-
531
- // Initialize renderer và overlay container
532
- useEffect(() => {
533
- if (!rendererRef.current) {
534
- rendererRef.current = createAreaRenderer();
535
- }
536
-
537
- // Tạo overlay container
538
- if (!overlayContainerRef.current && iframeRef?.current) {
539
- const overlayDiv = document.createElement('div');
540
- overlayDiv.id = 'heatmap-overlay-container';
541
- Object.assign(overlayDiv.style, {
542
- position: 'absolute',
543
- top: '0',
544
- left: '0',
545
- width: '100%',
546
- height: '100%',
547
- pointerEvents: 'none',
548
- zIndex: '9998',
549
- ...options.areaContainerStyles,
550
- });
551
-
552
- iframeRef.current.style.position = 'relative';
553
- iframeRef.current.appendChild(overlayDiv);
554
- overlayContainerRef.current = overlayDiv;
555
-
556
- rendererRef.current.init(overlayDiv);
557
- }
558
-
559
- return () => {
560
- if (rendererRef.current) {
561
- rendererRef.current.clear();
562
- }
563
-
564
- // Cleanup overlay container
565
- if (overlayContainerRef.current && overlayContainerRef.current.parentElement) {
566
- overlayContainerRef.current.parentElement.removeChild(overlayContainerRef.current);
567
- }
568
- };
569
- }, [data]);
570
-
571
- // Subscribe to observable changes
572
- useEffect(() => {
573
- if (!rendererRef.current) return;
574
-
575
- const renderer = rendererRef.current;
576
- const areaInfo = renderer.getAreaInfo();
577
-
578
- areaInfo.observeAreas(setAreas);
579
- areaInfo.observeSelectedArea(setSelectedArea);
580
- areaInfo.observeHoveredArea(setHoveredArea);
581
- areaInfo.observerEditing(setIsEditing);
582
-
583
- return () => {
584
- areaInfo.unobserveAreas(setAreas);
585
- areaInfo.unobserveSelectedArea(setSelectedArea);
586
- areaInfo.unobserveHoveredArea(setHoveredArea);
587
- areaInfo.unobserveEditing(setIsEditing);
588
- };
589
- }, [data]);
590
-
591
- // Process data và render heatmap (bao gồm iframe)
592
- useEffect(() => {
593
- if (
594
- !enabled ||
595
- !data ||
596
- !iframeRef?.current ||
597
- !rendererRef.current ||
598
- !overlayContainerRef.current
599
- ) {
600
- return;
601
- }
602
-
603
- const renderer = rendererRef.current;
604
- const container = iframeRef.current.contentDocument;
605
-
606
- // Clear previous render
607
- // renderer.clear();
608
-
609
- // Process click data
610
- data.clickData.forEach((clickItem) => {
611
- // Tìm element (bao gồm trong iframes)
612
- const element = container?.querySelector(
613
- `[data-clarity-hashalpha="${clickItem.hash}"]`,
614
- ) as HTMLElement;
615
-
616
- if (!element) {
617
- console.warn(`Element not found for hash: ${clickItem.hash}`);
618
- return;
619
- }
620
-
621
- const clickPercentage = clickItem.totalclicks / data.totalClicks;
622
- const rect = getElementRect(element, overlayContainerRef.current!);
623
-
624
- const areaNode: AreaNode = {
625
- id: `area_${clickItem.hash}`,
626
- hash: clickItem.hash,
627
- element,
628
- rect: createObservable(rect),
629
- kind: 'area',
630
- totalclicks: clickItem.totalclicks,
631
- clickDist: clickPercentage * 100,
632
- color: getHeatmapColor(clickPercentage),
633
- hoverColor: getHoverColor(clickPercentage),
634
- isFixed: false,
635
- priority: false,
636
- childNodes: new Set(),
637
- };
638
-
639
- renderer.lazyRenderArea(areaNode);
640
- });
641
-
642
- // renderer.render();
643
- }, [data]);
644
-
645
- const selectArea = useCallback((area: AreaNode | undefined) => {
646
- if (rendererRef.current) {
647
- rendererRef.current.getAreaInfo().selectArea(area);
648
- }
649
- }, []);
650
-
651
- const enterEditing = useCallback(() => {
652
- if (rendererRef.current) {
653
- rendererRef.current.getAreaInfo().enterEditing();
654
- }
655
- }, []);
656
-
657
- const exitEditing = useCallback(() => {
658
- if (rendererRef.current) {
659
- rendererRef.current.getAreaInfo().exitEditing();
660
- }
661
- }, []);
662
-
663
- const clear = useCallback(() => {
664
- if (rendererRef.current) {
665
- rendererRef.current.clear();
666
- }
667
- }, []);
668
-
669
- const refresh = useCallback(() => {
670
- if (rendererRef.current) {
671
- rendererRef.current.render();
672
- }
673
- }, []);
674
-
675
- return {
676
- areas,
677
- selectedArea,
678
- hoveredArea,
679
- isEditing,
680
- selectArea,
681
- enterEditing,
682
- exitEditing,
683
- clear,
684
- refresh,
685
- };
686
- }
687
-
688
- // ============================================================================
689
- // EXAMPLE COMPONENT - VÍ DỤ SỬ DỤNG VỚI IFRAME
690
- // ============================================================================
691
-
692
- export default useHeatmap;
@@ -1 +0,0 @@
1
- export * from './useHeatmapCanvas';