diff options
| author | Stanley Yip <33562077+yipstanley@users.noreply.github.com> | 2019-07-28 18:20:07 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-07-28 18:20:07 +0000 |
| commit | 6e9b633b822c9c56f48b5b0766d730a27b32f018 (patch) | |
| tree | 76b10100785b842244793df3ad174fd09a2f2381 /src/client/views/pdf/Page.tsx | |
| parent | 5fd48d3d10e86cea834f0238ec5d648febb62c81 (diff) | |
| parent | 8add42e2bb0eb997a8b6eb0904381d11e9ed2905 (diff) | |
Merge pull request #220 from browngraphicslab/pdf_paste_backlink
Pdf paste backlink
Diffstat (limited to 'src/client/views/pdf/Page.tsx')
| -rw-r--r-- | src/client/views/pdf/Page.tsx | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/client/views/pdf/Page.tsx b/src/client/views/pdf/Page.tsx index a6864e0f3..c205617b4 100644 --- a/src/client/views/pdf/Page.tsx +++ b/src/client/views/pdf/Page.tsx @@ -29,6 +29,7 @@ interface IPageProps { createAnnotation: (div: HTMLDivElement, page: number) => void; makeAnnotationDocuments: (doc: Doc | undefined, scale: number, color: string, linkTo: boolean) => Doc; getScrollFromPage: (page: number) => number; + setSelectionText: (text: string) => void; } @observer @@ -353,7 +354,8 @@ export default class Page extends React.Component<IPageProps> { else { let sel = window.getSelection(); if (sel && sel.type === "Range") { - this.createTextAnnotation(sel); + let selRange = sel.getRangeAt(0); + this.createTextAnnotation(sel, selRange); PDFMenu.Instance.jumpTo(e.clientX, e.clientY); } } @@ -371,8 +373,8 @@ export default class Page extends React.Component<IPageProps> { } @action - createTextAnnotation = (sel: Selection) => { - let clientRects = sel.getRangeAt(0).getClientRects(); + createTextAnnotation = (sel: Selection, selRange: Range) => { + let clientRects = selRange.getClientRects(); if (this._textLayer.current) { let boundingRect = this._textLayer.current.getBoundingClientRect(); for (let i = 0; i < clientRects.length; i++) { @@ -389,6 +391,10 @@ export default class Page extends React.Component<IPageProps> { } } } + let text = selRange.extractContents().textContent; + if (text) { + this.props.setSelectionText(text); + } // clear selection if (sel.empty) { // Chrome sel.empty(); |
