@loxia/imx-viewer 9.4.1 → 10.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.
package/README.md CHANGED
@@ -108,6 +108,10 @@ Met de onderstaande css kan de default breedte van een clickarea aangepast worde
108
108
 
109
109
  ### <!--next.version--> <!--next.release-date-->
110
110
 
111
+ ### 10.0.0 21-06-2023
112
+ * BREAKING CHANGES:
113
+ * PW-11769 Upgrade to angular 14
114
+
111
115
  ### 9.4.1 11-05-2023
112
116
  * PW-12771 OnDestroy wordt svgPanZoomRef opgeruimd
113
117
 
@@ -64,5 +64,5 @@ export declare class ImxViewerComponent implements OnChanges, OnInit, OnDestroy
64
64
  private delayedClickAreaCreation;
65
65
  private getSvgParent;
66
66
  static ɵfac: i0.ɵɵFactoryDeclaration<ImxViewerComponent, never>;
67
- static ɵcmp: i0.ɵɵComponentDeclaration<ImxViewerComponent, "imx-viewer", never, { "useClickArea": "useClickArea"; "inlineDgnCssImport": "inlineDgnCssImport"; "svgInfo": "svgInfo"; "selectieInfos": "selectieInfos"; "clickableIds": "clickableIds"; "rightClickableIds": "rightClickableIds"; "popoverInfos": "popoverInfos"; }, { "clickHandler": "clickHandler"; "rightClickHandler": "rightClickHandler"; "svgLoaded": "svgLoaded"; }, never, never>;
67
+ static ɵcmp: i0.ɵɵComponentDeclaration<ImxViewerComponent, "imx-viewer", never, { "useClickArea": "useClickArea"; "inlineDgnCssImport": "inlineDgnCssImport"; "svgInfo": "svgInfo"; "selectieInfos": "selectieInfos"; "clickableIds": "clickableIds"; "rightClickableIds": "rightClickableIds"; "popoverInfos": "popoverInfos"; }, { "clickHandler": "clickHandler"; "rightClickHandler": "rightClickHandler"; "svgLoaded": "svgLoaded"; }, never, never, false>;
68
68
  }
@@ -281,9 +281,9 @@ export class ImxViewerComponent {
281
281
  }
282
282
  }
283
283
  }
284
- ImxViewerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: ImxViewerComponent, deps: [{ token: DocumentToken }, { token: i1.HttpClient }, { token: i2.ClickareaService }, { token: i3.PuicHelperService }], target: i0.ɵɵFactoryTarget.Component });
285
- ImxViewerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.4", type: ImxViewerComponent, selector: "imx-viewer", inputs: { useClickArea: "useClickArea", inlineDgnCssImport: "inlineDgnCssImport", svgInfo: "svgInfo", selectieInfos: "selectieInfos", clickableIds: "clickableIds", rightClickableIds: "rightClickableIds", popoverInfos: "popoverInfos" }, outputs: { clickHandler: "clickHandler", rightClickHandler: "rightClickHandler", svgLoaded: "svgLoaded" }, viewQueries: [{ propertyName: "svgParentRef", first: true, predicate: ["svgParent"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div id=\"imxviewer\" data-test-id=\"imx-viewer\">\n <div id=\"svgContainer\" class=\"col-md-12 top10\" [hidden]=\"errors\" (click)=\"hidePopOver()\" data-test-id=\"svg-container\">\n <svg #svgParent xmlns=\"http://www.w3.org/2000/svg\"></svg>\n </div>\n <div id=\"popover\" class=\"popover top bs-popover-top\" [ngStyle]=\"popoverStyle\" (mouseleave)=\"hidePopOver()\" data-test-id=\"popover\">\n <div class=\"arrow\"></div>\n <h3 class=\"popover-header\" *ngIf=\"popoverTitleContent !== undefined\" [innerHTML]=\"popoverTitleContent\" data-test-id=\"popover-header\"></h3>\n <div class=\"popover-body\" [innerHTML]=\"popoverHtmlContent\" data-test-id=\"popover-body\"></div>\n </div>\n</div>\n", styles: [".popover{top:0;left:0;z-index:1060;max-width:100%;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif;font-style:normal;font-weight:400;line-height:1.5;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;visibility:hidden}.popover,.popover .arrow{position:absolute;display:block}.popover .arrow{width:1rem;height:.5rem;margin:0 .3rem;left:40%}.popover .arrow:after,.popover .arrow:before{position:absolute;display:block;content:\"\";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=top]>.arrow:before,.bs-popover-top>.arrow:before{bottom:0;border-width:.5rem .5rem 0;border-top-color:#00000040}.bs-popover-auto[x-placement^=top]>.arrow:after,.bs-popover-top>.arrow:after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right]>.arrow:before,.bs-popover-right>.arrow:before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:#00000040}.bs-popover-auto[x-placement^=right]>.arrow:after,.bs-popover-right>.arrow:after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=bottom]>.arrow:before,.bs-popover-bottom>.arrow:before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:#00000040}.bs-popover-auto[x-placement^=bottom]>.arrow:after,.bs-popover-bottom>.arrow:after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header:before,.bs-popover-bottom .popover-header:before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:\"\";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left]>.arrow:before,.bs-popover-left>.arrow:before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:#00000040}.bs-popover-auto[x-placement^=left]>.arrow:after,.bs-popover-left>.arrow:after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}\n"], directives: [{ type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
286
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: ImxViewerComponent, decorators: [{
284
+ ImxViewerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ImxViewerComponent, deps: [{ token: DocumentToken }, { token: i1.HttpClient }, { token: i2.ClickareaService }, { token: i3.PuicHelperService }], target: i0.ɵɵFactoryTarget.Component });
285
+ ImxViewerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ImxViewerComponent, selector: "imx-viewer", inputs: { useClickArea: "useClickArea", inlineDgnCssImport: "inlineDgnCssImport", svgInfo: "svgInfo", selectieInfos: "selectieInfos", clickableIds: "clickableIds", rightClickableIds: "rightClickableIds", popoverInfos: "popoverInfos" }, outputs: { clickHandler: "clickHandler", rightClickHandler: "rightClickHandler", svgLoaded: "svgLoaded" }, viewQueries: [{ propertyName: "svgParentRef", first: true, predicate: ["svgParent"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div id=\"imxviewer\" data-test-id=\"imx-viewer\">\n <div id=\"svgContainer\" class=\"col-md-12 top10\" [hidden]=\"errors\" (click)=\"hidePopOver()\" data-test-id=\"svg-container\">\n <svg #svgParent xmlns=\"http://www.w3.org/2000/svg\"></svg>\n </div>\n <div id=\"popover\" class=\"popover top bs-popover-top\" [ngStyle]=\"popoverStyle\" (mouseleave)=\"hidePopOver()\" data-test-id=\"popover\">\n <div class=\"arrow\"></div>\n <h3 class=\"popover-header\" *ngIf=\"popoverTitleContent !== undefined\" [innerHTML]=\"popoverTitleContent\" data-test-id=\"popover-header\"></h3>\n <div class=\"popover-body\" [innerHTML]=\"popoverHtmlContent\" data-test-id=\"popover-body\"></div>\n </div>\n</div>\n", styles: [".popover{top:0;left:0;z-index:1060;max-width:100%;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif;font-style:normal;font-weight:400;line-height:1.5;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;visibility:hidden}.popover,.popover .arrow{position:absolute;display:block}.popover .arrow{width:1rem;height:.5rem;margin:0 .3rem;left:40%}.popover .arrow:after,.popover .arrow:before{position:absolute;display:block;content:\"\";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=top]>.arrow:before,.bs-popover-top>.arrow:before{bottom:0;border-width:.5rem .5rem 0;border-top-color:#00000040}.bs-popover-auto[x-placement^=top]>.arrow:after,.bs-popover-top>.arrow:after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right]>.arrow:before,.bs-popover-right>.arrow:before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:#00000040}.bs-popover-auto[x-placement^=right]>.arrow:after,.bs-popover-right>.arrow:after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=bottom]>.arrow:before,.bs-popover-bottom>.arrow:before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:#00000040}.bs-popover-auto[x-placement^=bottom]>.arrow:after,.bs-popover-bottom>.arrow:after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header:before,.bs-popover-bottom .popover-header:before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:\"\";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left]>.arrow:before,.bs-popover-left>.arrow:before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:#00000040}.bs-popover-auto[x-placement^=left]>.arrow:after,.bs-popover-left>.arrow:after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
286
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ImxViewerComponent, decorators: [{
287
287
  type: Component,
288
288
  args: [{ selector: 'imx-viewer', template: "<div id=\"imxviewer\" data-test-id=\"imx-viewer\">\n <div id=\"svgContainer\" class=\"col-md-12 top10\" [hidden]=\"errors\" (click)=\"hidePopOver()\" data-test-id=\"svg-container\">\n <svg #svgParent xmlns=\"http://www.w3.org/2000/svg\"></svg>\n </div>\n <div id=\"popover\" class=\"popover top bs-popover-top\" [ngStyle]=\"popoverStyle\" (mouseleave)=\"hidePopOver()\" data-test-id=\"popover\">\n <div class=\"arrow\"></div>\n <h3 class=\"popover-header\" *ngIf=\"popoverTitleContent !== undefined\" [innerHTML]=\"popoverTitleContent\" data-test-id=\"popover-header\"></h3>\n <div class=\"popover-body\" [innerHTML]=\"popoverHtmlContent\" data-test-id=\"popover-body\"></div>\n </div>\n</div>\n", styles: [".popover{top:0;left:0;z-index:1060;max-width:100%;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif;font-style:normal;font-weight:400;line-height:1.5;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;visibility:hidden}.popover,.popover .arrow{position:absolute;display:block}.popover .arrow{width:1rem;height:.5rem;margin:0 .3rem;left:40%}.popover .arrow:after,.popover .arrow:before{position:absolute;display:block;content:\"\";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=top]>.arrow:before,.bs-popover-top>.arrow:before{bottom:0;border-width:.5rem .5rem 0;border-top-color:#00000040}.bs-popover-auto[x-placement^=top]>.arrow:after,.bs-popover-top>.arrow:after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right]>.arrow:before,.bs-popover-right>.arrow:before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:#00000040}.bs-popover-auto[x-placement^=right]>.arrow:after,.bs-popover-right>.arrow:after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=bottom]>.arrow:before,.bs-popover-bottom>.arrow:before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:#00000040}.bs-popover-auto[x-placement^=bottom]>.arrow:after,.bs-popover-bottom>.arrow:after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header:before,.bs-popover-bottom .popover-header:before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:\"\";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left]>.arrow:before,.bs-popover-left>.arrow:before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:#00000040}.bs-popover-auto[x-placement^=left]>.arrow:after,.bs-popover-left>.arrow:after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}\n"] }]
289
289
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
@@ -6,16 +6,14 @@ import { documentProvider, DocumentToken } from './utils/document-token';
6
6
  import * as i0 from "@angular/core";
7
7
  export class ImxViewerModule {
8
8
  }
9
- ImxViewerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: ImxViewerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
10
- ImxViewerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: ImxViewerModule, declarations: [ImxViewerComponent], imports: [CommonModule,
9
+ ImxViewerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ImxViewerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
10
+ ImxViewerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: ImxViewerModule, declarations: [ImxViewerComponent], imports: [CommonModule,
11
11
  HttpClientModule], exports: [ImxViewerComponent] });
12
- ImxViewerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: ImxViewerModule, providers: [
12
+ ImxViewerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ImxViewerModule, providers: [
13
13
  { provide: DocumentToken, useFactory: documentProvider }
14
- ], imports: [[
15
- CommonModule,
16
- HttpClientModule
17
- ]] });
18
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: ImxViewerModule, decorators: [{
14
+ ], imports: [CommonModule,
15
+ HttpClientModule] });
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ImxViewerModule, decorators: [{
19
17
  type: NgModule,
20
18
  args: [{
21
19
  imports: [
@@ -33,4 +31,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImpor
33
31
  ]
34
32
  }]
35
33
  }] });
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW14LXZpZXdlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW14LXZpZXdlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQWlCekUsTUFBTSxPQUFPLGVBQWU7OzRHQUFmLGVBQWU7NkdBQWYsZUFBZSxpQkFUeEIsa0JBQWtCLGFBSmxCLFlBQVk7UUFDWixnQkFBZ0IsYUFNaEIsa0JBQWtCOzZHQU1ULGVBQWUsYUFKZjtRQUNQLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUU7S0FDM0QsWUFaUTtZQUNQLFlBQVk7WUFDWixnQkFBZ0I7U0FDakI7MkZBV1UsZUFBZTtrQkFmM0IsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixnQkFBZ0I7cUJBQ2pCO29CQUNELFlBQVksRUFBRTt3QkFDWixrQkFBa0I7cUJBQ25CO29CQUNELE9BQU8sRUFBRTt3QkFDUCxrQkFBa0I7cUJBQ25CO29CQUNELFNBQVMsRUFBRTt3QkFDUCxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFO3FCQUMzRDtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IElteFZpZXdlckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9pbXgtdmlld2VyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IGRvY3VtZW50UHJvdmlkZXIsIERvY3VtZW50VG9rZW4gfSBmcm9tICcuL3V0aWxzL2RvY3VtZW50LXRva2VuJztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgSHR0cENsaWVudE1vZHVsZVxyXG4gIF0sXHJcbiAgZGVjbGFyYXRpb25zOiBbXHJcbiAgICBJbXhWaWV3ZXJDb21wb25lbnRcclxuICBdLFxyXG4gIGV4cG9ydHM6IFtcclxuICAgIElteFZpZXdlckNvbXBvbmVudFxyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICAgIHsgcHJvdmlkZTogRG9jdW1lbnRUb2tlbiwgdXNlRmFjdG9yeTogZG9jdW1lbnRQcm92aWRlciB9XHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW14Vmlld2VyTW9kdWxlIHtcclxufVxyXG4iXX0=
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW14LXZpZXdlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW14LXZpZXdlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQWlCekUsTUFBTSxPQUFPLGVBQWU7OzRHQUFmLGVBQWU7NkdBQWYsZUFBZSxpQkFUeEIsa0JBQWtCLGFBSmxCLFlBQVk7UUFDWixnQkFBZ0IsYUFNaEIsa0JBQWtCOzZHQU1ULGVBQWUsYUFKZjtRQUNQLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUU7S0FDM0QsWUFYQyxZQUFZO1FBQ1osZ0JBQWdCOzJGQVlQLGVBQWU7a0JBZjNCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osZ0JBQWdCO3FCQUNqQjtvQkFDRCxZQUFZLEVBQUU7d0JBQ1osa0JBQWtCO3FCQUNuQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1Asa0JBQWtCO3FCQUNuQjtvQkFDRCxTQUFTLEVBQUU7d0JBQ1AsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRTtxQkFDM0Q7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBJbXhWaWV3ZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvaW14LXZpZXdlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBkb2N1bWVudFByb3ZpZGVyLCBEb2N1bWVudFRva2VuIH0gZnJvbSAnLi91dGlscy9kb2N1bWVudC10b2tlbic7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEh0dHBDbGllbnRNb2R1bGVcclxuICBdLFxyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gICAgSW14Vmlld2VyQ29tcG9uZW50XHJcbiAgXSxcclxuICBleHBvcnRzOiBbXHJcbiAgICBJbXhWaWV3ZXJDb21wb25lbnRcclxuICBdLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAgICB7IHByb3ZpZGU6IERvY3VtZW50VG9rZW4sIHVzZUZhY3Rvcnk6IGRvY3VtZW50UHJvdmlkZXIgfVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIElteFZpZXdlck1vZHVsZSB7XHJcbn1cclxuIl19
@@ -33,9 +33,9 @@ export class ClickareaService {
33
33
  });
34
34
  }
35
35
  }
