@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.
Files changed (57) hide show
  1. package/dist/browser/index.js +12583 -6352
  2. package/dist/exporters/index.js +2 -16257
  3. package/dist/exporters/index.js.LICENSE.txt +741 -0
  4. package/dist/exporters/index.js.map +1 -1
  5. package/dist/global.d.ts +7 -0
  6. package/dist/global.d.ts.map +1 -0
  7. package/dist/global.js +9 -0
  8. package/dist/global.js.map +1 -0
  9. package/dist/index.d.ts +1 -1
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +13483 -7242
  12. package/dist/index.js.map +1 -1
  13. package/dist/index.umd.js +12584 -6349
  14. package/dist/index.umd.js.map +1 -1
  15. package/dist/listeners.d.ts +1 -1
  16. package/dist/listeners.d.ts.map +1 -1
  17. package/dist/rrweb/index.d.ts +5 -3
  18. package/dist/rrweb/index.d.ts.map +1 -1
  19. package/dist/rrweb/index.js +7 -9
  20. package/dist/rrweb/index.js.map +1 -1
  21. package/dist/services/socket.service.d.ts +28 -20
  22. package/dist/services/socket.service.d.ts.map +1 -1
  23. package/dist/services/socket.service.js +105 -96
  24. package/dist/services/socket.service.js.map +1 -1
  25. package/dist/{sessionRecorder.d.ts → session-recorder.d.ts} +34 -10
  26. package/dist/session-recorder.d.ts.map +1 -0
  27. package/dist/{sessionRecorder.js → session-recorder.js} +70 -44
  28. package/dist/session-recorder.js.map +1 -0
  29. package/dist/sessionWidget/index.d.ts +7 -4
  30. package/dist/sessionWidget/index.d.ts.map +1 -1
  31. package/dist/sessionWidget/index.js +72 -50
  32. package/dist/sessionWidget/index.js.map +1 -1
  33. package/dist/types/index.d.ts +1 -2
  34. package/dist/types/index.d.ts.map +1 -1
  35. package/dist/types/index.js +1 -2
  36. package/dist/types/index.js.map +1 -1
  37. package/dist/types/{sessionRecorder.d.ts → session-recorder.d.ts} +9 -3
  38. package/dist/types/session-recorder.d.ts.map +1 -0
  39. package/dist/types/{sessionRecorder.js → session-recorder.js} +1 -1
  40. package/dist/types/session-recorder.js.map +1 -0
  41. package/dist/types/session.d.ts +1 -2
  42. package/dist/types/session.d.ts.map +1 -1
  43. package/dist/types/session.js.map +1 -1
  44. package/dist/utils/dom.d.ts +7 -1
  45. package/dist/utils/dom.d.ts.map +1 -1
  46. package/dist/utils/dom.js +10 -0
  47. package/dist/utils/dom.js.map +1 -1
  48. package/package.json +3 -3
  49. package/dist/browser/index.js.map +0 -1
  50. package/dist/sessionRecorder.d.ts.map +0 -1
  51. package/dist/sessionRecorder.js.map +0 -1
  52. package/dist/types/client-type.enum.d.ts +0 -6
  53. package/dist/types/client-type.enum.d.ts.map +0 -1
  54. package/dist/types/client-type.enum.js +0 -7
  55. package/dist/types/client-type.enum.js.map +0 -1
  56. package/dist/types/sessionRecorder.d.ts.map +0 -1
  57. 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 { createSocketService, socketService, } from './services/socket.service';
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._navigationRecorder.init({
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._registerSessionLimitReach();
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.sessionAttributes.userName
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 session limit reaching listeners for controlling session end
468
+ * Register socket service event listeners
445
469
  */
446
- _registerSessionLimitReach() {
447
- recorderEventBus.on(SESSION_STOPPED_EVENT, () => {
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.start();
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.stop();
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.sessionAttributes.userName
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._recorder.subscribeToSession(this.session);
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._recorder.init(this._configs);
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
- setUser(userAttributes) {
656
- this._userAttributes = userAttributes;
657
- socketService === null || socketService === void 0 ? void 0 : socketService.setUser(this._userAttributes);
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=sessionRecorder.js.map
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' | 'continuous-debugging' | 'save';
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;AAG5C,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,WAAW,EAA6B,MAAM,UAAU,CAAA;AAUpG,OAAO,EACL,WAAW,EAEX,kCAAkC,EAEnC,MAAM,sBAAsB,CAAA;AAE7B,KAAK,mBAAmB,GACpB,OAAO,GACP,MAAM,GACN,OAAO,GACP,QAAQ,GACR,QAAQ,GACR,sBAAsB,GACtB,MAAM,CAAC;AAEX,qBAAa,aAAc,SAAQ,UAAU,CAAC,mBAAmB,CAAC;IAChE,SAAgB,cAAc,EAAE,iBAAiB,CAAA;IACjD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAa;IAC5C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAa;IAE1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAa;IACrC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAa;IACjD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAa;IACnC,OAAO,CAAC,UAAU,CAAiB;IACnC,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,cAAc,CAAiB;IAEvC,OAAO,CAAC,kBAAkB,CAAa;IACvC,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,sBAAsB,CAAiB;IAC/C,OAAO,CAAC,oBAAoB,CAAiB;IAC7C,OAAO,CAAC,YAAY,CAAgC;IACpD,OAAO,CAAC,oBAAoB,CAAiB;IAC7C,OAAO,CAAC,wBAAwB,CAAgB;IAChD,OAAO,CAAC,oBAAoB,CAAwD;IACpF,OAAO,CAAC,SAAS,CAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAmC;IACnE,OAAO,CAAC,0BAA0B,CAAmB;IACrD,OAAO,CAAC,WAAW,CAA2B;IACvC,0BAA0B,EAAE,CAAC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,IAAI,CAAO;IAEhE,kBAAkB,EAAE,OAAO,CAAQ;IACnC,aAAa,EAAE,GAAG,CAAA;IAClB,OAAO,SAAI;IAClB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IAEnC,IAAW,WAAW,CAAC,QAAQ,EAAE,WAAW,EAe3C;IAED,OAAO,KAAK,qBAAqB,QAKhC;IAED,OAAO,KAAK,mBAAmB,QAK9B;IAED,IAAW,KAAK,IAAI,MAAM,CAEzB;IAED,IAAW,KAAK,CAAC,CAAC,EAAE,MAAM,EAWzB;IAED,IAAW,SAAS,CAAC,CAAC,EAAE,OAAO,EA0B9B;IAED,IAAW,QAAQ,CAAC,CAAC,EAAE,OAAO,EAQ7B;;IAiDM,WAAW,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,EAAE,mBAAmB,EAAE,OAAO;IAsBpE,8BAA8B,CACnC,OAAO,EAAE,OAAO,EAChB,QAAQ,GAAE,OAAe;IAYpB,qCAAqC,CAC1C,KAAK,EAAE,kCAAkC;IAc3C;;;;OAIG;IACI,SAAS,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,GAAE,MAAc,GAAG,IAAI;IAKrE;;OAEG;IACI,SAAS,IAAI,IAAI;IAKxB,OAAO,CAAC,kBAAkB,CAkBzB;IAED,OAAO,CAAC,0BAA0B;IA0BlC,IAAI,CAAC,OAAO,EAAE,mBAAmB;IA4DjC,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,4BAA4B;IAgBpC,OAAO,CAAC,qBAAqB;IAiD7B,OAAO,CAAC,iBAAiB;IA0EzB,OAAO,CAAC,mBAAmB;IAMpB,gBAAgB;IAMvB,OAAO,CAAC,yBAAyB;IAcjC,OAAO,CAAC,uBAAuB;IAIxB,cAAc;IAWrB,OAAO,CAAC,sBAAsB;IAY9B,OAAO,CAAC,oBAAoB;IAM5B,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,sBAAsB;IA4C9B,OAAO,CAAC,YAAY;IAiBpB,OAAO,CAAC,+BAA+B;IAMvC,OAAO,CAAC,gCAAgC;IAIxC,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,OAAO;IAKf,OAAO,CAAC,MAAM;IAoBd,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,QAAQ;IAWhB,OAAO,CAAC,QAAQ;IAMhB,MAAM;IAMN,OAAO;IAMP,OAAO;IASA,UAAU;IAejB,SAAS;IAQT,oBAAoB,IAAI,IAAI;CA2B7B"}
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 { DragManager } from './dragManager';
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 (!this.showRecorderButton && v && !this._continuousRecording) {
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 && !this.showRecorderButton && v && !this._continuousRecording) {
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
- target &&
122
- !(popover === null || popover === void 0 ? void 0 : popover.contains(target)) &&
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 = typeof window !== 'undefined' && typeof document !== 'undefined';
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.recorderButton = {};
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.uiManager = {};
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.showRecorderButton = options.showWidget;
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
- elements.forEach((element) => rootWrapper.appendChild(element));
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.showRecorderButton) {
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.showRecorderButton && !this.recorderButton)
550
+ if (this._showWidget && !this.recorderButton)
536
551
  return;
537
- this.submitSessionDialog.classList.add('hidden');
538
- const commentElement = this.showRecorderButton
539
- ? this.commentTextarea
540
- : this.submitSessionDialog.querySelector('#mp-recording-comment');
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
- this.emit('stop', []);
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 || !this.recorderButton || typeof document === 'undefined')
602
+ if (!this.isBrowser || typeof document === 'undefined')
583
603
  return;
584
- const rootWrapper = document.querySelector('.mp-root-wrapper');
585
- if (rootWrapper && rootWrapper.contains(this.recorderButton)) {
586
- document.body.removeChild(rootWrapper);
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() {