debian-mirror-gitlab/app/assets/javascripts/content_editor/extensions/blockquote.js

38 lines
986 B
JavaScript
Raw Normal View History

2021-11-11 11:23:49 +05:30
import { Blockquote } from '@tiptap/extension-blockquote';
2021-12-11 22:18:48 +05:30
import { wrappingInputRule } from '@tiptap/core';
2021-11-11 11:23:49 +05:30
import { getParents } from '~/lib/utils/dom_utils';
import { getMarkdownSource } from '../services/markdown_sourcemap';
export default Blockquote.extend({
addAttributes() {
return {
...this.parent?.(),
multiline: {
default: false,
parseHTML: (element) => {
const source = getMarkdownSource(element);
const parentsIncludeBlockquote = getParents(element).some(
(p) => p.nodeName.toLowerCase() === 'blockquote',
);
return source && !source.startsWith('>') && !parentsIncludeBlockquote;
},
},
};
},
addInputRules() {
2021-12-11 22:18:48 +05:30
const multilineInputRegex = /^\s*>>>\s$/gm;
2021-11-11 11:23:49 +05:30
return [
...this.parent?.(),
2021-12-11 22:18:48 +05:30
wrappingInputRule({
find: multilineInputRegex,
type: this.type,
getAttributes: () => ({ multiline: true }),
}),
2021-11-11 11:23:49 +05:30
];
},
});