UNPKG

@opentiny/vue-renderless

Version:

An enterprise-class UI component library, support both Vue.js 2 and Vue.js 3, as well as PC and mobile.

55 lines (54 loc) 1.74 kB
import "../chunk-G2ADBYYC.js"; let selectors = []; let doms = []; let scrolls = []; function backup() { doms.push(window); scrolls.push({ left: window.pageXOffset, top: window.pageYOffset }); selectors.forEach((selector) => { const dom = document.querySelector(`.${selector}`); if (dom) { doms.push(dom); scrolls.push({ left: dom.scrollLeft, top: dom.scrollTop }); } }); } function restore() { doms.forEach((dom, i) => dom.scrollTo(scrolls[i])); doms = []; scrolls = []; } function registerCustomClipboard(Quill, keepClass) { const Clipboard = Quill.import("modules/clipboard"); const Delta = Quill.import("delta"); if (typeof keepClass === "string") { selectors.push(keepClass); } else if (Array.isArray(keepClass)) { selectors = keepClass.slice(0); } class CustomClipboard extends Clipboard { onPaste(e) { backup(); if (e.defaultPrevented || !this.quill.isEnabled()) return; const range = this.quill.getSelection(); let delta = new Delta().retain(range.index); const scrollTop = this.quill.scrollingContainer.scrollTop; this.container.focus(); this.quill.selection.update(Quill.sources.SILENT); setTimeout(() => { delta = delta.concat(this.convert()).delete(range.length); this.quill.updateContents(delta, Quill.sources.USER); this.quill.setSelection(delta.length() - range.length, Quill.sources.SILENT); this.quill.scrollingContainer.scrollTop = scrollTop; this.quill.focus(); restore(); }, 1); } } Quill.register("modules/clipboard", CustomClipboard, true); } var clipboard_default = registerCustomClipboard; export { clipboard_default as default };