@atlaskit/media-ui 16.5.0 → 17.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.
Files changed (200) hide show
  1. package/CHANGELOG.md +80 -0
  2. package/dist/cjs/BlockCard/components/Byline.js +4 -2
  3. package/dist/cjs/BlockCard/components/Content.js +6 -2
  4. package/dist/cjs/BlockCard/components/ContentHeader.js +6 -2
  5. package/dist/cjs/BlockCard/components/Icon.js +3 -3
  6. package/dist/cjs/BlockCard/components/Link.js +3 -1
  7. package/dist/cjs/BlockCard/components/Modal.js +13 -21
  8. package/dist/cjs/BlockCard/components/ModalHeader.js +7 -2
  9. package/dist/cjs/BlockCard/components/Name.js +6 -2
  10. package/dist/cjs/BlockCard/views/ErroredView.js +5 -1
  11. package/dist/cjs/BlockCard/views/ForbiddenView.js +5 -2
  12. package/dist/cjs/BlockCard/views/NotFoundView.js +5 -1
  13. package/dist/cjs/BlockCard/views/ResolvedView.js +5 -2
  14. package/dist/cjs/EmbedCard/components/Frame.js +1 -1
  15. package/dist/cjs/MediaInlineCard/ErroredView/index.js +93 -0
  16. package/dist/cjs/MediaInlineCard/Frame/index.js +98 -0
  17. package/dist/cjs/MediaInlineCard/Frame/styled.js +54 -0
  18. package/dist/cjs/MediaInlineCard/Icon.js +30 -0
  19. package/dist/cjs/MediaInlineCard/IconAndTitleLayout/index.js +131 -0
  20. package/dist/cjs/MediaInlineCard/IconAndTitleLayout/styled.js +72 -0
  21. package/dist/cjs/MediaInlineCard/LoadedView/index.js +66 -0
  22. package/dist/cjs/MediaInlineCard/LoadingView/index.js +85 -0
  23. package/dist/cjs/MediaInlineCard/LoadingView/styled.js +19 -0
  24. package/dist/cjs/MediaInlineCard/index.js +29 -0
  25. package/dist/cjs/MediaInlineCard/styled.js +25 -0
  26. package/dist/cjs/classNames.js +52 -0
  27. package/dist/cjs/codeViewer.js +8 -0
  28. package/dist/cjs/customMediaPlayer/analytics/events/screen/customMediaPlayer.js +35 -0
  29. package/dist/cjs/customMediaPlayer/analytics/events/track/playCount.js +35 -0
  30. package/dist/cjs/customMediaPlayer/analytics/events/track/played.js +35 -0
  31. package/dist/cjs/customMediaPlayer/analytics/events/ui/mediaButtonClicked.js +33 -0
  32. package/dist/cjs/customMediaPlayer/analytics/events/ui/playPauseBlanketClicked.js +32 -0
  33. package/dist/cjs/customMediaPlayer/analytics/events/ui/playbackSpeedChanged.js +32 -0
  34. package/dist/cjs/customMediaPlayer/analytics/events/ui/shortcutPressed.js +33 -0
  35. package/dist/cjs/customMediaPlayer/analytics/events/ui/timeRangeNavigated.js +33 -0
  36. package/dist/cjs/customMediaPlayer/analytics/index.js +89 -0
  37. package/dist/cjs/customMediaPlayer/analytics/utils/analytics.js +29 -0
  38. package/dist/cjs/customMediaPlayer/analytics/utils/playbackAttributes.js +40 -0
  39. package/dist/cjs/customMediaPlayer/fullscreen.js +4 -2
  40. package/dist/cjs/customMediaPlayer/icons.js +61 -0
  41. package/dist/cjs/customMediaPlayer/index.js +345 -83
  42. package/dist/cjs/customMediaPlayer/playbackSpeedControls.js +4 -2
  43. package/dist/cjs/customMediaPlayer/timeRange.js +6 -1
  44. package/dist/cjs/customMediaPlayer/types.js +5 -0
  45. package/dist/cjs/ellipsify.js +42 -40
  46. package/dist/cjs/index.js +22 -2
  47. package/dist/cjs/locales.js +17 -0
  48. package/dist/cjs/mediaImage/index.js +8 -4
  49. package/dist/cjs/mediaImage/styled.js +32 -4
  50. package/dist/cjs/messages.js +22 -7
  51. package/dist/cjs/shortcut.js +12 -5
  52. package/dist/cjs/version.json +1 -1
  53. package/dist/es2019/BlockCard/components/Byline.js +4 -2
  54. package/dist/es2019/BlockCard/components/Content.js +3 -1
  55. package/dist/es2019/BlockCard/components/ContentHeader.js +3 -1
  56. package/dist/es2019/BlockCard/components/Icon.js +3 -3
  57. package/dist/es2019/BlockCard/components/Link.js +3 -1
  58. package/dist/es2019/BlockCard/components/Modal.js +30 -19
  59. package/dist/es2019/BlockCard/components/ModalHeader.js +60 -55
  60. package/dist/es2019/BlockCard/components/Name.js +3 -1
  61. package/dist/es2019/BlockCard/views/ErroredView.js +2 -0
  62. package/dist/es2019/BlockCard/views/ForbiddenView.js +3 -1
  63. package/dist/es2019/BlockCard/views/NotFoundView.js +2 -0
  64. package/dist/es2019/BlockCard/views/ResolvedView.js +3 -1
  65. package/dist/es2019/EmbedCard/components/Frame.js +1 -1
  66. package/dist/es2019/MediaInlineCard/ErroredView/index.js +43 -0
  67. package/dist/es2019/MediaInlineCard/Frame/index.js +60 -0
  68. package/dist/es2019/MediaInlineCard/Frame/styled.js +60 -0
  69. package/dist/es2019/MediaInlineCard/Icon.js +23 -0
  70. package/dist/es2019/MediaInlineCard/IconAndTitleLayout/index.js +90 -0
  71. package/dist/es2019/MediaInlineCard/IconAndTitleLayout/styled.js +103 -0
  72. package/dist/es2019/MediaInlineCard/LoadedView/index.js +25 -0
  73. package/dist/es2019/MediaInlineCard/LoadingView/index.js +42 -0
  74. package/dist/es2019/MediaInlineCard/LoadingView/styled.js +6 -0
  75. package/dist/es2019/MediaInlineCard/index.js +3 -0
  76. package/dist/es2019/MediaInlineCard/styled.js +9 -0
  77. package/dist/es2019/classNames.js +8 -3
  78. package/dist/es2019/codeViewer.js +8 -0
  79. package/dist/es2019/customMediaPlayer/analytics/events/screen/customMediaPlayer.js +16 -0
  80. package/dist/es2019/customMediaPlayer/analytics/events/track/playCount.js +16 -0
  81. package/dist/es2019/customMediaPlayer/analytics/events/track/played.js +16 -0
  82. package/dist/es2019/customMediaPlayer/analytics/events/ui/mediaButtonClicked.js +18 -0
  83. package/dist/es2019/customMediaPlayer/analytics/events/ui/playPauseBlanketClicked.js +17 -0
  84. package/dist/es2019/customMediaPlayer/analytics/events/ui/playbackSpeedChanged.js +17 -0
  85. package/dist/es2019/customMediaPlayer/analytics/events/ui/shortcutPressed.js +18 -0
  86. package/dist/es2019/customMediaPlayer/analytics/events/ui/timeRangeNavigated.js +18 -0
  87. package/dist/es2019/customMediaPlayer/analytics/index.js +9 -0
  88. package/dist/es2019/customMediaPlayer/analytics/utils/analytics.js +14 -0
  89. package/dist/es2019/customMediaPlayer/analytics/utils/playbackAttributes.js +31 -0
  90. package/dist/es2019/customMediaPlayer/fullscreen.js +4 -2
  91. package/dist/es2019/customMediaPlayer/icons.js +49 -0
  92. package/dist/es2019/customMediaPlayer/index.js +357 -78
  93. package/dist/es2019/customMediaPlayer/playbackSpeedControls.js +4 -2
  94. package/dist/es2019/customMediaPlayer/timeRange.js +9 -1
  95. package/dist/es2019/customMediaPlayer/types.js +1 -0
  96. package/dist/es2019/ellipsify.js +22 -16
  97. package/dist/es2019/index.js +2 -1
  98. package/dist/es2019/locales.js +3 -0
  99. package/dist/es2019/mediaImage/index.js +8 -4
  100. package/dist/es2019/mediaImage/styled.js +29 -8
  101. package/dist/es2019/messages.js +22 -7
  102. package/dist/es2019/shortcut.js +12 -5
  103. package/dist/es2019/version.json +1 -1
  104. package/dist/esm/BlockCard/components/Byline.js +4 -2
  105. package/dist/esm/BlockCard/components/Content.js +3 -1
  106. package/dist/esm/BlockCard/components/ContentHeader.js +3 -1
  107. package/dist/esm/BlockCard/components/Icon.js +3 -3
  108. package/dist/esm/BlockCard/components/Link.js +3 -1
  109. package/dist/esm/BlockCard/components/Modal.js +31 -22
  110. package/dist/esm/BlockCard/components/ModalHeader.js +6 -2
  111. package/dist/esm/BlockCard/components/Name.js +3 -1
  112. package/dist/esm/BlockCard/views/ErroredView.js +2 -0
  113. package/dist/esm/BlockCard/views/ForbiddenView.js +3 -1
  114. package/dist/esm/BlockCard/views/NotFoundView.js +2 -0
  115. package/dist/esm/BlockCard/views/ResolvedView.js +3 -1
  116. package/dist/esm/EmbedCard/components/Frame.js +1 -1
  117. package/dist/esm/MediaInlineCard/ErroredView/index.js +70 -0
  118. package/dist/esm/MediaInlineCard/Frame/index.js +84 -0
  119. package/dist/esm/MediaInlineCard/Frame/styled.js +39 -0
  120. package/dist/esm/MediaInlineCard/Icon.js +15 -0
  121. package/dist/esm/MediaInlineCard/IconAndTitleLayout/index.js +113 -0
  122. package/dist/esm/MediaInlineCard/IconAndTitleLayout/styled.js +33 -0
  123. package/dist/esm/MediaInlineCard/LoadedView/index.js +50 -0
  124. package/dist/esm/MediaInlineCard/LoadingView/index.js +66 -0
  125. package/dist/esm/MediaInlineCard/LoadingView/styled.js +7 -0
  126. package/dist/esm/MediaInlineCard/index.js +3 -0
  127. package/dist/esm/MediaInlineCard/styled.js +11 -0
  128. package/dist/esm/classNames.js +8 -3
  129. package/dist/esm/codeViewer.js +8 -0
  130. package/dist/esm/customMediaPlayer/analytics/events/screen/customMediaPlayer.js +23 -0
  131. package/dist/esm/customMediaPlayer/analytics/events/track/playCount.js +23 -0
  132. package/dist/esm/customMediaPlayer/analytics/events/track/played.js +23 -0
  133. package/dist/esm/customMediaPlayer/analytics/events/ui/mediaButtonClicked.js +23 -0
  134. package/dist/esm/customMediaPlayer/analytics/events/ui/playPauseBlanketClicked.js +22 -0
  135. package/dist/esm/customMediaPlayer/analytics/events/ui/playbackSpeedChanged.js +22 -0
  136. package/dist/esm/customMediaPlayer/analytics/events/ui/shortcutPressed.js +23 -0
  137. package/dist/esm/customMediaPlayer/analytics/events/ui/timeRangeNavigated.js +23 -0
  138. package/dist/esm/customMediaPlayer/analytics/index.js +9 -0
  139. package/dist/esm/customMediaPlayer/analytics/utils/analytics.js +14 -0
  140. package/dist/esm/customMediaPlayer/analytics/utils/playbackAttributes.js +29 -0
  141. package/dist/esm/customMediaPlayer/fullscreen.js +4 -2
  142. package/dist/esm/customMediaPlayer/icons.js +49 -0
  143. package/dist/esm/customMediaPlayer/index.js +354 -78
  144. package/dist/esm/customMediaPlayer/playbackSpeedControls.js +4 -2
  145. package/dist/esm/customMediaPlayer/timeRange.js +6 -1
  146. package/dist/esm/customMediaPlayer/types.js +1 -0
  147. package/dist/esm/ellipsify.js +38 -36
  148. package/dist/esm/index.js +2 -1
  149. package/dist/esm/locales.js +3 -0
  150. package/dist/esm/mediaImage/index.js +8 -4
  151. package/dist/esm/mediaImage/styled.js +31 -4
  152. package/dist/esm/messages.js +22 -7
  153. package/dist/esm/shortcut.js +12 -5
  154. package/dist/esm/version.json +1 -1
  155. package/dist/types/BlockCard/components/Byline.d.ts +2 -1
  156. package/dist/types/BlockCard/components/Content.d.ts +1 -0
  157. package/dist/types/BlockCard/components/ContentHeader.d.ts +1 -0
  158. package/dist/types/BlockCard/components/Link.d.ts +2 -1
  159. package/dist/types/BlockCard/components/ModalHeader.d.ts +2 -2
  160. package/dist/types/BlockCard/components/Name.d.ts +1 -0
  161. package/dist/types/BlockCard/views/ErroredView.d.ts +1 -0
  162. package/dist/types/BlockCard/views/ForbiddenView.d.ts +1 -0
  163. package/dist/types/BlockCard/views/NotFoundView.d.ts +1 -0
  164. package/dist/types/BlockCard/views/ResolvedView.d.ts +1 -0
  165. package/dist/types/MediaInlineCard/ErroredView/index.d.ts +16 -0
  166. package/dist/types/MediaInlineCard/Frame/index.d.ts +17 -0
  167. package/dist/types/MediaInlineCard/Frame/styled.d.ts +5 -0
  168. package/dist/types/MediaInlineCard/Icon.d.ts +3 -0
  169. package/dist/types/MediaInlineCard/IconAndTitleLayout/index.d.ts +18 -0
  170. package/dist/types/MediaInlineCard/IconAndTitleLayout/styled.d.ts +12 -0
  171. package/dist/types/MediaInlineCard/LoadedView/index.d.ts +18 -0
  172. package/dist/types/MediaInlineCard/LoadingView/index.d.ts +17 -0
  173. package/dist/types/MediaInlineCard/LoadingView/styled.d.ts +2 -0
  174. package/dist/types/MediaInlineCard/index.d.ts +6 -0
  175. package/dist/types/MediaInlineCard/styled.d.ts +2 -0
  176. package/dist/types/classNames.d.ts +7 -2
  177. package/dist/types/customMediaPlayer/analytics/events/screen/customMediaPlayer.d.ts +5 -0
  178. package/dist/types/customMediaPlayer/analytics/events/track/playCount.d.ts +5 -0
  179. package/dist/types/customMediaPlayer/analytics/events/track/played.d.ts +5 -0
  180. package/dist/types/customMediaPlayer/analytics/events/ui/mediaButtonClicked.d.ts +5 -0
  181. package/dist/types/customMediaPlayer/analytics/events/ui/playPauseBlanketClicked.d.ts +5 -0
  182. package/dist/types/customMediaPlayer/analytics/events/ui/playbackSpeedChanged.d.ts +5 -0
  183. package/dist/types/customMediaPlayer/analytics/events/ui/shortcutPressed.d.ts +5 -0
  184. package/dist/types/customMediaPlayer/analytics/events/ui/timeRangeNavigated.d.ts +5 -0
  185. package/dist/types/customMediaPlayer/analytics/index.d.ts +11 -0
  186. package/dist/types/customMediaPlayer/analytics/utils/analytics.d.ts +19 -0
  187. package/dist/types/customMediaPlayer/analytics/utils/playbackAttributes.d.ts +24 -0
  188. package/dist/types/customMediaPlayer/icons.d.ts +3 -0
  189. package/dist/types/customMediaPlayer/index.d.ts +44 -30
  190. package/dist/types/customMediaPlayer/playbackSpeedControls.d.ts +1 -0
  191. package/dist/types/customMediaPlayer/timeRange.d.ts +1 -0
  192. package/dist/types/customMediaPlayer/types.d.ts +4 -0
  193. package/dist/types/index.d.ts +3 -1
  194. package/dist/types/locales.d.ts +4 -0
  195. package/dist/types/mediaImage/index.d.ts +2 -0
  196. package/dist/types/mediaImage/styled.d.ts +5 -2
  197. package/dist/types/messages.d.ts +1 -1
  198. package/dist/types/shortcut.d.ts +15 -4
  199. package/locales/package.json +7 -0
  200. package/package.json +17 -14
