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 / options.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
options.js
55 lines
1 const { useEffect, useState } = wp.element;
2 const { useSelect } = wp.data;
3 import { usePrevious } from "@/admin/blocks/util";
4
5 export default function ({ attributes, setAttributes }) {
6 const { chapters, poster } = attributes;
7 const [presetData, setPresetData] = useState({});
8 const data = {
9 branding: {},
10 loading: false,
11 presets: [],
12 presetData: {},
13 };
14
15 data.branding = useSelect((select) => {
16 return select("presto-player/player").branding();
17 });
18 useEffect(() => {
19 document.body.style.setProperty("--plyr-color-main", data.branding?.color);
20 }, [data.branding?.color]);
21
22 data.loading = useSelect((select) => {
23 return select("presto-player/player").presetsLoading();
24 });
25 data.presets = useSelect((select) => {
26 return select("presto-player/player").getPresets();
27 });
28
29 // set preset data when presets are loaded
30 useEffect(() => {
31 const thisPreset = data.presets.find((preset) => {
32 return preset.id === attributes?.preset;
33 });
34 data.presetData = thisPreset;
35 }, [data.presets, attributes?.preset]);
36
37 // This will reload the player to show the controls
38 let [count, setCount] = useState(1);
39 useEffect(() => {
40 setCount(count + 1);
41 }, [poster, data.presetData]);
42
43 // re-render only if times change
44 const prevChapters = usePrevious(chapters);
45 useEffect(() => {
46 let times = chapters?.map((item) => item.time);
47 let prevTimes = prevChapters?.map((item) => item.time);
48 if (_.difference(times, prevTimes).length) {
49 setCount(count + 1);
50 }
51 }, [chapters]);
52
53 return data;
54 }
55