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.
- package/.eslintignore +7 -0
- package/.eslintrc.js +206 -0
- package/.flowconfig +3 -0
- package/.vscode/extensions.json +7 -0
- package/.vscode/launch.json +37 -0
- package/.vscode/settings.json +4 -0
- package/README-Private.md +54 -0
- package/babel.config.js +28 -0
- package/bitbucket-pipelines.yml +61 -0
- package/cert.pem +23 -0
- package/demo/BaseM.mp4 +0 -0
- package/demo/HD.mp4 +0 -0
- package/demo/annotations.json +50 -0
- package/demo/annotations_ge.json +50 -0
- package/demo/base.mp3 +0 -0
- package/demo/cc_2125en.vtt +4958 -0
- package/demo/cc_en.vtt +171 -0
- package/demo/cc_ge.vtt +178 -0
- package/demo/chapters_en.vtt +38 -0
- package/demo/chapters_ge.vtt +5 -0
- package/demo/chapters_ge1.json +23 -0
- package/demo/hls/audio/stereo/en/128kbit.m3u8 +912 -0
- package/demo/hls/audio/stereo/none/128kbit.m3u8 +912 -0
- package/demo/hls/audio/surround/en/320kbit.m3u8 +912 -0
- package/demo/hls/playlist.m3u8 +31 -0
- package/demo/hls/video/10000kbit.m3u8 +894 -0
- package/demo/hls/video/1100kbit.m3u8 +894 -0
- package/demo/hls/video/1500kbit.m3u8 +894 -0
- package/demo/hls/video/250kbit.m3u8 +894 -0
- package/demo/hls/video/4000kbit.m3u8 +894 -0
- package/demo/hls/video/500kbit.m3u8 +894 -0
- package/demo/hls/video/6000kbit.m3u8 +894 -0
- package/demo/hls/video/800kbit.m3u8 +894 -0
- package/demo/hls.js +5 -0
- package/demo/hls.js.map +1 -0
- package/demo/hls.min.js +2 -0
- package/demo/hls.min.js.map +1 -0
- package/demo/playlist.m3u8 +31 -0
- package/demo/ravnur-flash-audio.swf +0 -0
- package/demo/ravnur-flash-video-hls.swf +0 -0
- package/demo/ravnur-flash-video.swf +0 -0
- package/demo/shaka/shaka-player.foo.debug.d.ts +4532 -0
- package/demo/shaka/shaka-player.foo.debug.externs.js +3886 -0
- package/demo/shaka/shaka-player.foo.debug.js +1746 -0
- package/demo/shaka/shaka-player.foo.debug.map +8 -0
- package/demo/shaka/wrapper.js +7 -0
- package/demo/test.html +458 -0
- package/dist/RavnurMediaPlayer.min.js +1 -1
- package/dist/cdn/RavnurMediaPlayer.min.js +1 -1
- package/jest.config.js +4 -0
- package/key.pem +27 -0
- package/lib/es5.js +344 -0
- package/lib/images/Spinner-small.gif +0 -0
- package/lib/images/close.png +0 -0
- package/lib/images/ic_check_box_black_24dp_1x.png +0 -0
- package/lib/images/ic_check_box_outline_blank_black_24dp_1x.png +0 -0
- package/lib/images/ic_chevron_left_white_24dp_1x.png +0 -0
- package/lib/images/ic_chevron_right_white_24dp_1x.png +0 -0
- package/lib/images/ic_closed_caption_white_24dp_1x.png +0 -0
- package/lib/images/ic_fast_forward_white_24dp_1x.png +0 -0
- package/lib/images/ic_fast_rewind_white_24dp_1x.png +0 -0
- package/lib/images/ic_fullscreen_exit_white_24dp_1x.png +0 -0
- package/lib/images/ic_fullscreen_white_24dp_1x.png +0 -0
- package/lib/images/ic_hd_white_24dp_1x.png +0 -0
- package/lib/images/ic_keyboard_arrow_left_black_24dp_1x.png +0 -0
- package/lib/images/ic_keyboard_arrow_right_black_24dp_1x.png +0 -0
- package/lib/images/ic_pause_white_24dp_1x.png +0 -0
- package/lib/images/ic_photo_white_24dp_1x.png +0 -0
- package/lib/images/ic_play_arrow_white_24dp_1x.png +0 -0
- package/lib/images/ic_refresh_white_24dp_1x.png +0 -0
- package/lib/images/ic_settings_white_24dp_1x.png +0 -0
- package/lib/images/ic_skip_next_white_24dp_1x.png +0 -0
- package/lib/images/ic_skip_previous_white_24dp_1x.png +0 -0
- package/lib/images/ic_toc_white_24dp_1x.png +0 -0
- package/lib/images/ic_volume_off_white_24dp_1x.png +0 -0
- package/lib/images/ic_volume_up_white_24dp_1x.png +0 -0
- package/lib/player4ie8.css +225 -0
- package/package.json +1 -5
- package/server.js +29 -0
- package/src/config/cc.js +56 -0
- package/src/config/i18n.js +101 -0
- package/src/config/options.js +123 -0
- package/src/config/playlist.js +9 -0
- package/src/config/source.js +23 -0
- package/src/config/statuses.js +8 -0
- package/src/config/styles.js +16 -0
- package/src/entity.js +27 -0
- package/src/events.js +5 -0
- package/src/extensions/annotations.js +142 -0
- package/src/extensions/audio-tarcks.js +115 -0
- package/src/extensions/backward.js +45 -0
- package/src/extensions/base.js +73 -0
- package/src/extensions/bottom-next.js +50 -0
- package/src/extensions/bottom-prev.js +50 -0
- package/src/extensions/buffering.js +78 -0
- package/src/extensions/c2pa.js +350 -0
- package/src/extensions/caption-search.js +230 -0
- package/src/extensions/cc.js +874 -0
- package/src/extensions/crawl.js +118 -0
- package/src/extensions/download.js +411 -0
- package/src/extensions/error.js +47 -0
- package/src/extensions/forward.js +44 -0
- package/src/extensions/fullscreen.js +84 -0
- package/src/extensions/help.js +201 -0
- package/src/extensions/helpers/FileSaver.js +157 -0
- package/src/extensions/helpers/clickOpener.js +180 -0
- package/src/extensions/helpers/opener.js +30 -0
- package/src/extensions/helpers/openerHeightChecker.js +13 -0
- package/src/extensions/helpers/popover.js +33 -0
- package/src/extensions/helpers/popoverPosition.js +30 -0
- package/src/extensions/helpers/scrollIntoView.js +9 -0
- package/src/extensions/helpers/storage.js +20 -0
- package/src/extensions/helpers/textContent.js +6 -0
- package/src/extensions/helpers/timeCodeToSeconds.js +44 -0
- package/src/extensions/helpers/transport.js +43 -0
- package/src/extensions/helpers/vtt-loader.js +42 -0
- package/src/extensions/index.js +87 -0
- package/src/extensions/live.js +76 -0
- package/src/extensions/mux.js +57 -0
- package/src/extensions/next-frame.js +44 -0
- package/src/extensions/next.js +48 -0
- package/src/extensions/placeholder.js +241 -0
- package/src/extensions/play.js +102 -0
- package/src/extensions/poster.js +47 -0
- package/src/extensions/prev-frame.js +44 -0
- package/src/extensions/prev.js +48 -0
- package/src/extensions/progress.js +465 -0
- package/src/extensions/resizer.js +37 -0
- package/src/extensions/settings.js +367 -0
- package/src/extensions/theater.js +56 -0
- package/src/extensions/title.js +38 -0
- package/src/extensions/toc.js +334 -0
- package/src/extensions/volume.js +196 -0
- package/src/flash/FlashPlugin.js +301 -0
- package/src/flash/MediaElement.js +361 -0
- package/src/flash/plugins.js +32 -0
- package/src/flash-detector.js +66 -0
- package/src/helpers/$t.js +10 -0
- package/src/helpers/binder.js +11 -0
- package/src/helpers/isAndroid.js +5 -0
- package/src/helpers/isBlackBerry.js +5 -0
- package/src/helpers/isCanvasSupported.js +6 -0
- package/src/helpers/isIE.js +21 -0
- package/src/helpers/isMobile.js +10 -0
- package/src/helpers/isWindows.js +5 -0
- package/src/helpers/isWindowsPhone.js +5 -0
- package/src/helpers/isiOS.js +5 -0
- package/src/html5media.js +19 -0
- package/src/index.js +2 -0
- package/src/logger.js +31 -0
- package/src/microevent.js +65 -0
- package/src/normalize-options.js +139 -0
- package/src/player.js +864 -0
- package/src/players/base.js +209 -0
- package/src/players/flash.js +172 -0
- package/src/players/hls.js +278 -0
- package/src/players/html.js +205 -0
- package/src/players/index.js +59 -0
- package/src/players/shaka.js +219 -0
- package/src/playlist.js +362 -0
- package/src/screenfull.js +121 -0
- package/src/state.js +474 -0
- package/src/static/es5.js +344 -0
- package/src/static/images/Spinner-small.gif +0 -0
- package/src/static/images/close.png +0 -0
- package/src/static/images/ic_check_box_black_24dp_1x.png +0 -0
- package/src/static/images/ic_check_box_outline_blank_black_24dp_1x.png +0 -0
- package/src/static/images/ic_chevron_left_white_24dp_1x.png +0 -0
- package/src/static/images/ic_chevron_right_white_24dp_1x.png +0 -0
- package/src/static/images/ic_closed_caption_white_24dp_1x.png +0 -0
- package/src/static/images/ic_fast_forward_white_24dp_1x.png +0 -0
- package/src/static/images/ic_fast_rewind_white_24dp_1x.png +0 -0
- package/src/static/images/ic_fullscreen_exit_white_24dp_1x.png +0 -0
- package/src/static/images/ic_fullscreen_white_24dp_1x.png +0 -0
- package/src/static/images/ic_hd_white_24dp_1x.png +0 -0
- package/src/static/images/ic_keyboard_arrow_left_black_24dp_1x.png +0 -0
- package/src/static/images/ic_keyboard_arrow_right_black_24dp_1x.png +0 -0
- package/src/static/images/ic_pause_white_24dp_1x.png +0 -0
- package/src/static/images/ic_play_arrow_white_24dp_1x.png +0 -0
- package/src/static/images/ic_refresh_white_24dp_1x.png +0 -0
- package/src/static/images/ic_settings_white_24dp_1x.png +0 -0
- package/src/static/images/ic_skip_next_white_24dp_1x.png +0 -0
- package/src/static/images/ic_skip_previous_white_24dp_1x.png +0 -0
- package/src/static/images/ic_toc_white_24dp_1x.png +0 -0
- package/src/static/images/ic_volume_off_white_24dp_1x.png +0 -0
- package/src/static/images/ic_volume_up_white_24dp_1x.png +0 -0
- package/src/static/player4ie8.css +225 -0
- package/src/styles/bplaylist.css.js +124 -0
- package/src/styles/index.js +1966 -0
- package/src/styles/playlist.css.js +84 -0
- package/src/styles/rplaylist.css.js +98 -0
- package/src/svgs.js +111 -0
- package/src/types/Logger.js +10 -0
- package/src/types/Options.js +179 -0
- package/src/types/Playlist.js +3 -0
- package/src/types/Source.js +28 -0
- package/src/types/State.js +46 -0
- package/src/types/Styles.js +11 -0
- package/src/types/TimeData.js +8 -0
- package/src/types/Translation.js +69 -0
- package/src/utils/absolutizeUrl.js +9 -0
- package/src/utils/addClass.js +9 -0
- package/src/utils/addEvent.js +31 -0
- package/src/utils/addProperty.js +65 -0
- package/src/utils/appendChild.js +14 -0
- package/src/utils/buff2hex.js +5 -0
- package/src/utils/contains.js +33 -0
- package/src/utils/createElement.js +24 -0
- package/src/utils/each.js +34 -0
- package/src/utils/escapeHTML.js +8 -0
- package/src/utils/existy.js +4 -0
- package/src/utils/extend.js +17 -0
- package/src/utils/filter.js +16 -0
- package/src/utils/find.js +11 -0
- package/src/utils/findIndex.js +20 -0
- package/src/utils/first.js +5 -0
- package/src/utils/get.js +19 -0
- package/src/utils/has.js +5 -0
- package/src/utils/hasClass.js +6 -0
- package/src/utils/head.js +11 -0
- package/src/utils/inRange.js +16 -0
- package/src/utils/index.js +73 -0
- package/src/utils/isArray.js +4 -0
- package/src/utils/isBoolean.js +3 -0
- package/src/utils/isElement.js +7 -0
- package/src/utils/isEmpty.js +6 -0
- package/src/utils/isEqual.js +33 -0
- package/src/utils/isEqualBuffer.js +13 -0
- package/src/utils/isFunction.js +3 -0
- package/src/utils/isNotEmpty.js +5 -0
- package/src/utils/isObject.js +5 -0
- package/src/utils/isString.js +9 -0
- package/src/utils/last.js +4 -0
- package/src/utils/map.js +11 -0
- package/src/utils/negate.js +8 -0
- package/src/utils/noop.js +1 -0
- package/src/utils/notExisty.js +5 -0
- package/src/utils/reduce.js +8 -0
- package/src/utils/remove.js +7 -0
- package/src/utils/removeClass.js +8 -0
- package/src/utils/removeEvent.js +7 -0
- package/src/utils/toArray.js +7 -0
- package/src/utils/toggleClass.js +16 -0
- package/src/utils/uidGenerator.js +8 -0
- package/src/utils/upperFirst.js +4 -0
- package/tests/extensions/__snapshots__/download.spec.js.snap +226 -0
- package/tests/extensions/__snapshots__/fullscreen.spec.js.snap +30 -0
- package/tests/extensions/__snapshots__/title.spec.js.snap +16 -0
- package/tests/extensions/download.spec.js +111 -0
- package/tests/extensions/fullscreen.spec.js +56 -0
- package/tests/extensions/title.spec.js +35 -0
- package/tests/mocks/assets/BaseM.mp4 +0 -0
- package/tests/mocks/assets/hls.min.js +5 -0
- package/tests/mocks/assets/styleMock.js +1 -0
- package/tests/mocks/base-player-options.js +47 -0
- package/tests/mocks/sources.js +58 -0
- package/tests/mocks/timedata/cc_en.vtt +171 -0
- package/tests/mocks/timedata/cc_ge.vtt +178 -0
- package/tests/utils/wait.js +1 -0
- package/webpack.config.js +78 -0
- package/dist/.DS_Store +0 -0
- 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
|
+
// }
|