@gemx-dev/heatmap-react 3.5.50 → 3.5.51
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 +2 -2
- package/dist/esm/components/Layout/HeatmapLayout.d.ts.map +1 -1
- package/dist/esm/components/VizElement/ElementCallout.d.ts.map +1 -1
- package/dist/esm/components/VizElement/HeatmapElements.d.ts.map +1 -1
- package/dist/esm/components/VizElement/VizElements.d.ts.map +1 -1
- package/dist/esm/components/VizScrollmap/HoverZones.d.ts +1 -1
- package/dist/esm/components/VizScrollmap/HoverZones.d.ts.map +1 -1
- package/dist/esm/components/VizScrollmap/ScrollMapMinimap.d.ts +1 -1
- package/dist/esm/components/VizScrollmap/ScrollMapMinimap.d.ts.map +1 -1
- package/dist/esm/components/VizScrollmap/ScrollMapOverlay.d.ts.map +1 -1
- package/dist/esm/components/VizScrollmap/ScrollZoneHoverArea.d.ts +1 -2
- package/dist/esm/components/VizScrollmap/ScrollZoneHoverArea.d.ts.map +1 -1
- package/dist/esm/components/VizScrollmap/ScrollZoneTooltip.d.ts +1 -1
- package/dist/esm/components/VizScrollmap/ScrollZoneTooltip.d.ts.map +1 -1
- package/dist/esm/components/VizScrollmapV2/ScrollmapOverlayV2.d.ts +1 -2
- package/dist/esm/components/VizScrollmapV2/ScrollmapOverlayV2.d.ts.map +1 -1
- package/dist/esm/components/VizScrollmapV2/useScrollmapOverlay.d.ts +1 -1
- package/dist/esm/components/VizScrollmapV2/useScrollmapOverlay.d.ts.map +1 -1
- package/dist/esm/contexts/CompareViewContext.d.ts +1 -1
- package/dist/esm/contexts/CompareViewContext.d.ts.map +1 -1
- package/dist/esm/helpers/iframe-helper/fixer.d.ts +1 -1
- package/dist/esm/helpers/iframe-helper/fixer.d.ts.map +1 -1
- package/dist/esm/helpers/iframe-helper/init.d.ts +1 -1
- package/dist/esm/helpers/iframe-helper/init.d.ts.map +1 -1
- package/dist/esm/helpers/iframe.d.ts +1 -1
- package/dist/esm/helpers/iframe.d.ts.map +1 -1
- package/dist/esm/helpers/index.d.ts +2 -3
- package/dist/esm/helpers/index.d.ts.map +1 -1
- package/dist/esm/helpers/viz-canvas/area-clustering.d.ts +1 -1
- package/dist/esm/helpers/viz-canvas/area-clustering.d.ts.map +1 -1
- package/dist/esm/helpers/viz-canvas/area-overlay-manager-v2.d.ts +2 -2
- package/dist/esm/helpers/viz-canvas/area-overlay-manager-v2.d.ts.map +1 -1
- package/dist/esm/helpers/viz-canvas/area-overlay-manager.d.ts +1 -1
- package/dist/esm/helpers/viz-canvas/area-overlay-manager.d.ts.map +1 -1
- package/dist/esm/helpers/viz-canvas/hierarchical-area-clustering.d.ts +1 -1
- package/dist/esm/helpers/viz-canvas/hierarchical-area-clustering.d.ts.map +1 -1
- package/dist/esm/helpers/viz-elm-callout/constants.d.ts +4 -0
- package/dist/esm/helpers/viz-elm-callout/constants.d.ts.map +1 -0
- package/dist/esm/helpers/viz-elm-callout/dimensions.d.ts +4 -0
- package/dist/esm/helpers/viz-elm-callout/dimensions.d.ts.map +1 -0
- package/dist/esm/helpers/{elm-getter.d.ts → viz-elm-callout/getter.d.ts} +2 -2
- package/dist/esm/helpers/viz-elm-callout/getter.d.ts.map +1 -0
- package/dist/esm/helpers/viz-elm-callout/index.d.ts +3 -0
- package/dist/esm/helpers/viz-elm-callout/index.d.ts.map +1 -0
- package/dist/esm/helpers/viz-elm-callout/position-calculator.d.ts +14 -0
- package/dist/esm/helpers/viz-elm-callout/position-calculator.d.ts.map +1 -0
- package/dist/esm/helpers/viz-elm-callout/position-candidates.d.ts +6 -0
- package/dist/esm/helpers/viz-elm-callout/position-candidates.d.ts.map +1 -0
- package/dist/esm/helpers/viz-elm-callout/position-selector.d.ts +10 -0
- package/dist/esm/helpers/viz-elm-callout/position-selector.d.ts.map +1 -0
- package/dist/esm/helpers/viz-elm-callout/position-validator.d.ts +4 -0
- package/dist/esm/helpers/viz-elm-callout/position-validator.d.ts.map +1 -0
- package/dist/esm/helpers/viz-elm-callout/types.d.ts +17 -0
- package/dist/esm/helpers/viz-elm-callout/types.d.ts.map +1 -0
- package/dist/{umd/helpers/elm-callout.d.ts → esm/helpers/viz-elm-callout/viz-elm.d.ts} +4 -3
- package/dist/esm/helpers/viz-elm-callout/viz-elm.d.ts.map +1 -0
- package/dist/esm/helpers/{viz-elements.d.ts → viz-elm.d.ts} +1 -1
- package/dist/esm/helpers/viz-elm.d.ts.map +1 -0
- package/dist/esm/hooks/common/index.d.ts +2 -0
- package/dist/esm/hooks/common/index.d.ts.map +1 -0
- package/dist/esm/hooks/common/useDebounceCallback.d.ts +17 -0
- package/dist/esm/hooks/common/useDebounceCallback.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/useRegisterControl.d.ts +1 -1
- package/dist/esm/hooks/register/useRegisterControl.d.ts.map +1 -1
- package/dist/esm/hooks/register/useRegisterData.d.ts +1 -1
- package/dist/esm/hooks/register/useRegisterData.d.ts.map +1 -1
- package/dist/esm/hooks/register/useRegisterHeatmap.d.ts +1 -1
- package/dist/esm/hooks/register/useRegisterHeatmap.d.ts.map +1 -1
- package/dist/esm/hooks/view-context/useHeatmapData.d.ts +1 -1
- package/dist/esm/hooks/view-context/useHeatmapData.d.ts.map +1 -1
- package/dist/esm/hooks/view-context/useHeatmapInteraction.d.ts +2 -2
- package/dist/esm/hooks/view-context/useHeatmapInteraction.d.ts.map +1 -1
- package/dist/esm/hooks/view-context/useHeatmapViz.d.ts +1 -1
- package/dist/esm/hooks/view-context/useHeatmapViz.d.ts.map +1 -1
- package/dist/esm/hooks/view-context/useHeatmapVizScrollmap.d.ts +1 -1
- package/dist/esm/hooks/view-context/useHeatmapVizScrollmap.d.ts.map +1 -1
- package/dist/esm/hooks/viz-area/useAreaHeatmap.d.ts +1 -1
- package/dist/esm/hooks/viz-area/useAreaHeatmap.d.ts.map +1 -1
- package/dist/esm/hooks/viz-area/useAreaHeatmapManager.d.ts.map +1 -1
- package/dist/esm/hooks/viz-canvas/useAreamap.d.ts +1 -1
- package/dist/esm/hooks/viz-canvas/useAreamap.d.ts.map +1 -1
- package/dist/esm/hooks/viz-elm/index.d.ts.map +1 -0
- package/dist/esm/hooks/viz-elm/useClickedElement.d.ts.map +1 -0
- package/dist/esm/hooks/viz-elm/useElementCalloutVisible.d.ts.map +1 -0
- package/dist/esm/hooks/viz-elm/useHeatmapEffects.d.ts.map +1 -0
- package/dist/esm/hooks/viz-elm/useHeatmapElementPosition.d.ts.map +1 -0
- package/dist/esm/hooks/{viz-elements → viz-elm}/useHeatmapMouseHandler.d.ts +1 -1
- package/dist/esm/hooks/{viz-elements → viz-elm}/useHeatmapMouseHandler.d.ts.map +1 -1
- package/dist/esm/hooks/viz-elm/useHoveredElement.d.ts.map +1 -0
- package/dist/esm/hooks/viz-render/useHeatmapRender.d.ts.map +1 -1
- package/dist/esm/hooks/viz-render/useReplayRender.d.ts.map +1 -1
- package/dist/esm/hooks/viz-scrollmap/useScrollmapZones.d.ts +1 -1
- package/dist/esm/hooks/viz-scrollmap/useScrollmapZones.d.ts.map +1 -1
- package/dist/esm/hooks/viz-scrollmap/useZonePositions.d.ts +2 -2
- package/dist/esm/hooks/viz-scrollmap/useZonePositions.d.ts.map +1 -1
- package/dist/esm/index.js +238 -199
- package/dist/esm/index.mjs +238 -199
- package/dist/esm/performance/index.d.ts +3 -3
- package/dist/esm/performance/index.d.ts.map +1 -1
- package/dist/{umd/performance/PerformanceLogger.d.ts → esm/performance/performance-logger.d.ts} +1 -1
- package/dist/esm/performance/performance-logger.d.ts.map +1 -0
- package/dist/esm/performance/storeTracker.d.ts.map +1 -1
- package/dist/esm/performance/utils.d.ts +0 -18
- package/dist/esm/performance/utils.d.ts.map +1 -1
- package/dist/esm/performance/withPerformanceTracking.d.ts +1 -1
- package/dist/esm/performance/withPerformanceTracking.d.ts.map +1 -1
- package/dist/esm/stores/comp.d.ts +1 -1
- package/dist/esm/stores/comp.d.ts.map +1 -1
- package/dist/esm/stores/data.d.ts +1 -1
- package/dist/esm/stores/data.d.ts.map +1 -1
- package/dist/esm/stores/interaction.d.ts +1 -1
- package/dist/esm/stores/interaction.d.ts.map +1 -1
- package/dist/esm/stores/mode-compare.d.ts +1 -1
- package/dist/esm/stores/mode-compare.d.ts.map +1 -1
- package/dist/esm/stores/mode-live.d.ts +1 -1
- package/dist/esm/stores/mode-live.d.ts.map +1 -1
- package/dist/esm/stores/mode-single.d.ts +1 -1
- package/dist/esm/stores/mode-single.d.ts.map +1 -1
- package/dist/esm/stores/viz-scrollmap.d.ts +1 -1
- package/dist/esm/stores/viz-scrollmap.d.ts.map +1 -1
- package/dist/esm/types/heatmap-info.d.ts +2 -2
- package/dist/esm/types/heatmap-info.d.ts.map +1 -1
- package/dist/esm/types/index.d.ts +2 -2
- package/dist/esm/types/index.d.ts.map +1 -1
- package/dist/{umd/types/elm-callout.d.ts → esm/types/viz-elm-callout.d.ts} +1 -1
- package/dist/esm/types/viz-elm-callout.d.ts.map +1 -0
- package/dist/esm/types/{viz-element.d.ts → viz-elm.d.ts} +1 -1
- package/dist/esm/types/viz-elm.d.ts.map +1 -0
- package/dist/esm/utils/sort.d.ts +1 -1
- package/dist/esm/utils/sort.d.ts.map +1 -1
- package/dist/umd/components/Layout/HeatmapLayout.d.ts +2 -2
- package/dist/umd/components/Layout/HeatmapLayout.d.ts.map +1 -1
- package/dist/umd/components/VizElement/ElementCallout.d.ts.map +1 -1
- package/dist/umd/components/VizElement/HeatmapElements.d.ts.map +1 -1
- package/dist/umd/components/VizElement/VizElements.d.ts.map +1 -1
- package/dist/umd/components/VizScrollmap/HoverZones.d.ts +1 -1
- package/dist/umd/components/VizScrollmap/HoverZones.d.ts.map +1 -1
- package/dist/umd/components/VizScrollmap/ScrollMapMinimap.d.ts +1 -1
- package/dist/umd/components/VizScrollmap/ScrollMapMinimap.d.ts.map +1 -1
- package/dist/umd/components/VizScrollmap/ScrollMapOverlay.d.ts.map +1 -1
- package/dist/umd/components/VizScrollmap/ScrollZoneHoverArea.d.ts +1 -2
- package/dist/umd/components/VizScrollmap/ScrollZoneHoverArea.d.ts.map +1 -1
- package/dist/umd/components/VizScrollmap/ScrollZoneTooltip.d.ts +1 -1
- package/dist/umd/components/VizScrollmap/ScrollZoneTooltip.d.ts.map +1 -1
- package/dist/umd/components/VizScrollmapV2/ScrollmapOverlayV2.d.ts +1 -2
- package/dist/umd/components/VizScrollmapV2/ScrollmapOverlayV2.d.ts.map +1 -1
- package/dist/umd/components/VizScrollmapV2/useScrollmapOverlay.d.ts +1 -1
- package/dist/umd/components/VizScrollmapV2/useScrollmapOverlay.d.ts.map +1 -1
- package/dist/umd/contexts/CompareViewContext.d.ts +1 -1
- package/dist/umd/contexts/CompareViewContext.d.ts.map +1 -1
- package/dist/umd/helpers/iframe-helper/fixer.d.ts +1 -1
- package/dist/umd/helpers/iframe-helper/fixer.d.ts.map +1 -1
- package/dist/umd/helpers/iframe-helper/init.d.ts +1 -1
- package/dist/umd/helpers/iframe-helper/init.d.ts.map +1 -1
- package/dist/umd/helpers/iframe.d.ts +1 -1
- package/dist/umd/helpers/iframe.d.ts.map +1 -1
- package/dist/umd/helpers/index.d.ts +2 -3
- package/dist/umd/helpers/index.d.ts.map +1 -1
- package/dist/umd/helpers/viz-canvas/area-clustering.d.ts +1 -1
- package/dist/umd/helpers/viz-canvas/area-clustering.d.ts.map +1 -1
- package/dist/umd/helpers/viz-canvas/area-overlay-manager-v2.d.ts +2 -2
- package/dist/umd/helpers/viz-canvas/area-overlay-manager-v2.d.ts.map +1 -1
- package/dist/umd/helpers/viz-canvas/area-overlay-manager.d.ts +1 -1
- package/dist/umd/helpers/viz-canvas/area-overlay-manager.d.ts.map +1 -1
- package/dist/umd/helpers/viz-canvas/hierarchical-area-clustering.d.ts +1 -1
- package/dist/umd/helpers/viz-canvas/hierarchical-area-clustering.d.ts.map +1 -1
- package/dist/umd/helpers/viz-elm-callout/constants.d.ts +4 -0
- package/dist/umd/helpers/viz-elm-callout/constants.d.ts.map +1 -0
- package/dist/umd/helpers/viz-elm-callout/dimensions.d.ts +4 -0
- package/dist/umd/helpers/viz-elm-callout/dimensions.d.ts.map +1 -0
- package/dist/umd/helpers/{elm-getter.d.ts → viz-elm-callout/getter.d.ts} +2 -2
- package/dist/umd/helpers/viz-elm-callout/getter.d.ts.map +1 -0
- package/dist/umd/helpers/viz-elm-callout/index.d.ts +3 -0
- package/dist/umd/helpers/viz-elm-callout/index.d.ts.map +1 -0
- package/dist/umd/helpers/viz-elm-callout/position-calculator.d.ts +14 -0
- package/dist/umd/helpers/viz-elm-callout/position-calculator.d.ts.map +1 -0
- package/dist/umd/helpers/viz-elm-callout/position-candidates.d.ts +6 -0
- package/dist/umd/helpers/viz-elm-callout/position-candidates.d.ts.map +1 -0
- package/dist/umd/helpers/viz-elm-callout/position-selector.d.ts +10 -0
- package/dist/umd/helpers/viz-elm-callout/position-selector.d.ts.map +1 -0
- package/dist/umd/helpers/viz-elm-callout/position-validator.d.ts +4 -0
- package/dist/umd/helpers/viz-elm-callout/position-validator.d.ts.map +1 -0
- package/dist/umd/helpers/viz-elm-callout/types.d.ts +17 -0
- package/dist/umd/helpers/viz-elm-callout/types.d.ts.map +1 -0
- package/dist/{esm/helpers/elm-callout.d.ts → umd/helpers/viz-elm-callout/viz-elm.d.ts} +4 -3
- package/dist/umd/helpers/viz-elm-callout/viz-elm.d.ts.map +1 -0
- package/dist/umd/helpers/{viz-elements.d.ts → viz-elm.d.ts} +1 -1
- package/dist/umd/helpers/viz-elm.d.ts.map +1 -0
- package/dist/umd/hooks/common/index.d.ts +2 -0
- package/dist/umd/hooks/common/index.d.ts.map +1 -0
- package/dist/umd/hooks/common/useDebounceCallback.d.ts +17 -0
- package/dist/umd/hooks/common/useDebounceCallback.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/useRegisterControl.d.ts +1 -1
- package/dist/umd/hooks/register/useRegisterControl.d.ts.map +1 -1
- package/dist/umd/hooks/register/useRegisterData.d.ts +1 -1
- package/dist/umd/hooks/register/useRegisterData.d.ts.map +1 -1
- package/dist/umd/hooks/register/useRegisterHeatmap.d.ts +1 -1
- package/dist/umd/hooks/register/useRegisterHeatmap.d.ts.map +1 -1
- package/dist/umd/hooks/view-context/useHeatmapData.d.ts +1 -1
- package/dist/umd/hooks/view-context/useHeatmapData.d.ts.map +1 -1
- package/dist/umd/hooks/view-context/useHeatmapInteraction.d.ts +2 -2
- package/dist/umd/hooks/view-context/useHeatmapInteraction.d.ts.map +1 -1
- package/dist/umd/hooks/view-context/useHeatmapViz.d.ts +1 -1
- package/dist/umd/hooks/view-context/useHeatmapViz.d.ts.map +1 -1
- package/dist/umd/hooks/view-context/useHeatmapVizScrollmap.d.ts +1 -1
- package/dist/umd/hooks/view-context/useHeatmapVizScrollmap.d.ts.map +1 -1
- package/dist/umd/hooks/viz-area/useAreaHeatmap.d.ts +1 -1
- package/dist/umd/hooks/viz-area/useAreaHeatmap.d.ts.map +1 -1
- package/dist/umd/hooks/viz-area/useAreaHeatmapManager.d.ts.map +1 -1
- package/dist/umd/hooks/viz-canvas/useAreamap.d.ts +1 -1
- package/dist/umd/hooks/viz-canvas/useAreamap.d.ts.map +1 -1
- package/dist/umd/hooks/viz-elm/index.d.ts.map +1 -0
- package/dist/umd/hooks/viz-elm/useClickedElement.d.ts.map +1 -0
- package/dist/umd/hooks/viz-elm/useElementCalloutVisible.d.ts.map +1 -0
- package/dist/umd/hooks/viz-elm/useHeatmapEffects.d.ts.map +1 -0
- package/dist/umd/hooks/viz-elm/useHeatmapElementPosition.d.ts.map +1 -0
- package/dist/umd/hooks/{viz-elements → viz-elm}/useHeatmapMouseHandler.d.ts +1 -1
- package/dist/umd/hooks/{viz-elements → viz-elm}/useHeatmapMouseHandler.d.ts.map +1 -1
- package/dist/umd/hooks/viz-elm/useHoveredElement.d.ts.map +1 -0
- package/dist/umd/hooks/viz-render/useHeatmapRender.d.ts.map +1 -1
- package/dist/umd/hooks/viz-render/useReplayRender.d.ts.map +1 -1
- package/dist/umd/hooks/viz-scrollmap/useScrollmapZones.d.ts +1 -1
- package/dist/umd/hooks/viz-scrollmap/useScrollmapZones.d.ts.map +1 -1
- package/dist/umd/hooks/viz-scrollmap/useZonePositions.d.ts +2 -2
- package/dist/umd/hooks/viz-scrollmap/useZonePositions.d.ts.map +1 -1
- package/dist/umd/index.js +1 -1
- package/dist/umd/performance/index.d.ts +3 -3
- package/dist/umd/performance/index.d.ts.map +1 -1
- package/dist/{esm/performance/PerformanceLogger.d.ts → umd/performance/performance-logger.d.ts} +1 -1
- package/dist/umd/performance/performance-logger.d.ts.map +1 -0
- package/dist/umd/performance/storeTracker.d.ts.map +1 -1
- package/dist/umd/performance/utils.d.ts +0 -18
- package/dist/umd/performance/utils.d.ts.map +1 -1
- package/dist/umd/performance/withPerformanceTracking.d.ts +1 -1
- package/dist/umd/performance/withPerformanceTracking.d.ts.map +1 -1
- package/dist/umd/stores/comp.d.ts +1 -1
- package/dist/umd/stores/comp.d.ts.map +1 -1
- package/dist/umd/stores/data.d.ts +1 -1
- package/dist/umd/stores/data.d.ts.map +1 -1
- package/dist/umd/stores/interaction.d.ts +1 -1
- package/dist/umd/stores/interaction.d.ts.map +1 -1
- package/dist/umd/stores/mode-compare.d.ts +1 -1
- package/dist/umd/stores/mode-compare.d.ts.map +1 -1
- package/dist/umd/stores/mode-live.d.ts +1 -1
- package/dist/umd/stores/mode-live.d.ts.map +1 -1
- package/dist/umd/stores/mode-single.d.ts +1 -1
- package/dist/umd/stores/mode-single.d.ts.map +1 -1
- package/dist/umd/stores/viz-scrollmap.d.ts +1 -1
- package/dist/umd/stores/viz-scrollmap.d.ts.map +1 -1
- package/dist/umd/types/heatmap-info.d.ts +2 -2
- package/dist/umd/types/heatmap-info.d.ts.map +1 -1
- package/dist/umd/types/index.d.ts +2 -2
- package/dist/umd/types/index.d.ts.map +1 -1
- package/dist/{esm/types/elm-callout.d.ts → umd/types/viz-elm-callout.d.ts} +1 -1
- package/dist/umd/types/viz-elm-callout.d.ts.map +1 -0
- package/dist/umd/types/{viz-element.d.ts → viz-elm.d.ts} +1 -1
- package/dist/umd/types/viz-elm.d.ts.map +1 -0
- package/dist/umd/utils/sort.d.ts +1 -1
- package/dist/umd/utils/sort.d.ts.map +1 -1
- package/package.json +4 -1
- package/dist/esm/components/VizElement/HeatmapExample.d.ts +0 -2
- package/dist/esm/components/VizElement/HeatmapExample.d.ts.map +0 -1
- package/dist/esm/helpers/elm-callout.d.ts.map +0 -1
- package/dist/esm/helpers/elm-getter.d.ts.map +0 -1
- package/dist/esm/helpers/viz-elements.d.ts.map +0 -1
- package/dist/esm/hooks/viz-elements/index.d.ts.map +0 -1
- package/dist/esm/hooks/viz-elements/useClickedElement.d.ts.map +0 -1
- package/dist/esm/hooks/viz-elements/useElementCalloutVisible.d.ts.map +0 -1
- package/dist/esm/hooks/viz-elements/useHeatmapEffects.d.ts.map +0 -1
- package/dist/esm/hooks/viz-elements/useHeatmapElementPosition.d.ts.map +0 -1
- package/dist/esm/hooks/viz-elements/useHoveredElement.d.ts.map +0 -1
- package/dist/esm/performance/PerformanceLogger.d.ts.map +0 -1
- package/dist/esm/types/elm-callout.d.ts.map +0 -1
- package/dist/esm/types/viz-element.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/helpers/elm-callout.d.ts.map +0 -1
- package/dist/umd/helpers/elm-getter.d.ts.map +0 -1
- package/dist/umd/helpers/viz-elements.d.ts.map +0 -1
- package/dist/umd/hooks/viz-elements/index.d.ts.map +0 -1
- package/dist/umd/hooks/viz-elements/useClickedElement.d.ts.map +0 -1
- package/dist/umd/hooks/viz-elements/useElementCalloutVisible.d.ts.map +0 -1
- package/dist/umd/hooks/viz-elements/useHeatmapEffects.d.ts.map +0 -1
- package/dist/umd/hooks/viz-elements/useHeatmapElementPosition.d.ts.map +0 -1
- package/dist/umd/hooks/viz-elements/useHoveredElement.d.ts.map +0 -1
- package/dist/umd/performance/PerformanceLogger.d.ts.map +0 -1
- package/dist/umd/types/elm-callout.d.ts.map +0 -1
- package/dist/umd/types/viz-element.d.ts.map +0 -1
- /package/dist/esm/hooks/{viz-elements → viz-elm}/index.d.ts +0 -0
- /package/dist/esm/hooks/{viz-elements → viz-elm}/useClickedElement.d.ts +0 -0
- /package/dist/esm/hooks/{viz-elements → viz-elm}/useElementCalloutVisible.d.ts +0 -0
- /package/dist/esm/hooks/{viz-elements → viz-elm}/useHeatmapEffects.d.ts +0 -0
- /package/dist/esm/hooks/{viz-elements → viz-elm}/useHeatmapElementPosition.d.ts +0 -0
- /package/dist/esm/hooks/{viz-elements → viz-elm}/useHoveredElement.d.ts +0 -0
- /package/dist/umd/hooks/{viz-elements → viz-elm}/index.d.ts +0 -0
- /package/dist/umd/hooks/{viz-elements → viz-elm}/useClickedElement.d.ts +0 -0
- /package/dist/umd/hooks/{viz-elements → viz-elm}/useElementCalloutVisible.d.ts +0 -0
- /package/dist/umd/hooks/{viz-elements → viz-elm}/useHeatmapEffects.d.ts +0 -0
- /package/dist/umd/hooks/{viz-elements → viz-elm}/useHeatmapElementPosition.d.ts +0 -0
- /package/dist/umd/hooks/{viz-elements → viz-elm}/useHoveredElement.d.ts +0 -0
package/dist/esm/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client"
|
|
2
2
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
3
3
|
import { useNodesState, ReactFlow, Controls, Background } from '@xyflow/react';
|
|
4
|
-
import { useEffect, createContext, useContext, useMemo,
|
|
4
|
+
import { useEffect, useRef, useCallback, createContext, useContext, useMemo, useState, forwardRef, Fragment as Fragment$1 } from 'react';
|
|
5
5
|
import { create } from 'zustand';
|
|
6
6
|
import { subscribeWithSelector } from 'zustand/middleware';
|
|
7
7
|
import { decode } from '@gemx-dev/clarity-decode';
|
|
@@ -102,6 +102,36 @@ const Z_INDEX = {
|
|
|
102
102
|
SIDEBAR_POPOVER: 4001,
|
|
103
103
|
};
|
|
104
104
|
|
|
105
|
+
/**
|
|
106
|
+
* Creates a debounced version of a callback that delays invoking until after
|
|
107
|
+
* wait milliseconds have elapsed since the last time it was invoked.
|
|
108
|
+
*
|
|
109
|
+
* @param callback - The function to debounce
|
|
110
|
+
* @param delay - The number of milliseconds to delay
|
|
111
|
+
* @returns A debounced version of the callback
|
|
112
|
+
*
|
|
113
|
+
* @example
|
|
114
|
+
* ```tsx
|
|
115
|
+
* const handleSearch = useDebounceCallback((query: string) => {
|
|
116
|
+
* searchAPI(query);
|
|
117
|
+
* }, 300);
|
|
118
|
+
* ```
|
|
119
|
+
*/
|
|
120
|
+
function useDebounceCallback(callback, delay) {
|
|
121
|
+
const timeoutRef = useRef();
|
|
122
|
+
const callbackRef = useRef(callback);
|
|
123
|
+
// Update callback ref when callback changes
|
|
124
|
+
callbackRef.current = callback;
|
|
125
|
+
return useCallback((...args) => {
|
|
126
|
+
if (timeoutRef.current) {
|
|
127
|
+
clearTimeout(timeoutRef.current);
|
|
128
|
+
}
|
|
129
|
+
timeoutRef.current = setTimeout(() => {
|
|
130
|
+
callbackRef.current(...args);
|
|
131
|
+
}, delay);
|
|
132
|
+
}, [delay]);
|
|
133
|
+
}
|
|
134
|
+
|
|
105
135
|
const useHeatmapControlStore = create()((set, get) => {
|
|
106
136
|
return {
|
|
107
137
|
controls: {
|
|
@@ -145,7 +175,7 @@ var IScrollType;
|
|
|
145
175
|
IScrollType["Revenue"] = "revenue-scroll";
|
|
146
176
|
})(IScrollType || (IScrollType = {}));
|
|
147
177
|
|
|
148
|
-
const useHeatmapConfigStore = create()((set
|
|
178
|
+
const useHeatmapConfigStore = create()((set) => {
|
|
149
179
|
return {
|
|
150
180
|
mode: 'single',
|
|
151
181
|
width: 1440,
|
|
@@ -165,7 +195,7 @@ const useHeatmapConfigStore = create()((set, get) => {
|
|
|
165
195
|
};
|
|
166
196
|
});
|
|
167
197
|
|
|
168
|
-
const useHeatmapDataStore = create()(subscribeWithSelector((set
|
|
198
|
+
const useHeatmapDataStore = create()(subscribeWithSelector((set) => {
|
|
169
199
|
return {
|
|
170
200
|
data: { [DEFAULT_VIEW_ID]: undefined },
|
|
171
201
|
clickmap: { [DEFAULT_VIEW_ID]: undefined },
|
|
@@ -217,7 +247,7 @@ const useHeatmapDataStore = create()(subscribeWithSelector((set, get) => {
|
|
|
217
247
|
const DEFAULT_STATE = {
|
|
218
248
|
hideSidebar: false,
|
|
219
249
|
};
|
|
220
|
-
const useHeatmapInteractionStore = create()(subscribeWithSelector((set
|
|
250
|
+
const useHeatmapInteractionStore = create()(subscribeWithSelector((set) => {
|
|
221
251
|
return {
|
|
222
252
|
state: { [DEFAULT_VIEW_ID]: DEFAULT_STATE },
|
|
223
253
|
selectedElement: { [DEFAULT_VIEW_ID]: null },
|
|
@@ -278,7 +308,7 @@ const useHeatmapInteractionStore = create()(subscribeWithSelector((set, get) =>
|
|
|
278
308
|
};
|
|
279
309
|
}));
|
|
280
310
|
|
|
281
|
-
const useHeatmapVizStore = create()(subscribeWithSelector((set
|
|
311
|
+
const useHeatmapVizStore = create()(subscribeWithSelector((set) => {
|
|
282
312
|
return {
|
|
283
313
|
isRenderViz: { [DEFAULT_VIEW_ID]: false },
|
|
284
314
|
zoomRatio: { [DEFAULT_VIEW_ID]: 100 },
|
|
@@ -339,7 +369,7 @@ const useHeatmapVizStore = create()(subscribeWithSelector((set, get) => {
|
|
|
339
369
|
};
|
|
340
370
|
}));
|
|
341
371
|
|
|
342
|
-
const useHeatmapVizScrollmapStore = create()(subscribeWithSelector((set
|
|
372
|
+
const useHeatmapVizScrollmapStore = create()(subscribeWithSelector((set) => {
|
|
343
373
|
return {
|
|
344
374
|
zones: { [DEFAULT_VIEW_ID]: [] },
|
|
345
375
|
hoveredZone: { [DEFAULT_VIEW_ID]: null },
|
|
@@ -392,7 +422,7 @@ const initialState = {
|
|
|
392
422
|
payloads: [],
|
|
393
423
|
htmlContent: '',
|
|
394
424
|
};
|
|
395
|
-
const useHeatmapLiveStore = create()((set
|
|
425
|
+
const useHeatmapLiveStore = create()((set) => {
|
|
396
426
|
return {
|
|
397
427
|
...initialState,
|
|
398
428
|
reset: () => set(initialState),
|
|
@@ -402,7 +432,7 @@ const useHeatmapLiveStore = create()((set, get) => {
|
|
|
402
432
|
};
|
|
403
433
|
});
|
|
404
434
|
|
|
405
|
-
const useHeatmapSingleStore = create()(subscribeWithSelector((set
|
|
435
|
+
const useHeatmapSingleStore = create()(subscribeWithSelector((set) => {
|
|
406
436
|
return {
|
|
407
437
|
vizRef: { [DEFAULT_VIEW_ID]: null },
|
|
408
438
|
iframeHeight: { [DEFAULT_VIEW_ID]: 0 },
|
|
@@ -873,23 +903,146 @@ const useRegisterHeatmap = ({ clickmap, scrollmap }) => {
|
|
|
873
903
|
}, [scrollmap]);
|
|
874
904
|
};
|
|
875
905
|
|
|
906
|
+
function findLastSizeOfDom(data) {
|
|
907
|
+
const listDocs = data
|
|
908
|
+
.filter((item) => item.doc?.find((doc) => doc.data.width && doc.data.height))
|
|
909
|
+
.flatMap((item) => item.doc?.flatMap((doc) => doc.data));
|
|
910
|
+
const lastDoc = listDocs?.[listDocs.length - 1];
|
|
911
|
+
const docSize = {
|
|
912
|
+
width: lastDoc?.width,
|
|
913
|
+
height: lastDoc?.height,
|
|
914
|
+
};
|
|
915
|
+
const listResizes = data.filter((item) => !!item.resize).flatMap((item) => item.resize);
|
|
916
|
+
const lastResizeEvent = listResizes?.[listResizes.length - 1];
|
|
917
|
+
const resize = {
|
|
918
|
+
width: lastResizeEvent?.data.width,
|
|
919
|
+
height: lastResizeEvent?.data.height,
|
|
920
|
+
};
|
|
921
|
+
return {
|
|
922
|
+
doc: docSize,
|
|
923
|
+
resize: resize,
|
|
924
|
+
size: {
|
|
925
|
+
width: resize.width || docSize.width,
|
|
926
|
+
height: resize.height || docSize.height,
|
|
927
|
+
},
|
|
928
|
+
};
|
|
929
|
+
}
|
|
930
|
+
function decodePayloads(payload) {
|
|
931
|
+
try {
|
|
932
|
+
return decode(payload);
|
|
933
|
+
}
|
|
934
|
+
catch (error) {
|
|
935
|
+
return null;
|
|
936
|
+
}
|
|
937
|
+
}
|
|
938
|
+
|
|
939
|
+
function calculateRankPosition(rect, widthScale) {
|
|
940
|
+
const top = rect.top <= 18 ? rect.top + 3 : rect.top - 18;
|
|
941
|
+
const left = rect.left <= 18 ? rect.left + 3 : rect.left - 18;
|
|
942
|
+
return {
|
|
943
|
+
transform: `scale(${1.2 * widthScale})`,
|
|
944
|
+
top: Number.isNaN(top) ? undefined : top,
|
|
945
|
+
left: Number.isNaN(left) ? undefined : left,
|
|
946
|
+
};
|
|
947
|
+
}
|
|
948
|
+
function isElementInViewport(elementRect, visualRef, scale) {
|
|
949
|
+
if (!elementRect)
|
|
950
|
+
return false;
|
|
951
|
+
const visualRect = visualRef.current?.getBoundingClientRect();
|
|
952
|
+
if (!visualRect)
|
|
953
|
+
return false;
|
|
954
|
+
// Element position relative to the document (or container's content)
|
|
955
|
+
const elementTop = elementRect.top * scale;
|
|
956
|
+
const elementBottom = (elementRect.top + elementRect.height) * scale;
|
|
957
|
+
// Current scroll position
|
|
958
|
+
const scrollTop = visualRef.current?.scrollTop || 0;
|
|
959
|
+
const viewportHeight = visualRect.height;
|
|
960
|
+
// Visible viewport range in the scrollable content
|
|
961
|
+
const viewportTop = scrollTop;
|
|
962
|
+
const viewportBottom = scrollTop + viewportHeight;
|
|
963
|
+
// Check if element is within the visible viewport
|
|
964
|
+
// Element is visible if it overlaps with the viewport
|
|
965
|
+
return elementBottom > viewportTop && elementTop < viewportBottom;
|
|
966
|
+
}
|
|
967
|
+
|
|
968
|
+
function getElementLayout(element) {
|
|
969
|
+
if (!element?.getBoundingClientRect)
|
|
970
|
+
return null;
|
|
971
|
+
const rect = element.getBoundingClientRect();
|
|
972
|
+
if (rect.width === 0 && rect.height === 0)
|
|
973
|
+
return null;
|
|
974
|
+
return {
|
|
975
|
+
top: rect.top,
|
|
976
|
+
left: rect.left,
|
|
977
|
+
width: rect.width,
|
|
978
|
+
height: rect.height,
|
|
979
|
+
};
|
|
980
|
+
}
|
|
981
|
+
const getElementAtPoint = (doc, x, y) => {
|
|
982
|
+
let el = null;
|
|
983
|
+
if ('caretPositionFromPoint' in doc) {
|
|
984
|
+
el = doc.caretPositionFromPoint(x, y)?.offsetNode ?? null;
|
|
985
|
+
}
|
|
986
|
+
el = el ?? doc.elementFromPoint(x, y);
|
|
987
|
+
let element = el;
|
|
988
|
+
while (element && element.nodeType === Node.TEXT_NODE) {
|
|
989
|
+
element = element.parentElement;
|
|
990
|
+
}
|
|
991
|
+
return element;
|
|
992
|
+
};
|
|
993
|
+
function getElementHash(element) {
|
|
994
|
+
return (element.getAttribute('data-clarity-hash') ||
|
|
995
|
+
element.getAttribute('data-clarity-hashalpha') ||
|
|
996
|
+
element.getAttribute('data-clarity-hashbeta'));
|
|
997
|
+
}
|
|
998
|
+
const getElementRank = (hash, elements) => {
|
|
999
|
+
if (!elements)
|
|
1000
|
+
return 0;
|
|
1001
|
+
return elements.findIndex((e) => e.hash === hash) + 1;
|
|
1002
|
+
};
|
|
1003
|
+
const buildElementInfo = (hash, rect, heatmapInfo) => {
|
|
1004
|
+
if (!rect || !heatmapInfo)
|
|
1005
|
+
return null;
|
|
1006
|
+
const info = heatmapInfo.elementMapInfo?.[hash];
|
|
1007
|
+
if (!info)
|
|
1008
|
+
return null;
|
|
1009
|
+
const rank = getElementRank(hash, heatmapInfo.sortedElements);
|
|
1010
|
+
const clicks = info.totalclicks ?? 0;
|
|
1011
|
+
const selector = info.selector ?? '';
|
|
1012
|
+
const baseInfo = {
|
|
1013
|
+
hash,
|
|
1014
|
+
clicks,
|
|
1015
|
+
rank,
|
|
1016
|
+
selector,
|
|
1017
|
+
};
|
|
1018
|
+
return {
|
|
1019
|
+
...baseInfo,
|
|
1020
|
+
...rect,
|
|
1021
|
+
};
|
|
1022
|
+
};
|
|
1023
|
+
|
|
876
1024
|
const PADDING = 0;
|
|
877
1025
|
const ARROW_SIZE = 8;
|
|
878
1026
|
const HORIZONTAL_OFFSET = 0;
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
const
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
1027
|
+
|
|
1028
|
+
const getViewportDimensions = (containerElm) => {
|
|
1029
|
+
if (containerElm) {
|
|
1030
|
+
const containerRect = containerElm.getBoundingClientRect();
|
|
1031
|
+
return {
|
|
1032
|
+
width: containerRect.width,
|
|
1033
|
+
height: containerRect.height,
|
|
1034
|
+
};
|
|
1035
|
+
}
|
|
1036
|
+
return {
|
|
1037
|
+
width: window.innerWidth,
|
|
1038
|
+
height: window.innerHeight,
|
|
1039
|
+
};
|
|
1040
|
+
};
|
|
886
1041
|
const getElementDimensions = (targetElm, calloutElm) => ({
|
|
887
1042
|
targetRect: targetElm.getBoundingClientRect(),
|
|
888
1043
|
calloutRect: calloutElm.getBoundingClientRect(),
|
|
889
1044
|
});
|
|
890
|
-
|
|
891
|
-
// Alignment Order
|
|
892
|
-
// ============================================================================
|
|
1045
|
+
|
|
893
1046
|
const getAlignmentOrder = (alignment) => {
|
|
894
1047
|
switch (alignment) {
|
|
895
1048
|
case 'center':
|
|
@@ -900,9 +1053,6 @@ const getAlignmentOrder = (alignment) => {
|
|
|
900
1053
|
return ['right', 'center', 'left'];
|
|
901
1054
|
}
|
|
902
1055
|
};
|
|
903
|
-
// ============================================================================
|
|
904
|
-
// Position Calculation
|
|
905
|
-
// ============================================================================
|
|
906
1056
|
const calculateLeftPosition = ({ targetRect, calloutRect, hozOffset, align, }) => {
|
|
907
1057
|
switch (align) {
|
|
908
1058
|
case 'left':
|
|
@@ -926,31 +1076,40 @@ const calculateHorizontalPlacementPosition = (targetRect, calloutRect, placement
|
|
|
926
1076
|
: targetRect.left - calloutRect.width - padding - arrowSize;
|
|
927
1077
|
return { top, left };
|
|
928
1078
|
};
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
1079
|
+
|
|
1080
|
+
const isLeftPositionValid = (leftPos, calloutWidth, viewportWidth, padding, containerRect) => {
|
|
1081
|
+
if (containerRect) {
|
|
1082
|
+
return leftPos >= containerRect.left + padding && leftPos + calloutWidth <= containerRect.right - padding;
|
|
1083
|
+
}
|
|
933
1084
|
return leftPos >= padding && leftPos + calloutWidth <= viewportWidth - padding;
|
|
934
1085
|
};
|
|
935
|
-
const isVerticalPositionValid = (targetRect, calloutRect, placement, viewportHeight, padding, arrowSize) => {
|
|
1086
|
+
const isVerticalPositionValid = (targetRect, calloutRect, placement, viewportHeight, padding, arrowSize, containerRect) => {
|
|
1087
|
+
if (containerRect) {
|
|
1088
|
+
return placement === 'top'
|
|
1089
|
+
? targetRect.top - calloutRect.height - padding - arrowSize >= containerRect.top
|
|
1090
|
+
: targetRect.bottom + calloutRect.height + padding + arrowSize <= containerRect.bottom;
|
|
1091
|
+
}
|
|
936
1092
|
return placement === 'top'
|
|
937
1093
|
? targetRect.top - calloutRect.height - padding - arrowSize > 0
|
|
938
1094
|
: targetRect.bottom + calloutRect.height + padding + arrowSize < viewportHeight;
|
|
939
1095
|
};
|
|
940
|
-
const isHorizontalPlacementValid = (targetRect, calloutRect, placement, viewportWidth, padding, arrowSize) => {
|
|
1096
|
+
const isHorizontalPlacementValid = (targetRect, calloutRect, placement, viewportWidth, padding, arrowSize, containerRect) => {
|
|
1097
|
+
if (containerRect) {
|
|
1098
|
+
return placement === 'right'
|
|
1099
|
+
? targetRect.right + calloutRect.width + padding + arrowSize <= containerRect.right
|
|
1100
|
+
: targetRect.left - calloutRect.width - padding - arrowSize >= containerRect.left;
|
|
1101
|
+
}
|
|
941
1102
|
return placement === 'right'
|
|
942
1103
|
? targetRect.right + calloutRect.width + padding + arrowSize < viewportWidth
|
|
943
1104
|
: targetRect.left - calloutRect.width - padding - arrowSize > 0;
|
|
944
1105
|
};
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
// ============================================================================
|
|
948
|
-
const generateVerticalPositionCandidates = (targetRect, calloutRect, viewportHeight, viewportWidth, alignment, hozOffset, padding, arrowSize) => {
|
|
1106
|
+
|
|
1107
|
+
const generateVerticalPositionCandidates = (targetRect, calloutRect, viewportHeight, viewportWidth, alignment, hozOffset, padding, arrowSize, containerRect) => {
|
|
949
1108
|
const candidates = [];
|
|
950
1109
|
const placements = ['top', 'bottom'];
|
|
951
1110
|
placements.forEach((placement) => {
|
|
952
1111
|
const verticalPos = calculateVerticalPosition(targetRect, calloutRect, placement, padding, arrowSize);
|
|
953
|
-
const verticalValid = isVerticalPositionValid(targetRect, calloutRect, placement, viewportHeight, padding, arrowSize);
|
|
1112
|
+
const verticalValid = isVerticalPositionValid(targetRect, calloutRect, placement, viewportHeight, padding, arrowSize, containerRect);
|
|
954
1113
|
const alignmentOrder = getAlignmentOrder(alignment);
|
|
955
1114
|
alignmentOrder.forEach((align) => {
|
|
956
1115
|
const horizontalPos = calculateLeftPosition({
|
|
@@ -965,13 +1124,13 @@ const generateVerticalPositionCandidates = (targetRect, calloutRect, viewportHei
|
|
|
965
1124
|
left: horizontalPos,
|
|
966
1125
|
horizontalAlign: align,
|
|
967
1126
|
valid: verticalValid &&
|
|
968
|
-
isLeftPositionValid(horizontalPos, calloutRect.width, viewportWidth, padding),
|
|
1127
|
+
isLeftPositionValid(horizontalPos, calloutRect.width, viewportWidth, padding, containerRect),
|
|
969
1128
|
});
|
|
970
1129
|
});
|
|
971
1130
|
});
|
|
972
1131
|
return candidates;
|
|
973
1132
|
};
|
|
974
|
-
const generateHorizontalPositionCandidates = (targetRect, calloutRect, viewportWidth, padding, arrowSize) => {
|
|
1133
|
+
const generateHorizontalPositionCandidates = (targetRect, calloutRect, viewportWidth, padding, arrowSize, containerRect) => {
|
|
975
1134
|
const placements = ['left', 'right'];
|
|
976
1135
|
return placements.map((placement) => {
|
|
977
1136
|
const { top, left } = calculateHorizontalPlacementPosition(targetRect, calloutRect, placement, padding, arrowSize);
|
|
@@ -980,46 +1139,45 @@ const generateHorizontalPositionCandidates = (targetRect, calloutRect, viewportW
|
|
|
980
1139
|
top,
|
|
981
1140
|
left,
|
|
982
1141
|
horizontalAlign: 'center',
|
|
983
|
-
valid: isHorizontalPlacementValid(targetRect, calloutRect, placement, viewportWidth, padding, arrowSize),
|
|
1142
|
+
valid: isHorizontalPlacementValid(targetRect, calloutRect, placement, viewportWidth, padding, arrowSize, containerRect),
|
|
984
1143
|
};
|
|
985
1144
|
});
|
|
986
1145
|
};
|
|
987
|
-
const generateAllPositionCandidates = (rectDimensions, viewport, alignment, hozOffset, padding, arrowSize) => {
|
|
1146
|
+
const generateAllPositionCandidates = (rectDimensions, viewport, alignment, hozOffset, padding, arrowSize, containerRect) => {
|
|
988
1147
|
const { targetRect, calloutRect } = rectDimensions;
|
|
989
|
-
const verticalCandidates = generateVerticalPositionCandidates(targetRect, calloutRect, viewport.height, viewport.width, alignment, hozOffset, padding, arrowSize);
|
|
990
|
-
const horizontalCandidates = generateHorizontalPositionCandidates(targetRect, calloutRect, viewport.width, padding, arrowSize);
|
|
1148
|
+
const verticalCandidates = generateVerticalPositionCandidates(targetRect, calloutRect, viewport.height, viewport.width, alignment, hozOffset, padding, arrowSize, containerRect);
|
|
1149
|
+
const horizontalCandidates = generateHorizontalPositionCandidates(targetRect, calloutRect, viewport.width, padding, arrowSize, containerRect);
|
|
991
1150
|
return [...verticalCandidates, ...horizontalCandidates];
|
|
992
1151
|
};
|
|
993
|
-
|
|
994
|
-
// Position Selection
|
|
995
|
-
// ============================================================================
|
|
1152
|
+
|
|
996
1153
|
const selectBestPosition = (candidates) => {
|
|
997
1154
|
return candidates.find((p) => p.valid) || candidates[0];
|
|
998
1155
|
};
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
const
|
|
1156
|
+
const constrainToViewport = (position, calloutRect, viewport, padding, containerRect) => {
|
|
1157
|
+
if (containerRect) {
|
|
1158
|
+
const left = Math.max(containerRect.left + padding, Math.min(position.left, containerRect.right - calloutRect.width - padding));
|
|
1159
|
+
const top = Math.max(containerRect.top + padding, Math.min(position.top, containerRect.bottom - calloutRect.height - padding));
|
|
1160
|
+
return { top, left };
|
|
1161
|
+
}
|
|
1003
1162
|
const left = Math.max(padding, Math.min(position.left, viewport.width - calloutRect.width - padding));
|
|
1004
1163
|
const top = Math.max(padding, Math.min(position.top, viewport.height - calloutRect.height - padding));
|
|
1005
1164
|
return { top, left };
|
|
1006
1165
|
};
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
// ============================================================================
|
|
1010
|
-
const calcCalloutPosition = ({ targetElm, calloutElm, setPosition, hozOffset = HORIZONTAL_OFFSET, alignment = 'center', }) => {
|
|
1166
|
+
|
|
1167
|
+
const calcCalloutPosition = ({ targetElm, calloutElm, setPosition, hozOffset = HORIZONTAL_OFFSET, alignment = 'center', containerElm, }) => {
|
|
1011
1168
|
return () => {
|
|
1012
1169
|
// 1. Get dimensions
|
|
1013
1170
|
const rectDimensions = getElementDimensions(targetElm, calloutElm);
|
|
1014
|
-
const viewport = getViewportDimensions();
|
|
1171
|
+
const viewport = getViewportDimensions(containerElm);
|
|
1172
|
+
const containerRect = containerElm?.getBoundingClientRect();
|
|
1015
1173
|
const padding = PADDING;
|
|
1016
1174
|
const arrowSize = ARROW_SIZE;
|
|
1017
1175
|
// 2. Generate all position candidates
|
|
1018
|
-
const candidates = generateAllPositionCandidates(rectDimensions, viewport, alignment, hozOffset, padding, arrowSize);
|
|
1176
|
+
const candidates = generateAllPositionCandidates(rectDimensions, viewport, alignment, hozOffset, padding, arrowSize, containerRect);
|
|
1019
1177
|
// 3. Select best position
|
|
1020
1178
|
const bestPosition = selectBestPosition(candidates);
|
|
1021
1179
|
// 4. Constrain to viewport
|
|
1022
|
-
const constrainedPosition = constrainToViewport({ top: bestPosition.top, left: bestPosition.left }, rectDimensions.calloutRect, viewport, padding);
|
|
1180
|
+
const constrainedPosition = constrainToViewport({ top: bestPosition.top, left: bestPosition.left }, rectDimensions.calloutRect, viewport, padding, containerRect);
|
|
1023
1181
|
// 5. Create final position object
|
|
1024
1182
|
const finalPosition = {
|
|
1025
1183
|
top: constrainedPosition.top,
|
|
@@ -1031,124 +1189,6 @@ const calcCalloutPosition = ({ targetElm, calloutElm, setPosition, hozOffset = H
|
|
|
1031
1189
|
};
|
|
1032
1190
|
};
|
|
1033
1191
|
|
|
1034
|
-
function getElementLayout(element) {
|
|
1035
|
-
if (!element?.getBoundingClientRect)
|
|
1036
|
-
return null;
|
|
1037
|
-
const rect = element.getBoundingClientRect();
|
|
1038
|
-
if (rect.width === 0 && rect.height === 0)
|
|
1039
|
-
return null;
|
|
1040
|
-
return {
|
|
1041
|
-
top: rect.top,
|
|
1042
|
-
left: rect.left,
|
|
1043
|
-
width: rect.width,
|
|
1044
|
-
height: rect.height,
|
|
1045
|
-
};
|
|
1046
|
-
}
|
|
1047
|
-
const getElementAtPoint = (doc, x, y) => {
|
|
1048
|
-
let el = null;
|
|
1049
|
-
if ('caretPositionFromPoint' in doc) {
|
|
1050
|
-
el = doc.caretPositionFromPoint(x, y)?.offsetNode ?? null;
|
|
1051
|
-
}
|
|
1052
|
-
el = el ?? doc.elementFromPoint(x, y);
|
|
1053
|
-
let element = el;
|
|
1054
|
-
while (element && element.nodeType === Node.TEXT_NODE) {
|
|
1055
|
-
element = element.parentElement;
|
|
1056
|
-
}
|
|
1057
|
-
return element;
|
|
1058
|
-
};
|
|
1059
|
-
function getElementHash(element) {
|
|
1060
|
-
return (element.getAttribute('data-clarity-hash') ||
|
|
1061
|
-
element.getAttribute('data-clarity-hashalpha') ||
|
|
1062
|
-
element.getAttribute('data-clarity-hashbeta'));
|
|
1063
|
-
}
|
|
1064
|
-
const getElementRank = (hash, elements) => {
|
|
1065
|
-
if (!elements)
|
|
1066
|
-
return 0;
|
|
1067
|
-
return elements.findIndex((e) => e.hash === hash) + 1;
|
|
1068
|
-
};
|
|
1069
|
-
const buildElementInfo = (hash, rect, heatmapInfo) => {
|
|
1070
|
-
if (!rect || !heatmapInfo)
|
|
1071
|
-
return null;
|
|
1072
|
-
const info = heatmapInfo.elementMapInfo?.[hash];
|
|
1073
|
-
if (!info)
|
|
1074
|
-
return null;
|
|
1075
|
-
const rank = getElementRank(hash, heatmapInfo.sortedElements);
|
|
1076
|
-
const clicks = info.totalclicks ?? 0;
|
|
1077
|
-
const selector = info.selector ?? '';
|
|
1078
|
-
const baseInfo = {
|
|
1079
|
-
hash,
|
|
1080
|
-
clicks,
|
|
1081
|
-
rank,
|
|
1082
|
-
selector,
|
|
1083
|
-
};
|
|
1084
|
-
return {
|
|
1085
|
-
...baseInfo,
|
|
1086
|
-
...rect,
|
|
1087
|
-
};
|
|
1088
|
-
};
|
|
1089
|
-
|
|
1090
|
-
function findLastSizeOfDom(data) {
|
|
1091
|
-
const listDocs = data
|
|
1092
|
-
.filter((item) => item.doc?.find((doc) => doc.data.width && doc.data.height))
|
|
1093
|
-
.flatMap((item) => item.doc?.flatMap((doc) => doc.data));
|
|
1094
|
-
const lastDoc = listDocs?.[listDocs.length - 1];
|
|
1095
|
-
const docSize = {
|
|
1096
|
-
width: lastDoc?.width,
|
|
1097
|
-
height: lastDoc?.height,
|
|
1098
|
-
};
|
|
1099
|
-
const listResizes = data.filter((item) => !!item.resize).flatMap((item) => item.resize);
|
|
1100
|
-
const lastResizeEvent = listResizes?.[listResizes.length - 1];
|
|
1101
|
-
const resize = {
|
|
1102
|
-
width: lastResizeEvent?.data.width,
|
|
1103
|
-
height: lastResizeEvent?.data.height,
|
|
1104
|
-
};
|
|
1105
|
-
return {
|
|
1106
|
-
doc: docSize,
|
|
1107
|
-
resize: resize,
|
|
1108
|
-
size: {
|
|
1109
|
-
width: resize.width || docSize.width,
|
|
1110
|
-
height: resize.height || docSize.height,
|
|
1111
|
-
},
|
|
1112
|
-
};
|
|
1113
|
-
}
|
|
1114
|
-
function decodePayloads(payload) {
|
|
1115
|
-
try {
|
|
1116
|
-
return decode(payload);
|
|
1117
|
-
}
|
|
1118
|
-
catch (error) {
|
|
1119
|
-
return null;
|
|
1120
|
-
}
|
|
1121
|
-
}
|
|
1122
|
-
|
|
1123
|
-
function calculateRankPosition(rect, widthScale) {
|
|
1124
|
-
const top = rect.top <= 18 ? rect.top + 3 : rect.top - 18;
|
|
1125
|
-
const left = rect.left <= 18 ? rect.left + 3 : rect.left - 18;
|
|
1126
|
-
return {
|
|
1127
|
-
transform: `scale(${1.2 * widthScale})`,
|
|
1128
|
-
top: Number.isNaN(top) ? undefined : top,
|
|
1129
|
-
left: Number.isNaN(left) ? undefined : left,
|
|
1130
|
-
};
|
|
1131
|
-
}
|
|
1132
|
-
function isElementInViewport(elementRect, visualRef, scale) {
|
|
1133
|
-
if (!elementRect)
|
|
1134
|
-
return false;
|
|
1135
|
-
const visualRect = visualRef.current?.getBoundingClientRect();
|
|
1136
|
-
if (!visualRect)
|
|
1137
|
-
return false;
|
|
1138
|
-
// Element position relative to the document (or container's content)
|
|
1139
|
-
const elementTop = elementRect.top * scale;
|
|
1140
|
-
const elementBottom = (elementRect.top + elementRect.height) * scale;
|
|
1141
|
-
// Current scroll position
|
|
1142
|
-
const scrollTop = visualRef.current?.scrollTop || 0;
|
|
1143
|
-
const viewportHeight = visualRect.height;
|
|
1144
|
-
// Visible viewport range in the scrollable content
|
|
1145
|
-
const viewportTop = scrollTop;
|
|
1146
|
-
const viewportBottom = scrollTop + viewportHeight;
|
|
1147
|
-
// Check if element is within the visible viewport
|
|
1148
|
-
// Element is visible if it overlaps with the viewport
|
|
1149
|
-
return elementBottom > viewportTop && elementTop < viewportBottom;
|
|
1150
|
-
}
|
|
1151
|
-
|
|
1152
1192
|
class IframeNavigationBlockerV2 {
|
|
1153
1193
|
doc;
|
|
1154
1194
|
win;
|
|
@@ -2018,11 +2058,12 @@ const useHoveredElement = ({ iframeRef, getRect }) => {
|
|
|
2018
2058
|
return;
|
|
2019
2059
|
}
|
|
2020
2060
|
const hash = getElementHash(targetElement);
|
|
2021
|
-
if (
|
|
2061
|
+
if (hash)
|
|
2022
2062
|
return hash;
|
|
2023
2063
|
reset();
|
|
2024
2064
|
return;
|
|
2025
|
-
}, [dataInfo, iframeRef,
|
|
2065
|
+
}, [dataInfo, iframeRef, widthScale, reset]);
|
|
2066
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
2026
2067
|
const handleMouseMove = useCallback(debounce((event) => {
|
|
2027
2068
|
if (!dataInfo) {
|
|
2028
2069
|
reset();
|
|
@@ -2046,6 +2087,7 @@ const useHoveredElement = ({ iframeRef, getRect }) => {
|
|
|
2046
2087
|
if (!hoveredElement?.hash)
|
|
2047
2088
|
return;
|
|
2048
2089
|
setSelectedElement(hoveredElement.hash);
|
|
2090
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
2049
2091
|
}, [hoveredElement?.hash]);
|
|
2050
2092
|
return {
|
|
2051
2093
|
hoveredElement,
|
|
@@ -2071,7 +2113,6 @@ const findTargetElement = (doc, x, y, heatmapInfo) => {
|
|
|
2071
2113
|
const element = elementsAtPoint[i];
|
|
2072
2114
|
const elementHash = element.getAttribute(HEATMAP_ELEMENT_ATTRIBUTE);
|
|
2073
2115
|
if (elementHash && heatmapInfo.elementMapInfo?.[elementHash]) {
|
|
2074
|
-
heatmapInfo.elementMapInfo[elementHash];
|
|
2075
2116
|
const boundingBox = getBoundingBox(element);
|
|
2076
2117
|
if (boundingBox) {
|
|
2077
2118
|
dataElement = element;
|
|
@@ -2079,7 +2120,7 @@ const findTargetElement = (doc, x, y, heatmapInfo) => {
|
|
|
2079
2120
|
}
|
|
2080
2121
|
}
|
|
2081
2122
|
}
|
|
2082
|
-
if (
|
|
2123
|
+
if (dataElement) {
|
|
2083
2124
|
return dataElement;
|
|
2084
2125
|
}
|
|
2085
2126
|
let targetElement = getElementAtPoint(doc, x, y);
|
|
@@ -2733,7 +2774,7 @@ const useWrapperRefHeight = (props) => {
|
|
|
2733
2774
|
return {};
|
|
2734
2775
|
};
|
|
2735
2776
|
|
|
2736
|
-
const useZonePositions = (
|
|
2777
|
+
const useZonePositions = (_options) => {
|
|
2737
2778
|
const { iframeHeight } = useHeatmapViz();
|
|
2738
2779
|
const getZonePosition = useCallback((zone) => {
|
|
2739
2780
|
if (!iframeHeight) {
|
|
@@ -3188,7 +3229,7 @@ function withPerformanceTracking(Component, options = {}) {
|
|
|
3188
3229
|
const name = componentName || Component.displayName || Component.name || 'Unknown';
|
|
3189
3230
|
const viewId = viewIdProp in props ? props[viewIdProp] : undefined;
|
|
3190
3231
|
if (trackProps) {
|
|
3191
|
-
useWhyDidYouUpdate(name, props, viewId);
|
|
3232
|
+
useWhyDidYouUpdate(name, props, viewId); // eslint-disable-line react-hooks/rules-of-hooks
|
|
3192
3233
|
}
|
|
3193
3234
|
return jsx(Component, { ...props });
|
|
3194
3235
|
};
|
|
@@ -3261,16 +3302,10 @@ function trackStoreAction(storeName, action, viewId, metadata) {
|
|
|
3261
3302
|
performanceLogger.log(metric);
|
|
3262
3303
|
}
|
|
3263
3304
|
|
|
3264
|
-
/**
|
|
3265
|
-
* Get performance report as JSON string
|
|
3266
|
-
*/
|
|
3267
3305
|
function getPerformanceReportJSON() {
|
|
3268
3306
|
const report = performanceLogger.generateReport();
|
|
3269
3307
|
return JSON.stringify(report, null, 2);
|
|
3270
3308
|
}
|
|
3271
|
-
/**
|
|
3272
|
-
* Download performance report as JSON file
|
|
3273
|
-
*/
|
|
3274
3309
|
function downloadPerformanceReport(filename = 'heatmap-performance-report.json') {
|
|
3275
3310
|
const report = performanceLogger.generateReport();
|
|
3276
3311
|
const blob = new Blob([JSON.stringify(report, null, 2)], { type: 'application/json' });
|
|
@@ -3281,9 +3316,6 @@ function downloadPerformanceReport(filename = 'heatmap-performance-report.json')
|
|
|
3281
3316
|
link.click();
|
|
3282
3317
|
URL.revokeObjectURL(url);
|
|
3283
3318
|
}
|
|
3284
|
-
/**
|
|
3285
|
-
* Send performance report to external endpoint
|
|
3286
|
-
*/
|
|
3287
3319
|
async function sendPerformanceReport(endpoint) {
|
|
3288
3320
|
const report = performanceLogger.generateReport();
|
|
3289
3321
|
try {
|
|
@@ -3303,9 +3335,6 @@ async function sendPerformanceReport(endpoint) {
|
|
|
3303
3335
|
throw error;
|
|
3304
3336
|
}
|
|
3305
3337
|
}
|
|
3306
|
-
/**
|
|
3307
|
-
* Print performance summary to console
|
|
3308
|
-
*/
|
|
3309
3338
|
function printPerformanceSummary() {
|
|
3310
3339
|
const report = performanceLogger.generateReport();
|
|
3311
3340
|
console.group('📊 Performance Summary');
|
|
@@ -3331,9 +3360,6 @@ function printPerformanceSummary() {
|
|
|
3331
3360
|
}
|
|
3332
3361
|
console.groupEnd();
|
|
3333
3362
|
}
|
|
3334
|
-
/**
|
|
3335
|
-
* Get performance metrics filtered by viewId
|
|
3336
|
-
*/
|
|
3337
3363
|
function getMetricsByViewId(viewId) {
|
|
3338
3364
|
const allMetrics = performanceLogger.getMetrics();
|
|
3339
3365
|
const filteredMetrics = allMetrics.filter((m) => {
|
|
@@ -3349,17 +3375,28 @@ function getMetricsByViewId(viewId) {
|
|
|
3349
3375
|
totalHookCalls: filteredMetrics.filter((m) => m.type === 'hook').length,
|
|
3350
3376
|
totalStoreUpdates: filteredMetrics.filter((m) => m.type === 'store').length,
|
|
3351
3377
|
averageRenderTime: 0, // Recalculate if needed
|
|
3352
|
-
viewMetrics: {
|
|
3378
|
+
viewMetrics: {
|
|
3379
|
+
[viewId]: report.summary.viewMetrics[viewId] || {
|
|
3380
|
+
renders: 0,
|
|
3381
|
+
hookCalls: 0,
|
|
3382
|
+
storeUpdates: 0,
|
|
3383
|
+
},
|
|
3384
|
+
},
|
|
3353
3385
|
},
|
|
3354
3386
|
};
|
|
3355
3387
|
}
|
|
3356
|
-
/**
|
|
3357
|
-
* Compare performance between two viewIds
|
|
3358
|
-
*/
|
|
3359
3388
|
function compareViewPerformance(viewId1, viewId2) {
|
|
3360
3389
|
const report = performanceLogger.generateReport();
|
|
3361
|
-
const view1Metrics = report.summary.viewMetrics[viewId1] || {
|
|
3362
|
-
|
|
3390
|
+
const view1Metrics = report.summary.viewMetrics[viewId1] || {
|
|
3391
|
+
renders: 0,
|
|
3392
|
+
hookCalls: 0,
|
|
3393
|
+
storeUpdates: 0,
|
|
3394
|
+
};
|
|
3395
|
+
const view2Metrics = report.summary.viewMetrics[viewId2] || {
|
|
3396
|
+
renders: 0,
|
|
3397
|
+
hookCalls: 0,
|
|
3398
|
+
storeUpdates: 0,
|
|
3399
|
+
};
|
|
3363
3400
|
return {
|
|
3364
3401
|
view1: view1Metrics,
|
|
3365
3402
|
view2: view2Metrics,
|
|
@@ -3382,7 +3419,7 @@ const BoxStack = forwardRef(({ children, ...props }, ref) => {
|
|
|
3382
3419
|
const style = props.style || {};
|
|
3383
3420
|
const gap = props.gap || 0;
|
|
3384
3421
|
const height = props.height || 'auto';
|
|
3385
|
-
const isZIndexDefined = typeof props.zIndex !== undefined;
|
|
3422
|
+
const isZIndexDefined = typeof props.zIndex !== 'undefined';
|
|
3386
3423
|
const zIndex = props.zIndex;
|
|
3387
3424
|
const backgroundColor = props.backgroundColor || 'transparent';
|
|
3388
3425
|
const styleGap = useMemo(() => {
|
|
@@ -3413,6 +3450,7 @@ const BoxStack = forwardRef(({ children, ...props }, ref) => {
|
|
|
3413
3450
|
};
|
|
3414
3451
|
return (jsx("div", { id: id, style: styleProps, ref: ref, children: children }));
|
|
3415
3452
|
});
|
|
3453
|
+
BoxStack.displayName = 'BoxStack';
|
|
3416
3454
|
|
|
3417
3455
|
const ContentTopBar = () => {
|
|
3418
3456
|
const controls = useHeatmapControlStore((state) => state.controls);
|
|
@@ -3638,6 +3676,7 @@ const ElementCallout = (props) => {
|
|
|
3638
3676
|
setPosition,
|
|
3639
3677
|
hozOffset,
|
|
3640
3678
|
alignment,
|
|
3679
|
+
containerElm: visualRef?.current,
|
|
3641
3680
|
});
|
|
3642
3681
|
positionFn();
|
|
3643
3682
|
const handleUpdate = () => {
|
|
@@ -4214,4 +4253,4 @@ const HeatmapLayout = ({ data, clickmap, scrollmap, controls, dataInfo, }) => {
|
|
|
4214
4253
|
}
|
|
4215
4254
|
};
|
|
4216
4255
|
|
|
4217
|
-
export { DEFAULT_SIDEBAR_WIDTH, DEFAULT_VIEW_ID, GraphView, HEATMAP_CONFIG, HEATMAP_IFRAME, HEATMAP_STYLE, HeatmapLayout, IClickType, IHeatmapType, IScrollType, ViewIdContext, Z_INDEX, compareViewPerformance, convertViewportToIframeCoords, createStorePerformanceTracker, downloadPerformanceReport, getCompareViewId, getCompareViewIndex, getMetricsByViewId, getPerformanceReportJSON, getScrollGradientColor, isCompareViewId, performanceLogger, printPerformanceSummary, sendPerformanceReport, trackStoreAction, useClickedElement, useElementCalloutVisible, useHeatmapCompareStore, useHeatmapConfigStore, useHeatmapCopyView, useHeatmapData, useHeatmapDataStore, useHeatmapEffects, useHeatmapElementPosition, useHeatmapInteraction, useHeatmapInteractionStore, useHeatmapLiveStore, useHeatmapScale, useHeatmapSingleStore, useHeatmapViz, useHeatmapVizRender, useHeatmapVizScrollmap, useHeatmapVizScrollmapStore, useHeatmapVizStore, useHoveredElement, useIsCompareMode, useMeasureFunction, useRegisterConfig, useRegisterControl, useRegisterData, useRegisterHeatmap, useRenderCount, useScrollmapZones, useTrackHookCall, useViewId, useVizLiveRender, useWhyDidYouUpdate, useWrapperRefHeight, useZonePositions, withPerformanceTracking };
|
|
4256
|
+
export { DEFAULT_SIDEBAR_WIDTH, DEFAULT_VIEW_ID, GraphView, HEATMAP_CONFIG, HEATMAP_IFRAME, HEATMAP_STYLE, HeatmapLayout, IClickType, IHeatmapType, IScrollType, ViewIdContext, Z_INDEX, compareViewPerformance, convertViewportToIframeCoords, createStorePerformanceTracker, downloadPerformanceReport, getCompareViewId, getCompareViewIndex, getMetricsByViewId, getPerformanceReportJSON, getScrollGradientColor, isCompareViewId, performanceLogger, printPerformanceSummary, sendPerformanceReport, trackStoreAction, useClickedElement, useDebounceCallback, useElementCalloutVisible, useHeatmapCompareStore, useHeatmapConfigStore, useHeatmapCopyView, useHeatmapData, useHeatmapDataStore, useHeatmapEffects, useHeatmapElementPosition, useHeatmapInteraction, useHeatmapInteractionStore, useHeatmapLiveStore, useHeatmapScale, useHeatmapSingleStore, useHeatmapViz, useHeatmapVizRender, useHeatmapVizScrollmap, useHeatmapVizScrollmapStore, useHeatmapVizStore, useHoveredElement, useIsCompareMode, useMeasureFunction, useRegisterConfig, useRegisterControl, useRegisterData, useRegisterHeatmap, useRenderCount, useScrollmapZones, useTrackHookCall, useViewId, useVizLiveRender, useWhyDidYouUpdate, useWrapperRefHeight, useZonePositions, withPerformanceTracking };
|