Skip to content

Commit

Permalink
fix removeMark (#14)
Browse files Browse the repository at this point in the history
  • Loading branch information
BrianHung authored Aug 5, 2024
1 parent 0fd4364 commit 261267c
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 5 deletions.
20 changes: 15 additions & 5 deletions src/amToPm.ts
Original file line number Diff line number Diff line change
Expand Up @@ -111,11 +111,21 @@ function handleMark(
const pmStart = amSpliceIdxToPmIdx(adapter, spans, mark.start)
const pmEnd = amSpliceIdxToPmIdx(adapter, spans, mark.end)
if (pmStart == null || pmEnd == null) throw new Error("Invalid index")
const pmMarks = pmMarksFromAmMarks(adapter, {
[mark.name]: mark.value,
})
for (const pmMark of pmMarks) {
tx = tx.addMark(pmStart, pmEnd, pmMark)
if (mark.value == null) {
const markMapping = adapter.markMappings.find(
m => m.automergeMarkName === mark.name,
)
const markType = markMapping
? markMapping.prosemirrorMark
: adapter.unknownMark
tx = tx.removeMark(pmStart, pmEnd, markType)
} else {
const pmMarks = pmMarksFromAmMarks(adapter, {
[mark.name]: mark.value,
})
for (const pmMark of pmMarks) {
tx = tx.addMark(pmStart, pmEnd, pmMark)
}
}
}
}
Expand Down
2 changes: 2 additions & 0 deletions src/schema.ts
Original file line number Diff line number Diff line change
Expand Up @@ -264,6 +264,8 @@ export function pmMarksFromAmMarks(
const pmMarks = []

for (const [markName, markValue] of Object.entries(amMarks)) {
// Filter tombstoned marks (https://github.com/automerge/automerge/issues/715).
if (markValue == null) continue
const mapping = adapter.markMappings.find(
m => m.automergeMarkName === markName,
)
Expand Down

0 comments on commit 261267c

Please sign in to comment.