platform/packages/text/src/markdown/marks.ts
Andrey Sobolev 4ec92d94b7
Some checks are pending
CI / test (push) Blocked by required conditions
CI / build (push) Waiting to run
CI / svelte-check (push) Blocked by required conditions
CI / formatting (push) Blocked by required conditions
CI / uitest (push) Waiting to run
CI / uitest-pg (push) Waiting to run
CI / uitest-qms (push) Waiting to run
CI / docker-build (push) Blocked by required conditions
CI / dist-build (push) Blocked by required conditions
UBERF-8968: Get rid of prosemirror in transactor (#7746)
Signed-off-by: Andrey Sobolev <haiodo@gmail.com>
2025-01-21 23:49:45 +07:00

36 lines
1.0 KiB
TypeScript

import { deepEqual } from 'fast-equals'
import { MarkupMark, MarkupMarkType, MarkupNode } from '@hcengineering/text-core'
export function traverseMarks (node: MarkupNode, f: (el: MarkupMark) => void): void {
node.marks?.forEach(f)
}
export function markAttrs (mark: MarkupMark): Record<string, string> {
return mark.attrs ?? []
}
export function isInSet (mark: MarkupMark, marks: MarkupMark[]): boolean {
return marks.find((m) => markEq(mark, m)) !== undefined
}
export function addToSet (mark: MarkupMark, marks: MarkupMark[]): MarkupMark[] {
const m = marks.find((m) => markEq(mark, m))
if (m !== undefined) {
// We already have mark
return marks
}
return [...marks, mark]
}
export function removeFromSet (markType: MarkupMarkType, marks: MarkupMark[]): MarkupMark[] {
return marks.filter((m) => m.type !== markType)
}
export function sameSet (a?: MarkupMark[], b?: MarkupMark[]): boolean {
return deepEqual(a, b)
}
export function markEq (first: MarkupMark, other: MarkupMark): boolean {
return deepEqual(first, other)
}