@desynova-digital/player 4.0.1 → 4.0.3
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/Manager.js +99 -0
- package/actions/player.js +331 -0
- package/actions/video.js +206 -0
- package/{utils/colors.js → colors.js} +1 -2
- package/{media → components}/AudioMeter.js +96 -109
- package/components/BigPlayButton.js +84 -0
- package/components/ImageViewer.js +272 -0
- package/{control → components}/MarkerBar.js +33 -24
- package/{utils → components}/Menu.js +13 -4
- package/components/Player.js +706 -0
- package/{header/Header.js → components/PlayerHeader.js} +104 -78
- package/components/Playlist.js +95 -0
- package/{control → components}/PointersBar.js +122 -61
- package/components/PosterImage.js +50 -0
- package/{media → components}/SDOutline.js +13 -49
- package/components/Shortcut.js +821 -0
- package/{control → components}/Slider.js +27 -23
- package/components/TagsBar.js +81 -0
- package/components/Video.js +1280 -0
- package/{control → components/control-bar}/AudioTracksMenuButton.js +32 -28
- package/components/control-bar/CameraButton.js +75 -0
- package/components/control-bar/CommentsButton.js +186 -0
- package/components/control-bar/ControlBar.js +266 -0
- package/components/control-bar/EditorControlMenuButton.js +317 -0
- package/components/control-bar/ForwardControl.js +12 -0
- package/components/control-bar/ForwardReplayControl.js +106 -0
- package/{control → components/control-bar}/FullscreenToggle.js +26 -21
- package/components/control-bar/PlayToggle.js +85 -0
- package/components/control-bar/ReplayControl.js +12 -0
- package/components/control-bar/SettingsMenuButton.js +41 -0
- package/components/control-bar/SubtitleLanguagesMenuButton.js +149 -0
- package/components/control-bar/SubtitleMovementMenu.js +140 -0
- package/{control/VolumneMenuButton.js → components/control-bar/VolumeMenuButton.js} +26 -27
- package/components/control-bar/ZoomMenuButton.js +90 -0
- package/{control → components/marking-controls}/MarkInControl.js +32 -25
- package/{control → components/marking-controls}/MarkOutControl.js +35 -26
- package/components/marking-controls/MarkingAddButton.js +79 -0
- package/components/marking-controls/MarkingControl.js +95 -0
- package/components/marking-controls/MarkingDeleteButton.js +70 -0
- package/{control → components/marking-controls}/MarkingDuration.js +12 -5
- package/components/marking-controls/MarkingPreview.js +72 -0
- package/components/progress-bar/AudioWaveform.js +126 -0
- package/components/progress-bar/LoadProgressBar.js +67 -0
- package/components/progress-bar/MouseTimeDisplay.js +36 -0
- package/{control → components/progress-bar}/PlayProgressBar.js +4 -4
- package/components/progress-bar/ProgressControl.js +186 -0
- package/{control → components/progress-bar}/SeekBar.js +113 -72
- package/{control → components/progress-bar}/Timeline.js +43 -32
- package/{control/PlayBackRateControl.js → components/settings-menu-control/PlaybackRateControl.js} +44 -30
- package/components/settings-menu-control/SafeAreaControl.js +81 -0
- package/components/settings-menu-control/SettingsMenu.js +56 -0
- package/components/settings-menu-control/SubtitleControl.js +1 -0
- package/components/time-controls/CurrentTimeDisplay.js +83 -0
- package/{control → components/time-controls}/DurationDisplay.js +8 -15
- package/components/time-controls/TimeDivider.js +25 -0
- package/{control → components/volume-control}/VolumeBar.js +62 -80
- package/components/volume-control/VolumeControl.js +19 -0
- package/{control → components/volume-control}/VolumeLevel.js +2 -3
- package/components/zoom-control/ZoomBar.js +155 -0
- package/components/zoom-control/ZoomLevel.js +55 -0
- package/index.js +198 -1
- package/package.json +5 -8
- package/reducers/index.js +19 -0
- package/reducers/operation.js +35 -0
- package/reducers/player.js +222 -0
- package/utils/browser.js +30 -0
- package/utils/dom.js +1 -2
- package/utils/fullscreen.js +72 -0
- package/utils/index.js +156 -57
- package/Player.js +0 -945
- package/control/AudioTracksMenuButton.jsx +0 -80
- package/control/ControlBar.js +0 -303
- package/control/ControlBar.jsx +0 -264
- package/control/CurrentTimeDisplay.js +0 -34
- package/control/CurrentTimeDisplay.jsx +0 -35
- package/control/DurationDisplay.jsx +0 -48
- package/control/ForwardBackwardControl.js +0 -76
- package/control/ForwardBackwardControl.jsx +0 -79
- package/control/FullscreenToggle.jsx +0 -83
- package/control/MarkInControl.jsx +0 -109
- package/control/MarkOutControl.jsx +0 -131
- package/control/MarkerBar.jsx +0 -107
- package/control/MarkingControl.js +0 -82
- package/control/MarkingControl.jsx +0 -143
- package/control/MarkingPreview.js +0 -49
- package/control/MarkingPreview.jsx +0 -60
- package/control/PlayBackRateControl.jsx +0 -106
- package/control/PlayProgressBar.jsx +0 -92
- package/control/PlayToggle.js +0 -56
- package/control/PlayToggle.jsx +0 -57
- package/control/PointersBar.jsx +0 -286
- package/control/ProgressControl.js +0 -127
- package/control/ProgressControl.jsx +0 -155
- package/control/SeekBar.jsx +0 -229
- package/control/SettingsMenuButton.js +0 -63
- package/control/SettingsMenuButton.jsx +0 -69
- package/control/Slider.jsx +0 -243
- package/control/Timeline.jsx +0 -131
- package/control/VolumeBar.jsx +0 -174
- package/control/VolumeLevel.jsx +0 -66
- package/control/VolumneMenuButton.jsx +0 -111
- package/header/Header.jsx +0 -479
- package/media/AudioMeter.jsx +0 -411
- package/media/SDOutline.jsx +0 -90
- package/media/Video.js +0 -684
- package/media/Video.jsx +0 -714
- package/playlist/Playlist.js +0 -67
- package/playlist/Playlist.jsx +0 -91
- package/playlist/index.js +0 -13
- package/shortcuts/Shortcut.js +0 -662
- package/utils/Menu.jsx +0 -105
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports["default"] = void 0;
|
|
8
|
+
var _propTypes = require("prop-types");
|
|
9
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
10
|
+
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
11
|
+
var _templateObject;
|
|
12
|
+
/*global webkitAudioContext*/
|
|
13
|
+
/*eslint no-undef: ["error", { "typeof": true }] */
|
|
14
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
15
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
16
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
|
|
17
|
+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
18
|
+
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, _toPropertyKey(descriptor.key), descriptor); } }
|
|
19
|
+
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
|
20
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
21
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
22
|
+
function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
|
|
23
|
+
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
|
|
24
|
+
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
25
|
+
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
|
|
26
|
+
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
|
|
27
|
+
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
|
|
28
|
+
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
|
29
|
+
function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
|
|
30
|
+
var propTypes = {
|
|
31
|
+
audioSrc: _propTypes.PropTypes.string,
|
|
32
|
+
currentZoom: _propTypes.PropTypes.number
|
|
33
|
+
};
|
|
34
|
+
var defaultProps = {
|
|
35
|
+
audioSrc: null,
|
|
36
|
+
currentZoom: 1
|
|
37
|
+
};
|
|
38
|
+
var AudioWaveformBlock = _styledComponents["default"].div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n position: absolute;\n width: 100%;\n height: 100%;\n left: 0;\n right: 0;\n canvas {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n background: #000;\n }\n"])));
|
|
39
|
+
var AudioWaveform = exports["default"] = /*#__PURE__*/function (_Component) {
|
|
40
|
+
_inherits(AudioWaveform, _Component);
|
|
41
|
+
function AudioWaveform(props, context) {
|
|
42
|
+
var _this;
|
|
43
|
+
_classCallCheck(this, AudioWaveform);
|
|
44
|
+
_this = _callSuper(this, AudioWaveform, [props, context]);
|
|
45
|
+
_this.state = {
|
|
46
|
+
buffer: null
|
|
47
|
+
};
|
|
48
|
+
_this.getWaveform = _this.getWaveform.bind(_assertThisInitialized(_this));
|
|
49
|
+
return _this;
|
|
50
|
+
}
|
|
51
|
+
_createClass(AudioWaveform, [{
|
|
52
|
+
key: "getWaveform",
|
|
53
|
+
value: function getWaveform() {
|
|
54
|
+
var _this2 = this;
|
|
55
|
+
var audioSrc = this.props.audioSrc;
|
|
56
|
+
var audioBlockWidth = this.canvasBlock.parentElement.offsetWidth;
|
|
57
|
+
var audioBlockHeight = this.canvasBlock.parentElement.offsetHeight;
|
|
58
|
+
this.canvasBlock.width = audioBlockWidth;
|
|
59
|
+
this.canvasBlock.height = audioBlockHeight;
|
|
60
|
+
var context;
|
|
61
|
+
if (typeof AudioContext !== 'undefined') {
|
|
62
|
+
context = new AudioContext();
|
|
63
|
+
} else if (typeof webkitAudioContext !== 'undefined') {
|
|
64
|
+
context = new webkitAudioContext();
|
|
65
|
+
}
|
|
66
|
+
var request = new XMLHttpRequest();
|
|
67
|
+
request.open('GET', audioSrc, true);
|
|
68
|
+
request.responseType = 'arraybuffer';
|
|
69
|
+
request.onload = function () {
|
|
70
|
+
context.decodeAudioData(request.response, function (buffer) {
|
|
71
|
+
var bufferData = buffer.getChannelData(0);
|
|
72
|
+
_this2.setState({
|
|
73
|
+
buffer: bufferData
|
|
74
|
+
});
|
|
75
|
+
_this2.generateWaveform();
|
|
76
|
+
});
|
|
77
|
+
};
|
|
78
|
+
request.send();
|
|
79
|
+
}
|
|
80
|
+
}, {
|
|
81
|
+
key: "generateWaveform",
|
|
82
|
+
value: function generateWaveform() {
|
|
83
|
+
var currentZoom = this.props.currentZoom;
|
|
84
|
+
var buffer = this.state.buffer;
|
|
85
|
+
if (buffer.length) {
|
|
86
|
+
var parentWidth = this.canvasBlock.parentElement.offsetWidth;
|
|
87
|
+
this.canvasBlock.width = parentWidth * currentZoom;
|
|
88
|
+
var width = this.canvasBlock.width;
|
|
89
|
+
var height = this.canvasBlock.height;
|
|
90
|
+
var ctx = this.canvasBlock.getContext('2d');
|
|
91
|
+
var step = Math.ceil(buffer.length / width);
|
|
92
|
+
var amp = 100;
|
|
93
|
+
ctx.lineWidth = 1;
|
|
94
|
+
ctx.beginPath();
|
|
95
|
+
ctx.moveTo(0, height / 2 + buffer[0]);
|
|
96
|
+
for (var i = 0; i < width; i++) {
|
|
97
|
+
ctx.lineTo(i, height / 2 + buffer[step * i] * amp);
|
|
98
|
+
}
|
|
99
|
+
ctx.closePath();
|
|
100
|
+
ctx.strokeStyle = '#ffffff12';
|
|
101
|
+
ctx.stroke();
|
|
102
|
+
ctx.fillStyle = '#ffffff12';
|
|
103
|
+
ctx.fill();
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}, {
|
|
107
|
+
key: "render",
|
|
108
|
+
value: function render() {
|
|
109
|
+
var _this3 = this;
|
|
110
|
+
return /*#__PURE__*/_react["default"].createElement(AudioWaveformBlock, {
|
|
111
|
+
ref: function ref(c) {
|
|
112
|
+
_this3.waveformBlock = c;
|
|
113
|
+
}
|
|
114
|
+
}, /*#__PURE__*/_react["default"].createElement("canvas", {
|
|
115
|
+
id: "visualisation",
|
|
116
|
+
ref: function ref(c) {
|
|
117
|
+
_this3.canvasBlock = c;
|
|
118
|
+
}
|
|
119
|
+
}));
|
|
120
|
+
}
|
|
121
|
+
}]);
|
|
122
|
+
return AudioWaveform;
|
|
123
|
+
}(_react.Component);
|
|
124
|
+
AudioWaveform.propTypes = propTypes;
|
|
125
|
+
AudioWaveform.defaultProps = defaultProps;
|
|
126
|
+
AudioWaveform.displayName = 'AudioWaveform';
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = LoadProgressBar;
|
|
7
|
+
var _propTypes = require("prop-types");
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
10
|
+
var propTypes = {
|
|
11
|
+
duration: _propTypes.PropTypes.number,
|
|
12
|
+
buffered: _propTypes.PropTypes.instanceOf(Object)
|
|
13
|
+
};
|
|
14
|
+
var defaultProps = {
|
|
15
|
+
duration: 0,
|
|
16
|
+
buffered: {}
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
// Shows load progress
|
|
20
|
+
function LoadProgressBar(_ref) {
|
|
21
|
+
var buffered = _ref.buffered,
|
|
22
|
+
duration = _ref.duration;
|
|
23
|
+
if (!buffered || !buffered.length) {
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
var bufferedEnd = buffered.end(buffered.length - 1);
|
|
27
|
+
var style = {};
|
|
28
|
+
if (bufferedEnd > duration) {
|
|
29
|
+
bufferedEnd = duration;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
// get the percent width of a time compared to the total end
|
|
33
|
+
function percentify(time, end) {
|
|
34
|
+
var percent = time / end || 0; // no NaN
|
|
35
|
+
return "".concat((percent >= 1 ? 1 : percent) * 100, "%");
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// the width of the progress bar
|
|
39
|
+
style.width = percentify(bufferedEnd, duration);
|
|
40
|
+
var parts = [];
|
|
41
|
+
|
|
42
|
+
// add child elements to represent the individual buffered time ranges
|
|
43
|
+
for (var i = 0; i < buffered.length; i++) {
|
|
44
|
+
var start = buffered.start(i);
|
|
45
|
+
var end = buffered.end(i);
|
|
46
|
+
// set the percent based on the width of the progress bar (bufferedEnd)
|
|
47
|
+
var part = /*#__PURE__*/_react["default"].createElement("div", {
|
|
48
|
+
style: {
|
|
49
|
+
left: percentify(start, bufferedEnd),
|
|
50
|
+
width: percentify(end - start, bufferedEnd)
|
|
51
|
+
},
|
|
52
|
+
key: "part-".concat(i)
|
|
53
|
+
});
|
|
54
|
+
parts.push(part);
|
|
55
|
+
}
|
|
56
|
+
if (parts.length === 0) {
|
|
57
|
+
parts = null;
|
|
58
|
+
}
|
|
59
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
60
|
+
style: style
|
|
61
|
+
}, /*#__PURE__*/_react["default"].createElement("span", {
|
|
62
|
+
className: "video-react-control-text"
|
|
63
|
+
}, /*#__PURE__*/_react["default"].createElement("span", null, "Loaded"), ": 0%"), parts);
|
|
64
|
+
}
|
|
65
|
+
LoadProgressBar.propTypes = propTypes;
|
|
66
|
+
LoadProgressBar.defaultProps = defaultProps;
|
|
67
|
+
LoadProgressBar.displayName = 'LoadProgressBar';
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = void 0;
|
|
7
|
+
var _propTypes = require("prop-types");
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
var _utils = require("../../utils");
|
|
10
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
11
|
+
var propTypes = {
|
|
12
|
+
duration: _propTypes.PropTypes.number,
|
|
13
|
+
mouseTime: _propTypes.PropTypes.instanceOf(Object)
|
|
14
|
+
};
|
|
15
|
+
var defaultProps = {
|
|
16
|
+
duration: 0,
|
|
17
|
+
mouseTime: {}
|
|
18
|
+
};
|
|
19
|
+
function MouseTimeDisplay(_ref) {
|
|
20
|
+
var duration = _ref.duration,
|
|
21
|
+
mouseTime = _ref.mouseTime;
|
|
22
|
+
if (!mouseTime.time) {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
var time = (0, _utils.formatTime)(mouseTime.time, duration);
|
|
26
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
27
|
+
style: {
|
|
28
|
+
left: "".concat(mouseTime.position, "px")
|
|
29
|
+
},
|
|
30
|
+
"data-current-time": time
|
|
31
|
+
}, time);
|
|
32
|
+
}
|
|
33
|
+
MouseTimeDisplay.propTypes = propTypes;
|
|
34
|
+
MouseTimeDisplay.defaultProps = defaultProps;
|
|
35
|
+
MouseTimeDisplay.displayName = 'MouseTimeDisplay';
|
|
36
|
+
var _default = exports["default"] = MouseTimeDisplay;
|
|
@@ -7,8 +7,8 @@ exports["default"] = PlayProgressBar;
|
|
|
7
7
|
var _propTypes = require("prop-types");
|
|
8
8
|
var _react = _interopRequireDefault(require("react"));
|
|
9
9
|
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
10
|
-
var _utils = require("
|
|
11
|
-
var _colors = _interopRequireDefault(require("
|
|
10
|
+
var _utils = require("../../utils");
|
|
11
|
+
var _colors = _interopRequireDefault(require("../../colors"));
|
|
12
12
|
var _templateObject;
|
|
13
13
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
14
14
|
function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
|
|
@@ -25,7 +25,7 @@ var defaultProps = {
|
|
|
25
25
|
playerType: 'default',
|
|
26
26
|
controlType: 'default'
|
|
27
27
|
};
|
|
28
|
-
var ProgressBarBlock = _styledComponents["default"].div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n position: absolute;\n width: 0px;\n height: 100%;\n left: 0;\n top: 0;\n background: ", ";\n &:after {\n content: '';\n width: 12px;\n height: 12px;\n position: absolute;\n background: ", ";\n border-radius: 100%;\n right: -6px;\n top: -5px;\n box-shadow: 0 0 14px 1px
|
|
28
|
+
var ProgressBarBlock = _styledComponents["default"].div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n position: absolute;\n width: 0px;\n height: 100%;\n left: 0;\n top: 0;\n background: ", ";\n &:after {\n content: '';\n width: 12px;\n height: 12px;\n position: absolute;\n background: ", ";\n border-radius: 100%;\n right: -6px;\n top: -5px;\n box-shadow: 0 0 14px 1px\n ", ";\n }\n &:before {\n content: '';\n width: 2px;\n height: 46px;\n position: absolute;\n background: ", ";\n right: -1px;\n top: 4px;\n display: ", ";\n }\n"])), function (props) {
|
|
29
29
|
return _colors["default"].common.video[props.assetType].base;
|
|
30
30
|
}, function (props) {
|
|
31
31
|
return _colors["default"].common.video[props.assetType].base;
|
|
@@ -44,7 +44,7 @@ function PlayProgressBar(_ref) {
|
|
|
44
44
|
playerType = _ref.playerType,
|
|
45
45
|
assetType = _ref.assetType,
|
|
46
46
|
controlType = _ref.controlType,
|
|
47
|
-
isFullscreen = _ref.isFullscreen;
|
|
47
|
+
isFullscreen = _ref.player.isFullscreen;
|
|
48
48
|
return /*#__PURE__*/_react["default"].createElement(ProgressBarBlock, {
|
|
49
49
|
"data-current-time": (0, _utils.formatTime)(currentTime, duration),
|
|
50
50
|
style: {
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports["default"] = void 0;
|
|
8
|
+
var _propTypes = require("prop-types");
|
|
9
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
10
|
+
var _reactDom = require("react-dom");
|
|
11
|
+
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
12
|
+
var Dom = _interopRequireWildcard(require("../../utils/dom"));
|
|
13
|
+
var _SeekBar = _interopRequireDefault(require("./SeekBar"));
|
|
14
|
+
var _PointersBar = _interopRequireDefault(require("../PointersBar"));
|
|
15
|
+
var _colors = _interopRequireDefault(require("../../colors"));
|
|
16
|
+
var _player = _interopRequireDefault(require("../../reducers/player"));
|
|
17
|
+
var _templateObject, _templateObject2, _templateObject3;
|
|
18
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
19
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
20
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
|
|
21
|
+
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
22
|
+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
23
|
+
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, _toPropertyKey(descriptor.key), descriptor); } }
|
|
24
|
+
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
|
25
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
26
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
27
|
+
function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
|
|
28
|
+
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
|
|
29
|
+
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
30
|
+
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
|
|
31
|
+
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
|
|
32
|
+
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
|
|
33
|
+
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
|
34
|
+
function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
|
|
35
|
+
var propTypes = {
|
|
36
|
+
player: _propTypes.PropTypes.instanceOf(Object),
|
|
37
|
+
controlType: _propTypes.PropTypes.string,
|
|
38
|
+
playerType: _propTypes.PropTypes.oneOf(['dubbing_review', 'clipping_default', 'default', 'tagging', 'qc', 'subtitle', 'snp_edit', 'archive', 'restore', 'clipping', 'storyboard', 'panel']),
|
|
39
|
+
theme: _propTypes.PropTypes.string
|
|
40
|
+
};
|
|
41
|
+
var defaultProps = {};
|
|
42
|
+
var ProgressControlBlock = _styledComponents["default"].div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n width: 100%;\n height: ", ";\n position: relative;\n overflow: ", ";\n padding-top: 0px;\n background: #000000;\n background: ", ";\n display: flex;\n justify-content: center;\n align-items: center;\n transition: all 250ms ease-in-out;\n bottom: ", ";\n\n .tags-block {\n position: relative;\n height: 20px;\n width: 100px;\n font-family: SFUIText-Medium;\n font-size: 10px;\n color: #ffffff;\n text-transform: uppercase;\n border-top: 1px solid #333333;\n border-bottom: 1px solid #333333;\n top: 40px;\n p {\n line-height: 18px;\n padding: 0 10px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n }\n"])), function (props) {
|
|
43
|
+
return props.controlType === 'advanced' && !props.isFullscreen ? '' : '4px';
|
|
44
|
+
}, function (props) {
|
|
45
|
+
return props.controlType === 'advanced' && !props.isFullscreen ? 'none' : 'visible';
|
|
46
|
+
}, _colors["default"].common.base.black, function (props) {
|
|
47
|
+
return props.player === 'panel' && props.active ? '50px' : 'initial';
|
|
48
|
+
});
|
|
49
|
+
var SeekControlBar = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n width: 100%;\n height: 100%;\n position: relative;\n cursor: pointer;\n overflow: hidden;\n z-index: ", ";\n .timeline-content {\n overflow-x: auto;\n white-space: nowrap;\n }\n"])), function (props) {
|
|
50
|
+
return props.controlType === 'advanced' && !props.isFullscreen ? '2' : '1';
|
|
51
|
+
});
|
|
52
|
+
var MarkerTagsBlock = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n min-width: 100px;\n max-width: 100px;\n position: relative;\n height: 60px;\n .empty-block {\n height: calc(100% - 20px);\n }\n .tags-block {\n height: 20px;\n font-family: SFUIText-Medium;\n font-size: 12px;\n color: #ffffff;\n text-transform: uppercase;\n border-top: 1px solid #333333;\n border-bottom: 1px solid #333333;\n p {\n line-height: 18px;\n padding-left: 10px;\n }\n }\n"])));
|
|
53
|
+
var ProgressControl = exports["default"] = /*#__PURE__*/function (_Component) {
|
|
54
|
+
_inherits(ProgressControl, _Component);
|
|
55
|
+
function ProgressControl(props, context) {
|
|
56
|
+
var _this;
|
|
57
|
+
_classCallCheck(this, ProgressControl);
|
|
58
|
+
_this = _callSuper(this, ProgressControl, [props, context]);
|
|
59
|
+
_this.state = {
|
|
60
|
+
mouseTime: {
|
|
61
|
+
time: null,
|
|
62
|
+
position: 0,
|
|
63
|
+
stateZoom: null
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
_this.handleMouseMoveThrottle = _this.handleMouseMove.bind(_assertThisInitialized(_this));
|
|
67
|
+
_this.handleSeekbarZoom = _this.handleSeekbarZoom.bind(_assertThisInitialized(_this));
|
|
68
|
+
return _this;
|
|
69
|
+
}
|
|
70
|
+
_createClass(ProgressControl, [{
|
|
71
|
+
key: "componentDidUpdate",
|
|
72
|
+
value: function componentDidUpdate() {
|
|
73
|
+
var _this$props = this.props,
|
|
74
|
+
_this$props$player = _this$props.player,
|
|
75
|
+
zoom = _this$props$player.zoom,
|
|
76
|
+
readyState = _this$props$player.readyState,
|
|
77
|
+
isFullscreen = _this$props$player.isFullscreen,
|
|
78
|
+
controlType = _this$props.controlType;
|
|
79
|
+
var stateZoom = this.state.stateZoom;
|
|
80
|
+
if (zoom !== stateZoom && readyState === 4 && controlType === 'advanced' && !isFullscreen) {
|
|
81
|
+
this.handleSeekbarZoom();
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}, {
|
|
85
|
+
key: "handleSeekbarZoom",
|
|
86
|
+
value: function handleSeekbarZoom() {
|
|
87
|
+
var zoom = this.props.player.zoom;
|
|
88
|
+
var progressBlock = (0, _reactDom.findDOMNode)(this.progressControlBlock);
|
|
89
|
+
var seekBarBlock = (0, _reactDom.findDOMNode)(this.seekControlBar);
|
|
90
|
+
var currentZoom = parseFloat(zoom.toFixed(1));
|
|
91
|
+
|
|
92
|
+
// To be Rectified
|
|
93
|
+
if (this.seekBar.timeline) {
|
|
94
|
+
this.seekBar.timeline.generateTimeline(currentZoom);
|
|
95
|
+
this.pointersBar.generateZoomWithOfPointersBar(currentZoom);
|
|
96
|
+
// this.seekBar.audioWaveform.getWaveform();
|
|
97
|
+
this.setState({
|
|
98
|
+
stateZoom: zoom
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}, {
|
|
103
|
+
key: "handleMouseMove",
|
|
104
|
+
value: function handleMouseMove(event) {
|
|
105
|
+
if (!event.pageX) {
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
var duration = this.props.player.duration;
|
|
109
|
+
var node = (0, _reactDom.findDOMNode)(this.seekBar);
|
|
110
|
+
var newTime = Dom.getPointerPosition(node, event).x * duration;
|
|
111
|
+
var position = event.pageX - Dom.findElPosition(node).left;
|
|
112
|
+
this.setState({
|
|
113
|
+
mouseTime: {
|
|
114
|
+
time: newTime,
|
|
115
|
+
position: position
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
}, {
|
|
120
|
+
key: "render",
|
|
121
|
+
value: function render() {
|
|
122
|
+
var _this2 = this;
|
|
123
|
+
var _this$props2 = this.props,
|
|
124
|
+
controlType = _this$props2.controlType,
|
|
125
|
+
playerType = _this$props2.playerType,
|
|
126
|
+
_this$props2$player = _this$props2.player,
|
|
127
|
+
userActivity = _this$props2$player.userActivity,
|
|
128
|
+
isFullscreen = _this$props2$player.isFullscreen,
|
|
129
|
+
duration = _this$props2$player.duration,
|
|
130
|
+
markers = _this$props2.markers,
|
|
131
|
+
theme = _this$props2.theme;
|
|
132
|
+
var _this$state = this.state,
|
|
133
|
+
mouseTime = _this$state.mouseTime,
|
|
134
|
+
stateZoom = _this$state.stateZoom;
|
|
135
|
+
return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(ProgressControlBlock, {
|
|
136
|
+
controlType: controlType,
|
|
137
|
+
id: "progress-control-block",
|
|
138
|
+
player: playerType,
|
|
139
|
+
active: userActivity,
|
|
140
|
+
isFullscreen: isFullscreen,
|
|
141
|
+
ref: function ref(c) {
|
|
142
|
+
_this2.progressControlBlock = c;
|
|
143
|
+
}
|
|
144
|
+
}, controlType === 'advanced' && !isFullscreen && duration ? /*#__PURE__*/_react["default"].createElement("div", {
|
|
145
|
+
style: {
|
|
146
|
+
display: 'flex',
|
|
147
|
+
flexDirection: 'column'
|
|
148
|
+
}
|
|
149
|
+
}, markers && markers.length ? markers.map(function (marker_obj) {
|
|
150
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
151
|
+
className: "tags-block"
|
|
152
|
+
}, /*#__PURE__*/_react["default"].createElement("p", {
|
|
153
|
+
className: "pointer-wrapper"
|
|
154
|
+
}, marker_obj.name));
|
|
155
|
+
}) : /*#__PURE__*/_react["default"].createElement(MarkerTagsBlock, null, /*#__PURE__*/_react["default"].createElement("div", {
|
|
156
|
+
className: "empty-block"
|
|
157
|
+
}))) : null, /*#__PURE__*/_react["default"].createElement(SeekControlBar, {
|
|
158
|
+
ref: function ref(c) {
|
|
159
|
+
_this2.seekControlBar = c;
|
|
160
|
+
},
|
|
161
|
+
id: "seekbar-control-block",
|
|
162
|
+
onMouseMove: this.handleMouseMoveThrottle
|
|
163
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
164
|
+
className: "timeline-content"
|
|
165
|
+
}, /*#__PURE__*/_react["default"].createElement(_SeekBar["default"], _extends({
|
|
166
|
+
mouseTime: mouseTime,
|
|
167
|
+
ref: function ref(c) {
|
|
168
|
+
_this2.seekBar = c;
|
|
169
|
+
},
|
|
170
|
+
zoom: stateZoom && parseFloat(stateZoom.toFixed(1))
|
|
171
|
+
}, this.props)), /*#__PURE__*/_react["default"].createElement(_PointersBar["default"], _extends({
|
|
172
|
+
theme: theme,
|
|
173
|
+
ref: function ref(c) {
|
|
174
|
+
_this2.pointersBar = c;
|
|
175
|
+
},
|
|
176
|
+
zoom: stateZoom && parseFloat(stateZoom.toFixed(1))
|
|
177
|
+
}, this.props)))), controlType === 'advanced' && !isFullscreen ? /*#__PURE__*/_react["default"].createElement(MarkerTagsBlock, null, /*#__PURE__*/_react["default"].createElement("div", {
|
|
178
|
+
className: "empty-block"
|
|
179
|
+
})) : null));
|
|
180
|
+
}
|
|
181
|
+
}]);
|
|
182
|
+
return ProgressControl;
|
|
183
|
+
}(_react.Component);
|
|
184
|
+
ProgressControl.propTypes = propTypes;
|
|
185
|
+
ProgressControl.defaultProps = defaultProps;
|
|
186
|
+
ProgressControl.displayName = 'ProgressControl';
|