PluginProbe ʕ •ᴥ•ʔ
Presto Player / 2.2.2
Presto Player v2.2.2
4.3.0 4.2.4 4.2.3 4.2.2 4.2.0 4.2.1 trunk 1.10.0 1.10.1 1.10.2 1.11.0 1.12.0 1.13.0 1.14.0 1.14.1 1.5.10 1.5.11 1.5.12 1.5.13 1.5.14 1.5.15 1.5.5 1.5.6 1.5.7 1.5.8 1.5.9 1.6.0 1.6.1 1.6.10 1.6.11 1.6.12 1.6.13 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.6.9 1.7.0 1.7.1 1.7.2 1.8.0 1.8.1 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.9.0 1.9.1 1.9.10 1.9.11 1.9.12 1.9.13 1.9.14 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.0.0 2.0.1 2.0.10 2.0.11 2.0.12 2.0.13 2.0.14 2.0.15 2.0.16 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8 2.0.9 2.1.0 2.2.0 2.2.1 2.2.2 2.2.3 2.2.3-beta1 2.3.0 2.3.1 2.3.2 2.3.3 3.0.0 3.0.0-beta1 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.0.7 3.0.8 3.1.0 3.1.1 3.1.2 3.1.3 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.0.5 4.0.6 4.0.7 4.0.8 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4
presto-player / src / admin / blocks / shared / Player.js
presto-player / src / admin / blocks / shared Last commit date
audioPresets 2 years ago branding 4 years ago chapters 2 years ago components 2 years ago media 3 years ago overlays 4 years ago presets 2 years ago services 4 years ago settings 4 years ago styles 2 years ago tracks 5 years ago BlockInspectorControls.js 4 years ago LinkPlaceholder.js 5 years ago Player.js 2 years ago Preview.js 2 years ago ProUpgradeModal.js 5 years ago VisibilityEditor.js 5 years ago audio-placeholder.js 4 years ago helpers.js 5 years ago options.js 5 years ago placeholder.js 2 years ago
Player.js
177 lines
1 import {
2 PrestoPlayer,
3 PrestoSearchBarUi,
4 } from "@presto-player/components-react";
5 import { getProvider } from "../util";
6 import { useRef, useEffect } from "@wordpress/element";
7 import { useSelect } from "@wordpress/data";
8 import { convertHex } from "../../../shared/util";
9
10 export default (props) => {
11 const {
12 src,
13 classes,
14 preset,
15 branding,
16 attributes,
17 adminPreview,
18 currentTime,
19 preload = "metadata",
20 overlays,
21 type,
22 } = props;
23
24 const ref = useRef();
25 const {
26 previewThumbnail,
27 preview,
28 chapters,
29 poster,
30 mutedOverlay,
31 mutedPreview,
32 title,
33 } = attributes;
34
35 const { youtube, playerCSS } = useSelect((select) => {
36 return {
37 youtube: select("presto-player/player")?.youtube(),
38 playerCSS: select("presto-player/player")?.playerCSS(),
39 };
40 });
41
42 useEffect(() => {
43 ref.current.src = src;
44 ref.current["data-css"] = playerCSS;
45 ref.current.classes = classes;
46 ref.current.currentTime = currentTime;
47 ref.current.overlays = overlays;
48 ref.current.isAdmin = true;
49 ref.current.preload = preload;
50 ref.current.preset = preset;
51 ref.current.bunny = {
52 thumbnail: previewThumbnail,
53 preview,
54 };
55 ref.current.youtube = {
56 channelId: youtube?.channel_id,
57 };
58 ref.current.tracks = [
59 ...(!!preset?.captions
60 ? [
61 {
62 kind: "captions",
63 label: "English",
64 srclang: "en",
65 src: "/path/to/captions.en.vtt",
66 default: true,
67 },
68 ]
69 : []),
70 ];
71 ref.current.branding = branding;
72 ref.current.chapters = chapters;
73 ref.current.blockAttributes = attributes;
74 ref.current.poster = poster;
75 ref.current.provider = type === "audio" ? "audio" : getProvider(src);
76 ref.current.mediaTitle = title;
77 }, [
78 src,
79 classes,
80 preset,
81 branding,
82 attributes,
83 adminPreview,
84 currentTime,
85 preload,
86 overlays,
87 type,
88 ]);
89
90 const mutedOverlayContent = () => {
91 return (
92 <div
93 className="presto-player__overlay is-image"
94 style={{
95 position: "absolute",
96 width: `${mutedOverlay?.width || 100}%`,
97 left: `${(mutedOverlay?.focalPoint?.x || 0.5) * 100}%`,
98 top: `${(mutedOverlay?.focalPoint?.y || 0.5) * 100}%`,
99 }}
100 >
101 <img
102 src={mutedOverlay?.src}
103 style={{
104 transform: "translateX(-50%) translateY(-50%)",
105 }}
106 />
107 </div>
108 );
109 };
110
111 return (
112 <div
113 className={"wp-block-video presto-block-video"}
114 style={
115 type === "audio"
116 ? {
117 "--presto-player-border-radius": `${preset?.border_radius}px`,
118 ...(preset?.background_color
119 ? {
120 "--plyr-audio-controls-background": preset.background_color,
121 }
122 : { "--plyr-audio-controls-background": branding?.color }),
123 ...(preset?.control_color
124 ? {
125 "--plyr-audio-control-color": preset.control_color,
126 "--plyr-range-thumb-background": preset.control_color,
127 "--plyr-range-fill-background": preset.control_color,
128 "--plyr-audio-progress-buffered-background": convertHex(
129 preset.control_color || branding?.color || "#00b3ff",
130 0.5
131 ),
132 }
133 : {
134 "--plyr-audio-control-color": "#ffffff",
135 "--plyr-range-thumb-background": "#ffffff",
136 "--plyr-range-fill-background": "#ffffff",
137 }),
138 "--plyr-range-thumb-shadow": `0px`,
139 }
140 : {
141 "--presto-player-border-radius": `${preset?.border_radius}px`,
142 ...(preset?.caption_background
143 ? { "--plyr-captions-background": preset.caption_background }
144 : {}),
145 ...(branding?.color
146 ? { "--plyr-color-main": `var(--presto-player-highlight-color, ${branding.color})` }
147 : {}),
148 "--presto-player-email-border-radius": `${
149 preset?.email_collection?.border_radius || 0
150 }px`,
151 "--presto-player-logo-width": `${branding?.logo_width || 75}px`,
152 }
153 }
154 >
155 <PrestoPlayer ref={ref}>
156 <div slot="player-end">
157 {!!preset.search?.enabled && (
158 <PrestoSearchBarUi
159 style={{
160 position: "absolute",
161 top: "15px",
162 right: "23px",
163 zIndex: 1,
164 }}
165 placeholder={preset.search?.placeholder}
166 />
167 )}
168 {mutedPreview?.enabled &&
169 mutedOverlay?.enabled &&
170 mutedOverlayContent()}
171 {adminPreview}
172 </div>
173 </PrestoPlayer>
174 </div>
175 );
176 };
177