@multiplayer-app/session-recorder-browser 1.3.0 → 1.3.2
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/browser/index.js +12583 -6352
- package/dist/exporters/index.js +2 -16257
- package/dist/exporters/index.js.LICENSE.txt +741 -0
- package/dist/exporters/index.js.map +1 -1
- package/dist/global.d.ts +7 -0
- package/dist/global.d.ts.map +1 -0
- package/dist/global.js +9 -0
- package/dist/global.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13483 -7242
- package/dist/index.js.map +1 -1
- package/dist/index.umd.js +12584 -6349
- package/dist/index.umd.js.map +1 -1
- package/dist/listeners.d.ts +1 -1
- package/dist/listeners.d.ts.map +1 -1
- package/dist/rrweb/index.d.ts +5 -3
- package/dist/rrweb/index.d.ts.map +1 -1
- package/dist/rrweb/index.js +7 -9
- package/dist/rrweb/index.js.map +1 -1
- package/dist/services/socket.service.d.ts +28 -20
- package/dist/services/socket.service.d.ts.map +1 -1
- package/dist/services/socket.service.js +105 -96
- package/dist/services/socket.service.js.map +1 -1
- package/dist/{sessionRecorder.d.ts → session-recorder.d.ts} +34 -10
- package/dist/session-recorder.d.ts.map +1 -0
- package/dist/{sessionRecorder.js → session-recorder.js} +70 -44
- package/dist/session-recorder.js.map +1 -0
- package/dist/sessionWidget/index.d.ts +7 -4
- package/dist/sessionWidget/index.d.ts.map +1 -1
- package/dist/sessionWidget/index.js +72 -50
- package/dist/sessionWidget/index.js.map +1 -1
- package/dist/types/index.d.ts +1 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -2
- package/dist/types/index.js.map +1 -1
- package/dist/types/{sessionRecorder.d.ts → session-recorder.d.ts} +9 -3
- package/dist/types/session-recorder.d.ts.map +1 -0
- package/dist/types/{sessionRecorder.js → session-recorder.js} +1 -1
- package/dist/types/session-recorder.js.map +1 -0
- package/dist/types/session.d.ts +1 -2
- package/dist/types/session.d.ts.map +1 -1
- package/dist/types/session.js.map +1 -1
- package/dist/utils/dom.d.ts +7 -1
- package/dist/utils/dom.d.ts.map +1 -1
- package/dist/utils/dom.js +10 -0
- package/dist/utils/dom.js.map +1 -1
- package/package.json +3 -3
- package/dist/browser/index.js.map +0 -1
- package/dist/sessionRecorder.d.ts.map +0 -1
- package/dist/sessionRecorder.js.map +0 -1
- package/dist/types/client-type.enum.d.ts +0 -6
- package/dist/types/client-type.enum.d.ts.map +0 -1
- package/dist/types/client-type.enum.js +0 -7
- package/dist/types/client-type.enum.js.map +0 -1
- package/dist/types/sessionRecorder.d.ts.map +0 -1
- package/dist/types/sessionRecorder.js.map +0 -1
|
@@ -2,14 +2,13 @@ import { TracerBrowserSDK } from './otel';
|
|
|
2
2
|
import { RecorderBrowserSDK } from './rrweb';
|
|
3
3
|
import { getStoredItem, setStoredItem, getNavigatorInfo, getFormattedDate, getTimeDifferenceInSeconds, isSessionActive } from './utils';
|
|
4
4
|
import { SessionState, } from './types';
|
|
5
|
-
import {
|
|
5
|
+
import { SocketService } from './services/socket.service';
|
|
6
6
|
import { BASE_CONFIG, SESSION_RESPONSE, SESSION_PROP_NAME, SESSION_ID_PROP_NAME, SESSION_TYPE_PROP_NAME, SESSION_STATE_PROP_NAME, DEFAULT_MAX_HTTP_CAPTURING_PAYLOAD_SIZE, getSessionRecorderConfig, SESSION_AUTO_CREATED, SESSION_STOPPED_EVENT, SESSION_STARTED_EVENT, REMOTE_SESSION_RECORDING_START, REMOTE_SESSION_RECORDING_STOP } from './config';
|
|
7
7
|
import { setShouldRecordHttpData, setMaxCapturingHttpPayloadSize, } from './patch';
|
|
8
8
|
import { recorderEventBus } from './eventBus';
|
|
9
9
|
import { SessionWidget } from './sessionWidget';
|
|
10
10
|
import messagingService from './services/messaging.service';
|
|
11
11
|
import { ApiService } from './services/api.service';
|
|
12
|
-
import './index.scss';
|
|
13
12
|
import { SessionType } from '@multiplayer-app/session-recorder-common';
|
|
14
13
|
import { ContinuousRecordingSaveButtonState } from './sessionWidget/buttonStateConfigs';
|
|
15
14
|
import { Observable } from 'lib0/observable';
|
|
@@ -90,6 +89,7 @@ export class SessionRecorder extends Observable {
|
|
|
90
89
|
var _a;
|
|
91
90
|
super();
|
|
92
91
|
this._apiService = new ApiService();
|
|
92
|
+
this._socketService = new SocketService();
|
|
93
93
|
this._tracer = new TracerBrowserSDK();
|
|
94
94
|
this._recorder = new RecorderBrowserSDK();
|
|
95
95
|
this._sessionWidget = new SessionWidget();
|
|
@@ -146,20 +146,20 @@ export class SessionRecorder extends Observable {
|
|
|
146
146
|
this._tracer.init(this._configs);
|
|
147
147
|
this._apiService.init(this._configs);
|
|
148
148
|
this._sessionWidget.init(this._configs);
|
|
149
|
-
this.
|
|
150
|
-
enabled: this._configs.recordNavigation,
|
|
151
|
-
application: this._configs.application,
|
|
152
|
-
environment: this._configs.environment,
|
|
153
|
-
version: this._configs.version,
|
|
154
|
-
});
|
|
155
|
-
createSocketService({
|
|
149
|
+
this._socketService.init({
|
|
156
150
|
apiKey: this._configs.apiKey,
|
|
157
151
|
socketUrl: this._configs.apiBaseUrl || '',
|
|
158
|
-
usePostMessageFallback: Boolean(this._configs.usePostMessageFallback),
|
|
159
152
|
keepAlive: Boolean(this._configs.useWebsocket),
|
|
153
|
+
usePostMessageFallback: Boolean(this._configs.usePostMessageFallback),
|
|
154
|
+
});
|
|
155
|
+
this._navigationRecorder.init({
|
|
156
|
+
version: this._configs.version,
|
|
157
|
+
application: this._configs.application,
|
|
158
|
+
environment: this._configs.environment,
|
|
159
|
+
enabled: this._configs.recordNavigation,
|
|
160
160
|
});
|
|
161
161
|
if (this._configs.apiKey) {
|
|
162
|
-
this._recorder.init(this._configs);
|
|
162
|
+
this._recorder.init(this._configs, this._socketService);
|
|
163
163
|
}
|
|
164
164
|
if (this.sessionId
|
|
165
165
|
&& (this.sessionState === SessionState.started
|
|
@@ -167,10 +167,7 @@ export class SessionRecorder extends Observable {
|
|
|
167
167
|
this._start();
|
|
168
168
|
}
|
|
169
169
|
this._registerWidgetEvents();
|
|
170
|
-
this.
|
|
171
|
-
this._registerSessionAutoCreation();
|
|
172
|
-
this._registerRemoteSessionRecordingStart();
|
|
173
|
-
this._registerRemoteSessionRecordingStop();
|
|
170
|
+
this._registerSocketServiceListeners();
|
|
174
171
|
messagingService.sendMessage('state-change', this.sessionState);
|
|
175
172
|
// Emit init observable event
|
|
176
173
|
this.emit('init', [this]);
|
|
@@ -189,9 +186,7 @@ export class SessionRecorder extends Observable {
|
|
|
189
186
|
sessionAttributes: this.sessionAttributes,
|
|
190
187
|
resourceAttributes: getNavigatorInfo(),
|
|
191
188
|
stoppedAt: this._recorder.stoppedAt,
|
|
192
|
-
name: this.
|
|
193
|
-
? `${this.sessionAttributes.userName}'s session on ${getFormattedDate(Date.now(), { month: 'short', day: 'numeric' })}`
|
|
194
|
-
: `Session on ${getFormattedDate(Date.now())}`,
|
|
189
|
+
name: this._getSessionName()
|
|
195
190
|
});
|
|
196
191
|
this._sessionWidget.updateSaveContinuousDebugSessionState(ContinuousRecordingSaveButtonState.SAVED);
|
|
197
192
|
const sessionUrl = res === null || res === void 0 ? void 0 : res.url;
|
|
@@ -311,6 +306,14 @@ export class SessionRecorder extends Observable {
|
|
|
311
306
|
setSessionAttributes(attributes) {
|
|
312
307
|
this._sessionAttributes = attributes;
|
|
313
308
|
}
|
|
309
|
+
/**
|
|
310
|
+
* Set the user attributes
|
|
311
|
+
* @param userAttributes - the user attributes to set
|
|
312
|
+
*/
|
|
313
|
+
setUserAttributes(userAttributes) {
|
|
314
|
+
this._userAttributes = userAttributes;
|
|
315
|
+
this._socketService.setUser(this._userAttributes);
|
|
316
|
+
}
|
|
314
317
|
/**
|
|
315
318
|
* Updates the button click handler in the library.
|
|
316
319
|
* @param handler - A function that will be invoked when the button is clicked.
|
|
@@ -405,56 +408,72 @@ export class SessionRecorder extends Observable {
|
|
|
405
408
|
this._handleSave();
|
|
406
409
|
});
|
|
407
410
|
}
|
|
411
|
+
/**
|
|
412
|
+
* Handle the safe start event
|
|
413
|
+
*/
|
|
408
414
|
_handleStart() {
|
|
409
415
|
if (this.sessionState === SessionState.stopped) {
|
|
410
416
|
this.start(SessionType.MANUAL);
|
|
411
417
|
}
|
|
412
418
|
}
|
|
419
|
+
/**
|
|
420
|
+
* Handle the safe stop event
|
|
421
|
+
*/
|
|
413
422
|
_handleStop(comment) {
|
|
414
423
|
if (this.sessionState === SessionState.started || this.sessionState === SessionState.paused) {
|
|
415
424
|
this.stop(comment);
|
|
416
425
|
}
|
|
417
426
|
}
|
|
427
|
+
/**
|
|
428
|
+
* Handle the safe pause event
|
|
429
|
+
*/
|
|
418
430
|
_handlePause() {
|
|
419
431
|
if (this.sessionState === SessionState.started) {
|
|
420
432
|
this.pause();
|
|
421
433
|
}
|
|
422
434
|
}
|
|
435
|
+
/**
|
|
436
|
+
* Handle the safe resume event
|
|
437
|
+
*/
|
|
423
438
|
_handleResume() {
|
|
424
439
|
if (this.sessionState === SessionState.paused) {
|
|
425
440
|
this.resume();
|
|
426
441
|
}
|
|
427
442
|
}
|
|
443
|
+
/**
|
|
444
|
+
* Handle the safe cancel event
|
|
445
|
+
*/
|
|
428
446
|
_handleCancel() {
|
|
429
447
|
if (this.sessionState === SessionState.started || this.sessionState === SessionState.paused) {
|
|
430
448
|
this.cancel();
|
|
431
449
|
}
|
|
432
450
|
}
|
|
451
|
+
/**
|
|
452
|
+
* Handle the safe save event
|
|
453
|
+
*/
|
|
433
454
|
_handleSave() {
|
|
434
455
|
if (this.sessionState === SessionState.started && this.continuousRecording) {
|
|
435
456
|
this.save();
|
|
436
457
|
}
|
|
437
458
|
}
|
|
459
|
+
/**
|
|
460
|
+
* Handle the safe continuous debugging event
|
|
461
|
+
*/
|
|
438
462
|
_handleContinuousDebugging() {
|
|
439
463
|
if (this.sessionState === SessionState.stopped) {
|
|
440
464
|
this.start(SessionType.CONTINUOUS);
|
|
441
465
|
}
|
|
442
466
|
}
|
|
443
467
|
/**
|
|
444
|
-
* Register
|
|
468
|
+
* Register socket service event listeners
|
|
445
469
|
*/
|
|
446
|
-
|
|
447
|
-
|
|
470
|
+
_registerSocketServiceListeners() {
|
|
471
|
+
this._socketService.on(SESSION_STOPPED_EVENT, () => {
|
|
448
472
|
this._stop();
|
|
449
473
|
this._clearSession();
|
|
450
474
|
this._sessionWidget.handleUIReseting();
|
|
451
475
|
});
|
|
452
|
-
|
|
453
|
-
/**
|
|
454
|
-
* Register session auto creation listeners during continuous recording
|
|
455
|
-
*/
|
|
456
|
-
_registerSessionAutoCreation() {
|
|
457
|
-
recorderEventBus.on(SESSION_AUTO_CREATED, (payload) => {
|
|
476
|
+
this._socketService.on(SESSION_AUTO_CREATED, (payload) => {
|
|
458
477
|
var _a;
|
|
459
478
|
if (!(payload === null || payload === void 0 ? void 0 : payload.data))
|
|
460
479
|
return;
|
|
@@ -467,17 +486,17 @@ export class SessionRecorder extends Observable {
|
|
|
467
486
|
},
|
|
468
487
|
}, 5000);
|
|
469
488
|
});
|
|
470
|
-
|
|
471
|
-
_registerRemoteSessionRecordingStart() {
|
|
472
|
-
recorderEventBus.on(REMOTE_SESSION_RECORDING_START, (payload) => {
|
|
489
|
+
this._socketService.on(REMOTE_SESSION_RECORDING_START, (payload) => {
|
|
473
490
|
console.log('REMOTE_SESSION_RECORDING_START', payload);
|
|
474
|
-
this.
|
|
491
|
+
if (this.sessionState === SessionState.stopped) {
|
|
492
|
+
this.start();
|
|
493
|
+
}
|
|
475
494
|
});
|
|
476
|
-
|
|
477
|
-
_registerRemoteSessionRecordingStop() {
|
|
478
|
-
recorderEventBus.on(REMOTE_SESSION_RECORDING_STOP, (payload) => {
|
|
495
|
+
this._socketService.on(REMOTE_SESSION_RECORDING_STOP, (payload) => {
|
|
479
496
|
console.log('REMOTE_SESSION_RECORDING_STOP', payload);
|
|
480
|
-
this.
|
|
497
|
+
if (this.sessionState !== SessionState.stopped) {
|
|
498
|
+
this.stop();
|
|
499
|
+
}
|
|
481
500
|
});
|
|
482
501
|
}
|
|
483
502
|
/**
|
|
@@ -491,9 +510,7 @@ export class SessionRecorder extends Observable {
|
|
|
491
510
|
sessionAttributes: this.sessionAttributes,
|
|
492
511
|
resourceAttributes: getNavigatorInfo(),
|
|
493
512
|
userAttributes: this._userAttributes,
|
|
494
|
-
name: this.
|
|
495
|
-
? `${this.sessionAttributes.userName}'s session on ${getFormattedDate(Date.now(), { month: 'short', day: 'numeric' })}`
|
|
496
|
-
: `Session on ${getFormattedDate(Date.now())}`,
|
|
513
|
+
name: this._getSessionName()
|
|
497
514
|
};
|
|
498
515
|
const request = !this.continuousRecording ?
|
|
499
516
|
payload : { debugSessionData: payload };
|
|
@@ -527,7 +544,7 @@ export class SessionRecorder extends Observable {
|
|
|
527
544
|
this._navigationRecorder.start({ sessionId: this.sessionId, sessionType: this.sessionType, });
|
|
528
545
|
if (this.session) {
|
|
529
546
|
recorderEventBus.emit(SESSION_STARTED_EVENT, this.session);
|
|
530
|
-
this.
|
|
547
|
+
this._socketService.subscribeToSession(this.session);
|
|
531
548
|
this._sessionWidget.seconds = getTimeDifferenceInSeconds((_a = this.session) === null || _a === void 0 ? void 0 : _a.startedAt);
|
|
532
549
|
}
|
|
533
550
|
}
|
|
@@ -536,6 +553,7 @@ export class SessionRecorder extends Observable {
|
|
|
536
553
|
*/
|
|
537
554
|
_stop() {
|
|
538
555
|
this.sessionState = SessionState.stopped;
|
|
556
|
+
this._socketService.unsubscribeFromSession(true);
|
|
539
557
|
this._tracer.stop();
|
|
540
558
|
this._recorder.stop();
|
|
541
559
|
this._navigationRecorder.stop();
|
|
@@ -561,7 +579,8 @@ export class SessionRecorder extends Observable {
|
|
|
561
579
|
_setupSessionAndStart(session, configureExporters = true) {
|
|
562
580
|
if (configureExporters && session.tempApiKey) {
|
|
563
581
|
this._configs.apiKey = session.tempApiKey;
|
|
564
|
-
this.
|
|
582
|
+
this._socketService.updateConfigs({ apiKey: this._configs.apiKey });
|
|
583
|
+
this._recorder.init(this._configs, this._socketService);
|
|
565
584
|
this._tracer.setApiKey(session.tempApiKey);
|
|
566
585
|
this._apiService.updateConfigs({ apiKey: this._configs.apiKey });
|
|
567
586
|
}
|
|
@@ -652,9 +671,16 @@ export class SessionRecorder extends Observable {
|
|
|
652
671
|
return { errorInfo: String(errorInfo) };
|
|
653
672
|
}
|
|
654
673
|
}
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
674
|
+
/**
|
|
675
|
+
* Get the session name
|
|
676
|
+
* @returns the session name
|
|
677
|
+
*/
|
|
678
|
+
_getSessionName(date = new Date()) {
|
|
679
|
+
var _a, _b, _c;
|
|
680
|
+
const userName = ((_a = this.sessionAttributes) === null || _a === void 0 ? void 0 : _a.userName) || ((_b = this._userAttributes) === null || _b === void 0 ? void 0 : _b.userName) || ((_c = this._userAttributes) === null || _c === void 0 ? void 0 : _c.name) || '';
|
|
681
|
+
return userName
|
|
682
|
+
? `${userName}'s session on ${getFormattedDate(date, { month: 'short', day: 'numeric' })}`
|
|
683
|
+
: `Session on ${getFormattedDate(date)}`;
|
|
658
684
|
}
|
|
659
685
|
}
|
|
660
|
-
//# sourceMappingURL=
|
|
686
|
+
//# sourceMappingURL=session-recorder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-recorder.js","sourceRoot":"","sources":["../src/session-recorder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Observable } from 'lib0/observable';
|
|
2
2
|
import { SessionWidgetConfig, SessionState, ToastConfig } from '../types';
|
|
3
3
|
import { ButtonState, ContinuousRecordingSaveButtonState } from './buttonStateConfigs';
|
|
4
|
-
type SessionWidgetEvents = 'start' | 'stop' | 'pause' | 'resume' | 'cancel' | '
|
|
4
|
+
type SessionWidgetEvents = 'start' | 'stop' | 'pause' | 'resume' | 'cancel' | 'save' | 'continuous-debugging';
|
|
5
5
|
export declare class SessionWidget extends Observable<SessionWidgetEvents> {
|
|
6
6
|
readonly recorderButton: HTMLButtonElement;
|
|
7
7
|
private readonly initialPopover;
|
|
@@ -12,8 +12,9 @@ export declare class SessionWidget extends Observable<SessionWidgetEvents> {
|
|
|
12
12
|
private _isStarted;
|
|
13
13
|
private _isPaused;
|
|
14
14
|
private _isInitialized;
|
|
15
|
-
private _recorderPlacement;
|
|
16
15
|
private _error;
|
|
16
|
+
private _recorderPlacement;
|
|
17
|
+
private _showWidget;
|
|
17
18
|
private _initialPopoverVisible;
|
|
18
19
|
private _finalPopoverVisible;
|
|
19
20
|
private _buttonState;
|
|
@@ -25,10 +26,12 @@ export declare class SessionWidget extends Observable<SessionWidgetEvents> {
|
|
|
25
26
|
private buttonDraggabilityObserver;
|
|
26
27
|
private dragManager;
|
|
27
28
|
buttonClickExternalHandler: (() => boolean | void) | null;
|
|
28
|
-
showRecorderButton: boolean;
|
|
29
|
-
timerInterval: any;
|
|
30
29
|
seconds: number;
|
|
30
|
+
timerInterval: any;
|
|
31
31
|
private readonly isBrowser;
|
|
32
|
+
private readonly isBrowserExtension;
|
|
33
|
+
private shadowRoot;
|
|
34
|
+
private hostElement;
|
|
32
35
|
set buttonState(newState: ButtonState);
|
|
33
36
|
private set initialPopoverVisible(value);
|
|
34
37
|
private set finalPopoverVisible(value);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sessionWidget/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sessionWidget/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import { Observable } from 'lib0/observable';
|
|
2
|
-
import { insertTrustedHTML } from '../utils';
|
|
3
|
-
import { formatTimeForSessionTimer } from '../utils';
|
|
2
|
+
import { insertTrustedHTML, injectStylesIntoShadowRoot, formatTimeForSessionTimer } from '../utils';
|
|
4
3
|
import { SessionState } from '../types';
|
|
5
|
-
import {
|
|
6
|
-
import { POPOVER_WIDTH, POPOVER_DISTANCE_FROM_BUTTON, NON_DRAGGABLE_OFFSET, } from './constants';
|
|
4
|
+
import { POPOVER_WIDTH, NON_DRAGGABLE_OFFSET, POPOVER_DISTANCE_FROM_BUTTON, } from './constants';
|
|
7
5
|
import { DEFAULT_WIDGET_TEXT_CONFIG } from '../config';
|
|
6
|
+
import { isBrowser, isBrowserExtension } from '../global';
|
|
8
7
|
import { UIManager } from './UIManager';
|
|
8
|
+
import { DragManager } from './dragManager';
|
|
9
9
|
import { ButtonState, buttonStates, continuousRecordingSaveButtonStates, } from './buttonStateConfigs';
|
|
10
|
+
// Import styles as string for shadow DOM injection
|
|
11
|
+
import widgetStyles from '../index.scss?raw';
|
|
10
12
|
export class SessionWidget extends Observable {
|
|
11
13
|
set buttonState(newState) {
|
|
12
14
|
var _a, _b;
|
|
@@ -60,7 +62,7 @@ export class SessionWidget extends Observable {
|
|
|
60
62
|
this._isStarted = v;
|
|
61
63
|
if (!this.isBrowser)
|
|
62
64
|
return;
|
|
63
|
-
if (
|
|
65
|
+
if (this.isBrowserExtension && v && !this._continuousRecording) {
|
|
64
66
|
this.overlay.classList.remove('hidden');
|
|
65
67
|
this.makeOverlayDraggable();
|
|
66
68
|
if (!this.seconds) {
|
|
@@ -88,7 +90,7 @@ export class SessionWidget extends Observable {
|
|
|
88
90
|
this._isPaused = v;
|
|
89
91
|
if (!this.isBrowser)
|
|
90
92
|
return;
|
|
91
|
-
if (this._isInitialized &&
|
|
93
|
+
if (this._isInitialized && this.isBrowserExtension && v && !this._continuousRecording) {
|
|
92
94
|
this.overlay.classList.add('hidden');
|
|
93
95
|
this.submitSessionDialog.classList.remove('hidden');
|
|
94
96
|
this.stopTimer();
|
|
@@ -99,8 +101,9 @@ export class SessionWidget extends Observable {
|
|
|
99
101
|
this._isStarted = false;
|
|
100
102
|
this._isPaused = false;
|
|
101
103
|
this._isInitialized = false;
|
|
102
|
-
this._recorderPlacement = '';
|
|
103
104
|
this._error = '';
|
|
105
|
+
this._recorderPlacement = '';
|
|
106
|
+
this._showWidget = false;
|
|
104
107
|
this._initialPopoverVisible = false;
|
|
105
108
|
this._finalPopoverVisible = false;
|
|
106
109
|
this._buttonState = ButtonState.IDLE;
|
|
@@ -110,16 +113,17 @@ export class SessionWidget extends Observable {
|
|
|
110
113
|
this.commentTextarea = null;
|
|
111
114
|
this.dragManager = null;
|
|
112
115
|
this.buttonClickExternalHandler = null;
|
|
113
|
-
this.showRecorderButton = false;
|
|
114
116
|
this.seconds = 0;
|
|
117
|
+
this.shadowRoot = null;
|
|
118
|
+
this.hostElement = null;
|
|
115
119
|
this.handleClickOutside = (event) => {
|
|
116
120
|
var _a;
|
|
117
121
|
const target = event.target;
|
|
118
122
|
const isPopoverVisible = this._initialPopoverVisible || this._finalPopoverVisible;
|
|
119
123
|
const popover = this._initialPopoverVisible ? this.initialPopover : this.finalPopover;
|
|
120
|
-
if (isPopoverVisible
|
|
121
|
-
|
|
122
|
-
|
|
124
|
+
if (!isPopoverVisible || !target)
|
|
125
|
+
return;
|
|
126
|
+
if (!(popover === null || popover === void 0 ? void 0 : popover.contains(target)) &&
|
|
123
127
|
!((_a = this.recorderButton) === null || _a === void 0 ? void 0 : _a.contains(target)) &&
|
|
124
128
|
target !== this.recorderButton &&
|
|
125
129
|
target !== popover) {
|
|
@@ -131,23 +135,24 @@ export class SessionWidget extends Observable {
|
|
|
131
135
|
}
|
|
132
136
|
}
|
|
133
137
|
};
|
|
134
|
-
this.isBrowser =
|
|
138
|
+
this.isBrowser = isBrowser;
|
|
139
|
+
this.isBrowserExtension = isBrowserExtension;
|
|
135
140
|
if (!this.isBrowser) {
|
|
136
141
|
// Create dummy elements for SSR to prevent crashes
|
|
137
|
-
this.
|
|
138
|
-
this.initialPopover = {};
|
|
139
|
-
this.finalPopover = {};
|
|
140
|
-
this.overlay = {};
|
|
142
|
+
this.uiManager = {};
|
|
141
143
|
this.toast = {};
|
|
144
|
+
this.overlay = {};
|
|
145
|
+
this.finalPopover = {};
|
|
146
|
+
this.initialPopover = {};
|
|
142
147
|
this.submitSessionDialog = {};
|
|
143
|
-
this.
|
|
148
|
+
this.recorderButton = {};
|
|
144
149
|
return;
|
|
145
150
|
}
|
|
146
|
-
this.recorderButton = document.createElement('button');
|
|
147
|
-
this.initialPopover = document.createElement('div');
|
|
148
|
-
this.finalPopover = document.createElement('div');
|
|
149
|
-
this.overlay = document.createElement('div');
|
|
150
151
|
this.toast = document.createElement('div');
|
|
152
|
+
this.overlay = document.createElement('div');
|
|
153
|
+
this.finalPopover = document.createElement('div');
|
|
154
|
+
this.initialPopover = document.createElement('div');
|
|
155
|
+
this.recorderButton = document.createElement('button');
|
|
151
156
|
this.submitSessionDialog = document.createElement('div');
|
|
152
157
|
this.uiManager = new UIManager(this.recorderButton, this.initialPopover, this.finalPopover, this.overlay, this.submitSessionDialog, this.toast, DEFAULT_WIDGET_TEXT_CONFIG, true);
|
|
153
158
|
this.uiManager.setRecorderButtonProps();
|
|
@@ -244,7 +249,7 @@ export class SessionWidget extends Observable {
|
|
|
244
249
|
if (!this.isBrowser)
|
|
245
250
|
return;
|
|
246
251
|
this._isInitialized = true;
|
|
247
|
-
this.
|
|
252
|
+
this._showWidget = options.showWidget;
|
|
248
253
|
this._showContinuousRecording = options.showContinuousRecording;
|
|
249
254
|
this._widgetTextOverrides = {
|
|
250
255
|
...this._widgetTextOverrides,
|
|
@@ -284,10 +289,20 @@ export class SessionWidget extends Observable {
|
|
|
284
289
|
appendElements(elements) {
|
|
285
290
|
if (!this.isBrowser || typeof document === 'undefined')
|
|
286
291
|
return;
|
|
292
|
+
// Create host element
|
|
287
293
|
const rootWrapper = document.createElement('mp-root');
|
|
288
294
|
rootWrapper.classList.add('mp-root-wrapper');
|
|
289
295
|
rootWrapper.setAttribute('data-rr-ignore', 'true');
|
|
290
|
-
|
|
296
|
+
this.hostElement = rootWrapper;
|
|
297
|
+
// Create shadow root
|
|
298
|
+
this.shadowRoot = rootWrapper.attachShadow({ mode: 'open' });
|
|
299
|
+
// Inject styles directly from imported SCSS file
|
|
300
|
+
if (widgetStyles) {
|
|
301
|
+
injectStylesIntoShadowRoot(this.shadowRoot, widgetStyles);
|
|
302
|
+
}
|
|
303
|
+
// Append all elements to shadow root
|
|
304
|
+
elements.forEach((element) => this.shadowRoot.appendChild(element));
|
|
305
|
+
// Append host element to document body
|
|
291
306
|
document.body.appendChild(rootWrapper);
|
|
292
307
|
}
|
|
293
308
|
addRecorderDragFunctionality() {
|
|
@@ -342,7 +357,22 @@ export class SessionWidget extends Observable {
|
|
|
342
357
|
if (!this.isBrowser)
|
|
343
358
|
return;
|
|
344
359
|
const events = [];
|
|
345
|
-
if (this.
|
|
360
|
+
if (this.isBrowserExtension) {
|
|
361
|
+
events.push({
|
|
362
|
+
target: this.overlay,
|
|
363
|
+
selector: '.mp-stop-btn',
|
|
364
|
+
handler: this.onPause.bind(this), // change to submit dialog
|
|
365
|
+
}, {
|
|
366
|
+
target: this.submitSessionDialog,
|
|
367
|
+
selector: '#mp-submit-recording',
|
|
368
|
+
handler: this.onStop.bind(this),
|
|
369
|
+
}, {
|
|
370
|
+
target: this.submitSessionDialog,
|
|
371
|
+
selector: '#mp-cancel-submission',
|
|
372
|
+
handler: this.onCancel.bind(this),
|
|
373
|
+
});
|
|
374
|
+
}
|
|
375
|
+
if (this._showWidget) {
|
|
346
376
|
events.push({
|
|
347
377
|
target: this.initialPopover,
|
|
348
378
|
selector: '.mp-start-recording',
|
|
@@ -378,21 +408,6 @@ export class SessionWidget extends Observable {
|
|
|
378
408
|
handler: this.handleCloseFinalPopover.bind(this),
|
|
379
409
|
});
|
|
380
410
|
}
|
|
381
|
-
else {
|
|
382
|
-
events.push({
|
|
383
|
-
target: this.overlay,
|
|
384
|
-
selector: '.mp-stop-btn',
|
|
385
|
-
handler: this.onPause.bind(this), // change to submit dialog
|
|
386
|
-
}, {
|
|
387
|
-
target: this.submitSessionDialog,
|
|
388
|
-
selector: '#mp-submit-recording',
|
|
389
|
-
handler: this.onStop.bind(this),
|
|
390
|
-
}, {
|
|
391
|
-
target: this.submitSessionDialog,
|
|
392
|
-
selector: '#mp-cancel-submission',
|
|
393
|
-
handler: this.onCancel.bind(this),
|
|
394
|
-
});
|
|
395
|
-
}
|
|
396
411
|
events.forEach(({ target, selector, handler, event = 'click' }) => {
|
|
397
412
|
this.addListener(target, selector, handler, event);
|
|
398
413
|
});
|
|
@@ -532,18 +547,23 @@ export class SessionWidget extends Observable {
|
|
|
532
547
|
onStop() {
|
|
533
548
|
if (!this.isBrowser)
|
|
534
549
|
return;
|
|
535
|
-
if (this.
|
|
550
|
+
if (this._showWidget && !this.recorderButton)
|
|
536
551
|
return;
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
552
|
+
let commentElement = null;
|
|
553
|
+
if (this.isBrowserExtension) {
|
|
554
|
+
this.submitSessionDialog.classList.add('hidden');
|
|
555
|
+
commentElement = this.submitSessionDialog.querySelector('#mp-recording-comment');
|
|
556
|
+
}
|
|
557
|
+
else {
|
|
558
|
+
commentElement = this.commentTextarea;
|
|
559
|
+
}
|
|
541
560
|
if (commentElement) {
|
|
542
561
|
this.emit('stop', [commentElement.value]);
|
|
543
562
|
commentElement.value = '';
|
|
544
|
-
return;
|
|
545
563
|
}
|
|
546
|
-
|
|
564
|
+
else {
|
|
565
|
+
this.emit('stop', []);
|
|
566
|
+
}
|
|
547
567
|
}
|
|
548
568
|
onPause() {
|
|
549
569
|
this.emit('pause', []);
|
|
@@ -579,12 +599,14 @@ export class SessionWidget extends Observable {
|
|
|
579
599
|
this.recorderButton.style.opacity = '0.5';
|
|
580
600
|
}
|
|
581
601
|
destroy() {
|
|
582
|
-
if (!this.isBrowser ||
|
|
602
|
+
if (!this.isBrowser || typeof document === 'undefined')
|
|
583
603
|
return;
|
|
584
|
-
const rootWrapper = document.querySelector('.mp-root-wrapper');
|
|
585
|
-
if (rootWrapper && rootWrapper.
|
|
586
|
-
|
|
604
|
+
const rootWrapper = this.hostElement || document.querySelector('.mp-root-wrapper');
|
|
605
|
+
if (rootWrapper && rootWrapper.parentNode) {
|
|
606
|
+
rootWrapper.parentNode.removeChild(rootWrapper);
|
|
587
607
|
}
|
|
608
|
+
this.shadowRoot = null;
|
|
609
|
+
this.hostElement = null;
|
|
588
610
|
document.removeEventListener('click', this.handleClickOutside);
|
|
589
611
|
}
|
|
590
612
|
startTimer() {
|