gdpr audit implemented, email log, vollmachten, pdf delete cancel data privacy and vollmachten, removed message no id card in engergy car, and other contracts that are not telecom contracts, added insert counter for engery
This commit is contained in:
+150
@@ -0,0 +1,150 @@
|
||||
import { mergeAttributes, Node, textblockTypeInputRule } from '@tiptap/core'
|
||||
|
||||
/**
|
||||
* The heading level options.
|
||||
*/
|
||||
export type Level = 1 | 2 | 3 | 4 | 5 | 6
|
||||
|
||||
export interface HeadingOptions {
|
||||
/**
|
||||
* The available heading levels.
|
||||
* @default [1, 2, 3, 4, 5, 6]
|
||||
* @example [1, 2, 3]
|
||||
*/
|
||||
levels: Level[]
|
||||
|
||||
/**
|
||||
* The HTML attributes for a heading node.
|
||||
* @default {}
|
||||
* @example { class: 'foo' }
|
||||
*/
|
||||
HTMLAttributes: Record<string, any>
|
||||
}
|
||||
|
||||
declare module '@tiptap/core' {
|
||||
interface Commands<ReturnType> {
|
||||
heading: {
|
||||
/**
|
||||
* Set a heading node
|
||||
* @param attributes The heading attributes
|
||||
* @example editor.commands.setHeading({ level: 1 })
|
||||
*/
|
||||
setHeading: (attributes: { level: Level }) => ReturnType
|
||||
/**
|
||||
* Toggle a heading node
|
||||
* @param attributes The heading attributes
|
||||
* @example editor.commands.toggleHeading({ level: 1 })
|
||||
*/
|
||||
toggleHeading: (attributes: { level: Level }) => ReturnType
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This extension allows you to create headings.
|
||||
* @see https://www.tiptap.dev/api/nodes/heading
|
||||
*/
|
||||
export const Heading = Node.create<HeadingOptions>({
|
||||
name: 'heading',
|
||||
|
||||
addOptions() {
|
||||
return {
|
||||
levels: [1, 2, 3, 4, 5, 6],
|
||||
HTMLAttributes: {},
|
||||
}
|
||||
},
|
||||
|
||||
content: 'inline*',
|
||||
|
||||
group: 'block',
|
||||
|
||||
defining: true,
|
||||
|
||||
addAttributes() {
|
||||
return {
|
||||
level: {
|
||||
default: 1,
|
||||
rendered: false,
|
||||
},
|
||||
}
|
||||
},
|
||||
|
||||
parseHTML() {
|
||||
return this.options.levels.map((level: Level) => ({
|
||||
tag: `h${level}`,
|
||||
attrs: { level },
|
||||
}))
|
||||
},
|
||||
|
||||
renderHTML({ node, HTMLAttributes }) {
|
||||
const hasLevel = this.options.levels.includes(node.attrs.level)
|
||||
const level = hasLevel ? node.attrs.level : this.options.levels[0]
|
||||
|
||||
return [`h${level}`, mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0]
|
||||
},
|
||||
|
||||
parseMarkdown: (token, helpers) => {
|
||||
// Convert 'heading' token to heading node
|
||||
// marked provides 'depth' property (1-6) for heading level
|
||||
return helpers.createNode('heading', { level: token.depth || 1 }, helpers.parseInline(token.tokens || []))
|
||||
},
|
||||
|
||||
renderMarkdown: (node, h) => {
|
||||
const level = node.attrs?.level ? parseInt(node.attrs.level as string, 10) : 1
|
||||
const headingChars = '#'.repeat(level)
|
||||
|
||||
if (!node.content) {
|
||||
return ''
|
||||
}
|
||||
|
||||
// Use current context for proper joining/spacing
|
||||
return `${headingChars} ${h.renderChildren(node.content)}`
|
||||
},
|
||||
|
||||
addCommands() {
|
||||
return {
|
||||
setHeading:
|
||||
attributes =>
|
||||
({ commands }) => {
|
||||
if (!this.options.levels.includes(attributes.level)) {
|
||||
return false
|
||||
}
|
||||
|
||||
return commands.setNode(this.name, attributes)
|
||||
},
|
||||
toggleHeading:
|
||||
attributes =>
|
||||
({ commands }) => {
|
||||
if (!this.options.levels.includes(attributes.level)) {
|
||||
return false
|
||||
}
|
||||
|
||||
return commands.toggleNode(this.name, 'paragraph', attributes)
|
||||
},
|
||||
}
|
||||
},
|
||||
|
||||
addKeyboardShortcuts() {
|
||||
return this.options.levels.reduce(
|
||||
(items, level) => ({
|
||||
...items,
|
||||
...{
|
||||
[`Mod-Alt-${level}`]: () => this.editor.commands.toggleHeading({ level }),
|
||||
},
|
||||
}),
|
||||
{},
|
||||
)
|
||||
},
|
||||
|
||||
addInputRules() {
|
||||
return this.options.levels.map(level => {
|
||||
return textblockTypeInputRule({
|
||||
find: new RegExp(`^(#{${Math.min(...this.options.levels)},${level}})\\s$`),
|
||||
type: this.type,
|
||||
getAttributes: {
|
||||
level,
|
||||
},
|
||||
})
|
||||
})
|
||||
},
|
||||
})
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
import { Heading } from './heading.js'
|
||||
|
||||
export * from './heading.js'
|
||||
|
||||
export default Heading
|
||||
Reference in New Issue
Block a user