ravnur-player-public 3.4.2 → 3.4.4

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 (262) hide show
  1. package/.eslintignore +7 -0
  2. package/.eslintrc.js +206 -0
  3. package/.flowconfig +3 -0
  4. package/.vscode/extensions.json +7 -0
  5. package/.vscode/launch.json +37 -0
  6. package/.vscode/settings.json +4 -0
  7. package/README-Private.md +54 -0
  8. package/babel.config.js +28 -0
  9. package/bitbucket-pipelines.yml +61 -0
  10. package/cert.pem +23 -0
  11. package/demo/BaseM.mp4 +0 -0
  12. package/demo/HD.mp4 +0 -0
  13. package/demo/annotations.json +50 -0
  14. package/demo/annotations_ge.json +50 -0
  15. package/demo/base.mp3 +0 -0
  16. package/demo/cc_2125en.vtt +4958 -0
  17. package/demo/cc_en.vtt +171 -0
  18. package/demo/cc_ge.vtt +178 -0
  19. package/demo/chapters_en.vtt +38 -0
  20. package/demo/chapters_ge.vtt +5 -0
  21. package/demo/chapters_ge1.json +23 -0
  22. package/demo/hls/audio/stereo/en/128kbit.m3u8 +912 -0
  23. package/demo/hls/audio/stereo/none/128kbit.m3u8 +912 -0
  24. package/demo/hls/audio/surround/en/320kbit.m3u8 +912 -0
  25. package/demo/hls/playlist.m3u8 +31 -0
  26. package/demo/hls/video/10000kbit.m3u8 +894 -0
  27. package/demo/hls/video/1100kbit.m3u8 +894 -0
  28. package/demo/hls/video/1500kbit.m3u8 +894 -0
  29. package/demo/hls/video/250kbit.m3u8 +894 -0
  30. package/demo/hls/video/4000kbit.m3u8 +894 -0
  31. package/demo/hls/video/500kbit.m3u8 +894 -0
  32. package/demo/hls/video/6000kbit.m3u8 +894 -0
  33. package/demo/hls/video/800kbit.m3u8 +894 -0
  34. package/demo/hls.js +5 -0
  35. package/demo/hls.js.map +1 -0
  36. package/demo/hls.min.js +2 -0
  37. package/demo/hls.min.js.map +1 -0
  38. package/demo/playlist.m3u8 +31 -0
  39. package/demo/ravnur-flash-audio.swf +0 -0
  40. package/demo/ravnur-flash-video-hls.swf +0 -0
  41. package/demo/ravnur-flash-video.swf +0 -0
  42. package/demo/shaka/shaka-player.foo.debug.d.ts +4532 -0
  43. package/demo/shaka/shaka-player.foo.debug.externs.js +3886 -0
  44. package/demo/shaka/shaka-player.foo.debug.js +1746 -0
  45. package/demo/shaka/shaka-player.foo.debug.map +8 -0
  46. package/demo/shaka/wrapper.js +7 -0
  47. package/demo/test.html +458 -0
  48. package/dist/RavnurMediaPlayer.min.js +1 -1
  49. package/dist/cdn/RavnurMediaPlayer.min.js +1 -1
  50. package/jest.config.js +4 -0
  51. package/key.pem +27 -0
  52. package/lib/es5.js +344 -0
  53. package/lib/images/Spinner-small.gif +0 -0
  54. package/lib/images/close.png +0 -0
  55. package/lib/images/ic_check_box_black_24dp_1x.png +0 -0
  56. package/lib/images/ic_check_box_outline_blank_black_24dp_1x.png +0 -0
  57. package/lib/images/ic_chevron_left_white_24dp_1x.png +0 -0
  58. package/lib/images/ic_chevron_right_white_24dp_1x.png +0 -0
  59. package/lib/images/ic_closed_caption_white_24dp_1x.png +0 -0
  60. package/lib/images/ic_fast_forward_white_24dp_1x.png +0 -0
  61. package/lib/images/ic_fast_rewind_white_24dp_1x.png +0 -0
  62. package/lib/images/ic_fullscreen_exit_white_24dp_1x.png +0 -0
  63. package/lib/images/ic_fullscreen_white_24dp_1x.png +0 -0
  64. package/lib/images/ic_hd_white_24dp_1x.png +0 -0
  65. package/lib/images/ic_keyboard_arrow_left_black_24dp_1x.png +0 -0
  66. package/lib/images/ic_keyboard_arrow_right_black_24dp_1x.png +0 -0
  67. package/lib/images/ic_pause_white_24dp_1x.png +0 -0
  68. package/lib/images/ic_photo_white_24dp_1x.png +0 -0
  69. package/lib/images/ic_play_arrow_white_24dp_1x.png +0 -0
  70. package/lib/images/ic_refresh_white_24dp_1x.png +0 -0
  71. package/lib/images/ic_settings_white_24dp_1x.png +0 -0
  72. package/lib/images/ic_skip_next_white_24dp_1x.png +0 -0
  73. package/lib/images/ic_skip_previous_white_24dp_1x.png +0 -0
  74. package/lib/images/ic_toc_white_24dp_1x.png +0 -0
  75. package/lib/images/ic_volume_off_white_24dp_1x.png +0 -0
  76. package/lib/images/ic_volume_up_white_24dp_1x.png +0 -0
  77. package/lib/player4ie8.css +225 -0
  78. package/package.json +1 -5
  79. package/server.js +29 -0
  80. package/src/config/cc.js +56 -0
  81. package/src/config/i18n.js +101 -0
  82. package/src/config/options.js +123 -0
  83. package/src/config/playlist.js +9 -0
  84. package/src/config/source.js +23 -0
  85. package/src/config/statuses.js +8 -0
  86. package/src/config/styles.js +16 -0
  87. package/src/entity.js +27 -0
  88. package/src/events.js +5 -0
  89. package/src/extensions/annotations.js +142 -0
  90. package/src/extensions/audio-tarcks.js +115 -0
  91. package/src/extensions/backward.js +45 -0
  92. package/src/extensions/base.js +73 -0
  93. package/src/extensions/bottom-next.js +50 -0
  94. package/src/extensions/bottom-prev.js +50 -0
  95. package/src/extensions/buffering.js +78 -0
  96. package/src/extensions/c2pa.js +350 -0
  97. package/src/extensions/caption-search.js +230 -0
  98. package/src/extensions/cc.js +874 -0
  99. package/src/extensions/crawl.js +118 -0
  100. package/src/extensions/download.js +411 -0
  101. package/src/extensions/error.js +47 -0
  102. package/src/extensions/forward.js +44 -0
  103. package/src/extensions/fullscreen.js +84 -0
  104. package/src/extensions/help.js +201 -0
  105. package/src/extensions/helpers/FileSaver.js +157 -0
  106. package/src/extensions/helpers/clickOpener.js +180 -0
  107. package/src/extensions/helpers/opener.js +30 -0
  108. package/src/extensions/helpers/openerHeightChecker.js +13 -0
  109. package/src/extensions/helpers/popover.js +33 -0
  110. package/src/extensions/helpers/popoverPosition.js +30 -0
  111. package/src/extensions/helpers/scrollIntoView.js +9 -0
  112. package/src/extensions/helpers/storage.js +20 -0
  113. package/src/extensions/helpers/textContent.js +6 -0
  114. package/src/extensions/helpers/timeCodeToSeconds.js +44 -0
  115. package/src/extensions/helpers/transport.js +43 -0
  116. package/src/extensions/helpers/vtt-loader.js +42 -0
  117. package/src/extensions/index.js +87 -0
  118. package/src/extensions/live.js +76 -0
  119. package/src/extensions/mux.js +57 -0
  120. package/src/extensions/next-frame.js +44 -0
  121. package/src/extensions/next.js +48 -0
  122. package/src/extensions/placeholder.js +241 -0
  123. package/src/extensions/play.js +102 -0
  124. package/src/extensions/poster.js +47 -0
  125. package/src/extensions/prev-frame.js +44 -0
  126. package/src/extensions/prev.js +48 -0
  127. package/src/extensions/progress.js +465 -0
  128. package/src/extensions/resizer.js +37 -0
  129. package/src/extensions/settings.js +367 -0
  130. package/src/extensions/theater.js +56 -0
  131. package/src/extensions/title.js +38 -0
  132. package/src/extensions/toc.js +334 -0
  133. package/src/extensions/volume.js +196 -0
  134. package/src/flash/FlashPlugin.js +301 -0
  135. package/src/flash/MediaElement.js +361 -0
  136. package/src/flash/plugins.js +32 -0
  137. package/src/flash-detector.js +66 -0
  138. package/src/helpers/$t.js +10 -0
  139. package/src/helpers/binder.js +11 -0
  140. package/src/helpers/isAndroid.js +5 -0
  141. package/src/helpers/isBlackBerry.js +5 -0
  142. package/src/helpers/isCanvasSupported.js +6 -0
  143. package/src/helpers/isIE.js +21 -0
  144. package/src/helpers/isMobile.js +10 -0
  145. package/src/helpers/isWindows.js +5 -0
  146. package/src/helpers/isWindowsPhone.js +5 -0
  147. package/src/helpers/isiOS.js +5 -0
  148. package/src/html5media.js +19 -0
  149. package/src/index.js +2 -0
  150. package/src/logger.js +31 -0
  151. package/src/microevent.js +65 -0
  152. package/src/normalize-options.js +139 -0
  153. package/src/player.js +864 -0
  154. package/src/players/base.js +209 -0
  155. package/src/players/flash.js +172 -0
  156. package/src/players/hls.js +278 -0
  157. package/src/players/html.js +205 -0
  158. package/src/players/index.js +59 -0
  159. package/src/players/shaka.js +219 -0
  160. package/src/playlist.js +362 -0
  161. package/src/screenfull.js +121 -0
  162. package/src/state.js +474 -0
  163. package/src/static/es5.js +344 -0
  164. package/src/static/images/Spinner-small.gif +0 -0
  165. package/src/static/images/close.png +0 -0
  166. package/src/static/images/ic_check_box_black_24dp_1x.png +0 -0
  167. package/src/static/images/ic_check_box_outline_blank_black_24dp_1x.png +0 -0
  168. package/src/static/images/ic_chevron_left_white_24dp_1x.png +0 -0
  169. package/src/static/images/ic_chevron_right_white_24dp_1x.png +0 -0
  170. package/src/static/images/ic_closed_caption_white_24dp_1x.png +0 -0
  171. package/src/static/images/ic_fast_forward_white_24dp_1x.png +0 -0
  172. package/src/static/images/ic_fast_rewind_white_24dp_1x.png +0 -0
  173. package/src/static/images/ic_fullscreen_exit_white_24dp_1x.png +0 -0
  174. package/src/static/images/ic_fullscreen_white_24dp_1x.png +0 -0
  175. package/src/static/images/ic_hd_white_24dp_1x.png +0 -0
  176. package/src/static/images/ic_keyboard_arrow_left_black_24dp_1x.png +0 -0
  177. package/src/static/images/ic_keyboard_arrow_right_black_24dp_1x.png +0 -0
  178. package/src/static/images/ic_pause_white_24dp_1x.png +0 -0
  179. package/src/static/images/ic_play_arrow_white_24dp_1x.png +0 -0
  180. package/src/static/images/ic_refresh_white_24dp_1x.png +0 -0
  181. package/src/static/images/ic_settings_white_24dp_1x.png +0 -0
  182. package/src/static/images/ic_skip_next_white_24dp_1x.png +0 -0
  183. package/src/static/images/ic_skip_previous_white_24dp_1x.png +0 -0
  184. package/src/static/images/ic_toc_white_24dp_1x.png +0 -0
  185. package/src/static/images/ic_volume_off_white_24dp_1x.png +0 -0
  186. package/src/static/images/ic_volume_up_white_24dp_1x.png +0 -0
  187. package/src/static/player4ie8.css +225 -0
  188. package/src/styles/bplaylist.css.js +124 -0
  189. package/src/styles/index.js +1966 -0
  190. package/src/styles/playlist.css.js +84 -0
  191. package/src/styles/rplaylist.css.js +98 -0
  192. package/src/svgs.js +111 -0
  193. package/src/types/Logger.js +10 -0
  194. package/src/types/Options.js +179 -0
  195. package/src/types/Playlist.js +3 -0
  196. package/src/types/Source.js +28 -0
  197. package/src/types/State.js +46 -0
  198. package/src/types/Styles.js +11 -0
  199. package/src/types/TimeData.js +8 -0
  200. package/src/types/Translation.js +69 -0
  201. package/src/utils/absolutizeUrl.js +9 -0
  202. package/src/utils/addClass.js +9 -0
  203. package/src/utils/addEvent.js +31 -0
  204. package/src/utils/addProperty.js +65 -0
  205. package/src/utils/appendChild.js +14 -0
  206. package/src/utils/buff2hex.js +5 -0
  207. package/src/utils/contains.js +33 -0
  208. package/src/utils/createElement.js +24 -0
  209. package/src/utils/each.js +34 -0
  210. package/src/utils/escapeHTML.js +8 -0
  211. package/src/utils/existy.js +4 -0
  212. package/src/utils/extend.js +17 -0
  213. package/src/utils/filter.js +16 -0
  214. package/src/utils/find.js +11 -0
  215. package/src/utils/findIndex.js +20 -0
  216. package/src/utils/first.js +5 -0
  217. package/src/utils/get.js +19 -0
  218. package/src/utils/has.js +5 -0
  219. package/src/utils/hasClass.js +6 -0
  220. package/src/utils/head.js +11 -0
  221. package/src/utils/inRange.js +16 -0
  222. package/src/utils/index.js +73 -0
  223. package/src/utils/isArray.js +4 -0
  224. package/src/utils/isBoolean.js +3 -0
  225. package/src/utils/isElement.js +7 -0
  226. package/src/utils/isEmpty.js +6 -0
  227. package/src/utils/isEqual.js +33 -0
  228. package/src/utils/isEqualBuffer.js +13 -0
  229. package/src/utils/isFunction.js +3 -0
  230. package/src/utils/isNotEmpty.js +5 -0
  231. package/src/utils/isObject.js +5 -0
  232. package/src/utils/isString.js +9 -0
  233. package/src/utils/last.js +4 -0
  234. package/src/utils/map.js +11 -0
  235. package/src/utils/negate.js +8 -0
  236. package/src/utils/noop.js +1 -0
  237. package/src/utils/notExisty.js +5 -0
  238. package/src/utils/reduce.js +8 -0
  239. package/src/utils/remove.js +7 -0
  240. package/src/utils/removeClass.js +8 -0
  241. package/src/utils/removeEvent.js +7 -0
  242. package/src/utils/toArray.js +7 -0
  243. package/src/utils/toggleClass.js +16 -0
  244. package/src/utils/uidGenerator.js +8 -0
  245. package/src/utils/upperFirst.js +4 -0
  246. package/tests/extensions/__snapshots__/download.spec.js.snap +226 -0
  247. package/tests/extensions/__snapshots__/fullscreen.spec.js.snap +30 -0
  248. package/tests/extensions/__snapshots__/title.spec.js.snap +16 -0
  249. package/tests/extensions/download.spec.js +111 -0
  250. package/tests/extensions/fullscreen.spec.js +56 -0
  251. package/tests/extensions/title.spec.js +35 -0
  252. package/tests/mocks/assets/BaseM.mp4 +0 -0
  253. package/tests/mocks/assets/hls.min.js +5 -0
  254. package/tests/mocks/assets/styleMock.js +1 -0
  255. package/tests/mocks/base-player-options.js +47 -0
  256. package/tests/mocks/sources.js +58 -0
  257. package/tests/mocks/timedata/cc_en.vtt +171 -0
  258. package/tests/mocks/timedata/cc_ge.vtt +178 -0
  259. package/tests/utils/wait.js +1 -0
  260. package/webpack.config.js +78 -0
  261. package/dist/.DS_Store +0 -0
  262. package/dist/cdn/.DS_Store +0 -0
