@gemx-dev/heatmap-react 3.5.92-dev.35 → 3.5.92-dev.36

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/dist/esm/hooks/viz-canvas/useScrollmap.d.ts.map +1 -1
  2. package/dist/esm/index.d.ts +1 -1
  3. package/dist/esm/index.d.ts.map +1 -1
  4. package/dist/esm/index.js +23 -21
  5. package/dist/esm/index.mjs +23 -21
  6. package/dist/esm/libs/visualizer/GXVisualizer.d.ts +3 -3
  7. package/dist/esm/libs/visualizer/GXVisualizer.d.ts.map +1 -1
  8. package/dist/esm/libs/visualizer/index.d.ts +1 -1
  9. package/dist/esm/libs/visualizer/index.d.ts.map +1 -1
  10. package/dist/esm/libs/visualizer/renderers/ScrollBucketRenderer.d.ts +3 -23
  11. package/dist/esm/libs/visualizer/renderers/ScrollBucketRenderer.d.ts.map +1 -1
  12. package/dist/esm/libs/visualizer/renderers/index.d.ts +1 -1
  13. package/dist/esm/libs/visualizer/renderers/index.d.ts.map +1 -1
  14. package/dist/esm/types/viz-scrollmap.d.ts +8 -0
  15. package/dist/esm/types/viz-scrollmap.d.ts.map +1 -1
  16. package/dist/esm/utils/index.d.ts +1 -0
  17. package/dist/esm/utils/index.d.ts.map +1 -1
  18. package/dist/esm/utils/scrollmap.d.ts +11 -0
  19. package/dist/esm/utils/scrollmap.d.ts.map +1 -0
  20. package/dist/umd/hooks/viz-canvas/useScrollmap.d.ts.map +1 -1
  21. package/dist/umd/index.d.ts +1 -1
  22. package/dist/umd/index.d.ts.map +1 -1
  23. package/dist/umd/index.js +1 -1
  24. package/dist/umd/libs/visualizer/GXVisualizer.d.ts +3 -3
  25. package/dist/umd/libs/visualizer/GXVisualizer.d.ts.map +1 -1
  26. package/dist/umd/libs/visualizer/index.d.ts +1 -1
  27. package/dist/umd/libs/visualizer/index.d.ts.map +1 -1
  28. package/dist/umd/libs/visualizer/renderers/ScrollBucketRenderer.d.ts +3 -23
  29. package/dist/umd/libs/visualizer/renderers/ScrollBucketRenderer.d.ts.map +1 -1
  30. package/dist/umd/libs/visualizer/renderers/index.d.ts +1 -1
  31. package/dist/umd/libs/visualizer/renderers/index.d.ts.map +1 -1
  32. package/dist/umd/types/viz-scrollmap.d.ts +8 -0
  33. package/dist/umd/types/viz-scrollmap.d.ts.map +1 -1
  34. package/dist/umd/utils/index.d.ts +1 -0
  35. package/dist/umd/utils/index.d.ts.map +1 -1
  36. package/dist/umd/utils/scrollmap.d.ts +11 -0
  37. package/dist/umd/utils/scrollmap.d.ts.map +1 -0
  38. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"useScrollmap.d.ts","sourceRoot":"","sources":["../../../src/hooks/viz-canvas/useScrollmap.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,YAAY;;CAuDxB,CAAC"}
