export default class VideoTool { static get toolbox() { return { icon: ``, title: 'Video', }; } constructor({ data, api, config, block }) { // Добавляем block в параметры this.data = data || {}; this.api = api; this.config = config || {}; this.block = block; // Сохраняем ссылку на текущий блок this.wrapper = null; this.alignment = data.alignment || 'center'; this.width = data.width || '100%'; this.filetype = data.filetype || 'file'; // Привязываем контекст для обработчиков this._handleFileUpload = this._handleFileUpload.bind(this); this._initResize = this._initResize.bind(this); this._handleUrlSubmit = this._handleUrlSubmit.bind(this); } render() { this.wrapper = document.createElement('div'); this.wrapper.classList.add('video-tool'); if (this.data.url) { // Добавляем проверку для совместимости со старыми данными const filetype = this.data.filetype || (this.data.url.includes('youtube') ? 'youtube' : this.data.url.includes('rutube') ? 'rutube' : 'file'); this._createVideoElement(this.data.url, this.data.caption || '', filetype); } else { this._createUploadForm(); } return this.wrapper; } _createUploadForm() { const currentUrl = this.wrapper?.querySelector('.embed-url')?.value || ''; this.wrapper.innerHTML = `
${message}