@gemx-dev/heatmap-react 3.5.69 → 3.5.71

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.
@@ -1 +1 @@
1
- {"version":3,"file":"ElementCallout.d.ts","sourceRoot":"","sources":["../../../src/components/VizElement/ElementCallout.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAoB,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAiBvF,MAAM,MAAM,oBAAoB,GAAG,UAAU,GAAG,OAAO,CAAC;AAExD,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,WAAW,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC3C,SAAS,CAAC,EAAE,oBAAoB,CAAC;IACjC,MAAM,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAClC,YAAY,CAAC,EAAE,oBAAoB,CAAC;CACrC;AAED,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAgDxD,CAAC"}
1
+ {"version":3,"file":"ElementCallout.d.ts","sourceRoot":"","sources":["../../../src/components/VizElement/ElementCallout.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAoB,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAiBvF,MAAM,MAAM,oBAAoB,GAAG,UAAU,GAAG,OAAO,CAAC;AAExD,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,WAAW,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC3C,SAAS,CAAC,EAAE,oBAAoB,CAAC;IACjC,MAAM,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAClC,YAAY,CAAC,EAAE,oBAAoB,CAAC;CACrC;AAED,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAkDxD,CAAC"}
@@ -1,20 +1,20 @@
1
- import type { IClickMode, IClickRankType, IClickType, IDeviceType, IHeatmapType, IScrollType } from '../../types';
1
+ import type { EClickMode, EClickRankType, EClickType, EDeviceType, EHeatmapType, EScrollType } from '../../types';
2
2
  interface IHeatmapSettingState {
3
3
  isRendering: boolean;
4
- rankedBy: IClickRankType | undefined;
5
- deviceType: IDeviceType | undefined;
6
- clickType: IClickType | undefined;
7
- clickMode: IClickMode | undefined;
8
- scrollType: IScrollType | undefined;
9
- heatmapType: IHeatmapType | undefined;
4
+ rankedBy: EClickRankType | undefined;
5
+ deviceType: EDeviceType | undefined;
6
+ clickType: EClickType | undefined;
7
+ clickMode: EClickMode | undefined;
8
+ scrollType: EScrollType | undefined;
9
+ heatmapType: EHeatmapType | undefined;
10
10
  }
11
11
  interface IHeatmapSettingActions {
12
- setRankedBy: (rankedBy: IClickRankType) => void;
13
- setDeviceType: (deviceType: IDeviceType) => void;
14
- setClickType: (clickType: IClickType) => void;
15
- setClickMode: (clickMode: IClickMode) => void;
16
- setScrollType: (scrollType: IScrollType) => void;
17
- setHeatmapType: (heatmapType: IHeatmapType) => void;
12
+ setRankedBy: (rankedBy: EClickRankType) => void;
13
+ setDeviceType: (deviceType: EDeviceType) => void;
14
+ setClickType: (clickType: EClickType) => void;
15
+ setClickMode: (clickMode: EClickMode) => void;
16
+ setScrollType: (scrollType: EScrollType) => void;
17
+ setHeatmapType: (heatmapType: EHeatmapType) => void;
18
18
  setIsRendering: (isRendering: boolean) => void;
19
19
  clearView: (viewId: string) => void;
20
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"useReplayRender.d.ts","sourceRoot":"","sources":["../../../src/hooks/viz-render/useReplayRender.ts"],"names":[],"mappings":"AAUA,UAAU,sBAAsB;IAC9B,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;IACrD,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED,eAAO,MAAM,eAAe,QAAO,sBAiJlC,CAAC"}
1
+ {"version":3,"file":"useReplayRender.d.ts","sourceRoot":"","sources":["../../../src/hooks/viz-render/useReplayRender.ts"],"names":[],"mappings":"AASA,UAAU,sBAAsB;IAC9B,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;IACrD,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED,eAAO,MAAM,eAAe,QAAO,sBAgJlC,CAAC"}
package/dist/esm/index.js CHANGED
@@ -149,53 +149,53 @@ function useDebounceCallback(callback, delay) {
149
149
  }, [delay]);
150
150
  }
151
151
 
