@loxia/imx-viewer 7.2.1 → 8.0.0-220301120153041
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 +8 -0
- package/components/imx-viewer.component.d.ts +3 -0
- package/esm2020/components/imx-viewer.component.mjs +300 -0
- package/esm2020/imx-viewer.module.mjs +36 -0
- package/esm2020/loxia-imx-viewer.mjs +5 -0
- package/esm2020/model/point.mjs +7 -0
- package/esm2020/model/popover-info.mjs +7 -0
- package/esm2020/model/selectie-event.mjs +7 -0
- package/esm2020/model/selectie-info.mjs +7 -0
- package/esm2020/model/svg-info.mjs +7 -0
- package/esm2020/public_api.mjs +8 -0
- package/esm2020/services/clickarea.service.mjs +44 -0
- package/esm2020/services/puic-helper.service.mjs +17 -0
- package/esm2020/utils/classes-util.mjs +35 -0
- package/esm2020/utils/document-token.mjs +4 -0
- package/esm2020/utils/focus-util.mjs +63 -0
- package/esm2020/utils/svg-rect-util.mjs +48 -0
- package/fesm2015/loxia-imx-viewer.mjs +573 -0
- package/fesm2015/loxia-imx-viewer.mjs.map +1 -0
- package/{fesm2015/loxia-imx-viewer.js → fesm2020/loxia-imx-viewer.mjs} +124 -105
- package/fesm2020/loxia-imx-viewer.mjs.map +1 -0
- package/imx-viewer.module.d.ts +7 -0
- package/loxia-imx-viewer.d.ts +1 -3
- package/package.json +21 -9
- package/services/clickarea.service.d.ts +3 -0
- package/services/puic-helper.service.d.ts +3 -0
- package/bundles/loxia-imx-viewer.umd.js +0 -929
- package/bundles/loxia-imx-viewer.umd.js.map +0 -1
- package/bundles/loxia-imx-viewer.umd.min.js +0 -16
- package/bundles/loxia-imx-viewer.umd.min.js.map +0 -1
- package/esm2015/components/imx-viewer.component.js +0 -292
- package/esm2015/imx-viewer.module.js +0 -27
- package/esm2015/loxia-imx-viewer.js +0 -8
- package/esm2015/model/point.js +0 -7
- package/esm2015/model/popover-info.js +0 -7
- package/esm2015/model/selectie-event.js +0 -7
- package/esm2015/model/selectie-info.js +0 -7
- package/esm2015/model/svg-info.js +0 -7
- package/esm2015/public_api.js +0 -8
- package/esm2015/services/clickarea.service.js +0 -46
- package/esm2015/services/puic-helper.service.js +0 -15
- package/esm2015/utils/classes-util.js +0 -35
- package/esm2015/utils/document-token.js +0 -4
- package/esm2015/utils/focus-util.js +0 -63
- package/esm2015/utils/svg-rect-util.js +0 -48
- package/fesm2015/loxia-imx-viewer.js.map +0 -1
- package/loxia-imx-viewer.metadata.json +0 -1
package/README.md
CHANGED
|
@@ -106,6 +106,14 @@ Met de onderstaande css kan de default breedte van een clickarea aangepast worde
|
|
|
106
106
|
|
|
107
107
|
## Release Notes
|
|
108
108
|
|
|
109
|
+
### 9.0.0 xx-xx-2022
|
|
110
|
+
BREAKING CHANGES
|
|
111
|
+
* Upgraded de SVG-IMX-Viewer naar Angular 13
|
|
112
|
+
|
|
113
|
+
### 8.0.0 15-02-2022
|
|
114
|
+
BREAKING CHANGES
|
|
115
|
+
* Upgraded de SVG-IMX-Viewer naar Angular 12
|
|
116
|
+
|
|
109
117
|
### 7.2.1 08-02-2022
|
|
110
118
|
* PW-7164 Bugfix voor de verdwijnende mousepointer
|
|
111
119
|
|
|
@@ -7,6 +7,7 @@ import { PopoverInfo } from '../model/popover-info';
|
|
|
7
7
|
import { SelectieEvent } from '../model/selectie-event';
|
|
8
8
|
import { SelectieInfo } from '../model/selectie-info';
|
|
9
9
|
import { SvgInfo } from '../model/svg-info';
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
10
11
|
export declare class ImxViewerComponent implements OnChanges, OnInit {
|
|
11
12
|
private document;
|
|
12
13
|
private http;
|
|
@@ -59,4 +60,6 @@ export declare class ImxViewerComponent implements OnChanges, OnInit {
|
|
|
59
60
|
private updateDom;
|
|
60
61
|
private delayedClickAreaCreation;
|
|
61
62
|
private getSvgParent;
|
|
63
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ImxViewerComponent, never>;
|
|
64
|
+
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>;
|
|
62
65
|
}
|
|
@@ -0,0 +1,300 @@
|
|
|
1
|
+
import { Component, EventEmitter, Inject, Input, Output, ViewChild } from '@angular/core';
|
|
2
|
+
import * as dataUrl from 'dataurl';
|
|
3
|
+
import { combineLatest, of as observableOf, throwError as observableThrowError } from 'rxjs';
|
|
4
|
+
import { take } from 'rxjs/operators';
|
|
5
|
+
import * as SvgPanZoom from 'svg-pan-zoom';
|
|
6
|
+
import { ClassesUtil } from '../utils/classes-util';
|
|
7
|
+
import { DocumentToken } from '../utils/document-token';
|
|
8
|
+
import { FocusUtil } from '../utils/focus-util';
|
|
9
|
+
import { Point } from '../model/point';
|
|
10
|
+
import { SelectieEvent } from '../model/selectie-event';
|
|
11
|
+
import * as i0 from "@angular/core";
|
|
12
|
+
import * as i1 from "@angular/common/http";
|
|
13
|
+
import * as i2 from "../services/clickarea.service";
|
|
14
|
+
import * as i3 from "../services/puic-helper.service";
|
|
15
|
+
import * as i4 from "@angular/common";
|
|
16
|
+
const _svgPanZoom = SvgPanZoom; // via andere variabele zodat ng-packgr/rollup geen error geeft bij de aannroep
|
|
17
|
+
export class ImxViewerComponent {
|
|
18
|
+
constructor(document, http, clickAreaService, puicHelper) {
|
|
19
|
+
this.document = document;
|
|
20
|
+
this.http = http;
|
|
21
|
+
this.clickAreaService = clickAreaService;
|
|
22
|
+
this.puicHelper = puicHelper;
|
|
23
|
+
this.useClickArea = false;
|
|
24
|
+
this.inlineDgnCssImport = true;
|
|
25
|
+
this.selectieInfos = [];
|
|
26
|
+
// Onderstaande inputs worden meegenomen voor clickarea:
|
|
27
|
+
this.clickableIds = [];
|
|
28
|
+
this.rightClickableIds = [];
|
|
29
|
+
this.popoverInfos = [];
|
|
30
|
+
this.errors = false;
|
|
31
|
+
this.popoverStyle = { display: 'inline' };
|
|
32
|
+
this.popoverHtmlContent = '';
|
|
33
|
+
this.clickHandler = new EventEmitter();
|
|
34
|
+
this.rightClickHandler = new EventEmitter();
|
|
35
|
+
this.svgLoaded = new EventEmitter();
|
|
36
|
+
this.svgGeladen = false;
|
|
37
|
+
this.eventListeners = new Map();
|
|
38
|
+
this.getSvgPanZoomInstance = () => this.svgPanZoomRef;
|
|
39
|
+
this.hidePopOver = () => this.popoverStyle.visibility = 'hidden';
|
|
40
|
+
this.getSvgParent = () => this.svgParentRef.nativeElement;
|
|
41
|
+
}
|
|
42
|
+
ngOnInit() {
|
|
43
|
+
this.createSvgPanZoomRefIfNotExists();
|
|
44
|
+
this.puicHelper.setRootSvg(this.getSvgParent());
|
|
45
|
+
}
|
|
46
|
+
ngOnChanges(changes) {
|
|
47
|
+
// If Imx-viewer is initialized with svgInfo, ngOnChanges is called before ngOnInit.
|
|
48
|
+
// In that case we need to create svgPanZoomRef here.
|
|
49
|
+
this.createSvgPanZoomRefIfNotExists();
|
|
50
|
+
const { useClickArea, clickableIds, rightClickableIds, popoverInfos, selectieInfos, svgInfo } = changes;
|
|
51
|
+
if (useClickArea || clickableIds || rightClickableIds || popoverInfos) {
|
|
52
|
+
this.delayedClickAreaCreation();
|
|
53
|
+
}
|
|
54
|
+
if (this.svgInfo && svgInfo) {
|
|
55
|
+
this.loadSvgs();
|
|
56
|
+
}
|
|
57
|
+
if (this.clickableIds && clickableIds && this.svgGeladen) {
|
|
58
|
+
this.addClickEventHandlersToElements(this.clickableIds, 'click');
|
|
59
|
+
}
|
|
60
|
+
if (this.rightClickableIds && rightClickableIds && this.svgGeladen) {
|
|
61
|
+
this.addClickEventHandlersToElements(this.rightClickableIds, 'contextmenu');
|
|
62
|
+
}
|
|
63
|
+
if (this.selectieInfos && selectieInfos && this.svgGeladen) {
|
|
64
|
+
this.selectElements();
|
|
65
|
+
}
|
|
66
|
+
if (this.popoverInfos && popoverInfos && this.svgGeladen) {
|
|
67
|
+
this.addMouseoverEventHandlerToElements();
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
focusOnIds(focusIds) {
|
|
71
|
+
FocusUtil.focusOnIds(focusIds, this.svgPanZoomRef, this.puicHelper);
|
|
72
|
+
}
|
|
73
|
+
// Here only used in test, but also used by applications. Do not remove.
|
|
74
|
+
static getXCoordinate(decodedSvgDataUrl) {
|
|
75
|
+
let div = document.createElement('div');
|
|
76
|
+
div.innerHTML = decodedSvgDataUrl;
|
|
77
|
+
// De SVG-width wordt in de svg tag gespecificeerd.
|
|
78
|
+
const x = div.firstElementChild.getAttribute('width');
|
|
79
|
+
const result = parseFloat(x);
|
|
80
|
+
div = null;
|
|
81
|
+
return result;
|
|
82
|
+
}
|
|
83
|
+
createSvgPanZoomRefIfNotExists() {
|
|
84
|
+
if (!this.svgPanZoomRef) {
|
|
85
|
+
this.svgPanZoomRef = _svgPanZoom(this.getSvgParent(), {
|
|
86
|
+
fit: false,
|
|
87
|
+
center: true,
|
|
88
|
+
dblClickZoomEnabled: false,
|
|
89
|
+
onZoom: () => this.hidePopOver(),
|
|
90
|
+
onPan: () => this.hidePopOver()
|
|
91
|
+
});
|
|
92
|
+
this.addStyleToRootSvg();
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Style wordt vanuit javascript toegevoegd na de create van SvgZoomPanRef deze maakt een viewport aan.
|
|
97
|
+
* - Clickarea CSS wordt dynamisch aan de SVG toegevoegd, dit voorkomt dat dat er ngcontent property op geplaatst wordt.
|
|
98
|
+
* De SVG's worden niet voorzien van ngcontent attribuut.
|
|
99
|
+
* - DGN.css import wordt (optioneel) in de root SVG opgenomen, deze is eerst verwijderd uit de SVG's. Om meerdere imports te voorkomen.
|
|
100
|
+
* */
|
|
101
|
+
addStyleToRootSvg() {
|
|
102
|
+
const defs = document.createElementNS('http://www.w3.org/2000/svg', 'defs');
|
|
103
|
+
let style = this.inlineDgnCssImport ? '@import url("dgn.css");\n' : '';
|
|
104
|
+
style +=
|
|
105
|
+
`.imxview-selected > polyline.imxview-clickarea, polyline.imxview-clickarea {
|
|
106
|
+
stroke: var(--imxview-clickarea-stroke, transparent);
|
|
107
|
+
stroke-width: var(--imxview-clickarea-stroke-width, 10px);
|
|
108
|
+
stroke-dasharray: none;
|
|
109
|
+
}`;
|
|
110
|
+
defs.innerHTML =
|
|
111
|
+
`<style type="text/css">
|
|
112
|
+
${style}
|
|
113
|
+
</style>`;
|
|
114
|
+
const firstElementChild = this.getSvgParent().firstElementChild;
|
|
115
|
+
this.getSvgParent().insertBefore(defs, firstElementChild);
|
|
116
|
+
}
|
|
117
|
+
loadSvgs() {
|
|
118
|
+
combineLatest(this.svgInfo.map(svgInfo => this.loadSvg(svgInfo.svg)))
|
|
119
|
+
.pipe(take(1))
|
|
120
|
+
.subscribe(svgs => {
|
|
121
|
+
const svg = this.concatenateSvgs(svgs);
|
|
122
|
+
this.updateDom(svg);
|
|
123
|
+
this.svgGeladen = true;
|
|
124
|
+
this.svgLoaded.emit();
|
|
125
|
+
this.delayedClickAreaCreation();
|
|
126
|
+
this.addClickEventHandlersToElements(this.clickableIds, 'click');
|
|
127
|
+
this.addClickEventHandlersToElements(this.rightClickableIds, 'contextmenu');
|
|
128
|
+
this.selectElements();
|
|
129
|
+
this.addMouseoverEventHandlerToElements();
|
|
130
|
+
}, error => this.flagErrors(error));
|
|
131
|
+
}
|
|
132
|
+
loadSvg(svgSrc) {
|
|
133
|
+
if (svgSrc.startsWith('data:')) {
|
|
134
|
+
const parsed = dataUrl.parse(svgSrc);
|
|
135
|
+
if (parsed) {
|
|
136
|
+
return observableOf(parsed.data.toString());
|
|
137
|
+
}
|
|
138
|
+
return observableThrowError('Data-url parse error');
|
|
139
|
+
}
|
|
140
|
+
return this.http.get(svgSrc, { responseType: 'text' });
|
|
141
|
+
}
|
|
142
|
+
addClickEventHandlersToElement(listeners, elem, eventType, puic) {
|
|
143
|
+
const elemAlreadyHasListener = listeners.get(elem);
|
|
144
|
+
if (!elemAlreadyHasListener) {
|
|
145
|
+
const fn = eventType === 'click' ?
|
|
146
|
+
(e) => this.clickHandler.emit(new SelectieEvent(puic, e)) :
|
|
147
|
+
(e) => {
|
|
148
|
+
e.preventDefault();
|
|
149
|
+
this.rightClickHandler.emit(new SelectieEvent(puic, e));
|
|
150
|
+
return false;
|
|
151
|
+
};
|
|
152
|
+
listeners.set(elem, fn);
|
|
153
|
+
elem.addEventListener(eventType, fn);
|
|
154
|
+
if (eventType === 'click') {
|
|
155
|
+
elem.style.cursor = 'pointer';
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
addClickEventHandlersToElements(clickableIds, eventtype) {
|
|
160
|
+
const listeners = this.removeOldState(eventtype);
|
|
161
|
+
if (clickableIds) {
|
|
162
|
+
clickableIds.forEach(puic => {
|
|
163
|
+
const elements = this.puicHelper.getAllElementsForPuic(puic);
|
|
164
|
+
elements.forEach((element) => this.addClickEventHandlersToElement(listeners, element, eventtype, puic));
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
addMouseoverEventHandlerToElements() {
|
|
169
|
+
const listeners = this.removeOldState('mouseover');
|
|
170
|
+
if (this.popoverInfos) {
|
|
171
|
+
this.popoverInfos.forEach(popoverInfo => {
|
|
172
|
+
popoverInfo.puicArray.forEach(puic => {
|
|
173
|
+
const elems = this.puicHelper.getAllElementsForPuic(puic);
|
|
174
|
+
for (let i = 0; i < elems.length; i++) {
|
|
175
|
+
const fn = (e) => {
|
|
176
|
+
this.popoverHtmlContent = popoverInfo.popoverHtmlContent;
|
|
177
|
+
this.popoverTitleContent = popoverInfo.popoverTitleContent;
|
|
178
|
+
// use timeout to have content rendered before getting size
|
|
179
|
+
setTimeout(() => this.showPopup(e), 0);
|
|
180
|
+
};
|
|
181
|
+
const elem = elems.item(i);
|
|
182
|
+
listeners.set(elem, fn);
|
|
183
|
+
elem.addEventListener('mouseover', fn);
|
|
184
|
+
}
|
|
185
|
+
});
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
concatenateSvgs(svgs) {
|
|
190
|
+
let svgContent = '';
|
|
191
|
+
for (let i = 0, len = this.svgInfo.length; i < len; i++) {
|
|
192
|
+
const sourceCoordinates = this.svgInfo[i].coordinates || new Point(0, 0);
|
|
193
|
+
const div = document.createElement('div');
|
|
194
|
+
/** Verwijder dgn.css import uit geleverde SVG's.
|
|
195
|
+
* De import wordt optioneel (standaard aan) in de root SVG geplaats om te voorkomen dat de import meermaals gebeurd.
|
|
196
|
+
* zie addStyleToRootSvg()
|
|
197
|
+
*/
|
|
198
|
+
div.innerHTML = svgs[i].replace('@import url("dgn.css");', '');
|
|
199
|
+
div.firstElementChild.setAttribute('x', sourceCoordinates.x.toString());
|
|
200
|
+
div.firstElementChild.setAttribute('y', sourceCoordinates.y.toString());
|
|
201
|
+
svgContent += div.innerHTML;
|
|
202
|
+
}
|
|
203
|
+
return svgContent;
|
|
204
|
+
}
|
|
205
|
+
flagErrors(error) {
|
|
206
|
+
console.log(error);
|
|
207
|
+
this.errors = true;
|
|
208
|
+
}
|
|
209
|
+
removeOldState(eventType) {
|
|
210
|
+
let listeners = this.eventListeners.get(eventType);
|
|
211
|
+
if (listeners) {
|
|
212
|
+
listeners.forEach((fn, el) => {
|
|
213
|
+
el.removeEventListener(eventType, fn);
|
|
214
|
+
if (eventType === 'click') {
|
|
215
|
+
el.setAttribute('style', ImxViewerComponent.setDefaultCursor(el));
|
|
216
|
+
}
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
listeners = new Map();
|
|
220
|
+
this.eventListeners.set(eventType, listeners);
|
|
221
|
+
return listeners;
|
|
222
|
+
}
|
|
223
|
+
selectElements() {
|
|
224
|
+
const allElems = this.getSvgParent().querySelectorAll('[class*=imxview-selected]');
|
|
225
|
+
for (let j = 0; j < allElems.length; j++) {
|
|
226
|
+
ClassesUtil.removeClassesStartingWith(allElems[j], 'imxview-selected');
|
|
227
|
+
}
|
|
228
|
+
if (this.selectieInfos) {
|
|
229
|
+
this.selectieInfos.forEach(selectieInfo => {
|
|
230
|
+
selectieInfo.ids.forEach(id => {
|
|
231
|
+
this.puicHelper.getAllElementsForPuic(id).forEach(elem => {
|
|
232
|
+
ClassesUtil.addClass(elem, 'imxview-selected');
|
|
233
|
+
if ('' !== selectieInfo.clazz) {
|
|
234
|
+
ClassesUtil.addClass(elem, 'imxview-selected-' + selectieInfo.clazz);
|
|
235
|
+
}
|
|
236
|
+
});
|
|
237
|
+
});
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
static setDefaultCursor(el) {
|
|
242
|
+
const oudeStyle = el.getAttribute('style');
|
|
243
|
+
return oudeStyle ? oudeStyle.replace('pointer', 'default') : 'cursor: default';
|
|
244
|
+
}
|
|
245
|
+
showPopup(e) {
|
|
246
|
+
const popoverElem = document.getElementById('popover').getBoundingClientRect();
|
|
247
|
+
const left = e.layerX - (popoverElem.width / 2) + 'px';
|
|
248
|
+
const top = e.layerY - (popoverElem.height + 8) + 'px';
|
|
249
|
+
this.popoverStyle = {
|
|
250
|
+
left: left, top: top, position: 'absolute',
|
|
251
|
+
display: 'inline', visibility: 'visible'
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
updateDom(svg) {
|
|
255
|
+
const svgGroup = this.getSvgParent().getElementsByClassName('svg-pan-zoom_viewport')[0];
|
|
256
|
+
svgGroup.innerHTML = svg.substring(svg.indexOf('<svg'));
|
|
257
|
+
this.svgPanZoomRef.updateBBox();
|
|
258
|
+
this.svgPanZoomRef.center();
|
|
259
|
+
}
|
|
260
|
+
delayedClickAreaCreation() {
|
|
261
|
+
if (this.svgGeladen && this.useClickArea) {
|
|
262
|
+
const clickareaIds = new Set([...this.clickableIds, ...this.rightClickableIds,
|
|
263
|
+
...this.popoverInfos.flatMap(pi => pi.puicArray)]);
|
|
264
|
+
this.clickAreaService.delayedClickAreaCreation(clickareaIds);
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
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 });
|
|
269
|
+
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\">\n <div id=\"svgContainer\" class=\"col-md-12 top10\" [hidden]=\"errors\" (click)=\"hidePopOver()\">\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()\">\n <div class=\"arrow\"></div>\n <h3 class=\"popover-header\" *ngIf=\"popoverTitleContent !== undefined\">{{popoverTitleContent}}</h3>\n <div class=\"popover-body\" [innerHTML]=\"popoverHtmlContent\"></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"] }] });
|
|
270
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: ImxViewerComponent, decorators: [{
|
|
271
|
+
type: Component,
|
|
272
|
+
args: [{ selector: 'imx-viewer', template: "<div id=\"imxviewer\">\n <div id=\"svgContainer\" class=\"col-md-12 top10\" [hidden]=\"errors\" (click)=\"hidePopOver()\">\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()\">\n <div class=\"arrow\"></div>\n <h3 class=\"popover-header\" *ngIf=\"popoverTitleContent !== undefined\">{{popoverTitleContent}}</h3>\n <div class=\"popover-body\" [innerHTML]=\"popoverHtmlContent\"></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"] }]
|
|
273
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
274
|
+
type: Inject,
|
|
275
|
+
args: [DocumentToken]
|
|
276
|
+
}] }, { type: i1.HttpClient }, { type: i2.ClickareaService }, { type: i3.PuicHelperService }]; }, propDecorators: { useClickArea: [{
|
|
277
|
+
type: Input
|
|
278
|
+
}], inlineDgnCssImport: [{
|
|
279
|
+
type: Input
|
|
280
|
+
}], svgInfo: [{
|
|
281
|
+
type: Input
|
|
282
|
+
}], selectieInfos: [{
|
|
283
|
+
type: Input
|
|
284
|
+
}], clickableIds: [{
|
|
285
|
+
type: Input
|
|
286
|
+
}], rightClickableIds: [{
|
|
287
|
+
type: Input
|
|
288
|
+
}], popoverInfos: [{
|
|
289
|
+
type: Input
|
|
290
|
+
}], svgParentRef: [{
|
|
291
|
+
type: ViewChild,
|
|
292
|
+
args: ['svgParent', { static: true }]
|
|
293
|
+
}], clickHandler: [{
|
|
294
|
+
type: Output
|
|
295
|
+
}], rightClickHandler: [{
|
|
296
|
+
type: Output
|
|
297
|
+
}], svgLoaded: [{
|
|
298
|
+
type: Output
|
|
299
|
+
}] } });
|
|
300
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW14LXZpZXdlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9pbXgtdmlld2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2lteC12aWV3ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNILFNBQVMsRUFFVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFHTCxNQUFNLEVBRU4sU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sS0FBSyxPQUFPLE1BQU0sU0FBUyxDQUFDO0FBQ25DLE9BQU8sRUFBRSxhQUFhLEVBQWMsRUFBRSxJQUFJLFlBQVksRUFBRSxVQUFVLElBQUksb0JBQW9CLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekcsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RDLE9BQU8sS0FBSyxVQUFVLE1BQU0sY0FBYyxDQUFDO0FBRzNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7OztBQUl4RCxNQUFNLFdBQVcsR0FBRyxVQUFVLENBQUMsQ0FBQywrRUFBK0U7QUFPL0csTUFBTSxPQUFPLGtCQUFrQjtJQTBCM0IsWUFBMkMsUUFBYSxFQUFVLElBQWdCLEVBQzlELGdCQUFrQyxFQUFVLFVBQTZCO1FBRGxELGFBQVEsR0FBUixRQUFRLENBQUs7UUFBVSxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQzlELHFCQUFnQixHQUFoQixnQkFB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LGtCQUFrQjtrQkFMOUIsU0FBUzsrQkFDSSxZQUFZOzswQkE4QlQsTUFBTTsyQkFBQyxhQUFhO29JQXpCeEIsWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBR0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFFb0MsWUFBWTtzQkFBckQsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQU85QixZQUFZO3NCQUFyQixNQUFNO2dCQUNHLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHtcclxuICAgIENvbXBvbmVudCxcclxuICAgIEVsZW1lbnRSZWYsXHJcbiAgICBFdmVudEVtaXR0ZXIsXHJcbiAgICBJbmplY3QsXHJcbiAgICBJbnB1dCxcclxuICAgIE9uQ2hhbmdlcyxcclxuICAgIE9uSW5pdCxcclxuICAgIE91dHB1dCxcclxuICAgIFNpbXBsZUNoYW5nZXMsXHJcbiAgICBWaWV3Q2hpbGRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0ICogYXMgZGF0YVVybCBmcm9tICdkYXRhdXJsJztcclxuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgb2YgYXMgb2JzZXJ2YWJsZU9mLCB0aHJvd0Vycm9yIGFzIG9ic2VydmFibGVUaHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCAqIGFzIFN2Z1Bhblpvb20gZnJvbSAnc3ZnLXBhbi16b29tJztcclxuaW1wb3J0IHsgQ2xpY2thcmVhU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2NsaWNrYXJlYS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUHVpY0hlbHBlclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9wdWljLWhlbHBlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ2xhc3Nlc1V0aWwgfSBmcm9tICcuLi91dGlscy9jbGFzc2VzLXV0aWwnO1xyXG5pbXBvcnQgeyBEb2N1bWVudFRva2VuIH0gZnJvbSAnLi4vdXRpbHMvZG9jdW1lbnQtdG9rZW4nO1xyXG5pbXBvcnQgeyBGb2N1c1V0aWwgfSBmcm9tICcuLi91dGlscy9mb2N1cy11dGlsJztcclxuaW1wb3J0IHsgUG9pbnQgfSBmcm9tICcuLi9tb2RlbC9wb2ludCc7XHJcbmltcG9ydCB7IFBvcG92ZXJJbmZvIH0gZnJvbSAnLi4vbW9kZWwvcG9wb3Zlci1pbmZvJztcclxuaW1wb3J0IHsgU2VsZWN0aWVFdmVudCB9IGZyb20gJy4uL21vZGVsL3NlbGVjdGllLWV2ZW50JztcclxuaW1wb3J0IHsgU2VsZWN0aWVJbmZvIH0gZnJvbSAnLi4vbW9kZWwvc2VsZWN0aWUtaW5mbyc7XHJcbmltcG9ydCB7IFN2Z0luZm8gfSBmcm9tICcuLi9tb2RlbC9zdmctaW5mbyc7XHJcblxyXG5jb25zdCBfc3ZnUGFuWm9vbSA9IFN2Z1Bhblpvb207IC8vIHZpYSBhbmRlcmUgdmFyaWFiZWxlIHpvZGF0IG5nLXBhY2tnci9yb2xsdXAgZ2VlbiBlcnJvciBnZWVmdCBiaWogZGUgYWFubnJvZXBcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdpbXgtdmlld2VyJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9pbXgtdmlld2VyLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2lteC12aWV3ZXIuY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbXhWaWV3ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCB7XHJcbiAgICBASW5wdXQoKSB1c2VDbGlja0FyZWEgPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIGlubGluZURnbkNzc0ltcG9ydCA9IHRydWU7XHJcbiAgICBASW5wdXQoKSBzdmdJbmZvOiBTdmdJbmZvW107XHJcbiAgICBASW5wdXQoKSBzZWxlY3RpZUluZm9zOiBTZWxlY3RpZUluZm9bXSA9IFtdO1xyXG5cclxuICAgIC8vIE9uZGVyc3RhYW5kZSBpbnB1dHMgd29yZGVuIG1lZWdlbm9tZW4gdm9vciBjbGlja2FyZWE6XHJcbiAgICBASW5wdXQoKSBjbGlja2FibGVJZHM6IHN0cmluZ1tdID0gW107XHJcbiAgICBASW5wdXQoKSByaWdodENsaWNrYWJsZUlkczogc3RyaW5nW10gPSBbXTtcclxuICAgIEBJbnB1dCgpIHBvcG92ZXJJbmZvczogUG9wb3ZlckluZm9bXSA9IFtdO1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ3N2Z1BhcmVudCcsIHsgc3RhdGljOiB0cnVlIH0pIHN2Z1BhcmVudFJlZjogRWxlbWVudFJlZjtcclxuXHJcbiAgICBlcnJvcnMgPSBmYWxzZTtcclxuICAgIHBvcG92ZXJTdHlsZTogYW55ID0geyBkaXNwbGF5OiAnaW5saW5lJyB9O1xyXG4gICAgcG9wb3Zlckh0bWxDb250ZW50ID0gJyc7XHJcbiAgICBwb3BvdmVyVGl0bGVDb250ZW50OiBzdHJpbmc7XHJcblxyXG4gICAgQE91dHB1dCgpIGNsaWNrSGFuZGxlciA9IG5ldyBFdmVudEVtaXR0ZXI8U2VsZWN0aWVFdmVudD4oKTtcclxuICAgIEBPdXRwdXQoKSByaWdodENsaWNrSGFuZGxlciA9IG5ldyBFdmVudEVtaXR0ZXI8U2VsZWN0aWVFdmVudD4oKTtcclxuICAgIEBPdXRwdXQoKSBzdmdMb2FkZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gICAgcHJpdmF0ZSBzdmdHZWxhZGVuID0gZmFsc2U7XHJcbiAgICBwcml2YXRlIGV2ZW50TGlzdGVuZXJzOiBNYXA8c3RyaW5nLCBNYXA8RWxlbWVudCwgYW55Pj4gPSBuZXcgTWFwKCk7XHJcbiAgICBwcml2YXRlIHN2Z1Bhblpvb21SZWY6IFN2Z1Bhblpvb20uSW5zdGFuY2U7XHJcblxyXG4gICAgY29uc3RydWN0b3IoQEluamVjdChEb2N1bWVudFRva2VuKSBwcml2YXRlIGRvY3VtZW50OiBhbnksIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgY2xpY2tBcmVhU2VydmljZTogQ2xpY2thcmVhU2VydmljZSwgcHJpdmF0ZSBwdWljSGVscGVyOiBQdWljSGVscGVyU2VydmljZSkge1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIHRoaXMuY3JlYXRlU3ZnUGFuWm9vbVJlZklmTm90RXhpc3RzKCk7XHJcbiAgICAgICAgdGhpcy5wdWljSGVscGVyLnNldFJvb3RTdmcodGhpcy5nZXRTdmdQYXJlbnQoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgICAgIC8vIElmIElteC12aWV3ZXIgaXMgaW5pdGlhbGl6ZWQgd2l0aCBzdmdJbmZvLCBuZ09uQ2hhbmdlcyBpcyBjYWxsZWQgYmVmb3JlIG5nT25Jbml0LlxyXG4gICAgICAgIC8vIEluIHRoYXQgY2FzZSB3ZSBuZWVkIHRvIGNyZWF0ZSBzdmdQYW5ab29tUmVmIGhlcmUuXHJcbiAgICAgICAgdGhpcy5jcmVhdGVTdmdQYW5ab29tUmVmSWZOb3RFeGlzdHMoKTtcclxuXHJcbiAgICAgICAgY29uc3QgeyB1c2VDbGlja0FyZWEsIGNsaWNrYWJsZUlkcywgcmlnaHRDbGlja2FibGVJZHMsIHBvcG92ZXJJbmZvcywgc2VsZWN0aWVJbmZvcywgc3ZnSW5mbyB9ID0gY2hhbmdlcztcclxuXHJcbiAgICAgICAgaWYgKHVzZUNsaWNrQXJlYSB8fCBjbGlja2FibGVJZHMgfHwgcmlnaHRDbGlja2FibGVJZHMgfHwgcG9wb3ZlckluZm9zKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGVsYXllZENsaWNrQXJlYUNyZWF0aW9uKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5zdmdJbmZvICYmIHN2Z0luZm8pIHtcclxuICAgICAgICAgICAgdGhpcy5sb2FkU3ZncygpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuY2xpY2thYmxlSWRzICYmIGNsaWNrYWJsZUlkcyAmJiB0aGlzLnN2Z0dlbGFkZW4pIHtcclxuICAgICAgICAgICAgdGhpcy5hZGRDbGlja0V2ZW50SGFuZGxlcnNUb0VsZW1lbnRzKHRoaXMuY2xpY2thYmxlSWRzLCAnY2xpY2snKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnJpZ2h0Q2xpY2thYmxlSWRzICYmIHJpZ2h0Q2xpY2thYmxlSWRzICYmIHRoaXMuc3ZnR2VsYWRlbikge1xyXG4gICAgICAgICAgICB0aGlzLmFkZENsaWNrRXZlbnRIYW5kbGVyc1RvRWxlbWVudHModGhpcy5yaWdodENsaWNrYWJsZUlkcywgJ2NvbnRleHRtZW51Jyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5zZWxlY3RpZUluZm9zICYmIHNlbGVjdGllSW5mb3MgJiYgdGhpcy5zdmdHZWxhZGVuKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0RWxlbWVudHMoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnBvcG92ZXJJbmZvcyAmJiBwb3BvdmVySW5mb3MgJiYgdGhpcy5zdmdHZWxhZGVuKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW91c2VvdmVyRXZlbnRIYW5kbGVyVG9FbGVtZW50cygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZm9jdXNPbklkcyhmb2N1c0lkczogc3RyaW5nW10pIHtcclxuICAgICAgICBGb2N1c1V0aWwuZm9jdXNPbklkcyhmb2N1c0lkcywgdGhpcy5zdmdQYW5ab29tUmVmLCB0aGlzLnB1aWNIZWxwZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRTdmdQYW5ab29tSW5zdGFuY2U6ICgpID0+IFN2Z1Bhblpvb20uSW5zdGFuY2UgPSAoKSA9PiB0aGlzLnN2Z1Bhblpvb21SZWY7XHJcblxyXG4gICAgLy8gSGVyZSBvbmx5IHVzZWQgaW4gdGVzdCwgYnV0IGFsc28gdXNlZCBieSBhcHBsaWNhdGlvbnMuIERvIG5vdCByZW1vdmUuXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldFhDb29yZGluYXRlKGRlY29kZWRTdmdEYXRhVXJsOiBzdHJpbmcpIHtcclxuICAgICAgICBsZXQgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgICAgZGl2LmlubmVySFRNTCA9IGRlY29kZWRTdmdEYXRhVXJsO1xyXG4gICAgICAgIC8vIERlIFNWRy13aWR0aCB3b3JkdCBpbiBkZSBzdmcgdGFnIGdlc3BlY2lmaWNlZXJkLlxyXG4gICAgICAgIGNvbnN0IHggPSBkaXYuZmlyc3RFbGVtZW50Q2hpbGQuZ2V0QXR0cmlidXRlKCd3aWR0aCcpO1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHBhcnNlRmxvYXQoeCk7XHJcbiAgICAgICAgZGl2ID0gbnVsbDtcclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIGhpZGVQb3BPdmVyID0gKCkgPT4gdGhpcy5wb3BvdmVyU3R5bGUudmlzaWJpbGl0eSA9ICdoaWRkZW4nO1xyXG5cclxuICAgIHByaXZhdGUgY3JlYXRlU3ZnUGFuWm9vbVJlZklmTm90RXhpc3RzKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5zdmdQYW5ab29tUmVmKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3ZnUGFuWm9vbVJlZiA9IF9zdmdQYW5ab29tKHRoaXMuZ2V0U3ZnUGFyZW50KCksIHtcclxuICAgICAgICAgICAgICAgIGZpdDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBjZW50ZXI6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBkYmxDbGlja1pvb21FbmFibGVkOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIG9uWm9vbTogKCkgPT4gdGhpcy5oaWRlUG9wT3ZlcigpLFxyXG4gICAgICAgICAgICAgICAgb25QYW46ICgpID0+IHRoaXMuaGlkZVBvcE92ZXIoKVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuYWRkU3R5bGVUb1Jvb3RTdmcoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTdHlsZSB3b3JkdCB2YW51aXQgamF2YXNjcmlwdCB0b2VnZXZvZWdkIG5hIGRlIGNyZWF0ZSB2YW4gU3ZnWm9vbVBhblJlZiBkZXplIG1hYWt0IGVlbiB2aWV3cG9ydCBhYW4uXHJcbiAgICAgKiAtIENsaWNrYXJlYSBDU1Mgd29yZHQgZHluYW1pc2NoIGFhbiBkZSBTVkcgdG9lZ2V2b2VnZCwgZGl0IHZvb3Jrb210IGRhdCBkYXQgZXIgbmdjb250ZW50IHByb3BlcnR5IG9wIGdlcGxhYXRzdCB3b3JkdC5cclxuICAgICAqICAgRGUgU1ZHJ3Mgd29yZGVuIG5pZXQgdm9vcnppZW4gdmFuIG5nY29udGVudCBhdHRyaWJ1dXQuXHJcbiAgICAgKiAtIERHTi5jc3MgaW1wb3J0IHdvcmR0IChvcHRpb25lZWwpIGluIGRlIHJvb3QgU1ZHIG9wZ2Vub21lbiwgZGV6ZSBpcyBlZXJzdCB2ZXJ3aWpkZXJkIHVpdCBkZSBTVkcncy4gT20gbWVlcmRlcmUgaW1wb3J0cyB0ZSB2b29ya29tZW4uXHJcbiAgICAgKiAqL1xyXG4gICAgcHJpdmF0ZSBhZGRTdHlsZVRvUm9vdFN2ZygpIHtcclxuICAgICAgICBjb25zdCBkZWZzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycsICdkZWZzJyk7XHJcblxyXG4gICAgICAgIGxldCBzdHlsZSA9IHRoaXMuaW5saW5lRGduQ3NzSW1wb3J0ID8gJ0BpbXBvcnQgdXJsKFwiZGduLmNzc1wiKTtcXG4nIDogJyc7XHJcbiAgICAgICAgc3R5bGUgKz1cclxuICAgICAgICAgICAgYC5pbXh2aWV3LXNlbGVjdGVkID4gcG9seWxpbmUuaW14dmlldy1jbGlja2FyZWEsIHBvbHlsaW5lLmlteHZpZXctY2xpY2thcmVhIHtcclxuICAgICAgICAgICAgICAgIHN0cm9rZTogdmFyKC0taW14dmlldy1jbGlja2FyZWEtc3Ryb2tlLCB0cmFuc3BhcmVudCk7XHJcbiAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg6IHZhcigtLWlteHZpZXctY2xpY2thcmVhLXN0cm9rZS13aWR0aCwgMTBweCk7XHJcbiAgICAgICAgICAgICAgICBzdHJva2UtZGFzaGFycmF5OiBub25lO1xyXG4gICAgICAgICAgICB9YDtcclxuICAgICAgICBkZWZzLmlubmVySFRNTCA9XHJcbiAgICAgICAgICAgIGA8c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+XHJcbiAgICAgICAgICAgICAgICAkeyBzdHlsZSB9XHJcbiAgICAgICAgICAgIDwvc3R5bGU+YDtcclxuICAgICAgICBjb25zdCBmaXJzdEVsZW1lbnRDaGlsZCA9IHRoaXMuZ2V0U3ZnUGFyZW50KCkuZmlyc3RFbGVtZW50Q2hpbGQ7XHJcbiAgICAgICAgdGhpcy5nZXRTdmdQYXJlbnQoKS5pbnNlcnRCZWZvcmUoZGVmcywgZmlyc3RFbGVtZW50Q2hpbGQpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgbG9hZFN2Z3MoKTogdm9pZCB7XHJcbiAgICAgICAgY29tYmluZUxhdGVzdCh0aGlzLnN2Z0luZm8ubWFwKHN2Z0luZm8gPT4gdGhpcy5sb2FkU3ZnKHN2Z0luZm8uc3ZnKSkpXHJcbiAgICAgICAgLnBpcGUodGFrZSgxKSlcclxuICAgICAgICAuc3Vic2NyaWJlKHN2Z3MgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgc3ZnID0gdGhpcy5jb25jYXRlbmF0ZVN2Z3Moc3Zncyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZURvbShzdmcpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdmdHZWxhZGVuID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3ZnTG9hZGVkLmVtaXQoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZGVsYXllZENsaWNrQXJlYUNyZWF0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFkZENsaWNrRXZlbnRIYW5kbGVyc1RvRWxlbWVudHModGhpcy5jbGlja2FibGVJZHMsICdjbGljaycpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hZGRDbGlja0V2ZW50SGFuZGxlcnNUb0VsZW1lbnRzKHRoaXMucmlnaHRDbGlja2FibGVJZHMsICdjb250ZXh0bWVudScpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RFbGVtZW50cygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hZGRNb3VzZW92ZXJFdmVudEhhbmRsZXJUb0VsZW1lbnRzKCk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGVycm9yID0+IHRoaXMuZmxhZ0Vycm9ycyhlcnJvcilcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgbG9hZFN2ZyhzdmdTcmM6IHN0cmluZyk6IE9ic2VydmFibGU8c3RyaW5nPiB7XHJcbiAgICAgICAgaWYgKHN2Z1NyYy5zdGFydHNXaXRoKCdkYXRhOicpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHBhcnNlZCA9IGRhdGFVcmwucGFyc2Uoc3ZnU3JjKTtcclxuICAgICAgICAgICAgaWYgKHBhcnNlZCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG9ic2VydmFibGVPZihwYXJzZWQuZGF0YS50b1N0cmluZygpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gb2JzZXJ2YWJsZVRocm93RXJyb3IoJ0RhdGEtdXJsIHBhcnNlIGVycm9yJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldChzdmdTcmMsIHsgcmVzcG9uc2VUeXBlOiAndGV4dCcgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBhZGRDbGlja0V2ZW50SGFuZGxlcnNUb0VsZW1lbnQobGlzdGVuZXJzOiBNYXA8RWxlbWVudCwgYW55PiwgZWxlbSwgZXZlbnRUeXBlOiBzdHJpbmcsIHB1aWM6IHN0cmluZykge1xyXG4gICAgICAgIGNvbnN0IGVsZW1BbHJlYWR5SGFzTGlzdGVuZXIgPSBsaXN0ZW5lcnMuZ2V0KGVsZW0pO1xyXG4gICAgICAgIGlmICghZWxlbUFscmVhZHlIYXNMaXN0ZW5lcikge1xyXG4gICAgICAgICAgICBjb25zdCBmbiA9IGV2ZW50VHlwZSA9PT0gJ2NsaWNrJyA/XHJcbiAgICAgICAgICAgICAgICAoZSkgPT4gdGhpcy5jbGlja0hhbmRsZXIuZW1pdChuZXcgU2VsZWN0aWVFdmVudChwdWljLCBlKSkgOlxyXG4gICAgICAgICAgICAgICAgKGUpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yaWdodENsaWNrSGFuZGxlci5lbWl0KG5ldyBTZWxlY3RpZUV2ZW50KHB1aWMsIGUpKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBsaXN0ZW5lcnMuc2V0KGVsZW0sIGZuKTtcclxuICAgICAgICAgICAgZWxlbS5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgZm4pO1xyXG4gICAgICAgICAgICBpZiAoZXZlbnRUeXBlID09PSAnY2xpY2snKSB7XHJcbiAgICAgICAgICAgICAgICBlbGVtLnN0eWxlLmN1cnNvciA9ICdwb2ludGVyJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGFkZENsaWNrRXZlbnRIYW5kbGVyc1RvRWxlbWVudHMoY2xpY2thYmxlSWRzOiBzdHJpbmdbXSwgZXZlbnR0eXBlOiBzdHJpbmcpIHtcclxuICAgICAgICBjb25zdCBsaXN0ZW5lcnMgPSB0aGlzLnJlbW92ZU9sZFN0YXRlKGV2ZW50dHlwZSk7XHJcblxyXG4gICAgICAgIGlmIChjbGlja2FibGVJZHMpIHtcclxuICAgICAgICAgICAgY2xpY2thYmxlSWRzLmZvckVhY2gocHVpYyA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBlbGVtZW50cyA9IHRoaXMucHVpY0hlbHBlci5nZXRBbGxFbGVtZW50c0ZvclB1aWMocHVpYyk7XHJcbiAgICAgICAgICAgICAgICBlbGVtZW50cy5mb3JFYWNoKChlbGVtZW50KSA9PiB0aGlzLmFkZENsaWNrRXZlbnRIYW5kbGVyc1RvRWxlbWVudChsaXN0ZW5lcnMsIGVsZW1lbnQsIGV2ZW50dHlwZSwgcHVpYykpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBhZGRNb3VzZW92ZXJFdmVudEhhbmRsZXJUb0VsZW1lbnRzKCkge1xyXG4gICAgICAgIGNvbnN0IGxpc3RlbmVycyA9IHRoaXMucmVtb3ZlT2xkU3RhdGUoJ21vdXNlb3ZlcicpO1xyXG4gICAgICAgIGlmICh0aGlzLnBvcG92ZXJJbmZvcykge1xyXG4gICAgICAgICAgICB0aGlzLnBvcG92ZXJJbmZvcy5mb3JFYWNoKHBvcG92ZXJJbmZvID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBwb3BvdmVySW5mby5wdWljQXJyYXkuZm9yRWFjaChwdWljID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1zID0gdGhpcy5wdWljSGVscGVyLmdldEFsbEVsZW1lbnRzRm9yUHVpYyhwdWljKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZWxlbXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmbiA9IChlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucG9wb3Zlckh0bWxDb250ZW50ID0gcG9wb3ZlckluZm8ucG9wb3Zlckh0bWxDb250ZW50O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBvcG92ZXJUaXRsZUNvbnRlbnQgPSBwb3BvdmVySW5mby5wb3BvdmVyVGl0bGVDb250ZW50O1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXNlIHRpbWVvdXQgdG8gaGF2ZSBjb250ZW50IHJlbmRlcmVkIGJlZm9yZSBnZXR0aW5nIHNpemVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnNob3dQb3B1cChlKSwgMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWxlbSA9IGVsZW1zLml0ZW0oaSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdGVuZXJzLnNldChlbGVtLCBmbik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW92ZXInLCBmbik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNvbmNhdGVuYXRlU3ZncyhzdmdzOiBzdHJpbmdbXSk6IHN0cmluZyB7XHJcbiAgICAgICAgbGV0IHN2Z0NvbnRlbnQgPSAnJztcclxuXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHRoaXMuc3ZnSW5mby5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCBzb3VyY2VDb29yZGluYXRlcyA9IHRoaXMuc3ZnSW5mb1tpXS5jb29yZGluYXRlcyB8fCBuZXcgUG9pbnQoMCwgMCk7XHJcblxyXG4gICAgICAgICAgICBjb25zdCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuXHJcbiAgICAgICAgICAgIC8qKiBWZXJ3aWpkZXIgZGduLmNzcyBpbXBvcnQgdWl0IGdlbGV2ZXJkZSBTVkcncy5cclxuICAgICAgICAgICAgICogIERlIGltcG9ydCB3b3JkdCBvcHRpb25lZWwgKHN0YW5kYWFyZCBhYW4pIGluIGRlIHJvb3QgU1ZHIGdlcGxhYXRzIG9tIHRlIHZvb3Jrb21lbiBkYXQgZGUgaW1wb3J0IG1lZXJtYWFscyBnZWJldXJkLlxyXG4gICAgICAgICAgICAgKiAgemllIGFkZFN0eWxlVG9Sb290U3ZnKClcclxuICAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgIGRpdi5pbm5lckhUTUwgPSBzdmdzW2ldLnJlcGxhY2UoJ0BpbXBvcnQgdXJsKFwiZGduLmNzc1wiKTsnLCAnJyk7XHJcbiAgICAgICAgICAgIGRpdi5maXJzdEVsZW1lbnRDaGlsZC5zZXRBdHRyaWJ1dGUoJ3gnLCBzb3VyY2VDb29yZGluYXRlcy54LnRvU3RyaW5nKCkpO1xyXG4gICAgICAgICAgICBkaXYuZmlyc3RFbGVtZW50Q2hpbGQuc2V0QXR0cmlidXRlKCd5Jywgc291cmNlQ29vcmRpbmF0ZXMueS50b1N0cmluZygpKTtcclxuXHJcbiAgICAgICAgICAgIHN2Z0NvbnRlbnQgKz0gZGl2LmlubmVySFRNTDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBzdmdDb250ZW50O1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZmxhZ0Vycm9ycyhlcnJvcikge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgICB0aGlzLmVycm9ycyA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSByZW1vdmVPbGRTdGF0ZShldmVudFR5cGU6IHN0cmluZyk6IE1hcDxFbGVtZW50LCBhbnk+IHtcclxuICAgICAgICBsZXQgbGlzdGVuZXJzID0gdGhpcy5ldmVudExpc3RlbmVycy5nZXQoZXZlbnRUeXBlKTtcclxuICAgICAgICBpZiAobGlzdGVuZXJzKSB7XHJcbiAgICAgICAgICAgIGxpc3RlbmVycy5mb3JFYWNoKChmbiwgZWwpID0+IHtcclxuICAgICAgICAgICAgICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBmbik7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnRUeXBlID09PSAnY2xpY2snKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKCdzdHlsZScsIElteFZpZXdlckNvbXBvbmVudC5zZXREZWZhdWx0Q3Vyc29yKGVsKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsaXN0ZW5lcnMgPSBuZXcgTWFwKCk7XHJcbiAgICAgICAgdGhpcy5ldmVudExpc3RlbmVycy5zZXQoZXZlbnRUeXBlLCBsaXN0ZW5lcnMpO1xyXG4gICAgICAgIHJldHVybiBsaXN0ZW5lcnM7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzZWxlY3RFbGVtZW50cygpIHtcclxuICAgICAgICBjb25zdCBhbGxFbGVtcyA9IHRoaXMuZ2V0U3ZnUGFyZW50KCkucXVlcnlTZWxlY3RvckFsbCgnW2NsYXNzKj1pbXh2aWV3LXNlbGVjdGVkXScpO1xyXG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgYWxsRWxlbXMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgQ2xhc3Nlc1V0aWwucmVtb3ZlQ2xhc3Nlc1N0YXJ0aW5nV2l0aChhbGxFbGVtc1tqXSwgJ2lteHZpZXctc2VsZWN0ZWQnKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGllSW5mb3MpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RpZUluZm9zLmZvckVhY2goc2VsZWN0aWVJbmZvID0+IHtcclxuICAgICAgICAgICAgICAgIHNlbGVjdGllSW5mby5pZHMuZm9yRWFjaChpZCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wdWljSGVscGVyLmdldEFsbEVsZW1lbnRzRm9yUHVpYyhpZCkuZm9yRWFjaChlbGVtID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3Nlc1V0aWwuYWRkQ2xhc3MoZWxlbSwgJ2lteHZpZXctc2VsZWN0ZWQnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCcnICE9PSBzZWxlY3RpZUluZm8uY2xhenopIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzZXNVdGlsLmFkZENsYXNzKGVsZW0sICdpbXh2aWV3LXNlbGVjdGVkLScgKyBzZWxlY3RpZUluZm8uY2xhenopO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc3RhdGljIHNldERlZmF1bHRDdXJzb3IoZWwpOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IG91ZGVTdHlsZSA9IGVsLmdldEF0dHJpYnV0ZSgnc3R5bGUnKTtcclxuICAgICAgICByZXR1cm4gb3VkZVN0eWxlID8gb3VkZVN0eWxlLnJlcGxhY2UoJ3BvaW50ZXInLCAnZGVmYXVsdCcpIDogJ2N1cnNvcjogZGVmYXVsdCc7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzaG93UG9wdXAoZSkge1xyXG4gICAgICAgIGNvbnN0IHBvcG92ZXJFbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BvcG92ZXInKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgICAgICBjb25zdCBsZWZ0ID0gZS5sYXllclggLSAocG9wb3ZlckVsZW0ud2lkdGggLyAyKSArICdweCc7XHJcbiAgICAgICAgY29uc3QgdG9wID0gZS5sYXllclkgLSAocG9wb3ZlckVsZW0uaGVpZ2h0ICsgOCkgKyAncHgnO1xyXG4gICAgICAgIHRoaXMucG9wb3ZlclN0eWxlID0ge1xyXG4gICAgICAgICAgICBsZWZ0OiBsZWZ0LCB0b3A6IHRvcCwgcG9zaXRpb246ICdhYnNvbHV0ZScsXHJcbiAgICAgICAgICAgIGRpc3BsYXk6ICdpbmxpbmUnLCB2aXNpYmlsaXR5OiAndmlzaWJsZSdcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgdXBkYXRlRG9tKHN2ZzogU3RyaW5nKSB7XHJcbiAgICAgICAgY29uc3Qgc3ZnR3JvdXAgPSB0aGlzLmdldFN2Z1BhcmVudCgpLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3N2Zy1wYW4tem9vbV92aWV3cG9ydCcpWzBdO1xyXG4gICAgICAgIHN2Z0dyb3VwLmlubmVySFRNTCA9IHN2Zy5zdWJzdHJpbmcoc3ZnLmluZGV4T2YoJzxzdmcnKSk7XHJcbiAgICAgICAgdGhpcy5zdmdQYW5ab29tUmVmLnVwZGF0ZUJCb3goKTtcclxuICAgICAgICB0aGlzLnN2Z1Bhblpvb21SZWYuY2VudGVyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBkZWxheWVkQ2xpY2tBcmVhQ3JlYXRpb24oKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc3ZnR2VsYWRlbiAmJiB0aGlzLnVzZUNsaWNrQXJlYSkge1xyXG4gICAgICAgICAgICBjb25zdCBjbGlja2FyZWFJZHMgPSBuZXcgU2V0KFsuLi50aGlzLmNsaWNrYWJsZUlkcywgLi4udGhpcy5yaWdodENsaWNrYWJsZUlkcyxcclxuICAgICAgICAgICAgICAgIC4uLnRoaXMucG9wb3ZlckluZm9zLmZsYXRNYXAocGkgPT4gcGkucHVpY0FycmF5KV0pO1xyXG4gICAgICAgICAgICB0aGlzLmNsaWNrQXJlYVNlcnZpY2UuZGVsYXllZENsaWNrQXJlYUNyZWF0aW9uKGNsaWNrYXJlYUlkcyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0U3ZnUGFyZW50ID0gKCkgPT4gdGhpcy5zdmdQYXJlbnRSZWYubmF0aXZlRWxlbWVudDtcclxufVxyXG4iLCI8ZGl2IGlkPVwiaW14dmlld2VyXCI+XG4gICAgPGRpdiBpZD1cInN2Z0NvbnRhaW5lclwiIGNsYXNzPVwiY29sLW1kLTEyIHRvcDEwXCIgW2hpZGRlbl09XCJlcnJvcnNcIiAoY2xpY2spPVwiaGlkZVBvcE92ZXIoKVwiPlxuICAgICAgICA8c3ZnICNzdmdQYXJlbnQgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjwvc3ZnPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgaWQ9XCJwb3BvdmVyXCIgY2xhc3M9XCJwb3BvdmVyIHRvcCBicy1wb3BvdmVyLXRvcFwiIFtuZ1N0eWxlXT1cInBvcG92ZXJTdHlsZVwiIChtb3VzZWxlYXZlKT1cImhpZGVQb3BPdmVyKClcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFycm93XCI+PC9kaXY+XG4gICAgICAgIDxoMyBjbGFzcz1cInBvcG92ZXItaGVhZGVyXCIgKm5nSWY9XCJwb3BvdmVyVGl0bGVDb250ZW50ICE9PSB1bmRlZmluZWRcIj57e3BvcG92ZXJUaXRsZUNvbnRlbnR9fTwvaDM+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwb3BvdmVyLWJvZHlcIiBbaW5uZXJIVE1MXT1cInBvcG92ZXJIdG1sQ29udGVudFwiPjwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { NgModule } from '@angular/core';
|
|
3
|
+
import { ImxViewerComponent } from './components/imx-viewer.component';
|
|
4
|
+
import { HttpClientModule } from '@angular/common/http';
|
|
5
|
+
import { documentProvider, DocumentToken } from './utils/document-token';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export class ImxViewerModule {
|
|
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,
|
|
11
|
+
HttpClientModule], exports: [ImxViewerComponent] });
|
|
12
|
+
ImxViewerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: ImxViewerModule, providers: [
|
|
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: [{
|
|
19
|
+
type: NgModule,
|
|
20
|
+
args: [{
|
|
21
|
+
imports: [
|
|
22
|
+
CommonModule,
|
|
23
|
+
HttpClientModule
|
|
24
|
+
],
|
|
25
|
+
declarations: [
|
|
26
|
+
ImxViewerComponent
|
|
27
|
+
],
|
|
28
|
+
exports: [
|
|
29
|
+
ImxViewerComponent
|
|
30
|
+
],
|
|
31
|
+
providers: [
|
|
32
|
+
{ provide: DocumentToken, useFactory: documentProvider }
|
|
33
|
+
]
|
|
34
|
+
}]
|
|
35
|
+
}] });
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW14LXZpZXdlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW14LXZpZXdlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQWlCekUsTUFBTSxPQUFPLGVBQWU7OzRHQUFmLGVBQWU7NkdBQWYsZUFBZSxpQkFUeEIsa0JBQWtCLGFBSmxCLFlBQVk7UUFDWixnQkFBZ0IsYUFNaEIsa0JBQWtCOzZHQU1ULGVBQWUsYUFKZjtRQUNQLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUU7S0FDM0QsWUFaUTtZQUNQLFlBQVk7WUFDWixnQkFBZ0I7U0FDakI7MkZBV1UsZUFBZTtrQkFmM0IsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixnQkFBZ0I7cUJBQ2pCO29CQUNELFlBQVksRUFBRTt3QkFDWixrQkFBa0I7cUJBQ25CO29CQUNELE9BQU8sRUFBRTt3QkFDUCxrQkFBa0I7cUJBQ25CO29CQUNELFNBQVMsRUFBRTt3QkFDUCxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFO3FCQUMzRDtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IElteFZpZXdlckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9pbXgtdmlld2VyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IGRvY3VtZW50UHJvdmlkZXIsIERvY3VtZW50VG9rZW4gfSBmcm9tICcuL3V0aWxzL2RvY3VtZW50LXRva2VuJztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgSHR0cENsaWVudE1vZHVsZVxyXG4gIF0sXHJcbiAgZGVjbGFyYXRpb25zOiBbXHJcbiAgICBJbXhWaWV3ZXJDb21wb25lbnRcclxuICBdLFxyXG4gIGV4cG9ydHM6IFtcclxuICAgIElteFZpZXdlckNvbXBvbmVudFxyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICAgIHsgcHJvdmlkZTogRG9jdW1lbnRUb2tlbiwgdXNlRmFjdG9yeTogZG9jdW1lbnRQcm92aWRlciB9XHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW14Vmlld2VyTW9kdWxlIHtcclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public_api';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG94aWEtaW14LXZpZXdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sb3hpYS1pbXgtdmlld2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export class Point {
|
|
2
|
+
constructor(x, y) {
|
|
3
|
+
this.x = x;
|
|
4
|
+
this.y = y;
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9pbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbW9kZWwvcG9pbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLEtBQUs7SUFDaEIsWUFBbUIsQ0FBUyxFQUFTLENBQVM7UUFBM0IsTUFBQyxHQUFELENBQUMsQ0FBUTtRQUFTLE1BQUMsR0FBRCxDQUFDLENBQVE7SUFDOUMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIFBvaW50IHtcclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgeDogbnVtYmVyLCBwdWJsaWMgeTogbnVtYmVyKSB7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export class PopoverInfo {
|
|
2
|
+
constructor(puicArray, popoverHtmlContent) {
|
|
3
|
+
this.puicArray = puicArray;
|
|
4
|
+
this.popoverHtmlContent = popoverHtmlContent;
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci1pbmZvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21vZGVsL3BvcG92ZXItaW5mby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sV0FBVztJQUVwQixZQUFvQixTQUFtQixFQUFTLGtCQUEwQjtRQUF0RCxjQUFTLEdBQVQsU0FBUyxDQUFVO1FBQVMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFRO0lBQzFFLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBQb3BvdmVySW5mbyB7XHJcbiAgICBwdWJsaWMgcG9wb3ZlclRpdGxlQ29udGVudDogc3RyaW5nO1xyXG4gICAgY29uc3RydWN0b3IgKHB1YmxpYyBwdWljQXJyYXk6IHN0cmluZ1tdLCBwdWJsaWMgcG9wb3Zlckh0bWxDb250ZW50OiBzdHJpbmcpIHtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export class SelectieEvent {
|
|
2
|
+
constructor(id, event) {
|
|
3
|
+
this.id = id;
|
|
4
|
+
this.event = event;
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aWUtZXZlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbW9kZWwvc2VsZWN0aWUtZXZlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLGFBQWE7SUFDdEIsWUFBbUIsRUFBVSxFQUFTLEtBQWlCO1FBQXBDLE9BQUUsR0FBRixFQUFFLENBQVE7UUFBUyxVQUFLLEdBQUwsS0FBSyxDQUFZO0lBQ3ZELENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBTZWxlY3RpZUV2ZW50IHtcclxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBpZDogc3RyaW5nLCBwdWJsaWMgZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export class SelectieInfo {
|
|
2
|
+
constructor(ids, clazz) {
|
|
3
|
+
this.ids = ids;
|
|
4
|
+
this.clazz = clazz;
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aWUtaW5mby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tb2RlbC9zZWxlY3RpZS1pbmZvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxZQUFZO0lBQ3ZCLFlBQW1CLEdBQWEsRUFBUyxLQUFhO1FBQW5DLFFBQUcsR0FBSCxHQUFHLENBQVU7UUFBUyxVQUFLLEdBQUwsS0FBSyxDQUFRO0lBQ3RELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBTZWxlY3RpZUluZm8ge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgaWRzOiBzdHJpbmdbXSwgcHVibGljIGNsYXp6OiBzdHJpbmcpIHtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export class SvgInfo {
|
|
2
|
+
constructor(svg, coordinates) {
|
|
3
|
+
this.svg = svg;
|
|
4
|
+
this.coordinates = coordinates;
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ZnLWluZm8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbW9kZWwvc3ZnLWluZm8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLE9BQU87SUFDbEIsWUFBbUIsR0FBVyxFQUFTLFdBQW1CO1FBQXZDLFFBQUcsR0FBSCxHQUFHLENBQVE7UUFBUyxnQkFBVyxHQUFYLFdBQVcsQ0FBUTtJQUMxRCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQb2ludCB9IGZyb20gJy4vcG9pbnQnO1xyXG5cclxuZXhwb3J0IGNsYXNzIFN2Z0luZm8ge1xyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBzdmc6IHN0cmluZywgcHVibGljIGNvb3JkaW5hdGVzPzogUG9pbnQpIHtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export * from './imx-viewer.module';
|
|
2
|
+
export * from './components/imx-viewer.component';
|
|
3
|
+
export * from './model/point';
|
|
4
|
+
export * from './model/popover-info';
|
|
5
|
+
export * from './model/svg-info';
|
|
6
|
+
export * from './model/selectie-info';
|
|
7
|
+
export * from './model/selectie-event';
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHdCQUF3QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9pbXgtdmlld2VyLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9pbXgtdmlld2VyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWwvcG9pbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL21vZGVsL3BvcG92ZXItaW5mbyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWwvc3ZnLWluZm8nO1xyXG5leHBvcnQgKiBmcm9tICcuL21vZGVsL3NlbGVjdGllLWluZm8nO1xyXG5leHBvcnQgKiBmcm9tICcuL21vZGVsL3NlbGVjdGllLWV2ZW50JztcclxuIl19
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "./puic-helper.service";
|
|
4
|
+
export class ClickareaService {
|
|
5
|
+
constructor(puicHelper) {
|
|
6
|
+
this.puicHelper = puicHelper;
|
|
7
|
+
this.timeout = 250;
|
|
8
|
+
}
|
|
9
|
+
delayedClickAreaCreation(ids) {
|
|
10
|
+
if (ids.size === 0) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
window.clearTimeout(this.timer);
|
|
14
|
+
this.timer = window.setTimeout(() => this.createClickareas(ids), this.timeout);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Mogelijke optimalisatie is om de delta te bepalen van de te verwerken ids
|
|
18
|
+
*/
|
|
19
|
+
createClickareas(ids) {
|
|
20
|
+
Array.from(document.getElementsByClassName('imxview-clickarea')).forEach(x => x.remove());
|
|
21
|
+
ids.forEach(id => {
|
|
22
|
+
this.puicHelper.getAllElementsForPuic(id).forEach(element => {
|
|
23
|
+
if (element) {
|
|
24
|
+
const polylines = Array.from(element.getElementsByTagName('polyline'));
|
|
25
|
+
polylines.forEach(p => {
|
|
26
|
+
const clone = p.cloneNode(true);
|
|
27
|
+
clone.setAttribute('class', 'imxview-clickarea');
|
|
28
|
+
clone.removeAttribute('id');
|
|
29
|
+
element.insertBefore(clone, p);
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
}
|
|
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: [{
|
|
39
|
+
type: Injectable,
|
|
40
|
+
args: [{
|
|
41
|
+
providedIn: 'root'
|
|
42
|
+
}]
|
|
43
|
+
}], ctorParameters: function () { return [{ type: i1.PuicHelperService }]; } });
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpY2thcmVhLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvY2xpY2thcmVhLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBTTNDLE1BQU0sT0FBTyxnQkFBZ0I7SUFJekIsWUFBb0IsVUFBNkI7UUFBN0IsZUFBVSxHQUFWLFVBQVUsQ0FBbUI7UUFGakQsWUFBTyxHQUFHLEdBQUcsQ0FBQztJQUdkLENBQUM7SUFFRCx3QkFBd0IsQ0FBQyxHQUFnQjtRQUNyQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFO1lBQ2hCLE9BQU87U0FDVjtRQUVELE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25GLENBQUM7SUFFRDs7T0FFRztJQUNLLGdCQUFnQixDQUFDLEdBQWdCO1FBQ3JDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLHNCQUFzQixDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUUxRixHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQ2IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ3hELElBQUksT0FBTyxFQUFFO29CQUNULE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7b0JBQ3ZFLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7d0JBQ2xCLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFZLENBQUM7d0JBQzNDLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLG1CQUFtQixDQUFDLENBQUM7d0JBQ2pELEtBQUssQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQzVCLE9BQU8sQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUNuQyxDQUFDLENBQUMsQ0FBQztpQkFDTjtZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOzs2R0FuQ1EsZ0JBQWdCO2lIQUFoQixnQkFBZ0IsY0FGYixNQUFNOzJGQUVULGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQdWljSGVscGVyU2VydmljZSB9IGZyb20gJy4vcHVpYy1oZWxwZXIuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQ2xpY2thcmVhU2VydmljZSB7XG4gICAgcHJpdmF0ZSB0aW1lcjogbnVtYmVyO1xuICAgIHRpbWVvdXQgPSAyNTA7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHB1aWNIZWxwZXI6IFB1aWNIZWxwZXJTZXJ2aWNlKSB7XG4gICAgfVxuXG4gICAgZGVsYXllZENsaWNrQXJlYUNyZWF0aW9uKGlkczogU2V0PHN0cmluZz4pIHtcbiAgICAgICAgaWYgKGlkcy5zaXplID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMudGltZXIpO1xuICAgICAgICB0aGlzLnRpbWVyID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdGhpcy5jcmVhdGVDbGlja2FyZWFzKGlkcyksIHRoaXMudGltZW91dCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTW9nZWxpamtlIG9wdGltYWxpc2F0aWUgaXMgb20gZGUgZGVsdGEgdGUgYmVwYWxlbiB2YW4gZGUgdGUgdmVyd2Vya2VuIGlkc1xuICAgICAqL1xuICAgIHByaXZhdGUgY3JlYXRlQ2xpY2thcmVhcyhpZHM6IFNldDxzdHJpbmc+KSB7XG4gICAgICAgIEFycmF5LmZyb20oZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaW14dmlldy1jbGlja2FyZWEnKSkuZm9yRWFjaCh4ID0+IHgucmVtb3ZlKCkpO1xuXG4gICAgICAgIGlkcy5mb3JFYWNoKGlkID0+IHtcbiAgICAgICAgICAgIHRoaXMucHVpY0hlbHBlci5nZXRBbGxFbGVtZW50c0ZvclB1aWMoaWQpLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcG9seWxpbmVzID0gQXJyYXkuZnJvbShlbGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdwb2x5bGluZScpKTtcbiAgICAgICAgICAgICAgICAgICAgcG9seWxpbmVzLmZvckVhY2gocCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjbG9uZSA9IHAuY2xvbmVOb2RlKHRydWUpIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbG9uZS5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgJ2lteHZpZXctY2xpY2thcmVhJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbG9uZS5yZW1vdmVBdHRyaWJ1dGUoJ2lkJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50Lmluc2VydEJlZm9yZShjbG9uZSwgcCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class PuicHelperService {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.setRootSvg = (svgParent) => this.rootSvg = svgParent;
|
|
6
|
+
this.getAllElementsForPuic = (puic) => this.rootSvg.querySelectorAll(`.p${puic}, #p${puic}`);
|
|
7
|
+
}
|
|
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: [{
|
|
12
|
+
type: Injectable,
|
|
13
|
+
args: [{
|
|
14
|
+
providedIn: 'root'
|
|
15
|
+
}]
|
|
16
|
+
}] });
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVpYy1oZWxwZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9wdWljLWhlbHBlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBSzNDLE1BQU0sT0FBTyxpQkFBaUI7SUFIOUI7UUFNVyxlQUFVLEdBQUcsQ0FBQyxTQUF3QixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQztRQUNwRSwwQkFBcUIsR0FBRyxDQUFDLElBQVksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFNLElBQUssT0FBUSxJQUFLLEVBQUUsQ0FBNEIsQ0FBQztLQUN6STs7OEdBTFksaUJBQWlCO2tIQUFqQixpQkFBaUIsY0FGZCxNQUFNOzJGQUVULGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgUHVpY0hlbHBlclNlcnZpY2Uge1xuICAgIHByaXZhdGUgcm9vdFN2ZzogYW55O1xuXG4gICAgcHVibGljIHNldFJvb3RTdmcgPSAoc3ZnUGFyZW50OiBTVkdTVkdFbGVtZW50KSA9PiB0aGlzLnJvb3RTdmcgPSBzdmdQYXJlbnQ7XG4gICAgcHVibGljIGdldEFsbEVsZW1lbnRzRm9yUHVpYyA9IChwdWljOiBzdHJpbmcpID0+IHRoaXMucm9vdFN2Zy5xdWVyeVNlbGVjdG9yQWxsKGAucCR7IHB1aWMgfSwgI3AkeyBwdWljIH1gKSBhcyBOb2RlTGlzdE9mPEhUTUxFbGVtZW50Pjtcbn1cbiJdfQ==
|