@pendo/agent 2.303.0 → 2.305.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/dom.esm.js CHANGED
@@ -7359,7 +7359,7 @@ function getScreenPosition(element) {
7359
7359
  };
7360
7360
  }
7361
7361
 
7362
- var VERSION = '2.303.0_';
7362
+ var VERSION = '2.305.0_';
7363
7363
 
7364
7364
  var decodeURIComponent = _.isFunction(window.decodeURIComponent) ? window.decodeURIComponent : _.identity;
7365
7365
 
@@ -9255,50 +9255,49 @@ function isElementVisible(element, overflowPattern) {
9255
9255
  // *Probably* visible...
9256
9256
  return true;
9257
9257
  }
9258
+ function scrollElementIntoParentRect(element, scrollParent) {
9259
+ var clientRect = getClientRect(element);
9260
+ var scrollRect = getClientRect(scrollParent);
9261
+ var yScrollAmount = 0;
9262
+ var xScrollAmount = 0;
9263
+ var diff;
9264
+ if (clientRect.bottom > scrollRect.bottom) {
9265
+ yScrollAmount += clientRect.bottom - scrollRect.bottom;
9266
+ clientRect.top -= yScrollAmount;
9267
+ clientRect.bottom -= yScrollAmount;
9268
+ }
9269
+ if (clientRect.top < scrollRect.top) {
9270
+ diff = scrollRect.top - clientRect.top;
9271
+ yScrollAmount -= diff;
9272
+ clientRect.top += diff;
9273
+ clientRect.bottom += diff;
9274
+ }
9275
+ if (clientRect.right > scrollRect.right) {
9276
+ xScrollAmount += clientRect.right - scrollRect.right;
9277
+ clientRect.left -= xScrollAmount;
9278
+ clientRect.right -= xScrollAmount;
9279
+ }
9280
+ if (clientRect.left < scrollRect.left) {
9281
+ diff = scrollRect.left - clientRect.left;
9282
+ xScrollAmount -= diff;
9283
+ clientRect.left += diff;
9284
+ clientRect.right += diff;
9285
+ }
9286
+ if (_.isFunction(scrollParent.scrollBy)) {
9287
+ scrollParent.scrollBy(xScrollAmount, yScrollAmount);
9288
+ }
9289
+ else {
9290
+ scrollParent.scrollTop += yScrollAmount;
9291
+ scrollParent.scrollLeft += xScrollAmount;
9292
+ }
9293
+ }
9258
9294
  function scrollIntoView(element) {
9259
9295
  var overflowScroll = /(auto|scroll)/;
9260
- var clientRect;
9261
9296
  var scrollParent;
9262
- var scrollRect;
9263
- var yScrollAmount;
9264
- var xScrollAmount;
9265
- var diff;
9266
9297
  var pbody = getBody();
9267
9298
  scrollParent = getScrollParent(element, overflowScroll);
9268
9299
  while (scrollParent && scrollParent !== pbody) {
9269
- clientRect = getClientRect(element);
9270
- scrollRect = getClientRect(scrollParent);
9271
- yScrollAmount = 0;
9272
- xScrollAmount = 0;
9273
- if (clientRect.bottom > scrollRect.bottom) {
9274
- yScrollAmount += clientRect.bottom - scrollRect.bottom;
9275
- clientRect.top -= yScrollAmount;
9276
- clientRect.bottom -= yScrollAmount;
9277
- }
9278
- if (clientRect.top < scrollRect.top) {
9279
- diff = scrollRect.top - clientRect.top;
9280
- yScrollAmount -= diff;
9281
- clientRect.top += diff;
9282
- clientRect.bottom += diff;
9283
- }
9284
- if (clientRect.right > scrollRect.right) {
9285
- xScrollAmount += clientRect.right - scrollRect.right;
9286
- clientRect.left -= xScrollAmount;
9287
- clientRect.right -= xScrollAmount;
9288
- }
9289
- if (clientRect.left < scrollRect.left) {
9290
- diff = scrollRect.left - clientRect.left;
9291
- xScrollAmount -= diff;
9292
- clientRect.left += diff;
9293
- clientRect.right += diff;
9294
- }
9295
- if (_.isFunction(scrollParent.scrollBy)) {
9296
- scrollParent.scrollBy(xScrollAmount, yScrollAmount);
9297
- }
9298
- else {
9299
- scrollParent.scrollTop += yScrollAmount;
9300
- scrollParent.scrollLeft += xScrollAmount;
9301
- }
9300
+ scrollElementIntoParentRect(element, scrollParent);
9302
9301
  scrollParent = getScrollParent(scrollParent, overflowScroll);
9303
9302
  }
9304
9303
  }
