aboutsummaryrefslogtreecommitdiff
path: root/src/client/views/pdf/Page.tsx
diff options
context:
space:
mode:
authorStanley Yip <33562077+yipstanley@users.noreply.github.com>2019-06-19 11:48:16 -0400
committerGitHub <noreply@github.com>2019-06-19 11:48:16 -0400
commit4ebbdd803cdf83806902509dfa0432ce3a139403 (patch)
treeed5dd37f37924a89f85a33338216a85575c33153 /src/client/views/pdf/Page.tsx
parent0bb20528c8167b3ba1c4c88d97586d50ae183b4c (diff)
parentc056adeca11f35972b5f75c6b1cc31292d5765d4 (diff)
Merge pull request #162 from browngraphicslab/pdf_fixes
Pdf fixes
Diffstat (limited to 'src/client/views/pdf/Page.tsx')
-rw-r--r--src/client/views/pdf/Page.tsx75
1 files changed, 4 insertions, 71 deletions
diff --git a/src/client/views/pdf/Page.tsx b/src/client/views/pdf/Page.tsx
index a19b64eda..39e737c32 100644
--- a/src/client/views/pdf/Page.tsx
+++ b/src/client/views/pdf/Page.tsx
@@ -15,6 +15,7 @@ import { listSpec } from "../../../new_fields/Schema";
import { menuBar } from "prosemirror-menu";
import { AnnotationTypes, PDFViewer, scale } from "./PDFViewer";
import PDFMenu from "./PDFMenu";
+import { UndoManager } from "../../util/UndoManager";
interface IPageProps {
@@ -51,7 +52,6 @@ export default class Page extends React.Component<IPageProps> {
private _marquee: React.RefObject<HTMLDivElement>;
private _curly: React.RefObject<HTMLImageElement>;
private _marqueeing: boolean = false;
- private _dragging: boolean = false;
private _reactionDisposer?: IReactionDisposer;
constructor(props: IPageProps) {
@@ -151,13 +151,8 @@ export default class Page extends React.Component<IPageProps> {
*/
@action
startDrag = (e: PointerEvent): void => {
- // the first 5 lines is a hack to prevent text selection while dragging
e.preventDefault();
e.stopPropagation();
- if (this._dragging) {
- return;
- }
- this._dragging = true;
let thisDoc = this.props.parent.Document;
// document that this annotation is linked to
let targetDoc = Docs.TextDocument({ width: 200, height: 200, title: "New Annotation" });
@@ -168,7 +163,7 @@ export default class Page extends React.Component<IPageProps> {
if (this._textLayer.current) {
DragManager.StartAnnotationDrag([this._textLayer.current], dragData, e.pageX, e.pageY, {
handlers: {
- dragComplete: action(emptyFunction),
+ dragComplete: emptyFunction,
},
hideSource: false
});
@@ -179,7 +174,6 @@ export default class Page extends React.Component<IPageProps> {
endDrag = (e: PointerEvent): void => {
// document.removeEventListener("pointermove", this.startDrag);
// document.removeEventListener("pointerup", this.endDrag);
- this._dragging = false;
e.stopPropagation();
}
@@ -195,6 +189,8 @@ export default class Page extends React.Component<IPageProps> {
// document.addEventListener("pointerup", this.endDrag);
}
else if (e.button === 0) {
+ PDFMenu.Instance.StartDrag = this.startDrag;
+ PDFMenu.Instance.Highlight = this.highlight;
PDFMenu.Instance.fadeOut(true);
let target: any = e.target;
if (target && target.parentElement === this._textLayer.current) {
@@ -329,68 +325,6 @@ export default class Page extends React.Component<IPageProps> {
PDFMenu.Instance.StartDrag = this.startDrag;
PDFMenu.Instance.Highlight = this.highlight;
}
- // let x = (e.clientX - boundingRect.left) * (current.offsetWidth / boundingRect.width);
- // let y = (e.clientY - boundingRect.top) * (current.offsetHeight / boundingRect.height);
- // if (this._marqueeing) {
- // this._marqueeing = false;
- // if (this._marquee.current) {
- // let copy = document.createElement("div");
- // // make a copy of the marquee
- // copy.style.left = this._marquee.current.style.left;
- // copy.style.top = this._marquee.current.style.top;
- // copy.style.width = this._marquee.current.style.width;
- // copy.style.height = this._marquee.current.style.height;
-
- // // apply the appropriate background, opacity, and transform
- // let { background, opacity, transform } = this.getCurlyTransform();
- // copy.style.background = background;
- // // if curly bracing, add a curly brace
- // if (opacity === "1" && this._curly.current) {
- // copy.style.opacity = opacity;
- // let img = this._curly.current.cloneNode();
- // (img as any).style.opacity = opacity;
- // (img as any).style.transform = transform;
- // copy.appendChild(img);
- // }
- // else {
- // copy.style.opacity = this._marquee.current.style.opacity;
- // }
- // copy.className = this._marquee.current.className;
- // this.props.createAnnotation(copy, this.props.page);
- // this._marquee.current.style.opacity = "0";
- // }
-
- // this._marqueeHeight = this._marqueeWidth = 0;
- // }
- // else {
- // let sel = window.getSelection();
- // // if selecting over a range of things
- // if (sel && sel.type === "Range") {
- // let clientRects = sel.getRangeAt(0).getClientRects();
- // if (this._textLayer.current) {
- // let boundingRect = this._textLayer.current.getBoundingClientRect();
- // for (let i = 0; i < clientRects.length; i++) {
- // let rect = clientRects.item(i);
- // if (rect) {
- // let annoBox = document.createElement("div");
- // annoBox.className = "pdfViewer-annotationBox";
- // // transforms the positions from screen onto the pdf div
- // annoBox.style.top = ((rect.top - boundingRect.top) * (this._textLayer.current.offsetHeight / boundingRect.height)).toString();
- // annoBox.style.left = ((rect.left - boundingRect.left) * (this._textLayer.current.offsetWidth / boundingRect.width)).toString();
- // annoBox.style.width = (rect.width * this._textLayer.current.offsetWidth / boundingRect.width).toString();
- // annoBox.style.height = (rect.height * this._textLayer.current.offsetHeight / boundingRect.height).toString();
- // this.props.createAnnotation(annoBox, this.props.page);
- // }
- // }
- // }
- // // clear selection
- // if (sel.empty) { // Chrome
- // sel.empty();
- // } else if (sel.removeAllRanges) { // Firefox
- // sel.removeAllRanges();
- // }
- // }
- // }
document.removeEventListener("pointermove", this.onSelectStart);
document.removeEventListener("pointerup", this.onSelectEnd);
}
@@ -403,7 +337,6 @@ export default class Page extends React.Component<IPageProps> {
for (let i = 0; i < clientRects.length; i++) {
let rect = clientRects.item(i);
if (rect && rect.width !== this._textLayer.current.getBoundingClientRect().width && rect.height !== this._textLayer.current.getBoundingClientRect().height) {
- console.log(rect);
let annoBox = document.createElement("div");
annoBox.className = "pdfViewer-annotationBox";
// transforms the positions from screen onto the pdf div