@@ -7,7 +7,7 @@ var _typeof = require("@babel/runtime/helpers/typeof");
7
7
  Object.defineProperty(exports, "__esModule", {
8
8
  value: true
9
9
  });
10
- exports.default = exports.CustomMediaPlayer = void 0;
10
+ exports.CustomMediaPlayer = exports.CustomMediaPlayerBase = void 0;
11
11
 
12
12
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
13
 
@@ -25,6 +25,10 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
25
25
 
26
26
  var _react = _interopRequireWildcard(require("react"));
27
27
 
28
+ var _version = require("../version.json");
29
+
30
+ var _analyticsNext = require("@atlaskit/analytics-next");
31
+
28
32
  var _vidPlay = _interopRequireDefault(require("@atlaskit/icon/glyph/vid-play"));
29
33
 
30
34
  var _vidPause = _interopRequireDefault(require("@atlaskit/icon/glyph/vid-pause"));
@@ -39,6 +43,8 @@ var _vidHdCircle = _interopRequireDefault(require("@atlaskit/icon/glyph/vid-hd-c
39
43
 
40
44
  var _download = _interopRequireDefault(require("@atlaskit/icon/glyph/download"));
41
45
 
46
+ var _mediaCommon = require("@atlaskit/media-common");
47
+
42
48
  var _MediaButton = _interopRequireDefault(require("../MediaButton"));
43
49
 
44
50
  var _spinner = _interopRequireDefault(require("@atlaskit/spinner"));
@@ -53,6 +59,8 @@ var _timeRange = require("./timeRange");
53
59
 
54
60
  var _styled = require("./styled");
55
61
 
62
+ var _analytics = require("./analytics");
63
+
56
64
  var _formatDuration = require("../formatDuration");
57
65
 
58
66
  var _classNames = require("../classNames");
@@ -73,33 +81,52 @@ var _playbackSpeedControls = _interopRequireDefault(require("./playbackSpeedCont
73
81
 
74
82
  var _playPauseBlanket = require("./playPauseBlanket");
75
83
 
84
+ var _tooltip = _interopRequireDefault(require("@atlaskit/tooltip"));
85
+
86
+ var _icons = require("./icons");
87
+
76
88
  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); }
77
89
 
78
90
  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; }
79
91
 
92
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
93
+
94
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
95
+
80
96
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
81
97
 
82
98
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
83
99
 
84
100
  var SMALL_VIDEO_MAX_WIDTH = 400;
85
101
  var MINIMUM_DURATION_BEFORE_SAVING_TIME = 60;
102
+ var VIEWED_TRACKING_SECS = 2;
86
103
 
87
- var CustomMediaPlayer = /*#__PURE__*/function (_Component) {
88
- (0, _inherits2.default)(CustomMediaPlayer, _Component);
104
+ var CustomMediaPlayerBase = /*#__PURE__*/function (_Component) {
105
+ (0, _inherits2.default)(CustomMediaPlayerBase, _Component);
89
106
 
90
- var _super = _createSuper(CustomMediaPlayer);
107
+ var _super = _createSuper(CustomMediaPlayerBase);
91
108
 
92
- function CustomMediaPlayer() {
109
+ function CustomMediaPlayerBase() {
93
110
  var _this;
94
111
 
95
- (0, _classCallCheck2.default)(this, CustomMediaPlayer);
112
+ (0, _classCallCheck2.default)(this, CustomMediaPlayerBase);
96
113
 
97
114
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
98
115
  args[_key] = arguments[_key];
99
116
  }
100
117
 
101
118
  _this = _super.call.apply(_super, [this].concat(args));
119
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "videoState", {
120
+ isLoading: true,
121
+ buffered: 0,
122
+ currentTime: 0,
123
+ volume: 1,
124
+ status: 'paused',
125
+ duration: 0,
126
+ isMuted: false
127
+ });
102
128
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "wasPlayedOnce", false);
129
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "lastCurrentTime", 0);
103
130
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "timeSaver", new _timeSaver.TimeSaver(_this.props.lastWatchTimeConfig));
104
131
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "state", {
105
132
  isFullScreenEnabled: false,
@@ -120,15 +147,11 @@ var CustomMediaPlayer = /*#__PURE__*/function (_Component) {
120
147
  });
