@desynova-digital/player 4.0.1 → 4.0.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 (111) hide show
  1. package/Manager.js +99 -0
  2. package/actions/player.js +331 -0
  3. package/actions/video.js +206 -0
  4. package/{utils/colors.js → colors.js} +1 -2
  5. package/{media → components}/AudioMeter.js +96 -109
  6. package/components/BigPlayButton.js +84 -0
  7. package/components/ImageViewer.js +272 -0
  8. package/{control → components}/MarkerBar.js +33 -24
  9. package/{utils → components}/Menu.js +13 -4
  10. package/components/Player.js +706 -0
  11. package/{header/Header.js → components/PlayerHeader.js} +104 -78
  12. package/components/Playlist.js +95 -0
  13. package/{control → components}/PointersBar.js +122 -61
  14. package/components/PosterImage.js +50 -0
  15. package/{media → components}/SDOutline.js +13 -49
  16. package/components/Shortcut.js +821 -0
  17. package/{control → components}/Slider.js +27 -23
  18. package/components/TagsBar.js +81 -0
  19. package/components/Video.js +1280 -0
  20. package/{control → components/control-bar}/AudioTracksMenuButton.js +32 -28
  21. package/components/control-bar/CameraButton.js +75 -0
  22. package/components/control-bar/CommentsButton.js +186 -0
  23. package/components/control-bar/ControlBar.js +266 -0
  24. package/components/control-bar/EditorControlMenuButton.js +317 -0
  25. package/components/control-bar/ForwardControl.js +12 -0
  26. package/components/control-bar/ForwardReplayControl.js +106 -0
  27. package/{control → components/control-bar}/FullscreenToggle.js +26 -21
  28. package/components/control-bar/PlayToggle.js +85 -0
  29. package/components/control-bar/ReplayControl.js +12 -0
  30. package/components/control-bar/SettingsMenuButton.js +41 -0
  31. package/components/control-bar/SubtitleLanguagesMenuButton.js +149 -0
  32. package/components/control-bar/SubtitleMovementMenu.js +140 -0
  33. package/{control/VolumneMenuButton.js → components/control-bar/VolumeMenuButton.js} +26 -27
  34. package/components/control-bar/ZoomMenuButton.js +90 -0
  35. package/{control → components/marking-controls}/MarkInControl.js +32 -25
  36. package/{control → components/marking-controls}/MarkOutControl.js +35 -26
  37. package/components/marking-controls/MarkingAddButton.js +79 -0
  38. package/components/marking-controls/MarkingControl.js +95 -0
  39. package/components/marking-controls/MarkingDeleteButton.js +70 -0
  40. package/{control → components/marking-controls}/MarkingDuration.js +12 -5
  41. package/components/marking-controls/MarkingPreview.js +72 -0
  42. package/components/progress-bar/AudioWaveform.js +126 -0
  43. package/components/progress-bar/LoadProgressBar.js +67 -0
  44. package/components/progress-bar/MouseTimeDisplay.js +36 -0
  45. package/{control → components/progress-bar}/PlayProgressBar.js +4 -4
  46. package/components/progress-bar/ProgressControl.js +186 -0
  47. package/{control → components/progress-bar}/SeekBar.js +113 -72
  48. package/{control → components/progress-bar}/Timeline.js +43 -32
  49. package/{control/PlayBackRateControl.js → components/settings-menu-control/PlaybackRateControl.js} +44 -30
  50. package/components/settings-menu-control/SafeAreaControl.js +81 -0
  51. package/components/settings-menu-control/SettingsMenu.js +56 -0
  52. package/components/settings-menu-control/SubtitleControl.js +1 -0
  53. package/components/time-controls/CurrentTimeDisplay.js +83 -0
  54. package/{control → components/time-controls}/DurationDisplay.js +8 -15
  55. package/components/time-controls/TimeDivider.js +25 -0
  56. package/{control → components/volume-control}/VolumeBar.js +62 -80
  57. package/components/volume-control/VolumeControl.js +19 -0
  58. package/{control → components/volume-control}/VolumeLevel.js +2 -3
  59. package/components/zoom-control/ZoomBar.js +155 -0
  60. package/components/zoom-control/ZoomLevel.js +55 -0
  61. package/index.js +198 -1
  62. package/package.json +5 -8
  63. package/reducers/index.js +19 -0
  64. package/reducers/operation.js +35 -0
  65. package/reducers/player.js +222 -0
  66. package/utils/browser.js +30 -0
  67. package/utils/dom.js +1 -2
  68. package/utils/fullscreen.js +72 -0
  69. package/utils/index.js +156 -57
  70. package/Player.js +0 -945
  71. package/control/AudioTracksMenuButton.jsx +0 -80
  72. package/control/ControlBar.js +0 -303
  73. package/control/ControlBar.jsx +0 -264
  74. package/control/CurrentTimeDisplay.js +0 -34
  75. package/control/CurrentTimeDisplay.jsx +0 -35
  76. package/control/DurationDisplay.jsx +0 -48
  77. package/control/ForwardBackwardControl.js +0 -76
  78. package/control/ForwardBackwardControl.jsx +0 -79
  79. package/control/FullscreenToggle.jsx +0 -83
  80. package/control/MarkInControl.jsx +0 -109
  81. package/control/MarkOutControl.jsx +0 -131
  82. package/control/MarkerBar.jsx +0 -107
  83. package/control/MarkingControl.js +0 -82
  84. package/control/MarkingControl.jsx +0 -143
  85. package/control/MarkingPreview.js +0 -49
  86. package/control/MarkingPreview.jsx +0 -60
  87. package/control/PlayBackRateControl.jsx +0 -106
  88. package/control/PlayProgressBar.jsx +0 -92
  89. package/control/PlayToggle.js +0 -56
  90. package/control/PlayToggle.jsx +0 -57
  91. package/control/PointersBar.jsx +0 -286
  92. package/control/ProgressControl.js +0 -127
  93. package/control/ProgressControl.jsx +0 -155
  94. package/control/SeekBar.jsx +0 -229
  95. package/control/SettingsMenuButton.js +0 -63
  96. package/control/SettingsMenuButton.jsx +0 -69
  97. package/control/Slider.jsx +0 -243
  98. package/control/Timeline.jsx +0 -131
  99. package/control/VolumeBar.jsx +0 -174
  100. package/control/VolumeLevel.jsx +0 -66
  101. package/control/VolumneMenuButton.jsx +0 -111
  102. package/header/Header.jsx +0 -479
  103. package/media/AudioMeter.jsx +0 -411
  104. package/media/SDOutline.jsx +0 -90
  105. package/media/Video.js +0 -684
  106. package/media/Video.jsx +0 -714
  107. package/playlist/Playlist.js +0 -67
  108. package/playlist/Playlist.jsx +0 -91
  109. package/playlist/index.js +0 -13
  110. package/shortcuts/Shortcut.js +0 -662
  111. package/utils/Menu.jsx +0 -105