1
+ {"version":3,"file":"useScrollmap.d.ts","sourceRoot":"","sources":["../../../src/hooks/viz-canvas/useScrollmap.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,YAAY;;CAwDxB,CAAC"}
@@ -5,6 +5,6 @@ export * from './hooks';
5
5
  export * from './types';
6
6
  export { decodeArrayClarity, decodeClarity, serializeAreas } from './helpers';
7
7
  export { useHeatmapCompareStore, useHeatmapConfigStore } from './stores';
8
- export { getElementAtPoint, getElementHash } from './utils';
8
+ export { buildBuckets, getElementAtPoint, getElementHash } from './utils';
9
9
  export * from './performance';
10
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AAExB,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE5D,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AAExB,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE1E,cAAc,eAAe,CAAC"}
package/dist/esm/index.js CHANGED
@@ -1971,6 +1971,21 @@ function createObservable(initialValue) {
1971
1971
  return observable;
1972
1972
  }
1973
1973
 
1974
+ /**
1975
+ * Given a list of items where each item represents the START of a bucket,
1976
+ * returns each item enriched with `startY` (= position) and `endY` (= next position, or 100 for the last bucket).
1977
+ *
1978
+ * Works for any scroll data shape (depth, attention, revenue).
1979
+ */
1980
+ function buildBuckets(items, getPosition) {
1981
+ const sorted = [...items].sort((a, b) => getPosition(a) - getPosition(b));
1982
+ return sorted.map((item, i) => ({
1983
+ ...item,
1984
+ startY: getPosition(item),
1985
+ endY: sorted[i + 1] !== undefined ? getPosition(sorted[i + 1]) : 100,
1986
+ }));
1987
+ }
1988
+
1974
1989
  function sortEvents(a, b) {
1975
1990
  return a.time - b.time;
1976
1991
  }
@@ -3550,10 +3565,11 @@ const useScrollmap = () => {
3550
3565
  const renderScrollBucket = useCallback(() => {
3551
3566
  if (!vizRef || !scrollmap || scrollmap.length === 0 || !isDomLoaded)
3552
3567
  return;
3553
- const bucketData = scrollmap.map((point) => ({
3554
- position: point.scrollReachY,
3555
- value: point.cumulativeSum,
3556
- percent: point.percUsers,
3568
+ const bucketData = buildBuckets(scrollmap, (p) => p.scrollReachY).map((b) => ({
3569
+ startY: b.startY,
3570
+ endY: b.endY,
3571
+ value: b.cumulativeSum,
3572
+ percent: b.percUsers,
3557
3573
  }));
3558
3574
  try {
3559
3575
  requestIdleCallback(() => vizRef?.scrollBucket?.(bucketData), { timeout: 300 });
@@ -6256,23 +6272,9 @@ class ScrollBucketRenderer {
6256
6272
  context.fillStyle = gradient;
6257
6273
  context.fillRect(0, 0, canvas.width, canvas.height);
6258
6274
  };
6259
- /**
6260
- * Convert flat position markers → structured buckets with startY/endY.
6261
- *
6262
- * Input positions: [0, 5, 10, 15, ..., 95]
6263
- * position=0 → { startY: 0, endY: 5 }
6264
- * position=5 → { startY: 5, endY: 10 }
6265
- * position=95 → { startY: 95, endY: 100 }
6266
- * Each position is the START of its bucket; end = next position (or 100 for last).
6267
- */
6268
6275
  mapToBuckets = (data) => {
6269
- const sorted = [...data].sort((a, b) => a.position - b.position);
6270
- return sorted.map((current, i) => ({
6271
- startY: current.position,
6272
- endY: sorted[i + 1]?.position ?? 100,
6273
- value: current.value,
6274
- percent: current.percent,
6275
- }));
6276
+ // Implement
6277
+ return data;
6276
6278
  };
6277
6279
  }
6278
6280
 
@@ -9022,4 +9024,4 @@ const HeatmapLayout = ({ shopId, data, clickmap, clickAreas, scrollmap, attentio
9022
9024
  }
9023
9025
  };
9024
9026
 
9025
- export { BACKDROP_CONFIG, DEFAULT_SIDEBAR_WIDTH, DEFAULT_VIEW_ID, DEFAULT_ZOOM_RATIO, EClickMode, EClickRankType, EClickType, EDeviceType, EHeatmapDataSource, EHeatmapMode, EHeatmapType, ELM_CALLOUT_CONFIG, EScrollType, GraphView, HEATMAP_CONFIG, HEATMAP_IFRAME, HEATMAP_STYLE, HeatmapLayout, ViewIdContext, Z_INDEX$1 as Z_INDEX, compareViewPerformance, convertViewportToIframeCoords, createStorePerformanceTracker, createViewContextHook, decodeArrayClarity, decodeClarity, downloadPerformanceReport, getCompareViewId, getElementAtPoint, getElementHash, getMetricsByViewId, getPerformanceReportJSON, getScrollGradientColor, isElmInDataInfo, performanceLogger, printPerformanceSummary, scrollToElementIfNeeded, sendPerformanceReport, serializeAreas, trackStoreAction, useAreaCreation, useAreaEditMode, useAreaFilterVisible, useAreaHydration, useAreaInteraction, useAreaPositionsUpdater, useAreaRectSync, useAreaRendererContainer, useAreaTopAutoDetect, useClickedElement, useDebounceCallback, useElementCalloutVisible, useHeatmapAreaClickContext, useHeatmapCanvas, useHeatmapClickContext, useHeatmapCompareStore, useHeatmapConfigStore, useHeatmapCopyView, useHeatmapDataContext, useHeatmapEffects, useHeatmapElementPosition, useHeatmapHoverContext, useHeatmapLiveContext, useHeatmapRenderByMode, useHeatmapScale, useHeatmapScroll, useHeatmapScrollContext, useHeatmapSettingContext, useHeatmapViewportByDevice, useHeatmapVizContext, useHeatmapVizRectContext, useHoveredElement, useMeasureFunction, useRegisterConfig, useRegisterControl, useRegisterData, useRegisterHeatmap, useRenderCount, useScrollmapZones, useTrackHookCall, useViewIdContext, useVizLiveRender, useWhyDidYouUpdate, useWrapperRefHeight, useZonePositions, withPerformanceTracking };
9027
+ export { BACKDROP_CONFIG, DEFAULT_SIDEBAR_WIDTH, DEFAULT_VIEW_ID, DEFAULT_ZOOM_RATIO, EClickMode, EClickRankType, EClickType, EDeviceType, EHeatmapDataSource, EHeatmapMode, EHeatmapType, ELM_CALLOUT_CONFIG, EScrollType, GraphView, HEATMAP_CONFIG, HEATMAP_IFRAME, HEATMAP_STYLE, HeatmapLayout, ViewIdContext, Z_INDEX$1 as Z_INDEX, buildBuckets, compareViewPerformance, convertViewportToIframeCoords, createStorePerformanceTracker, createViewContextHook, decodeArrayClarity, decodeClarity, downloadPerformanceReport, getCompareViewId, getElementAtPoint, getElementHash, getMetricsByViewId, getPerformanceReportJSON, getScrollGradientColor, isElmInDataInfo, performanceLogger, printPerformanceSummary, scrollToElementIfNeeded, sendPerformanceReport, serializeAreas, trackStoreAction, useAreaCreation, useAreaEditMode, useAreaFilterVisible, useAreaHydration, useAreaInteraction, useAreaPositionsUpdater, useAreaRectSync, useAreaRendererContainer, useAreaTopAutoDetect, useClickedElement, useDebounceCallback, useElementCalloutVisible, useHeatmapAreaClickContext, useHeatmapCanvas, useHeatmapClickContext, useHeatmapCompareStore, useHeatmapConfigStore, useHeatmapCopyView, useHeatmapDataContext, useHeatmapEffects, useHeatmapElementPosition, useHeatmapHoverContext, useHeatmapLiveContext, useHeatmapRenderByMode, useHeatmapScale, useHeatmapScroll, useHeatmapScrollContext, useHeatmapSettingContext, useHeatmapViewportByDevice, useHeatmapVizContext, useHeatmapVizRectContext, useHoveredElement, useMeasureFunction, useRegisterConfig, useRegisterControl, useRegisterData, useRegisterHeatmap, useRenderCount, useScrollmapZones, useTrackHookCall, useViewIdContext, useVizLiveRender, useWhyDidYouUpdate, useWrapperRefHeight, useZonePositions, withPerformanceTracking };
@@ -1971,6 +1971,21 @@ function createObservable(initialValue) {
1971
1971
  return observable;
1972
1972
  }
1973
1973
 
1974
+ /**
1975
+ * Given a list of items where each item represents the START of a bucket,
1976
+ * returns each item enriched with `startY` (= position) and `endY` (= next position, or 100 for the last bucket).
1977
+ *
1978
+ * Works for any scroll data shape (depth, attention, revenue).
1979
+ */
1980
+ function buildBuckets(items, getPosition) {
1981
+ const sorted = [...items].sort((a, b) => getPosition(a) - getPosition(b));
1982
+ return sorted.map((item, i) => ({
1983
+ ...item,
1984
+ startY: getPosition(item),
1985
+ endY: sorted[i + 1] !== undefined ? getPosition(sorted[i + 1]) : 100,
1986
+ }));
1987
+ }
1988
+
1974
1989
  function sortEvents(a, b) {
1975
1990
  return a.time - b.time;
1976
1991
  }
@@ -3550,10 +3565,11 @@ const useScrollmap = () => {
3550
3565
  const renderScrollBucket = useCallback(() => {
3551
3566
  if (!vizRef || !scrollmap || scrollmap.length === 0 || !isDomLoaded)
3552
3567
  return;
3553
- const bucketData = scrollmap.map((point) => ({
3554
- position: point.scrollReachY,
3555
- value: point.cumulativeSum,
3556
- percent: point.percUsers,
3568
+ const bucketData = buildBuckets(scrollmap, (p) => p.scrollReachY).map((b) => ({
3569
+ startY: b.startY,
3570
+ endY: b.endY,
3571
+ value: b.cumulativeSum,
3572
+ percent: b.percUsers,
3557
3573
  }));
3558
3574
  try {
3559
3575
  requestIdleCallback(() => vizRef?.scrollBucket?.(bucketData), { timeout: 300 });
@@ -6256,23 +6272,9 @@ class ScrollBucketRenderer {
6256
6272
  context.fillStyle = gradient;
6257
6273
  context.fillRect(0, 0, canvas.width, canvas.height);
6258
6274
  };
6259
- /**
6260
- * Convert flat position markers → structured buckets with startY/endY.
6261
- *
6262
- * Input positions: [0, 5, 10, 15, ..., 95]
6263
- * position=0 → { startY: 0, endY: 5 }
6264
- * position=5 → { startY: 5, endY: 10 }
6265
- * position=95 → { startY: 95, endY: 100 }
6266
- * Each position is the START of its bucket; end = next position (or 100 for last).
6267
- */
6268
6275
  mapToBuckets = (data) => {
6269
- const sorted = [...data].sort((a, b) => a.position - b.position);
6270
- return sorted.map((current, i) => ({
6271
- startY: current.position,
6272
- endY: sorted[i + 1]?.position ?? 100,
6273
- value: current.value,
6274
- percent: current.percent,
6275
- }));
6276
+ // Implement
6277
+ return data;
6276
6278
  };
6277
6279
  }
6278
6280
 
@@ -9022,4 +9024,4 @@ const HeatmapLayout = ({ shopId, data, clickmap, clickAreas, scrollmap, attentio
9022
9024
  }
9023
9025
  };
9024
9026
 
9025
- export { BACKDROP_CONFIG, DEFAULT_SIDEBAR_WIDTH, DEFAULT_VIEW_ID, DEFAULT_ZOOM_RATIO, EClickMode, EClickRankType, EClickType, EDeviceType, EHeatmapDataSource, EHeatmapMode, EHeatmapType, ELM_CALLOUT_CONFIG, EScrollType, GraphView, HEATMAP_CONFIG, HEATMAP_IFRAME, HEATMAP_STYLE, HeatmapLayout, ViewIdContext, Z_INDEX$1 as Z_INDEX, compareViewPerformance, convertViewportToIframeCoords, createStorePerformanceTracker, createViewContextHook, decodeArrayClarity, decodeClarity, downloadPerformanceReport, getCompareViewId, getElementAtPoint, getElementHash, getMetricsByViewId, getPerformanceReportJSON, getScrollGradientColor, isElmInDataInfo, performanceLogger, printPerformanceSummary, scrollToElementIfNeeded, sendPerformanceReport, serializeAreas, trackStoreAction, useAreaCreation, useAreaEditMode, useAreaFilterVisible, useAreaHydration, useAreaInteraction, useAreaPositionsUpdater, useAreaRectSync, useAreaRendererContainer, useAreaTopAutoDetect, useClickedElement, useDebounceCallback, useElementCalloutVisible, useHeatmapAreaClickContext, useHeatmapCanvas, useHeatmapClickContext, useHeatmapCompareStore, useHeatmapConfigStore, useHeatmapCopyView, useHeatmapDataContext, useHeatmapEffects, useHeatmapElementPosition, useHeatmapHoverContext, useHeatmapLiveContext, useHeatmapRenderByMode, useHeatmapScale, useHeatmapScroll, useHeatmapScrollContext, useHeatmapSettingContext, useHeatmapViewportByDevice, useHeatmapVizContext, useHeatmapVizRectContext, useHoveredElement, useMeasureFunction, useRegisterConfig, useRegisterControl, useRegisterData, useRegisterHeatmap, useRenderCount, useScrollmapZones, useTrackHookCall, useViewIdContext, useVizLiveRender, useWhyDidYouUpdate, useWrapperRefHeight, useZonePositions, withPerformanceTracking };
9027
+ export { BACKDROP_CONFIG, DEFAULT_SIDEBAR_WIDTH, DEFAULT_VIEW_ID, DEFAULT_ZOOM_RATIO, EClickMode, EClickRankType, EClickType, EDeviceType, EHeatmapDataSource, EHeatmapMode, EHeatmapType, ELM_CALLOUT_CONFIG, EScrollType, GraphView, HEATMAP_CONFIG, HEATMAP_IFRAME, HEATMAP_STYLE, HeatmapLayout, ViewIdContext, Z_INDEX$1 as Z_INDEX, buildBuckets, compareViewPerformance, convertViewportToIframeCoords, createStorePerformanceTracker, createViewContextHook, decodeArrayClarity, decodeClarity, downloadPerformanceReport, getCompareViewId, getElementAtPoint, getElementHash, getMetricsByViewId, getPerformanceReportJSON, getScrollGradientColor, isElmInDataInfo, performanceLogger, printPerformanceSummary, scrollToElementIfNeeded, sendPerformanceReport, serializeAreas, trackStoreAction, useAreaCreation, useAreaEditMode, useAreaFilterVisible, useAreaHydration, useAreaInteraction, useAreaPositionsUpdater, useAreaRectSync, useAreaRendererContainer, useAreaTopAutoDetect, useClickedElement, useDebounceCallback, useElementCalloutVisible, useHeatmapAreaClickContext, useHeatmapCanvas, useHeatmapClickContext, useHeatmapCompareStore, useHeatmapConfigStore, useHeatmapCopyView, useHeatmapDataContext, useHeatmapEffects, useHeatmapElementPosition, useHeatmapHoverContext, useHeatmapLiveContext, useHeatmapRenderByMode, useHeatmapScale, useHeatmapScroll, useHeatmapScrollContext, useHeatmapSettingContext, useHeatmapViewportByDevice, useHeatmapVizContext, useHeatmapVizRectContext, useHoveredElement, useMeasureFunction, useRegisterConfig, useRegisterControl, useRegisterData, useRegisterHeatmap, useRenderCount, useScrollmapZones, useTrackHookCall, useViewIdContext, useVizLiveRender, useWhyDidYouUpdate, useWrapperRefHeight, useZonePositions, withPerformanceTracking };
@@ -1,11 +1,11 @@
1
- import type { AttentionData, ScrollBucketInput } from './renderers';
1
+ import type { AttentionData, IScrollBucket } from './renderers';
2
2
  import type { IRenderHtmlOptions } from './types';
3
3
  import { Visualizer } from '@gemx-dev/clarity-visualize';
4
4
  interface GXVisualizerInterface extends Visualizer {
5
5
  htmlRender: (props: IRenderHtmlOptions) => Promise<GXVisualizer>;
6
6
  htmlCached: (cacheKey: string, options: IRenderHtmlOptions) => Promise<GXVisualizer>;
7
7
  attention: (attentionData: AttentionData[], avgFold: number, isSecondary?: boolean) => void;
8
- scrollBucket: (data: ScrollBucketInput[]) => Promise<void>;
8
+ scrollBucket: (data: IScrollBucket[]) => Promise<void>;
9
9
  }
10
10
  export declare class GXVisualizer extends Visualizer implements GXVisualizerInterface {
11
11
  private attentionMap;
@@ -28,7 +28,7 @@ export declare class GXVisualizer extends Visualizer implements GXVisualizerInte
28
28
  * Render discrete color bands for scrollRevenue / scrollAttention data.
29
29
  * @param data - Array of bucket inputs with position markers (0, 5, 10, ..., 95) and percent values
30
30
  */
31
- scrollBucket: (data: ScrollBucketInput[]) => Promise<void>;
31
+ scrollBucket: (data: IScrollBucket[]) => Promise<void>;
32
32
  private scrollmapOverride;
33
33
  private clickmapOverride;
34
34
  private buildHtmlByCached;
@@ -1 +1 @@
1
- {"version":3,"file":"GXVisualizer.d.ts","sourceRoot":"","sources":["../../../src/libs/visualizer/GXVisualizer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACpE,OAAO,KAAK,EAAE,kBAAkB,EAA0B,MAAM,SAAS,CAAC;AAG1E,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAmCzD,UAAU,qBAAsB,SAAQ,UAAU;IAChD,UAAU,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IACjE,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IACrF,SAAS,EAAE,CAAC,aAAa,EAAE,aAAa,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5F,YAAY,EAAE,CAAC,IAAI,EAAE,iBAAiB,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5D;AAED,qBAAa,YAAa,SAAQ,UAAW,YAAW,qBAAqB;IAC3E,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,gBAAgB,CAAyB;IACjD,OAAO,CAAC,aAAa,CAAsB;IAC3C,OAAO,CAAC,iBAAiB,CAA0B;IACnD,OAAO,CAAC,gBAAgB,CAAyB;;IAkBjD,UAAU,GAAU,OAAO,kBAAkB,KAAG,OAAO,CAAC,YAAY,CAAC,CAcnE;IAEF,UAAU,GAAU,UAAU,MAAM,EAAE,SAAS,kBAAkB,KAAG,OAAO,CAAC,YAAY,CAAC,CAmBvF;IAEF;;;;;OAKG;IACH,SAAS,GAAI,eAAe,aAAa,EAAE,EAAE,SAAS,MAAM,EAAE,qBAAmB,KAAG,IAAI,CAGtF;IAEF;;;OAGG;IACH,YAAY,GAAU,MAAM,iBAAiB,EAAE,KAAG,OAAO,CAAC,IAAI,CAAC,CAG7D;IAEF,OAAO,CAAC,iBAAiB,CAGvB;IAEF,OAAO,CAAC,gBAAgB,CAGtB;IAEF,OAAO,CAAC,iBAAiB,CAgCvB;IAEF,OAAO,CAAC,iBAAiB,CA6BvB;IAEF,OAAO,CAAC,UAAU,CAEhB;IAEF,OAAO,CAAC,aAAa,CASnB;IAEF,OAAO,CAAC,gBAAgB,CAItB;CACH"}
1
+ {"version":3,"file":"GXVisualizer.d.ts","sourceRoot":"","sources":["../../../src/libs/visualizer/GXVisualizer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,KAAK,EAAE,kBAAkB,EAA0B,MAAM,SAAS,CAAC;AAG1E,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAmCzD,UAAU,qBAAsB,SAAQ,UAAU;IAChD,UAAU,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IACjE,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IACrF,SAAS,EAAE,CAAC,aAAa,EAAE,aAAa,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5F,YAAY,EAAE,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACxD;AAED,qBAAa,YAAa,SAAQ,UAAW,YAAW,qBAAqB;IAC3E,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,gBAAgB,CAAyB;IACjD,OAAO,CAAC,aAAa,CAAsB;IAC3C,OAAO,CAAC,iBAAiB,CAA0B;IACnD,OAAO,CAAC,gBAAgB,CAAyB;;IAkBjD,UAAU,GAAU,OAAO,kBAAkB,KAAG,OAAO,CAAC,YAAY,CAAC,CAcnE;IAEF,UAAU,GAAU,UAAU,MAAM,EAAE,SAAS,kBAAkB,KAAG,OAAO,CAAC,YAAY,CAAC,CAmBvF;IAEF;;;;;OAKG;IACH,SAAS,GAAI,eAAe,aAAa,EAAE,EAAE,SAAS,MAAM,EAAE,qBAAmB,KAAG,IAAI,CAGtF;IAEF;;;OAGG;IACH,YAAY,GAAU,MAAM,aAAa,EAAE,KAAG,OAAO,CAAC,IAAI,CAAC,CAGzD;IAEF,OAAO,CAAC,iBAAiB,CAGvB;IAEF,OAAO,CAAC,gBAAgB,CAGtB;IAEF,OAAO,CAAC,iBAAiB,CAgCvB;IAEF,OAAO,CAAC,iBAAiB,CA6BvB;IAEF,OAAO,CAAC,UAAU,CAEhB;IAEF,OAAO,CAAC,aAAa,CASnB;IAEF,OAAO,CAAC,gBAAgB,CAItB;CACH"}
@@ -1,4 +1,4 @@
1
+ export type { IScrollBucket } from './renderers';
1
2
  export { htmlCache } from './cache';
2
3
  export { GXVisualizer } from './GXVisualizer';
3
- export type { ScrollBucketInput } from './renderers';
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/libs/visualizer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/libs/visualizer/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC"}
@@ -1,17 +1,6 @@
1
1
  import type { HeatmapHelper } from '@gemx-dev/clarity-visualize';
2
- export interface ScrollBucketInput {
3
- /** Position marker (0, 5, 10, ..., 95).
4
- * - position=0 → bucket range 0–5%
5
- * - position=10 → bucket range 5–10%
6
- * - position=15 → bucket range 10–15%
7
- * Each non-zero position is the END of its bucket; 0 is the special start marker.
8
- */
9
- position: number;
10
- /** Absolute value (e.g. revenue, attention time) */
11
- value: number;
12
- /** Relative percentage: value / total * 100. Used for color scale. */
13
- percent: number;
14
- }
2
+ import type { IScrollBucket } from '../../../types';
3
+ export type { IScrollBucket };
15
4
  export declare class ScrollBucketRenderer {
16
5
  private heatmap;
17
6
  private lastData;
@@ -29,17 +18,8 @@ export declare class ScrollBucketRenderer {
29
18
  * duplicate portal canvas management.
30
19
  * Stores data so the canvas can be redrawn when iframe height changes.
31
20
  */
32
- renderBucket: (data: ScrollBucketInput[]) => Promise<void>;
21
+ renderBucket: (data: IScrollBucket[]) => Promise<void>;
33
22
  private draw;
34
- /**
35
- * Convert flat position markers → structured buckets with startY/endY.
36
- *
37
- * Input positions: [0, 5, 10, 15, ..., 95]
38
- * position=0 → { startY: 0, endY: 5 }
39
- * position=5 → { startY: 5, endY: 10 }
40
- * position=95 → { startY: 95, endY: 100 }
41
- * Each position is the START of its bucket; end = next position (or 100 for last).
42
- */
43
23
  private mapToBuckets;
44
24
  }
45
25
  //# sourceMappingURL=ScrollBucketRenderer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ScrollBucketRenderer.d.ts","sourceRoot":"","sources":["../../../../src/libs/visualizer/renderers/ScrollBucketRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAEjE,MAAM,WAAW,iBAAiB;IAChC;;;;;OAKG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,OAAO,EAAE,MAAM,CAAC;CACjB;AAYD,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,QAAQ,CAAoC;IACpD,OAAO,CAAC,kBAAkB,CAAqC;IAC/D,OAAO,CAAC,aAAa,CAA8C;gBAEvD,OAAO,EAAE,aAAa,GAAG,IAAI;IAKzC,OAAO,CAAC,MAAM,CAIZ;IAEF,OAAO,CAAC,wBAAwB,CAI9B;IAEF,OAAO,CAAC,wBAAwB,CAS9B;IAEF,KAAK,QAAO,IAAI,CAEd;IAEF,KAAK,QAAO,IAAI,CAGd;IAEF;;;;;OAKG;IACH,YAAY,GAAU,MAAM,iBAAiB,EAAE,KAAG,OAAO,CAAC,IAAI,CAAC,CAQ7D;IAEF,OAAO,CAAC,IAAI,CAuDV;IAEF;;;;;;;;OAQG;IACH,OAAO,CAAC,YAAY,CASlB;CACH"}
1
+ {"version":3,"file":"ScrollBucketRenderer.d.ts","sourceRoot":"","sources":["../../../../src/libs/visualizer/renderers/ScrollBucketRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,YAAY,EAAE,aAAa,EAAE,CAAC;AAK9B,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,QAAQ,CAAgC;IAChD,OAAO,CAAC,kBAAkB,CAAqC;IAC/D,OAAO,CAAC,aAAa,CAA8C;gBAEvD,OAAO,EAAE,aAAa,GAAG,IAAI;IAKzC,OAAO,CAAC,MAAM,CAIZ;IAEF,OAAO,CAAC,wBAAwB,CAI9B;IAEF,OAAO,CAAC,wBAAwB,CAS9B;IAEF,KAAK,QAAO,IAAI,CAEd;IAEF,KAAK,QAAO,IAAI,CAGd;IAEF;;;;;OAKG;IACH,YAAY,GAAU,MAAM,aAAa,EAAE,KAAG,OAAO,CAAC,IAAI,CAAC,CAQzD;IAEF,OAAO,CAAC,IAAI,CAuDV;IAEF,OAAO,CAAC,YAAY,CAGlB;CACH"}
@@ -1,3 +1,3 @@
1
1
  export { AttentionMapRenderer, type AttentionData } from './AttentionMapRenderer';
2
- export { ScrollBucketRenderer, type ScrollBucketInput } from './ScrollBucketRenderer';
2
+ export { ScrollBucketRenderer, type IScrollBucket } from './ScrollBucketRenderer';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/libs/visualizer/renderers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,KAAK,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAClF,OAAO,EAAE,oBAAoB,EAAE,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/libs/visualizer/renderers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,KAAK,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAClF,OAAO,EAAE,oBAAoB,EAAE,KAAK,aAAa,EAAE,MAAM,wBAAwB,CAAC"}
@@ -23,6 +23,14 @@ export interface IScrollMapInfo {
23
23
  totalSessions: number;
24
24
  totalTimeOnPage: number;
25
25
  }
26
+ export interface IScrollBucket {
27
+ startY: number;
28
+ endY: number;
29
+ /** Absolute value (e.g. revenue, attention time) */
30
+ value: number;
31
+ /** Relative percentage: value / total * 100. Used for color scale. */
32
+ percent: number;
33
+ }
26
34
  export type IScrollMapMode = 'basic' | 'metrics';
27
35
  export interface IScrollZonePosition {
28
36
  top: number;
@@ -1 +1 @@
1
- {"version":3,"file":"viz-scrollmap.d.ts","sourceRoot":"","sources":["../../src/types/viz-scrollmap.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,eAAe,EAAE,MAAM,CAAC;IACxB,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,SAAS,CAAC;AAEjD,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,kBAAkB,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC"}
1
+ {"version":3,"file":"viz-scrollmap.d.ts","sourceRoot":"","sources":["../../src/types/viz-scrollmap.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,eAAe,EAAE,MAAM,CAAC;IACxB,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,SAAS,CAAC;AAEjD,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,kBAAkB,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC"}
@@ -4,6 +4,7 @@ export * from './dom';
4
4
  export * from './logger';
5
5
  export * from './observable';
6
6
  export * from './retry';
7
+ export * from './scrollmap';
7
8
  export * from './sort';
8
9
  export * from './throttle';
9
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Given a list of items where each item represents the START of a bucket,
3
+ * returns each item enriched with `startY` (= position) and `endY` (= next position, or 100 for the last bucket).
4
+ *
5
+ * Works for any scroll data shape (depth, attention, revenue).
6
+ */
7
+ export declare function buildBuckets<T>(items: T[], getPosition: (item: T) => number): Array<T & {
8
+ startY: number;
9
+ endY: number;
10
+ }>;
11
+ //# sourceMappingURL=scrollmap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scrollmap.d.ts","sourceRoot":"","sources":["../../src/utils/scrollmap.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAC5B,KAAK,EAAE,CAAC,EAAE,EACV,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,GAC/B,KAAK,CAAC,CAAC,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAQ7C"}
@@ -1 +1 @@
1
- {"version":3,"file":"useScrollmap.d.ts","sourceRoot":"","sources":["../../../src/hooks/viz-canvas/useScrollmap.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,YAAY;;CAuDxB,CAAC"}
1
+ {"version":3,"file":"useScrollmap.d.ts","sourceRoot":"","sources":["../../../src/hooks/viz-canvas/useScrollmap.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,YAAY;;CAwDxB,CAAC"}
@@ -5,6 +5,6 @@ export * from './hooks';
5
5
  export * from './types';
6
6
  export { decodeArrayClarity, decodeClarity, serializeAreas } from './helpers';
7
7
  export { useHeatmapCompareStore, useHeatmapConfigStore } from './stores';
8
- export { getElementAtPoint, getElementHash } from './utils';
8
+ export { buildBuckets, getElementAtPoint, getElementHash } from './utils';
9
9
  export * from './performance';
10
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AAExB,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE5D,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AAExB,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE1E,cAAc,eAAe,CAAC"}