54 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
import { BlockEmbed } from '../blots/block';
 | 
						|
import Link from '../formats/link';
 | 
						|
 | 
						|
const ATTRIBUTES = [
 | 
						|
  'height',
 | 
						|
  'width'
 | 
						|
];
 | 
						|
 | 
						|
 | 
						|
class Video extends BlockEmbed {
 | 
						|
  static create(value) {
 | 
						|
    let node = super.create(value);
 | 
						|
    node.setAttribute('frameborder', '0');
 | 
						|
    node.setAttribute('allowfullscreen', true);
 | 
						|
    node.setAttribute('src', this.sanitize(value));
 | 
						|
    return node;
 | 
						|
  }
 | 
						|
 | 
						|
  static formats(domNode) {
 | 
						|
    return ATTRIBUTES.reduce(function(formats, attribute) {
 | 
						|
      if (domNode.hasAttribute(attribute)) {
 | 
						|
        formats[attribute] = domNode.getAttribute(attribute);
 | 
						|
      }
 | 
						|
      return formats;
 | 
						|
    }, {});
 | 
						|
  }
 | 
						|
 | 
						|
  static sanitize(url) {
 | 
						|
    return Link.sanitize(url);
 | 
						|
  }
 | 
						|
 | 
						|
  static value(domNode) {
 | 
						|
    return domNode.getAttribute('src');
 | 
						|
  }
 | 
						|
 | 
						|
  format(name, value) {
 | 
						|
    if (ATTRIBUTES.indexOf(name) > -1) {
 | 
						|
      if (value) {
 | 
						|
        this.domNode.setAttribute(name, value);
 | 
						|
      } else {
 | 
						|
        this.domNode.removeAttribute(name);
 | 
						|
      }
 | 
						|
    } else {
 | 
						|
      super.format(name, value);
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
Video.blotName = 'video';
 | 
						|
Video.className = 'ql-video';
 | 
						|
Video.tagName = 'IFRAME';
 | 
						|
 | 
						|
 | 
						|
export default Video;
 |