diff options
Diffstat (limited to 'app/assets/javascripts/behaviors/markdown/nodes/image.js')
-rw-r--r-- | app/assets/javascripts/behaviors/markdown/nodes/image.js | 83 |
1 files changed, 39 insertions, 44 deletions
diff --git a/app/assets/javascripts/behaviors/markdown/nodes/image.js b/app/assets/javascripts/behaviors/markdown/nodes/image.js index 16647d2f96e..370cc347a05 100644 --- a/app/assets/javascripts/behaviors/markdown/nodes/image.js +++ b/app/assets/javascripts/behaviors/markdown/nodes/image.js @@ -1,53 +1,48 @@ -/* eslint-disable class-methods-use-this */ - -import { Image as BaseImage } from 'tiptap-extensions'; import { placeholderImage } from '~/lazy_loader'; import { defaultMarkdownSerializer } from '~/lib/prosemirror_markdown_serializer'; import { HIGHER_PARSE_RULE_PRIORITY } from '../constants'; -export default class Image extends BaseImage { - get schema() { - return { - attrs: { - src: {}, - alt: { - default: null, - }, - title: { - default: null, - }, +export default () => ({ + name: 'image', + schema: { + attrs: { + src: {}, + alt: { + default: null, }, - group: 'inline', - inline: true, - draggable: true, - parseDOM: [ - // Matches HTML generated by Banzai::Filter::ImageLinkFilter - { - tag: 'a.no-attachment-icon', - priority: HIGHER_PARSE_RULE_PRIORITY, - skip: true, - }, - // Matches HTML generated by Banzai::Filter::ImageLazyLoadFilter - { - tag: 'img[src]:not(.emoji)', - getAttrs: (el) => { - const imageSrc = el.src; - const imageUrl = - imageSrc && imageSrc !== placeholderImage ? imageSrc : el.dataset.src || ''; + title: { + default: null, + }, + }, + group: 'inline', + inline: true, + draggable: true, + parseDOM: [ + // Matches HTML generated by Banzai::Filter::ImageLinkFilter + { + tag: 'a.no-attachment-icon', + priority: HIGHER_PARSE_RULE_PRIORITY, + skip: true, + }, + // Matches HTML generated by Banzai::Filter::ImageLazyLoadFilter + { + tag: 'img[src]:not(.emoji)', + getAttrs: (el) => { + const imageSrc = el.src; + const imageUrl = + imageSrc && imageSrc !== placeholderImage ? imageSrc : el.dataset.src || ''; - return { - src: imageUrl, - title: el.getAttribute('title'), - alt: el.getAttribute('alt'), - }; - }, + return { + src: imageUrl, + title: el.getAttribute('title'), + alt: el.getAttribute('alt'), + }; }, - ], - toDOM: (node) => ['img', node.attrs], - }; - } - + }, + ], + toDOM: (node) => ['img', node.attrs], + }, toMarkdown(state, node) { defaultMarkdownSerializer.nodes.image(state, node); - } -} + }, +}); |