@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.
- package/dist/esm/components/Layout/ContentHeader.d.ts +4 -0
- package/dist/esm/components/Layout/ContentHeader.d.ts.map +1 -0
- package/dist/esm/components/Layout/HeatmapLayout.d.ts +2 -3
- package/dist/esm/components/Layout/HeatmapLayout.d.ts.map +1 -1
- package/dist/esm/components/Layout/VizMode.d.ts +2 -0
- package/dist/esm/components/Layout/VizMode.d.ts.map +1 -0
- package/dist/esm/components/Test.d.ts +121 -0
- package/dist/esm/components/Test.d.ts.map +1 -0
- package/dist/esm/components/VizDom/VizDomContainer.d.ts +6 -0
- package/dist/esm/components/VizDom/VizDomContainer.d.ts.map +1 -0
- package/dist/esm/components/VizDom/VizDomRenderer.d.ts.map +1 -1
- package/dist/esm/components/VizElement/ClickedElementOverlay.d.ts +17 -0
- package/dist/esm/components/VizElement/ClickedElementOverlay.d.ts.map +1 -0
- package/dist/esm/components/VizElement/HeatmapElements.d.ts +2 -2
- package/dist/esm/components/VizElement/HeatmapElements.d.ts.map +1 -1
- package/dist/esm/components/VizElement/HoveredElementOverlay.d.ts +12 -0
- package/dist/esm/components/VizElement/HoveredElementOverlay.d.ts.map +1 -0
- package/dist/esm/components/VizElement/MissingElementMessage.d.ts +7 -0
- package/dist/esm/components/VizElement/MissingElementMessage.d.ts.map +1 -0
- package/dist/esm/components/VizElement/VizElements.d.ts.map +1 -1
- package/dist/esm/components/VizElement/temp/ClarityVisualizer.d.ts +150 -0
- package/dist/esm/components/VizElement/temp/ClarityVisualizer.d.ts.map +1 -0
- package/dist/esm/components/VizElement/temp/VizElementRank.d.ts +74 -0
- package/dist/esm/components/VizElement/temp/VizElementRank.d.ts.map +1 -0
- package/dist/esm/components/VizLive/VizLive.d.ts +2 -0
- package/dist/esm/components/VizLive/VizLive.d.ts.map +1 -0
- package/dist/esm/components/VizLive/VizLiveHeatmap.d.ts.map +1 -1
- package/dist/esm/components/VizLive/VizLiveRenderer.d.ts.map +1 -1
- package/dist/esm/configs/style.d.ts +0 -2
- package/dist/esm/configs/style.d.ts.map +1 -1
- package/dist/esm/helpers/elm-getter.d.ts +2 -2
- package/dist/esm/helpers/elm-getter.d.ts.map +1 -1
- package/dist/esm/helpers/index.d.ts +2 -2
- package/dist/esm/helpers/index.d.ts.map +1 -1
- package/dist/esm/helpers/viewport-fixer.d.ts +13 -0
- package/dist/esm/helpers/viewport-fixer.d.ts.map +1 -0
- package/dist/esm/helpers/viewport-replacer.d.ts +26 -0
- package/dist/esm/helpers/viewport-replacer.d.ts.map +1 -0
- package/dist/esm/hooks/index.d.ts +1 -2
- package/dist/esm/hooks/index.d.ts.map +1 -1
- package/dist/esm/hooks/register/useRegisterData.d.ts +2 -2
- package/dist/esm/hooks/register/useRegisterData.d.ts.map +1 -1
- package/dist/esm/hooks/register/useRegisterHeatmap.d.ts +2 -7
- package/dist/esm/hooks/register/useRegisterHeatmap.d.ts.map +1 -1
- package/dist/esm/hooks/{viz-elements → vix-elements}/index.d.ts.map +1 -1
- package/dist/esm/hooks/{viz-elements → vix-elements}/useClickedElement.d.ts.map +1 -1
- package/dist/esm/hooks/{viz-elements → vix-elements}/useElementCalloutVisible.d.ts.map +1 -1
- package/dist/esm/hooks/{viz-elements → vix-elements}/useHeatmapEffects.d.ts.map +1 -1
- package/dist/esm/hooks/{viz-elements → vix-elements}/useHeatmapElementPosition.d.ts.map +1 -1
- package/dist/esm/hooks/{viz-elements → vix-elements}/useHoveredElement.d.ts +0 -4
- package/dist/esm/hooks/vix-elements/useHoveredElement.d.ts.map +1 -0
- package/dist/esm/hooks/viz-canvas/index.d.ts +1 -1
- package/dist/esm/hooks/viz-canvas/index.d.ts.map +1 -1
- package/dist/esm/hooks/viz-canvas/useClickmap.d.ts +1 -3
- package/dist/esm/hooks/viz-canvas/useClickmap.d.ts.map +1 -1
- package/dist/esm/hooks/viz-canvas/useHeatmapVizCanvas.d.ts +2 -0
- package/dist/esm/hooks/viz-canvas/useHeatmapVizCanvas.d.ts.map +1 -0
- package/dist/esm/hooks/viz-canvas/useScrollmap.d.ts +1 -3
- package/dist/esm/hooks/viz-canvas/useScrollmap.d.ts.map +1 -1
- package/dist/esm/hooks/viz-live/index.d.ts +1 -1
- package/dist/{umd/hooks/viz-live/useVizLiveIframeMsg.d.ts → esm/hooks/viz-live/useIframeMessage.d.ts} +10 -2
- package/dist/esm/hooks/viz-live/useIframeMessage.d.ts.map +1 -0
- package/dist/esm/hooks/viz-render/useHeatmapRender.d.ts.map +1 -1
- package/dist/esm/hooks/viz-scale/useContainerDimensions.d.ts.map +1 -1
- package/dist/esm/hooks/viz-scale/useHeatmapScale.d.ts +1 -1
- package/dist/esm/hooks/viz-scale/useHeatmapScale.d.ts.map +1 -1
- package/dist/esm/hooks/viz-scale/useIframeHeight.d.ts +10 -0
- package/dist/esm/hooks/viz-scale/useIframeHeight.d.ts.map +1 -0
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +210 -1181
- package/dist/esm/index.mjs +210 -1181
- package/dist/esm/stores/config.d.ts +1 -5
- package/dist/esm/stores/config.d.ts.map +1 -1
- package/dist/esm/stores/data.d.ts +3 -5
- package/dist/esm/stores/data.d.ts.map +1 -1
- package/dist/esm/stores/index.d.ts +0 -2
- package/dist/esm/stores/index.d.ts.map +1 -1
- package/dist/esm/stores/interaction.d.ts.map +1 -1
- package/dist/esm/stores/mode-live.d.ts +0 -4
- package/dist/esm/stores/mode-live.d.ts.map +1 -1
- package/dist/esm/stores/viz.d.ts +4 -0
- package/dist/esm/stores/viz.d.ts.map +1 -1
- package/dist/esm/types/clarity.d.ts +0 -5
- package/dist/esm/types/clarity.d.ts.map +1 -1
- package/dist/esm/types/heatmap.d.ts +0 -13
- package/dist/esm/types/heatmap.d.ts.map +1 -1
- package/dist/esm/types/index.d.ts +1 -4
- package/dist/esm/types/index.d.ts.map +1 -1
- package/dist/esm/types/viewport-fixer.d.ts +31 -0
- package/dist/esm/types/viewport-fixer.d.ts.map +1 -0
- package/dist/esm/types/viz-element.d.ts +6 -0
- package/dist/esm/types/viz-element.d.ts.map +1 -1
- package/dist/umd/components/Layout/ContentHeader.d.ts +4 -0
- package/dist/umd/components/Layout/ContentHeader.d.ts.map +1 -0
- package/dist/umd/components/Layout/HeatmapLayout.d.ts +2 -3
- package/dist/umd/components/Layout/HeatmapLayout.d.ts.map +1 -1
- package/dist/umd/components/Test.d.ts +121 -0
- package/dist/umd/components/Test.d.ts.map +1 -0
- package/dist/umd/components/VizDom/VizDomContainer.d.ts +2 -0
- package/dist/umd/components/VizDom/VizDomContainer.d.ts.map +1 -0
- package/dist/umd/components/VizDom/VizDomRenderer.d.ts.map +1 -1
- package/dist/umd/components/VizElement/ClickedElementOverlay.d.ts +17 -0
- package/dist/umd/components/VizElement/ClickedElementOverlay.d.ts.map +1 -0
- package/dist/umd/components/VizElement/HeatmapElements.d.ts +2 -2
- package/dist/umd/components/VizElement/HeatmapElements.d.ts.map +1 -1
- package/dist/umd/components/VizElement/HoveredElementOverlay.d.ts +12 -0
- package/dist/umd/components/VizElement/HoveredElementOverlay.d.ts.map +1 -0
- package/dist/umd/components/VizElement/MissingElementMessage.d.ts +7 -0
- package/dist/umd/components/VizElement/MissingElementMessage.d.ts.map +1 -0
- package/dist/umd/components/VizElement/VizElements.d.ts.map +1 -1
- package/dist/umd/components/VizElement/temp/ClarityVisualizer.d.ts +150 -0
- package/dist/umd/components/VizElement/temp/ClarityVisualizer.d.ts.map +1 -0
- package/dist/umd/components/VizElement/temp/VizElementRank.d.ts +74 -0
- package/dist/umd/components/VizElement/temp/VizElementRank.d.ts.map +1 -0
- package/dist/umd/components/VizLive/VizLiveHeatmap.d.ts.map +1 -1
- package/dist/umd/components/VizLive/VizLiveRenderer.d.ts.map +1 -1
- package/dist/umd/configs/style.d.ts +0 -2
- package/dist/umd/configs/style.d.ts.map +1 -1
- package/dist/umd/helpers/elm-getter.d.ts +2 -2
- package/dist/umd/helpers/elm-getter.d.ts.map +1 -1
- package/dist/umd/helpers/index.d.ts +2 -2
- package/dist/umd/helpers/index.d.ts.map +1 -1
- package/dist/umd/helpers/viewport-fixer.d.ts +13 -0
- package/dist/umd/helpers/viewport-fixer.d.ts.map +1 -0
- package/dist/umd/helpers/viewport-replacer.d.ts +26 -0
- package/dist/umd/helpers/viewport-replacer.d.ts.map +1 -0
- package/dist/umd/hooks/index.d.ts +1 -2
- package/dist/umd/hooks/index.d.ts.map +1 -1
- package/dist/umd/hooks/register/useRegisterData.d.ts +2 -2
- package/dist/umd/hooks/register/useRegisterData.d.ts.map +1 -1
- package/dist/umd/hooks/register/useRegisterHeatmap.d.ts +2 -7
- package/dist/umd/hooks/register/useRegisterHeatmap.d.ts.map +1 -1
- package/dist/umd/hooks/{viz-elements → vix-elements}/index.d.ts.map +1 -1
- package/dist/umd/hooks/{viz-elements → vix-elements}/useClickedElement.d.ts.map +1 -1
- package/dist/umd/hooks/{viz-elements → vix-elements}/useElementCalloutVisible.d.ts.map +1 -1
- package/dist/umd/hooks/{viz-elements → vix-elements}/useHeatmapEffects.d.ts.map +1 -1
- package/dist/umd/hooks/{viz-elements → vix-elements}/useHeatmapElementPosition.d.ts.map +1 -1
- package/dist/umd/hooks/{viz-elements → vix-elements}/useHoveredElement.d.ts +0 -4
- package/dist/umd/hooks/vix-elements/useHoveredElement.d.ts.map +1 -0
- package/dist/umd/hooks/viz-canvas/index.d.ts +1 -1
- package/dist/umd/hooks/viz-canvas/index.d.ts.map +1 -1
- package/dist/umd/hooks/viz-canvas/useClickmap.d.ts +1 -3
- package/dist/umd/hooks/viz-canvas/useClickmap.d.ts.map +1 -1
- package/dist/umd/hooks/viz-canvas/useHeatmapVizCanvas.d.ts +2 -0
- package/dist/umd/hooks/viz-canvas/useHeatmapVizCanvas.d.ts.map +1 -0
- package/dist/umd/hooks/viz-canvas/useScrollmap.d.ts +1 -3
- package/dist/umd/hooks/viz-canvas/useScrollmap.d.ts.map +1 -1
- package/dist/umd/hooks/viz-live/index.d.ts +1 -1
- package/dist/{esm/hooks/viz-live/useVizLiveIframeMsg.d.ts → umd/hooks/viz-live/useIframeMessage.d.ts} +10 -2
- package/dist/umd/hooks/viz-live/useIframeMessage.d.ts.map +1 -0
- package/dist/umd/hooks/viz-render/useHeatmapRender.d.ts.map +1 -1
- package/dist/umd/hooks/viz-scale/useContainerDimensions.d.ts.map +1 -1
- package/dist/umd/hooks/viz-scale/useHeatmapScale.d.ts +1 -1
- package/dist/umd/hooks/viz-scale/useHeatmapScale.d.ts.map +1 -1
- package/dist/umd/hooks/viz-scale/useIframeHeight.d.ts +10 -0
- package/dist/umd/hooks/viz-scale/useIframeHeight.d.ts.map +1 -0
- package/dist/umd/index.d.ts +1 -1
- package/dist/umd/index.d.ts.map +1 -1
- package/dist/umd/index.js +2 -2
- package/dist/umd/stores/config.d.ts +1 -5
- package/dist/umd/stores/config.d.ts.map +1 -1
- package/dist/umd/stores/data.d.ts +3 -5
- package/dist/umd/stores/data.d.ts.map +1 -1
- package/dist/umd/stores/index.d.ts +0 -2
- package/dist/umd/stores/index.d.ts.map +1 -1
- package/dist/umd/stores/interaction.d.ts.map +1 -1
- package/dist/umd/stores/mode-live.d.ts +0 -4
- package/dist/umd/stores/mode-live.d.ts.map +1 -1
- package/dist/umd/stores/viz.d.ts +4 -0
- package/dist/umd/stores/viz.d.ts.map +1 -1
- package/dist/umd/types/clarity.d.ts +0 -5
- package/dist/umd/types/clarity.d.ts.map +1 -1
- package/dist/umd/types/heatmap.d.ts +0 -13
- package/dist/umd/types/heatmap.d.ts.map +1 -1
- package/dist/umd/types/index.d.ts +1 -4
- package/dist/umd/types/index.d.ts.map +1 -1
- package/dist/umd/types/viewport-fixer.d.ts +31 -0
- package/dist/umd/types/viewport-fixer.d.ts.map +1 -0
- package/dist/umd/types/viz-element.d.ts +6 -0
- package/dist/umd/types/viz-element.d.ts.map +1 -1
- package/package.json +13 -15
- package/src/components/GraphView.tsx +58 -0
- package/src/components/Layout/ContentMetricBar.tsx +23 -0
- package/src/components/Layout/ContentToolbar.tsx +22 -0
- package/src/components/Layout/ContentTopBar.tsx +24 -0
- package/src/components/Layout/ContentVizByMode.tsx +14 -0
- package/src/components/Layout/HeatmapLayout.tsx +60 -0
- package/src/components/Layout/LeftSidebar.tsx +44 -0
- package/src/components/Layout/WrapperLayout.tsx +12 -0
- package/src/components/Layout/WrapperPreview.tsx +24 -0
- package/src/components/Layout/index.ts +1 -0
- package/src/components/VizDom/ReplayControls.tsx +48 -0
- package/src/components/VizDom/VizContainer.tsx +40 -0
- package/src/components/VizDom/VizDomHeatmap.tsx +28 -0
- package/src/components/VizDom/VizDomRenderer.tsx +82 -0
- package/src/components/VizDom/VizLoading.tsx +8 -0
- package/src/components/VizDom/WrapperVisual.tsx +73 -0
- package/src/components/VizDom/index.ts +5 -0
- package/src/components/VizElement/DefaultRankBadges.tsx +36 -0
- package/src/components/VizElement/ElementCallout.tsx +82 -0
- package/src/components/VizElement/ElementMissing.tsx +35 -0
- package/src/components/VizElement/ElementOverlay.tsx +66 -0
- package/src/components/VizElement/HeatmapElements.tsx +127 -0
- package/src/components/VizElement/HeatmapExample.tsx +70 -0
- package/src/components/VizElement/RankBadge.tsx +25 -0
- package/src/components/VizElement/VizElements.tsx +57 -0
- package/src/components/VizElement/index.ts +1 -0
- package/src/components/VizLive/VizLiveHeatmap.tsx +27 -0
- package/src/components/VizLive/VizLiveRenderer.tsx +47 -0
- package/src/components/VizLive/index.ts +1 -0
- package/src/components/VizScrollmap/AverageFoldLine.tsx +57 -0
- package/src/components/VizScrollmap/HoverZones.tsx +58 -0
- package/src/components/VizScrollmap/MetricRow.tsx +0 -0
- package/src/components/VizScrollmap/ScrollMapMinimap.tsx +64 -0
- package/src/components/VizScrollmap/ScrollMapOverlay.tsx +79 -0
- package/src/components/VizScrollmap/ScrollZoneHoverArea.tsx +35 -0
- package/src/components/VizScrollmap/ScrollZoneTooltip.tsx +146 -0
- package/src/components/VizScrollmap/ScrollmapMarker.tsx +106 -0
- package/src/components/VizScrollmap/VizScrollMap.tsx +36 -0
- package/{dist/esm/components/VizScrollmap/index.d.ts → src/components/VizScrollmap/index.ts} +0 -1
- package/src/components/VizScrollmapV2/ScrollmapOverlay.css +94 -0
- package/src/components/VizScrollmapV2/ScrollmapOverlayV2.tsx +130 -0
- package/{dist/esm/components/VizScrollmapV2/index.d.ts → src/components/VizScrollmapV2/index.ts} +0 -1
- package/src/components/VizScrollmapV2/scrollmap.types.ts +21 -0
- package/src/components/VizScrollmapV2/useScrollmapOverlay.ts +187 -0
- package/src/components/index.tsx +2 -0
- package/src/configs/iframe.ts +15 -0
- package/src/configs/index.ts +2 -0
- package/src/configs/style.ts +21 -0
- package/src/constants/index.ts +4 -0
- package/src/global.d.ts +5 -0
- package/src/helpers/elm-callout.ts +347 -0
- package/src/helpers/elm-getter.ts +70 -0
- package/src/helpers/iframe-helper/fixer.ts +100 -0
- package/src/helpers/iframe-helper/index.ts +1 -0
- package/src/helpers/iframe-helper/init.ts +56 -0
- package/src/helpers/iframe-helper/navigation-blocker-v2.ts +371 -0
- package/src/helpers/iframe-helper/navigation-blocker.ts +367 -0
- package/src/helpers/iframe-helper/style-replacer.ts +231 -0
- package/src/helpers/iframe.ts +42 -0
- package/src/helpers/index.ts +8 -0
- package/src/helpers/viz-canvas/area-clustering.ts +234 -0
- package/src/helpers/viz-canvas/area-overlay-manager-v2.ts +176 -0
- package/src/helpers/viz-canvas/area-overlay-manager.ts +273 -0
- package/src/helpers/viz-canvas/hierarchical-area-clustering.ts +420 -0
- package/{dist/esm/helpers/viz-canvas/index.d.ts → src/helpers/viz-canvas/index.ts} +0 -1
- package/src/helpers/viz-elements.ts +43 -0
- package/src/hooks/index.ts +8 -0
- package/src/hooks/register/index.ts +4 -0
- package/src/hooks/register/useRegisterConfig.ts +17 -0
- package/src/hooks/register/useRegisterControl.ts +13 -0
- package/src/hooks/register/useRegisterData.ts +36 -0
- package/src/hooks/register/useRegisterHeatmap.ts +38 -0
- package/src/hooks/viz-area/useAreaHeatmap.ts +336 -0
- package/src/hooks/viz-area/useAreaHeatmapManager.ts +692 -0
- package/src/hooks/viz-canvas/index.ts +1 -0
- package/src/hooks/viz-canvas/useAreamap.ts +162 -0
- package/src/hooks/viz-canvas/useClickmap.ts +24 -0
- package/src/hooks/viz-canvas/useHeatmapCanvas.ts +27 -0
- package/src/hooks/viz-canvas/useScrollmap.ts +22 -0
- package/src/hooks/viz-elements/index.ts +5 -0
- package/src/hooks/viz-elements/useClickedElement.ts +86 -0
- package/src/hooks/viz-elements/useElementCalloutVisible.ts +45 -0
- package/src/hooks/viz-elements/useHeatmapEffects.ts +30 -0
- package/src/hooks/viz-elements/useHeatmapElementPosition.ts +60 -0
- package/src/hooks/viz-elements/useHeatmapMouseHandler.ts +255 -0
- package/src/hooks/viz-elements/useHoveredElement.ts +170 -0
- package/src/hooks/viz-live/index.ts +1 -0
- package/src/hooks/viz-live/useVizLiveIframeMsg.ts +88 -0
- package/src/hooks/viz-live/useVizLiveRender.ts +67 -0
- package/src/hooks/viz-render/index.ts +1 -0
- package/src/hooks/viz-render/useHeatmapRender.ts +71 -0
- package/src/hooks/viz-render/useHeatmapVizRender.ts +20 -0
- package/src/hooks/viz-render/useReplayRender.ts +160 -0
- package/src/hooks/viz-scale/index.ts +2 -0
- package/src/hooks/viz-scale/useContainerDimensions.ts +48 -0
- package/src/hooks/viz-scale/useContentDimensions.ts +25 -0
- package/src/hooks/viz-scale/useHeatmapScale.ts +52 -0
- package/src/hooks/viz-scale/useObserveIframeHeight.ts +162 -0
- package/src/hooks/viz-scale/useScaleCalculation.ts +31 -0
- package/src/hooks/viz-scale/useScrollSync.ts +36 -0
- package/src/hooks/viz-scale/useWrapperRefHeight.ts +91 -0
- package/{dist/esm/hooks/viz-scrollmap/index.d.ts → src/hooks/viz-scrollmap/index.ts} +0 -1
- package/src/hooks/viz-scrollmap/useScrollmapZones.ts +165 -0
- package/src/hooks/viz-scrollmap/useZonePositions.ts +38 -0
- package/src/index.ts +10 -0
- package/src/stores/comp.ts +31 -0
- package/src/stores/config.ts +37 -0
- package/src/stores/data.ts +30 -0
- package/src/stores/index.ts +10 -0
- package/src/stores/interaction.ts +32 -0
- package/src/stores/mode-live.ts +38 -0
- package/src/stores/mode-single.ts +18 -0
- package/src/stores/viz-scrollmap.ts +22 -0
- package/src/stores/viz.ts +17 -0
- package/src/styles/base.css +1 -0
- package/src/styles/style.css +137 -0
- package/src/types/clarity.ts +45 -0
- package/src/types/control.ts +10 -0
- package/src/types/elm-callout.ts +9 -0
- package/src/types/heatmap-info.ts +11 -0
- package/src/types/heatmap.ts +25 -0
- package/src/types/iframe-helper.ts +18 -0
- package/src/types/index.ts +12 -0
- package/src/types/viz-canvas.ts +20 -0
- package/src/types/viz-element.ts +34 -0
- package/src/types/viz-scrollmap.ts +28 -0
- package/src/ui/BoxStack/BoxStack.tsx +136 -0
- package/src/ui/BoxStack/index.ts +1 -0
- package/src/ui/index.ts +1 -0
- package/src/utils/debounce.ts +10 -0
- package/src/utils/device.ts +7 -0
- package/src/utils/retry.ts +20 -0
- package/src/utils/sort.ts +5 -0
- package/dist/esm/components/VizElement/HeatmapExample.d.ts +0 -2
- package/dist/esm/components/VizElement/HeatmapExample.d.ts.map +0 -1
- package/dist/esm/components/VizScrollmap/AverageFoldLine.d.ts +0 -8
- package/dist/esm/components/VizScrollmap/AverageFoldLine.d.ts.map +0 -1
- package/dist/esm/components/VizScrollmap/HoverZones.d.ts +0 -10
- package/dist/esm/components/VizScrollmap/HoverZones.d.ts.map +0 -1
- package/dist/esm/components/VizScrollmap/MetricRow.d.ts +0 -1
- package/dist/esm/components/VizScrollmap/MetricRow.d.ts.map +0 -1
- package/dist/esm/components/VizScrollmap/ScrollMapMinimap.d.ts +0 -8
- package/dist/esm/components/VizScrollmap/ScrollMapMinimap.d.ts.map +0 -1
- package/dist/esm/components/VizScrollmap/ScrollMapOverlay.d.ts +0 -7
- package/dist/esm/components/VizScrollmap/ScrollMapOverlay.d.ts.map +0 -1
- package/dist/esm/components/VizScrollmap/ScrollZoneHoverArea.d.ts +0 -14
- package/dist/esm/components/VizScrollmap/ScrollZoneHoverArea.d.ts.map +0 -1
- package/dist/esm/components/VizScrollmap/ScrollZoneTooltip.d.ts +0 -10
- package/dist/esm/components/VizScrollmap/ScrollZoneTooltip.d.ts.map +0 -1
- package/dist/esm/components/VizScrollmap/ScrollmapMarker.d.ts +0 -7
- package/dist/esm/components/VizScrollmap/ScrollmapMarker.d.ts.map +0 -1
- package/dist/esm/components/VizScrollmap/VizScrollMap.d.ts +0 -7
- package/dist/esm/components/VizScrollmap/VizScrollMap.d.ts.map +0 -1
- package/dist/esm/components/VizScrollmap/index.d.ts.map +0 -1
- package/dist/esm/components/VizScrollmapV2/ScrollmapOverlayV2.d.ts +0 -5
- package/dist/esm/components/VizScrollmapV2/ScrollmapOverlayV2.d.ts.map +0 -1
- package/dist/esm/components/VizScrollmapV2/index.d.ts.map +0 -1
- package/dist/esm/components/VizScrollmapV2/scrollmap.types.d.ts +0 -18
- package/dist/esm/components/VizScrollmapV2/scrollmap.types.d.ts.map +0 -1
- package/dist/esm/components/VizScrollmapV2/useScrollmapOverlay.d.ts +0 -16
- package/dist/esm/components/VizScrollmapV2/useScrollmapOverlay.d.ts.map +0 -1
- package/dist/esm/helpers/iframe-helper/fixer.d.ts +0 -18
- package/dist/esm/helpers/iframe-helper/fixer.d.ts.map +0 -1
- package/dist/esm/helpers/iframe-helper/index.d.ts +0 -2
- package/dist/esm/helpers/iframe-helper/index.d.ts.map +0 -1
- package/dist/esm/helpers/iframe-helper/init.d.ts +0 -5
- package/dist/esm/helpers/iframe-helper/init.d.ts.map +0 -1
- package/dist/esm/helpers/iframe-helper/navigation-blocker-v2.d.ts +0 -28
- package/dist/esm/helpers/iframe-helper/navigation-blocker-v2.d.ts.map +0 -1
- package/dist/esm/helpers/iframe-helper/navigation-blocker.d.ts +0 -20
- package/dist/esm/helpers/iframe-helper/navigation-blocker.d.ts.map +0 -1
- package/dist/esm/helpers/iframe-helper/style-replacer.d.ts +0 -25
- package/dist/esm/helpers/iframe-helper/style-replacer.d.ts.map +0 -1
- package/dist/esm/helpers/viz-canvas/area-clustering.d.ts +0 -44
- package/dist/esm/helpers/viz-canvas/area-clustering.d.ts.map +0 -1
- package/dist/esm/helpers/viz-canvas/area-overlay-manager-v2.d.ts +0 -17
- package/dist/esm/helpers/viz-canvas/area-overlay-manager-v2.d.ts.map +0 -1
- package/dist/esm/helpers/viz-canvas/area-overlay-manager.d.ts +0 -51
- package/dist/esm/helpers/viz-canvas/area-overlay-manager.d.ts.map +0 -1
- package/dist/esm/helpers/viz-canvas/hierarchical-area-clustering.d.ts +0 -73
- package/dist/esm/helpers/viz-canvas/hierarchical-area-clustering.d.ts.map +0 -1
- package/dist/esm/helpers/viz-canvas/index.d.ts.map +0 -1
- package/dist/esm/hooks/viz-area/useAreaHeatmap.d.ts +0 -59
- package/dist/esm/hooks/viz-area/useAreaHeatmap.d.ts.map +0 -1
- package/dist/esm/hooks/viz-area/useAreaHeatmapManager.d.ts +0 -77
- package/dist/esm/hooks/viz-area/useAreaHeatmapManager.d.ts.map +0 -1
- package/dist/esm/hooks/viz-canvas/useAreamap.d.ts +0 -14
- package/dist/esm/hooks/viz-canvas/useAreamap.d.ts.map +0 -1
- package/dist/esm/hooks/viz-canvas/useHeatmapCanvas.d.ts +0 -4
- package/dist/esm/hooks/viz-canvas/useHeatmapCanvas.d.ts.map +0 -1
- package/dist/esm/hooks/viz-elements/useHeatmapMouseHandler.d.ts +0 -34
- package/dist/esm/hooks/viz-elements/useHeatmapMouseHandler.d.ts.map +0 -1
- package/dist/esm/hooks/viz-elements/useHoveredElement.d.ts.map +0 -1
- package/dist/esm/hooks/viz-live/useVizLiveIframeMsg.d.ts.map +0 -1
- package/dist/esm/hooks/viz-live/useVizLiveRender.d.ts +0 -4
- package/dist/esm/hooks/viz-live/useVizLiveRender.d.ts.map +0 -1
- package/dist/esm/hooks/viz-scale/useObserveIframeHeight.d.ts +0 -10
- package/dist/esm/hooks/viz-scale/useObserveIframeHeight.d.ts.map +0 -1
- package/dist/esm/hooks/viz-scrollmap/index.d.ts.map +0 -1
- package/dist/esm/hooks/viz-scrollmap/useScrollmapZones.d.ts +0 -29
- package/dist/esm/hooks/viz-scrollmap/useScrollmapZones.d.ts.map +0 -1
- package/dist/esm/hooks/viz-scrollmap/useZonePositions.d.ts +0 -12
- package/dist/esm/hooks/viz-scrollmap/useZonePositions.d.ts.map +0 -1
- package/dist/esm/stores/mode-single.d.ts +0 -9
- package/dist/esm/stores/mode-single.d.ts.map +0 -1
- package/dist/esm/stores/viz-scrollmap.d.ts +0 -11
- package/dist/esm/stores/viz-scrollmap.d.ts.map +0 -1
- package/dist/esm/types/heatmap-info.d.ts +0 -11
- package/dist/esm/types/heatmap-info.d.ts.map +0 -1
- package/dist/esm/types/iframe-helper.d.ts +0 -20
- package/dist/esm/types/iframe-helper.d.ts.map +0 -1
- package/dist/esm/types/viz-canvas.d.ts +0 -23
- package/dist/esm/types/viz-canvas.d.ts.map +0 -1
- package/dist/esm/types/viz-scrollmap.d.ts +0 -27
- package/dist/esm/types/viz-scrollmap.d.ts.map +0 -1
- package/dist/umd/components/VizElement/HeatmapExample.d.ts +0 -2
- package/dist/umd/components/VizElement/HeatmapExample.d.ts.map +0 -1
- package/dist/umd/components/VizScrollmap/AverageFoldLine.d.ts +0 -8
- package/dist/umd/components/VizScrollmap/AverageFoldLine.d.ts.map +0 -1
- package/dist/umd/components/VizScrollmap/HoverZones.d.ts +0 -10
- package/dist/umd/components/VizScrollmap/HoverZones.d.ts.map +0 -1
- package/dist/umd/components/VizScrollmap/MetricRow.d.ts +0 -1
- package/dist/umd/components/VizScrollmap/MetricRow.d.ts.map +0 -1
- package/dist/umd/components/VizScrollmap/ScrollMapMinimap.d.ts +0 -8
- package/dist/umd/components/VizScrollmap/ScrollMapMinimap.d.ts.map +0 -1
- package/dist/umd/components/VizScrollmap/ScrollMapOverlay.d.ts +0 -7
- package/dist/umd/components/VizScrollmap/ScrollMapOverlay.d.ts.map +0 -1
- package/dist/umd/components/VizScrollmap/ScrollZoneHoverArea.d.ts +0 -14
- package/dist/umd/components/VizScrollmap/ScrollZoneHoverArea.d.ts.map +0 -1
- package/dist/umd/components/VizScrollmap/ScrollZoneTooltip.d.ts +0 -10
- package/dist/umd/components/VizScrollmap/ScrollZoneTooltip.d.ts.map +0 -1
- package/dist/umd/components/VizScrollmap/ScrollmapMarker.d.ts +0 -7
- package/dist/umd/components/VizScrollmap/ScrollmapMarker.d.ts.map +0 -1
- package/dist/umd/components/VizScrollmap/VizScrollMap.d.ts +0 -7
- package/dist/umd/components/VizScrollmap/VizScrollMap.d.ts.map +0 -1
- package/dist/umd/components/VizScrollmap/index.d.ts +0 -2
- package/dist/umd/components/VizScrollmap/index.d.ts.map +0 -1
- package/dist/umd/components/VizScrollmapV2/ScrollmapOverlayV2.d.ts +0 -5
- package/dist/umd/components/VizScrollmapV2/ScrollmapOverlayV2.d.ts.map +0 -1
- package/dist/umd/components/VizScrollmapV2/index.d.ts +0 -2
- package/dist/umd/components/VizScrollmapV2/index.d.ts.map +0 -1
- package/dist/umd/components/VizScrollmapV2/scrollmap.types.d.ts +0 -18
- package/dist/umd/components/VizScrollmapV2/scrollmap.types.d.ts.map +0 -1
- package/dist/umd/components/VizScrollmapV2/useScrollmapOverlay.d.ts +0 -16
- package/dist/umd/components/VizScrollmapV2/useScrollmapOverlay.d.ts.map +0 -1
- package/dist/umd/helpers/iframe-helper/fixer.d.ts +0 -18
- package/dist/umd/helpers/iframe-helper/fixer.d.ts.map +0 -1
- package/dist/umd/helpers/iframe-helper/index.d.ts +0 -2
- package/dist/umd/helpers/iframe-helper/index.d.ts.map +0 -1
- package/dist/umd/helpers/iframe-helper/init.d.ts +0 -5
- package/dist/umd/helpers/iframe-helper/init.d.ts.map +0 -1
- package/dist/umd/helpers/iframe-helper/navigation-blocker-v2.d.ts +0 -28
- package/dist/umd/helpers/iframe-helper/navigation-blocker-v2.d.ts.map +0 -1
- package/dist/umd/helpers/iframe-helper/navigation-blocker.d.ts +0 -20
- package/dist/umd/helpers/iframe-helper/navigation-blocker.d.ts.map +0 -1
- package/dist/umd/helpers/iframe-helper/style-replacer.d.ts +0 -25
- package/dist/umd/helpers/iframe-helper/style-replacer.d.ts.map +0 -1
- package/dist/umd/helpers/viz-canvas/area-clustering.d.ts +0 -44
- package/dist/umd/helpers/viz-canvas/area-clustering.d.ts.map +0 -1
- package/dist/umd/helpers/viz-canvas/area-overlay-manager-v2.d.ts +0 -17
- package/dist/umd/helpers/viz-canvas/area-overlay-manager-v2.d.ts.map +0 -1
- package/dist/umd/helpers/viz-canvas/area-overlay-manager.d.ts +0 -51
- package/dist/umd/helpers/viz-canvas/area-overlay-manager.d.ts.map +0 -1
- package/dist/umd/helpers/viz-canvas/hierarchical-area-clustering.d.ts +0 -73
- package/dist/umd/helpers/viz-canvas/hierarchical-area-clustering.d.ts.map +0 -1
- package/dist/umd/helpers/viz-canvas/index.d.ts +0 -3
- package/dist/umd/helpers/viz-canvas/index.d.ts.map +0 -1
- package/dist/umd/hooks/viz-area/useAreaHeatmap.d.ts +0 -59
- package/dist/umd/hooks/viz-area/useAreaHeatmap.d.ts.map +0 -1
- package/dist/umd/hooks/viz-area/useAreaHeatmapManager.d.ts +0 -77
- package/dist/umd/hooks/viz-area/useAreaHeatmapManager.d.ts.map +0 -1
- package/dist/umd/hooks/viz-canvas/useAreamap.d.ts +0 -14
- package/dist/umd/hooks/viz-canvas/useAreamap.d.ts.map +0 -1
- package/dist/umd/hooks/viz-canvas/useHeatmapCanvas.d.ts +0 -4
- package/dist/umd/hooks/viz-canvas/useHeatmapCanvas.d.ts.map +0 -1
- package/dist/umd/hooks/viz-elements/useHeatmapMouseHandler.d.ts +0 -34
- package/dist/umd/hooks/viz-elements/useHeatmapMouseHandler.d.ts.map +0 -1
- package/dist/umd/hooks/viz-elements/useHoveredElement.d.ts.map +0 -1
- package/dist/umd/hooks/viz-live/useVizLiveIframeMsg.d.ts.map +0 -1
- package/dist/umd/hooks/viz-live/useVizLiveRender.d.ts +0 -4
- package/dist/umd/hooks/viz-live/useVizLiveRender.d.ts.map +0 -1
- package/dist/umd/hooks/viz-scale/useObserveIframeHeight.d.ts +0 -10
- package/dist/umd/hooks/viz-scale/useObserveIframeHeight.d.ts.map +0 -1
- package/dist/umd/hooks/viz-scrollmap/index.d.ts +0 -3
- package/dist/umd/hooks/viz-scrollmap/index.d.ts.map +0 -1
- package/dist/umd/hooks/viz-scrollmap/useScrollmapZones.d.ts +0 -29
- package/dist/umd/hooks/viz-scrollmap/useScrollmapZones.d.ts.map +0 -1
- package/dist/umd/hooks/viz-scrollmap/useZonePositions.d.ts +0 -12
- package/dist/umd/hooks/viz-scrollmap/useZonePositions.d.ts.map +0 -1
- package/dist/umd/stores/mode-single.d.ts +0 -9
- package/dist/umd/stores/mode-single.d.ts.map +0 -1
- package/dist/umd/stores/viz-scrollmap.d.ts +0 -11
- package/dist/umd/stores/viz-scrollmap.d.ts.map +0 -1
- package/dist/umd/types/heatmap-info.d.ts +0 -11
- package/dist/umd/types/heatmap-info.d.ts.map +0 -1
- package/dist/umd/types/iframe-helper.d.ts +0 -20
- package/dist/umd/types/iframe-helper.d.ts.map +0 -1
- package/dist/umd/types/viz-canvas.d.ts +0 -23
- package/dist/umd/types/viz-canvas.d.ts.map +0 -1
- package/dist/umd/types/viz-scrollmap.d.ts +0 -27
- package/dist/umd/types/viz-scrollmap.d.ts.map +0 -1
- /package/dist/esm/hooks/{viz-elements → vix-elements}/index.d.ts +0 -0
- /package/dist/esm/hooks/{viz-elements → vix-elements}/useClickedElement.d.ts +0 -0
- /package/dist/esm/hooks/{viz-elements → vix-elements}/useElementCalloutVisible.d.ts +0 -0
- /package/dist/esm/hooks/{viz-elements → vix-elements}/useHeatmapEffects.d.ts +0 -0
- /package/dist/esm/hooks/{viz-elements → vix-elements}/useHeatmapElementPosition.d.ts +0 -0
- /package/dist/umd/hooks/{viz-elements → vix-elements}/index.d.ts +0 -0
- /package/dist/umd/hooks/{viz-elements → vix-elements}/useClickedElement.d.ts +0 -0
- /package/dist/umd/hooks/{viz-elements → vix-elements}/useElementCalloutVisible.d.ts +0 -0
- /package/dist/umd/hooks/{viz-elements → vix-elements}/useHeatmapEffects.d.ts +0 -0
- /package/dist/umd/hooks/{viz-elements → vix-elements}/useHeatmapElementPosition.d.ts +0 -0
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import { useCallback, useEffect, useMemo, useState } from 'react';
|
|
2
|
+
import { useHeatmapDataStore } from '../../stores';
|
|
3
|
+
import { IScrollZone, ScrollMapInfoItem } from '../../types';
|
|
4
|
+
import { useZonePositions } from './useZonePositions';
|
|
5
|
+
|
|
6
|
+
export interface ScrollMapDataPoint {
|
|
7
|
+
scrollReachY: number;
|
|
8
|
+
cumulativeSum: number;
|
|
9
|
+
percUsers: number;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export type ScrollMapMode = 'basic' | 'metrics';
|
|
13
|
+
|
|
14
|
+
const SCROLL_GRADIENT_COLORS: [number, number, number][] = [
|
|
15
|
+
[255, 0, 0], // Red
|
|
16
|
+
[255, 255, 0], // Yellow
|
|
17
|
+
[0, 255, 0], // Green
|
|
18
|
+
];
|
|
19
|
+
|
|
20
|
+
interface UseScrollmapOptions {
|
|
21
|
+
mode?: ScrollMapMode;
|
|
22
|
+
enabled?: boolean;
|
|
23
|
+
iframeRef: React.RefObject<HTMLIFrameElement>;
|
|
24
|
+
wrapperRef: React.RefObject<HTMLElement>;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
interface UseScrollmapReturn {
|
|
28
|
+
zones: IScrollZone[];
|
|
29
|
+
isReady: boolean;
|
|
30
|
+
maxUsers: number;
|
|
31
|
+
getZonePosition: (zone: IScrollZone) => { top: number; height: number } | null;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export const useScrollmapZones = (options: UseScrollmapOptions): UseScrollmapReturn => {
|
|
35
|
+
const { mode = 'basic', enabled = true, iframeRef, wrapperRef } = options;
|
|
36
|
+
|
|
37
|
+
const [isReady, setIsReady] = useState(false);
|
|
38
|
+
const [zones, setZones] = useState<IScrollZone[]>([]);
|
|
39
|
+
|
|
40
|
+
const scrollmap = useHeatmapDataStore((state) => state.scrollmap);
|
|
41
|
+
const scrollMapInfo = useHeatmapDataStore((state) => state.dataInfo?.scrollMapInfo);
|
|
42
|
+
|
|
43
|
+
const { getZonePosition } = useZonePositions({ iframeRef, wrapperRef });
|
|
44
|
+
|
|
45
|
+
const maxUsers = useMemo(() => {
|
|
46
|
+
if (!scrollmap || scrollmap.length === 0) return 100;
|
|
47
|
+
return Math.max(...scrollmap.map((d) => d.percUsers));
|
|
48
|
+
}, [scrollmap]);
|
|
49
|
+
|
|
50
|
+
const createZones = useCallback(
|
|
51
|
+
(data: ScrollMapDataPoint[]): IScrollZone[] => {
|
|
52
|
+
if (mode === 'basic') {
|
|
53
|
+
const breakpoints = [0, 25, 50, 75, 100];
|
|
54
|
+
const zones: IScrollZone[] = [];
|
|
55
|
+
|
|
56
|
+
for (let i = 0; i < breakpoints.length - 1; i++) {
|
|
57
|
+
const startY = breakpoints[i];
|
|
58
|
+
const endY = breakpoints[i + 1];
|
|
59
|
+
|
|
60
|
+
const pointsInRange = data.filter(
|
|
61
|
+
(d) => d.scrollReachY >= startY && d.scrollReachY < endY,
|
|
62
|
+
);
|
|
63
|
+
|
|
64
|
+
const avgUsers =
|
|
65
|
+
pointsInRange.length > 0
|
|
66
|
+
? pointsInRange.reduce((sum, p) => sum + p.percUsers, 0) / pointsInRange.length
|
|
67
|
+
: 0;
|
|
68
|
+
|
|
69
|
+
zones.push({
|
|
70
|
+
id: `zone_${startY}_${endY}`,
|
|
71
|
+
startY,
|
|
72
|
+
endY,
|
|
73
|
+
percUsers: avgUsers,
|
|
74
|
+
label: `${startY}% - ${endY}%`,
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
return zones;
|
|
79
|
+
} else {
|
|
80
|
+
// Metrics mode: 20 zones (5% intervals)
|
|
81
|
+
const zones: IScrollZone[] = [];
|
|
82
|
+
const interval = 5;
|
|
83
|
+
|
|
84
|
+
// Prepare metrics map
|
|
85
|
+
let metricsMap: Map<number, ScrollMapInfoItem> | undefined;
|
|
86
|
+
|
|
87
|
+
if (scrollMapInfo && Object.keys(scrollMapInfo).length > 0) {
|
|
88
|
+
metricsMap = new Map();
|
|
89
|
+
Object.entries(scrollMapInfo).forEach(([key, value]) => {
|
|
90
|
+
metricsMap!.set(Number(key), value);
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
for (let i = 0; i < 100; i += interval) {
|
|
95
|
+
const startY = i;
|
|
96
|
+
const endY = i + interval;
|
|
97
|
+
|
|
98
|
+
const point = data.find((d) => d.scrollReachY === startY) || {
|
|
99
|
+
scrollReachY: startY,
|
|
100
|
+
cumulativeSum: 0,
|
|
101
|
+
percUsers: 0,
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
const metrics = metricsMap?.get(startY);
|
|
105
|
+
|
|
106
|
+
zones.push({
|
|
107
|
+
id: `zone_${startY}_${endY}`,
|
|
108
|
+
startY,
|
|
109
|
+
endY,
|
|
110
|
+
percUsers: point.percUsers,
|
|
111
|
+
metrics,
|
|
112
|
+
label: `${startY}% - ${endY}%`,
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
return zones;
|
|
117
|
+
}
|
|
118
|
+
},
|
|
119
|
+
[mode, scrollMapInfo],
|
|
120
|
+
);
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Initialize zones
|
|
124
|
+
*/
|
|
125
|
+
useEffect(() => {
|
|
126
|
+
if (!enabled || !scrollmap || scrollmap.length === 0) {
|
|
127
|
+
setIsReady(false);
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
try {
|
|
132
|
+
const newZones = createZones(scrollmap);
|
|
133
|
+
setZones(newZones);
|
|
134
|
+
setIsReady(true);
|
|
135
|
+
console.log(`[useScrollmap] Created ${newZones.length} zones in ${mode} mode`);
|
|
136
|
+
} catch (error) {
|
|
137
|
+
console.error('[useScrollmap] Error:', error);
|
|
138
|
+
setIsReady(false);
|
|
139
|
+
}
|
|
140
|
+
}, [enabled, scrollmap, mode, createZones]);
|
|
141
|
+
|
|
142
|
+
return {
|
|
143
|
+
zones,
|
|
144
|
+
isReady,
|
|
145
|
+
maxUsers,
|
|
146
|
+
getZonePosition,
|
|
147
|
+
};
|
|
148
|
+
};
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* Get scroll gradient color for minimap
|
|
152
|
+
*/
|
|
153
|
+
export const getScrollGradientColor = (normalized: number): string => {
|
|
154
|
+
const idx = Math.min(Math.floor(normalized * 2), 1);
|
|
155
|
+
const [r1, g1, b1] = SCROLL_GRADIENT_COLORS[idx];
|
|
156
|
+
const [r2, g2, b2] = SCROLL_GRADIENT_COLORS[idx + 1];
|
|
157
|
+
|
|
158
|
+
const localPercent = (normalized * 2) % 1;
|
|
159
|
+
|
|
160
|
+
const r = Math.round(r1 + (r2 - r1) * localPercent);
|
|
161
|
+
const g = Math.round(g1 + (g2 - g1) * localPercent);
|
|
162
|
+
const b = Math.round(b1 + (b2 - b1) * localPercent);
|
|
163
|
+
|
|
164
|
+
return `rgb(${r}, ${g}, ${b})`;
|
|
165
|
+
};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { useCallback } from 'react';
|
|
2
|
+
import { useHeatmapSingleStore } from '../../stores';
|
|
3
|
+
import { IScrollZone, IScrollZonePosition } from '../../types';
|
|
4
|
+
|
|
5
|
+
interface ZonePositionsOptions {
|
|
6
|
+
iframeRef: React.RefObject<HTMLIFrameElement>;
|
|
7
|
+
wrapperRef: React.RefObject<HTMLElement>;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
type ZonePositionsInput = Pick<IScrollZone, 'startY' | 'endY'>;
|
|
11
|
+
interface ZonePositionsReturn {
|
|
12
|
+
getZonePosition: (zone: ZonePositionsInput) => IScrollZonePosition | null;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export const useZonePositions = (options: ZonePositionsOptions): ZonePositionsReturn => {
|
|
16
|
+
const iframeHeight = useHeatmapSingleStore((state) => state.iframeHeight);
|
|
17
|
+
|
|
18
|
+
const getZonePosition = useCallback(
|
|
19
|
+
(zone: ZonePositionsInput): IScrollZonePosition | null => {
|
|
20
|
+
if (!iframeHeight) {
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const startYPx = (zone.startY / 100) * iframeHeight;
|
|
25
|
+
const heightPx = ((zone.endY - zone.startY) / 100) * iframeHeight;
|
|
26
|
+
|
|
27
|
+
return {
|
|
28
|
+
top: startYPx,
|
|
29
|
+
height: heightPx,
|
|
30
|
+
};
|
|
31
|
+
},
|
|
32
|
+
[iframeHeight],
|
|
33
|
+
);
|
|
34
|
+
|
|
35
|
+
return {
|
|
36
|
+
getZonePosition,
|
|
37
|
+
};
|
|
38
|
+
};
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { create } from 'zustand';
|
|
2
|
+
import { IHeatmapControl } from '../types/control';
|
|
3
|
+
|
|
4
|
+
export interface IHeatmapControlStore {
|
|
5
|
+
controls: IHeatmapControl;
|
|
6
|
+
registerControl: (
|
|
7
|
+
key: keyof IHeatmapControl,
|
|
8
|
+
control: IHeatmapControl[keyof IHeatmapControl],
|
|
9
|
+
) => void;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export const useHeatmapControlStore = create<IHeatmapControlStore>()((set, get) => {
|
|
13
|
+
return {
|
|
14
|
+
controls: {
|
|
15
|
+
Sidebar: null,
|
|
16
|
+
TopBar: null,
|
|
17
|
+
Toolbar: null,
|
|
18
|
+
MetricBar: null,
|
|
19
|
+
VizLoading: null,
|
|
20
|
+
ElementCallout: null,
|
|
21
|
+
},
|
|
22
|
+
registerControl: (key, control) => {
|
|
23
|
+
set({
|
|
24
|
+
controls: {
|
|
25
|
+
...get().controls,
|
|
26
|
+
[key]: control,
|
|
27
|
+
},
|
|
28
|
+
});
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
});
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { create } from 'zustand';
|
|
2
|
+
import { DEFAULT_SIDEBAR_WIDTH } from '../configs';
|
|
3
|
+
import { IClickType, IHeatmapType, IScrollType } from '../types';
|
|
4
|
+
|
|
5
|
+
export interface IHeatmapConfigStore {
|
|
6
|
+
mode: 'live' | 'compare' | 'single';
|
|
7
|
+
width: number;
|
|
8
|
+
sidebarWidth: number;
|
|
9
|
+
heatmapType: IHeatmapType;
|
|
10
|
+
clickType: IClickType;
|
|
11
|
+
scrollType: IScrollType;
|
|
12
|
+
setMode: (mode: 'live' | 'compare' | 'single') => void;
|
|
13
|
+
resetMode: () => void;
|
|
14
|
+
setWidth: (width: number) => void;
|
|
15
|
+
setSidebarWidth: (sidebarWidth: number) => void;
|
|
16
|
+
setHeatmapType: (heatmapType: IHeatmapType) => void;
|
|
17
|
+
setClickType: (clickType: IClickType) => void;
|
|
18
|
+
setScrollType: (scrollType: IScrollType) => void;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export const useHeatmapConfigStore = create<IHeatmapConfigStore>()((set, get) => {
|
|
22
|
+
return {
|
|
23
|
+
mode: 'single',
|
|
24
|
+
width: 1440,
|
|
25
|
+
sidebarWidth: DEFAULT_SIDEBAR_WIDTH,
|
|
26
|
+
heatmapType: IHeatmapType.Scroll,
|
|
27
|
+
clickType: IClickType.Total,
|
|
28
|
+
scrollType: IScrollType.Depth,
|
|
29
|
+
setMode: (mode) => set({ mode }),
|
|
30
|
+
resetMode: () => set({ mode: 'single' }),
|
|
31
|
+
setWidth: (width) => set({ width }),
|
|
32
|
+
setSidebarWidth: (sidebarWidth) => set({ sidebarWidth }),
|
|
33
|
+
setHeatmapType: (heatmapType) => set({ heatmapType }),
|
|
34
|
+
setClickType: (clickType) => set({ clickType }),
|
|
35
|
+
setScrollType: (scrollType) => set({ scrollType }),
|
|
36
|
+
};
|
|
37
|
+
});
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { create } from 'zustand';
|
|
2
|
+
import { ClickMapPoint, DecodedPayload, IHeatmapInfo, ScrollMapPoint } from '../types';
|
|
3
|
+
|
|
4
|
+
export interface IHeatmapDataStore {
|
|
5
|
+
data?: DecodedPayload[];
|
|
6
|
+
clickmap?: ClickMapPoint[];
|
|
7
|
+
dataInfo?: IHeatmapInfo;
|
|
8
|
+
isRendering: boolean;
|
|
9
|
+
setIsRendering: (isRendering: boolean) => void;
|
|
10
|
+
setDataInfo: (dataInfo: IHeatmapInfo) => void;
|
|
11
|
+
setData: (data: DecodedPayload[]) => void;
|
|
12
|
+
setClickmap: (clickmap: ClickMapPoint[]) => void;
|
|
13
|
+
scrollmap?: ScrollMapPoint[];
|
|
14
|
+
setScrollmap: (scrollmap: ScrollMapPoint[]) => void;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export const useHeatmapDataStore = create<IHeatmapDataStore>()((set, get) => {
|
|
18
|
+
return {
|
|
19
|
+
data: undefined,
|
|
20
|
+
clickmap: undefined,
|
|
21
|
+
dataInfo: undefined,
|
|
22
|
+
scrollmap: undefined,
|
|
23
|
+
isRendering: true,
|
|
24
|
+
setIsRendering: (isRendering) => set({ isRendering }),
|
|
25
|
+
setDataInfo: (dataInfo) => set({ dataInfo }),
|
|
26
|
+
setData: (data) => set({ data }),
|
|
27
|
+
setClickmap: (clickmap) => set({ clickmap }),
|
|
28
|
+
setScrollmap: (scrollmap) => set({ scrollmap }),
|
|
29
|
+
};
|
|
30
|
+
});
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { create } from 'zustand';
|
|
2
|
+
import { ElementInfo } from '../types';
|
|
3
|
+
|
|
4
|
+
export interface IHeatmapState {
|
|
5
|
+
hideSidebar: boolean;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export interface IHeatmapInteractionStore {
|
|
9
|
+
state: IHeatmapState;
|
|
10
|
+
setState: (state: IHeatmapState) => void;
|
|
11
|
+
selectedElement: string | null;
|
|
12
|
+
setSelectedElement: (selectedElement: string | null) => void;
|
|
13
|
+
hoveredElement: ElementInfo | null;
|
|
14
|
+
setHoveredElement: (hoveredElement: ElementInfo | null) => void;
|
|
15
|
+
shouldShowCallout: boolean;
|
|
16
|
+
setShouldShowCallout: (shouldShowCallout: boolean) => void;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export const useHeatmapInteractionStore = create<IHeatmapInteractionStore>()((set, get) => {
|
|
20
|
+
return {
|
|
21
|
+
state: {
|
|
22
|
+
hideSidebar: false,
|
|
23
|
+
},
|
|
24
|
+
setState: (state) => set({ state }),
|
|
25
|
+
selectedElement: null,
|
|
26
|
+
setSelectedElement: (selectedElement) => set({ selectedElement }),
|
|
27
|
+
hoveredElement: null,
|
|
28
|
+
setHoveredElement: (hoveredElement) => set({ hoveredElement }),
|
|
29
|
+
shouldShowCallout: false,
|
|
30
|
+
setShouldShowCallout: (shouldShowCallout) => set({ shouldShowCallout }),
|
|
31
|
+
};
|
|
32
|
+
});
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { create } from 'zustand';
|
|
2
|
+
import { DecodedPayload } from '../types';
|
|
3
|
+
|
|
4
|
+
interface IHeatmapLiveStoreState {
|
|
5
|
+
payloads: DecodedPayload[];
|
|
6
|
+
htmlContent: string;
|
|
7
|
+
iframeHeight: number;
|
|
8
|
+
wrapperHeight: number;
|
|
9
|
+
}
|
|
10
|
+
interface IHeatmapLiveStoreActions {
|
|
11
|
+
setPayloads: (payloads: DecodedPayload[]) => void;
|
|
12
|
+
addPayload: (payload: DecodedPayload) => void;
|
|
13
|
+
reset: () => void;
|
|
14
|
+
setHtmlContent: (htmlContent: string) => void;
|
|
15
|
+
setWrapperHeight: (wrapperHeight: number) => void;
|
|
16
|
+
setIframeHeight: (iframeHeight: number) => void;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
interface IHeatmapLiveStore extends IHeatmapLiveStoreState, IHeatmapLiveStoreActions {}
|
|
20
|
+
|
|
21
|
+
const initialState: IHeatmapLiveStoreState = {
|
|
22
|
+
payloads: [],
|
|
23
|
+
htmlContent: '',
|
|
24
|
+
wrapperHeight: 0,
|
|
25
|
+
iframeHeight: 0,
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
export const useHeatmapLiveStore = create<IHeatmapLiveStore>()((set, get) => {
|
|
29
|
+
return {
|
|
30
|
+
...initialState,
|
|
31
|
+
reset: () => set(initialState),
|
|
32
|
+
setPayloads: (payloads) => set({ payloads }),
|
|
33
|
+
addPayload: (payload) => set((state) => ({ payloads: [...state.payloads, payload] })),
|
|
34
|
+
setHtmlContent: (htmlContent) => set({ htmlContent }),
|
|
35
|
+
setWrapperHeight: (wrapperHeight) => set({ wrapperHeight }),
|
|
36
|
+
setIframeHeight: (iframeHeight) => set({ iframeHeight }),
|
|
37
|
+
};
|
|
38
|
+
});
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Visualizer } from '@gemx-dev/clarity-visualize';
|
|
2
|
+
import { create } from 'zustand';
|
|
3
|
+
|
|
4
|
+
export interface IHeatmapSingleStore {
|
|
5
|
+
vizRef: Visualizer | null;
|
|
6
|
+
setVizRef: (vizRef: Visualizer | null) => void;
|
|
7
|
+
iframeHeight: number;
|
|
8
|
+
setIframeHeight: (iframeHeight: number) => void;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export const useHeatmapSingleStore = create<IHeatmapSingleStore>()((set, get) => {
|
|
12
|
+
return {
|
|
13
|
+
vizRef: null,
|
|
14
|
+
iframeHeight: 0,
|
|
15
|
+
setVizRef: (vizRef) => set({ vizRef }),
|
|
16
|
+
setIframeHeight: (iframeHeight) => set({ iframeHeight }),
|
|
17
|
+
};
|
|
18
|
+
});
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { create } from 'zustand';
|
|
2
|
+
import { IScrollZone } from '../types';
|
|
3
|
+
|
|
4
|
+
export interface IHeatmapVizScrollmapStore {
|
|
5
|
+
zones: IScrollZone[];
|
|
6
|
+
setZones: (zones: IScrollZone[]) => void;
|
|
7
|
+
hoveredZone: IScrollZone | null;
|
|
8
|
+
setHoveredZone: (hoveredZone: IScrollZone | null) => void;
|
|
9
|
+
showMinimap: boolean;
|
|
10
|
+
setShowMinimap: (showMinimap: boolean) => void;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export const useHeatmapVizScrollmapStore = create<IHeatmapVizScrollmapStore>()((set, get) => {
|
|
14
|
+
return {
|
|
15
|
+
zones: [],
|
|
16
|
+
hoveredZone: null,
|
|
17
|
+
showMinimap: true,
|
|
18
|
+
setZones: (zones) => set({ zones }),
|
|
19
|
+
setHoveredZone: (hoveredZone) => set({ hoveredZone }),
|
|
20
|
+
setShowMinimap: (showMinimap) => set({ showMinimap }),
|
|
21
|
+
};
|
|
22
|
+
});
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { create } from 'zustand';
|
|
2
|
+
|
|
3
|
+
export interface IHeatmapVizStore {
|
|
4
|
+
isRenderViz: boolean;
|
|
5
|
+
setIsRenderViz: (isRenderViz: boolean) => void;
|
|
6
|
+
scale: number;
|
|
7
|
+
setScale: (scale: number) => void;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export const useHeatmapVizStore = create<IHeatmapVizStore>()((set, get) => {
|
|
11
|
+
return {
|
|
12
|
+
isRenderViz: false,
|
|
13
|
+
setIsRenderViz: (isRenderViz) => set({ isRenderViz }),
|
|
14
|
+
scale: 1,
|
|
15
|
+
setScale: (scale) => set({ scale }),
|
|
16
|
+
};
|
|
17
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@import '@xyflow/react/dist/style.css';
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/* ================= Global CSS ================= */
|
|
2
|
+
.gx-hm-divider {
|
|
3
|
+
width: 100%;
|
|
4
|
+
height: var(--gx-hm-border-width, 1px);
|
|
5
|
+
background-color: var(--gx-hm-border-color, #CCC);
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
.gx-hm-border-inline-end {
|
|
9
|
+
border-inline-end-width: var(--gx-hm-border-width, 1px);
|
|
10
|
+
border-inline-end-color: var(--gx-hm-border-color, #CCC);
|
|
11
|
+
border-inline-end-style: solid;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.gx-hm-shadow {
|
|
15
|
+
box-shadow: 0px 0px 6px 1px #1A1A1A33;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/* ================= Heatmap Wrapper CSS ================= */
|
|
19
|
+
|
|
20
|
+
.gx-hm-wrapper iframe {
|
|
21
|
+
display: block;
|
|
22
|
+
/* border: 1px solid #CCC; */
|
|
23
|
+
border-radius: 8px;
|
|
24
|
+
border-width: var(--gx-hm-border-width-iframe, 1px);
|
|
25
|
+
border-color: var(--gx-hm-border-color, #CCC);
|
|
26
|
+
border-style: solid;
|
|
27
|
+
/* box-shadow: 0px 1px 0px 0px #1A1A1A12;
|
|
28
|
+
box-shadow: 0px 1px 0px 0px #CCCCCC80 inset;
|
|
29
|
+
box-shadow: 0px -1px 0px 0px #0000002B inset;
|
|
30
|
+
box-shadow: -1px 0px 0px 0px #00000021 inset;
|
|
31
|
+
box-shadow: 1px 0px 0px 0px #00000021 inset; */
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.gx-hm-wrapper .gx-hm-elements {
|
|
35
|
+
position: absolute;
|
|
36
|
+
z-index: 2;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.gx-hm-rank-badge {
|
|
40
|
+
position: absolute;
|
|
41
|
+
width: 28px;
|
|
42
|
+
height: 28px;
|
|
43
|
+
background: #0078D4;
|
|
44
|
+
color: white;
|
|
45
|
+
border: 1px solid #FFFFFF;
|
|
46
|
+
border-radius: 32px;
|
|
47
|
+
display: flex;
|
|
48
|
+
align-items: center;
|
|
49
|
+
justify-content: center;
|
|
50
|
+
text-align: center;
|
|
51
|
+
filter: drop-shadow(0px 1.2px 3.6px rgba(0, 0, 0, 0.1));
|
|
52
|
+
cursor: default;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.heatmapElement {
|
|
56
|
+
position: absolute;
|
|
57
|
+
border: 1px solid white;
|
|
58
|
+
outline: 1px solid #0078D4;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
/* ================= Callout CSS ================= */
|
|
63
|
+
|
|
64
|
+
.clarity-callout {
|
|
65
|
+
/* box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15); */
|
|
66
|
+
min-width: 200px;
|
|
67
|
+
max-width: 280px;
|
|
68
|
+
width: 230px;
|
|
69
|
+
height: 263px;
|
|
70
|
+
animation: clarity-callout-fade-in 0.2s ease-out;
|
|
71
|
+
pointer-events: auto;
|
|
72
|
+
/* overflow: hidden; */
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
@keyframes clarity-callout-fade-in {
|
|
76
|
+
from {
|
|
77
|
+
opacity: 0;
|
|
78
|
+
/* transform: scale(0.95); */
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
to {
|
|
82
|
+
opacity: 1;
|
|
83
|
+
/* transform: scale(1); */
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
.clarity-callout__arrow {
|
|
88
|
+
position: absolute;
|
|
89
|
+
width: 16px;
|
|
90
|
+
height: 16px;
|
|
91
|
+
background: white;
|
|
92
|
+
transform: rotate(45deg);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
/* ================= Loading CSS ================= */
|
|
97
|
+
.gx-hm-loading {
|
|
98
|
+
position: absolute;
|
|
99
|
+
top: 0;
|
|
100
|
+
left: 0;
|
|
101
|
+
right: 0;
|
|
102
|
+
bottom: 0;
|
|
103
|
+
background: rgba(255, 255, 255, 0.95);
|
|
104
|
+
backdrop-filter: blur(2px);
|
|
105
|
+
display: flex;
|
|
106
|
+
flex-direction: column;
|
|
107
|
+
align-items: center;
|
|
108
|
+
justify-content: center;
|
|
109
|
+
z-index: 10;
|
|
110
|
+
border-radius: 8px;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
.gx-hm-loading--spinner {
|
|
114
|
+
width: 48px;
|
|
115
|
+
height: 48px;
|
|
116
|
+
border: 4px solid #f3f3f3;
|
|
117
|
+
border-top: 4px solid #4f46e5;
|
|
118
|
+
border-radius: 50%;
|
|
119
|
+
animation: spin 1s linear infinite;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
.gx-hm-loading--text {
|
|
123
|
+
margin-top: 16px;
|
|
124
|
+
font-size: 14px;
|
|
125
|
+
font-weight: 500;
|
|
126
|
+
color: #666;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
@keyframes spin {
|
|
130
|
+
from {
|
|
131
|
+
transform: rotate(0deg);
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
to {
|
|
135
|
+
transform: rotate(360deg);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { Data, MergedPayload } from '@gemx-dev/clarity-visualize';
|
|
2
|
+
|
|
3
|
+
export interface HeatmapProject {
|
|
4
|
+
id: string;
|
|
5
|
+
name: string;
|
|
6
|
+
domain: string;
|
|
7
|
+
apiKey: string;
|
|
8
|
+
_count?: {
|
|
9
|
+
sessions: number;
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export interface SessionData {
|
|
14
|
+
id: string;
|
|
15
|
+
projectId: string;
|
|
16
|
+
userId?: string;
|
|
17
|
+
startTime: Date;
|
|
18
|
+
endTime?: Date;
|
|
19
|
+
pageUrl: string;
|
|
20
|
+
userAgent?: string;
|
|
21
|
+
screenWidth?: number;
|
|
22
|
+
screenHeight?: number;
|
|
23
|
+
deviceType?: string;
|
|
24
|
+
browser?: string;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export interface ClickMapPoint {
|
|
28
|
+
hash: string;
|
|
29
|
+
selector: string;
|
|
30
|
+
totalclicks: number;
|
|
31
|
+
x: number[];
|
|
32
|
+
y: number[];
|
|
33
|
+
clicks: number[];
|
|
34
|
+
points: number;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export interface ScrollMapPoint {
|
|
38
|
+
scrollReachY: number; // % scroll depth (0-100)
|
|
39
|
+
cumulativeSum: number;
|
|
40
|
+
percUsers: number;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export type DecodedPayload = Data.DecodedPayload;
|
|
44
|
+
export type DecodedEvents = MergedPayload['events'];
|
|
45
|
+
export type DecodedEvent = DecodedEvents[number];
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export type ICalloutPlacement = 'top' | 'bottom' | 'left' | 'right';
|
|
2
|
+
export type IHorizontalAlignment = 'left' | 'center' | 'right';
|
|
3
|
+
|
|
4
|
+
export interface ICalloutPosition {
|
|
5
|
+
top: number;
|
|
6
|
+
left: number;
|
|
7
|
+
placement: ICalloutPlacement;
|
|
8
|
+
horizontalAlign: IHorizontalAlignment;
|
|
9
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ElementMapInfo, HeatmapElement } from './viz-element';
|
|
2
|
+
import { ScrollMapInfo } from './viz-scrollmap';
|
|
3
|
+
|
|
4
|
+
export interface IHeatmapInfo {
|
|
5
|
+
sortedElements?: HeatmapElement[];
|
|
6
|
+
elementMapInfo?: ElementMapInfo;
|
|
7
|
+
scrollMapInfo?: ScrollMapInfo;
|
|
8
|
+
totalClicks?: number;
|
|
9
|
+
width?: number;
|
|
10
|
+
averageFold?: number;
|
|
11
|
+
}
|