ovenplayer 0.10.2 → 0.10.3-3.alpha-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 (49) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +39 -46
  3. package/dist/ovenplayer.js +1 -1
  4. package/dist/ovenplayer.js.map +1 -1
  5. package/package.json +1 -1
  6. package/src/assets/fonts/seek-icons.svg +13 -13
  7. package/src/js/api/Api.js +231 -140
  8. package/src/js/api/Configurator.js +6 -3
  9. package/src/js/api/SupportChecker.js +9 -3
  10. package/src/js/api/constants.js +203 -15
  11. package/src/js/api/media/Manager.js +15 -106
  12. package/src/js/api/provider/Controller.js +5 -6
  13. package/src/js/api/provider/html5/Provider.js +107 -86
  14. package/src/js/api/provider/html5/providers/Dash.js +39 -110
  15. package/src/js/api/provider/html5/providers/Hls.js +139 -99
  16. package/src/js/api/provider/html5/providers/Html5.js +3 -1
  17. package/src/js/api/provider/html5/providers/WebRTC.js +207 -37
  18. package/src/js/api/provider/html5/providers/WebRTCLoader.js +247 -116
  19. package/src/js/ovenplayer.js +5 -9
  20. package/src/js/ovenplayer.sdk.js +5 -6
  21. package/src/js/utils/browser.js +6 -1
  22. package/src/js/utils/getTouchSection.js +23 -0
  23. package/src/js/utils/likeA$.js +4 -3
  24. package/src/js/utils/resize-sensor.js +168 -1
  25. package/src/js/utils/underscore.js +5 -5
  26. package/src/js/view/components/controls/fullScreenButton.js +22 -15
  27. package/src/js/view/components/controls/main.js +33 -20
  28. package/src/js/view/components/controls/playlistPanel.js +1 -1
  29. package/src/js/view/components/controls/progressBar.js +151 -76
  30. package/src/js/view/components/controls/settingButton.js +65 -48
  31. package/src/js/view/components/controls/settingPanel/audioTrackPanel.js +57 -0
  32. package/src/js/view/components/controls/settingPanel/captionPanel.js +1 -1
  33. package/src/js/view/components/controls/settingPanel/main.js +110 -80
  34. package/src/js/view/components/controls/settingPanel/qualityPanel.js +2 -2
  35. package/src/js/view/components/controls/settingPanel/sourcePanel.js +1 -1
  36. package/src/js/view/components/controls/settingPanel/speedPanel.js +1 -1
  37. package/src/js/view/components/controls/settingPanel/timeDisplayPanel.js +1 -1
  38. package/src/js/view/components/controls/timeDisplay.js +95 -23
  39. package/src/js/view/components/controls/timeDisplayTemplate.js +1 -1
  40. package/src/js/view/components/controls/volumeButton.js +2 -3
  41. package/src/js/view/components/helpers/captionViewer.js +1 -1
  42. package/src/js/view/components/helpers/contextPanel.js +1 -1
  43. package/src/js/view/components/helpers/contextPanelTemplate.js +1 -1
  44. package/src/js/view/components/helpers/main.js +21 -0
  45. package/src/js/view/components/helpers/thumbnailTemplate.js +0 -1
  46. package/src/js/view/engine/Templates.js +2 -0
  47. package/src/js/view/view.js +53 -14
  48. package/src/js/view/viewTemplate.js +8 -8
  49. package/src/stylesheet/ovenplayer.less +565 -308
@@ -8,6 +8,7 @@ import PanelManager from "view/global/PanelManager";
8
8
  import ContextPanel from 'view/components/helpers/contextPanel';
9
9
  import LA$ from 'utils/likeA$';
10
10
  import ResizeSensor from "utils/resize-sensor";