121
148
  }
122
149
  });
123
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onTimeChange", function (navigate) {
124
- return function (value) {
125
- navigate(value);
126
- };
150
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onTimeChanged", function () {
151
+ _this.createAndFireUIEvent('timeRangeNavigate', 'time');
127
152
  });
128
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onVolumeChange", function (setVolume) {
129
- return function (value) {
130
- return setVolume(value);
131
- };
153
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onVolumeChanged", function () {
154
+ _this.createAndFireUIEvent('volumeRangeNavigate', 'volume');
132
155
  });
133
156
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onCurrentTimeChange", function (currentTime, duration) {
134
157
  if (duration - currentTime > MINIMUM_DURATION_BEFORE_SAVING_TIME) {
@@ -137,16 +160,6 @@ var CustomMediaPlayer = /*#__PURE__*/function (_Component) {
137
160
  _this.timeSaver.defaultTime = 0;
138
161
  }
139
162
  });
140
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "shortcutHandler", function (toggleButtonAction) {
141
- return function () {
142
- var showControls = _this.props.showControls;
143
- toggleButtonAction();
144
-
145
- if (showControls) {
146
- showControls();
147
- }
148
- };
149
- });
150
163
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "renderCurrentTime", function (_ref) {
151
164
  var currentTime = _ref.currentTime,
152
165
  duration = _ref.duration;
@@ -169,7 +182,7 @@ var CustomMediaPlayer = /*#__PURE__*/function (_Component) {
169
182
  var secondaryColor = isHDActive ? _colors.N0 : _colors.DN60;
170
183
  return /*#__PURE__*/_react.default.createElement(_MediaButton.default, {
171
184
  testId: "custom-media-player-hd-button",
172
- onClick: onHDToggleClick,
185
+ onClick: !!onHDToggleClick ? _this.getMediaButtonClickHandler(onHDToggleClick, 'HDButton') : undefined,
173
186
  iconBefore: /*#__PURE__*/_react.default.createElement(_vidHdCircle.default, {
174
187
  primaryColor: primaryColor,
175
188
  secondaryColor: secondaryColor,
@@ -187,6 +200,8 @@ var CustomMediaPlayer = /*#__PURE__*/function (_Component) {
187
200
  _this.setState({
188
201
  playbackSpeed: playbackSpeed
189
202
  });
203
+
204
+ _this.createAndFireUIEvent('playbackSpeedChange');
190
205
  });
191
206
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "renderSpeedControls", function () {
192
207
  var playbackSpeed = _this.state.playbackSpeed;
@@ -194,36 +209,43 @@ var CustomMediaPlayer = /*#__PURE__*/function (_Component) {
194
209
  return /*#__PURE__*/_react.default.createElement(_playbackSpeedControls.default, {
195
210
  originalDimensions: originalDimensions,
196
211
  playbackSpeed: playbackSpeed,
197
- onPlaybackSpeedChange: _this.onPlaybackSpeedChange
212
+ onPlaybackSpeedChange: _this.onPlaybackSpeedChange,
213
+ onClick: function onClick() {
214
+ return _this.createAndFireUIEvent('mediaButtonClick', 'playbackSpeedButton');
215
+ }
198
216
  });
199
217
  });
200
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "renderVolume", function (_ref2, actions, showSlider) {
201
- var isMuted = _ref2.isMuted,
202
- volume = _ref2.volume;
218
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "renderVolume", function (videoState, actions, showSlider) {
203
219
  return /*#__PURE__*/_react.default.createElement(_styled.VolumeWrapper, {
204
220
  showSlider: showSlider
205
221
  }, /*#__PURE__*/_react.default.createElement(_styled.VolumeToggleWrapper, {
206
- isMuted: isMuted
222
+ isMuted: videoState.isMuted
207
223
  }, /*#__PURE__*/_react.default.createElement(_styled.MutedIndicator, {
208
- isMuted: isMuted
224
+ isMuted: videoState.isMuted
209
225
  }), /*#__PURE__*/_react.default.createElement(_MediaButton.default, {
210
226
  testId: "custom-media-player-volume-toggle-button",
211
- onClick: actions.toggleMute,
227
+ onClick: _this.getMediaButtonClickHandler(actions.toggleMute, 'muteButton'),
212
228
  iconBefore: /*#__PURE__*/_react.default.createElement(_outgoingSound.default, {
213
229
  label: "volume"
214
230
  })
215
231
  })), showSlider && /*#__PURE__*/_react.default.createElement(_styled.VolumeTimeRangeWrapper, null, /*#__PURE__*/_react.default.createElement(_timeRange.TimeRange, {
216
- onChange: _this.onVolumeChange(actions.setVolume),
232
+ onChange: actions.setVolume,
217
233
  duration: 1,
218
- currentTime: volume,
219
- bufferedTime: volume,
234
+ currentTime: videoState.volume,
235
+ bufferedTime: videoState.volume,
220
236
  disableThumbTooltip: true,
221
- isAlwaysActive: true
237
+ isAlwaysActive: true,
238
+ onChanged: _this.onVolumeChanged
222
239
  })));
223
240
  });
224
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onFullScreenClick", function () {
241
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "toggleFullscreen", function () {
225
242
  return (0, _fullscreen.toggleFullscreen)(_this.videoWrapperRef);
226
243
  });
244
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onFullScreenButtonClick", function () {
245
+ _this.toggleFullscreen();
246
+
247
+ _this.createAndFireUIEvent('mediaButtonClick', 'fullScreenButton');
248
+ });
227
249
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onResize", function (width) {
228
250
  return _this.setState({
229
251
  isLargePlayer: width > SMALL_VIDEO_MAX_WIDTH
@@ -249,7 +271,7 @@ var CustomMediaPlayer = /*#__PURE__*/function (_Component) {
249
271
  });
250
272
  return /*#__PURE__*/_react.default.createElement(_MediaButton.default, {
251
273
  testId: "custom-media-player-fullscreen-button",
252
- onClick: _this.onFullScreenClick,
274
+ onClick: _this.onFullScreenButtonClick,
253
275
  iconBefore: icon
254
276
  });
255
277
  });
@@ -262,12 +284,88 @@ var CustomMediaPlayer = /*#__PURE__*/function (_Component) {
262
284
 
263
285
  return /*#__PURE__*/_react.default.createElement(_MediaButton.default, {
264
286
  testId: "custom-media-player-download-button",
265
- onClick: onDownloadClick,
287
+ onClick: _this.getMediaButtonClickHandler(onDownloadClick, 'downloadButton'),
266
288
  iconBefore: /*#__PURE__*/_react.default.createElement(_download.default, {
267
289
  label: "download"
268
290
  })
269
291
  });
270
292
  });