@@ -1,82 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports["default"] = MarkingControl;
7
- var _react = _interopRequireDefault(require("react"));
8
- var _styledComponents = _interopRequireDefault(require("styled-components"));
9
- var _propTypes = require("prop-types");
10
- var _MarkInControl = _interopRequireDefault(require("./MarkInControl"));
11
- var _MarkOutControl = _interopRequireDefault(require("./MarkOutControl"));
12
- var _MarkingPreview = _interopRequireDefault(require("./MarkingPreview"));
13
- var _MarkingDuration = _interopRequireDefault(require("./MarkingDuration"));
14
- var _templateObject;
15
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
16
- function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
17
- var propTypes = {
18
- frameRate: _propTypes.PropTypes.number,
19
- player: _propTypes.PropTypes.instanceOf(Object),
20
- actions: _propTypes.PropTypes.instanceOf(Object),
21
- markers: _propTypes.PropTypes.instanceOf(Object),
22
- controlType: _propTypes.PropTypes.string,
23
- playerType: _propTypes.PropTypes.oneOf(['dubbing_review', 'clipping_default', 'default', 'tagging', 'qc', 'subtitle', 'snp_edit', 'archive', 'restore', 'clipping', 'storyboard', 'panel']),
24
- onAddMarker: _propTypes.PropTypes.func,
25
- onMarkerSelect: _propTypes.PropTypes.func,
26
- onDeleteMarker: _propTypes.PropTypes.func,
27
- initialTime: _propTypes.PropTypes.number,
28
- allowMarkerOverlap: _propTypes.PropTypes.bool
29
- };
30
- var defaultProps = {
31
- frameRate: 0,
32
- player: {},
33
- actions: {}
34
- };
35
- var MarkingBlock = _styledComponents["default"].div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n min-width: 300px;\n margin: 0 15px;\n display: flex;\n justify-content: flex-start;\n align-items: center;\n"])));
36
- function MarkingControl(_ref) {
37
- var player = _ref.player,
38
- frameRate = _ref.frameRate,
39
- initialTime = _ref.initialTime,
40
- actionClick = _ref.actionClick,
41
- onAddMarker = _ref.onAddMarker,
42
- onMarkerSelect = _ref.onMarkerSelect,
43
- onDeleteMarker = _ref.onDeleteMarker,
44
- markers = _ref.markers,
45
- controlType = _ref.controlType,
46
- playerType = _ref.playerType,
47
- allowMarkerOverlap = _ref.allowMarkerOverlap,
48
- playerReadOnlyMode = _ref.playerReadOnlyMode,
49
- _ref$disablePlayerAct = _ref.disablePlayerActions,
50
- disablePlayerActions = _ref$disablePlayerAct === void 0 ? [] : _ref$disablePlayerAct,
51
- playerSelectedMarker = _ref.playerSelectedMarker,
52
- currentTime = _ref.currentTime;
53
- return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, playerType !== 'panel' && playerType !== 'default' && playerType !== 'clipping_default' ? /*#__PURE__*/_react["default"].createElement(MarkingBlock, null, (!(playerSelectedMarker.leftMarker > -1) || !(playerSelectedMarker.rightMarker > -1)) && playerType !== 'panel' && playerType !== 'default' && playerType !== 'clipping_default' && !playerReadOnlyMode && !disablePlayerActions.includes('marking_controls') ? /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_MarkInControl["default"], {
54
- leftMarker: playerSelectedMarker.leftMarker,
55
- currentTime: currentTime,
56
- actionClick: actionClick,
57
- markers: markers,
58
- allowMarkerOverlap: allowMarkerOverlap,
59
- onAddMarker: onAddMarker
60
- }), /*#__PURE__*/_react["default"].createElement(_MarkOutControl["default"], {
61
- leftMarker: playerSelectedMarker.leftMarker,
62
- currentTime: currentTime,
63
- rightMarker: playerSelectedMarker.rightMarker,
64
- actionClick: actionClick,
65
- markers: markers,
66
- controlType: controlType,
67
- onMarkerSelect: onMarkerSelect,
68
- allowMarkerOverlap: allowMarkerOverlap,
69
- onAddMarker: onAddMarker
70
- })) : null, playerSelectedMarker.leftMarker > -1 || playerSelectedMarker.rightMarker > -1 ? /*#__PURE__*/_react["default"].createElement(_MarkingDuration["default"], {
71
- leftMarker: playerSelectedMarker.leftMarker,
72
- rightMarker: playerSelectedMarker.rightMarker,
73
- frameRate: frameRate,
74
- initialTime: initialTime
75
- }) : null, playerSelectedMarker.leftMarker > -1 && playerSelectedMarker.rightMarker > -1 ? /*#__PURE__*/_react["default"].createElement(_MarkingPreview["default"], {
76
- actionClick: actionClick,
77
- leftMarker: playerSelectedMarker.leftMarker
78
- }) : null) : null);
79
- }
80
- MarkingControl.propTypes = propTypes;
81
- MarkingControl.defaultProps = defaultProps;
82
- MarkingControl.displayName = 'MarkingControl';
@@ -1,143 +0,0 @@
1
- import React from 'react';
2
- import styled from 'styled-components';
3
- import { PropTypes } from 'prop-types';
4
-
5
- import MarkInControl from './MarkInControl';
6
- import MarkOutControl from './MarkOutControl';
7
- // import MarkingAddButton from './MarkingAddButton';
8
- // import MarkingDeleteButton from './MarkingDeleteButton';
9
- import MarkingPreviewButton from './MarkingPreview';
10
- import MarkingDuration from './MarkingDuration';
11
-
12
- const propTypes = {
13
- frameRate: PropTypes.number,
14
- player: PropTypes.instanceOf(Object),
15
- actions: PropTypes.instanceOf(Object),
16
- markers: PropTypes.instanceOf(Object),
17
- controlType: PropTypes.string,
18
- playerType: PropTypes.oneOf([
19
- 'dubbing_review',
20
- 'clipping_default',
21
- 'default',
22
- 'tagging',
23
- 'qc',
24
- 'subtitle',
25
- 'snp_edit',
26
- 'archive',
27
- 'restore',
28
- 'clipping',
29
- 'storyboard',
30
- 'panel'
31
- ]),
32
- onAddMarker: PropTypes.func,
33
- onMarkerSelect: PropTypes.func,
34
- onDeleteMarker: PropTypes.func,
35
- initialTime: PropTypes.number,
36
- allowMarkerOverlap: PropTypes.bool
37
- };
38
-
39
- const defaultProps = {
40
- frameRate: 0,
41
- player: {},
42
- actions: {}
43
- };
44
-
45
- const MarkingBlock = styled.div`
46
- min-width: 300px;
47
- margin: 0 15px;
48
- display: flex;
49
- justify-content: flex-start;
50
- align-items: center;
51
- `;
52
-
53
- export default function MarkingControl({
54
- player,
55
- frameRate,
56
- initialTime,
57
- actionClick,
58
- onAddMarker,
59
- onMarkerSelect,
60
- onDeleteMarker,
61
- markers,
62
- controlType,
63
- playerType,
64
- allowMarkerOverlap,
65
- playerReadOnlyMode,
66
- disablePlayerActions = [],
67
- playerSelectedMarker,
68
- currentTime
69
- }) {
70
- return (
71
- <React.Fragment>
72
- {playerType !== 'panel' && playerType !== 'default' && playerType !== 'clipping_default' ? (
73
- <MarkingBlock>
74
- {(!(playerSelectedMarker.leftMarker > -1) || !(playerSelectedMarker.rightMarker > -1)) &&
75
- playerType !== 'panel' &&
76
- playerType !== 'default' &&
77
- playerType !== 'clipping_default' &&
78
- !playerReadOnlyMode &&
79
- !disablePlayerActions.includes('marking_controls') ? (
80
- <React.Fragment>
81
- <MarkInControl
82
- leftMarker={playerSelectedMarker.leftMarker}
83
- currentTime={currentTime}
84
- actionClick={actionClick}
85
- markers={markers}
86
- allowMarkerOverlap={allowMarkerOverlap}
87
- onAddMarker={onAddMarker}
88
- />
89
- <MarkOutControl
90
- leftMarker={playerSelectedMarker.leftMarker}
91
- currentTime={currentTime}
92
- rightMarker={playerSelectedMarker.rightMarker}
93
- actionClick={actionClick}
94
- markers={markers}
95
- controlType={controlType}
96
- onMarkerSelect={onMarkerSelect}
97
- allowMarkerOverlap={allowMarkerOverlap}
98
- onAddMarker={onAddMarker}
99
- />
100
- </React.Fragment>
101
- ) : null}
102
- {playerSelectedMarker.leftMarker > -1 || playerSelectedMarker.rightMarker > -1 ? (
103
- <MarkingDuration
104
- leftMarker={playerSelectedMarker.leftMarker}
105
- rightMarker={playerSelectedMarker.rightMarker}
106
- frameRate={frameRate}
107
- initialTime={initialTime}
108
- />
109
- ) : null}
110
- {/* //Commented for CN-632.
111
- {player.leftMarker > -1 && player.rightMarker > -1 ? (
112
- <React.Fragment>
113
- {player.markerType === 'create' &&
114
- controlType === 'advanced' &&
115
- player.markerCreate ? (
116
- <MarkingAddButton
117
- leftMarker={player.leftMarker}
118
- rightMarker={player.rightMarker}
119
- onAddMarker={onAddMarker}
120
- actions={actions}
121
- />
122
- ) : null}
123
- </React.Fragment>
124
- ) : null} */}
125
- {playerSelectedMarker.leftMarker > -1 && playerSelectedMarker.rightMarker > -1 ? (
126
- <MarkingPreviewButton actionClick={actionClick} leftMarker={playerSelectedMarker.leftMarker} />
127
- ) : null}
128
- {/* {(playerSelectedMarker.leftMarker > -1 || playerSelectedMarker.rightMarker > -1) &&
129
- playerSelectedMarker.markerType === 'create' &&
130
- playerSelectedMarker.markerCreate &&
131
- !playerReadOnlyMode &&
132
- !disablePlayerActions.includes('marking_controls') ? (
133
- <MarkingDeleteButton actions={actions} onDeleteMarker={onDeleteMarker} />
134
- ) : null} */}
135
- </MarkingBlock>
136
- ) : null}
137
- </React.Fragment>
138
- );
139
- }
140
-
141
- MarkingControl.propTypes = propTypes;
142
- MarkingControl.defaultProps = defaultProps;
143
- MarkingControl.displayName = 'MarkingControl';
@@ -1,49 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports["default"] = void 0;
7
- var _react = _interopRequireDefault(require("react"));
8
- var _styledComponents = _interopRequireDefault(require("styled-components"));
9
- var _propTypes = require("prop-types");
10
- var _components = require("@desynova-digital/components");
11
- var _templateObject;
12
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
13
- function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
14
- var propTypes = {
15
- actions: _propTypes.PropTypes.instanceOf(Object),
16
- leftMarker: _propTypes.PropTypes.number
17
- };
18
- var PreviewButton = (0, _styledComponents["default"])(_components.Button)(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n background: transparent;\n border-color: #afb2ba;\n border-width: 1px;\n margin: 0 5px 0 5px;\n &:hover,\n &:focus {\n background: transparent;\n border-color: #afb2ba;\n }\n\n ", " {\n svg path {\n fill: #afb2ba;\n }\n }\n"])), _components.Icon.Element);
19
- var MarkingPreview = function MarkingPreview(_ref) {
20
- var actionClick = _ref.actionClick,
21
- leftMarker = _ref.leftMarker;
22
- var handleClick = function handleClick() {
23
- actionClick({
24
- action: 'seek',
25
- value: parseFloat(leftMarker)
26
- });
27
- actionClick({
28
- action: 'play'
29
- });
30
- actionClick({
31
- action: 'handle_video_preview',
32
- value: true
33
- });
34
- };
35
- return /*#__PURE__*/_react["default"].createElement(PreviewButton, {
36
- display: "rounded",
37
- appearance: "cta",
38
- icon: "play",
39
- iconWidth: 6,
40
- iconHeight: 8,
41
- width: 20,
42
- height: 20,
43
- onClick: handleClick
44
- });
45
- };
46
- var _default = MarkingPreview;
47
- exports["default"] = _default;
48
- MarkingPreview.propTypes = propTypes;
49
- MarkingPreview.displayName = 'MarkingPreview';
@@ -1,60 +0,0 @@
1
- import React from 'react';
2
- import styled from 'styled-components';
3
- import { PropTypes } from 'prop-types';
4
- import { Button, Icon } from '@desynova-digital/components';
5
-
6
- const propTypes = {
7
- actions: PropTypes.instanceOf(Object),
8
- leftMarker: PropTypes.number
9
- };
10
-
11
- const PreviewButton = styled(Button)`
12
- background: transparent;
13
- border-color: #afb2ba;
14
- border-width: 1px;
15
- margin: 0 5px 0 5px;
16
- &:hover,
17
- &:focus {
18
- background: transparent;
19
- border-color: #afb2ba;
20
- }
21
-
22
- ${Icon.Element} {
23
- svg path {
24
- fill: #afb2ba;
25
- }
26
- }
27
- `;
28
-
29
- const MarkingPreview = ({ actionClick, leftMarker }) => {
30
- const handleClick = () => {
31
- actionClick({
32
- action: 'seek',
33
- value: parseFloat(leftMarker)
34
- });
35
- actionClick({
36
- action: 'play'
37
- });
38
- actionClick({
39
- action: 'handle_video_preview',
40
- value: true
41
- });
42
- };
43
-
44
- return (
45
- <PreviewButton
46
- display="rounded"
47
- appearance="cta"
48
- icon="play"
49
- iconWidth={6}
50
- iconHeight={8}
51
- width={20}
52
- height={20}
53
- onClick={handleClick}
54
- />
55
- );
56
- };
57
-
58
- export default MarkingPreview;
59
- MarkingPreview.propTypes = propTypes;
60
- MarkingPreview.displayName = 'MarkingPreview';
@@ -1,106 +0,0 @@
1
- import React, { Component } from 'react';
2
- import styled from 'styled-components';
3
- import { PropTypes } from 'prop-types';
4
- import { Icon } from '@desynova-digital/components';
5
-
6
- const propTypes = {
7
- actions: PropTypes.instanceOf(Object),
8
- player: PropTypes.instanceOf(Object)
9
- };
10
-
11
- const PlaybackRateBlock = styled('div')`
12
- display: block;
13
- background: transparent;
14
- font-family: SFUIText-Medium;
15
- font-size: 12px;
16
- text-transform: uppercase;
17
- align-items: center;
18
- padding: 0 !important;
19
- .playback-block {
20
- display: flex;
21
- justify-content: flex-start;
22
- border-bottom: 1px solid #eeeeee;
23
- p {
24
- margin-left: 10px;
25
- white-space: nowrap;
26
- }
27
- }
28
- .playback-rate-body {
29
- padding: 0 !important;
30
- display: flex;
31
- justify-content: space-between;
32
- .playback-rate {
33
- border-right: 1px solid #eeeeee;
34
- &:last-child {
35
- border: none;
36
- }
37
- &:hover {
38
- background: rgba(0, 206, 198, 0.1);
39
- }
40
- &.active {
41
- pointer-events: none;
42
- color: #00cec6;
43
- }
44
- }
45
- }
46
- `;
47
-
48
- export default class PlaybackRateControl extends Component {
49
- constructor(props) {
50
- super(props);
51
- this.changePlaybackRate = this.changePlaybackRate.bind(this);
52
- }
53
-
54
- changePlaybackRate(playbackRate) {
55
- const { actionClick } = this.props;
56
- actionClick({
57
- action: 'playback_rate_change',
58
- value: playbackRate
59
- });
60
- // actions.changeRate(playbackRate, {
61
- // action: 'fast-forward',
62
- // source: 'shortcut'
63
- // });
64
- }
65
-
66
- render() {
67
- const { playbackRate } = this.props;
68
- return (
69
- <PlaybackRateBlock>
70
- <div className="playback-block">
71
- <Icon name="playback-rate" width={14} height={14} color="#182738" />
72
- <p style={{ color: '#182738' }}>Playback Speed</p>
73
- </div>
74
- <div className="playback-rate-body">
75
- <div
76
- className={playbackRate === 1 ? 'playback-rate active' : 'playback-rate'}
77
- onClick={() => this.changePlaybackRate(1)}
78
- role="presentation">
79
- 1x
80
- </div>
81
- <div
82
- className={playbackRate === 1.5 ? 'playback-rate active' : 'playback-rate'}
83
- onClick={() => this.changePlaybackRate(1.5)}
84
- role="presentation">
85
- 1.5x
86
- </div>
87
- <div
88
- className={playbackRate === 2 ? 'playback-rate active' : 'playback-rate'}
89
- onClick={() => this.changePlaybackRate(2)}
90
- role="presentation">
91
- 2x
92
- </div>
93
- <div
94
- className={playbackRate === 4 ? 'playback-rate active' : 'playback-rate'}
95
- onClick={() => this.changePlaybackRate(4)}
96
- role="presentation">
97
- 4x
98
- </div>
99
- </div>
100
- </PlaybackRateBlock>
101
- );
102
- }
103
- }
104
-
105
- PlaybackRateControl.propTypes = propTypes;
106
- PlaybackRateControl.displayName = 'PlaybackRateControl';
@@ -1,92 +0,0 @@
1
- import { PropTypes } from 'prop-types';
2
- import React from 'react';
3
- import styled from 'styled-components';
4
- import { formatTime } from '../utils';
5
- import colors from '../utils/colors';
6
-
7
- const propTypes = {
8
- currentTime: PropTypes.number,
9
- duration: PropTypes.number,
10
- percentage: PropTypes.string,
11
- player: PropTypes.instanceOf(Object),
12
- playerType: PropTypes.oneOf([
13
- 'dubbing_review',
14
- 'clipping_default',
15
- 'default',
16
- 'tagging',
17
- 'qc',
18
- 'subtitle',
19
- 'snp_edit',
20
- 'archive',
21
- 'restore',
22
- 'clipping',
23
- 'storyboard',
24
- 'panel'
25
- ]),
26
- assetType: PropTypes.oneOf(['fc', 'rc']),
27
- controlType: PropTypes.oneOf(['default', 'advanced'])
28
- };
29
-
30
- const defaultProps = {
31
- playerType: 'default',
32
- controlType: 'default'
33
- };
34
-
35
- const ProgressBarBlock = styled.div`
36
- position: absolute;
37
- width: 0px;
38
- height: 100%;
39
- left: 0;
40
- top: 0;
41
- background: ${(props) => colors.common.video[props.assetType].base};
42
- &:after {
43
- content: '';
44
- width: 12px;
45
- height: 12px;
46
- position: absolute;
47
- background: ${(props) => colors.common.video[props.assetType].base};
48
- border-radius: 100%;
49
- right: -6px;
50
- top: -5px;
51
- box-shadow: 0 0 14px 1px ${(props) => colors.common.video[props.assetType].base};
52
- }
53
- &:before {
54
- content: '';
55
- width: 2px;
56
- height: 46px;
57
- position: absolute;
58
- background: ${(props) => colors.common.video[props.assetType].base};
59
- right: -1px;
60
- top: 4px;
61
- display: ${(props) => {
62
- return props.controlType === 'advanced' && !props.isFullscreen ? 'block' : 'none';
63
- }};
64
- }
65
- `;
66
- // Shows play progress
67
- export default function PlayProgressBar({
68
- currentTime,
69
- duration,
70
- percentage,
71
- playerType,
72
- assetType,
73
- controlType,
74
- isFullscreen
75
- }) {
76
- return (
77
- <ProgressBarBlock
78
- data-current-time={formatTime(currentTime, duration)}
79
- style={{
80
- width: percentage
81
- }}
82
- playerType={playerType}
83
- assetType={assetType}
84
- controlType={controlType}
85
- isFullscreen={isFullscreen}
86
- />
87
- );
88
- }
89
-
90
- PlayProgressBar.propTypes = propTypes;
91
- PlayProgressBar.defaultProps = defaultProps;
92
- PlayProgressBar.displayName = 'PlayProgressBar';
@@ -1,56 +0,0 @@
1
- "use strict";
2
-
3
- function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
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 _components = require("@desynova-digital/components");
12
- var _templateObject;
13
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
14
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
15
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
16
- function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
17
- var propTypes = {
18
- actions: _propTypes.PropTypes.instanceOf(Object),
19
- player: _propTypes.PropTypes.instanceOf(Object)
20
- };
21
- var defaultProps = {
22
- actions: {},
23
- player: {}
24
- };
25
- var PlayPauseButton = (0, _styledComponents["default"])(_components.Button)(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n background: transparent;\n border: none;\n margin: 0 10px;\n &:hover,\n &:focus {\n background: transparent;\n }\n"])));
26
- var PlayToggle = function PlayToggle(_ref) {
27
- var paused = _ref.paused,
28
- actionClick = _ref.actionClick;
29
- var handleClick = function handleClick() {
30
- if (paused) {
31
- actionClick({
32
- action: 'play'
33
- });
34
- } else {
35
- actionClick({
36
- action: 'pause'
37
- });
38
- }
39
- };
40
- return /*#__PURE__*/_react["default"].createElement(PlayPauseButton, {
41
- display: "rounded",
42
- appearance: "cta",
43
- icon: paused ? 'play' : 'pause',
44
- iconWidth: paused ? 12 : 25,
45
- iconHeight: paused ? 15 : 25,
46
- width: 20,
47
- height: 20,
48
- tabIndex: "0",
49
- onClick: handleClick
50
- });
51
- };
52
- var _default = PlayToggle;
53
- exports["default"] = _default;
54
- PlayToggle.propTypes = propTypes;
55
- PlayToggle.defaultProps = defaultProps;
56
- PlayToggle.displayName = 'PlayToggle';
@@ -1,57 +0,0 @@
1
- import { PropTypes } from 'prop-types';
2
- import React, { Component } from 'react';
3
- import styled from 'styled-components';
4
- import { Button } from '@desynova-digital/components';
5
-
6
- const propTypes = {
7
- actions: PropTypes.instanceOf(Object),
8
- player: PropTypes.instanceOf(Object)
9
- };
10
-
11
- const defaultProps = {
12
- actions: {},
13
- player: {}
14
- };
15
-
16
- const PlayPauseButton = styled(Button)`
17
- background: transparent;
18
- border: none;
19
- margin: 0 10px;
20
- &:hover,
21
- &:focus {
22
- background: transparent;
23
- }
24
- `;
25
-
26
- const PlayToggle = ({ paused, actionClick }) => {
27
- const handleClick = () => {
28
- if (paused) {
29
- actionClick({
30
- action: 'play'
31
- });
32
- } else {
33
- actionClick({
34
- action: 'pause'
35
- });
36
- }
37
- };
38
-
39
- return (
40
- <PlayPauseButton
41
- display="rounded"
42
- appearance="cta"
43
- icon={paused ? 'play' : 'pause'}
44
- iconWidth={paused ? 12 : 25}
45
- iconHeight={paused ? 15 : 25}
46
- width={20}
47
- height={20}
48
- tabIndex="0"
49
- onClick={handleClick}
50
- />
51
- );
52
- };
53
-
54
- export default PlayToggle;
55
- PlayToggle.propTypes = propTypes;
56
- PlayToggle.defaultProps = defaultProps;
57
- PlayToggle.displayName = 'PlayToggle';