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.
- package/LICENSE +1 -1
- package/README.md +39 -46
- package/dist/ovenplayer.js +1 -1
- package/dist/ovenplayer.js.map +1 -1
- package/package.json +1 -1
- package/src/assets/fonts/seek-icons.svg +13 -13
- package/src/js/api/Api.js +231 -140
- package/src/js/api/Configurator.js +6 -3
- package/src/js/api/SupportChecker.js +9 -3
- package/src/js/api/constants.js +203 -15
- package/src/js/api/media/Manager.js +15 -106
- package/src/js/api/provider/Controller.js +5 -6
- package/src/js/api/provider/html5/Provider.js +107 -86
- package/src/js/api/provider/html5/providers/Dash.js +39 -110
- package/src/js/api/provider/html5/providers/Hls.js +139 -99
- package/src/js/api/provider/html5/providers/Html5.js +3 -1
- package/src/js/api/provider/html5/providers/WebRTC.js +207 -37
- package/src/js/api/provider/html5/providers/WebRTCLoader.js +247 -116
- package/src/js/ovenplayer.js +5 -9
- package/src/js/ovenplayer.sdk.js +5 -6
- package/src/js/utils/browser.js +6 -1
- package/src/js/utils/getTouchSection.js +23 -0
- package/src/js/utils/likeA$.js +4 -3
- package/src/js/utils/resize-sensor.js +168 -1
- package/src/js/utils/underscore.js +5 -5
- package/src/js/view/components/controls/fullScreenButton.js +22 -15
- package/src/js/view/components/controls/main.js +33 -20
- package/src/js/view/components/controls/playlistPanel.js +1 -1
- package/src/js/view/components/controls/progressBar.js +151 -76
- package/src/js/view/components/controls/settingButton.js +65 -48
- package/src/js/view/components/controls/settingPanel/audioTrackPanel.js +57 -0
- package/src/js/view/components/controls/settingPanel/captionPanel.js +1 -1
- package/src/js/view/components/controls/settingPanel/main.js +110 -80
- package/src/js/view/components/controls/settingPanel/qualityPanel.js +2 -2
- package/src/js/view/components/controls/settingPanel/sourcePanel.js +1 -1
- package/src/js/view/components/controls/settingPanel/speedPanel.js +1 -1
- package/src/js/view/components/controls/settingPanel/timeDisplayPanel.js +1 -1
- package/src/js/view/components/controls/timeDisplay.js +95 -23
- package/src/js/view/components/controls/timeDisplayTemplate.js +1 -1
- package/src/js/view/components/controls/volumeButton.js +2 -3
- package/src/js/view/components/helpers/captionViewer.js +1 -1
- package/src/js/view/components/helpers/contextPanel.js +1 -1
- package/src/js/view/components/helpers/contextPanelTemplate.js +1 -1
- package/src/js/view/components/helpers/main.js +21 -0
- package/src/js/view/components/helpers/thumbnailTemplate.js +0 -1
- package/src/js/view/engine/Templates.js +2 -0
- package/src/js/view/view.js +53 -14
- package/src/js/view/viewTemplate.js +8 -8
- package/src/stylesheet/ovenplayer.less +565 -308
package/src/js/view/view.js
CHANGED
|
@@ -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 =
|
|
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
|
|
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
|
-
|
|
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"
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
`<div class="op-media-element-container op-clear"
|
|
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;
|