@theseam/ui-common 1.0.0-beta.9 → 1.0.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 (98) hide show
  1. package/buttons/index.d.ts +4 -1
  2. package/datatable/index.d.ts +44 -24
  3. package/fesm2022/theseam-ui-common-asset-reader.mjs +10 -10
  4. package/fesm2022/theseam-ui-common-asset-reader.mjs.map +1 -1
  5. package/fesm2022/theseam-ui-common-breadcrumbs.mjs +6 -6
  6. package/fesm2022/theseam-ui-common-breadcrumbs.mjs.map +1 -1
  7. package/fesm2022/theseam-ui-common-buttons.mjs +35 -28
  8. package/fesm2022/theseam-ui-common-buttons.mjs.map +1 -1
  9. package/fesm2022/theseam-ui-common-card.mjs +16 -16
  10. package/fesm2022/theseam-ui-common-card.mjs.map +1 -1
  11. package/fesm2022/theseam-ui-common-carousel.mjs +10 -10
  12. package/fesm2022/theseam-ui-common-carousel.mjs.map +1 -1
  13. package/fesm2022/theseam-ui-common-checkbox.mjs +7 -7
  14. package/fesm2022/theseam-ui-common-checkbox.mjs.map +1 -1
  15. package/fesm2022/theseam-ui-common-confirm-dialog.mjs +13 -13
  16. package/fesm2022/theseam-ui-common-confirm-dialog.mjs.map +1 -1
  17. package/fesm2022/theseam-ui-common-data-exporter.mjs +31 -14
  18. package/fesm2022/theseam-ui-common-data-exporter.mjs.map +1 -1
  19. package/fesm2022/theseam-ui-common-data-filters.mjs +13 -13
  20. package/fesm2022/theseam-ui-common-data-filters.mjs.map +1 -1
  21. package/fesm2022/theseam-ui-common-datatable-alterations-display.mjs +12 -12
  22. package/fesm2022/theseam-ui-common-datatable-alterations-display.mjs.map +1 -1
  23. package/fesm2022/theseam-ui-common-datatable-dynamic.mjs +25 -25
  24. package/fesm2022/theseam-ui-common-datatable-dynamic.mjs.map +1 -1
  25. package/fesm2022/theseam-ui-common-datatable.mjs +177 -145
  26. package/fesm2022/theseam-ui-common-datatable.mjs.map +1 -1
  27. package/fesm2022/theseam-ui-common-dynamic-component-loader.mjs +7 -7
  28. package/fesm2022/theseam-ui-common-dynamic-component-loader.mjs.map +1 -1
  29. package/fesm2022/theseam-ui-common-dynamic.mjs +21 -21
  30. package/fesm2022/theseam-ui-common-dynamic.mjs.map +1 -1
  31. package/fesm2022/theseam-ui-common-footer-bar.mjs +7 -7
  32. package/fesm2022/theseam-ui-common-footer-bar.mjs.map +1 -1
  33. package/fesm2022/theseam-ui-common-form-field-error.mjs +16 -16
  34. package/fesm2022/theseam-ui-common-form-field-error.mjs.map +1 -1
  35. package/fesm2022/theseam-ui-common-form-field.mjs +22 -22
  36. package/fesm2022/theseam-ui-common-form-field.mjs.map +1 -1
  37. package/fesm2022/theseam-ui-common-framework.mjs +157 -157
  38. package/fesm2022/theseam-ui-common-framework.mjs.map +1 -1
  39. package/fesm2022/theseam-ui-common-google-maps.mjs +40 -40
  40. package/fesm2022/theseam-ui-common-google-maps.mjs.map +1 -1
  41. package/fesm2022/theseam-ui-common-graphql.mjs +3 -3
  42. package/fesm2022/theseam-ui-common-graphql.mjs.map +1 -1
  43. package/fesm2022/theseam-ui-common-icon.mjs +13 -13
  44. package/fesm2022/theseam-ui-common-icon.mjs.map +1 -1
  45. package/fesm2022/theseam-ui-common-layout.mjs +7 -7
  46. package/fesm2022/theseam-ui-common-layout.mjs.map +1 -1
  47. package/fesm2022/theseam-ui-common-loading.mjs +10 -10
  48. package/fesm2022/theseam-ui-common-loading.mjs.map +1 -1
  49. package/fesm2022/theseam-ui-common-menu.mjs +25 -25
  50. package/fesm2022/theseam-ui-common-menu.mjs.map +1 -1
  51. package/fesm2022/theseam-ui-common-modal.mjs +43 -43
  52. package/fesm2022/theseam-ui-common-modal.mjs.map +1 -1
  53. package/fesm2022/theseam-ui-common-navigation-reload.mjs +3 -3
  54. package/fesm2022/theseam-ui-common-navigation-reload.mjs.map +1 -1
  55. package/fesm2022/theseam-ui-common-popover.mjs +10 -10
  56. package/fesm2022/theseam-ui-common-popover.mjs.map +1 -1
  57. package/fesm2022/theseam-ui-common-progress.mjs +7 -7
  58. package/fesm2022/theseam-ui-common-progress.mjs.map +1 -1
  59. package/fesm2022/theseam-ui-common-rich-text.mjs +7 -7
  60. package/fesm2022/theseam-ui-common-rich-text.mjs.map +1 -1
  61. package/fesm2022/theseam-ui-common-scrollbar.mjs +6 -6
  62. package/fesm2022/theseam-ui-common-scrollbar.mjs.map +1 -1
  63. package/fesm2022/theseam-ui-common-services.mjs +12 -12
  64. package/fesm2022/theseam-ui-common-services.mjs.map +1 -1
  65. package/fesm2022/theseam-ui-common-shared.mjs +37 -37
  66. package/fesm2022/theseam-ui-common-shared.mjs.map +1 -1
  67. package/fesm2022/theseam-ui-common-storage.mjs +3 -3
  68. package/fesm2022/theseam-ui-common-storage.mjs.map +1 -1
  69. package/fesm2022/theseam-ui-common-story-helpers.mjs +26 -26
  70. package/fesm2022/theseam-ui-common-story-helpers.mjs.map +1 -1
  71. package/fesm2022/theseam-ui-common-tabbed.mjs +22 -22
  72. package/fesm2022/theseam-ui-common-tabbed.mjs.map +1 -1
  73. package/fesm2022/theseam-ui-common-table-cell-type.mjs +10 -10
  74. package/fesm2022/theseam-ui-common-table-cell-type.mjs.map +1 -1
  75. package/fesm2022/theseam-ui-common-table-cell-types.mjs +31 -31
  76. package/fesm2022/theseam-ui-common-table-cell-types.mjs.map +1 -1
  77. package/fesm2022/theseam-ui-common-table.mjs +20 -28
  78. package/fesm2022/theseam-ui-common-table.mjs.map +1 -1
  79. package/fesm2022/theseam-ui-common-tel-input.mjs +13 -13
  80. package/fesm2022/theseam-ui-common-tel-input.mjs.map +1 -1
  81. package/fesm2022/theseam-ui-common-tiled-select.mjs +22 -22
  82. package/fesm2022/theseam-ui-common-tiled-select.mjs.map +1 -1
  83. package/fesm2022/theseam-ui-common-toggle-edit.mjs +16 -16
  84. package/fesm2022/theseam-ui-common-toggle-edit.mjs.map +1 -1
  85. package/fesm2022/theseam-ui-common-toggle-group.mjs +10 -10
  86. package/fesm2022/theseam-ui-common-toggle-group.mjs.map +1 -1
  87. package/fesm2022/theseam-ui-common-tooltip.mjs +10 -10
  88. package/fesm2022/theseam-ui-common-tooltip.mjs.map +1 -1
  89. package/fesm2022/theseam-ui-common-unsaved-changes-dialog.mjs +10 -10
  90. package/fesm2022/theseam-ui-common-unsaved-changes-dialog.mjs.map +1 -1
  91. package/fesm2022/theseam-ui-common-vertical-list-filter.mjs +3 -3
  92. package/fesm2022/theseam-ui-common-vertical-list-filter.mjs.map +1 -1
  93. package/fesm2022/theseam-ui-common-viewers.mjs +12 -12
  94. package/fesm2022/theseam-ui-common-viewers.mjs.map +1 -1
  95. package/fesm2022/theseam-ui-common-widget.mjs +135 -135
  96. package/fesm2022/theseam-ui-common-widget.mjs.map +1 -1
  97. package/package.json +54 -54
  98. package/table/index.d.ts +1 -5
