@gemx-dev/heatmap-react 3.5.46 → 3.5.47
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/components/Layout/HeatmapLayout.d.ts +3 -2
- package/dist/esm/components/Layout/HeatmapLayout.d.ts.map +1 -1
- package/dist/esm/components/VizDom/VizDomRenderer.d.ts.map +1 -1
- 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/HeatmapExample.d.ts +2 -0
- package/dist/esm/components/VizElement/HeatmapExample.d.ts.map +1 -0
- package/dist/esm/components/VizElement/VizElements.d.ts.map +1 -1
- 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/components/VizScrollmap/AverageFoldLine.d.ts +8 -0
- package/dist/esm/components/VizScrollmap/AverageFoldLine.d.ts.map +1 -0
- package/dist/esm/components/VizScrollmap/HoverZones.d.ts +10 -0
- package/dist/esm/components/VizScrollmap/HoverZones.d.ts.map +1 -0
- package/dist/esm/components/VizScrollmap/MetricRow.d.ts +1 -0
- package/dist/esm/components/VizScrollmap/MetricRow.d.ts.map +1 -0
- package/dist/esm/components/VizScrollmap/ScrollMapMinimap.d.ts +8 -0
- package/dist/esm/components/VizScrollmap/ScrollMapMinimap.d.ts.map +1 -0
- package/dist/esm/components/VizScrollmap/ScrollMapOverlay.d.ts +7 -0
- package/dist/esm/components/VizScrollmap/ScrollMapOverlay.d.ts.map +1 -0
- package/dist/esm/components/VizScrollmap/ScrollZoneHoverArea.d.ts +14 -0
- package/dist/esm/components/VizScrollmap/ScrollZoneHoverArea.d.ts.map +1 -0
- package/dist/esm/components/VizScrollmap/ScrollZoneTooltip.d.ts +10 -0
- package/dist/esm/components/VizScrollmap/ScrollZoneTooltip.d.ts.map +1 -0
- package/dist/esm/components/VizScrollmap/ScrollmapMarker.d.ts +7 -0
- package/dist/esm/components/VizScrollmap/ScrollmapMarker.d.ts.map +1 -0
- package/dist/esm/components/VizScrollmap/VizScrollMap.d.ts +7 -0
- package/dist/esm/components/VizScrollmap/VizScrollMap.d.ts.map +1 -0
- package/{src/components/VizScrollmap/index.ts → dist/esm/components/VizScrollmap/index.d.ts} +1 -0
- package/dist/esm/components/VizScrollmap/index.d.ts.map +1 -0
- package/dist/esm/components/VizScrollmapV2/ScrollmapOverlayV2.d.ts +5 -0
- package/dist/esm/components/VizScrollmapV2/ScrollmapOverlayV2.d.ts.map +1 -0
- package/{src/components/VizScrollmapV2/index.ts → dist/esm/components/VizScrollmapV2/index.d.ts} +1 -0
- package/dist/esm/components/VizScrollmapV2/index.d.ts.map +1 -0
- package/dist/esm/components/VizScrollmapV2/scrollmap.types.d.ts +18 -0
- package/dist/esm/components/VizScrollmapV2/scrollmap.types.d.ts.map +1 -0
- package/dist/esm/components/VizScrollmapV2/useScrollmapOverlay.d.ts +16 -0
- package/dist/esm/components/VizScrollmapV2/useScrollmapOverlay.d.ts.map +1 -0
- package/dist/esm/configs/style.d.ts +2 -0
- 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/iframe-helper/fixer.d.ts +18 -0
- package/dist/esm/helpers/iframe-helper/fixer.d.ts.map +1 -0
- package/dist/esm/helpers/iframe-helper/index.d.ts +2 -0
- package/dist/esm/helpers/iframe-helper/index.d.ts.map +1 -0
- package/dist/esm/helpers/iframe-helper/init.d.ts +5 -0
- package/dist/esm/helpers/iframe-helper/init.d.ts.map +1 -0
- package/dist/esm/helpers/iframe-helper/navigation-blocker-v2.d.ts +28 -0
- package/dist/esm/helpers/iframe-helper/navigation-blocker-v2.d.ts.map +1 -0
- package/dist/esm/helpers/iframe-helper/navigation-blocker.d.ts +20 -0
- package/dist/esm/helpers/iframe-helper/navigation-blocker.d.ts.map +1 -0
- package/dist/esm/helpers/iframe-helper/style-replacer.d.ts +25 -0
- package/dist/esm/helpers/iframe-helper/style-replacer.d.ts.map +1 -0
- package/dist/esm/helpers/index.d.ts +2 -2
- package/dist/esm/helpers/index.d.ts.map +1 -1
- package/dist/esm/helpers/viz-canvas/area-clustering.d.ts +44 -0
- package/dist/esm/helpers/viz-canvas/area-clustering.d.ts.map +1 -0
- package/dist/esm/helpers/viz-canvas/area-overlay-manager-v2.d.ts +17 -0
- package/dist/esm/helpers/viz-canvas/area-overlay-manager-v2.d.ts.map +1 -0
- package/dist/esm/helpers/viz-canvas/area-overlay-manager.d.ts +51 -0
- package/dist/esm/helpers/viz-canvas/area-overlay-manager.d.ts.map +1 -0
- package/dist/esm/helpers/viz-canvas/hierarchical-area-clustering.d.ts +73 -0
- package/dist/esm/helpers/viz-canvas/hierarchical-area-clustering.d.ts.map +1 -0
- package/{src/helpers/viz-canvas/index.ts → dist/esm/helpers/viz-canvas/index.d.ts} +1 -0
- package/dist/esm/helpers/viz-canvas/index.d.ts.map +1 -0
- package/dist/esm/hooks/index.d.ts +2 -1
- 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 +7 -2
- package/dist/esm/hooks/register/useRegisterHeatmap.d.ts.map +1 -1
- package/dist/esm/hooks/viz-area/useAreaHeatmap.d.ts +59 -0
- package/dist/esm/hooks/viz-area/useAreaHeatmap.d.ts.map +1 -0
- package/dist/esm/hooks/viz-area/useAreaHeatmapManager.d.ts +77 -0
- package/dist/esm/hooks/viz-area/useAreaHeatmapManager.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/useAreamap.d.ts +14 -0
- package/dist/esm/hooks/viz-canvas/useAreamap.d.ts.map +1 -0
- package/dist/esm/hooks/viz-canvas/useClickmap.d.ts +3 -1
- package/dist/esm/hooks/viz-canvas/useClickmap.d.ts.map +1 -1
- package/dist/esm/hooks/viz-canvas/useHeatmapCanvas.d.ts +4 -0
- package/dist/esm/hooks/viz-canvas/useHeatmapCanvas.d.ts.map +1 -0
- package/dist/esm/hooks/viz-canvas/useScrollmap.d.ts +3 -1
- package/dist/esm/hooks/viz-canvas/useScrollmap.d.ts.map +1 -1
- package/dist/esm/hooks/{vix-elements → viz-elements}/index.d.ts.map +1 -1
- package/dist/esm/hooks/{vix-elements → viz-elements}/useClickedElement.d.ts.map +1 -1
- package/dist/esm/hooks/{vix-elements → viz-elements}/useElementCalloutVisible.d.ts.map +1 -1
- package/dist/esm/hooks/{vix-elements → viz-elements}/useHeatmapEffects.d.ts.map +1 -1
- package/dist/esm/hooks/{vix-elements → viz-elements}/useHeatmapElementPosition.d.ts.map +1 -1
- package/dist/esm/hooks/viz-elements/useHeatmapMouseHandler.d.ts +34 -0
- package/dist/esm/hooks/viz-elements/useHeatmapMouseHandler.d.ts.map +1 -0
- package/dist/esm/hooks/{vix-elements → viz-elements}/useHoveredElement.d.ts +4 -0
- package/dist/esm/hooks/viz-elements/useHoveredElement.d.ts.map +1 -0
- package/dist/esm/hooks/viz-live/index.d.ts +1 -1
- package/dist/{umd/hooks/viz-live/useIframeMessage.d.ts → esm/hooks/viz-live/useVizLiveIframeMsg.d.ts} +2 -10
- package/dist/esm/hooks/viz-live/useVizLiveIframeMsg.d.ts.map +1 -0
- package/dist/esm/hooks/viz-live/useVizLiveRender.d.ts +4 -0
- package/dist/esm/hooks/viz-live/useVizLiveRender.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/useObserveIframeHeight.d.ts +10 -0
- package/dist/esm/hooks/viz-scale/useObserveIframeHeight.d.ts.map +1 -0
- package/{src/hooks/viz-scrollmap/index.ts → dist/esm/hooks/viz-scrollmap/index.d.ts} +1 -0
- package/dist/esm/hooks/viz-scrollmap/index.d.ts.map +1 -0
- package/dist/esm/hooks/viz-scrollmap/useScrollmapZones.d.ts +29 -0
- package/dist/esm/hooks/viz-scrollmap/useScrollmapZones.d.ts.map +1 -0
- package/dist/esm/hooks/viz-scrollmap/useZonePositions.d.ts +12 -0
- package/dist/esm/hooks/viz-scrollmap/useZonePositions.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 +1181 -210
- package/dist/esm/index.mjs +1181 -210
- package/dist/esm/stores/config.d.ts +5 -1
- package/dist/esm/stores/config.d.ts.map +1 -1
- package/dist/esm/stores/data.d.ts +5 -3
- package/dist/esm/stores/data.d.ts.map +1 -1
- package/dist/esm/stores/index.d.ts +2 -0
- 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 +4 -0
- package/dist/esm/stores/mode-live.d.ts.map +1 -1
- package/dist/esm/stores/mode-single.d.ts +9 -0
- package/dist/esm/stores/mode-single.d.ts.map +1 -0
- package/dist/esm/stores/viz-scrollmap.d.ts +11 -0
- package/dist/esm/stores/viz-scrollmap.d.ts.map +1 -0
- package/dist/esm/stores/viz.d.ts +0 -4
- package/dist/esm/stores/viz.d.ts.map +1 -1
- package/dist/esm/types/clarity.d.ts +5 -0
- package/dist/esm/types/clarity.d.ts.map +1 -1
- package/dist/esm/types/heatmap-info.d.ts +11 -0
- package/dist/esm/types/heatmap-info.d.ts.map +1 -0
- package/dist/esm/types/heatmap.d.ts +13 -0
- package/dist/esm/types/heatmap.d.ts.map +1 -1
- package/dist/esm/types/iframe-helper.d.ts +20 -0
- package/dist/esm/types/iframe-helper.d.ts.map +1 -0
- package/dist/esm/types/index.d.ts +4 -1
- package/dist/esm/types/index.d.ts.map +1 -1
- package/dist/esm/types/viz-canvas.d.ts +23 -0
- package/dist/esm/types/viz-canvas.d.ts.map +1 -0
- package/dist/esm/types/viz-element.d.ts +0 -6
- package/dist/esm/types/viz-element.d.ts.map +1 -1
- package/dist/esm/types/viz-scrollmap.d.ts +27 -0
- package/dist/esm/types/viz-scrollmap.d.ts.map +1 -0
- package/dist/umd/components/Layout/HeatmapLayout.d.ts +3 -2
- package/dist/umd/components/Layout/HeatmapLayout.d.ts.map +1 -1
- package/dist/umd/components/VizDom/VizDomRenderer.d.ts.map +1 -1
- 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/HeatmapExample.d.ts +2 -0
- package/dist/umd/components/VizElement/HeatmapExample.d.ts.map +1 -0
- package/dist/umd/components/VizElement/VizElements.d.ts.map +1 -1
- 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/components/VizScrollmap/AverageFoldLine.d.ts +8 -0
- package/dist/umd/components/VizScrollmap/AverageFoldLine.d.ts.map +1 -0
- package/dist/umd/components/VizScrollmap/HoverZones.d.ts +10 -0
- package/dist/umd/components/VizScrollmap/HoverZones.d.ts.map +1 -0
- package/dist/umd/components/VizScrollmap/MetricRow.d.ts +1 -0
- package/dist/umd/components/VizScrollmap/MetricRow.d.ts.map +1 -0
- package/dist/umd/components/VizScrollmap/ScrollMapMinimap.d.ts +8 -0
- package/dist/umd/components/VizScrollmap/ScrollMapMinimap.d.ts.map +1 -0
- package/dist/umd/components/VizScrollmap/ScrollMapOverlay.d.ts +7 -0
- package/dist/umd/components/VizScrollmap/ScrollMapOverlay.d.ts.map +1 -0
- package/dist/umd/components/VizScrollmap/ScrollZoneHoverArea.d.ts +14 -0
- package/dist/umd/components/VizScrollmap/ScrollZoneHoverArea.d.ts.map +1 -0
- package/dist/umd/components/VizScrollmap/ScrollZoneTooltip.d.ts +10 -0
- package/dist/umd/components/VizScrollmap/ScrollZoneTooltip.d.ts.map +1 -0
- package/dist/umd/components/VizScrollmap/ScrollmapMarker.d.ts +7 -0
- package/dist/umd/components/VizScrollmap/ScrollmapMarker.d.ts.map +1 -0
- package/dist/umd/components/VizScrollmap/VizScrollMap.d.ts +7 -0
- package/dist/umd/components/VizScrollmap/VizScrollMap.d.ts.map +1 -0
- package/dist/umd/components/VizScrollmap/index.d.ts +2 -0
- package/dist/umd/components/VizScrollmap/index.d.ts.map +1 -0
- package/dist/umd/components/VizScrollmapV2/ScrollmapOverlayV2.d.ts +5 -0
- package/dist/umd/components/VizScrollmapV2/ScrollmapOverlayV2.d.ts.map +1 -0
- package/dist/umd/components/VizScrollmapV2/index.d.ts +2 -0
- package/dist/umd/components/VizScrollmapV2/index.d.ts.map +1 -0
- package/dist/umd/components/VizScrollmapV2/scrollmap.types.d.ts +18 -0
- package/dist/umd/components/VizScrollmapV2/scrollmap.types.d.ts.map +1 -0
- package/dist/umd/components/VizScrollmapV2/useScrollmapOverlay.d.ts +16 -0
- package/dist/umd/components/VizScrollmapV2/useScrollmapOverlay.d.ts.map +1 -0
- package/dist/umd/configs/style.d.ts +2 -0
- 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/iframe-helper/fixer.d.ts +18 -0
- package/dist/umd/helpers/iframe-helper/fixer.d.ts.map +1 -0
- package/dist/umd/helpers/iframe-helper/index.d.ts +2 -0
- package/dist/umd/helpers/iframe-helper/index.d.ts.map +1 -0
- package/dist/umd/helpers/iframe-helper/init.d.ts +5 -0
- package/dist/umd/helpers/iframe-helper/init.d.ts.map +1 -0
- package/dist/umd/helpers/iframe-helper/navigation-blocker-v2.d.ts +28 -0
- package/dist/umd/helpers/iframe-helper/navigation-blocker-v2.d.ts.map +1 -0
- package/dist/umd/helpers/iframe-helper/navigation-blocker.d.ts +20 -0
- package/dist/umd/helpers/iframe-helper/navigation-blocker.d.ts.map +1 -0
- package/dist/umd/helpers/iframe-helper/style-replacer.d.ts +25 -0
- package/dist/umd/helpers/iframe-helper/style-replacer.d.ts.map +1 -0
- package/dist/umd/helpers/index.d.ts +2 -2
- package/dist/umd/helpers/index.d.ts.map +1 -1
- package/dist/umd/helpers/viz-canvas/area-clustering.d.ts +44 -0
- package/dist/umd/helpers/viz-canvas/area-clustering.d.ts.map +1 -0
- package/dist/umd/helpers/viz-canvas/area-overlay-manager-v2.d.ts +17 -0
- package/dist/umd/helpers/viz-canvas/area-overlay-manager-v2.d.ts.map +1 -0
- package/dist/umd/helpers/viz-canvas/area-overlay-manager.d.ts +51 -0
- package/dist/umd/helpers/viz-canvas/area-overlay-manager.d.ts.map +1 -0
- package/dist/umd/helpers/viz-canvas/hierarchical-area-clustering.d.ts +73 -0
- package/dist/umd/helpers/viz-canvas/hierarchical-area-clustering.d.ts.map +1 -0
- package/dist/umd/helpers/viz-canvas/index.d.ts +3 -0
- package/dist/umd/helpers/viz-canvas/index.d.ts.map +1 -0
- package/dist/umd/hooks/index.d.ts +2 -1
- 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 +7 -2
- package/dist/umd/hooks/register/useRegisterHeatmap.d.ts.map +1 -1
- package/dist/umd/hooks/viz-area/useAreaHeatmap.d.ts +59 -0
- package/dist/umd/hooks/viz-area/useAreaHeatmap.d.ts.map +1 -0
- package/dist/umd/hooks/viz-area/useAreaHeatmapManager.d.ts +77 -0
- package/dist/umd/hooks/viz-area/useAreaHeatmapManager.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/useAreamap.d.ts +14 -0
- package/dist/umd/hooks/viz-canvas/useAreamap.d.ts.map +1 -0
- package/dist/umd/hooks/viz-canvas/useClickmap.d.ts +3 -1
- package/dist/umd/hooks/viz-canvas/useClickmap.d.ts.map +1 -1
- package/dist/umd/hooks/viz-canvas/useHeatmapCanvas.d.ts +4 -0
- package/dist/umd/hooks/viz-canvas/useHeatmapCanvas.d.ts.map +1 -0
- package/dist/umd/hooks/viz-canvas/useScrollmap.d.ts +3 -1
- package/dist/umd/hooks/viz-canvas/useScrollmap.d.ts.map +1 -1
- package/dist/umd/hooks/{vix-elements → viz-elements}/index.d.ts.map +1 -1
- package/dist/umd/hooks/{vix-elements → viz-elements}/useClickedElement.d.ts.map +1 -1
- package/dist/umd/hooks/{vix-elements → viz-elements}/useElementCalloutVisible.d.ts.map +1 -1
- package/dist/umd/hooks/{vix-elements → viz-elements}/useHeatmapEffects.d.ts.map +1 -1
- package/dist/umd/hooks/{vix-elements → viz-elements}/useHeatmapElementPosition.d.ts.map +1 -1
- package/dist/umd/hooks/viz-elements/useHeatmapMouseHandler.d.ts +34 -0
- package/dist/umd/hooks/viz-elements/useHeatmapMouseHandler.d.ts.map +1 -0
- package/dist/umd/hooks/{vix-elements → viz-elements}/useHoveredElement.d.ts +4 -0
- package/dist/umd/hooks/viz-elements/useHoveredElement.d.ts.map +1 -0
- package/dist/umd/hooks/viz-live/index.d.ts +1 -1
- package/dist/{esm/hooks/viz-live/useIframeMessage.d.ts → umd/hooks/viz-live/useVizLiveIframeMsg.d.ts} +2 -10
- package/dist/umd/hooks/viz-live/useVizLiveIframeMsg.d.ts.map +1 -0
- package/dist/umd/hooks/viz-live/useVizLiveRender.d.ts +4 -0
- package/dist/umd/hooks/viz-live/useVizLiveRender.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/useObserveIframeHeight.d.ts +10 -0
- package/dist/umd/hooks/viz-scale/useObserveIframeHeight.d.ts.map +1 -0
- package/dist/umd/hooks/viz-scrollmap/index.d.ts +3 -0
- package/dist/umd/hooks/viz-scrollmap/index.d.ts.map +1 -0
- package/dist/umd/hooks/viz-scrollmap/useScrollmapZones.d.ts +29 -0
- package/dist/umd/hooks/viz-scrollmap/useScrollmapZones.d.ts.map +1 -0
- package/dist/umd/hooks/viz-scrollmap/useZonePositions.d.ts +12 -0
- package/dist/umd/hooks/viz-scrollmap/useZonePositions.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 +5 -1
- package/dist/umd/stores/config.d.ts.map +1 -1
- package/dist/umd/stores/data.d.ts +5 -3
- package/dist/umd/stores/data.d.ts.map +1 -1
- package/dist/umd/stores/index.d.ts +2 -0
- 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 +4 -0
- package/dist/umd/stores/mode-live.d.ts.map +1 -1
- package/dist/umd/stores/mode-single.d.ts +9 -0
- package/dist/umd/stores/mode-single.d.ts.map +1 -0
- package/dist/umd/stores/viz-scrollmap.d.ts +11 -0
- package/dist/umd/stores/viz-scrollmap.d.ts.map +1 -0
- package/dist/umd/stores/viz.d.ts +0 -4
- package/dist/umd/stores/viz.d.ts.map +1 -1
- package/dist/umd/types/clarity.d.ts +5 -0
- package/dist/umd/types/clarity.d.ts.map +1 -1
- package/dist/umd/types/heatmap-info.d.ts +11 -0
- package/dist/umd/types/heatmap-info.d.ts.map +1 -0
- package/dist/umd/types/heatmap.d.ts +13 -0
- package/dist/umd/types/heatmap.d.ts.map +1 -1
- package/dist/umd/types/iframe-helper.d.ts +20 -0
- package/dist/umd/types/iframe-helper.d.ts.map +1 -0
- package/dist/umd/types/index.d.ts +4 -1
- package/dist/umd/types/index.d.ts.map +1 -1
- package/dist/umd/types/viz-canvas.d.ts +23 -0
- package/dist/umd/types/viz-canvas.d.ts.map +1 -0
- package/dist/umd/types/viz-element.d.ts +0 -6
- package/dist/umd/types/viz-element.d.ts.map +1 -1
- package/dist/umd/types/viz-scrollmap.d.ts +27 -0
- package/dist/umd/types/viz-scrollmap.d.ts.map +1 -0
- package/package.json +14 -11
- package/dist/esm/components/Layout/ContentHeader.d.ts +0 -4
- package/dist/esm/components/Layout/ContentHeader.d.ts.map +0 -1
- package/dist/esm/components/Layout/VizMode.d.ts +0 -2
- package/dist/esm/components/Layout/VizMode.d.ts.map +0 -1
- package/dist/esm/components/Test.d.ts +0 -121
- package/dist/esm/components/Test.d.ts.map +0 -1
- package/dist/esm/components/VizDom/VizDomContainer.d.ts +0 -6
- package/dist/esm/components/VizDom/VizDomContainer.d.ts.map +0 -1
- package/dist/esm/components/VizElement/ClickedElementOverlay.d.ts +0 -17
- package/dist/esm/components/VizElement/ClickedElementOverlay.d.ts.map +0 -1
- package/dist/esm/components/VizElement/HoveredElementOverlay.d.ts +0 -12
- package/dist/esm/components/VizElement/HoveredElementOverlay.d.ts.map +0 -1
- package/dist/esm/components/VizElement/MissingElementMessage.d.ts +0 -7
- package/dist/esm/components/VizElement/MissingElementMessage.d.ts.map +0 -1
- package/dist/esm/components/VizElement/temp/ClarityVisualizer.d.ts +0 -150
- package/dist/esm/components/VizElement/temp/ClarityVisualizer.d.ts.map +0 -1
- package/dist/esm/components/VizElement/temp/VizElementRank.d.ts +0 -74
- package/dist/esm/components/VizElement/temp/VizElementRank.d.ts.map +0 -1
- package/dist/esm/components/VizLive/VizLive.d.ts +0 -2
- package/dist/esm/components/VizLive/VizLive.d.ts.map +0 -1
- package/dist/esm/helpers/viewport-fixer.d.ts +0 -13
- package/dist/esm/helpers/viewport-fixer.d.ts.map +0 -1
- package/dist/esm/helpers/viewport-replacer.d.ts +0 -26
- package/dist/esm/helpers/viewport-replacer.d.ts.map +0 -1
- package/dist/esm/hooks/vix-elements/useHoveredElement.d.ts.map +0 -1
- package/dist/esm/hooks/viz-canvas/useHeatmapVizCanvas.d.ts +0 -2
- package/dist/esm/hooks/viz-canvas/useHeatmapVizCanvas.d.ts.map +0 -1
- package/dist/esm/hooks/viz-live/useIframeMessage.d.ts.map +0 -1
- package/dist/esm/hooks/viz-scale/useIframeHeight.d.ts +0 -10
- package/dist/esm/hooks/viz-scale/useIframeHeight.d.ts.map +0 -1
- package/dist/esm/types/viewport-fixer.d.ts +0 -31
- package/dist/esm/types/viewport-fixer.d.ts.map +0 -1
- package/dist/umd/components/Layout/ContentHeader.d.ts +0 -4
- package/dist/umd/components/Layout/ContentHeader.d.ts.map +0 -1
- package/dist/umd/components/Test.d.ts +0 -121
- package/dist/umd/components/Test.d.ts.map +0 -1
- package/dist/umd/components/VizDom/VizDomContainer.d.ts +0 -2
- package/dist/umd/components/VizDom/VizDomContainer.d.ts.map +0 -1
- package/dist/umd/components/VizElement/ClickedElementOverlay.d.ts +0 -17
- package/dist/umd/components/VizElement/ClickedElementOverlay.d.ts.map +0 -1
- package/dist/umd/components/VizElement/HoveredElementOverlay.d.ts +0 -12
- package/dist/umd/components/VizElement/HoveredElementOverlay.d.ts.map +0 -1
- package/dist/umd/components/VizElement/MissingElementMessage.d.ts +0 -7
- package/dist/umd/components/VizElement/MissingElementMessage.d.ts.map +0 -1
- package/dist/umd/components/VizElement/temp/ClarityVisualizer.d.ts +0 -150
- package/dist/umd/components/VizElement/temp/ClarityVisualizer.d.ts.map +0 -1
- package/dist/umd/components/VizElement/temp/VizElementRank.d.ts +0 -74
- package/dist/umd/components/VizElement/temp/VizElementRank.d.ts.map +0 -1
- package/dist/umd/helpers/viewport-fixer.d.ts +0 -13
- package/dist/umd/helpers/viewport-fixer.d.ts.map +0 -1
- package/dist/umd/helpers/viewport-replacer.d.ts +0 -26
- package/dist/umd/helpers/viewport-replacer.d.ts.map +0 -1
- package/dist/umd/hooks/vix-elements/useHoveredElement.d.ts.map +0 -1
- package/dist/umd/hooks/viz-canvas/useHeatmapVizCanvas.d.ts +0 -2
- package/dist/umd/hooks/viz-canvas/useHeatmapVizCanvas.d.ts.map +0 -1
- package/dist/umd/hooks/viz-live/useIframeMessage.d.ts.map +0 -1
- package/dist/umd/hooks/viz-scale/useIframeHeight.d.ts +0 -10
- package/dist/umd/hooks/viz-scale/useIframeHeight.d.ts.map +0 -1
- package/dist/umd/types/viewport-fixer.d.ts +0 -31
- package/dist/umd/types/viewport-fixer.d.ts.map +0 -1
- package/src/components/GraphView.tsx +0 -58
- package/src/components/Layout/ContentMetricBar.tsx +0 -23
- package/src/components/Layout/ContentToolbar.tsx +0 -22
- package/src/components/Layout/ContentTopBar.tsx +0 -24
- package/src/components/Layout/ContentVizByMode.tsx +0 -14
- package/src/components/Layout/HeatmapLayout.tsx +0 -60
- package/src/components/Layout/LeftSidebar.tsx +0 -44
- package/src/components/Layout/WrapperLayout.tsx +0 -12
- package/src/components/Layout/WrapperPreview.tsx +0 -24
- package/src/components/Layout/index.ts +0 -1
- package/src/components/VizDom/ReplayControls.tsx +0 -48
- package/src/components/VizDom/VizContainer.tsx +0 -40
- package/src/components/VizDom/VizDomHeatmap.tsx +0 -28
- package/src/components/VizDom/VizDomRenderer.tsx +0 -82
- package/src/components/VizDom/VizLoading.tsx +0 -8
- package/src/components/VizDom/WrapperVisual.tsx +0 -73
- package/src/components/VizDom/index.ts +0 -5
- package/src/components/VizElement/DefaultRankBadges.tsx +0 -36
- package/src/components/VizElement/ElementCallout.tsx +0 -82
- package/src/components/VizElement/ElementMissing.tsx +0 -35
- package/src/components/VizElement/ElementOverlay.tsx +0 -66
- package/src/components/VizElement/HeatmapElements.tsx +0 -127
- package/src/components/VizElement/HeatmapExample.tsx +0 -70
- package/src/components/VizElement/RankBadge.tsx +0 -25
- package/src/components/VizElement/VizElements.tsx +0 -57
- package/src/components/VizElement/index.ts +0 -1
- package/src/components/VizLive/VizLiveHeatmap.tsx +0 -27
- package/src/components/VizLive/VizLiveRenderer.tsx +0 -47
- package/src/components/VizLive/index.ts +0 -1
- package/src/components/VizScrollmap/AverageFoldLine.tsx +0 -57
- package/src/components/VizScrollmap/HoverZones.tsx +0 -58
- package/src/components/VizScrollmap/MetricRow.tsx +0 -0
- package/src/components/VizScrollmap/ScrollMapMinimap.tsx +0 -64
- package/src/components/VizScrollmap/ScrollMapOverlay.tsx +0 -79
- package/src/components/VizScrollmap/ScrollZoneHoverArea.tsx +0 -35
- package/src/components/VizScrollmap/ScrollZoneTooltip.tsx +0 -146
- package/src/components/VizScrollmap/ScrollmapMarker.tsx +0 -106
- package/src/components/VizScrollmap/VizScrollMap.tsx +0 -36
- package/src/components/VizScrollmapV2/ScrollmapOverlay.css +0 -94
- package/src/components/VizScrollmapV2/ScrollmapOverlayV2.tsx +0 -130
- package/src/components/VizScrollmapV2/scrollmap.types.ts +0 -21
- package/src/components/VizScrollmapV2/useScrollmapOverlay.ts +0 -187
- package/src/components/index.tsx +0 -2
- package/src/configs/iframe.ts +0 -15
- package/src/configs/index.ts +0 -2
- package/src/configs/style.ts +0 -21
- package/src/constants/index.ts +0 -4
- package/src/global.d.ts +0 -5
- package/src/helpers/elm-callout.ts +0 -347
- package/src/helpers/elm-getter.ts +0 -70
- package/src/helpers/iframe-helper/fixer.ts +0 -100
- package/src/helpers/iframe-helper/index.ts +0 -1
- package/src/helpers/iframe-helper/init.ts +0 -56
- package/src/helpers/iframe-helper/navigation-blocker-v2.ts +0 -371
- package/src/helpers/iframe-helper/navigation-blocker.ts +0 -367
- package/src/helpers/iframe-helper/style-replacer.ts +0 -231
- package/src/helpers/iframe.ts +0 -42
- package/src/helpers/index.ts +0 -8
- package/src/helpers/viz-canvas/area-clustering.ts +0 -234
- package/src/helpers/viz-canvas/area-overlay-manager-v2.ts +0 -176
- package/src/helpers/viz-canvas/area-overlay-manager.ts +0 -273
- package/src/helpers/viz-canvas/hierarchical-area-clustering.ts +0 -420
- package/src/helpers/viz-elements.ts +0 -43
- package/src/hooks/index.ts +0 -8
- package/src/hooks/register/index.ts +0 -4
- package/src/hooks/register/useRegisterConfig.ts +0 -17
- package/src/hooks/register/useRegisterControl.ts +0 -13
- package/src/hooks/register/useRegisterData.ts +0 -36
- package/src/hooks/register/useRegisterHeatmap.ts +0 -38
- package/src/hooks/viz-area/useAreaHeatmap.ts +0 -336
- package/src/hooks/viz-area/useAreaHeatmapManager.ts +0 -692
- package/src/hooks/viz-canvas/index.ts +0 -1
- package/src/hooks/viz-canvas/useAreamap.ts +0 -162
- package/src/hooks/viz-canvas/useClickmap.ts +0 -24
- package/src/hooks/viz-canvas/useHeatmapCanvas.ts +0 -27
- package/src/hooks/viz-canvas/useScrollmap.ts +0 -22
- package/src/hooks/viz-elements/index.ts +0 -5
- package/src/hooks/viz-elements/useClickedElement.ts +0 -86
- package/src/hooks/viz-elements/useElementCalloutVisible.ts +0 -45
- package/src/hooks/viz-elements/useHeatmapEffects.ts +0 -30
- package/src/hooks/viz-elements/useHeatmapElementPosition.ts +0 -60
- package/src/hooks/viz-elements/useHeatmapMouseHandler.ts +0 -255
- package/src/hooks/viz-elements/useHoveredElement.ts +0 -170
- package/src/hooks/viz-live/index.ts +0 -1
- package/src/hooks/viz-live/useVizLiveIframeMsg.ts +0 -88
- package/src/hooks/viz-live/useVizLiveRender.ts +0 -67
- package/src/hooks/viz-render/index.ts +0 -1
- package/src/hooks/viz-render/useHeatmapRender.ts +0 -71
- package/src/hooks/viz-render/useHeatmapVizRender.ts +0 -20
- package/src/hooks/viz-render/useReplayRender.ts +0 -160
- package/src/hooks/viz-scale/index.ts +0 -2
- package/src/hooks/viz-scale/useContainerDimensions.ts +0 -48
- package/src/hooks/viz-scale/useContentDimensions.ts +0 -25
- package/src/hooks/viz-scale/useHeatmapScale.ts +0 -52
- package/src/hooks/viz-scale/useObserveIframeHeight.ts +0 -162
- package/src/hooks/viz-scale/useScaleCalculation.ts +0 -31
- package/src/hooks/viz-scale/useScrollSync.ts +0 -36
- package/src/hooks/viz-scale/useWrapperRefHeight.ts +0 -91
- package/src/hooks/viz-scrollmap/useScrollmapZones.ts +0 -165
- package/src/hooks/viz-scrollmap/useZonePositions.ts +0 -38
- package/src/index.ts +0 -10
- package/src/stores/comp.ts +0 -31
- package/src/stores/config.ts +0 -37
- package/src/stores/data.ts +0 -30
- package/src/stores/index.ts +0 -10
- package/src/stores/interaction.ts +0 -32
- package/src/stores/mode-live.ts +0 -38
- package/src/stores/mode-single.ts +0 -18
- package/src/stores/viz-scrollmap.ts +0 -22
- package/src/stores/viz.ts +0 -17
- package/src/styles/base.css +0 -1
- package/src/styles/style.css +0 -137
- package/src/types/clarity.ts +0 -45
- package/src/types/control.ts +0 -10
- package/src/types/elm-callout.ts +0 -9
- package/src/types/heatmap-info.ts +0 -11
- package/src/types/heatmap.ts +0 -25
- package/src/types/iframe-helper.ts +0 -18
- package/src/types/index.ts +0 -12
- package/src/types/viz-canvas.ts +0 -20
- package/src/types/viz-element.ts +0 -34
- package/src/types/viz-scrollmap.ts +0 -28
- package/src/ui/BoxStack/BoxStack.tsx +0 -136
- package/src/ui/BoxStack/index.ts +0 -1
- package/src/ui/index.ts +0 -1
- package/src/utils/debounce.ts +0 -10
- package/src/utils/device.ts +0 -7
- package/src/utils/retry.ts +0 -20
- package/src/utils/sort.ts +0 -5
- /package/dist/esm/hooks/{vix-elements → viz-elements}/index.d.ts +0 -0
- /package/dist/esm/hooks/{vix-elements → viz-elements}/useClickedElement.d.ts +0 -0
- /package/dist/esm/hooks/{vix-elements → viz-elements}/useElementCalloutVisible.d.ts +0 -0
- /package/dist/esm/hooks/{vix-elements → viz-elements}/useHeatmapEffects.d.ts +0 -0
- /package/dist/esm/hooks/{vix-elements → viz-elements}/useHeatmapElementPosition.d.ts +0 -0
- /package/dist/umd/hooks/{vix-elements → viz-elements}/index.d.ts +0 -0
- /package/dist/umd/hooks/{vix-elements → viz-elements}/useClickedElement.d.ts +0 -0
- /package/dist/umd/hooks/{vix-elements → viz-elements}/useElementCalloutVisible.d.ts +0 -0
- /package/dist/umd/hooks/{vix-elements → viz-elements}/useHeatmapEffects.d.ts +0 -0
- /package/dist/umd/hooks/{vix-elements → viz-elements}/useHeatmapElementPosition.d.ts +0 -0
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import { useEffect, useRef } from 'react';
|
|
2
|
-
import { HeatmapData } from '../../hooks/viz-area/useAreaHeatmapManager';
|
|
3
|
-
export function HeatmapWithIframeExample() {
|
|
4
|
-
const containerRef = useRef<HTMLDivElement>(null);
|
|
5
|
-
const iframeRef = useRef<HTMLIFrameElement>(null);
|
|
6
|
-
|
|
7
|
-
// Dữ liệu mẫu
|
|
8
|
-
const heatmapData: HeatmapData = {
|
|
9
|
-
clickData: [
|
|
10
|
-
{
|
|
11
|
-
hash: 'main-button',
|
|
12
|
-
clicks: [1, 2, 3, 4, 5],
|
|
13
|
-
x: [100, 102, 98, 101, 99],
|
|
14
|
-
y: [50, 51, 49, 50, 52],
|
|
15
|
-
points: 15,
|
|
16
|
-
totalclicks: 150,
|
|
17
|
-
selector: '.main-button',
|
|
18
|
-
},
|
|
19
|
-
{
|
|
20
|
-
hash: 'iframe-button', // Element trong iframe
|
|
21
|
-
clicks: [1, 2, 3],
|
|
22
|
-
x: [200, 201, 199],
|
|
23
|
-
y: [30, 31, 29],
|
|
24
|
-
points: 8,
|
|
25
|
-
totalclicks: 80,
|
|
26
|
-
selector: '.iframe-button',
|
|
27
|
-
},
|
|
28
|
-
],
|
|
29
|
-
totalClicks: 230,
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
// Load nội dung vào iframe
|
|
33
|
-
useEffect(() => {
|
|
34
|
-
if (iframeRef.current && iframeRef.current.contentDocument) {
|
|
35
|
-
const iframeDoc = iframeRef.current.contentDocument;
|
|
36
|
-
iframeDoc.open();
|
|
37
|
-
iframeDoc.write(`
|
|
38
|
-
<!DOCTYPE html>
|
|
39
|
-
<html>
|
|
40
|
-
<head>
|
|
41
|
-
<style>
|
|
42
|
-
body {
|
|
43
|
-
font-family: Arial, sans-serif;
|
|
44
|
-
padding: 20px;
|
|
45
|
-
margin: 0;
|
|
46
|
-
}
|
|
47
|
-
.iframe-button {
|
|
48
|
-
padding: 15px 30px;
|
|
49
|
-
background: #0078D4;
|
|
50
|
-
color: white;
|
|
51
|
-
border: none;
|
|
52
|
-
border-radius: 4px;
|
|
53
|
-
cursor: pointer;
|
|
54
|
-
font-size: 16px;
|
|
55
|
-
}
|
|
56
|
-
</style>
|
|
57
|
-
</head>
|
|
58
|
-
<body>
|
|
59
|
-
<h2>Nội dung trong Iframe</h2>
|
|
60
|
-
<p>Đây là nội dung bên trong iframe</p>
|
|
61
|
-
<button class="iframe-button" data-clarity-hashalpha="iframe-button">
|
|
62
|
-
Button trong Iframe (80 clicks)
|
|
63
|
-
</button>
|
|
64
|
-
</body>
|
|
65
|
-
</html>
|
|
66
|
-
`);
|
|
67
|
-
iframeDoc.close();
|
|
68
|
-
}
|
|
69
|
-
}, []);
|
|
70
|
-
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import type { ElementRect } from '../../types';
|
|
2
|
-
|
|
3
|
-
import { calculateRankPosition } from '../../helpers/viz-elements';
|
|
4
|
-
|
|
5
|
-
interface RankBadgeProps {
|
|
6
|
-
index: number;
|
|
7
|
-
elementRect: ElementRect;
|
|
8
|
-
widthScale: number;
|
|
9
|
-
clickOnElement?: () => void;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export const RankBadge: React.FC<RankBadgeProps> = ({
|
|
13
|
-
index,
|
|
14
|
-
elementRect,
|
|
15
|
-
widthScale,
|
|
16
|
-
clickOnElement,
|
|
17
|
-
}) => {
|
|
18
|
-
const style = calculateRankPosition(elementRect, widthScale);
|
|
19
|
-
|
|
20
|
-
return (
|
|
21
|
-
<div className="gx-hm-rank-badge" style={style} onClick={clickOnElement}>
|
|
22
|
-
{index}
|
|
23
|
-
</div>
|
|
24
|
-
);
|
|
25
|
-
};
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import { useHeatmapConfigStore, useHeatmapDataStore, useHeatmapSingleStore } from '../../stores';
|
|
2
|
-
import { WebVisualizer } from '../../types';
|
|
3
|
-
import { HeatmapElements } from './HeatmapElements';
|
|
4
|
-
|
|
5
|
-
interface VizElementsProps {
|
|
6
|
-
iframeRef: React.RefObject<HTMLIFrameElement | null>;
|
|
7
|
-
visualRef: React.RefObject<HTMLDivElement | null>;
|
|
8
|
-
wrapperRef: React.RefObject<HTMLDivElement>;
|
|
9
|
-
}
|
|
10
|
-
export const VizElements: React.FC<VizElementsProps> = ({ iframeRef, visualRef, wrapperRef }) => {
|
|
11
|
-
const heatmapInfo = useHeatmapDataStore((state) => state.dataInfo);
|
|
12
|
-
const contentWidth = useHeatmapConfigStore((state) => state.width);
|
|
13
|
-
const vizRef = useHeatmapSingleStore((state) => state.vizRef);
|
|
14
|
-
|
|
15
|
-
const visualizer: WebVisualizer = {
|
|
16
|
-
get: (hash: string) => {
|
|
17
|
-
if (vizRef) {
|
|
18
|
-
return vizRef.get(hash);
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
const doc = iframeRef.current?.contentDocument;
|
|
22
|
-
if (!doc) return null;
|
|
23
|
-
|
|
24
|
-
const elmHashAlpha = doc.querySelector(`[data-clarity-hashalpha="${hash}"]`) as HTMLElement;
|
|
25
|
-
if (elmHashAlpha) {
|
|
26
|
-
return elmHashAlpha;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
const elmHash = doc.querySelector(`[data-clarity-hash="${hash}"]`) as HTMLElement;
|
|
30
|
-
if (elmHash) {
|
|
31
|
-
return elmHash;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
return null;
|
|
35
|
-
},
|
|
36
|
-
};
|
|
37
|
-
|
|
38
|
-
if (!iframeRef.current) return null;
|
|
39
|
-
|
|
40
|
-
return (
|
|
41
|
-
<HeatmapElements
|
|
42
|
-
visualizer={visualizer}
|
|
43
|
-
visualRef={visualRef as React.RefObject<HTMLDivElement>}
|
|
44
|
-
iframeRef={iframeRef as React.RefObject<HTMLIFrameElement>}
|
|
45
|
-
wrapperRef={wrapperRef as React.RefObject<HTMLElement>}
|
|
46
|
-
heatmapInfo={heatmapInfo}
|
|
47
|
-
isVisible={true}
|
|
48
|
-
iframeDimensions={{
|
|
49
|
-
width: contentWidth,
|
|
50
|
-
position: 'absolute',
|
|
51
|
-
top: 0,
|
|
52
|
-
left: 0,
|
|
53
|
-
// pointerEvents: 'none',
|
|
54
|
-
}}
|
|
55
|
-
/>
|
|
56
|
-
);
|
|
57
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './VizElements';
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { useEffect } from 'react';
|
|
2
|
-
import { useHeatmapControlStore, useHeatmapDataStore, useHeatmapLiveStore } from '../../stores';
|
|
3
|
-
import { VizContainer, VizLoading } from '../VizDom';
|
|
4
|
-
import { VizLiveRenderer } from './VizLiveRenderer';
|
|
5
|
-
|
|
6
|
-
export const VizLiveHeatmap: React.FC = () => {
|
|
7
|
-
const controls = useHeatmapControlStore((state) => state.controls);
|
|
8
|
-
const isRendering = useHeatmapDataStore((state) => state.isRendering);
|
|
9
|
-
const iframeHeight = useHeatmapLiveStore((state) => state.iframeHeight);
|
|
10
|
-
const wrapperHeight = useHeatmapLiveStore((state) => state.wrapperHeight);
|
|
11
|
-
const setWrapperHeight = useHeatmapLiveStore((state) => state.setWrapperHeight);
|
|
12
|
-
const reset = useHeatmapLiveStore((state) => state.reset);
|
|
13
|
-
|
|
14
|
-
useEffect(() => {
|
|
15
|
-
return () => {
|
|
16
|
-
reset();
|
|
17
|
-
};
|
|
18
|
-
}, [reset]);
|
|
19
|
-
|
|
20
|
-
if (isRendering) return controls.VizLoading ?? null;
|
|
21
|
-
return (
|
|
22
|
-
<VizContainer setWrapperHeight={setWrapperHeight}>
|
|
23
|
-
<VizLiveRenderer />
|
|
24
|
-
{(!iframeHeight || !wrapperHeight) && <VizLoading />}
|
|
25
|
-
</VizContainer>
|
|
26
|
-
);
|
|
27
|
-
};
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import { useRef } from 'react';
|
|
2
|
-
import { HEATMAP_IFRAME } from '../../configs';
|
|
3
|
-
import { useHeatmapScale } from '../../hooks';
|
|
4
|
-
import { useVizLiveRender } from '../../hooks/viz-live';
|
|
5
|
-
import { useHeatmapConfigStore, useHeatmapLiveStore } from '../../stores';
|
|
6
|
-
import { WrapperVisual } from '../VizDom';
|
|
7
|
-
|
|
8
|
-
export const VizLiveRenderer: React.FC = () => {
|
|
9
|
-
const contentWidth = useHeatmapConfigStore((state) => state.width);
|
|
10
|
-
const iframeHeight = useHeatmapLiveStore((state) => state.iframeHeight);
|
|
11
|
-
const setIframeHeight = useHeatmapLiveStore((state) => state.setIframeHeight);
|
|
12
|
-
const visualRef = useRef<HTMLDivElement>(null);
|
|
13
|
-
const wrapperRef = useRef<HTMLDivElement>(null);
|
|
14
|
-
|
|
15
|
-
const { iframeRef } = useVizLiveRender();
|
|
16
|
-
const { scaledHeight, handleScroll } = useHeatmapScale({
|
|
17
|
-
wrapperRef,
|
|
18
|
-
iframeRef,
|
|
19
|
-
visualRef,
|
|
20
|
-
iframeHeight,
|
|
21
|
-
setIframeHeight,
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
const onScroll = (e: React.UIEvent<HTMLDivElement>) => {
|
|
25
|
-
const scrollTop = e.currentTarget.scrollTop;
|
|
26
|
-
handleScroll(scrollTop);
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
return (
|
|
30
|
-
<WrapperVisual
|
|
31
|
-
visualRef={visualRef}
|
|
32
|
-
wrapperRef={wrapperRef}
|
|
33
|
-
scaledHeight={scaledHeight}
|
|
34
|
-
iframeHeight={iframeHeight}
|
|
35
|
-
onScroll={onScroll}
|
|
36
|
-
>
|
|
37
|
-
<iframe
|
|
38
|
-
ref={iframeRef}
|
|
39
|
-
{...HEATMAP_IFRAME}
|
|
40
|
-
width={contentWidth}
|
|
41
|
-
// height={iframeHeight}
|
|
42
|
-
scrolling="no"
|
|
43
|
-
sandbox="allow-scripts allow-same-origin"
|
|
44
|
-
/>
|
|
45
|
-
</WrapperVisual>
|
|
46
|
-
);
|
|
47
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './VizLiveHeatmap';
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { useZonePositions } from '../../hooks';
|
|
3
|
-
import { useHeatmapDataStore } from '../../stores';
|
|
4
|
-
|
|
5
|
-
interface AverageFoldLineProps {
|
|
6
|
-
iframeRef: React.RefObject<HTMLIFrameElement>;
|
|
7
|
-
wrapperRef: React.RefObject<HTMLElement>;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
export const AverageFoldLine: React.FC<AverageFoldLineProps> = ({ iframeRef, wrapperRef }) => {
|
|
11
|
-
const averageFold = useHeatmapDataStore((state) => state.dataInfo?.averageFold || 50);
|
|
12
|
-
|
|
13
|
-
const { getZonePosition } = useZonePositions({ iframeRef, wrapperRef });
|
|
14
|
-
|
|
15
|
-
const position = getZonePosition({
|
|
16
|
-
startY: averageFold,
|
|
17
|
-
endY: averageFold,
|
|
18
|
-
});
|
|
19
|
-
|
|
20
|
-
if (!position) return null;
|
|
21
|
-
|
|
22
|
-
return (
|
|
23
|
-
<div
|
|
24
|
-
style={{
|
|
25
|
-
position: 'absolute',
|
|
26
|
-
top: `${position.top}px`,
|
|
27
|
-
left: 0,
|
|
28
|
-
width: '100%',
|
|
29
|
-
height: '2px',
|
|
30
|
-
backgroundColor: '#0078D4',
|
|
31
|
-
pointerEvents: 'none',
|
|
32
|
-
zIndex: 2,
|
|
33
|
-
boxShadow: '0 0 4px rgba(0,120,212,0.5)',
|
|
34
|
-
display: 'flex',
|
|
35
|
-
alignItems: 'center',
|
|
36
|
-
}}
|
|
37
|
-
>
|
|
38
|
-
<div
|
|
39
|
-
style={{
|
|
40
|
-
position: 'absolute',
|
|
41
|
-
padding: '8px',
|
|
42
|
-
backgroundColor: 'rgba(0, 120, 212, 0.9)',
|
|
43
|
-
color: 'white',
|
|
44
|
-
fontSize: '16px',
|
|
45
|
-
fontWeight: 600,
|
|
46
|
-
borderRadius: '4px',
|
|
47
|
-
whiteSpace: 'nowrap',
|
|
48
|
-
left: '12px',
|
|
49
|
-
minWidth: '120px',
|
|
50
|
-
textAlign: 'center',
|
|
51
|
-
}}
|
|
52
|
-
>
|
|
53
|
-
Average fold - {averageFold.toFixed(0)}%
|
|
54
|
-
</div>
|
|
55
|
-
</div>
|
|
56
|
-
);
|
|
57
|
-
};
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import { useScrollmapZones } from '../../hooks';
|
|
2
|
-
import { useHeatmapDataStore } from '../../stores';
|
|
3
|
-
import { IScrollMapPosition } from '../../types';
|
|
4
|
-
import { ScrollMapMinimap } from './ScrollMapMinimap';
|
|
5
|
-
import { ScrollZoneTooltip } from './ScrollZoneTooltip';
|
|
6
|
-
|
|
7
|
-
interface HoverZonesProps {
|
|
8
|
-
wrapperRef: React.RefObject<HTMLElement>;
|
|
9
|
-
iframeRef: React.RefObject<HTMLIFrameElement>;
|
|
10
|
-
position?: IScrollMapPosition;
|
|
11
|
-
currentScrollPercent: number;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
export const HoverZones: React.FC<HoverZonesProps> = ({
|
|
15
|
-
iframeRef,
|
|
16
|
-
wrapperRef,
|
|
17
|
-
position,
|
|
18
|
-
currentScrollPercent,
|
|
19
|
-
}) => {
|
|
20
|
-
const scrollmap = useHeatmapDataStore((state) => state.scrollmap);
|
|
21
|
-
// const hoveredZone = useHeatmapVizScrollmapStore((state) => state.hoveredZone);
|
|
22
|
-
// const setHoveredZone = useHeatmapVizScrollmapStore((state) => state.setHoveredZone);
|
|
23
|
-
|
|
24
|
-
const { zones, isReady, maxUsers } = useScrollmapZones({
|
|
25
|
-
iframeRef,
|
|
26
|
-
wrapperRef,
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
if (!isReady || !zones.length) return null;
|
|
30
|
-
if (!position) return null;
|
|
31
|
-
|
|
32
|
-
return (
|
|
33
|
-
<>
|
|
34
|
-
{/* {zones.map((zone) => {
|
|
35
|
-
const position = getZonePosition(zone);
|
|
36
|
-
if (!position) return null;
|
|
37
|
-
|
|
38
|
-
return (
|
|
39
|
-
<ScrollZoneHoverArea
|
|
40
|
-
key={zone.id}
|
|
41
|
-
zone={zone}
|
|
42
|
-
position={position}
|
|
43
|
-
isHovered={hoveredZone?.id === zone.id}
|
|
44
|
-
onHoverChange={setHoveredZone}
|
|
45
|
-
/>
|
|
46
|
-
);
|
|
47
|
-
})} */}
|
|
48
|
-
|
|
49
|
-
<ScrollZoneTooltip
|
|
50
|
-
position={position}
|
|
51
|
-
currentScrollPercent={currentScrollPercent}
|
|
52
|
-
scrollmap={scrollmap || []}
|
|
53
|
-
/>
|
|
54
|
-
|
|
55
|
-
<ScrollMapMinimap zones={zones} maxUsers={maxUsers} />
|
|
56
|
-
</>
|
|
57
|
-
);
|
|
58
|
-
};
|
|
File without changes
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import { getScrollGradientColor } from '../../hooks';
|
|
2
|
-
import { useHeatmapConfigStore, useHeatmapVizScrollmapStore } from '../../stores';
|
|
3
|
-
import { IScrollType, IScrollZone } from '../../types';
|
|
4
|
-
|
|
5
|
-
interface ScrollMapMinimapProps {
|
|
6
|
-
zones: IScrollZone[];
|
|
7
|
-
maxUsers: number;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
export const ScrollMapMinimap: React.FC<ScrollMapMinimapProps> = ({ zones, maxUsers }) => {
|
|
11
|
-
const showMinimap = useHeatmapVizScrollmapStore((state) => state.showMinimap);
|
|
12
|
-
const scrollType = useHeatmapConfigStore((state) => state.scrollType);
|
|
13
|
-
const isScrollType = [IScrollType.Attention].includes(scrollType);
|
|
14
|
-
|
|
15
|
-
if (!showMinimap || !isScrollType) return null;
|
|
16
|
-
|
|
17
|
-
return (
|
|
18
|
-
<div
|
|
19
|
-
style={{
|
|
20
|
-
position: 'fixed',
|
|
21
|
-
left: '20px',
|
|
22
|
-
top: '50%',
|
|
23
|
-
transform: 'translateY(-50%)',
|
|
24
|
-
width: '60px',
|
|
25
|
-
height: '400px',
|
|
26
|
-
backgroundColor: 'white',
|
|
27
|
-
borderRadius: '8px',
|
|
28
|
-
boxShadow: '0 4px 16px rgba(0,0,0,0.15)',
|
|
29
|
-
zIndex: 10002,
|
|
30
|
-
padding: '8px',
|
|
31
|
-
boxSizing: 'border-box',
|
|
32
|
-
}}
|
|
33
|
-
>
|
|
34
|
-
<div
|
|
35
|
-
style={{
|
|
36
|
-
width: '100%',
|
|
37
|
-
height: '100%',
|
|
38
|
-
borderRadius: '4px',
|
|
39
|
-
overflow: 'hidden',
|
|
40
|
-
display: 'flex',
|
|
41
|
-
flexDirection: 'column',
|
|
42
|
-
}}
|
|
43
|
-
>
|
|
44
|
-
{zones.map((zone) => {
|
|
45
|
-
const normalized = maxUsers > 0 ? zone.percUsers / maxUsers : 0;
|
|
46
|
-
const color = getScrollGradientColor(normalized);
|
|
47
|
-
|
|
48
|
-
return (
|
|
49
|
-
<div
|
|
50
|
-
key={zone.id}
|
|
51
|
-
title={`${zone.label}: ${zone.percUsers.toFixed(2)}%`}
|
|
52
|
-
style={{
|
|
53
|
-
width: '100%',
|
|
54
|
-
flex: `${zone.endY - zone.startY}`,
|
|
55
|
-
backgroundColor: color,
|
|
56
|
-
borderBottom: '1px solid rgba(255,255,255,0.2)',
|
|
57
|
-
}}
|
|
58
|
-
/>
|
|
59
|
-
);
|
|
60
|
-
})}
|
|
61
|
-
</div>
|
|
62
|
-
</div>
|
|
63
|
-
);
|
|
64
|
-
};
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import { useCallback, useRef, useState } from 'react';
|
|
2
|
-
import { convertViewportToIframeCoords } from '../../hooks';
|
|
3
|
-
import { useHeatmapSingleStore, useHeatmapVizStore } from '../../stores';
|
|
4
|
-
import { IScrollMapPosition } from '../../types';
|
|
5
|
-
import { HoverZones } from './HoverZones';
|
|
6
|
-
|
|
7
|
-
interface ScrollMapOverlayProps {
|
|
8
|
-
wrapperRef: React.RefObject<HTMLElement>;
|
|
9
|
-
iframeRef: React.RefObject<HTMLIFrameElement>;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export const ScrollMapOverlay: React.FC<ScrollMapOverlayProps> = ({ wrapperRef, iframeRef }) => {
|
|
13
|
-
const overlayRef = useRef<HTMLDivElement>(null);
|
|
14
|
-
|
|
15
|
-
const [position, setPosition] = useState<IScrollMapPosition>();
|
|
16
|
-
const [currentScrollPercent, setCurrentScrollPercent] = useState<number>(0);
|
|
17
|
-
|
|
18
|
-
const widthScale = useHeatmapVizStore((state) => state.scale);
|
|
19
|
-
const iframeHeight = useHeatmapSingleStore((state) => state.iframeHeight);
|
|
20
|
-
|
|
21
|
-
const handleMouseMove = (event: React.MouseEvent<HTMLDivElement>) => {
|
|
22
|
-
if (!iframeRef.current || !wrapperRef.current) return;
|
|
23
|
-
|
|
24
|
-
const iframe = iframeRef.current;
|
|
25
|
-
const iframeRect = iframe.getBoundingClientRect();
|
|
26
|
-
const { x, y } = convertViewportToIframeCoords(
|
|
27
|
-
event.clientX,
|
|
28
|
-
event.clientY,
|
|
29
|
-
iframeRect,
|
|
30
|
-
widthScale,
|
|
31
|
-
);
|
|
32
|
-
|
|
33
|
-
const wrapperEl = wrapperRef.current as HTMLElement;
|
|
34
|
-
const scrollOffset = (wrapperEl?.scrollTop || 0) / widthScale;
|
|
35
|
-
const actualY = y + scrollOffset;
|
|
36
|
-
const scrollPercent = Math.min(100, Math.max(0, (actualY / iframeHeight) * 100));
|
|
37
|
-
|
|
38
|
-
setCurrentScrollPercent(scrollPercent);
|
|
39
|
-
setPosition({ x, y });
|
|
40
|
-
};
|
|
41
|
-
|
|
42
|
-
const onMouseMove = useCallback(
|
|
43
|
-
(event: React.MouseEvent<HTMLDivElement>) => {
|
|
44
|
-
requestAnimationFrame(() => handleMouseMove(event));
|
|
45
|
-
},
|
|
46
|
-
[handleMouseMove],
|
|
47
|
-
);
|
|
48
|
-
|
|
49
|
-
const onMouseLeave = () => {
|
|
50
|
-
requestAnimationFrame(() => {
|
|
51
|
-
setCurrentScrollPercent(0);
|
|
52
|
-
setPosition(undefined);
|
|
53
|
-
});
|
|
54
|
-
};
|
|
55
|
-
|
|
56
|
-
return (
|
|
57
|
-
<div
|
|
58
|
-
ref={overlayRef}
|
|
59
|
-
id="gx-hm-scrollmap-overlay"
|
|
60
|
-
onMouseMove={onMouseMove}
|
|
61
|
-
onMouseLeave={onMouseLeave}
|
|
62
|
-
style={{
|
|
63
|
-
position: 'absolute',
|
|
64
|
-
top: 0,
|
|
65
|
-
left: 0,
|
|
66
|
-
width: '100%',
|
|
67
|
-
height: `${iframeHeight}px`,
|
|
68
|
-
zIndex: 3,
|
|
69
|
-
}}
|
|
70
|
-
>
|
|
71
|
-
<HoverZones
|
|
72
|
-
position={position}
|
|
73
|
-
currentScrollPercent={currentScrollPercent}
|
|
74
|
-
iframeRef={iframeRef}
|
|
75
|
-
wrapperRef={wrapperRef}
|
|
76
|
-
/>
|
|
77
|
-
</div>
|
|
78
|
-
);
|
|
79
|
-
};
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { IScrollZone } from '../../types';
|
|
3
|
-
|
|
4
|
-
interface ScrollZoneHoverAreaProps {
|
|
5
|
-
zone: IScrollZone;
|
|
6
|
-
position: { top: number; height: number };
|
|
7
|
-
isHovered: boolean;
|
|
8
|
-
onHoverChange: (zone: IScrollZone | null) => void;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export const ScrollZoneHoverArea: React.FC<ScrollZoneHoverAreaProps> = ({
|
|
12
|
-
zone,
|
|
13
|
-
position,
|
|
14
|
-
isHovered,
|
|
15
|
-
onHoverChange,
|
|
16
|
-
}) => {
|
|
17
|
-
return (
|
|
18
|
-
<div
|
|
19
|
-
style={{
|
|
20
|
-
position: 'absolute',
|
|
21
|
-
top: `${position.top}px`,
|
|
22
|
-
left: 0,
|
|
23
|
-
width: '100%',
|
|
24
|
-
height: `${position.height}px`,
|
|
25
|
-
pointerEvents: 'auto',
|
|
26
|
-
cursor: 'pointer',
|
|
27
|
-
backgroundColor: isHovered ? 'rgba(0, 120, 212, 0.1)' : 'transparent',
|
|
28
|
-
transition: 'background-color 0.2s ease',
|
|
29
|
-
borderBottom: '1px dashed rgba(0, 120, 212, 0.2)',
|
|
30
|
-
}}
|
|
31
|
-
onMouseEnter={() => onHoverChange(zone)}
|
|
32
|
-
onMouseLeave={() => onHoverChange(null)}
|
|
33
|
-
/>
|
|
34
|
-
);
|
|
35
|
-
};
|
|
@@ -1,146 +0,0 @@
|
|
|
1
|
-
import { useMemo, useRef } from 'react';
|
|
2
|
-
import { useHeatmapConfigStore } from '../../stores';
|
|
3
|
-
import { IScrollMapPosition, IScrollType, IScrollZone, ScrollMapPoint } from '../../types';
|
|
4
|
-
|
|
5
|
-
interface ScrollZoneTooltipProps {
|
|
6
|
-
zone?: IScrollZone;
|
|
7
|
-
position: IScrollMapPosition;
|
|
8
|
-
currentScrollPercent: number;
|
|
9
|
-
scrollmap: ScrollMapPoint[];
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export const ScrollZoneTooltip: React.FC<ScrollZoneTooltipProps> = ({
|
|
13
|
-
zone,
|
|
14
|
-
position,
|
|
15
|
-
currentScrollPercent,
|
|
16
|
-
scrollmap,
|
|
17
|
-
}) => {
|
|
18
|
-
const tooltipRef = useRef<HTMLDivElement>(null);
|
|
19
|
-
|
|
20
|
-
const currentData = useMemo(() => {
|
|
21
|
-
if (!scrollmap || scrollmap.length === 0) return null;
|
|
22
|
-
|
|
23
|
-
const roundedPercent = Math.floor(currentScrollPercent);
|
|
24
|
-
return scrollmap.find((d) => d.scrollReachY === roundedPercent) || null;
|
|
25
|
-
}, [scrollmap, currentScrollPercent]);
|
|
26
|
-
|
|
27
|
-
return (
|
|
28
|
-
<div
|
|
29
|
-
id="gx-hm-scrollmap-tooltip"
|
|
30
|
-
ref={tooltipRef}
|
|
31
|
-
style={{
|
|
32
|
-
position: 'fixed',
|
|
33
|
-
top: `${position.y}px`,
|
|
34
|
-
backgroundColor: 'black',
|
|
35
|
-
zIndex: 10001,
|
|
36
|
-
pointerEvents: 'none',
|
|
37
|
-
width: '100%',
|
|
38
|
-
height: '2px',
|
|
39
|
-
}}
|
|
40
|
-
>
|
|
41
|
-
<div
|
|
42
|
-
style={{
|
|
43
|
-
position: 'absolute',
|
|
44
|
-
left: '50%',
|
|
45
|
-
top: '-50%',
|
|
46
|
-
transform: 'translate(-50%, -50%)',
|
|
47
|
-
padding: '16px',
|
|
48
|
-
borderRadius: '8px',
|
|
49
|
-
boxShadow: '0 4px 16px rgba(0,0,0,0.15)',
|
|
50
|
-
fontSize: '14px',
|
|
51
|
-
width: 'fit-content',
|
|
52
|
-
backgroundColor: 'white',
|
|
53
|
-
minWidth: '230px',
|
|
54
|
-
display: 'flex',
|
|
55
|
-
gap: '8px',
|
|
56
|
-
alignItems: 'center',
|
|
57
|
-
}}
|
|
58
|
-
>
|
|
59
|
-
<p
|
|
60
|
-
style={{
|
|
61
|
-
fontWeight: 650,
|
|
62
|
-
fontSize: '20px',
|
|
63
|
-
lineHeight: '24px',
|
|
64
|
-
letterSpacing: '-0.2px',
|
|
65
|
-
verticalAlign: 'middle',
|
|
66
|
-
fontVariantNumeric: 'tabular-nums',
|
|
67
|
-
}}
|
|
68
|
-
>
|
|
69
|
-
{currentData?.percUsers?.toFixed(2)}%{' '}
|
|
70
|
-
</p>
|
|
71
|
-
<p style={{ fontWeight: 450 }}>user scrolled this far</p>
|
|
72
|
-
</div>
|
|
73
|
-
|
|
74
|
-
<TooltipByZone zone={zone} />
|
|
75
|
-
</div>
|
|
76
|
-
);
|
|
77
|
-
};
|
|
78
|
-
|
|
79
|
-
const TooltipByZone: React.FC<{ zone?: IScrollZone }> = ({ zone }) => {
|
|
80
|
-
const scrollType = useHeatmapConfigStore((state) => state.scrollType);
|
|
81
|
-
if (!zone) return null;
|
|
82
|
-
|
|
83
|
-
const contentMarkup = () => {
|
|
84
|
-
switch (scrollType) {
|
|
85
|
-
case IScrollType.Depth:
|
|
86
|
-
return <BasicTooltipContent zone={zone} />;
|
|
87
|
-
case IScrollType.Attention:
|
|
88
|
-
return <MetricsTooltipContent zone={zone} />;
|
|
89
|
-
default:
|
|
90
|
-
return <BasicTooltipContent zone={zone} />;
|
|
91
|
-
}
|
|
92
|
-
};
|
|
93
|
-
return (
|
|
94
|
-
<div style={{ paddingTop: '12px', borderTop: '1px solid #E5E7EB' }}>{contentMarkup()}</div>
|
|
95
|
-
);
|
|
96
|
-
};
|
|
97
|
-
|
|
98
|
-
const BasicTooltipContent: React.FC<{ zone?: IScrollZone }> = ({ zone }) => {
|
|
99
|
-
if (!zone) return null;
|
|
100
|
-
|
|
101
|
-
return (
|
|
102
|
-
<>
|
|
103
|
-
<div style={{ fontWeight: 600, marginBottom: '8px' }}>{zone.label}</div>
|
|
104
|
-
<div style={{ fontSize: '24px', fontWeight: 700, color: '#0078D4' }}>
|
|
105
|
-
{zone.percUsers.toFixed(2)}%
|
|
106
|
-
</div>
|
|
107
|
-
<div style={{ fontSize: '12px', color: '#605E5C', marginTop: '4px' }}>
|
|
108
|
-
of users reached this point
|
|
109
|
-
</div>
|
|
110
|
-
</>
|
|
111
|
-
);
|
|
112
|
-
};
|
|
113
|
-
|
|
114
|
-
const MetricsTooltipContent: React.FC<{ zone?: IScrollZone }> = ({ zone }) => {
|
|
115
|
-
if (!zone) return null;
|
|
116
|
-
|
|
117
|
-
return (
|
|
118
|
-
<>
|
|
119
|
-
<div style={{ fontWeight: 600, marginBottom: '8px' }}>{zone.label}</div>
|
|
120
|
-
<div style={{ fontSize: '20px', fontWeight: 700, marginBottom: '8px' }}>
|
|
121
|
-
{zone.percUsers.toFixed(2)}% users
|
|
122
|
-
</div>
|
|
123
|
-
|
|
124
|
-
{zone.metrics && (
|
|
125
|
-
<div style={{ display: 'grid', gap: '6px', fontSize: '13px' }}>
|
|
126
|
-
{zone.metrics.revenue !== undefined && (
|
|
127
|
-
<MetricRow label="Revenue" value={`$${zone.metrics.revenue.toFixed(2)}`} />
|
|
128
|
-
)}
|
|
129
|
-
{zone.metrics.conversionRate !== undefined && (
|
|
130
|
-
<MetricRow label="Conversion" value={`${zone.metrics.conversionRate.toFixed(2)}%`} />
|
|
131
|
-
)}
|
|
132
|
-
{zone.metrics.orders !== undefined && (
|
|
133
|
-
<MetricRow label="Orders" value={zone.metrics.orders.toString()} />
|
|
134
|
-
)}
|
|
135
|
-
</div>
|
|
136
|
-
)}
|
|
137
|
-
</>
|
|
138
|
-
);
|
|
139
|
-
};
|
|
140
|
-
|
|
141
|
-
const MetricRow: React.FC<{ label: string; value: string }> = ({ label, value }) => (
|
|
142
|
-
<div style={{ display: 'flex', justifyContent: 'space-between' }}>
|
|
143
|
-
<span style={{ color: '#605E5C' }}>{label}:</span>
|
|
144
|
-
<span style={{ fontWeight: 600 }}>{value}</span>
|
|
145
|
-
</div>
|
|
146
|
-
);
|