UNPKG

quill

Version:

Your powerful, rich text editor

54 lines (45 loc) 1.26 kB
import { BlockEmbed } from '../blots/block'; import Link from './link'; const ATTRIBUTES = ['height', 'width']; class Video extends BlockEmbed { static create(value) { const 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((formats, attribute) => { if (domNode.hasAttribute(attribute)) { formats[attribute] = domNode.getAttribute(attribute); } return formats; }, {}); } static sanitize(url) { return Link.sanitize(url); // eslint-disable-line import/no-named-as-default-member } 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); } } html() { const { video } = this.value(); return `<a href="${video}">${video}</a>`; } } Video.blotName = 'video'; Video.className = 'ql-video'; Video.tagName = 'IFRAME'; export default Video;