152
- var IDeviceType;
153
- (function (IDeviceType) {
154
- IDeviceType["Desktop"] = "DESKTOP";
155
- IDeviceType["Mobile"] = "MOBILE";
156
- IDeviceType["Tablet"] = "TABLET";
157
- })(IDeviceType || (IDeviceType = {}));
158
- var IHeatmapType;
159
- (function (IHeatmapType) {
160
- IHeatmapType["Click"] = "click";
161
- IHeatmapType["Scroll"] = "scroll";
162
- })(IHeatmapType || (IHeatmapType = {}));
163
- var IClickType;
164
- (function (IClickType) {
152
+ var EDeviceType;
153
+ (function (EDeviceType) {
154
+ EDeviceType["Desktop"] = "DESKTOP";
155
+ EDeviceType["Mobile"] = "MOBILE";
156
+ EDeviceType["Tablet"] = "TABLET";
157
+ })(EDeviceType || (EDeviceType = {}));
158
+ var EHeatmapType;
159
+ (function (EHeatmapType) {
160
+ EHeatmapType["Click"] = "click";
161
+ EHeatmapType["Scroll"] = "scroll";
162
+ })(EHeatmapType || (EHeatmapType = {}));
163
+ var EClickType;
164
+ (function (EClickType) {
165
165
  /** Return all clicks (default) */
166
- IClickType["All"] = "ALL";
166
+ EClickType["All"] = "ALL";
167
167
  /** Rapid clicks in a small area, indicating user frustration */
168
- IClickType["Rage"] = "RAGE";
168
+ EClickType["Rage"] = "RAGE";
169
169
  /** Clicks with no effect (no navigation, no state change) */
170
- IClickType["Dead"] = "DEAD";
170
+ EClickType["Dead"] = "DEAD";
171
171
  /** Clicks followed by JavaScript errors */
172
- IClickType["Error"] = "ERROR";
172
+ EClickType["Error"] = "ERROR";
173
173
  /** The first click of the session */
174
- IClickType["First"] = "FIRST";
174
+ EClickType["First"] = "FIRST";
175
175
  /** The last click of the session */
176
- IClickType["Last"] = "LAST";
176
+ EClickType["Last"] = "LAST";
177
177
  /** Normal click with no special behavior (fallback type) */
178
- IClickType["Standard"] = "STANDARD";
179
- })(IClickType || (IClickType = {}));
180
- var IClickRankType;
181
- (function (IClickRankType) {
182
- IClickRankType["MostClicks"] = "most-clicks";
183
- IClickRankType["Revenue"] = "revenue";
184
- IClickRankType["ConversionRate"] = "conversion-rate";
185
- IClickRankType["RevenuePerClick"] = "revenue-per-click";
186
- IClickRankType["RevenuePerSession"] = "revenue-per-session";
187
- })(IClickRankType || (IClickRankType = {}));
188
- var IClickMode;
189
- (function (IClickMode) {
190
- IClickMode["Default"] = "default";
191
- IClickMode["Area"] = "click-area";
192
- })(IClickMode || (IClickMode = {}));
193
- var IScrollType;
194
- (function (IScrollType) {
195
- IScrollType["Depth"] = "scroll-depth";
196
- IScrollType["Attention"] = "attention-scroll";
197
- IScrollType["Revenue"] = "revenue-scroll";
198
- })(IScrollType || (IScrollType = {}));
178
+ EClickType["Standard"] = "STANDARD";
179
+ })(EClickType || (EClickType = {}));
180
+ var EClickRankType;
181
+ (function (EClickRankType) {
182
+ EClickRankType["MostClicks"] = "most-clicks";
183
+ EClickRankType["Revenue"] = "revenue";
184
+ EClickRankType["ConversionRate"] = "conversion-rate";
185
+ EClickRankType["RevenuePerClick"] = "revenue-per-click";
186
+ EClickRankType["RevenuePerSession"] = "revenue-per-session";
187
+ })(EClickRankType || (EClickRankType = {}));
188
+ var EClickMode;
189
+ (function (EClickMode) {
190
+ EClickMode["Default"] = "default";
191
+ EClickMode["Area"] = "click-area";
192
+ })(EClickMode || (EClickMode = {}));
193
+ var EScrollType;
194
+ (function (EScrollType) {
195
+ EScrollType["Depth"] = "scroll-depth";
196
+ EScrollType["Attention"] = "attention-scroll";
197
+ EScrollType["Revenue"] = "revenue-scroll";
198
+ })(EScrollType || (EScrollType = {}));
199
199
 
200
200
  const ViewIdContext = createContext(undefined);