@@ -0,0 +1,45 @@
1
+ import BaseExtension from './base';
2
+
3
+ import createElement from '../utils/createElement';
4
+
5
+ import popover from './helpers/popover';
6
+
7
+ import createSvg, { BACKWARD } from '../svgs';
8
+
9
+ const CN = 'rmp-ext-backward';
10
+
11
+ export default class BackwardExtension extends BaseExtension {
12
+ constructor(player, state, options) {
13
+ super(player, state, options);
14
+ this.logger.debug('backward:extension:creating');
15
+
16
+ this.render();
17
+ this.addEvent(this.$el, 'click', this.backward.bind(this));
18
+
19
+ this.logger.debug('backward:extension:created');
20
+ }
21
+
22
+ render() {
23
+ /** @type {HTMLMediaElement} */
24
+ this.$el = createElement('button', { type: 'button', class: CN });
25
+ setTimeout(() => popover(this, { $button: this.$el, text: this.$t('backward') }) );
26
+ createSvg(this.$el, BACKWARD);
27
+ }
28
+
29
+ backward() {
30
+ this.player.setCurrentTime(this.player.getCurrentTime() - this.options.skipDelta);
31
+ this.bus.emit('heartbeatextensions');
32
+ }
33
+
34
+ getElement() {
35
+ return this.$el;
36
+ }
37
+
38
+ destroy() {
39
+ super.destroy();
40
+
41
+ const parent = this.$el.parentNode;
42
+ parent.removeChild(this.$el);
43
+ this.$el = null;
44
+ }
45
+ }
@@ -0,0 +1,73 @@
1
+ // @flow
2
+ import Entity from '../entity';
3
+
4
+ import { isNotEmpty, upperFirst, isFunction, contains } from '../utils';
5
+
6
+ import BaseController from '../players/base';
7
+ import StateEntity from '../state';
8
+
9
+ import $t from '../helpers/$t';
10
+
11
+ import type { Player$ExtensionOptions } from '../types/Options';
12
+ import type { Player$Translation } from '../types/Translation';
13
+
14
+ type Listener = {
15
+ (event: string, ...args: Array<mixed>): mixed,
16
+ _safe_inner? : boolean
17
+ }
18
+
19
+ export default class BaseExtension extends Entity {
20
+ player: BaseController
21
+ options: Player$ExtensionOptions
22
+ state: StateEntity
23
+ _events: string[]
24
+
25
+ constructor(player: BaseController, state: StateEntity, options: Player$ExtensionOptions, events?: string[] = []) {
26
+ super(options.bus, options.logger);
27
+ this.player = player;
28
+ this.options = options;
29
+ this.state = state;
30
+
31
+ this._events = events;
32
+
33
+ const listener: Listener = this._listener.bind(this);
34
+ listener._safe_inner = true; // eslint-disable-line camelcase
35
+
36
+ if (isNotEmpty(events)) {
37
+ // $FlowFixMe
38
+ this._listener = listener;
39
+ // $FlowFixMe
40
+ this.bus.on('*', listener);
41
+ }
42
+ }
43
+
44
+ $t(key: $Keys<Player$Translation>): string {
45
+ const i18n = this.options.i18n;
46
+ return $t(i18n, key);
47
+ }
48
+
49
+ _listener(event: string, ...args: Array<mixed>) {
50
+ if (contains(this._events, event)) {
51
+ const fncName = `on${upperFirst(event)}`;
52
+ // $FlowFixMe
53
+ const fnc = this[fncName];
54
+ if (isFunction(fnc)) {
55
+ fnc.apply(this, args);
56
+ }
57
+ }
58
+ }
59
+
60
+ destroy() {
61
+ super.destroy();
62
+ // $FlowFixMe
63
+ this.bus.off('*', this._listener);
64
+ }
65
+
66
+ getElement(): ?HTMLElement {
67
+ return null;
68
+ }
69
+
70
+ getOuter(): ?HTMLElement {
71
+ return null;
72
+ }
73
+ }
@@ -0,0 +1,50 @@
1
+ import BaseExtension from './base';
2
+
3
+ import { createElement } from '../utils';
4
+
5
+ import popover from './helpers/popover';
6
+
7
+ import createSvg, { NEXT_TRACK } from '../svgs';
8
+
9
+ const CN = 'rmp-ext-bottom-next';
10
+ const CN_HIDDEN = `${CN}--hidden`;
11
+
12
+ export default class BottomNext extends BaseExtension {
13
+ constructor(player, sate, options) {
14
+ super(player, sate, options);
15
+
16
+ this.logger.debug('bottom-next:extension:creating');
17
+
18
+ this.render();
19
+
20
+ const bus = this.options.bus;
21
+ this.addEvent(this.$el, 'click', () => bus.emit('nexttrack'));
22
+
23
+ this.logger.debug('bottom-next:extension:created');
24
+ }
25
+
26
+ render() {
27
+ /** @type {HTMLMediaElement} */
28
+ this.$el = createElement('button', { type: 'button', class: `${CN}` });
29
+ setTimeout(() => popover(this, { $button: this.$el, text: this.$t('next') }) );
30
+ createSvg(this.$el, NEXT_TRACK);
31
+
32
+ if (!this.player.options.nextTrackTitle) {
33
+ this.$el.classList.add(CN_HIDDEN);
34
+ }
35
+ }
36
+
37
+ getElement() {
38
+ return this.$el;
39
+ }
40
+
41
+ destroy() {
42
+ super.destroy();
43
+
44
+ if (!this.$el) return;
45
+
46
+ const parent = this.$el.parentNode;
47
+ parent.removeChild(this.$el);
48
+ this.$el = null;
49
+ }
50
+ }
@@ -0,0 +1,50 @@
1
+ import BaseExtension from './base';
2
+
3
+ import popover from './helpers/popover';
4
+
5
+ import { createElement } from '../utils';
6
+
7
+ import createSvg, { PREV_TRACK } from '../svgs';
8
+
9
+ const CN = 'rmp-ext-bottom-prev';
10
+ const CN_HIDDEN = `${CN}--hidden`;
11
+
12
+ export default class BottomPrev extends BaseExtension {
13
+ constructor(player, sate, options) {
14
+ super(player, sate, options);
15
+
16
+ this.logger.debug('bottom-prev:extension:creating');
17
+
18
+ this.render();
19
+
20
+ const bus = this.options.bus;
21
+ this.addEvent(this.$el, 'click', () => bus.emit('prevtrack'));
22
+
23
+ this.logger.debug('bottom-prev:extension:created');
24
+ }
25
+
26
+ render() {
27
+ /** @type {HTMLMediaElement} */
28
+ this.$el = createElement('button', { type: 'button', class: `${CN}` });
29
+ setTimeout(() => popover(this, { $button: this.$el, text: this.$t('prev') }) );
30
+ createSvg(this.$el, PREV_TRACK);
31
+
32
+ if (!this.player.options.prevTrackTitle) {
33
+ this.$el.classList.add(CN_HIDDEN);
34
+ }
35
+ }
36
+
37
+ getElement() {
38
+ return this.$el;
39
+ }
40
+
41
+ destroy() {
42
+ super.destroy();
43
+
44
+ if (!this.$el) return;
45
+
46
+ const parent = this.$el.parentNode;
47
+ parent.removeChild(this.$el);
48
+ this.$el = null;
49
+ }
50
+ }
@@ -0,0 +1,78 @@
1
+ import BaseExtension from './base';
2
+
3
+ import createElement from '../utils/createElement';
4
+
5
+ import addClass from '../utils/addClass';
6
+ import removeClass from '../utils/removeClass';
7
+
8
+ import createSvg, { SPINNER } from '../svgs';
9
+
10
+ const CN = 'rmp-ext-buffering';
11
+ const PROCESSING_CN = `${CN}--processing`;
12
+
13
+ export default class BufferingExtension extends BaseExtension {
14
+ _timerId
15
+
16
+ constructor(player, state, options) {
17
+ super(player, state, options, ['seeking', 'waiting', 'seeked', 'canplay', 'playing', 'timeupdate']);
18
+ this.logger.debug('buffering:extension:creating');
19
+
20
+ this.render();
21
+ if (!options.isMobile) {
22
+ this.startProcessing();
23
+ }
24
+ this.logger.debug('buffering:extension:created');
25
+ }
26
+
27
+ onWaiting() {
28
+ this.startProcessing();
29
+ }
30
+
31
+ onSeeking() {
32
+ this.startProcessing();
33
+ }
34
+
35
+ startProcessing() {
36
+ clearTimeout(this._timerId);
37
+ this._timerId = setTimeout(() => addClass(this.$outer, PROCESSING_CN), this.options.bufferingTimeout);
38
+ }
39
+
40
+ onTimeupdate() {
41
+ this.hideProcessing();
42
+ }
43
+
44
+ onSeeked() {
45
+ this.hideProcessing();
46
+ }
47
+
48
+ onCanplay() {
49
+ this.hideProcessing();
50
+ }
51
+
52
+ onPlaying() {
53
+ this.hideProcessing();
54
+ }
55
+
56
+ render() {
57
+ /** @type {HTMLMediaElement} */
58
+ this.$outer = createElement('div', { class: CN });
59
+ const span = createElement('span', { class: `${CN}__message` }, this.$outer);
60
+ createSvg(span, SPINNER, {});
61
+ }
62
+
63
+ getOuter() {
64
+ return this.$outer;
65
+ }
66
+
67
+ hideProcessing() {
68
+ clearTimeout(this._timerId);
69
+ removeClass(this.$outer, PROCESSING_CN);
70
+ }
71
+
72
+ destroy() {
73
+ super.destroy();
74
+ const parent = this.$outer.parentNode;
75
+ parent.removeChild(this.$outer);
76
+ this.$outer = null;
77
+ }
78
+ }
@@ -0,0 +1,350 @@
1
+ // import BaseExtension from './base';
2
+
3
+ // import { createElement } from '../utils';
4
+
5
+ // import opener from './helpers/clickOpener';
6
+ // import popover from './helpers/popover';
7
+
8
+ // import createSvg, { C2PA, CHEVRON_DOWN, EXT_LINK, INFO, LOCK } from '../svgs';
9
+ // import { ValidationResult } from '@ravnur-inc/c2pa';
10
+
11
+ // const CN = 'rmp-ext-c2pa';
12
+ // const CN_VISIBLE = `${CN}--visible`;
13
+ // const CN_NO_DATA = `${CN}--no-data`;
14
+ // const CN_INVALID = `${CN}--invalid`;
15
+ // const BUTTON_CN = `${CN}__button`;
16
+ // const SELECTOR_CN = `${CN}__selector`;
17
+ // const SELECTOR_OPEN_CN = `${SELECTOR_CN}--open`;
18
+ // const VIEW_MORE_CN = `${CN}__view-more`;
19
+ // const ITEMS_WRAPPER_CN = `${CN}__items-wrapper`;
20
+ // const ITEMS_STATUS_WRAPPER_CN = `${CN}__items-status--wrapper`;
21
+ // const ITEMS_STATUS_CN = `${CN}__items-status`;
22
+ // const ITEMS_STATUS_SUCCESS_CN = `${CN}__items-status--success`;
23
+ // const ITEMS_STATUS_FAILED_CN = `${CN}__items-status--invalid`;
24
+ // const ITEMS_STATUS_NO_DATA_CN = `${CN}__items-status--no-data`;
25
+ // const ITEMS_STATUS_UNDEFINED = `${CN}__items-status--undefined`;
26
+ // const ITEM_CN = `${CN}__item`;
27
+ // const ITEM_CN_INVALID = `${ITEM_CN}--invalid`;
28
+ // const ITEM_COLLAPSED_CN = `${CN}__item--collapsed`;
29
+ // const ITEM_LINE_CN = `${CN}__item--line`;
30
+ // const ITEM_TITLE_CN = `${ITEM_CN}--title`;
31
+ // const ITEM_INFO_WRAPPER_CN = `${ITEM_CN}--info-wrapper`;
32
+ // const ITEM_STATUS_MESSAGE_CN = `${ITEM_CN}--status-message`;
33
+ // const ITEM_STATUS_MESSAGE_EXTENDED_CN = `${ITEM_CN}--status-message-extended`;
34
+ // const ITEM_THUMBNAIL_CN = `${ITEM_CN}--thumbnail`;
35
+ // const ITEM_SECTION_TITLE = `${ITEM_CN}--section-title`;
36
+ // const ITEM_WRAPPER_CN = `${CN}__item--wrapper`;
37
+ // const ITEM_TOGGLER_CN = `${CN}__item--toggler`;
38
+ // const ITEM_TOGGLER_OPENED_CN = `${CN}__item--toggler-opened`;
39
+ // const ITEM_DETAILS_CN = `${CN}__item-details`;
40
+ // const ITEM_DETAILS_VISIBLE_CN = `${CN}__item-details-visible`;
41
+ // const ITEM_DETAILS_ISSUER_ICON_CN = `${ITEM_DETAILS_CN}--icon`;
42
+ // const ITEM_DETAILS_ISSUER_WRAPPER_CN = `${ITEM_DETAILS_CN}--wrapper`;
43
+ // const ITEM_DETAILS_ISSUER_CN = `${ITEM_DETAILS_CN}--issuer`;
44
+ // const ITEM_DETAILS_ISSUER_TITLE_CN = `${ITEM_DETAILS_CN}--issuer-title`;
45
+ // const NO_DATA_MESSAGE_CN = `${CN}__no-data-message`;
46
+ // const NO_DATA_MESSAGE_WRAPPER_CN = `${CN}__no-data-message-wrapper`;
47
+
48
+ // const LEARN_MORE_LINK = 'https://c2pa.org/';
49
+
50
+ // // FIXME: RMP-2900 Temprorary hardcode for demo purposes, will be removed later
51
+ // const ravnurLogo = () => {
52
+ // const pattern = `pattern-${Math.random().toString(36)}`;
53
+
54
+ // return `
55
+ // <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
56
+ // <rect width="24" height="24" fill="url(#${pattern})"/>
57
+ // <defs>
58
+ // <pattern id="${pattern}" patternContentUnits="objectBoundingBox" width="1" height="1">
59
+ // <use xlink:href="#image0_89_4522" transform="scale(0.00195312)"/>
60
+ // </pattern>
61
+ // <image id="image0_89_4522" width="512" height="512" xlink:href="data:image/png;base64,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"/>
62
+ // </defs>
63
+ // </svg>
64
+ // `;
65
+ // };
66
+
67
+ // // FIXME: RMP-2900 Temprorary hardcode for demo purposes, will be removed later
68
+ // const micrasoftLogo = () => {
69
+ // const pattern = `pattern-${Math.random().toString(36)}`;
70
+
71
+ // return `
72
+ // <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
73
+ // <rect width="24" height="24" fill="url(#${pattern})"/>
74
+ // <defs>
75
+ // <pattern id="${pattern}" patternContentUnits="objectBoundingBox" width="1" height="1">
76
+ // <use xlink:href="#image0_89_4532" transform="scale(0.00357143)"/>
77
+ // </pattern>
78
+ // <image id="image0_89_4532" width="280" height="280" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARgAAAEYCAYAAACHjumMAAAACXBIWXMAAA7EAAAOxAGVKw4bAAADWUlEQVR42u3coW7TURyG4bdkmsANTOwGtjuYG5YEi9tdzBDuYRJJkA0WDBIzySyiQTYpIYiKZiC4AHaalGSH5/Ffmvxy8rp/CwAAAAAAAAAAAAAAAODvFqODH89PnlRnTje1bXXz+P3X3X0Hrz52Uh073dTWry/6MjI42uNHzqpPbj21VXVafR/YXFZXTje1ZfViZPDIzYBDERhAYACBARAYQGAAgQEQGEBgAIEBEBhAYACBARAYQGAAgQEQGEBgAIEBEBhAYACBARAYQGAAgQEQGEBgAIEBEBhAYAAEBhAYQGAABAYQGEBgAAQGEBhAYAAEBhAYQGAABAYQGEBgAAQGEBhAYAAEBhAYQGAABAYQGEBgAAQGEBhAYAAEBhAYAIEBBAYQGACBAQQGEBgAgQEEBhAYAIEBBAYQGACBAQQGEBgAgQEEBhAYAIEBBAYQGACBAQQGEBgAgQEEBhAYAIEBBAZAYACBAQQGQGAAgQEEBkBgAIEBBAZAYACBAQQGQGAAgQEEBkBgAIEBBAZAYACBAQQGQGAAgQEEBkBgAIEBBAZAYACBARAYQGCAh+loj822Wjnd1L5Vd4ObjXcxvfW/CMxNderWU7urfg5urqs3Tje1nRMAAAAAAAAAAAAAAMB/bTG8eLs5qS6dbmqb6rqXT7f3Hfz60EV17nRTu108693IYJ+PHY+rK7ee2qo/Hy5uBzbn3sX0ljUWGP8HAxyMwAACAwgMgMAAAgMIDIDAAAIDCAyAwAACAwgMgMAAAgMIDIDAAAIDCAyAwAACAwgMgMAAAgMIDIDAAAIDCAyAwAACAyAwgMAAAgMgMIDAAAIDIDCAwAACAyAwgMAAAgMgMIDAAAIDIDCAwAACAyAwgMAAAgMgMIDAAAIDIDCAwAACAyAwgMAACAwgMIDAAAgMIDCAwAAIDCAwgMAACAwgMIDAAAgMIDCAwAAIDCAwgMAACAwgMIDAAAgMIDCAwAAIDCAwgMAACAwgMAACAwgMIDAAAgMIDCAwAAIDCAwgMAACAwgMIDAAAgMIDCAwAAIDCAwgMAACAwgMIDAAAgMIDCAwAAIDCAwgMAACAwgMgMAAAgM8TEd7bNbV0ummtq52g5tb72J6n50AAAAAAAAAAAAAAAAAOITfItIwOtIh4WoAAAAASUVORK5CYII="/>
79
+ // </defs>
80
+ // </svg>
81
+ // `;
82
+ // };
83
+
84
+ // export default class C2PAExtension extends BaseExtension {
85
+ // constructor(player, state, options) {
86
+ // super(player, state, options, ['c2painit', 'c2pafragment', 'c2paexception']);
87
+ // this.logger.debug('c2pa:extension:creating');
88
+
89
+ // this.render();
90
+ // this.init();
91
+ // }
92
+
93
+ // render() {
94
+ // this.$el = createElement('div', { class: CN });
95
+ // this.$button = createElement('button', { type: 'button', class: BUTTON_CN }, this.$el);
96
+ // this.$selector = createElement('div', { class: SELECTOR_CN }, this.$el);
97
+ // this.$statusWrapper = createElement('div', { class: ITEMS_STATUS_WRAPPER_CN }, this.$selector);
98
+ // this.$itemsWrapper = createElement('div', { class: `${ITEMS_WRAPPER_CN} tab-content` }, this.$selector);
99
+
100
+ // createSvg(this.$button, C2PA);
101
+ // this._renderViewMore();
102
+ // }
103
+
104
+ // init() {
105
+ // const $button = this.$button;
106
+ // const $selector = this.$selector;
107
+ // const reposition = false;
108
+ // const closeOnClick = false;
109
+
110
+ // opener(this, {
111
+ // $button,
112
+ // $selector,
113
+ // SELECTOR_OPEN_CN,
114
+ // reposition,
115
+ // closeOnClick,
116
+ // firstFocusItemSelector: `.${ITEM_CN}`
117
+ // });
118
+
119
+ // popover(this, { $button, text: this.$t('c2pa') });
120
+ // }
121
+
122
+ // _renderItem(item, collapsed) {
123
+ // const $item = createElement(
124
+ // 'div',
125
+ // { class: `${ITEM_CN} ${item.isValid ? '' : ITEM_CN_INVALID}` },
126
+ // this.$itemsWrapper
127
+ // );
128
+
129
+ // // Using template because there are too many tags and nestings
130
+ // $item.innerHTML = this.itemTemplate(item, collapsed);
131
+ // const toggleButton = $item.querySelector(`.${ITEM_TOGGLER_CN}`);
132
+
133
+ // if (toggleButton) {
134
+ // this._attachClickEvent(toggleButton);
135
+ // }
136
+ // }
137
+
138
+ // _renderStatus(status = null) {
139
+ // const statusClassess = {
140
+ // [ValidationResult.Complete]: ITEMS_STATUS_SUCCESS_CN,
141
+ // [ValidationResult.Failed]: ITEMS_STATUS_FAILED_CN,
142
+ // [ValidationResult.NoData]: ITEMS_STATUS_NO_DATA_CN,
143
+ // [null]: ITEMS_STATUS_UNDEFINED
144
+ // };
145
+
146
+ // const statusValues = {
147
+ // [ValidationResult.Complete]: this.$t('c2pa-status-valid'),
148
+ // [ValidationResult.Failed]: this.$t('c2pa-status-invalid'),
149
+ // [ValidationResult.NoData]: this.$t('c2pa-status-incomplete'),
150
+ // [null]: this.$t('c2pa-status-unknown')
151
+ // };
152
+
153
+ // this.$statusWrapper.innerText = this.$t('c2pa-video-credentials-status');
154
+
155
+ // const $status = createElement(
156
+ // 'div',
157
+ // { class: `${ITEMS_STATUS_CN} ${statusClassess[status]}` },
158
+ // this.$statusWrapper
159
+ // );
160
+
161
+ // $status.innerText = statusValues[status];
162
+
163
+ // this.$el.dataset.status = status;
164
+
165
+ // if (status === ValidationResult.Failed) {
166
+ // this.$el.classList.add(CN_INVALID);
167
+ // }
168
+
169
+ // if (status === ValidationResult.NoData) {
170
+ // this.$el.classList.add(CN_NO_DATA);
171
+ // }
172
+ // }
173
+
174
+ // _renderViewMore() {
175
+ // const $button = createElement('a', {
176
+ // class: VIEW_MORE_CN,
177
+ // href: LEARN_MORE_LINK,
178
+ // target: '_blank'
179
+ // }, this.$selector);
180
+ // $button.innerText = this.$t('view-more');
181
+ // createSvg($button, EXT_LINK, { width: 13, height: 13 });
182
+ // }
183
+
184
+ // _renderInfoMessage(message) {
185
+ // this.$itemsWrapper.innerHTML = '';
186
+ // const $messageWrapper = createElement('div', { class: NO_DATA_MESSAGE_WRAPPER_CN }, this.$itemsWrapper);
187
+ // createSvg($messageWrapper, INFO, { width: 24, height: 24 });
188
+
189
+ // const $message = createElement('div', { class: NO_DATA_MESSAGE_CN }, $messageWrapper);
190
+ // $message.innerText = message;
191
+ // }
192
+
193
+ // _attachClickEvent(toggler) {
194
+ // toggler.addEventListener('click', (e) => {
195
+ // e.preventDefault();
196
+
197
+ // this.handleClick(toggler);
198
+ // });
199
+ // }
200
+
201
+ // handleClick(toggler) {
202
+ // const parent = toggler.parentNode;
203
+ // const detailsWrapper = parent.querySelector(`.${ITEM_INFO_WRAPPER_CN}`);
204
+ // detailsWrapper.classList.toggle(ITEM_DETAILS_VISIBLE_CN);
205
+ // toggler.classList.toggle(ITEM_TOGGLER_OPENED_CN);
206
+ // }
207
+
208
+ // getOuter() {
209
+ // return this.$el;
210
+ // }
211
+
212
+ // onC2painit({ status, data }) {
213
+ // // // Last track was invalid, stop re-rendering
214
+ // if (this.$el.dataset.status && this.$el.dataset.status !== ValidationResult.Complete) {
215
+ // return;
216
+ // }
217
+
218
+ // this.$itemsWrapper.innerHTML = '';
219
+
220
+ // this.$el.classList.add(CN_VISIBLE);
221
+ // this._renderStatus(status);
222
+
223
+ // if (status === ValidationResult.NoData) {
224
+ // this._renderInfoMessage(this.$t('c2pa-no-data-message'));
225
+
226
+ // return;
227
+ // }
228
+
229
+ // try {
230
+ // if (data.length > 1) {
231
+ // for (let i = 0; i < data.length; i++) {
232
+ // this._renderItem(data[i], true);
233
+ // }
234
+ // } else {
235
+ // this._renderItem(data[0]);
236
+ // }
237
+ // } catch (e) {
238
+ // console.error(e);
239
+ // }
240
+ // }
241
+
242
+ // onC2pafragment(fragment) {
243
+ // if (!fragment.valid) {
244
+ // const $message = document.querySelector(`.${ITEM_STATUS_MESSAGE_CN}`);
245
+ // const $icon = document.querySelector(`.${ITEM_DETAILS_ISSUER_ICON_CN}`);
246
+ // const infoSvg = createSvg(document.createElement('div'), INFO, { width: 25, height: 25 });
247
+
248
+ // $message.innerText = this.$t('c2pa-signature-invalid');
249
+ // $icon.innerHTML = infoSvg.outerHTML;
250
+ // this.$statusWrapper.innerHTML = '';
251
+ // this._renderStatus(ValidationResult.Failed);
252
+ // }
253
+ // }
254
+
255
+ // onC2paexception() {
256
+ // this._renderStatus();
257
+ // this._renderInfoMessage(this.$t('c2pa-exception-subtitle'));
258
+ // }
259
+
260
+ // destroy() {
261
+ // super.destroy();
262
+
263
+ // const parent = this.$el.parentNode;
264
+
265
+ // parent.removeChild(this.$el);
266
+
267
+ // this.$el = null;
268
+ // this.$button = null;
269
+ // this.$selector = null;
270
+ // }
271
+
272
+ // encodedByTemplate(item) {
273
+ // return `
274
+ // <div>
275
+ // <div class="${ITEM_SECTION_TITLE}">${this.$t('c2pa-encoded-by')}</div>
276
+ // <div class="${ITEM_WRAPPER_CN}">
277
+ // <div class="${ITEM_THUMBNAIL_CN}">${micrasoftLogo()} </div>
278
+ // <div class="${ITEM_TITLE_CN}">${item.encoder[0].name}</div>
279
+ // </div>
280
+ // </div>
281
+ // `;
282
+ // }
283
+
284
+ // signerDetailsTemplate(item, statusSVG) {
285
+ // return `
286
+ // <div>
287
+ // <div class="${ITEM_DETAILS_ISSUER_ICON_CN}">${statusSVG.outerHTML}</div>
288
+ // <div class="${ITEM_DETAILS_ISSUER_WRAPPER_CN}">
289
+ // <div class="${ITEM_DETAILS_ISSUER_CN}">
290
+ // <div class="${ITEM_DETAILS_ISSUER_TITLE_CN}">${this.$t('c2pa-issued-to')}</div>
291
+ // <div>${item.signer}</div>
292
+ // </div>
293
+ // <div class="${ITEM_DETAILS_ISSUER_CN}">
294
+ // <div class="${ITEM_DETAILS_ISSUER_TITLE_CN}">${this.$t('c2pa-issued-by')}</div>
295
+ // <div>${item.issuer}</div>
296
+ // </div>
297
+ // </div>
298
+ // </div>
299
+ // `;
300
+ // }
301
+
302
+ // itemTemplate(item, collapsed = false) {
303
+ // let statusMessage = this.$t('c2pa-signature-valid');
304
+ // let statusMessageExtended = this.$t('c2pa-signature-valid-extended');
305
+ // // const companyPlaceholderSvg = createSvg(document.createElement('div'), COMPANY_PLACEHOLDER);
306
+ // const caretSvg = createSvg(document.createElement('div'), CHEVRON_DOWN, { height: 25, width: 25 });
307
+ // let statusSVG = createSvg(document.createElement('div'), LOCK, { width: 25, height: 25 });
308
+
309
+ // if (!item.isValid) {
310
+ // statusMessage = this.$t('c2pa-signature-invalid');
311
+ // statusMessageExtended = this.$t('c2pa-signature-invalid');
312
+ // statusSVG = createSvg(document.createElement('div'), INFO, { width: 25, height: 25 });
313
+ // this._renderStatus(ValidationResult.Failed);
314
+ // }
315
+
316
+ // if (!item.encoder || !item.signer) {
317
+ // return `
318
+ // <div class="${collapsed ? ITEM_COLLAPSED_CN : ''}" tabindex="0">
319
+ // <div class="${ITEM_WRAPPER_CN}">
320
+ // <div class="${ITEM_THUMBNAIL_CN}">${statusSVG.outerHTML}</div>
321
+ // <div class="${ITEM_INFO_WRAPPER_CN}">
322
+ // <div class="${ITEM_STATUS_MESSAGE_CN}">${statusMessage}</div>
323
+ // </div>
324
+ // </div>
325
+ // </div>
326
+ // `;
327
+ // }
328
+
329
+ // return `
330
+ // <div class="${collapsed ? ITEM_COLLAPSED_CN : ''}" tabindex="0">
331
+ // ${collapsed ? `<div class="${ITEM_LINE_CN}"></div>` : ''}
332
+ // ${!collapsed ? `<div class="${ITEM_SECTION_TITLE}">${this.$t('c2pa-video-owner')}</div>` : ''}
333
+ // <div class="${ITEM_WRAPPER_CN}">
334
+ // <div class="${ITEM_THUMBNAIL_CN}">${ravnurLogo()}</div>
335
+ // <div class="${ITEM_INFO_WRAPPER_CN}">
336
+ // <div class="${ITEM_TITLE_CN}">${item.signer}</div>
337
+ // <div class="${ITEM_STATUS_MESSAGE_CN}">${statusMessage}</div>
338
+ // <div class="${ITEM_STATUS_MESSAGE_EXTENDED_CN}">${statusMessageExtended}</div>
339
+ // <div class="${ITEM_DETAILS_CN}">
340
+ // ${this.signerDetailsTemplate(item, statusSVG)}
341
+ // ${collapsed ? this.encodedByTemplate(item) : ''}
342
+ // </div>
343
+ // </div>
344
+ // <button class="${ITEM_TOGGLER_CN}">${caretSvg.outerHTML}</button>
345
+ // </div>
346
+ // ${!collapsed ? this.encodedByTemplate(item) : ''}
347
+ // </div>
348
+ // `;
349
+ // }
350
+ // }