@imageengine/angular
Advanced tools
@@ -273,3 +273,3 @@ (function (global, factory) { | ||
| NgxImageengineComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.1", ngImport: i0__namespace, type: NgxImageengineComponent, deps: [{ token: i0__namespace.ChangeDetectorRef }], target: i0__namespace.ɵɵFactoryTarget.Component }); | ||
| NgxImageengineComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.1", type: NgxImageengineComponent, selector: "ngx-imageengine", inputs: { directives: "directives", path: "path", host: "host", alt: "alt", wrapper_classes: "wrapper_classes", wrapper_styles: "wrapper_styles", image_classes: "image_classes", image_styles: "image_styles", responsive: "responsive", derive_size: "derive_size", lazy: "lazy", force_size_recalculation: "force_size_recalculation", device_pixel_ratio: "device_pixel_ratio", strip_from_src: "strip_from_src", debug: "debug" }, host: { listeners: { "window:resize": "onResize($event)", "window:scroll": "onScroll($event)" } }, viewQueries: [{ propertyName: "wrapper", first: true, predicate: ["wrapper"], descendants: true }], usesOnChanges: true, ngImport: i0__namespace, template: "<div #wrapper class=\"ngx-ie-image-wrapper\" [ngClass]=\"wrapper_classes\" [ngStyle]=\"wrapper_styles\"> \n <img *ngIf=\"ready\" [src]=\"final_src\" class=\"ngx-ie-image\" [ngClass]=\"image_classes\" [ngStyle]=\"image_styles\" [alt]=\"alt\" [attr.width]=\"image_width\" [attr.height]=\"image_height\" [style.object-fit]=\"image_fit\"/>\n</div>\n", styles: [".ngx-ie-image-wrapper { display: flex; flex-flow: column nowrap; justify-content: center; align-items: center; overflow: hidden; } .ngx-ie-image { object-position: center center; }"], directives: [{ type: i1__namespace.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1__namespace.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); | ||
| NgxImageengineComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.1", type: NgxImageengineComponent, selector: "ngx-imageengine", inputs: { directives: "directives", path: "path", host: "host", alt: "alt", wrapper_classes: "wrapper_classes", wrapper_styles: "wrapper_styles", image_classes: "image_classes", image_styles: "image_styles", responsive: "responsive", derive_size: "derive_size", lazy: "lazy", force_size_recalculation: "force_size_recalculation", device_pixel_ratio: "device_pixel_ratio", strip_from_src: "strip_from_src", debug: "debug" }, host: { listeners: { "window:resize": "onResize($event)", "window:scroll": "onScroll($event)" } }, viewQueries: [{ propertyName: "wrapper", first: true, predicate: ["wrapper"], descendants: true }], usesOnChanges: true, ngImport: i0__namespace, template: "<div #wrapper class=\"ngx-ie-image-wrapper\" [ngClass]=\"wrapper_classes\" [ngStyle]=\"wrapper_styles\"> \r\n <img *ngIf=\"ready\" [src]=\"final_src\" class=\"ngx-ie-image\" [ngClass]=\"image_classes\" [ngStyle]=\"image_styles\" [alt]=\"alt\" [attr.width]=\"image_width\" [attr.height]=\"image_height\" [style.object-fit]=\"image_fit\"/>\r\n</div>\r\n", styles: [".ngx-ie-image-wrapper { display: flex; flex-flow: column nowrap; justify-content: center; align-items: center; overflow: hidden; } .ngx-ie-image { object-position: center center; }"], directives: [{ type: i1__namespace.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1__namespace.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); | ||
| i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.1", ngImport: i0__namespace, type: NgxImageengineComponent, decorators: [{ | ||
@@ -276,0 +276,0 @@ type: i0.Component, |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"imageengine-angular.umd.js","sources":["../../../projects/ngx-imageengine/src/lib/ngx-imageengine.component.ts","../../../projects/ngx-imageengine/src/lib/ngx-imageengine.component.html","../../../projects/ngx-imageengine/src/lib/ngx-imageengine.module.ts","../../../projects/ngx-imageengine/src/public-api.ts","../../../projects/ngx-imageengine/src/imageengine-angular.ts"],"sourcesContent":["import {\n Component,\n OnInit,\n Input,\n ViewChild,\n AfterViewInit,\n ElementRef,\n ChangeDetectorRef,\n OnChanges,\n SimpleChanges,\n HostListener,\n} from \"@angular/core\";\n\nimport { IEDirectives, build_IE_url } from \"@imageengine/imageengine-helpers\";\n\nexport function check_if_in_viewport(\n rect: {\n bottom: number;\n right: number;\n left: number;\n top: number;\n },\n viewport: {\n width: number;\n height: number;\n }\n) {\n return (\n (rect.top > 0 || rect.bottom > 0) &&\n rect.top < viewport.height &&\n (rect.left > 0 || rect.right > 0) &&\n rect.left < viewport.width\n );\n}\n\nfunction get_highest(a: number | undefined, b: number | undefined) {\n if (a && b) {\n return a >= b ? a : b;\n } else if (a) {\n return a;\n } else {\n return b;\n }\n}\n\n@Component({\n selector: \"ngx-imageengine\",\n templateUrl: \"./ngx-imageengine.component.html\",\n styles: [\n \".ngx-ie-image-wrapper { display: flex; flex-flow: column nowrap; justify-content: center; align-items: center; overflow: hidden; } \\\n .ngx-ie-image { object-position: center center; }\",\n ],\n})\nexport class NgxImageengineComponent\n implements OnInit, AfterViewInit, OnChanges\n{\n @Input() directives: IEDirectives = {};\n\n @Input() path: string | null = null;\n @Input() host: string | null = \"\";\n\n @Input() alt: string | null = \"\";\n @Input() wrapper_classes: string[] | Set<string> | { [klass: string]: any } =\n {};\n @Input() wrapper_styles: { [klass: string]: any } | null = null;\n @Input() image_classes: string[] | Set<string> | { [klass: string]: any } =\n {};\n @Input() image_styles: { [klass: string]: any } | null = null;\n\n @Input() responsive: boolean = false;\n @Input() derive_size: boolean = false;\n @Input() lazy: boolean = true;\n\n @Input() force_size_recalculation: boolean = false;\n @Input() device_pixel_ratio: boolean = true;\n\n @Input() strip_from_src: string = \"\";\n\n @Input() debug: boolean = false;\n\n @ViewChild(\"wrapper\") wrapper!: ElementRef;\n\n final_host: string = \"\";\n final_src: string | null = null;\n\n image_width: number | undefined = undefined;\n directive_width: number | undefined = undefined;\n image_height: number | undefined = undefined;\n directive_height: number | undefined = undefined;\n\n image_fit: string = \"contain\";\n\n viewport: { width: number; height: number } = { width: 0, height: 0 };\n\n is_in_viewport: boolean = false;\n ready: boolean = false;\n\n resize_timer: number | null = null;\n scroll_timer: number | null = null;\n\n @HostListener(\"window:resize\", [\"$event\"]) onResize($event: Event): void {\n if (this.responsive) {\n if (this.resize_timer) {\n window.clearTimeout(this.resize_timer);\n }\n this.resize_timer = window.setTimeout(() => this.maybe_resize(), 250);\n }\n }\n\n @HostListener(\"window:scroll\", [\"$event\"]) onScroll($event: Event): void {\n if (this.lazy) {\n if (this.scroll_timer) {\n window.clearTimeout(this.scroll_timer);\n }\n this.scroll_timer = window.setTimeout(() => this.maybe_scrolled(), 100);\n }\n }\n\n constructor(private change_detector: ChangeDetectorRef) {}\n\n ngOnInit(): void {\n if (typeof this.path !== \"string\") {\n throw new Error(\"Valid path attribute is required\");\n }\n\n if (\n this.debug &&\n (typeof this.host !== \"string\" || this.host.trim() === \"\")\n ) {\n console.warn(\"ImageEngine host wasn't set\");\n }\n\n this.set_final_host();\n }\n\n ngAfterViewInit(): void {\n this.set_viewport();\n this.set_sizes();\n this.set_image_fit();\n this.maybe_is_in_viewport();\n this.build_source();\n this.maybe_ready();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n let is_changes =\n changes.directives ||\n changes.path ||\n changes.host ||\n changes.wrapper_classes ||\n changes.wrapper_styles ||\n changes.image_classes ||\n changes.image_styles ||\n changes.derive_size;\n\n if (is_changes && !is_changes.firstChange) {\n this.change_detector.detectChanges();\n this.set_sizes();\n this.set_final_host();\n this.set_image_fit();\n this.maybe_is_in_viewport();\n this.build_source();\n this.maybe_ready();\n }\n }\n\n set_final_host(): void {\n this.final_host = typeof this.host === \"string\" ? this.host : \"\";\n }\n\n set_image_fit(): void {\n switch (this.directives.fit) {\n case \"stretch\":\n this.image_fit = \"fill\";\n break;\n case \"cropbox\":\n this.image_fit = \"cover\";\n ``;\n break;\n case \"outside\":\n this.image_fit = \"outside\";\n break;\n default:\n this.image_fit = \"contain\";\n break;\n }\n }\n\n set_viewport(): void {\n this.viewport.width =\n window.innerWidth || document.documentElement.clientWidth;\n this.viewport.height =\n window.innerHeight || document.documentElement.clientHeight;\n }\n\n maybe_resize(): void {\n this.set_sizes();\n this.set_viewport();\n this.maybe_is_in_viewport();\n this.maybe_ready();\n }\n\n maybe_scrolled(): void {\n this.maybe_is_in_viewport();\n this.maybe_ready();\n }\n\n maybe_is_in_viewport(): void {\n this.is_in_viewport = check_if_in_viewport(\n this.wrapper.nativeElement.getBoundingClientRect(),\n this.viewport\n );\n }\n\n maybe_ready(): void {\n if (!this.ready && (!this.lazy || this.is_in_viewport)) {\n this.ready = true;\n\n // this is needed because it might not display the image even though it\n // changed and loaded\n this.wrapper.nativeElement.style.backgroundSize = \"100%\";\n }\n this.change_detector.detectChanges();\n }\n\n set_sizes(): void {\n if (this.derive_size) {\n let rect = this.wrapper.nativeElement.getBoundingClientRect();\n\n if (this.debug) {\n console.log(\n \"derive_size is true: the wrapper element BoundingClientRect is: \",\n rect\n );\n }\n\n this.set_sizes_by_fit(rect.width, rect.height);\n } else {\n if (this.directives.no_optimization) {\n this.directive_width = undefined;\n this.directive_height = undefined;\n this.image_width = undefined;\n this.image_height = undefined;\n } else {\n this.set_sizes_by_fit(this.directives.width, this.directives.height);\n }\n }\n }\n\n set_sizes_by_fit(\n width: number | undefined,\n height: number | undefined\n ): void {\n width = width ? Math.round(width) : width;\n height = height ? Math.round(height) : height;\n this.directive_width = this.force_size_recalculation\n ? width\n : get_highest(this.directive_width, width);\n this.directive_height = this.force_size_recalculation\n ? height\n : get_highest(this.directive_height, height);\n\n switch (this.directives.fit) {\n case \"box\":\n case \"letterbox\":\n if (width && height && width >= (height || 0)) {\n this.image_height = height;\n this.image_width = undefined;\n } else if (width) {\n this.image_width = width;\n this.image_height = undefined;\n }\n break;\n case \"stretch\":\n this.image_width = width;\n this.image_height = height;\n break;\n case \"outside\":\n this.image_width = width;\n this.image_height = height;\n break;\n default:\n if (width && height && width >= (height || 0)) {\n this.image_width = width;\n this.image_height = undefined;\n } else if (height) {\n this.image_height = height;\n this.image_width = undefined;\n }\n break;\n }\n }\n\n build_source(): void {\n let final_directives = { ...this.directives };\n let final_path = this.path\n ? this.path.replace(this.strip_from_src, \"\")\n : \"\";\n\n if (this.derive_size) {\n if (this.debug) {\n console.log(\n \"derive_size enabled, overriding directives width and height\"\n );\n }\n final_directives.width = this.directive_width;\n final_directives.height = this.directive_height;\n }\n\n if (this.device_pixel_ratio) {\n final_directives.width = final_directives.width\n ? final_directives.width * window.devicePixelRatio\n : final_directives.width;\n final_directives.height = final_directives.height\n ? final_directives.height * window.devicePixelRatio\n : final_directives.height;\n\n if (this.debug) {\n console.log(\n `device_pixel_ratio enabled, applied a factor of ${window.devicePixelRatio}`\n );\n }\n }\n\n if (this.debug) {\n console.log(\n `final_directives object: ${JSON.stringify(final_directives)}`\n );\n }\n\n this.final_src = build_IE_url(\n `${this.final_host}${final_path}`,\n final_directives,\n this.debug\n );\n }\n}\n","<div #wrapper class=\"ngx-ie-image-wrapper\" [ngClass]=\"wrapper_classes\" [ngStyle]=\"wrapper_styles\"> \n <img *ngIf=\"ready\" [src]=\"final_src\" class=\"ngx-ie-image\" [ngClass]=\"image_classes\" [ngStyle]=\"image_styles\" [alt]=\"alt\" [attr.width]=\"image_width\" [attr.height]=\"image_height\" [style.object-fit]=\"image_fit\"/>\n</div>\n","import { NgModule } from '@angular/core';\nimport { NgxImageengineComponent } from './ngx-imageengine.component';\nimport { BrowserModule } from \"@angular/platform-browser\";\n\n\n@NgModule({\n declarations: [\n NgxImageengineComponent\n ],\n imports: [\n\tBrowserModule\n ],\n exports: [\n NgxImageengineComponent\n ]\n})\nexport class NgxImageengineModule { }\n","/*\n * Public API Surface of ngx-imageengine\n */\n\nexport * from './lib/ngx-imageengine.component';\nexport * from './lib/ngx-imageengine.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["build_IE_url","Component","Input","ViewChild","HostListener","BrowserModule","NgModule"],"mappings":"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"} | ||
| {"version":3,"file":"imageengine-angular.umd.js","sources":["../../../projects/ngx-imageengine/src/lib/ngx-imageengine.component.ts","../../../projects/ngx-imageengine/src/lib/ngx-imageengine.component.html","../../../projects/ngx-imageengine/src/lib/ngx-imageengine.module.ts","../../../projects/ngx-imageengine/src/public-api.ts","../../../projects/ngx-imageengine/src/imageengine-angular.ts"],"sourcesContent":["import {\r\n Component,\r\n OnInit,\r\n Input,\r\n ViewChild,\r\n AfterViewInit,\r\n ElementRef,\r\n ChangeDetectorRef,\r\n OnChanges,\r\n SimpleChanges,\r\n HostListener,\r\n} from \"@angular/core\";\r\n\r\nimport { IEDirectives, build_IE_url } from \"@imageengine/imageengine-helpers\";\r\n\r\nexport function check_if_in_viewport(\r\n rect: {\r\n bottom: number;\r\n right: number;\r\n left: number;\r\n top: number;\r\n },\r\n viewport: {\r\n width: number;\r\n height: number;\r\n }\r\n) {\r\n return (\r\n (rect.top > 0 || rect.bottom > 0) &&\r\n rect.top < viewport.height &&\r\n (rect.left > 0 || rect.right > 0) &&\r\n rect.left < viewport.width\r\n );\r\n}\r\n\r\nfunction get_highest(a: number | undefined, b: number | undefined) {\r\n if (a && b) {\r\n return a >= b ? a : b;\r\n } else if (a) {\r\n return a;\r\n } else {\r\n return b;\r\n }\r\n}\r\n\r\n@Component({\r\n selector: \"ngx-imageengine\",\r\n templateUrl: \"./ngx-imageengine.component.html\",\r\n styles: [\r\n \".ngx-ie-image-wrapper { display: flex; flex-flow: column nowrap; justify-content: center; align-items: center; overflow: hidden; } \\\r\n .ngx-ie-image { object-position: center center; }\",\r\n ],\r\n})\r\nexport class NgxImageengineComponent\r\n implements OnInit, AfterViewInit, OnChanges\r\n{\r\n @Input() directives: IEDirectives = {};\r\n\r\n @Input() path: string | null = null;\r\n @Input() host: string | null = \"\";\r\n\r\n @Input() alt: string | null = \"\";\r\n @Input() wrapper_classes: string[] | Set<string> | { [klass: string]: any } =\r\n {};\r\n @Input() wrapper_styles: { [klass: string]: any } | null = null;\r\n @Input() image_classes: string[] | Set<string> | { [klass: string]: any } =\r\n {};\r\n @Input() image_styles: { [klass: string]: any } | null = null;\r\n\r\n @Input() responsive: boolean = false;\r\n @Input() derive_size: boolean = false;\r\n @Input() lazy: boolean = true;\r\n\r\n @Input() force_size_recalculation: boolean = false;\r\n @Input() device_pixel_ratio: boolean = true;\r\n\r\n @Input() strip_from_src: string = \"\";\r\n\r\n @Input() debug: boolean = false;\r\n\r\n @ViewChild(\"wrapper\") wrapper!: ElementRef;\r\n\r\n final_host: string = \"\";\r\n final_src: string | null = null;\r\n\r\n image_width: number | undefined = undefined;\r\n directive_width: number | undefined = undefined;\r\n image_height: number | undefined = undefined;\r\n directive_height: number | undefined = undefined;\r\n\r\n image_fit: string = \"contain\";\r\n\r\n viewport: { width: number; height: number } = { width: 0, height: 0 };\r\n\r\n is_in_viewport: boolean = false;\r\n ready: boolean = false;\r\n\r\n resize_timer: number | null = null;\r\n scroll_timer: number | null = null;\r\n\r\n @HostListener(\"window:resize\", [\"$event\"]) onResize($event: Event): void {\r\n if (this.responsive) {\r\n if (this.resize_timer) {\r\n window.clearTimeout(this.resize_timer);\r\n }\r\n this.resize_timer = window.setTimeout(() => this.maybe_resize(), 250);\r\n }\r\n }\r\n\r\n @HostListener(\"window:scroll\", [\"$event\"]) onScroll($event: Event): void {\r\n if (this.lazy) {\r\n if (this.scroll_timer) {\r\n window.clearTimeout(this.scroll_timer);\r\n }\r\n this.scroll_timer = window.setTimeout(() => this.maybe_scrolled(), 100);\r\n }\r\n }\r\n\r\n constructor(private change_detector: ChangeDetectorRef) {}\r\n\r\n ngOnInit(): void {\r\n if (typeof this.path !== \"string\") {\r\n throw new Error(\"Valid path attribute is required\");\r\n }\r\n\r\n if (\r\n this.debug &&\r\n (typeof this.host !== \"string\" || this.host.trim() === \"\")\r\n ) {\r\n console.warn(\"ImageEngine host wasn't set\");\r\n }\r\n\r\n this.set_final_host();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.set_viewport();\r\n this.set_sizes();\r\n this.set_image_fit();\r\n this.maybe_is_in_viewport();\r\n this.build_source();\r\n this.maybe_ready();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n let is_changes =\r\n changes.directives ||\r\n changes.path ||\r\n changes.host ||\r\n changes.wrapper_classes ||\r\n changes.wrapper_styles ||\r\n changes.image_classes ||\r\n changes.image_styles ||\r\n changes.derive_size;\r\n\r\n if (is_changes && !is_changes.firstChange) {\r\n this.change_detector.detectChanges();\r\n this.set_sizes();\r\n this.set_final_host();\r\n this.set_image_fit();\r\n this.maybe_is_in_viewport();\r\n this.build_source();\r\n this.maybe_ready();\r\n }\r\n }\r\n\r\n set_final_host(): void {\r\n this.final_host = typeof this.host === \"string\" ? this.host : \"\";\r\n }\r\n\r\n set_image_fit(): void {\r\n switch (this.directives.fit) {\r\n case \"stretch\":\r\n this.image_fit = \"fill\";\r\n break;\r\n case \"cropbox\":\r\n this.image_fit = \"cover\";\r\n ``;\r\n break;\r\n case \"outside\":\r\n this.image_fit = \"outside\";\r\n break;\r\n default:\r\n this.image_fit = \"contain\";\r\n break;\r\n }\r\n }\r\n\r\n set_viewport(): void {\r\n this.viewport.width =\r\n window.innerWidth || document.documentElement.clientWidth;\r\n this.viewport.height =\r\n window.innerHeight || document.documentElement.clientHeight;\r\n }\r\n\r\n maybe_resize(): void {\r\n this.set_sizes();\r\n this.set_viewport();\r\n this.maybe_is_in_viewport();\r\n this.maybe_ready();\r\n }\r\n\r\n maybe_scrolled(): void {\r\n this.maybe_is_in_viewport();\r\n this.maybe_ready();\r\n }\r\n\r\n maybe_is_in_viewport(): void {\r\n this.is_in_viewport = check_if_in_viewport(\r\n this.wrapper.nativeElement.getBoundingClientRect(),\r\n this.viewport\r\n );\r\n }\r\n\r\n maybe_ready(): void {\r\n if (!this.ready && (!this.lazy || this.is_in_viewport)) {\r\n this.ready = true;\r\n\r\n // this is needed because it might not display the image even though it\r\n // changed and loaded\r\n this.wrapper.nativeElement.style.backgroundSize = \"100%\";\r\n }\r\n this.change_detector.detectChanges();\r\n }\r\n\r\n set_sizes(): void {\r\n if (this.derive_size) {\r\n let rect = this.wrapper.nativeElement.getBoundingClientRect();\r\n\r\n if (this.debug) {\r\n console.log(\r\n \"derive_size is true: the wrapper element BoundingClientRect is: \",\r\n rect\r\n );\r\n }\r\n\r\n this.set_sizes_by_fit(rect.width, rect.height);\r\n } else {\r\n if (this.directives.no_optimization) {\r\n this.directive_width = undefined;\r\n this.directive_height = undefined;\r\n this.image_width = undefined;\r\n this.image_height = undefined;\r\n } else {\r\n this.set_sizes_by_fit(this.directives.width, this.directives.height);\r\n }\r\n }\r\n }\r\n\r\n set_sizes_by_fit(\r\n width: number | undefined,\r\n height: number | undefined\r\n ): void {\r\n width = width ? Math.round(width) : width;\r\n height = height ? Math.round(height) : height;\r\n this.directive_width = this.force_size_recalculation\r\n ? width\r\n : get_highest(this.directive_width, width);\r\n this.directive_height = this.force_size_recalculation\r\n ? height\r\n : get_highest(this.directive_height, height);\r\n\r\n switch (this.directives.fit) {\r\n case \"box\":\r\n case \"letterbox\":\r\n if (width && height && width >= (height || 0)) {\r\n this.image_height = height;\r\n this.image_width = undefined;\r\n } else if (width) {\r\n this.image_width = width;\r\n this.image_height = undefined;\r\n }\r\n break;\r\n case \"stretch\":\r\n this.image_width = width;\r\n this.image_height = height;\r\n break;\r\n case \"outside\":\r\n this.image_width = width;\r\n this.image_height = height;\r\n break;\r\n default:\r\n if (width && height && width >= (height || 0)) {\r\n this.image_width = width;\r\n this.image_height = undefined;\r\n } else if (height) {\r\n this.image_height = height;\r\n this.image_width = undefined;\r\n }\r\n break;\r\n }\r\n }\r\n\r\n build_source(): void {\r\n let final_directives = { ...this.directives };\r\n let final_path = this.path\r\n ? this.path.replace(this.strip_from_src, \"\")\r\n : \"\";\r\n\r\n if (this.derive_size) {\r\n if (this.debug) {\r\n console.log(\r\n \"derive_size enabled, overriding directives width and height\"\r\n );\r\n }\r\n final_directives.width = this.directive_width;\r\n final_directives.height = this.directive_height;\r\n }\r\n\r\n if (this.device_pixel_ratio) {\r\n final_directives.width = final_directives.width\r\n ? final_directives.width * window.devicePixelRatio\r\n : final_directives.width;\r\n final_directives.height = final_directives.height\r\n ? final_directives.height * window.devicePixelRatio\r\n : final_directives.height;\r\n\r\n if (this.debug) {\r\n console.log(\r\n `device_pixel_ratio enabled, applied a factor of ${window.devicePixelRatio}`\r\n );\r\n }\r\n }\r\n\r\n if (this.debug) {\r\n console.log(\r\n `final_directives object: ${JSON.stringify(final_directives)}`\r\n );\r\n }\r\n\r\n this.final_src = build_IE_url(\r\n `${this.final_host}${final_path}`,\r\n final_directives,\r\n this.debug\r\n );\r\n }\r\n}\r\n","<div #wrapper class=\"ngx-ie-image-wrapper\" [ngClass]=\"wrapper_classes\" [ngStyle]=\"wrapper_styles\"> \r\n <img *ngIf=\"ready\" [src]=\"final_src\" class=\"ngx-ie-image\" [ngClass]=\"image_classes\" [ngStyle]=\"image_styles\" [alt]=\"alt\" [attr.width]=\"image_width\" [attr.height]=\"image_height\" [style.object-fit]=\"image_fit\"/>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { NgxImageengineComponent } from './ngx-imageengine.component';\r\nimport { BrowserModule } from \"@angular/platform-browser\";\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n NgxImageengineComponent\r\n ],\r\n imports: [\r\n\tBrowserModule\r\n ],\r\n exports: [\r\n NgxImageengineComponent\r\n ]\r\n})\r\nexport class NgxImageengineModule { }\r\n","/*\r\n * Public API Surface of ngx-imageengine\r\n */\r\n\r\nexport * from './lib/ngx-imageengine.component';\r\nexport * from './lib/ngx-imageengine.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["build_IE_url","Component","Input","ViewChild","HostListener","BrowserModule","NgModule"],"mappings":"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"} |
@@ -0,0 +0,0 @@ /** |
@@ -245,3 +245,3 @@ import { Component, Input, ViewChild, HostListener, } from "@angular/core"; | ||
| NgxImageengineComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.1", ngImport: i0, type: NgxImageengineComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); | ||
| NgxImageengineComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.1", type: NgxImageengineComponent, selector: "ngx-imageengine", inputs: { directives: "directives", path: "path", host: "host", alt: "alt", wrapper_classes: "wrapper_classes", wrapper_styles: "wrapper_styles", image_classes: "image_classes", image_styles: "image_styles", responsive: "responsive", derive_size: "derive_size", lazy: "lazy", force_size_recalculation: "force_size_recalculation", device_pixel_ratio: "device_pixel_ratio", strip_from_src: "strip_from_src", debug: "debug" }, host: { listeners: { "window:resize": "onResize($event)", "window:scroll": "onScroll($event)" } }, viewQueries: [{ propertyName: "wrapper", first: true, predicate: ["wrapper"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div #wrapper class=\"ngx-ie-image-wrapper\" [ngClass]=\"wrapper_classes\" [ngStyle]=\"wrapper_styles\"> \n <img *ngIf=\"ready\" [src]=\"final_src\" class=\"ngx-ie-image\" [ngClass]=\"image_classes\" [ngStyle]=\"image_styles\" [alt]=\"alt\" [attr.width]=\"image_width\" [attr.height]=\"image_height\" [style.object-fit]=\"image_fit\"/>\n</div>\n", styles: [".ngx-ie-image-wrapper { display: flex; flex-flow: column nowrap; justify-content: center; align-items: center; overflow: hidden; } .ngx-ie-image { object-position: center center; }"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); | ||
| NgxImageengineComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.1", type: NgxImageengineComponent, selector: "ngx-imageengine", inputs: { directives: "directives", path: "path", host: "host", alt: "alt", wrapper_classes: "wrapper_classes", wrapper_styles: "wrapper_styles", image_classes: "image_classes", image_styles: "image_styles", responsive: "responsive", derive_size: "derive_size", lazy: "lazy", force_size_recalculation: "force_size_recalculation", device_pixel_ratio: "device_pixel_ratio", strip_from_src: "strip_from_src", debug: "debug" }, host: { listeners: { "window:resize": "onResize($event)", "window:scroll": "onScroll($event)" } }, viewQueries: [{ propertyName: "wrapper", first: true, predicate: ["wrapper"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div #wrapper class=\"ngx-ie-image-wrapper\" [ngClass]=\"wrapper_classes\" [ngStyle]=\"wrapper_styles\"> \r\n <img *ngIf=\"ready\" [src]=\"final_src\" class=\"ngx-ie-image\" [ngClass]=\"image_classes\" [ngStyle]=\"image_styles\" [alt]=\"alt\" [attr.width]=\"image_width\" [attr.height]=\"image_height\" [style.object-fit]=\"image_fit\"/>\r\n</div>\r\n", styles: [".ngx-ie-image-wrapper { display: flex; flex-flow: column nowrap; justify-content: center; align-items: center; overflow: hidden; } .ngx-ie-image { object-position: center center; }"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); | ||
| i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.1", ngImport: i0, type: NgxImageengineComponent, decorators: [{ | ||
@@ -297,2 +297,2 @@ type: Component, | ||
| }] } }); | ||
| //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWltYWdlZW5naW5lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1pbWFnZWVuZ2luZS9zcmMvbGliL25neC1pbWFnZWVuZ2luZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaW1hZ2VlbmdpbmUvc3JjL2xpYi9uZ3gtaW1hZ2VlbmdpbmUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxLQUFLLEVBQ0wsU0FBUyxFQU1ULFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQWdCLFlBQVksRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7QUFFOUUsTUFBTSxVQUFVLG9CQUFvQixDQUNsQyxJQUtDLEVBQ0QsUUFHQztJQUVELE9BQU8sQ0FDTCxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxHQUFHLEdBQUcsUUFBUSxDQUFDLE1BQU07UUFDMUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQzNCLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxXQUFXLENBQUMsQ0FBcUIsRUFBRSxDQUFxQjtJQUMvRCxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDVixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ3ZCO1NBQU0sSUFBSSxDQUFDLEVBQUU7UUFDWixPQUFPLENBQUMsQ0FBQztLQUNWO1NBQU07UUFDTCxPQUFPLENBQUMsQ0FBQztLQUNWO0FBQ0gsQ0FBQztB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UUFBUTtzQkFBbEQsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBU0UsUUFBUTtzQkFBbEQsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIE9uSW5pdCxcbiAgSW5wdXQsXG4gIFZpZXdDaGlsZCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgRWxlbWVudFJlZixcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgSG9zdExpc3RlbmVyLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG5pbXBvcnQgeyBJRURpcmVjdGl2ZXMsIGJ1aWxkX0lFX3VybCB9IGZyb20gXCJAaW1hZ2VlbmdpbmUvaW1hZ2VlbmdpbmUtaGVscGVyc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tfaWZfaW5fdmlld3BvcnQoXG4gIHJlY3Q6IHtcbiAgICBib3R0b206IG51bWJlcjtcbiAgICByaWdodDogbnVtYmVyO1xuICAgIGxlZnQ6IG51bWJlcjtcbiAgICB0b3A6IG51bWJlcjtcbiAgfSxcbiAgdmlld3BvcnQ6IHtcbiAgICB3aWR0aDogbnVtYmVyO1xuICAgIGhlaWdodDogbnVtYmVyO1xuICB9XG4pIHtcbiAgcmV0dXJuIChcbiAgICAocmVjdC50b3AgPiAwIHx8IHJlY3QuYm90dG9tID4gMCkgJiZcbiAgICByZWN0LnRvcCA8IHZpZXdwb3J0LmhlaWdodCAmJlxuICAgIChyZWN0LmxlZnQgPiAwIHx8IHJlY3QucmlnaHQgPiAwKSAmJlxuICAgIHJlY3QubGVmdCA8IHZpZXdwb3J0LndpZHRoXG4gICk7XG59XG5cbmZ1bmN0aW9uIGdldF9oaWdoZXN0KGE6IG51bWJlciB8IHVuZGVmaW5lZCwgYjogbnVtYmVyIHwgdW5kZWZpbmVkKSB7XG4gIGlmIChhICYmIGIpIHtcbiAgICByZXR1cm4gYSA+PSBiID8gYSA6IGI7XG4gIH0gZWxzZSBpZiAoYSkge1xuICAgIHJldHVybiBhO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBiO1xuICB9XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJuZ3gtaW1hZ2VlbmdpbmVcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9uZ3gtaW1hZ2VlbmdpbmUuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVzOiBbXG4gICAgXCIubmd4LWllLWltYWdlLXdyYXBwZXIgeyBkaXNwbGF5OiBmbGV4OyBmbGV4LWZsb3c6IGNvbHVtbiBub3dyYXA7IGp1c3RpZnktY29udGVudDogY2VudGVyOyBhbGlnbi1pdGVtczogY2VudGVyOyBvdmVyZmxvdzogaGlkZGVuOyB9IFxcXG4gICAgICAgICAubmd4LWllLWltYWdlIHsgb2JqZWN0LXBvc2l0aW9uOiBjZW50ZXIgY2VudGVyOyB9XCIsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE5neEltYWdlZW5naW5lQ29tcG9uZW50XG4gIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXNcbntcbiAgQElucHV0KCkgZGlyZWN0aXZlczogSUVEaXJlY3RpdmVzID0ge307XG5cbiAgQElucHV0KCkgcGF0aDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpIGhvc3Q6IHN0cmluZyB8IG51bGwgPSBcIlwiO1xuXG4gIEBJbnB1dCgpIGFsdDogc3RyaW5nIHwgbnVsbCA9IFwiXCI7XG4gIEBJbnB1dCgpIHdyYXBwZXJfY2xhc3Nlczogc3RyaW5nW10gfCBTZXQ8c3RyaW5nPiB8IHsgW2tsYXNzOiBzdHJpbmddOiBhbnkgfSA9XG4gICAge307XG4gIEBJbnB1dCgpIHdyYXBwZXJfc3R5bGVzOiB7IFtrbGFzczogc3RyaW5nXTogYW55IH0gfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCkgaW1hZ2VfY2xhc3Nlczogc3RyaW5nW10gfCBTZXQ8c3RyaW5nPiB8IHsgW2tsYXNzOiBzdHJpbmddOiBhbnkgfSA9XG4gICAge307XG4gIEBJbnB1dCgpIGltYWdlX3N0eWxlczogeyBba2xhc3M6IHN0cmluZ106IGFueSB9IHwgbnVsbCA9IG51bGw7XG5cbiAgQElucHV0KCkgcmVzcG9uc2l2ZTogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBkZXJpdmVfc2l6ZTogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBsYXp5OiBib29sZWFuID0gdHJ1ZTtcblxuICBASW5wdXQoKSBmb3JjZV9zaXplX3JlY2FsY3VsYXRpb246IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgZGV2aWNlX3BpeGVsX3JhdGlvOiBib29sZWFuID0gdHJ1ZTtcblxuICBASW5wdXQoKSBzdHJpcF9mcm9tX3NyYzogc3RyaW5nID0gXCJcIjtcblxuICBASW5wdXQoKSBkZWJ1ZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBWaWV3Q2hpbGQoXCJ3cmFwcGVyXCIpIHdyYXBwZXIhOiBFbGVtZW50UmVmO1xuXG4gIGZpbmFsX2hvc3Q6IHN0cmluZyA9IFwiXCI7XG4gIGZpbmFsX3NyYzogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgaW1hZ2Vfd2lkdGg6IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgZGlyZWN0aXZlX3dpZHRoOiBudW1iZXIgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gIGltYWdlX2hlaWdodDogbnVtYmVyIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICBkaXJlY3RpdmVfaGVpZ2h0OiBudW1iZXIgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG5cbiAgaW1hZ2VfZml0OiBzdHJpbmcgPSBcImNvbnRhaW5cIjtcblxuICB2aWV3cG9ydDogeyB3aWR0aDogbnVtYmVyOyBoZWlnaHQ6IG51bWJlciB9ID0geyB3aWR0aDogMCwgaGVpZ2h0OiAwIH07XG5cbiAgaXNfaW5fdmlld3BvcnQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcmVhZHk6IGJvb2xlYW4gPSBmYWxzZTtcblxuICByZXNpemVfdGltZXI6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBzY3JvbGxfdGltZXI6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gIEBIb3N0TGlzdGVuZXIoXCJ3aW5kb3c6cmVzaXplXCIsIFtcIiRldmVudFwiXSkgb25SZXNpemUoJGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlc3BvbnNpdmUpIHtcbiAgICAgIGlmICh0aGlzLnJlc2l6ZV90aW1lcikge1xuICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMucmVzaXplX3RpbWVyKTtcbiAgICAgIH1cbiAgICAgIHRoaXMucmVzaXplX3RpbWVyID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdGhpcy5tYXliZV9yZXNpemUoKSwgMjUwKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKFwid2luZG93OnNjcm9sbFwiLCBbXCIkZXZlbnRcIl0pIG9uU2Nyb2xsKCRldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5sYXp5KSB7XG4gICAgICBpZiAodGhpcy5zY3JvbGxfdGltZXIpIHtcbiAgICAgICAgd2luZG93LmNsZWFyVGltZW91dCh0aGlzLnNjcm9sbF90aW1lcik7XG4gICAgICB9XG4gICAgICB0aGlzLnNjcm9sbF90aW1lciA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHRoaXMubWF5YmVfc2Nyb2xsZWQoKSwgMTAwKTtcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNoYW5nZV9kZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLnBhdGggIT09IFwic3RyaW5nXCIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlZhbGlkIHBhdGggYXR0cmlidXRlIGlzIHJlcXVpcmVkXCIpO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIHRoaXMuZGVidWcgJiZcbiAgICAgICh0eXBlb2YgdGhpcy5ob3N0ICE9PSBcInN0cmluZ1wiIHx8IHRoaXMuaG9zdC50cmltKCkgPT09IFwiXCIpXG4gICAgKSB7XG4gICAgICBjb25zb2xlLndhcm4oXCJJbWFnZUVuZ2luZSBob3N0IHdhc24ndCBzZXRcIik7XG4gICAgfVxuXG4gICAgdGhpcy5zZXRfZmluYWxfaG9zdCgpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2V0X3ZpZXdwb3J0KCk7XG4gICAgdGhpcy5zZXRfc2l6ZXMoKTtcbiAgICB0aGlzLnNldF9pbWFnZV9maXQoKTtcbiAgICB0aGlzLm1heWJlX2lzX2luX3ZpZXdwb3J0KCk7XG4gICAgdGhpcy5idWlsZF9zb3VyY2UoKTtcbiAgICB0aGlzLm1heWJlX3JlYWR5KCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgbGV0IGlzX2NoYW5nZXMgPVxuICAgICAgY2hhbmdlcy5kaXJlY3RpdmVzIHx8XG4gICAgICBjaGFuZ2VzLnBhdGggfHxcbiAgICAgIGNoYW5nZXMuaG9zdCB8fFxuICAgICAgY2hhbmdlcy53cmFwcGVyX2NsYXNzZXMgfHxcbiAgICAgIGNoYW5nZXMud3JhcHBlcl9zdHlsZXMgfHxcbiAgICAgIGNoYW5nZXMuaW1hZ2VfY2xhc3NlcyB8fFxuICAgICAgY2hhbmdlcy5pbWFnZV9zdHlsZXMgfHxcbiAgICAgIGNoYW5nZXMuZGVyaXZlX3NpemU7XG5cbiAgICBpZiAoaXNfY2hhbmdlcyAmJiAhaXNfY2hhbmdlcy5maXJzdENoYW5nZSkge1xuICAgICAgdGhpcy5jaGFuZ2VfZGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgdGhpcy5zZXRfc2l6ZXMoKTtcbiAgICAgIHRoaXMuc2V0X2ZpbmFsX2hvc3QoKTtcbiAgICAgIHRoaXMuc2V0X2ltYWdlX2ZpdCgpO1xuICAgICAgdGhpcy5tYXliZV9pc19pbl92aWV3cG9ydCgpO1xuICAgICAgdGhpcy5idWlsZF9zb3VyY2UoKTtcbiAgICAgIHRoaXMubWF5YmVfcmVhZHkoKTtcbiAgICB9XG4gIH1cblxuICBzZXRfZmluYWxfaG9zdCgpOiB2b2lkIHtcbiAgICB0aGlzLmZpbmFsX2hvc3QgPSB0eXBlb2YgdGhpcy5ob3N0ID09PSBcInN0cmluZ1wiID8gdGhpcy5ob3N0IDogXCJcIjtcbiAgfVxuXG4gIHNldF9pbWFnZV9maXQoKTogdm9pZCB7XG4gICAgc3dpdGNoICh0aGlzLmRpcmVjdGl2ZXMuZml0KSB7XG4gICAgICBjYXNlIFwic3RyZXRjaFwiOlxuICAgICAgICB0aGlzLmltYWdlX2ZpdCA9IFwiZmlsbFwiO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJjcm9wYm94XCI6XG4gICAgICAgIHRoaXMuaW1hZ2VfZml0ID0gXCJjb3ZlclwiO1xuICAgICAgICBgYDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwib3V0c2lkZVwiOlxuICAgICAgICB0aGlzLmltYWdlX2ZpdCA9IFwib3V0c2lkZVwiO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRoaXMuaW1hZ2VfZml0ID0gXCJjb250YWluXCI7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHNldF92aWV3cG9ydCgpOiB2b2lkIHtcbiAgICB0aGlzLnZpZXdwb3J0LndpZHRoID1cbiAgICAgIHdpbmRvdy5pbm5lcldpZHRoIHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aDtcbiAgICB0aGlzLnZpZXdwb3J0LmhlaWdodCA9XG4gICAgICB3aW5kb3cuaW5uZXJIZWlnaHQgfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodDtcbiAgfVxuXG4gIG1heWJlX3Jlc2l6ZSgpOiB2b2lkIHtcbiAgICB0aGlzLnNldF9zaXplcygpO1xuICAgIHRoaXMuc2V0X3ZpZXdwb3J0KCk7XG4gICAgdGhpcy5tYXliZV9pc19pbl92aWV3cG9ydCgpO1xuICAgIHRoaXMubWF5YmVfcmVhZHkoKTtcbiAgfVxuXG4gIG1heWJlX3Njcm9sbGVkKCk6IHZvaWQge1xuICAgIHRoaXMubWF5YmVfaXNfaW5fdmlld3BvcnQoKTtcbiAgICB0aGlzLm1heWJlX3JlYWR5KCk7XG4gIH1cblxuICBtYXliZV9pc19pbl92aWV3cG9ydCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzX2luX3ZpZXdwb3J0ID0gY2hlY2tfaWZfaW5fdmlld3BvcnQoXG4gICAgICB0aGlzLndyYXBwZXIubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxcbiAgICAgIHRoaXMudmlld3BvcnRcbiAgICApO1xuICB9XG5cbiAgbWF5YmVfcmVhZHkoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnJlYWR5ICYmICghdGhpcy5sYXp5IHx8IHRoaXMuaXNfaW5fdmlld3BvcnQpKSB7XG4gICAgICB0aGlzLnJlYWR5ID0gdHJ1ZTtcblxuICAgICAgLy8gdGhpcyBpcyBuZWVkZWQgYmVjYXVzZSBpdCBtaWdodCBub3QgZGlzcGxheSB0aGUgaW1hZ2UgZXZlbiB0aG91Z2ggaXRcbiAgICAgIC8vIGNoYW5nZWQgYW5kIGxvYWRlZFxuICAgICAgdGhpcy53cmFwcGVyLm5hdGl2ZUVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZFNpemUgPSBcIjEwMCVcIjtcbiAgICB9XG4gICAgdGhpcy5jaGFuZ2VfZGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgc2V0X3NpemVzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRlcml2ZV9zaXplKSB7XG4gICAgICBsZXQgcmVjdCA9IHRoaXMud3JhcHBlci5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICBpZiAodGhpcy5kZWJ1Zykge1xuICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICBcImRlcml2ZV9zaXplIGlzIHRydWU6IHRoZSB3cmFwcGVyIGVsZW1lbnQgQm91bmRpbmdDbGllbnRSZWN0IGlzOiBcIixcbiAgICAgICAgICByZWN0XG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc2V0X3NpemVzX2J5X2ZpdChyZWN0LndpZHRoLCByZWN0LmhlaWdodCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLmRpcmVjdGl2ZXMubm9fb3B0aW1pemF0aW9uKSB7XG4gICAgICAgIHRoaXMuZGlyZWN0aXZlX3dpZHRoID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmRpcmVjdGl2ZV9oZWlnaHQgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuaW1hZ2Vfd2lkdGggPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuaW1hZ2VfaGVpZ2h0ID0gdW5kZWZpbmVkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZXRfc2l6ZXNfYnlfZml0KHRoaXMuZGlyZWN0aXZlcy53aWR0aCwgdGhpcy5kaXJlY3RpdmVzLmhlaWdodCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2V0X3NpemVzX2J5X2ZpdChcbiAgICB3aWR0aDogbnVtYmVyIHwgdW5kZWZpbmVkLFxuICAgIGhlaWdodDogbnVtYmVyIHwgdW5kZWZpbmVkXG4gICk6IHZvaWQge1xuICAgIHdpZHRoID0gd2lkdGggPyBNYXRoLnJvdW5kKHdpZHRoKSA6IHdpZHRoO1xuICAgIGhlaWdodCA9IGhlaWdodCA/IE1hdGgucm91bmQoaGVpZ2h0KSA6IGhlaWdodDtcbiAgICB0aGlzLmRpcmVjdGl2ZV93aWR0aCA9IHRoaXMuZm9yY2Vfc2l6ZV9yZWNhbGN1bGF0aW9uXG4gICAgICA/IHdpZHRoXG4gICAgICA6IGdldF9oaWdoZXN0KHRoaXMuZGlyZWN0aXZlX3dpZHRoLCB3aWR0aCk7XG4gICAgdGhpcy5kaXJlY3RpdmVfaGVpZ2h0ID0gdGhpcy5mb3JjZV9zaXplX3JlY2FsY3VsYXRpb25cbiAgICAgID8gaGVpZ2h0XG4gICAgICA6IGdldF9oaWdoZXN0KHRoaXMuZGlyZWN0aXZlX2hlaWdodCwgaGVpZ2h0KTtcblxuICAgIHN3aXRjaCAodGhpcy5kaXJlY3RpdmVzLmZpdCkge1xuICAgICAgY2FzZSBcImJveFwiOlxuICAgICAgY2FzZSBcImxldHRlcmJveFwiOlxuICAgICAgICBpZiAod2lkdGggJiYgaGVpZ2h0ICYmIHdpZHRoID49IChoZWlnaHQgfHwgMCkpIHtcbiAgICAgICAgICB0aGlzLmltYWdlX2hlaWdodCA9IGhlaWdodDtcbiAgICAgICAgICB0aGlzLmltYWdlX3dpZHRoID0gdW5kZWZpbmVkO1xuICAgICAgICB9IGVsc2UgaWYgKHdpZHRoKSB7XG4gICAgICAgICAgdGhpcy5pbWFnZV93aWR0aCA9IHdpZHRoO1xuICAgICAgICAgIHRoaXMuaW1hZ2VfaGVpZ2h0ID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcInN0cmV0Y2hcIjpcbiAgICAgICAgdGhpcy5pbWFnZV93aWR0aCA9IHdpZHRoO1xuICAgICAgICB0aGlzLmltYWdlX2hlaWdodCA9IGhlaWdodDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwib3V0c2lkZVwiOlxuICAgICAgICB0aGlzLmltYWdlX3dpZHRoID0gd2lkdGg7XG4gICAgICAgIHRoaXMuaW1hZ2VfaGVpZ2h0ID0gaGVpZ2h0O1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmICh3aWR0aCAmJiBoZWlnaHQgJiYgd2lkdGggPj0gKGhlaWdodCB8fCAwKSkge1xuICAgICAgICAgIHRoaXMuaW1hZ2Vfd2lkdGggPSB3aWR0aDtcbiAgICAgICAgICB0aGlzLmltYWdlX2hlaWdodCA9IHVuZGVmaW5lZDtcbiAgICAgICAgfSBlbHNlIGlmIChoZWlnaHQpIHtcbiAgICAgICAgICB0aGlzLmltYWdlX2hlaWdodCA9IGhlaWdodDtcbiAgICAgICAgICB0aGlzLmltYWdlX3dpZHRoID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGJ1aWxkX3NvdXJjZSgpOiB2b2lkIHtcbiAgICBsZXQgZmluYWxfZGlyZWN0aXZlcyA9IHsgLi4udGhpcy5kaXJlY3RpdmVzIH07XG4gICAgbGV0IGZpbmFsX3BhdGggPSB0aGlzLnBhdGhcbiAgICAgID8gdGhpcy5wYXRoLnJlcGxhY2UodGhpcy5zdHJpcF9mcm9tX3NyYywgXCJcIilcbiAgICAgIDogXCJcIjtcblxuICAgIGlmICh0aGlzLmRlcml2ZV9zaXplKSB7XG4gICAgICBpZiAodGhpcy5kZWJ1Zykge1xuICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICBcImRlcml2ZV9zaXplIGVuYWJsZWQsIG92ZXJyaWRpbmcgZGlyZWN0aXZlcyB3aWR0aCBhbmQgaGVpZ2h0XCJcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGZpbmFsX2RpcmVjdGl2ZXMud2lkdGggPSB0aGlzLmRpcmVjdGl2ZV93aWR0aDtcbiAgICAgIGZpbmFsX2RpcmVjdGl2ZXMuaGVpZ2h0ID0gdGhpcy5kaXJlY3RpdmVfaGVpZ2h0O1xuICAgIH1cblxuICAgIGlmICh0aGlzLmRldmljZV9waXhlbF9yYXRpbykge1xuICAgICAgZmluYWxfZGlyZWN0aXZlcy53aWR0aCA9IGZpbmFsX2RpcmVjdGl2ZXMud2lkdGhcbiAgICAgICAgPyBmaW5hbF9kaXJlY3RpdmVzLndpZHRoICogd2luZG93LmRldmljZVBpeGVsUmF0aW9cbiAgICAgICAgOiBmaW5hbF9kaXJlY3RpdmVzLndpZHRoO1xuICAgICAgZmluYWxfZGlyZWN0aXZlcy5oZWlnaHQgPSBmaW5hbF9kaXJlY3RpdmVzLmhlaWdodFxuICAgICAgICA/IGZpbmFsX2RpcmVjdGl2ZXMuaGVpZ2h0ICogd2luZG93LmRldmljZVBpeGVsUmF0aW9cbiAgICAgICAgOiBmaW5hbF9kaXJlY3RpdmVzLmhlaWdodDtcblxuICAgICAgaWYgKHRoaXMuZGVidWcpIHtcbiAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgYGRldmljZV9waXhlbF9yYXRpbyBlbmFibGVkLCBhcHBsaWVkIGEgZmFjdG9yIG9mICR7d2luZG93LmRldmljZVBpeGVsUmF0aW99YFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLmRlYnVnKSB7XG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgYGZpbmFsX2RpcmVjdGl2ZXMgb2JqZWN0OiAke0pTT04uc3RyaW5naWZ5KGZpbmFsX2RpcmVjdGl2ZXMpfWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5maW5hbF9zcmMgPSBidWlsZF9JRV91cmwoXG4gICAgICBgJHt0aGlzLmZpbmFsX2hvc3R9JHtmaW5hbF9wYXRofWAsXG4gICAgICBmaW5hbF9kaXJlY3RpdmVzLFxuICAgICAgdGhpcy5kZWJ1Z1xuICAgICk7XG4gIH1cbn1cbiIsIjxkaXYgI3dyYXBwZXIgY2xhc3M9XCJuZ3gtaWUtaW1hZ2Utd3JhcHBlclwiIFtuZ0NsYXNzXT1cIndyYXBwZXJfY2xhc3Nlc1wiIFtuZ1N0eWxlXT1cIndyYXBwZXJfc3R5bGVzXCI+ICBcbiAgPGltZyAqbmdJZj1cInJlYWR5XCIgW3NyY109XCJmaW5hbF9zcmNcIiBjbGFzcz1cIm5neC1pZS1pbWFnZVwiIFtuZ0NsYXNzXT1cImltYWdlX2NsYXNzZXNcIiBbbmdTdHlsZV09XCJpbWFnZV9zdHlsZXNcIiBbYWx0XT1cImFsdFwiIFthdHRyLndpZHRoXT1cImltYWdlX3dpZHRoXCIgW2F0dHIuaGVpZ2h0XT1cImltYWdlX2hlaWdodFwiIFtzdHlsZS5vYmplY3QtZml0XT1cImltYWdlX2ZpdFwiLz5cbjwvZGl2PlxuIl19 | ||
| //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWltYWdlZW5naW5lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1pbWFnZWVuZ2luZS9zcmMvbGliL25neC1pbWFnZWVuZ2luZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaW1hZ2VlbmdpbmUvc3JjL2xpYi9uZ3gtaW1hZ2VlbmdpbmUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxLQUFLLEVBQ0wsU0FBUyxFQU1ULFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQWdCLFlBQVksRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7QUFFOUUsTUFBTSxVQUFVLG9CQUFvQixDQUNsQyxJQUtDLEVBQ0QsUUFHQztJQUVELE9BQU8sQ0FDTCxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxHQUFHLEdBQUcsUUFBUSxDQUFDLE1BQU07UUFDMUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQzNCLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxXQUFXLENBQUMsQ0FBcUIsRUFBRSxDQUFxQjtJQUMvRCxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDVixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ3ZCO1NBQU0sSUFBSSxDQUFDLEVBQUU7UUFDWixPQUFPLENBQUMsQ0FBQztLQUNWO1NBQU07UUFDTCxPQUFPLENBQUMsQ0FBQztLQUNWO0FBQ0gsQ0FBQztB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UUFBUTtzQkFBbEQsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBU0UsUUFBUTtzQkFBbEQsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBPbkluaXQsXHJcbiAgSW5wdXQsXHJcbiAgVmlld0NoaWxkLFxyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgRWxlbWVudFJlZixcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBPbkNoYW5nZXMsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBIb3N0TGlzdGVuZXIsXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbmltcG9ydCB7IElFRGlyZWN0aXZlcywgYnVpbGRfSUVfdXJsIH0gZnJvbSBcIkBpbWFnZWVuZ2luZS9pbWFnZWVuZ2luZS1oZWxwZXJzXCI7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tfaWZfaW5fdmlld3BvcnQoXHJcbiAgcmVjdDoge1xyXG4gICAgYm90dG9tOiBudW1iZXI7XHJcbiAgICByaWdodDogbnVtYmVyO1xyXG4gICAgbGVmdDogbnVtYmVyO1xyXG4gICAgdG9wOiBudW1iZXI7XHJcbiAgfSxcclxuICB2aWV3cG9ydDoge1xyXG4gICAgd2lkdGg6IG51bWJlcjtcclxuICAgIGhlaWdodDogbnVtYmVyO1xyXG4gIH1cclxuKSB7XHJcbiAgcmV0dXJuIChcclxuICAgIChyZWN0LnRvcCA+IDAgfHwgcmVjdC5ib3R0b20gPiAwKSAmJlxyXG4gICAgcmVjdC50b3AgPCB2aWV3cG9ydC5oZWlnaHQgJiZcclxuICAgIChyZWN0LmxlZnQgPiAwIHx8IHJlY3QucmlnaHQgPiAwKSAmJlxyXG4gICAgcmVjdC5sZWZ0IDwgdmlld3BvcnQud2lkdGhcclxuICApO1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRfaGlnaGVzdChhOiBudW1iZXIgfCB1bmRlZmluZWQsIGI6IG51bWJlciB8IHVuZGVmaW5lZCkge1xyXG4gIGlmIChhICYmIGIpIHtcclxuICAgIHJldHVybiBhID49IGIgPyBhIDogYjtcclxuICB9IGVsc2UgaWYgKGEpIHtcclxuICAgIHJldHVybiBhO1xyXG4gIH0gZWxzZSB7XHJcbiAgICByZXR1cm4gYjtcclxuICB9XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcIm5neC1pbWFnZWVuZ2luZVwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vbmd4LWltYWdlZW5naW5lLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVzOiBbXHJcbiAgICBcIi5uZ3gtaWUtaW1hZ2Utd3JhcHBlciB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtZmxvdzogY29sdW1uIG5vd3JhcDsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IG92ZXJmbG93OiBoaWRkZW47IH0gXFxcclxuICAgICAgICAgLm5neC1pZS1pbWFnZSB7IG9iamVjdC1wb3NpdGlvbjogY2VudGVyIGNlbnRlcjsgfVwiLFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ3hJbWFnZWVuZ2luZUNvbXBvbmVudFxyXG4gIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXNcclxue1xyXG4gIEBJbnB1dCgpIGRpcmVjdGl2ZXM6IElFRGlyZWN0aXZlcyA9IHt9O1xyXG5cclxuICBASW5wdXQoKSBwYXRoOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICBASW5wdXQoKSBob3N0OiBzdHJpbmcgfCBudWxsID0gXCJcIjtcclxuXHJcbiAgQElucHV0KCkgYWx0OiBzdHJpbmcgfCBudWxsID0gXCJcIjtcclxuICBASW5wdXQoKSB3cmFwcGVyX2NsYXNzZXM6IHN0cmluZ1tdIHwgU2V0PHN0cmluZz4gfCB7IFtrbGFzczogc3RyaW5nXTogYW55IH0gPVxyXG4gICAge307XHJcbiAgQElucHV0KCkgd3JhcHBlcl9zdHlsZXM6IHsgW2tsYXNzOiBzdHJpbmddOiBhbnkgfSB8IG51bGwgPSBudWxsO1xyXG4gIEBJbnB1dCgpIGltYWdlX2NsYXNzZXM6IHN0cmluZ1tdIHwgU2V0PHN0cmluZz4gfCB7IFtrbGFzczogc3RyaW5nXTogYW55IH0gPVxyXG4gICAge307XHJcbiAgQElucHV0KCkgaW1hZ2Vfc3R5bGVzOiB7IFtrbGFzczogc3RyaW5nXTogYW55IH0gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgQElucHV0KCkgcmVzcG9uc2l2ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGRlcml2ZV9zaXplOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgbGF6eTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpIGZvcmNlX3NpemVfcmVjYWxjdWxhdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGRldmljZV9waXhlbF9yYXRpbzogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpIHN0cmlwX2Zyb21fc3JjOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICBASW5wdXQoKSBkZWJ1ZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBAVmlld0NoaWxkKFwid3JhcHBlclwiKSB3cmFwcGVyITogRWxlbWVudFJlZjtcclxuXHJcbiAgZmluYWxfaG9zdDogc3RyaW5nID0gXCJcIjtcclxuICBmaW5hbF9zcmM6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cclxuICBpbWFnZV93aWR0aDogbnVtYmVyIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xyXG4gIGRpcmVjdGl2ZV93aWR0aDogbnVtYmVyIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xyXG4gIGltYWdlX2hlaWdodDogbnVtYmVyIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xyXG4gIGRpcmVjdGl2ZV9oZWlnaHQ6IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcclxuXHJcbiAgaW1hZ2VfZml0OiBzdHJpbmcgPSBcImNvbnRhaW5cIjtcclxuXHJcbiAgdmlld3BvcnQ6IHsgd2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXIgfSA9IHsgd2lkdGg6IDAsIGhlaWdodDogMCB9O1xyXG5cclxuICBpc19pbl92aWV3cG9ydDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHJlYWR5OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHJlc2l6ZV90aW1lcjogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgc2Nyb2xsX3RpbWVyOiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgQEhvc3RMaXN0ZW5lcihcIndpbmRvdzpyZXNpemVcIiwgW1wiJGV2ZW50XCJdKSBvblJlc2l6ZSgkZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5yZXNwb25zaXZlKSB7XHJcbiAgICAgIGlmICh0aGlzLnJlc2l6ZV90aW1lcikge1xyXG4gICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGhpcy5yZXNpemVfdGltZXIpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucmVzaXplX3RpbWVyID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdGhpcy5tYXliZV9yZXNpemUoKSwgMjUwKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoXCJ3aW5kb3c6c2Nyb2xsXCIsIFtcIiRldmVudFwiXSkgb25TY3JvbGwoJGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMubGF6eSkge1xyXG4gICAgICBpZiAodGhpcy5zY3JvbGxfdGltZXIpIHtcclxuICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMuc2Nyb2xsX3RpbWVyKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNjcm9sbF90aW1lciA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHRoaXMubWF5YmVfc2Nyb2xsZWQoKSwgMTAwKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2hhbmdlX2RldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZikge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodHlwZW9mIHRoaXMucGF0aCAhPT0gXCJzdHJpbmdcIikge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJWYWxpZCBwYXRoIGF0dHJpYnV0ZSBpcyByZXF1aXJlZFwiKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuZGVidWcgJiZcclxuICAgICAgKHR5cGVvZiB0aGlzLmhvc3QgIT09IFwic3RyaW5nXCIgfHwgdGhpcy5ob3N0LnRyaW0oKSA9PT0gXCJcIilcclxuICAgICkge1xyXG4gICAgICBjb25zb2xlLndhcm4oXCJJbWFnZUVuZ2luZSBob3N0IHdhc24ndCBzZXRcIik7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZXRfZmluYWxfaG9zdCgpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZXRfdmlld3BvcnQoKTtcclxuICAgIHRoaXMuc2V0X3NpemVzKCk7XHJcbiAgICB0aGlzLnNldF9pbWFnZV9maXQoKTtcclxuICAgIHRoaXMubWF5YmVfaXNfaW5fdmlld3BvcnQoKTtcclxuICAgIHRoaXMuYnVpbGRfc291cmNlKCk7XHJcbiAgICB0aGlzLm1heWJlX3JlYWR5KCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBsZXQgaXNfY2hhbmdlcyA9XHJcbiAgICAgIGNoYW5nZXMuZGlyZWN0aXZlcyB8fFxyXG4gICAgICBjaGFuZ2VzLnBhdGggfHxcclxuICAgICAgY2hhbmdlcy5ob3N0IHx8XHJcbiAgICAgIGNoYW5nZXMud3JhcHBlcl9jbGFzc2VzIHx8XHJcbiAgICAgIGNoYW5nZXMud3JhcHBlcl9zdHlsZXMgfHxcclxuICAgICAgY2hhbmdlcy5pbWFnZV9jbGFzc2VzIHx8XHJcbiAgICAgIGNoYW5nZXMuaW1hZ2Vfc3R5bGVzIHx8XHJcbiAgICAgIGNoYW5nZXMuZGVyaXZlX3NpemU7XHJcblxyXG4gICAgaWYgKGlzX2NoYW5nZXMgJiYgIWlzX2NoYW5nZXMuZmlyc3RDaGFuZ2UpIHtcclxuICAgICAgdGhpcy5jaGFuZ2VfZGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB0aGlzLnNldF9zaXplcygpO1xyXG4gICAgICB0aGlzLnNldF9maW5hbF9ob3N0KCk7XHJcbiAgICAgIHRoaXMuc2V0X2ltYWdlX2ZpdCgpO1xyXG4gICAgICB0aGlzLm1heWJlX2lzX2luX3ZpZXdwb3J0KCk7XHJcbiAgICAgIHRoaXMuYnVpbGRfc291cmNlKCk7XHJcbiAgICAgIHRoaXMubWF5YmVfcmVhZHkoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldF9maW5hbF9ob3N0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5maW5hbF9ob3N0ID0gdHlwZW9mIHRoaXMuaG9zdCA9PT0gXCJzdHJpbmdcIiA/IHRoaXMuaG9zdCA6IFwiXCI7XHJcbiAgfVxyXG5cclxuICBzZXRfaW1hZ2VfZml0KCk6IHZvaWQge1xyXG4gICAgc3dpdGNoICh0aGlzLmRpcmVjdGl2ZXMuZml0KSB7XHJcbiAgICAgIGNhc2UgXCJzdHJldGNoXCI6XHJcbiAgICAgICAgdGhpcy5pbWFnZV9maXQgPSBcImZpbGxcIjtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcImNyb3Bib3hcIjpcclxuICAgICAgICB0aGlzLmltYWdlX2ZpdCA9IFwiY292ZXJcIjtcclxuICAgICAgICBgYDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcIm91dHNpZGVcIjpcclxuICAgICAgICB0aGlzLmltYWdlX2ZpdCA9IFwib3V0c2lkZVwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHRoaXMuaW1hZ2VfZml0ID0gXCJjb250YWluXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRfdmlld3BvcnQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnZpZXdwb3J0LndpZHRoID1cclxuICAgICAgd2luZG93LmlubmVyV2lkdGggfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoO1xyXG4gICAgdGhpcy52aWV3cG9ydC5oZWlnaHQgPVxyXG4gICAgICB3aW5kb3cuaW5uZXJIZWlnaHQgfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodDtcclxuICB9XHJcblxyXG4gIG1heWJlX3Jlc2l6ZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2V0X3NpemVzKCk7XHJcbiAgICB0aGlzLnNldF92aWV3cG9ydCgpO1xyXG4gICAgdGhpcy5tYXliZV9pc19pbl92aWV3cG9ydCgpO1xyXG4gICAgdGhpcy5tYXliZV9yZWFkeSgpO1xyXG4gIH1cclxuXHJcbiAgbWF5YmVfc2Nyb2xsZWQoKTogdm9pZCB7XHJcbiAgICB0aGlzLm1heWJlX2lzX2luX3ZpZXdwb3J0KCk7XHJcbiAgICB0aGlzLm1heWJlX3JlYWR5KCk7XHJcbiAgfVxyXG5cclxuICBtYXliZV9pc19pbl92aWV3cG9ydCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaXNfaW5fdmlld3BvcnQgPSBjaGVja19pZl9pbl92aWV3cG9ydChcclxuICAgICAgdGhpcy53cmFwcGVyLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksXHJcbiAgICAgIHRoaXMudmlld3BvcnRcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBtYXliZV9yZWFkeSgpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5yZWFkeSAmJiAoIXRoaXMubGF6eSB8fCB0aGlzLmlzX2luX3ZpZXdwb3J0KSkge1xyXG4gICAgICB0aGlzLnJlYWR5ID0gdHJ1ZTtcclxuXHJcbiAgICAgIC8vIHRoaXMgaXMgbmVlZGVkIGJlY2F1c2UgaXQgbWlnaHQgbm90IGRpc3BsYXkgdGhlIGltYWdlIGV2ZW4gdGhvdWdoIGl0XHJcbiAgICAgIC8vIGNoYW5nZWQgYW5kIGxvYWRlZFxyXG4gICAgICB0aGlzLndyYXBwZXIubmF0aXZlRWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kU2l6ZSA9IFwiMTAwJVwiO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jaGFuZ2VfZGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgc2V0X3NpemVzKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZGVyaXZlX3NpemUpIHtcclxuICAgICAgbGV0IHJlY3QgPSB0aGlzLndyYXBwZXIubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuXHJcbiAgICAgIGlmICh0aGlzLmRlYnVnKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXHJcbiAgICAgICAgICBcImRlcml2ZV9zaXplIGlzIHRydWU6IHRoZSB3cmFwcGVyIGVsZW1lbnQgQm91bmRpbmdDbGllbnRSZWN0IGlzOiBcIixcclxuICAgICAgICAgIHJlY3RcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnNldF9zaXplc19ieV9maXQocmVjdC53aWR0aCwgcmVjdC5oZWlnaHQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuZGlyZWN0aXZlcy5ub19vcHRpbWl6YXRpb24pIHtcclxuICAgICAgICB0aGlzLmRpcmVjdGl2ZV93aWR0aCA9IHVuZGVmaW5lZDtcclxuICAgICAgICB0aGlzLmRpcmVjdGl2ZV9oZWlnaHQgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgdGhpcy5pbWFnZV93aWR0aCA9IHVuZGVmaW5lZDtcclxuICAgICAgICB0aGlzLmltYWdlX2hlaWdodCA9IHVuZGVmaW5lZDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNldF9zaXplc19ieV9maXQodGhpcy5kaXJlY3RpdmVzLndpZHRoLCB0aGlzLmRpcmVjdGl2ZXMuaGVpZ2h0KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0X3NpemVzX2J5X2ZpdChcclxuICAgIHdpZHRoOiBudW1iZXIgfCB1bmRlZmluZWQsXHJcbiAgICBoZWlnaHQ6IG51bWJlciB8IHVuZGVmaW5lZFxyXG4gICk6IHZvaWQge1xyXG4gICAgd2lkdGggPSB3aWR0aCA/IE1hdGgucm91bmQod2lkdGgpIDogd2lkdGg7XHJcbiAgICBoZWlnaHQgPSBoZWlnaHQgPyBNYXRoLnJvdW5kKGhlaWdodCkgOiBoZWlnaHQ7XHJcbiAgICB0aGlzLmRpcmVjdGl2ZV93aWR0aCA9IHRoaXMuZm9yY2Vfc2l6ZV9yZWNhbGN1bGF0aW9uXHJcbiAgICAgID8gd2lkdGhcclxuICAgICAgOiBnZXRfaGlnaGVzdCh0aGlzLmRpcmVjdGl2ZV93aWR0aCwgd2lkdGgpO1xyXG4gICAgdGhpcy5kaXJlY3RpdmVfaGVpZ2h0ID0gdGhpcy5mb3JjZV9zaXplX3JlY2FsY3VsYXRpb25cclxuICAgICAgPyBoZWlnaHRcclxuICAgICAgOiBnZXRfaGlnaGVzdCh0aGlzLmRpcmVjdGl2ZV9oZWlnaHQsIGhlaWdodCk7XHJcblxyXG4gICAgc3dpdGNoICh0aGlzLmRpcmVjdGl2ZXMuZml0KSB7XHJcbiAgICAgIGNhc2UgXCJib3hcIjpcclxuICAgICAgY2FzZSBcImxldHRlcmJveFwiOlxyXG4gICAgICAgIGlmICh3aWR0aCAmJiBoZWlnaHQgJiYgd2lkdGggPj0gKGhlaWdodCB8fCAwKSkge1xyXG4gICAgICAgICAgdGhpcy5pbWFnZV9oZWlnaHQgPSBoZWlnaHQ7XHJcbiAgICAgICAgICB0aGlzLmltYWdlX3dpZHRoID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIH0gZWxzZSBpZiAod2lkdGgpIHtcclxuICAgICAgICAgIHRoaXMuaW1hZ2Vfd2lkdGggPSB3aWR0aDtcclxuICAgICAgICAgIHRoaXMuaW1hZ2VfaGVpZ2h0ID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcInN0cmV0Y2hcIjpcclxuICAgICAgICB0aGlzLmltYWdlX3dpZHRoID0gd2lkdGg7XHJcbiAgICAgICAgdGhpcy5pbWFnZV9oZWlnaHQgPSBoZWlnaHQ7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgXCJvdXRzaWRlXCI6XHJcbiAgICAgICAgdGhpcy5pbWFnZV93aWR0aCA9IHdpZHRoO1xyXG4gICAgICAgIHRoaXMuaW1hZ2VfaGVpZ2h0ID0gaGVpZ2h0O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGlmICh3aWR0aCAmJiBoZWlnaHQgJiYgd2lkdGggPj0gKGhlaWdodCB8fCAwKSkge1xyXG4gICAgICAgICAgdGhpcy5pbWFnZV93aWR0aCA9IHdpZHRoO1xyXG4gICAgICAgICAgdGhpcy5pbWFnZV9oZWlnaHQgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgfSBlbHNlIGlmIChoZWlnaHQpIHtcclxuICAgICAgICAgIHRoaXMuaW1hZ2VfaGVpZ2h0ID0gaGVpZ2h0O1xyXG4gICAgICAgICAgdGhpcy5pbWFnZV93aWR0aCA9IHVuZGVmaW5lZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBidWlsZF9zb3VyY2UoKTogdm9pZCB7XHJcbiAgICBsZXQgZmluYWxfZGlyZWN0aXZlcyA9IHsgLi4udGhpcy5kaXJlY3RpdmVzIH07XHJcbiAgICBsZXQgZmluYWxfcGF0aCA9IHRoaXMucGF0aFxyXG4gICAgICA/IHRoaXMucGF0aC5yZXBsYWNlKHRoaXMuc3RyaXBfZnJvbV9zcmMsIFwiXCIpXHJcbiAgICAgIDogXCJcIjtcclxuXHJcbiAgICBpZiAodGhpcy5kZXJpdmVfc2l6ZSkge1xyXG4gICAgICBpZiAodGhpcy5kZWJ1Zykge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFxyXG4gICAgICAgICAgXCJkZXJpdmVfc2l6ZSBlbmFibGVkLCBvdmVycmlkaW5nIGRpcmVjdGl2ZXMgd2lkdGggYW5kIGhlaWdodFwiXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICBmaW5hbF9kaXJlY3RpdmVzLndpZHRoID0gdGhpcy5kaXJlY3RpdmVfd2lkdGg7XHJcbiAgICAgIGZpbmFsX2RpcmVjdGl2ZXMuaGVpZ2h0ID0gdGhpcy5kaXJlY3RpdmVfaGVpZ2h0O1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmRldmljZV9waXhlbF9yYXRpbykge1xyXG4gICAgICBmaW5hbF9kaXJlY3RpdmVzLndpZHRoID0gZmluYWxfZGlyZWN0aXZlcy53aWR0aFxyXG4gICAgICAgID8gZmluYWxfZGlyZWN0aXZlcy53aWR0aCAqIHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvXHJcbiAgICAgICAgOiBmaW5hbF9kaXJlY3RpdmVzLndpZHRoO1xyXG4gICAgICBmaW5hbF9kaXJlY3RpdmVzLmhlaWdodCA9IGZpbmFsX2RpcmVjdGl2ZXMuaGVpZ2h0XHJcbiAgICAgICAgPyBmaW5hbF9kaXJlY3RpdmVzLmhlaWdodCAqIHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvXHJcbiAgICAgICAgOiBmaW5hbF9kaXJlY3RpdmVzLmhlaWdodDtcclxuXHJcbiAgICAgIGlmICh0aGlzLmRlYnVnKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXHJcbiAgICAgICAgICBgZGV2aWNlX3BpeGVsX3JhdGlvIGVuYWJsZWQsIGFwcGxpZWQgYSBmYWN0b3Igb2YgJHt3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpb31gXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmRlYnVnKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFxyXG4gICAgICAgIGBmaW5hbF9kaXJlY3RpdmVzIG9iamVjdDogJHtKU09OLnN0cmluZ2lmeShmaW5hbF9kaXJlY3RpdmVzKX1gXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5maW5hbF9zcmMgPSBidWlsZF9JRV91cmwoXHJcbiAgICAgIGAke3RoaXMuZmluYWxfaG9zdH0ke2ZpbmFsX3BhdGh9YCxcclxuICAgICAgZmluYWxfZGlyZWN0aXZlcyxcclxuICAgICAgdGhpcy5kZWJ1Z1xyXG4gICAgKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiAjd3JhcHBlciBjbGFzcz1cIm5neC1pZS1pbWFnZS13cmFwcGVyXCIgW25nQ2xhc3NdPVwid3JhcHBlcl9jbGFzc2VzXCIgW25nU3R5bGVdPVwid3JhcHBlcl9zdHlsZXNcIj4gIFxyXG4gIDxpbWcgKm5nSWY9XCJyZWFkeVwiIFtzcmNdPVwiZmluYWxfc3JjXCIgY2xhc3M9XCJuZ3gtaWUtaW1hZ2VcIiBbbmdDbGFzc109XCJpbWFnZV9jbGFzc2VzXCIgW25nU3R5bGVdPVwiaW1hZ2Vfc3R5bGVzXCIgW2FsdF09XCJhbHRcIiBbYXR0ci53aWR0aF09XCJpbWFnZV93aWR0aFwiIFthdHRyLmhlaWdodF09XCJpbWFnZV9oZWlnaHRcIiBbc3R5bGUub2JqZWN0LWZpdF09XCJpbWFnZV9maXRcIi8+XHJcbjwvZGl2PlxyXG4iXX0= |
@@ -26,2 +26,2 @@ import { NgModule } from '@angular/core'; | ||
| }] }); | ||
| //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWltYWdlZW5naW5lLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1pbWFnZWVuZ2luZS9zcmMvbGliL25neC1pbWFnZWVuZ2luZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7O0FBYzFELE1BQU0sT0FBTyxvQkFBb0I7O2lIQUFwQixvQkFBb0I7a0hBQXBCLG9CQUFvQixpQkFUN0IsdUJBQXVCLGFBRzFCLGFBQWEsYUFHVix1QkFBdUI7a0hBR2Qsb0JBQW9CLFlBUHBCO1lBQ1osYUFBYTtTQUNYOzJGQUtVLG9CQUFvQjtrQkFYaEMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1osdUJBQXVCO3FCQUN4QjtvQkFDQyxPQUFPLEVBQUU7d0JBQ1osYUFBYTtxQkFDWDtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsdUJBQXVCO3FCQUN4QjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ3hJbWFnZWVuZ2luZUNvbXBvbmVudCB9IGZyb20gJy4vbmd4LWltYWdlZW5naW5lLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCcm93c2VyTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXJcIjtcblxuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBOZ3hJbWFnZWVuZ2luZUNvbXBvbmVudFxuICBdLFxuICAgIGltcG9ydHM6IFtcblx0QnJvd3Nlck1vZHVsZVxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgTmd4SW1hZ2VlbmdpbmVDb21wb25lbnRcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBOZ3hJbWFnZWVuZ2luZU1vZHVsZSB7IH1cbiJdfQ== | ||
| //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWltYWdlZW5naW5lLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1pbWFnZWVuZ2luZS9zcmMvbGliL25neC1pbWFnZWVuZ2luZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7O0FBYzFELE1BQU0sT0FBTyxvQkFBb0I7O2lIQUFwQixvQkFBb0I7a0hBQXBCLG9CQUFvQixpQkFUN0IsdUJBQXVCLGFBRzFCLGFBQWEsYUFHVix1QkFBdUI7a0hBR2Qsb0JBQW9CLFlBUHBCO1lBQ1osYUFBYTtTQUNYOzJGQUtVLG9CQUFvQjtrQkFYaEMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1osdUJBQXVCO3FCQUN4QjtvQkFDQyxPQUFPLEVBQUU7d0JBQ1osYUFBYTtxQkFDWDtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsdUJBQXVCO3FCQUN4QjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5neEltYWdlZW5naW5lQ29tcG9uZW50IH0gZnJvbSAnLi9uZ3gtaW1hZ2VlbmdpbmUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQnJvd3Nlck1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyXCI7XHJcblxyXG5cclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFtcclxuICAgIE5neEltYWdlZW5naW5lQ29tcG9uZW50XHJcbiAgXSxcclxuICAgIGltcG9ydHM6IFtcclxuXHRCcm93c2VyTW9kdWxlXHJcbiAgXSxcclxuICBleHBvcnRzOiBbXHJcbiAgICBOZ3hJbWFnZWVuZ2luZUNvbXBvbmVudFxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIE5neEltYWdlZW5naW5lTW9kdWxlIHsgfVxyXG4iXX0= |
@@ -6,2 +6,2 @@ /* | ||
| export * from './lib/ngx-imageengine.module'; | ||
| //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25neC1pbWFnZWVuZ2luZS9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyw4QkFBOEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2Ygbmd4LWltYWdlZW5naW5lXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9saWIvbmd4LWltYWdlZW5naW5lLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9uZ3gtaW1hZ2VlbmdpbmUubW9kdWxlJztcbiJdfQ== | ||
| //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25neC1pbWFnZWVuZ2luZS9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyw4QkFBOEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBuZ3gtaW1hZ2VlbmdpbmVcclxuICovXHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9uZ3gtaW1hZ2VlbmdpbmUuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbmd4LWltYWdlZW5naW5lLm1vZHVsZSc7XHJcbiJdfQ== |
@@ -247,3 +247,3 @@ import * as i0 from '@angular/core'; | ||
| NgxImageengineComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.1", ngImport: i0, type: NgxImageengineComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); | ||
| NgxImageengineComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.1", type: NgxImageengineComponent, selector: "ngx-imageengine", inputs: { directives: "directives", path: "path", host: "host", alt: "alt", wrapper_classes: "wrapper_classes", wrapper_styles: "wrapper_styles", image_classes: "image_classes", image_styles: "image_styles", responsive: "responsive", derive_size: "derive_size", lazy: "lazy", force_size_recalculation: "force_size_recalculation", device_pixel_ratio: "device_pixel_ratio", strip_from_src: "strip_from_src", debug: "debug" }, host: { listeners: { "window:resize": "onResize($event)", "window:scroll": "onScroll($event)" } }, viewQueries: [{ propertyName: "wrapper", first: true, predicate: ["wrapper"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div #wrapper class=\"ngx-ie-image-wrapper\" [ngClass]=\"wrapper_classes\" [ngStyle]=\"wrapper_styles\"> \n <img *ngIf=\"ready\" [src]=\"final_src\" class=\"ngx-ie-image\" [ngClass]=\"image_classes\" [ngStyle]=\"image_styles\" [alt]=\"alt\" [attr.width]=\"image_width\" [attr.height]=\"image_height\" [style.object-fit]=\"image_fit\"/>\n</div>\n", styles: [".ngx-ie-image-wrapper { display: flex; flex-flow: column nowrap; justify-content: center; align-items: center; overflow: hidden; } .ngx-ie-image { object-position: center center; }"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); | ||
| NgxImageengineComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.1", type: NgxImageengineComponent, selector: "ngx-imageengine", inputs: { directives: "directives", path: "path", host: "host", alt: "alt", wrapper_classes: "wrapper_classes", wrapper_styles: "wrapper_styles", image_classes: "image_classes", image_styles: "image_styles", responsive: "responsive", derive_size: "derive_size", lazy: "lazy", force_size_recalculation: "force_size_recalculation", device_pixel_ratio: "device_pixel_ratio", strip_from_src: "strip_from_src", debug: "debug" }, host: { listeners: { "window:resize": "onResize($event)", "window:scroll": "onScroll($event)" } }, viewQueries: [{ propertyName: "wrapper", first: true, predicate: ["wrapper"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div #wrapper class=\"ngx-ie-image-wrapper\" [ngClass]=\"wrapper_classes\" [ngStyle]=\"wrapper_styles\"> \r\n <img *ngIf=\"ready\" [src]=\"final_src\" class=\"ngx-ie-image\" [ngClass]=\"image_classes\" [ngStyle]=\"image_styles\" [alt]=\"alt\" [attr.width]=\"image_width\" [attr.height]=\"image_height\" [style.object-fit]=\"image_fit\"/>\r\n</div>\r\n", styles: [".ngx-ie-image-wrapper { display: flex; flex-flow: column nowrap; justify-content: center; align-items: center; overflow: hidden; } .ngx-ie-image { object-position: center center; }"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); | ||
| i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.1", ngImport: i0, type: NgxImageengineComponent, decorators: [{ | ||
@@ -250,0 +250,0 @@ type: Component, |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"imageengine-angular.js","sources":["../../../projects/ngx-imageengine/src/lib/ngx-imageengine.component.ts","../../../projects/ngx-imageengine/src/lib/ngx-imageengine.component.html","../../../projects/ngx-imageengine/src/lib/ngx-imageengine.module.ts","../../../projects/ngx-imageengine/src/public-api.ts","../../../projects/ngx-imageengine/src/imageengine-angular.ts"],"sourcesContent":["import {\n Component,\n OnInit,\n Input,\n ViewChild,\n AfterViewInit,\n ElementRef,\n ChangeDetectorRef,\n OnChanges,\n SimpleChanges,\n HostListener,\n} from \"@angular/core\";\n\nimport { IEDirectives, build_IE_url } from \"@imageengine/imageengine-helpers\";\n\nexport function check_if_in_viewport(\n rect: {\n bottom: number;\n right: number;\n left: number;\n top: number;\n },\n viewport: {\n width: number;\n height: number;\n }\n) {\n return (\n (rect.top > 0 || rect.bottom > 0) &&\n rect.top < viewport.height &&\n (rect.left > 0 || rect.right > 0) &&\n rect.left < viewport.width\n );\n}\n\nfunction get_highest(a: number | undefined, b: number | undefined) {\n if (a && b) {\n return a >= b ? a : b;\n } else if (a) {\n return a;\n } else {\n return b;\n }\n}\n\n@Component({\n selector: \"ngx-imageengine\",\n templateUrl: \"./ngx-imageengine.component.html\",\n styles: [\n \".ngx-ie-image-wrapper { display: flex; flex-flow: column nowrap; justify-content: center; align-items: center; overflow: hidden; } \\\n .ngx-ie-image { object-position: center center; }\",\n ],\n})\nexport class NgxImageengineComponent\n implements OnInit, AfterViewInit, OnChanges\n{\n @Input() directives: IEDirectives = {};\n\n @Input() path: string | null = null;\n @Input() host: string | null = \"\";\n\n @Input() alt: string | null = \"\";\n @Input() wrapper_classes: string[] | Set<string> | { [klass: string]: any } =\n {};\n @Input() wrapper_styles: { [klass: string]: any } | null = null;\n @Input() image_classes: string[] | Set<string> | { [klass: string]: any } =\n {};\n @Input() image_styles: { [klass: string]: any } | null = null;\n\n @Input() responsive: boolean = false;\n @Input() derive_size: boolean = false;\n @Input() lazy: boolean = true;\n\n @Input() force_size_recalculation: boolean = false;\n @Input() device_pixel_ratio: boolean = true;\n\n @Input() strip_from_src: string = \"\";\n\n @Input() debug: boolean = false;\n\n @ViewChild(\"wrapper\") wrapper!: ElementRef;\n\n final_host: string = \"\";\n final_src: string | null = null;\n\n image_width: number | undefined = undefined;\n directive_width: number | undefined = undefined;\n image_height: number | undefined = undefined;\n directive_height: number | undefined = undefined;\n\n image_fit: string = \"contain\";\n\n viewport: { width: number; height: number } = { width: 0, height: 0 };\n\n is_in_viewport: boolean = false;\n ready: boolean = false;\n\n resize_timer: number | null = null;\n scroll_timer: number | null = null;\n\n @HostListener(\"window:resize\", [\"$event\"]) onResize($event: Event): void {\n if (this.responsive) {\n if (this.resize_timer) {\n window.clearTimeout(this.resize_timer);\n }\n this.resize_timer = window.setTimeout(() => this.maybe_resize(), 250);\n }\n }\n\n @HostListener(\"window:scroll\", [\"$event\"]) onScroll($event: Event): void {\n if (this.lazy) {\n if (this.scroll_timer) {\n window.clearTimeout(this.scroll_timer);\n }\n this.scroll_timer = window.setTimeout(() => this.maybe_scrolled(), 100);\n }\n }\n\n constructor(private change_detector: ChangeDetectorRef) {}\n\n ngOnInit(): void {\n if (typeof this.path !== \"string\") {\n throw new Error(\"Valid path attribute is required\");\n }\n\n if (\n this.debug &&\n (typeof this.host !== \"string\" || this.host.trim() === \"\")\n ) {\n console.warn(\"ImageEngine host wasn't set\");\n }\n\n this.set_final_host();\n }\n\n ngAfterViewInit(): void {\n this.set_viewport();\n this.set_sizes();\n this.set_image_fit();\n this.maybe_is_in_viewport();\n this.build_source();\n this.maybe_ready();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n let is_changes =\n changes.directives ||\n changes.path ||\n changes.host ||\n changes.wrapper_classes ||\n changes.wrapper_styles ||\n changes.image_classes ||\n changes.image_styles ||\n changes.derive_size;\n\n if (is_changes && !is_changes.firstChange) {\n this.change_detector.detectChanges();\n this.set_sizes();\n this.set_final_host();\n this.set_image_fit();\n this.maybe_is_in_viewport();\n this.build_source();\n this.maybe_ready();\n }\n }\n\n set_final_host(): void {\n this.final_host = typeof this.host === \"string\" ? this.host : \"\";\n }\n\n set_image_fit(): void {\n switch (this.directives.fit) {\n case \"stretch\":\n this.image_fit = \"fill\";\n break;\n case \"cropbox\":\n this.image_fit = \"cover\";\n ``;\n break;\n case \"outside\":\n this.image_fit = \"outside\";\n break;\n default:\n this.image_fit = \"contain\";\n break;\n }\n }\n\n set_viewport(): void {\n this.viewport.width =\n window.innerWidth || document.documentElement.clientWidth;\n this.viewport.height =\n window.innerHeight || document.documentElement.clientHeight;\n }\n\n maybe_resize(): void {\n this.set_sizes();\n this.set_viewport();\n this.maybe_is_in_viewport();\n this.maybe_ready();\n }\n\n maybe_scrolled(): void {\n this.maybe_is_in_viewport();\n this.maybe_ready();\n }\n\n maybe_is_in_viewport(): void {\n this.is_in_viewport = check_if_in_viewport(\n this.wrapper.nativeElement.getBoundingClientRect(),\n this.viewport\n );\n }\n\n maybe_ready(): void {\n if (!this.ready && (!this.lazy || this.is_in_viewport)) {\n this.ready = true;\n\n // this is needed because it might not display the image even though it\n // changed and loaded\n this.wrapper.nativeElement.style.backgroundSize = \"100%\";\n }\n this.change_detector.detectChanges();\n }\n\n set_sizes(): void {\n if (this.derive_size) {\n let rect = this.wrapper.nativeElement.getBoundingClientRect();\n\n if (this.debug) {\n console.log(\n \"derive_size is true: the wrapper element BoundingClientRect is: \",\n rect\n );\n }\n\n this.set_sizes_by_fit(rect.width, rect.height);\n } else {\n if (this.directives.no_optimization) {\n this.directive_width = undefined;\n this.directive_height = undefined;\n this.image_width = undefined;\n this.image_height = undefined;\n } else {\n this.set_sizes_by_fit(this.directives.width, this.directives.height);\n }\n }\n }\n\n set_sizes_by_fit(\n width: number | undefined,\n height: number | undefined\n ): void {\n width = width ? Math.round(width) : width;\n height = height ? Math.round(height) : height;\n this.directive_width = this.force_size_recalculation\n ? width\n : get_highest(this.directive_width, width);\n this.directive_height = this.force_size_recalculation\n ? height\n : get_highest(this.directive_height, height);\n\n switch (this.directives.fit) {\n case \"box\":\n case \"letterbox\":\n if (width && height && width >= (height || 0)) {\n this.image_height = height;\n this.image_width = undefined;\n } else if (width) {\n this.image_width = width;\n this.image_height = undefined;\n }\n break;\n case \"stretch\":\n this.image_width = width;\n this.image_height = height;\n break;\n case \"outside\":\n this.image_width = width;\n this.image_height = height;\n break;\n default:\n if (width && height && width >= (height || 0)) {\n this.image_width = width;\n this.image_height = undefined;\n } else if (height) {\n this.image_height = height;\n this.image_width = undefined;\n }\n break;\n }\n }\n\n build_source(): void {\n let final_directives = { ...this.directives };\n let final_path = this.path\n ? this.path.replace(this.strip_from_src, \"\")\n : \"\";\n\n if (this.derive_size) {\n if (this.debug) {\n console.log(\n \"derive_size enabled, overriding directives width and height\"\n );\n }\n final_directives.width = this.directive_width;\n final_directives.height = this.directive_height;\n }\n\n if (this.device_pixel_ratio) {\n final_directives.width = final_directives.width\n ? final_directives.width * window.devicePixelRatio\n : final_directives.width;\n final_directives.height = final_directives.height\n ? final_directives.height * window.devicePixelRatio\n : final_directives.height;\n\n if (this.debug) {\n console.log(\n `device_pixel_ratio enabled, applied a factor of ${window.devicePixelRatio}`\n );\n }\n }\n\n if (this.debug) {\n console.log(\n `final_directives object: ${JSON.stringify(final_directives)}`\n );\n }\n\n this.final_src = build_IE_url(\n `${this.final_host}${final_path}`,\n final_directives,\n this.debug\n );\n }\n}\n","<div #wrapper class=\"ngx-ie-image-wrapper\" [ngClass]=\"wrapper_classes\" [ngStyle]=\"wrapper_styles\"> \n <img *ngIf=\"ready\" [src]=\"final_src\" class=\"ngx-ie-image\" [ngClass]=\"image_classes\" [ngStyle]=\"image_styles\" [alt]=\"alt\" [attr.width]=\"image_width\" [attr.height]=\"image_height\" [style.object-fit]=\"image_fit\"/>\n</div>\n","import { NgModule } from '@angular/core';\nimport { NgxImageengineComponent } from './ngx-imageengine.component';\nimport { BrowserModule } from \"@angular/platform-browser\";\n\n\n@NgModule({\n declarations: [\n NgxImageengineComponent\n ],\n imports: [\n\tBrowserModule\n ],\n exports: [\n NgxImageengineComponent\n ]\n})\nexport class NgxImageengineModule { }\n","/*\n * Public API Surface of ngx-imageengine\n */\n\nexport * from './lib/ngx-imageengine.component';\nexport * from './lib/ngx-imageengine.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"imageengine-angular.js","sources":["../../../projects/ngx-imageengine/src/lib/ngx-imageengine.component.ts","../../../projects/ngx-imageengine/src/lib/ngx-imageengine.component.html","../../../projects/ngx-imageengine/src/lib/ngx-imageengine.module.ts","../../../projects/ngx-imageengine/src/public-api.ts","../../../projects/ngx-imageengine/src/imageengine-angular.ts"],"sourcesContent":["import {\r\n Component,\r\n OnInit,\r\n Input,\r\n ViewChild,\r\n AfterViewInit,\r\n ElementRef,\r\n ChangeDetectorRef,\r\n OnChanges,\r\n SimpleChanges,\r\n HostListener,\r\n} from \"@angular/core\";\r\n\r\nimport { IEDirectives, build_IE_url } from \"@imageengine/imageengine-helpers\";\r\n\r\nexport function check_if_in_viewport(\r\n rect: {\r\n bottom: number;\r\n right: number;\r\n left: number;\r\n top: number;\r\n },\r\n viewport: {\r\n width: number;\r\n height: number;\r\n }\r\n) {\r\n return (\r\n (rect.top > 0 || rect.bottom > 0) &&\r\n rect.top < viewport.height &&\r\n (rect.left > 0 || rect.right > 0) &&\r\n rect.left < viewport.width\r\n );\r\n}\r\n\r\nfunction get_highest(a: number | undefined, b: number | undefined) {\r\n if (a && b) {\r\n return a >= b ? a : b;\r\n } else if (a) {\r\n return a;\r\n } else {\r\n return b;\r\n }\r\n}\r\n\r\n@Component({\r\n selector: \"ngx-imageengine\",\r\n templateUrl: \"./ngx-imageengine.component.html\",\r\n styles: [\r\n \".ngx-ie-image-wrapper { display: flex; flex-flow: column nowrap; justify-content: center; align-items: center; overflow: hidden; } \\\r\n .ngx-ie-image { object-position: center center; }\",\r\n ],\r\n})\r\nexport class NgxImageengineComponent\r\n implements OnInit, AfterViewInit, OnChanges\r\n{\r\n @Input() directives: IEDirectives = {};\r\n\r\n @Input() path: string | null = null;\r\n @Input() host: string | null = \"\";\r\n\r\n @Input() alt: string | null = \"\";\r\n @Input() wrapper_classes: string[] | Set<string> | { [klass: string]: any } =\r\n {};\r\n @Input() wrapper_styles: { [klass: string]: any } | null = null;\r\n @Input() image_classes: string[] | Set<string> | { [klass: string]: any } =\r\n {};\r\n @Input() image_styles: { [klass: string]: any } | null = null;\r\n\r\n @Input() responsive: boolean = false;\r\n @Input() derive_size: boolean = false;\r\n @Input() lazy: boolean = true;\r\n\r\n @Input() force_size_recalculation: boolean = false;\r\n @Input() device_pixel_ratio: boolean = true;\r\n\r\n @Input() strip_from_src: string = \"\";\r\n\r\n @Input() debug: boolean = false;\r\n\r\n @ViewChild(\"wrapper\") wrapper!: ElementRef;\r\n\r\n final_host: string = \"\";\r\n final_src: string | null = null;\r\n\r\n image_width: number | undefined = undefined;\r\n directive_width: number | undefined = undefined;\r\n image_height: number | undefined = undefined;\r\n directive_height: number | undefined = undefined;\r\n\r\n image_fit: string = \"contain\";\r\n\r\n viewport: { width: number; height: number } = { width: 0, height: 0 };\r\n\r\n is_in_viewport: boolean = false;\r\n ready: boolean = false;\r\n\r\n resize_timer: number | null = null;\r\n scroll_timer: number | null = null;\r\n\r\n @HostListener(\"window:resize\", [\"$event\"]) onResize($event: Event): void {\r\n if (this.responsive) {\r\n if (this.resize_timer) {\r\n window.clearTimeout(this.resize_timer);\r\n }\r\n this.resize_timer = window.setTimeout(() => this.maybe_resize(), 250);\r\n }\r\n }\r\n\r\n @HostListener(\"window:scroll\", [\"$event\"]) onScroll($event: Event): void {\r\n if (this.lazy) {\r\n if (this.scroll_timer) {\r\n window.clearTimeout(this.scroll_timer);\r\n }\r\n this.scroll_timer = window.setTimeout(() => this.maybe_scrolled(), 100);\r\n }\r\n }\r\n\r\n constructor(private change_detector: ChangeDetectorRef) {}\r\n\r\n ngOnInit(): void {\r\n if (typeof this.path !== \"string\") {\r\n throw new Error(\"Valid path attribute is required\");\r\n }\r\n\r\n if (\r\n this.debug &&\r\n (typeof this.host !== \"string\" || this.host.trim() === \"\")\r\n ) {\r\n console.warn(\"ImageEngine host wasn't set\");\r\n }\r\n\r\n this.set_final_host();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.set_viewport();\r\n this.set_sizes();\r\n this.set_image_fit();\r\n this.maybe_is_in_viewport();\r\n this.build_source();\r\n this.maybe_ready();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n let is_changes =\r\n changes.directives ||\r\n changes.path ||\r\n changes.host ||\r\n changes.wrapper_classes ||\r\n changes.wrapper_styles ||\r\n changes.image_classes ||\r\n changes.image_styles ||\r\n changes.derive_size;\r\n\r\n if (is_changes && !is_changes.firstChange) {\r\n this.change_detector.detectChanges();\r\n this.set_sizes();\r\n this.set_final_host();\r\n this.set_image_fit();\r\n this.maybe_is_in_viewport();\r\n this.build_source();\r\n this.maybe_ready();\r\n }\r\n }\r\n\r\n set_final_host(): void {\r\n this.final_host = typeof this.host === \"string\" ? this.host : \"\";\r\n }\r\n\r\n set_image_fit(): void {\r\n switch (this.directives.fit) {\r\n case \"stretch\":\r\n this.image_fit = \"fill\";\r\n break;\r\n case \"cropbox\":\r\n this.image_fit = \"cover\";\r\n ``;\r\n break;\r\n case \"outside\":\r\n this.image_fit = \"outside\";\r\n break;\r\n default:\r\n this.image_fit = \"contain\";\r\n break;\r\n }\r\n }\r\n\r\n set_viewport(): void {\r\n this.viewport.width =\r\n window.innerWidth || document.documentElement.clientWidth;\r\n this.viewport.height =\r\n window.innerHeight || document.documentElement.clientHeight;\r\n }\r\n\r\n maybe_resize(): void {\r\n this.set_sizes();\r\n this.set_viewport();\r\n this.maybe_is_in_viewport();\r\n this.maybe_ready();\r\n }\r\n\r\n maybe_scrolled(): void {\r\n this.maybe_is_in_viewport();\r\n this.maybe_ready();\r\n }\r\n\r\n maybe_is_in_viewport(): void {\r\n this.is_in_viewport = check_if_in_viewport(\r\n this.wrapper.nativeElement.getBoundingClientRect(),\r\n this.viewport\r\n );\r\n }\r\n\r\n maybe_ready(): void {\r\n if (!this.ready && (!this.lazy || this.is_in_viewport)) {\r\n this.ready = true;\r\n\r\n // this is needed because it might not display the image even though it\r\n // changed and loaded\r\n this.wrapper.nativeElement.style.backgroundSize = \"100%\";\r\n }\r\n this.change_detector.detectChanges();\r\n }\r\n\r\n set_sizes(): void {\r\n if (this.derive_size) {\r\n let rect = this.wrapper.nativeElement.getBoundingClientRect();\r\n\r\n if (this.debug) {\r\n console.log(\r\n \"derive_size is true: the wrapper element BoundingClientRect is: \",\r\n rect\r\n );\r\n }\r\n\r\n this.set_sizes_by_fit(rect.width, rect.height);\r\n } else {\r\n if (this.directives.no_optimization) {\r\n this.directive_width = undefined;\r\n this.directive_height = undefined;\r\n this.image_width = undefined;\r\n this.image_height = undefined;\r\n } else {\r\n this.set_sizes_by_fit(this.directives.width, this.directives.height);\r\n }\r\n }\r\n }\r\n\r\n set_sizes_by_fit(\r\n width: number | undefined,\r\n height: number | undefined\r\n ): void {\r\n width = width ? Math.round(width) : width;\r\n height = height ? Math.round(height) : height;\r\n this.directive_width = this.force_size_recalculation\r\n ? width\r\n : get_highest(this.directive_width, width);\r\n this.directive_height = this.force_size_recalculation\r\n ? height\r\n : get_highest(this.directive_height, height);\r\n\r\n switch (this.directives.fit) {\r\n case \"box\":\r\n case \"letterbox\":\r\n if (width && height && width >= (height || 0)) {\r\n this.image_height = height;\r\n this.image_width = undefined;\r\n } else if (width) {\r\n this.image_width = width;\r\n this.image_height = undefined;\r\n }\r\n break;\r\n case \"stretch\":\r\n this.image_width = width;\r\n this.image_height = height;\r\n break;\r\n case \"outside\":\r\n this.image_width = width;\r\n this.image_height = height;\r\n break;\r\n default:\r\n if (width && height && width >= (height || 0)) {\r\n this.image_width = width;\r\n this.image_height = undefined;\r\n } else if (height) {\r\n this.image_height = height;\r\n this.image_width = undefined;\r\n }\r\n break;\r\n }\r\n }\r\n\r\n build_source(): void {\r\n let final_directives = { ...this.directives };\r\n let final_path = this.path\r\n ? this.path.replace(this.strip_from_src, \"\")\r\n : \"\";\r\n\r\n if (this.derive_size) {\r\n if (this.debug) {\r\n console.log(\r\n \"derive_size enabled, overriding directives width and height\"\r\n );\r\n }\r\n final_directives.width = this.directive_width;\r\n final_directives.height = this.directive_height;\r\n }\r\n\r\n if (this.device_pixel_ratio) {\r\n final_directives.width = final_directives.width\r\n ? final_directives.width * window.devicePixelRatio\r\n : final_directives.width;\r\n final_directives.height = final_directives.height\r\n ? final_directives.height * window.devicePixelRatio\r\n : final_directives.height;\r\n\r\n if (this.debug) {\r\n console.log(\r\n `device_pixel_ratio enabled, applied a factor of ${window.devicePixelRatio}`\r\n );\r\n }\r\n }\r\n\r\n if (this.debug) {\r\n console.log(\r\n `final_directives object: ${JSON.stringify(final_directives)}`\r\n );\r\n }\r\n\r\n this.final_src = build_IE_url(\r\n `${this.final_host}${final_path}`,\r\n final_directives,\r\n this.debug\r\n );\r\n }\r\n}\r\n","<div #wrapper class=\"ngx-ie-image-wrapper\" [ngClass]=\"wrapper_classes\" [ngStyle]=\"wrapper_styles\"> \r\n <img *ngIf=\"ready\" [src]=\"final_src\" class=\"ngx-ie-image\" [ngClass]=\"image_classes\" [ngStyle]=\"image_styles\" [alt]=\"alt\" [attr.width]=\"image_width\" [attr.height]=\"image_height\" [style.object-fit]=\"image_fit\"/>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { NgxImageengineComponent } from './ngx-imageengine.component';\r\nimport { BrowserModule } from \"@angular/platform-browser\";\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n NgxImageengineComponent\r\n ],\r\n imports: [\r\n\tBrowserModule\r\n ],\r\n exports: [\r\n NgxImageengineComponent\r\n ]\r\n})\r\nexport class NgxImageengineModule { }\r\n","/*\r\n * Public API Surface of ngx-imageengine\r\n */\r\n\r\nexport * from './lib/ngx-imageengine.component';\r\nexport * from './lib/ngx-imageengine.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"} |
@@ -0,0 +0,0 @@ /** |
@@ -0,0 +0,0 @@ import { OnInit, AfterViewInit, ElementRef, ChangeDetectorRef, OnChanges, SimpleChanges } from "@angular/core"; |
@@ -0,0 +0,0 @@ import * as i0 from "@angular/core"; |
+2
-2
| { | ||
| "name": "@imageengine/angular", | ||
| "version": "0.0.4", | ||
| "version": "0.0.5", | ||
| "description": "An Angular (12) component for easing usage of ImageEngine's distribution CDN. Includes functionality to derive sizing directives directly from the elements real display sizes and ancillary functionality such as lazy loading of off-screen images, viewport dimensions change responsiveness (as in, refetch of assets files if the directives/sizing changes)", | ||
@@ -27,3 +27,3 @@ "homepage": "https://github.com/imgeng/imageengine-angular", | ||
| "dependencies": { | ||
| "@imageengine/imageengine-helpers": "^0.1.1", | ||
| "@imageengine/imageengine-helpers": "^0.2.1", | ||
| "tslib": "^2.2.0" | ||
@@ -30,0 +30,0 @@ }, |
+0
-0
| export * from './lib/ngx-imageengine.component'; | ||
| export * from './lib/ngx-imageengine.module'; |
+6
-2
@@ -21,3 +21,3 @@ # NgxImageengine | ||
| You can follow a [small tutorial to get you up and running](https://dev.to/mnussbaumer/getting-started-with-imageengine-and-angular-pk2) | ||
| [Demo app on CodeSandbox](https://codesandbox.io/p/sandbox/imageengineangulardemo-kvyr98) | ||
@@ -178,2 +178,4 @@ ## Index: | ||
| no_optimization?: true; // don't apply IE optimizations | ||
| force_download?: true; | ||
| max_device_pixel_ratio: 2.1; // 1-4 float | ||
| }; | ||
@@ -191,5 +193,7 @@ | ||
| "jxr" | | ||
| "avif" ; | ||
| "avif" | | ||
| "jxl" ; | ||
| export type IEFit = | ||
@@ -196,0 +200,0 @@ "stretch" | |
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
134251
2.97%338
1.2%+ Added
- Removed