201
201
  const useViewIdContext = () => {
@@ -307,7 +307,7 @@ const useHeatmapConfigStore = create()((set) => {
307
307
  return {
308
308
  mode: 'single',
309
309
  sidebarWidth: DEFAULT_SIDEBAR_WIDTH,
310
- clickMode: IClickMode.Default,
310
+ clickMode: EClickMode.Default,
311
311
  isRendering: true,
312
312
  setMode: (mode) => set({ mode }),
313
313
  resetMode: () => set({ mode: 'single' }),
@@ -416,12 +416,12 @@ const useHeatmapDataStore = create()(subscribeWithSelector((set) => {
416
416
  const useHeatmapSettingStore = create()(subscribeWithSelector((set) => {
417
417
  return {
418
418
  isRendering: new Map([[DEFAULT_VIEW_ID, false]]),
419
- rankedBy: new Map([[DEFAULT_VIEW_ID, IClickRankType.MostClicks]]),
420
- deviceType: new Map([[DEFAULT_VIEW_ID, IDeviceType.Desktop]]),
421
- clickType: new Map([[DEFAULT_VIEW_ID, IClickType.All]]),
422
- clickMode: new Map([[DEFAULT_VIEW_ID, IClickMode.Default]]),
423
- scrollType: new Map([[DEFAULT_VIEW_ID, IScrollType.Depth]]),
424
- heatmapType: new Map([[DEFAULT_VIEW_ID, IHeatmapType.Click]]),
419
+ rankedBy: new Map([[DEFAULT_VIEW_ID, EClickRankType.MostClicks]]),
420
+ deviceType: new Map([[DEFAULT_VIEW_ID, EDeviceType.Desktop]]),
421
+ clickType: new Map([[DEFAULT_VIEW_ID, EClickType.All]]),
422
+ clickMode: new Map([[DEFAULT_VIEW_ID, EClickMode.Default]]),
423
+ scrollType: new Map([[DEFAULT_VIEW_ID, EScrollType.Depth]]),
424
+ heatmapType: new Map([[DEFAULT_VIEW_ID, EHeatmapType.Click]]),
425
425
  setIsRendering: (isRendering, viewId = DEFAULT_VIEW_ID) => set((prev) => {
426
426
  const newIsRendering = new Map(prev.isRendering);
427
427
  newIsRendering.set(viewId, isRendering);
@@ -503,12 +503,12 @@ const useHeatmapSettingStore = create()(subscribeWithSelector((set) => {
503
503
  }),
504
504
  resetAll: () => set({
505
505
  isRendering: new Map([[DEFAULT_VIEW_ID, false]]),
506
- rankedBy: new Map([[DEFAULT_VIEW_ID, IClickRankType.MostClicks]]),
507
- deviceType: new Map([[DEFAULT_VIEW_ID, IDeviceType.Desktop]]),
508
- clickType: new Map([[DEFAULT_VIEW_ID, IClickType.All]]),
509
- clickMode: new Map([[DEFAULT_VIEW_ID, IClickMode.Default]]),
510
- scrollType: new Map([[DEFAULT_VIEW_ID, IScrollType.Depth]]),
511
- heatmapType: new Map([[DEFAULT_VIEW_ID, IHeatmapType.Click]]),
506
+ rankedBy: new Map([[DEFAULT_VIEW_ID, EClickRankType.MostClicks]]),
507
+ deviceType: new Map([[DEFAULT_VIEW_ID, EDeviceType.Desktop]]),
508
+ clickType: new Map([[DEFAULT_VIEW_ID, EClickType.All]]),
509
+ clickMode: new Map([[DEFAULT_VIEW_ID, EClickMode.Default]]),
510
+ scrollType: new Map([[DEFAULT_VIEW_ID, EScrollType.Depth]]),
511
+ heatmapType: new Map([[DEFAULT_VIEW_ID, EHeatmapType.Click]]),
512
512
  }),
513
513
  };
514
514
  }));
@@ -1339,11 +1339,11 @@ const useHeatmapWidthByDevice = () => {
1339
1339
  if (!deviceType)
1340
1340
  return 1440;
1341
1341
  switch (deviceType) {
1342
- case IDeviceType.Desktop:
1342
+ case EDeviceType.Desktop:
1343
1343
  return 1440;
1344
- case IDeviceType.Tablet:
1344
+ case EDeviceType.Tablet:
1345
1345
  return 768;
1346
- case IDeviceType.Mobile:
1346
+ case EDeviceType.Mobile:
1347
1347
  return 375;
1348
1348
  }
1349
1349
  }
@@ -4449,15 +4449,15 @@ const useHeatmapCanvas = () => {
4449
4449
  const { start: startScrollmap } = useScrollmap();
4450
4450
  useEffect(() => {
4451
4451
  switch (heatmapType) {
4452
- case IHeatmapType.Click:
4453
- if (clickMode === IClickMode.Default) {
4452
+ case EHeatmapType.Click:
4453
+ if (clickMode === EClickMode.Default) {
4454
4454
  startClickmap();
4455
4455
  }
4456
4456
  else {
4457
4457
  startAreaClickmap();
4458
4458
  }
4459
4459
  break;
4460
- case IHeatmapType.Scroll:
4460
+ case EHeatmapType.Scroll:
4461
4461
  startScrollmap();
4462
4462
  break;
4463
4463
  }
@@ -6456,7 +6456,8 @@ function sortEvents(a, b) {
6456
6456
  }
6457
6457
 
6458
6458
  const useReplayRender = () => {
6459
- const setWidth = useHeatmapConfigStore((state) => state.setWidth);
6459
+ const setIframeHeight = useHeatmapVizRect((s) => s.setIframeHeight);
6460
+ const setIsRenderViz = useHeatmapViz((s) => s.setIsRenderViz);
6460
6461
  const { data } = useHeatmapData();
6461
6462
  const visualizerRef = useRef(null);
6462
6463
  const iframeRef = useRef(null);
@@ -6474,15 +6475,16 @@ const useReplayRender = () => {
6474
6475
  const mobile = isMobileDevice(userAgent);
6475
6476
  visualizer.setup(iframe.contentWindow, {
6476
6477
  version: envelope.version,
6477
- onresize: (width) => {
6478
- setWidth(width);
6478
+ onresize: (height) => {
6479
+ height && setIframeHeight(height);
6480
+ setIsRenderViz(true);
6479
6481
  },
6480
6482
  mobile,
6481
6483
  vNext: true,
6482
6484
  locale: 'en-us',
6483
6485
  });
6484
6486
  return visualizer;
6485
- }, [setWidth]);
6487
+ }, []);
6486
6488
  // Animation loop for replay
6487
6489
  const replayLoop = useCallback(() => {
6488
6490
  if (!isPlayingRef.current)
@@ -8319,13 +8321,13 @@ const VizElements = ({ iframeRef, visualRef, wrapperRef }) => {
8319
8321
  const VizClickmap = ({ iframeRef, visualRef, wrapperRef }) => {
8320
8322
  const clickMode = useHeatmapSetting((state) => state.clickMode);
8321
8323
  const heatmapType = useHeatmapSetting((state) => state.heatmapType);
8322
- const isClickType = heatmapType === IHeatmapType.Click;
8324
+ const isClickType = heatmapType === EHeatmapType.Click;
8323
8325
  if (!isClickType)
8324
8326
  return null;
8325
8327
  switch (clickMode) {
8326
- case IClickMode.Default:
8328
+ case EClickMode.Default:
8327
8329
  return jsx(VizElements, { iframeRef: iframeRef, visualRef: visualRef, wrapperRef: wrapperRef });
8328
- case IClickMode.Area:
8330
+ case EClickMode.Area:
8329
8331
  return (jsx(VizAreaClick, { iframeRef: iframeRef, visualRef: visualRef, autoCreateTopN: 10, onAreaClick: (_area) => {
8330
8332
  // console.log('area clicked', area);
8331
8333
  } }));
@@ -8335,7 +8337,7 @@ const VizClickmap = ({ iframeRef, visualRef, wrapperRef }) => {
8335
8337
  const ScrollMapMinimap = ({ zones, maxUsers }) => {
8336
8338
  const scrollType = useHeatmapSetting((s) => s.scrollType);
8337
8339
  const showMinimap = useHeatmapScroll((s) => s.showMinimap);
8338
- const isScrollType = [IScrollType.Attention].includes(scrollType ?? IScrollType.Depth);
8340
+ const isScrollType = [EScrollType.Attention].includes(scrollType ?? EScrollType.Depth);
8339
8341
  if (!showMinimap || !isScrollType)
8340
8342
  return null;
8341
8343
  return (jsx("div", { style: {
@@ -8506,7 +8508,7 @@ const ScrollmapMarker = ({ iframeRef, wrapperRef }) => {
8506
8508
  { percent: 25, label: '25%', color: '#EF4444' },
8507
8509
  { percent: 5, label: '5%', color: '#8B5CF6' },
8508
8510
  ];
8509
- const isScrollDepth = scrollType === IScrollType.Depth;
8511
+ const isScrollDepth = scrollType === EScrollType.Depth;
8510
8512
  if (!isScrollDepth)
8511
8513
  return null;
8512
8514
  return (jsx(Fragment, { children: boundaries.map((boundary) => {
@@ -8558,12 +8560,12 @@ const ScrollmapMarker = ({ iframeRef, wrapperRef }) => {
8558
8560
  }) }));
8559
8561
  };
8560
8562
 
8561
- const SCROLL_TYPES = [IHeatmapType.Scroll];
8563
+ const SCROLL_TYPES = [EHeatmapType.Scroll];
8562
8564
  const VizScrollMap = ({ iframeRef, wrapperRef }) => {
8563
8565
  const heatmapType = useHeatmapSetting((s) => s.heatmapType);
8564
8566
  const iframeHeight = useHeatmapVizRect((s) => s.iframeHeight);
8565
8567
  // useRenderCount('VizScrollMap');
8566
- const isHeatmapScroll = SCROLL_TYPES.includes(heatmapType ?? IHeatmapType.Click);
8568
+ const isHeatmapScroll = SCROLL_TYPES.includes(heatmapType ?? EHeatmapType.Click);
8567
8569
  if (!iframeHeight || !isHeatmapScroll)
8568
8570
  return null;
8569
8571
  return (jsxs("div", { style: {
@@ -8753,4 +8755,4 @@ const HeatmapLayout = ({ data, clickmap, clickAreas, scrollmap, controls, dataIn
8753
8755
  }
8754
8756
  };
8755
8757
 
8756
- export { BACKDROP_CONFIG, DEFAULT_SIDEBAR_WIDTH, DEFAULT_VIEW_ID, DEFAULT_ZOOM_RATIO, ELM_CALLOUT_CONFIG, GraphView, HEATMAP_CONFIG, HEATMAP_IFRAME, HEATMAP_STYLE, HeatmapLayout, IClickMode, IClickRankType, IClickType, IDeviceType, IHeatmapType, IScrollType, ViewIdContext, Z_INDEX, compareViewPerformance, convertViewportToIframeCoords, createStorePerformanceTracker, createViewContextHook, downloadPerformanceReport, getCompareViewId, getMetricsByViewId, getPerformanceReportJSON, getScrollGradientColor, performanceLogger, printPerformanceSummary, scrollToElementIfNeeded, sendPerformanceReport, serializeAreas, trackStoreAction, useAreaCreation, useAreaEditMode, useAreaFilterVisible, useAreaHydration, useAreaInteraction, useAreaPositionsUpdater, useAreaRectSync, useAreaRendererContainer, useAreaTopAutoDetect, useClickedElement, useDebounceCallback, useElementCalloutVisible, useHeatmapAreaClick, useHeatmapCanvas, useHeatmapClick, useHeatmapCompareStore, useHeatmapConfigStore, useHeatmapCopyView, useHeatmapData, useHeatmapEffects, useHeatmapElementPosition, useHeatmapHover, useHeatmapLiveStore, useHeatmapRenderByMode, useHeatmapScale, useHeatmapScroll, useHeatmapSetting, useHeatmapViz, useHeatmapVizRect, useHeatmapWidthByDevice, useHoveredElement, useIframeHeight, useIframeHeightProcessor, useMeasureFunction, useRegisterConfig, useRegisterControl, useRegisterData, useRegisterHeatmap, useRenderCount, useScrollmapZones, useTrackHookCall, useViewIdContext, useVizLiveRender, useWhyDidYouUpdate, useWrapperRefHeight, useZonePositions, withPerformanceTracking };
8758
+ export { BACKDROP_CONFIG, DEFAULT_SIDEBAR_WIDTH, DEFAULT_VIEW_ID, DEFAULT_ZOOM_RATIO, EClickMode, EClickRankType, EClickType, EDeviceType, EHeatmapType, ELM_CALLOUT_CONFIG, EScrollType, GraphView, HEATMAP_CONFIG, HEATMAP_IFRAME, HEATMAP_STYLE, HeatmapLayout, ViewIdContext, Z_INDEX, compareViewPerformance, convertViewportToIframeCoords, createStorePerformanceTracker, createViewContextHook, downloadPerformanceReport, getCompareViewId, getMetricsByViewId, getPerformanceReportJSON, getScrollGradientColor, performanceLogger, printPerformanceSummary, scrollToElementIfNeeded, sendPerformanceReport, serializeAreas, trackStoreAction, useAreaCreation, useAreaEditMode, useAreaFilterVisible, useAreaHydration, useAreaInteraction, useAreaPositionsUpdater, useAreaRectSync, useAreaRendererContainer, useAreaTopAutoDetect, useClickedElement, useDebounceCallback, useElementCalloutVisible, useHeatmapAreaClick, useHeatmapCanvas, useHeatmapClick, useHeatmapCompareStore, useHeatmapConfigStore, useHeatmapCopyView, useHeatmapData, useHeatmapEffects, useHeatmapElementPosition, useHeatmapHover, useHeatmapLiveStore, useHeatmapRenderByMode, useHeatmapScale, useHeatmapScroll, useHeatmapSetting, useHeatmapViz, useHeatmapVizRect, useHeatmapWidthByDevice, useHoveredElement, useIframeHeight, useIframeHeightProcessor, useMeasureFunction, useRegisterConfig, useRegisterControl, useRegisterData, useRegisterHeatmap, useRenderCount, useScrollmapZones, useTrackHookCall, useViewIdContext, useVizLiveRender, useWhyDidYouUpdate, useWrapperRefHeight, useZonePositions, withPerformanceTracking };
@@ -149,53 +149,53 @@ function useDebounceCallback(callback, delay) {
149
149
  }, [delay]);
150
150
  }
151
151
 
152
- var IDeviceType;
153
- (function (IDeviceType) {
154
- IDeviceType["Desktop"] = "DESKTOP";
155
- IDeviceType["Mobile"] = "MOBILE";
156
- IDeviceType["Tablet"] = "TABLET";
157
- })(IDeviceType || (IDeviceType = {}));
158
- var IHeatmapType;
159
- (function (IHeatmapType) {
160
- IHeatmapType["Click"] = "click";
161
- IHeatmapType["Scroll"] = "scroll";
162
- })(IHeatmapType || (IHeatmapType = {}));
163
- var IClickType;
164
- (function (IClickType) {
152
+ var EDeviceType;
153
+ (function (EDeviceType) {
154
+ EDeviceType["Desktop"] = "DESKTOP";
155
+ EDeviceType["Mobile"] = "MOBILE";
156
+ EDeviceType["Tablet"] = "TABLET";
157
+ })(EDeviceType || (EDeviceType = {}));
158
+ var EHeatmapType;
159
+ (function (EHeatmapType) {
160
+ EHeatmapType["Click"] = "click";
161
+ EHeatmapType["Scroll"] = "scroll";
162
+ })(EHeatmapType || (EHeatmapType = {}));
163
+ var EClickType;
164
+ (function (EClickType) {
165
165
  /** Return all clicks (default) */
166
- IClickType["All"] = "ALL";
166
+ EClickType["All"] = "ALL";
167
167
  /** Rapid clicks in a small area, indicating user frustration */
168
- IClickType["Rage"] = "RAGE";
168
+ EClickType["Rage"] = "RAGE";
169
169
  /** Clicks with no effect (no navigation, no state change) */
170
- IClickType["Dead"] = "DEAD";
170
+ EClickType["Dead"] = "DEAD";
171
171
  /** Clicks followed by JavaScript errors */
172
- IClickType["Error"] = "ERROR";
172
+ EClickType["Error"] = "ERROR";
173
173
  /** The first click of the session */
174
- IClickType["First"] = "FIRST";
174
+ EClickType["First"] = "FIRST";
175
175
  /** The last click of the session */
176
- IClickType["Last"] = "LAST";
176
+ EClickType["Last"] = "LAST";
177
177
  /** Normal click with no special behavior (fallback type) */
178
- IClickType["Standard"] = "STANDARD";
179
- })(IClickType || (IClickType = {}));
180
- var IClickRankType;
181
- (function (IClickRankType) {
182
- IClickRankType["MostClicks"] = "most-clicks";
183
- IClickRankType["Revenue"] = "revenue";
184
- IClickRankType["ConversionRate"] = "conversion-rate";
185
- IClickRankType["RevenuePerClick"] = "revenue-per-click";
186
- IClickRankType["RevenuePerSession"] = "revenue-per-session";
187
- })(IClickRankType || (IClickRankType = {}));
188
- var IClickMode;
189
- (function (IClickMode) {
190
- IClickMode["Default"] = "default";
191
- IClickMode["Area"] = "click-area";
192
- })(IClickMode || (IClickMode = {}));
193
- var IScrollType;
194
- (function (IScrollType) {
195
- IScrollType["Depth"] = "scroll-depth";
196
- IScrollType["Attention"] = "attention-scroll";
197
- IScrollType["Revenue"] = "revenue-scroll";
198
- })(IScrollType || (IScrollType = {}));
178
+ EClickType["Standard"] = "STANDARD";
179
+ })(EClickType || (EClickType = {}));
180
+ var EClickRankType;
181
+ (function (EClickRankType) {
182
+ EClickRankType["MostClicks"] = "most-clicks";
183
+ EClickRankType["Revenue"] = "revenue";
184
+ EClickRankType["ConversionRate"] = "conversion-rate";
185
+ EClickRankType["RevenuePerClick"] = "revenue-per-click";
186
+ EClickRankType["RevenuePerSession"] = "revenue-per-session";
187
+ })(EClickRankType || (EClickRankType = {}));
188
+ var EClickMode;
189
+ (function (EClickMode) {
190
+ EClickMode["Default"] = "default";
191
+ EClickMode["Area"] = "click-area";
192
+ })(EClickMode || (EClickMode = {}));
193
+ var EScrollType;
194
+ (function (EScrollType) {
195
+ EScrollType["Depth"] = "scroll-depth";
196
+ EScrollType["Attention"] = "attention-scroll";
197
+ EScrollType["Revenue"] = "revenue-scroll";
198
+ })(EScrollType || (EScrollType = {}));
199
199
 
200
200
  const ViewIdContext = createContext(undefined);
201
201
  const useViewIdContext = () => {
@@ -307,7 +307,7 @@ const useHeatmapConfigStore = create()((set) => {
307
307
  return {
308
308
  mode: 'single',
309
309
  sidebarWidth: DEFAULT_SIDEBAR_WIDTH,
310
- clickMode: IClickMode.Default,
310
+ clickMode: EClickMode.Default,
311
311
  isRendering: true,
312
312
  setMode: (mode) => set({ mode }),
313
313
  resetMode: () => set({ mode: 'single' }),
@@ -416,12 +416,12 @@ const useHeatmapDataStore = create()(subscribeWithSelector((set) => {
416
416
  const useHeatmapSettingStore = create()(subscribeWithSelector((set) => {
417
417
  return {
418
418
  isRendering: new Map([[DEFAULT_VIEW_ID, false]]),
419
- rankedBy: new Map([[DEFAULT_VIEW_ID, IClickRankType.MostClicks]]),
420
- deviceType: new Map([[DEFAULT_VIEW_ID, IDeviceType.Desktop]]),
421
- clickType: new Map([[DEFAULT_VIEW_ID, IClickType.All]]),
422
- clickMode: new Map([[DEFAULT_VIEW_ID, IClickMode.Default]]),
423
- scrollType: new Map([[DEFAULT_VIEW_ID, IScrollType.Depth]]),
424
- heatmapType: new Map([[DEFAULT_VIEW_ID, IHeatmapType.Click]]),
419
+ rankedBy: new Map([[DEFAULT_VIEW_ID, EClickRankType.MostClicks]]),
420
+ deviceType: new Map([[DEFAULT_VIEW_ID, EDeviceType.Desktop]]),
421
+ clickType: new Map([[DEFAULT_VIEW_ID, EClickType.All]]),
422
+ clickMode: new Map([[DEFAULT_VIEW_ID, EClickMode.Default]]),
423
+ scrollType: new Map([[DEFAULT_VIEW_ID, EScrollType.Depth]]),
424
+ heatmapType: new Map([[DEFAULT_VIEW_ID, EHeatmapType.Click]]),
425
425
  setIsRendering: (isRendering, viewId = DEFAULT_VIEW_ID) => set((prev) => {
426
426
  const newIsRendering = new Map(prev.isRendering);
427
427
  newIsRendering.set(viewId, isRendering);
@@ -503,12 +503,12 @@ const useHeatmapSettingStore = create()(subscribeWithSelector((set) => {
503
503
  }),
504
504
  resetAll: () => set({
505
505
  isRendering: new Map([[DEFAULT_VIEW_ID, false]]),
506
- rankedBy: new Map([[DEFAULT_VIEW_ID, IClickRankType.MostClicks]]),
507
- deviceType: new Map([[DEFAULT_VIEW_ID, IDeviceType.Desktop]]),
508
- clickType: new Map([[DEFAULT_VIEW_ID, IClickType.All]]),
509
- clickMode: new Map([[DEFAULT_VIEW_ID, IClickMode.Default]]),
510
- scrollType: new Map([[DEFAULT_VIEW_ID, IScrollType.Depth]]),
511
- heatmapType: new Map([[DEFAULT_VIEW_ID, IHeatmapType.Click]]),
506
+ rankedBy: new Map([[DEFAULT_VIEW_ID, EClickRankType.MostClicks]]),
507
+ deviceType: new Map([[DEFAULT_VIEW_ID, EDeviceType.Desktop]]),
508
+ clickType: new Map([[DEFAULT_VIEW_ID, EClickType.All]]),
509
+ clickMode: new Map([[DEFAULT_VIEW_ID, EClickMode.Default]]),
510
+ scrollType: new Map([[DEFAULT_VIEW_ID, EScrollType.Depth]]),
511
+ heatmapType: new Map([[DEFAULT_VIEW_ID, EHeatmapType.Click]]),
512
512
  }),
513
513
  };
514
514
  }));
@@ -1339,11 +1339,11 @@ const useHeatmapWidthByDevice = () => {
1339
1339
  if (!deviceType)
1340
1340
  return 1440;
1341
1341
  switch (deviceType) {
1342
- case IDeviceType.Desktop:
1342
+ case EDeviceType.Desktop:
1343
1343
  return 1440;
1344
- case IDeviceType.Tablet:
1344
+ case EDeviceType.Tablet:
1345
1345
  return 768;
1346
- case IDeviceType.Mobile:
1346
+ case EDeviceType.Mobile:
1347
1347
  return 375;
1348
1348
  }
1349
1349
  }
@@ -4449,15 +4449,15 @@ const useHeatmapCanvas = () => {
4449
4449
  const { start: startScrollmap } = useScrollmap();
4450
4450
  useEffect(() => {
4451
4451
  switch (heatmapType) {
4452
- case IHeatmapType.Click:
4453
- if (clickMode === IClickMode.Default) {
4452
+ case EHeatmapType.Click:
4453
+ if (clickMode === EClickMode.Default) {
4454
4454
  startClickmap();
4455
4455
  }
4456
4456
  else {
4457
4457
  startAreaClickmap();
4458
4458
  }
4459
4459
  break;
4460
- case IHeatmapType.Scroll:
4460
+ case EHeatmapType.Scroll:
4461
4461
  startScrollmap();
4462
4462
  break;
4463
4463
  }
@@ -6456,7 +6456,8 @@ function sortEvents(a, b) {
6456
6456
  }
6457
6457
 
6458
6458
  const useReplayRender = () => {
6459
- const setWidth = useHeatmapConfigStore((state) => state.setWidth);
6459
+ const setIframeHeight = useHeatmapVizRect((s) => s.setIframeHeight);
6460
+ const setIsRenderViz = useHeatmapViz((s) => s.setIsRenderViz);
6460
6461
  const { data } = useHeatmapData();
6461
6462
  const visualizerRef = useRef(null);
6462
6463
  const iframeRef = useRef(null);
@@ -6474,15 +6475,16 @@ const useReplayRender = () => {
6474
6475
  const mobile = isMobileDevice(userAgent);
6475
6476
  visualizer.setup(iframe.contentWindow, {
6476
6477
  version: envelope.version,
6477
- onresize: (width) => {
6478
- setWidth(width);
6478
+ onresize: (height) => {
6479
+ height && setIframeHeight(height);
6480
+ setIsRenderViz(true);
6479
6481
  },
6480
6482
  mobile,
6481
6483
  vNext: true,
6482
6484
  locale: 'en-us',
6483
6485
  });
6484
6486
  return visualizer;
6485
- }, [setWidth]);
6487
+ }, []);
6486
6488
  // Animation loop for replay
6487
6489
  const replayLoop = useCallback(() => {
6488
6490
  if (!isPlayingRef.current)
@@ -8319,13 +8321,13 @@ const VizElements = ({ iframeRef, visualRef, wrapperRef }) => {
8319
8321
  const VizClickmap = ({ iframeRef, visualRef, wrapperRef }) => {
8320
8322
  const clickMode = useHeatmapSetting((state) => state.clickMode);
8321
8323
  const heatmapType = useHeatmapSetting((state) => state.heatmapType);
8322
- const isClickType = heatmapType === IHeatmapType.Click;
8324
+ const isClickType = heatmapType === EHeatmapType.Click;
8323
8325
  if (!isClickType)
8324
8326
  return null;
8325
8327
  switch (clickMode) {
8326
- case IClickMode.Default:
8328
+ case EClickMode.Default:
8327
8329
  return jsx(VizElements, { iframeRef: iframeRef, visualRef: visualRef, wrapperRef: wrapperRef });
8328
- case IClickMode.Area:
8330
+ case EClickMode.Area:
8329
8331
  return (jsx(VizAreaClick, { iframeRef: iframeRef, visualRef: visualRef, autoCreateTopN: 10, onAreaClick: (_area) => {
8330
8332
  // console.log('area clicked', area);
8331
8333
  } }));
@@ -8335,7 +8337,7 @@ const VizClickmap = ({ iframeRef, visualRef, wrapperRef }) => {
8335
8337
  const ScrollMapMinimap = ({ zones, maxUsers }) => {
8336
8338
  const scrollType = useHeatmapSetting((s) => s.scrollType);
8337
8339
  const showMinimap = useHeatmapScroll((s) => s.showMinimap);
8338
- const isScrollType = [IScrollType.Attention].includes(scrollType ?? IScrollType.Depth);
8340
+ const isScrollType = [EScrollType.Attention].includes(scrollType ?? EScrollType.Depth);
8339
8341
  if (!showMinimap || !isScrollType)
8340
8342
  return null;
8341
8343
  return (jsx("div", { style: {
@@ -8506,7 +8508,7 @@ const ScrollmapMarker = ({ iframeRef, wrapperRef }) => {
8506
8508
  { percent: 25, label: '25%', color: '#EF4444' },
8507
8509
  { percent: 5, label: '5%', color: '#8B5CF6' },
8508
8510
  ];
8509
- const isScrollDepth = scrollType === IScrollType.Depth;
8511
+ const isScrollDepth = scrollType === EScrollType.Depth;
8510
8512
  if (!isScrollDepth)
8511
8513
  return null;
8512
8514
  return (jsx(Fragment, { children: boundaries.map((boundary) => {
@@ -8558,12 +8560,12 @@ const ScrollmapMarker = ({ iframeRef, wrapperRef }) => {
8558
8560
  }) }));
8559
8561
  };
8560
8562
 
8561
- const SCROLL_TYPES = [IHeatmapType.Scroll];
8563
+ const SCROLL_TYPES = [EHeatmapType.Scroll];
8562
8564
  const VizScrollMap = ({ iframeRef, wrapperRef }) => {
8563
8565
  const heatmapType = useHeatmapSetting((s) => s.heatmapType);
8564
8566
  const iframeHeight = useHeatmapVizRect((s) => s.iframeHeight);
8565
8567
  // useRenderCount('VizScrollMap');
8566
- const isHeatmapScroll = SCROLL_TYPES.includes(heatmapType ?? IHeatmapType.Click);
8568
+ const isHeatmapScroll = SCROLL_TYPES.includes(heatmapType ?? EHeatmapType.Click);
8567
8569
  if (!iframeHeight || !isHeatmapScroll)
8568
8570
  return null;
8569
8571
  return (jsxs("div", { style: {
@@ -8753,4 +8755,4 @@ const HeatmapLayout = ({ data, clickmap, clickAreas, scrollmap, controls, dataIn
8753
8755
  }
8754
8756
  };
8755
8757
 
8756
- export { BACKDROP_CONFIG, DEFAULT_SIDEBAR_WIDTH, DEFAULT_VIEW_ID, DEFAULT_ZOOM_RATIO, ELM_CALLOUT_CONFIG, GraphView, HEATMAP_CONFIG, HEATMAP_IFRAME, HEATMAP_STYLE, HeatmapLayout, IClickMode, IClickRankType, IClickType, IDeviceType, IHeatmapType, IScrollType, ViewIdContext, Z_INDEX, compareViewPerformance, convertViewportToIframeCoords, createStorePerformanceTracker, createViewContextHook, downloadPerformanceReport, getCompareViewId, getMetricsByViewId, getPerformanceReportJSON, getScrollGradientColor, performanceLogger, printPerformanceSummary, scrollToElementIfNeeded, sendPerformanceReport, serializeAreas, trackStoreAction, useAreaCreation, useAreaEditMode, useAreaFilterVisible, useAreaHydration, useAreaInteraction, useAreaPositionsUpdater, useAreaRectSync, useAreaRendererContainer, useAreaTopAutoDetect, useClickedElement, useDebounceCallback, useElementCalloutVisible, useHeatmapAreaClick, useHeatmapCanvas, useHeatmapClick, useHeatmapCompareStore, useHeatmapConfigStore, useHeatmapCopyView, useHeatmapData, useHeatmapEffects, useHeatmapElementPosition, useHeatmapHover, useHeatmapLiveStore, useHeatmapRenderByMode, useHeatmapScale, useHeatmapScroll, useHeatmapSetting, useHeatmapViz, useHeatmapVizRect, useHeatmapWidthByDevice, useHoveredElement, useIframeHeight, useIframeHeightProcessor, useMeasureFunction, useRegisterConfig, useRegisterControl, useRegisterData, useRegisterHeatmap, useRenderCount, useScrollmapZones, useTrackHookCall, useViewIdContext, useVizLiveRender, useWhyDidYouUpdate, useWrapperRefHeight, useZonePositions, withPerformanceTracking };
8758
+ export { BACKDROP_CONFIG, DEFAULT_SIDEBAR_WIDTH, DEFAULT_VIEW_ID, DEFAULT_ZOOM_RATIO, EClickMode, EClickRankType, EClickType, EDeviceType, EHeatmapType, ELM_CALLOUT_CONFIG, EScrollType, GraphView, HEATMAP_CONFIG, HEATMAP_IFRAME, HEATMAP_STYLE, HeatmapLayout, ViewIdContext, Z_INDEX, compareViewPerformance, convertViewportToIframeCoords, createStorePerformanceTracker, createViewContextHook, downloadPerformanceReport, getCompareViewId, getMetricsByViewId, getPerformanceReportJSON, getScrollGradientColor, performanceLogger, printPerformanceSummary, scrollToElementIfNeeded, sendPerformanceReport, serializeAreas, trackStoreAction, useAreaCreation, useAreaEditMode, useAreaFilterVisible, useAreaHydration, useAreaInteraction, useAreaPositionsUpdater, useAreaRectSync, useAreaRendererContainer, useAreaTopAutoDetect, useClickedElement, useDebounceCallback, useElementCalloutVisible, useHeatmapAreaClick, useHeatmapCanvas, useHeatmapClick, useHeatmapCompareStore, useHeatmapConfigStore, useHeatmapCopyView, useHeatmapData, useHeatmapEffects, useHeatmapElementPosition, useHeatmapHover, useHeatmapLiveStore, useHeatmapRenderByMode, useHeatmapScale, useHeatmapScroll, useHeatmapSetting, useHeatmapViz, useHeatmapVizRect, useHeatmapWidthByDevice, useHoveredElement, useIframeHeight, useIframeHeightProcessor, useMeasureFunction, useRegisterConfig, useRegisterControl, useRegisterData, useRegisterHeatmap, useRenderCount, useScrollmapZones, useTrackHookCall, useViewIdContext, useVizLiveRender, useWhyDidYouUpdate, useWrapperRefHeight, useZonePositions, withPerformanceTracking };
@@ -1,19 +1,19 @@
1
- import { IClickMode, IClickRankType, IClickType, IDeviceType, IHeatmapType, IScrollType } from '../types';
1
+ import { EClickMode, EClickRankType, EClickType, EDeviceType, EHeatmapType, EScrollType } from '../types';
2
2
  export interface IHeatmapSettingStore {
3
3
  isRendering: Map<string, boolean>;
4
- rankedBy: Map<string, IClickRankType | undefined>;
5
- deviceType: Map<string, IDeviceType | undefined>;
6
- clickType: Map<string, IClickType | undefined>;
7
- clickMode: Map<string, IClickMode | undefined>;
8
- scrollType: Map<string, IScrollType | undefined>;
9
- heatmapType: Map<string, IHeatmapType | undefined>;
4
+ rankedBy: Map<string, EClickRankType | undefined>;
5
+ deviceType: Map<string, EDeviceType | undefined>;
6
+ clickType: Map<string, EClickType | undefined>;
7
+ clickMode: Map<string, EClickMode | undefined>;
8
+ scrollType: Map<string, EScrollType | undefined>;
9
+ heatmapType: Map<string, EHeatmapType | undefined>;
10
10
  setIsRendering: (isRendering: boolean, viewId?: string) => void;
11
- setRankedBy: (rankedBy: IClickRankType, viewId?: string) => void;
12
- setDeviceType: (deviceType: IDeviceType, viewId?: string) => void;
13
- setClickType: (clickType: IClickType, viewId?: string) => void;
14
- setClickMode: (clickMode: IClickMode, viewId?: string) => void;
15
- setScrollType: (scrollType: IScrollType, viewId?: string) => void;
16
- setHeatmapType: (heatmapType: IHeatmapType, viewId?: string) => void;
11
+ setRankedBy: (rankedBy: EClickRankType, viewId?: string) => void;
12
+ setDeviceType: (deviceType: EDeviceType, viewId?: string) => void;
13
+ setClickType: (clickType: EClickType, viewId?: string) => void;
14
+ setClickMode: (clickMode: EClickMode, viewId?: string) => void;
15
+ setScrollType: (scrollType: EScrollType, viewId?: string) => void;
16
+ setHeatmapType: (heatmapType: EHeatmapType, viewId?: string) => void;
17
17
  copyView: (fromViewId: string, toViewId: string) => void;
18
18
  clearView: (viewId: string) => void;
19
19
  resetAll: () => void;
@@ -7,6 +7,7 @@ export interface IMetricResult<K = number | undefined, F = string> {
7
7
  export interface IClickMapMetricData<K = number | undefined, F = string> {
8
8
  hash: string;
9
9
  selector?: string;
10
+ listSelectors?: string[];
10
11
  totalClicked: IMetricResult<K, F>;
11
12
  totalOrders: IMetricResult<K, F>;
12
13
  totalRevenue: IMetricResult<K, F>;
@@ -1 +1 @@
1
- {"version":3,"file":"heatmap-info.d.ts","sourceRoot":"","sources":["../../src/types/heatmap-info.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,MAAM,WAAW,aAAa,CAAC,CAAC,GAAG,MAAM,GAAG,SAAS,EAAE,CAAC,GAAG,MAAM;IAC/D,SAAS,EAAE,CAAC,CAAC;IACb,KAAK,EAAE,CAAC,CAAC;CACV;AAED,MAAM,WAAW,mBAAmB,CAAC,CAAC,GAAG,MAAM,GAAG,SAAS,EAAE,CAAC,GAAG,MAAM;IACrE,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAClC,WAAW,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACjC,YAAY,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAClC,cAAc,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACpC,eAAe,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACrC,iBAAiB,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACvC,aAAa,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,eAAe,CAAC,CAAC,GAAG,MAAM,GAAG,SAAS,EAAE,CAAC,GAAG,MAAM;IACjE,CAAC,GAAG,EAAE,MAAM,GAAG,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,YAAY;IAC3B,cAAc,CAAC,EAAE,eAAe,EAAE,CAAC;IACnC,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB"}
1
+ {"version":3,"file":"heatmap-info.d.ts","sourceRoot":"","sources":["../../src/types/heatmap-info.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,MAAM,WAAW,aAAa,CAAC,CAAC,GAAG,MAAM,GAAG,SAAS,EAAE,CAAC,GAAG,MAAM;IAC/D,SAAS,EAAE,CAAC,CAAC;IACb,KAAK,EAAE,CAAC,CAAC;CACV;AAED,MAAM,WAAW,mBAAmB,CAAC,CAAC,GAAG,MAAM,GAAG,SAAS,EAAE,CAAC,GAAG,MAAM;IACrE,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,YAAY,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAClC,WAAW,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACjC,YAAY,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAClC,cAAc,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACpC,eAAe,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACrC,iBAAiB,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACvC,aAAa,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,eAAe,CAAC,CAAC,GAAG,MAAM,GAAG,SAAS,EAAE,CAAC,GAAG,MAAM;IACjE,CAAC,GAAG,EAAE,MAAM,GAAG,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,YAAY;IAC3B,cAAc,CAAC,EAAE,eAAe,EAAE,CAAC;IACnC,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB"}