@@ -117,8 +117,8 @@ class TheSeamPdfPageComponent {
117
117
  this.render();
118
118
  }
119
119
  }
120
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamPdfPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
121
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.7", type: TheSeamPdfPageComponent, isStandalone: true, selector: "seam-pdf-page", inputs: { page: "page", shadow: "shadow", responsive: "responsive", renderUpdateThreshold: "renderUpdateThreshold" }, host: { properties: { "class.shadow": "this._shadow" } }, viewQueries: [{ propertyName: "pdfContainer", first: true, predicate: ["pdfContainer"], descendants: true, static: true }, { propertyName: "pdfCanvas", first: true, predicate: ["pdfCanvas"], descendants: true, static: true }], ngImport: i0, template: `
120
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: TheSeamPdfPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
121
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.15", type: TheSeamPdfPageComponent, isStandalone: true, selector: "seam-pdf-page", inputs: { page: "page", shadow: "shadow", responsive: "responsive", renderUpdateThreshold: "renderUpdateThreshold" }, host: { properties: { "class.shadow": "this._shadow" } }, viewQueries: [{ propertyName: "pdfContainer", first: true, predicate: ["pdfContainer"], descendants: true, static: true }, { propertyName: "pdfCanvas", first: true, predicate: ["pdfCanvas"], descendants: true, static: true }], ngImport: i0, template: `
122
122
  <div #pdfContainer (seamElemResized)="onResized()">
