[ SYSTEM ]: Linux wordpress 6.1.0-41-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.158-1 (2025-11-09) x86_64
[ SERVER ]: Apache/2.4.66 (Debian) | PHP: 8.2.30
[ USER ]: www-data | IP: 172.19.30.54
GEFORCE FILE MANAGER
/
var
/
www
/
html
/
wordpress
/
wp-content
/
plugins
/
presto-player
/
src
/
admin
/
blocks
/
blocks
/
vimeo
/
UPLOAD:
NAME
SIZE
QUICK PERMS
ACTIONS
📄 block.json
2,161 B
SET
[ EDIT ]
|
[ DEL ]
📄 edit.js
4,678 B
SET
[ EDIT ]
|
[ DEL ]
📄 index.js
1,034 B
SET
[ EDIT ]
|
[ DEL ]
DELETE SELECTED
[ CLOSE ]
EDIT: edit.js
/** * WordPress dependencies */ const { Button, Disabled, Toolbar, Placeholder, Spinner, withNotices } = wp.components; import { BlockControls, InspectorControls } from "@wordpress/block-editor"; const { useEffect } = wp.element; const { __ } = wp.i18n; const { compose } = wp.compose; // hocs import withPlayerEdit from "../with-player-edit"; import withPlayerData from "../with-player-data"; /** * Internal dependencies */ // import TracksEditor from "@/admin/blocks/shared/tracks/TracksEditor"; import BlockInspectorControls from "@/admin/blocks/shared/BlockInspectorControls"; import Player from "@/admin/blocks/shared/Player"; import LinkPlaceholder from "@/admin/blocks/shared/LinkPlaceholder"; import { getVimeoId } from "@/shared/util.js"; import { usePrevious } from "@/admin/blocks/util"; import Editing from "../../shared/Editing"; export default compose([withPlayerData(), withPlayerEdit()])( withNotices( ({ attributes, setAttributes, branding, noticeOperations, loading, createVideo, lockSave, unlockSave, presetData, onRemoveSrc, renderKey, }) => { const { poster, src, id } = attributes; const showNotice = (e) => { noticeOperations.removeAllNotices(); noticeOperations.createErrorNotice(e?.message); }; // make sure to save/get attachment id if src is set const prevSrc = usePrevious(src); useEffect(() => { // reset id only if we're changing the src if (prevSrc) { setAttributes({ id: 0 }); } let video_id = getVimeoId(src); setAttributes({ video_id }); lockSave(); createVideo({ src, external_id: video_id, type: "vimeo" }) .catch((e) => { setAttributes({ src: "" }); showNotice(e); }) .finally(unlockSave); }, [src]); // handle url update function onSelectURL(newSrc) { if (newSrc !== src) { setAttributes({ src: newSrc }); } } if (!src) { return ( <div> <LinkPlaceholder icon={ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" className="presto-block-icon" > <path d="M22.875 10.063c-2.442 5.217-8.337 12.319-12.063 12.319-3.672 0-4.203-7.831-6.208-13.043-.987-2.565-1.624-1.976-3.474-.681l-1.128-1.455c2.698-2.372 5.398-5.127 7.057-5.28 1.868-.179 3.018 1.098 3.448 3.832.568 3.593 1.362 9.17 2.748 9.17 1.08 0 3.741-4.424 3.878-6.006.243-2.316-1.703-2.386-3.392-1.663 2.673-8.754 13.793-7.142 9.134 2.807z" /> </svg> } label={__("Presto Vimeo Video", "presto-player")} instructions={__("Enter Vimeo Video URL", "presto-player")} placeholder={__("Vimeo URL", "presto-player")} attributes={attributes} setAttributes={setAttributes} onSelectURL={onSelectURL} /> </div> ); } // loading presets or id still if (loading || !id) { return ( <Placeholder className="presto-player__placeholder is-loading"> <Spinner /> </Placeholder> ); } return ( <> <BlockControls> <Toolbar> <Button onClick={() => onRemoveSrc()}> {__("Replace", "presto-player")} </Button> </Toolbar> <Editing /> </BlockControls> <InspectorControls> <BlockInspectorControls setAttributes={setAttributes} attributes={attributes} /> </InspectorControls> <figure> {/* Disable the video tag so the user clicking on it won't play the video when the controls are enabled. */} <Disabled> <Player poster={poster} src={src} type="vimeo" id={id} attributes={attributes} setAttributes={setAttributes} preset={presetData} branding={branding} key={renderKey} /> </Disabled> </figure> </> ); } ) );