@@ -3904,8 +3904,8 @@ let SERVER = '';
3904
3904
  let ASSET_HOST = '';
3905
3905
  let ASSET_PATH = '';
3906
3906
  let DESIGNER_SERVER = '';
3907
- let VERSION = '2.303.0_';
3908
- let PACKAGE_VERSION = '2.303.0';
3907
+ let VERSION = '2.305.0_';
3908
+ let PACKAGE_VERSION = '2.305.0';
3909
3909
  let LOADER = 'xhr';
3910
3910
  /* eslint-enable agent-eslint-rules/no-gulp-env-references */
3911
3911
  /**
@@ -10744,50 +10744,49 @@ function wouldBeVisibleAfterAutoScroll(element) {
10744
10744
  }
10745
10745
  return true;
10746
10746
  }
10747
+ function scrollElementIntoParentRect(element, scrollParent) {
10748
+ var clientRect = getClientRect(element);
10749
+ var scrollRect = getClientRect(scrollParent);
10750
+ var yScrollAmount = 0;
10751
+ var xScrollAmount = 0;
10752
+ var diff;
10753
+ if (clientRect.bottom > scrollRect.bottom) {
10754
+ yScrollAmount += clientRect.bottom - scrollRect.bottom;
10755
+ clientRect.top -= yScrollAmount;
10756
+ clientRect.bottom -= yScrollAmount;
10757
+ }
10758
+ if (clientRect.top < scrollRect.top) {
10759
+ diff = scrollRect.top - clientRect.top;
10760
+ yScrollAmount -= diff;
10761
+ clientRect.top += diff;
10762
+ clientRect.bottom += diff;
10763
+ }
10764
+ if (clientRect.right > scrollRect.right) {
10765
+ xScrollAmount += clientRect.right - scrollRect.right;
10766
+ clientRect.left -= xScrollAmount;
10767
+ clientRect.right -= xScrollAmount;
10768
+ }
10769
+ if (clientRect.left < scrollRect.left) {
10770
+ diff = scrollRect.left - clientRect.left;
10771
+ xScrollAmount -= diff;
10772
+ clientRect.left += diff;
10773
+ clientRect.right += diff;
10774
+ }
10775
+ if (_.isFunction(scrollParent.scrollBy)) {
10776
+ scrollParent.scrollBy(xScrollAmount, yScrollAmount);
10777
+ }
10778
+ else {
10779
+ scrollParent.scrollTop += yScrollAmount;
10780
+ scrollParent.scrollLeft += xScrollAmount;
10781
+ }
10782
+ }
10747
10783
  function scrollIntoView(element) {
10748
10784
  var overflowScroll = /(auto|scroll)/;
10749
- var clientRect;
10750
10785
  var scrollParent;
10751
- var scrollRect;
10752
- var yScrollAmount;
10753
- var xScrollAmount;
10754
- var diff;
10755
10786
  var pbody = getBody();
10756
10787
  scrollParent = getScrollParent(element, overflowScroll);
10757
10788
  while (scrollParent && scrollParent !== pbody) {
10758
- clientRect = getClientRect(element);
10759
- scrollRect = getClientRect(scrollParent);
10760
- yScrollAmount = 0;
10761
- xScrollAmount = 0;
10762
- if (clientRect.bottom > scrollRect.bottom) {
10763
- yScrollAmount += clientRect.bottom - scrollRect.bottom;
10764
- clientRect.top -= yScrollAmount;
10765
- clientRect.bottom -= yScrollAmount;
10766
- }
10767
- if (clientRect.top < scrollRect.top) {
10768
- diff = scrollRect.top - clientRect.top;
10769
- yScrollAmount -= diff;
10770
- clientRect.top += diff;
10771
- clientRect.bottom += diff;
10772
- }
10773
- if (clientRect.right > scrollRect.right) {
10774
- xScrollAmount += clientRect.right - scrollRect.right;
10775
- clientRect.left -= xScrollAmount;
10776
- clientRect.right -= xScrollAmount;
10777
- }
10778
- if (clientRect.left < scrollRect.left) {
10779
- diff = scrollRect.left - clientRect.left;
10780
- xScrollAmount -= diff;
10781
- clientRect.left += diff;
10782
- clientRect.right += diff;
10783
- }
10784
- if (_.isFunction(scrollParent.scrollBy)) {
10785
- scrollParent.scrollBy(xScrollAmount, yScrollAmount);
10786
- }
10787
- else {
10788
- scrollParent.scrollTop += yScrollAmount;
10789
- scrollParent.scrollLeft += xScrollAmount;
10790
- }
10789
+ scrollElementIntoParentRect(element, scrollParent);
10791
10790
  scrollParent = getScrollParent(scrollParent, overflowScroll);
10792
10791
  }
10793
10792
  }
@@ -11541,9 +11540,33 @@ function hasHashedAllowedOriginServers() {
11541
11540
  function parseUrl(url) {
11542
11541
  if (!_.isString(url))
11543
11542
  return;
11543
+ try {
11544
+ const urlObj = new URL(url);
11545
+ const filename = _.last(urlObj.pathname.split('/'));
11546
+ const splitFilename = filename.split('.');
11547
+ const result = {
11548
+ filename: _.first(splitFilename),
11549
+ extension: splitFilename.slice(1).join('.'),
11550
+ query: {}
11551
+ };
11552
+ if (urlObj.search.length) {
11553
+ result.query = queryStringToObject(urlObj.search.substring(1));
11554
+ }
11555
+ if (urlObj.hash.length) {
11556
+ const fragQueryStart = urlObj.hash.indexOf('?');
11557
+ if (fragQueryStart >= 0) {
11558
+ const fragmentQuery = urlObj.hash.substring(fragQueryStart + 1);
11559
+ result.fragmentQuery = queryStringToObject(fragmentQuery);
11560
+ }
11561
+ }
11562
+ return result;
11563
+ }
11564
+ catch (e) {
11565
+ }
11566
+ // original implementation, if URL object fails
11544
11567
  var queryString = parseQueryString(url).substring(1);
11545
11568
  var query = queryString && queryString.length ? queryStringToObject(queryString) : {};
11546
- var filename = _.last(_.first(url.split('?')).split('/'));
11569
+ var filename = _.last(_.first(url.split(/[?#]/)).split('/'));
11547
11570
  var splitFilename = filename.split('.');
11548
11571
  return {
11549
11572
  filename: _.first(splitFilename),
@@ -16506,7 +16529,7 @@ var BuildingBlockTooltips = (function () {
16506
16529
  attachBBAdvanceActions,
16507
16530
  attachScrollHandlers,
16508
16531
  isBuildingBlockGuideRelativeToElement,
16509
- positionStepForTooltip,
16532
+ positionStepForGuide,
16510
16533
  patchGuideContainerWidthForResponsiveTooltips
16511
16534
  };
16512
16535
  function patchGuideContainerWidthForResponsiveTooltips(step, providedGuideContainer, json) {
@@ -16525,12 +16548,19 @@ var BuildingBlockTooltips = (function () {
16525
16548
  return;
16526
16549
  calculateVwRelativeToLayoutDir(guideContainer, tooltipContext);
16527
16550
  }
16528
- function positionStepForTooltip(step, json, guideContainerEle) {
16529
- // This directly modifies step.guideElement object
16530
- createBBTooltip(json, step.element, step, guideContainerEle);
16531
- if (!step.hasBeenScrolledTo) {
16551
+ function positionStepForGuide(step, json, guideContainerEle) {
16552
+ if (step.attributes && step.attributes.calculatedType === 'tooltip') {
16553
+ // This directly modifies step.guideElement object
16554
+ createBBTooltip(json, step.element, step, guideContainerEle);
16555
+ if (!step.hasBeenScrolledTo) {
16556
+ scrollIntoView(step.element);
16557
+ scrollToTooltip(step.element, guideContainerEle, step.attributes.layoutDir);
16558
+ step.hasBeenScrolledTo = true;
16559
+ }
16560
+ }
16561
+ else if (step.element && !step.hasBeenScrolledTo) {
16532
16562
  scrollIntoView(step.element);
16533
- scrollToTooltip(step.element, guideContainerEle, step.attributes.layoutDir);
16563
+ scrollElementIntoParentRect(step.element, window);
16534
16564
  step.hasBeenScrolledTo = true;
16535
16565
  }
16536
16566
  }
@@ -18383,9 +18413,7 @@ function recalculateGuideHeightOnImgLoad(node, step) {
18383
18413
  FlexboxPolyfill.flexAllThings(step.containerId, step);
18384
18414
  }
18385
18415
  }
18386
- if (step.attributes.calculatedType === 'tooltip') {
18387
- BuildingBlockTooltips.positionStepForTooltip(step, step.domJson, guideContainer);
18388
- }
18416
+ BuildingBlockTooltips.positionStepForGuide(step, step.domJson, guideContainer);
18389
18417
  guideContainer.style.visibility = 'visible';
18390
18418
  guideContainer.parentNode.style.visibility = 'visible';
18391
18419
  dom.event.dispatch(guideContainer, {
@@ -18401,9 +18429,7 @@ function recalculateGuideHeightOnImgLoad(node, step) {
18401
18429
  log.info('Failed to find guideContainer for id: ' + step.containerId);
18402
18430
  return;
18403
18431
  }
18404
- if (step.attributes.calculatedType === 'tooltip') {
18405
- BuildingBlockTooltips.positionStepForTooltip(step, step.domJson, guideContainer);
18406
- }
18432
+ BuildingBlockTooltips.positionStepForGuide(step, step.domJson, guideContainer);
18407
18433
  guideContainer.style.visibility = 'visible';
18408
18434
  guideContainer.parentNode.style.visibility = 'visible';
18409
18435
  FlexboxPolyfill.flexAllThings(step.containerId, step);
@@ -18832,6 +18858,30 @@ var addExtension = (function setupExtensionService(ExtService) {
18832
18858
  return addExtensionPublic;
18833
18859
  })(ExtensionService);
18834
18860
 
18861
+ function syncColorMode(step, rerender = false) {
18862
+ const darkModeSelector = _.get(step, 'attributes.darkMode.selector', '');
18863
+ if (!darkModeSelector)
18864
+ return;
18865
+ // Determine the target dark mode state
18866
+ let targetDarkMode;
18867
+ if (pendo$1.designerEnabled && _.has(step, 'attributes.darkMode.override')) {
18868
+ // In designer mode, use the override value
18869
+ targetDarkMode = step.attributes.darkMode.override;
18870
+ }
18871
+ else {
18872
+ // In client mode, detect based on selector
18873
+ targetDarkMode = pendo$1.Sizzle(darkModeSelector).length > 0;
18874
+ }
18875
+ // Update and rerender if the state changed
18876
+ if (step.isDarkMode !== targetDarkMode) {
18877
+ step.isDarkMode = targetDarkMode;
18878
+ if (rerender) {
18879
+ step.hide();
18880
+ step.show(step.seenReason);
18881
+ }
18882
+ }
18883
+ }
18884
+
18835
18885
  var BuildingBlockResourceCenter = (function () {
18836
18886
  return {
18837
18887
  initializeResourceCenter,
@@ -19079,6 +19129,9 @@ var BuildingBlockResourceCenter = (function () {
19079
19129
  if (isSupportedNativeIntegration(integrationProvider))
19080
19130
  renderNativeIntegration(integrationProvider);
19081
19131
  var step = module.steps[0];
19132
+ if (step.isDarkMode === undefined) {
19133
+ syncColorMode(step);
19134
+ }
19082
19135
  var domJsonToRender = updatePseudoStyleSelectors(step.domJson);
19083
19136
  domJsonToRender.props['data-pendo-guide-id'] = module.id;
19084
19137
  var renderedGuide = buildNodeFromJSON(domJsonToRender, step);
@@ -20962,30 +21015,6 @@ class AutoDisplayPhase {
20962
21015
  }
20963
21016
  }
20964
21017
 
20965
- function syncColorMode(step, rerender = false) {
20966
- const darkModeSelector = _.get(step, 'attributes.darkMode.selector', '');
20967
- if (!darkModeSelector)
20968
- return;
20969
- // Determine the target dark mode state
20970
- let targetDarkMode;
20971
- if (pendo$1.designerEnabled && _.has(step, 'attributes.darkMode.override')) {
20972
- // In designer mode, use the override value
20973
- targetDarkMode = step.attributes.darkMode.override;
20974
- }
20975
- else {
20976
- // In client mode, detect based on selector
20977
- targetDarkMode = pendo$1.Sizzle(darkModeSelector).length > 0;
20978
- }
20979
- // Update and rerender if the state changed
20980
- if (step.isDarkMode !== targetDarkMode) {
20981
- step.isDarkMode = targetDarkMode;
20982
- if (rerender) {
20983
- step.hide();
20984
- step.show(step.seenReason);
20985
- }
20986
- }
20987
- }
20988
-
20989
21018
  /*
20990
21019
  * Guide Loop
20991
21020
  *
@@ -26743,9 +26772,13 @@ class NetworkRequestIntercept {
26743
26772
  const contentLengthHeader = config.headers.get('content-length');
26744
26773
  // Check if content type is readable (text or JSON)
26745
26774
  const isReadableContent = contentType.indexOf('text/') !== -1 || contentType.indexOf('application/json') !== -1;
26775
+ const isEventStream = contentType.indexOf('text/event-stream') !== -1;
26776
+ // Cannot read event stream content as text or else it will block the consumer from receiving the event stream messages
26777
+ if (isEventStream) {
26778
+ return '[Event stream content]';
26779
+ }
26746
26780
  if (!isReadableContent) {
26747
- const typeDisplay = contentType;
26748
- return `[Binary content: ${typeDisplay}]`;
26781
+ return `[Binary content: ${contentType}]`;
26749
26782
  }
26750
26783
  if (contentLengthHeader) {
26751
26784
  const size = parseInt(contentLengthHeader, 10);
@@ -28761,7 +28794,7 @@ var BuildingBlockGuides = (function () {
28761
28794
  adjustGuideContentWidth,
28762
28795
  findDomBlockInDomJson,
28763
28796
  isElementHiddenInGuide: FlexboxPolyfill.isElementHiddenInGuide,
28764
- positionStepForTooltip: BuildingBlockTooltips.positionStepForTooltip,
28797
+ positionStepForTooltip: BuildingBlockTooltips.positionStepForGuide,
28765
28798
  flexAllThings: FlexboxPolyfill.flexAllThings,
28766
28799
  flexElement: FlexboxPolyfill.flexElement,
28767
28800
  findTopLevelContainer,
@@ -28913,8 +28946,8 @@ var BuildingBlockGuides = (function () {
28913
28946
  else {
28914
28947
  BuildingBlockTooltips.attachBBAdvanceActions(step);
28915
28948
  }
28916
- if (relativeToElement && !hasImageCount) {
28917
- BuildingBlockTooltips.positionStepForTooltip(step, modifiableJSON, guideContainer[0]);
28949
+ if (!hasImageCount) {
28950
+ BuildingBlockTooltips.positionStepForGuide(step, modifiableJSON, guideContainer[0]);
28918
28951
  }
28919
28952
  if (isResourceCenter) {
28920
28953
  BuildingBlockResourceCenter.showHomeViewOrEmptyState(guide);
@@ -38041,7 +38074,7 @@ const FrustrationEvent = (function () {
38041
38074
  deadClickTimeouts = {};
38042
38075
  }
38043
38076
  function handleClickEvent(eventData, browserEvent) {
38044
- const isHyperlinked = browserEvent.target && browserEvent.target.tagName === 'A' && browserEvent.target.hasAttribute('href');
38077
+ const isHyperlinked = browserEvent.target && browserEvent.target.tagName === 'A' && _.isFunction(browserEvent.target.hasAttribute) && browserEvent.target.hasAttribute('href');
38045
38078
  const isDeadClickEligibleTag = browserEvent.target && !_.contains(deadClickIneligibleTags, browserEvent.target.tagName);
38046
38079
  if (canQueueDeadClicks && !hasHighlightedText && isDeadClickEligibleTag && !isHyperlinked) {
38047
38080
  queueDeadClick(eventData);
@@ -38966,7 +38999,7 @@ class WebAnalytics {
38966
38999
  const parsedUrl = this.api.util.parseUrl(url);
38967
39000
  if (!parsedUrl)
38968
39001
  return {};
38969
- const { query } = parsedUrl;
39002
+ const query = this.pendo._.extend({}, parsedUrl.fragmentQuery, parsedUrl.query);
38970
39003
  const source = query.utm_source;
38971
39004
  const medium = query.utm_medium;
38972
39005
  const campaign = query.utm_campaign;
@@ -43635,6 +43668,7 @@ function serializeNode(n2, options) {
43635
43668
  mirror: mirror2,
43636
43669
  blockClass,
43637
43670
  blockSelector,
43671
+ hideSelector,
43638
43672
  needsMask,
43639
43673
  inlineStylesheet,
43640
43674
  maskInputOptions = {},
@@ -43676,6 +43710,7 @@ function serializeNode(n2, options) {
43676
43710
  doc,
43677
43711
  blockClass,
43678
43712
  blockSelector,
43713
+ hideSelector,
43679
43714
  inlineStylesheet,
43680
43715
  maskInputOptions,
43681
43716
  maskInputFn,
@@ -43774,6 +43809,7 @@ function serializeElementNode(n2, options) {
43774
43809
  doc,
43775
43810
  blockClass,
43776
43811
  blockSelector,
43812
+ hideSelector,
43777
43813
  inlineStylesheet,
43778
43814
  maskInputOptions = {},
43779
43815
  maskInputFn,
@@ -43786,6 +43822,7 @@ function serializeElementNode(n2, options) {
43786
43822
  needsMask
43787
43823
  } = options;
43788
43824
  const needBlock = _isBlockedElement(n2, blockClass, blockSelector);
43825
+ const needHide = needBlock && hideSelector ? _isBlockedElement(n2, "", hideSelector) : false;
43789
43826
  const tagName = getValidTagName$1(n2);
43790
43827
  let attributes = {};
43791
43828
  const len = n2.attributes.length;
@@ -43932,7 +43969,12 @@ function serializeElementNode(n2, options) {
43932
43969
  attributes.rr_scrollTop = n2.scrollTop;
43933
43970
  }
43934
43971
  }
43935
- if (needBlock) {
43972
+ if (needHide) {
43973
+ attributes = {
43974
+ class: attributes.class,
43975
+ rr_display: "none"
43976
+ };
43977
+ } else if (needBlock) {
43936
43978
  const { width, height } = n2.getBoundingClientRect();
43937
43979
  attributes = {
43938
43980
  class: attributes.class,
@@ -44007,6 +44049,7 @@ function serializeNodeWithId(n2, options) {
44007
44049
  mirror: mirror2,
44008
44050
  blockClass,
44009
44051
  blockSelector,
44052
+ hideSelector,
44010
44053
  maskTextClass,
44011
44054
  maskTextSelector,
44012
44055
  skipChild = false,
@@ -44043,6 +44086,7 @@ function serializeNodeWithId(n2, options) {
44043
44086
  mirror: mirror2,
44044
44087
  blockClass,
44045
44088
  blockSelector,
44089
+ hideSelector,
44046
44090
  needsMask,
44047
44091
  inlineStylesheet,
44048
44092
  maskInputOptions,
@@ -44092,6 +44136,7 @@ function serializeNodeWithId(n2, options) {
44092
44136
  mirror: mirror2,
44093
44137
  blockClass,
44094
44138
  blockSelector,
44139
+ hideSelector,
44095
44140
  needsMask,
44096
44141
  maskTextClass,
44097
44142
  maskTextSelector,
@@ -44151,6 +44196,7 @@ function serializeNodeWithId(n2, options) {
44151
44196
  mirror: mirror2,
44152
44197
  blockClass,
44153
44198
  blockSelector,
44199
+ hideSelector,
44154
44200
  needsMask,
44155
44201
  maskTextClass,
44156
44202
  maskTextSelector,
@@ -44192,6 +44238,7 @@ function serializeNodeWithId(n2, options) {
44192
44238
  mirror: mirror2,
44193
44239
  blockClass,
44194
44240
  blockSelector,
44241
+ hideSelector,
44195
44242
  needsMask,
44196
44243
  maskTextClass,
44197
44244
  maskTextSelector,
@@ -44230,6 +44277,7 @@ function snapshot(n2, options) {
44230
44277
  mirror: mirror2 = new Mirror(),
44231
44278
  blockClass = "rr-block",
44232
44279
  blockSelector = null,
44280
+ hideSelector = null,
44233
44281
  maskTextClass = "rr-mask",
44234
44282
  maskTextSelector = null,
44235
44283
  inlineStylesheet = true,
@@ -44289,6 +44337,7 @@ function snapshot(n2, options) {
44289
44337
  mirror: mirror2,
44290
44338
  blockClass,
44291
44339
  blockSelector,
44340
+ hideSelector,
44292
44341
  maskTextClass,
44293
44342
  maskTextSelector,
44294
44343
  skipChild: false,
@@ -45005,6 +45054,7 @@ class MutationBuffer {
45005
45054
  __publicField(this, "mutationCb");
45006
45055
  __publicField(this, "blockClass");
45007
45056
  __publicField(this, "blockSelector");
45057
+ __publicField(this, "hideSelector");
45008
45058
  __publicField(this, "maskTextClass");
45009
45059
  __publicField(this, "maskTextSelector");
45010
45060
  __publicField(this, "inlineStylesheet");
@@ -45068,6 +45118,7 @@ class MutationBuffer {
45068
45118
  mirror: this.mirror,
45069
45119
  blockClass: this.blockClass,
45070
45120
  blockSelector: this.blockSelector,
45121
+ hideSelector: this.hideSelector,
45071
45122
  maskTextClass: this.maskTextClass,
45072
45123
  maskTextSelector: this.maskTextSelector,
45073
45124
  skipChild: true,
@@ -45245,7 +45296,12 @@ class MutationBuffer {
45245
45296
  index.childNodes(textarea),
45246
45297
  (cn) => index.textContent(cn) || ""
45247
45298
  ).join("");
45248
- const needsMask = needMaskingText(textarea, this.maskTextClass, this.maskTextSelector, true);
45299
+ const needsMask = needMaskingText(
45300
+ textarea,
45301
+ this.maskTextClass,
45302
+ this.maskTextSelector,
45303
+ true
45304
+ );
45249
45305
  item.attributes.value = maskInputValue({
45250
45306
  element: textarea,
45251
45307
  maskInputOptions: this.maskInputOptions,
@@ -45440,6 +45496,7 @@ class MutationBuffer {
45440
45496
  "mutationCb",
45441
45497
  "blockClass",
45442
45498
  "blockSelector",
45499
+ "hideSelector",
45443
45500
  "maskTextClass",
45444
45501
  "maskTextSelector",
45445
45502
  "inlineStylesheet",
@@ -47637,6 +47694,7 @@ function record(options = {}) {
47637
47694
  checkoutEveryNth,
47638
47695
  blockClass = "rr-block",
47639
47696
  blockSelector = null,
47697
+ hideSelector = null,
47640
47698
  ignoreClass = "rr-ignore",
47641
47699
  ignoreSelector = null,
47642
47700
  maskTextClass = "rr-mask",
@@ -47835,6 +47893,7 @@ function record(options = {}) {
47835
47893
  bypassOptions: {
47836
47894
  blockClass,
47837
47895
  blockSelector,
47896
+ hideSelector,
47838
47897
  maskTextClass,
47839
47898
  maskTextSelector,
47840
47899
  inlineStylesheet,
@@ -47876,6 +47935,7 @@ function record(options = {}) {
47876
47935
  mirror,
47877
47936
  blockClass,
47878
47937
  blockSelector,
47938
+ hideSelector,
47879
47939
  maskTextClass,
47880
47940
  maskTextSelector,
47881
47941
  inlineStylesheet,
@@ -48029,6 +48089,7 @@ function record(options = {}) {
48029
48089
  maskTextFn,
48030
48090
  keepIframeSrcFn,
48031
48091
  blockSelector,
48092
+ hideSelector,
48032
48093
  slimDOMOptions,
48033
48094
  dataURLOptions,
48034
48095
  mirror,
@@ -48310,7 +48371,7 @@ typeof SuppressedError === "function" ? SuppressedError : function (error, suppr
48310
48371
  };
48311
48372
 
48312
48373
  const RECORDING_CONFIG_WORKERURL$1 = 'recording.workerUrl';
48313
- const MAX_SIZE = 1000000;
48374
+ const MAX_SIZE = 2000000;
48314
48375
  const RESOURCE_CACHING$1 = 'resourceCaching';
48315
48376
  class Transport {
48316
48377
  constructor(WorkerClass, pendo, api) {
@@ -48374,6 +48435,10 @@ class Transport {
48374
48435
  if (strPayload.length > this.maxSize) {
48375
48436
  const error = new Error('maximum recording payload size exceeded');
48376
48437
  error.reason = 'HEAVY_EVENT';
48438
+ error.context = {
48439
+ size: strPayload.length,
48440
+ count: payload === null || payload === void 0 ? void 0 : payload.recordingPayloadCount
48441
+ };
48377
48442
  throw error;
48378
48443
  }
48379
48444
  envelope.body = this.pendo.compress(strPayload, 'binary');
@@ -53621,6 +53686,8 @@ class SessionRecorder {
53621
53686
  password: true,
53622
53687
  tel: true
53623
53688
  });
53689
+ const blockedSelectors = ['.pendo-ignore', '.pendo-sr-ignore'].concat(recordingOptions.blockedSelectors || []);
53690
+ const hiddenSelectors = ['.pendo-sr-hide'].concat(recordingOptions.hiddenSelectors || []);
53624
53691
  const config = {
53625
53692
  maskInputFn: this.pendo._.partial(maskInput, maskOptions),
53626
53693
  maskTextFn: this.pendo._.partial(maskText, maskOptions),
@@ -53628,7 +53695,9 @@ class SessionRecorder {
53628
53695
  maskTextClass: null,
53629
53696
  maskInputOptions: maskOptions.maskInputOptions,
53630
53697
  blockClass: null,
53631
- blockSelector: ['.pendo-ignore', '.pendo-sr-ignore'].concat(recordingOptions.blockedSelectors || []).join(','),
53698
+ // we need to concat hidden selectors to re-use block selector logic
53699
+ blockSelector: blockedSelectors.concat(hiddenSelectors).join(','),
53700
+ hideSelector: hiddenSelectors.join(','),
53632
53701
  recordCrossOriginIframes: recordingOptions.recordCrossOriginIframes != null ? recordingOptions.recordCrossOriginIframes : true
53633
53702
  };
53634
53703
  return config;
@@ -54088,7 +54157,7 @@ class SessionRecorder {
54088
54157
  }
54089
54158
  catch (e) {
54090
54159
  if (e.reason) {
54091
- this.logStopReason(e.reason);
54160
+ this.logStopReason(e.reason, e.context);
54092
54161
  }
54093
54162
  else {
54094
54163
  this.logStopReason('SEND_QUEUE_ERROR', e);