REDROOM
PHP 8.2.30
Path:
Logout
Edit File
Size: 2.13 KB
Close
/home/byroehnu/.trash/node_modules11/@tiptap/core/src/pasteRules/markPasteRule.ts
Text
Base64
import { MarkType } from '@tiptap/pm/model' import { getMarksBetween } from '../helpers/getMarksBetween.js' import { PasteRule, PasteRuleFinder } from '../PasteRule.js' import { ExtendedRegExpMatchArray } from '../types.js' import { callOrReturn } from '../utilities/callOrReturn.js' /** * Build an paste rule that adds a mark when the * matched text is pasted into it. * @see https://tiptap.dev/docs/editor/extensions/custom-extensions/extend-existing#paste-rules */ export function markPasteRule(config: { find: PasteRuleFinder type: MarkType getAttributes?: | Record<string, any> | ((match: ExtendedRegExpMatchArray, event: ClipboardEvent) => Record<string, any>) | false | null }) { return new PasteRule({ find: config.find, handler: ({ state, range, match, pasteEvent, }) => { const attributes = callOrReturn(config.getAttributes, undefined, match, pasteEvent) if (attributes === false || attributes === null) { return null } const { tr } = state const captureGroup = match[match.length - 1] const fullMatch = match[0] let markEnd = range.to if (captureGroup) { const startSpaces = fullMatch.search(/\S/) const textStart = range.from + fullMatch.indexOf(captureGroup) const textEnd = textStart + captureGroup.length const excludedMarks = getMarksBetween(range.from, range.to, state.doc) .filter(item => { // @ts-ignore const excluded = item.mark.type.excluded as MarkType[] return excluded.find(type => type === config.type && type !== item.mark.type) }) .filter(item => item.to > textStart) if (excludedMarks.length) { return null } if (textEnd < range.to) { tr.delete(textEnd, range.to) } if (textStart > range.from) { tr.delete(range.from + startSpaces, textStart) } markEnd = range.from + startSpaces + captureGroup.length tr.addMark(range.from + startSpaces, markEnd, config.type.create(attributes || {})) tr.removeStoredMark(config.type) } }, }) }
Save
Close
Exit & Reset
Text mode: syntax highlighting auto-detects file type.
Directory Contents
Dirs: 0 × Files: 4
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
index.ts
105 B
lrw-r--r--
2026-02-28 11:47:56
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
markPasteRule.ts
2.13 KB
lrw-r--r--
2026-02-28 11:47:58
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
nodePasteRule.ts
1.36 KB
lrw-r--r--
2026-02-28 11:48:00
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
textPasteRule.ts
916 B
lrw-r--r--
2026-02-28 11:48:04
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
Zip Selected
If ZipArchive is unavailable, a
.tar
will be created (no compression).