@gemx-dev/heatmap-react 3.5.45 → 3.5.46

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/ContentHeader.d.ts +4 -0
  2. package/dist/esm/components/Layout/ContentHeader.d.ts.map +1 -0
  3. package/dist/esm/components/Layout/HeatmapLayout.d.ts +2 -3
  4. package/dist/esm/components/Layout/HeatmapLayout.d.ts.map +1 -1
  5. package/dist/esm/components/Layout/VizMode.d.ts +2 -0
  6. package/dist/esm/components/Layout/VizMode.d.ts.map +1 -0
  7. package/dist/esm/components/Test.d.ts +121 -0
  8. package/dist/esm/components/Test.d.ts.map +1 -0
  9. package/dist/esm/components/VizDom/VizDomContainer.d.ts +6 -0
  10. package/dist/esm/components/VizDom/VizDomContainer.d.ts.map +1 -0
  11. package/dist/esm/components/VizDom/VizDomRenderer.d.ts.map +1 -1
  12. package/dist/esm/components/VizElement/ClickedElementOverlay.d.ts +17 -0
  13. package/dist/esm/components/VizElement/ClickedElementOverlay.d.ts.map +1 -0
  14. package/dist/esm/components/VizElement/HeatmapElements.d.ts +2 -2
  15. package/dist/esm/components/VizElement/HeatmapElements.d.ts.map +1 -1
  16. package/dist/esm/components/VizElement/HoveredElementOverlay.d.ts +12 -0
  17. package/dist/esm/components/VizElement/HoveredElementOverlay.d.ts.map +1 -0
  18. package/dist/esm/components/VizElement/MissingElementMessage.d.ts +7 -0
  19. package/dist/esm/components/VizElement/MissingElementMessage.d.ts.map +1 -0
  20. package/dist/esm/components/VizElement/VizElements.d.ts.map +1 -1
  21. package/dist/esm/components/VizElement/temp/ClarityVisualizer.d.ts +150 -0
  22. package/dist/esm/components/VizElement/temp/ClarityVisualizer.d.ts.map +1 -0
  23. package/dist/esm/components/VizElement/temp/VizElementRank.d.ts +74 -0
  24. package/dist/esm/components/VizElement/temp/VizElementRank.d.ts.map +1 -0
  25. package/dist/esm/components/VizLive/VizLive.d.ts +2 -0
  26. package/dist/esm/components/VizLive/VizLive.d.ts.map +1 -0
  27. package/dist/esm/components/VizLive/VizLiveHeatmap.d.ts.map +1 -1
  28. package/dist/esm/components/VizLive/VizLiveRenderer.d.ts.map +1 -1
  29. package/dist/esm/configs/style.d.ts +0 -2
  30. package/dist/esm/configs/style.d.ts.map +1 -1
  31. package/dist/esm/helpers/elm-getter.d.ts +2 -2
  32. package/dist/esm/helpers/elm-getter.d.ts.map +1 -1
  33. package/dist/esm/helpers/index.d.ts +2 -2
  34. package/dist/esm/helpers/index.d.ts.map +1 -1
  35. package/dist/esm/helpers/viewport-fixer.d.ts +13 -0
  36. package/dist/esm/helpers/viewport-fixer.d.ts.map +1 -0
  37. package/dist/esm/helpers/viewport-replacer.d.ts +26 -0
  38. package/dist/esm/helpers/viewport-replacer.d.ts.map +1 -0
  39. package/dist/esm/hooks/index.d.ts +1 -2
  40. package/dist/esm/hooks/index.d.ts.map +1 -1
  41. package/dist/esm/hooks/register/useRegisterData.d.ts +2 -2
  42. package/dist/esm/hooks/register/useRegisterData.d.ts.map +1 -1
  43. package/dist/esm/hooks/register/useRegisterHeatmap.d.ts +2 -7
  44. package/dist/esm/hooks/register/useRegisterHeatmap.d.ts.map +1 -1
  45. package/dist/esm/hooks/{viz-elements → vix-elements}/index.d.ts.map +1 -1
  46. package/dist/esm/hooks/{viz-elements → vix-elements}/useClickedElement.d.ts.map +1 -1
  47. package/dist/esm/hooks/{viz-elements → vix-elements}/useElementCalloutVisible.d.ts.map +1 -1
  48. package/dist/esm/hooks/{viz-elements → vix-elements}/useHeatmapEffects.d.ts.map +1 -1
  49. package/dist/esm/hooks/{viz-elements → vix-elements}/useHeatmapElementPosition.d.ts.map +1 -1
  50. package/dist/esm/hooks/{viz-elements → vix-elements}/useHoveredElement.d.ts +0 -4
  51. package/dist/esm/hooks/vix-elements/useHoveredElement.d.ts.map +1 -0
  52. package/dist/esm/hooks/viz-canvas/index.d.ts +1 -1
  53. package/dist/esm/hooks/viz-canvas/index.d.ts.map +1 -1
  54. package/dist/esm/hooks/viz-canvas/useClickmap.d.ts +1 -3
  55. package/dist/esm/hooks/viz-canvas/useClickmap.d.ts.map +1 -1
  56. package/dist/esm/hooks/viz-canvas/useHeatmapVizCanvas.d.ts +2 -0
  57. package/dist/esm/hooks/viz-canvas/useHeatmapVizCanvas.d.ts.map +1 -0
  58. package/dist/esm/hooks/viz-canvas/useScrollmap.d.ts +1 -3
  59. package/dist/esm/hooks/viz-canvas/useScrollmap.d.ts.map +1 -1
  60. package/dist/esm/hooks/viz-live/index.d.ts +1 -1
  61. package/dist/{umd/hooks/viz-live/useVizLiveIframeMsg.d.ts → esm/hooks/viz-live/useIframeMessage.d.ts} +10 -2
  62. package/dist/esm/hooks/viz-live/useIframeMessage.d.ts.map +1 -0
  63. package/dist/esm/hooks/viz-render/useHeatmapRender.d.ts.map +1 -1
  64. package/dist/esm/hooks/viz-scale/useContainerDimensions.d.ts.map +1 -1
  65. package/dist/esm/hooks/viz-scale/useHeatmapScale.d.ts +1 -1
  66. package/dist/esm/hooks/viz-scale/useHeatmapScale.d.ts.map +1 -1
  67. package/dist/esm/hooks/viz-scale/useIframeHeight.d.ts +10 -0
  68. package/dist/esm/hooks/viz-scale/useIframeHeight.d.ts.map +1 -0
  69. package/dist/esm/index.d.ts +1 -1
  70. package/dist/esm/index.d.ts.map +1 -1
  71. package/dist/esm/index.js +210 -1181
  72. package/dist/esm/index.mjs +210 -1181
  73. package/dist/esm/stores/config.d.ts +1 -5
  74. package/dist/esm/stores/config.d.ts.map +1 -1
  75. package/dist/esm/stores/data.d.ts +3 -5
  76. package/dist/esm/stores/data.d.ts.map +1 -1
  77. package/dist/esm/stores/index.d.ts +0 -2
  78. package/dist/esm/stores/index.d.ts.map +1 -1
  79. package/dist/esm/stores/interaction.d.ts.map +1 -1
  80. package/dist/esm/stores/mode-live.d.ts +0 -4
  81. package/dist/esm/stores/mode-live.d.ts.map +1 -1
  82. package/dist/esm/stores/viz.d.ts +4 -0
  83. package/dist/esm/stores/viz.d.ts.map +1 -1
  84. package/dist/esm/types/clarity.d.ts +0 -5
  85. package/dist/esm/types/clarity.d.ts.map +1 -1
  86. package/dist/esm/types/heatmap.d.ts +0 -13
  87. package/dist/esm/types/heatmap.d.ts.map +1 -1
  88. package/dist/esm/types/index.d.ts +1 -4
  89. package/dist/esm/types/index.d.ts.map +1 -1
  90. package/dist/esm/types/viewport-fixer.d.ts +31 -0
  91. package/dist/esm/types/viewport-fixer.d.ts.map +1 -0
  92. package/dist/esm/types/viz-element.d.ts +6 -0
  93. package/dist/esm/types/viz-element.d.ts.map +1 -1
  94. package/dist/umd/components/Layout/ContentHeader.d.ts +4 -0
  95. package/dist/umd/components/Layout/ContentHeader.d.ts.map +1 -0
  96. package/dist/umd/components/Layout/HeatmapLayout.d.ts +2 -3
  97. package/dist/umd/components/Layout/HeatmapLayout.d.ts.map +1 -1
  98. package/dist/umd/components/Test.d.ts +121 -0
  99. package/dist/umd/components/Test.d.ts.map +1 -0
  100. package/dist/umd/components/VizDom/VizDomContainer.d.ts +2 -0
  101. package/dist/umd/components/VizDom/VizDomContainer.d.ts.map +1 -0
  102. package/dist/umd/components/VizDom/VizDomRenderer.d.ts.map +1 -1
  103. package/dist/umd/components/VizElement/ClickedElementOverlay.d.ts +17 -0
  104. package/dist/umd/components/VizElement/ClickedElementOverlay.d.ts.map +1 -0
  105. package/dist/umd/components/VizElement/HeatmapElements.d.ts +2 -2
  106. package/dist/umd/components/VizElement/HeatmapElements.d.ts.map +1 -1
  107. package/dist/umd/components/VizElement/HoveredElementOverlay.d.ts +12 -0
  108. package/dist/umd/components/VizElement/HoveredElementOverlay.d.ts.map +1 -0
  109. package/dist/umd/components/VizElement/MissingElementMessage.d.ts +7 -0
  110. package/dist/umd/components/VizElement/MissingElementMessage.d.ts.map +1 -0
  111. package/dist/umd/components/VizElement/VizElements.d.ts.map +1 -1
  112. package/dist/umd/components/VizElement/temp/ClarityVisualizer.d.ts +150 -0
  113. package/dist/umd/components/VizElement/temp/ClarityVisualizer.d.ts.map +1 -0
  114. package/dist/umd/components/VizElement/temp/VizElementRank.d.ts +74 -0
  115. package/dist/umd/components/VizElement/temp/VizElementRank.d.ts.map +1 -0
  116. package/dist/umd/components/VizLive/VizLiveHeatmap.d.ts.map +1 -1
  117. package/dist/umd/components/VizLive/VizLiveRenderer.d.ts.map +1 -1
  118. package/dist/umd/configs/style.d.ts +0 -2
  119. package/dist/umd/configs/style.d.ts.map +1 -1
  120. package/dist/umd/helpers/elm-getter.d.ts +2 -2
  121. package/dist/umd/helpers/elm-getter.d.ts.map +1 -1
  122. package/dist/umd/helpers/index.d.ts +2 -2
  123. package/dist/umd/helpers/index.d.ts.map +1 -1
  124. package/dist/umd/helpers/viewport-fixer.d.ts +13 -0
  125. package/dist/umd/helpers/viewport-fixer.d.ts.map +1 -0
  126. package/dist/umd/helpers/viewport-replacer.d.ts +26 -0
  127. package/dist/umd/helpers/viewport-replacer.d.ts.map +1 -0
  128. package/dist/umd/hooks/index.d.ts +1 -2
  129. package/dist/umd/hooks/index.d.ts.map +1 -1
  130. package/dist/umd/hooks/register/useRegisterData.d.ts +2 -2
  131. package/dist/umd/hooks/register/useRegisterData.d.ts.map +1 -1
  132. package/dist/umd/hooks/register/useRegisterHeatmap.d.ts +2 -7
  133. package/dist/umd/hooks/register/useRegisterHeatmap.d.ts.map +1 -1
  134. package/dist/umd/hooks/{viz-elements → vix-elements}/index.d.ts.map +1 -1
  135. package/dist/umd/hooks/{viz-elements → vix-elements}/useClickedElement.d.ts.map +1 -1
  136. package/dist/umd/hooks/{viz-elements → vix-elements}/useElementCalloutVisible.d.ts.map +1 -1
  137. package/dist/umd/hooks/{viz-elements → vix-elements}/useHeatmapEffects.d.ts.map +1 -1
  138. package/dist/umd/hooks/{viz-elements → vix-elements}/useHeatmapElementPosition.d.ts.map +1 -1
  139. package/dist/umd/hooks/{viz-elements → vix-elements}/useHoveredElement.d.ts +0 -4
  140. package/dist/umd/hooks/vix-elements/useHoveredElement.d.ts.map +1 -0
  141. package/dist/umd/hooks/viz-canvas/index.d.ts +1 -1
  142. package/dist/umd/hooks/viz-canvas/index.d.ts.map +1 -1
  143. package/dist/umd/hooks/viz-canvas/useClickmap.d.ts +1 -3
  144. package/dist/umd/hooks/viz-canvas/useClickmap.d.ts.map +1 -1
  145. package/dist/umd/hooks/viz-canvas/useHeatmapVizCanvas.d.ts +2 -0
  146. package/dist/umd/hooks/viz-canvas/useHeatmapVizCanvas.d.ts.map +1 -0
  147. package/dist/umd/hooks/viz-canvas/useScrollmap.d.ts +1 -3
  148. package/dist/umd/hooks/viz-canvas/useScrollmap.d.ts.map +1 -1
  149. package/dist/umd/hooks/viz-live/index.d.ts +1 -1
  150. package/dist/{esm/hooks/viz-live/useVizLiveIframeMsg.d.ts → umd/hooks/viz-live/useIframeMessage.d.ts} +10 -2
  151. package/dist/umd/hooks/viz-live/useIframeMessage.d.ts.map +1 -0
  152. package/dist/umd/hooks/viz-render/useHeatmapRender.d.ts.map +1 -1
  153. package/dist/umd/hooks/viz-scale/useContainerDimensions.d.ts.map +1 -1
  154. package/dist/umd/hooks/viz-scale/useHeatmapScale.d.ts +1 -1
  155. package/dist/umd/hooks/viz-scale/useHeatmapScale.d.ts.map +1 -1
  156. package/dist/umd/hooks/viz-scale/useIframeHeight.d.ts +10 -0
  157. package/dist/umd/hooks/viz-scale/useIframeHeight.d.ts.map +1 -0
  158. package/dist/umd/index.d.ts +1 -1
  159. package/dist/umd/index.d.ts.map +1 -1
  160. package/dist/umd/index.js +2 -2
  161. package/dist/umd/stores/config.d.ts +1 -5
  162. package/dist/umd/stores/config.d.ts.map +1 -1
  163. package/dist/umd/stores/data.d.ts +3 -5
  164. package/dist/umd/stores/data.d.ts.map +1 -1
  165. package/dist/umd/stores/index.d.ts +0 -2
  166. package/dist/umd/stores/index.d.ts.map +1 -1
  167. package/dist/umd/stores/interaction.d.ts.map +1 -1
  168. package/dist/umd/stores/mode-live.d.ts +0 -4
  169. package/dist/umd/stores/mode-live.d.ts.map +1 -1
  170. package/dist/umd/stores/viz.d.ts +4 -0
  171. package/dist/umd/stores/viz.d.ts.map +1 -1
  172. package/dist/umd/types/clarity.d.ts +0 -5
  173. package/dist/umd/types/clarity.d.ts.map +1 -1
  174. package/dist/umd/types/heatmap.d.ts +0 -13
  175. package/dist/umd/types/heatmap.d.ts.map +1 -1
  176. package/dist/umd/types/index.d.ts +1 -4
  177. package/dist/umd/types/index.d.ts.map +1 -1
  178. package/dist/umd/types/viewport-fixer.d.ts +31 -0
  179. package/dist/umd/types/viewport-fixer.d.ts.map +1 -0
  180. package/dist/umd/types/viz-element.d.ts +6 -0
  181. package/dist/umd/types/viz-element.d.ts.map +1 -1
  182. package/package.json +13 -15
  183. package/src/components/GraphView.tsx +58 -0
  184. package/src/components/Layout/ContentMetricBar.tsx +23 -0
  185. package/src/components/Layout/ContentToolbar.tsx +22 -0
  186. package/src/components/Layout/ContentTopBar.tsx +24 -0
  187. package/src/components/Layout/ContentVizByMode.tsx +14 -0
  188. package/src/components/Layout/HeatmapLayout.tsx +60 -0
  189. package/src/components/Layout/LeftSidebar.tsx +44 -0
  190. package/src/components/Layout/WrapperLayout.tsx +12 -0
  191. package/src/components/Layout/WrapperPreview.tsx +24 -0
  192. package/src/components/Layout/index.ts +1 -0
  193. package/src/components/VizDom/ReplayControls.tsx +48 -0
  194. package/src/components/VizDom/VizContainer.tsx +40 -0
  195. package/src/components/VizDom/VizDomHeatmap.tsx +28 -0
  196. package/src/components/VizDom/VizDomRenderer.tsx +82 -0
  197. package/src/components/VizDom/VizLoading.tsx +8 -0
  198. package/src/components/VizDom/WrapperVisual.tsx +73 -0
  199. package/src/components/VizDom/index.ts +5 -0
  200. package/src/components/VizElement/DefaultRankBadges.tsx +36 -0
  201. package/src/components/VizElement/ElementCallout.tsx +82 -0
  202. package/src/components/VizElement/ElementMissing.tsx +35 -0
  203. package/src/components/VizElement/ElementOverlay.tsx +66 -0
  204. package/src/components/VizElement/HeatmapElements.tsx +127 -0
  205. package/src/components/VizElement/HeatmapExample.tsx +70 -0
  206. package/src/components/VizElement/RankBadge.tsx +25 -0
  207. package/src/components/VizElement/VizElements.tsx +57 -0
  208. package/src/components/VizElement/index.ts +1 -0
  209. package/src/components/VizLive/VizLiveHeatmap.tsx +27 -0
  210. package/src/components/VizLive/VizLiveRenderer.tsx +47 -0
  211. package/src/components/VizLive/index.ts +1 -0
  212. package/src/components/VizScrollmap/AverageFoldLine.tsx +57 -0
  213. package/src/components/VizScrollmap/HoverZones.tsx +58 -0
  214. package/src/components/VizScrollmap/MetricRow.tsx +0 -0
  215. package/src/components/VizScrollmap/ScrollMapMinimap.tsx +64 -0
  216. package/src/components/VizScrollmap/ScrollMapOverlay.tsx +79 -0
  217. package/src/components/VizScrollmap/ScrollZoneHoverArea.tsx +35 -0
  218. package/src/components/VizScrollmap/ScrollZoneTooltip.tsx +146 -0
  219. package/src/components/VizScrollmap/ScrollmapMarker.tsx +106 -0
  220. package/src/components/VizScrollmap/VizScrollMap.tsx +36 -0
  221. package/{dist/esm/components/VizScrollmap/index.d.ts → src/components/VizScrollmap/index.ts} +0 -1
  222. package/src/components/VizScrollmapV2/ScrollmapOverlay.css +94 -0
  223. package/src/components/VizScrollmapV2/ScrollmapOverlayV2.tsx +130 -0
  224. package/{dist/esm/components/VizScrollmapV2/index.d.ts → src/components/VizScrollmapV2/index.ts} +0 -1
  225. package/src/components/VizScrollmapV2/scrollmap.types.ts +21 -0
  226. package/src/components/VizScrollmapV2/useScrollmapOverlay.ts +187 -0
  227. package/src/components/index.tsx +2 -0
  228. package/src/configs/iframe.ts +15 -0
  229. package/src/configs/index.ts +2 -0
  230. package/src/configs/style.ts +21 -0
  231. package/src/constants/index.ts +4 -0
  232. package/src/global.d.ts +5 -0
  233. package/src/helpers/elm-callout.ts +347 -0
  234. package/src/helpers/elm-getter.ts +70 -0
  235. package/src/helpers/iframe-helper/fixer.ts +100 -0
  236. package/src/helpers/iframe-helper/index.ts +1 -0
  237. package/src/helpers/iframe-helper/init.ts +56 -0
  238. package/src/helpers/iframe-helper/navigation-blocker-v2.ts +371 -0
  239. package/src/helpers/iframe-helper/navigation-blocker.ts +367 -0
  240. package/src/helpers/iframe-helper/style-replacer.ts +231 -0
  241. package/src/helpers/iframe.ts +42 -0
  242. package/src/helpers/index.ts +8 -0
  243. package/src/helpers/viz-canvas/area-clustering.ts +234 -0
  244. package/src/helpers/viz-canvas/area-overlay-manager-v2.ts +176 -0
  245. package/src/helpers/viz-canvas/area-overlay-manager.ts +273 -0
  246. package/src/helpers/viz-canvas/hierarchical-area-clustering.ts +420 -0
  247. package/{dist/esm/helpers/viz-canvas/index.d.ts → src/helpers/viz-canvas/index.ts} +0 -1
  248. package/src/helpers/viz-elements.ts +43 -0
  249. package/src/hooks/index.ts +8 -0
  250. package/src/hooks/register/index.ts +4 -0
  251. package/src/hooks/register/useRegisterConfig.ts +17 -0
  252. package/src/hooks/register/useRegisterControl.ts +13 -0
  253. package/src/hooks/register/useRegisterData.ts +36 -0
  254. package/src/hooks/register/useRegisterHeatmap.ts +38 -0
  255. package/src/hooks/viz-area/useAreaHeatmap.ts +336 -0
  256. package/src/hooks/viz-area/useAreaHeatmapManager.ts +692 -0
  257. package/src/hooks/viz-canvas/index.ts +1 -0
  258. package/src/hooks/viz-canvas/useAreamap.ts +162 -0
  259. package/src/hooks/viz-canvas/useClickmap.ts +24 -0
  260. package/src/hooks/viz-canvas/useHeatmapCanvas.ts +27 -0
  261. package/src/hooks/viz-canvas/useScrollmap.ts +22 -0
  262. package/src/hooks/viz-elements/index.ts +5 -0
  263. package/src/hooks/viz-elements/useClickedElement.ts +86 -0
  264. package/src/hooks/viz-elements/useElementCalloutVisible.ts +45 -0
  265. package/src/hooks/viz-elements/useHeatmapEffects.ts +30 -0
  266. package/src/hooks/viz-elements/useHeatmapElementPosition.ts +60 -0
  267. package/src/hooks/viz-elements/useHeatmapMouseHandler.ts +255 -0
  268. package/src/hooks/viz-elements/useHoveredElement.ts +170 -0
  269. package/src/hooks/viz-live/index.ts +1 -0
  270. package/src/hooks/viz-live/useVizLiveIframeMsg.ts +88 -0
  271. package/src/hooks/viz-live/useVizLiveRender.ts +67 -0
  272. package/src/hooks/viz-render/index.ts +1 -0
  273. package/src/hooks/viz-render/useHeatmapRender.ts +71 -0
  274. package/src/hooks/viz-render/useHeatmapVizRender.ts +20 -0
  275. package/src/hooks/viz-render/useReplayRender.ts +160 -0
  276. package/src/hooks/viz-scale/index.ts +2 -0
  277. package/src/hooks/viz-scale/useContainerDimensions.ts +48 -0
  278. package/src/hooks/viz-scale/useContentDimensions.ts +25 -0
  279. package/src/hooks/viz-scale/useHeatmapScale.ts +52 -0
  280. package/src/hooks/viz-scale/useObserveIframeHeight.ts +162 -0
  281. package/src/hooks/viz-scale/useScaleCalculation.ts +31 -0
  282. package/src/hooks/viz-scale/useScrollSync.ts +36 -0
  283. package/src/hooks/viz-scale/useWrapperRefHeight.ts +91 -0
  284. package/{dist/esm/hooks/viz-scrollmap/index.d.ts → src/hooks/viz-scrollmap/index.ts} +0 -1
  285. package/src/hooks/viz-scrollmap/useScrollmapZones.ts +165 -0
  286. package/src/hooks/viz-scrollmap/useZonePositions.ts +38 -0
  287. package/src/index.ts +10 -0
  288. package/src/stores/comp.ts +31 -0
  289. package/src/stores/config.ts +37 -0
  290. package/src/stores/data.ts +30 -0
  291. package/src/stores/index.ts +10 -0
  292. package/src/stores/interaction.ts +32 -0
  293. package/src/stores/mode-live.ts +38 -0
  294. package/src/stores/mode-single.ts +18 -0
  295. package/src/stores/viz-scrollmap.ts +22 -0
  296. package/src/stores/viz.ts +17 -0
  297. package/src/styles/base.css +1 -0
  298. package/src/styles/style.css +137 -0
  299. package/src/types/clarity.ts +45 -0
  300. package/src/types/control.ts +10 -0
  301. package/src/types/elm-callout.ts +9 -0
  302. package/src/types/heatmap-info.ts +11 -0
  303. package/src/types/heatmap.ts +25 -0
  304. package/src/types/iframe-helper.ts +18 -0
  305. package/src/types/index.ts +12 -0
  306. package/src/types/viz-canvas.ts +20 -0
  307. package/src/types/viz-element.ts +34 -0
  308. package/src/types/viz-scrollmap.ts +28 -0
  309. package/src/ui/BoxStack/BoxStack.tsx +136 -0
  310. package/src/ui/BoxStack/index.ts +1 -0
  311. package/src/ui/index.ts +1 -0
  312. package/src/utils/debounce.ts +10 -0
  313. package/src/utils/device.ts +7 -0
  314. package/src/utils/retry.ts +20 -0
  315. package/src/utils/sort.ts +5 -0
  316. package/dist/esm/components/VizElement/HeatmapExample.d.ts +0 -2
  317. package/dist/esm/components/VizElement/HeatmapExample.d.ts.map +0 -1
  318. package/dist/esm/components/VizScrollmap/AverageFoldLine.d.ts +0 -8
  319. package/dist/esm/components/VizScrollmap/AverageFoldLine.d.ts.map +0 -1
  320. package/dist/esm/components/VizScrollmap/HoverZones.d.ts +0 -10
  321. package/dist/esm/components/VizScrollmap/HoverZones.d.ts.map +0 -1
  322. package/dist/esm/components/VizScrollmap/MetricRow.d.ts +0 -1
  323. package/dist/esm/components/VizScrollmap/MetricRow.d.ts.map +0 -1
  324. package/dist/esm/components/VizScrollmap/ScrollMapMinimap.d.ts +0 -8
  325. package/dist/esm/components/VizScrollmap/ScrollMapMinimap.d.ts.map +0 -1
  326. package/dist/esm/components/VizScrollmap/ScrollMapOverlay.d.ts +0 -7
  327. package/dist/esm/components/VizScrollmap/ScrollMapOverlay.d.ts.map +0 -1
  328. package/dist/esm/components/VizScrollmap/ScrollZoneHoverArea.d.ts +0 -14
  329. package/dist/esm/components/VizScrollmap/ScrollZoneHoverArea.d.ts.map +0 -1
  330. package/dist/esm/components/VizScrollmap/ScrollZoneTooltip.d.ts +0 -10
  331. package/dist/esm/components/VizScrollmap/ScrollZoneTooltip.d.ts.map +0 -1
  332. package/dist/esm/components/VizScrollmap/ScrollmapMarker.d.ts +0 -7
  333. package/dist/esm/components/VizScrollmap/ScrollmapMarker.d.ts.map +0 -1
  334. package/dist/esm/components/VizScrollmap/VizScrollMap.d.ts +0 -7
  335. package/dist/esm/components/VizScrollmap/VizScrollMap.d.ts.map +0 -1
  336. package/dist/esm/components/VizScrollmap/index.d.ts.map +0 -1
  337. package/dist/esm/components/VizScrollmapV2/ScrollmapOverlayV2.d.ts +0 -5
  338. package/dist/esm/components/VizScrollmapV2/ScrollmapOverlayV2.d.ts.map +0 -1
  339. package/dist/esm/components/VizScrollmapV2/index.d.ts.map +0 -1
  340. package/dist/esm/components/VizScrollmapV2/scrollmap.types.d.ts +0 -18
  341. package/dist/esm/components/VizScrollmapV2/scrollmap.types.d.ts.map +0 -1
  342. package/dist/esm/components/VizScrollmapV2/useScrollmapOverlay.d.ts +0 -16
  343. package/dist/esm/components/VizScrollmapV2/useScrollmapOverlay.d.ts.map +0 -1
  344. package/dist/esm/helpers/iframe-helper/fixer.d.ts +0 -18
  345. package/dist/esm/helpers/iframe-helper/fixer.d.ts.map +0 -1
  346. package/dist/esm/helpers/iframe-helper/index.d.ts +0 -2
  347. package/dist/esm/helpers/iframe-helper/index.d.ts.map +0 -1
  348. package/dist/esm/helpers/iframe-helper/init.d.ts +0 -5
  349. package/dist/esm/helpers/iframe-helper/init.d.ts.map +0 -1
  350. package/dist/esm/helpers/iframe-helper/navigation-blocker-v2.d.ts +0 -28
  351. package/dist/esm/helpers/iframe-helper/navigation-blocker-v2.d.ts.map +0 -1
  352. package/dist/esm/helpers/iframe-helper/navigation-blocker.d.ts +0 -20
  353. package/dist/esm/helpers/iframe-helper/navigation-blocker.d.ts.map +0 -1
  354. package/dist/esm/helpers/iframe-helper/style-replacer.d.ts +0 -25
  355. package/dist/esm/helpers/iframe-helper/style-replacer.d.ts.map +0 -1
  356. package/dist/esm/helpers/viz-canvas/area-clustering.d.ts +0 -44
  357. package/dist/esm/helpers/viz-canvas/area-clustering.d.ts.map +0 -1
  358. package/dist/esm/helpers/viz-canvas/area-overlay-manager-v2.d.ts +0 -17
  359. package/dist/esm/helpers/viz-canvas/area-overlay-manager-v2.d.ts.map +0 -1
  360. package/dist/esm/helpers/viz-canvas/area-overlay-manager.d.ts +0 -51
  361. package/dist/esm/helpers/viz-canvas/area-overlay-manager.d.ts.map +0 -1
  362. package/dist/esm/helpers/viz-canvas/hierarchical-area-clustering.d.ts +0 -73
  363. package/dist/esm/helpers/viz-canvas/hierarchical-area-clustering.d.ts.map +0 -1
  364. package/dist/esm/helpers/viz-canvas/index.d.ts.map +0 -1
  365. package/dist/esm/hooks/viz-area/useAreaHeatmap.d.ts +0 -59
  366. package/dist/esm/hooks/viz-area/useAreaHeatmap.d.ts.map +0 -1
  367. package/dist/esm/hooks/viz-area/useAreaHeatmapManager.d.ts +0 -77
  368. package/dist/esm/hooks/viz-area/useAreaHeatmapManager.d.ts.map +0 -1
  369. package/dist/esm/hooks/viz-canvas/useAreamap.d.ts +0 -14
  370. package/dist/esm/hooks/viz-canvas/useAreamap.d.ts.map +0 -1
  371. package/dist/esm/hooks/viz-canvas/useHeatmapCanvas.d.ts +0 -4
  372. package/dist/esm/hooks/viz-canvas/useHeatmapCanvas.d.ts.map +0 -1
  373. package/dist/esm/hooks/viz-elements/useHeatmapMouseHandler.d.ts +0 -34
  374. package/dist/esm/hooks/viz-elements/useHeatmapMouseHandler.d.ts.map +0 -1
  375. package/dist/esm/hooks/viz-elements/useHoveredElement.d.ts.map +0 -1
  376. package/dist/esm/hooks/viz-live/useVizLiveIframeMsg.d.ts.map +0 -1
  377. package/dist/esm/hooks/viz-live/useVizLiveRender.d.ts +0 -4
  378. package/dist/esm/hooks/viz-live/useVizLiveRender.d.ts.map +0 -1
  379. package/dist/esm/hooks/viz-scale/useObserveIframeHeight.d.ts +0 -10
  380. package/dist/esm/hooks/viz-scale/useObserveIframeHeight.d.ts.map +0 -1
  381. package/dist/esm/hooks/viz-scrollmap/index.d.ts.map +0 -1
  382. package/dist/esm/hooks/viz-scrollmap/useScrollmapZones.d.ts +0 -29
  383. package/dist/esm/hooks/viz-scrollmap/useScrollmapZones.d.ts.map +0 -1
  384. package/dist/esm/hooks/viz-scrollmap/useZonePositions.d.ts +0 -12
  385. package/dist/esm/hooks/viz-scrollmap/useZonePositions.d.ts.map +0 -1
  386. package/dist/esm/stores/mode-single.d.ts +0 -9
  387. package/dist/esm/stores/mode-single.d.ts.map +0 -1
  388. package/dist/esm/stores/viz-scrollmap.d.ts +0 -11
  389. package/dist/esm/stores/viz-scrollmap.d.ts.map +0 -1
  390. package/dist/esm/types/heatmap-info.d.ts +0 -11
  391. package/dist/esm/types/heatmap-info.d.ts.map +0 -1
  392. package/dist/esm/types/iframe-helper.d.ts +0 -20
  393. package/dist/esm/types/iframe-helper.d.ts.map +0 -1
  394. package/dist/esm/types/viz-canvas.d.ts +0 -23
  395. package/dist/esm/types/viz-canvas.d.ts.map +0 -1
  396. package/dist/esm/types/viz-scrollmap.d.ts +0 -27
  397. package/dist/esm/types/viz-scrollmap.d.ts.map +0 -1
  398. package/dist/umd/components/VizElement/HeatmapExample.d.ts +0 -2
  399. package/dist/umd/components/VizElement/HeatmapExample.d.ts.map +0 -1
  400. package/dist/umd/components/VizScrollmap/AverageFoldLine.d.ts +0 -8
  401. package/dist/umd/components/VizScrollmap/AverageFoldLine.d.ts.map +0 -1
  402. package/dist/umd/components/VizScrollmap/HoverZones.d.ts +0 -10
  403. package/dist/umd/components/VizScrollmap/HoverZones.d.ts.map +0 -1
  404. package/dist/umd/components/VizScrollmap/MetricRow.d.ts +0 -1
  405. package/dist/umd/components/VizScrollmap/MetricRow.d.ts.map +0 -1
  406. package/dist/umd/components/VizScrollmap/ScrollMapMinimap.d.ts +0 -8
  407. package/dist/umd/components/VizScrollmap/ScrollMapMinimap.d.ts.map +0 -1
  408. package/dist/umd/components/VizScrollmap/ScrollMapOverlay.d.ts +0 -7
  409. package/dist/umd/components/VizScrollmap/ScrollMapOverlay.d.ts.map +0 -1
  410. package/dist/umd/components/VizScrollmap/ScrollZoneHoverArea.d.ts +0 -14
  411. package/dist/umd/components/VizScrollmap/ScrollZoneHoverArea.d.ts.map +0 -1
  412. package/dist/umd/components/VizScrollmap/ScrollZoneTooltip.d.ts +0 -10
  413. package/dist/umd/components/VizScrollmap/ScrollZoneTooltip.d.ts.map +0 -1
  414. package/dist/umd/components/VizScrollmap/ScrollmapMarker.d.ts +0 -7
  415. package/dist/umd/components/VizScrollmap/ScrollmapMarker.d.ts.map +0 -1
  416. package/dist/umd/components/VizScrollmap/VizScrollMap.d.ts +0 -7
  417. package/dist/umd/components/VizScrollmap/VizScrollMap.d.ts.map +0 -1
  418. package/dist/umd/components/VizScrollmap/index.d.ts +0 -2
  419. package/dist/umd/components/VizScrollmap/index.d.ts.map +0 -1
  420. package/dist/umd/components/VizScrollmapV2/ScrollmapOverlayV2.d.ts +0 -5
  421. package/dist/umd/components/VizScrollmapV2/ScrollmapOverlayV2.d.ts.map +0 -1
  422. package/dist/umd/components/VizScrollmapV2/index.d.ts +0 -2
  423. package/dist/umd/components/VizScrollmapV2/index.d.ts.map +0 -1
  424. package/dist/umd/components/VizScrollmapV2/scrollmap.types.d.ts +0 -18
  425. package/dist/umd/components/VizScrollmapV2/scrollmap.types.d.ts.map +0 -1
  426. package/dist/umd/components/VizScrollmapV2/useScrollmapOverlay.d.ts +0 -16
  427. package/dist/umd/components/VizScrollmapV2/useScrollmapOverlay.d.ts.map +0 -1
  428. package/dist/umd/helpers/iframe-helper/fixer.d.ts +0 -18
  429. package/dist/umd/helpers/iframe-helper/fixer.d.ts.map +0 -1
  430. package/dist/umd/helpers/iframe-helper/index.d.ts +0 -2
  431. package/dist/umd/helpers/iframe-helper/index.d.ts.map +0 -1
  432. package/dist/umd/helpers/iframe-helper/init.d.ts +0 -5
  433. package/dist/umd/helpers/iframe-helper/init.d.ts.map +0 -1
  434. package/dist/umd/helpers/iframe-helper/navigation-blocker-v2.d.ts +0 -28
  435. package/dist/umd/helpers/iframe-helper/navigation-blocker-v2.d.ts.map +0 -1
  436. package/dist/umd/helpers/iframe-helper/navigation-blocker.d.ts +0 -20
  437. package/dist/umd/helpers/iframe-helper/navigation-blocker.d.ts.map +0 -1
  438. package/dist/umd/helpers/iframe-helper/style-replacer.d.ts +0 -25
  439. package/dist/umd/helpers/iframe-helper/style-replacer.d.ts.map +0 -1
  440. package/dist/umd/helpers/viz-canvas/area-clustering.d.ts +0 -44
  441. package/dist/umd/helpers/viz-canvas/area-clustering.d.ts.map +0 -1
  442. package/dist/umd/helpers/viz-canvas/area-overlay-manager-v2.d.ts +0 -17
  443. package/dist/umd/helpers/viz-canvas/area-overlay-manager-v2.d.ts.map +0 -1
  444. package/dist/umd/helpers/viz-canvas/area-overlay-manager.d.ts +0 -51
  445. package/dist/umd/helpers/viz-canvas/area-overlay-manager.d.ts.map +0 -1
  446. package/dist/umd/helpers/viz-canvas/hierarchical-area-clustering.d.ts +0 -73
  447. package/dist/umd/helpers/viz-canvas/hierarchical-area-clustering.d.ts.map +0 -1
  448. package/dist/umd/helpers/viz-canvas/index.d.ts +0 -3
  449. package/dist/umd/helpers/viz-canvas/index.d.ts.map +0 -1
  450. package/dist/umd/hooks/viz-area/useAreaHeatmap.d.ts +0 -59
  451. package/dist/umd/hooks/viz-area/useAreaHeatmap.d.ts.map +0 -1
  452. package/dist/umd/hooks/viz-area/useAreaHeatmapManager.d.ts +0 -77
  453. package/dist/umd/hooks/viz-area/useAreaHeatmapManager.d.ts.map +0 -1
  454. package/dist/umd/hooks/viz-canvas/useAreamap.d.ts +0 -14
  455. package/dist/umd/hooks/viz-canvas/useAreamap.d.ts.map +0 -1
  456. package/dist/umd/hooks/viz-canvas/useHeatmapCanvas.d.ts +0 -4
  457. package/dist/umd/hooks/viz-canvas/useHeatmapCanvas.d.ts.map +0 -1
  458. package/dist/umd/hooks/viz-elements/useHeatmapMouseHandler.d.ts +0 -34
  459. package/dist/umd/hooks/viz-elements/useHeatmapMouseHandler.d.ts.map +0 -1
  460. package/dist/umd/hooks/viz-elements/useHoveredElement.d.ts.map +0 -1
  461. package/dist/umd/hooks/viz-live/useVizLiveIframeMsg.d.ts.map +0 -1
  462. package/dist/umd/hooks/viz-live/useVizLiveRender.d.ts +0 -4
  463. package/dist/umd/hooks/viz-live/useVizLiveRender.d.ts.map +0 -1
  464. package/dist/umd/hooks/viz-scale/useObserveIframeHeight.d.ts +0 -10
  465. package/dist/umd/hooks/viz-scale/useObserveIframeHeight.d.ts.map +0 -1
  466. package/dist/umd/hooks/viz-scrollmap/index.d.ts +0 -3
  467. package/dist/umd/hooks/viz-scrollmap/index.d.ts.map +0 -1
  468. package/dist/umd/hooks/viz-scrollmap/useScrollmapZones.d.ts +0 -29
  469. package/dist/umd/hooks/viz-scrollmap/useScrollmapZones.d.ts.map +0 -1
  470. package/dist/umd/hooks/viz-scrollmap/useZonePositions.d.ts +0 -12
  471. package/dist/umd/hooks/viz-scrollmap/useZonePositions.d.ts.map +0 -1
  472. package/dist/umd/stores/mode-single.d.ts +0 -9
  473. package/dist/umd/stores/mode-single.d.ts.map +0 -1
  474. package/dist/umd/stores/viz-scrollmap.d.ts +0 -11
  475. package/dist/umd/stores/viz-scrollmap.d.ts.map +0 -1
  476. package/dist/umd/types/heatmap-info.d.ts +0 -11
  477. package/dist/umd/types/heatmap-info.d.ts.map +0 -1
  478. package/dist/umd/types/iframe-helper.d.ts +0 -20
  479. package/dist/umd/types/iframe-helper.d.ts.map +0 -1
  480. package/dist/umd/types/viz-canvas.d.ts +0 -23
  481. package/dist/umd/types/viz-canvas.d.ts.map +0 -1
  482. package/dist/umd/types/viz-scrollmap.d.ts +0 -27
  483. package/dist/umd/types/viz-scrollmap.d.ts.map +0 -1
  484. /package/dist/esm/hooks/{viz-elements → vix-elements}/index.d.ts +0 -0
  485. /package/dist/esm/hooks/{viz-elements → vix-elements}/useClickedElement.d.ts +0 -0
  486. /package/dist/esm/hooks/{viz-elements → vix-elements}/useElementCalloutVisible.d.ts +0 -0
  487. /package/dist/esm/hooks/{viz-elements → vix-elements}/useHeatmapEffects.d.ts +0 -0
  488. /package/dist/esm/hooks/{viz-elements → vix-elements}/useHeatmapElementPosition.d.ts +0 -0
  489. /package/dist/umd/hooks/{viz-elements → vix-elements}/index.d.ts +0 -0
  490. /package/dist/umd/hooks/{viz-elements → vix-elements}/useClickedElement.d.ts +0 -0
  491. /package/dist/umd/hooks/{viz-elements → vix-elements}/useElementCalloutVisible.d.ts +0 -0
  492. /package/dist/umd/hooks/{viz-elements → vix-elements}/useHeatmapEffects.d.ts +0 -0
  493. /package/dist/umd/hooks/{viz-elements → vix-elements}/useHeatmapElementPosition.d.ts +0 -0
