* Re-serialize `table` and write it over whichever Table node currently sits * under the widget's DOM. Resolving the range live (via posAtDOM) keeps the * write correct even when edits elsewhere have shifted the document.
(view: EditorView, dom: HTMLElement, table: MarkdownTable)
| 102 | * write correct even when edits elsewhere have shifted the document. |
| 103 | */ |
| 104 | function commitTable(view: EditorView, dom: HTMLElement, table: MarkdownTable): void { |
| 105 | let pos: number |
| 106 | try { |
| 107 | pos = view.posAtDOM(dom) |
| 108 | } catch { |
| 109 | return |
| 110 | } |
| 111 | const range = tableRangeAt(view, pos) |
| 112 | if (!range) return |
| 113 | const next = serializeTable(table) |
| 114 | if (next === view.state.sliceDoc(range.from, range.to)) return |
| 115 | view.dispatch({ |
| 116 | changes: { from: range.from, to: range.to, insert: next } |
| 117 | }) |
| 118 | } |
| 119 | |
| 120 | type CellAddress = { row: number; col: number } |
| 121 |
no test coverage detected