@appsurify-testmap/rrweb-record 2.0.0-alpha.23 → 2.0.0-alpha.25

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.
@@ -7,6 +7,46 @@ var _a;
7
7
  var __defProp$1 = Object.defineProperty;
8
8
  var __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
9
9
  var __publicField$1 = (obj, key, value) => __defNormalProp$1(obj, typeof key !== "symbol" ? key + "" : key, value);
10
+ var InteractiveEvent = /* @__PURE__ */ ((InteractiveEvent2) => {
11
+ InteractiveEvent2[InteractiveEvent2["Change"] = 0] = "Change";
12
+ InteractiveEvent2[InteractiveEvent2["Submit"] = 1] = "Submit";
13
+ InteractiveEvent2[InteractiveEvent2["DragStart"] = 2] = "DragStart";
14
+ InteractiveEvent2[InteractiveEvent2["Drop"] = 3] = "Drop";
15
+ InteractiveEvent2[InteractiveEvent2["PointerDown"] = 4] = "PointerDown";
16
+ InteractiveEvent2[InteractiveEvent2["PointerUp"] = 5] = "PointerUp";
17
+ InteractiveEvent2[InteractiveEvent2["Input"] = 6] = "Input";
18
+ InteractiveEvent2[InteractiveEvent2["KeyDown"] = 7] = "KeyDown";
19
+ InteractiveEvent2[InteractiveEvent2["KeyUp"] = 8] = "KeyUp";
20
+ InteractiveEvent2[InteractiveEvent2["KeyPress"] = 9] = "KeyPress";
21
+ InteractiveEvent2[InteractiveEvent2["MouseEnter"] = 10] = "MouseEnter";
22
+ InteractiveEvent2[InteractiveEvent2["MouseLeave"] = 11] = "MouseLeave";
23
+ InteractiveEvent2[InteractiveEvent2["MouseUp"] = 12] = "MouseUp";
24
+ InteractiveEvent2[InteractiveEvent2["MouseDown"] = 13] = "MouseDown";
25
+ InteractiveEvent2[InteractiveEvent2["Click"] = 14] = "Click";
26
+ InteractiveEvent2[InteractiveEvent2["ContextMenu"] = 15] = "ContextMenu";
27
+ InteractiveEvent2[InteractiveEvent2["DblClick"] = 16] = "DblClick";
28
+ InteractiveEvent2[InteractiveEvent2["Focus"] = 17] = "Focus";
29
+ InteractiveEvent2[InteractiveEvent2["Blur"] = 18] = "Blur";
30
+ InteractiveEvent2[InteractiveEvent2["TouchStart"] = 19] = "TouchStart";
31
+ InteractiveEvent2[InteractiveEvent2["TouchMove"] = 20] = "TouchMove";
32
+ InteractiveEvent2[InteractiveEvent2["TouchEnd"] = 21] = "TouchEnd";
33
+ InteractiveEvent2[InteractiveEvent2["TouchCancel"] = 22] = "TouchCancel";
34
+ return InteractiveEvent2;
35
+ })(InteractiveEvent || {});
36
+ var interactiveTag = /* @__PURE__ */ ((interactiveTag2) => {
37
+ interactiveTag2[interactiveTag2["Input"] = 0] = "Input";
38
+ interactiveTag2[interactiveTag2["Button"] = 1] = "Button";
39
+ interactiveTag2[interactiveTag2["A"] = 2] = "A";
40
+ interactiveTag2[interactiveTag2["Select"] = 3] = "Select";
41
+ interactiveTag2[interactiveTag2["Textarea"] = 4] = "Textarea";
42
+ interactiveTag2[interactiveTag2["Label"] = 5] = "Label";
43
+ interactiveTag2[interactiveTag2["Details"] = 6] = "Details";
44
+ interactiveTag2[interactiveTag2["Summary"] = 7] = "Summary";
45
+ interactiveTag2[interactiveTag2["Dialog"] = 8] = "Dialog";
46
+ interactiveTag2[interactiveTag2["Video"] = 9] = "Video";
47
+ interactiveTag2[interactiveTag2["Audio"] = 10] = "Audio";
48
+ return interactiveTag2;
49
+ })(interactiveTag || {});
10
50
  var NodeType$3 = /* @__PURE__ */ ((NodeType2) => {
11
51
  NodeType2[NodeType2["Document"] = 0] = "Document";
12
52
  NodeType2[NodeType2["DocumentType"] = 1] = "DocumentType";
@@ -158,99 +198,6 @@ const index$1 = {
158
198
  querySelectorAll: querySelectorAll$1,
159
199
  mutationObserver: mutationObserverCtor$1
160
200
  };
161
- function getXPath(node2) {
162
- if (node2.nodeType === Node.DOCUMENT_NODE) {
163
- return "/";
164
- }
165
- if (node2.nodeType === Node.DOCUMENT_TYPE_NODE) {
166
- return "/html/doctype";
167
- }
168
- if (node2.nodeType === Node.ELEMENT_NODE) {
169
- const element = node2;
170
- if (element.id) {
171
- return `//*[@id="${element.id}"]`;
172
- }
173
- if (element.tagName && element.tagName.toLowerCase() === "html") {
174
- return "/html";
175
- }
176
- if (element === document.head) {
177
- return "/html/head";
178
- }
179
- if (element === document.body) {
180
- return "/html/body";
181
- }
182
- const parentNode2 = element.parentNode;
183
- if (!parentNode2 || !(parentNode2 instanceof Element)) {
184
- return "";
185
- }
186
- const siblings = Array.from(parentNode2.children).filter(
187
- (sibling) => sibling.tagName === element.tagName
188
- );
189
- const index2 = siblings.length > 1 ? `[${siblings.indexOf(element) + 1}]` : "";
190
- return `${getXPath(parentNode2)}/${element.tagName.toLowerCase()}${index2}`;
191
- }
192
- if (node2.nodeType === Node.TEXT_NODE) {
193
- const parent = node2.parentNode;
194
- if (!parent) {
195
- return "";
196
- }
197
- const textSiblings = Array.from(parent.childNodes).filter(
198
- (sibling) => sibling.nodeType === Node.TEXT_NODE
199
- );
200
- const index2 = textSiblings.length > 1 ? `[${textSiblings.indexOf(node2) + 1}]` : "";
201
- return `${getXPath(parent)}/text()${index2}`;
202
- }
203
- if (node2.nodeType === Node.CDATA_SECTION_NODE) {
204
- const parent = node2.parentNode;
205
- if (!parent) {
206
- return "";
207
- }
208
- const cdataSiblings = Array.from(parent.childNodes).filter(
209
- (sibling) => sibling.nodeType === Node.CDATA_SECTION_NODE
210
- );
211
- const index2 = cdataSiblings.length > 1 ? `[${cdataSiblings.indexOf(node2) + 1}]` : "";
212
- return `${getXPath(parent)}/text()${index2}`;
213
- }
214
- if (node2.nodeType === Node.COMMENT_NODE) {
215
- const parent = node2.parentNode;
216
- if (!parent) {
217
- return "";
218
- }
219
- const commentSiblings = Array.from(parent.childNodes).filter(
220
- (sibling) => sibling.nodeType === Node.COMMENT_NODE
221
- );
222
- const index2 = commentSiblings.length > 1 ? `[${commentSiblings.indexOf(node2) + 1}]` : "";
223
- return `${getXPath(parent)}/comment()${index2}`;
224
- }
225
- return "";
226
- }
227
- function isElement(n2) {
228
- return n2.nodeType === n2.ELEMENT_NODE;
229
- }
230
- function isTextVisible(n2) {
231
- var _a2;
232
- const parent = index$1.parentNode(n2);
233
- const parentElement2 = parent && parent;
234
- if (!parentElement2) {
235
- return false;
236
- }
237
- const isParentVisible = isElementVisible(parentElement2);
238
- if (!isParentVisible) {
239
- return false;
240
- }
241
- const textContent2 = (_a2 = n2.textContent) == null ? void 0 : _a2.trim();
242
- return textContent2 !== "";
243
- }
244
- function isElementVisible(n2) {
245
- return isStyleVisible(n2) && isRectVisible(n2.getBoundingClientRect());
246
- }
247
- function isStyleVisible(n2) {
248
- const style = window.getComputedStyle(n2);
249
- return style.display !== "none" && style.visibility !== "hidden" && parseFloat(style.opacity) !== 0;
250
- }
251
- function isRectVisible(rect) {
252
- return rect.width > 0 && rect.height > 0 && rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && rect.right <= (window.innerWidth || document.documentElement.clientWidth);
253
- }
254
201
  function isShadowRoot(n2) {
255
202
  const hostEl = (
256
203
  // anchor and textarea elements also have a `host` property
@@ -586,6 +533,140 @@ function splitCssText(cssText, style) {
586
533
  function markCssSplits(cssText, style) {
587
534
  return splitCssText(cssText, style).join("/* rr_split */");
588
535
  }
536
+ function getXPath(node2) {
537
+ if (node2.nodeType === Node.DOCUMENT_NODE) {
538
+ return "/";
539
+ }
540
+ if (node2.nodeType === Node.DOCUMENT_TYPE_NODE) {
541
+ return "/html/doctype";
542
+ }
543
+ if (node2.nodeType === Node.ELEMENT_NODE) {
544
+ const element = node2;
545
+ if (element.id) {
546
+ return `//*[@id="${element.id}"]`;
547
+ }
548
+ if (element.tagName && element.tagName.toLowerCase() === "html") {
549
+ return "/html";
550
+ }
551
+ if (element === document.head) {
552
+ return "/html/head";
553
+ }
554
+ if (element === document.body) {
555
+ return "/html/body";
556
+ }
557
+ const parentNode2 = element.parentNode;
558
+ if (!parentNode2 || !(parentNode2 instanceof Element)) {
559
+ return "";
560
+ }
561
+ const siblings = Array.from(parentNode2.children).filter(
562
+ (sibling) => sibling.tagName === element.tagName
563
+ );
564
+ const index2 = siblings.length > 1 ? `[${siblings.indexOf(element) + 1}]` : "";
565
+ return `${getXPath(parentNode2)}/${element.tagName.toLowerCase()}${index2}`;
566
+ }
567
+ if (node2.nodeType === Node.TEXT_NODE) {
568
+ const parent = node2.parentNode;
569
+ if (!parent) {
570
+ return "";
571
+ }
572
+ const textSiblings = Array.from(parent.childNodes).filter(
573
+ (sibling) => sibling.nodeType === Node.TEXT_NODE
574
+ );
575
+ const index2 = textSiblings.length > 1 ? `[${textSiblings.indexOf(node2) + 1}]` : "";
576
+ return `${getXPath(parent)}/text()${index2}`;
577
+ }
578
+ if (node2.nodeType === Node.CDATA_SECTION_NODE) {
579
+ const parent = node2.parentNode;
580
+ if (!parent) {
581
+ return "";
582
+ }
583
+ const cdataSiblings = Array.from(parent.childNodes).filter(
584
+ (sibling) => sibling.nodeType === Node.CDATA_SECTION_NODE
585
+ );
586
+ const index2 = cdataSiblings.length > 1 ? `[${cdataSiblings.indexOf(node2) + 1}]` : "";
587
+ return `${getXPath(parent)}/text()${index2}`;
588
+ }
589
+ if (node2.nodeType === Node.COMMENT_NODE) {
590
+ const parent = node2.parentNode;
591
+ if (!parent) {
592
+ return "";
593
+ }
594
+ const commentSiblings = Array.from(parent.childNodes).filter(
595
+ (sibling) => sibling.nodeType === Node.COMMENT_NODE
596
+ );
597
+ const index2 = commentSiblings.length > 1 ? `[${commentSiblings.indexOf(node2) + 1}]` : "";
598
+ return `${getXPath(parent)}/comment()${index2}`;
599
+ }
600
+ return "";
601
+ }
602
+ function isElement(n2) {
603
+ return n2.nodeType === n2.ELEMENT_NODE;
604
+ }
605
+ function isTextVisible(n2) {
606
+ var _a2;
607
+ const parent = index$1.parentNode(n2);
608
+ const parentElement2 = parent && parent;
609
+ if (!parentElement2) {
610
+ return false;
611
+ }
612
+ const isParentVisible = isElementVisible(parentElement2);
613
+ if (!isParentVisible) {
614
+ return false;
615
+ }
616
+ const textContent2 = (_a2 = n2.textContent) == null ? void 0 : _a2.trim();
617
+ return textContent2 !== "";
618
+ }
619
+ function isElementVisible(n2) {
620
+ return isStyleVisible(n2) && isRectVisible(n2.getBoundingClientRect());
621
+ }
622
+ function isStyleVisible(n2) {
623
+ const style = window.getComputedStyle(n2);
624
+ return style.display !== "none" && style.visibility !== "hidden" && parseFloat(style.opacity) !== 0;
625
+ }
626
+ function isRectVisible(rect) {
627
+ return rect.width > 0 && rect.height > 0 && rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && rect.right <= (window.innerWidth || document.documentElement.clientWidth);
628
+ }
629
+ function getInteractiveEvents() {
630
+ return Object.keys(InteractiveEvent).filter((key) => isNaN(Number(key))).map((key) => key.toLowerCase().replace(/_/g, "-"));
631
+ }
632
+ function getInteractiveTags() {
633
+ return Object.keys(interactiveTag).filter((key) => isNaN(Number(key))).map((key) => key.toLowerCase().replace(/_/g, "-"));
634
+ }
635
+ function hasEventListeners(n2) {
636
+ return getInteractiveEvents().some((eventType) => {
637
+ let hasListener = false;
638
+ const testListener = () => {
639
+ hasListener = true;
640
+ };
641
+ n2.addEventListener(eventType, testListener);
642
+ n2.dispatchEvent(new Event(eventType));
643
+ n2.removeEventListener(eventType, testListener);
644
+ return hasListener;
645
+ });
646
+ }
647
+ function isElementInteractive(n2) {
648
+ var _a2;
649
+ const allowedTags = getInteractiveTags();
650
+ if (n2.nodeType === Node.ELEMENT_NODE) {
651
+ const element = n2;
652
+ const tagName = element.tagName.toLowerCase();
653
+ if (!allowedTags.includes(tagName)) {
654
+ return false;
655
+ }
656
+ const hasTabIndex = element.hasAttribute("tabindex") && element.getAttribute("tabindex") !== "-1";
657
+ const hasRoleInteractive = ["button", "link", "checkbox", "switch", "menuitem"].includes(
658
+ element.getAttribute("role") || ""
659
+ );
660
+ const result2 = hasEventListeners(element) || hasTabIndex || hasRoleInteractive || element instanceof HTMLAnchorElement && element.hasAttribute("href") || element instanceof HTMLButtonElement && !element.disabled;
661
+ return result2;
662
+ }
663
+ if (n2.nodeType === Node.TEXT_NODE) {
664
+ const textNode = n2;
665
+ const parentElement2 = textNode.parentElement;
666
+ return parentElement2 !== null && allowedTags.includes(parentElement2.tagName.toLowerCase()) && isElementVisible(parentElement2) && ((_a2 = textNode.textContent) == null ? void 0 : _a2.trim().length) !== 0 && isElementInteractive(parentElement2);
667
+ }
668
+ return false;
669
+ }
589
670
  let _id = 1;
590
671
  const tagNameRegex = new RegExp("[^a-z0-9-_:]");
591
672
  const IGNORED_NODE = -2;
@@ -941,11 +1022,13 @@ function serializeTextNode(n2, options) {
941
1022
  textContent2 = maskTextFn ? maskTextFn(textContent2, index$1.parentElement(n2)) : textContent2.replace(/[\S]/g, "*");
942
1023
  }
943
1024
  const isVisible = isTextVisible(n2);
1025
+ const isInteractive = isElementInteractive(n2);
944
1026
  return {
945
1027
  type: NodeType$3.Text,
946
1028
  textContent: textContent2 || "",
947
1029
  rootId,
948
1030
  isVisible,
1031
+ isInteractive,
949
1032
  xPath
950
1033
  };
951
1034
  }
@@ -1131,6 +1214,7 @@ function serializeElementNode(n2, options) {
1131
1214
  } catch (e2) {
1132
1215
  }
1133
1216
  const isVisible = isElementVisible(n2);
1217
+ const isInteractive = isElementInteractive(n2);
1134
1218
  return {
1135
1219
  type: NodeType$3.Element,
1136
1220
  tagName,
@@ -1141,6 +1225,7 @@ function serializeElementNode(n2, options) {
1141
1225
  rootId,
1142
1226
  isCustom: isCustomElement,
1143
1227
  isVisible,
1228
+ isInteractive,
1144
1229
  xPath
1145
1230
  };
1146
1231
  }
@@ -9089,20 +9174,20 @@ var IncrementalSource = /* @__PURE__ */ ((IncrementalSource2) => {
9089
9174
  IncrementalSource2[IncrementalSource2["Selection"] = 14] = "Selection";
9090
9175
  IncrementalSource2[IncrementalSource2["AdoptedStyleSheet"] = 15] = "AdoptedStyleSheet";
9091
9176
  IncrementalSource2[IncrementalSource2["CustomElement"] = 16] = "CustomElement";
9177
+ IncrementalSource2[IncrementalSource2["VisibilityChange"] = 17] = "VisibilityChange";
9092
9178
  return IncrementalSource2;
9093
9179
  })(IncrementalSource || {});
9094
9180
  var MouseInteractions = /* @__PURE__ */ ((MouseInteractions2) => {
9095
9181
  MouseInteractions2[MouseInteractions2["MouseUp"] = 0] = "MouseUp";
9096
9182
  MouseInteractions2[MouseInteractions2["MouseDown"] = 1] = "MouseDown";
9097
9183
  MouseInteractions2[MouseInteractions2["Click"] = 2] = "Click";
9098
- MouseInteractions2[MouseInteractions2["ContextMenu"] = 3] = "ContextMenu";
9099
- MouseInteractions2[MouseInteractions2["DblClick"] = 4] = "DblClick";
9100
- MouseInteractions2[MouseInteractions2["Focus"] = 5] = "Focus";
9101
- MouseInteractions2[MouseInteractions2["Blur"] = 6] = "Blur";
9102
- MouseInteractions2[MouseInteractions2["TouchStart"] = 7] = "TouchStart";
9103
- MouseInteractions2[MouseInteractions2["TouchMove_Departed"] = 8] = "TouchMove_Departed";
9104
- MouseInteractions2[MouseInteractions2["TouchEnd"] = 9] = "TouchEnd";
9105
- MouseInteractions2[MouseInteractions2["TouchCancel"] = 10] = "TouchCancel";
9184
+ MouseInteractions2[MouseInteractions2["DblClick"] = 3] = "DblClick";
9185
+ MouseInteractions2[MouseInteractions2["Focus"] = 4] = "Focus";
9186
+ MouseInteractions2[MouseInteractions2["Blur"] = 5] = "Blur";
9187
+ MouseInteractions2[MouseInteractions2["TouchStart"] = 6] = "TouchStart";
9188
+ MouseInteractions2[MouseInteractions2["TouchMove_Departed"] = 7] = "TouchMove_Departed";
9189
+ MouseInteractions2[MouseInteractions2["TouchEnd"] = 8] = "TouchEnd";
9190
+ MouseInteractions2[MouseInteractions2["TouchCancel"] = 9] = "TouchCancel";
9106
9191
  return MouseInteractions2;
9107
9192
  })(MouseInteractions || {});
9108
9193
  var PointerTypes = /* @__PURE__ */ ((PointerTypes2) => {
@@ -9782,6 +9867,60 @@ function initMutationObserver(options, rootEl) {
9782
9867
  });
9783
9868
  return observer;
9784
9869
  }
9870
+ function initVisibilityObserver({
9871
+ visibilityChangeCb,
9872
+ doc,
9873
+ mirror: mirror2,
9874
+ sampling
9875
+ }) {
9876
+ if (!visibilityChangeCb) {
9877
+ return () => {
9878
+ };
9879
+ }
9880
+ const observedElements = /* @__PURE__ */ new WeakMap();
9881
+ const debounceThreshold = typeof sampling.visibility === "number" ? sampling.visibility : 50;
9882
+ const throttledCb = throttle(
9883
+ callbackWrapper((entry) => {
9884
+ const target = entry.target;
9885
+ const id = mirror2.getId(target);
9886
+ const isVisible = entry.isIntersecting || entry.intersectionRatio > 0;
9887
+ if (id !== -1) {
9888
+ visibilityChangeCb({
9889
+ id,
9890
+ isVisible,
9891
+ visibilityRatio: entry.intersectionRatio
9892
+ });
9893
+ }
9894
+ }),
9895
+ debounceThreshold,
9896
+ { leading: sampling.visibility !== false, trailing: true }
9897
+ );
9898
+ const observer = new IntersectionObserver((entries) => {
9899
+ entries.forEach((entry) => {
9900
+ const target = entry.target;
9901
+ if (observedElements.has(target)) {
9902
+ throttledCb(entry);
9903
+ } else {
9904
+ observedElements.set(target, true);
9905
+ }
9906
+ });
9907
+ }, { root: null, threshold: [0.1, 0.9] });
9908
+ doc.querySelectorAll("*").forEach((el) => observer.observe(el));
9909
+ const mutationObserver = new MutationObserver((mutations) => {
9910
+ mutations.forEach((mutation) => {
9911
+ mutation.addedNodes.forEach((node2) => {
9912
+ if (node2 instanceof Element) {
9913
+ observer.observe(node2);
9914
+ }
9915
+ });
9916
+ });
9917
+ });
9918
+ mutationObserver.observe(doc, { childList: true, subtree: true });
9919
+ return () => {
9920
+ observer.disconnect();
9921
+ mutationObserver.disconnect();
9922
+ };
9923
+ }
9785
9924
  function initMoveObserver({
9786
9925
  mousemoveCb,
9787
9926
  sampling,
@@ -10597,6 +10736,7 @@ function initCustomElementObserver({
10597
10736
  function mergeHooks(o2, hooks) {
10598
10737
  const {
10599
10738
  mutationCb,
10739
+ visibilityChangeCb,
10600
10740
  mousemoveCb,
10601
10741
  mouseInteractionCb,
10602
10742
  scrollCb,
@@ -10616,6 +10756,12 @@ function mergeHooks(o2, hooks) {
10616
10756
  }
10617
10757
  mutationCb(...p);
10618
10758
  };
10759
+ o2.visibilityChangeCb = (...p) => {
10760
+ if (hooks.visibilityChange) {
10761
+ hooks.visibilityChange(...p);
10762
+ }
10763
+ visibilityChangeCb(...p);
10764
+ };
10619
10765
  o2.mousemoveCb = (...p) => {
10620
10766
  if (hooks.mousemove) {
10621
10767
  hooks.mousemove(...p);
@@ -10708,6 +10854,7 @@ function initObservers(o2, hooks = {}) {
10708
10854
  });
10709
10855
  const inputHandler = initInputObserver(o2);
10710
10856
  const mediaInteractionHandler = initMediaInteractionObserver(o2);
10857
+ const visibleHandler = initVisibilityObserver(o2);
10711
10858
  let styleSheetObserver = () => {
10712
10859
  };
10713
10860
  let adoptedStyleSheetObserver = () => {
@@ -10737,6 +10884,7 @@ function initObservers(o2, hooks = {}) {
10737
10884
  return callbackWrapper(() => {
10738
10885
  mutationBuffers.forEach((b) => b.reset());
10739
10886
  mutationObserver == null ? void 0 : mutationObserver.disconnect();
10887
+ visibleHandler();
10740
10888
  mousemoveHandler();
10741
10889
  mouseInteractionHandler();
10742
10890
  scrollHandler();
@@ -11803,6 +11951,7 @@ function record(options = {}) {
11803
11951
  emit,
11804
11952
  checkoutEveryNms,
11805
11953
  checkoutEveryNth,
11954
+ checkoutEveryEvc,
11806
11955
  blockClass = "rr-block",
11807
11956
  blockSelector = null,
11808
11957
  ignoreClass = "rr-ignore",
@@ -11931,7 +12080,8 @@ function record(options = {}) {
11931
12080
  incrementalSnapshotCount++;
11932
12081
  const exceedCount = checkoutEveryNth && incrementalSnapshotCount >= checkoutEveryNth;
11933
12082
  const exceedTime = checkoutEveryNms && e2.timestamp - lastFullSnapshotEvent.timestamp > checkoutEveryNms;
11934
- if (exceedCount || exceedTime) {
12083
+ const isVisibilityChanged = checkoutEveryEvc && e2.type === EventType.IncrementalSnapshot && e2.data.source === IncrementalSource.VisibilityChange;
12084
+ if (exceedCount || exceedTime || isVisibilityChanged) {
11935
12085
  takeFullSnapshot$1(true);
11936
12086
  }
11937
12087
  }
@@ -12100,6 +12250,15 @@ function record(options = {}) {
12100
12250
  return callbackWrapper(initObservers)(
12101
12251
  {
12102
12252
  mutationCb: wrappedMutationEmit,
12253
+ visibilityChangeCb: (v2) => {
12254
+ wrappedEmit({
12255
+ type: EventType.IncrementalSnapshot,
12256
+ data: {
12257
+ source: IncrementalSource.VisibilityChange,
12258
+ ...v2
12259
+ }
12260
+ });
12261
+ },
12103
12262
  mousemoveCb: (positions, source) => wrappedEmit({
12104
12263
  type: EventType.IncrementalSnapshot,
12105
12264
  data: {