@progress/kendo-angular-pdfviewer 16.9.0-develop.1 → 16.9.0-develop.11
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.
- package/esm2020/package-metadata.mjs +2 -2
- package/esm2020/pdfviewer.component.mjs +19 -12
- package/esm2020/toolbar/toolbar.component.mjs +14 -0
- package/fesm2015/progress-kendo-angular-pdfviewer.mjs +34 -13
- package/fesm2020/progress-kendo-angular-pdfviewer.mjs +34 -13
- package/package.json +12 -12
- package/pdfviewer.component.d.ts +4 -3
- package/schematics/ngAdd/index.js +2 -2
- package/toolbar/toolbar.component.d.ts +6 -0
@@ -9,7 +9,7 @@ export const packageMetadata = {
|
|
9
9
|
name: '@progress/kendo-angular-pdfviewer',
|
10
10
|
productName: 'Kendo UI for Angular',
|
11
11
|
productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
|
12
|
-
publishDate:
|
13
|
-
version: '16.9.0-develop.
|
12
|
+
publishDate: 1725288183,
|
13
|
+
version: '16.9.0-develop.11',
|
14
14
|
licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning',
|
15
15
|
};
|
@@ -2,7 +2,7 @@
|
|
2
2
|
* Copyright © 2024 Progress Software Corporation. All rights reserved.
|
3
3
|
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
4
4
|
*-------------------------------------------------------------------------------------------*/
|
5
|
-
import { Component, ElementRef, EventEmitter, HostBinding, Input, NgZone, Output, Renderer2, ViewChild, isDevMode } from '@angular/core';
|
5
|
+
import { ChangeDetectorRef, Component, ElementRef, EventEmitter, HostBinding, Input, NgZone, Output, Renderer2, ViewChild, isDevMode } from '@angular/core';
|
6
6
|
import { validatePackage } from '@progress/kendo-licensing';
|
7
7
|
import { packageMetadata } from './package-metadata';
|
8
8
|
import { INITIAL_ZOOM_LEVEL, zoomOptionsData, zoomToFitOptions } from './util';
|
@@ -25,10 +25,11 @@ let counter = 0;
|
|
25
25
|
* Represents the [Kendo UI PDFViewer component for Angular]({% slug overview_pdfviewer %}).
|
26
26
|
*/
|
27
27
|
export class PDFViewerComponent {
|
28
|
-
constructor(ngZone, renderer, localizationService) {
|
28
|
+
constructor(ngZone, renderer, localizationService, cdr) {
|
29
29
|
this.ngZone = ngZone;
|
30
30
|
this.renderer = renderer;
|
31
31
|
this.localizationService = localizationService;
|
32
|
+
this.cdr = cdr;
|
32
33
|
this.hostClass = true;
|
33
34
|
/**
|
34
35
|
* Represents the tools collection rendered in the toolbar.
|
@@ -322,16 +323,17 @@ export class PDFViewerComponent {
|
|
322
323
|
* @hidden
|
323
324
|
*/
|
324
325
|
onZoomLevelChange(zoomLevel, emit = true) {
|
325
|
-
if (typeof zoomLevel === 'string') {
|
326
|
-
const parsedValue = parseFloat(zoomLevel);
|
327
|
-
zoomLevel = { value: Number.isNaN(parsedValue) ? 1 : parsedValue / 100 };
|
328
|
-
}
|
329
326
|
if (!zoomLevel) {
|
330
|
-
zoomLevel = {
|
327
|
+
zoomLevel = {
|
328
|
+
value: 1,
|
329
|
+
displayValue: '100%',
|
330
|
+
text: '100%'
|
331
|
+
};
|
331
332
|
}
|
332
333
|
let newZoom = calculateZoomLevel(zoomLevel.value, zoomLevel.type, this.pdfContext.zoom, this.pagesContainer.nativeElement);
|
333
334
|
newZoom = Math.round(newZoom * 100) / 100;
|
334
|
-
|
335
|
+
const sameZoom = this.zoom === newZoom;
|
336
|
+
if (!sameZoom && emit && hasObservers(this.zoomLevelChange)) {
|
335
337
|
this.zoomLevelChange.emit({
|
336
338
|
previousZoomLevel: this.zoom,
|
337
339
|
currentZoomLevel: newZoom
|
@@ -416,12 +418,14 @@ export class PDFViewerComponent {
|
|
416
418
|
this.ngZone.run(() => {
|
417
419
|
this.pdfContext = { ...e, element: this.pagesContainer.nativeElement };
|
418
420
|
this.loading = false;
|
421
|
+
this.cdr.markForCheck();
|
419
422
|
});
|
420
423
|
}
|
421
424
|
else {
|
422
425
|
const zoomLevelOption = this.zoomOptionsData.find(item => item.type === this._fitType);
|
423
426
|
this.pdfContext = { ...e, element: this.pagesContainer.nativeElement };
|
424
427
|
this.onZoomLevelChange(zoomLevelOption, false);
|
428
|
+
this.cdr.markForCheck();
|
425
429
|
}
|
426
430
|
if (this.pdfScroller) {
|
427
431
|
this.pdfScroller.destroy();
|
@@ -456,7 +460,10 @@ export class PDFViewerComponent {
|
|
456
460
|
dom: this.pagesContainer.nativeElement,
|
457
461
|
done: (pdfPages) => {
|
458
462
|
this.pdfContext.pdfPages = pdfPages;
|
459
|
-
this.ngZone.run(() =>
|
463
|
+
this.ngZone.run(() => {
|
464
|
+
this.loading = false;
|
465
|
+
this.cdr.markForCheck();
|
466
|
+
});
|
460
467
|
this.assignPageIds();
|
461
468
|
},
|
462
469
|
error: (e) => {
|
@@ -480,7 +487,7 @@ export class PDFViewerComponent {
|
|
480
487
|
}
|
481
488
|
setZoomLevel(zoom) {
|
482
489
|
const option = this.zoomOptionsData.find(item => !item.type && item.value === zoom);
|
483
|
-
this.zoomLevel = option
|
490
|
+
this.zoomLevel = option ? { ...option } : {
|
484
491
|
value: zoom,
|
485
492
|
displayValue: `${Math.round(zoom * 100)}%`,
|
486
493
|
text: `${Math.round(zoom * 100)}%`
|
@@ -500,7 +507,7 @@ export class PDFViewerComponent {
|
|
500
507
|
return this[source] || (changes[source] && changes[source].currentValue);
|
501
508
|
}
|
502
509
|
}
|
503
|
-
PDFViewerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PDFViewerComponent, deps: [{ token: i0.NgZone }, { token: i0.Renderer2 }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
|
510
|
+
PDFViewerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PDFViewerComponent, deps: [{ token: i0.NgZone }, { token: i0.Renderer2 }, { token: i1.LocalizationService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
504
511
|
PDFViewerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: PDFViewerComponent, isStandalone: true, selector: "kendo-pdfviewer", inputs: { tools: "tools", loaderSettings: "loaderSettings", saveFileName: "saveFileName", saveOptions: "saveOptions", url: "url", data: "data", arrayBuffer: "arrayBuffer", typedArray: "typedArray", zoom: "zoom", zoomRate: "zoomRate", minZoom: "minZoom", maxZoom: "maxZoom" }, outputs: { load: "load", error: "error", download: "download", pageChange: "pageChange", zoomLevelChange: "zoomLevelChange" }, host: { properties: { "class.k-pdf-viewer": "this.hostClass", "attr.dir": "this.direction" } }, providers: [
|
505
512
|
LocalizationService,
|
506
513
|
{
|
@@ -790,7 +797,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
790
797
|
standalone: true,
|
791
798
|
imports: [LocalizedPDFViewerMessagesDirective, NgIf, LoaderComponent, ToolbarComponent, PDFViewerSearchComponent, WatermarkOverlayComponent]
|
792
799
|
}]
|
793
|
-
}], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.Renderer2 }, { type: i1.LocalizationService }]; }, propDecorators: { hostClass: [{
|
800
|
+
}], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.Renderer2 }, { type: i1.LocalizationService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { hostClass: [{
|
794
801
|
type: HostBinding,
|
795
802
|
args: ['class.k-pdf-viewer']
|
796
803
|
}], direction: [{
|
@@ -14,6 +14,7 @@ import { ButtonComponent, ButtonGroupComponent } from '@progress/kendo-angular-b
|
|
14
14
|
import { ToolbarFocusableDirective } from './toolbar-focusable.directive';
|
15
15
|
import { ToolbarInputWrapperComponent } from './input-wrapper.component';
|
16
16
|
import { NgFor, NgSwitch, NgSwitchCase, NgIf } from '@angular/common';
|
17
|
+
import { map } from 'rxjs/operators';
|
17
18
|
import * as i0 from "@angular/core";
|
18
19
|
import * as i1 from "@progress/kendo-angular-l10n";
|
19
20
|
import * as i2 from "./toolbar-navigation.service";
|
@@ -59,6 +60,15 @@ export class ToolbarComponent {
|
|
59
60
|
this.downloadIcon = downloadIcon;
|
60
61
|
this.printIcon = printIcon;
|
61
62
|
this.pagerType = 'input';
|
63
|
+
this.valueNormalizer = (text) => text.pipe(map((value) => {
|
64
|
+
const parsedValue = parseFloat(value);
|
65
|
+
const newValue = Number.isNaN(parsedValue) ? 1 : parsedValue / 100;
|
66
|
+
return {
|
67
|
+
value: newValue,
|
68
|
+
displayValue: `${Math.round(newValue * 100)}%`,
|
69
|
+
text: `${Math.round(newValue * 100)}%`
|
70
|
+
};
|
71
|
+
}));
|
62
72
|
}
|
63
73
|
messageFor(key) {
|
64
74
|
return this.localization.get(key);
|
@@ -161,6 +171,8 @@ ToolbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", versi
|
|
161
171
|
valueField="id"
|
162
172
|
[value]="zoomLevelChooserValue"
|
163
173
|
[allowCustom]="true"
|
174
|
+
[valueNormalizer]="valueNormalizer"
|
175
|
+
[clearButton]="false"
|
164
176
|
(valueChange)="onZoomLevelChooserValueChange($event)">
|
165
177
|
<ng-template kendoComboBoxItemTemplate let-dataItem>
|
166
178
|
{{ dataItem.type ? messageFor('f' + dataItem.type.slice(1)) : dataItem.text }}
|
@@ -331,6 +343,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
331
343
|
valueField="id"
|
332
344
|
[value]="zoomLevelChooserValue"
|
333
345
|
[allowCustom]="true"
|
346
|
+
[valueNormalizer]="valueNormalizer"
|
347
|
+
[clearButton]="false"
|
334
348
|
(valueChange)="onZoomLevelChooserValueChange($event)">
|
335
349
|
<ng-template kendoComboBoxItemTemplate let-dataItem>
|
336
350
|
{{ dataItem.type ? messageFor('f' + dataItem.type.slice(1)) : dataItem.text }}
|
@@ -17,6 +17,7 @@ import * as i1$1 from '@progress/kendo-angular-dropdowns';
|
|
17
17
|
import { ComboBoxComponent, ItemTemplateDirective } from '@progress/kendo-angular-dropdowns';
|
18
18
|
import { ButtonGroupComponent, ButtonComponent } from '@progress/kendo-angular-buttons';
|
19
19
|
import { NgFor, NgSwitch, NgSwitchCase, NgIf } from '@angular/common';
|
20
|
+
import { map } from 'rxjs/operators';
|
20
21
|
import { TextBoxComponent, TextBoxSuffixTemplateDirective } from '@progress/kendo-angular-inputs';
|
21
22
|
import { LoaderComponent as LoaderComponent$1 } from '@progress/kendo-angular-indicators';
|
22
23
|
import 'pdfjs-dist/build/pdf.worker.entry';
|
@@ -125,8 +126,8 @@ const packageMetadata = {
|
|
125
126
|
name: '@progress/kendo-angular-pdfviewer',
|
126
127
|
productName: 'Kendo UI for Angular',
|
127
128
|
productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
|
128
|
-
publishDate:
|
129
|
-
version: '16.9.0-develop.
|
129
|
+
publishDate: 1725288183,
|
130
|
+
version: '16.9.0-develop.11',
|
130
131
|
licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning',
|
131
132
|
};
|
132
133
|
|
@@ -463,6 +464,15 @@ class ToolbarComponent {
|
|
463
464
|
this.downloadIcon = downloadIcon;
|
464
465
|
this.printIcon = printIcon;
|
465
466
|
this.pagerType = 'input';
|
467
|
+
this.valueNormalizer = (text) => text.pipe(map((value) => {
|
468
|
+
const parsedValue = parseFloat(value);
|
469
|
+
const newValue = Number.isNaN(parsedValue) ? 1 : parsedValue / 100;
|
470
|
+
return {
|
471
|
+
value: newValue,
|
472
|
+
displayValue: `${Math.round(newValue * 100)}%`,
|
473
|
+
text: `${Math.round(newValue * 100)}%`
|
474
|
+
};
|
475
|
+
}));
|
466
476
|
}
|
467
477
|
messageFor(key) {
|
468
478
|
return this.localization.get(key);
|
@@ -565,6 +575,8 @@ ToolbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", versi
|
|
565
575
|
valueField="id"
|
566
576
|
[value]="zoomLevelChooserValue"
|
567
577
|
[allowCustom]="true"
|
578
|
+
[valueNormalizer]="valueNormalizer"
|
579
|
+
[clearButton]="false"
|
568
580
|
(valueChange)="onZoomLevelChooserValueChange($event)">
|
569
581
|
<ng-template kendoComboBoxItemTemplate let-dataItem>
|
570
582
|
{{ dataItem.type ? messageFor('f' + dataItem.type.slice(1)) : dataItem.text }}
|
@@ -735,6 +747,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
735
747
|
valueField="id"
|
736
748
|
[value]="zoomLevelChooserValue"
|
737
749
|
[allowCustom]="true"
|
750
|
+
[valueNormalizer]="valueNormalizer"
|
751
|
+
[clearButton]="false"
|
738
752
|
(valueChange)="onZoomLevelChooserValueChange($event)">
|
739
753
|
<ng-template kendoComboBoxItemTemplate let-dataItem>
|
740
754
|
{{ dataItem.type ? messageFor('f' + dataItem.type.slice(1)) : dataItem.text }}
|
@@ -1141,10 +1155,11 @@ let counter = 0;
|
|
1141
1155
|
* Represents the [Kendo UI PDFViewer component for Angular]({% slug overview_pdfviewer %}).
|
1142
1156
|
*/
|
1143
1157
|
class PDFViewerComponent {
|
1144
|
-
constructor(ngZone, renderer, localizationService) {
|
1158
|
+
constructor(ngZone, renderer, localizationService, cdr) {
|
1145
1159
|
this.ngZone = ngZone;
|
1146
1160
|
this.renderer = renderer;
|
1147
1161
|
this.localizationService = localizationService;
|
1162
|
+
this.cdr = cdr;
|
1148
1163
|
this.hostClass = true;
|
1149
1164
|
/**
|
1150
1165
|
* Represents the tools collection rendered in the toolbar.
|
@@ -1441,16 +1456,17 @@ class PDFViewerComponent {
|
|
1441
1456
|
* @hidden
|
1442
1457
|
*/
|
1443
1458
|
onZoomLevelChange(zoomLevel, emit = true) {
|
1444
|
-
if (typeof zoomLevel === 'string') {
|
1445
|
-
const parsedValue = parseFloat(zoomLevel);
|
1446
|
-
zoomLevel = { value: Number.isNaN(parsedValue) ? 1 : parsedValue / 100 };
|
1447
|
-
}
|
1448
1459
|
if (!zoomLevel) {
|
1449
|
-
zoomLevel = {
|
1460
|
+
zoomLevel = {
|
1461
|
+
value: 1,
|
1462
|
+
displayValue: '100%',
|
1463
|
+
text: '100%'
|
1464
|
+
};
|
1450
1465
|
}
|
1451
1466
|
let newZoom = calculateZoomLevel(zoomLevel.value, zoomLevel.type, this.pdfContext.zoom, this.pagesContainer.nativeElement);
|
1452
1467
|
newZoom = Math.round(newZoom * 100) / 100;
|
1453
|
-
|
1468
|
+
const sameZoom = this.zoom === newZoom;
|
1469
|
+
if (!sameZoom && emit && hasObservers(this.zoomLevelChange)) {
|
1454
1470
|
this.zoomLevelChange.emit({
|
1455
1471
|
previousZoomLevel: this.zoom,
|
1456
1472
|
currentZoomLevel: newZoom
|
@@ -1536,12 +1552,14 @@ class PDFViewerComponent {
|
|
1536
1552
|
this.ngZone.run(() => {
|
1537
1553
|
this.pdfContext = Object.assign(Object.assign({}, e), { element: this.pagesContainer.nativeElement });
|
1538
1554
|
this.loading = false;
|
1555
|
+
this.cdr.markForCheck();
|
1539
1556
|
});
|
1540
1557
|
}
|
1541
1558
|
else {
|
1542
1559
|
const zoomLevelOption = this.zoomOptionsData.find(item => item.type === this._fitType);
|
1543
1560
|
this.pdfContext = Object.assign(Object.assign({}, e), { element: this.pagesContainer.nativeElement });
|
1544
1561
|
this.onZoomLevelChange(zoomLevelOption, false);
|
1562
|
+
this.cdr.markForCheck();
|
1545
1563
|
}
|
1546
1564
|
if (this.pdfScroller) {
|
1547
1565
|
this.pdfScroller.destroy();
|
@@ -1577,7 +1595,10 @@ class PDFViewerComponent {
|
|
1577
1595
|
dom: this.pagesContainer.nativeElement,
|
1578
1596
|
done: (pdfPages) => {
|
1579
1597
|
this.pdfContext.pdfPages = pdfPages;
|
1580
|
-
this.ngZone.run(() =>
|
1598
|
+
this.ngZone.run(() => {
|
1599
|
+
this.loading = false;
|
1600
|
+
this.cdr.markForCheck();
|
1601
|
+
});
|
1581
1602
|
this.assignPageIds();
|
1582
1603
|
},
|
1583
1604
|
error: (e) => {
|
@@ -1601,7 +1622,7 @@ class PDFViewerComponent {
|
|
1601
1622
|
}
|
1602
1623
|
setZoomLevel(zoom) {
|
1603
1624
|
const option = this.zoomOptionsData.find(item => !item.type && item.value === zoom);
|
1604
|
-
this.zoomLevel = option
|
1625
|
+
this.zoomLevel = option ? Object.assign({}, option) : {
|
1605
1626
|
value: zoom,
|
1606
1627
|
displayValue: `${Math.round(zoom * 100)}%`,
|
1607
1628
|
text: `${Math.round(zoom * 100)}%`
|
@@ -1621,7 +1642,7 @@ class PDFViewerComponent {
|
|
1621
1642
|
return this[source] || (changes[source] && changes[source].currentValue);
|
1622
1643
|
}
|
1623
1644
|
}
|
1624
|
-
PDFViewerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PDFViewerComponent, deps: [{ token: i0.NgZone }, { token: i0.Renderer2 }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
|
1645
|
+
PDFViewerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PDFViewerComponent, deps: [{ token: i0.NgZone }, { token: i0.Renderer2 }, { token: i1.LocalizationService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
1625
1646
|
PDFViewerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: PDFViewerComponent, isStandalone: true, selector: "kendo-pdfviewer", inputs: { tools: "tools", loaderSettings: "loaderSettings", saveFileName: "saveFileName", saveOptions: "saveOptions", url: "url", data: "data", arrayBuffer: "arrayBuffer", typedArray: "typedArray", zoom: "zoom", zoomRate: "zoomRate", minZoom: "minZoom", maxZoom: "maxZoom" }, outputs: { load: "load", error: "error", download: "download", pageChange: "pageChange", zoomLevelChange: "zoomLevelChange" }, host: { properties: { "class.k-pdf-viewer": "this.hostClass", "attr.dir": "this.direction" } }, providers: [
|
1626
1647
|
LocalizationService,
|
1627
1648
|
{
|
@@ -1911,7 +1932,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
1911
1932
|
standalone: true,
|
1912
1933
|
imports: [LocalizedPDFViewerMessagesDirective, NgIf, LoaderComponent, ToolbarComponent, PDFViewerSearchComponent, WatermarkOverlayComponent]
|
1913
1934
|
}]
|
1914
|
-
}], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.Renderer2 }, { type: i1.LocalizationService }]; }, propDecorators: { hostClass: [{
|
1935
|
+
}], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.Renderer2 }, { type: i1.LocalizationService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { hostClass: [{
|
1915
1936
|
type: HostBinding,
|
1916
1937
|
args: ['class.k-pdf-viewer']
|
1917
1938
|
}], direction: [{
|
@@ -17,6 +17,7 @@ import * as i1$1 from '@progress/kendo-angular-dropdowns';
|
|
17
17
|
import { ComboBoxComponent, ItemTemplateDirective } from '@progress/kendo-angular-dropdowns';
|
18
18
|
import { ButtonGroupComponent, ButtonComponent } from '@progress/kendo-angular-buttons';
|
19
19
|
import { NgFor, NgSwitch, NgSwitchCase, NgIf } from '@angular/common';
|
20
|
+
import { map } from 'rxjs/operators';
|
20
21
|
import { TextBoxComponent, TextBoxSuffixTemplateDirective } from '@progress/kendo-angular-inputs';
|
21
22
|
import { LoaderComponent as LoaderComponent$1 } from '@progress/kendo-angular-indicators';
|
22
23
|
import 'pdfjs-dist/build/pdf.worker.entry';
|
@@ -125,8 +126,8 @@ const packageMetadata = {
|
|
125
126
|
name: '@progress/kendo-angular-pdfviewer',
|
126
127
|
productName: 'Kendo UI for Angular',
|
127
128
|
productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
|
128
|
-
publishDate:
|
129
|
-
version: '16.9.0-develop.
|
129
|
+
publishDate: 1725288183,
|
130
|
+
version: '16.9.0-develop.11',
|
130
131
|
licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning',
|
131
132
|
};
|
132
133
|
|
@@ -463,6 +464,15 @@ class ToolbarComponent {
|
|
463
464
|
this.downloadIcon = downloadIcon;
|
464
465
|
this.printIcon = printIcon;
|
465
466
|
this.pagerType = 'input';
|
467
|
+
this.valueNormalizer = (text) => text.pipe(map((value) => {
|
468
|
+
const parsedValue = parseFloat(value);
|
469
|
+
const newValue = Number.isNaN(parsedValue) ? 1 : parsedValue / 100;
|
470
|
+
return {
|
471
|
+
value: newValue,
|
472
|
+
displayValue: `${Math.round(newValue * 100)}%`,
|
473
|
+
text: `${Math.round(newValue * 100)}%`
|
474
|
+
};
|
475
|
+
}));
|
466
476
|
}
|
467
477
|
messageFor(key) {
|
468
478
|
return this.localization.get(key);
|
@@ -565,6 +575,8 @@ ToolbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", versi
|
|
565
575
|
valueField="id"
|
566
576
|
[value]="zoomLevelChooserValue"
|
567
577
|
[allowCustom]="true"
|
578
|
+
[valueNormalizer]="valueNormalizer"
|
579
|
+
[clearButton]="false"
|
568
580
|
(valueChange)="onZoomLevelChooserValueChange($event)">
|
569
581
|
<ng-template kendoComboBoxItemTemplate let-dataItem>
|
570
582
|
{{ dataItem.type ? messageFor('f' + dataItem.type.slice(1)) : dataItem.text }}
|
@@ -735,6 +747,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
735
747
|
valueField="id"
|
736
748
|
[value]="zoomLevelChooserValue"
|
737
749
|
[allowCustom]="true"
|
750
|
+
[valueNormalizer]="valueNormalizer"
|
751
|
+
[clearButton]="false"
|
738
752
|
(valueChange)="onZoomLevelChooserValueChange($event)">
|
739
753
|
<ng-template kendoComboBoxItemTemplate let-dataItem>
|
740
754
|
{{ dataItem.type ? messageFor('f' + dataItem.type.slice(1)) : dataItem.text }}
|
@@ -1141,10 +1155,11 @@ let counter = 0;
|
|
1141
1155
|
* Represents the [Kendo UI PDFViewer component for Angular]({% slug overview_pdfviewer %}).
|
1142
1156
|
*/
|
1143
1157
|
class PDFViewerComponent {
|
1144
|
-
constructor(ngZone, renderer, localizationService) {
|
1158
|
+
constructor(ngZone, renderer, localizationService, cdr) {
|
1145
1159
|
this.ngZone = ngZone;
|
1146
1160
|
this.renderer = renderer;
|
1147
1161
|
this.localizationService = localizationService;
|
1162
|
+
this.cdr = cdr;
|
1148
1163
|
this.hostClass = true;
|
1149
1164
|
/**
|
1150
1165
|
* Represents the tools collection rendered in the toolbar.
|
@@ -1438,16 +1453,17 @@ class PDFViewerComponent {
|
|
1438
1453
|
* @hidden
|
1439
1454
|
*/
|
1440
1455
|
onZoomLevelChange(zoomLevel, emit = true) {
|
1441
|
-
if (typeof zoomLevel === 'string') {
|
1442
|
-
const parsedValue = parseFloat(zoomLevel);
|
1443
|
-
zoomLevel = { value: Number.isNaN(parsedValue) ? 1 : parsedValue / 100 };
|
1444
|
-
}
|
1445
1456
|
if (!zoomLevel) {
|
1446
|
-
zoomLevel = {
|
1457
|
+
zoomLevel = {
|
1458
|
+
value: 1,
|
1459
|
+
displayValue: '100%',
|
1460
|
+
text: '100%'
|
1461
|
+
};
|
1447
1462
|
}
|
1448
1463
|
let newZoom = calculateZoomLevel(zoomLevel.value, zoomLevel.type, this.pdfContext.zoom, this.pagesContainer.nativeElement);
|
1449
1464
|
newZoom = Math.round(newZoom * 100) / 100;
|
1450
|
-
|
1465
|
+
const sameZoom = this.zoom === newZoom;
|
1466
|
+
if (!sameZoom && emit && hasObservers(this.zoomLevelChange)) {
|
1451
1467
|
this.zoomLevelChange.emit({
|
1452
1468
|
previousZoomLevel: this.zoom,
|
1453
1469
|
currentZoomLevel: newZoom
|
@@ -1532,12 +1548,14 @@ class PDFViewerComponent {
|
|
1532
1548
|
this.ngZone.run(() => {
|
1533
1549
|
this.pdfContext = { ...e, element: this.pagesContainer.nativeElement };
|
1534
1550
|
this.loading = false;
|
1551
|
+
this.cdr.markForCheck();
|
1535
1552
|
});
|
1536
1553
|
}
|
1537
1554
|
else {
|
1538
1555
|
const zoomLevelOption = this.zoomOptionsData.find(item => item.type === this._fitType);
|
1539
1556
|
this.pdfContext = { ...e, element: this.pagesContainer.nativeElement };
|
1540
1557
|
this.onZoomLevelChange(zoomLevelOption, false);
|
1558
|
+
this.cdr.markForCheck();
|
1541
1559
|
}
|
1542
1560
|
if (this.pdfScroller) {
|
1543
1561
|
this.pdfScroller.destroy();
|
@@ -1572,7 +1590,10 @@ class PDFViewerComponent {
|
|
1572
1590
|
dom: this.pagesContainer.nativeElement,
|
1573
1591
|
done: (pdfPages) => {
|
1574
1592
|
this.pdfContext.pdfPages = pdfPages;
|
1575
|
-
this.ngZone.run(() =>
|
1593
|
+
this.ngZone.run(() => {
|
1594
|
+
this.loading = false;
|
1595
|
+
this.cdr.markForCheck();
|
1596
|
+
});
|
1576
1597
|
this.assignPageIds();
|
1577
1598
|
},
|
1578
1599
|
error: (e) => {
|
@@ -1596,7 +1617,7 @@ class PDFViewerComponent {
|
|
1596
1617
|
}
|
1597
1618
|
setZoomLevel(zoom) {
|
1598
1619
|
const option = this.zoomOptionsData.find(item => !item.type && item.value === zoom);
|
1599
|
-
this.zoomLevel = option
|
1620
|
+
this.zoomLevel = option ? { ...option } : {
|
1600
1621
|
value: zoom,
|
1601
1622
|
displayValue: `${Math.round(zoom * 100)}%`,
|
1602
1623
|
text: `${Math.round(zoom * 100)}%`
|
@@ -1616,7 +1637,7 @@ class PDFViewerComponent {
|
|
1616
1637
|
return this[source] || (changes[source] && changes[source].currentValue);
|
1617
1638
|
}
|
1618
1639
|
}
|
1619
|
-
PDFViewerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PDFViewerComponent, deps: [{ token: i0.NgZone }, { token: i0.Renderer2 }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
|
1640
|
+
PDFViewerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PDFViewerComponent, deps: [{ token: i0.NgZone }, { token: i0.Renderer2 }, { token: i1.LocalizationService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
1620
1641
|
PDFViewerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: PDFViewerComponent, isStandalone: true, selector: "kendo-pdfviewer", inputs: { tools: "tools", loaderSettings: "loaderSettings", saveFileName: "saveFileName", saveOptions: "saveOptions", url: "url", data: "data", arrayBuffer: "arrayBuffer", typedArray: "typedArray", zoom: "zoom", zoomRate: "zoomRate", minZoom: "minZoom", maxZoom: "maxZoom" }, outputs: { load: "load", error: "error", download: "download", pageChange: "pageChange", zoomLevelChange: "zoomLevelChange" }, host: { properties: { "class.k-pdf-viewer": "this.hostClass", "attr.dir": "this.direction" } }, providers: [
|
1621
1642
|
LocalizationService,
|
1622
1643
|
{
|
@@ -1906,7 +1927,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
1906
1927
|
standalone: true,
|
1907
1928
|
imports: [LocalizedPDFViewerMessagesDirective, NgIf, LoaderComponent, ToolbarComponent, PDFViewerSearchComponent, WatermarkOverlayComponent]
|
1908
1929
|
}]
|
1909
|
-
}], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.Renderer2 }, { type: i1.LocalizationService }]; }, propDecorators: { hostClass: [{
|
1930
|
+
}], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.Renderer2 }, { type: i1.LocalizationService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { hostClass: [{
|
1910
1931
|
type: HostBinding,
|
1911
1932
|
args: ['class.k-pdf-viewer']
|
1912
1933
|
}], direction: [{
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@progress/kendo-angular-pdfviewer",
|
3
|
-
"version": "16.9.0-develop.
|
3
|
+
"version": "16.9.0-develop.11",
|
4
4
|
"description": "Kendo UI PDFViewer for Angular",
|
5
5
|
"license": "SEE LICENSE IN LICENSE.md",
|
6
6
|
"author": "Progress",
|
@@ -23,21 +23,21 @@
|
|
23
23
|
"@angular/core": "15 - 18",
|
24
24
|
"@angular/platform-browser": "15 - 18",
|
25
25
|
"@progress/kendo-licensing": "^1.0.2",
|
26
|
-
"@progress/kendo-angular-buttons": "16.9.0-develop.
|
27
|
-
"@progress/kendo-angular-common": "16.9.0-develop.
|
28
|
-
"@progress/kendo-angular-dropdowns": "16.9.0-develop.
|
29
|
-
"@progress/kendo-angular-inputs": "16.9.0-develop.
|
30
|
-
"@progress/kendo-angular-intl": "16.9.0-develop.
|
31
|
-
"@progress/kendo-angular-l10n": "16.9.0-develop.
|
32
|
-
"@progress/kendo-angular-icons": "16.9.0-develop.
|
33
|
-
"@progress/kendo-angular-indicators": "16.9.0-develop.
|
34
|
-
"@progress/kendo-angular-pager": "16.9.0-develop.
|
35
|
-
"@progress/kendo-angular-popup": "16.9.0-develop.
|
26
|
+
"@progress/kendo-angular-buttons": "16.9.0-develop.11",
|
27
|
+
"@progress/kendo-angular-common": "16.9.0-develop.11",
|
28
|
+
"@progress/kendo-angular-dropdowns": "16.9.0-develop.11",
|
29
|
+
"@progress/kendo-angular-inputs": "16.9.0-develop.11",
|
30
|
+
"@progress/kendo-angular-intl": "16.9.0-develop.11",
|
31
|
+
"@progress/kendo-angular-l10n": "16.9.0-develop.11",
|
32
|
+
"@progress/kendo-angular-icons": "16.9.0-develop.11",
|
33
|
+
"@progress/kendo-angular-indicators": "16.9.0-develop.11",
|
34
|
+
"@progress/kendo-angular-pager": "16.9.0-develop.11",
|
35
|
+
"@progress/kendo-angular-popup": "16.9.0-develop.11",
|
36
36
|
"rxjs": "^6.5.3 || ^7.0.0"
|
37
37
|
},
|
38
38
|
"dependencies": {
|
39
39
|
"tslib": "^2.3.1",
|
40
|
-
"@progress/kendo-angular-schematics": "16.9.0-develop.
|
40
|
+
"@progress/kendo-angular-schematics": "16.9.0-develop.11",
|
41
41
|
"@progress/kendo-file-saver": "^1.0.1",
|
42
42
|
"@progress/kendo-pdfviewer-common": "0.2.10"
|
43
43
|
},
|
package/pdfviewer.component.d.ts
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
* Copyright © 2024 Progress Software Corporation. All rights reserved.
|
3
3
|
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
4
4
|
*-------------------------------------------------------------------------------------------*/
|
5
|
-
import { AfterViewInit, EventEmitter, NgZone, OnDestroy, OnInit, Renderer2, SimpleChanges } from '@angular/core';
|
5
|
+
import { AfterViewInit, ChangeDetectorRef, EventEmitter, NgZone, OnDestroy, OnInit, Renderer2, SimpleChanges } from '@angular/core';
|
6
6
|
import { LoaderSettings } from './models/loader-settings';
|
7
7
|
import { TypedArray } from '@progress/kendo-pdfviewer-common';
|
8
8
|
import { PDFViewerContext } from './models/pdfviewer-context';
|
@@ -22,6 +22,7 @@ export declare class PDFViewerComponent implements OnInit, AfterViewInit, OnDest
|
|
22
22
|
private ngZone;
|
23
23
|
private renderer;
|
24
24
|
private localizationService;
|
25
|
+
private cdr;
|
25
26
|
hostClass: boolean;
|
26
27
|
direction: string;
|
27
28
|
/**
|
@@ -160,7 +161,7 @@ export declare class PDFViewerComponent implements OnInit, AfterViewInit, OnDest
|
|
160
161
|
private pdfScroller;
|
161
162
|
private searchService;
|
162
163
|
private subs;
|
163
|
-
constructor(ngZone: NgZone, renderer: Renderer2, localizationService: LocalizationService);
|
164
|
+
constructor(ngZone: NgZone, renderer: Renderer2, localizationService: LocalizationService, cdr: ChangeDetectorRef);
|
164
165
|
ngOnInit(): void;
|
165
166
|
ngAfterViewInit(): void;
|
166
167
|
ngOnDestroy(): void;
|
@@ -196,7 +197,7 @@ export declare class PDFViewerComponent implements OnInit, AfterViewInit, OnDest
|
|
196
197
|
/**
|
197
198
|
* @hidden
|
198
199
|
*/
|
199
|
-
onZoomLevelChange(zoomLevel: ZoomLevel
|
200
|
+
onZoomLevelChange(zoomLevel: ZoomLevel, emit?: boolean): void;
|
200
201
|
/**
|
201
202
|
* @hidden
|
202
203
|
*/
|
@@ -4,8 +4,8 @@ const schematics_1 = require("@angular-devkit/schematics");
|
|
4
4
|
function default_1(options) {
|
5
5
|
const finalOptions = Object.assign(Object.assign({}, options), { mainNgModule: 'PDFViewerModule', package: 'pdfviewer', peerDependencies: {
|
6
6
|
// peers of the dropdowns
|
7
|
-
'@progress/kendo-angular-navigation': '16.9.0-develop.
|
8
|
-
'@progress/kendo-angular-treeview': '16.9.0-develop.
|
7
|
+
'@progress/kendo-angular-navigation': '16.9.0-develop.11',
|
8
|
+
'@progress/kendo-angular-treeview': '16.9.0-develop.11'
|
9
9
|
} });
|
10
10
|
return (0, schematics_1.externalSchematic)('@progress/kendo-angular-schematics', 'ng-add', finalOptions);
|
11
11
|
}
|
@@ -9,6 +9,7 @@ import { SVGIcon } from '@progress/kendo-svg-icons';
|
|
9
9
|
import { ToolbarNavigationService } from './toolbar-navigation.service';
|
10
10
|
import { PDFViewerTool } from '../models/toolbar-tool';
|
11
11
|
import { ZoomLevel } from '../models/zoom-level';
|
12
|
+
import { Observable } from 'rxjs';
|
12
13
|
import * as i0 from "@angular/core";
|
13
14
|
/**
|
14
15
|
* @hidden
|
@@ -61,6 +62,11 @@ export declare class ToolbarComponent {
|
|
61
62
|
onFileSelect(e: any): void;
|
62
63
|
onZoomLevelChooserValueChange(zoomLevel: ZoomLevel): void;
|
63
64
|
focus(): void;
|
65
|
+
valueNormalizer: (text: Observable<string>) => Observable<{
|
66
|
+
value: number;
|
67
|
+
displayValue: string;
|
68
|
+
text: string;
|
69
|
+
}>;
|
64
70
|
static ɵfac: i0.ɵɵFactoryDeclaration<ToolbarComponent, never>;
|
65
71
|
static ɵcmp: i0.ɵɵComponentDeclaration<ToolbarComponent, "[kendoPDFViewerToolbar]", never, { "zoomLevel": "zoomLevel"; "calculatedComboBoxValue": "calculatedComboBoxValue"; "skip": "skip"; "pageSize": "pageSize"; "total": "total"; "zoomInDisabled": "zoomInDisabled"; "zoomOutDisabled": "zoomOutDisabled"; "disabledTools": "disabledTools"; "zoomLevelChooserValue": "zoomLevelChooserValue"; "zoomOptionsData": "zoomOptionsData"; "pagesContainerId": "pagesContainerId"; "tools": "tools"; }, { "fileSelect": "fileSelect"; "fileSelectStart": "fileSelectStart"; "fileSelectError": "fileSelectError"; "download": "download"; "selectionEnabled": "selectionEnabled"; "panningEnabled": "panningEnabled"; "pageChange": "pageChange"; "zoomIn": "zoomIn"; "zoomOut": "zoomOut"; "zoomLevelChange": "zoomLevelChange"; "print": "print"; "search": "search"; }, never, never, true, never>;
|
66
72
|
}
|