123456789101112131415161718192021222324252627 |
- import { EditorView } from "@codemirror/view"
- const WrappedLineIndenter = EditorView.updateListener.of((update) => {
- const view = update.view
- const charWidth = view.defaultCharacterWidth
- const lineHeight = view.defaultLineHeight
- const basePadding = 10
- view.viewportLines((line) => {
- const domAtPos = view.domAtPos(line.from)
- const lineCount = (line.bottom - line.top) / lineHeight
- if (lineCount <= 1) return
- const belowPadding = basePadding * charWidth
- const node = domAtPos.node as HTMLElement
- node.style.textIndent = `-${belowPadding - charWidth + 1}px`
- node.style.paddingLeft = `${belowPadding}px`
- })
- })
- export const IndentedLineWrapPlugin = [
- EditorView.lineWrapping,
- WrappedLineIndenter,
- ]
|