MediaProviders
4 days ago
ProvidersPlaceholder
4 days ago
audioPresets
4 days ago
branding
6 months ago
chapters
2 years ago
components
4 days ago
media
4 days ago
overlays
4 days ago
presets
4 days ago
services
4 years ago
settings
1 month ago
styles
1 year ago
tracks
4 days ago
BlockInspectorControls.js
4 days ago
BlockInspectorControls.scss
4 days ago
Editing.js
1 year ago
LinkPlaceholder.js
1 month ago
Player.js
1 month ago
Preview.js
2 years ago
ProUpgradeModal.js
1 month ago
VisibilityEditor.js
6 months ago
audio-placeholder.js
4 days ago
helpers.js
5 years ago
options.js
4 days ago
placeholder.js
4 days ago
options.js
51 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 | data.loading = useSelect((select) => { |
| 19 | return select("presto-player/player").presetsLoading(); |
| 20 | }); |
| 21 | data.presets = useSelect((select) => { |
| 22 | return select("presto-player/player").getPresets(); |
| 23 | }); |
| 24 | |
| 25 | // set preset data when presets are loaded |
| 26 | useEffect(() => { |
| 27 | const thisPreset = data.presets.find((preset) => { |
| 28 | return preset.id === attributes?.preset; |
| 29 | }); |
| 30 | data.presetData = thisPreset; |
| 31 | }, [data.presets, attributes?.preset]); |
| 32 | |
| 33 | // This will reload the player to show the controls |
| 34 | let [count, setCount] = useState(1); |
| 35 | useEffect(() => { |
| 36 | setCount(count + 1); |
| 37 | }, [poster, data.presetData]); |
| 38 | |
| 39 | // re-render only if times change |
| 40 | const prevChapters = usePrevious(chapters); |
| 41 | useEffect(() => { |
| 42 | let times = chapters?.map((item) => item.time); |
| 43 | let prevTimes = prevChapters?.map((item) => item.time); |
| 44 | if (_.difference(times, prevTimes).length) { |
| 45 | setCount(count + 1); |
| 46 | } |
| 47 | }, [chapters]); |
| 48 | |
| 49 | return data; |
| 50 | } |
| 51 |