@theseam/ui-common 0.2.15 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/bundles/theseam-ui-common-datatable.umd.js +1 -7
  2. package/bundles/theseam-ui-common-datatable.umd.js.map +1 -1
  3. package/bundles/theseam-ui-common-framework.umd.js +1 -1
  4. package/bundles/theseam-ui-common-framework.umd.js.map +1 -1
  5. package/bundles/theseam-ui-common-scrollbar.umd.js +1 -1
  6. package/bundles/theseam-ui-common-scrollbar.umd.js.map +1 -1
  7. package/bundles/theseam-ui-common-table-cell-types.umd.js +89 -4
  8. package/bundles/theseam-ui-common-table-cell-types.umd.js.map +1 -1
  9. package/bundles/theseam-ui-common-tel-input.umd.js +59 -7
  10. package/bundles/theseam-ui-common-tel-input.umd.js.map +1 -1
  11. package/bundles/theseam-ui-common-testing.umd.js.map +1 -1
  12. package/bundles/theseam-ui-common-utils.umd.js.map +1 -1
  13. package/bundles/theseam-ui-common-viewers.umd.js +269 -4
  14. package/bundles/theseam-ui-common-viewers.umd.js.map +1 -1
  15. package/datatable/datatable-column-preferences/datatable-column-preferences.component.d.ts +0 -1
  16. package/datatable/theseam-ui-common-datatable.metadata.json +1 -1
  17. package/esm2015/datatable/datatable-column-preferences/datatable-column-preferences.component.js +4 -10
  18. package/esm2015/datatable/models/columns-alteration.js +1 -1
  19. package/esm2015/datatable/models/columns-alterations/hide-column.columns-alteration.js +1 -1
  20. package/esm2015/datatable/models/columns-alterations/sort.columns-alteration.js +1 -1
  21. package/esm2015/datatable/models/columns-alterations/width.columns-alteration.js +1 -1
  22. package/esm2015/datatable/models/internal-column-props.js +1 -1
  23. package/esm2015/datatable/services/columns-alterations-manager.service.js +1 -1
  24. package/esm2015/datatable/utils/map-columns-alterations-states.js +1 -1
  25. package/esm2015/framework/top-bar/top-bar.component.js +2 -2
  26. package/esm2015/graphql/models/gql-datatable-accessor.js +1 -1
  27. package/esm2015/scrollbar/overlay-scrollbar.directive.js +2 -2
  28. package/esm2015/table-cell-types/table-cell-type-currency/table-cell-type-currency-config.js +1 -1
  29. package/esm2015/table-cell-types/table-cell-type-currency/table-cell-type-currency.component.js +17 -2
  30. package/esm2015/table-cell-types/table-cell-type-decimal/table-cell-type-decimal-config.js +1 -1
  31. package/esm2015/table-cell-types/table-cell-type-decimal/table-cell-type-decimal.component.js +16 -2
  32. package/esm2015/table-cell-types/table-cell-type-integer/table-cell-type-integer-config.js +1 -1
  33. package/esm2015/table-cell-types/table-cell-type-integer/table-cell-type-integer.component.js +16 -2
  34. package/esm2015/table-cell-types/table-cell-type-string/table-cell-type-string-config.js +1 -1
  35. package/esm2015/table-cell-types/table-cell-type-string/table-cell-type-string.component.js +32 -4
  36. package/esm2015/tel-input/tel-input/tel-input.component.js +10 -2
  37. package/esm2015/tel-input/tel-input.directive.js +50 -5
  38. package/esm2015/testing/current-tick-time.js +1 -1
  39. package/esm2015/utils/array-move.js +1 -1
  40. package/esm2015/utils/router/is-empty-url-route.js +1 -1
  41. package/esm2015/viewers/html-template-viewer/html-template-viewer.component.js +219 -0
  42. package/esm2015/viewers/html-template-viewer/html-template-viewer.module.js +23 -0
  43. package/esm2015/viewers/html-template-viewer/index.js +3 -0
  44. package/esm2015/viewers/public-api.js +2 -1
  45. package/fesm2015/theseam-ui-common-datatable.js +1 -7
  46. package/fesm2015/theseam-ui-common-datatable.js.map +1 -1
  47. package/fesm2015/theseam-ui-common-framework.js +1 -1
  48. package/fesm2015/theseam-ui-common-framework.js.map +1 -1
  49. package/fesm2015/theseam-ui-common-scrollbar.js +1 -1
  50. package/fesm2015/theseam-ui-common-scrollbar.js.map +1 -1
  51. package/fesm2015/theseam-ui-common-table-cell-types.js +74 -5
  52. package/fesm2015/theseam-ui-common-table-cell-types.js.map +1 -1
  53. package/fesm2015/theseam-ui-common-tel-input.js +58 -6
  54. package/fesm2015/theseam-ui-common-tel-input.js.map +1 -1
  55. package/fesm2015/theseam-ui-common-testing.js.map +1 -1
  56. package/fesm2015/theseam-ui-common-utils.js.map +1 -1
  57. package/fesm2015/theseam-ui-common-viewers.js +237 -2
  58. package/fesm2015/theseam-ui-common-viewers.js.map +1 -1
  59. package/framework/theseam-ui-common-framework.metadata.json +1 -1
  60. package/package.json +1 -1
  61. package/table-cell-types/table-cell-type-currency/table-cell-type-currency-config.d.ts +5 -0
  62. package/table-cell-types/table-cell-type-decimal/table-cell-type-decimal-config.d.ts +5 -0
  63. package/table-cell-types/table-cell-type-integer/table-cell-type-integer-config.d.ts +5 -0
  64. package/table-cell-types/table-cell-type-string/table-cell-type-string-config.d.ts +8 -0
  65. package/table-cell-types/table-cell-type-string/table-cell-type-string.component.d.ts +9 -0
  66. package/table-cell-types/theseam-ui-common-table-cell-types.metadata.json +1 -1
  67. package/tel-input/tel-input.directive.d.ts +7 -3
  68. package/tel-input/theseam-ui-common-tel-input.metadata.json +1 -1
  69. package/viewers/html-template-viewer/html-template-viewer.component.d.ts +67 -0
  70. package/viewers/html-template-viewer/html-template-viewer.module.d.ts +2 -0
  71. package/viewers/html-template-viewer/index.d.ts +2 -0
  72. package/viewers/public-api.d.ts +1 -0
  73. package/viewers/theseam-ui-common-viewers.metadata.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"theseam-ui-common-viewers.js","sources":["../../../projects/ui-common/viewers/pdf-viewer/pdf-page/pdf-page.component.ts","../../../projects/ui-common/viewers/pdf-viewer/pdf-renderer.service.ts","../../../projects/ui-common/viewers/pdf-viewer/pdf-viewer.component.ts","../../../projects/ui-common/viewers/pdf-viewer/pdf-viewer.module.ts","../../../projects/ui-common/viewers/theseam-ui-common-viewers.ts"],"sourcesContent":["import { BooleanInput } from '@angular/cdk/coercion'\nimport { AfterViewInit, Component, ElementRef, HostBinding, Input, OnDestroy, ViewChild } from '@angular/core'\nimport { from, Observable, Subject } from 'rxjs'\nimport { auditTime, switchMap, takeUntil } from 'rxjs/operators'\n\nimport { InputBoolean } from '@theseam/ui-common/core'\nimport { waitOnConditionAsync } from '@theseam/ui-common/utils'\n\n@Component({\n selector: 'seam-pdf-page',\n template: `\n <div #pdfContainer\n (seamElemResized)=\"onResized()\">\n <canvas #pdfCanvas></canvas>\n </div>\n `,\n styles: [`\n :host { display: block; }\n canvas { display: block; }\n `]\n})\nexport class TheSeamPdfPageComponent implements OnDestroy, AfterViewInit {\n static ngAcceptInputType_shadow: BooleanInput\n static ngAcceptInputType_responsive: BooleanInput\n\n private readonly _ngUnsubscribe = new Subject()\n\n @Input()\n public get page() { return this._page }\n public set page(value) {\n this._page = value\n setTimeout(() => { this.render() })\n }\n private _page: any\n\n @Input() @InputBoolean() shadow: boolean = false\n\n @HostBinding('class.shadow') get _shadow() { return this.shadow }\n\n @ViewChild('pdfContainer', { static: true }) pdfContainer?: ElementRef<HTMLDivElement>\n @ViewChild('pdfCanvas', { static: true }) pdfCanvas?: ElementRef<HTMLCanvasElement>\n\n /**\n * Canvas will responsively scale and rerender if scaled more than\n * `renderUpdateThreshold` pixels.\n */\n @Input() @InputBoolean() responsive = false\n\n /**\n * The canvas will be rerendered if the canvas size changes by this many\n * pixels from the last render.\n *\n * To make the canvas responsive using only the initial size for its render\n * set the threshold to `-1`. You can still trigger a rerender by calling the\n * `render()` method.\n *\n * NOTE: Only used when `responsive` is `true`.\n */\n @Input() renderUpdateThreshold = 100\n\n public rendering = false\n\n private _renderRequestSubject = new Subject<void>()\n\n private _render$: Observable<void>\n\n constructor() {\n this._render$ = this._renderRequestSubject.pipe(\n takeUntil(this._ngUnsubscribe),\n auditTime(500),\n switchMap(_ => from(waitOnConditionAsync(() => this.rendering === false, 30 * 1000))),\n switchMap(_ => from(this._render()))\n )\n }\n\n ngOnDestroy() {\n this._ngUnsubscribe.next()\n this._ngUnsubscribe.complete()\n }\n\n ngAfterViewInit() {\n this._render$.subscribe()\n this.render()\n }\n\n public render() {\n this._renderRequestSubject.next()\n }\n\n private async _render() {\n if (!this.pdfContainer || !this.pdfCanvas) {\n return\n }\n\n try {\n const w = this.pdfContainer.nativeElement.clientWidth\n const desiredWidth = w\n const viewport = this.page.getViewport({ scale: 1 })\n const scale = desiredWidth / viewport.width\n const scaledViewport = this.page.getViewport({ scale })\n\n // Prepare canvas using PDF page dimensions\n const canvas: HTMLCanvasElement = this.pdfCanvas.nativeElement\n const context = canvas.getContext('2d')\n canvas.height = scaledViewport.height\n canvas.width = scaledViewport.width\n canvas.style.height = `${scaledViewport.height}px`\n canvas.style.width = `${scaledViewport.width}px`\n\n // Render PDF page into canvas context\n const renderContext = {\n canvasContext: context,\n viewport: scaledViewport\n }\n\n const renderTask = await this.page.render(renderContext).promise\n\n // TODO: Allow canceling instead of only waiting\n // await renderTask.cancel()\n this.rendering = false\n if (this.responsive) {\n canvas.style.width = '100%'\n canvas.style.height = '100%'\n }\n } catch (err) {\n // PDF loading error\n console.error(err)\n }\n }\n\n onResized() {\n if (!this.responsive || this.renderUpdateThreshold === -1) { return }\n\n if (!this.pdfContainer || !this.pdfCanvas) {\n return\n }\n\n const containerRect = this.pdfContainer.nativeElement.getBoundingClientRect()\n const pdfWidth = this.pdfCanvas.nativeElement.width\n const pdfHeight = this.pdfCanvas.nativeElement.height\n const wDiff = Math.abs(containerRect.width - pdfWidth)\n const hDiff = Math.abs(containerRect.height - pdfHeight)\n if (wDiff > this.renderUpdateThreshold || hDiff > this.renderUpdateThreshold) {\n this.render()\n }\n\n }\n\n}\n","import { Injectable } from '@angular/core'\nimport { from, Observable } from 'rxjs'\nimport { shareReplay, switchMap, tap } from 'rxjs/operators'\n\nimport { wrapIntoObservable } from '@theseam/ui-common/utils'\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PdfRendererService {\n\n private readonly _pdfjs$: Observable<any>\n\n constructor() {\n const pdfjsImport = wrapIntoObservable(import('pdfjs-dist/legacy/build/pdf'))\n this._pdfjs$ = pdfjsImport.pipe(\n tap((pdfJs: any) => {\n if (!pdfJs.GlobalWorkerOptions.workerSrc) {\n // tslint:disable-next-line:max-line-length\n pdfJs.GlobalWorkerOptions.workerSrc = `https://cdnjs.cloudflare.com/ajax/libs/pdf.js/${ (pdfJs as any).version }/pdf.worker.min.js`\n }\n }),\n shareReplay({ bufferSize: 1, refCount: true })\n )\n }\n\n public getDocument(url: string): Observable<any> {\n return from(fetch(url)).pipe(\n switchMap(v => this._pdfjs$.pipe(\n switchMap(pdfjs => pdfjs.getDocument(v).promise)\n ))\n )\n }\n}\n","import { BooleanInput, coerceArray, coerceNumberProperty } from '@angular/cdk/coercion'\nimport { Component, Input } from '@angular/core'\nimport { BehaviorSubject, from, Observable, of, ReplaySubject } from 'rxjs'\nimport { map, shareReplay, switchMap, tap } from 'rxjs/operators'\n\nimport { InputBoolean } from '@theseam/ui-common/core'\nimport { wrapIntoObservable } from '@theseam/ui-common/utils'\n\nimport { PdfRendererService } from './pdf-renderer.service'\n\n@Component({\n selector: 'seam-pdf-viewer',\n template: `\n <ng-container *ngFor=\"let page of pages$ | async\">\n <seam-pdf-page\n class=\"mb-2\"\n [page]=\"page | async\"\n [responsive]=\"responsive\"\n [shadow]=\"shadow\"\n [renderUpdateThreshold]=\"renderUpdateThreshold\">\n </seam-pdf-page>\n </ng-container>\n `,\n styles: [`:host { display: block; }`]\n})\nexport class TheSeamPdfViewerComponent {\n static ngAcceptInputType_shadow: BooleanInput\n static ngAcceptInputType_responsive: BooleanInput\n\n @Input()\n get pdfUrl(): string | undefined | null { return this._pdfUrl }\n set pdfUrl(value: string | undefined | null) {\n this._pdfUrl = value\n this._documentSubject.next(value)\n }\n private _pdfUrl: string | undefined | null\n\n @Input() @InputBoolean() shadow = false\n\n /**\n * Canvas will responsively scale and rerender if scaled more than\n * `renderUpdateThreshold` pixels.\n */\n @Input() @InputBoolean() responsive = false\n\n /**\n * The canvas will be rerendered if the canvas size changes by this many\n * pixels from the last render.\n *\n * To make the canvas responsive using only the initial size for its render\n * set the threshold to `-1`. You can still trigger a rerender by calling the\n * `render()` method.\n *\n * NOTE: Only used when `responsive` is `true`.\n */\n @Input()\n set renderUpdateThreshold(value: number) { this._renderUpdateThreshold = coerceNumberProperty(value) }\n get renderUpdateThreshold(): number { return this._renderUpdateThreshold }\n private _renderUpdateThreshold: number = 100\n\n /**\n * Range of pages to render.\n *\n * Example(page 1 to page 3):\n * [pageRange]=\"[1,3]\"\n */\n @Input()\n get pageRange(): number[] { return this._pageRange }\n set pageRange(value: number[]) {\n this._pageRange = value\n\n if (!this._pageRange) {\n this._pageNumbersSubject.next(undefined)\n }\n\n try {\n const range = coerceArray(this._pageRange)\n if (range.length !== 2) {\n throw new Error('[pdf-viewer] Invalid Page Range. Range array must have two numbers only.')\n }\n if (range[0] > range[1]) {\n throw new Error('[pdf-viewer] Invalid Page Range. Start of the range must be less than or equal to the end.')\n }\n\n const nums: number[] = []\n for (let i = range[0]; i <= range[1]; i++) {\n nums.push(i)\n }\n this._pageNumbersSubject.next(nums)\n } catch (err) {\n // TODO: Decide how to conveniently display these errors.\n console.error(err)\n this._pageNumbersSubject.next([])\n }\n }\n private _pageRange: number[] = []\n\n /**\n * Render a specific page.\n */\n @Input()\n get pageNumber(): number { return this._pageNumber }\n set pageNumber(value: number) {\n this._pageNumber = coerceNumberProperty(value, -1)\n this._pageNumbersSubject.next(this._pageNumber === -1 ? undefined : [ this._pageNumber ])\n }\n private _pageNumber = -1\n\n /**\n * Specific page numbers to render.\n */\n @Input()\n get pageNumbers(): number[] { return this._pageNumbers }\n set pageNumbers(value: number[]) {\n this._pageNumbers = value\n if (Array.isArray(this._pageNumbers)) {\n this._pageNumbersSubject.next(this._pageNumbers)\n } else {\n this._pageNumbersSubject.next(undefined)\n }\n }\n private _pageNumbers: number[] = []\n\n private _documentSubject = new ReplaySubject<any>(1)\n public document$: Observable<any>\n public pages$: Observable<any[]>\n\n /**\n * Undefined means all a pages\n */\n private _pageNumbersSubject = new BehaviorSubject<number[] | undefined>(undefined)\n\n constructor(\n private readonly _pdfRenderer: PdfRendererService\n ) {\n this.document$ = this._documentSubject.asObservable().pipe(\n switchMap(url => {\n if (!url) {\n return of()\n }\n return this._pdfRenderer.getDocument(url)\n })\n )\n\n const pageNumbers$ = this._pageNumbersSubject.asObservable()\n\n this.pages$ = this.document$.pipe(\n switchMap(doc => pageNumbers$.pipe(\n map(pageNumbers => {\n const pages: any[] = []\n for (let i = 0; i < doc.numPages; i++) {\n if (!pageNumbers || pageNumbers.indexOf(i + 1) !== -1) {\n pages.push(from(doc.getPage(i + 1)))\n }\n }\n return pages\n })\n ))\n )\n }\n\n}\n","import { CommonModule } from '@angular/common'\nimport { NgModule } from '@angular/core'\n\nimport { TheSeamSharedModule } from '@theseam/ui-common/shared'\n\nimport { TheSeamPdfPageComponent } from './pdf-page/pdf-page.component'\nimport { TheSeamPdfViewerComponent } from './pdf-viewer.component'\n\n@NgModule({\n imports: [\n CommonModule,\n TheSeamSharedModule\n ],\n declarations: [\n TheSeamPdfViewerComponent,\n TheSeamPdfPageComponent\n ],\n exports: [\n TheSeamPdfViewerComponent,\n TheSeamPdfPageComponent\n ]\n})\nexport class TheSeamPdfViewerModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"theseam-ui-common-viewers.js","sources":["../../../projects/ui-common/viewers/pdf-viewer/pdf-page/pdf-page.component.ts","../../../projects/ui-common/viewers/pdf-viewer/pdf-renderer.service.ts","../../../projects/ui-common/viewers/pdf-viewer/pdf-viewer.component.ts","../../../projects/ui-common/viewers/pdf-viewer/pdf-viewer.module.ts","../../../projects/ui-common/viewers/html-template-viewer/html-template-viewer.component.ts","../../../projects/ui-common/viewers/html-template-viewer/html-template-viewer.module.ts","../../../projects/ui-common/viewers/theseam-ui-common-viewers.ts"],"sourcesContent":["import { BooleanInput } from '@angular/cdk/coercion'\nimport { AfterViewInit, Component, ElementRef, HostBinding, Input, OnDestroy, ViewChild } from '@angular/core'\nimport { from, Observable, Subject } from 'rxjs'\nimport { auditTime, switchMap, takeUntil } from 'rxjs/operators'\n\nimport { InputBoolean } from '@theseam/ui-common/core'\nimport { waitOnConditionAsync } from '@theseam/ui-common/utils'\n\n@Component({\n selector: 'seam-pdf-page',\n template: `\n <div #pdfContainer\n (seamElemResized)=\"onResized()\">\n <canvas #pdfCanvas></canvas>\n </div>\n `,\n styles: [`\n :host { display: block; }\n canvas { display: block; }\n `]\n})\nexport class TheSeamPdfPageComponent implements OnDestroy, AfterViewInit {\n static ngAcceptInputType_shadow: BooleanInput\n static ngAcceptInputType_responsive: BooleanInput\n\n private readonly _ngUnsubscribe = new Subject()\n\n @Input()\n public get page() { return this._page }\n public set page(value) {\n this._page = value\n setTimeout(() => { this.render() })\n }\n private _page: any\n\n @Input() @InputBoolean() shadow: boolean = false\n\n @HostBinding('class.shadow') get _shadow() { return this.shadow }\n\n @ViewChild('pdfContainer', { static: true }) pdfContainer?: ElementRef<HTMLDivElement>\n @ViewChild('pdfCanvas', { static: true }) pdfCanvas?: ElementRef<HTMLCanvasElement>\n\n /**\n * Canvas will responsively scale and rerender if scaled more than\n * `renderUpdateThreshold` pixels.\n */\n @Input() @InputBoolean() responsive = false\n\n /**\n * The canvas will be rerendered if the canvas size changes by this many\n * pixels from the last render.\n *\n * To make the canvas responsive using only the initial size for its render\n * set the threshold to `-1`. You can still trigger a rerender by calling the\n * `render()` method.\n *\n * NOTE: Only used when `responsive` is `true`.\n */\n @Input() renderUpdateThreshold = 100\n\n public rendering = false\n\n private _renderRequestSubject = new Subject<void>()\n\n private _render$: Observable<void>\n\n constructor() {\n this._render$ = this._renderRequestSubject.pipe(\n takeUntil(this._ngUnsubscribe),\n auditTime(500),\n switchMap(_ => from(waitOnConditionAsync(() => this.rendering === false, 30 * 1000))),\n switchMap(_ => from(this._render()))\n )\n }\n\n ngOnDestroy() {\n this._ngUnsubscribe.next()\n this._ngUnsubscribe.complete()\n }\n\n ngAfterViewInit() {\n this._render$.subscribe()\n this.render()\n }\n\n public render() {\n this._renderRequestSubject.next()\n }\n\n private async _render() {\n if (!this.pdfContainer || !this.pdfCanvas) {\n return\n }\n\n try {\n const w = this.pdfContainer.nativeElement.clientWidth\n const desiredWidth = w\n const viewport = this.page.getViewport({ scale: 1 })\n const scale = desiredWidth / viewport.width\n const scaledViewport = this.page.getViewport({ scale })\n\n // Prepare canvas using PDF page dimensions\n const canvas: HTMLCanvasElement = this.pdfCanvas.nativeElement\n const context = canvas.getContext('2d')\n canvas.height = scaledViewport.height\n canvas.width = scaledViewport.width\n canvas.style.height = `${scaledViewport.height}px`\n canvas.style.width = `${scaledViewport.width}px`\n\n // Render PDF page into canvas context\n const renderContext = {\n canvasContext: context,\n viewport: scaledViewport\n }\n\n const renderTask = await this.page.render(renderContext).promise\n\n // TODO: Allow canceling instead of only waiting\n // await renderTask.cancel()\n this.rendering = false\n if (this.responsive) {\n canvas.style.width = '100%'\n canvas.style.height = '100%'\n }\n } catch (err) {\n // PDF loading error\n console.error(err)\n }\n }\n\n onResized() {\n if (!this.responsive || this.renderUpdateThreshold === -1) { return }\n\n if (!this.pdfContainer || !this.pdfCanvas) {\n return\n }\n\n const containerRect = this.pdfContainer.nativeElement.getBoundingClientRect()\n const pdfWidth = this.pdfCanvas.nativeElement.width\n const pdfHeight = this.pdfCanvas.nativeElement.height\n const wDiff = Math.abs(containerRect.width - pdfWidth)\n const hDiff = Math.abs(containerRect.height - pdfHeight)\n if (wDiff > this.renderUpdateThreshold || hDiff > this.renderUpdateThreshold) {\n this.render()\n }\n\n }\n\n}\n","import { Injectable } from '@angular/core'\nimport { from, Observable } from 'rxjs'\nimport { shareReplay, switchMap, tap } from 'rxjs/operators'\n\nimport { wrapIntoObservable } from '@theseam/ui-common/utils'\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PdfRendererService {\n\n private readonly _pdfjs$: Observable<any>\n\n constructor() {\n const pdfjsImport = wrapIntoObservable(import('pdfjs-dist/legacy/build/pdf'))\n this._pdfjs$ = pdfjsImport.pipe(\n tap((pdfJs: any) => {\n if (!pdfJs.GlobalWorkerOptions.workerSrc) {\n // tslint:disable-next-line:max-line-length\n pdfJs.GlobalWorkerOptions.workerSrc = `https://cdnjs.cloudflare.com/ajax/libs/pdf.js/${ (pdfJs as any).version }/pdf.worker.min.js`\n }\n }),\n shareReplay({ bufferSize: 1, refCount: true })\n )\n }\n\n public getDocument(url: string): Observable<any> {\n return from(fetch(url)).pipe(\n switchMap(v => this._pdfjs$.pipe(\n switchMap(pdfjs => pdfjs.getDocument(v).promise)\n ))\n )\n }\n}\n","import { BooleanInput, coerceArray, coerceNumberProperty } from '@angular/cdk/coercion'\nimport { Component, Input } from '@angular/core'\nimport { BehaviorSubject, from, Observable, of, ReplaySubject } from 'rxjs'\nimport { map, shareReplay, switchMap, tap } from 'rxjs/operators'\n\nimport { InputBoolean } from '@theseam/ui-common/core'\nimport { wrapIntoObservable } from '@theseam/ui-common/utils'\n\nimport { PdfRendererService } from './pdf-renderer.service'\n\n@Component({\n selector: 'seam-pdf-viewer',\n template: `\n <ng-container *ngFor=\"let page of pages$ | async\">\n <seam-pdf-page\n class=\"mb-2\"\n [page]=\"page | async\"\n [responsive]=\"responsive\"\n [shadow]=\"shadow\"\n [renderUpdateThreshold]=\"renderUpdateThreshold\">\n </seam-pdf-page>\n </ng-container>\n `,\n styles: [`:host { display: block; }`]\n})\nexport class TheSeamPdfViewerComponent {\n static ngAcceptInputType_shadow: BooleanInput\n static ngAcceptInputType_responsive: BooleanInput\n\n @Input()\n get pdfUrl(): string | undefined | null { return this._pdfUrl }\n set pdfUrl(value: string | undefined | null) {\n this._pdfUrl = value\n this._documentSubject.next(value)\n }\n private _pdfUrl: string | undefined | null\n\n @Input() @InputBoolean() shadow = false\n\n /**\n * Canvas will responsively scale and rerender if scaled more than\n * `renderUpdateThreshold` pixels.\n */\n @Input() @InputBoolean() responsive = false\n\n /**\n * The canvas will be rerendered if the canvas size changes by this many\n * pixels from the last render.\n *\n * To make the canvas responsive using only the initial size for its render\n * set the threshold to `-1`. You can still trigger a rerender by calling the\n * `render()` method.\n *\n * NOTE: Only used when `responsive` is `true`.\n */\n @Input()\n set renderUpdateThreshold(value: number) { this._renderUpdateThreshold = coerceNumberProperty(value) }\n get renderUpdateThreshold(): number { return this._renderUpdateThreshold }\n private _renderUpdateThreshold: number = 100\n\n /**\n * Range of pages to render.\n *\n * Example(page 1 to page 3):\n * [pageRange]=\"[1,3]\"\n */\n @Input()\n get pageRange(): number[] { return this._pageRange }\n set pageRange(value: number[]) {\n this._pageRange = value\n\n if (!this._pageRange) {\n this._pageNumbersSubject.next(undefined)\n }\n\n try {\n const range = coerceArray(this._pageRange)\n if (range.length !== 2) {\n throw new Error('[pdf-viewer] Invalid Page Range. Range array must have two numbers only.')\n }\n if (range[0] > range[1]) {\n throw new Error('[pdf-viewer] Invalid Page Range. Start of the range must be less than or equal to the end.')\n }\n\n const nums: number[] = []\n for (let i = range[0]; i <= range[1]; i++) {\n nums.push(i)\n }\n this._pageNumbersSubject.next(nums)\n } catch (err) {\n // TODO: Decide how to conveniently display these errors.\n console.error(err)\n this._pageNumbersSubject.next([])\n }\n }\n private _pageRange: number[] = []\n\n /**\n * Render a specific page.\n */\n @Input()\n get pageNumber(): number { return this._pageNumber }\n set pageNumber(value: number) {\n this._pageNumber = coerceNumberProperty(value, -1)\n this._pageNumbersSubject.next(this._pageNumber === -1 ? undefined : [ this._pageNumber ])\n }\n private _pageNumber = -1\n\n /**\n * Specific page numbers to render.\n */\n @Input()\n get pageNumbers(): number[] { return this._pageNumbers }\n set pageNumbers(value: number[]) {\n this._pageNumbers = value\n if (Array.isArray(this._pageNumbers)) {\n this._pageNumbersSubject.next(this._pageNumbers)\n } else {\n this._pageNumbersSubject.next(undefined)\n }\n }\n private _pageNumbers: number[] = []\n\n private _documentSubject = new ReplaySubject<any>(1)\n public document$: Observable<any>\n public pages$: Observable<any[]>\n\n /**\n * Undefined means all a pages\n */\n private _pageNumbersSubject = new BehaviorSubject<number[] | undefined>(undefined)\n\n constructor(\n private readonly _pdfRenderer: PdfRendererService\n ) {\n this.document$ = this._documentSubject.asObservable().pipe(\n switchMap(url => {\n if (!url) {\n return of()\n }\n return this._pdfRenderer.getDocument(url)\n })\n )\n\n const pageNumbers$ = this._pageNumbersSubject.asObservable()\n\n this.pages$ = this.document$.pipe(\n switchMap(doc => pageNumbers$.pipe(\n map(pageNumbers => {\n const pages: any[] = []\n for (let i = 0; i < doc.numPages; i++) {\n if (!pageNumbers || pageNumbers.indexOf(i + 1) !== -1) {\n pages.push(from(doc.getPage(i + 1)))\n }\n }\n return pages\n })\n ))\n )\n }\n\n}\n","import { CommonModule } from '@angular/common'\nimport { NgModule } from '@angular/core'\n\nimport { TheSeamSharedModule } from '@theseam/ui-common/shared'\n\nimport { TheSeamPdfPageComponent } from './pdf-page/pdf-page.component'\nimport { TheSeamPdfViewerComponent } from './pdf-viewer.component'\n\n@NgModule({\n imports: [\n CommonModule,\n TheSeamSharedModule\n ],\n declarations: [\n TheSeamPdfViewerComponent,\n TheSeamPdfPageComponent\n ],\n exports: [\n TheSeamPdfViewerComponent,\n TheSeamPdfPageComponent\n ]\n})\nexport class TheSeamPdfViewerModule { }\n","import { BooleanInput } from '@angular/cdk/coercion'\nimport { ChangeDetectorRef, Component, ElementRef, Input, NgZone, OnDestroy, OnInit, ViewChild } from '@angular/core'\n\nimport { InputBoolean } from '@theseam/ui-common/core'\n\ninterface TemplateResizeMessagePayload {\n width: number\n height: number\n}\n\nenum TemplateMessageType {\n TplData = 'theseam_tpl_data',\n TplResize = 'theseam_tpl_resize',\n}\n\ninterface TemplateMessage<TType, TPayload> {\n type: TType\n payload: TPayload\n}\n\n@Component({\n selector: 'seam-html-template-viewer',\n templateUrl: './html-template-viewer.component.html',\n styleUrls: ['./html-template-viewer.component.scss']\n})\nexport class TheSeamHtmlTemplateViewerComponent implements OnInit, OnDestroy {\n static ngAcceptInputType_scrollable: BooleanInput\n\n private readonly _templateMessageHandlers: { [key in TemplateMessageType]: (payload: any) => void }\n\n private _message: string | undefined | null\n private _dataVersion: number = 0\n private _scrollHandleObserver: MutationObserver | null = null\n\n @Input()\n get src(): string | null | undefined { return this._src }\n set src(val: string | null | undefined) {\n this._src = val\n this._updateSrc()\n }\n private _src: string | null | undefined\n\n @Input()\n set dataVersion(value: number | undefined | null) {\n const dv = value || 0\n const sendData = this._dataVersion !== dv\n this._dataVersion = dv\n if (sendData) {\n this.postMessage(this._message)\n }\n }\n\n @Input()\n set data(value: any) {\n this.postMessage((value !== null && value !== undefined) ? JSON.stringify(value) : value)\n }\n\n @Input() @InputBoolean()\n set scrollable(value: boolean) {\n this._scrollable = value\n if (this._scrollable) {\n this._initScrollHandleObserver()\n } else {\n this._destroyScrollHandleObserver()\n }\n }\n\n _scrollable: boolean = false\n\n @ViewChild('iframeElement', { static: true })\n set iframeElementRef(val: ElementRef<HTMLIFrameElement>) {\n this._iframeElementRef = val\n const iframeNativeElement = this._getIFrameNativeElement()\n if (iframeNativeElement) {\n this._updateSrc()\n iframeNativeElement.onload = () => this.postMessage(this._message)\n }\n }\n private _iframeElementRef!: ElementRef<HTMLIFrameElement>\n\n _scrollbarOptions = {\n callbacks: {\n onInitialized: () => this._initScrollHandleObserver(),\n // Only scrollbar handles from OverlayScrollbars are currently observed,\n // so we can just disable the observer for native scrollbars.\n onInitializationWithdrawn: () => this._destroyScrollHandleObserver(),\n onDestroyed: () => this._destroyScrollHandleObserver(),\n }\n }\n\n _mouseBlockActive: boolean = false\n _mouseBlockWidth: string = '100%'\n _mouseBlockHeight: string = '100%'\n\n constructor(\n private readonly _ngZone: NgZone,\n private readonly _cdr: ChangeDetectorRef,\n private readonly _elementRef: ElementRef\n ) {\n this._templateMessageHandlers = {\n [TemplateMessageType.TplData]: () => { }, // Not listening for message from template\n [TemplateMessageType.TplResize]: this._onResizeMessageFromTemplate\n }\n }\n\n ngOnInit(): void {\n this._ngZone.runOutsideAngular(() => window.addEventListener('message', this._onMessageFromTemplate))\n }\n\n ngOnDestroy(): void {\n window.removeEventListener('message', this._onMessageFromTemplate)\n this._destroyScrollHandleObserver()\n }\n\n private _onMessageFromTemplate = (e: any) => {\n const type = e.data.type as TemplateMessageType\n if (this._templateMessageHandlers[type]) {\n this._ngZone.run(() => this._templateMessageHandlers[type](e.data.payload))\n }\n }\n\n private _onResizeMessageFromTemplate = (payload: TemplateResizeMessagePayload): void => {\n const iframeNativeElement = this._getIFrameNativeElement()\n if (iframeNativeElement) {\n iframeNativeElement.style.height = `${payload.height}px`\n }\n }\n\n private _updateSrc(): void {\n const iframeNativeElement = this._getIFrameNativeElement()\n if (iframeNativeElement) {\n iframeNativeElement.src = this._src || ''\n }\n }\n\n public postMessage(msg: string | undefined | null): void {\n this._message = msg\n\n let _msg = msg\n const contentWindow = this._getIFrameContentWindow()\n if (contentWindow && _msg) {\n if (this._dataVersion === 2) {\n const wrapper: TemplateMessage<TemplateMessageType, any> = { type: TemplateMessageType.TplData, payload: undefined }\n try { wrapper.payload = JSON.parse(_msg) } catch { wrapper.payload = _msg }\n _msg = JSON.stringify(wrapper)\n }\n\n contentWindow.postMessage(_msg, '*')\n }\n }\n\n public reload(): void {\n this._updateSrc()\n }\n\n _onResized(event: { width: number, height: number }) {\n // This ensures the iframe scales itself if it isn't listening to or misses\n // the resize event.\n this.reload()\n }\n\n private _getIFrameNativeElement(): HTMLIFrameElement | null {\n return (this._iframeElementRef?.nativeElement) || null\n }\n\n private _getIFrameContentWindow(): Window | null {\n return (this._iframeElementRef?.nativeElement?.contentWindow) || null\n }\n\n /**\n * Initializes a MutationObserver to detect the 'active' class added to a\n * scroll handle, because OverlayScrollbars does not seem to provide an event\n * for scrollbar handle activation/deactivation.\n *\n * TODO: Do we need this to work for native scrollbars also?\n */\n private _initScrollHandleObserver(): void {\n if (this._scrollHandleObserver !== null) {\n return\n }\n\n this._ngZone.runOutsideAngular(() => {\n const observer = new MutationObserver(() => {\n this._ngZone.run(() => {\n if (this._isScrollbarHandleActive()) {\n this._enableMouseBlock()\n } else {\n this._disableMouseBlock()\n }\n })\n })\n\n observer.observe(this._elementRef.nativeElement, {\n attributes: true,\n attributeFilter: [ 'class' ],\n childList: true,\n subtree: true,\n characterData: false,\n })\n\n this._scrollHandleObserver = observer\n })\n }\n\n private _destroyScrollHandleObserver(): void {\n if (this._scrollHandleObserver === null) {\n return\n }\n\n this._scrollHandleObserver.disconnect()\n this._scrollHandleObserver = null\n }\n\n /**\n * Enables a transparent div to cover the iframe.\n *\n * When the mouse is over an iframe the browser stops letting the parent\n * document receive mouse events. Anything actively tracking mouse movement or\n * button pressed will think the mouse has left the page. So the scrollbar\n * handle would deactivate, when the mouse hovers the iframe. This adds an\n * element to cover the iframe, which prevents mouse events getting sent to\n * the iframe.\n */\n private _enableMouseBlock(): void {\n this._mouseBlockActive = true\n\n const iframeElement = this._getIFrameNativeElement()\n if (iframeElement) {\n const rect = iframeElement.getBoundingClientRect()\n this._mouseBlockWidth = `${rect.width}px`\n this._mouseBlockHeight = `${rect.height}px`\n } else {\n this._mouseBlockWidth = '100%'\n this._mouseBlockHeight = '100%'\n }\n\n this._cdr.detectChanges()\n }\n\n private _disableMouseBlock(): void {\n this._mouseBlockActive = false\n this._cdr.detectChanges()\n }\n\n private _isScrollbarHandleActive(): boolean {\n return this._elementRef.nativeElement.querySelector('.os-scrollbar-handle.active') !== null\n }\n\n}\n","import { CommonModule } from '@angular/common'\nimport { NgModule } from '@angular/core'\n\nimport { TheSeamScrollbarModule } from '@theseam/ui-common/scrollbar'\nimport { TheSeamSharedModule } from '@theseam/ui-common/shared'\n\nimport { TheSeamHtmlTemplateViewerComponent } from './html-template-viewer.component'\n\n@NgModule({\n imports: [\n CommonModule,\n TheSeamScrollbarModule,\n TheSeamSharedModule,\n ],\n declarations: [\n TheSeamHtmlTemplateViewerComponent,\n ],\n exports: [\n TheSeamHtmlTemplateViewerComponent,\n ]\n})\nexport class TheSeamHtmlTemplateViewerModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}