You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
2.1 KiB
43 lines
2.1 KiB
import type { ScrollBlot } from 'parchment'; |
|
import Delta from 'quill-delta'; |
|
import type { EmitterSource } from '../core/emitter.js'; |
|
import Module from '../core/module.js'; |
|
import Quill from '../core/quill.js'; |
|
import type { Range } from '../core/selection.js'; |
|
type Selector = string | Node['TEXT_NODE'] | Node['ELEMENT_NODE']; |
|
type Matcher = (node: Node, delta: Delta, scroll: ScrollBlot) => Delta; |
|
interface ClipboardOptions { |
|
matchers: [Selector, Matcher][]; |
|
} |
|
declare class Clipboard extends Module<ClipboardOptions> { |
|
static DEFAULTS: ClipboardOptions; |
|
matchers: [Selector, Matcher][]; |
|
constructor(quill: Quill, options: Partial<ClipboardOptions>); |
|
addMatcher(selector: Selector, matcher: Matcher): void; |
|
convert({ html, text }: { |
|
html?: string; |
|
text?: string; |
|
}, formats?: Record<string, unknown>): Delta; |
|
protected normalizeHTML(doc: Document): void; |
|
protected convertHTML(html: string): Delta; |
|
dangerouslyPasteHTML(html: string, source?: EmitterSource): void; |
|
dangerouslyPasteHTML(index: number, html: string, source?: EmitterSource): void; |
|
onCaptureCopy(e: ClipboardEvent, isCut?: boolean): void; |
|
private normalizeURIList; |
|
onCapturePaste(e: ClipboardEvent): void; |
|
onCopy(range: Range, isCut: boolean): { |
|
html: string; |
|
text: string; |
|
}; |
|
onPaste(range: Range, { text, html }: { |
|
text?: string; |
|
html?: string; |
|
}): void; |
|
prepareMatching(container: Element, nodeMatches: WeakMap<Node, Matcher[]>): Matcher[][]; |
|
} |
|
declare function traverse(scroll: ScrollBlot, node: ChildNode, elementMatchers: Matcher[], textMatchers: Matcher[], nodeMatches: WeakMap<Node, Matcher[]>): Delta; |
|
declare function matchAttributor(node: HTMLElement, delta: Delta, scroll: ScrollBlot): Delta; |
|
declare function matchBlot(node: Node, delta: Delta, scroll: ScrollBlot): Delta; |
|
declare function matchNewline(node: Node, delta: Delta, scroll: ScrollBlot): Delta; |
|
declare function matchText(node: HTMLElement, delta: Delta, scroll: ScrollBlot): Delta; |
|
export { Clipboard as default, matchAttributor, matchBlot, matchNewline, matchText, traverse, };
|
|
|