@pendo/agent 2.306.1 → 2.307.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 +68 -16
- package/dist/pendo.module.min.js +8 -8
- package/dist/servers.json +7 -7
- package/package.json +1 -1
package/dist/dom.esm.js
CHANGED
package/dist/pendo.module.js
CHANGED
|
@@ -3905,8 +3905,8 @@ let SERVER = '';
|
|
|
3905
3905
|
let ASSET_HOST = '';
|
|
3906
3906
|
let ASSET_PATH = '';
|
|
3907
3907
|
let DESIGNER_SERVER = '';
|
|
3908
|
-
let VERSION = '2.
|
|
3909
|
-
let PACKAGE_VERSION = '2.
|
|
3908
|
+
let VERSION = '2.307.0_';
|
|
3909
|
+
let PACKAGE_VERSION = '2.307.0';
|
|
3910
3910
|
let LOADER = 'xhr';
|
|
3911
3911
|
/* eslint-enable agent-eslint-rules/no-gulp-env-references */
|
|
3912
3912
|
/**
|
|
@@ -13920,7 +13920,12 @@ var whenLoadedCall = function (callback, win) {
|
|
|
13920
13920
|
callback();
|
|
13921
13921
|
}
|
|
13922
13922
|
else {
|
|
13923
|
-
return attachEventInternal(win, 'load',
|
|
13923
|
+
return attachEventInternal(win, 'load', function () {
|
|
13924
|
+
// some apps fire "fake" load events APP-139170 (https://github.com/rtCamp/rt-optimizer/blob/main/rt-scripts-optimizer.php#L173)
|
|
13925
|
+
if (document.readyState === 'complete') {
|
|
13926
|
+
callback();
|
|
13927
|
+
}
|
|
13928
|
+
});
|
|
13924
13929
|
}
|
|
13925
13930
|
return _.noop;
|
|
13926
13931
|
};
|
|
@@ -15495,29 +15500,55 @@ function addInlineStyles(config, id, styles, element = document.head) {
|
|
|
15495
15500
|
return styleTag;
|
|
15496
15501
|
}
|
|
15497
15502
|
|
|
15498
|
-
|
|
15503
|
+
const DARK_MODE_ATTR = 'data-pendo-dark-mode';
|
|
15504
|
+
/**
|
|
15505
|
+
* Applies data-pendo-dark-mode attribute for CSS pseudo-styles. Requires step.guideElement.
|
|
15506
|
+
*/
|
|
15507
|
+
function applyDarkModeAttr(step) {
|
|
15508
|
+
if (!step.guideElement)
|
|
15509
|
+
return;
|
|
15510
|
+
const guideContainer = dom('#pendo-guide-container', step.guideElement)[0];
|
|
15511
|
+
if (!guideContainer)
|
|
15512
|
+
return;
|
|
15513
|
+
if (step.isDarkMode) {
|
|
15514
|
+
guideContainer.setAttribute(DARK_MODE_ATTR, '');
|
|
15515
|
+
}
|
|
15516
|
+
else {
|
|
15517
|
+
guideContainer.removeAttribute(DARK_MODE_ATTR);
|
|
15518
|
+
}
|
|
15519
|
+
}
|
|
15520
|
+
/**
|
|
15521
|
+
* Sets step.isDarkMode based on selector. Call before buildNodeFromJSON.
|
|
15522
|
+
*/
|
|
15523
|
+
function detectColorMode(step) {
|
|
15499
15524
|
const darkModeSelector = _.get(step, 'attributes.darkMode.selector', '');
|
|
15500
15525
|
if (!darkModeSelector)
|
|
15501
15526
|
return;
|
|
15502
|
-
// Determine the target dark mode state
|
|
15503
15527
|
let targetDarkMode;
|
|
15504
15528
|
if (pendo$1.designerEnabled && _.has(step, 'attributes.darkMode.override')) {
|
|
15505
|
-
// In designer mode, use the override value
|
|
15506
15529
|
targetDarkMode = step.attributes.darkMode.override;
|
|
15507
15530
|
}
|
|
15508
15531
|
else {
|
|
15509
|
-
// In client mode, detect based on selector
|
|
15510
15532
|
try {
|
|
15511
15533
|
targetDarkMode = pendo$1.Sizzle(darkModeSelector).length > 0;
|
|
15512
15534
|
}
|
|
15513
15535
|
catch (e) {
|
|
15514
|
-
// Invalid selector - default to light mode
|
|
15515
15536
|
targetDarkMode = false;
|
|
15516
15537
|
}
|
|
15517
15538
|
}
|
|
15518
|
-
|
|
15519
|
-
|
|
15520
|
-
|
|
15539
|
+
step.isDarkMode = targetDarkMode;
|
|
15540
|
+
}
|
|
15541
|
+
/**
|
|
15542
|
+
* Syncs color mode for live updates. Detects, applies attribute, and optionally rerenders.
|
|
15543
|
+
*/
|
|
15544
|
+
function syncColorMode(step, rerender = false) {
|
|
15545
|
+
const darkModeSelector = _.get(step, 'attributes.darkMode.selector', '');
|
|
15546
|
+
if (!darkModeSelector)
|
|
15547
|
+
return;
|
|
15548
|
+
const previousMode = step.isDarkMode;
|
|
15549
|
+
detectColorMode(step);
|
|
15550
|
+
if (previousMode !== step.isDarkMode) {
|
|
15551
|
+
applyDarkModeAttr(step);
|
|
15521
15552
|
if (rerender) {
|
|
15522
15553
|
step.hide();
|
|
15523
15554
|
step.show(step.seenReason);
|
|
@@ -16603,7 +16634,6 @@ var BuildingBlockTooltips = (function () {
|
|
|
16603
16634
|
var caretDimensions = {
|
|
16604
16635
|
height: parseInt(containerDomJson.props['data-caret-height'], 10) || 0,
|
|
16605
16636
|
width: parseInt(containerDomJson.props['data-caret-width'], 10) || 0,
|
|
16606
|
-
backgroundColor: containerDomJson.props.style['background-color'],
|
|
16607
16637
|
offset: TOOLTIP_CONSTANTS.DEFAULT_CARET_OFFSET,
|
|
16608
16638
|
borderWidth: 0
|
|
16609
16639
|
};
|
|
@@ -16623,6 +16653,16 @@ var BuildingBlockTooltips = (function () {
|
|
|
16623
16653
|
caretDimensions.borderColor = guideBorderArray[2];
|
|
16624
16654
|
caretDimensions.borderWidth = parseInt(guideBorderArray[0], 10) || 0;
|
|
16625
16655
|
}
|
|
16656
|
+
const lightStyle = _.get(containerDomJson, 'props.style');
|
|
16657
|
+
const darkModeStyle = _.get(containerDomJson, 'darkModeProps.style');
|
|
16658
|
+
const backgroundColor = _.get(lightStyle, 'background-color');
|
|
16659
|
+
const darkModeBackgroundColor = _.get(darkModeStyle, 'background-color');
|
|
16660
|
+
if (step && step.isDarkMode && darkModeBackgroundColor) {
|
|
16661
|
+
caretDimensions.backgroundColor = darkModeBackgroundColor;
|
|
16662
|
+
}
|
|
16663
|
+
else if (backgroundColor) {
|
|
16664
|
+
caretDimensions.backgroundColor = backgroundColor;
|
|
16665
|
+
}
|
|
16626
16666
|
const tooltipSizes = {
|
|
16627
16667
|
width: guideContainer.offsetWidth,
|
|
16628
16668
|
height: guideContainer.offsetHeight,
|
|
@@ -18293,11 +18333,12 @@ function buildNodeFromJSON(json, step, guides) {
|
|
|
18293
18333
|
}
|
|
18294
18334
|
let css = json.css;
|
|
18295
18335
|
if (json.forDarkMode) {
|
|
18296
|
-
|
|
18336
|
+
// Use data attribute on pendo-guide-container as the selector prefix
|
|
18337
|
+
// syncColorMode toggles this attribute, making dark mode styles apply/not apply
|
|
18297
18338
|
css = _.map(css, function (rule) {
|
|
18298
18339
|
return {
|
|
18299
18340
|
styles: rule.styles,
|
|
18300
|
-
selector:
|
|
18341
|
+
selector: `[data-pendo-dark-mode] ${rule.selector}`
|
|
18301
18342
|
};
|
|
18302
18343
|
});
|
|
18303
18344
|
}
|
|
@@ -19123,7 +19164,7 @@ var BuildingBlockResourceCenter = (function () {
|
|
|
19123
19164
|
renderNativeIntegration(integrationProvider);
|
|
19124
19165
|
var step = module.steps[0];
|
|
19125
19166
|
if (step.isDarkMode === undefined) {
|
|
19126
|
-
|
|
19167
|
+
detectColorMode(step);
|
|
19127
19168
|
}
|
|
19128
19169
|
var domJsonToRender = updatePseudoStyleSelectors(step.domJson);
|
|
19129
19170
|
domJsonToRender.props['data-pendo-guide-id'] = module.id;
|
|
@@ -19157,6 +19198,8 @@ var BuildingBlockResourceCenter = (function () {
|
|
|
19157
19198
|
}
|
|
19158
19199
|
step.guideElement = dom(resourceCenterContainer);
|
|
19159
19200
|
step.elements.push(step.guideElement[0]);
|
|
19201
|
+
// Apply data-pendo-dark-mode attribute for CSS pseudo-styles
|
|
19202
|
+
applyDarkModeAttr(step);
|
|
19160
19203
|
// At this point, the RC is in a state where both the module/homeView currently shown and the
|
|
19161
19204
|
// module/homeView we are transitioning to are in the DOM. guideContainer is the module/homeView
|
|
19162
19205
|
// we are transitioning to so we send that to adjustResourceCenterWidth so it's width can be
|
|
@@ -28831,8 +28874,9 @@ var BuildingBlockGuides = (function () {
|
|
|
28831
28874
|
function renderGuideFromJSON(json, step, guides, options) {
|
|
28832
28875
|
options = options || {};
|
|
28833
28876
|
var guide = step.getGuide();
|
|
28877
|
+
// Set step.isDarkMode before build (used for inline styles, SVGs, dark mode props)
|
|
28834
28878
|
if (step.isDarkMode === undefined) {
|
|
28835
|
-
|
|
28879
|
+
detectColorMode(step);
|
|
28836
28880
|
}
|
|
28837
28881
|
var containerJSON = findGuideContainerJSON(json);
|
|
28838
28882
|
var isResourceCenter = _.get(guide, 'attributes.resourceCenter');
|
|
@@ -28848,6 +28892,8 @@ var BuildingBlockGuides = (function () {
|
|
|
28848
28892
|
var modifiableJSON = unwrapFirefoxObject(json);
|
|
28849
28893
|
var guideToAppend = BuildingBlockGuides.buildNodeFromJSON(modifiableJSON, step, guides);
|
|
28850
28894
|
step.guideElement = guideToAppend;
|
|
28895
|
+
// Apply data-pendo-dark-mode attribute to guide container for CSS pseudo-styles
|
|
28896
|
+
applyDarkModeAttr(step);
|
|
28851
28897
|
var guideContainer = guideToAppend.find('#' + step.containerId);
|
|
28852
28898
|
var verticalAlignmentAttr = 'data-vertical-alignment';
|
|
28853
28899
|
var relativeToElement = guideContainer.attr(verticalAlignmentAttr) === 'Relative to Element';
|
|
@@ -38390,6 +38436,12 @@ const EmbeddedGuides = (function () {
|
|
|
38390
38436
|
function processEmbeddedGuides() {
|
|
38391
38437
|
_.forEach(embeddedGuides, function (guide) {
|
|
38392
38438
|
guide.process();
|
|
38439
|
+
if (guide.isShownInThisFrame()) {
|
|
38440
|
+
const activeStep = guide.getActiveStep();
|
|
38441
|
+
if (activeStep) {
|
|
38442
|
+
syncColorMode(activeStep, true);
|
|
38443
|
+
}
|
|
38444
|
+
}
|
|
38393
38445
|
});
|
|
38394
38446
|
}
|
|
38395
38447
|
function hideAllEmbeddedGuides() {
|