angular-aspect-ratio-container 19.0.3 → 20.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.
@@ -1,12 +1,15 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, Renderer2, ElementRef, input, Directive } from '@angular/core';
2
+ import { inject, Renderer2, ElementRef, input, output, Directive } from '@angular/core';
3
3
 
4
4
  class NgAspectRatioDirective {
5
5
  renderer = inject(Renderer2);
6
6
  hostElem = inject(ElementRef);
7
7
  observer;
8
- targetRatio = input.required({ alias: 'ngAspectRatio' });
8
+ ngAspectRatio = input.required();
9
9
  sizingMode = input('match-parent');
10
+ containerWidthChanged = output();
11
+ containerHeightChanged = output();
12
+ targetRatio = this.ngAspectRatio;
10
13
  constructor() {
11
14
  this.observer = new ResizeObserver(() => {
12
15
  this.calculateAndSetAspect();
@@ -57,15 +60,17 @@ class NgAspectRatioDirective {
57
60
  this.setAcInnerHeight(targetHeight);
58
61
  }
59
62
  setAcInnerWidth(width) {
63
+ this.containerWidthChanged.emit(width);
60
64
  this.renderer.setStyle(this.hostElem.nativeElement, 'width', `${width}px`);
61
65
  }
62
66
  setAcInnerHeight(height) {
67
+ this.containerHeightChanged.emit(height);
63
68
  this.renderer.setStyle(this.hostElem.nativeElement, 'height', `${height}px`);
64
69
  }
65
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.7", ngImport: i0, type: NgAspectRatioDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
66
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.1.7", type: NgAspectRatioDirective, isStandalone: true, selector: "[ngAspectRatio]", inputs: { targetRatio: { classPropertyName: "targetRatio", publicName: "ngAspectRatio", isSignal: true, isRequired: true, transformFunction: null }, sizingMode: { classPropertyName: "sizingMode", publicName: "sizingMode", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
70
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: NgAspectRatioDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
71
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.0.7", type: NgAspectRatioDirective, isStandalone: true, selector: "[ngAspectRatio]", inputs: { ngAspectRatio: { classPropertyName: "ngAspectRatio", publicName: "ngAspectRatio", isSignal: true, isRequired: true, transformFunction: null }, sizingMode: { classPropertyName: "sizingMode", publicName: "sizingMode", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { containerWidthChanged: "containerWidthChanged", containerHeightChanged: "containerHeightChanged" }, ngImport: i0 });
67
72
  }
68
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.7", ngImport: i0, type: NgAspectRatioDirective, decorators: [{
73
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: NgAspectRatioDirective, decorators: [{
69
74
  type: Directive,
70
75
  args: [{
71
76
  selector: '[ngAspectRatio]'
@@ -1 +1 @@
1
- {"version":3,"file":"angular-aspect-ratio-container.mjs","sources":["../../../../libs/angular-aspect-ratio-container/src/lib/aspect-ratio-container/ng-aspect-ratio.directive.ts","../../../../libs/angular-aspect-ratio-container/src/angular-aspect-ratio-container.ts"],"sourcesContent":["import { ElementRef, AfterViewInit, Renderer2, OnDestroy, Directive, input, inject } from '@angular/core';\r\nimport { SizingMode } from './sizing-mode';\r\n\r\n@Directive({\r\n selector: '[ngAspectRatio]'\r\n})\r\nexport class NgAspectRatioDirective implements AfterViewInit, OnDestroy {\r\n private readonly renderer = inject(Renderer2);\r\n private readonly hostElem = inject(ElementRef);\r\n private readonly observer: ResizeObserver;\r\n\r\n targetRatio = input.required<number>({ alias: 'ngAspectRatio' });\r\n sizingMode = input<SizingMode>('match-parent');\r\n\r\n constructor() {\r\n this.observer = new ResizeObserver(() => {\r\n this.calculateAndSetAspect();\r\n });\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.observer.observe(this.hostElem.nativeElement.parentElement);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.observer.disconnect();\r\n }\r\n\r\n public calculateAndSetAspect(): void {\r\n this.renderer.removeStyle(this.hostElem.nativeElement, 'width');\r\n this.renderer.removeStyle(this.hostElem.nativeElement, 'height');\r\n\r\n let targetWidth: number;\r\n let targetHeight: number;\r\n\r\n if (this.sizingMode() === 'match-parent') {\r\n const hostWidth = this.hostElem.nativeElement.parentElement.offsetWidth;\r\n const hostHeight = this.hostElem.nativeElement.parentElement.offsetHeight;\r\n const hostAspectRatio = hostWidth / hostHeight;\r\n\r\n if (hostAspectRatio >= this.targetRatio()) {\r\n // use full height as base\r\n targetHeight = hostHeight;\r\n targetWidth = targetHeight * this.targetRatio();\r\n } else {\r\n // use full width as base\r\n targetWidth = hostWidth;\r\n targetHeight = targetWidth * (1 / this.targetRatio());\r\n }\r\n } else {\r\n // Add +1 to the dimensions because decimals get rounded\r\n const contentWidth = this.hostElem.nativeElement.offsetWidth + 1;\r\n const contentHeight = this.hostElem.nativeElement.offsetHeight + 1;\r\n\r\n const currentRatio = contentWidth / contentHeight;\r\n if (currentRatio >= this.targetRatio()) {\r\n targetWidth = contentWidth;\r\n targetHeight = targetWidth * (1 / this.targetRatio());\r\n } else {\r\n targetHeight = contentHeight;\r\n targetWidth = targetHeight * this.targetRatio();\r\n }\r\n }\r\n // Set calculated dimensions\r\n this.setAcInnerWidth(targetWidth);\r\n this.setAcInnerHeight(targetHeight);\r\n }\r\n\r\n private setAcInnerWidth(width: number) {\r\n this.renderer.setStyle(this.hostElem.nativeElement, 'width', `${width}px`);\r\n }\r\n\r\n private setAcInnerHeight(height: number) {\r\n this.renderer.setStyle(this.hostElem.nativeElement, 'height', `${height}px`);\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"angular-aspect-ratio-container.mjs","sources":["../tmp-esm2022/lib/aspect-ratio-container/ng-aspect-ratio.directive.js","../tmp-esm2022/angular-aspect-ratio-container.js"],"sourcesContent":["import { ElementRef, Renderer2, Directive, input, inject, output } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class NgAspectRatioDirective {\n renderer = inject(Renderer2);\n hostElem = inject(ElementRef);\n observer;\n ngAspectRatio = input.required();\n sizingMode = input('match-parent');\n containerWidthChanged = output();\n containerHeightChanged = output();\n targetRatio = this.ngAspectRatio;\n constructor() {\n this.observer = new ResizeObserver(() => {\n this.calculateAndSetAspect();\n });\n }\n ngAfterViewInit() {\n this.observer.observe(this.hostElem.nativeElement.parentElement);\n }\n ngOnDestroy() {\n this.observer.disconnect();\n }\n calculateAndSetAspect() {\n this.renderer.removeStyle(this.hostElem.nativeElement, 'width');\n this.renderer.removeStyle(this.hostElem.nativeElement, 'height');\n let targetWidth;\n let targetHeight;\n if (this.sizingMode() === 'match-parent') {\n const hostWidth = this.hostElem.nativeElement.parentElement.offsetWidth;\n const hostHeight = this.hostElem.nativeElement.parentElement.offsetHeight;\n const hostAspectRatio = hostWidth / hostHeight;\n if (hostAspectRatio >= this.targetRatio()) {\n // use full height as base\n targetHeight = hostHeight;\n targetWidth = targetHeight * this.targetRatio();\n }\n else {\n // use full width as base\n targetWidth = hostWidth;\n targetHeight = targetWidth * (1 / this.targetRatio());\n }\n }\n else {\n // Add +1 to the dimensions because decimals get rounded\n const contentWidth = this.hostElem.nativeElement.offsetWidth + 1;\n const contentHeight = this.hostElem.nativeElement.offsetHeight + 1;\n const currentRatio = contentWidth / contentHeight;\n if (currentRatio >= this.targetRatio()) {\n targetWidth = contentWidth;\n targetHeight = targetWidth * (1 / this.targetRatio());\n }\n else {\n targetHeight = contentHeight;\n targetWidth = targetHeight * this.targetRatio();\n }\n }\n // Set calculated dimensions\n this.setAcInnerWidth(targetWidth);\n this.setAcInnerHeight(targetHeight);\n }\n setAcInnerWidth(width) {\n this.containerWidthChanged.emit(width);\n this.renderer.setStyle(this.hostElem.nativeElement, 'width', `${width}px`);\n }\n setAcInnerHeight(height) {\n this.containerHeightChanged.emit(height);\n this.renderer.setStyle(this.hostElem.nativeElement, 'height', `${height}px`);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: NgAspectRatioDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.0.7\", type: NgAspectRatioDirective, isStandalone: true, selector: \"[ngAspectRatio]\", inputs: { ngAspectRatio: { classPropertyName: \"ngAspectRatio\", publicName: \"ngAspectRatio\", isSignal: true, isRequired: true, transformFunction: null }, sizingMode: { classPropertyName: \"sizingMode\", publicName: \"sizingMode\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { containerWidthChanged: \"containerWidthChanged\", containerHeightChanged: \"containerHeightChanged\" }, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: NgAspectRatioDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[ngAspectRatio]'\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctYXNwZWN0LXJhdGlvLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1hc3BlY3QtcmF0aW8tY29udGFpbmVyL3NyYy9saWIvYXNwZWN0LXJhdGlvLWNvbnRhaW5lci9uZy1hc3BlY3QtcmF0aW8uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWlCLFNBQVMsRUFBYSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBTWxILE1BQU0sT0FBTyxzQkFBc0I7SUFDaEIsUUFBUSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM3QixRQUFRLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzlCLFFBQVEsQ0FBaUI7SUFFMUMsYUFBYSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVUsQ0FBQztJQUN6QyxVQUFVLEdBQUcsS0FBSyxDQUFhLGNBQWMsQ0FBQyxDQUFDO0lBRS9DLHFCQUFxQixHQUFHLE1BQU0sRUFBVSxDQUFDO0lBQ3pDLHNCQUFzQixHQUFHLE1BQU0sRUFBVSxDQUFDO0lBRXpCLFdBQVcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBRWxEO1FBQ0UsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLGNBQWMsQ0FBQyxHQUFHLEVBQUU7WUFDdEMsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDL0IsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lB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cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiwgQWZ0ZXJWaWV3SW5pdCwgUmVuZGVyZXIyLCBPbkRlc3Ryb3ksIERpcmVjdGl2ZSwgaW5wdXQsIGluamVjdCwgb3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNpemluZ01vZGUgfSBmcm9tICcuL3NpemluZy1tb2RlJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW25nQXNwZWN0UmF0aW9dJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgTmdBc3BlY3RSYXRpb0RpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSByZW5kZXJlciA9IGluamVjdChSZW5kZXJlcjIpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgaG9zdEVsZW0gPSBpbmplY3QoRWxlbWVudFJlZik7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBvYnNlcnZlcjogUmVzaXplT2JzZXJ2ZXI7XHJcblxyXG4gIG5nQXNwZWN0UmF0aW8gPSBpbnB1dC5yZXF1aXJlZDxudW1iZXI+KCk7XHJcbiAgc2l6aW5nTW9kZSA9IGlucHV0PFNpemluZ01vZGU+KCdtYXRjaC1wYXJlbnQnKTtcclxuXHJcbiAgY29udGFpbmVyV2lkdGhDaGFuZ2VkID0gb3V0cHV0PG51bWJlcj4oKTtcclxuICBjb250YWluZXJIZWlnaHRDaGFuZ2VkID0gb3V0cHV0PG51bWJlcj4oKTtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSB0YXJnZXRSYXRpbyA9IHRoaXMubmdBc3BlY3RSYXRpbztcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLm9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKCgpID0+IHtcclxuICAgICAgdGhpcy5jYWxjdWxhdGVBbmRTZXRBc3BlY3QoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5vYnNlcnZlci5vYnNlcnZlKHRoaXMuaG9zdEVsZW0ubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50KTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5vYnNlcnZlci5kaXNjb25uZWN0KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2FsY3VsYXRlQW5kU2V0QXNwZWN0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZW5kZXJlci5yZW1vdmVTdHlsZSh0aGlzLmhvc3RFbGVtLm5hdGl2ZUVsZW1lbnQsICd3aWR0aCcpO1xyXG4gICAgdGhpcy5yZW5kZXJlci5yZW1vdmVTdHlsZSh0aGlzLmhvc3RFbGVtLm5hdGl2ZUVsZW1lbnQsICdoZWlnaHQnKTtcclxuXHJcbiAgICBsZXQgdGFyZ2V0V2lkdGg6IG51bWJlcjtcclxuICAgIGxldCB0YXJnZXRIZWlnaHQ6IG51bWJlcjtcclxuXHJcbiAgICBpZiAodGhpcy5zaXppbmdNb2RlKCkgPT09ICdtYXRjaC1wYXJlbnQnKSB7XHJcbiAgICAgIGNvbnN0IGhvc3RXaWR0aCA9IHRoaXMuaG9zdEVsZW0ubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50Lm9mZnNldFdpZHRoO1xyXG4gICAgICBjb25zdCBob3N0SGVpZ2h0ID0gdGhpcy5ob3N0RWxlbS5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xyXG4gICAgICBjb25zdCBob3N0QXNwZWN0UmF0aW8gPSBob3N0V2lkdGggLyBob3N0SGVpZ2h0O1xyXG5cclxuICAgICAgaWYgKGhvc3RBc3BlY3RSYXRpbyA+PSB0aGlzLnRhcmdldFJhdGlvKCkpIHtcclxuICAgICAgICAvLyB1c2UgZnVsbCBoZWlnaHQgYXMgYmFzZVxyXG4gICAgICAgIHRhcmdldEhlaWdodCA9IGhvc3RIZWlnaHQ7XHJcbiAgICAgICAgdGFyZ2V0V2lkdGggPSB0YXJnZXRIZWlnaHQgKiB0aGlzLnRhcmdldFJhdGlvKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gdXNlIGZ1bGwgd2lkdGggYXMgYmFzZVxyXG4gICAgICAgIHRhcmdldFdpZHRoID0gaG9zdFdpZHRoO1xyXG4gICAgICAgIHRhcmdldEhlaWdodCA9IHRhcmdldFdpZHRoICogKDEgLyB0aGlzLnRhcmdldFJhdGlvKCkpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBBZGQgKzEgdG8gdGhlIGRpbWVuc2lvbnMgYmVjYXVzZSBkZWNpbWFscyBnZXQgcm91bmRlZFxyXG4gICAgICBjb25zdCBjb250ZW50V2lkdGggPSB0aGlzLmhvc3RFbGVtLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggKyAxO1xyXG4gICAgICBjb25zdCBjb250ZW50SGVpZ2h0ID0gdGhpcy5ob3N0RWxlbS5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCArIDE7XHJcblxyXG4gICAgICBjb25zdCBjdXJyZW50UmF0aW8gPSBjb250ZW50V2lkdGggLyBjb250ZW50SGVpZ2h0O1xyXG4gICAgICBpZiAoY3VycmVudFJhdGlvID49IHRoaXMudGFyZ2V0UmF0aW8oKSkge1xyXG4gICAgICAgIHRhcmdldFdpZHRoID0gY29udGVudFdpZHRoO1xyXG4gICAgICAgIHRhcmdldEhlaWdodCA9IHRhcmdldFdpZHRoICogKDEgLyB0aGlzLnRhcmdldFJhdGlvKCkpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRhcmdldEhlaWdodCA9IGNvbnRlbnRIZWlnaHQ7XHJcbiAgICAgICAgdGFyZ2V0V2lkdGggPSB0YXJnZXRIZWlnaHQgKiB0aGlzLnRhcmdldFJhdGlvKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIFNldCBjYWxjdWxhdGVkIGRpbWVuc2lvbnNcclxuICAgIHRoaXMuc2V0QWNJbm5lcldpZHRoKHRhcmdldFdpZHRoKTtcclxuICAgIHRoaXMuc2V0QWNJbm5lckhlaWdodCh0YXJnZXRIZWlnaHQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRBY0lubmVyV2lkdGgod2lkdGg6IG51bWJlcikge1xyXG4gICAgdGhpcy5jb250YWluZXJXaWR0aENoYW5nZWQuZW1pdCh3aWR0aCk7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaG9zdEVsZW0ubmF0aXZlRWxlbWVudCwgJ3dpZHRoJywgYCR7d2lkdGh9cHhgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0QWNJbm5lckhlaWdodChoZWlnaHQ6IG51bWJlcikge1xyXG4gICAgdGhpcy5jb250YWluZXJIZWlnaHRDaGFuZ2VkLmVtaXQoaGVpZ2h0KTtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5ob3N0RWxlbS5uYXRpdmVFbGVtZW50LCAnaGVpZ2h0JywgYCR7aGVpZ2h0fXB4YCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1hc3BlY3QtcmF0aW8tY29udGFpbmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWFzcGVjdC1yYXRpby1jb250YWluZXIvc3JjL2FuZ3VsYXItYXNwZWN0LXJhdGlvLWNvbnRhaW5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
package/index.d.ts CHANGED
@@ -1 +1,25 @@
1
- export * from './lib/aspect-ratio-container';
1
+ import * as _angular_core from '@angular/core';
2
+ import { AfterViewInit, OnDestroy } from '@angular/core';
3
+
4
+ type SizingMode = 'fit-content' | 'match-parent';
5
+
6
+ declare class NgAspectRatioDirective implements AfterViewInit, OnDestroy {
7
+ private readonly renderer;
8
+ private readonly hostElem;
9
+ private readonly observer;
10
+ ngAspectRatio: _angular_core.InputSignal<number>;
11
+ sizingMode: _angular_core.InputSignal<SizingMode>;
12
+ containerWidthChanged: _angular_core.OutputEmitterRef<number>;
13
+ containerHeightChanged: _angular_core.OutputEmitterRef<number>;
14
+ private readonly targetRatio;
15
+ constructor();
16
+ ngAfterViewInit(): void;
17
+ ngOnDestroy(): void;
18
+ calculateAndSetAspect(): void;
19
+ private setAcInnerWidth;
20
+ private setAcInnerHeight;
21
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgAspectRatioDirective, never>;
22
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NgAspectRatioDirective, "[ngAspectRatio]", never, { "ngAspectRatio": { "alias": "ngAspectRatio"; "required": true; "isSignal": true; }; "sizingMode": { "alias": "sizingMode"; "required": false; "isSignal": true; }; }, { "containerWidthChanged": "containerWidthChanged"; "containerHeightChanged": "containerHeightChanged"; }, never, never, true, never>;
23
+ }
24
+
25
+ export { NgAspectRatioDirective };
package/package.json CHANGED
@@ -1,13 +1,14 @@
1
1
  {
2
2
  "name": "angular-aspect-ratio-container",
3
- "version": "19.0.3",
3
+ "version": "20.0.0",
4
+ "license": "MIT",
4
5
  "repository": {
5
6
  "type": "git",
6
7
  "url": "https://github.com/hansireit/angular-lib",
7
8
  "directory": "libs/angular-aspect-ratio-container"
8
9
  },
9
10
  "peerDependencies": {
10
- "@angular/core": "^19.0.0"
11
+ "@angular/core": "^20.0.0"
11
12
  },
12
13
  "sideEffects": false,
13
14
  "module": "fesm2022/angular-aspect-ratio-container.mjs",
@@ -1 +0,0 @@
1
- export { NgAspectRatioDirective } from './ng-aspect-ratio.directive';
@@ -1,18 +0,0 @@
1
- import { AfterViewInit, OnDestroy } from '@angular/core';
2
- import { SizingMode } from './sizing-mode';
3
- import * as i0 from "@angular/core";
4
- export declare class NgAspectRatioDirective implements AfterViewInit, OnDestroy {
5
- private readonly renderer;
6
- private readonly hostElem;
7
- private readonly observer;
8
- targetRatio: import("@angular/core").InputSignal<number>;
9
- sizingMode: import("@angular/core").InputSignal<SizingMode>;
10
- constructor();
11
- ngAfterViewInit(): void;
12
- ngOnDestroy(): void;
13
- calculateAndSetAspect(): void;
14
- private setAcInnerWidth;
15
- private setAcInnerHeight;
16
- static ɵfac: i0.ɵɵFactoryDeclaration<NgAspectRatioDirective, never>;
17
- static ɵdir: i0.ɵɵDirectiveDeclaration<NgAspectRatioDirective, "[ngAspectRatio]", never, { "targetRatio": { "alias": "ngAspectRatio"; "required": true; "isSignal": true; }; "sizingMode": { "alias": "sizingMode"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
18
- }
@@ -1 +0,0 @@
1
- export type SizingMode = 'fit-content' | 'match-parent';