123
123
  <canvas #pdfCanvas></canvas>
124
124
  </div>
@@ -130,7 +130,7 @@ __decorate([
130
130
  __decorate([
131
131
  InputBoolean()
132
132
  ], TheSeamPdfPageComponent.prototype, "responsive", void 0);
133
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamPdfPageComponent, decorators: [{
133
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: TheSeamPdfPageComponent, decorators: [{
134
134
  type: Component,
135
135
  args: [{ selector: 'seam-pdf-page', template: `
136
136
  <div #pdfContainer (seamElemResized)="onResized()">
@@ -181,10 +181,10 @@ class TheSeamPdfRendererService {
181
181
  getDocument(url) {
182
182
  return from(fetch(url)).pipe(switchMap((v) => this._pdfjs$.pipe(switchMap((pdfjs) => pdfjs.getDocument(v).promise))));
183
183
  }
184
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamPdfRendererService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
185
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamPdfRendererService, providedIn: 'root' });
184
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: TheSeamPdfRendererService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
185
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: TheSeamPdfRendererService, providedIn: 'root' });
186
186
  }
187
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamPdfRendererService, decorators: [{
187
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: TheSeamPdfRendererService, decorators: [{
188
188
  type: Injectable,
189
189
  args: [{ providedIn: 'root' }]
190
190
  }], ctorParameters: () => [] });
@@ -312,8 +312,8 @@ class TheSeamPdfViewerComponent {
312
312
  return pages;
313
313
  }))));
314
314
  }
315
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamPdfViewerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
316
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.7", type: TheSeamPdfViewerComponent, isStandalone: true, selector: "seam-pdf-viewer", inputs: { pdfUrl: "pdfUrl", shadow: "shadow", responsive: "responsive", renderUpdateThreshold: "renderUpdateThreshold", pageRange: "pageRange", pageNumber: "pageNumber", pageNumbers: "pageNumbers" }, ngImport: i0, template: `
315
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: TheSeamPdfViewerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
316
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.15", type: TheSeamPdfViewerComponent, isStandalone: true, selector: "seam-pdf-viewer", inputs: { pdfUrl: "pdfUrl", shadow: "shadow", responsive: "responsive", renderUpdateThreshold: "renderUpdateThreshold", pageRange: "pageRange", pageNumber: "pageNumber", pageNumbers: "pageNumbers" }, ngImport: i0, template: `
317
317
  <ng-container *ngFor="let page of pages$ | async">
318
318
  <seam-pdf-page
319
319
  class="mb-2"
@@ -332,7 +332,7 @@ __decorate([
332
332
  __decorate([
333
333
  InputBoolean()
334
334
  ], TheSeamPdfViewerComponent.prototype, "responsive", void 0);
335
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamPdfViewerComponent, decorators: [{
335
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: TheSeamPdfViewerComponent, decorators: [{
336
336
  type: Component,
337
337
  args: [{ selector: 'seam-pdf-viewer', template: `
338
338
  <ng-container *ngFor="let page of pages$ | async">
@@ -559,13 +559,13 @@ class TheSeamHtmlTemplateViewerComponent {
559
559
  _isScrollbarHandleActive() {
560
560
  return (this._elementRef.nativeElement.querySelector('.os-scrollbar-handle.active') !== null);
561
561
  }
562
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamHtmlTemplateViewerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
563
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.7", type: TheSeamHtmlTemplateViewerComponent, isStandalone: true, selector: "seam-html-template-viewer", inputs: { src: "src", dataVersion: "dataVersion", data: "data", scrollable: "scrollable" }, viewQueries: [{ propertyName: "iframeElementRef", first: true, predicate: ["iframeElement"], descendants: true, static: true }], ngImport: i0, template: "<div (seamElemResized)=\"_onResized($any($event))\">\n <div\n class=\"embed-responsive embed-responsive-4by3\"\n [seamOverlayScrollbar]=\"_scrollbarOptions\"\n [overlayScrollbarEnabled]=\"_scrollable\"\n >\n <iframe\n #iframeElement\n class=\"embed-responsive-item\"\n allowfullscreen\n ></iframe>\n <div\n *ngIf=\"_mouseBlockActive\"\n class=\"iframe-mouse-block\"\n [style.width]=\"_mouseBlockWidth\"\n [style.height]=\"_mouseBlockHeight\"\n ></div>\n </div>\n</div>\n", styles: [":host{display:block}.iframe-mouse-block{position:absolute;top:0;right:0;height:100%;width:100%}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: TheSeamOverlayScrollbarDirective, selector: "[seamOverlayScrollbar]", inputs: ["seamOverlayScrollbar", "overlayScrollbarEnabled"], exportAs: ["seamOverlayScrollbar"] }, { kind: "directive", type: TheSeamElemResizedDirective, selector: "[seamElemResized]", outputs: ["seamElemResized"], exportAs: ["seamElemResized"] }] });
562
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: TheSeamHtmlTemplateViewerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
563
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.15", type: TheSeamHtmlTemplateViewerComponent, isStandalone: true, selector: "seam-html-template-viewer", inputs: { src: "src", dataVersion: "dataVersion", data: "data", scrollable: "scrollable" }, viewQueries: [{ propertyName: "iframeElementRef", first: true, predicate: ["iframeElement"], descendants: true, static: true }], ngImport: i0, template: "<div (seamElemResized)=\"_onResized($any($event))\">\n <div\n class=\"embed-responsive embed-responsive-4by3\"\n [seamOverlayScrollbar]=\"_scrollbarOptions\"\n [overlayScrollbarEnabled]=\"_scrollable\"\n >\n <iframe\n #iframeElement\n class=\"embed-responsive-item\"\n allowfullscreen\n ></iframe>\n <div\n *ngIf=\"_mouseBlockActive\"\n class=\"iframe-mouse-block\"\n [style.width]=\"_mouseBlockWidth\"\n [style.height]=\"_mouseBlockHeight\"\n ></div>\n </div>\n</div>\n", styles: [":host{display:block}.iframe-mouse-block{position:absolute;top:0;right:0;height:100%;width:100%}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: TheSeamOverlayScrollbarDirective, selector: "[seamOverlayScrollbar]", inputs: ["seamOverlayScrollbar", "overlayScrollbarEnabled"], exportAs: ["seamOverlayScrollbar"] }, { kind: "directive", type: TheSeamElemResizedDirective, selector: "[seamElemResized]", outputs: ["seamElemResized"], exportAs: ["seamElemResized"] }] });
564
564
  }
565
565
  __decorate([
566
566
  InputBoolean()
567
567
  ], TheSeamHtmlTemplateViewerComponent.prototype, "scrollable", null);
568
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamHtmlTemplateViewerComponent, decorators: [{
568
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: TheSeamHtmlTemplateViewerComponent, decorators: [{
569
569
  type: Component,
570
570
  args: [{ selector: 'seam-html-template-viewer', imports: [
571
571
  NgIf,
@@ -1 +1 @@
1
- {"version":3,"file":"theseam-ui-common-viewers.mjs","sources":["../../../projects/ui-common/viewers/pdf-viewer/pdf-page.component.ts","../../../projects/ui-common/viewers/pdf-viewer/pdf-viewer-config.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/html-template-viewer/html-template-viewer.component.ts","../../../projects/ui-common/viewers/html-template-viewer/html-template-viewer.component.html","../../../projects/ui-common/viewers/theseam-ui-common-viewers.ts"],"sourcesContent":["import { BooleanInput } from '@angular/cdk/coercion'\nimport {\n AfterViewInit,\n Component,\n ElementRef,\n HostBinding,\n Input,\n OnDestroy,\n ViewChild,\n} 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'\nimport { TheSeamElemResizedDirective } from '@theseam/ui-common/shared'\n\n@Component({\n selector: 'seam-pdf-page',\n template: `\n <div #pdfContainer (seamElemResized)=\"onResized()\">\n <canvas #pdfCanvas></canvas>\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n }\n canvas {\n display: block;\n }\n `,\n ],\n imports: [TheSeamElemResizedDirective],\n})\nexport class TheSeamPdfPageComponent implements OnDestroy, AfterViewInit {\n static ngAcceptInputType_shadow: BooleanInput\n static ngAcceptInputType_responsive: BooleanInput\n\n private readonly _ngUnsubscribe = new Subject<void>()\n\n @Input()\n public get page() {\n return this._page\n }\n public set page(value) {\n this._page = value\n setTimeout(() => {\n this.render()\n })\n }\n private _page: any\n\n @Input() @InputBoolean() shadow = false\n\n @HostBinding('class.shadow') get _shadow() {\n return this.shadow\n }\n\n @ViewChild('pdfContainer', { static: true })\n pdfContainer?: ElementRef<HTMLDivElement>\n @ViewChild('pdfCanvas', { static: true })\n 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((_) =>\n from(waitOnConditionAsync(() => this.rendering === false, 30 * 1000)),\n ),\n switchMap((_) => from(this._render())),\n )\n }\n\n ngOnDestroy() {\n this._ngUnsubscribe.next(undefined)\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 // eslint-disable-next-line no-console\n console.error(err)\n }\n }\n\n onResized() {\n if (!this.responsive || this.renderUpdateThreshold === -1) {\n return\n }\n\n if (!this.pdfContainer || !this.pdfCanvas) {\n return\n }\n\n const containerRect =\n 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 (\n wDiff > this.renderUpdateThreshold ||\n hDiff > this.renderUpdateThreshold\n ) {\n this.render()\n }\n }\n}\n","import {\n EnvironmentProviders,\n InjectionToken,\n makeEnvironmentProviders,\n} from '@angular/core'\n\nexport interface TheSeamPdfViewerConfig {\n pdfJsWorkerSrc?: string\n}\n\nexport const THESEAM_PDF_VIEWER_CONFIG_PROVIDER =\n new InjectionToken<TheSeamPdfViewerConfig>('TheSeamPdfViewerConfigProvider')\n\nexport function providePdfViewerConfig(\n config: TheSeamPdfViewerConfig,\n): EnvironmentProviders {\n return makeEnvironmentProviders([\n { provide: THESEAM_PDF_VIEWER_CONFIG_PROVIDER, useValue: config },\n ])\n}\n","import { inject, 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\nimport { THESEAM_PDF_VIEWER_CONFIG_PROVIDER } from './pdf-viewer-config'\n\n@Injectable({ providedIn: 'root' })\nexport class TheSeamPdfRendererService {\n private readonly _config = inject(THESEAM_PDF_VIEWER_CONFIG_PROVIDER, {\n optional: true,\n })\n\n private readonly _pdfjs$: Observable<any>\n\n constructor() {\n const pdfjsImport = wrapIntoObservable(import('pdfjs-dist'))\n this._pdfjs$ = pdfjsImport.pipe(\n tap((pdfJs: any) => {\n if (!pdfJs.GlobalWorkerOptions.workerSrc) {\n pdfJs.GlobalWorkerOptions.workerSrc =\n this._config?.pdfJsWorkerSrc ||\n `assets/vendor/pdfjs-dist/pdf.worker.min.mjs`\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) =>\n this._pdfjs$.pipe(switchMap((pdfjs) => pdfjs.getDocument(v).promise)),\n ),\n )\n }\n}\n","import {\n BooleanInput,\n coerceArray,\n coerceNumberProperty,\n} from '@angular/cdk/coercion'\nimport { Component, inject, Input } from '@angular/core'\nimport { AsyncPipe, NgFor } from '@angular/common'\nimport { BehaviorSubject, from, Observable, of, ReplaySubject } from 'rxjs'\nimport { map, switchMap } from 'rxjs/operators'\n\nimport { InputBoolean } from '@theseam/ui-common/core'\n\nimport { TheSeamPdfRendererService } from './pdf-renderer.service'\nimport { TheSeamPdfPageComponent } from './pdf-page.component'\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 >\n </seam-pdf-page>\n </ng-container>\n `,\n styles: [\n `\n :host {\n display: block;\n }\n `,\n ],\n imports: [NgFor, AsyncPipe, TheSeamPdfPageComponent],\n})\nexport class TheSeamPdfViewerComponent {\n static ngAcceptInputType_shadow: BooleanInput\n static ngAcceptInputType_responsive: BooleanInput\n\n private readonly _pdfRenderer = inject(TheSeamPdfRendererService)\n\n @Input()\n get pdfUrl(): string | undefined | null {\n return this._pdfUrl\n }\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) {\n this._renderUpdateThreshold = coerceNumberProperty(value)\n }\n get renderUpdateThreshold(): number {\n return this._renderUpdateThreshold\n }\n private _renderUpdateThreshold = 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[] {\n return this._pageRange\n }\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(\n '[pdf-viewer] Invalid Page Range. Range array must have two numbers only.',\n )\n }\n if (range[0] > range[1]) {\n throw new Error(\n '[pdf-viewer] Invalid Page Range. Start of the range must be less than or equal to the end.',\n )\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 // eslint-disable-next-line no-console\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 {\n return this._pageNumber\n }\n set pageNumber(value: number) {\n this._pageNumber = coerceNumberProperty(value, -1)\n this._pageNumbersSubject.next(\n this._pageNumber === -1 ? undefined : [this._pageNumber],\n )\n }\n private _pageNumber = -1\n\n /**\n * Specific page numbers to render.\n */\n @Input()\n get pageNumbers(): number[] {\n return this._pageNumbers\n }\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\n public readonly document$: Observable<any>\n public readonly pages$: Observable<any[]>\n\n /**\n * Undefined means all a pages\n */\n private _pageNumbersSubject = new BehaviorSubject<number[] | undefined>(\n undefined,\n )\n\n constructor() {\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) =>\n 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 { BooleanInput } from '@angular/cdk/coercion'\nimport {\n ChangeDetectorRef,\n Component,\n ElementRef,\n inject,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n ViewChild,\n} from '@angular/core'\nimport { NgIf } from '@angular/common'\n\nimport { TheSeamOverlayScrollbarDirective } from '@theseam/ui-common/scrollbar'\nimport { TheSeamElemResizedDirective } from '@theseam/ui-common/shared'\nimport { InputBoolean } from '@theseam/ui-common/core'\n\ninterface TheSeamTemplateResizeMessagePayload {\n width: number\n height: number\n}\n\nenum TheSeamTemplateMessageType {\n TplData = 'theseam_tpl_data',\n TplResize = 'theseam_tpl_resize',\n}\n\ninterface TheSeamTemplateMessage<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 imports: [\n NgIf,\n TheSeamOverlayScrollbarDirective,\n TheSeamElemResizedDirective,\n ],\n})\nexport class TheSeamHtmlTemplateViewerComponent implements OnInit, OnDestroy {\n static ngAcceptInputType_scrollable: BooleanInput\n\n private readonly _ngZone = inject(NgZone)\n private readonly _cdr = inject(ChangeDetectorRef)\n private readonly _elementRef = inject(ElementRef)\n\n private readonly _templateMessageHandlers: {\n [key in TheSeamTemplateMessageType]: (payload: any) => void\n }\n\n private _message: string | undefined | null\n private _dataVersion = 0\n private _scrollHandleObserver: MutationObserver | null = null\n\n @Input()\n get src(): string | null | undefined {\n return this._src\n }\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(\n value !== null && value !== undefined ? JSON.stringify(value) : value,\n )\n }\n\n @Input()\n @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 = 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 = false\n _mouseBlockWidth = '100%'\n _mouseBlockHeight = '100%'\n\n constructor() {\n this._templateMessageHandlers = {\n [TheSeamTemplateMessageType.TplData]: () => {}, // Not listening for message from template\n [TheSeamTemplateMessageType.TplResize]: this._onResizeMessageFromTemplate,\n }\n }\n\n ngOnInit(): void {\n this._ngZone.runOutsideAngular(() =>\n window.addEventListener('message', this._onMessageFromTemplate),\n )\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 TheSeamTemplateMessageType\n if (this._templateMessageHandlers[type]) {\n this._ngZone.run(() =>\n this._templateMessageHandlers[type](e.data.payload),\n )\n }\n }\n\n private _onResizeMessageFromTemplate = (\n payload: TheSeamTemplateResizeMessagePayload,\n ): 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: TheSeamTemplateMessage<TheSeamTemplateMessageType, any> =\n { type: TheSeamTemplateMessageType.TplData, payload: undefined }\n try {\n wrapper.payload = JSON.parse(_msg)\n } catch {\n wrapper.payload = _msg\n }\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 (\n this._elementRef.nativeElement.querySelector(\n '.os-scrollbar-handle.active',\n ) !== null\n )\n }\n}\n","<div (seamElemResized)=\"_onResized($any($event))\">\n <div\n class=\"embed-responsive embed-responsive-4by3\"\n [seamOverlayScrollbar]=\"_scrollbarOptions\"\n [overlayScrollbarEnabled]=\"_scrollable\"\n >\n <iframe\n #iframeElement\n class=\"embed-responsive-item\"\n allowfullscreen\n ></iframe>\n <div\n *ngIf=\"_mouseBlockActive\"\n class=\"iframe-mouse-block\"\n [style.width]=\"_mouseBlockWidth\"\n [style.height]=\"_mouseBlockHeight\"\n ></div>\n </div>\n</div>\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.mjs","sources":["../../../projects/ui-common/viewers/pdf-viewer/pdf-page.component.ts","../../../projects/ui-common/viewers/pdf-viewer/pdf-viewer-config.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/html-template-viewer/html-template-viewer.component.ts","../../../projects/ui-common/viewers/html-template-viewer/html-template-viewer.component.html","../../../projects/ui-common/viewers/theseam-ui-common-viewers.ts"],"sourcesContent":["import { BooleanInput } from '@angular/cdk/coercion'\nimport {\n AfterViewInit,\n Component,\n ElementRef,\n HostBinding,\n Input,\n OnDestroy,\n ViewChild,\n} 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'\nimport { TheSeamElemResizedDirective } from '@theseam/ui-common/shared'\n\n@Component({\n selector: 'seam-pdf-page',\n template: `\n <div #pdfContainer (seamElemResized)=\"onResized()\">\n <canvas #pdfCanvas></canvas>\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n }\n canvas {\n display: block;\n }\n `,\n ],\n imports: [TheSeamElemResizedDirective],\n})\nexport class TheSeamPdfPageComponent implements OnDestroy, AfterViewInit {\n static ngAcceptInputType_shadow: BooleanInput\n static ngAcceptInputType_responsive: BooleanInput\n\n private readonly _ngUnsubscribe = new Subject<void>()\n\n @Input()\n public get page() {\n return this._page\n }\n public set page(value) {\n this._page = value\n setTimeout(() => {\n this.render()\n })\n }\n private _page: any\n\n @Input() @InputBoolean() shadow = false\n\n @HostBinding('class.shadow') get _shadow() {\n return this.shadow\n }\n\n @ViewChild('pdfContainer', { static: true })\n pdfContainer?: ElementRef<HTMLDivElement>\n @ViewChild('pdfCanvas', { static: true })\n 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((_) =>\n from(waitOnConditionAsync(() => this.rendering === false, 30 * 1000)),\n ),\n switchMap((_) => from(this._render())),\n )\n }\n\n ngOnDestroy() {\n this._ngUnsubscribe.next(undefined)\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 // eslint-disable-next-line no-console\n console.error(err)\n }\n }\n\n onResized() {\n if (!this.responsive || this.renderUpdateThreshold === -1) {\n return\n }\n\n if (!this.pdfContainer || !this.pdfCanvas) {\n return\n }\n\n const containerRect =\n 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 (\n wDiff > this.renderUpdateThreshold ||\n hDiff > this.renderUpdateThreshold\n ) {\n this.render()\n }\n }\n}\n","import {\n EnvironmentProviders,\n InjectionToken,\n makeEnvironmentProviders,\n} from '@angular/core'\n\nexport interface TheSeamPdfViewerConfig {\n pdfJsWorkerSrc?: string\n}\n\nexport const THESEAM_PDF_VIEWER_CONFIG_PROVIDER =\n new InjectionToken<TheSeamPdfViewerConfig>('TheSeamPdfViewerConfigProvider')\n\nexport function providePdfViewerConfig(\n config: TheSeamPdfViewerConfig,\n): EnvironmentProviders {\n return makeEnvironmentProviders([\n { provide: THESEAM_PDF_VIEWER_CONFIG_PROVIDER, useValue: config },\n ])\n}\n","import { inject, 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\nimport { THESEAM_PDF_VIEWER_CONFIG_PROVIDER } from './pdf-viewer-config'\n\n@Injectable({ providedIn: 'root' })\nexport class TheSeamPdfRendererService {\n private readonly _config = inject(THESEAM_PDF_VIEWER_CONFIG_PROVIDER, {\n optional: true,\n })\n\n private readonly _pdfjs$: Observable<any>\n\n constructor() {\n const pdfjsImport = wrapIntoObservable(import('pdfjs-dist'))\n this._pdfjs$ = pdfjsImport.pipe(\n tap((pdfJs: any) => {\n if (!pdfJs.GlobalWorkerOptions.workerSrc) {\n pdfJs.GlobalWorkerOptions.workerSrc =\n this._config?.pdfJsWorkerSrc ||\n `assets/vendor/pdfjs-dist/pdf.worker.min.mjs`\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) =>\n this._pdfjs$.pipe(switchMap((pdfjs) => pdfjs.getDocument(v).promise)),\n ),\n )\n }\n}\n","import {\n BooleanInput,\n coerceArray,\n coerceNumberProperty,\n} from '@angular/cdk/coercion'\nimport { Component, inject, Input } from '@angular/core'\nimport { AsyncPipe, NgFor } from '@angular/common'\nimport { BehaviorSubject, from, Observable, of, ReplaySubject } from 'rxjs'\nimport { map, switchMap } from 'rxjs/operators'\n\nimport { InputBoolean } from '@theseam/ui-common/core'\n\nimport { TheSeamPdfRendererService } from './pdf-renderer.service'\nimport { TheSeamPdfPageComponent } from './pdf-page.component'\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 >\n </seam-pdf-page>\n </ng-container>\n `,\n styles: [\n `\n :host {\n display: block;\n }\n `,\n ],\n imports: [NgFor, AsyncPipe, TheSeamPdfPageComponent],\n})\nexport class TheSeamPdfViewerComponent {\n static ngAcceptInputType_shadow: BooleanInput\n static ngAcceptInputType_responsive: BooleanInput\n\n private readonly _pdfRenderer = inject(TheSeamPdfRendererService)\n\n @Input()\n get pdfUrl(): string | undefined | null {\n return this._pdfUrl\n }\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) {\n this._renderUpdateThreshold = coerceNumberProperty(value)\n }\n get renderUpdateThreshold(): number {\n return this._renderUpdateThreshold\n }\n private _renderUpdateThreshold = 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[] {\n return this._pageRange\n }\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(\n '[pdf-viewer] Invalid Page Range. Range array must have two numbers only.',\n )\n }\n if (range[0] > range[1]) {\n throw new Error(\n '[pdf-viewer] Invalid Page Range. Start of the range must be less than or equal to the end.',\n )\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 // eslint-disable-next-line no-console\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 {\n return this._pageNumber\n }\n set pageNumber(value: number) {\n this._pageNumber = coerceNumberProperty(value, -1)\n this._pageNumbersSubject.next(\n this._pageNumber === -1 ? undefined : [this._pageNumber],\n )\n }\n private _pageNumber = -1\n\n /**\n * Specific page numbers to render.\n */\n @Input()\n get pageNumbers(): number[] {\n return this._pageNumbers\n }\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\n public readonly document$: Observable<any>\n public readonly pages$: Observable<any[]>\n\n /**\n * Undefined means all a pages\n */\n private _pageNumbersSubject = new BehaviorSubject<number[] | undefined>(\n undefined,\n )\n\n constructor() {\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) =>\n 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 { BooleanInput } from '@angular/cdk/coercion'\nimport {\n ChangeDetectorRef,\n Component,\n ElementRef,\n inject,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n ViewChild,\n} from '@angular/core'\nimport { NgIf } from '@angular/common'\n\nimport { TheSeamOverlayScrollbarDirective } from '@theseam/ui-common/scrollbar'\nimport { TheSeamElemResizedDirective } from '@theseam/ui-common/shared'\nimport { InputBoolean } from '@theseam/ui-common/core'\n\ninterface TheSeamTemplateResizeMessagePayload {\n width: number\n height: number\n}\n\nenum TheSeamTemplateMessageType {\n TplData = 'theseam_tpl_data',\n TplResize = 'theseam_tpl_resize',\n}\n\ninterface TheSeamTemplateMessage<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 imports: [\n NgIf,\n TheSeamOverlayScrollbarDirective,\n TheSeamElemResizedDirective,\n ],\n})\nexport class TheSeamHtmlTemplateViewerComponent implements OnInit, OnDestroy {\n static ngAcceptInputType_scrollable: BooleanInput\n\n private readonly _ngZone = inject(NgZone)\n private readonly _cdr = inject(ChangeDetectorRef)\n private readonly _elementRef = inject(ElementRef)\n\n private readonly _templateMessageHandlers: {\n [key in TheSeamTemplateMessageType]: (payload: any) => void\n }\n\n private _message: string | undefined | null\n private _dataVersion = 0\n private _scrollHandleObserver: MutationObserver | null = null\n\n @Input()\n get src(): string | null | undefined {\n return this._src\n }\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(\n value !== null && value !== undefined ? JSON.stringify(value) : value,\n )\n }\n\n @Input()\n @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 = 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 = false\n _mouseBlockWidth = '100%'\n _mouseBlockHeight = '100%'\n\n constructor() {\n this._templateMessageHandlers = {\n [TheSeamTemplateMessageType.TplData]: () => {}, // Not listening for message from template\n [TheSeamTemplateMessageType.TplResize]: this._onResizeMessageFromTemplate,\n }\n }\n\n ngOnInit(): void {\n this._ngZone.runOutsideAngular(() =>\n window.addEventListener('message', this._onMessageFromTemplate),\n )\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 TheSeamTemplateMessageType\n if (this._templateMessageHandlers[type]) {\n this._ngZone.run(() =>\n this._templateMessageHandlers[type](e.data.payload),\n )\n }\n }\n\n private _onResizeMessageFromTemplate = (\n payload: TheSeamTemplateResizeMessagePayload,\n ): 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: TheSeamTemplateMessage<TheSeamTemplateMessageType, any> =\n { type: TheSeamTemplateMessageType.TplData, payload: undefined }\n try {\n wrapper.payload = JSON.parse(_msg)\n } catch {\n wrapper.payload = _msg\n }\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 (\n this._elementRef.nativeElement.querySelector(\n '.os-scrollbar-handle.active',\n ) !== null\n )\n }\n}\n","<div (seamElemResized)=\"_onResized($any($event))\">\n <div\n class=\"embed-responsive embed-responsive-4by3\"\n [seamOverlayScrollbar]=\"_scrollbarOptions\"\n [overlayScrollbarEnabled]=\"_scrollable\"\n >\n <iframe\n #iframeElement\n class=\"embed-responsive-item\"\n allowfullscreen\n ></iframe>\n <div\n *ngIf=\"_mouseBlockActive\"\n class=\"iframe-mouse-block\"\n [style.width]=\"_mouseBlockWidth\"\n [style.height]=\"_mouseBlockHeight\"\n ></div>\n </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}