28 lines
754 B
TypeScript
28 lines
754 B
TypeScript
import { Slice } from '@tiptap/pm/model';
|
|
import { EditorView } from '@tiptap/pm/view';
|
|
import * as pmView from '@tiptap/pm/view';
|
|
|
|
function getPmView() {
|
|
try {
|
|
return pmView;
|
|
} catch (error) {
|
|
console.error(error);
|
|
return null;
|
|
}
|
|
}
|
|
|
|
export function serializeForClipboard(view: EditorView, slice: Slice) {
|
|
// Newer Tiptap/ProseMirror
|
|
if (view && typeof view.serializeForClipboard === 'function') {
|
|
return view.serializeForClipboard(slice);
|
|
}
|
|
|
|
// Older version fallback
|
|
const proseMirrorView = getPmView();
|
|
|
|
if (proseMirrorView && typeof proseMirrorView?.__serializeForClipboard === 'function') {
|
|
return proseMirrorView.__serializeForClipboard(view, slice);
|
|
}
|
|
|
|
throw new Error('No supported clipboard serialization method found.');
|
|
}
|