@gemx-dev/heatmap-react 3.5.92-dev.10 → 3.5.92-dev.12

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 (50) hide show
  1. package/dist/esm/components/Layout/HeatmapLayout.d.ts +2 -0
  2. package/dist/esm/components/Layout/HeatmapLayout.d.ts.map +1 -1
  3. package/dist/esm/hooks/common/useHeatmapWidthByDevice.d.ts.map +1 -1
  4. package/dist/esm/hooks/register/useRegisterConfig.d.ts +3 -1
  5. package/dist/esm/hooks/register/useRegisterConfig.d.ts.map +1 -1
  6. package/dist/esm/hooks/view-context/useHeatmapDataContext.d.ts +2 -0
  7. package/dist/esm/hooks/view-context/useHeatmapDataContext.d.ts.map +1 -1
  8. package/dist/esm/hooks/viz-render/useHeatmapRender.d.ts.map +1 -1
  9. package/dist/esm/index.js +105 -25
  10. package/dist/esm/index.mjs +105 -25
  11. package/dist/esm/libs/iframe-processor/index.d.ts +1 -1
  12. package/dist/esm/libs/iframe-processor/index.d.ts.map +1 -1
  13. package/dist/esm/libs/iframe-processor/processors/viewport/global-fixes/global-fixes/viewport-unit-replacer/fixes.d.ts.map +1 -1
  14. package/dist/esm/libs/index.d.ts +1 -0
  15. package/dist/esm/libs/index.d.ts.map +1 -1
  16. package/dist/esm/libs/perf.d.ts +83 -0
  17. package/dist/esm/libs/perf.d.ts.map +1 -0
  18. package/dist/esm/stores/config.d.ts +4 -0
  19. package/dist/esm/stores/config.d.ts.map +1 -1
  20. package/dist/esm/stores/data.d.ts +2 -0
  21. package/dist/esm/stores/data.d.ts.map +1 -1
  22. package/dist/esm/types/heatmap.d.ts +1 -0
  23. package/dist/esm/types/heatmap.d.ts.map +1 -1
  24. package/dist/umd/components/Layout/HeatmapLayout.d.ts +2 -0
  25. package/dist/umd/components/Layout/HeatmapLayout.d.ts.map +1 -1
  26. package/dist/umd/hooks/common/useHeatmapWidthByDevice.d.ts.map +1 -1
  27. package/dist/umd/hooks/register/useRegisterConfig.d.ts +3 -1
  28. package/dist/umd/hooks/register/useRegisterConfig.d.ts.map +1 -1
  29. package/dist/umd/hooks/view-context/useHeatmapDataContext.d.ts +2 -0
  30. package/dist/umd/hooks/view-context/useHeatmapDataContext.d.ts.map +1 -1
  31. package/dist/umd/hooks/viz-render/useHeatmapRender.d.ts.map +1 -1
  32. package/dist/umd/index.js +2 -2
  33. package/dist/umd/libs/iframe-processor/index.d.ts +1 -1
  34. package/dist/umd/libs/iframe-processor/index.d.ts.map +1 -1
  35. package/dist/umd/libs/iframe-processor/processors/viewport/global-fixes/global-fixes/viewport-unit-replacer/fixes.d.ts.map +1 -1
  36. package/dist/umd/libs/index.d.ts +1 -0
  37. package/dist/umd/libs/index.d.ts.map +1 -1
  38. package/dist/umd/libs/perf.d.ts +83 -0
  39. package/dist/umd/libs/perf.d.ts.map +1 -0
  40. package/dist/umd/stores/config.d.ts +4 -0
  41. package/dist/umd/stores/config.d.ts.map +1 -1
  42. package/dist/umd/stores/data.d.ts +2 -0
  43. package/dist/umd/stores/data.d.ts.map +1 -1
  44. package/dist/umd/types/heatmap.d.ts +1 -0
  45. package/dist/umd/types/heatmap.d.ts.map +1 -1
  46. package/package.json +4 -4
  47. package/dist/esm/libs/iframe-processor/shared/perf.d.ts +0 -58
  48. package/dist/esm/libs/iframe-processor/shared/perf.d.ts.map +0 -1
  49. package/dist/umd/libs/iframe-processor/shared/perf.d.ts +0 -58
  50. package/dist/umd/libs/iframe-processor/shared/perf.d.ts.map +0 -1