36
- ClickareaService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: ClickareaService, deps: [{ token: i1.PuicHelperService }], target: i0.ɵɵFactoryTarget.Injectable });
37
- ClickareaService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: ClickareaService, providedIn: 'root' });
38
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: ClickareaService, decorators: [{
36
+ ClickareaService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ClickareaService, deps: [{ token: i1.PuicHelperService }], target: i0.ɵɵFactoryTarget.Injectable });
37
+ ClickareaService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ClickareaService, providedIn: 'root' });
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ClickareaService, decorators: [{
39
39
  type: Injectable,
40
40
  args: [{
41
41
  providedIn: 'root'
@@ -6,9 +6,9 @@ export class PuicHelperService {
6
6
  this.getAllElementsForPuic = (puic) => this.rootSvg.querySelectorAll(`.p${puic}, #p${puic}`);
7
7
  }
8
8
  }
9
- PuicHelperService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: PuicHelperService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
10
- PuicHelperService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: PuicHelperService, providedIn: 'root' });
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: PuicHelperService, decorators: [{
9
+ PuicHelperService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PuicHelperService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
10
+ PuicHelperService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PuicHelperService, providedIn: 'root' });
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PuicHelperService, decorators: [{
12
12
  type: Injectable,
13
13
  args: [{
14
14
  providedIn: 'root'
@@ -176,9 +176,9 @@ class PuicHelperService {
176
176
  this.getAllElementsForPuic = (puic) => this.rootSvg.querySelectorAll(`.p${puic}, #p${puic}`);
177
177
  }
178
178
  }
179
- PuicHelperService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: PuicHelperService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
180
- PuicHelperService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: PuicHelperService, providedIn: 'root' });
181
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: PuicHelperService, decorators: [{
179
+ PuicHelperService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PuicHelperService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
180
+ PuicHelperService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PuicHelperService, providedIn: 'root' });
181
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PuicHelperService, decorators: [{
182
182
  type: Injectable,
183
183
  args: [{
184
184
  providedIn: 'root'
@@ -217,9 +217,9 @@ class ClickareaService {
217
217
  });
218
218
  }
219
219
  }
220
- ClickareaService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: ClickareaService, deps: [{ token: PuicHelperService }], target: i0.ɵɵFactoryTarget.Injectable });
221
- ClickareaService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: ClickareaService, providedIn: 'root' });
222
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: ClickareaService, decorators: [{
220
+ ClickareaService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ClickareaService, deps: [{ token: PuicHelperService }], target: i0.ɵɵFactoryTarget.Injectable });
221
+ ClickareaService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ClickareaService, providedIn: 'root' });
222
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ClickareaService, decorators: [{
223
223
  type: Injectable,
224
224
  args: [{
225
225
  providedIn: 'root'
@@ -496,9 +496,9 @@ class ImxViewerComponent {
496
496
  }
497
497
  }
498
498
  }
499
- ImxViewerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: ImxViewerComponent, deps: [{ token: DocumentToken }, { token: i1.HttpClient }, { token: ClickareaService }, { token: PuicHelperService }], target: i0.ɵɵFactoryTarget.Component });
500
- ImxViewerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.4", type: ImxViewerComponent, selector: "imx-viewer", inputs: { useClickArea: "useClickArea", inlineDgnCssImport: "inlineDgnCssImport", svgInfo: "svgInfo", selectieInfos: "selectieInfos", clickableIds: "clickableIds", rightClickableIds: "rightClickableIds", popoverInfos: "popoverInfos" }, outputs: { clickHandler: "clickHandler", rightClickHandler: "rightClickHandler", svgLoaded: "svgLoaded" }, viewQueries: [{ propertyName: "svgParentRef", first: true, predicate: ["svgParent"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div id=\"imxviewer\" data-test-id=\"imx-viewer\">\n <div id=\"svgContainer\" class=\"col-md-12 top10\" [hidden]=\"errors\" (click)=\"hidePopOver()\" data-test-id=\"svg-container\">\n <svg #svgParent xmlns=\"http://www.w3.org/2000/svg\"></svg>\n </div>\n <div id=\"popover\" class=\"popover top bs-popover-top\" [ngStyle]=\"popoverStyle\" (mouseleave)=\"hidePopOver()\" data-test-id=\"popover\">\n <div class=\"arrow\"></div>\n <h3 class=\"popover-header\" *ngIf=\"popoverTitleContent !== undefined\" [innerHTML]=\"popoverTitleContent\" data-test-id=\"popover-header\"></h3>\n <div class=\"popover-body\" [innerHTML]=\"popoverHtmlContent\" data-test-id=\"popover-body\"></div>\n </div>\n</div>\n", styles: [".popover{top:0;left:0;z-index:1060;max-width:100%;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif;font-style:normal;font-weight:400;line-height:1.5;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;visibility:hidden}.popover,.popover .arrow{position:absolute;display:block}.popover .arrow{width:1rem;height:.5rem;margin:0 .3rem;left:40%}.popover .arrow:after,.popover .arrow:before{position:absolute;display:block;content:\"\";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=top]>.arrow:before,.bs-popover-top>.arrow:before{bottom:0;border-width:.5rem .5rem 0;border-top-color:#00000040}.bs-popover-auto[x-placement^=top]>.arrow:after,.bs-popover-top>.arrow:after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right]>.arrow:before,.bs-popover-right>.arrow:before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:#00000040}.bs-popover-auto[x-placement^=right]>.arrow:after,.bs-popover-right>.arrow:after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=bottom]>.arrow:before,.bs-popover-bottom>.arrow:before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:#00000040}.bs-popover-auto[x-placement^=bottom]>.arrow:after,.bs-popover-bottom>.arrow:after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header:before,.bs-popover-bottom .popover-header:before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:\"\";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left]>.arrow:before,.bs-popover-left>.arrow:before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:#00000040}.bs-popover-auto[x-placement^=left]>.arrow:after,.bs-popover-left>.arrow:after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}\n"], directives: [{ type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
501
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: ImxViewerComponent, decorators: [{
499
+ ImxViewerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ImxViewerComponent, deps: [{ token: DocumentToken }, { token: i1.HttpClient }, { token: ClickareaService }, { token: PuicHelperService }], target: i0.ɵɵFactoryTarget.Component });
500
+ ImxViewerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ImxViewerComponent, selector: "imx-viewer", inputs: { useClickArea: "useClickArea", inlineDgnCssImport: "inlineDgnCssImport", svgInfo: "svgInfo", selectieInfos: "selectieInfos", clickableIds: "clickableIds", rightClickableIds: "rightClickableIds", popoverInfos: "popoverInfos" }, outputs: { clickHandler: "clickHandler", rightClickHandler: "rightClickHandler", svgLoaded: "svgLoaded" }, viewQueries: [{ propertyName: "svgParentRef", first: true, predicate: ["svgParent"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div id=\"imxviewer\" data-test-id=\"imx-viewer\">\n <div id=\"svgContainer\" class=\"col-md-12 top10\" [hidden]=\"errors\" (click)=\"hidePopOver()\" data-test-id=\"svg-container\">\n <svg #svgParent xmlns=\"http://www.w3.org/2000/svg\"></svg>\n </div>\n <div id=\"popover\" class=\"popover top bs-popover-top\" [ngStyle]=\"popoverStyle\" (mouseleave)=\"hidePopOver()\" data-test-id=\"popover\">\n <div class=\"arrow\"></div>\n <h3 class=\"popover-header\" *ngIf=\"popoverTitleContent !== undefined\" [innerHTML]=\"popoverTitleContent\" data-test-id=\"popover-header\"></h3>\n <div class=\"popover-body\" [innerHTML]=\"popoverHtmlContent\" data-test-id=\"popover-body\"></div>\n </div>\n</div>\n", styles: [".popover{top:0;left:0;z-index:1060;max-width:100%;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif;font-style:normal;font-weight:400;line-height:1.5;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;visibility:hidden}.popover,.popover .arrow{position:absolute;display:block}.popover .arrow{width:1rem;height:.5rem;margin:0 .3rem;left:40%}.popover .arrow:after,.popover .arrow:before{position:absolute;display:block;content:\"\";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=top]>.arrow:before,.bs-popover-top>.arrow:before{bottom:0;border-width:.5rem .5rem 0;border-top-color:#00000040}.bs-popover-auto[x-placement^=top]>.arrow:after,.bs-popover-top>.arrow:after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right]>.arrow:before,.bs-popover-right>.arrow:before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:#00000040}.bs-popover-auto[x-placement^=right]>.arrow:after,.bs-popover-right>.arrow:after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=bottom]>.arrow:before,.bs-popover-bottom>.arrow:before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:#00000040}.bs-popover-auto[x-placement^=bottom]>.arrow:after,.bs-popover-bottom>.arrow:after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header:before,.bs-popover-bottom .popover-header:before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:\"\";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left]>.arrow:before,.bs-popover-left>.arrow:before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:#00000040}.bs-popover-auto[x-placement^=left]>.arrow:after,.bs-popover-left>.arrow:after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
501
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ImxViewerComponent, decorators: [{
502
502
  type: Component,
503
503
  args: [{ selector: 'imx-viewer', template: "<div id=\"imxviewer\" data-test-id=\"imx-viewer\">\n <div id=\"svgContainer\" class=\"col-md-12 top10\" [hidden]=\"errors\" (click)=\"hidePopOver()\" data-test-id=\"svg-container\">\n <svg #svgParent xmlns=\"http://www.w3.org/2000/svg\"></svg>\n </div>\n <div id=\"popover\" class=\"popover top bs-popover-top\" [ngStyle]=\"popoverStyle\" (mouseleave)=\"hidePopOver()\" data-test-id=\"popover\">\n <div class=\"arrow\"></div>\n <h3 class=\"popover-header\" *ngIf=\"popoverTitleContent !== undefined\" [innerHTML]=\"popoverTitleContent\" data-test-id=\"popover-header\"></h3>\n <div class=\"popover-body\" [innerHTML]=\"popoverHtmlContent\" data-test-id=\"popover-body\"></div>\n </div>\n</div>\n", styles: [".popover{top:0;left:0;z-index:1060;max-width:100%;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif;font-style:normal;font-weight:400;line-height:1.5;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;visibility:hidden}.popover,.popover .arrow{position:absolute;display:block}.popover .arrow{width:1rem;height:.5rem;margin:0 .3rem;left:40%}.popover .arrow:after,.popover .arrow:before{position:absolute;display:block;content:\"\";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=top]>.arrow:before,.bs-popover-top>.arrow:before{bottom:0;border-width:.5rem .5rem 0;border-top-color:#00000040}.bs-popover-auto[x-placement^=top]>.arrow:after,.bs-popover-top>.arrow:after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right]>.arrow:before,.bs-popover-right>.arrow:before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:#00000040}.bs-popover-auto[x-placement^=right]>.arrow:after,.bs-popover-right>.arrow:after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=bottom]>.arrow:before,.bs-popover-bottom>.arrow:before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:#00000040}.bs-popover-auto[x-placement^=bottom]>.arrow:after,.bs-popover-bottom>.arrow:after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header:before,.bs-popover-bottom .popover-header:before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:\"\";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left]>.arrow:before,.bs-popover-left>.arrow:before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:#00000040}.bs-popover-auto[x-placement^=left]>.arrow:after,.bs-popover-left>.arrow:after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}\n"] }]
504
504
  }], ctorParameters: function () {
@@ -533,16 +533,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImpor
533
533
 
534
534
  class ImxViewerModule {
535
535
  }
536
- ImxViewerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: ImxViewerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
537
- ImxViewerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: ImxViewerModule, declarations: [ImxViewerComponent], imports: [CommonModule,
536
+ ImxViewerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ImxViewerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
537
+ ImxViewerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: ImxViewerModule, declarations: [ImxViewerComponent], imports: [CommonModule,
538
538
  HttpClientModule], exports: [ImxViewerComponent] });
539
- ImxViewerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: ImxViewerModule, providers: [
539
+ ImxViewerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ImxViewerModule, providers: [
540
540
  { provide: DocumentToken, useFactory: documentProvider }
541
- ], imports: [[
542
- CommonModule,
543
- HttpClientModule
544
- ]] });
545
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: ImxViewerModule, decorators: [{
541
+ ], imports: [CommonModule,
542
+ HttpClientModule] });
543
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ImxViewerModule, decorators: [{
546
544
  type: NgModule,
547
545
  args: [{
548
546
  imports: [
@@ -1 +1 @@
1
- {"version":3,"file":"loxia-imx-viewer.mjs","sources":["../../src/model/point.ts","../../src/model/selectie-event.ts","../../src/utils/classes-util.ts","../../src/utils/document-token.ts","../../src/utils/svg-rect-util.ts","../../src/utils/focus-util.ts","../../src/services/puic-helper.service.ts","../../src/services/clickarea.service.ts","../../src/components/imx-viewer.component.ts","../../src/components/imx-viewer.component.html","../../src/imx-viewer.module.ts","../../src/model/popover-info.ts","../../src/model/svg-info.ts","../../src/model/selectie-info.ts","../../src/loxia-imx-viewer.ts"],"sourcesContent":["export class Point {\r\n constructor(public x: number, public y: number) {\r\n }\r\n}\r\n","export class SelectieEvent {\r\n constructor(public id: string, public event: MouseEvent) {\r\n }\r\n}\r\n","export class ClassesUtil {\n static addClass(elem: Element, cls: string) {\n if ('' === cls) {\n return;\n }\n const classAttr = elem.getAttribute('class');\n const classes = classAttr ? classAttr.split(' ') : [];\n for (let j = 0; j < classes.length; j++) {\n if (classes[j] === cls) {\n return;\n }\n }\n elem.setAttribute('class', classAttr ? classAttr + ' ' + cls : cls);\n }\n\n static removeClassesStartingWith(elem: Element, cls: string) {\n const classAttr = elem.getAttribute('class');\n if (!classAttr) {\n return;\n }\n const classes = classAttr.split(' ');\n let j = classes.length;\n while (j--) {\n if (classes[j].indexOf(cls) === 0) {\n classes.splice(j, 1);\n }\n }\n\n if (classes.length === 0) {\n elem.removeAttribute('class');\n }\n else {\n elem.setAttribute('class', classes.join(' '));\n }\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const DocumentToken = new InjectionToken('Document');\nexport function documentProvider() { return document; }\n","export class SvgRectUtil {\n\n // copied from java.awt.Rectangle\n public static rectUnion(r1: SVGRect, r2: SVGRect): SVGRect {\n if (!r1) {\n return r2;\n }\n\n let tx2 = r1.width;\n let ty2 = r1.height;\n if ((tx2 | ty2) < 0) { // tslint:disable-line\n // This rectangle has negative dimensions...\n // If r has non-negative dimensions then it is the answer.\n // If r is non-existant (has a negative dimension), then both\n // are non-existant and we can return any non-existant rectangle\n // as an answer. Thus, returning r meets that criterion.\n // Either way, r is our answer.\n return r2;\n }\n let rx2 = r2.width;\n let ry2 = r2.height;\n if ((rx2 | ry2) < 0) { // tslint:disable-line\n return r1;\n }\n let tx1 = r1.x;\n let ty1 = r1.y;\n tx2 += tx1;\n ty2 += ty1;\n const rx1 = r2.x;\n const ry1 = r2.y;\n rx2 += rx1;\n ry2 += ry1;\n if (tx1 > rx1) {\n tx1 = rx1;\n }\n if (ty1 > ry1) {\n ty1 = ry1;\n }\n if (tx2 < rx2) {\n tx2 = rx2;\n }\n if (ty2 < ry2) {\n ty2 = ry2;\n }\n tx2 -= tx1;\n ty2 -= ty1;\n\n return new DOMRect(tx1, ty1, tx2, ty2);\n }\n}\n","import { PuicHelperService } from '../services/puic-helper.service';\nimport { SvgRectUtil } from './svg-rect-util';\nimport * as SvgPanZoom from 'svg-pan-zoom';\n\nexport class FocusUtil {\n\n public static focusOnIds(focusIds: string[], svgPanZoomRef: SvgPanZoom.Instance, puicHelper: PuicHelperService) {\n if (focusIds && focusIds.length > 0) {\n\n // calculate the union rectangle of elements with ids\n const svgContainer = document.getElementById('svgContainer');\n const rootSvgDoc = svgContainer.firstChild as SVGSVGElement;\n let resultRect: SVGRect;\n if (rootSvgDoc && rootSvgDoc.nodeName === 'svg') {\n focusIds.forEach(puic => {\n const elems: NodeListOf<HTMLElement> = puicHelper.getAllElementsForPuic(puic);\n for (let i = 0; i < elems.length; i++) {\n const elementRect = FocusUtil.getElementRectangleWithNestedSvgOffset(elems[i]);\n resultRect = SvgRectUtil.rectUnion(resultRect, elementRect);\n }\n });\n }\n FocusUtil.focusOnRect(resultRect, svgContainer.getBoundingClientRect(), rootSvgDoc, svgPanZoomRef);\n }\n }\n\n static focusOnRect(rect: SVGRect, elementRect: ClientRect, rootSvgDoc: SVGSVGElement, svgPanZoomRef: any) {\n if (rect) {\n // make sure we are in the svgpanzoom transformed area\n const matrix = (rootSvgDoc.getElementsByClassName('svg-pan-zoom_viewport')[0] as SVGGElement).getScreenCTM();\n\n // get from svg coordinate system to webpage coordinate system\n const location = rootSvgDoc.createSVGPoint();\n location.x = rect.x + (rect.width / 2);\n location.y = rect.y + (rect.height / 2);\n const transformedLocation = location.matrixTransform(matrix);\n\n // transform the rectangle dimension (we have to use a SVGPoint since there is no SVGDimension)\n const size = rootSvgDoc.createSVGPoint();\n size.x = rect.width;\n size.y = rect.height;\n const transformedSize = size.matrixTransform(matrix.inverse());\n\n // tel the svgPanZoom to zoom on the rectangle in relation to the total view size\n const zoomFactor = Math.min(5, elementRect.height / Math.abs(transformedSize.y));\n svgPanZoomRef.zoomAtPoint(zoomFactor,\n { x: transformedLocation.x - elementRect.left, y: transformedLocation.y - elementRect.top });\n // tel the svgPanZoom to pan to the middel of the rectangle\n svgPanZoomRef.panBy({\n x: (elementRect.width / 2) - transformedLocation.x,\n y: ((elementRect.height + elementRect.top) / 2) - transformedLocation.y\n });\n }\n }\n\n private static getElementRectangleWithNestedSvgOffset(elem: Element): SVGRect {\n const svgElem = (<SVGGraphicsElement> elem);\n const rect = svgElem.getBBox();\n\n while (elem.parentElement.nodeName !== 'svg') {\n elem = elem.parentElement;\n }\n elem = elem.parentElement;\n rect.x = rect.x + parseInt(elem.getAttribute('x'), 10);\n rect.y = rect.y + parseInt(elem.getAttribute('y'), 10);\n const viewBox = elem.getAttribute('viewBox');\n if (viewBox) {\n const viewBoxCoordinates = viewBox.split(' ');\n rect.x = rect.x - parseInt(viewBoxCoordinates[0], 10);\n rect.y = rect.y - parseInt(viewBoxCoordinates[1], 10);\n }\n return rect;\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PuicHelperService {\n private rootSvg: any;\n\n public setRootSvg = (svgParent: SVGSVGElement) => this.rootSvg = svgParent;\n public getAllElementsForPuic = (puic: string) => this.rootSvg.querySelectorAll(`.p${ puic }, #p${ puic }`) as NodeListOf<HTMLElement>;\n}\n","import { Injectable } from '@angular/core';\nimport { PuicHelperService } from './puic-helper.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ClickareaService {\n private timer: number;\n timeout = 250;\n\n constructor(private puicHelper: PuicHelperService) {\n }\n\n delayedClickAreaCreation(ids: Set<string>) {\n if (ids.size === 0) {\n return;\n }\n\n window.clearTimeout(this.timer);\n this.timer = window.setTimeout(() => this.createClickareas(ids), this.timeout);\n }\n\n /**\n * Mogelijke optimalisatie is om de delta te bepalen van de te verwerken ids\n */\n private createClickareas(ids: Set<string>) {\n Array.from(document.getElementsByClassName('imxview-clickarea')).forEach(x => x.remove());\n\n ids.forEach(id => {\n this.puicHelper.getAllElementsForPuic(id).forEach(element => {\n if (element) {\n const polylines = Array.from(element.getElementsByTagName('polyline'));\n polylines.forEach(p => {\n const clone = p.cloneNode(true) as Element;\n clone.setAttribute('class', 'imxview-clickarea');\n clone.removeAttribute('id');\n element.insertBefore(clone, p);\n });\n }\n });\n });\n }\n}\n","import { HttpClient } from '@angular/common/http';\r\nimport {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Inject,\r\n Input,\r\n NgZone,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { combineLatest, Observable, of as observableOf, throwError as observableThrowError } from 'rxjs';\r\nimport { take } from 'rxjs/operators';\r\nimport SvgPanZoom from 'svg-pan-zoom';\r\nimport { Point } from '../model/point';\r\nimport { PopoverInfo } from '../model/popover-info';\r\nimport { SelectieEvent } from '../model/selectie-event';\r\nimport { SelectieInfo } from '../model/selectie-info';\r\nimport { SvgInfo } from '../model/svg-info';\r\nimport { ClickareaService } from '../services/clickarea.service';\r\nimport { PuicHelperService } from '../services/puic-helper.service';\r\nimport { ClassesUtil } from '../utils/classes-util';\r\nimport { DocumentToken } from '../utils/document-token';\r\nimport { FocusUtil } from '../utils/focus-util';\r\n\r\n@Component({\r\n selector: 'imx-viewer',\r\n templateUrl: './imx-viewer.component.html',\r\n styleUrls: ['./imx-viewer.component.css']\r\n})\r\nexport class ImxViewerComponent implements OnChanges, OnInit, OnDestroy {\r\n private SVG_BASE64_PREFIX = 'data:image/svg+xml;base64,';\r\n private SVG_PREFIX = 'data:image/svg+xml,';\r\n\r\n @Input() useClickArea = false;\r\n @Input() inlineDgnCssImport = false;\r\n @Input() svgInfo: SvgInfo[];\r\n @Input() selectieInfos: SelectieInfo[] = [];\r\n\r\n // Onderstaande inputs worden meegenomen voor clickarea:\r\n @Input() clickableIds: string[] = [];\r\n @Input() rightClickableIds: string[] = [];\r\n @Input() popoverInfos: PopoverInfo[] = [];\r\n\r\n @ViewChild('svgParent', { static: true }) svgParentRef: ElementRef;\r\n\r\n errors = false;\r\n popoverStyle: any = { display: 'inline' };\r\n popoverHtmlContent = '';\r\n popoverTitleContent: string;\r\n\r\n @Output() clickHandler = new EventEmitter<SelectieEvent>();\r\n @Output() rightClickHandler = new EventEmitter<SelectieEvent>();\r\n @Output() svgLoaded = new EventEmitter<void>();\r\n\r\n private svgGeladen = false;\r\n private eventListeners: Map<string, Map<Element, any>> = new Map();\r\n private svgPanZoomRef: SvgPanZoom.Instance;\r\n\r\n constructor(@Inject(DocumentToken) private document: any, private http: HttpClient,\r\n private clickAreaService: ClickareaService, private puicHelper: PuicHelperService) {\r\n }\r\n\r\n ngOnInit() {\r\n this.createSvgPanZoomRefIfNotExists();\r\n this.puicHelper.setRootSvg(this.getSvgParent());\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n // If Imx-viewer is initialized with svgInfo, ngOnChanges is called before ngOnInit.\r\n // In that case we need to create svgPanZoomRef here.\r\n this.createSvgPanZoomRefIfNotExists();\r\n\r\n const { useClickArea, clickableIds, rightClickableIds, popoverInfos, selectieInfos, svgInfo } = changes;\r\n\r\n if (useClickArea || clickableIds || rightClickableIds || popoverInfos) {\r\n this.delayedClickAreaCreation();\r\n }\r\n\r\n if (this.svgInfo && svgInfo) {\r\n this.loadSvgs();\r\n }\r\n\r\n if (this.clickableIds && clickableIds && this.svgGeladen) {\r\n this.addClickEventHandlersToElements(this.clickableIds, 'click');\r\n }\r\n\r\n if (this.rightClickableIds && rightClickableIds && this.svgGeladen) {\r\n this.addClickEventHandlersToElements(this.rightClickableIds, 'contextmenu');\r\n }\r\n\r\n if (this.selectieInfos && selectieInfos && this.svgGeladen) {\r\n this.selectElements();\r\n }\r\n\r\n if (this.popoverInfos && popoverInfos && this.svgGeladen) {\r\n this.addMouseoverEventHandlerToElements();\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.svgPanZoomRef?.destroy();\r\n this.svgPanZoomRef = undefined;\r\n }\r\n\r\n public focusOnIds(focusIds: string[]) {\r\n FocusUtil.focusOnIds(focusIds, this.svgPanZoomRef, this.puicHelper);\r\n }\r\n\r\n public getSvgPanZoomInstance: () => SvgPanZoom.Instance = () => this.svgPanZoomRef;\r\n\r\n // Here only used in test, but also used by applications. Do not remove.\r\n public static getXCoordinate(decodedSvgDataUrl: string) {\r\n let div = document.createElement('div');\r\n div.innerHTML = decodedSvgDataUrl;\r\n // De SVG-width wordt in de svg tag gespecificeerd.\r\n const x = div.firstElementChild.getAttribute('width');\r\n const result = parseFloat(x);\r\n div = null;\r\n return result;\r\n }\r\n\r\n hidePopOver = () => this.popoverStyle.visibility = 'hidden';\r\n\r\n private createSvgPanZoomRefIfNotExists() {\r\n if (!this.svgPanZoomRef) {\r\n this.svgPanZoomRef = SvgPanZoom(this.getSvgParent(), {\r\n fit: false,\r\n center: true,\r\n dblClickZoomEnabled: false,\r\n onZoom: () => this.hidePopOver(),\r\n onPan: () => this.hidePopOver()\r\n });\r\n\r\n this.addStyleToRootSvg();\r\n }\r\n }\r\n\r\n /**\r\n * Style wordt vanuit javascript toegevoegd na de create van SvgZoomPanRef deze maakt een viewport aan.\r\n * - Clickarea CSS wordt dynamisch aan de SVG toegevoegd, dit voorkomt dat dat er ngcontent property op geplaatst wordt.\r\n * De SVG's worden niet voorzien van ngcontent attribuut.\r\n * - DGN.css import wordt (optioneel) in de root SVG opgenomen, deze is eerst verwijderd uit de SVG's. Om meerdere imports te voorkomen.\r\n * */\r\n private addStyleToRootSvg() {\r\n const defs = document.createElementNS('http://www.w3.org/2000/svg', 'defs');\r\n\r\n let style = this.inlineDgnCssImport ? '@import url(\"dgn.css\");\\n' : '';\r\n style +=\r\n `.imxview-selected > polyline.imxview-clickarea, polyline.imxview-clickarea {\r\n stroke: var(--imxview-clickarea-stroke, transparent);\r\n stroke-width: var(--imxview-clickarea-stroke-width, 10px);\r\n stroke-dasharray: none;\r\n }`;\r\n defs.innerHTML =\r\n `<style type=\"text/css\">\r\n ${ style }\r\n </style>`;\r\n const firstElementChild = this.getSvgParent().firstElementChild;\r\n this.getSvgParent().insertBefore(defs, firstElementChild);\r\n }\r\n\r\n private loadSvgs(): void {\r\n combineLatest(this.svgInfo.map(svgInfo => this.loadSvg(svgInfo.svg)))\r\n .pipe(take(1))\r\n .subscribe(svgs => {\r\n const svg = this.concatenateSvgs(svgs);\r\n this.updateDom(svg);\r\n this.svgGeladen = true;\r\n this.svgLoaded.emit();\r\n this.delayedClickAreaCreation();\r\n this.addClickEventHandlersToElements(this.clickableIds, 'click');\r\n this.addClickEventHandlersToElements(this.rightClickableIds, 'contextmenu');\r\n this.selectElements();\r\n this.addMouseoverEventHandlerToElements();\r\n },\r\n error => this.flagErrors(error)\r\n );\r\n }\r\n\r\n private loadSvg(svgSrc: string): Observable<string> {\r\n if (svgSrc.startsWith('data:')) {\r\n let parsed;\r\n if (svgSrc.startsWith(this.SVG_BASE64_PREFIX)) {\r\n try {\r\n parsed = atob(svgSrc.substring(this.SVG_BASE64_PREFIX.length));\r\n } catch (e) {\r\n return observableThrowError('Data-url parse error');\r\n }\r\n } else if (svgSrc.startsWith(this.SVG_PREFIX)) {\r\n parsed = svgSrc.substring(this.SVG_PREFIX.length);\r\n }\r\n\r\n if (parsed) {\r\n return observableOf(parsed);\r\n }\r\n }\r\n\r\n return this.http.get(svgSrc, { responseType: 'text' });\r\n }\r\n\r\n private addClickEventHandlersToElement(listeners: Map<Element, any>, elem, eventType: string, puic: string) {\r\n const elemAlreadyHasListener = listeners.get(elem);\r\n if (!elemAlreadyHasListener) {\r\n const fn = eventType === 'click' ?\r\n (e) => this.clickHandler.emit(new SelectieEvent(puic, e)) :\r\n (e) => {\r\n e.preventDefault();\r\n this.rightClickHandler.emit(new SelectieEvent(puic, e));\r\n return false;\r\n };\r\n listeners.set(elem, fn);\r\n elem.addEventListener(eventType, fn);\r\n if (eventType === 'click') {\r\n elem.style.cursor = 'pointer';\r\n }\r\n }\r\n }\r\n\r\n private addClickEventHandlersToElements(clickableIds: string[], eventtype: string) {\r\n const listeners = this.removeOldState(eventtype);\r\n\r\n if (clickableIds) {\r\n clickableIds.forEach(puic => {\r\n const elements = this.puicHelper.getAllElementsForPuic(puic);\r\n elements.forEach((element) => this.addClickEventHandlersToElement(listeners, element, eventtype, puic));\r\n });\r\n }\r\n }\r\n\r\n private addMouseoverEventHandlerToElements() {\r\n const listeners = this.removeOldState('mouseover');\r\n if (this.popoverInfos) {\r\n this.popoverInfos.forEach(popoverInfo => {\r\n popoverInfo.puicArray.forEach(puic => {\r\n const elems = this.puicHelper.getAllElementsForPuic(puic);\r\n for (let i = 0; i < elems.length; i++) {\r\n const fn = (e) => {\r\n this.popoverHtmlContent = popoverInfo.popoverHtmlContent;\r\n this.popoverTitleContent = popoverInfo.popoverTitleContent;\r\n\r\n // use timeout to have content rendered before getting size\r\n setTimeout(() => this.showPopup(e), 0);\r\n };\r\n\r\n const elem = elems.item(i);\r\n listeners.set(elem, fn);\r\n elem.addEventListener('mouseover', fn);\r\n }\r\n }\r\n );\r\n }\r\n );\r\n }\r\n }\r\n\r\n private concatenateSvgs(svgs: string[]): string {\r\n let svgContent = '';\r\n\r\n for (let i = 0, len = this.svgInfo.length; i < len; i++) {\r\n const sourceCoordinates = this.svgInfo[i].coordinates || new Point(0, 0);\r\n\r\n const div = document.createElement('div');\r\n\r\n /** Verwijder dgn.css import uit geleverde SVG's.\r\n * De import wordt optioneel (standaard aan) in de root SVG geplaats om te voorkomen dat de import meermaals gebeurd.\r\n * zie addStyleToRootSvg()\r\n */\r\n div.innerHTML = svgs[i].replace('@import url(\"dgn.css\");', '');\r\n div.firstElementChild.setAttribute('x', sourceCoordinates.x.toString());\r\n div.firstElementChild.setAttribute('y', sourceCoordinates.y.toString());\r\n\r\n svgContent += div.innerHTML;\r\n }\r\n\r\n return svgContent;\r\n }\r\n\r\n private flagErrors(error) {\r\n console.log(error);\r\n this.errors = true;\r\n }\r\n\r\n private removeOldState(eventType: string): Map<Element, any> {\r\n let listeners = this.eventListeners.get(eventType);\r\n if (listeners) {\r\n listeners.forEach((fn, el) => {\r\n el.removeEventListener(eventType, fn);\r\n if (eventType === 'click') {\r\n el.setAttribute('style', ImxViewerComponent.setDefaultCursor(el));\r\n }\r\n });\r\n }\r\n listeners = new Map();\r\n this.eventListeners.set(eventType, listeners);\r\n return listeners;\r\n }\r\n\r\n private selectElements() {\r\n const allElems = this.getSvgParent().querySelectorAll('[class*=imxview-selected]');\r\n for (let j = 0; j < allElems.length; j++) {\r\n ClassesUtil.removeClassesStartingWith(allElems[j], 'imxview-selected');\r\n }\r\n\r\n if (this.selectieInfos) {\r\n this.selectieInfos.forEach(selectieInfo => {\r\n selectieInfo.ids.forEach(id => {\r\n this.puicHelper.getAllElementsForPuic(id).forEach(elem => {\r\n ClassesUtil.addClass(elem, 'imxview-selected');\r\n if ('' !== selectieInfo.clazz) {\r\n ClassesUtil.addClass(elem, 'imxview-selected-' + selectieInfo.clazz);\r\n }\r\n });\r\n });\r\n });\r\n }\r\n }\r\n\r\n private static setDefaultCursor(el): string {\r\n const oudeStyle = el.getAttribute('style');\r\n return oudeStyle ? oudeStyle.replace('pointer', 'default') : 'cursor: default';\r\n }\r\n\r\n private showPopup(e) {\r\n const popoverElem = document.getElementById('popover').getBoundingClientRect();\r\n const left = e.layerX - (popoverElem.width / 2) + 'px';\r\n const top = e.layerY - (popoverElem.height + 8) + 'px';\r\n this.popoverStyle = {\r\n left: left, top: top, position: 'absolute',\r\n display: 'inline', visibility: 'visible'\r\n };\r\n }\r\n\r\n private updateDom(svg: String) {\r\n const svgGroup = this.getSvgParent().getElementsByClassName('svg-pan-zoom_viewport')[0];\r\n svgGroup.innerHTML = svg.substring(svg.indexOf('<svg'));\r\n this.svgPanZoomRef.updateBBox();\r\n\r\n this.svgPanZoomRef.resize();\r\n this.svgPanZoomRef.fit();\r\n this.svgPanZoomRef.center();\r\n }\r\n\r\n private delayedClickAreaCreation() {\r\n if (this.svgGeladen && this.useClickArea) {\r\n const clickareaIds = new Set([...this.clickableIds, ...this.rightClickableIds,\r\n ...this.popoverInfos.flatMap(pi => pi.puicArray)]);\r\n this.clickAreaService.delayedClickAreaCreation(clickareaIds);\r\n }\r\n }\r\n\r\n private getSvgParent = () => this.svgParentRef.nativeElement;\r\n}\r\n","<div id=\"imxviewer\" data-test-id=\"imx-viewer\">\n <div id=\"svgContainer\" class=\"col-md-12 top10\" [hidden]=\"errors\" (click)=\"hidePopOver()\" data-test-id=\"svg-container\">\n <svg #svgParent xmlns=\"http://www.w3.org/2000/svg\"></svg>\n </div>\n <div id=\"popover\" class=\"popover top bs-popover-top\" [ngStyle]=\"popoverStyle\" (mouseleave)=\"hidePopOver()\" data-test-id=\"popover\">\n <div class=\"arrow\"></div>\n <h3 class=\"popover-header\" *ngIf=\"popoverTitleContent !== undefined\" [innerHTML]=\"popoverTitleContent\" data-test-id=\"popover-header\"></h3>\n <div class=\"popover-body\" [innerHTML]=\"popoverHtmlContent\" data-test-id=\"popover-body\"></div>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ImxViewerComponent } from './components/imx-viewer.component';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { documentProvider, DocumentToken } from './utils/document-token';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n HttpClientModule\r\n ],\r\n declarations: [\r\n ImxViewerComponent\r\n ],\r\n exports: [\r\n ImxViewerComponent\r\n ],\r\n providers: [\r\n { provide: DocumentToken, useFactory: documentProvider }\r\n ]\r\n})\r\nexport class ImxViewerModule {\r\n}\r\n","export class PopoverInfo {\r\n public popoverTitleContent: string;\r\n constructor (public puicArray: string[], public popoverHtmlContent: string) {\r\n }\r\n}\r\n","import { Point } from './point';\r\n\r\nexport class SvgInfo {\r\n constructor(public svg: string, public coordinates?: Point) {\r\n }\r\n}\r\n","export class SelectieInfo {\n constructor(public ids: string[], public clazz: string) {\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["observableThrowError","observableOf"],"mappings":"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"}
1
+ {"version":3,"file":"loxia-imx-viewer.mjs","sources":["../../src/model/point.ts","../../src/model/selectie-event.ts","../../src/utils/classes-util.ts","../../src/utils/document-token.ts","../../src/utils/svg-rect-util.ts","../../src/utils/focus-util.ts","../../src/services/puic-helper.service.ts","../../src/services/clickarea.service.ts","../../src/components/imx-viewer.component.ts","../../src/components/imx-viewer.component.html","../../src/imx-viewer.module.ts","../../src/model/popover-info.ts","../../src/model/svg-info.ts","../../src/model/selectie-info.ts","../../src/loxia-imx-viewer.ts"],"sourcesContent":["export class Point {\r\n constructor(public x: number, public y: number) {\r\n }\r\n}\r\n","export class SelectieEvent {\r\n constructor(public id: string, public event: MouseEvent) {\r\n }\r\n}\r\n","export class ClassesUtil {\n static addClass(elem: Element, cls: string) {\n if ('' === cls) {\n return;\n }\n const classAttr = elem.getAttribute('class');\n const classes = classAttr ? classAttr.split(' ') : [];\n for (let j = 0; j < classes.length; j++) {\n if (classes[j] === cls) {\n return;\n }\n }\n elem.setAttribute('class', classAttr ? classAttr + ' ' + cls : cls);\n }\n\n static removeClassesStartingWith(elem: Element, cls: string) {\n const classAttr = elem.getAttribute('class');\n if (!classAttr) {\n return;\n }\n const classes = classAttr.split(' ');\n let j = classes.length;\n while (j--) {\n if (classes[j].indexOf(cls) === 0) {\n classes.splice(j, 1);\n }\n }\n\n if (classes.length === 0) {\n elem.removeAttribute('class');\n }\n else {\n elem.setAttribute('class', classes.join(' '));\n }\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const DocumentToken = new InjectionToken('Document');\nexport function documentProvider() { return document; }\n","export class SvgRectUtil {\n\n // copied from java.awt.Rectangle\n public static rectUnion(r1: SVGRect, r2: SVGRect): SVGRect {\n if (!r1) {\n return r2;\n }\n\n let tx2 = r1.width;\n let ty2 = r1.height;\n if ((tx2 | ty2) < 0) { // tslint:disable-line\n // This rectangle has negative dimensions...\n // If r has non-negative dimensions then it is the answer.\n // If r is non-existant (has a negative dimension), then both\n // are non-existant and we can return any non-existant rectangle\n // as an answer. Thus, returning r meets that criterion.\n // Either way, r is our answer.\n return r2;\n }\n let rx2 = r2.width;\n let ry2 = r2.height;\n if ((rx2 | ry2) < 0) { // tslint:disable-line\n return r1;\n }\n let tx1 = r1.x;\n let ty1 = r1.y;\n tx2 += tx1;\n ty2 += ty1;\n const rx1 = r2.x;\n const ry1 = r2.y;\n rx2 += rx1;\n ry2 += ry1;\n if (tx1 > rx1) {\n tx1 = rx1;\n }\n if (ty1 > ry1) {\n ty1 = ry1;\n }\n if (tx2 < rx2) {\n tx2 = rx2;\n }\n if (ty2 < ry2) {\n ty2 = ry2;\n }\n tx2 -= tx1;\n ty2 -= ty1;\n\n return new DOMRect(tx1, ty1, tx2, ty2);\n }\n}\n","import { PuicHelperService } from '../services/puic-helper.service';\nimport { SvgRectUtil } from './svg-rect-util';\nimport * as SvgPanZoom from 'svg-pan-zoom';\n\nexport class FocusUtil {\n\n public static focusOnIds(focusIds: string[], svgPanZoomRef: SvgPanZoom.Instance, puicHelper: PuicHelperService) {\n if (focusIds && focusIds.length > 0) {\n\n // calculate the union rectangle of elements with ids\n const svgContainer = document.getElementById('svgContainer');\n const rootSvgDoc = svgContainer.firstChild as SVGSVGElement;\n let resultRect: SVGRect;\n if (rootSvgDoc && rootSvgDoc.nodeName === 'svg') {\n focusIds.forEach(puic => {\n const elems: NodeListOf<HTMLElement> = puicHelper.getAllElementsForPuic(puic);\n for (let i = 0; i < elems.length; i++) {\n const elementRect = FocusUtil.getElementRectangleWithNestedSvgOffset(elems[i]);\n resultRect = SvgRectUtil.rectUnion(resultRect, elementRect);\n }\n });\n }\n FocusUtil.focusOnRect(resultRect, svgContainer.getBoundingClientRect(), rootSvgDoc, svgPanZoomRef);\n }\n }\n\n static focusOnRect(rect: SVGRect, elementRect: ClientRect, rootSvgDoc: SVGSVGElement, svgPanZoomRef: any) {\n if (rect) {\n // make sure we are in the svgpanzoom transformed area\n const matrix = (rootSvgDoc.getElementsByClassName('svg-pan-zoom_viewport')[0] as SVGGElement).getScreenCTM();\n\n // get from svg coordinate system to webpage coordinate system\n const location = rootSvgDoc.createSVGPoint();\n location.x = rect.x + (rect.width / 2);\n location.y = rect.y + (rect.height / 2);\n const transformedLocation = location.matrixTransform(matrix);\n\n // transform the rectangle dimension (we have to use a SVGPoint since there is no SVGDimension)\n const size = rootSvgDoc.createSVGPoint();\n size.x = rect.width;\n size.y = rect.height;\n const transformedSize = size.matrixTransform(matrix.inverse());\n\n // tel the svgPanZoom to zoom on the rectangle in relation to the total view size\n const zoomFactor = Math.min(5, elementRect.height / Math.abs(transformedSize.y));\n svgPanZoomRef.zoomAtPoint(zoomFactor,\n { x: transformedLocation.x - elementRect.left, y: transformedLocation.y - elementRect.top });\n // tel the svgPanZoom to pan to the middel of the rectangle\n svgPanZoomRef.panBy({\n x: (elementRect.width / 2) - transformedLocation.x,\n y: ((elementRect.height + elementRect.top) / 2) - transformedLocation.y\n });\n }\n }\n\n private static getElementRectangleWithNestedSvgOffset(elem: Element): SVGRect {\n const svgElem = (<SVGGraphicsElement> elem);\n const rect = svgElem.getBBox();\n\n while (elem.parentElement.nodeName !== 'svg') {\n elem = elem.parentElement;\n }\n elem = elem.parentElement;\n rect.x = rect.x + parseInt(elem.getAttribute('x'), 10);\n rect.y = rect.y + parseInt(elem.getAttribute('y'), 10);\n const viewBox = elem.getAttribute('viewBox');\n if (viewBox) {\n const viewBoxCoordinates = viewBox.split(' ');\n rect.x = rect.x - parseInt(viewBoxCoordinates[0], 10);\n rect.y = rect.y - parseInt(viewBoxCoordinates[1], 10);\n }\n return rect;\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PuicHelperService {\n private rootSvg: any;\n\n public setRootSvg = (svgParent: SVGSVGElement) => this.rootSvg = svgParent;\n public getAllElementsForPuic = (puic: string) => this.rootSvg.querySelectorAll(`.p${ puic }, #p${ puic }`) as NodeListOf<HTMLElement>;\n}\n","import { Injectable } from '@angular/core';\nimport { PuicHelperService } from './puic-helper.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ClickareaService {\n private timer: number;\n timeout = 250;\n\n constructor(private puicHelper: PuicHelperService) {\n }\n\n delayedClickAreaCreation(ids: Set<string>) {\n if (ids.size === 0) {\n return;\n }\n\n window.clearTimeout(this.timer);\n this.timer = window.setTimeout(() => this.createClickareas(ids), this.timeout);\n }\n\n /**\n * Mogelijke optimalisatie is om de delta te bepalen van de te verwerken ids\n */\n private createClickareas(ids: Set<string>) {\n Array.from(document.getElementsByClassName('imxview-clickarea')).forEach(x => x.remove());\n\n ids.forEach(id => {\n this.puicHelper.getAllElementsForPuic(id).forEach(element => {\n if (element) {\n const polylines = Array.from(element.getElementsByTagName('polyline'));\n polylines.forEach(p => {\n const clone = p.cloneNode(true) as Element;\n clone.setAttribute('class', 'imxview-clickarea');\n clone.removeAttribute('id');\n element.insertBefore(clone, p);\n });\n }\n });\n });\n }\n}\n","import { HttpClient } from '@angular/common/http';\r\nimport {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Inject,\r\n Input,\r\n NgZone,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { combineLatest, Observable, of as observableOf, throwError as observableThrowError } from 'rxjs';\r\nimport { take } from 'rxjs/operators';\r\nimport SvgPanZoom from 'svg-pan-zoom';\r\nimport { Point } from '../model/point';\r\nimport { PopoverInfo } from '../model/popover-info';\r\nimport { SelectieEvent } from '../model/selectie-event';\r\nimport { SelectieInfo } from '../model/selectie-info';\r\nimport { SvgInfo } from '../model/svg-info';\r\nimport { ClickareaService } from '../services/clickarea.service';\r\nimport { PuicHelperService } from '../services/puic-helper.service';\r\nimport { ClassesUtil } from '../utils/classes-util';\r\nimport { DocumentToken } from '../utils/document-token';\r\nimport { FocusUtil } from '../utils/focus-util';\r\n\r\n@Component({\r\n selector: 'imx-viewer',\r\n templateUrl: './imx-viewer.component.html',\r\n styleUrls: ['./imx-viewer.component.css']\r\n})\r\nexport class ImxViewerComponent implements OnChanges, OnInit, OnDestroy {\r\n private SVG_BASE64_PREFIX = 'data:image/svg+xml;base64,';\r\n private SVG_PREFIX = 'data:image/svg+xml,';\r\n\r\n @Input() useClickArea = false;\r\n @Input() inlineDgnCssImport = false;\r\n @Input() svgInfo: SvgInfo[];\r\n @Input() selectieInfos: SelectieInfo[] = [];\r\n\r\n // Onderstaande inputs worden meegenomen voor clickarea:\r\n @Input() clickableIds: string[] = [];\r\n @Input() rightClickableIds: string[] = [];\r\n @Input() popoverInfos: PopoverInfo[] = [];\r\n\r\n @ViewChild('svgParent', { static: true }) svgParentRef: ElementRef;\r\n\r\n errors = false;\r\n popoverStyle: any = { display: 'inline' };\r\n popoverHtmlContent = '';\r\n popoverTitleContent: string;\r\n\r\n @Output() clickHandler = new EventEmitter<SelectieEvent>();\r\n @Output() rightClickHandler = new EventEmitter<SelectieEvent>();\r\n @Output() svgLoaded = new EventEmitter<void>();\r\n\r\n private svgGeladen = false;\r\n private eventListeners: Map<string, Map<Element, any>> = new Map();\r\n private svgPanZoomRef: SvgPanZoom.Instance;\r\n\r\n constructor(@Inject(DocumentToken) private document: any, private http: HttpClient,\r\n private clickAreaService: ClickareaService, private puicHelper: PuicHelperService) {\r\n }\r\n\r\n ngOnInit() {\r\n this.createSvgPanZoomRefIfNotExists();\r\n this.puicHelper.setRootSvg(this.getSvgParent());\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n // If Imx-viewer is initialized with svgInfo, ngOnChanges is called before ngOnInit.\r\n // In that case we need to create svgPanZoomRef here.\r\n this.createSvgPanZoomRefIfNotExists();\r\n\r\n const { useClickArea, clickableIds, rightClickableIds, popoverInfos, selectieInfos, svgInfo } = changes;\r\n\r\n if (useClickArea || clickableIds || rightClickableIds || popoverInfos) {\r\n this.delayedClickAreaCreation();\r\n }\r\n\r\n if (this.svgInfo && svgInfo) {\r\n this.loadSvgs();\r\n }\r\n\r\n if (this.clickableIds && clickableIds && this.svgGeladen) {\r\n this.addClickEventHandlersToElements(this.clickableIds, 'click');\r\n }\r\n\r\n if (this.rightClickableIds && rightClickableIds && this.svgGeladen) {\r\n this.addClickEventHandlersToElements(this.rightClickableIds, 'contextmenu');\r\n }\r\n\r\n if (this.selectieInfos && selectieInfos && this.svgGeladen) {\r\n this.selectElements();\r\n }\r\n\r\n if (this.popoverInfos && popoverInfos && this.svgGeladen) {\r\n this.addMouseoverEventHandlerToElements();\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.svgPanZoomRef?.destroy();\r\n this.svgPanZoomRef = undefined;\r\n }\r\n\r\n public focusOnIds(focusIds: string[]) {\r\n FocusUtil.focusOnIds(focusIds, this.svgPanZoomRef, this.puicHelper);\r\n }\r\n\r\n public getSvgPanZoomInstance: () => SvgPanZoom.Instance = () => this.svgPanZoomRef;\r\n\r\n // Here only used in test, but also used by applications. Do not remove.\r\n public static getXCoordinate(decodedSvgDataUrl: string) {\r\n let div = document.createElement('div');\r\n div.innerHTML = decodedSvgDataUrl;\r\n // De SVG-width wordt in de svg tag gespecificeerd.\r\n const x = div.firstElementChild.getAttribute('width');\r\n const result = parseFloat(x);\r\n div = null;\r\n return result;\r\n }\r\n\r\n hidePopOver = () => this.popoverStyle.visibility = 'hidden';\r\n\r\n private createSvgPanZoomRefIfNotExists() {\r\n if (!this.svgPanZoomRef) {\r\n this.svgPanZoomRef = SvgPanZoom(this.getSvgParent(), {\r\n fit: false,\r\n center: true,\r\n dblClickZoomEnabled: false,\r\n onZoom: () => this.hidePopOver(),\r\n onPan: () => this.hidePopOver()\r\n });\r\n\r\n this.addStyleToRootSvg();\r\n }\r\n }\r\n\r\n /**\r\n * Style wordt vanuit javascript toegevoegd na de create van SvgZoomPanRef deze maakt een viewport aan.\r\n * - Clickarea CSS wordt dynamisch aan de SVG toegevoegd, dit voorkomt dat dat er ngcontent property op geplaatst wordt.\r\n * De SVG's worden niet voorzien van ngcontent attribuut.\r\n * - DGN.css import wordt (optioneel) in de root SVG opgenomen, deze is eerst verwijderd uit de SVG's. Om meerdere imports te voorkomen.\r\n * */\r\n private addStyleToRootSvg() {\r\n const defs = document.createElementNS('http://www.w3.org/2000/svg', 'defs');\r\n\r\n let style = this.inlineDgnCssImport ? '@import url(\"dgn.css\");\\n' : '';\r\n style +=\r\n `.imxview-selected > polyline.imxview-clickarea, polyline.imxview-clickarea {\r\n stroke: var(--imxview-clickarea-stroke, transparent);\r\n stroke-width: var(--imxview-clickarea-stroke-width, 10px);\r\n stroke-dasharray: none;\r\n }`;\r\n defs.innerHTML =\r\n `<style type=\"text/css\">\r\n ${ style }\r\n </style>`;\r\n const firstElementChild = this.getSvgParent().firstElementChild;\r\n this.getSvgParent().insertBefore(defs, firstElementChild);\r\n }\r\n\r\n private loadSvgs(): void {\r\n combineLatest(this.svgInfo.map(svgInfo => this.loadSvg(svgInfo.svg)))\r\n .pipe(take(1))\r\n .subscribe(svgs => {\r\n const svg = this.concatenateSvgs(svgs);\r\n this.updateDom(svg);\r\n this.svgGeladen = true;\r\n this.svgLoaded.emit();\r\n this.delayedClickAreaCreation();\r\n this.addClickEventHandlersToElements(this.clickableIds, 'click');\r\n this.addClickEventHandlersToElements(this.rightClickableIds, 'contextmenu');\r\n this.selectElements();\r\n this.addMouseoverEventHandlerToElements();\r\n },\r\n error => this.flagErrors(error)\r\n );\r\n }\r\n\r\n private loadSvg(svgSrc: string): Observable<string> {\r\n if (svgSrc.startsWith('data:')) {\r\n let parsed;\r\n if (svgSrc.startsWith(this.SVG_BASE64_PREFIX)) {\r\n try {\r\n parsed = atob(svgSrc.substring(this.SVG_BASE64_PREFIX.length));\r\n } catch (e) {\r\n return observableThrowError('Data-url parse error');\r\n }\r\n } else if (svgSrc.startsWith(this.SVG_PREFIX)) {\r\n parsed = svgSrc.substring(this.SVG_PREFIX.length);\r\n }\r\n\r\n if (parsed) {\r\n return observableOf(parsed);\r\n }\r\n }\r\n\r\n return this.http.get(svgSrc, { responseType: 'text' });\r\n }\r\n\r\n private addClickEventHandlersToElement(listeners: Map<Element, any>, elem, eventType: string, puic: string) {\r\n const elemAlreadyHasListener = listeners.get(elem);\r\n if (!elemAlreadyHasListener) {\r\n const fn = eventType === 'click' ?\r\n (e) => this.clickHandler.emit(new SelectieEvent(puic, e)) :\r\n (e) => {\r\n e.preventDefault();\r\n this.rightClickHandler.emit(new SelectieEvent(puic, e));\r\n return false;\r\n };\r\n listeners.set(elem, fn);\r\n elem.addEventListener(eventType, fn);\r\n if (eventType === 'click') {\r\n elem.style.cursor = 'pointer';\r\n }\r\n }\r\n }\r\n\r\n private addClickEventHandlersToElements(clickableIds: string[], eventtype: string) {\r\n const listeners = this.removeOldState(eventtype);\r\n\r\n if (clickableIds) {\r\n clickableIds.forEach(puic => {\r\n const elements = this.puicHelper.getAllElementsForPuic(puic);\r\n elements.forEach((element) => this.addClickEventHandlersToElement(listeners, element, eventtype, puic));\r\n });\r\n }\r\n }\r\n\r\n private addMouseoverEventHandlerToElements() {\r\n const listeners = this.removeOldState('mouseover');\r\n if (this.popoverInfos) {\r\n this.popoverInfos.forEach(popoverInfo => {\r\n popoverInfo.puicArray.forEach(puic => {\r\n const elems = this.puicHelper.getAllElementsForPuic(puic);\r\n for (let i = 0; i < elems.length; i++) {\r\n const fn = (e) => {\r\n this.popoverHtmlContent = popoverInfo.popoverHtmlContent;\r\n this.popoverTitleContent = popoverInfo.popoverTitleContent;\r\n\r\n // use timeout to have content rendered before getting size\r\n setTimeout(() => this.showPopup(e), 0);\r\n };\r\n\r\n const elem = elems.item(i);\r\n listeners.set(elem, fn);\r\n elem.addEventListener('mouseover', fn);\r\n }\r\n }\r\n );\r\n }\r\n );\r\n }\r\n }\r\n\r\n private concatenateSvgs(svgs: string[]): string {\r\n let svgContent = '';\r\n\r\n for (let i = 0, len = this.svgInfo.length; i < len; i++) {\r\n const sourceCoordinates = this.svgInfo[i].coordinates || new Point(0, 0);\r\n\r\n const div = document.createElement('div');\r\n\r\n /** Verwijder dgn.css import uit geleverde SVG's.\r\n * De import wordt optioneel (standaard aan) in de root SVG geplaats om te voorkomen dat de import meermaals gebeurd.\r\n * zie addStyleToRootSvg()\r\n */\r\n div.innerHTML = svgs[i].replace('@import url(\"dgn.css\");', '');\r\n div.firstElementChild.setAttribute('x', sourceCoordinates.x.toString());\r\n div.firstElementChild.setAttribute('y', sourceCoordinates.y.toString());\r\n\r\n svgContent += div.innerHTML;\r\n }\r\n\r\n return svgContent;\r\n }\r\n\r\n private flagErrors(error) {\r\n console.log(error);\r\n this.errors = true;\r\n }\r\n\r\n private removeOldState(eventType: string): Map<Element, any> {\r\n let listeners = this.eventListeners.get(eventType);\r\n if (listeners) {\r\n listeners.forEach((fn, el) => {\r\n el.removeEventListener(eventType, fn);\r\n if (eventType === 'click') {\r\n el.setAttribute('style', ImxViewerComponent.setDefaultCursor(el));\r\n }\r\n });\r\n }\r\n listeners = new Map();\r\n this.eventListeners.set(eventType, listeners);\r\n return listeners;\r\n }\r\n\r\n private selectElements() {\r\n const allElems = this.getSvgParent().querySelectorAll('[class*=imxview-selected]');\r\n for (let j = 0; j < allElems.length; j++) {\r\n ClassesUtil.removeClassesStartingWith(allElems[j], 'imxview-selected');\r\n }\r\n\r\n if (this.selectieInfos) {\r\n this.selectieInfos.forEach(selectieInfo => {\r\n selectieInfo.ids.forEach(id => {\r\n this.puicHelper.getAllElementsForPuic(id).forEach(elem => {\r\n ClassesUtil.addClass(elem, 'imxview-selected');\r\n if ('' !== selectieInfo.clazz) {\r\n ClassesUtil.addClass(elem, 'imxview-selected-' + selectieInfo.clazz);\r\n }\r\n });\r\n });\r\n });\r\n }\r\n }\r\n\r\n private static setDefaultCursor(el): string {\r\n const oudeStyle = el.getAttribute('style');\r\n return oudeStyle ? oudeStyle.replace('pointer', 'default') : 'cursor: default';\r\n }\r\n\r\n private showPopup(e) {\r\n const popoverElem = document.getElementById('popover').getBoundingClientRect();\r\n const left = e.layerX - (popoverElem.width / 2) + 'px';\r\n const top = e.layerY - (popoverElem.height + 8) + 'px';\r\n this.popoverStyle = {\r\n left: left, top: top, position: 'absolute',\r\n display: 'inline', visibility: 'visible'\r\n };\r\n }\r\n\r\n private updateDom(svg: String) {\r\n const svgGroup = this.getSvgParent().getElementsByClassName('svg-pan-zoom_viewport')[0];\r\n svgGroup.innerHTML = svg.substring(svg.indexOf('<svg'));\r\n this.svgPanZoomRef.updateBBox();\r\n\r\n this.svgPanZoomRef.resize();\r\n this.svgPanZoomRef.fit();\r\n this.svgPanZoomRef.center();\r\n }\r\n\r\n private delayedClickAreaCreation() {\r\n if (this.svgGeladen && this.useClickArea) {\r\n const clickareaIds = new Set([...this.clickableIds, ...this.rightClickableIds,\r\n ...this.popoverInfos.flatMap(pi => pi.puicArray)]);\r\n this.clickAreaService.delayedClickAreaCreation(clickareaIds);\r\n }\r\n }\r\n\r\n private getSvgParent = () => this.svgParentRef.nativeElement;\r\n}\r\n","<div id=\"imxviewer\" data-test-id=\"imx-viewer\">\n <div id=\"svgContainer\" class=\"col-md-12 top10\" [hidden]=\"errors\" (click)=\"hidePopOver()\" data-test-id=\"svg-container\">\n <svg #svgParent xmlns=\"http://www.w3.org/2000/svg\"></svg>\n </div>\n <div id=\"popover\" class=\"popover top bs-popover-top\" [ngStyle]=\"popoverStyle\" (mouseleave)=\"hidePopOver()\" data-test-id=\"popover\">\n <div class=\"arrow\"></div>\n <h3 class=\"popover-header\" *ngIf=\"popoverTitleContent !== undefined\" [innerHTML]=\"popoverTitleContent\" data-test-id=\"popover-header\"></h3>\n <div class=\"popover-body\" [innerHTML]=\"popoverHtmlContent\" data-test-id=\"popover-body\"></div>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ImxViewerComponent } from './components/imx-viewer.component';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { documentProvider, DocumentToken } from './utils/document-token';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n HttpClientModule\r\n ],\r\n declarations: [\r\n ImxViewerComponent\r\n ],\r\n exports: [\r\n ImxViewerComponent\r\n ],\r\n providers: [\r\n { provide: DocumentToken, useFactory: documentProvider }\r\n ]\r\n})\r\nexport class ImxViewerModule {\r\n}\r\n","export class PopoverInfo {\r\n public popoverTitleContent: string;\r\n constructor (public puicArray: string[], public popoverHtmlContent: string) {\r\n }\r\n}\r\n","import { Point } from './point';\r\n\r\nexport class SvgInfo {\r\n constructor(public svg: string, public coordinates?: Point) {\r\n }\r\n}\r\n","export class SelectieInfo {\n constructor(public ids: string[], public clazz: string) {\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.PuicHelperService","observableThrowError","observableOf","i2.ClickareaService","i3.PuicHelperService"],"mappings":"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"}
@@ -176,9 +176,9 @@ class PuicHelperService {
176
176
  this.getAllElementsForPuic = (puic) => this.rootSvg.querySelectorAll(`.p${puic}, #p${puic}`);
177
177
  }
178
178
  }
179
- PuicHelperService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: PuicHelperService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
180
- PuicHelperService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: PuicHelperService, providedIn: 'root' });
181
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: PuicHelperService, decorators: [{
179
+ PuicHelperService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PuicHelperService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
180
+ PuicHelperService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PuicHelperService, providedIn: 'root' });
181
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PuicHelperService, decorators: [{
182
182
  type: Injectable,
183
183
  args: [{
184
184
  providedIn: 'root'
@@ -217,9 +217,9 @@ class ClickareaService {
217
217
  });
218
218
  }
219
219
  }
220
- ClickareaService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: ClickareaService, deps: [{ token: PuicHelperService }], target: i0.ɵɵFactoryTarget.Injectable });
221
- ClickareaService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: ClickareaService, providedIn: 'root' });
222
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: ClickareaService, decorators: [{
220
+ ClickareaService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ClickareaService, deps: [{ token: PuicHelperService }], target: i0.ɵɵFactoryTarget.Injectable });
221
+ ClickareaService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ClickareaService, providedIn: 'root' });
222
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ClickareaService, decorators: [{
223
223
  type: Injectable,
224
224
  args: [{
225
225
  providedIn: 'root'
@@ -495,9 +495,9 @@ class ImxViewerComponent {
495
495
  }
496
496
  }
497
497
  }
498
- ImxViewerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: ImxViewerComponent, deps: [{ token: DocumentToken }, { token: i1.HttpClient }, { token: ClickareaService }, { token: PuicHelperService }], target: i0.ɵɵFactoryTarget.Component });
499
- ImxViewerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.4", type: ImxViewerComponent, selector: "imx-viewer", inputs: { useClickArea: "useClickArea", inlineDgnCssImport: "inlineDgnCssImport", svgInfo: "svgInfo", selectieInfos: "selectieInfos", clickableIds: "clickableIds", rightClickableIds: "rightClickableIds", popoverInfos: "popoverInfos" }, outputs: { clickHandler: "clickHandler", rightClickHandler: "rightClickHandler", svgLoaded: "svgLoaded" }, viewQueries: [{ propertyName: "svgParentRef", first: true, predicate: ["svgParent"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div id=\"imxviewer\" data-test-id=\"imx-viewer\">\n <div id=\"svgContainer\" class=\"col-md-12 top10\" [hidden]=\"errors\" (click)=\"hidePopOver()\" data-test-id=\"svg-container\">\n <svg #svgParent xmlns=\"http://www.w3.org/2000/svg\"></svg>\n </div>\n <div id=\"popover\" class=\"popover top bs-popover-top\" [ngStyle]=\"popoverStyle\" (mouseleave)=\"hidePopOver()\" data-test-id=\"popover\">\n <div class=\"arrow\"></div>\n <h3 class=\"popover-header\" *ngIf=\"popoverTitleContent !== undefined\" [innerHTML]=\"popoverTitleContent\" data-test-id=\"popover-header\"></h3>\n <div class=\"popover-body\" [innerHTML]=\"popoverHtmlContent\" data-test-id=\"popover-body\"></div>\n </div>\n</div>\n", styles: [".popover{top:0;left:0;z-index:1060;max-width:100%;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif;font-style:normal;font-weight:400;line-height:1.5;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;visibility:hidden}.popover,.popover .arrow{position:absolute;display:block}.popover .arrow{width:1rem;height:.5rem;margin:0 .3rem;left:40%}.popover .arrow:after,.popover .arrow:before{position:absolute;display:block;content:\"\";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=top]>.arrow:before,.bs-popover-top>.arrow:before{bottom:0;border-width:.5rem .5rem 0;border-top-color:#00000040}.bs-popover-auto[x-placement^=top]>.arrow:after,.bs-popover-top>.arrow:after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right]>.arrow:before,.bs-popover-right>.arrow:before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:#00000040}.bs-popover-auto[x-placement^=right]>.arrow:after,.bs-popover-right>.arrow:after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=bottom]>.arrow:before,.bs-popover-bottom>.arrow:before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:#00000040}.bs-popover-auto[x-placement^=bottom]>.arrow:after,.bs-popover-bottom>.arrow:after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header:before,.bs-popover-bottom .popover-header:before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:\"\";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left]>.arrow:before,.bs-popover-left>.arrow:before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:#00000040}.bs-popover-auto[x-placement^=left]>.arrow:after,.bs-popover-left>.arrow:after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}\n"], directives: [{ type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
500
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: ImxViewerComponent, decorators: [{
498
+ ImxViewerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ImxViewerComponent, deps: [{ token: DocumentToken }, { token: i1.HttpClient }, { token: ClickareaService }, { token: PuicHelperService }], target: i0.ɵɵFactoryTarget.Component });
499
+ ImxViewerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ImxViewerComponent, selector: "imx-viewer", inputs: { useClickArea: "useClickArea", inlineDgnCssImport: "inlineDgnCssImport", svgInfo: "svgInfo", selectieInfos: "selectieInfos", clickableIds: "clickableIds", rightClickableIds: "rightClickableIds", popoverInfos: "popoverInfos" }, outputs: { clickHandler: "clickHandler", rightClickHandler: "rightClickHandler", svgLoaded: "svgLoaded" }, viewQueries: [{ propertyName: "svgParentRef", first: true, predicate: ["svgParent"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div id=\"imxviewer\" data-test-id=\"imx-viewer\">\n <div id=\"svgContainer\" class=\"col-md-12 top10\" [hidden]=\"errors\" (click)=\"hidePopOver()\" data-test-id=\"svg-container\">\n <svg #svgParent xmlns=\"http://www.w3.org/2000/svg\"></svg>\n </div>\n <div id=\"popover\" class=\"popover top bs-popover-top\" [ngStyle]=\"popoverStyle\" (mouseleave)=\"hidePopOver()\" data-test-id=\"popover\">\n <div class=\"arrow\"></div>\n <h3 class=\"popover-header\" *ngIf=\"popoverTitleContent !== undefined\" [innerHTML]=\"popoverTitleContent\" data-test-id=\"popover-header\"></h3>\n <div class=\"popover-body\" [innerHTML]=\"popoverHtmlContent\" data-test-id=\"popover-body\"></div>\n </div>\n</div>\n", styles: [".popover{top:0;left:0;z-index:1060;max-width:100%;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif;font-style:normal;font-weight:400;line-height:1.5;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;visibility:hidden}.popover,.popover .arrow{position:absolute;display:block}.popover .arrow{width:1rem;height:.5rem;margin:0 .3rem;left:40%}.popover .arrow:after,.popover .arrow:before{position:absolute;display:block;content:\"\";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=top]>.arrow:before,.bs-popover-top>.arrow:before{bottom:0;border-width:.5rem .5rem 0;border-top-color:#00000040}.bs-popover-auto[x-placement^=top]>.arrow:after,.bs-popover-top>.arrow:after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right]>.arrow:before,.bs-popover-right>.arrow:before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:#00000040}.bs-popover-auto[x-placement^=right]>.arrow:after,.bs-popover-right>.arrow:after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=bottom]>.arrow:before,.bs-popover-bottom>.arrow:before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:#00000040}.bs-popover-auto[x-placement^=bottom]>.arrow:after,.bs-popover-bottom>.arrow:after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header:before,.bs-popover-bottom .popover-header:before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:\"\";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left]>.arrow:before,.bs-popover-left>.arrow:before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:#00000040}.bs-popover-auto[x-placement^=left]>.arrow:after,.bs-popover-left>.arrow:after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
500
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ImxViewerComponent, decorators: [{
501
501
  type: Component,
502
502
  args: [{ selector: 'imx-viewer', template: "<div id=\"imxviewer\" data-test-id=\"imx-viewer\">\n <div id=\"svgContainer\" class=\"col-md-12 top10\" [hidden]=\"errors\" (click)=\"hidePopOver()\" data-test-id=\"svg-container\">\n <svg #svgParent xmlns=\"http://www.w3.org/2000/svg\"></svg>\n </div>\n <div id=\"popover\" class=\"popover top bs-popover-top\" [ngStyle]=\"popoverStyle\" (mouseleave)=\"hidePopOver()\" data-test-id=\"popover\">\n <div class=\"arrow\"></div>\n <h3 class=\"popover-header\" *ngIf=\"popoverTitleContent !== undefined\" [innerHTML]=\"popoverTitleContent\" data-test-id=\"popover-header\"></h3>\n <div class=\"popover-body\" [innerHTML]=\"popoverHtmlContent\" data-test-id=\"popover-body\"></div>\n </div>\n</div>\n", styles: [".popover{top:0;left:0;z-index:1060;max-width:100%;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif;font-style:normal;font-weight:400;line-height:1.5;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;visibility:hidden}.popover,.popover .arrow{position:absolute;display:block}.popover .arrow{width:1rem;height:.5rem;margin:0 .3rem;left:40%}.popover .arrow:after,.popover .arrow:before{position:absolute;display:block;content:\"\";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=top]>.arrow:before,.bs-popover-top>.arrow:before{bottom:0;border-width:.5rem .5rem 0;border-top-color:#00000040}.bs-popover-auto[x-placement^=top]>.arrow:after,.bs-popover-top>.arrow:after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right]>.arrow:before,.bs-popover-right>.arrow:before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:#00000040}.bs-popover-auto[x-placement^=right]>.arrow:after,.bs-popover-right>.arrow:after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=bottom]>.arrow:before,.bs-popover-bottom>.arrow:before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:#00000040}.bs-popover-auto[x-placement^=bottom]>.arrow:after,.bs-popover-bottom>.arrow:after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header:before,.bs-popover-bottom .popover-header:before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:\"\";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left]>.arrow:before,.bs-popover-left>.arrow:before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:#00000040}.bs-popover-auto[x-placement^=left]>.arrow:after,.bs-popover-left>.arrow:after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}\n"] }]
503
503
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
@@ -530,16 +530,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImpor
530
530
 
531
531
  class ImxViewerModule {
532
532
  }
533
- ImxViewerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: ImxViewerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
534
- ImxViewerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: ImxViewerModule, declarations: [ImxViewerComponent], imports: [CommonModule,
533
+ ImxViewerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ImxViewerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
534
+ ImxViewerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: ImxViewerModule, declarations: [ImxViewerComponent], imports: [CommonModule,
535
535
  HttpClientModule], exports: [ImxViewerComponent] });
536
- ImxViewerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: ImxViewerModule, providers: [
536
+ ImxViewerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ImxViewerModule, providers: [
537
537
  { provide: DocumentToken, useFactory: documentProvider }
538
- ], imports: [[
539
- CommonModule,
540
- HttpClientModule
541
- ]] });
542
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: ImxViewerModule, decorators: [{
538
+ ], imports: [CommonModule,
539
+ HttpClientModule] });
540
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ImxViewerModule, decorators: [{
543
541
  type: NgModule,
544
542
  args: [{
545
543
  imports: [
@@ -1 +1 @@
1
- {"version":3,"file":"loxia-imx-viewer.mjs","sources":["../../src/model/point.ts","../../src/model/selectie-event.ts","../../src/utils/classes-util.ts","../../src/utils/document-token.ts","../../src/utils/svg-rect-util.ts","../../src/utils/focus-util.ts","../../src/services/puic-helper.service.ts","../../src/services/clickarea.service.ts","../../src/components/imx-viewer.component.ts","../../src/components/imx-viewer.component.html","../../src/imx-viewer.module.ts","../../src/model/popover-info.ts","../../src/model/svg-info.ts","../../src/model/selectie-info.ts","../../src/loxia-imx-viewer.ts"],"sourcesContent":["export class Point {\r\n constructor(public x: number, public y: number) {\r\n }\r\n}\r\n","export class SelectieEvent {\r\n constructor(public id: string, public event: MouseEvent) {\r\n }\r\n}\r\n","export class ClassesUtil {\n static addClass(elem: Element, cls: string) {\n if ('' === cls) {\n return;\n }\n const classAttr = elem.getAttribute('class');\n const classes = classAttr ? classAttr.split(' ') : [];\n for (let j = 0; j < classes.length; j++) {\n if (classes[j] === cls) {\n return;\n }\n }\n elem.setAttribute('class', classAttr ? classAttr + ' ' + cls : cls);\n }\n\n static removeClassesStartingWith(elem: Element, cls: string) {\n const classAttr = elem.getAttribute('class');\n if (!classAttr) {\n return;\n }\n const classes = classAttr.split(' ');\n let j = classes.length;\n while (j--) {\n if (classes[j].indexOf(cls) === 0) {\n classes.splice(j, 1);\n }\n }\n\n if (classes.length === 0) {\n elem.removeAttribute('class');\n }\n else {\n elem.setAttribute('class', classes.join(' '));\n }\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const DocumentToken = new InjectionToken('Document');\nexport function documentProvider() { return document; }\n","export class SvgRectUtil {\n\n // copied from java.awt.Rectangle\n public static rectUnion(r1: SVGRect, r2: SVGRect): SVGRect {\n if (!r1) {\n return r2;\n }\n\n let tx2 = r1.width;\n let ty2 = r1.height;\n if ((tx2 | ty2) < 0) { // tslint:disable-line\n // This rectangle has negative dimensions...\n // If r has non-negative dimensions then it is the answer.\n // If r is non-existant (has a negative dimension), then both\n // are non-existant and we can return any non-existant rectangle\n // as an answer. Thus, returning r meets that criterion.\n // Either way, r is our answer.\n return r2;\n }\n let rx2 = r2.width;\n let ry2 = r2.height;\n if ((rx2 | ry2) < 0) { // tslint:disable-line\n return r1;\n }\n let tx1 = r1.x;\n let ty1 = r1.y;\n tx2 += tx1;\n ty2 += ty1;\n const rx1 = r2.x;\n const ry1 = r2.y;\n rx2 += rx1;\n ry2 += ry1;\n if (tx1 > rx1) {\n tx1 = rx1;\n }\n if (ty1 > ry1) {\n ty1 = ry1;\n }\n if (tx2 < rx2) {\n tx2 = rx2;\n }\n if (ty2 < ry2) {\n ty2 = ry2;\n }\n tx2 -= tx1;\n ty2 -= ty1;\n\n return new DOMRect(tx1, ty1, tx2, ty2);\n }\n}\n","import { PuicHelperService } from '../services/puic-helper.service';\nimport { SvgRectUtil } from './svg-rect-util';\nimport * as SvgPanZoom from 'svg-pan-zoom';\n\nexport class FocusUtil {\n\n public static focusOnIds(focusIds: string[], svgPanZoomRef: SvgPanZoom.Instance, puicHelper: PuicHelperService) {\n if (focusIds && focusIds.length > 0) {\n\n // calculate the union rectangle of elements with ids\n const svgContainer = document.getElementById('svgContainer');\n const rootSvgDoc = svgContainer.firstChild as SVGSVGElement;\n let resultRect: SVGRect;\n if (rootSvgDoc && rootSvgDoc.nodeName === 'svg') {\n focusIds.forEach(puic => {\n const elems: NodeListOf<HTMLElement> = puicHelper.getAllElementsForPuic(puic);\n for (let i = 0; i < elems.length; i++) {\n const elementRect = FocusUtil.getElementRectangleWithNestedSvgOffset(elems[i]);\n resultRect = SvgRectUtil.rectUnion(resultRect, elementRect);\n }\n });\n }\n FocusUtil.focusOnRect(resultRect, svgContainer.getBoundingClientRect(), rootSvgDoc, svgPanZoomRef);\n }\n }\n\n static focusOnRect(rect: SVGRect, elementRect: ClientRect, rootSvgDoc: SVGSVGElement, svgPanZoomRef: any) {\n if (rect) {\n // make sure we are in the svgpanzoom transformed area\n const matrix = (rootSvgDoc.getElementsByClassName('svg-pan-zoom_viewport')[0] as SVGGElement).getScreenCTM();\n\n // get from svg coordinate system to webpage coordinate system\n const location = rootSvgDoc.createSVGPoint();\n location.x = rect.x + (rect.width / 2);\n location.y = rect.y + (rect.height / 2);\n const transformedLocation = location.matrixTransform(matrix);\n\n // transform the rectangle dimension (we have to use a SVGPoint since there is no SVGDimension)\n const size = rootSvgDoc.createSVGPoint();\n size.x = rect.width;\n size.y = rect.height;\n const transformedSize = size.matrixTransform(matrix.inverse());\n\n // tel the svgPanZoom to zoom on the rectangle in relation to the total view size\n const zoomFactor = Math.min(5, elementRect.height / Math.abs(transformedSize.y));\n svgPanZoomRef.zoomAtPoint(zoomFactor,\n { x: transformedLocation.x - elementRect.left, y: transformedLocation.y - elementRect.top });\n // tel the svgPanZoom to pan to the middel of the rectangle\n svgPanZoomRef.panBy({\n x: (elementRect.width / 2) - transformedLocation.x,\n y: ((elementRect.height + elementRect.top) / 2) - transformedLocation.y\n });\n }\n }\n\n private static getElementRectangleWithNestedSvgOffset(elem: Element): SVGRect {\n const svgElem = (<SVGGraphicsElement> elem);\n const rect = svgElem.getBBox();\n\n while (elem.parentElement.nodeName !== 'svg') {\n elem = elem.parentElement;\n }\n elem = elem.parentElement;\n rect.x = rect.x + parseInt(elem.getAttribute('x'), 10);\n rect.y = rect.y + parseInt(elem.getAttribute('y'), 10);\n const viewBox = elem.getAttribute('viewBox');\n if (viewBox) {\n const viewBoxCoordinates = viewBox.split(' ');\n rect.x = rect.x - parseInt(viewBoxCoordinates[0], 10);\n rect.y = rect.y - parseInt(viewBoxCoordinates[1], 10);\n }\n return rect;\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PuicHelperService {\n private rootSvg: any;\n\n public setRootSvg = (svgParent: SVGSVGElement) => this.rootSvg = svgParent;\n public getAllElementsForPuic = (puic: string) => this.rootSvg.querySelectorAll(`.p${ puic }, #p${ puic }`) as NodeListOf<HTMLElement>;\n}\n","import { Injectable } from '@angular/core';\nimport { PuicHelperService } from './puic-helper.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ClickareaService {\n private timer: number;\n timeout = 250;\n\n constructor(private puicHelper: PuicHelperService) {\n }\n\n delayedClickAreaCreation(ids: Set<string>) {\n if (ids.size === 0) {\n return;\n }\n\n window.clearTimeout(this.timer);\n this.timer = window.setTimeout(() => this.createClickareas(ids), this.timeout);\n }\n\n /**\n * Mogelijke optimalisatie is om de delta te bepalen van de te verwerken ids\n */\n private createClickareas(ids: Set<string>) {\n Array.from(document.getElementsByClassName('imxview-clickarea')).forEach(x => x.remove());\n\n ids.forEach(id => {\n this.puicHelper.getAllElementsForPuic(id).forEach(element => {\n if (element) {\n const polylines = Array.from(element.getElementsByTagName('polyline'));\n polylines.forEach(p => {\n const clone = p.cloneNode(true) as Element;\n clone.setAttribute('class', 'imxview-clickarea');\n clone.removeAttribute('id');\n element.insertBefore(clone, p);\n });\n }\n });\n });\n }\n}\n","import { HttpClient } from '@angular/common/http';\r\nimport {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Inject,\r\n Input,\r\n NgZone,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { combineLatest, Observable, of as observableOf, throwError as observableThrowError } from 'rxjs';\r\nimport { take } from 'rxjs/operators';\r\nimport SvgPanZoom from 'svg-pan-zoom';\r\nimport { Point } from '../model/point';\r\nimport { PopoverInfo } from '../model/popover-info';\r\nimport { SelectieEvent } from '../model/selectie-event';\r\nimport { SelectieInfo } from '../model/selectie-info';\r\nimport { SvgInfo } from '../model/svg-info';\r\nimport { ClickareaService } from '../services/clickarea.service';\r\nimport { PuicHelperService } from '../services/puic-helper.service';\r\nimport { ClassesUtil } from '../utils/classes-util';\r\nimport { DocumentToken } from '../utils/document-token';\r\nimport { FocusUtil } from '../utils/focus-util';\r\n\r\n@Component({\r\n selector: 'imx-viewer',\r\n templateUrl: './imx-viewer.component.html',\r\n styleUrls: ['./imx-viewer.component.css']\r\n})\r\nexport class ImxViewerComponent implements OnChanges, OnInit, OnDestroy {\r\n private SVG_BASE64_PREFIX = 'data:image/svg+xml;base64,';\r\n private SVG_PREFIX = 'data:image/svg+xml,';\r\n\r\n @Input() useClickArea = false;\r\n @Input() inlineDgnCssImport = false;\r\n @Input() svgInfo: SvgInfo[];\r\n @Input() selectieInfos: SelectieInfo[] = [];\r\n\r\n // Onderstaande inputs worden meegenomen voor clickarea:\r\n @Input() clickableIds: string[] = [];\r\n @Input() rightClickableIds: string[] = [];\r\n @Input() popoverInfos: PopoverInfo[] = [];\r\n\r\n @ViewChild('svgParent', { static: true }) svgParentRef: ElementRef;\r\n\r\n errors = false;\r\n popoverStyle: any = { display: 'inline' };\r\n popoverHtmlContent = '';\r\n popoverTitleContent: string;\r\n\r\n @Output() clickHandler = new EventEmitter<SelectieEvent>();\r\n @Output() rightClickHandler = new EventEmitter<SelectieEvent>();\r\n @Output() svgLoaded = new EventEmitter<void>();\r\n\r\n private svgGeladen = false;\r\n private eventListeners: Map<string, Map<Element, any>> = new Map();\r\n private svgPanZoomRef: SvgPanZoom.Instance;\r\n\r\n constructor(@Inject(DocumentToken) private document: any, private http: HttpClient,\r\n private clickAreaService: ClickareaService, private puicHelper: PuicHelperService) {\r\n }\r\n\r\n ngOnInit() {\r\n this.createSvgPanZoomRefIfNotExists();\r\n this.puicHelper.setRootSvg(this.getSvgParent());\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n // If Imx-viewer is initialized with svgInfo, ngOnChanges is called before ngOnInit.\r\n // In that case we need to create svgPanZoomRef here.\r\n this.createSvgPanZoomRefIfNotExists();\r\n\r\n const { useClickArea, clickableIds, rightClickableIds, popoverInfos, selectieInfos, svgInfo } = changes;\r\n\r\n if (useClickArea || clickableIds || rightClickableIds || popoverInfos) {\r\n this.delayedClickAreaCreation();\r\n }\r\n\r\n if (this.svgInfo && svgInfo) {\r\n this.loadSvgs();\r\n }\r\n\r\n if (this.clickableIds && clickableIds && this.svgGeladen) {\r\n this.addClickEventHandlersToElements(this.clickableIds, 'click');\r\n }\r\n\r\n if (this.rightClickableIds && rightClickableIds && this.svgGeladen) {\r\n this.addClickEventHandlersToElements(this.rightClickableIds, 'contextmenu');\r\n }\r\n\r\n if (this.selectieInfos && selectieInfos && this.svgGeladen) {\r\n this.selectElements();\r\n }\r\n\r\n if (this.popoverInfos && popoverInfos && this.svgGeladen) {\r\n this.addMouseoverEventHandlerToElements();\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.svgPanZoomRef?.destroy();\r\n this.svgPanZoomRef = undefined;\r\n }\r\n\r\n public focusOnIds(focusIds: string[]) {\r\n FocusUtil.focusOnIds(focusIds, this.svgPanZoomRef, this.puicHelper);\r\n }\r\n\r\n public getSvgPanZoomInstance: () => SvgPanZoom.Instance = () => this.svgPanZoomRef;\r\n\r\n // Here only used in test, but also used by applications. Do not remove.\r\n public static getXCoordinate(decodedSvgDataUrl: string) {\r\n let div = document.createElement('div');\r\n div.innerHTML = decodedSvgDataUrl;\r\n // De SVG-width wordt in de svg tag gespecificeerd.\r\n const x = div.firstElementChild.getAttribute('width');\r\n const result = parseFloat(x);\r\n div = null;\r\n return result;\r\n }\r\n\r\n hidePopOver = () => this.popoverStyle.visibility = 'hidden';\r\n\r\n private createSvgPanZoomRefIfNotExists() {\r\n if (!this.svgPanZoomRef) {\r\n this.svgPanZoomRef = SvgPanZoom(this.getSvgParent(), {\r\n fit: false,\r\n center: true,\r\n dblClickZoomEnabled: false,\r\n onZoom: () => this.hidePopOver(),\r\n onPan: () => this.hidePopOver()\r\n });\r\n\r\n this.addStyleToRootSvg();\r\n }\r\n }\r\n\r\n /**\r\n * Style wordt vanuit javascript toegevoegd na de create van SvgZoomPanRef deze maakt een viewport aan.\r\n * - Clickarea CSS wordt dynamisch aan de SVG toegevoegd, dit voorkomt dat dat er ngcontent property op geplaatst wordt.\r\n * De SVG's worden niet voorzien van ngcontent attribuut.\r\n * - DGN.css import wordt (optioneel) in de root SVG opgenomen, deze is eerst verwijderd uit de SVG's. Om meerdere imports te voorkomen.\r\n * */\r\n private addStyleToRootSvg() {\r\n const defs = document.createElementNS('http://www.w3.org/2000/svg', 'defs');\r\n\r\n let style = this.inlineDgnCssImport ? '@import url(\"dgn.css\");\\n' : '';\r\n style +=\r\n `.imxview-selected > polyline.imxview-clickarea, polyline.imxview-clickarea {\r\n stroke: var(--imxview-clickarea-stroke, transparent);\r\n stroke-width: var(--imxview-clickarea-stroke-width, 10px);\r\n stroke-dasharray: none;\r\n }`;\r\n defs.innerHTML =\r\n `<style type=\"text/css\">\r\n ${ style }\r\n </style>`;\r\n const firstElementChild = this.getSvgParent().firstElementChild;\r\n this.getSvgParent().insertBefore(defs, firstElementChild);\r\n }\r\n\r\n private loadSvgs(): void {\r\n combineLatest(this.svgInfo.map(svgInfo => this.loadSvg(svgInfo.svg)))\r\n .pipe(take(1))\r\n .subscribe(svgs => {\r\n const svg = this.concatenateSvgs(svgs);\r\n this.updateDom(svg);\r\n this.svgGeladen = true;\r\n this.svgLoaded.emit();\r\n this.delayedClickAreaCreation();\r\n this.addClickEventHandlersToElements(this.clickableIds, 'click');\r\n this.addClickEventHandlersToElements(this.rightClickableIds, 'contextmenu');\r\n this.selectElements();\r\n this.addMouseoverEventHandlerToElements();\r\n },\r\n error => this.flagErrors(error)\r\n );\r\n }\r\n\r\n private loadSvg(svgSrc: string): Observable<string> {\r\n if (svgSrc.startsWith('data:')) {\r\n let parsed;\r\n if (svgSrc.startsWith(this.SVG_BASE64_PREFIX)) {\r\n try {\r\n parsed = atob(svgSrc.substring(this.SVG_BASE64_PREFIX.length));\r\n } catch (e) {\r\n return observableThrowError('Data-url parse error');\r\n }\r\n } else if (svgSrc.startsWith(this.SVG_PREFIX)) {\r\n parsed = svgSrc.substring(this.SVG_PREFIX.length);\r\n }\r\n\r\n if (parsed) {\r\n return observableOf(parsed);\r\n }\r\n }\r\n\r\n return this.http.get(svgSrc, { responseType: 'text' });\r\n }\r\n\r\n private addClickEventHandlersToElement(listeners: Map<Element, any>, elem, eventType: string, puic: string) {\r\n const elemAlreadyHasListener = listeners.get(elem);\r\n if (!elemAlreadyHasListener) {\r\n const fn = eventType === 'click' ?\r\n (e) => this.clickHandler.emit(new SelectieEvent(puic, e)) :\r\n (e) => {\r\n e.preventDefault();\r\n this.rightClickHandler.emit(new SelectieEvent(puic, e));\r\n return false;\r\n };\r\n listeners.set(elem, fn);\r\n elem.addEventListener(eventType, fn);\r\n if (eventType === 'click') {\r\n elem.style.cursor = 'pointer';\r\n }\r\n }\r\n }\r\n\r\n private addClickEventHandlersToElements(clickableIds: string[], eventtype: string) {\r\n const listeners = this.removeOldState(eventtype);\r\n\r\n if (clickableIds) {\r\n clickableIds.forEach(puic => {\r\n const elements = this.puicHelper.getAllElementsForPuic(puic);\r\n elements.forEach((element) => this.addClickEventHandlersToElement(listeners, element, eventtype, puic));\r\n });\r\n }\r\n }\r\n\r\n private addMouseoverEventHandlerToElements() {\r\n const listeners = this.removeOldState('mouseover');\r\n if (this.popoverInfos) {\r\n this.popoverInfos.forEach(popoverInfo => {\r\n popoverInfo.puicArray.forEach(puic => {\r\n const elems = this.puicHelper.getAllElementsForPuic(puic);\r\n for (let i = 0; i < elems.length; i++) {\r\n const fn = (e) => {\r\n this.popoverHtmlContent = popoverInfo.popoverHtmlContent;\r\n this.popoverTitleContent = popoverInfo.popoverTitleContent;\r\n\r\n // use timeout to have content rendered before getting size\r\n setTimeout(() => this.showPopup(e), 0);\r\n };\r\n\r\n const elem = elems.item(i);\r\n listeners.set(elem, fn);\r\n elem.addEventListener('mouseover', fn);\r\n }\r\n }\r\n );\r\n }\r\n );\r\n }\r\n }\r\n\r\n private concatenateSvgs(svgs: string[]): string {\r\n let svgContent = '';\r\n\r\n for (let i = 0, len = this.svgInfo.length; i < len; i++) {\r\n const sourceCoordinates = this.svgInfo[i].coordinates || new Point(0, 0);\r\n\r\n const div = document.createElement('div');\r\n\r\n /** Verwijder dgn.css import uit geleverde SVG's.\r\n * De import wordt optioneel (standaard aan) in de root SVG geplaats om te voorkomen dat de import meermaals gebeurd.\r\n * zie addStyleToRootSvg()\r\n */\r\n div.innerHTML = svgs[i].replace('@import url(\"dgn.css\");', '');\r\n div.firstElementChild.setAttribute('x', sourceCoordinates.x.toString());\r\n div.firstElementChild.setAttribute('y', sourceCoordinates.y.toString());\r\n\r\n svgContent += div.innerHTML;\r\n }\r\n\r\n return svgContent;\r\n }\r\n\r\n private flagErrors(error) {\r\n console.log(error);\r\n this.errors = true;\r\n }\r\n\r\n private removeOldState(eventType: string): Map<Element, any> {\r\n let listeners = this.eventListeners.get(eventType);\r\n if (listeners) {\r\n listeners.forEach((fn, el) => {\r\n el.removeEventListener(eventType, fn);\r\n if (eventType === 'click') {\r\n el.setAttribute('style', ImxViewerComponent.setDefaultCursor(el));\r\n }\r\n });\r\n }\r\n listeners = new Map();\r\n this.eventListeners.set(eventType, listeners);\r\n return listeners;\r\n }\r\n\r\n private selectElements() {\r\n const allElems = this.getSvgParent().querySelectorAll('[class*=imxview-selected]');\r\n for (let j = 0; j < allElems.length; j++) {\r\n ClassesUtil.removeClassesStartingWith(allElems[j], 'imxview-selected');\r\n }\r\n\r\n if (this.selectieInfos) {\r\n this.selectieInfos.forEach(selectieInfo => {\r\n selectieInfo.ids.forEach(id => {\r\n this.puicHelper.getAllElementsForPuic(id).forEach(elem => {\r\n ClassesUtil.addClass(elem, 'imxview-selected');\r\n if ('' !== selectieInfo.clazz) {\r\n ClassesUtil.addClass(elem, 'imxview-selected-' + selectieInfo.clazz);\r\n }\r\n });\r\n });\r\n });\r\n }\r\n }\r\n\r\n private static setDefaultCursor(el): string {\r\n const oudeStyle = el.getAttribute('style');\r\n return oudeStyle ? oudeStyle.replace('pointer', 'default') : 'cursor: default';\r\n }\r\n\r\n private showPopup(e) {\r\n const popoverElem = document.getElementById('popover').getBoundingClientRect();\r\n const left = e.layerX - (popoverElem.width / 2) + 'px';\r\n const top = e.layerY - (popoverElem.height + 8) + 'px';\r\n this.popoverStyle = {\r\n left: left, top: top, position: 'absolute',\r\n display: 'inline', visibility: 'visible'\r\n };\r\n }\r\n\r\n private updateDom(svg: String) {\r\n const svgGroup = this.getSvgParent().getElementsByClassName('svg-pan-zoom_viewport')[0];\r\n svgGroup.innerHTML = svg.substring(svg.indexOf('<svg'));\r\n this.svgPanZoomRef.updateBBox();\r\n\r\n this.svgPanZoomRef.resize();\r\n this.svgPanZoomRef.fit();\r\n this.svgPanZoomRef.center();\r\n }\r\n\r\n private delayedClickAreaCreation() {\r\n if (this.svgGeladen && this.useClickArea) {\r\n const clickareaIds = new Set([...this.clickableIds, ...this.rightClickableIds,\r\n ...this.popoverInfos.flatMap(pi => pi.puicArray)]);\r\n this.clickAreaService.delayedClickAreaCreation(clickareaIds);\r\n }\r\n }\r\n\r\n private getSvgParent = () => this.svgParentRef.nativeElement;\r\n}\r\n","<div id=\"imxviewer\" data-test-id=\"imx-viewer\">\n <div id=\"svgContainer\" class=\"col-md-12 top10\" [hidden]=\"errors\" (click)=\"hidePopOver()\" data-test-id=\"svg-container\">\n <svg #svgParent xmlns=\"http://www.w3.org/2000/svg\"></svg>\n </div>\n <div id=\"popover\" class=\"popover top bs-popover-top\" [ngStyle]=\"popoverStyle\" (mouseleave)=\"hidePopOver()\" data-test-id=\"popover\">\n <div class=\"arrow\"></div>\n <h3 class=\"popover-header\" *ngIf=\"popoverTitleContent !== undefined\" [innerHTML]=\"popoverTitleContent\" data-test-id=\"popover-header\"></h3>\n <div class=\"popover-body\" [innerHTML]=\"popoverHtmlContent\" data-test-id=\"popover-body\"></div>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ImxViewerComponent } from './components/imx-viewer.component';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { documentProvider, DocumentToken } from './utils/document-token';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n HttpClientModule\r\n ],\r\n declarations: [\r\n ImxViewerComponent\r\n ],\r\n exports: [\r\n ImxViewerComponent\r\n ],\r\n providers: [\r\n { provide: DocumentToken, useFactory: documentProvider }\r\n ]\r\n})\r\nexport class ImxViewerModule {\r\n}\r\n","export class PopoverInfo {\r\n public popoverTitleContent: string;\r\n constructor (public puicArray: string[], public popoverHtmlContent: string) {\r\n }\r\n}\r\n","import { Point } from './point';\r\n\r\nexport class SvgInfo {\r\n constructor(public svg: string, public coordinates?: Point) {\r\n }\r\n}\r\n","export class SelectieInfo {\n constructor(public ids: string[], public clazz: string) {\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["observableThrowError","observableOf"],"mappings":"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"}
1
+ {"version":3,"file":"loxia-imx-viewer.mjs","sources":["../../src/model/point.ts","../../src/model/selectie-event.ts","../../src/utils/classes-util.ts","../../src/utils/document-token.ts","../../src/utils/svg-rect-util.ts","../../src/utils/focus-util.ts","../../src/services/puic-helper.service.ts","../../src/services/clickarea.service.ts","../../src/components/imx-viewer.component.ts","../../src/components/imx-viewer.component.html","../../src/imx-viewer.module.ts","../../src/model/popover-info.ts","../../src/model/svg-info.ts","../../src/model/selectie-info.ts","../../src/loxia-imx-viewer.ts"],"sourcesContent":["export class Point {\r\n constructor(public x: number, public y: number) {\r\n }\r\n}\r\n","export class SelectieEvent {\r\n constructor(public id: string, public event: MouseEvent) {\r\n }\r\n}\r\n","export class ClassesUtil {\n static addClass(elem: Element, cls: string) {\n if ('' === cls) {\n return;\n }\n const classAttr = elem.getAttribute('class');\n const classes = classAttr ? classAttr.split(' ') : [];\n for (let j = 0; j < classes.length; j++) {\n if (classes[j] === cls) {\n return;\n }\n }\n elem.setAttribute('class', classAttr ? classAttr + ' ' + cls : cls);\n }\n\n static removeClassesStartingWith(elem: Element, cls: string) {\n const classAttr = elem.getAttribute('class');\n if (!classAttr) {\n return;\n }\n const classes = classAttr.split(' ');\n let j = classes.length;\n while (j--) {\n if (classes[j].indexOf(cls) === 0) {\n classes.splice(j, 1);\n }\n }\n\n if (classes.length === 0) {\n elem.removeAttribute('class');\n }\n else {\n elem.setAttribute('class', classes.join(' '));\n }\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const DocumentToken = new InjectionToken('Document');\nexport function documentProvider() { return document; }\n","export class SvgRectUtil {\n\n // copied from java.awt.Rectangle\n public static rectUnion(r1: SVGRect, r2: SVGRect): SVGRect {\n if (!r1) {\n return r2;\n }\n\n let tx2 = r1.width;\n let ty2 = r1.height;\n if ((tx2 | ty2) < 0) { // tslint:disable-line\n // This rectangle has negative dimensions...\n // If r has non-negative dimensions then it is the answer.\n // If r is non-existant (has a negative dimension), then both\n // are non-existant and we can return any non-existant rectangle\n // as an answer. Thus, returning r meets that criterion.\n // Either way, r is our answer.\n return r2;\n }\n let rx2 = r2.width;\n let ry2 = r2.height;\n if ((rx2 | ry2) < 0) { // tslint:disable-line\n return r1;\n }\n let tx1 = r1.x;\n let ty1 = r1.y;\n tx2 += tx1;\n ty2 += ty1;\n const rx1 = r2.x;\n const ry1 = r2.y;\n rx2 += rx1;\n ry2 += ry1;\n if (tx1 > rx1) {\n tx1 = rx1;\n }\n if (ty1 > ry1) {\n ty1 = ry1;\n }\n if (tx2 < rx2) {\n tx2 = rx2;\n }\n if (ty2 < ry2) {\n ty2 = ry2;\n }\n tx2 -= tx1;\n ty2 -= ty1;\n\n return new DOMRect(tx1, ty1, tx2, ty2);\n }\n}\n","import { PuicHelperService } from '../services/puic-helper.service';\nimport { SvgRectUtil } from './svg-rect-util';\nimport * as SvgPanZoom from 'svg-pan-zoom';\n\nexport class FocusUtil {\n\n public static focusOnIds(focusIds: string[], svgPanZoomRef: SvgPanZoom.Instance, puicHelper: PuicHelperService) {\n if (focusIds && focusIds.length > 0) {\n\n // calculate the union rectangle of elements with ids\n const svgContainer = document.getElementById('svgContainer');\n const rootSvgDoc = svgContainer.firstChild as SVGSVGElement;\n let resultRect: SVGRect;\n if (rootSvgDoc && rootSvgDoc.nodeName === 'svg') {\n focusIds.forEach(puic => {\n const elems: NodeListOf<HTMLElement> = puicHelper.getAllElementsForPuic(puic);\n for (let i = 0; i < elems.length; i++) {\n const elementRect = FocusUtil.getElementRectangleWithNestedSvgOffset(elems[i]);\n resultRect = SvgRectUtil.rectUnion(resultRect, elementRect);\n }\n });\n }\n FocusUtil.focusOnRect(resultRect, svgContainer.getBoundingClientRect(), rootSvgDoc, svgPanZoomRef);\n }\n }\n\n static focusOnRect(rect: SVGRect, elementRect: ClientRect, rootSvgDoc: SVGSVGElement, svgPanZoomRef: any) {\n if (rect) {\n // make sure we are in the svgpanzoom transformed area\n const matrix = (rootSvgDoc.getElementsByClassName('svg-pan-zoom_viewport')[0] as SVGGElement).getScreenCTM();\n\n // get from svg coordinate system to webpage coordinate system\n const location = rootSvgDoc.createSVGPoint();\n location.x = rect.x + (rect.width / 2);\n location.y = rect.y + (rect.height / 2);\n const transformedLocation = location.matrixTransform(matrix);\n\n // transform the rectangle dimension (we have to use a SVGPoint since there is no SVGDimension)\n const size = rootSvgDoc.createSVGPoint();\n size.x = rect.width;\n size.y = rect.height;\n const transformedSize = size.matrixTransform(matrix.inverse());\n\n // tel the svgPanZoom to zoom on the rectangle in relation to the total view size\n const zoomFactor = Math.min(5, elementRect.height / Math.abs(transformedSize.y));\n svgPanZoomRef.zoomAtPoint(zoomFactor,\n { x: transformedLocation.x - elementRect.left, y: transformedLocation.y - elementRect.top });\n // tel the svgPanZoom to pan to the middel of the rectangle\n svgPanZoomRef.panBy({\n x: (elementRect.width / 2) - transformedLocation.x,\n y: ((elementRect.height + elementRect.top) / 2) - transformedLocation.y\n });\n }\n }\n\n private static getElementRectangleWithNestedSvgOffset(elem: Element): SVGRect {\n const svgElem = (<SVGGraphicsElement> elem);\n const rect = svgElem.getBBox();\n\n while (elem.parentElement.nodeName !== 'svg') {\n elem = elem.parentElement;\n }\n elem = elem.parentElement;\n rect.x = rect.x + parseInt(elem.getAttribute('x'), 10);\n rect.y = rect.y + parseInt(elem.getAttribute('y'), 10);\n const viewBox = elem.getAttribute('viewBox');\n if (viewBox) {\n const viewBoxCoordinates = viewBox.split(' ');\n rect.x = rect.x - parseInt(viewBoxCoordinates[0], 10);\n rect.y = rect.y - parseInt(viewBoxCoordinates[1], 10);\n }\n return rect;\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PuicHelperService {\n private rootSvg: any;\n\n public setRootSvg = (svgParent: SVGSVGElement) => this.rootSvg = svgParent;\n public getAllElementsForPuic = (puic: string) => this.rootSvg.querySelectorAll(`.p${ puic }, #p${ puic }`) as NodeListOf<HTMLElement>;\n}\n","import { Injectable } from '@angular/core';\nimport { PuicHelperService } from './puic-helper.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ClickareaService {\n private timer: number;\n timeout = 250;\n\n constructor(private puicHelper: PuicHelperService) {\n }\n\n delayedClickAreaCreation(ids: Set<string>) {\n if (ids.size === 0) {\n return;\n }\n\n window.clearTimeout(this.timer);\n this.timer = window.setTimeout(() => this.createClickareas(ids), this.timeout);\n }\n\n /**\n * Mogelijke optimalisatie is om de delta te bepalen van de te verwerken ids\n */\n private createClickareas(ids: Set<string>) {\n Array.from(document.getElementsByClassName('imxview-clickarea')).forEach(x => x.remove());\n\n ids.forEach(id => {\n this.puicHelper.getAllElementsForPuic(id).forEach(element => {\n if (element) {\n const polylines = Array.from(element.getElementsByTagName('polyline'));\n polylines.forEach(p => {\n const clone = p.cloneNode(true) as Element;\n clone.setAttribute('class', 'imxview-clickarea');\n clone.removeAttribute('id');\n element.insertBefore(clone, p);\n });\n }\n });\n });\n }\n}\n","import { HttpClient } from '@angular/common/http';\r\nimport {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Inject,\r\n Input,\r\n NgZone,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { combineLatest, Observable, of as observableOf, throwError as observableThrowError } from 'rxjs';\r\nimport { take } from 'rxjs/operators';\r\nimport SvgPanZoom from 'svg-pan-zoom';\r\nimport { Point } from '../model/point';\r\nimport { PopoverInfo } from '../model/popover-info';\r\nimport { SelectieEvent } from '../model/selectie-event';\r\nimport { SelectieInfo } from '../model/selectie-info';\r\nimport { SvgInfo } from '../model/svg-info';\r\nimport { ClickareaService } from '../services/clickarea.service';\r\nimport { PuicHelperService } from '../services/puic-helper.service';\r\nimport { ClassesUtil } from '../utils/classes-util';\r\nimport { DocumentToken } from '../utils/document-token';\r\nimport { FocusUtil } from '../utils/focus-util';\r\n\r\n@Component({\r\n selector: 'imx-viewer',\r\n templateUrl: './imx-viewer.component.html',\r\n styleUrls: ['./imx-viewer.component.css']\r\n})\r\nexport class ImxViewerComponent implements OnChanges, OnInit, OnDestroy {\r\n private SVG_BASE64_PREFIX = 'data:image/svg+xml;base64,';\r\n private SVG_PREFIX = 'data:image/svg+xml,';\r\n\r\n @Input() useClickArea = false;\r\n @Input() inlineDgnCssImport = false;\r\n @Input() svgInfo: SvgInfo[];\r\n @Input() selectieInfos: SelectieInfo[] = [];\r\n\r\n // Onderstaande inputs worden meegenomen voor clickarea:\r\n @Input() clickableIds: string[] = [];\r\n @Input() rightClickableIds: string[] = [];\r\n @Input() popoverInfos: PopoverInfo[] = [];\r\n\r\n @ViewChild('svgParent', { static: true }) svgParentRef: ElementRef;\r\n\r\n errors = false;\r\n popoverStyle: any = { display: 'inline' };\r\n popoverHtmlContent = '';\r\n popoverTitleContent: string;\r\n\r\n @Output() clickHandler = new EventEmitter<SelectieEvent>();\r\n @Output() rightClickHandler = new EventEmitter<SelectieEvent>();\r\n @Output() svgLoaded = new EventEmitter<void>();\r\n\r\n private svgGeladen = false;\r\n private eventListeners: Map<string, Map<Element, any>> = new Map();\r\n private svgPanZoomRef: SvgPanZoom.Instance;\r\n\r\n constructor(@Inject(DocumentToken) private document: any, private http: HttpClient,\r\n private clickAreaService: ClickareaService, private puicHelper: PuicHelperService) {\r\n }\r\n\r\n ngOnInit() {\r\n this.createSvgPanZoomRefIfNotExists();\r\n this.puicHelper.setRootSvg(this.getSvgParent());\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n // If Imx-viewer is initialized with svgInfo, ngOnChanges is called before ngOnInit.\r\n // In that case we need to create svgPanZoomRef here.\r\n this.createSvgPanZoomRefIfNotExists();\r\n\r\n const { useClickArea, clickableIds, rightClickableIds, popoverInfos, selectieInfos, svgInfo } = changes;\r\n\r\n if (useClickArea || clickableIds || rightClickableIds || popoverInfos) {\r\n this.delayedClickAreaCreation();\r\n }\r\n\r\n if (this.svgInfo && svgInfo) {\r\n this.loadSvgs();\r\n }\r\n\r\n if (this.clickableIds && clickableIds && this.svgGeladen) {\r\n this.addClickEventHandlersToElements(this.clickableIds, 'click');\r\n }\r\n\r\n if (this.rightClickableIds && rightClickableIds && this.svgGeladen) {\r\n this.addClickEventHandlersToElements(this.rightClickableIds, 'contextmenu');\r\n }\r\n\r\n if (this.selectieInfos && selectieInfos && this.svgGeladen) {\r\n this.selectElements();\r\n }\r\n\r\n if (this.popoverInfos && popoverInfos && this.svgGeladen) {\r\n this.addMouseoverEventHandlerToElements();\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.svgPanZoomRef?.destroy();\r\n this.svgPanZoomRef = undefined;\r\n }\r\n\r\n public focusOnIds(focusIds: string[]) {\r\n FocusUtil.focusOnIds(focusIds, this.svgPanZoomRef, this.puicHelper);\r\n }\r\n\r\n public getSvgPanZoomInstance: () => SvgPanZoom.Instance = () => this.svgPanZoomRef;\r\n\r\n // Here only used in test, but also used by applications. Do not remove.\r\n public static getXCoordinate(decodedSvgDataUrl: string) {\r\n let div = document.createElement('div');\r\n div.innerHTML = decodedSvgDataUrl;\r\n // De SVG-width wordt in de svg tag gespecificeerd.\r\n const x = div.firstElementChild.getAttribute('width');\r\n const result = parseFloat(x);\r\n div = null;\r\n return result;\r\n }\r\n\r\n hidePopOver = () => this.popoverStyle.visibility = 'hidden';\r\n\r\n private createSvgPanZoomRefIfNotExists() {\r\n if (!this.svgPanZoomRef) {\r\n this.svgPanZoomRef = SvgPanZoom(this.getSvgParent(), {\r\n fit: false,\r\n center: true,\r\n dblClickZoomEnabled: false,\r\n onZoom: () => this.hidePopOver(),\r\n onPan: () => this.hidePopOver()\r\n });\r\n\r\n this.addStyleToRootSvg();\r\n }\r\n }\r\n\r\n /**\r\n * Style wordt vanuit javascript toegevoegd na de create van SvgZoomPanRef deze maakt een viewport aan.\r\n * - Clickarea CSS wordt dynamisch aan de SVG toegevoegd, dit voorkomt dat dat er ngcontent property op geplaatst wordt.\r\n * De SVG's worden niet voorzien van ngcontent attribuut.\r\n * - DGN.css import wordt (optioneel) in de root SVG opgenomen, deze is eerst verwijderd uit de SVG's. Om meerdere imports te voorkomen.\r\n * */\r\n private addStyleToRootSvg() {\r\n const defs = document.createElementNS('http://www.w3.org/2000/svg', 'defs');\r\n\r\n let style = this.inlineDgnCssImport ? '@import url(\"dgn.css\");\\n' : '';\r\n style +=\r\n `.imxview-selected > polyline.imxview-clickarea, polyline.imxview-clickarea {\r\n stroke: var(--imxview-clickarea-stroke, transparent);\r\n stroke-width: var(--imxview-clickarea-stroke-width, 10px);\r\n stroke-dasharray: none;\r\n }`;\r\n defs.innerHTML =\r\n `<style type=\"text/css\">\r\n ${ style }\r\n </style>`;\r\n const firstElementChild = this.getSvgParent().firstElementChild;\r\n this.getSvgParent().insertBefore(defs, firstElementChild);\r\n }\r\n\r\n private loadSvgs(): void {\r\n combineLatest(this.svgInfo.map(svgInfo => this.loadSvg(svgInfo.svg)))\r\n .pipe(take(1))\r\n .subscribe(svgs => {\r\n const svg = this.concatenateSvgs(svgs);\r\n this.updateDom(svg);\r\n this.svgGeladen = true;\r\n this.svgLoaded.emit();\r\n this.delayedClickAreaCreation();\r\n this.addClickEventHandlersToElements(this.clickableIds, 'click');\r\n this.addClickEventHandlersToElements(this.rightClickableIds, 'contextmenu');\r\n this.selectElements();\r\n this.addMouseoverEventHandlerToElements();\r\n },\r\n error => this.flagErrors(error)\r\n );\r\n }\r\n\r\n private loadSvg(svgSrc: string): Observable<string> {\r\n if (svgSrc.startsWith('data:')) {\r\n let parsed;\r\n if (svgSrc.startsWith(this.SVG_BASE64_PREFIX)) {\r\n try {\r\n parsed = atob(svgSrc.substring(this.SVG_BASE64_PREFIX.length));\r\n } catch (e) {\r\n return observableThrowError('Data-url parse error');\r\n }\r\n } else if (svgSrc.startsWith(this.SVG_PREFIX)) {\r\n parsed = svgSrc.substring(this.SVG_PREFIX.length);\r\n }\r\n\r\n if (parsed) {\r\n return observableOf(parsed);\r\n }\r\n }\r\n\r\n return this.http.get(svgSrc, { responseType: 'text' });\r\n }\r\n\r\n private addClickEventHandlersToElement(listeners: Map<Element, any>, elem, eventType: string, puic: string) {\r\n const elemAlreadyHasListener = listeners.get(elem);\r\n if (!elemAlreadyHasListener) {\r\n const fn = eventType === 'click' ?\r\n (e) => this.clickHandler.emit(new SelectieEvent(puic, e)) :\r\n (e) => {\r\n e.preventDefault();\r\n this.rightClickHandler.emit(new SelectieEvent(puic, e));\r\n return false;\r\n };\r\n listeners.set(elem, fn);\r\n elem.addEventListener(eventType, fn);\r\n if (eventType === 'click') {\r\n elem.style.cursor = 'pointer';\r\n }\r\n }\r\n }\r\n\r\n private addClickEventHandlersToElements(clickableIds: string[], eventtype: string) {\r\n const listeners = this.removeOldState(eventtype);\r\n\r\n if (clickableIds) {\r\n clickableIds.forEach(puic => {\r\n const elements = this.puicHelper.getAllElementsForPuic(puic);\r\n elements.forEach((element) => this.addClickEventHandlersToElement(listeners, element, eventtype, puic));\r\n });\r\n }\r\n }\r\n\r\n private addMouseoverEventHandlerToElements() {\r\n const listeners = this.removeOldState('mouseover');\r\n if (this.popoverInfos) {\r\n this.popoverInfos.forEach(popoverInfo => {\r\n popoverInfo.puicArray.forEach(puic => {\r\n const elems = this.puicHelper.getAllElementsForPuic(puic);\r\n for (let i = 0; i < elems.length; i++) {\r\n const fn = (e) => {\r\n this.popoverHtmlContent = popoverInfo.popoverHtmlContent;\r\n this.popoverTitleContent = popoverInfo.popoverTitleContent;\r\n\r\n // use timeout to have content rendered before getting size\r\n setTimeout(() => this.showPopup(e), 0);\r\n };\r\n\r\n const elem = elems.item(i);\r\n listeners.set(elem, fn);\r\n elem.addEventListener('mouseover', fn);\r\n }\r\n }\r\n );\r\n }\r\n );\r\n }\r\n }\r\n\r\n private concatenateSvgs(svgs: string[]): string {\r\n let svgContent = '';\r\n\r\n for (let i = 0, len = this.svgInfo.length; i < len; i++) {\r\n const sourceCoordinates = this.svgInfo[i].coordinates || new Point(0, 0);\r\n\r\n const div = document.createElement('div');\r\n\r\n /** Verwijder dgn.css import uit geleverde SVG's.\r\n * De import wordt optioneel (standaard aan) in de root SVG geplaats om te voorkomen dat de import meermaals gebeurd.\r\n * zie addStyleToRootSvg()\r\n */\r\n div.innerHTML = svgs[i].replace('@import url(\"dgn.css\");', '');\r\n div.firstElementChild.setAttribute('x', sourceCoordinates.x.toString());\r\n div.firstElementChild.setAttribute('y', sourceCoordinates.y.toString());\r\n\r\n svgContent += div.innerHTML;\r\n }\r\n\r\n return svgContent;\r\n }\r\n\r\n private flagErrors(error) {\r\n console.log(error);\r\n this.errors = true;\r\n }\r\n\r\n private removeOldState(eventType: string): Map<Element, any> {\r\n let listeners = this.eventListeners.get(eventType);\r\n if (listeners) {\r\n listeners.forEach((fn, el) => {\r\n el.removeEventListener(eventType, fn);\r\n if (eventType === 'click') {\r\n el.setAttribute('style', ImxViewerComponent.setDefaultCursor(el));\r\n }\r\n });\r\n }\r\n listeners = new Map();\r\n this.eventListeners.set(eventType, listeners);\r\n return listeners;\r\n }\r\n\r\n private selectElements() {\r\n const allElems = this.getSvgParent().querySelectorAll('[class*=imxview-selected]');\r\n for (let j = 0; j < allElems.length; j++) {\r\n ClassesUtil.removeClassesStartingWith(allElems[j], 'imxview-selected');\r\n }\r\n\r\n if (this.selectieInfos) {\r\n this.selectieInfos.forEach(selectieInfo => {\r\n selectieInfo.ids.forEach(id => {\r\n this.puicHelper.getAllElementsForPuic(id).forEach(elem => {\r\n ClassesUtil.addClass(elem, 'imxview-selected');\r\n if ('' !== selectieInfo.clazz) {\r\n ClassesUtil.addClass(elem, 'imxview-selected-' + selectieInfo.clazz);\r\n }\r\n });\r\n });\r\n });\r\n }\r\n }\r\n\r\n private static setDefaultCursor(el): string {\r\n const oudeStyle = el.getAttribute('style');\r\n return oudeStyle ? oudeStyle.replace('pointer', 'default') : 'cursor: default';\r\n }\r\n\r\n private showPopup(e) {\r\n const popoverElem = document.getElementById('popover').getBoundingClientRect();\r\n const left = e.layerX - (popoverElem.width / 2) + 'px';\r\n const top = e.layerY - (popoverElem.height + 8) + 'px';\r\n this.popoverStyle = {\r\n left: left, top: top, position: 'absolute',\r\n display: 'inline', visibility: 'visible'\r\n };\r\n }\r\n\r\n private updateDom(svg: String) {\r\n const svgGroup = this.getSvgParent().getElementsByClassName('svg-pan-zoom_viewport')[0];\r\n svgGroup.innerHTML = svg.substring(svg.indexOf('<svg'));\r\n this.svgPanZoomRef.updateBBox();\r\n\r\n this.svgPanZoomRef.resize();\r\n this.svgPanZoomRef.fit();\r\n this.svgPanZoomRef.center();\r\n }\r\n\r\n private delayedClickAreaCreation() {\r\n if (this.svgGeladen && this.useClickArea) {\r\n const clickareaIds = new Set([...this.clickableIds, ...this.rightClickableIds,\r\n ...this.popoverInfos.flatMap(pi => pi.puicArray)]);\r\n this.clickAreaService.delayedClickAreaCreation(clickareaIds);\r\n }\r\n }\r\n\r\n private getSvgParent = () => this.svgParentRef.nativeElement;\r\n}\r\n","<div id=\"imxviewer\" data-test-id=\"imx-viewer\">\n <div id=\"svgContainer\" class=\"col-md-12 top10\" [hidden]=\"errors\" (click)=\"hidePopOver()\" data-test-id=\"svg-container\">\n <svg #svgParent xmlns=\"http://www.w3.org/2000/svg\"></svg>\n </div>\n <div id=\"popover\" class=\"popover top bs-popover-top\" [ngStyle]=\"popoverStyle\" (mouseleave)=\"hidePopOver()\" data-test-id=\"popover\">\n <div class=\"arrow\"></div>\n <h3 class=\"popover-header\" *ngIf=\"popoverTitleContent !== undefined\" [innerHTML]=\"popoverTitleContent\" data-test-id=\"popover-header\"></h3>\n <div class=\"popover-body\" [innerHTML]=\"popoverHtmlContent\" data-test-id=\"popover-body\"></div>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ImxViewerComponent } from './components/imx-viewer.component';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { documentProvider, DocumentToken } from './utils/document-token';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n HttpClientModule\r\n ],\r\n declarations: [\r\n ImxViewerComponent\r\n ],\r\n exports: [\r\n ImxViewerComponent\r\n ],\r\n providers: [\r\n { provide: DocumentToken, useFactory: documentProvider }\r\n ]\r\n})\r\nexport class ImxViewerModule {\r\n}\r\n","export class PopoverInfo {\r\n public popoverTitleContent: string;\r\n constructor (public puicArray: string[], public popoverHtmlContent: string) {\r\n }\r\n}\r\n","import { Point } from './point';\r\n\r\nexport class SvgInfo {\r\n constructor(public svg: string, public coordinates?: Point) {\r\n }\r\n}\r\n","export class SelectieInfo {\n constructor(public ids: string[], public clazz: string) {\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.PuicHelperService","observableThrowError","observableOf","i2.ClickareaService","i3.PuicHelperService"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loxia/imx-viewer",
3
- "version": "9.4.1",
3
+ "version": "10.0.0",
4
4
  "license": "MIT",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org"
@@ -11,22 +11,22 @@
11
11
  },
12
12
  "dependencies": {
13
13
  "core-js": "3.9.1",
14
- "rxjs": "6.6.6",
15
- "tslib": "^2.3.1",
16
- "zone.js": "~0.11.4"
14
+ "rxjs": "^7.5.0",
15
+ "tslib": "^2.5.3",
16
+ "zone.js": "~0.11.8"
17
17
  },
18
18
  "module": "fesm2015/loxia-imx-viewer.mjs",
19
19
  "es2020": "fesm2020/loxia-imx-viewer.mjs",
20
20
  "esm2020": "esm2020/loxia-imx-viewer.mjs",
21
21
  "fesm2020": "fesm2020/loxia-imx-viewer.mjs",
22
22
  "fesm2015": "fesm2015/loxia-imx-viewer.mjs",
23
- "typings": "loxia-imx-viewer.d.ts",
23
+ "typings": "index.d.ts",
24
24
  "exports": {
25
25
  "./package.json": {
26
26
  "default": "./package.json"
27
27
  },
28
28
  ".": {
29
- "types": "./loxia-imx-viewer.d.ts",
29
+ "types": "./index.d.ts",
30
30
  "esm2020": "./esm2020/loxia-imx-viewer.mjs",
31
31
  "es2020": "./fesm2020/loxia-imx-viewer.mjs",
32
32
  "es2015": "./fesm2015/loxia-imx-viewer.mjs",
File without changes