293
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "renderShortcuts", function (_ref2) {
294
+ var togglePlayPauseAction = _ref2.togglePlayPauseAction,
295
+ toggleMute = _ref2.toggleMute,
296
+ skipBackward = _ref2.skipBackward,
297
+ skipForward = _ref2.skipForward;
298
+ var isShortcutEnabled = _this.props.isShortcutEnabled;
299
+ var isFullScreenEnabled = _this.state.isFullScreenEnabled;
300
+ var shortcuts = (isShortcutEnabled || isFullScreenEnabled) && [/*#__PURE__*/_react.default.createElement(_shortcut.Shortcut, {
301
+ key: "space-shortcut",
302
+ code: _shortcut.keyCodes.space,
303
+ handler: _this.getKeyboardShortcutHandler(togglePlayPauseAction, 'space')
304
+ }), /*#__PURE__*/_react.default.createElement(_shortcut.Shortcut, {
305
+ key: "m-shortcut",
306
+ code: _shortcut.keyCodes.m,
307
+ handler: _this.getKeyboardShortcutHandler(toggleMute, 'mute')
308
+ })];
309
+
310
+ if (shortcuts && isFullScreenEnabled) {
311
+ // Fullscreen shortcuts only. We don't want to override left/right keys in media-viewer settings
312
+ shortcuts.push( /*#__PURE__*/_react.default.createElement(_shortcut.Shortcut, {
313
+ key: "skip-backward-shortcut",
314
+ code: _shortcut.keyCodes.leftArrow,
315
+ handler: _this.getKeyboardShortcutHandler(skipBackward, 'leftArrow')
316
+ }));
317
+ shortcuts.push( /*#__PURE__*/_react.default.createElement(_shortcut.Shortcut, {
318
+ key: "skip-forward-shortcut",
319
+ code: _shortcut.keyCodes.rightArrow,
320
+ handler: _this.getKeyboardShortcutHandler(skipForward, 'rightArrow')
321
+ }));
322
+ }
323
+
324
+ return shortcuts;
325
+ });
326
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "renderPlayPauseButton", function (isPlaying) {
327
+ var formatMessage = _this.props.intl.formatMessage;
328
+ var toggleButtonIcon = isPlaying ? /*#__PURE__*/_react.default.createElement(_vidPause.default, {
329
+ label: formatMessage(_messages.messages.pause)
330
+ }) : /*#__PURE__*/_react.default.createElement(_vidPlay.default, {
331
+ label: formatMessage(_messages.messages.play)
332
+ });
333
+ return /*#__PURE__*/_react.default.createElement(_tooltip.default, {
334
+ content: formatMessage(isPlaying ? _messages.messages.pause : _messages.messages.play),
335
+ position: "top"
336
+ }, /*#__PURE__*/_react.default.createElement(_MediaButton.default, {
337
+ testId: "custom-media-player-play-toggle-button",
338
+ "data-test-is-playing": isPlaying,
339
+ iconBefore: toggleButtonIcon,
340
+ onClick: isPlaying ? _this.pausePlayByButtonClick : _this.startPlayByButtonClick
341
+ }));
342
+ });
343
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "renderSkipBackwardButton", function (skipBackward) {
344
+ var formatMessage = _this.props.intl.formatMessage;
345
+ return /*#__PURE__*/_react.default.createElement(_tooltip.default, {
346
+ content: formatMessage(_messages.messages.skipBackward),
347
+ position: "top"
348
+ }, /*#__PURE__*/_react.default.createElement(_MediaButton.default, {
349
+ testId: "custom-media-player-skip-backward-button",
350
+ iconBefore: /*#__PURE__*/_react.default.createElement(_icons.SkipTenBackwardIcon, {
351
+ label: formatMessage(_messages.messages.skipBackward)
352
+ }),
353
+ onClick: _this.getMediaButtonClickHandler(skipBackward, 'skipBackwardButton')
354
+ }));
355
+ });
356
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "renderSkipForwardButton", function (skipForward) {
357
+ var formatMessage = _this.props.intl.formatMessage;
358
+ return /*#__PURE__*/_react.default.createElement(_tooltip.default, {
359
+ content: formatMessage(_messages.messages.skipForward),
360
+ position: "top"
361
+ }, /*#__PURE__*/_react.default.createElement(_MediaButton.default, {
362
+ testId: "custom-media-player-skip-forward-button",
363
+ iconBefore: /*#__PURE__*/_react.default.createElement(_icons.SkipTenForwardIcon, {
364
+ label: formatMessage(_messages.messages.skipForward)
365
+ }),
366
+ onClick: _this.getMediaButtonClickHandler(skipForward, 'skipForwardButton')
367
+ }));
368
+ });
271
369
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "renderSpinner", function () {
272
370
  return /*#__PURE__*/_react.default.createElement(_styled.SpinnerWrapper, null, /*#__PURE__*/_react.default.createElement(_spinner.default, {
273
371
  appearance: "invert",
@@ -293,15 +391,106 @@ var CustomMediaPlayer = /*#__PURE__*/function (_Component) {
293
391
  onFirstPlay();
294
392
  }
295
393
  });
394
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "getMediaButtonClickHandler", function (action, buttonType) {
395
+ return function () {
396
+ action();
397
+
398
+ _this.createAndFireUIEvent('mediaButtonClick', buttonType);
399
+ };
400
+ });
401
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "getKeyboardShortcutHandler", function (action, shortcutType) {
402
+ return function () {
403
+ var showControls = _this.props.showControls;
404
+ action();
405
+
406
+ if (showControls) {
407
+ showControls();
408
+ }
409
+
410
+ _this.createAndFireUIEvent('shortcutPress', shortcutType);
411
+ };
412
+ });
413
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onViewed", function (videoState) {
414
+ var _this$props3 = _this.props,
415
+ createAnalyticsEvent = _this$props3.createAnalyticsEvent,
416
+ fileId = _this$props3.fileId,
417
+ isAutoPlay = _this$props3.isAutoPlay,
418
+ isHDAvailable = _this$props3.isHDAvailable,
419
+ isHDActive = _this$props3.isHDActive,
420
+ type = _this$props3.type;
421
+ var _this$state = _this.state,
422
+ isFullScreenEnabled = _this$state.isFullScreenEnabled,
423
+ isLargePlayer = _this$state.isLargePlayer,
424
+ playbackSpeed = _this$state.playbackSpeed;
425
+ var status = videoState.status,
426
+ currentTime = videoState.currentTime;
427
+
428
+ if (status === 'playing' && (currentTime < _this.lastCurrentTime || currentTime >= _this.lastCurrentTime + VIEWED_TRACKING_SECS)) {
429
+ (0, _analytics.fireAnalyticsEvent)((0, _analytics.createPlayedTrackEvent)(type, _objectSpread(_objectSpread({}, videoState), {}, {
430
+ isAutoPlay: isAutoPlay,
431
+ isHDAvailable: isHDAvailable,
432
+ isHDActive: isHDActive,
433
+ isFullScreenEnabled: isFullScreenEnabled,
434
+ isLargePlayer: isLargePlayer,
435
+ playbackSpeed: playbackSpeed
436
+ }), fileId), createAnalyticsEvent);
437
+ _this.lastCurrentTime = currentTime;
438
+ }
439
+ });
440
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "resetPendingPlayPauseToggleTimer", function () {
441
+ if (_this.clickToTogglePlayTimoutId !== undefined) {
442
+ clearTimeout(_this.clickToTogglePlayTimoutId);
443
+ }
444
+ });
445
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "doubleClickToFullscreen", function () {
446
+ _this.resetPendingPlayPauseToggleTimer();
447
+
448
+ _this.toggleFullscreen(); // TODO Add an event similar to "playPauseBlanketClick" but for fullscreen trigger
449
+
450
+ });
451
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "togglePlayByBlanketClick", function (action) {
452
+ _this.resetPendingPlayPauseToggleTimer();
453
+
454
+ _this.clickToTogglePlayTimoutId = setTimeout(function () {
455
+ action();
456
+
457
+ _this.createAndFireUIEvent('playPauseBlanketClick');
458
+ }, 200);
459
+ });
460
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "startPlayByBlanketClick", function () {
461
+ _this.togglePlayByBlanketClick(_this.play);
462
+ });
463
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "pausePlayByBlanketClick", function () {
464
+ _this.togglePlayByBlanketClick(_this.pause);
465
+ });
466
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "startPlayByButtonClick", _this.getMediaButtonClickHandler(_this.play, 'playButton'));
467
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "pausePlayByButtonClick", _this.getMediaButtonClickHandler(_this.pause, 'pauseButton'));
296
468
  return _this;
