diff options
| author | bobzel <zzzman@gmail.com> | 2023-02-09 21:15:58 -0500 | 
|---|---|---|
| committer | bobzel <zzzman@gmail.com> | 2023-02-09 21:15:58 -0500 | 
| commit | e17b1bdb09bfcadc717e687b09d2c18596341a10 (patch) | |
| tree | 86106951d981e844576b600d8fa0eb9e0b39bab0 /src/client/views/pdf/PDFViewer.tsx | |
| parent | a8b19694ec902d4094914ba6ddd15e700fab117e (diff) | |
fixed childLayoutString to work.  made images capable of fitWidth. fixed animating data field pres changes.  fixed lightbox to ignore annotations on collections.  fixed double-click on icon to open in lightbox. added options for turning off ink labels, and opening ink in lightbox. fixed closing ink strokes by dragging. fixed drawing ink to use coord sys of starting point and to render ink the correct width and to honor GestureOverlay mode properly. .
Diffstat (limited to 'src/client/views/pdf/PDFViewer.tsx')
| -rw-r--r-- | src/client/views/pdf/PDFViewer.tsx | 17 | 
1 files changed, 9 insertions, 8 deletions
diff --git a/src/client/views/pdf/PDFViewer.tsx b/src/client/views/pdf/PDFViewer.tsx index b0b7816b8..9610a71ac 100644 --- a/src/client/views/pdf/PDFViewer.tsx +++ b/src/client/views/pdf/PDFViewer.tsx @@ -144,6 +144,8 @@ export class PDFViewer extends React.Component<IViewerProps> {          }      }; +    @observable _scrollHeight = 0; +      @action      initialLoad = async () => {          if (this._pageSizes.length === 0) { @@ -164,8 +166,8 @@ export class PDFViewer extends React.Component<IViewerProps> {                      )                  )              ); -            this.props.Document.scrollHeight = (this._pageSizes.reduce((size, page) => size + page.height, 0) * 96) / 72;          } +        runInAction(() => (this._scrollHeight = (this._pageSizes.reduce((size, page) => size + page.height, 0) * 96) / 72));      };      _scrollStopper: undefined | (() => void); @@ -177,7 +179,7 @@ export class PDFViewer extends React.Component<IViewerProps> {          let focusSpeed: Opt<number>;          if (doc !== this.props.rootDoc && mainCont) {              const windowHeight = this.props.PanelHeight() / (this.props.NativeDimScaling?.() || 1); -            const scrollTo = doc.unrendered ? scrollTop : Utils.scrollIntoView(scrollTop, doc[HeightSym](), NumCast(this.props.layoutDoc._scrollTop), windowHeight, 0.1 * windowHeight, NumCast(this.props.Document.scrollHeight)); +            const scrollTo = doc.unrendered ? scrollTop : Utils.scrollIntoView(scrollTop, doc[HeightSym](), NumCast(this.props.layoutDoc._scrollTop), windowHeight, 0.1 * windowHeight, this._scrollHeight);              if (scrollTo !== undefined && scrollTo !== this.props.layoutDoc._scrollTop) {                  if (!this._pdfViewer) this._initialScroll = { loc: scrollTo, easeFunc: options.easeFunc };                  else if (!options.instant) this._scrollStopper = smoothScroll((focusSpeed = options.zoomTime ?? 500), mainCont, scrollTo, options.easeFunc, this._scrollStopper); @@ -453,10 +455,6 @@ export class PDFViewer extends React.Component<IViewerProps> {          }      }; -    scrollXf = () => { -        return this._mainCont.current ? this.props.ScreenToLocalTransform().translate(0, NumCast(this.props.layoutDoc._scrollTop)) : this.props.ScreenToLocalTransform(); -    }; -      onClick = (e: React.MouseEvent) => {          this._scrollStopper?.();          if (this._setPreviewCursor && e.button === 0 && Math.abs(e.clientX - this._downX) < Utils.DRAG_THRESHOLD && Math.abs(e.clientY - this._downY) < Utils.DRAG_THRESHOLD) { @@ -504,10 +502,12 @@ export class PDFViewer extends React.Component<IViewerProps> {          );      } +    getScrollHeight = () => this._scrollHeight;      showInfo = action((anno: Opt<Doc>) => (this._overlayAnnoInfo = anno)); +    scrollXf = () => (this._mainCont.current ? this.props.ScreenToLocalTransform().translate(0, NumCast(this.props.layoutDoc._scrollTop)) : this.props.ScreenToLocalTransform());      overlayTransform = () => this.scrollXf().scale(1 / NumCast(this.props.layoutDoc._viewScale, 1)); -    panelWidth = () => this.props.PanelWidth() / (this.props.NativeDimScaling?.() || 1); // (this.Document.scrollHeight || Doc.NativeHeight(this.Document) || 0); -    panelHeight = () => this.props.PanelHeight() / (this.props.NativeDimScaling?.() || 1); // () => this._pageSizes.length && this._pageSizes[0] ? this._pageSizes[0].width : Doc.NativeWidth(this.Document); +    panelWidth = () => this.props.PanelWidth() / (this.props.NativeDimScaling?.() || 1); +    panelHeight = () => this.props.PanelHeight() / (this.props.NativeDimScaling?.() || 1);      transparentFilter = () => [...this.props.docFilters(), Utils.IsTransparentFilter()];      opaqueFilter = () => [...this.props.docFilters(), Utils.noDragsDocFilter, ...(DragManager.docsBeingDragged.length ? [] : [Utils.IsOpaqueFilter()])];      childStyleProvider = (doc: Doc | undefined, props: Opt<DocumentViewProps>, property: string): any => { @@ -533,6 +533,7 @@ export class PDFViewer extends React.Component<IViewerProps> {                  isAnnotationOverlay={true}                  fieldKey={this.props.fieldKey + '-annotations'}                  CollectionView={undefined} +                getScrollHeight={this.getScrollHeight}                  setPreviewCursor={this.setPreviewCursor}                  setBrushViewer={this.setBrushViewer}                  PanelHeight={this.panelHeight}  | 