@@ -0,0 +1,336 @@
1
+ // useAreaHeatmap.ts
2
+ import { MutableRefObject, useRef } from 'react';
3
+
4
+ // Types
5
+ export interface Rect {
6
+ width: number;
7
+ height: number;
8
+ top: number;
9
+ left: number;
10
+ absoluteLeft: number;
11
+ absoluteTop: number;
12
+ absoluteRight: number;
13
+ absoluteBottom: number;
14
+ }
15
+
16
+ export interface AreaNode {
17
+ id: string;
18
+ hash: string;
19
+ element: HTMLElement;
20
+ rect: MutableRefObject<Rect>;
21
+ kind: 'area' | 'money';
22
+ clickDist?: number;
23
+ totalclicks: number;
24
+ priority?: boolean;
25
+ areaElement?: HTMLDivElement;
26
+ shadowStyleElement?: HTMLStyleElement;
27
+ changeObserver?: { disconnect: () => void };
28
+ hoverColor: string;
29
+ color: string;
30
+ cumulativeSessions?: number[];
31
+ cumulativeSessionsWithPurchase?: number[];
32
+ cumulativeValue?: number;
33
+ moneyMapType?: 'Conversion' | 'OrderValue';
34
+ }
35
+
36
+ export interface AreaRenderState {
37
+ areas: AreaNode[];
38
+ selectedArea: AreaNode | null;
39
+ hoveredArea: AreaNode | null;
40
+ isEditing: boolean;
41
+ }
42
+ export type GetElementInfoFn = (
43
+ el: HTMLElement,
44
+ useBeta?: boolean,
45
+ ) => { hash: string; dataId: string | null } | null;
46
+
47
+ export interface AreaRenderer {
48
+ init: (win: Window, context: any, getElementInfo: GetElementInfoFn) => void;
49
+ clear: () => void;
50
+ render: () => void;
51
+ lazyRenderArea: (area?: AreaNode) => void;
52
+ removeArea: (area: AreaNode, skipReRender?: boolean) => void;
53
+ createArea: (element: HTMLElement, force?: boolean) => void;
54
+ avoidOverlaps: () => void;
55
+ getAreas: (sorted?: boolean) => AreaNode[];
56
+ getAreaInfo: () => AreaRenderState;
57
+ updateHoveredArea: (area: AreaNode | null) => void;
58
+ selectArea: (area: AreaNode) => void;
59
+ enterEditing: () => void;
60
+ exitEditing: () => void;
61
+ }
62
+
63
+ // Utility: Simple signal (like a lightweight store)
64
+ function createSignal<T>(initialValue: T) {
65
+ let value = initialValue;
66
+ const subscribers = new Set<(v: T) => void>();
67
+
68
+ return {
69
+ get value() {
70
+ return value;
71
+ },
72
+ set value(v: T) {
73
+ value = v;
74
+ subscribers.forEach((cb) => cb(v));
75
+ },
76
+ update: (v: T) => {
77
+ value = v;
78
+ subscribers.forEach((cb) => cb(v));
79
+ },
80
+ observe: (cb: (v: T) => void) => {
81
+ subscribers.add(cb);
82
+ cb(value);
83
+ return () => subscribers.delete(cb);
84
+ },
85
+ };
86
+ }
87
+
88
+ // Main Hook
89
+ export function useAreaHeatmap(): AreaRenderer {
90
+ const areasSet = useRef(new Set<AreaNode>()).current;
91
+ const areasSignal = createSignal<AreaNode[]>([]);
92
+ const selectedAreaSignal = createSignal<AreaNode | null>(null);
93
+ const hoveredAreaSignal = createSignal<AreaNode | null>(null);
94
+ const isEditingSignal = createSignal(false);
95
+
96
+ const contextRef = useRef<any>(null);
97
+ const targetWindowRef = useRef<Window | null>(null);
98
+ const targetDocRef = useRef<Document | null>(null);
99
+ const shadowRootRef = useRef<ShadowRoot | null>(null);
100
+ const overlayContainerRef = useRef<HTMLDivElement | null>(null);
101
+ const cleanupRef = useRef<() => void>(() => {});
102
+
103
+ // Cleanup old area DOM + observers
104
+ const removeAreaFromDOM = (area: AreaNode) => {
105
+ if (area.areaElement?.parentNode) {
106
+ area.areaElement.parentNode.removeChild(area.areaElement);
107
+ }
108
+ area.changeObserver?.disconnect();
109
+ };
110
+
111
+ // Resolve shadow root or root node
112
+ const getRootNode = (area: AreaNode): Document | ShadowRoot => {
113
+ return area.element.shadowRoot || (area.element.getRootNode() as any);
114
+ };
115
+
116
+ // Get bounding rect relative to overlay
117
+ const getRelativeRect = (element: HTMLElement): Rect => {
118
+ const root = element.getRootNode({ composed: true }) as Document | ShadowRoot;
119
+ const overlayRect = overlayContainerRef.current?.getBoundingClientRect() || {
120
+ left: 0,
121
+ top: 0,
122
+ };
123
+ const rect = element.getBoundingClientRect();
124
+
125
+ const absoluteLeft = rect.left;
126
+ const absoluteTop = rect.top;
127
+
128
+ return {
129
+ width: rect.width,
130
+ height: rect.height,
131
+ top: rect.top - overlayRect.top,
132
+ left: rect.left - overlayRect.left,
133
+ absoluteLeft,
134
+ absoluteTop,
135
+ absoluteRight: absoluteLeft + rect.width,
136
+ absoluteBottom: absoluteTop + rect.height,
137
+ };
138
+ };
139
+
140
+ // Create or update visual overlay for an area
141
+ const renderAreaOverlay = (area: AreaNode, mode: 'area' | 'money' = 'area') => {
142
+ const root = getRootNode(area);
143
+ if (!root || !targetDocRef.current) return;
144
+
145
+ const overlayId = `area-overlay-${area.id}`;
146
+ let overlay = root.getElementById(overlayId) as HTMLDivElement | null;
147
+
148
+ if (!overlay) {
149
+ overlay = targetDocRef.current.createElement('div');
150
+ overlay.id = overlayId;
151
+ overlay.dataset.clarityAreaMapDiv = '1';
152
+ root.appendChild(overlay);
153
+
154
+ const style = targetDocRef.current.createElement('style');
155
+ overlay.appendChild(style);
156
+ area.shadowStyleElement = style;
157
+ area.areaElement = overlay;
158
+ }
159
+
160
+ const rect = getRelativeRect(area.element);
161
+ area.rect.current = rect;
162
+
163
+ const isFixed = getComputedStyle(area.element).position === 'fixed';
164
+ const position = isFixed ? 'fixed' : 'absolute';
165
+
166
+ const css = {
167
+ [`#${overlayId}`]: {
168
+ position,
169
+ top: `${isFixed ? rect.top : rect.absoluteTop}px`,
170
+ left: `${rect.left}px`,
171
+ width: `${rect.width}px`,
172
+ height: `${rect.height}px`,
173
+ backgroundColor: area.color,
174
+ boxShadow: '0 0 0 2px white inset',
175
+ boxSizing: 'border-box',
176
+ pointerEvents: 'none',
177
+ display: 'flex',
178
+ alignItems: 'center',
179
+ justifyContent: 'center',
180
+ },
181
+ [`#${overlayId}:hover`]: {
182
+ backgroundColor: area.hoverColor,
183
+ boxShadow: '0 0 0 1px #0078D4, 0 0 0 1px #0078D4 inset, 0 0 0 2px white inset',
184
+ },
185
+ };
186
+
187
+ // Apply styles
188
+ const styleText = Object.entries(css)
189
+ .map(([selector, rules]) => {
190
+ const div = document.createElement('div');
191
+ Object.assign(div.style, rules);
192
+ return `${selector} { ${div.style.cssText} }`;
193
+ })
194
+ .join('\n');
195
+
196
+ if (area.shadowStyleElement) {
197
+ area.shadowStyleElement.textContent = styleText;
198
+ }
199
+
200
+ // Add label if large enough
201
+ if (rect.width >= 67 && rect.height >= 30) {
202
+ let label = overlay.querySelector('[data-label]') as HTMLDivElement | null;
203
+ if (!label) {
204
+ label = targetDocRef.current.createElement('div');
205
+ label.dataset.label = 'true';
206
+ overlay.appendChild(label);
207
+ }
208
+
209
+ if (mode === 'area' && area.kind === 'area') {
210
+ label.textContent = `${area.clickDist?.toFixed(2)}%`;
211
+ } else if (mode === 'money') {
212
+ if (area.moneyMapType === 'Conversion') {
213
+ const rate =
214
+ (area.cumulativeSessions?.length ?? 0) > 0
215
+ ? ((area.cumulativeSessionsWithPurchase?.length ?? 0) /
216
+ (area.cumulativeSessions?.length ?? 0)) *
217
+ 100
218
+ : 0;
219
+ label.textContent = `${rate.toFixed(2)}%`;
220
+ } else if (area.moneyMapType === 'OrderValue') {
221
+ label.textContent = `$${area.cumulativeValue?.toFixed(2)}`;
222
+ }
223
+ }
224
+
225
+ Object.assign(label.style, {
226
+ color: '#161514',
227
+ backgroundColor: 'rgba(255,255,255,0.86)',
228
+ padding: '8px',
229
+ borderRadius: '4px',
230
+ fontSize: '16px',
231
+ fontWeight: '600',
232
+ fontFamily: '"Segoe UI", system-ui, sans-serif',
233
+ pointerEvents: 'none',
234
+ });
235
+ }
236
+
237
+ // Interaction
238
+ overlay.onclick = () => selectArea(area);
239
+ overlay.onmouseenter = () => updateHoveredArea(area);
240
+ overlay.onmouseleave = () => updateHoveredArea(null);
241
+ };
242
+
243
+ const selectArea = (area: AreaNode) => {
244
+ if (selectedAreaSignal.value !== area) {
245
+ selectedAreaSignal.value = area;
246
+ }
247
+ };
248
+
249
+ const updateHoveredArea = (area: AreaNode | null) => {
250
+ hoveredAreaSignal.value = area ?? null;
251
+ };
252
+
253
+ const removeArea = (area: AreaNode, skipReRender = false) => {
254
+ areasSet.delete(area);
255
+ removeAreaFromDOM(area);
256
+ if (!skipReRender) updateAreaList();
257
+ };
258
+
259
+ const updateAreaList = () => {
260
+ const list = Array.from(areasSet);
261
+ list.sort((a, b) => b.totalclicks - a.totalclicks); // simple sort
262
+ areasSignal.update(list);
263
+ };
264
+
265
+ const avoidOverlaps = () => {
266
+ // Simplified overlap resolution (can be enhanced)
267
+ const areas = Array.from(areasSet);
268
+ // Implement your ye() logic here if needed
269
+ };
270
+
271
+ const renderAll = () => {
272
+ areasSet.forEach((area) => renderAreaOverlay(area));
273
+ updateAreaList();
274
+ };
275
+
276
+ const clearAll = () => {
277
+ areasSet.forEach(removeAreaFromDOM);
278
+ areasSet.clear();
279
+ selectedAreaSignal.update(null);
280
+ hoveredAreaSignal.update(null);
281
+ isEditingSignal.update(false);
282
+ updateAreaList();
283
+ };
284
+
285
+ const init = (win: Window, context: any, getElementInfo: GetElementInfoFn) => {
286
+ clearAll();
287
+ contextRef.current = context;
288
+ targetWindowRef.current = win;
289
+ targetDocRef.current = win.document;
290
+
291
+ // Create shadow container
292
+ const container = targetDocRef.current.createElement('div');
293
+ container.style.cssText = `
294
+ position: fixed;
295
+ top: 0; left: 0;
296
+ width: 100vw; height: 100vh;
297
+ pointer-events: none;
298
+ z-index: 2147483647;
299
+ `;
300
+ targetDocRef.current.body.appendChild(container);
301
+ overlayContainerRef.current = container;
302
+
303
+ // Optional: setup resize observer, mutation observer, etc.
304
+ };
305
+
306
+ return {
307
+ init,
308
+ clear: clearAll,
309
+ render: renderAll,
310
+ lazyRenderArea: (area) => {
311
+ if (area) {
312
+ areasSet.add(area);
313
+ }
314
+ },
315
+ removeArea,
316
+ createArea: (element, force = false) => {
317
+ // Logic to create AreaNode from element
318
+ console.log('createArea not fully implemented yet', element);
319
+ },
320
+ avoidOverlaps,
321
+ getAreas: (sorted = true) => {
322
+ const arr = Array.from(areasSet);
323
+ return sorted ? arr.sort((a, b) => b.totalclicks - a.totalclicks) : arr;
324
+ },
325
+ getAreaInfo: () => ({
326
+ areas: areasSignal.value,
327
+ selectedArea: selectedAreaSignal.value,
328
+ hoveredArea: hoveredAreaSignal.value,
329
+ isEditing: isEditingSignal.value,
330
+ }),
331
+ updateHoveredArea,
332
+ selectArea,
333
+ enterEditing: () => isEditingSignal.update(true),
334
+ exitEditing: () => isEditingSignal.update(false),
335
+ };
336
+ }