11
+ import getTouchSection from "utils/getTouchSection";
11
12
  import {
12
13
  READY,
13
14
  DESTROY,
@@ -30,11 +31,12 @@ import {
30
31
  import '../../stylesheet/ovenplayer.less';
31
32
 
32
33
  const View = function($container){
33
- let viewTemplate = "", controls = "", helper = "", $playerRoot, contextPanel = "", api = "", autoHideTimer = "", playerState = STATE_IDLE;
34
+ let viewTemplate = "", controls = "", helper = "", $playerRoot, contextPanel = "", api = null, autoHideTimer = "", playerState = STATE_IDLE;
34
35
  let isShiftPressed = false;
35
36
  let panelManager = PanelManager();
36
37
  let screenSize = "";
37
38
  let currentPlayerSize = "";
39
+ let resizeSensor = null;
38
40
 
39
41
  let that = {};
40
42
 
@@ -136,7 +138,7 @@ const View = function($container){
136
138
  viewTemplate = template;
137
139
  calcPlayerWidth();
138
140
  currentPlayerSize = screenSize;
139
- new ResizeSensor($playerRoot.get(), function() {
141
+ resizeSensor = new ResizeSensor($playerRoot.get(), function() {
140
142
 
141
143
  $playerRoot.removeClass("large");
142
144
  $playerRoot.removeClass("medium");
@@ -154,6 +156,11 @@ const View = function($container){
154
156
 
155
157
  };
156
158
  const onDestroyed = function(){
159
+ if(resizeSensor) {
160
+ resizeSensor.detach();
161
+ resizeSensor = null;
162
+ }
163
+
157
164
  if(helper){
158
165
  helper.destroy();
159
166
  helper = null;
@@ -192,9 +199,27 @@ const View = function($container){
192
199
  }
193
200
  },
194
201
  "dblclick .ovenplayer" : function(event, $current, template){
195
-
196
202
  if (api) {
203
+ const touchPosition = getTouchSection(event);
204
+ const currentPosition = api.getPosition();
205
+ const tapToSeekEnabled = api.getConfig().doubleTapToSeek;
206
+
207
+ // seek back 10s
208
+ if (tapToSeekEnabled && touchPosition == 'left') {
209
+ const newPosition = Math.max(currentPosition - 10, 0);
210
+ OvenPlayerConsole.log(`Seeking to ${newPosition}`);
211
+ api.seek(newPosition);
212
+ }
213
+
214
+ // seek forward 10s
215
+ if (tapToSeekEnabled && touchPosition === 'right') {
216
+ const newPosition = Math.min(currentPosition + 10, api.getDuration());
217
+ OvenPlayerConsole.log(`Seeking to ${newPosition}`);
218
+ api.seek(newPosition);
219
+ }
197
220
 
221
+ if (touchPosition === 'middle' || !tapToSeekEnabled) {
222
+ OvenPlayerConsole.log(`Toggling fullscreen`);
198
223
  if (api.getConfig().expandFullScreenUI && api.toggleFullScreen) {
199
224
 
200
225
  if(!(LA$(event.target).closest(".op-controls-container") || LA$(event.target).closest(".op-setting-panel") )){
@@ -202,6 +227,7 @@ const View = function($container){
202
227
  }
203
228
  }
204
229
  }
230
+ }
205
231
  },
206
232
  //For iOS safari
207
233
  "touchstart .ovenplayer" : function(event, $current, template){
@@ -311,11 +337,24 @@ const View = function($container){
311
337
  that.setApi = (playerInstance) => {
312
338
  api = playerInstance;
313
339
 
340
+ api.getContainerElement = () => {
341
+ return $playerRoot.get();
342
+ };
343
+
344
+ api.getContainerId = () => {
345
+ return $playerRoot.get().id;
346
+ };
347
+
314
348
  api.on(READY, function(data) {
315
349
 
316
- if(!controls && showControlBar){
350
+ if(!controls){
317
351
  controls = Controls($playerRoot.find(".op-ui"), playerInstance);
318
352
  }
353
+
354
+ if (!showControlBar) {
355
+ $playerRoot.addClass("op-no-controls");
356
+ }
357
+
319
358
  });
320
359
 
321
360
  api.on(ERROR, function(error) {
@@ -353,16 +392,7 @@ const View = function($container){
353
392
  let showControlBar = api.getConfig() && api.getConfig().controls;
354
393
 
355
394
  helper = Helpers($playerRoot.find(".op-ui"), playerInstance);
356
- if(showControlBar){
357
- controls = Controls($playerRoot.find(".op-ui"), playerInstance);
358
- } else {
359
-
360
- // to use full screen api
361
- if (api.getConfig() && api.getConfig().expandFullScreenUI) {
362
- controls = Controls($playerRoot.find(".op-ui"), playerInstance);
363
- controls.destroy();
364
- }
365
- }
395
+ controls = Controls($playerRoot.find(".op-ui"), playerInstance);
366
396
 
367
397
  let aspectRatio = api.getConfig().aspectRatio;
368
398
 
@@ -378,6 +408,15 @@ const View = function($container){
378
408
  $playerRoot.find('.op-ratio').css('padding-bottom', ratio + '%');
379
409
  }
380
410
  }
411
+
412
+ api.showControls = function (show) {
413
+ if (show) {
414
+ $playerRoot.removeClass("op-no-controls");
415
+ setHide(false, true);
416
+ } else {
417
+ $playerRoot.addClass("op-no-controls");
418
+ }
419
+ };
381
420
  };
382
421
 
383
422
 
@@ -2,15 +2,15 @@
2
2
  * Created by hoho on 2018. 7. 20..
3
3
  */
4
4
 
5
- const ViewTemplate = function(uiText, id){
6
- return `<div class="ovenplayer op-wrapper" tabindex="-1" aria-label="" id="${id}">` +
7
- `<div class="op-ratio"></div>` +
8
- `<div class="op-player op-clear">`+
9
- `<div class="op-core-ui-wrapper op-clear">` +
10
- `<div class="op-media-element-container op-clear" data-parent-id="${id}"></div>` +
11
- `<div class="op-ui op-clear"></div>`+
5
+ const ViewTemplate = function (uiText, id) {
6
+ return `<div class="ovenplayer op-wrapper" tabindex="-1" ${id ? `id = "${id}"` : ``}>` +
7
+ `<div class="op-ratio"></div>` +
8
+ `<div class="op-player op-clear">` +
9
+ `<div class="op-core-ui-wrapper op-clear">` +
10
+ `<div class="op-media-element-container op-clear"></div>` +
11
+ `<div class="op-ui op-clear"></div>` +
12
+ `</div>` +
12
13
  `</div>` +
13
- `</div>` +
14
14
  `</div>`
15
15
  };
16
16
  export default ViewTemplate;