@pendo/agent 2.348.0 → 2.349.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 +1 -1
- package/dist/pendo.module.js +56 -10
- package/dist/pendo.module.min.js +4 -4
- package/dist/servers.json +8 -8
- package/package.json +1 -1
package/dist/dom.esm.js
CHANGED
|
@@ -7555,7 +7555,7 @@ function applyMatrix2dRect(matrix2d, rect) {
|
|
|
7555
7555
|
return transformedRect;
|
|
7556
7556
|
}
|
|
7557
7557
|
|
|
7558
|
-
var VERSION = '2.
|
|
7558
|
+
var VERSION = '2.349.0_';
|
|
7559
7559
|
|
|
7560
7560
|
var decodeURIComponent = _.isFunction(globalScope.decodeURIComponent) ? globalScope.decodeURIComponent : _.identity;
|
|
7561
7561
|
|
package/dist/pendo.module.js
CHANGED
|
@@ -4138,8 +4138,8 @@ let SERVER = '';
|
|
|
4138
4138
|
let ASSET_HOST = '';
|
|
4139
4139
|
let ASSET_PATH = '';
|
|
4140
4140
|
let DESIGNER_SERVER = '';
|
|
4141
|
-
let VERSION = '2.
|
|
4142
|
-
let PACKAGE_VERSION = '2.
|
|
4141
|
+
let VERSION = '2.349.0_';
|
|
4142
|
+
let PACKAGE_VERSION = '2.349.0';
|
|
4143
4143
|
let LOADER = 'xhr';
|
|
4144
4144
|
/* eslint-enable web-sdk-eslint-rules/no-gulp-env-references */
|
|
4145
4145
|
/**
|
|
@@ -25586,9 +25586,12 @@ function hasLegacyGuides(guides, pendo) {
|
|
|
25586
25586
|
if (pendo && pendo.designer)
|
|
25587
25587
|
return true;
|
|
25588
25588
|
return _.any(guides, function (guide) {
|
|
25589
|
-
if (isForm(guide))
|
|
25589
|
+
if (isForm(guide) || guide.editorType === 'html')
|
|
25590
25590
|
return false;
|
|
25591
25591
|
return _.any(guide.steps, function (step) {
|
|
25592
|
+
// HTML steps load their content from htmlContentUrl and ship their own styles
|
|
25593
|
+
if (step.type === 'html')
|
|
25594
|
+
return false;
|
|
25592
25595
|
return !(step.domUrl || step.domJsonpUrl || step.domJson);
|
|
25593
25596
|
});
|
|
25594
25597
|
});
|
|
@@ -37093,6 +37096,16 @@ function registerModules(store) {
|
|
|
37093
37096
|
store.registerModule('networkUrl', NetworkUrlModule);
|
|
37094
37097
|
}
|
|
37095
37098
|
|
|
37099
|
+
// Shared by guide automations (ActionAutomation) and the agent-workflows invoke_action tool, so an
|
|
37100
|
+
// element is clicked the same way whichever of them drives it.
|
|
37101
|
+
function simulateClick(element) {
|
|
37102
|
+
element.dispatchEvent(new MouseEvent('pointerdown', { bubbles: true, cancelable: true }));
|
|
37103
|
+
element.dispatchEvent(new MouseEvent('mousedown', { bubbles: true, cancelable: true }));
|
|
37104
|
+
element.dispatchEvent(new MouseEvent('pointerup', { bubbles: true, cancelable: true }));
|
|
37105
|
+
element.dispatchEvent(new MouseEvent('mouseup', { bubbles: true, cancelable: true }));
|
|
37106
|
+
element.click();
|
|
37107
|
+
}
|
|
37108
|
+
|
|
37096
37109
|
var ActionAutomation = (function () {
|
|
37097
37110
|
let _;
|
|
37098
37111
|
var pendoGlobal;
|
|
@@ -37116,7 +37129,7 @@ var ActionAutomation = (function () {
|
|
|
37116
37129
|
getElement,
|
|
37117
37130
|
getValue,
|
|
37118
37131
|
injectText,
|
|
37119
|
-
simulateClick,
|
|
37132
|
+
simulateClick: simulateClick$1,
|
|
37120
37133
|
isAutomationInQueue,
|
|
37121
37134
|
popQueue,
|
|
37122
37135
|
setActive
|
|
@@ -37165,12 +37178,8 @@ var ActionAutomation = (function () {
|
|
|
37165
37178
|
changeEvent.simulated = true; // for React ≤ 15.6.0
|
|
37166
37179
|
element.dispatchEvent(changeEvent);
|
|
37167
37180
|
}
|
|
37168
|
-
function simulateClick(element) {
|
|
37169
|
-
element
|
|
37170
|
-
element.dispatchEvent(new MouseEvent('mousedown', { bubbles: true, cancelable: true }));
|
|
37171
|
-
element.dispatchEvent(new MouseEvent('pointerup', { bubbles: true, cancelable: true }));
|
|
37172
|
-
element.dispatchEvent(new MouseEvent('mouseup', { bubbles: true, cancelable: true }));
|
|
37173
|
-
element.click();
|
|
37181
|
+
function simulateClick$1(element) {
|
|
37182
|
+
simulateClick(element);
|
|
37174
37183
|
}
|
|
37175
37184
|
function isAutomationInQueue(automation) {
|
|
37176
37185
|
return !!_.find(this.automationQueue, function (item) {
|
|
@@ -52871,6 +52880,42 @@ class SessionRecorder {
|
|
|
52871
52880
|
return null;
|
|
52872
52881
|
}
|
|
52873
52882
|
}
|
|
52883
|
+
/**
|
|
52884
|
+
* Run URL attributes in snapshot and mutation events through the Location API attribute transforms, the same
|
|
52885
|
+
* ones applied to elementPath.
|
|
52886
|
+
*
|
|
52887
|
+
* @access private
|
|
52888
|
+
* @param event The rrweb event being handled
|
|
52889
|
+
*/
|
|
52890
|
+
applyAttributeTransforms(event) {
|
|
52891
|
+
const _ = this.pendo._;
|
|
52892
|
+
if (_.isEmpty(_.get(this.api.store.state, 'nodeAttr.transforms')))
|
|
52893
|
+
return;
|
|
52894
|
+
const getAttribute = this.api.store.getters['nodeAttr/getAttribute']();
|
|
52895
|
+
const transformAttributes = (attributes) => {
|
|
52896
|
+
_.each(attributes, (value, name) => {
|
|
52897
|
+
// same as rrweb's absolutizing, leave same-document refs (svg <use href="#id">), data: and blob: URLs alone
|
|
52898
|
+
if (!_.isString(value) || /^(#|data:|blob:)/.test(value))
|
|
52899
|
+
return;
|
|
52900
|
+
// rrweb renames an iframe's src to rr_src when it can't access the frame's document
|
|
52901
|
+
const attrName = name === 'rr_src' ? 'src' : name;
|
|
52902
|
+
attributes[name] = getAttribute({ [attrName]: value }, attrName);
|
|
52903
|
+
});
|
|
52904
|
+
};
|
|
52905
|
+
const transformNode = (node) => {
|
|
52906
|
+
if (!node)
|
|
52907
|
+
return;
|
|
52908
|
+
transformAttributes(node.attributes);
|
|
52909
|
+
_.each(node.childNodes, transformNode);
|
|
52910
|
+
};
|
|
52911
|
+
if (event.type === EVENT_TYPES.FULL_SNAPSHOT) {
|
|
52912
|
+
transformNode(event.data.node);
|
|
52913
|
+
}
|
|
52914
|
+
else if (event.type === EVENT_TYPES.INCREMENTAL_SNAPSHOT && event.data.source === EVENT_TYPES.INCREMENTAL_SOURCE_MUTATION) {
|
|
52915
|
+
_.each(event.data.adds, (add) => transformNode(add.node));
|
|
52916
|
+
_.each(event.data.attributes, (item) => transformAttributes(item.attributes));
|
|
52917
|
+
}
|
|
52918
|
+
}
|
|
52874
52919
|
/**
|
|
52875
52920
|
* Handle new rrweb events coming in. This will also make sure that we are properly sending a "keyframe"
|
|
52876
52921
|
* as the BE expects it. A "keyframe" should consist of only the events needed to start a recording. This includes
|
|
@@ -52939,6 +52984,7 @@ class SessionRecorder {
|
|
|
52939
52984
|
}
|
|
52940
52985
|
this.send();
|
|
52941
52986
|
}
|
|
52987
|
+
this.applyAttributeTransforms(event);
|
|
52942
52988
|
this.buffer.push(event);
|
|
52943
52989
|
if (isSnapshot) {
|
|
52944
52990
|
this.lastKeyFrameTime = event.timestamp;
|