mirror of
				https://github.com/paperless-ngx/paperless-ngx.git
				synced 2025-11-03 03:16:10 -06:00 
			
		
		
		
	Use ng2-pdf-viewer
And remove now-unused safeUrl pipe
This commit is contained in:
		
							
								
								
									
										63
									
								
								src-ui/package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										63
									
								
								src-ui/package-lock.json
									
									
									
										generated
									
									
									
								
							@@ -2215,6 +2215,11 @@
 | 
				
			|||||||
      "integrity": "sha512-UV1/ZJMC+HcP902wWdpC43cAcGu0IQk/I5bXjP2aSuCjsk3cE74mDvFrLKga7oDC170ugOAYBwfT4DSQW3akDA==",
 | 
					      "integrity": "sha512-UV1/ZJMC+HcP902wWdpC43cAcGu0IQk/I5bXjP2aSuCjsk3cE74mDvFrLKga7oDC170ugOAYBwfT4DSQW3akDA==",
 | 
				
			||||||
      "dev": true
 | 
					      "dev": true
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    "@types/pdfjs-dist": {
 | 
				
			||||||
 | 
					      "version": "2.1.7",
 | 
				
			||||||
 | 
					      "resolved": "https://registry.npmjs.org/@types/pdfjs-dist/-/pdfjs-dist-2.1.7.tgz",
 | 
				
			||||||
 | 
					      "integrity": "sha512-nQIwcPUhkAIyn7x9NS0lR/qxYfd5unRtfGkMjvpgF4Sh28IXftRymaNmFKTTdejDNY25NDGSIyjwj/BRwAPexg=="
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "@types/q": {
 | 
					    "@types/q": {
 | 
				
			||||||
      "version": "1.5.4",
 | 
					      "version": "1.5.4",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz",
 | 
				
			||||||
@@ -3023,6 +3028,16 @@
 | 
				
			|||||||
      "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==",
 | 
					      "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==",
 | 
				
			||||||
      "dev": true
 | 
					      "dev": true
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    "bindings": {
 | 
				
			||||||
 | 
					      "version": "1.5.0",
 | 
				
			||||||
 | 
					      "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
 | 
				
			||||||
 | 
					      "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
 | 
				
			||||||
 | 
					      "dev": true,
 | 
				
			||||||
 | 
					      "optional": true,
 | 
				
			||||||
 | 
					      "requires": {
 | 
				
			||||||
 | 
					        "file-uri-to-path": "1.0.0"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "blob": {
 | 
					    "blob": {
 | 
				
			||||||
      "version": "0.0.5",
 | 
					      "version": "0.0.5",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz",
 | 
				
			||||||
@@ -5508,6 +5523,13 @@
 | 
				
			|||||||
        "schema-utils": "^2.6.5"
 | 
					        "schema-utils": "^2.6.5"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    "file-uri-to-path": {
 | 
				
			||||||
 | 
					      "version": "1.0.0",
 | 
				
			||||||
 | 
					      "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
 | 
				
			||||||
 | 
					      "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
 | 
				
			||||||
 | 
					      "dev": true,
 | 
				
			||||||
 | 
					      "optional": true
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "fill-range": {
 | 
					    "fill-range": {
 | 
				
			||||||
      "version": "7.0.1",
 | 
					      "version": "7.0.1",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
 | 
				
			||||||
@@ -8208,6 +8230,13 @@
 | 
				
			|||||||
      "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
 | 
					      "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
 | 
				
			||||||
      "dev": true
 | 
					      "dev": true
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    "nan": {
 | 
				
			||||||
 | 
					      "version": "2.14.2",
 | 
				
			||||||
 | 
					      "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz",
 | 
				
			||||||
 | 
					      "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==",
 | 
				
			||||||
 | 
					      "dev": true,
 | 
				
			||||||
 | 
					      "optional": true
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "nanomatch": {
 | 
					    "nanomatch": {
 | 
				
			||||||
      "version": "1.2.13",
 | 
					      "version": "1.2.13",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
 | 
				
			||||||
@@ -8260,6 +8289,23 @@
 | 
				
			|||||||
        "moment": "2.18.1"
 | 
					        "moment": "2.18.1"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    "ng2-pdf-viewer": {
 | 
				
			||||||
 | 
					      "version": "6.3.2",
 | 
				
			||||||
 | 
					      "resolved": "https://registry.npmjs.org/ng2-pdf-viewer/-/ng2-pdf-viewer-6.3.2.tgz",
 | 
				
			||||||
 | 
					      "integrity": "sha512-H2tBhDd+Lq6CUzK2g54HsCcZDR2wTn1sDjYqKY3yF0Ydasl2R5ppCKynZBU/zge4EKvmHglJI120FbQMpJKDYQ==",
 | 
				
			||||||
 | 
					      "requires": {
 | 
				
			||||||
 | 
					        "@types/pdfjs-dist": "^2.1.4",
 | 
				
			||||||
 | 
					        "pdfjs-dist": "^2.4.456",
 | 
				
			||||||
 | 
					        "tslib": "^1.10.0"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "dependencies": {
 | 
				
			||||||
 | 
					        "tslib": {
 | 
				
			||||||
 | 
					          "version": "1.14.1",
 | 
				
			||||||
 | 
					          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
 | 
				
			||||||
 | 
					          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "ngx-cookie-service": {
 | 
					    "ngx-cookie-service": {
 | 
				
			||||||
      "version": "10.1.1",
 | 
					      "version": "10.1.1",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/ngx-cookie-service/-/ngx-cookie-service-10.1.1.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/ngx-cookie-service/-/ngx-cookie-service-10.1.1.tgz",
 | 
				
			||||||
@@ -9270,6 +9316,11 @@
 | 
				
			|||||||
        "sha.js": "^2.4.8"
 | 
					        "sha.js": "^2.4.8"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    "pdfjs-dist": {
 | 
				
			||||||
 | 
					      "version": "2.5.207",
 | 
				
			||||||
 | 
					      "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-2.5.207.tgz",
 | 
				
			||||||
 | 
					      "integrity": "sha512-xGDUhnCYPfHy+unMXCLCJtlpZaaZ17Ew3WIL0tnSgKFUZXHAPD49GO9xScyszSsQMoutNDgRb+rfBXIaX/lJbw=="
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "performance-now": {
 | 
					    "performance-now": {
 | 
				
			||||||
      "version": "2.1.0",
 | 
					      "version": "2.1.0",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
 | 
				
			||||||
@@ -13228,7 +13279,11 @@
 | 
				
			|||||||
          "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz",
 | 
					          "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz",
 | 
				
			||||||
          "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
 | 
					          "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
 | 
				
			||||||
          "dev": true,
 | 
					          "dev": true,
 | 
				
			||||||
          "optional": true
 | 
					          "optional": true,
 | 
				
			||||||
 | 
					          "requires": {
 | 
				
			||||||
 | 
					            "bindings": "^1.5.0",
 | 
				
			||||||
 | 
					            "nan": "^2.12.1"
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        "glob-parent": {
 | 
					        "glob-parent": {
 | 
				
			||||||
          "version": "3.1.0",
 | 
					          "version": "3.1.0",
 | 
				
			||||||
@@ -13832,7 +13887,11 @@
 | 
				
			|||||||
          "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz",
 | 
					          "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz",
 | 
				
			||||||
          "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
 | 
					          "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
 | 
				
			||||||
          "dev": true,
 | 
					          "dev": true,
 | 
				
			||||||
          "optional": true
 | 
					          "optional": true,
 | 
				
			||||||
 | 
					          "requires": {
 | 
				
			||||||
 | 
					            "bindings": "^1.5.0",
 | 
				
			||||||
 | 
					            "nan": "^2.12.1"
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        "glob-parent": {
 | 
					        "glob-parent": {
 | 
				
			||||||
          "version": "3.1.0",
 | 
					          "version": "3.1.0",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -23,6 +23,7 @@
 | 
				
			|||||||
    "@ng-bootstrap/ng-bootstrap": "^8.0.0",
 | 
					    "@ng-bootstrap/ng-bootstrap": "^8.0.0",
 | 
				
			||||||
    "bootstrap": "^4.5.0",
 | 
					    "bootstrap": "^4.5.0",
 | 
				
			||||||
    "ng-bootstrap": "^1.6.3",
 | 
					    "ng-bootstrap": "^1.6.3",
 | 
				
			||||||
 | 
					    "ng2-pdf-viewer": "^6.3.2",
 | 
				
			||||||
    "ngx-cookie-service": "^10.1.1",
 | 
					    "ngx-cookie-service": "^10.1.1",
 | 
				
			||||||
    "ngx-file-drop": "^10.0.0",
 | 
					    "ngx-file-drop": "^10.0.0",
 | 
				
			||||||
    "ngx-infinite-scroll": "^9.1.0",
 | 
					    "ngx-infinite-scroll": "^9.1.0",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,7 +14,6 @@ import { LogsComponent } from './components/manage/logs/logs.component';
 | 
				
			|||||||
import { SettingsComponent } from './components/manage/settings/settings.component';
 | 
					import { SettingsComponent } from './components/manage/settings/settings.component';
 | 
				
			||||||
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
 | 
					import { FormsModule, ReactiveFormsModule } from '@angular/forms';
 | 
				
			||||||
import { DatePipe } from '@angular/common';
 | 
					import { DatePipe } from '@angular/common';
 | 
				
			||||||
import { SafePipe } from './pipes/safe.pipe';
 | 
					 | 
				
			||||||
import { NotFoundComponent } from './components/not-found/not-found.component';
 | 
					import { NotFoundComponent } from './components/not-found/not-found.component';
 | 
				
			||||||
import { CorrespondentListComponent } from './components/manage/correspondent-list/correspondent-list.component';
 | 
					import { CorrespondentListComponent } from './components/manage/correspondent-list/correspondent-list.component';
 | 
				
			||||||
import { DeleteDialogComponent } from './components/common/delete-dialog/delete-dialog.component';
 | 
					import { DeleteDialogComponent } from './components/common/delete-dialog/delete-dialog.component';
 | 
				
			||||||
@@ -45,6 +44,7 @@ import { SavedViewWidgetComponent } from './components/dashboard/widgets/saved-v
 | 
				
			|||||||
import { StatisticsWidgetComponent } from './components/dashboard/widgets/statistics-widget/statistics-widget.component';
 | 
					import { StatisticsWidgetComponent } from './components/dashboard/widgets/statistics-widget/statistics-widget.component';
 | 
				
			||||||
import { UploadFileWidgetComponent } from './components/dashboard/widgets/upload-file-widget/upload-file-widget.component';
 | 
					import { UploadFileWidgetComponent } from './components/dashboard/widgets/upload-file-widget/upload-file-widget.component';
 | 
				
			||||||
import { WidgetFrameComponent } from './components/dashboard/widgets/widget-frame/widget-frame.component';
 | 
					import { WidgetFrameComponent } from './components/dashboard/widgets/widget-frame/widget-frame.component';
 | 
				
			||||||
 | 
					import { PdfViewerModule } from 'ng2-pdf-viewer';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@NgModule({
 | 
					@NgModule({
 | 
				
			||||||
  declarations: [
 | 
					  declarations: [
 | 
				
			||||||
@@ -57,7 +57,6 @@ import { WidgetFrameComponent } from './components/dashboard/widgets/widget-fram
 | 
				
			|||||||
    DocumentTypeListComponent,
 | 
					    DocumentTypeListComponent,
 | 
				
			||||||
    LogsComponent,
 | 
					    LogsComponent,
 | 
				
			||||||
    SettingsComponent,
 | 
					    SettingsComponent,
 | 
				
			||||||
    SafePipe,
 | 
					 | 
				
			||||||
    NotFoundComponent,
 | 
					    NotFoundComponent,
 | 
				
			||||||
    CorrespondentEditDialogComponent,
 | 
					    CorrespondentEditDialogComponent,
 | 
				
			||||||
    DeleteDialogComponent,
 | 
					    DeleteDialogComponent,
 | 
				
			||||||
@@ -92,7 +91,8 @@ import { WidgetFrameComponent } from './components/dashboard/widgets/widget-fram
 | 
				
			|||||||
    FormsModule,
 | 
					    FormsModule,
 | 
				
			||||||
    ReactiveFormsModule,
 | 
					    ReactiveFormsModule,
 | 
				
			||||||
    NgxFileDropModule,
 | 
					    NgxFileDropModule,
 | 
				
			||||||
    InfiniteScrollModule
 | 
					    InfiniteScrollModule,
 | 
				
			||||||
 | 
					    PdfViewerModule
 | 
				
			||||||
  ],
 | 
					  ],
 | 
				
			||||||
  providers: [
 | 
					  providers: [
 | 
				
			||||||
    DatePipe,
 | 
					    DatePipe,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -66,10 +66,8 @@
 | 
				
			|||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <div class="col-xl">
 | 
					    <div class="col-xl">
 | 
				
			||||||
        <object [data]="previewUrl | safe" type="application/pdf" width="100%" height="100%">
 | 
					      <div class="pdf-viewer-container">
 | 
				
			||||||
            <p>Your browser does not support PDFs.
 | 
					        <pdf-viewer [src]="previewUrl" [original-size]="false" [show-borders]="false"></pdf-viewer>
 | 
				
			||||||
                <a href="previewUrl">Download the PDF</a>.</p>
 | 
					      </div>
 | 
				
			||||||
        </object>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
</div>
 | 
					</div>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -0,0 +1,8 @@
 | 
				
			|||||||
 | 
					.pdf-viewer-container {
 | 
				
			||||||
 | 
					  height: calc(100vh - 160px);
 | 
				
			||||||
 | 
					  top: 70px;
 | 
				
			||||||
 | 
					  position: sticky;
 | 
				
			||||||
 | 
					  padding: 10px;
 | 
				
			||||||
 | 
					  background-color: gray;
 | 
				
			||||||
 | 
					  overflow-y: scroll;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,8 +0,0 @@
 | 
				
			|||||||
import { SafePipe } from './safe.pipe';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
describe('SafePipe', () => {
 | 
					 | 
				
			||||||
  it('create an instance', () => {
 | 
					 | 
				
			||||||
    const pipe = new SafePipe();
 | 
					 | 
				
			||||||
    expect(pipe).toBeTruthy();
 | 
					 | 
				
			||||||
  });
 | 
					 | 
				
			||||||
});
 | 
					 | 
				
			||||||
@@ -1,19 +0,0 @@
 | 
				
			|||||||
import { Pipe, PipeTransform } from '@angular/core';
 | 
					 | 
				
			||||||
import { DomSanitizer } from '@angular/platform-browser';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@Pipe({
 | 
					 | 
				
			||||||
  name: 'safe'
 | 
					 | 
				
			||||||
})
 | 
					 | 
				
			||||||
export class SafePipe implements PipeTransform {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  constructor(private sanitizer: DomSanitizer) { }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  transform(url) {
 | 
					 | 
				
			||||||
    if (url == null) {
 | 
					 | 
				
			||||||
      return this.sanitizer.bypassSecurityTrustResourceUrl("")
 | 
					 | 
				
			||||||
    } else {
 | 
					 | 
				
			||||||
      return this.sanitizer.bypassSecurityTrustResourceUrl(url);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
		Reference in New Issue
	
	Block a user