@desynova-digital/player 3.0.3 → 3.2.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.
@@ -410,7 +410,7 @@ var PlayerHeader = function (_Component) {
410
410
  _react2.default.createElement(
411
411
  PlayerType,
412
412
  null,
413
- isShareAvailable && playerType === 'default' && _react2.default.createElement(_components.Button, _extends({
413
+ !isFullscreen && !isUserGuest && isShareAvailable && playerType === 'default' && _react2.default.createElement(_components.Button, _extends({
414
414
  display: 'rounded',
415
415
  appearance: 'cta',
416
416
  icon: 'share',
@@ -422,7 +422,7 @@ var PlayerHeader = function (_Component) {
422
422
  }, this.props, {
423
423
  onClick: openSharePopup
424
424
  })),
425
- (playerType === 'default' || playerType === 'qc') && qcReportAvailable && _react2.default.createElement(QCReportButton, _extends({
425
+ !isFullscreen && !isUserGuest && (playerType === 'default' || playerType === 'qc') && qcReportAvailable && _react2.default.createElement(QCReportButton, _extends({
426
426
  display: 'rounded',
427
427
  appearance: 'cta',
428
428
  icon: 'qc_report',
@@ -443,7 +443,10 @@ var PlayerHeader = function (_Component) {
443
443
  height: 25,
444
444
  iconWidth: 12,
445
445
  iconHeight: 12,
446
- tabIndex: '0'
446
+ tabIndex: '0',
447
+ style: {
448
+ pointerEvents: 'none'
449
+ }
447
450
  }, this.props)) : null
448
451
  )
449
452
  );
@@ -55,7 +55,7 @@ var PointersContainer = _styledComponents2.default.div.withConfig({
55
55
  var PointerBlock = _styledComponents2.default.div.withConfig({
56
56
  displayName: 'PointersBar__PointerBlock',
57
57
  componentId: 'b8687a-1'
58
- })(['width:100%;height:20px;position:relative;border-top:1px solid #333333;border-bottom:1px solid #333333;.empty-pointers-msg{display:flex;justify-content:center;align-items:center;height:100%;p{font-family:SFUIText-Medium;font-size:11px;color:#aaaaaa;}', '{margin:0 5px;}}.marker-blocks{&:hover{transition:all 0.2s ease-in-out;transform:scale(1.2);}}'], _components.Icon.Element);
58
+ })(['width:100%;height:20px;position:relative;border-top:1px solid #333333;border-bottom:1px solid #333333;.empty-pointers-msg{display:flex;justify-content:center;align-items:center;height:100%;p{font-family:SFUIText-Medium;font-size:11px;color:#aaaaaa;}', '{margin:0 5px;}}'], _components.Icon.Element);
59
59
  var MarkerTagsBlock = _styledComponents2.default.div.withConfig({
60
60
  displayName: 'PointersBar__MarkerTagsBlock',
61
61
  componentId: 'b8687a-2'
@@ -64,7 +64,9 @@ var MarkerTagsBlock = _styledComponents2.default.div.withConfig({
64
64
  var ToolTipStyles = _styledComponents2.default.div.withConfig({
65
65
  displayName: 'PointersBar__ToolTipStyles',
66
66
  componentId: 'b8687a-3'
67
- })(['position:absolute;z-index:2;height:18px;transition:left .1s ease-in-out;.tooltip-container{border-radius:0.25rem;padding:5px;width:fit-content;background:#FFFFFF;;color:#666666;h4{white-space:nowrap;font-size:12px;}&:after{content:\'\';position:absolute;border-left:5px solid black;border-right:5px solid black;border-top:5px solid white;bottom:-5px;left:50%;transform:translateX(-50%);top:22px;}}']);
67
+ })(['position:absolute;z-index:2;height:18px;transition:left .1s ease-in-out;.tooltip-container{border-radius:0.25rem;padding:5px;width:fit-content;background:#FFFFFF;;color:#666666;h4{white-space:nowrap;font-size:12px;}&:after{content:\'\';position:absolute;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid white;', ' left:50%;transform:translateX(-50%);}}'], function (props) {
68
+ return props.multiline ? "bottom: -21px;" : "bottom: -9px;";
69
+ });
68
70
 
69
71
  var PointersBar = function (_Component) {
70
72
  _inherits(PointersBar, _Component);
@@ -128,7 +130,8 @@ var PointersBar = function (_Component) {
128
130
 
129
131
  tooltip.isVisible = false;
130
132
  tooltip.text = title;
131
- tooltip.top = e.target.getBoundingClientRect().top - e.target.getBoundingClientRect().height - 10;
133
+ tooltip.bottom = window.innerHeight - e.target.getBoundingClientRect().top; // e.target.getBoundingClientRect().top - e.target.getBoundingClientRect().height - 10;
134
+ tooltip.bottom = title.line1 ? tooltip.bottom + 22 : tooltip.bottom + 10;
132
135
  tooltip.left = e.target.getBoundingClientRect().left + (e.target.getBoundingClientRect().right - e.target.getBoundingClientRect().left) / 2;
133
136
  this.setState(_extends({}, tooltip), function () {
134
137
  var tooltip = _this2.state.tooltip;
@@ -138,6 +141,18 @@ var PointersBar = function (_Component) {
138
141
  _this2.setState(_extends({}, tooltip));
139
142
  });
140
143
  }
144
+ }, {
145
+ key: 'getTitle',
146
+ value: function getTitle(marker) {
147
+ var data = marker.segment_title || marker.word || '';
148
+ if (!data.length && marker.line1) {
149
+ return {
150
+ line1: marker.line1,
151
+ line2: marker.line2
152
+ };
153
+ }
154
+ return data;
155
+ }
141
156
  }, {
142
157
  key: 'render',
143
158
  value: function render() {
@@ -148,7 +163,7 @@ var PointersBar = function (_Component) {
148
163
  isVisible = _state$tooltip.isVisible,
149
164
  text = _state$tooltip.text,
150
165
  left = _state$tooltip.left,
151
- top = _state$tooltip.top;
166
+ bottom = _state$tooltip.bottom;
152
167
 
153
168
  var self = this;
154
169
  return _react2.default.createElement(
@@ -182,7 +197,7 @@ var PointersBar = function (_Component) {
182
197
  _this3.onMarkerClick(e, marker);
183
198
  },
184
199
  onMouseOver: function onMouseOver(e) {
185
- self.setTooltipData(e, marker.segment_title, true);
200
+ self.setTooltipData(e, _this3.getTitle(marker));
186
201
  },
187
202
  onMouseOut: function onMouseOut() {
188
203
  var tooltip = _this3.state.tooltip;
@@ -255,13 +270,23 @@ var PointersBar = function (_Component) {
255
270
  )
256
271
  );
257
272
  }) : null,
258
- _react2.default.createElement(
273
+ text && _react2.default.createElement(
259
274
  ToolTipStyles,
260
- { ref: this._tooltipRef, style: { left: left || 0, top: top || 0, visibility: isVisible ? "visible" : "hidden" } },
275
+ { multiline: !!text.line1, ref: this._tooltipRef, style: { left: left || 0, bottom: bottom || 0, visibility: isVisible ? "visible" : "hidden" } },
261
276
  _react2.default.createElement(
262
277
  'div',
263
278
  { className: 'tooltip-container' },
264
- _react2.default.createElement(
279
+ text.line1 && _react2.default.createElement(
280
+ 'h4',
281
+ null,
282
+ text.line1
283
+ ),
284
+ text.line2 && _react2.default.createElement(
285
+ 'h4',
286
+ null,
287
+ text.line2
288
+ ),
289
+ !text.line1 && _react2.default.createElement(
265
290
  'h4',
266
291
  null,
267
292
  text
@@ -153,9 +153,10 @@ var Shortcut = function (_Component) {
153
153
  markers = _this$props.markers,
154
154
  playerType = _this$props.playerType,
155
155
  onAddMarker = _this$props.onAddMarker,
156
- playerReadOnlyMode = _this$props.playerReadOnlyMode;
156
+ playerReadOnlyMode = _this$props.playerReadOnlyMode,
157
+ disablePlayerActions = _this$props.disablePlayerActions;
157
158
 
158
- if (playerReadOnlyMode) {
159
+ if (playerReadOnlyMode || disablePlayerActions.includes("marking_controls")) {
159
160
  return;
160
161
  }
161
162
  if (playerType !== 'panel') {
@@ -194,9 +195,10 @@ var Shortcut = function (_Component) {
194
195
  onMarkerSelect = _this$props2.onMarkerSelect,
195
196
  playerType = _this$props2.playerType,
196
197
  onAddMarker = _this$props2.onAddMarker,
197
- playerReadOnlyMode = _this$props2.playerReadOnlyMode;
198
+ playerReadOnlyMode = _this$props2.playerReadOnlyMode,
199
+ disablePlayerActions = _this$props2.disablePlayerActions;
198
200
 
199
- if (playerReadOnlyMode) {
201
+ if (playerReadOnlyMode || disablePlayerActions.includes("marking_controls")) {
200
202
  return;
201
203
  }
202
204
  if (playerType !== 'panel') {
@@ -222,11 +224,16 @@ var Shortcut = function (_Component) {
222
224
  if (player.leftMarker > -1 && player.rightMarker > -1 && (!player.markerCreate || player.markerType === 'update')) {
223
225
  onAddMarker(player.leftMarker, player.currentTime, 'update');
224
226
  }
225
- if (player.controlType === 'default') {
226
- onMarkerSelect(player.leftMarker, player.currentTime);
227
- }
227
+ //Commented for CN-632.
228
+ // if (player.controlType === 'default') {
229
+ // onMarkerSelect(player.leftMarker, player.currentTime);
230
+ // }
228
231
  }
229
232
  }
233
+ if (player.leftMarker > -1 && player.currentTime > -1 && player.markerCreate) {
234
+ actions.handleMarkerPointChange('create');
235
+ onAddMarker(player.leftMarker, player.currentTime);
236
+ }
230
237
  }
231
238
  }, {
232
239
  keyCode: 35, // End
@@ -264,16 +271,6 @@ var Shortcut = function (_Component) {
264
271
  source: 'shortcut'
265
272
  });
266
273
  }
267
- }, {
268
- keyCode: 67, // C Key
269
- handle: function handle(player, actions) {
270
- var onAddMarker = _this.props.onAddMarker;
271
-
272
- if (player.leftMarker > -1 && player.rightMarker > -1 && player.markerCreate) {
273
- actions.handleMarkerPointChange('create');
274
- onAddMarker(player.leftMarker, player.rightMarker);
275
- }
276
- }
277
274
  }, {
278
275
  keyCode: 68, // D Key
279
276
  handle: function handle(player, actions) {
@@ -461,12 +458,12 @@ var Shortcut = function (_Component) {
461
458
  key: 'changePlaybackRate',
462
459
  value: function changePlaybackRate(player, actions) {
463
460
  var playbackRate = player.playbackRate;
464
- if (playbackRate >= 4) {
465
- playbackRate = 8;
466
- } else if (playbackRate >= 2) {
461
+ if (playbackRate >= 2) {
467
462
  playbackRate = 4;
468
- } else if (playbackRate >= 1) {
463
+ } else if (playbackRate >= 1.5) {
469
464
  playbackRate = 2;
465
+ } else if (playbackRate >= 1) {
466
+ playbackRate = 1.5;
470
467
  }
471
468
  /*
472
469
  * else if (playbackRate >= 1.25) {
@@ -112,9 +112,14 @@ var defaultProps = {
112
112
  crossOrigin: 'anonymous'
113
113
  };
114
114
 
115
+ var SubTitleSection = _styledComponents2.default.div.withConfig({
116
+ displayName: 'Video__SubTitleSection',
117
+ componentId: 'omlcc3-0'
118
+ })(['position:absolute;font-family:SFUIText-Regular;font-size:14px;bottom:20px;width:100%;display:flex;justify-content:center;text-align:center;color:#FFFFFF;height:85%;align-items:center;.subtitleContainer{border-radius:4px;width:fit-content;background:#000000;opacity:0.5;padding:8px 10px;line-height:20px;position:absolute;}']);
119
+
115
120
  var VideoBlock = _styledComponents2.default.div.withConfig({
116
121
  displayName: 'Video__VideoBlock',
117
- componentId: 'omlcc3-0'
122
+ componentId: 'omlcc3-1'
118
123
  })(['position:relative;&.video-react-player-block{position:relative;transition:all 0.1s ease-in-out;-moz-transition:all 0.1s ease-in-out;-webkit-transition:all 0.1s ease-in-out;-ms-transition:all 0.1s ease-in-out;-o-transition:all 0.1s ease-in-out;video{position:absolute;top:0;left:0;width:100%;height:100%;right:0;bottom:0;}.audio-tracks{position:relative;display:flex;background:rgba(0,0,0,0.5);color:#fff;z-index:10;position:absolute;width:100%;bottom:0;p{cursor:pointer;padding:10px;}}.loader-container{width:100%;height:100%;display:flex;justify-content:center;align-items:center;position:absolute;z-index:10;background:rgba(0,0,0,0.5)}}&.ratio-border{border:1px solid rgba(255,255,255,0.5);&:after{content:\'16:9 Safe Area\';position:absolute;color:#fff;font-family:SFUIText-Regular;font-size:12px;transform:rotate(-90deg);top:20%;left:-50px;}}']);
119
124
 
120
125
  var Video = function (_Component) {
@@ -140,7 +145,8 @@ var Video = function (_Component) {
140
145
  'left': '0px'
141
146
  },
142
147
  watermarkInterval: -1,
143
- isBuffering: false
148
+ isBuffering: false,
149
+ subtitleObj: {}
144
150
  };
145
151
  _this.video = null; // the html5 video
146
152
  _this.manager = new _Manager2.default(props.store);
@@ -414,7 +420,9 @@ var Video = function (_Component) {
414
420
  value: function UNSAFE_componentWillReceiveProps(newProps) {
415
421
  var _props4 = this.props,
416
422
  src = _props4.src,
417
- activeAudio = _props4.player.activeAudio;
423
+ activeAudio = _props4.player.activeAudio,
424
+ currentSubtitleObj = _props4.currentSubtitleObj,
425
+ markers = _props4.markers;
418
426
 
419
427
  if (newProps.src !== src) {
420
428
  var isM3U8 = this.state.isM3U8;
@@ -442,6 +450,26 @@ var Video = function (_Component) {
442
450
  if (newProps.player.activeAudio && activeAudio.id !== newProps.player.activeAudio.id) {
443
451
  this.hls.audioTrack = newProps.player.activeAudio.id;
444
452
  }
453
+ if (newProps.subtitleObj && newProps.subtitleObj.field && JSON.stringify(newProps.subtitleObj) !== JSON.stringify(currentSubtitleObj)) {
454
+ // if(newProps.subtitleObj?.field){
455
+ var style = this.getSubtitleStyle(newProps.subtitleObj.field);
456
+ this.setState({
457
+ currentSubtitleObj: {
458
+ line1: newProps.subtitleObj.field.line1,
459
+ line2: newProps.subtitleObj.field.line2,
460
+ style: style
461
+ }
462
+ });
463
+ // } else if (!newProps.subtitleObj?.field?.length) {
464
+ // this.setState({
465
+ // subtitleObj: {
466
+ // }
467
+ // })
468
+ // }
469
+ }
470
+ if (newProps.markers.length && markers.length && newProps.markers[0].values.length !== markers[0].values.length) {
471
+ this.displaySubtitle(newProps.markers);
472
+ }
445
473
  }
446
474
 
447
475
  // play the video
@@ -524,6 +552,7 @@ var Video = function (_Component) {
524
552
  key: 'forward',
525
553
  value: function forward(seconds) {
526
554
  this.seek(this.video.currentTime + seconds);
555
+ this.displaySubtitle();
527
556
  }
528
557
 
529
558
  // jump back x seconds
@@ -532,6 +561,7 @@ var Video = function (_Component) {
532
561
  key: 'replay',
533
562
  value: function replay(seconds) {
534
563
  this.forward(-seconds);
564
+ this.displaySubtitle();
535
565
  }
536
566
 
537
567
  // enter or exist full screen
@@ -677,6 +707,7 @@ var Video = function (_Component) {
677
707
  if (onDurationChange) {
678
708
  onDurationChange.apply(undefined, arguments);
679
709
  }
710
+ this.displaySubtitle();
680
711
  }
681
712
 
682
713
  /*
@@ -698,6 +729,40 @@ var Video = function (_Component) {
698
729
  if (onProgress) {
699
730
  onProgress.apply(undefined, arguments);
700
731
  }
732
+ this.displaySubtitle();
733
+ }
734
+ }, {
735
+ key: 'getSubtitleStyle',
736
+ value: function getSubtitleStyle(data) {
737
+ var style = {};
738
+ style.top = data && data.text_position === 'text_position_top' ? '0px' : '';
739
+ style.bottom = data && data.text_position === 'text_position_bottom' ? '0px' : '';
740
+ style.left = data && data.text_alignment === 'text_aligned_left' ? '0px' : '';
741
+ style.right = data && data.text_alignment === 'text_aligned_right' ? '0px' : '';
742
+ return style;
743
+ }
744
+ }, {
745
+ key: 'displaySubtitle',
746
+ value: function displaySubtitle(marker) {
747
+ var _props14 = this.props,
748
+ currentTime = _props14.player.currentTime,
749
+ markers = _props14.markers;
750
+
751
+ var currentMarker = marker || markers;
752
+ if (currentMarker && currentMarker[0] && currentMarker[0].name === "Subtitle") {
753
+ var values = currentMarker[0].values;
754
+ var currentValue = values.filter(function (ele) {
755
+ return ele.in_time <= currentTime && ele.out_time >= currentTime;
756
+ });
757
+ var style = this.getSubtitleStyle(currentValue[0]);
758
+ this.setState({
759
+ currentSubtitleObj: {
760
+ line1: currentValue[0] && currentValue[0].line1 || '',
761
+ line2: currentValue[0] && currentValue[0].line2 || '',
762
+ style: style
763
+ }
764
+ });
765
+ }
701
766
  }
702
767
 
703
768
  /*
@@ -708,11 +773,11 @@ var Video = function (_Component) {
708
773
  }, {
709
774
  key: 'handleEnded',
710
775
  value: function handleEnded() {
711
- var _props14 = this.props,
712
- loop = _props14.loop,
713
- player = _props14.player,
714
- actions = _props14.actions,
715
- onEnded = _props14.onEnded;
776
+ var _props15 = this.props,
777
+ loop = _props15.loop,
778
+ player = _props15.player,
779
+ actions = _props15.actions,
780
+ onEnded = _props15.onEnded;
716
781
 
717
782
  if (loop) {
718
783
  this.seek(0);
@@ -732,9 +797,9 @@ var Video = function (_Component) {
732
797
  }, {
733
798
  key: 'handleWaiting',
734
799
  value: function handleWaiting() {
735
- var _props15 = this.props,
736
- actions = _props15.actions,
737
- onWaiting = _props15.onWaiting;
800
+ var _props16 = this.props,
801
+ actions = _props16.actions,
802
+ onWaiting = _props16.onWaiting;
738
803
 
739
804
  actions.handleWaiting(this.getProperties());
740
805
 
@@ -751,15 +816,16 @@ var Video = function (_Component) {
751
816
  }, {
752
817
  key: 'handleSeeking',
753
818
  value: function handleSeeking() {
754
- var _props16 = this.props,
755
- actions = _props16.actions,
756
- onSeeking = _props16.onSeeking;
819
+ var _props17 = this.props,
820
+ actions = _props17.actions,
821
+ onSeeking = _props17.onSeeking;
757
822
 
758
823
  actions.handleSeeking(this.getProperties());
759
824
 
760
825
  if (onSeeking) {
761
826
  onSeeking.apply(undefined, arguments);
762
827
  }
828
+ this.displaySubtitle();
763
829
  }
764
830
 
765
831
  /*
@@ -770,9 +836,9 @@ var Video = function (_Component) {
770
836
  }, {
771
837
  key: 'handleSeeked',
772
838
  value: function handleSeeked() {
773
- var _props17 = this.props,
774
- actions = _props17.actions,
775
- onSeeked = _props17.onSeeked;
839
+ var _props18 = this.props,
840
+ actions = _props18.actions,
841
+ onSeeked = _props18.onSeeked;
776
842
 
777
843
  actions.handleSeeked(this.getProperties());
778
844
 
@@ -795,9 +861,9 @@ var Video = function (_Component) {
795
861
  }, {
796
862
  key: 'handleSuspend',
797
863
  value: function handleSuspend() {
798
- var _props18 = this.props,
799
- actions = _props18.actions,
800
- onSuspend = _props18.onSuspend;
864
+ var _props19 = this.props,
865
+ actions = _props19.actions,
866
+ onSuspend = _props19.onSuspend;
801
867
 
802
868
  actions.handleSuspend(this.getProperties());
803
869
  if (onSuspend) {
@@ -810,9 +876,9 @@ var Video = function (_Component) {
810
876
  }, {
811
877
  key: 'handleAbort',
812
878
  value: function handleAbort() {
813
- var _props19 = this.props,
814
- actions = _props19.actions,
815
- onAbort = _props19.onAbort;
879
+ var _props20 = this.props,
880
+ actions = _props20.actions,
881
+ onAbort = _props20.onAbort;
816
882
 
817
883
  actions.handleAbort(this.getProperties());
818
884
  if (onAbort) {
@@ -825,9 +891,9 @@ var Video = function (_Component) {
825
891
  }, {
826
892
  key: 'handleEmptied',
827
893
  value: function handleEmptied() {
828
- var _props20 = this.props,
829
- actions = _props20.actions,
830
- onEmptied = _props20.onEmptied;
894
+ var _props21 = this.props,
895
+ actions = _props21.actions,
896
+ onEmptied = _props21.onEmptied;
831
897
 
832
898
  actions.handleEmptied(this.getProperties());
833
899
  if (onEmptied) {
@@ -843,9 +909,9 @@ var Video = function (_Component) {
843
909
  }, {
844
910
  key: 'handleStalled',
845
911
  value: function handleStalled() {
846
- var _props21 = this.props,
847
- actions = _props21.actions,
848
- onStalled = _props21.onStalled;
912
+ var _props22 = this.props,
913
+ actions = _props22.actions,
914
+ onStalled = _props22.onStalled;
849
915
 
850
916
  actions.handleStalled(this.getProperties());
851
917
 
@@ -862,10 +928,10 @@ var Video = function (_Component) {
862
928
  }, {
863
929
  key: 'handleLoadedMetaData',
864
930
  value: function handleLoadedMetaData() {
865
- var _props22 = this.props,
866
- actions = _props22.actions,
867
- onLoadedMetadata = _props22.onLoadedMetadata,
868
- startTime = _props22.startTime;
931
+ var _props23 = this.props,
932
+ actions = _props23.actions,
933
+ onLoadedMetadata = _props23.onLoadedMetadata,
934
+ startTime = _props23.startTime;
869
935
 
870
936
 
871
937
  if (startTime && startTime > 0) {
@@ -887,9 +953,9 @@ var Video = function (_Component) {
887
953
  }, {
888
954
  key: 'handleLoadedData',
889
955
  value: function handleLoadedData() {
890
- var _props23 = this.props,
891
- actions = _props23.actions,
892
- onLoadedData = _props23.onLoadedData;
956
+ var _props24 = this.props,
957
+ actions = _props24.actions,
958
+ onLoadedData = _props24.onLoadedData;
893
959
 
894
960
  actions.handleLoadedData(this.getProperties());
895
961
 
@@ -906,12 +972,12 @@ var Video = function (_Component) {
906
972
  }, {
907
973
  key: 'handleTimeUpdate',
908
974
  value: function handleTimeUpdate() {
909
- var _props24 = this.props,
910
- _props24$player = _props24.player,
911
- previewActive = _props24$player.previewActive,
912
- rightMarker = _props24$player.rightMarker,
913
- actions = _props24.actions,
914
- onTimeUpdate = _props24.onTimeUpdate;
975
+ var _props25 = this.props,
976
+ _props25$player = _props25.player,
977
+ previewActive = _props25$player.previewActive,
978
+ rightMarker = _props25$player.rightMarker,
979
+ actions = _props25.actions,
980
+ onTimeUpdate = _props25.onTimeUpdate;
915
981
 
916
982
  actions.handleTimeUpdate(this.getProperties());
917
983
  if (previewActive && this.video.currentTime >= rightMarker) {
@@ -931,9 +997,9 @@ var Video = function (_Component) {
931
997
  }, {
932
998
  key: 'handleRateChange',
933
999
  value: function handleRateChange() {
934
- var _props25 = this.props,
935
- actions = _props25.actions,
936
- onRateChange = _props25.onRateChange;
1000
+ var _props26 = this.props,
1001
+ actions = _props26.actions,
1002
+ onRateChange = _props26.onRateChange;
937
1003
 
938
1004
  actions.handleRateChange(this.getProperties());
939
1005
 
@@ -947,9 +1013,9 @@ var Video = function (_Component) {
947
1013
  }, {
948
1014
  key: 'handleVolumeChange',
949
1015
  value: function handleVolumeChange() {
950
- var _props26 = this.props,
951
- actions = _props26.actions,
952
- onVolumeChange = _props26.onVolumeChange;
1016
+ var _props27 = this.props,
1017
+ actions = _props27.actions,
1018
+ onVolumeChange = _props27.onVolumeChange;
953
1019
 
954
1020
  actions.handleVolumeChange(this.getProperties());
955
1021
 
@@ -966,9 +1032,9 @@ var Video = function (_Component) {
966
1032
  }, {
967
1033
  key: 'handleError',
968
1034
  value: function handleError() {
969
- var _props27 = this.props,
970
- actions = _props27.actions,
971
- onError = _props27.onError;
1035
+ var _props28 = this.props,
1036
+ actions = _props28.actions,
1037
+ onError = _props28.onError;
972
1038
 
973
1039
  actions.handleError(this.getProperties());
974
1040
  if (onError) {
@@ -1080,17 +1146,17 @@ var Video = function (_Component) {
1080
1146
  value: function render() {
1081
1147
  var _this5 = this;
1082
1148
 
1083
- var _props28 = this.props,
1084
- loop = _props28.loop,
1085
- poster = _props28.poster,
1086
- preload = _props28.preload,
1087
- autoPlay = _props28.autoPlay,
1088
- playsInline = _props28.playsInline,
1089
- muted = _props28.muted,
1090
- crossOrigin = _props28.crossOrigin,
1091
- videoId = _props28.videoId,
1092
- fileType = _props28.fileType,
1093
- userEmail = _props28.userEmail;
1149
+ var _props29 = this.props,
1150
+ loop = _props29.loop,
1151
+ poster = _props29.poster,
1152
+ preload = _props29.preload,
1153
+ autoPlay = _props29.autoPlay,
1154
+ playsInline = _props29.playsInline,
1155
+ muted = _props29.muted,
1156
+ crossOrigin = _props29.crossOrigin,
1157
+ videoId = _props29.videoId,
1158
+ fileType = _props29.fileType,
1159
+ userEmail = _props29.userEmail;
1094
1160
  var _state2 = this.state,
1095
1161
  isBuffering = _state2.isBuffering,
1096
1162
  watermark = _state2.watermark;
@@ -1214,6 +1280,37 @@ var Video = function (_Component) {
1214
1280
  'p',
1215
1281
  { className: 'user-name-wrapper', id: 'watermark-text', style: _extends({}, watermark) },
1216
1282
  userEmail
1283
+ ),
1284
+ subtitleObj.line1 && subtitleObj.line1.length && _react2.default.createElement(
1285
+ SubTitleSection,
1286
+ {
1287
+ onClick: function onClick() {
1288
+ if (player.paused) {
1289
+ actions.play();
1290
+ } else {
1291
+ actions.pause();
1292
+ }
1293
+ actions.handleVideoRewind(false);
1294
+ }
1295
+ },
1296
+ _react2.default.createElement(
1297
+ 'span',
1298
+ { className: 'subtitleContainer', style: _extends({}, subtitleObj.style) },
1299
+ _react2.default.createElement(
1300
+ 'p',
1301
+ null,
1302
+ ' ',
1303
+ subtitleObj.line1,
1304
+ ' '
1305
+ ),
1306
+ _react2.default.createElement(
1307
+ 'p',
1308
+ null,
1309
+ ' ',
1310
+ subtitleObj.line2,
1311
+ ' '
1312
+ )
1313
+ )
1217
1314
  )
1218
1315
  );
1219
1316
  }
@@ -68,6 +68,10 @@ var _MarkingControl = require('../marking-controls/MarkingControl');
68
68
 
69
69
  var _MarkingControl2 = _interopRequireDefault(_MarkingControl);
70
70
 
71
+ var _SubtitleLanguagesMenuButton = require('./SubtitleLanguagesMenuButton');
72
+
73
+ var _SubtitleLanguagesMenuButton2 = _interopRequireDefault(_SubtitleLanguagesMenuButton);
74
+
71
75
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
72
76
 
73
77
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
@@ -145,6 +149,9 @@ var ControlBar = function (_Component) {
145
149
  }, this.props, {
146
150
  key: 'volume-menu-button',
147
151
  order: 7
152
+ })), _react2.default.createElement(_SubtitleLanguagesMenuButton2.default, _extends({}, this.props, {
153
+ key: 'subtitle-menu-button',
154
+ order: 7
148
155
  })), _react2.default.createElement(_AudioTracksMenuButton2.default, _extends({}, this.props, {
149
156
  key: 'audio-tracks-menu-button',
150
157
  order: 7
@@ -0,0 +1,133 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+
7
+ var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
8
+
9
+ var _propTypes = require('prop-types');
10
+
11
+ var _react = require('react');
12
+
13
+ var _react2 = _interopRequireDefault(_react);
14
+
15
+ var _styledComponents = require('styled-components');
16
+
17
+ var _styledComponents2 = _interopRequireDefault(_styledComponents);
18
+
19
+ var _Menu = require('../Menu');
20
+
21
+ var _Menu2 = _interopRequireDefault(_Menu);
22
+
23
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
24
+
25
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
26
+
27
+ function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
28
+
29
+ function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
30
+
31
+ var propTypes = {
32
+ actions: _propTypes.PropTypes.instanceOf(Object),
33
+ player: _propTypes.PropTypes.instanceOf(Object)
34
+ };
35
+
36
+ var SubtitleMenuBlock = (0, _styledComponents2.default)('div').withConfig({
37
+ displayName: 'SubtitleLanguagesMenuButton__SubtitleMenuBlock',
38
+ componentId: 'sc-1g8hfwo-0'
39
+ })(['text-align:left;background:transparent;cursor:pointer;border-bottom:1px solid #eeeeee;&:last-child{border:none;}&:hover,&:focus{background:rgba(0,206,198,0.1);}p{padding 15px;font-family:SFUIText-Medium;font-size:12px;white-space:nowrap;}']);
40
+
41
+ var SubtitleLanguagesMenuButton = function (_Component) {
42
+ _inherits(SubtitleLanguagesMenuButton, _Component);
43
+
44
+ function SubtitleLanguagesMenuButton(props, context) {
45
+ _classCallCheck(this, SubtitleLanguagesMenuButton);
46
+
47
+ var _this = _possibleConstructorReturn(this, (SubtitleLanguagesMenuButton.__proto__ || Object.getPrototypeOf(SubtitleLanguagesMenuButton)).call(this, props, context));
48
+
49
+ _this.state = {
50
+ activeLanguage: ''
51
+ };
52
+ return _this;
53
+ }
54
+
55
+ _createClass(SubtitleLanguagesMenuButton, [{
56
+ key: 'changeSubtitle',
57
+ value: function changeSubtitle(subtitle) {
58
+ var filterSelectedSubtitle = this.props.filterSelectedSubtitle;
59
+
60
+ filterSelectedSubtitle(subtitle.subtitle_info_id);
61
+ this.setState({
62
+ activeLanguage: subtitle.subtitle_info_id
63
+ });
64
+ }
65
+ }, {
66
+ key: 'componentDidMount',
67
+ value: function componentDidMount() {
68
+ var subtitleData = this.props.subtitleData;
69
+
70
+ if (subtitleData && subtitleData.length) {
71
+ this.setState({
72
+ activeLanguage: subtitleData[0].subtitle_info_id
73
+ });
74
+ }
75
+ }
76
+ }, {
77
+ key: 'render',
78
+ value: function render() {
79
+ var _this2 = this;
80
+
81
+ var _props = this.props,
82
+ player = _props.player,
83
+ actions = _props.actions,
84
+ subtitleData = _props.subtitleData;
85
+ var activeLanguage = this.state.activeLanguage;
86
+
87
+ return _react2.default.createElement(
88
+ _react2.default.Fragment,
89
+ null,
90
+ subtitleData && subtitleData.length ? _react2.default.createElement(
91
+ _Menu2.default,
92
+ {
93
+ icon: 'subtitle',
94
+ player: player,
95
+ actions: actions,
96
+ style: { marginRight: '10px' },
97
+ position: 'left'
98
+ },
99
+ _react2.default.createElement(
100
+ 'div',
101
+ { className: 'menu-container' },
102
+ subtitleData.map(function (subtitle) {
103
+ return _react2.default.createElement(
104
+ SubtitleMenuBlock,
105
+ {
106
+ onClick: function onClick() {
107
+ return _this2.changeSubtitle(subtitle);
108
+ },
109
+ role: 'presentation',
110
+ key: subtitle.subtitle_info_id,
111
+ style: activeLanguage === subtitle.subtitle_info_id ? { pointerEvents: 'none' } : null
112
+ },
113
+ _react2.default.createElement(
114
+ 'p',
115
+ {
116
+ style: activeLanguage === subtitle.subtitle_info_id ? { color: '#00cec6', pointerEvents: 'none' } : { color: '#333333' }
117
+ },
118
+ subtitle.title
119
+ )
120
+ );
121
+ })
122
+ )
123
+ ) : null
124
+ );
125
+ }
126
+ }]);
127
+
128
+ return SubtitleLanguagesMenuButton;
129
+ }(_react.Component);
130
+
131
+ SubtitleLanguagesMenuButton.propTypes = propTypes;
132
+ SubtitleLanguagesMenuButton.displayName = 'SubtitleLanguagesMenuButton';
133
+ exports.default = SubtitleLanguagesMenuButton;
@@ -100,13 +100,17 @@ var MarkOutControl = function (_Component) {
100
100
  actions = _props2.actions,
101
101
  leftMarker = _props2.leftMarker,
102
102
  controlType = _props2.controlType,
103
- onMarkerSelect = _props2.onMarkerSelect;
103
+ onMarkerSelect = _props2.onMarkerSelect,
104
+ onAddMarker = _props2.onAddMarker;
104
105
 
105
106
  if (leftMarker > -1 && player.currentTime > leftMarker) {
106
107
  actions.handleMarkerPointChange('add', 'right', player.currentTime);
107
- if (controlType === 'default') {
108
- onMarkerSelect(leftMarker, player.currentTime);
109
- }
108
+ //Commented for CN-632.
109
+ // if (controlType === 'default') {
110
+ // onMarkerSelect(leftMarker, player.currentTime);
111
+ // }
112
+ actions.handleMarkerPointChange('create');
113
+ onAddMarker(leftMarker, player.currentTime);
110
114
  }
111
115
  }
112
116
  }, {
@@ -78,15 +78,16 @@ function MarkingControl(_ref) {
78
78
  controlType = _ref.controlType,
79
79
  playerType = _ref.playerType,
80
80
  allowMarkerOverlap = _ref.allowMarkerOverlap,
81
- playerReadOnlyMode = _ref.playerReadOnlyMode;
81
+ playerReadOnlyMode = _ref.playerReadOnlyMode,
82
+ disablePlayerActions = _ref.disablePlayerActions;
82
83
 
83
84
  return _react2.default.createElement(
84
85
  _react2.default.Fragment,
85
86
  null,
86
- playerType !== 'panel' && playerType !== 'default' && playerType !== 'clipping_default' && !playerReadOnlyMode ? _react2.default.createElement(
87
+ playerType !== 'panel' && playerType !== 'default' && playerType !== 'clipping_default' ? _react2.default.createElement(
87
88
  MarkingBlock,
88
89
  null,
89
- (!(player.leftMarker > -1) || !(player.rightMarker > -1)) && playerType !== 'panel' && playerType !== 'default' && playerType !== 'clipping_default' ? _react2.default.createElement(
90
+ (!(player.leftMarker > -1) || !(player.rightMarker > -1)) && playerType !== 'panel' && playerType !== 'default' && playerType !== 'clipping_default' && !playerReadOnlyMode && !disablePlayerActions.includes("marking_controls") ? _react2.default.createElement(
90
91
  _react2.default.Fragment,
91
92
  null,
92
93
  _react2.default.createElement(_MarkInControl2.default, {
@@ -113,21 +114,11 @@ function MarkingControl(_ref) {
113
114
  frameRate: frameRate,
114
115
  initialTime: initialTime
115
116
  }) : null,
116
- player.leftMarker > -1 && player.rightMarker > -1 ? _react2.default.createElement(
117
- _react2.default.Fragment,
118
- null,
119
- player.markerType === 'create' && controlType === 'advanced' && player.markerCreate ? _react2.default.createElement(_MarkingAddButton2.default, {
120
- leftMarker: player.leftMarker,
121
- rightMarker: player.rightMarker,
122
- onAddMarker: onAddMarker,
123
- actions: actions
124
- }) : null
125
- ) : null,
126
117
  player.leftMarker > -1 && player.rightMarker > -1 ? _react2.default.createElement(_MarkingPreview2.default, {
127
118
  actions: actions,
128
119
  leftMarker: player.leftMarker
129
120
  }) : null,
130
- (player.leftMarker > -1 || player.rightMarker > -1) && player.markerType === 'create' && player.markerCreate ? _react2.default.createElement(_MarkingDeleteButton2.default, {
121
+ (player.leftMarker > -1 || player.rightMarker > -1) && player.markerType === 'create' && player.markerCreate && !playerReadOnlyMode && !disablePlayerActions.includes("marking_controls") ? _react2.default.createElement(_MarkingDeleteButton2.default, {
131
122
  actions: actions,
132
123
  onDeleteMarker: onDeleteMarker
133
124
  }) : null
@@ -102,35 +102,35 @@ var PlaybackRateControl = function (_Component) {
102
102
  _react2.default.createElement(
103
103
  'div',
104
104
  {
105
- className: player.playbackRate === 2 ? 'playback-rate active' : 'playback-rate',
105
+ className: player.playbackRate === 1.5 ? 'playback-rate active' : 'playback-rate',
106
106
  onClick: function onClick() {
107
- return _this2.changePlaybackRate(2);
107
+ return _this2.changePlaybackRate(1.5);
108
108
  },
109
109
  role: 'presentation'
110
110
  },
111
- '2x'
111
+ '1.5x'
112
112
  ),
113
113
  _react2.default.createElement(
114
114
  'div',
115
115
  {
116
- className: player.playbackRate === 4 ? 'playback-rate active' : 'playback-rate',
116
+ className: player.playbackRate === 2 ? 'playback-rate active' : 'playback-rate',
117
117
  onClick: function onClick() {
118
- return _this2.changePlaybackRate(4);
118
+ return _this2.changePlaybackRate(2);
119
119
  },
120
120
  role: 'presentation'
121
121
  },
122
- '4x'
122
+ '2x'
123
123
  ),
124
124
  _react2.default.createElement(
125
125
  'div',
126
126
  {
127
- className: player.playbackRate === 8 ? 'playback-rate active' : 'playback-rate',
127
+ className: player.playbackRate === 4 ? 'playback-rate active' : 'playback-rate',
128
128
  onClick: function onClick() {
129
- return _this2.changePlaybackRate(8);
129
+ return _this2.changePlaybackRate(4);
130
130
  },
131
131
  role: 'presentation'
132
132
  },
133
- '8x'
133
+ '4x'
134
134
  )
135
135
  )
136
136
  );
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@desynova-digital/player",
3
- "version": "3.0.3",
3
+ "version": "3.2.0",
4
4
  "description": "Video Player Package for Contido Application",
5
5
  "main": "index.js",
6
6
  "scripts": {
package/utils/index.js CHANGED
@@ -41,7 +41,7 @@ function secondsToTime() {
41
41
  var frameRate = arguments[1];
42
42
  var initialTime = arguments[2];
43
43
 
44
- var time = '09:59:50:00';
44
+ var time = '00:00:00:00';
45
45
  _seconds = parseFloat(_seconds);
46
46
  if (_seconds > -1) {
47
47
  if (initialTime) {