mirror of
https://github.com/hedgedoc/hedgedoc.git
synced 2025-05-14 07:04:45 -04:00

Massive improvement of render performance by: - replacing the codimd-line-marker with an in-memory map - an observation of the changed markdown code to identify changed lines - a unique react-key calculation
29 lines
1 KiB
TypeScript
29 lines
1 KiB
TypeScript
import { DomElement } from 'domhandler'
|
|
import { ComponentReplacer, NativeRenderer, SubNodeTransform } from '../ComponentReplacer'
|
|
import './possible-wider-replacer.scss'
|
|
|
|
const enabledTags = ['img', 'codimd-youtube', 'codimd-vimeo', 'codimd-asciinema', 'codimd-pdf']
|
|
|
|
/**
|
|
* This replacer doesn't actually replace something.
|
|
* It just uses the ComponentReplacer-Class to get access to the DOM and
|
|
* appends the "wider-possible" class to paragraphs with special content.
|
|
*/
|
|
export class PossibleWiderReplacer extends ComponentReplacer {
|
|
public getReplacement (node: DomElement, index: number, subNodeTransformer: SubNodeTransform, nativeRenderer: NativeRenderer): (undefined) {
|
|
if (node.name !== 'p') {
|
|
return
|
|
}
|
|
if (!node.children || node.children.length === 0) {
|
|
return
|
|
}
|
|
|
|
if (node.children.find((subNode) => subNode.name && enabledTags.includes(subNode.name))) {
|
|
if (!node.attribs) {
|
|
node.attribs = {}
|
|
}
|
|
|
|
node.attribs.class = `${node.attribs.class ?? ''} wider-possible`
|
|
}
|
|
}
|
|
}
|