@loxia/imx-viewer 7.2.0 → 7.2.1

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
@@ -106,6 +106,9 @@ Met de onderstaande css kan de default breedte van een clickarea aangepast worde
106
106
 
107
107
  ## Release Notes
108
108
 
109
+ ### 7.2.1 08-02-2022
110
+ * PW-7164 Bugfix voor de verdwijnende mousepointer
111
+
109
112
  ### 7.2.0 28-01-2022
110
113
  * Vanggebied bij aanklikken elementen groter maken
111
114
  * functionaliteit aan en uit te zetten via flag 'useClickArea'
@@ -776,7 +776,9 @@
776
776
  if (listeners) {
777
777
  listeners.forEach(function (fn, el) {
778
778
  el.removeEventListener(eventType, fn);
779
- el.setAttribute('style', ImxViewerComponent.setDefaultCursor(el));
779
+ if (eventType === 'click') {
780
+ el.setAttribute('style', ImxViewerComponent.setDefaultCursor(el));
781
+ }
780
782
  });
781
783
  }
782
784
  listeners = new Map();
@@ -1 +1 @@
1
- {"version":3,"file":"loxia-imx-viewer.umd.js","sources":["../../node_modules/tslib/tslib.es6.js","../../src/services/puic-helper.service.ts","../../src/services/clickarea.service.ts","../../src/utils/classes-util.ts","../../src/utils/document-token.ts","../../src/utils/svg-rect-util.ts","../../src/utils/focus-util.ts","../../src/model/point.ts","../../src/model/selectie-event.ts","../../src/components/imx-viewer.component.ts","../../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":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || from);\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\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","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 SvgPanZoom from 'svg-pan-zoom';\nimport { PuicHelperService } from '../services/puic-helper.service';\nimport { SvgRectUtil } from './svg-rect-util';\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","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","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 OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n ViewChild\r\n} from '@angular/core';\r\nimport * as dataUrl from 'dataurl';\r\nimport { combineLatest, Observable, of as observableOf, throwError as observableThrowError } from 'rxjs';\r\nimport { take } from 'rxjs/operators';\r\nimport * as SvgPanZoom from 'svg-pan-zoom';\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\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\n\r\nconst _svgPanZoom = SvgPanZoom; // via andere variabele zodat ng-packgr/rollup geen error geeft bij de aannroep\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 {\r\n @Input() useClickArea = false;\r\n @Input() inlineDgnCssImport = true;\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 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 const parsed = dataUrl.parse(svgSrc);\r\n if (parsed) {\r\n return observableOf(parsed.data.toString());\r\n }\r\n return observableThrowError('Data-url parse error');\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 el.setAttribute('style', ImxViewerComponent.setDefaultCursor(el));\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 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","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\nexport {ClickareaService as ɵc} from './services/clickarea.service';\nexport {PuicHelperService as ɵd} from './services/puic-helper.service';\nexport {DocumentToken as ɵa,documentProvider as ɵb} from './utils/document-token';"],"names":["Injectable","InjectionToken","SvgPanZoom","EventEmitter","combineLatest","take","dataUrl.parse","observableOf","observableThrowError","Component","Inject","HttpClient","Input","ViewChild","Output","NgModule","CommonModule","HttpClientModule"],"mappings":"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"}
1
+ {"version":3,"file":"loxia-imx-viewer.umd.js","sources":["../../node_modules/tslib/tslib.es6.js","../../src/services/puic-helper.service.ts","../../src/services/clickarea.service.ts","../../src/utils/classes-util.ts","../../src/utils/document-token.ts","../../src/utils/svg-rect-util.ts","../../src/utils/focus-util.ts","../../src/model/point.ts","../../src/model/selectie-event.ts","../../src/components/imx-viewer.component.ts","../../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":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || from);\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\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","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 * as SvgPanZoom from 'svg-pan-zoom';\nimport { PuicHelperService } from '../services/puic-helper.service';\nimport { SvgRectUtil } from './svg-rect-util';\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","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","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 OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n ViewChild\r\n} from '@angular/core';\r\nimport * as dataUrl from 'dataurl';\r\nimport { combineLatest, Observable, of as observableOf, throwError as observableThrowError } from 'rxjs';\r\nimport { take } from 'rxjs/operators';\r\nimport * as SvgPanZoom from 'svg-pan-zoom';\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\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\n\r\nconst _svgPanZoom = SvgPanZoom; // via andere variabele zodat ng-packgr/rollup geen error geeft bij de aannroep\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 {\r\n @Input() useClickArea = false;\r\n @Input() inlineDgnCssImport = true;\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 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 const parsed = dataUrl.parse(svgSrc);\r\n if (parsed) {\r\n return observableOf(parsed.data.toString());\r\n }\r\n return observableThrowError('Data-url parse error');\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 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","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\nexport {ClickareaService as ɵc} from './services/clickarea.service';\nexport {PuicHelperService as ɵd} from './services/puic-helper.service';\nexport {DocumentToken as ɵa,documentProvider as ɵb} from './utils/document-token';"],"names":["Injectable","InjectionToken","SvgPanZoom","EventEmitter","combineLatest","take","dataUrl.parse","observableOf","observableThrowError","Component","Inject","HttpClient","Input","ViewChild","Output","NgModule","CommonModule","HttpClientModule"],"mappings":"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"}
@@ -12,5 +12,5 @@
12
12
  LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
13
13
  OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
14
14
  PERFORMANCE OF THIS SOFTWARE.
