PlayerEdit.jsx
40 lines
| 1 | import React from 'react'; |
| 2 | import { __ } from '@wordpress/i18n'; |
| 3 | import RenderPlayer from '../../modules/PrestoPlayer/RenderPlayer.jsx'; |
| 4 | |
| 5 | // copy prestoPlayer globals into app-window from top window when running in D5 iframe |
| 6 | const pp = window.prestoPlayer || window.parent?.prestoPlayer || {}; |
| 7 | if ( ! window.prestoPlayer?.plugin_url && pp.plugin_url ) { |
| 8 | window.prestoPlayer = { ...( window.prestoPlayer || {} ), ...pp }; |
| 9 | } |
| 10 | |
| 11 | // RenderPlayer uses window.et_fb_options.et_admin_load_nonce (D4 global). |
| 12 | // In D5 that object doesn't exist; polyfill from PrestoPlayerDiviD5Data (injected by PHP) |
| 13 | // so the AJAX call to presto_get_media_attributes can succeed. |
| 14 | if ( ! window.et_fb_options?.et_admin_load_nonce ) { |
| 15 | const d5data = window.PrestoPlayerDiviD5Data || window.parent?.PrestoPlayerDiviD5Data || {}; |
| 16 | const nonce = d5data.nonce || pp.nonce || window.parent?.prestoPlayer?.nonce || ''; |
| 17 | window.et_fb_options = { |
| 18 | ...( window.et_fb_options || {} ), |
| 19 | et_admin_load_nonce: nonce, |
| 20 | }; |
| 21 | } |
| 22 | |
| 23 | export default function PlayerEdit( { attrs } ) { |
| 24 | // D5 attrs are nested; guard against flatter shape that can appear before first save. |
| 25 | // Narrow to a primitive so a shape like { innerContent: { desktop: {} } } yields undefined |
| 26 | // (not the raw object) and correctly falls through to the "select media" curtain. |
| 27 | const pick = ( a ) => { |
| 28 | const v = a?.innerContent?.desktop?.value || a?.value || a; |
| 29 | return typeof v === 'string' || typeof v === 'number' ? v : undefined; |
| 30 | }; |
| 31 | const videoId = pick( attrs?.videoId ); |
| 32 | const urlOverride = pick( attrs?.urlOverride ); |
| 33 | |
| 34 | if ( ! videoId ) { |
| 35 | return <presto-video-curtain-ui>{ __( 'Please select media.', 'presto-player' ) }</presto-video-curtain-ui>; |
| 36 | } |
| 37 | |
| 38 | return <RenderPlayer id={ videoId } src={ urlOverride || undefined } />; |
| 39 | } |
| 40 |