REDROOM
PHP 8.2.30
Path:
Logout
Edit File
Size: 2.69 KB
Close
/home/byroehnu/easepay.easetack.com/node_modules/prosemirror-inputrules/src/rulebuilders.ts
Text
Base64
import {InputRule} from "./inputrules" import {findWrapping, canJoin} from "prosemirror-transform" import {NodeType, Node, Attrs} from "prosemirror-model" /// Build an input rule for automatically wrapping a textblock when a /// given string is typed. The `regexp` argument is /// directly passed through to the `InputRule` constructor. You'll /// probably want the regexp to start with `^`, so that the pattern can /// only occur at the start of a textblock. /// /// `nodeType` is the type of node to wrap in. If it needs attributes, /// you can either pass them directly, or pass a function that will /// compute them from the regular expression match. /// /// By default, if there's a node with the same type above the newly /// wrapped node, the rule will try to [join](#transform.Transform.join) those /// two nodes. You can pass a join predicate, which takes a regular /// expression match and the node before the wrapped node, and can /// return a boolean to indicate whether a join should happen. export function wrappingInputRule( regexp: RegExp, nodeType: NodeType, getAttrs: Attrs | null | ((matches: RegExpMatchArray) => Attrs | null) = null, joinPredicate?: (match: RegExpMatchArray, node: Node) => boolean ) { return new InputRule(regexp, (state, match, start, end) => { let attrs = getAttrs instanceof Function ? getAttrs(match) : getAttrs let tr = state.tr.delete(start, end) let $start = tr.doc.resolve(start), range = $start.blockRange(), wrapping = range && findWrapping(range, nodeType, attrs) if (!wrapping) return null tr.wrap(range!, wrapping) let before = tr.doc.resolve(start - 1).nodeBefore if (before && before.type == nodeType && canJoin(tr.doc, start - 1) && (!joinPredicate || joinPredicate(match, before))) tr.join(start - 1) return tr }) } /// Build an input rule that changes the type of a textblock when the /// matched text is typed into it. You'll usually want to start your /// regexp with `^` to that it is only matched at the start of a /// textblock. The optional `getAttrs` parameter can be used to compute /// the new node's attributes, and works the same as in the /// `wrappingInputRule` function. export function textblockTypeInputRule( regexp: RegExp, nodeType: NodeType, getAttrs: Attrs | null | ((match: RegExpMatchArray) => Attrs | null) = null ) { return new InputRule(regexp, (state, match, start, end) => { let $start = state.doc.resolve(start) let attrs = getAttrs instanceof Function ? getAttrs(match) : getAttrs if (!$start.node(-1).canReplaceWith($start.index(-1), $start.indexAfter(-1), nodeType)) return null return state.tr .delete(start, end) .setBlockType(start, start, nodeType, attrs) }) }
Save
Close
Exit & Reset
Text mode: syntax highlighting auto-detects file type.
Directory Contents
Dirs: 0 × Files: 6
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
.htaccess
127 B
lr--r--r--
2026-03-14 01:49:09
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
index.ts
271 B
lrw-r--r--
2026-02-28 00:28:06
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
inputrules.ts
6.06 KB
lrw-r--r--
2026-02-28 00:28:10
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
README.md
550 B
lrw-r--r--
2026-02-28 00:28:00
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
rulebuilders.ts
2.69 KB
lrw-r--r--
2026-02-28 00:28:14
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
rules.ts
979 B
lrw-r--r--
2026-02-28 00:28:18
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).