@@ -152,6 +152,7 @@ function useDebounceCallback(callback, delay) {
152
152
 
153
153
  var EDeviceType;
154
154
  (function (EDeviceType) {
155
+ EDeviceType["DesktopLarge"] = "DESKTOP_LARGE";
155
156
  EDeviceType["Desktop"] = "DESKTOP";
156
157
  EDeviceType["Mobile"] = "MOBILE";
157
158
  EDeviceType["Tablet"] = "TABLET";
@@ -319,15 +320,20 @@ const useHeatmapConfigStore = create()((set) => {
319
320
  return {
320
321
  mode: EHeatmapMode.Single,
321
322
  sidebarWidth: DEFAULT_SIDEBAR_WIDTH,
323
+ shopId: undefined,
324
+ excludeClassNames: [],
322
325
  setMode: (mode) => set({ mode }),
323
326
  resetMode: () => set({ mode: EHeatmapMode.Single }),
324
327
  setSidebarWidth: (sidebarWidth) => set({ sidebarWidth }),
328
+ setShopId: (shopId) => set({ shopId }),
329
+ setExcludeClassNames: (excludeClassNames) => set({ excludeClassNames }),
325
330
  };
326
331
  });
327
332
 
328
333
  const useHeatmapDataStore = create()(subscribeWithSelector((set) => {
329
334
  return {
330
335
  data: new Map([[DEFAULT_VIEW_ID, undefined]]),
336
+ dataHash: new Map([[DEFAULT_VIEW_ID, undefined]]),
331
337
  dataSnapshot: new Map([[DEFAULT_VIEW_ID, undefined]]),
332
338
  clickmap: new Map([[DEFAULT_VIEW_ID, undefined]]),
333
339
  clickAreas: new Map([[DEFAULT_VIEW_ID, undefined]]),
@@ -361,6 +367,11 @@ const useHeatmapDataStore = create()(subscribeWithSelector((set) => {
361
367
  newData.set(viewId, data);
362
368
  return { data: newData };
363
369
  }),
370
+ setDataHash: (dataHash, viewId = DEFAULT_VIEW_ID) => set((prev) => {
371
+ const newDataHash = new Map(prev.dataHash);
372
+ newDataHash.set(viewId, dataHash);
373
+ return { dataHash: newDataHash };
374
+ }),
364
375
  setDataSnapshot: (data, viewId = DEFAULT_VIEW_ID) => set((prev) => {
365
376
  const newDataSnapshot = new Map(prev.dataSnapshot);
366
377
  newDataSnapshot.set(viewId, data);
@@ -394,8 +405,10 @@ const useHeatmapDataStore = create()(subscribeWithSelector((set) => {
394
405
  const newDataInfo = new Map(prev.dataInfo);
395
406
  const newScrollmap = new Map(prev.scrollmap);
396
407
  const newAttentionMap = new Map(prev.attentionMap);
408
+ const newDataHash = new Map(prev.dataHash);
397
409
  newData.set(toViewId, prev.data.get(fromViewId));
398
410
  newDataSnapshot.set(toViewId, prev.dataSnapshot.get(fromViewId));
411
+ newDataHash.set(toViewId, prev.dataHash.get(fromViewId));
399
412
  newClickmap.set(toViewId, prev.clickmap.get(fromViewId));
400
413
  newClickAreas.set(toViewId, prev.clickAreas.get(fromViewId));
401
414
  newDataInfo.set(toViewId, prev.dataInfo.get(fromViewId));
@@ -409,6 +422,7 @@ const useHeatmapDataStore = create()(subscribeWithSelector((set) => {
409
422
  dataInfo: newDataInfo,
410
423
  scrollmap: newScrollmap,
411
424
  attentionMap: newAttentionMap,
425
+ dataHash: newDataHash,
412
426
  };
413
427
  }),
414
428
  clearView: (viewId) => set((prev) => {
@@ -419,8 +433,10 @@ const useHeatmapDataStore = create()(subscribeWithSelector((set) => {
419
433
  const newDataInfo = new Map(prev.dataInfo);
420
434
  const newScrollmap = new Map(prev.scrollmap);
421
435
  const newAttentionMap = new Map(prev.attentionMap);
436
+ const newDataHash = new Map(prev.dataHash);
422
437
  newData.delete(viewId);
423
438
  newDataSnapshot.delete(viewId);
439
+ newDataHash.delete(viewId);
424
440
  newClickmap.delete(viewId);
425
441
  newClickAreas.delete(viewId);
426
442
  newDataInfo.delete(viewId);
@@ -429,6 +445,7 @@ const useHeatmapDataStore = create()(subscribeWithSelector((set) => {
429
445
  return {
430
446
  data: newData,
431
447
  dataSnapshot: newDataSnapshot,
448
+ dataHash: newDataHash,
432
449
  clickmap: newClickmap,
433
450
  clickAreas: newClickAreas,
434
451
  dataInfo: newDataInfo,
@@ -439,6 +456,7 @@ const useHeatmapDataStore = create()(subscribeWithSelector((set) => {
439
456
  resetAll: () => set({
440
457
  data: new Map([[DEFAULT_VIEW_ID, undefined]]),
441
458
  dataSnapshot: new Map([[DEFAULT_VIEW_ID, undefined]]),
459
+ dataHash: new Map([[DEFAULT_VIEW_ID, undefined]]),
442
460
  clickmap: new Map([[DEFAULT_VIEW_ID, undefined]]),
443
461
  clickAreas: new Map([[DEFAULT_VIEW_ID, undefined]]),
444
462
  dataInfo: new Map([[DEFAULT_VIEW_ID, undefined]]),
@@ -1286,6 +1304,7 @@ const useHeatmapDataContext = createViewContextHook({
1286
1304
  useStore: useHeatmapDataStore,
1287
1305
  getState: (store, viewId) => ({
1288
1306
  data: store.data.get(viewId),
1307
+ dataHash: store.dataHash.get(viewId),
1289
1308
  dataSnapshot: store.dataSnapshot.get(viewId),
1290
1309
  clickmap: store.clickmap.get(viewId),
1291
1310
  clickAreas: store.clickAreas.get(viewId),
@@ -1297,6 +1316,7 @@ const useHeatmapDataContext = createViewContextHook({
1297
1316
  getActions: (store, viewId) => ({
1298
1317
  setData: (newData) => store.setData(newData, viewId),
1299
1318
  setDataSnapshot: (newData) => store.setDataSnapshot(newData, viewId),
1319
+ setDataHash: (newHash) => store.setDataHash(newHash, viewId),
1300
1320
  setClickmap: (newClickmap) => store.setClickmap(newClickmap, viewId),
1301
1321
  setClickAreas: (newClickAreas) => store.setClickAreas(newClickAreas, viewId),
1302
1322
  setDataInfoByKey: (key, value) => store.setDataInfoByKey(key, value, viewId),
@@ -1513,6 +1533,8 @@ const useHeatmapWidthByDevice = () => {
1513
1533
  if (!deviceType)
1514
1534
  return 1440;
1515
1535
  switch (deviceType) {
1536
+ case EDeviceType.DesktopLarge:
1537
+ return 1920;
1516
1538
  case EDeviceType.Desktop:
1517
1539
  return 1440;
1518
1540
  case EDeviceType.Tablet:
@@ -1523,13 +1545,24 @@ const useHeatmapWidthByDevice = () => {
1523
1545
  }
1524
1546
  };
1525
1547
 
1526
- const useRegisterConfig = ({ isLoading, isLoadingCanvas, }) => {
1548
+ const useRegisterConfig = ({ shopId, isLoading, isLoadingCanvas, excludeClassNames, }) => {
1527
1549
  const mode = useHeatmapConfigStore((state) => state.mode);
1550
+ const shopIdStore = useHeatmapConfigStore((state) => state.shopId);
1528
1551
  const deviceType = useHeatmapSettingContext((state) => state.deviceType);
1529
1552
  const sidebarWidth = useHeatmapConfigStore((state) => state.sidebarWidth);
1530
1553
  const setIsRendering = useHeatmapSettingContext((state) => state.setIsRendering);
1531
1554
  const setIsLoadingDom = useHeatmapSettingContext((state) => state.setIsLoadingDom);
1532
1555
  const setIsLoadingCanvas = useHeatmapSettingContext((state) => state.setIsLoadingCanvas);
1556
+ const setShopId = useHeatmapConfigStore((state) => state.setShopId);
1557
+ const setExcludeClassNames = useHeatmapConfigStore((state) => state.setExcludeClassNames);
1558
+ useEffect(() => {
1559
+ if (!shopId || !!shopIdStore || shopIdStore === shopId)
1560
+ return;
1561
+ setShopId(shopId);
1562
+ }, [shopId, setShopId, shopIdStore]);
1563
+ useEffect(() => {
1564
+ setExcludeClassNames(excludeClassNames || []);
1565
+ }, [excludeClassNames, setExcludeClassNames]);
1533
1566
  useEffect(() => {
1534
1567
  setIsRendering(true);
1535
1568
  setTimeout(() => {
@@ -4031,18 +4064,27 @@ function useVizLiveIframeMsg(options = {}) {
4031
4064
  }
4032
4065
 
4033
4066
  /**
4034
- * Performance tracker measures render pipeline timings and stores results
4035
- * in `window.__gemxPerf` for inspection in DevTools.
4067
+ * Unified performance timing utility.
4036
4068
  *
4037
- * Usage:
4038
- * perf.startSession('render-1');
4039
- * const t = perf.mark('viewport.run');
4040
- * perf.measure('viewport.run', t);
4041
- * perf.endSession();
4069
+ * Two complementary tools:
4042
4070
  *
4043
- * // In DevTools:
4044
- * window.__gemxPerf.latest
4045
- * window.__gemxPerf.sessions
4071
+ * 1. `perf` — global DevTools session recorder.
4072
+ * Stores structured timing in `window.__gemxPerf` for inspection.
4073
+ * Used by the iframe-processor rendering pipeline.
4074
+ *
4075
+ * perf.startSession('render-1');
4076
+ * const t = perf.mark('viewport.run');
4077
+ * perf.measure('viewport.run', t);
4078
+ * perf.endSession();
4079
+ *
4080
+ * 2. `createPerfTimer` — per-module console logger factory.
4081
+ * Logs prefixed timings to the console AND records entries into the
4082
+ * active global session so they appear in `window.__gemxPerf` too.
4083
+ *
4084
+ * const timer = createPerfTimer('Render');
4085
+ * const t0 = timer.mark('start');
4086
+ * await timer.wrap('visualizer.html', () => visualizer.html(...));
4087
+ * timer.measure('total', t0);
4046
4088
  */
4047
4089
  const s = {
4048
4090
  enabled: true,
@@ -4050,7 +4092,7 @@ const s = {
4050
4092
  sessions: [],
4051
4093
  maxSessions: 20,
4052
4094
  };
4053
- // ── Functions ─────────────────────────────────────────────────────────────────
4095
+ // ── Global singleton functions ────────────────────────────────────────────────
4054
4096
  function startSession(id) {
4055
4097
  if (!s.enabled)
4056
4098
  return;
@@ -4067,7 +4109,7 @@ function endSession() {
4067
4109
  return session;
4068
4110
  }
4069
4111
  /** Record a point-in-time mark. Returns `performance.now()` for use with measure(). */
4070
- function mark$1(label) {
4112
+ function globalMark(label) {
4071
4113
  const now = performance.now();
4072
4114
  if (s.enabled && s.current) {
4073
4115
  s.current.entries.push({ label, t: now - s.current.startedAt });
@@ -4075,7 +4117,7 @@ function mark$1(label) {
4075
4117
  return now;
4076
4118
  }
4077
4119
  /** Record a duration from a previous mark() timestamp. */
4078
- function measure$1(label, t0) {
4120
+ function globalMeasure(label, t0) {
4079
4121
  const duration = performance.now() - t0;
4080
4122
  if (s.enabled && s.current) {
4081
4123
  s.current.entries.push({ label, t: t0 - s.current.startedAt, duration });
@@ -4088,26 +4130,34 @@ function getReport() {
4088
4130
  latest: s.sessions[0] ?? null,
4089
4131
  };
4090
4132
  }
4091
- function clear$1() {
4133
+ function clearSessions() {
4092
4134
  s.current = null;
4093
4135
  s.sessions = [];
4094
4136
  if (typeof window !== 'undefined')
4095
4137
  delete window.__gemxPerf;
4096
4138
  }
4097
- function enable$1() {
4139
+ function enableGlobal() {
4098
4140
  s.enabled = true;
4099
4141
  }
4100
- function disable$1() {
4142
+ function disableGlobal() {
4101
4143
  s.enabled = false;
4102
4144
  }
4103
- // ── Internal ──────────────────────────────────────────────────────────────────
4104
4145
  function flush() {
4105
4146
  if (typeof window === 'undefined')
4106
4147
  return;
4107
4148
  window.__gemxPerf = getReport();
4108
4149
  }
4109
- // ── Singleton export ──────────────────────────────────────────────────────────
4110
- const perf = { startSession, endSession, mark: mark$1, measure: measure$1, getReport, clear: clear$1, enable: enable$1, disable: disable$1 };
4150
+ // ── Global singleton export ───────────────────────────────────────────────────
4151
+ const perf = {
4152
+ startSession,
4153
+ endSession,
4154
+ mark: globalMark,
4155
+ measure: globalMeasure,
4156
+ getReport,
4157
+ clear: clearSessions,
4158
+ enable: enableGlobal,
4159
+ disable: disableGlobal,
4160
+ };
4111
4161
 
4112
4162
  /**
4113
4163
  * DOM observation setup — ResizeObserver + MutationObserver.
@@ -4845,6 +4895,25 @@ function getActiveFixes(ctx) {
4845
4895
  const logger$1 = createLogger({ enabled: false, prefix: 'ViewportUnitReplacer' });
4846
4896
  // ─── Constants ────────────────────────────────────────────────────────────────
4847
4897
  const HEIGHT_RELATED_PROPERTIES = ['height', 'min-height', 'max-height', 'top', 'bottom'];
4898
+ /**
4899
+ * Number of top-level CSS rules to process before yielding to the browser.
4900
+ * Keeps the main thread responsive during large stylesheets (prevents tab kill on mobile).
4901
+ */
4902
+ const YIELD_EVERY_RULES = 100;
4903
+ // ─── Scheduler ────────────────────────────────────────────────────────────────
4904
+ /**
4905
+ * Yield control back to the browser so it can handle input, paint frames, and
4906
+ * avoid "page unresponsive" / tab-kill on mobile during heavy CSS processing.
4907
+ *
4908
+ * Uses `scheduler.yield()` (Chrome 115+) when available; falls back to a
4909
+ * zero-timeout macrotask which is universally supported.
4910
+ */
4911
+ function yieldToMain() {
4912
+ if (typeof globalThis !== 'undefined' && 'scheduler' in globalThis) {
4913
+ return globalThis.scheduler.yield();
4914
+ }
4915
+ return new Promise((resolve) => setTimeout(resolve, 0));
4916
+ }
4848
4917
  // ─── Per-run tracking state (reset on each process() call) ───────────────────
4849
4918
  let elementsWithViewportUnits = new Set();
4850
4919
  let originalValues = new WeakMap();
@@ -4984,8 +5053,9 @@ function processRule(rule, ctx) {
4984
5053
  return count;
4985
5054
  }
4986
5055
  /** Processes only inline <style> sheets. Linked sheets are handled by processLinkedStylesheets. */
4987
- function processStylesheets(ctx) {
5056
+ async function processStylesheets(ctx) {
4988
5057
  let total = 0;
5058
+ let rulesSinceYield = 0;
4989
5059
  const sheets = ctx.doc.styleSheets;
4990
5060
  for (let i = 0; i < sheets.length; i++) {
4991
5061
  const sheet = sheets[i];
@@ -4995,6 +5065,11 @@ function processStylesheets(ctx) {
4995
5065
  const rules = sheet.cssRules;
4996
5066
  for (let j = 0; j < rules.length; j++) {
4997
5067
  total += processRule(rules[j], ctx);
5068
+ rulesSinceYield++;
5069
+ if (rulesSinceYield >= YIELD_EVERY_RULES) {
5070
+ rulesSinceYield = 0;
5071
+ await yieldToMain();
5072
+ }
4998
5073
  }
4999
5074
  }
5000
5075
  catch (e) {
@@ -5042,7 +5117,7 @@ async function process$1(ctx) {
5042
5117
  originalValues = new WeakMap();
5043
5118
  processInlineStyles(ctx);
5044
5119
  processStyleTags(ctx);
5045
- processStylesheets(ctx);
5120
+ await processStylesheets(ctx);
5046
5121
  await processLinkedStylesheets(ctx);
5047
5122
  // Wait for browser to apply the replaced styles
5048
5123
  await new Promise((resolve) => requestAnimationFrame(resolve));
@@ -6054,6 +6129,8 @@ function measure(label, startMs) {
6054
6129
  const useHeatmapRender = () => {
6055
6130
  const viewId = useViewIdContext();
6056
6131
  const data = useHeatmapDataContext((s) => s.data);
6132
+ const shopId = useHeatmapConfigStore((s) => s.shopId);
6133
+ const excludeClassNames = useHeatmapConfigStore((s) => s.excludeClassNames);
6057
6134
  const vizRef = useHeatmapVizRectContext((s) => s.vizRef);
6058
6135
  const setVizRef = useHeatmapVizRectContext((s) => s.setVizRef);
6059
6136
  const setIframeHeight = useHeatmapVizRectContext((s) => s.setIframeHeight);
@@ -6077,6 +6154,7 @@ const useHeatmapRender = () => {
6077
6154
  const visualizer = vizRef ?? new GXVisualizer();
6078
6155
  if (!vizRef)
6079
6156
  setVizRef(visualizer);
6157
+ visualizer.configure({ excludeClassNames });
6080
6158
  setIsRenderedViz(false);
6081
6159
  const iframe = iframeRef.current;
6082
6160
  if (!iframe?.contentWindow)
@@ -6090,6 +6168,7 @@ const useHeatmapRender = () => {
6090
6168
  startIframe({
6091
6169
  helperRef,
6092
6170
  iframe,
6171
+ shopId,
6093
6172
  deviceType,
6094
6173
  size: { width: contentWidth, height: wrapperHeight },
6095
6174
  t0,
@@ -6124,7 +6203,7 @@ const useHeatmapRender = () => {
6124
6203
  };
6125
6204
  };
6126
6205
  // ── Helpers ───────────────────────────────────────────────────────────────────
6127
- function startIframe({ helperRef, iframe, deviceType = EDeviceType.Desktop, size, t0, onSuccess }) {
6206
+ function startIframe({ helperRef, iframe, shopId, deviceType = EDeviceType.Desktop, size, t0, onSuccess, }) {
6128
6207
  const docWidth = size.width ?? 0;
6129
6208
  const docHeight = size.height ?? 0;
6130
6209
  if (docHeight === 0)
@@ -6139,6 +6218,7 @@ function startIframe({ helperRef, iframe, deviceType = EDeviceType.Desktop, size
6139
6218
  targetHeight: docHeight,
6140
6219
  iframe,
6141
6220
  debug: true,
6221
+ shopId,
6142
6222
  onSuccess: (data) => {
6143
6223
  measure('IframeHelper processing', tHelper);
6144
6224
  measure('Total render', t0);
@@ -8410,11 +8490,11 @@ const ContentTopBar = () => {
8410
8490
  }, children: CompTopBar && jsx(CompTopBar, {}) }));
8411
8491
  };
8412
8492
 
8413
- const HeatmapLayout = ({ data, clickmap, clickAreas, scrollmap, attentionMap, controls, dataInfo, isLoading, isLoadingCanvas, }) => {
8493
+ const HeatmapLayout = ({ shopId, data, clickmap, clickAreas, scrollmap, attentionMap, controls, dataInfo, isLoading, isLoadingCanvas, excludeClassNames, }) => {
8414
8494
  useRegisterControl(controls);
8415
8495
  useRegisterData(data, dataInfo);
8416
8496
  useRegisterHeatmap({ clickmap, scrollmap, clickAreas, attentionMap });
8417
- useRegisterConfig({ isLoading, isLoadingCanvas });
8497
+ useRegisterConfig({ isLoading, isLoadingCanvas, shopId, excludeClassNames });
8418
8498
  // performanceLogger.configure({
8419
8499
  // enabled: true,
8420
8500
  // logToConsole: false,
@@ -1,3 +1,3 @@
1
- export { createIframeHelper } from './lifecycle';
2
1
  export type { IframeHelper } from './lifecycle';
2
+ export { createIframeHelper } from './lifecycle';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/libs/iframe-processor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/libs/iframe-processor/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"fixes.d.ts","sourceRoot":"","sources":["../../../../../../../../src/libs/iframe-processor/processors/viewport/global-fixes/global-fixes/viewport-unit-replacer/fixes.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAgOtD,wBAAsB,OAAO,CAAC,GAAG,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBpE"}
1
+ {"version":3,"file":"fixes.d.ts","sourceRoot":"","sources":["../../../../../../../../src/libs/iframe-processor/processors/viewport/global-fixes/global-fixes/viewport-unit-replacer/fixes.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AA4PtD,wBAAsB,OAAO,CAAC,GAAG,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBpE"}
@@ -1,2 +1,3 @@
1
+ export * from './perf';
1
2
  export * from './visualizer';
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/libs/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/libs/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * Unified performance timing utility.
3
+ *
4
+ * Two complementary tools:
5
+ *
6
+ * 1. `perf` — global DevTools session recorder.
7
+ * Stores structured timing in `window.__gemxPerf` for inspection.
8
+ * Used by the iframe-processor rendering pipeline.
9
+ *
10
+ * perf.startSession('render-1');
11
+ * const t = perf.mark('viewport.run');
12
+ * perf.measure('viewport.run', t);
13
+ * perf.endSession();
14
+ *
15
+ * 2. `createPerfTimer` — per-module console logger factory.
16
+ * Logs prefixed timings to the console AND records entries into the
17
+ * active global session so they appear in `window.__gemxPerf` too.
18
+ *
19
+ * const timer = createPerfTimer('Render');
20
+ * const t0 = timer.mark('start');
21
+ * await timer.wrap('visualizer.html', () => visualizer.html(...));
22
+ * timer.measure('total', t0);
23
+ */
24
+ export interface PerfEntry {
25
+ label: string;
26
+ /** Milliseconds from session start. */
27
+ t: number;
28
+ /** Duration in ms — only present for measure() calls. */
29
+ duration?: number;
30
+ }
31
+ export interface PerfSession {
32
+ id: string;
33
+ startedAt: number;
34
+ entries: PerfEntry[];
35
+ /** Total session duration in ms — set when endSession() is called. */
36
+ total?: number;
37
+ }
38
+ export interface PerfReport {
39
+ sessions: PerfSession[];
40
+ latest: PerfSession | null;
41
+ }
42
+ export interface PerfTimerConfig {
43
+ prefix: string;
44
+ enabled?: boolean;
45
+ }
46
+ export interface PerfTimer {
47
+ /** Log a start point and return the current timestamp. */
48
+ mark(label: string): number;
49
+ /** Log elapsed time since `from` (a value returned by mark). */
50
+ measure(label: string, from: number): void;
51
+ /** Wrap an async or sync callback — auto-logs start + elapsed. */
52
+ wrap<T>(label: string, fn: () => T | Promise<T>): Promise<T>;
53
+ /** Toggle options at runtime (e.g. from a debug flag). */
54
+ configure(config: Partial<PerfTimerConfig>): void;
55
+ }
56
+ declare global {
57
+ interface Window {
58
+ __gemxPerf?: PerfReport;
59
+ }
60
+ }
61
+ declare function startSession(id: string): void;
62
+ declare function endSession(): PerfSession | null;
63
+ /** Record a point-in-time mark. Returns `performance.now()` for use with measure(). */
64
+ declare function globalMark(label: string): number;
65
+ /** Record a duration from a previous mark() timestamp. */
66
+ declare function globalMeasure(label: string, t0: number): number;
67
+ declare function getReport(): PerfReport;
68
+ declare function clearSessions(): void;
69
+ declare function enableGlobal(): void;
70
+ declare function disableGlobal(): void;
71
+ export declare const perf: {
72
+ startSession: typeof startSession;
73
+ endSession: typeof endSession;
74
+ mark: typeof globalMark;
75
+ measure: typeof globalMeasure;
76
+ getReport: typeof getReport;
77
+ clear: typeof clearSessions;
78
+ enable: typeof enableGlobal;
79
+ disable: typeof disableGlobal;
80
+ };
81
+ export declare function createPerfTimer(config: PerfTimerConfig | string): PerfTimer;
82
+ export {};
83
+ //# sourceMappingURL=perf.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"perf.d.ts","sourceRoot":"","sources":["../../src/libs/perf.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAIH,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,uCAAuC;IACvC,CAAC,EAAE,MAAM,CAAC;IACV,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,sEAAsE;IACtE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,SAAS;IACxB,0DAA0D;IAC1D,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,gEAAgE;IAChE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C,kEAAkE;IAClE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC7D,0DAA0D;IAC1D,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC;CACnD;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,UAAU,CAAC,EAAE,UAAU,CAAC;KACzB;CACF;AAoBD,iBAAS,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAGtC;AAED,iBAAS,UAAU,IAAI,WAAW,GAAG,IAAI,CAQxC;AAED,uFAAuF;AACvF,iBAAS,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMzC;AAED,0DAA0D;AAC1D,iBAAS,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAMxD;AAED,iBAAS,SAAS,IAAI,UAAU,CAK/B;AAED,iBAAS,aAAa,IAAI,IAAI,CAI7B;AAED,iBAAS,YAAY,IAAI,IAAI,CAE5B;AAED,iBAAS,aAAa,IAAI,IAAI,CAE7B;AASD,eAAO,MAAM,IAAI;;;;;;;;;CAShB,CAAC;AAIF,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,GAAG,SAAS,CAoC3E"}
@@ -2,9 +2,13 @@ import { EHeatmapMode } from '../types';
2
2
  export interface IHeatmapConfigStore {
3
3
  mode: EHeatmapMode;
4
4
  sidebarWidth: number;
5
+ shopId: string | undefined;
6
+ excludeClassNames: string[];
5
7
  setMode: (mode: EHeatmapMode) => void;
6
8
  resetMode: () => void;
7
9
  setSidebarWidth: (sidebarWidth: number) => void;
10
+ setShopId: (shopId: string | undefined) => void;
11
+ setExcludeClassNames: (excludeClassNames: string[]) => void;
8
12
  }
9
13
  export declare const useHeatmapConfigStore: import("zustand").UseBoundStore<import("zustand").StoreApi<IHeatmapConfigStore>>;
10
14
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/stores/config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,YAAY,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IAErB,OAAO,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IACtC,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,eAAe,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;CACjD;AAED,eAAO,MAAM,qBAAqB,kFAShC,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/stores/config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,YAAY,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAE5B,OAAO,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IACtC,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,eAAe,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;IAChD,oBAAoB,EAAE,CAAC,iBAAiB,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;CAC7D;AAED,eAAO,MAAM,qBAAqB,kFAahC,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import type { ClickMapPoint, EncodedPayload, IHeatmapInfo, IPersistedAreaData, ScrollMapPoint } from '../types';
2
2
  export interface IHeatmapDataStore {
3
3
  data: Map<string, EncodedPayload[] | undefined>;
4
+ dataHash: Map<string, string | undefined>;
4
5
  dataSnapshot: Map<string, EncodedPayload[] | undefined>;
5
6
  clickmap: Map<string, ClickMapPoint[] | undefined>;
6
7
  clickAreas: Map<string, IPersistedAreaData[] | undefined>;
@@ -9,6 +10,7 @@ export interface IHeatmapDataStore {
9
10
  attentionMap: Map<string, ScrollMapPoint[] | undefined>;
10
11
  setDataInfo: (dataInfo: IHeatmapInfo, viewId?: string) => void;
11
12
  setData: (data: EncodedPayload[], viewId?: string) => void;
13
+ setDataHash: (dataHash: string | undefined, viewId?: string) => void;
12
14
  setDataSnapshot: (data: EncodedPayload[], viewId?: string) => void;
13
15
  setClickmap: (clickmap: ClickMapPoint[], viewId?: string) => void;
14
16
  setClickAreas: (clickAreas: IPersistedAreaData[], viewId?: string) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../src/stores/data.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,YAAY,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAMhH,MAAM,WAAW,iBAAiB;IAEhC,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,SAAS,CAAC,CAAC;IAChD,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,SAAS,CAAC,CAAC;IACxD,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,SAAS,CAAC,CAAC;IACnD,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,EAAE,GAAG,SAAS,CAAC,CAAC;IAC1D,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,CAAC,CAAC;IAChD,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,SAAS,CAAC,CAAC;IACrD,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,SAAS,CAAC,CAAC;IAGxD,WAAW,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/D,OAAO,EAAE,CAAC,IAAI,EAAE,cAAc,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3D,eAAe,EAAE,CAAC,IAAI,EAAE,cAAc,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACnE,WAAW,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAClE,aAAa,EAAE,CAAC,UAAU,EAAE,kBAAkB,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3E,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3D,YAAY,EAAE,CAAC,SAAS,EAAE,cAAc,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACrE,eAAe,EAAE,CAAC,YAAY,EAAE,cAAc,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3E,gBAAgB,EAAE,CAAC,CAAC,SAAS,MAAM,YAAY,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAG1G,QAAQ,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAGzD,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAGpC,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,eAAO,MAAM,mBAAmB;;;;;;;;EAyJ/B,CAAC"}
1
+ {"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../src/stores/data.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,YAAY,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAMhH,MAAM,WAAW,iBAAiB;IAEhC,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,SAAS,CAAC,CAAC;IAChD,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAC1C,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,SAAS,CAAC,CAAC;IACxD,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,SAAS,CAAC,CAAC;IACnD,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,EAAE,GAAG,SAAS,CAAC,CAAC;IAC1D,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,CAAC,CAAC;IAChD,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,SAAS,CAAC,CAAC;IACrD,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,SAAS,CAAC,CAAC;IAGxD,WAAW,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/D,OAAO,EAAE,CAAC,IAAI,EAAE,cAAc,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3D,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACrE,eAAe,EAAE,CAAC,IAAI,EAAE,cAAc,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACnE,WAAW,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAClE,aAAa,EAAE,CAAC,UAAU,EAAE,kBAAkB,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3E,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3D,YAAY,EAAE,CAAC,SAAS,EAAE,cAAc,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACrE,eAAe,EAAE,CAAC,YAAY,EAAE,cAAc,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3E,gBAAgB,EAAE,CAAC,CAAC,SAAS,MAAM,YAAY,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAG1G,QAAQ,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAGzD,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAGpC,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,eAAO,MAAM,mBAAmB;;;;;;;;EAwK/B,CAAC"}
@@ -1,4 +1,5 @@
1
1
  export declare enum EDeviceType {
2
+ DesktopLarge = "DESKTOP_LARGE",
2
3
  Desktop = "DESKTOP",
3
4
  Mobile = "MOBILE",
4
5
  Tablet = "TABLET"
@@ -1 +1 @@
1
- {"version":3,"file":"heatmap.d.ts","sourceRoot":"","sources":["../../src/types/heatmap.ts"],"names":[],"mappings":"AAAA,oBAAY,WAAW;IACrB,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,MAAM,WAAW;CAClB;AAED,oBAAY,YAAY;IACtB,KAAK,UAAU;IACf,MAAM,WAAW;CAClB;AAED,oBAAY,UAAU;IACpB,kCAAkC;IAClC,GAAG,QAAQ;IACX,gEAAgE;IAChE,IAAI,SAAS;IACb,6DAA6D;IAC7D,IAAI,SAAS;IACb,2CAA2C;IAC3C,KAAK,UAAU;IACf,qCAAqC;IACrC,KAAK,UAAU;IACf,oCAAoC;IACpC,IAAI,SAAS;IACb,4DAA4D;IAC5D,QAAQ,aAAa;CACtB;AAED,oBAAY,cAAc;IACxB,UAAU,gBAAgB;IAC1B,OAAO,YAAY;IACnB,cAAc,oBAAoB;IAClC,eAAe,sBAAsB;IACrC,iBAAiB,wBAAwB;CAC1C;AAED,oBAAY,UAAU;IACpB,OAAO,YAAY;IACnB,IAAI,eAAe;CACpB;AAED,oBAAY,WAAW;IACrB,KAAK,iBAAiB;IACtB,SAAS,cAAc;IACvB,OAAO,YAAY;CACpB;AAED,oBAAY,YAAY;IACtB,MAAM,WAAW,CAAE,mBAAmB;IACtC,IAAI,SAAS,CAAE,YAAY;IAC3B,OAAO,YAAY;CACpB;AAED,oBAAY,kBAAkB;IAC5B,QAAQ,aAAa;IACrB,IAAI,SAAS;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,YAAY,CAAC;CAC5B"}
1
+ {"version":3,"file":"heatmap.d.ts","sourceRoot":"","sources":["../../src/types/heatmap.ts"],"names":[],"mappings":"AAAA,oBAAY,WAAW;IACrB,YAAY,kBAAkB;IAC9B,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,MAAM,WAAW;CAClB;AAED,oBAAY,YAAY;IACtB,KAAK,UAAU;IACf,MAAM,WAAW;CAClB;AAED,oBAAY,UAAU;IACpB,kCAAkC;IAClC,GAAG,QAAQ;IACX,gEAAgE;IAChE,IAAI,SAAS;IACb,6DAA6D;IAC7D,IAAI,SAAS;IACb,2CAA2C;IAC3C,KAAK,UAAU;IACf,qCAAqC;IACrC,KAAK,UAAU;IACf,oCAAoC;IACpC,IAAI,SAAS;IACb,4DAA4D;IAC5D,QAAQ,aAAa;CACtB;AAED,oBAAY,cAAc;IACxB,UAAU,gBAAgB;IAC1B,OAAO,YAAY;IACnB,cAAc,oBAAoB;IAClC,eAAe,sBAAsB;IACrC,iBAAiB,wBAAwB;CAC1C;AAED,oBAAY,UAAU;IACpB,OAAO,YAAY;IACnB,IAAI,eAAe;CACpB;AAED,oBAAY,WAAW;IACrB,KAAK,iBAAiB;IACtB,SAAS,cAAc;IACvB,OAAO,YAAY;CACpB;AAED,oBAAY,YAAY;IACtB,MAAM,WAAW,CAAE,mBAAmB;IACtC,IAAI,SAAS,CAAE,YAAY;IAC3B,OAAO,YAAY;CACpB;AAED,oBAAY,kBAAkB;IAC5B,QAAQ,aAAa;IACrB,IAAI,SAAS;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,YAAY,CAAC;CAC5B"}
@@ -1,6 +1,7 @@
1
1
  import type { ClickMapPoint, EncodedPayload, IHeatmapInfo, IPersistedAreaData, ScrollMapPoint } from '../../types';
2
2
  import type { IHeatmapControl } from '../../types/control';
3
3
  interface HeatmapLayoutProps {
4
+ shopId?: string;
4
5
  data?: EncodedPayload[];
5
6
  clickmap?: ClickMapPoint[];
6
7
  clickAreas?: IPersistedAreaData[];
@@ -10,6 +11,7 @@ interface HeatmapLayoutProps {
10
11
  controls: IHeatmapControl;
11
12
  isLoading?: boolean;
12
13
  isLoadingCanvas?: boolean;
14
+ excludeClassNames?: string[];
13
15
  }
14
16
  export declare const HeatmapLayout: React.FC<HeatmapLayoutProps>;
15
17
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"HeatmapLayout.d.ts","sourceRoot":"","sources":["../../../src/components/Layout/HeatmapLayout.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,YAAY,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACnH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAS3D,UAAU,kBAAkB;IAC1B,IAAI,CAAC,EAAE,cAAc,EAAE,CAAC;IACxB,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAC;IAC3B,UAAU,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAClC,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC;IAC7B,YAAY,CAAC,EAAE,cAAc,EAAE,CAAC;IAChC,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,QAAQ,EAAE,eAAe,CAAC;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AACD,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CA0DtD,CAAC"}
1
+ {"version":3,"file":"HeatmapLayout.d.ts","sourceRoot":"","sources":["../../../src/components/Layout/HeatmapLayout.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,YAAY,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACnH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAS3D,UAAU,kBAAkB;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,cAAc,EAAE,CAAC;IACxB,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAC;IAC3B,UAAU,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAClC,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC;IAC7B,YAAY,CAAC,EAAE,cAAc,EAAE,CAAC;IAChC,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,QAAQ,EAAE,eAAe,CAAC;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC9B;AACD,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CA4DtD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useHeatmapWidthByDevice.d.ts","sourceRoot":"","sources":["../../../src/hooks/common/useHeatmapWidthByDevice.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,uBAAuB,cAkBnC,CAAC"}
1
+ {"version":3,"file":"useHeatmapWidthByDevice.d.ts","sourceRoot":"","sources":["../../../src/hooks/common/useHeatmapWidthByDevice.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,uBAAuB,cAoBnC,CAAC"}
@@ -1,5 +1,7 @@
1
- export declare const useRegisterConfig: ({ isLoading, isLoadingCanvas, }: {
1
+ export declare const useRegisterConfig: ({ shopId, isLoading, isLoadingCanvas, excludeClassNames, }: {
2
+ shopId?: string;
2
3
  isLoading?: boolean;
3
4
  isLoadingCanvas?: boolean;
5
+ excludeClassNames?: string[];
4
6
  }) => void;
5
7
  //# sourceMappingURL=useRegisterConfig.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useRegisterConfig.d.ts","sourceRoot":"","sources":["../../../src/hooks/register/useRegisterConfig.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,iBAAiB,GAAI,iCAG/B;IACD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,SAuBA,CAAC"}
1
+ {"version":3,"file":"useRegisterConfig.d.ts","sourceRoot":"","sources":["../../../src/hooks/register/useRegisterConfig.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,iBAAiB,GAAI,4DAK/B;IACD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC9B,SAoCA,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import type { ClickMapPoint, EncodedPayload, IHeatmapInfo, IPersistedAreaData, ScrollMapPoint } from '../../types';
2
2
  interface IHeatmapDataState {
3
3
  data: EncodedPayload[] | undefined;
4
+ dataHash: string | undefined;
4
5
  dataSnapshot: EncodedPayload[] | undefined;
5
6
  clickmap: ClickMapPoint[] | undefined;
6
7
  clickAreas: IPersistedAreaData[] | undefined;
@@ -12,6 +13,7 @@ interface IHeatmapDataState {
12
13
  interface IHeatmapDataActions {
13
14
  setData: (newData: EncodedPayload[]) => void;
14
15
  setDataSnapshot: (newData: EncodedPayload[]) => void;
16
+ setDataHash: (newHash: string | undefined) => void;
15
17
  setClickmap: (newClickmap: ClickMapPoint[]) => void;
16
18
  setClickAreas: (newClickAreas: IPersistedAreaData[]) => void;
17
19
  setScrollmap: (newScrollmap: ScrollMapPoint[]) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"useHeatmapDataContext.d.ts","sourceRoot":"","sources":["../../../src/hooks/view-context/useHeatmapDataContext.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,YAAY,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAKnH,UAAU,iBAAiB;IACzB,IAAI,EAAE,cAAc,EAAE,GAAG,SAAS,CAAC;IACnC,YAAY,EAAE,cAAc,EAAE,GAAG,SAAS,CAAC;IAC3C,QAAQ,EAAE,aAAa,EAAE,GAAG,SAAS,CAAC;IACtC,UAAU,EAAE,kBAAkB,EAAE,GAAG,SAAS,CAAC;IAC7C,SAAS,EAAE,cAAc,EAAE,GAAG,SAAS,CAAC;IACxC,YAAY,EAAE,cAAc,EAAE,GAAG,SAAS,CAAC;IAC3C,QAAQ,EAAE,YAAY,GAAG,SAAS,CAAC;IACnC,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,UAAU,mBAAmB;IAC3B,OAAO,EAAE,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,IAAI,CAAC;IAC7C,eAAe,EAAE,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,IAAI,CAAC;IACrD,WAAW,EAAE,CAAC,WAAW,EAAE,aAAa,EAAE,KAAK,IAAI,CAAC;IACpD,aAAa,EAAE,CAAC,aAAa,EAAE,kBAAkB,EAAE,KAAK,IAAI,CAAC;IAC7D,YAAY,EAAE,CAAC,YAAY,EAAE,cAAc,EAAE,KAAK,IAAI,CAAC;IACvD,eAAe,EAAE,CAAC,eAAe,EAAE,cAAc,EAAE,KAAK,IAAI,CAAC;IAC7D,WAAW,EAAE,CAAC,WAAW,EAAE,YAAY,KAAK,IAAI,CAAC;IACjD,gBAAgB,EAAE,CAAC,CAAC,SAAS,MAAM,YAAY,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IACzF,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AAED,eAAO,MAAM,qBAAqB;;;;;;;CA0BhC,CAAC"}
1
+ {"version":3,"file":"useHeatmapDataContext.d.ts","sourceRoot":"","sources":["../../../src/hooks/view-context/useHeatmapDataContext.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,YAAY,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAKnH,UAAU,iBAAiB;IACzB,IAAI,EAAE,cAAc,EAAE,GAAG,SAAS,CAAC;IACnC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,YAAY,EAAE,cAAc,EAAE,GAAG,SAAS,CAAC;IAC3C,QAAQ,EAAE,aAAa,EAAE,GAAG,SAAS,CAAC;IACtC,UAAU,EAAE,kBAAkB,EAAE,GAAG,SAAS,CAAC;IAC7C,SAAS,EAAE,cAAc,EAAE,GAAG,SAAS,CAAC;IACxC,YAAY,EAAE,cAAc,EAAE,GAAG,SAAS,CAAC;IAC3C,QAAQ,EAAE,YAAY,GAAG,SAAS,CAAC;IACnC,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,UAAU,mBAAmB;IAC3B,OAAO,EAAE,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,IAAI,CAAC;IAC7C,eAAe,EAAE,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,IAAI,CAAC;IACrD,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;IACnD,WAAW,EAAE,CAAC,WAAW,EAAE,aAAa,EAAE,KAAK,IAAI,CAAC;IACpD,aAAa,EAAE,CAAC,aAAa,EAAE,kBAAkB,EAAE,KAAK,IAAI,CAAC;IAC7D,YAAY,EAAE,CAAC,YAAY,EAAE,cAAc,EAAE,KAAK,IAAI,CAAC;IACvD,eAAe,EAAE,CAAC,eAAe,EAAE,cAAc,EAAE,KAAK,IAAI,CAAC;IAC7D,WAAW,EAAE,CAAC,WAAW,EAAE,YAAY,KAAK,IAAI,CAAC;IACjD,gBAAgB,EAAE,CAAC,CAAC,SAAS,MAAM,YAAY,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IACzF,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AAED,eAAO,MAAM,qBAAqB;;;;;;;CA4BhC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useHeatmapRender.d.ts","sourceRoot":"","sources":["../../../src/hooks/viz-render/useHeatmapRender.ts"],"names":[],"mappings":"AAgCA,UAAU,uBAAuB;IAC/B,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;CACtD;AAaD,eAAO,MAAM,gBAAgB,QAAO,uBA+EnC,CAAC"}
1
+ {"version":3,"file":"useHeatmapRender.d.ts","sourceRoot":"","sources":["../../../src/hooks/viz-render/useHeatmapRender.ts"],"names":[],"mappings":"AAiCA,UAAU,uBAAuB;IAC/B,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;CACtD;AAcD,eAAO,MAAM,gBAAgB,QAAO,uBAoFnC,CAAC"}