15
- ***************************************************************************** */Object.create;function c(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var o,n,i=r.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(o=i.next()).done;)a.push(o.value)}catch(e){n={error:e}}finally{try{o&&!o.done&&(r=i.return)&&r.call(i)}finally{if(n)throw n.error}}return a}Object.create;var d=function(){var e=this;this.setRootSvg=function(t){return e.rootSvg=t},this.getAllElementsForPuic=function(t){return e.rootSvg.querySelectorAll(".p"+t+", #p"+t)}};d.ɵprov=r.ɵɵdefineInjectable({factory:function(){return new d},token:d,providedIn:"root"}),d.decorators=[{type:r.Injectable,args:[{providedIn:"root"}]}];var u=function(){function e(e){this.puicHelper=e,this.timeout=250}return e.prototype.delayedClickAreaCreation=function(e){var t=this;0!==e.size&&(window.clearTimeout(this.timer),this.timer=window.setTimeout((function(){return t.createClickareas(e)}),this.timeout))},e.prototype.createClickareas=function(e){var t=this;Array.from(document.getElementsByClassName("imxview-clickarea")).forEach((function(e){return e.remove()})),e.forEach((function(e){t.puicHelper.getAllElementsForPuic(e).forEach((function(e){e&&Array.from(e.getElementsByTagName("polyline")).forEach((function(t){var r=t.cloneNode(!0);r.setAttribute("class","imxview-clickarea"),r.removeAttribute("id"),e.insertBefore(r,t)}))}))}))},e}();u.ɵprov=r.ɵɵdefineInjectable({factory:function(){return new u(r.ɵɵinject(d))},token:u,providedIn:"root"}),u.decorators=[{type:r.Injectable,args:[{providedIn:"root"}]}],u.ctorParameters=function(){return[{type:d}]};var v=function(){function e(){}return e.addClass=function(e,t){if(""!==t){for(var r=e.getAttribute("class"),o=r?r.split(" "):[],n=0;n<o.length;n++)if(o[n]===t)return;e.setAttribute("class",r?r+" "+t:t)}},e.removeClassesStartingWith=function(e,t){var r=e.getAttribute("class");if(r){for(var o=r.split(" "),n=o.length;n--;)0===o[n].indexOf(t)&&o.splice(n,1);0===o.length?e.removeAttribute("class"):e.setAttribute("class",o.join(" "))}},e}(),f=new r.InjectionToken("Document");function m(){return document}var h=function(){function e(){}return e.rectUnion=function(e,t){if(!e)return t;var r=e.width,o=e.height;if((r|o)<0)return t;var n=t.width,i=t.height;if((n|i)<0)return e;var a=e.x,s=e.y;r+=a,o+=s;var l=t.x,p=t.y;return a>l&&(a=l),s>p&&(s=p),r<(n+=l)&&(r=n),o<(i+=p)&&(o=i),r-=a,o-=s,new DOMRect(a,s,r,o)},e}(),g=function(){function e(){}return e.focusOnIds=function(t,r,o){if(t&&t.length>0){var n,i=document.getElementById("svgContainer"),a=i.firstChild;a&&"svg"===a.nodeName&&t.forEach((function(t){for(var r=o.getAllElementsForPuic(t),i=0;i<r.length;i++){var a=e.getElementRectangleWithNestedSvgOffset(r[i]);n=h.rectUnion(n,a)}})),e.focusOnRect(n,i.getBoundingClientRect(),a,r)}},e.focusOnRect=function(e,t,r,o){if(e){var n=r.getElementsByClassName("svg-pan-zoom_viewport")[0].getScreenCTM(),i=r.createSVGPoint();i.x=e.x+e.width/2,i.y=e.y+e.height/2;var a=i.matrixTransform(n),s=r.createSVGPoint();s.x=e.width,s.y=e.height;var l=s.matrixTransform(n.inverse()),p=Math.min(5,t.height/Math.abs(l.y));o.zoomAtPoint(p,{x:a.x-t.left,y:a.y-t.top}),o.panBy({x:t.width/2-a.x,y:(t.height+t.top)/2-a.y})}},e.getElementRectangleWithNestedSvgOffset=function(e){for(var t=e.getBBox();"svg"!==e.parentElement.nodeName;)e=e.parentElement;e=e.parentElement,t.x=t.x+parseInt(e.getAttribute("x"),10),t.y=t.y+parseInt(e.getAttribute("y"),10);var r=e.getAttribute("viewBox");if(r){var o=r.split(" ");t.x=t.x-parseInt(o[0],10),t.y=t.y-parseInt(o[1],10)}return t},e}(),b=function(e,t){this.x=e,this.y=t},y=function(e,t){this.id=e,this.event=t},w=p,x=function(){function e(e,t,o,n){var i=this;this.document=e,this.http=t,this.clickAreaService=o,this.puicHelper=n,this.useClickArea=!1,this.inlineDgnCssImport=!0,this.selectieInfos=[],this.clickableIds=[],this.rightClickableIds=[],this.popoverInfos=[],this.errors=!1,this.popoverStyle={display:"inline"},this.popoverHtmlContent="",this.clickHandler=new r.EventEmitter,this.rightClickHandler=new r.EventEmitter,this.svgLoaded=new r.EventEmitter,this.svgGeladen=!1,this.eventListeners=new Map,this.getSvgPanZoomInstance=function(){return i.svgPanZoomRef},this.hidePopOver=function(){return i.popoverStyle.visibility="hidden"},this.getSvgParent=function(){return i.svgParentRef.nativeElement}}return e.prototype.ngOnInit=function(){this.createSvgPanZoomRefIfNotExists(),this.puicHelper.setRootSvg(this.getSvgParent())},e.prototype.ngOnChanges=function(e){this.createSvgPanZoomRefIfNotExists();var t=e.useClickArea,r=e.clickableIds,o=e.rightClickableIds,n=e.popoverInfos,i=e.selectieInfos,a=e.svgInfo;(t||r||o||n)&&this.delayedClickAreaCreation(),this.svgInfo&&a&&this.loadSvgs(),this.clickableIds&&r&&this.svgGeladen&&this.addClickEventHandlersToElements(this.clickableIds,"click"),this.rightClickableIds&&o&&this.svgGeladen&&this.addClickEventHandlersToElements(this.rightClickableIds,"contextmenu"),this.selectieInfos&&i&&this.svgGeladen&&this.selectElements(),this.popoverInfos&&n&&this.svgGeladen&&this.addMouseoverEventHandlerToElements()},e.prototype.focusOnIds=function(e){g.focusOnIds(e,this.svgPanZoomRef,this.puicHelper)},e.getXCoordinate=function(e){var t=document.createElement("div");t.innerHTML=e;var r=t.firstElementChild.getAttribute("width");return t=null,parseFloat(r)},e.prototype.createSvgPanZoomRefIfNotExists=function(){var e=this;this.svgPanZoomRef||(this.svgPanZoomRef=w(this.getSvgParent(),{fit:!1,center:!0,dblClickZoomEnabled:!1,onZoom:function(){return e.hidePopOver()},onPan:function(){return e.hidePopOver()}}),this.addStyleToRootSvg())},e.prototype.addStyleToRootSvg=function(){var e=document.createElementNS("http://www.w3.org/2000/svg","defs"),t=this.inlineDgnCssImport?'@import url("dgn.css");\n':"";t+=".imxview-selected > polyline.imxview-clickarea, polyline.imxview-clickarea {\n stroke: var(--imxview-clickarea-stroke, transparent);\n stroke-width: var(--imxview-clickarea-stroke-width, 10px);\n stroke-dasharray: none;\n }",e.innerHTML='<style type="text/css">\n '+t+"\n </style>";var r=this.getSvgParent().firstElementChild;this.getSvgParent().insertBefore(e,r)},e.prototype.loadSvgs=function(){var e=this;i.combineLatest(this.svgInfo.map((function(t){return e.loadSvg(t.svg)}))).pipe(a.take(1)).subscribe((function(t){var r=e.concatenateSvgs(t);e.updateDom(r),e.svgGeladen=!0,e.svgLoaded.emit(),e.delayedClickAreaCreation(),e.addClickEventHandlersToElements(e.clickableIds,"click"),e.addClickEventHandlersToElements(e.rightClickableIds,"contextmenu"),e.selectElements(),e.addMouseoverEventHandlerToElements()}),(function(t){return e.flagErrors(t)}))},e.prototype.loadSvg=function(e){if(e.startsWith("data:")){var t=n.parse(e);return t?i.of(t.data.toString()):i.throwError("Data-url parse error")}return this.http.get(e,{responseType:"text"})},e.prototype.addClickEventHandlersToElement=function(e,t,r,o){var n=this;if(!e.get(t)){var i="click"===r?function(e){return n.clickHandler.emit(new y(o,e))}:function(e){return e.preventDefault(),n.rightClickHandler.emit(new y(o,e)),!1};e.set(t,i),t.addEventListener(r,i),"click"===r&&(t.style.cursor="pointer")}},e.prototype.addClickEventHandlersToElements=function(e,t){var r=this,o=this.removeOldState(t);e&&e.forEach((function(e){r.puicHelper.getAllElementsForPuic(e).forEach((function(n){return r.addClickEventHandlersToElement(o,n,t,e)}))}))},e.prototype.addMouseoverEventHandlerToElements=function(){var e=this,t=this.removeOldState("mouseover");this.popoverInfos&&this.popoverInfos.forEach((function(r){r.puicArray.forEach((function(o){for(var n=e.puicHelper.getAllElementsForPuic(o),i=0;i<n.length;i++){var a=function(t){e.popoverHtmlContent=r.popoverHtmlContent,e.popoverTitleContent=r.popoverTitleContent,setTimeout((function(){return e.showPopup(t)}),0)},s=n.item(i);t.set(s,a),s.addEventListener("mouseover",a)}}))}))},e.prototype.concatenateSvgs=function(e){for(var t="",r=0,o=this.svgInfo.length;r<o;r++){var n=this.svgInfo[r].coordinates||new b(0,0),i=document.createElement("div");i.innerHTML=e[r].replace('@import url("dgn.css");',""),i.firstElementChild.setAttribute("x",n.x.toString()),i.firstElementChild.setAttribute("y",n.y.toString()),t+=i.innerHTML}return t},e.prototype.flagErrors=function(e){console.log(e),this.errors=!0},e.prototype.removeOldState=function(t){var r=this.eventListeners.get(t);return r&&r.forEach((function(r,o){o.removeEventListener(t,r),o.setAttribute("style",e.setDefaultCursor(o))})),r=new Map,this.eventListeners.set(t,r),r},e.prototype.selectElements=function(){for(var e=this,t=this.getSvgParent().querySelectorAll("[class*=imxview-selected]"),r=0;r<t.length;r++)v.removeClassesStartingWith(t[r],"imxview-selected");this.selectieInfos&&this.selectieInfos.forEach((function(t){t.ids.forEach((function(r){e.puicHelper.getAllElementsForPuic(r).forEach((function(e){v.addClass(e,"imxview-selected"),""!==t.clazz&&v.addClass(e,"imxview-selected-"+t.clazz)}))}))}))},e.setDefaultCursor=function(e){var t=e.getAttribute("style");return t?t.replace("pointer","default"):"cursor: default"},e.prototype.showPopup=function(e){var t=document.getElementById("popover").getBoundingClientRect(),r=e.layerX-t.width/2+"px",o=e.layerY-(t.height+8)+"px";this.popoverStyle={left:r,top:o,position:"absolute",display:"inline",visibility:"visible"}},e.prototype.updateDom=function(e){this.getSvgParent().getElementsByClassName("svg-pan-zoom_viewport")[0].innerHTML=e.substring(e.indexOf("<svg")),this.svgPanZoomRef.updateBBox(),this.svgPanZoomRef.center()},e.prototype.delayedClickAreaCreation=function(){if(this.svgGeladen&&this.useClickArea){var e=new Set(function(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(c(arguments[t]));return e}(this.clickableIds,this.rightClickableIds,this.popoverInfos.flatMap((function(e){return e.puicArray}))));this.clickAreaService.delayedClickAreaCreation(e)}},e}();x.decorators=[{type:r.Component,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{background-clip:padding-box;background-color:#fff;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif;font-size:.875rem;font-style:normal;font-weight:400;left:0;letter-spacing:normal;line-break:auto;line-height:1.5;max-width:100%;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;top:0;visibility:hidden;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:break-word;z-index:1060}.popover,.popover .arrow{display:block;position:absolute}.popover .arrow{height:.5rem;left:40%;margin:0 .3rem;width:1rem}.popover .arrow:after,.popover .arrow:before{border-color:transparent;border-style:solid;content:"";display:block;position:absolute}.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{border-top-color:rgba(0,0,0,.25);border-width:.5rem .5rem 0;bottom:0}.bs-popover-auto[x-placement^=top]>.arrow:after,.bs-popover-top>.arrow:after{border-top-color:#fff;border-width:.5rem .5rem 0;bottom:1px}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{height:1rem;left:calc(-.5rem - 1px);margin:.3rem 0;width:.5rem}.bs-popover-auto[x-placement^=right]>.arrow:before,.bs-popover-right>.arrow:before{border-right-color:rgba(0,0,0,.25);border-width:.5rem .5rem .5rem 0;left:0}.bs-popover-auto[x-placement^=right]>.arrow:after,.bs-popover-right>.arrow:after{border-right-color:#fff;border-width:.5rem .5rem .5rem 0;left:1px}.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{border-bottom-color:rgba(0,0,0,.25);border-width:0 .5rem .5rem;top:0}.bs-popover-auto[x-placement^=bottom]>.arrow:after,.bs-popover-bottom>.arrow:after{border-bottom-color:#fff;border-width:0 .5rem .5rem;top:1px}.bs-popover-auto[x-placement^=bottom] .popover-header:before,.bs-popover-bottom .popover-header:before{border-bottom:1px solid #f7f7f7;content:"";display:block;left:50%;margin-left:-.5rem;position:absolute;top:0;width:1rem}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{height:1rem;margin:.3rem 0;right:calc(-.5rem - 1px);width:.5rem}.bs-popover-auto[x-placement^=left]>.arrow:before,.bs-popover-left>.arrow:before{border-left-color:rgba(0,0,0,.25);border-width:.5rem 0 .5rem .5rem;right:0}.bs-popover-auto[x-placement^=left]>.arrow:after,.bs-popover-left>.arrow:after{border-left-color:#fff;border-width:.5rem 0 .5rem .5rem;right:1px}.popover-header{background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px);font-size:1rem;margin-bottom:0;padding:.5rem .75rem}.popover-header:empty{display:none}.popover-body{color:#212529;padding:.5rem .75rem}']}]}],x.ctorParameters=function(){return[{type:void 0,decorators:[{type:r.Inject,args:[f]}]},{type:o.HttpClient},{type:u},{type:d}]},x.propDecorators={useClickArea:[{type:r.Input}],inlineDgnCssImport:[{type:r.Input}],svgInfo:[{type:r.Input}],selectieInfos:[{type:r.Input}],clickableIds:[{type:r.Input}],rightClickableIds:[{type:r.Input}],popoverInfos:[{type:r.Input}],svgParentRef:[{type:r.ViewChild,args:["svgParent",{static:!0}]}],clickHandler:[{type:r.Output}],rightClickHandler:[{type:r.Output}],svgLoaded:[{type:r.Output}]};var E=m,I=function(){};I.decorators=[{type:r.NgModule,args:[{imports:[t.CommonModule,o.HttpClientModule],declarations:[x],exports:[x],providers:[{provide:f,useFactory:E}]}]}];var C=function(e,t){this.puicArray=e,this.popoverHtmlContent=t},k=function(e,t){this.svg=e,this.coordinates=t},S=function(e,t){this.ids=e,this.clazz=t};e.ImxViewerComponent=x,e.ImxViewerModule=I,e.Point=b,e.PopoverInfo=C,e.SelectieEvent=y,e.SelectieInfo=S,e.SvgInfo=k,e.ɵ0=E,e.ɵa=f,e.ɵb=m,e.ɵc=u,e.ɵd=d,Object.defineProperty(e,"__esModule",{value:!0})}));
15
+ ***************************************************************************** */Object.create;function c(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var o,n,i=r.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(o=i.next()).done;)a.push(o.value)}catch(e){n={error:e}}finally{try{o&&!o.done&&(r=i.return)&&r.call(i)}finally{if(n)throw n.error}}return a}Object.create;var d=function(){var e=this;this.setRootSvg=function(t){return e.rootSvg=t},this.getAllElementsForPuic=function(t){return e.rootSvg.querySelectorAll(".p"+t+", #p"+t)}};d.ɵprov=r.ɵɵdefineInjectable({factory:function(){return new d},token:d,providedIn:"root"}),d.decorators=[{type:r.Injectable,args:[{providedIn:"root"}]}];var u=function(){function e(e){this.puicHelper=e,this.timeout=250}return e.prototype.delayedClickAreaCreation=function(e){var t=this;0!==e.size&&(window.clearTimeout(this.timer),this.timer=window.setTimeout((function(){return t.createClickareas(e)}),this.timeout))},e.prototype.createClickareas=function(e){var t=this;Array.from(document.getElementsByClassName("imxview-clickarea")).forEach((function(e){return e.remove()})),e.forEach((function(e){t.puicHelper.getAllElementsForPuic(e).forEach((function(e){e&&Array.from(e.getElementsByTagName("polyline")).forEach((function(t){var r=t.cloneNode(!0);r.setAttribute("class","imxview-clickarea"),r.removeAttribute("id"),e.insertBefore(r,t)}))}))}))},e}();u.ɵprov=r.ɵɵdefineInjectable({factory:function(){return new u(r.ɵɵinject(d))},token:u,providedIn:"root"}),u.decorators=[{type:r.Injectable,args:[{providedIn:"root"}]}],u.ctorParameters=function(){return[{type:d}]};var v=function(){function e(){}return e.addClass=function(e,t){if(""!==t){for(var r=e.getAttribute("class"),o=r?r.split(" "):[],n=0;n<o.length;n++)if(o[n]===t)return;e.setAttribute("class",r?r+" "+t:t)}},e.removeClassesStartingWith=function(e,t){var r=e.getAttribute("class");if(r){for(var o=r.split(" "),n=o.length;n--;)0===o[n].indexOf(t)&&o.splice(n,1);0===o.length?e.removeAttribute("class"):e.setAttribute("class",o.join(" "))}},e}(),f=new r.InjectionToken("Document");function m(){return document}var h=function(){function e(){}return e.rectUnion=function(e,t){if(!e)return t;var r=e.width,o=e.height;if((r|o)<0)return t;var n=t.width,i=t.height;if((n|i)<0)return e;var a=e.x,s=e.y;r+=a,o+=s;var l=t.x,p=t.y;return a>l&&(a=l),s>p&&(s=p),r<(n+=l)&&(r=n),o<(i+=p)&&(o=i),r-=a,o-=s,new DOMRect(a,s,r,o)},e}(),g=function(){function e(){}return e.focusOnIds=function(t,r,o){if(t&&t.length>0){var n,i=document.getElementById("svgContainer"),a=i.firstChild;a&&"svg"===a.nodeName&&t.forEach((function(t){for(var r=o.getAllElementsForPuic(t),i=0;i<r.length;i++){var a=e.getElementRectangleWithNestedSvgOffset(r[i]);n=h.rectUnion(n,a)}})),e.focusOnRect(n,i.getBoundingClientRect(),a,r)}},e.focusOnRect=function(e,t,r,o){if(e){var n=r.getElementsByClassName("svg-pan-zoom_viewport")[0].getScreenCTM(),i=r.createSVGPoint();i.x=e.x+e.width/2,i.y=e.y+e.height/2;var a=i.matrixTransform(n),s=r.createSVGPoint();s.x=e.width,s.y=e.height;var l=s.matrixTransform(n.inverse()),p=Math.min(5,t.height/Math.abs(l.y));o.zoomAtPoint(p,{x:a.x-t.left,y:a.y-t.top}),o.panBy({x:t.width/2-a.x,y:(t.height+t.top)/2-a.y})}},e.getElementRectangleWithNestedSvgOffset=function(e){for(var t=e.getBBox();"svg"!==e.parentElement.nodeName;)e=e.parentElement;e=e.parentElement,t.x=t.x+parseInt(e.getAttribute("x"),10),t.y=t.y+parseInt(e.getAttribute("y"),10);var r=e.getAttribute("viewBox");if(r){var o=r.split(" ");t.x=t.x-parseInt(o[0],10),t.y=t.y-parseInt(o[1],10)}return t},e}(),b=function(e,t){this.x=e,this.y=t},y=function(e,t){this.id=e,this.event=t},w=p,x=function(){function e(e,t,o,n){var i=this;this.document=e,this.http=t,this.clickAreaService=o,this.puicHelper=n,this.useClickArea=!1,this.inlineDgnCssImport=!0,this.selectieInfos=[],this.clickableIds=[],this.rightClickableIds=[],this.popoverInfos=[],this.errors=!1,this.popoverStyle={display:"inline"},this.popoverHtmlContent="",this.clickHandler=new r.EventEmitter,this.rightClickHandler=new r.EventEmitter,this.svgLoaded=new r.EventEmitter,this.svgGeladen=!1,this.eventListeners=new Map,this.getSvgPanZoomInstance=function(){return i.svgPanZoomRef},this.hidePopOver=function(){return i.popoverStyle.visibility="hidden"},this.getSvgParent=function(){return i.svgParentRef.nativeElement}}return e.prototype.ngOnInit=function(){this.createSvgPanZoomRefIfNotExists(),this.puicHelper.setRootSvg(this.getSvgParent())},e.prototype.ngOnChanges=function(e){this.createSvgPanZoomRefIfNotExists();var t=e.useClickArea,r=e.clickableIds,o=e.rightClickableIds,n=e.popoverInfos,i=e.selectieInfos,a=e.svgInfo;(t||r||o||n)&&this.delayedClickAreaCreation(),this.svgInfo&&a&&this.loadSvgs(),this.clickableIds&&r&&this.svgGeladen&&this.addClickEventHandlersToElements(this.clickableIds,"click"),this.rightClickableIds&&o&&this.svgGeladen&&this.addClickEventHandlersToElements(this.rightClickableIds,"contextmenu"),this.selectieInfos&&i&&this.svgGeladen&&this.selectElements(),this.popoverInfos&&n&&this.svgGeladen&&this.addMouseoverEventHandlerToElements()},e.prototype.focusOnIds=function(e){g.focusOnIds(e,this.svgPanZoomRef,this.puicHelper)},e.getXCoordinate=function(e){var t=document.createElement("div");t.innerHTML=e;var r=t.firstElementChild.getAttribute("width");return t=null,parseFloat(r)},e.prototype.createSvgPanZoomRefIfNotExists=function(){var e=this;this.svgPanZoomRef||(this.svgPanZoomRef=w(this.getSvgParent(),{fit:!1,center:!0,dblClickZoomEnabled:!1,onZoom:function(){return e.hidePopOver()},onPan:function(){return e.hidePopOver()}}),this.addStyleToRootSvg())},e.prototype.addStyleToRootSvg=function(){var e=document.createElementNS("http://www.w3.org/2000/svg","defs"),t=this.inlineDgnCssImport?'@import url("dgn.css");\n':"";t+=".imxview-selected > polyline.imxview-clickarea, polyline.imxview-clickarea {\n stroke: var(--imxview-clickarea-stroke, transparent);\n stroke-width: var(--imxview-clickarea-stroke-width, 10px);\n stroke-dasharray: none;\n }",e.innerHTML='<style type="text/css">\n '+t+"\n </style>";var r=this.getSvgParent().firstElementChild;this.getSvgParent().insertBefore(e,r)},e.prototype.loadSvgs=function(){var e=this;i.combineLatest(this.svgInfo.map((function(t){return e.loadSvg(t.svg)}))).pipe(a.take(1)).subscribe((function(t){var r=e.concatenateSvgs(t);e.updateDom(r),e.svgGeladen=!0,e.svgLoaded.emit(),e.delayedClickAreaCreation(),e.addClickEventHandlersToElements(e.clickableIds,"click"),e.addClickEventHandlersToElements(e.rightClickableIds,"contextmenu"),e.selectElements(),e.addMouseoverEventHandlerToElements()}),(function(t){return e.flagErrors(t)}))},e.prototype.loadSvg=function(e){if(e.startsWith("data:")){var t=n.parse(e);return t?i.of(t.data.toString()):i.throwError("Data-url parse error")}return this.http.get(e,{responseType:"text"})},e.prototype.addClickEventHandlersToElement=function(e,t,r,o){var n=this;if(!e.get(t)){var i="click"===r?function(e){return n.clickHandler.emit(new y(o,e))}:function(e){return e.preventDefault(),n.rightClickHandler.emit(new y(o,e)),!1};e.set(t,i),t.addEventListener(r,i),"click"===r&&(t.style.cursor="pointer")}},e.prototype.addClickEventHandlersToElements=function(e,t){var r=this,o=this.removeOldState(t);e&&e.forEach((function(e){r.puicHelper.getAllElementsForPuic(e).forEach((function(n){return r.addClickEventHandlersToElement(o,n,t,e)}))}))},e.prototype.addMouseoverEventHandlerToElements=function(){var e=this,t=this.removeOldState("mouseover");this.popoverInfos&&this.popoverInfos.forEach((function(r){r.puicArray.forEach((function(o){for(var n=e.puicHelper.getAllElementsForPuic(o),i=0;i<n.length;i++){var a=function(t){e.popoverHtmlContent=r.popoverHtmlContent,e.popoverTitleContent=r.popoverTitleContent,setTimeout((function(){return e.showPopup(t)}),0)},s=n.item(i);t.set(s,a),s.addEventListener("mouseover",a)}}))}))},e.prototype.concatenateSvgs=function(e){for(var t="",r=0,o=this.svgInfo.length;r<o;r++){var n=this.svgInfo[r].coordinates||new b(0,0),i=document.createElement("div");i.innerHTML=e[r].replace('@import url("dgn.css");',""),i.firstElementChild.setAttribute("x",n.x.toString()),i.firstElementChild.setAttribute("y",n.y.toString()),t+=i.innerHTML}return t},e.prototype.flagErrors=function(e){console.log(e),this.errors=!0},e.prototype.removeOldState=function(t){var r=this.eventListeners.get(t);return r&&r.forEach((function(r,o){o.removeEventListener(t,r),"click"===t&&o.setAttribute("style",e.setDefaultCursor(o))})),r=new Map,this.eventListeners.set(t,r),r},e.prototype.selectElements=function(){for(var e=this,t=this.getSvgParent().querySelectorAll("[class*=imxview-selected]"),r=0;r<t.length;r++)v.removeClassesStartingWith(t[r],"imxview-selected");this.selectieInfos&&this.selectieInfos.forEach((function(t){t.ids.forEach((function(r){e.puicHelper.getAllElementsForPuic(r).forEach((function(e){v.addClass(e,"imxview-selected"),""!==t.clazz&&v.addClass(e,"imxview-selected-"+t.clazz)}))}))}))},e.setDefaultCursor=function(e){var t=e.getAttribute("style");return t?t.replace("pointer","default"):"cursor: default"},e.prototype.showPopup=function(e){var t=document.getElementById("popover").getBoundingClientRect(),r=e.layerX-t.width/2+"px",o=e.layerY-(t.height+8)+"px";this.popoverStyle={left:r,top:o,position:"absolute",display:"inline",visibility:"visible"}},e.prototype.updateDom=function(e){this.getSvgParent().getElementsByClassName("svg-pan-zoom_viewport")[0].innerHTML=e.substring(e.indexOf("<svg")),this.svgPanZoomRef.updateBBox(),this.svgPanZoomRef.center()},e.prototype.delayedClickAreaCreation=function(){if(this.svgGeladen&&this.useClickArea){var e=new Set(function(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(c(arguments[t]));return e}(this.clickableIds,this.rightClickableIds,this.popoverInfos.flatMap((function(e){return e.puicArray}))));this.clickAreaService.delayedClickAreaCreation(e)}},e}();x.decorators=[{type:r.Component,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{background-clip:padding-box;background-color:#fff;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif;font-size:.875rem;font-style:normal;font-weight:400;left:0;letter-spacing:normal;line-break:auto;line-height:1.5;max-width:100%;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;top:0;visibility:hidden;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:break-word;z-index:1060}.popover,.popover .arrow{display:block;position:absolute}.popover .arrow{height:.5rem;left:40%;margin:0 .3rem;width:1rem}.popover .arrow:after,.popover .arrow:before{border-color:transparent;border-style:solid;content:"";display:block;position:absolute}.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{border-top-color:rgba(0,0,0,.25);border-width:.5rem .5rem 0;bottom:0}.bs-popover-auto[x-placement^=top]>.arrow:after,.bs-popover-top>.arrow:after{border-top-color:#fff;border-width:.5rem .5rem 0;bottom:1px}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{height:1rem;left:calc(-.5rem - 1px);margin:.3rem 0;width:.5rem}.bs-popover-auto[x-placement^=right]>.arrow:before,.bs-popover-right>.arrow:before{border-right-color:rgba(0,0,0,.25);border-width:.5rem .5rem .5rem 0;left:0}.bs-popover-auto[x-placement^=right]>.arrow:after,.bs-popover-right>.arrow:after{border-right-color:#fff;border-width:.5rem .5rem .5rem 0;left:1px}.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{border-bottom-color:rgba(0,0,0,.25);border-width:0 .5rem .5rem;top:0}.bs-popover-auto[x-placement^=bottom]>.arrow:after,.bs-popover-bottom>.arrow:after{border-bottom-color:#fff;border-width:0 .5rem .5rem;top:1px}.bs-popover-auto[x-placement^=bottom] .popover-header:before,.bs-popover-bottom .popover-header:before{border-bottom:1px solid #f7f7f7;content:"";display:block;left:50%;margin-left:-.5rem;position:absolute;top:0;width:1rem}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{height:1rem;margin:.3rem 0;right:calc(-.5rem - 1px);width:.5rem}.bs-popover-auto[x-placement^=left]>.arrow:before,.bs-popover-left>.arrow:before{border-left-color:rgba(0,0,0,.25);border-width:.5rem 0 .5rem .5rem;right:0}.bs-popover-auto[x-placement^=left]>.arrow:after,.bs-popover-left>.arrow:after{border-left-color:#fff;border-width:.5rem 0 .5rem .5rem;right:1px}.popover-header{background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px);font-size:1rem;margin-bottom:0;padding:.5rem .75rem}.popover-header:empty{display:none}.popover-body{color:#212529;padding:.5rem .75rem}']}]}],x.ctorParameters=function(){return[{type:void 0,decorators:[{type:r.Inject,args:[f]}]},{type:o.HttpClient},{type:u},{type:d}]},x.propDecorators={useClickArea:[{type:r.Input}],inlineDgnCssImport:[{type:r.Input}],svgInfo:[{type:r.Input}],selectieInfos:[{type:r.Input}],clickableIds:[{type:r.Input}],rightClickableIds:[{type:r.Input}],popoverInfos:[{type:r.Input}],svgParentRef:[{type:r.ViewChild,args:["svgParent",{static:!0}]}],clickHandler:[{type:r.Output}],rightClickHandler:[{type:r.Output}],svgLoaded:[{type:r.Output}]};var E=m,I=function(){};I.decorators=[{type:r.NgModule,args:[{imports:[t.CommonModule,o.HttpClientModule],declarations:[x],exports:[x],providers:[{provide:f,useFactory:E}]}]}];var C=function(e,t){this.puicArray=e,this.popoverHtmlContent=t},k=function(e,t){this.svg=e,this.coordinates=t},S=function(e,t){this.ids=e,this.clazz=t};e.ImxViewerComponent=x,e.ImxViewerModule=I,e.Point=b,e.PopoverInfo=C,e.SelectieEvent=y,e.SelectieInfo=S,e.SvgInfo=k,e.ɵ0=E,e.ɵa=f,e.ɵb=m,e.ɵc=u,e.ɵd=d,Object.defineProperty(e,"__esModule",{value:!0})}));
16
16
  //# sourceMappingURL=loxia-imx-viewer.umd.min.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../node_modules/tslib/tslib.es6.js","../../src/services/puic-helper.service.ts","../../src/services/clickarea.service.ts","../../src/utils/classes-util.ts","../../src/utils/document-token.ts","../../src/utils/svg-rect-util.ts","../../src/utils/focus-util.ts","../../src/model/point.ts","../../src/model/selectie-event.ts","../../src/components/imx-viewer.component.ts","../../src/imx-viewer.module.ts","../../src/model/popover-info.ts","../../src/model/svg-info.ts","../../src/model/selectie-info.ts"],"names":["Object","create","__read","o","n","m","Symbol","iterator","r","e","i","call","ar","next","done","push","value","error","_this","this","setRootSvg","svgParent","rootSvg","getAllElementsForPuic","puic","querySelectorAll","Injectable","args","providedIn","ClickareaService","puicHelper","timeout","prototype","delayedClickAreaCreation","ids","size","window","clearTimeout","timer","setTimeout","createClickareas","Array","from","document","getElementsByClassName","forEach","x","remove","id","element","getElementsByTagName","p","clone","cloneNode","setAttribute","removeAttribute","insertBefore","PuicHelperService","ClassesUtil","addClass","elem","cls","classAttr","getAttribute","classes","split","j","length","removeClassesStartingWith","indexOf","splice","join","DocumentToken","InjectionToken","documentProvider","SvgRectUtil","rectUnion","r1","r2","tx2","width","ty2","height","rx2","ry2","tx1","ty1","y","rx1","ry1","DOMRect","FocusUtil","focusOnIds","focusIds","svgPanZoomRef","resultRect_1","svgContainer","getElementById","rootSvgDoc","firstChild","nodeName","elems","elementRect","getElementRectangleWithNestedSvgOffset","focusOnRect","getBoundingClientRect","rect","matrix","getScreenCTM","location","createSVGPoint","transformedLocation","matrixTransform","transformedSize","inverse","zoomFactor","Math","min","abs","zoomAtPoint","left","top","panBy","getBBox","parentElement","parseInt","viewBox","viewBoxCoordinates","event","_svgPanZoom","SvgPanZoom","ImxViewerComponent","http","clickAreaService","useClickArea","inlineDgnCssImport","selectieInfos","clickableIds","rightClickableIds","popoverInfos","errors","popoverStyle","display","popoverHtmlContent","clickHandler","EventEmitter","rightClickHandler","svgLoaded","svgGeladen","eventListeners","Map","getSvgPanZoomInstance","hidePopOver","visibility","getSvgParent","svgParentRef","nativeElement","ngOnInit","createSvgPanZoomRefIfNotExists","ngOnChanges","changes","svgInfo","loadSvgs","addClickEventHandlersToElements","selectElements","addMouseoverEventHandlerToElements","getXCoordinate","decodedSvgDataUrl","div","createElement","innerHTML","firstElementChild","parseFloat","fit","center","dblClickZoomEnabled","onZoom","onPan","addStyleToRootSvg","defs","createElementNS","style","combineLatest","map","loadSvg","svg","pipe","take","subscribe","svgs","concatenateSvgs","updateDom","emit","flagErrors","svgSrc","startsWith","parsed","dataUrl.parse","observableOf","data","toString","observableThrowError","get","responseType","addClickEventHandlersToElement","listeners","eventType","fn","SelectieEvent","preventDefault","set","addEventListener","cursor","eventtype","removeOldState","popoverInfo","puicArray","popoverTitleContent","showPopup","item","svgContent","len","sourceCoordinates","coordinates","Point","replace","console","log","el","removeEventListener","setDefaultCursor","allElems","selectieInfo","clazz","oudeStyle","popoverElem","layerX","layerY","position","substring","updateBBox","clickareaIds","Set","arguments","concat","__spread","flatMap","pi","Component","selector","template","Inject","HttpClient","Input","ViewChild","static","Output","NgModule","imports","CommonModule","HttpClientModule","declarations","exports","providers","provide","useFactory","ɵ0"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || from);\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\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","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 SvgPanZoom from 'svg-pan-zoom';\nimport { PuicHelperService } from '../services/puic-helper.service';\nimport { SvgRectUtil } from './svg-rect-util';\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","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","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 OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n ViewChild\r\n} from '@angular/core';\r\nimport * as dataUrl from 'dataurl';\r\nimport { combineLatest, Observable, of as observableOf, throwError as observableThrowError } from 'rxjs';\r\nimport { take } from 'rxjs/operators';\r\nimport * as SvgPanZoom from 'svg-pan-zoom';\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\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\n\r\nconst _svgPanZoom = SvgPanZoom; // via andere variabele zodat ng-packgr/rollup geen error geeft bij de aannroep\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 {\r\n @Input() useClickArea = false;\r\n @Input() inlineDgnCssImport = true;\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 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 const parsed = dataUrl.parse(svgSrc);\r\n if (parsed) {\r\n return observableOf(parsed.data.toString());\r\n }\r\n return observableThrowError('Data-url parse error');\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 el.setAttribute('style', ImxViewerComponent.setDefaultCursor(el));\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 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","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"]}
1
+ {"version":3,"sources":["../../node_modules/tslib/tslib.es6.js","../../src/services/puic-helper.service.ts","../../src/services/clickarea.service.ts","../../src/utils/classes-util.ts","../../src/utils/document-token.ts","../../src/utils/svg-rect-util.ts","../../src/utils/focus-util.ts","../../src/model/point.ts","../../src/model/selectie-event.ts","../../src/components/imx-viewer.component.ts","../../src/imx-viewer.module.ts","../../src/model/popover-info.ts","../../src/model/svg-info.ts","../../src/model/selectie-info.ts"],"names":["Object","create","__read","o","n","m","Symbol","iterator","r","e","i","call","ar","next","done","push","value","error","_this","this","setRootSvg","svgParent","rootSvg","getAllElementsForPuic","puic","querySelectorAll","Injectable","args","providedIn","ClickareaService","puicHelper","timeout","prototype","delayedClickAreaCreation","ids","size","window","clearTimeout","timer","setTimeout","createClickareas","Array","from","document","getElementsByClassName","forEach","x","remove","id","element","getElementsByTagName","p","clone","cloneNode","setAttribute","removeAttribute","insertBefore","PuicHelperService","ClassesUtil","addClass","elem","cls","classAttr","getAttribute","classes","split","j","length","removeClassesStartingWith","indexOf","splice","join","DocumentToken","InjectionToken","documentProvider","SvgRectUtil","rectUnion","r1","r2","tx2","width","ty2","height","rx2","ry2","tx1","ty1","y","rx1","ry1","DOMRect","FocusUtil","focusOnIds","focusIds","svgPanZoomRef","resultRect_1","svgContainer","getElementById","rootSvgDoc","firstChild","nodeName","elems","elementRect","getElementRectangleWithNestedSvgOffset","focusOnRect","getBoundingClientRect","rect","matrix","getScreenCTM","location","createSVGPoint","transformedLocation","matrixTransform","transformedSize","inverse","zoomFactor","Math","min","abs","zoomAtPoint","left","top","panBy","getBBox","parentElement","parseInt","viewBox","viewBoxCoordinates","event","_svgPanZoom","SvgPanZoom","ImxViewerComponent","http","clickAreaService","useClickArea","inlineDgnCssImport","selectieInfos","clickableIds","rightClickableIds","popoverInfos","errors","popoverStyle","display","popoverHtmlContent","clickHandler","EventEmitter","rightClickHandler","svgLoaded","svgGeladen","eventListeners","Map","getSvgPanZoomInstance","hidePopOver","visibility","getSvgParent","svgParentRef","nativeElement","ngOnInit","createSvgPanZoomRefIfNotExists","ngOnChanges","changes","svgInfo","loadSvgs","addClickEventHandlersToElements","selectElements","addMouseoverEventHandlerToElements","getXCoordinate","decodedSvgDataUrl","div","createElement","innerHTML","firstElementChild","parseFloat","fit","center","dblClickZoomEnabled","onZoom","onPan","addStyleToRootSvg","defs","createElementNS","style","combineLatest","map","loadSvg","svg","pipe","take","subscribe","svgs","concatenateSvgs","updateDom","emit","flagErrors","svgSrc","startsWith","parsed","dataUrl.parse","observableOf","data","toString","observableThrowError","get","responseType","addClickEventHandlersToElement","listeners","eventType","fn","SelectieEvent","preventDefault","set","addEventListener","cursor","eventtype","removeOldState","popoverInfo","puicArray","popoverTitleContent","showPopup","item","svgContent","len","sourceCoordinates","coordinates","Point","replace","console","log","el","removeEventListener","setDefaultCursor","allElems","selectieInfo","clazz","oudeStyle","popoverElem","layerX","layerY","position","substring","updateBBox","clickareaIds","Set","arguments","concat","__spread","flatMap","pi","Component","selector","template","Inject","HttpClient","Input","ViewChild","static","Output","NgModule","imports","CommonModule","HttpClientModule","declarations","exports","providers","provide","useFactory","ɵ0"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || from);\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\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","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 * as SvgPanZoom from 'svg-pan-zoom';\nimport { PuicHelperService } from '../services/puic-helper.service';\nimport { SvgRectUtil } from './svg-rect-util';\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","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","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 OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n ViewChild\r\n} from '@angular/core';\r\nimport * as dataUrl from 'dataurl';\r\nimport { combineLatest, Observable, of as observableOf, throwError as observableThrowError } from 'rxjs';\r\nimport { take } from 'rxjs/operators';\r\nimport * as SvgPanZoom from 'svg-pan-zoom';\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\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\n\r\nconst _svgPanZoom = SvgPanZoom; // via andere variabele zodat ng-packgr/rollup geen error geeft bij de aannroep\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 {\r\n @Input() useClickArea = false;\r\n @Input() inlineDgnCssImport = true;\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 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 const parsed = dataUrl.parse(svgSrc);\r\n if (parsed) {\r\n return observableOf(parsed.data.toString());\r\n }\r\n return observableThrowError('Data-url parse error');\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 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","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"]}
@@ -209,7 +209,9 @@ export class ImxViewerComponent {
209
209
  if (listeners) {
210
210
  listeners.forEach((fn, el) => {
211
211
  el.removeEventListener(eventType, fn);
212
- el.setAttribute('style', ImxViewerComponent.setDefaultCursor(el));
212
+ if (eventType === 'click') {
213
+ el.setAttribute('style', ImxViewerComponent.setDefaultCursor(el));
214
+ }
213
215
  });
214
216
  }
215
217
  listeners = new Map();
@@ -287,4 +289,4 @@ ImxViewerComponent.propDecorators = {
287
289
  rightClickHandler: [{ type: Output }],
288
290
  svgLoaded: [{ type: Output }]
289
291
  };
290
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW14LXZpZXdlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiL2xvY2FsL2hvbWUvbG94aWEvamVua2luc19ic18xLjIvd29ya3NwYWNlL3ZpZXdlcl9zdmctaW14LXZpZXdlci1jaV9kZXZlbG9wL3NyYy8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvaW14LXZpZXdlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFDSCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUdMLE1BQU0sRUFFTixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxLQUFLLE9BQU8sTUFBTSxTQUFTLENBQUM7QUFDbkMsT0FBTyxFQUFFLGFBQWEsRUFBYyxFQUFFLElBQUksWUFBWSxFQUFFLFVBQVUsSUFBSSxvQkFBb0IsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN6RyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxLQUFLLFVBQVUsTUFBTSxjQUFjLENBQUM7QUFDM0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDakUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDcEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXZDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUl4RCxNQUFNLFdBQVcsR0FBRyxVQUFVLENBQUMsQ0FBQywrRUFB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Z0IsQ0FBQyx3QkFBd0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUNoRTtJQUNMLENBQUM7OztZQTlTSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLFlBQVk7Z0JBQ3RCLDRrQkFBMEM7O2FBRTdDOzs7NENBMkJnQixNQUFNLFNBQUMsYUFBYTtZQTdENUIsVUFBVTtZQWlCVixnQkFBZ0I7WUFDaEIsaUJBQWlCOzs7MkJBa0JyQixLQUFLO2lDQUNMLEtBQUs7c0JBQ0wsS0FBSzs0QkFDTCxLQUFLOzJCQUdMLEtBQUs7Z0NBQ0wsS0FBSzsyQkFDTCxLQUFLOzJCQUVMLFNBQVMsU0FBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFOzJCQU92QyxNQUFNO2dDQUNOLE1BQU07d0JBQ04sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7XHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBFbGVtZW50UmVmLFxyXG4gICAgRXZlbnRFbWl0dGVyLFxyXG4gICAgSW5qZWN0LFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkNoYW5nZXMsXHJcbiAgICBPbkluaXQsXHJcbiAgICBPdXRwdXQsXHJcbiAgICBTaW1wbGVDaGFuZ2VzLFxyXG4gICAgVmlld0NoaWxkXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCAqIGFzIGRhdGFVcmwgZnJvbSAnZGF0YXVybCc7XHJcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIG9mIGFzIG9ic2VydmFibGVPZiwgdGhyb3dFcnJvciBhcyBvYnNlcnZhYmxlVGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgKiBhcyBTdmdQYW5ab29tIGZyb20gJ3N2Zy1wYW4tem9vbSc7XHJcbmltcG9ydCB7IENsaWNrYXJlYVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9jbGlja2FyZWEuc2VydmljZSc7XHJcbmltcG9ydCB7IFB1aWNIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvcHVpYy1oZWxwZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IENsYXNzZXNVdGlsIH0gZnJvbSAnLi4vdXRpbHMvY2xhc3Nlcy11dGlsJztcclxuaW1wb3J0IHsgRG9jdW1lbnRUb2tlbiB9IGZyb20gJy4uL3V0aWxzL2RvY3VtZW50LXRva2VuJztcclxuaW1wb3J0IHsgRm9jdXNVdGlsIH0gZnJvbSAnLi4vdXRpbHMvZm9jdXMtdXRpbCc7XHJcbmltcG9ydCB7IFBvaW50IH0gZnJvbSAnLi4vbW9kZWwvcG9pbnQnO1xyXG5pbXBvcnQgeyBQb3BvdmVySW5mbyB9IGZyb20gJy4uL21vZGVsL3BvcG92ZXItaW5mbyc7XHJcbmltcG9ydCB7IFNlbGVjdGllRXZlbnQgfSBmcm9tICcuLi9tb2RlbC9zZWxlY3RpZS1ldmVudCc7XHJcbmltcG9ydCB7IFNlbGVjdGllSW5mbyB9IGZyb20gJy4uL21vZGVsL3NlbGVjdGllLWluZm8nO1xyXG5pbXBvcnQgeyBTdmdJbmZvIH0gZnJvbSAnLi4vbW9kZWwvc3ZnLWluZm8nO1xyXG5cclxuY29uc3QgX3N2Z1Bhblpvb20gPSBTdmdQYW5ab29tOyAvLyB2aWEgYW5kZXJlIHZhcmlhYmVsZSB6b2RhdCBuZy1wYWNrZ3Ivcm9sbHVwIGdlZW4gZXJyb3IgZ2VlZnQgYmlqIGRlIGFhbm5yb2VwXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnaW14LXZpZXdlcicsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vaW14LXZpZXdlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9pbXgtdmlld2VyLmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW14Vmlld2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQge1xyXG4gICAgQElucHV0KCkgdXNlQ2xpY2tBcmVhID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBpbmxpbmVEZ25Dc3NJbXBvcnQgPSB0cnVlO1xyXG4gICAgQElucHV0KCkgc3ZnSW5mbzogU3ZnSW5mb1tdO1xyXG4gICAgQElucHV0KCkgc2VsZWN0aWVJbmZvczogU2VsZWN0aWVJbmZvW10gPSBbXTtcclxuXHJcbiAgICAvLyBPbmRlcnN0YWFuZGUgaW5wdXRzIHdvcmRlbiBtZWVnZW5vbWVuIHZvb3IgY2xpY2thcmVhOlxyXG4gICAgQElucHV0KCkgY2xpY2thYmxlSWRzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgQElucHV0KCkgcmlnaHRDbGlja2FibGVJZHM6IHN0cmluZ1tdID0gW107XHJcbiAgICBASW5wdXQoKSBwb3BvdmVySW5mb3M6IFBvcG92ZXJJbmZvW10gPSBbXTtcclxuXHJcbiAgICBAVmlld0NoaWxkKCdzdmdQYXJlbnQnLCB7IHN0YXRpYzogdHJ1ZSB9KSBzdmdQYXJlbnRSZWY6IEVsZW1lbnRSZWY7XHJcblxyXG4gICAgZXJyb3JzID0gZmFsc2U7XHJcbiAgICBwb3BvdmVyU3R5bGU6IGFueSA9IHsgZGlzcGxheTogJ2lubGluZScgfTtcclxuICAgIHBvcG92ZXJIdG1sQ29udGVudCA9ICcnO1xyXG4gICAgcG9wb3ZlclRpdGxlQ29udGVudDogc3RyaW5nO1xyXG5cclxuICAgIEBPdXRwdXQoKSBjbGlja0hhbmRsZXIgPSBuZXcgRXZlbnRFbWl0dGVyPFNlbGVjdGllRXZlbnQ+KCk7XHJcbiAgICBAT3V0cHV0KCkgcmlnaHRDbGlja0hhbmRsZXIgPSBuZXcgRXZlbnRFbWl0dGVyPFNlbGVjdGllRXZlbnQ+KCk7XHJcbiAgICBAT3V0cHV0KCkgc3ZnTG9hZGVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICAgIHByaXZhdGUgc3ZnR2VsYWRlbiA9IGZhbHNlO1xyXG4gICAgcHJpdmF0ZSBldmVudExpc3RlbmVyczogTWFwPHN0cmluZywgTWFwPEVsZW1lbnQsIGFueT4+ID0gbmV3IE1hcCgpO1xyXG4gICAgcHJpdmF0ZSBzdmdQYW5ab29tUmVmOiBTdmdQYW5ab29tLkluc3RhbmNlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoRG9jdW1lbnRUb2tlbikgcHJpdmF0ZSBkb2N1bWVudDogYW55LCBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIGNsaWNrQXJlYVNlcnZpY2U6IENsaWNrYXJlYVNlcnZpY2UsIHByaXZhdGUgcHVpY0hlbHBlcjogUHVpY0hlbHBlclNlcnZpY2UpIHtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLmNyZWF0ZVN2Z1Bhblpvb21SZWZJZk5vdEV4aXN0cygpO1xyXG4gICAgICAgIHRoaXMucHVpY0hlbHBlci5zZXRSb290U3ZnKHRoaXMuZ2V0U3ZnUGFyZW50KCkpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgICAgICAvLyBJZiBJbXgtdmlld2VyIGlzIGluaXRpYWxpemVkIHdpdGggc3ZnSW5mbywgbmdPbkNoYW5nZXMgaXMgY2FsbGVkIGJlZm9yZSBuZ09uSW5pdC5cclxuICAgICAgICAvLyBJbiB0aGF0IGNhc2Ugd2UgbmVlZCB0byBjcmVhdGUgc3ZnUGFuWm9vbVJlZiBoZXJlLlxyXG4gICAgICAgIHRoaXMuY3JlYXRlU3ZnUGFuWm9vbVJlZklmTm90RXhpc3RzKCk7XHJcblxyXG4gICAgICAgIGNvbnN0IHsgdXNlQ2xpY2tBcmVhLCBjbGlja2FibGVJZHMsIHJpZ2h0Q2xpY2thYmxlSWRzLCBwb3BvdmVySW5mb3MsIHNlbGVjdGllSW5mb3MsIHN2Z0luZm8gfSA9IGNoYW5nZXM7XHJcblxyXG4gICAgICAgIGlmICh1c2VDbGlja0FyZWEgfHwgY2xpY2thYmxlSWRzIHx8IHJpZ2h0Q2xpY2thYmxlSWRzIHx8IHBvcG92ZXJJbmZvcykge1xyXG4gICAgICAgICAgICB0aGlzLmRlbGF5ZWRDbGlja0FyZWFDcmVhdGlvbigpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuc3ZnSW5mbyAmJiBzdmdJbmZvKSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZFN2Z3MoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmNsaWNrYWJsZUlkcyAmJiBjbGlja2FibGVJZHMgJiYgdGhpcy5zdmdHZWxhZGVuKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYWRkQ2xpY2tFdmVudEhhbmRsZXJzVG9FbGVtZW50cyh0aGlzLmNsaWNrYWJsZUlkcywgJ2NsaWNrJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5yaWdodENsaWNrYWJsZUlkcyAmJiByaWdodENsaWNrYWJsZUlkcyAmJiB0aGlzLnN2Z0dlbGFkZW4pIHtcclxuICAgICAgICAgICAgdGhpcy5hZGRDbGlja0V2ZW50SGFuZGxlcnNUb0VsZW1lbnRzKHRoaXMucmlnaHRDbGlja2FibGVJZHMsICdjb250ZXh0bWVudScpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0aWVJbmZvcyAmJiBzZWxlY3RpZUluZm9zICYmIHRoaXMuc3ZnR2VsYWRlbikge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdEVsZW1lbnRzKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5wb3BvdmVySW5mb3MgJiYgcG9wb3ZlckluZm9zICYmIHRoaXMuc3ZnR2VsYWRlbikge1xyXG4gICAgICAgICAgICB0aGlzLmFkZE1vdXNlb3ZlckV2ZW50SGFuZGxlclRvRWxlbWVudHMoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGZvY3VzT25JZHMoZm9jdXNJZHM6IHN0cmluZ1tdKSB7XHJcbiAgICAgICAgRm9jdXNVdGlsLmZvY3VzT25JZHMoZm9jdXNJZHMsIHRoaXMuc3ZnUGFuWm9vbVJlZiwgdGhpcy5wdWljSGVscGVyKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0U3ZnUGFuWm9vbUluc3RhbmNlOiAoKSA9PiBTdmdQYW5ab29tLkluc3RhbmNlID0gKCkgPT4gdGhpcy5zdmdQYW5ab29tUmVmO1xyXG5cclxuICAgIC8vIEhlcmUgb25seSB1c2VkIGluIHRlc3QsIGJ1dCBhbHNvIHVzZWQgYnkgYXBwbGljYXRpb25zLiBEbyBub3QgcmVtb3ZlLlxyXG4gICAgcHVibGljIHN0YXRpYyBnZXRYQ29vcmRpbmF0ZShkZWNvZGVkU3ZnRGF0YVVybDogc3RyaW5nKSB7XHJcbiAgICAgICAgbGV0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICAgIGRpdi5pbm5lckhUTUwgPSBkZWNvZGVkU3ZnRGF0YVVybDtcclxuICAgICAgICAvLyBEZSBTVkctd2lkdGggd29yZHQgaW4gZGUgc3ZnIHRhZyBnZXNwZWNpZmljZWVyZC5cclxuICAgICAgICBjb25zdCB4ID0gZGl2LmZpcnN0RWxlbWVudENoaWxkLmdldEF0dHJpYnV0ZSgnd2lkdGgnKTtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSBwYXJzZUZsb2F0KHgpO1xyXG4gICAgICAgIGRpdiA9IG51bGw7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuXHJcbiAgICBoaWRlUG9wT3ZlciA9ICgpID0+IHRoaXMucG9wb3ZlclN0eWxlLnZpc2liaWxpdHkgPSAnaGlkZGVuJztcclxuXHJcbiAgICBwcml2YXRlIGNyZWF0ZVN2Z1Bhblpvb21SZWZJZk5vdEV4aXN0cygpIHtcclxuICAgICAgICBpZiAoIXRoaXMuc3ZnUGFuWm9vbVJlZikge1xyXG4gICAgICAgICAgICB0aGlzLnN2Z1Bhblpvb21SZWYgPSBfc3ZnUGFuWm9vbSh0aGlzLmdldFN2Z1BhcmVudCgpLCB7XHJcbiAgICAgICAgICAgICAgICBmaXQ6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgY2VudGVyOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgZGJsQ2xpY2tab29tRW5hYmxlZDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBvblpvb206ICgpID0+IHRoaXMuaGlkZVBvcE92ZXIoKSxcclxuICAgICAgICAgICAgICAgIG9uUGFuOiAoKSA9PiB0aGlzLmhpZGVQb3BPdmVyKClcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmFkZFN0eWxlVG9Sb290U3ZnKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU3R5bGUgd29yZHQgdmFudWl0IGphdmFzY3JpcHQgdG9lZ2V2b2VnZCBuYSBkZSBjcmVhdGUgdmFuIFN2Z1pvb21QYW5SZWYgZGV6ZSBtYWFrdCBlZW4gdmlld3BvcnQgYWFuLlxyXG4gICAgICogLSBDbGlja2FyZWEgQ1NTIHdvcmR0IGR5bmFtaXNjaCBhYW4gZGUgU1ZHIHRvZWdldm9lZ2QsIGRpdCB2b29ya29tdCBkYXQgZGF0IGVyIG5nY29udGVudCBwcm9wZXJ0eSBvcCBnZXBsYWF0c3Qgd29yZHQuXHJcbiAgICAgKiAgIERlIFNWRydzIHdvcmRlbiBuaWV0IHZvb3J6aWVuIHZhbiBuZ2NvbnRlbnQgYXR0cmlidXV0LlxyXG4gICAgICogLSBER04uY3NzIGltcG9ydCB3b3JkdCAob3B0aW9uZWVsKSBpbiBkZSByb290IFNWRyBvcGdlbm9tZW4sIGRlemUgaXMgZWVyc3QgdmVyd2lqZGVyZCB1aXQgZGUgU1ZHJ3MuIE9tIG1lZXJkZXJlIGltcG9ydHMgdGUgdm9vcmtvbWVuLlxyXG4gICAgICogKi9cclxuICAgIHByaXZhdGUgYWRkU3R5bGVUb1Jvb3RTdmcoKSB7XHJcbiAgICAgICAgY29uc3QgZGVmcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnLCAnZGVmcycpO1xyXG5cclxuICAgICAgICBsZXQgc3R5bGUgPSB0aGlzLmlubGluZURnbkNzc0ltcG9ydCA/ICdAaW1wb3J0IHVybChcImRnbi5jc3NcIik7XFxuJyA6ICcnO1xyXG4gICAgICAgIHN0eWxlICs9XHJcbiAgICAgICAgICAgIGAuaW14dmlldy1zZWxlY3RlZCA+IHBvbHlsaW5lLmlteHZpZXctY2xpY2thcmVhLCBwb2x5bGluZS5pbXh2aWV3LWNsaWNrYXJlYSB7XHJcbiAgICAgICAgICAgICAgICBzdHJva2U6IHZhcigtLWlteHZpZXctY2xpY2thcmVhLXN0cm9rZSwgdHJhbnNwYXJlbnQpO1xyXG4gICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoOiB2YXIoLS1pbXh2aWV3LWNsaWNrYXJlYS1zdHJva2Utd2lkdGgsIDEwcHgpO1xyXG4gICAgICAgICAgICAgICAgc3Ryb2tlLWRhc2hhcnJheTogbm9uZTtcclxuICAgICAgICAgICAgfWA7XHJcbiAgICAgICAgZGVmcy5pbm5lckhUTUwgPVxyXG4gICAgICAgICAgICBgPHN0eWxlIHR5cGU9XCJ0ZXh0L2Nzc1wiPlxyXG4gICAgICAgICAgICAgICAgJHsgc3R5bGUgfVxyXG4gICAgICAgICAgICA8L3N0eWxlPmA7XHJcbiAgICAgICAgY29uc3QgZmlyc3RFbGVtZW50Q2hpbGQgPSB0aGlzLmdldFN2Z1BhcmVudCgpLmZpcnN0RWxlbWVudENoaWxkO1xyXG4gICAgICAgIHRoaXMuZ2V0U3ZnUGFyZW50KCkuaW5zZXJ0QmVmb3JlKGRlZnMsIGZpcnN0RWxlbWVudENoaWxkKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGxvYWRTdmdzKCk6IHZvaWQge1xyXG4gICAgICAgIGNvbWJpbmVMYXRlc3QodGhpcy5zdmdJbmZvLm1hcChzdmdJbmZvID0+IHRoaXMubG9hZFN2ZyhzdmdJbmZvLnN2ZykpKVxyXG4gICAgICAgIC5waXBlKHRha2UoMSkpXHJcbiAgICAgICAgLnN1YnNjcmliZShzdmdzID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHN2ZyA9IHRoaXMuY29uY2F0ZW5hdGVTdmdzKHN2Z3MpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVEb20oc3ZnKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3ZnR2VsYWRlbiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN2Z0xvYWRlZC5lbWl0KCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRlbGF5ZWRDbGlja0FyZWFDcmVhdGlvbigpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hZGRDbGlja0V2ZW50SGFuZGxlcnNUb0VsZW1lbnRzKHRoaXMuY2xpY2thYmxlSWRzLCAnY2xpY2snKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWRkQ2xpY2tFdmVudEhhbmRsZXJzVG9FbGVtZW50cyh0aGlzLnJpZ2h0Q2xpY2thYmxlSWRzLCAnY29udGV4dG1lbnUnKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0RWxlbWVudHMoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWRkTW91c2VvdmVyRXZlbnRIYW5kbGVyVG9FbGVtZW50cygpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBlcnJvciA9PiB0aGlzLmZsYWdFcnJvcnMoZXJyb3IpXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGxvYWRTdmcoc3ZnU3JjOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xyXG4gICAgICAgIGlmIChzdmdTcmMuc3RhcnRzV2l0aCgnZGF0YTonKSkge1xyXG4gICAgICAgICAgICBjb25zdCBwYXJzZWQgPSBkYXRhVXJsLnBhcnNlKHN2Z1NyYyk7XHJcbiAgICAgICAgICAgIGlmIChwYXJzZWQpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBvYnNlcnZhYmxlT2YocGFyc2VkLmRhdGEudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIG9ic2VydmFibGVUaHJvd0Vycm9yKCdEYXRhLXVybCBwYXJzZSBlcnJvcicpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoc3ZnU3JjLCB7IHJlc3BvbnNlVHlwZTogJ3RleHQnIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYWRkQ2xpY2tFdmVudEhhbmRsZXJzVG9FbGVtZW50KGxpc3RlbmVyczogTWFwPEVsZW1lbnQsIGFueT4sIGVsZW0sIGV2ZW50VHlwZTogc3RyaW5nLCBwdWljOiBzdHJpbmcpIHtcclxuICAgICAgICBjb25zdCBlbGVtQWxyZWFkeUhhc0xpc3RlbmVyID0gbGlzdGVuZXJzLmdldChlbGVtKTtcclxuICAgICAgICBpZiAoIWVsZW1BbHJlYWR5SGFzTGlzdGVuZXIpIHtcclxuICAgICAgICAgICAgY29uc3QgZm4gPSBldmVudFR5cGUgPT09ICdjbGljaycgP1xyXG4gICAgICAgICAgICAgICAgKGUpID0+IHRoaXMuY2xpY2tIYW5kbGVyLmVtaXQobmV3IFNlbGVjdGllRXZlbnQocHVpYywgZSkpIDpcclxuICAgICAgICAgICAgICAgIChlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmlnaHRDbGlja0hhbmRsZXIuZW1pdChuZXcgU2VsZWN0aWVFdmVudChwdWljLCBlKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgbGlzdGVuZXJzLnNldChlbGVtLCBmbik7XHJcbiAgICAgICAgICAgIGVsZW0uYWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGZuKTtcclxuICAgICAgICAgICAgaWYgKGV2ZW50VHlwZSA9PT0gJ2NsaWNrJykge1xyXG4gICAgICAgICAgICAgICAgZWxlbS5zdHlsZS5jdXJzb3IgPSAncG9pbnRlcic7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBhZGRDbGlja0V2ZW50SGFuZGxlcnNUb0VsZW1lbnRzKGNsaWNrYWJsZUlkczogc3RyaW5nW10sIGV2ZW50dHlwZTogc3RyaW5nKSB7XHJcbiAgICAgICAgY29uc3QgbGlzdGVuZXJzID0gdGhpcy5yZW1vdmVPbGRTdGF0ZShldmVudHR5cGUpO1xyXG5cclxuICAgICAgICBpZiAoY2xpY2thYmxlSWRzKSB7XHJcbiAgICAgICAgICAgIGNsaWNrYWJsZUlkcy5mb3JFYWNoKHB1aWMgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZWxlbWVudHMgPSB0aGlzLnB1aWNIZWxwZXIuZ2V0QWxsRWxlbWVudHNGb3JQdWljKHB1aWMpO1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudCkgPT4gdGhpcy5hZGRDbGlja0V2ZW50SGFuZGxlcnNUb0VsZW1lbnQobGlzdGVuZXJzLCBlbGVtZW50LCBldmVudHR5cGUsIHB1aWMpKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYWRkTW91c2VvdmVyRXZlbnRIYW5kbGVyVG9FbGVtZW50cygpIHtcclxuICAgICAgICBjb25zdCBsaXN0ZW5lcnMgPSB0aGlzLnJlbW92ZU9sZFN0YXRlKCdtb3VzZW92ZXInKTtcclxuICAgICAgICBpZiAodGhpcy5wb3BvdmVySW5mb3MpIHtcclxuICAgICAgICAgICAgdGhpcy5wb3BvdmVySW5mb3MuZm9yRWFjaChwb3BvdmVySW5mbyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcG9wb3ZlckluZm8ucHVpY0FycmF5LmZvckVhY2gocHVpYyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlbGVtcyA9IHRoaXMucHVpY0hlbHBlci5nZXRBbGxFbGVtZW50c0ZvclB1aWMocHVpYyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGVsZW1zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZm4gPSAoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBvcG92ZXJIdG1sQ29udGVudCA9IHBvcG92ZXJJbmZvLnBvcG92ZXJIdG1sQ29udGVudDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3BvdmVyVGl0bGVDb250ZW50ID0gcG9wb3ZlckluZm8ucG9wb3ZlclRpdGxlQ29udGVudDtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZSB0aW1lb3V0IHRvIGhhdmUgY29udGVudCByZW5kZXJlZCBiZWZvcmUgZ2V0dGluZyBzaXplXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5zaG93UG9wdXAoZSksIDApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVsZW0gPSBlbGVtcy5pdGVtKGkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RlbmVycy5zZXQoZWxlbSwgZm4pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW0uYWRkRXZlbnRMaXN0ZW5lcignbW91c2VvdmVyJywgZm4pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjb25jYXRlbmF0ZVN2Z3Moc3Znczogc3RyaW5nW10pOiBzdHJpbmcge1xyXG4gICAgICAgIGxldCBzdmdDb250ZW50ID0gJyc7XHJcblxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSB0aGlzLnN2Z0luZm8ubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc3Qgc291cmNlQ29vcmRpbmF0ZXMgPSB0aGlzLnN2Z0luZm9baV0uY29vcmRpbmF0ZXMgfHwgbmV3IFBvaW50KDAsIDApO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcblxyXG4gICAgICAgICAgICAvKiogVmVyd2lqZGVyIGRnbi5jc3MgaW1wb3J0IHVpdCBnZWxldmVyZGUgU1ZHJ3MuXHJcbiAgICAgICAgICAgICAqICBEZSBpbXBvcnQgd29yZHQgb3B0aW9uZWVsIChzdGFuZGFhcmQgYWFuKSBpbiBkZSByb290IFNWRyBnZXBsYWF0cyBvbSB0ZSB2b29ya29tZW4gZGF0IGRlIGltcG9ydCBtZWVybWFhbHMgZ2ViZXVyZC5cclxuICAgICAgICAgICAgICogIHppZSBhZGRTdHlsZVRvUm9vdFN2ZygpXHJcbiAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICBkaXYuaW5uZXJIVE1MID0gc3Znc1tpXS5yZXBsYWNlKCdAaW1wb3J0IHVybChcImRnbi5jc3NcIik7JywgJycpO1xyXG4gICAgICAgICAgICBkaXYuZmlyc3RFbGVtZW50Q2hpbGQuc2V0QXR0cmlidXRlKCd4Jywgc291cmNlQ29vcmRpbmF0ZXMueC50b1N0cmluZygpKTtcclxuICAgICAgICAgICAgZGl2LmZpcnN0RWxlbWVudENoaWxkLnNldEF0dHJpYnV0ZSgneScsIHNvdXJjZUNvb3JkaW5hdGVzLnkudG9TdHJpbmcoKSk7XHJcblxyXG4gICAgICAgICAgICBzdmdDb250ZW50ICs9IGRpdi5pbm5lckhUTUw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gc3ZnQ29udGVudDtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGZsYWdFcnJvcnMoZXJyb3IpIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgICAgdGhpcy5lcnJvcnMgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcmVtb3ZlT2xkU3RhdGUoZXZlbnRUeXBlOiBzdHJpbmcpOiBNYXA8RWxlbWVudCwgYW55PiB7XHJcbiAgICAgICAgbGV0IGxpc3RlbmVycyA9IHRoaXMuZXZlbnRMaXN0ZW5lcnMuZ2V0KGV2ZW50VHlwZSk7XHJcbiAgICAgICAgaWYgKGxpc3RlbmVycykge1xyXG4gICAgICAgICAgICBsaXN0ZW5lcnMuZm9yRWFjaCgoZm4sIGVsKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgZm4pO1xyXG4gICAgICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKCdzdHlsZScsIElteFZpZXdlckNvbXBvbmVudC5zZXREZWZhdWx0Q3Vyc29yKGVsKSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsaXN0ZW5lcnMgPSBuZXcgTWFwKCk7XHJcbiAgICAgICAgdGhpcy5ldmVudExpc3RlbmVycy5zZXQoZXZlbnRUeXBlLCBsaXN0ZW5lcnMpO1xyXG4gICAgICAgIHJldHVybiBsaXN0ZW5lcnM7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzZWxlY3RFbGVtZW50cygpIHtcclxuICAgICAgICBjb25zdCBhbGxFbGVtcyA9IHRoaXMuZ2V0U3ZnUGFyZW50KCkucXVlcnlTZWxlY3RvckFsbCgnW2NsYXNzKj1pbXh2aWV3LXNlbGVjdGVkXScpO1xyXG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgYWxsRWxlbXMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgQ2xhc3Nlc1V0aWwucmVtb3ZlQ2xhc3Nlc1N0YXJ0aW5nV2l0aChhbGxFbGVtc1tqXSwgJ2lteHZpZXctc2VsZWN0ZWQnKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGllSW5mb3MpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RpZUluZm9zLmZvckVhY2goc2VsZWN0aWVJbmZvID0+IHtcclxuICAgICAgICAgICAgICAgIHNlbGVjdGllSW5mby5pZHMuZm9yRWFjaChpZCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wdWljSGVscGVyLmdldEFsbEVsZW1lbnRzRm9yUHVpYyhpZCkuZm9yRWFjaChlbGVtID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3Nlc1V0aWwuYWRkQ2xhc3MoZWxlbSwgJ2lteHZpZXctc2VsZWN0ZWQnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCcnICE9PSBzZWxlY3RpZUluZm8uY2xhenopIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzZXNVdGlsLmFkZENsYXNzKGVsZW0sICdpbXh2aWV3LXNlbGVjdGVkLScgKyBzZWxlY3RpZUluZm8uY2xhenopO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc3RhdGljIHNldERlZmF1bHRDdXJzb3IoZWwpOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IG91ZGVTdHlsZSA9IGVsLmdldEF0dHJpYnV0ZSgnc3R5bGUnKTtcclxuICAgICAgICByZXR1cm4gb3VkZVN0eWxlID8gb3VkZVN0eWxlLnJlcGxhY2UoJ3BvaW50ZXInLCAnZGVmYXVsdCcpIDogJ2N1cnNvcjogZGVmYXVsdCc7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzaG93UG9wdXAoZSkge1xyXG4gICAgICAgIGNvbnN0IHBvcG92ZXJFbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BvcG92ZXInKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgICAgICBjb25zdCBsZWZ0ID0gZS5sYXllclggLSAocG9wb3ZlckVsZW0ud2lkdGggLyAyKSArICdweCc7XHJcbiAgICAgICAgY29uc3QgdG9wID0gZS5sYXllclkgLSAocG9wb3ZlckVsZW0uaGVpZ2h0ICsgOCkgKyAncHgnO1xyXG4gICAgICAgIHRoaXMucG9wb3ZlclN0eWxlID0ge1xyXG4gICAgICAgICAgICBsZWZ0OiBsZWZ0LCB0b3A6IHRvcCwgcG9zaXRpb246ICdhYnNvbHV0ZScsXHJcbiAgICAgICAgICAgIGRpc3BsYXk6ICdpbmxpbmUnLCB2aXNpYmlsaXR5OiAndmlzaWJsZSdcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgdXBkYXRlRG9tKHN2ZzogU3RyaW5nKSB7XHJcbiAgICAgICAgY29uc3Qgc3ZnR3JvdXAgPSB0aGlzLmdldFN2Z1BhcmVudCgpLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3N2Zy1wYW4tem9vbV92aWV3cG9ydCcpWzBdO1xyXG4gICAgICAgIHN2Z0dyb3VwLmlubmVySFRNTCA9IHN2Zy5zdWJzdHJpbmcoc3ZnLmluZGV4T2YoJzxzdmcnKSk7XHJcbiAgICAgICAgdGhpcy5zdmdQYW5ab29tUmVmLnVwZGF0ZUJCb3goKTtcclxuICAgICAgICB0aGlzLnN2Z1Bhblpvb21SZWYuY2VudGVyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBkZWxheWVkQ2xpY2tBcmVhQ3JlYXRpb24oKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc3ZnR2VsYWRlbiAmJiB0aGlzLnVzZUNsaWNrQXJlYSkge1xyXG4gICAgICAgICAgICBjb25zdCBjbGlja2FyZWFJZHMgPSBuZXcgU2V0KFsuLi50aGlzLmNsaWNrYWJsZUlkcywgLi4udGhpcy5yaWdodENsaWNrYWJsZUlkcyxcclxuICAgICAgICAgICAgICAgIC4uLnRoaXMucG9wb3ZlckluZm9zLmZsYXRNYXAocGkgPT4gcGkucHVpY0FycmF5KV0pO1xyXG4gICAgICAgICAgICB0aGlzLmNsaWNrQXJlYVNlcnZpY2UuZGVsYXllZENsaWNrQXJlYUNyZWF0aW9uKGNsaWNrYXJlYUlkcyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0U3ZnUGFyZW50ID0gKCkgPT4gdGhpcy5zdmdQYXJlbnRSZWYubmF0aXZlRWxlbWVudDtcclxufVxyXG4iXX0=
292
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW14LXZpZXdlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiL2xvY2FsL2hvbWUvbG94aWEvamVua2luc19ic18xLjIvd29ya3NwYWNlL3ZpZXdlcl9zdmctaW14LXZpZXdlci1jaV9kZXZlbG9wL3NyYy8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvaW14LXZpZXdlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFDSCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUdMLE1BQU0sRUFFTixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxLQUFLLE9BQU8sTUFBTSxTQUFTLENBQUM7QUFDbkMsT0FBTyxFQUFFLGFBQWEsRUFBYyxFQUFFLElBQUksWUFBWSxFQUFFLFVBQVUsSUFBSSxvQkFBb0IsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN6RyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxLQUFLLFVBQVUsTUFBTSxjQUFjLENBQUM7QUFDM0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDakUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDcEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXZDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUl4RCxNQUFNLFdBQVcsR0FBRyxVQUFVLENBQUMsQ0FBQywrRUFB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QUMsQ0FBQyxDQUFDLENBQUM7WUFDdkQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLHdCQUF3QixDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQ2hFO0lBQ0wsQ0FBQzs7O1lBaFRKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsWUFBWTtnQkFDdEIsNGtCQUEwQzs7YUFFN0M7Ozs0Q0EyQmdCLE1BQU0sU0FBQyxhQUFhO1lBN0Q1QixVQUFVO1lBaUJWLGdCQUFnQjtZQUNoQixpQkFBaUI7OzsyQkFrQnJCLEtBQUs7aUNBQ0wsS0FBSztzQkFDTCxLQUFLOzRCQUNMLEtBQUs7MkJBR0wsS0FBSztnQ0FDTCxLQUFLOzJCQUNMLEtBQUs7MkJBRUwsU0FBUyxTQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7MkJBT3ZDLE1BQU07Z0NBQ04sTUFBTTt3QkFDTixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHtcclxuICAgIENvbXBvbmVudCxcclxuICAgIEVsZW1lbnRSZWYsXHJcbiAgICBFdmVudEVtaXR0ZXIsXHJcbiAgICBJbmplY3QsXHJcbiAgICBJbnB1dCxcclxuICAgIE9uQ2hhbmdlcyxcclxuICAgIE9uSW5pdCxcclxuICAgIE91dHB1dCxcclxuICAgIFNpbXBsZUNoYW5nZXMsXHJcbiAgICBWaWV3Q2hpbGRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0ICogYXMgZGF0YVVybCBmcm9tICdkYXRhdXJsJztcclxuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgb2YgYXMgb2JzZXJ2YWJsZU9mLCB0aHJvd0Vycm9yIGFzIG9ic2VydmFibGVUaHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCAqIGFzIFN2Z1Bhblpvb20gZnJvbSAnc3ZnLXBhbi16b29tJztcclxuaW1wb3J0IHsgQ2xpY2thcmVhU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2NsaWNrYXJlYS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUHVpY0hlbHBlclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9wdWljLWhlbHBlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ2xhc3Nlc1V0aWwgfSBmcm9tICcuLi91dGlscy9jbGFzc2VzLXV0aWwnO1xyXG5pbXBvcnQgeyBEb2N1bWVudFRva2VuIH0gZnJvbSAnLi4vdXRpbHMvZG9jdW1lbnQtdG9rZW4nO1xyXG5pbXBvcnQgeyBGb2N1c1V0aWwgfSBmcm9tICcuLi91dGlscy9mb2N1cy11dGlsJztcclxuaW1wb3J0IHsgUG9pbnQgfSBmcm9tICcuLi9tb2RlbC9wb2ludCc7XHJcbmltcG9ydCB7IFBvcG92ZXJJbmZvIH0gZnJvbSAnLi4vbW9kZWwvcG9wb3Zlci1pbmZvJztcclxuaW1wb3J0IHsgU2VsZWN0aWVFdmVudCB9IGZyb20gJy4uL21vZGVsL3NlbGVjdGllLWV2ZW50JztcclxuaW1wb3J0IHsgU2VsZWN0aWVJbmZvIH0gZnJvbSAnLi4vbW9kZWwvc2VsZWN0aWUtaW5mbyc7XHJcbmltcG9ydCB7IFN2Z0luZm8gfSBmcm9tICcuLi9tb2RlbC9zdmctaW5mbyc7XHJcblxyXG5jb25zdCBfc3ZnUGFuWm9vbSA9IFN2Z1Bhblpvb207IC8vIHZpYSBhbmRlcmUgdmFyaWFiZWxlIHpvZGF0IG5nLXBhY2tnci9yb2xsdXAgZ2VlbiBlcnJvciBnZWVmdCBiaWogZGUgYWFubnJvZXBcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdpbXgtdmlld2VyJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9pbXgtdmlld2VyLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2lteC12aWV3ZXIuY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbXhWaWV3ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCB7XHJcbiAgICBASW5wdXQoKSB1c2VDbGlja0FyZWEgPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIGlubGluZURnbkNzc0ltcG9ydCA9IHRydWU7XHJcbiAgICBASW5wdXQoKSBzdmdJbmZvOiBTdmdJbmZvW107XHJcbiAgICBASW5wdXQoKSBzZWxlY3RpZUluZm9zOiBTZWxlY3RpZUluZm9bXSA9IFtdO1xyXG5cclxuICAgIC8vIE9uZGVyc3RhYW5kZSBpbnB1dHMgd29yZGVuIG1lZWdlbm9tZW4gdm9vciBjbGlja2FyZWE6XHJcbiAgICBASW5wdXQoKSBjbGlja2FibGVJZHM6IHN0cmluZ1tdID0gW107XHJcbiAgICBASW5wdXQoKSByaWdodENsaWNrYWJsZUlkczogc3RyaW5nW10gPSBbXTtcclxuICAgIEBJbnB1dCgpIHBvcG92ZXJJbmZvczogUG9wb3ZlckluZm9bXSA9IFtdO1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ3N2Z1BhcmVudCcsIHsgc3RhdGljOiB0cnVlIH0pIHN2Z1BhcmVudFJlZjogRWxlbWVudFJlZjtcclxuXHJcbiAgICBlcnJvcnMgPSBmYWxzZTtcclxuICAgIHBvcG92ZXJTdHlsZTogYW55ID0geyBkaXNwbGF5OiAnaW5saW5lJyB9O1xyXG4gICAgcG9wb3Zlckh0bWxDb250ZW50ID0gJyc7XHJcbiAgICBwb3BvdmVyVGl0bGVDb250ZW50OiBzdHJpbmc7XHJcblxyXG4gICAgQE91dHB1dCgpIGNsaWNrSGFuZGxlciA9IG5ldyBFdmVudEVtaXR0ZXI8U2VsZWN0aWVFdmVudD4oKTtcclxuICAgIEBPdXRwdXQoKSByaWdodENsaWNrSGFuZGxlciA9IG5ldyBFdmVudEVtaXR0ZXI8U2VsZWN0aWVFdmVudD4oKTtcclxuICAgIEBPdXRwdXQoKSBzdmdMb2FkZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gICAgcHJpdmF0ZSBzdmdHZWxhZGVuID0gZmFsc2U7XHJcbiAgICBwcml2YXRlIGV2ZW50TGlzdGVuZXJzOiBNYXA8c3RyaW5nLCBNYXA8RWxlbWVudCwgYW55Pj4gPSBuZXcgTWFwKCk7XHJcbiAgICBwcml2YXRlIHN2Z1Bhblpvb21SZWY6IFN2Z1Bhblpvb20uSW5zdGFuY2U7XHJcblxyXG4gICAgY29uc3RydWN0b3IoQEluamVjdChEb2N1bWVudFRva2VuKSBwcml2YXRlIGRvY3VtZW50OiBhbnksIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgY2xpY2tBcmVhU2VydmljZTogQ2xpY2thcmVhU2VydmljZSwgcHJpdmF0ZSBwdWljSGVscGVyOiBQdWljSGVscGVyU2VydmljZSkge1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIHRoaXMuY3JlYXRlU3ZnUGFuWm9vbVJlZklmTm90RXhpc3RzKCk7XHJcbiAgICAgICAgdGhpcy5wdWljSGVscGVyLnNldFJvb3RTdmcodGhpcy5nZXRTdmdQYXJlbnQoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgICAgIC8vIElmIElteC12aWV3ZXIgaXMgaW5pdGlhbGl6ZWQgd2l0aCBzdmdJbmZvLCBuZ09uQ2hhbmdlcyBpcyBjYWxsZWQgYmVmb3JlIG5nT25Jbml0LlxyXG4gICAgICAgIC8vIEluIHRoYXQgY2FzZSB3ZSBuZWVkIHRvIGNyZWF0ZSBzdmdQYW5ab29tUmVmIGhlcmUuXHJcbiAgICAgICAgdGhpcy5jcmVhdGVTdmdQYW5ab29tUmVmSWZOb3RFeGlzdHMoKTtcclxuXHJcbiAgICAgICAgY29uc3QgeyB1c2VDbGlja0FyZWEsIGNsaWNrYWJsZUlkcywgcmlnaHRDbGlja2FibGVJZHMsIHBvcG92ZXJJbmZvcywgc2VsZWN0aWVJbmZvcywgc3ZnSW5mbyB9ID0gY2hhbmdlcztcclxuXHJcbiAgICAgICAgaWYgKHVzZUNsaWNrQXJlYSB8fCBjbGlja2FibGVJZHMgfHwgcmlnaHRDbGlja2FibGVJZHMgfHwgcG9wb3ZlckluZm9zKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGVsYXllZENsaWNrQXJlYUNyZWF0aW9uKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5zdmdJbmZvICYmIHN2Z0luZm8pIHtcclxuICAgICAgICAgICAgdGhpcy5sb2FkU3ZncygpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuY2xpY2thYmxlSWRzICYmIGNsaWNrYWJsZUlkcyAmJiB0aGlzLnN2Z0dlbGFkZW4pIHtcclxuICAgICAgICAgICAgdGhpcy5hZGRDbGlja0V2ZW50SGFuZGxlcnNUb0VsZW1lbnRzKHRoaXMuY2xpY2thYmxlSWRzLCAnY2xpY2snKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnJpZ2h0Q2xpY2thYmxlSWRzICYmIHJpZ2h0Q2xpY2thYmxlSWRzICYmIHRoaXMuc3ZnR2VsYWRlbikge1xyXG4gICAgICAgICAgICB0aGlzLmFkZENsaWNrRXZlbnRIYW5kbGVyc1RvRWxlbWVudHModGhpcy5yaWdodENsaWNrYWJsZUlkcywgJ2NvbnRleHRtZW51Jyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5zZWxlY3RpZUluZm9zICYmIHNlbGVjdGllSW5mb3MgJiYgdGhpcy5zdmdHZWxhZGVuKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0RWxlbWVudHMoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnBvcG92ZXJJbmZvcyAmJiBwb3BvdmVySW5mb3MgJiYgdGhpcy5zdmdHZWxhZGVuKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW91c2VvdmVyRXZlbnRIYW5kbGVyVG9FbGVtZW50cygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZm9jdXNPbklkcyhmb2N1c0lkczogc3RyaW5nW10pIHtcclxuICAgICAgICBGb2N1c1V0aWwuZm9jdXNPbklkcyhmb2N1c0lkcywgdGhpcy5zdmdQYW5ab29tUmVmLCB0aGlzLnB1aWNIZWxwZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRTdmdQYW5ab29tSW5zdGFuY2U6ICgpID0+IFN2Z1Bhblpvb20uSW5zdGFuY2UgPSAoKSA9PiB0aGlzLnN2Z1Bhblpvb21SZWY7XHJcblxyXG4gICAgLy8gSGVyZSBvbmx5IHVzZWQgaW4gdGVzdCwgYnV0IGFsc28gdXNlZCBieSBhcHBsaWNhdGlvbnMuIERvIG5vdCByZW1vdmUuXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldFhDb29yZGluYXRlKGRlY29kZWRTdmdEYXRhVXJsOiBzdHJpbmcpIHtcclxuICAgICAgICBsZXQgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgICAgZGl2LmlubmVySFRNTCA9IGRlY29kZWRTdmdEYXRhVXJsO1xyXG4gICAgICAgIC8vIERlIFNWRy13aWR0aCB3b3JkdCBpbiBkZSBzdmcgdGFnIGdlc3BlY2lmaWNlZXJkLlxyXG4gICAgICAgIGNvbnN0IHggPSBkaXYuZmlyc3RFbGVtZW50Q2hpbGQuZ2V0QXR0cmlidXRlKCd3aWR0aCcpO1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHBhcnNlRmxvYXQoeCk7XHJcbiAgICAgICAgZGl2ID0gbnVsbDtcclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIGhpZGVQb3BPdmVyID0gKCkgPT4gdGhpcy5wb3BvdmVyU3R5bGUudmlzaWJpbGl0eSA9ICdoaWRkZW4nO1xyXG5cclxuICAgIHByaXZhdGUgY3JlYXRlU3ZnUGFuWm9vbVJlZklmTm90RXhpc3RzKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5zdmdQYW5ab29tUmVmKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3ZnUGFuWm9vbVJlZiA9IF9zdmdQYW5ab29tKHRoaXMuZ2V0U3ZnUGFyZW50KCksIHtcclxuICAgICAgICAgICAgICAgIGZpdDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBjZW50ZXI6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBkYmxDbGlja1pvb21FbmFibGVkOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIG9uWm9vbTogKCkgPT4gdGhpcy5oaWRlUG9wT3ZlcigpLFxyXG4gICAgICAgICAgICAgICAgb25QYW46ICgpID0+IHRoaXMuaGlkZVBvcE92ZXIoKVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuYWRkU3R5bGVUb1Jvb3RTdmcoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTdHlsZSB3b3JkdCB2YW51aXQgamF2YXNjcmlwdCB0b2VnZXZvZWdkIG5hIGRlIGNyZWF0ZSB2YW4gU3ZnWm9vbVBhblJlZiBkZXplIG1hYWt0IGVlbiB2aWV3cG9ydCBhYW4uXHJcbiAgICAgKiAtIENsaWNrYXJlYSBDU1Mgd29yZHQgZHluYW1pc2NoIGFhbiBkZSBTVkcgdG9lZ2V2b2VnZCwgZGl0IHZvb3Jrb210IGRhdCBkYXQgZXIgbmdjb250ZW50IHByb3BlcnR5IG9wIGdlcGxhYXRzdCB3b3JkdC5cclxuICAgICAqICAgRGUgU1ZHJ3Mgd29yZGVuIG5pZXQgdm9vcnppZW4gdmFuIG5nY29udGVudCBhdHRyaWJ1dXQuXHJcbiAgICAgKiAtIERHTi5jc3MgaW1wb3J0IHdvcmR0IChvcHRpb25lZWwpIGluIGRlIHJvb3QgU1ZHIG9wZ2Vub21lbiwgZGV6ZSBpcyBlZXJzdCB2ZXJ3aWpkZXJkIHVpdCBkZSBTVkcncy4gT20gbWVlcmRlcmUgaW1wb3J0cyB0ZSB2b29ya29tZW4uXHJcbiAgICAgKiAqL1xyXG4gICAgcHJpdmF0ZSBhZGRTdHlsZVRvUm9vdFN2ZygpIHtcclxuICAgICAgICBjb25zdCBkZWZzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycsICdkZWZzJyk7XHJcblxyXG4gICAgICAgIGxldCBzdHlsZSA9IHRoaXMuaW5saW5lRGduQ3NzSW1wb3J0ID8gJ0BpbXBvcnQgdXJsKFwiZGduLmNzc1wiKTtcXG4nIDogJyc7XHJcbiAgICAgICAgc3R5bGUgKz1cclxuICAgICAgICAgICAgYC5pbXh2aWV3LXNlbGVjdGVkID4gcG9seWxpbmUuaW14dmlldy1jbGlja2FyZWEsIHBvbHlsaW5lLmlteHZpZXctY2xpY2thcmVhIHtcclxuICAgICAgICAgICAgICAgIHN0cm9rZTogdmFyKC0taW14dmlldy1jbGlja2FyZWEtc3Ryb2tlLCB0cmFuc3BhcmVudCk7XHJcbiAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg6IHZhcigtLWlteHZpZXctY2xpY2thcmVhLXN0cm9rZS13aWR0aCwgMTBweCk7XHJcbiAgICAgICAgICAgICAgICBzdHJva2UtZGFzaGFycmF5OiBub25lO1xyXG4gICAgICAgICAgICB9YDtcclxuICAgICAgICBkZWZzLmlubmVySFRNTCA9XHJcbiAgICAgICAgICAgIGA8c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+XHJcbiAgICAgICAgICAgICAgICAkeyBzdHlsZSB9XHJcbiAgICAgICAgICAgIDwvc3R5bGU+YDtcclxuICAgICAgICBjb25zdCBmaXJzdEVsZW1lbnRDaGlsZCA9IHRoaXMuZ2V0U3ZnUGFyZW50KCkuZmlyc3RFbGVtZW50Q2hpbGQ7XHJcbiAgICAgICAgdGhpcy5nZXRTdmdQYXJlbnQoKS5pbnNlcnRCZWZvcmUoZGVmcywgZmlyc3RFbGVtZW50Q2hpbGQpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgbG9hZFN2Z3MoKTogdm9pZCB7XHJcbiAgICAgICAgY29tYmluZUxhdGVzdCh0aGlzLnN2Z0luZm8ubWFwKHN2Z0luZm8gPT4gdGhpcy5sb2FkU3ZnKHN2Z0luZm8uc3ZnKSkpXHJcbiAgICAgICAgLnBpcGUodGFrZSgxKSlcclxuICAgICAgICAuc3Vic2NyaWJlKHN2Z3MgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgc3ZnID0gdGhpcy5jb25jYXRlbmF0ZVN2Z3Moc3Zncyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZURvbShzdmcpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdmdHZWxhZGVuID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3ZnTG9hZGVkLmVtaXQoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZGVsYXllZENsaWNrQXJlYUNyZWF0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFkZENsaWNrRXZlbnRIYW5kbGVyc1RvRWxlbWVudHModGhpcy5jbGlja2FibGVJZHMsICdjbGljaycpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hZGRDbGlja0V2ZW50SGFuZGxlcnNUb0VsZW1lbnRzKHRoaXMucmlnaHRDbGlja2FibGVJZHMsICdjb250ZXh0bWVudScpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RFbGVtZW50cygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hZGRNb3VzZW92ZXJFdmVudEhhbmRsZXJUb0VsZW1lbnRzKCk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGVycm9yID0+IHRoaXMuZmxhZ0Vycm9ycyhlcnJvcilcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgbG9hZFN2ZyhzdmdTcmM6IHN0cmluZyk6IE9ic2VydmFibGU8c3RyaW5nPiB7XHJcbiAgICAgICAgaWYgKHN2Z1NyYy5zdGFydHNXaXRoKCdkYXRhOicpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHBhcnNlZCA9IGRhdGFVcmwucGFyc2Uoc3ZnU3JjKTtcclxuICAgICAgICAgICAgaWYgKHBhcnNlZCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG9ic2VydmFibGVPZihwYXJzZWQuZGF0YS50b1N0cmluZygpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gb2JzZXJ2YWJsZVRocm93RXJyb3IoJ0RhdGEtdXJsIHBhcnNlIGVycm9yJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldChzdmdTcmMsIHsgcmVzcG9uc2VUeXBlOiAndGV4dCcgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBhZGRDbGlja0V2ZW50SGFuZGxlcnNUb0VsZW1lbnQobGlzdGVuZXJzOiBNYXA8RWxlbWVudCwgYW55PiwgZWxlbSwgZXZlbnRUeXBlOiBzdHJpbmcsIHB1aWM6IHN0cmluZykge1xyXG4gICAgICAgIGNvbnN0IGVsZW1BbHJlYWR5SGFzTGlzdGVuZXIgPSBsaXN0ZW5lcnMuZ2V0KGVsZW0pO1xyXG4gICAgICAgIGlmICghZWxlbUFscmVhZHlIYXNMaXN0ZW5lcikge1xyXG4gICAgICAgICAgICBjb25zdCBmbiA9IGV2ZW50VHlwZSA9PT0gJ2NsaWNrJyA/XHJcbiAgICAgICAgICAgICAgICAoZSkgPT4gdGhpcy5jbGlja0hhbmRsZXIuZW1pdChuZXcgU2VsZWN0aWVFdmVudChwdWljLCBlKSkgOlxyXG4gICAgICAgICAgICAgICAgKGUpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yaWdodENsaWNrSGFuZGxlci5lbWl0KG5ldyBTZWxlY3RpZUV2ZW50KHB1aWMsIGUpKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBsaXN0ZW5lcnMuc2V0KGVsZW0sIGZuKTtcclxuICAgICAgICAgICAgZWxlbS5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgZm4pO1xyXG4gICAgICAgICAgICBpZiAoZXZlbnRUeXBlID09PSAnY2xpY2snKSB7XHJcbiAgICAgICAgICAgICAgICBlbGVtLnN0eWxlLmN1cnNvciA9ICdwb2ludGVyJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGFkZENsaWNrRXZlbnRIYW5kbGVyc1RvRWxlbWVudHMoY2xpY2thYmxlSWRzOiBzdHJpbmdbXSwgZXZlbnR0eXBlOiBzdHJpbmcpIHtcclxuICAgICAgICBjb25zdCBsaXN0ZW5lcnMgPSB0aGlzLnJlbW92ZU9sZFN0YXRlKGV2ZW50dHlwZSk7XHJcblxyXG4gICAgICAgIGlmIChjbGlja2FibGVJZHMpIHtcclxuICAgICAgICAgICAgY2xpY2thYmxlSWRzLmZvckVhY2gocHVpYyA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBlbGVtZW50cyA9IHRoaXMucHVpY0hlbHBlci5nZXRBbGxFbGVtZW50c0ZvclB1aWMocHVpYyk7XHJcbiAgICAgICAgICAgICAgICBlbGVtZW50cy5mb3JFYWNoKChlbGVtZW50KSA9PiB0aGlzLmFkZENsaWNrRXZlbnRIYW5kbGVyc1RvRWxlbWVudChsaXN0ZW5lcnMsIGVsZW1lbnQsIGV2ZW50dHlwZSwgcHVpYykpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBhZGRNb3VzZW92ZXJFdmVudEhhbmRsZXJUb0VsZW1lbnRzKCkge1xyXG4gICAgICAgIGNvbnN0IGxpc3RlbmVycyA9IHRoaXMucmVtb3ZlT2xkU3RhdGUoJ21vdXNlb3ZlcicpO1xyXG4gICAgICAgIGlmICh0aGlzLnBvcG92ZXJJbmZvcykge1xyXG4gICAgICAgICAgICB0aGlzLnBvcG92ZXJJbmZvcy5mb3JFYWNoKHBvcG92ZXJJbmZvID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBwb3BvdmVySW5mby5wdWljQXJyYXkuZm9yRWFjaChwdWljID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1zID0gdGhpcy5wdWljSGVscGVyLmdldEFsbEVsZW1lbnRzRm9yUHVpYyhwdWljKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZWxlbXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmbiA9IChlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucG9wb3Zlckh0bWxDb250ZW50ID0gcG9wb3ZlckluZm8ucG9wb3Zlckh0bWxDb250ZW50O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBvcG92ZXJUaXRsZUNvbnRlbnQgPSBwb3BvdmVySW5mby5wb3BvdmVyVGl0bGVDb250ZW50O1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXNlIHRpbWVvdXQgdG8gaGF2ZSBjb250ZW50IHJlbmRlcmVkIGJlZm9yZSBnZXR0aW5nIHNpemVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnNob3dQb3B1cChlKSwgMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWxlbSA9IGVsZW1zLml0ZW0oaSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdGVuZXJzLnNldChlbGVtLCBmbik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW92ZXInLCBmbik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNvbmNhdGVuYXRlU3ZncyhzdmdzOiBzdHJpbmdbXSk6IHN0cmluZyB7XHJcbiAgICAgICAgbGV0IHN2Z0NvbnRlbnQgPSAnJztcclxuXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHRoaXMuc3ZnSW5mby5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCBzb3VyY2VDb29yZGluYXRlcyA9IHRoaXMuc3ZnSW5mb1tpXS5jb29yZGluYXRlcyB8fCBuZXcgUG9pbnQoMCwgMCk7XHJcblxyXG4gICAgICAgICAgICBjb25zdCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuXHJcbiAgICAgICAgICAgIC8qKiBWZXJ3aWpkZXIgZGduLmNzcyBpbXBvcnQgdWl0IGdlbGV2ZXJkZSBTVkcncy5cclxuICAgICAgICAgICAgICogIERlIGltcG9ydCB3b3JkdCBvcHRpb25lZWwgKHN0YW5kYWFyZCBhYW4pIGluIGRlIHJvb3QgU1ZHIGdlcGxhYXRzIG9tIHRlIHZvb3Jrb21lbiBkYXQgZGUgaW1wb3J0IG1lZXJtYWFscyBnZWJldXJkLlxyXG4gICAgICAgICAgICAgKiAgemllIGFkZFN0eWxlVG9Sb290U3ZnKClcclxuICAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgIGRpdi5pbm5lckhUTUwgPSBzdmdzW2ldLnJlcGxhY2UoJ0BpbXBvcnQgdXJsKFwiZGduLmNzc1wiKTsnLCAnJyk7XHJcbiAgICAgICAgICAgIGRpdi5maXJzdEVsZW1lbnRDaGlsZC5zZXRBdHRyaWJ1dGUoJ3gnLCBzb3VyY2VDb29yZGluYXRlcy54LnRvU3RyaW5nKCkpO1xyXG4gICAgICAgICAgICBkaXYuZmlyc3RFbGVtZW50Q2hpbGQuc2V0QXR0cmlidXRlKCd5Jywgc291cmNlQ29vcmRpbmF0ZXMueS50b1N0cmluZygpKTtcclxuXHJcbiAgICAgICAgICAgIHN2Z0NvbnRlbnQgKz0gZGl2LmlubmVySFRNTDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBzdmdDb250ZW50O1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZmxhZ0Vycm9ycyhlcnJvcikge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgICB0aGlzLmVycm9ycyA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSByZW1vdmVPbGRTdGF0ZShldmVudFR5cGU6IHN0cmluZyk6IE1hcDxFbGVtZW50LCBhbnk+IHtcclxuICAgICAgICBsZXQgbGlzdGVuZXJzID0gdGhpcy5ldmVudExpc3RlbmVycy5nZXQoZXZlbnRUeXBlKTtcclxuICAgICAgICBpZiAobGlzdGVuZXJzKSB7XHJcbiAgICAgICAgICAgIGxpc3RlbmVycy5mb3JFYWNoKChmbiwgZWwpID0+IHtcclxuICAgICAgICAgICAgICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBmbik7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnRUeXBlID09PSAnY2xpY2snKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKCdzdHlsZScsIElteFZpZXdlckNvbXBvbmVudC5zZXREZWZhdWx0Q3Vyc29yKGVsKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsaXN0ZW5lcnMgPSBuZXcgTWFwKCk7XHJcbiAgICAgICAgdGhpcy5ldmVudExpc3RlbmVycy5zZXQoZXZlbnRUeXBlLCBsaXN0ZW5lcnMpO1xyXG4gICAgICAgIHJldHVybiBsaXN0ZW5lcnM7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzZWxlY3RFbGVtZW50cygpIHtcclxuICAgICAgICBjb25zdCBhbGxFbGVtcyA9IHRoaXMuZ2V0U3ZnUGFyZW50KCkucXVlcnlTZWxlY3RvckFsbCgnW2NsYXNzKj1pbXh2aWV3LXNlbGVjdGVkXScpO1xyXG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgYWxsRWxlbXMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgQ2xhc3Nlc1V0aWwucmVtb3ZlQ2xhc3Nlc1N0YXJ0aW5nV2l0aChhbGxFbGVtc1tqXSwgJ2lteHZpZXctc2VsZWN0ZWQnKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGllSW5mb3MpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RpZUluZm9zLmZvckVhY2goc2VsZWN0aWVJbmZvID0+IHtcclxuICAgICAgICAgICAgICAgIHNlbGVjdGllSW5mby5pZHMuZm9yRWFjaChpZCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wdWljSGVscGVyLmdldEFsbEVsZW1lbnRzRm9yUHVpYyhpZCkuZm9yRWFjaChlbGVtID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3Nlc1V0aWwuYWRkQ2xhc3MoZWxlbSwgJ2lteHZpZXctc2VsZWN0ZWQnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCcnICE9PSBzZWxlY3RpZUluZm8uY2xhenopIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzZXNVdGlsLmFkZENsYXNzKGVsZW0sICdpbXh2aWV3LXNlbGVjdGVkLScgKyBzZWxlY3RpZUluZm8uY2xhenopO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc3RhdGljIHNldERlZmF1bHRDdXJzb3IoZWwpOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IG91ZGVTdHlsZSA9IGVsLmdldEF0dHJpYnV0ZSgnc3R5bGUnKTtcclxuICAgICAgICByZXR1cm4gb3VkZVN0eWxlID8gb3VkZVN0eWxlLnJlcGxhY2UoJ3BvaW50ZXInLCAnZGVmYXVsdCcpIDogJ2N1cnNvcjogZGVmYXVsdCc7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzaG93UG9wdXAoZSkge1xyXG4gICAgICAgIGNvbnN0IHBvcG92ZXJFbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BvcG92ZXInKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgICAgICBjb25zdCBsZWZ0ID0gZS5sYXllclggLSAocG9wb3ZlckVsZW0ud2lkdGggLyAyKSArICdweCc7XHJcbiAgICAgICAgY29uc3QgdG9wID0gZS5sYXllclkgLSAocG9wb3ZlckVsZW0uaGVpZ2h0ICsgOCkgKyAncHgnO1xyXG4gICAgICAgIHRoaXMucG9wb3ZlclN0eWxlID0ge1xyXG4gICAgICAgICAgICBsZWZ0OiBsZWZ0LCB0b3A6IHRvcCwgcG9zaXRpb246ICdhYnNvbHV0ZScsXHJcbiAgICAgICAgICAgIGRpc3BsYXk6ICdpbmxpbmUnLCB2aXNpYmlsaXR5OiAndmlzaWJsZSdcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgdXBkYXRlRG9tKHN2ZzogU3RyaW5nKSB7XHJcbiAgICAgICAgY29uc3Qgc3ZnR3JvdXAgPSB0aGlzLmdldFN2Z1BhcmVudCgpLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3N2Zy1wYW4tem9vbV92aWV3cG9ydCcpWzBdO1xyXG4gICAgICAgIHN2Z0dyb3VwLmlubmVySFRNTCA9IHN2Zy5zdWJzdHJpbmcoc3ZnLmluZGV4T2YoJzxzdmcnKSk7XHJcbiAgICAgICAgdGhpcy5zdmdQYW5ab29tUmVmLnVwZGF0ZUJCb3goKTtcclxuICAgICAgICB0aGlzLnN2Z1Bhblpvb21SZWYuY2VudGVyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBkZWxheWVkQ2xpY2tBcmVhQ3JlYXRpb24oKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc3ZnR2VsYWRlbiAmJiB0aGlzLnVzZUNsaWNrQXJlYSkge1xyXG4gICAgICAgICAgICBjb25zdCBjbGlja2FyZWFJZHMgPSBuZXcgU2V0KFsuLi50aGlzLmNsaWNrYWJsZUlkcywgLi4udGhpcy5yaWdodENsaWNrYWJsZUlkcyxcclxuICAgICAgICAgICAgICAgIC4uLnRoaXMucG9wb3ZlckluZm9zLmZsYXRNYXAocGkgPT4gcGkucHVpY0FycmF5KV0pO1xyXG4gICAgICAgICAgICB0aGlzLmNsaWNrQXJlYVNlcnZpY2UuZGVsYXllZENsaWNrQXJlYUNyZWF0aW9uKGNsaWNrYXJlYUlkcyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0U3ZnUGFyZW50ID0gKCkgPT4gdGhpcy5zdmdQYXJlbnRSZWYubmF0aXZlRWxlbWVudDtcclxufVxyXG4iXX0=
@@ -60,4 +60,4 @@ export class FocusUtil {
60
60
  return rect;
61
61
  }
62
62
  }
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXMtdXRpbC5qcyIsInNvdXJjZVJvb3QiOiIvbG9jYWwvaG9tZS9sb3hpYS9qZW5raW5zX2JzXzEuMi93b3Jrc3BhY2Uvdmlld2VyX3N2Zy1pbXgtdmlld2VyLWNpX2RldmVsb3Avc3JjLyIsInNvdXJjZXMiOlsidXRpbHMvZm9jdXMtdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFOUMsTUFBTSxPQUFPLFNBQVM7SUFFWCxNQUFNLENBQUMsVUFBVSxDQUFDLFFBQWtCLEVBQUUsYUFBa0MsRUFBRSxVQUE2QjtRQUMxRyxJQUFJLFFBQVEsSUFBSSxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUVqQyxxREFBcUQ7WUFDckQsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUM3RCxNQUFNLFVBQVUsR0FBRyxZQUFZLENBQUMsVUFBMkIsQ0FBQztZQUM1RCxJQUFJLFVBQW1CLENBQUM7WUFDeEIsSUFBSSxVQUFVLElBQUksVUFBVSxDQUFDLFFBQVEsS0FBSyxLQUFLLEVBQUU7Z0JBQzdDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQ3BCLE1BQU0sS0FBSyxHQUE0QixVQUFVLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQzlFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO3dCQUNuQyxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsc0NBQXNDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBQy9FLFVBQVUsR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQztxQkFDL0Q7Z0JBQ0wsQ0FBQyxDQUFDLENBQUM7YUFDTjtZQUNELFNB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QUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3QyxJQUFJLE9BQU8sRUFBRTtZQUNULE1BQU0sa0JBQWtCLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM5QyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3RELElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FDekQ7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgU3ZnUGFuWm9vbSBmcm9tICdzdmctcGFuLXpvb20nO1xuaW1wb3J0IHsgUHVpY0hlbHBlclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9wdWljLWhlbHBlci5zZXJ2aWNlJztcbmltcG9ydCB7IFN2Z1JlY3RVdGlsIH0gZnJvbSAnLi9zdmctcmVjdC11dGlsJztcblxuZXhwb3J0IGNsYXNzIEZvY3VzVXRpbCB7XG5cbiAgICBwdWJsaWMgc3RhdGljIGZvY3VzT25JZHMoZm9jdXNJZHM6IHN0cmluZ1tdLCBzdmdQYW5ab29tUmVmOiBTdmdQYW5ab29tLkluc3RhbmNlLCBwdWljSGVscGVyOiBQdWljSGVscGVyU2VydmljZSkge1xuICAgICAgICBpZiAoZm9jdXNJZHMgJiYgZm9jdXNJZHMubGVuZ3RoID4gMCkge1xuXG4gICAgICAgICAgICAvLyBjYWxjdWxhdGUgdGhlIHVuaW9uIHJlY3RhbmdsZSBvZiBlbGVtZW50cyB3aXRoIGlkc1xuICAgICAgICAgICAgY29uc3Qgc3ZnQ29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N2Z0NvbnRhaW5lcicpO1xuICAgICAgICAgICAgY29uc3Qgcm9vdFN2Z0RvYyA9IHN2Z0NvbnRhaW5lci5maXJzdENoaWxkIGFzIFNWR1NWR0VsZW1lbnQ7XG4gICAgICAgICAgICBsZXQgcmVzdWx0UmVjdDogU1ZHUmVjdDtcbiAgICAgICAgICAgIGlmIChyb290U3ZnRG9jICYmIHJvb3RTdmdEb2Mubm9kZU5hbWUgPT09ICdzdmcnKSB7XG4gICAgICAgICAgICAgICAgZm9jdXNJZHMuZm9yRWFjaChwdWljID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZWxlbXM6IE5vZGVMaXN0T2Y8SFRNTEVsZW1lbnQ+ID0gcHVpY0hlbHBlci5nZXRBbGxFbGVtZW50c0ZvclB1aWMocHVpYyk7XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZWxlbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRSZWN0ID0gRm9jdXNVdGlsLmdldEVsZW1lbnRSZWN0YW5nbGVXaXRoTmVzdGVkU3ZnT2Zmc2V0KGVsZW1zW2ldKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFJlY3QgPSBTdmdSZWN0VXRpbC5yZWN0VW5pb24ocmVzdWx0UmVjdCwgZWxlbWVudFJlY3QpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBGb2N1c1V0aWwuZm9jdXNPblJlY3QocmVzdWx0UmVjdCwgc3ZnQ29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLCByb290U3ZnRG9jLCBzdmdQYW5ab29tUmVmKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHN0YXRpYyBmb2N1c09uUmVjdChyZWN0OiBTVkdSZWN0LCBlbGVtZW50UmVjdDogQ2xpZW50UmVjdCwgcm9vdFN2Z0RvYzogU1ZHU1ZHRWxlbWVudCwgc3ZnUGFuWm9vbVJlZjogYW55KSB7XG4gICAgICAgIGlmIChyZWN0KSB7XG4gICAgICAgICAgICAvLyBtYWtlIHN1cmUgd2UgYXJlIGluIHRoZSBzdmdwYW56b29tIHRyYW5zZm9ybWVkIGFyZWFcbiAgICAgICAgICAgIGNvbnN0IG1hdHJpeCA9IChyb290U3ZnRG9jLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3N2Zy1wYW4tem9vbV92aWV3cG9ydCcpWzBdIGFzIFNWR0dFbGVtZW50KS5nZXRTY3JlZW5DVE0oKTtcblxuICAgICAgICAgICAgLy8gZ2V0IGZyb20gc3ZnIGNvb3JkaW5hdGUgc3lzdGVtIHRvIHdlYnBhZ2UgY29vcmRpbmF0ZSBzeXN0ZW1cbiAgICAgICAgICAgIGNvbnN0IGxvY2F0aW9uID0gcm9vdFN2Z0RvYy5jcmVhdGVTVkdQb2ludCgpO1xuICAgICAgICAgICAgbG9jYXRpb24ueCA9IHJlY3QueCArIChyZWN0LndpZHRoIC8gMik7XG4gICAgICAgICAgICBsb2NhdGlvbi55ID0gcmVjdC55ICsgKHJlY3QuaGVpZ2h0IC8gMik7XG4gICAgICAgICAgICBjb25zdCB0cmFuc2Zvcm1lZExvY2F0aW9uID0gbG9jYXRpb24ubWF0cml4VHJhbnNmb3JtKG1hdHJpeCk7XG5cbiAgICAgICAgICAgIC8vIHRyYW5zZm9ybSB0aGUgcmVjdGFuZ2xlIGRpbWVuc2lvbiAod2UgaGF2ZSB0byB1c2UgYSBTVkdQb2ludCBzaW5jZSB0aGVyZSBpcyBubyBTVkdEaW1lbnNpb24pXG4gICAgICAgICAgICBjb25zdCBzaXplID0gcm9vdFN2Z0RvYy5jcmVhdGVTVkdQb2ludCgpO1xuICAgICAgICAgICAgc2l6ZS54ID0gcmVjdC53aWR0aDtcbiAgICAgICAgICAgIHNpemUueSA9IHJlY3QuaGVpZ2h0O1xuICAgICAgICAgICAgY29uc3QgdHJhbnNmb3JtZWRTaXplID0gc2l6ZS5tYXRyaXhUcmFuc2Zvcm0obWF0cml4LmludmVyc2UoKSk7XG5cbiAgICAgICAgICAgIC8vIHRlbCB0aGUgc3ZnUGFuWm9vbSB0byB6b29tIG9uIHRoZSByZWN0YW5nbGUgaW4gcmVsYXRpb24gdG8gdGhlIHRvdGFsIHZpZXcgc2l6ZVxuICAgICAgICAgICAgY29uc3Qgem9vbUZhY3RvciA9IE1hdGgubWluKDUsIGVsZW1lbnRSZWN0LmhlaWdodCAvIE1hdGguYWJzKHRyYW5zZm9ybWVkU2l6ZS55KSk7XG4gICAgICAgICAgICBzdmdQYW5ab29tUmVmLnpvb21BdFBvaW50KHpvb21GYWN0b3IsXG4gICAgICAgICAgICAgICAgeyB4OiB0cmFuc2Zvcm1lZExvY2F0aW9uLnggLSBlbGVtZW50UmVjdC5sZWZ0LCB5OiB0cmFuc2Zvcm1lZExvY2F0aW9uLnkgLSBlbGVtZW50UmVjdC50b3AgfSk7XG4gICAgICAgICAgICAvLyB0ZWwgdGhlIHN2Z1Bhblpvb20gdG8gcGFuIHRvIHRoZSBtaWRkZWwgb2YgdGhlIHJlY3RhbmdsZVxuICAgICAgICAgICAgc3ZnUGFuWm9vbVJlZi5wYW5CeSh7XG4gICAgICAgICAgICAgICAgeDogKGVsZW1lbnRSZWN0LndpZHRoIC8gMikgLSB0cmFuc2Zvcm1lZExvY2F0aW9uLngsXG4gICAgICAgICAgICAgICAgeTogKChlbGVtZW50UmVjdC5oZWlnaHQgKyBlbGVtZW50UmVjdC50b3ApIC8gMikgLSB0cmFuc2Zvcm1lZExvY2F0aW9uLnlcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgZ2V0RWxlbWVudFJlY3RhbmdsZVdpdGhOZXN0ZWRTdmdPZmZzZXQoZWxlbTogRWxlbWVudCk6IFNWR1JlY3Qge1xuICAgICAgICBjb25zdCBzdmdFbGVtID0gKDxTVkdHcmFwaGljc0VsZW1lbnQ+IGVsZW0pO1xuICAgICAgICBjb25zdCByZWN0ID0gc3ZnRWxlbS5nZXRCQm94KCk7XG5cbiAgICAgICAgd2hpbGUgKGVsZW0ucGFyZW50RWxlbWVudC5ub2RlTmFtZSAhPT0gJ3N2ZycpIHtcbiAgICAgICAgICAgIGVsZW0gPSBlbGVtLnBhcmVudEVsZW1lbnQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxlbSA9IGVsZW0ucGFyZW50RWxlbWVudDtcbiAgICAgICAgcmVjdC54ID0gcmVjdC54ICsgcGFyc2VJbnQoZWxlbS5nZXRBdHRyaWJ1dGUoJ3gnKSwgMTApO1xuICAgICAgICByZWN0LnkgPSByZWN0LnkgKyBwYXJzZUludChlbGVtLmdldEF0dHJpYnV0ZSgneScpLCAxMCk7XG4gICAgICAgIGNvbnN0IHZpZXdCb3ggPSBlbGVtLmdldEF0dHJpYnV0ZSgndmlld0JveCcpO1xuICAgICAgICBpZiAodmlld0JveCkge1xuICAgICAgICAgICAgY29uc3Qgdmlld0JveENvb3JkaW5hdGVzID0gdmlld0JveC5zcGxpdCgnICcpO1xuICAgICAgICAgICAgcmVjdC54ID0gcmVjdC54IC0gcGFyc2VJbnQodmlld0JveENvb3JkaW5hdGVzWzBdLCAxMCk7XG4gICAgICAgICAgICByZWN0LnkgPSByZWN0LnkgLSBwYXJzZUludCh2aWV3Qm94Q29vcmRpbmF0ZXNbMV0sIDEwKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVjdDtcbiAgICB9XG59XG4iXX0=
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXMtdXRpbC5qcyIsInNvdXJjZVJvb3QiOiIvbG9jYWwvaG9tZS9sb3hpYS9qZW5raW5zX2JzXzEuMi93b3Jrc3BhY2Uvdmlld2VyX3N2Zy1pbXgtdmlld2VyLWNpX2RldmVsb3Avc3JjLyIsInNvdXJjZXMiOlsidXRpbHMvZm9jdXMtdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFOUMsTUFBTSxPQUFPLFNBQVM7SUFFWCxNQUFNLENBQUMsVUFBVSxDQUFDLFFBQWtCLEVBQUUsYUFBa0MsRUFBRSxVQUE2QjtRQUMxRyxJQUFJLFFBQVEsSUFBSSxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUVqQyxxREFBcUQ7WUFDckQsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUM3RCxNQUFNLFVBQVUsR0FBRyxZQUFZLENBQUMsVUFBMkIsQ0FBQztZQUM1RCxJQUFJLFVBQW1CLENBQUM7WUFDeEIsSUFBSSxVQUFVLElBQUksVUFBVSxDQUFDLFFBQVEsS0FBSyxLQUFLLEVBQUU7Z0JBQzdDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQ3BCLE1BQU0sS0FBSyxHQUE0QixVQUFVLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQzlFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO3dCQUNuQyxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsc0NBQXNDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBQy9FLFVBQVUsR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQztxQkFDL0Q7Z0JBQ0wsQ0FBQyxDQUFDLENBQUM7YUFDTjtZQUNELFNB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QUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3QyxJQUFJLE9BQU8sRUFBRTtZQUNULE1BQU0sa0JBQWtCLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM5QyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3RELElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FDekQ7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBTdmdQYW5ab29tIGZyb20gJ3N2Zy1wYW4tem9vbSc7XG5pbXBvcnQgeyBQdWljSGVscGVyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3B1aWMtaGVscGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3ZnUmVjdFV0aWwgfSBmcm9tICcuL3N2Zy1yZWN0LXV0aWwnO1xuXG5leHBvcnQgY2xhc3MgRm9jdXNVdGlsIHtcblxuICAgIHB1YmxpYyBzdGF0aWMgZm9jdXNPbklkcyhmb2N1c0lkczogc3RyaW5nW10sIHN2Z1Bhblpvb21SZWY6IFN2Z1Bhblpvb20uSW5zdGFuY2UsIHB1aWNIZWxwZXI6IFB1aWNIZWxwZXJTZXJ2aWNlKSB7XG4gICAgICAgIGlmIChmb2N1c0lkcyAmJiBmb2N1c0lkcy5sZW5ndGggPiAwKSB7XG5cbiAgICAgICAgICAgIC8vIGNhbGN1bGF0ZSB0aGUgdW5pb24gcmVjdGFuZ2xlIG9mIGVsZW1lbnRzIHdpdGggaWRzXG4gICAgICAgICAgICBjb25zdCBzdmdDb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3ZnQ29udGFpbmVyJyk7XG4gICAgICAgICAgICBjb25zdCByb290U3ZnRG9jID0gc3ZnQ29udGFpbmVyLmZpcnN0Q2hpbGQgYXMgU1ZHU1ZHRWxlbWVudDtcbiAgICAgICAgICAgIGxldCByZXN1bHRSZWN0OiBTVkdSZWN0O1xuICAgICAgICAgICAgaWYgKHJvb3RTdmdEb2MgJiYgcm9vdFN2Z0RvYy5ub2RlTmFtZSA9PT0gJ3N2ZycpIHtcbiAgICAgICAgICAgICAgICBmb2N1c0lkcy5mb3JFYWNoKHB1aWMgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBlbGVtczogTm9kZUxpc3RPZjxIVE1MRWxlbWVudD4gPSBwdWljSGVscGVyLmdldEFsbEVsZW1lbnRzRm9yUHVpYyhwdWljKTtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlbGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWxlbWVudFJlY3QgPSBGb2N1c1V0aWwuZ2V0RWxlbWVudFJlY3RhbmdsZVdpdGhOZXN0ZWRTdmdPZmZzZXQoZWxlbXNbaV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0UmVjdCA9IFN2Z1JlY3RVdGlsLnJlY3RVbmlvbihyZXN1bHRSZWN0LCBlbGVtZW50UmVjdCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEZvY3VzVXRpbC5mb2N1c09uUmVjdChyZXN1bHRSZWN0LCBzdmdDb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksIHJvb3RTdmdEb2MsIHN2Z1Bhblpvb21SZWYpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc3RhdGljIGZvY3VzT25SZWN0KHJlY3Q6IFNWR1JlY3QsIGVsZW1lbnRSZWN0OiBDbGllbnRSZWN0LCByb290U3ZnRG9jOiBTVkdTVkdFbGVtZW50LCBzdmdQYW5ab29tUmVmOiBhbnkpIHtcbiAgICAgICAgaWYgKHJlY3QpIHtcbiAgICAgICAgICAgIC8vIG1ha2Ugc3VyZSB3ZSBhcmUgaW4gdGhlIHN2Z3Bhbnpvb20gdHJhbnNmb3JtZWQgYXJlYVxuICAgICAgICAgICAgY29uc3QgbWF0cml4ID0gKHJvb3RTdmdEb2MuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnc3ZnLXBhbi16b29tX3ZpZXdwb3J0JylbMF0gYXMgU1ZHR0VsZW1lbnQpLmdldFNjcmVlbkNUTSgpO1xuXG4gICAgICAgICAgICAvLyBnZXQgZnJvbSBzdmcgY29vcmRpbmF0ZSBzeXN0ZW0gdG8gd2VicGFnZSBjb29yZGluYXRlIHN5c3RlbVxuICAgICAgICAgICAgY29uc3QgbG9jYXRpb24gPSByb290U3ZnRG9jLmNyZWF0ZVNWR1BvaW50KCk7XG4gICAgICAgICAgICBsb2NhdGlvbi54ID0gcmVjdC54ICsgKHJlY3Qud2lkdGggLyAyKTtcbiAgICAgICAgICAgIGxvY2F0aW9uLnkgPSByZWN0LnkgKyAocmVjdC5oZWlnaHQgLyAyKTtcbiAgICAgICAgICAgIGNvbnN0IHRyYW5zZm9ybWVkTG9jYXRpb24gPSBsb2NhdGlvbi5tYXRyaXhUcmFuc2Zvcm0obWF0cml4KTtcblxuICAgICAgICAgICAgLy8gdHJhbnNmb3JtIHRoZSByZWN0YW5nbGUgZGltZW5zaW9uICh3ZSBoYXZlIHRvIHVzZSBhIFNWR1BvaW50IHNpbmNlIHRoZXJlIGlzIG5vIFNWR0RpbWVuc2lvbilcbiAgICAgICAgICAgIGNvbnN0IHNpemUgPSByb290U3ZnRG9jLmNyZWF0ZVNWR1BvaW50KCk7XG4gICAgICAgICAgICBzaXplLnggPSByZWN0LndpZHRoO1xuICAgICAgICAgICAgc2l6ZS55ID0gcmVjdC5oZWlnaHQ7XG4gICAgICAgICAgICBjb25zdCB0cmFuc2Zvcm1lZFNpemUgPSBzaXplLm1hdHJpeFRyYW5zZm9ybShtYXRyaXguaW52ZXJzZSgpKTtcblxuICAgICAgICAgICAgLy8gdGVsIHRoZSBzdmdQYW5ab29tIHRvIHpvb20gb24gdGhlIHJlY3RhbmdsZSBpbiByZWxhdGlvbiB0byB0aGUgdG90YWwgdmlldyBzaXplXG4gICAgICAgICAgICBjb25zdCB6b29tRmFjdG9yID0gTWF0aC5taW4oNSwgZWxlbWVudFJlY3QuaGVpZ2h0IC8gTWF0aC5hYnModHJhbnNmb3JtZWRTaXplLnkpKTtcbiAgICAgICAgICAgIHN2Z1Bhblpvb21SZWYuem9vbUF0UG9pbnQoem9vbUZhY3RvcixcbiAgICAgICAgICAgICAgICB7IHg6IHRyYW5zZm9ybWVkTG9jYXRpb24ueCAtIGVsZW1lbnRSZWN0LmxlZnQsIHk6IHRyYW5zZm9ybWVkTG9jYXRpb24ueSAtIGVsZW1lbnRSZWN0LnRvcCB9KTtcbiAgICAgICAgICAgIC8vIHRlbCB0aGUgc3ZnUGFuWm9vbSB0byBwYW4gdG8gdGhlIG1pZGRlbCBvZiB0aGUgcmVjdGFuZ2xlXG4gICAgICAgICAgICBzdmdQYW5ab29tUmVmLnBhbkJ5KHtcbiAgICAgICAgICAgICAgICB4OiAoZWxlbWVudFJlY3Qud2lkdGggLyAyKSAtIHRyYW5zZm9ybWVkTG9jYXRpb24ueCxcbiAgICAgICAgICAgICAgICB5OiAoKGVsZW1lbnRSZWN0LmhlaWdodCArIGVsZW1lbnRSZWN0LnRvcCkgLyAyKSAtIHRyYW5zZm9ybWVkTG9jYXRpb24ueVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBnZXRFbGVtZW50UmVjdGFuZ2xlV2l0aE5lc3RlZFN2Z09mZnNldChlbGVtOiBFbGVtZW50KTogU1ZHUmVjdCB7XG4gICAgICAgIGNvbnN0IHN2Z0VsZW0gPSAoPFNWR0dyYXBoaWNzRWxlbWVudD4gZWxlbSk7XG4gICAgICAgIGNvbnN0IHJlY3QgPSBzdmdFbGVtLmdldEJCb3goKTtcblxuICAgICAgICB3aGlsZSAoZWxlbS5wYXJlbnRFbGVtZW50Lm5vZGVOYW1lICE9PSAnc3ZnJykge1xuICAgICAgICAgICAgZWxlbSA9IGVsZW0ucGFyZW50RWxlbWVudDtcbiAgICAgICAgfVxuICAgICAgICBlbGVtID0gZWxlbS5wYXJlbnRFbGVtZW50O1xuICAgICAgICByZWN0LnggPSByZWN0LnggKyBwYXJzZUludChlbGVtLmdldEF0dHJpYnV0ZSgneCcpLCAxMCk7XG4gICAgICAgIHJlY3QueSA9IHJlY3QueSArIHBhcnNlSW50KGVsZW0uZ2V0QXR0cmlidXRlKCd5JyksIDEwKTtcbiAgICAgICAgY29uc3Qgdmlld0JveCA9IGVsZW0uZ2V0QXR0cmlidXRlKCd2aWV3Qm94Jyk7XG4gICAgICAgIGlmICh2aWV3Qm94KSB7XG4gICAgICAgICAgICBjb25zdCB2aWV3Qm94Q29vcmRpbmF0ZXMgPSB2aWV3Qm94LnNwbGl0KCcgJyk7XG4gICAgICAgICAgICByZWN0LnggPSByZWN0LnggLSBwYXJzZUludCh2aWV3Qm94Q29vcmRpbmF0ZXNbMF0sIDEwKTtcbiAgICAgICAgICAgIHJlY3QueSA9IHJlY3QueSAtIHBhcnNlSW50KHZpZXdCb3hDb29yZGluYXRlc1sxXSwgMTApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZWN0O1xuICAgIH1cbn1cbiJdfQ==
@@ -421,7 +421,9 @@ class ImxViewerComponent {
421
421
  if (listeners) {
422
422
  listeners.forEach((fn, el) => {
423
423
  el.removeEventListener(eventType, fn);
424
- el.setAttribute('style', ImxViewerComponent.setDefaultCursor(el));
424
+ if (eventType === 'click') {
425
+ el.setAttribute('style', ImxViewerComponent.setDefaultCursor(el));
426
+ }
425
427
  });
426
428
  }
427
429
  listeners = new Map();
@@ -1 +1 @@
1
- {"version":3,"file":"loxia-imx-viewer.js","sources":["../../src/services/puic-helper.service.ts","../../src/services/clickarea.service.ts","../../src/utils/classes-util.ts","../../src/utils/document-token.ts","../../src/utils/svg-rect-util.ts","../../src/utils/focus-util.ts","../../src/model/point.ts","../../src/model/selectie-event.ts","../../src/components/imx-viewer.component.ts","../../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":["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","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 SvgPanZoom from 'svg-pan-zoom';\nimport { PuicHelperService } from '../services/puic-helper.service';\nimport { SvgRectUtil } from './svg-rect-util';\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","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","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 OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n ViewChild\r\n} from '@angular/core';\r\nimport * as dataUrl from 'dataurl';\r\nimport { combineLatest, Observable, of as observableOf, throwError as observableThrowError } from 'rxjs';\r\nimport { take } from 'rxjs/operators';\r\nimport * as SvgPanZoom from 'svg-pan-zoom';\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\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\n\r\nconst _svgPanZoom = SvgPanZoom; // via andere variabele zodat ng-packgr/rollup geen error geeft bij de aannroep\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 {\r\n @Input() useClickArea = false;\r\n @Input() inlineDgnCssImport = true;\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 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 const parsed = dataUrl.parse(svgSrc);\r\n if (parsed) {\r\n return observableOf(parsed.data.toString());\r\n }\r\n return observableThrowError('Data-url parse error');\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 el.setAttribute('style', ImxViewerComponent.setDefaultCursor(el));\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 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","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\nexport {ClickareaService as ɵc} from './services/clickarea.service';\nexport {PuicHelperService as ɵd} from './services/puic-helper.service';\nexport {DocumentToken as ɵa,documentProvider as ɵb} from './utils/document-token';"],"names":["dataUrl.parse","observableOf","observableThrowError"],"mappings":"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"}
1
+ {"version":3,"file":"loxia-imx-viewer.js","sources":["../../src/services/puic-helper.service.ts","../../src/services/clickarea.service.ts","../../src/utils/classes-util.ts","../../src/utils/document-token.ts","../../src/utils/svg-rect-util.ts","../../src/utils/focus-util.ts","../../src/model/point.ts","../../src/model/selectie-event.ts","../../src/components/imx-viewer.component.ts","../../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":["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","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 * as SvgPanZoom from 'svg-pan-zoom';\nimport { PuicHelperService } from '../services/puic-helper.service';\nimport { SvgRectUtil } from './svg-rect-util';\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","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","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 OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n ViewChild\r\n} from '@angular/core';\r\nimport * as dataUrl from 'dataurl';\r\nimport { combineLatest, Observable, of as observableOf, throwError as observableThrowError } from 'rxjs';\r\nimport { take } from 'rxjs/operators';\r\nimport * as SvgPanZoom from 'svg-pan-zoom';\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\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\n\r\nconst _svgPanZoom = SvgPanZoom; // via andere variabele zodat ng-packgr/rollup geen error geeft bij de aannroep\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 {\r\n @Input() useClickArea = false;\r\n @Input() inlineDgnCssImport = true;\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 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 const parsed = dataUrl.parse(svgSrc);\r\n if (parsed) {\r\n return observableOf(parsed.data.toString());\r\n }\r\n return observableThrowError('Data-url parse error');\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 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","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\nexport {ClickareaService as ɵc} from './services/clickarea.service';\nexport {PuicHelperService as ɵd} from './services/puic-helper.service';\nexport {DocumentToken as ɵa,documentProvider as ɵb} from './utils/document-token';"],"names":["dataUrl.parse","observableOf","observableThrowError"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loxia/imx-viewer",
3
- "version": "7.2.0",
3
+ "version": "7.2.1",
4
4
  "license": "MIT",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org"