297
469
  }
298
470
 
299
- (0, _createClass2.default)(CustomMediaPlayer, [{
471
+ (0, _createClass2.default)(CustomMediaPlayerBase, [{
300
472
  key: "componentDidMount",
301
473
  value: function componentDidMount() {
302
- var _this$props3 = this.props,
303
- isAutoPlay = _this$props3.isAutoPlay,
304
- onFirstPlay = _this$props3.onFirstPlay;
474
+ var _this$props4 = this.props,
475
+ type = _this$props4.type,
476
+ fileId = _this$props4.fileId,
477
+ isAutoPlay = _this$props4.isAutoPlay,
478
+ isHDAvailable = _this$props4.isHDAvailable,
479
+ isHDActive = _this$props4.isHDActive,
480
+ onFirstPlay = _this$props4.onFirstPlay,
481
+ createAnalyticsEvent = _this$props4.createAnalyticsEvent;
482
+ var _this$state2 = this.state,
483
+ isFullScreenEnabled = _this$state2.isFullScreenEnabled,
484
+ isLargePlayer = _this$state2.isLargePlayer,
485
+ playbackSpeed = _this$state2.playbackSpeed;
486
+ (0, _analytics.fireAnalyticsEvent)((0, _analytics.createCustomMediaPlayerScreenEvent)(type, {
487
+ isAutoPlay: isAutoPlay,
488
+ isHDAvailable: isHDAvailable,
489
+ isHDActive: isHDActive,
490
+ isFullScreenEnabled: isFullScreenEnabled,
491
+ isLargePlayer: isLargePlayer,
492
+ playbackSpeed: playbackSpeed
493
+ }, fileId), createAnalyticsEvent);
305
494
 
306
495
  if (this.videoWrapperRef) {
307
496
  this.videoWrapperRef.addEventListener('fullscreenchange', this.onFullScreenChange);
@@ -313,6 +502,14 @@ var CustomMediaPlayer = /*#__PURE__*/function (_Component) {
313
502
  _simultaneousPlayManager.default.pauseOthers(this);
314
503
 
315
504
  if (onFirstPlay) {
505
+ (0, _analytics.fireAnalyticsEvent)((0, _analytics.createFirstPlayedTrackEvent)(type, {
506
+ isAutoPlay: isAutoPlay,
507
+ isHDAvailable: isHDAvailable,
508
+ isHDActive: isHDActive,
509
+ isFullScreenEnabled: isFullScreenEnabled,
510
+ isLargePlayer: isLargePlayer,
511
+ playbackSpeed: playbackSpeed
512
+ }, fileId), createAnalyticsEvent);
316
513
  this.wasPlayedOnce = true;
317
514
  onFirstPlay();
318
515
  }
@@ -336,20 +533,78 @@ var CustomMediaPlayer = /*#__PURE__*/function (_Component) {
336
533
  this.actions = actions;
337
534
  }
338
535
  }
536
+ }, {
537
+ key: "createAndFireUIEvent",
538
+ value: function createAndFireUIEvent(eventType, actionSubjectId) {
539
+ var _this$props5 = this.props,
540
+ type = _this$props5.type,
541
+ fileId = _this$props5.fileId,
542
+ isHDActive = _this$props5.isHDActive,
543
+ isHDAvailable = _this$props5.isHDAvailable,
544
+ isAutoPlay = _this$props5.isAutoPlay,
545
+ createAnalyticsEvent = _this$props5.createAnalyticsEvent;
546
+ var _this$state3 = this.state,
547
+ isFullScreenEnabled = _this$state3.isFullScreenEnabled,
548
+ isLargePlayer = _this$state3.isLargePlayer,
549
+ playbackSpeed = _this$state3.playbackSpeed;
550
+
551
+ var playbackState = _objectSpread(_objectSpread({}, this.videoState), {}, {
552
+ isAutoPlay: isAutoPlay,
553
+ isHDAvailable: isHDAvailable,
554
+ isHDActive: isHDActive,
555
+ isFullScreenEnabled: isFullScreenEnabled,
556
+ isLargePlayer: isLargePlayer,
557
+ playbackSpeed: playbackSpeed
558
+ });
559
+
560
+ var analyticsEvent;
561
+
562
+ switch (eventType) {
563
+ case 'mediaButtonClick':
564
+ analyticsEvent = (0, _analytics.createMediaButtonClickedEvent)(type, playbackState, actionSubjectId, fileId);
565
+ break;
566
+
567
+ case 'shortcutPress':
568
+ analyticsEvent = (0, _analytics.createMediaShortcutPressedEvent)(type, playbackState, actionSubjectId, fileId);
569
+ break;
570
+
571
+ case 'playPauseBlanketClick':
572
+ analyticsEvent = (0, _analytics.createPlayPauseBlanketClickedEvent)(type, playbackState, fileId);
573
+ break;
574
+
575
+ case 'timeRangeNavigate':
576
+ case 'volumeRangeNavigate':
577
+ analyticsEvent = (0, _analytics.createTimeRangeNavigatedEvent)(type, playbackState, actionSubjectId, fileId);
578
+ break;
579
+
580
+ case 'playbackSpeedChange':
581
+ analyticsEvent = (0, _analytics.createPlaybackSpeedChangedEvent)(type, playbackState, fileId);
582
+ break;
583
+
584
+ default:
585
+ analyticsEvent = {
586
+ eventType: 'ui',
587
+ action: 'default',
588
+ actionSubject: 'customMediaPlayer',
589
+ attributes: {
590
+ type: type
591
+ }
592
+ };
593
+ }
594
+
595
+ (0, _analytics.fireAnalyticsEvent)(analyticsEvent, createAnalyticsEvent);
596
+ }
339
597
  }, {
340
598
  key: "render",
341
599
  value: function render() {
342
600
  var _this2 = this;
343
601
 
344
- var _this$props4 = this.props,
345
- type = _this$props4.type,
346
- src = _this$props4.src,
347
- isAutoPlay = _this$props4.isAutoPlay,
348
- isShortcutEnabled = _this$props4.isShortcutEnabled,
349
- formatMessage = _this$props4.intl.formatMessage,
350
- onCanPlay = _this$props4.onCanPlay,
351
- onError = _this$props4.onError;
352
- var isFullScreenEnabled = this.state.isFullScreenEnabled;
602
+ var _this$props6 = this.props,
603
+ type = _this$props6.type,
604
+ src = _this$props6.src,
605
+ isAutoPlay = _this$props6.isAutoPlay,
606
+ onCanPlay = _this$props6.onCanPlay,
607
+ onError = _this$props6.onError;
353
608
  return /*#__PURE__*/_react.default.createElement(_styled.CustomVideoWrapper, {
354
609
  innerRef: this.saveVideoWrapperRef,
355
610
  "data-testid": "custom-media-player"
@@ -362,8 +617,12 @@ var CustomMediaPlayer = /*#__PURE__*/function (_Component) {
362
617
  onTimeChange: this.onCurrentTimeChange,
363
618
  onError: onError
364
619
  }, function (video, videoState, actions) {
365
- _this2.setActions(actions);
620
+ _this2.onViewed(videoState);
621
+
622
+ _this2.setActions(actions); //Video State(either prop or variable) is ReadOnly
366
623
 
624
+
625
+ _this2.videoState = videoState;
367
626
  var status = videoState.status,
368
627
  currentTime = videoState.currentTime,
369
628
  buffered = videoState.buffered,
@@ -371,33 +630,30 @@ var CustomMediaPlayer = /*#__PURE__*/function (_Component) {
371
630
  isLoading = videoState.isLoading;
372
631
  var isLargePlayer = _this2.state.isLargePlayer;
373
632
  var isPlaying = status === 'playing';
374
- var toggleButtonIcon = isPlaying ? /*#__PURE__*/_react.default.createElement(_vidPause.default, {
375
- label: formatMessage(_messages.messages.play)
376
- }) : /*#__PURE__*/_react.default.createElement(_vidPlay.default, {
377
- label: formatMessage(_messages.messages.pause)
378
- });
379
- var toggleButtonAction = isPlaying ? _this2.pause : _this2.play;
380
-
381
- var button = /*#__PURE__*/_react.default.createElement(_MediaButton.default, {
382
- testId: "custom-media-player-play-toggle-button",
383
- "data-test-is-playing": isPlaying,
384
- iconBefore: toggleButtonIcon,
385
- onClick: toggleButtonAction
633
+ var skipAmount = 10;
634
+
635
+ var skipBackward = function skipBackward() {
636
+ var newTime = videoState.currentTime - skipAmount;
637
+ actions.navigate(Math.max(newTime, 0));
638
+ };
639
+
640
+ var skipForward = function skipForward() {
641
+ var newTime = videoState.currentTime + skipAmount;
642
+ actions.navigate(Math.min(newTime, videoState.duration));
643
+ };
644
+
645
+ var shortcuts = _this2.renderShortcuts({
646
+ togglePlayPauseAction: isPlaying ? _this2.pause : _this2.play,
647
+ toggleMute: actions.toggleMute,
648
+ skipBackward: skipBackward,
649
+ skipForward: skipForward
386
650
  });
387
651
 
388
- var shortcuts = (isShortcutEnabled || isFullScreenEnabled) && [/*#__PURE__*/_react.default.createElement(_shortcut.Shortcut, {
389
- key: "space-shortcut",
390
- keyCode: _shortcut.keyCodes.space,
391
- handler: _this2.shortcutHandler(toggleButtonAction)
392
- }), /*#__PURE__*/_react.default.createElement(_shortcut.Shortcut, {
393
- key: "m-shortcut",
394
- keyCode: _shortcut.keyCodes.m,
395
- handler: _this2.shortcutHandler(actions.toggleMute)
396
- })];
397
652
  return /*#__PURE__*/_react.default.createElement(_styled.VideoWrapper, null, /*#__PURE__*/_react.default.createElement(_widthDetector.WidthObserver, {
398
653
  setWidth: _this2.onResize
399
654
  }), shortcuts, isLoading && _this2.renderSpinner(), /*#__PURE__*/_react.default.createElement(_playPauseBlanket.PlayPauseBlanket, {
400
- onClick: _this2.shortcutHandler(toggleButtonAction),
655
+ onDoubleClick: _this2.doubleClickToFullscreen,
656
+ onClick: isPlaying ? _this2.pausePlayByBlanketClick : _this2.startPlayByBlanketClick,
401
657
  "data-testid": "play-pause-blanket"
402
658
  }, video), /*#__PURE__*/_react.default.createElement(_styled.ControlsWrapper, {
403
659
  className: _classNames.hideControlsClassName
@@ -405,16 +661,22 @@ var CustomMediaPlayer = /*#__PURE__*/function (_Component) {
405
661
  currentTime: currentTime,
406
662
  bufferedTime: buffered,
407
663
  duration: duration,
408
- onChange: _this2.onTimeChange(actions.navigate)
409
- })), /*#__PURE__*/_react.default.createElement(_styled.TimebarWrapper, null, /*#__PURE__*/_react.default.createElement(_styled.LeftControls, null, button, _this2.renderVolume(videoState, actions, isLargePlayer)), /*#__PURE__*/_react.default.createElement(_styled.RightControls, null, isLargePlayer && _this2.renderCurrentTime(videoState), _this2.renderHDButton(), _this2.renderSpeedControls(), _this2.renderFullScreenButton(), _this2.renderDownloadButton()))));
664
+ onChange: actions.navigate,
665
+ onChanged: _this2.onTimeChanged
666
+ })), /*#__PURE__*/_react.default.createElement(_styled.TimebarWrapper, null, /*#__PURE__*/_react.default.createElement(_styled.LeftControls, null, _this2.renderPlayPauseButton(isPlaying), _this2.renderSkipBackwardButton(skipBackward), _this2.renderSkipForwardButton(skipForward), _this2.renderVolume(videoState, actions, isLargePlayer)), /*#__PURE__*/_react.default.createElement(_styled.RightControls, null, isLargePlayer && _this2.renderCurrentTime(videoState), _this2.renderHDButton(), _this2.renderSpeedControls(), _this2.renderFullScreenButton(), _this2.renderDownloadButton()))));
410
667
  }));
411
668
  }
412
669
  }]);
413
- return CustomMediaPlayer;
670
+ return CustomMediaPlayerBase;
414
671
  }(_react.Component);
415
672
 
416
- exports.CustomMediaPlayer = CustomMediaPlayer;
417
-
418
- var _default = (0, _reactIntl.injectIntl)(CustomMediaPlayer);
419
-
420
- exports.default = _default;
673
+ exports.CustomMediaPlayerBase = CustomMediaPlayerBase;
674
+ var CustomMediaPlayer = (0, _mediaCommon.withMediaAnalyticsContext)({
675
+ packageVersion: _version.version,
676
+ packageName: _version.name,
677
+ componentName: 'customMediaPlayer',
678
+ component: 'customMediaPlayer'
679
+ }, {
680
+ filterFeatureFlags: _analytics.relevantFeatureFlagNames
681
+ })((0, _analyticsNext.withAnalyticsEvents)()((0, _reactIntl.injectIntl)(CustomMediaPlayerBase)));
682
+ exports.CustomMediaPlayer = CustomMediaPlayer;
@@ -150,7 +150,8 @@ var PlaybackSpeedControls = /*#__PURE__*/function (_Component) {
150
150
  value: function render() {
151
151
  var _this$props = this.props,
152
152
  playbackSpeed = _this$props.playbackSpeed,
153
- intl = _this$props.intl;
153
+ intl = _this$props.intl,
154
+ onClick = _this$props.onClick;
154
155
  var popupHeight = this.state.popupHeight;
155
156
  var value = this.speedOptions()[0].options.find(function (option) {
156
157
  return option.value === playbackSpeed;
@@ -200,7 +201,8 @@ var PlaybackSpeedControls = /*#__PURE__*/function (_Component) {
200
201
  }, /*#__PURE__*/_react.default.createElement(_MediaButton.default, {
201
202
  testId: "custom-media-player-playback-speed-toggle-button",
202
203
  buttonRef: ref,
203
- isSelected: isOpen
204
+ isSelected: isOpen,
205
+ onClick: onClick
204
206
  }, playbackSpeed, "x"));
205
207
  },
206
208
  styles: this.popupCustomStyles,
@@ -101,10 +101,15 @@ var TimeRange = /*#__PURE__*/function (_Component) {
101
101
  }
102
102
  });
103
103
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onMouseUp", function () {
104
- // As soon as user finished dragging, we should clean up events.
104
+ var onChanged = _this.props.onChanged; // As soon as user finished dragging, we should clean up events.
105
+
105
106
  document.removeEventListener('mouseup', _this.onMouseUp);
106
107
  document.removeEventListener('mousemove', _this.onMouseMove);
107
108
 
109
+ if (onChanged) {
110
+ onChanged();
111
+ }
112
+
108
113
  _this.setState({
109
114
  isDragging: false
110
115
  });
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });