@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 +3 -0
- package/bundles/loxia-imx-viewer.umd.js +3 -1
- package/bundles/loxia-imx-viewer.umd.js.map +1 -1
- package/bundles/loxia-imx-viewer.umd.min.js +1 -1
- package/bundles/loxia-imx-viewer.umd.min.js.map +1 -1
- package/esm2015/components/imx-viewer.component.js +4 -2
- package/esm2015/utils/focus-util.js +1 -1
- package/fesm2015/loxia-imx-viewer.js +3 -1
- package/fesm2015/loxia-imx-viewer.js.map +1 -1
- package/package.json +1 -1
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
|
-
|
|
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
|
-
|
|
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,
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXMtdXRpbC5qcyIsInNvdXJjZVJvb3QiOiIvbG9jYWwvaG9tZS9sb3hpYS9qZW5raW5zX2JzXzEuMi93b3Jrc3BhY2Uvdmlld2VyX3N2Zy1pbXgtdmlld2VyLWNpX2RldmVsb3Avc3JjLyIsInNvdXJjZXMiOlsidXRpbHMvZm9jdXMtdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFOUMsTUFBTSxPQUFPLFNBQVM7SUFFWCxNQUFNLENBQUMsVUFBVSxDQUFDLFFBQWtCLEVBQUUsYUFBa0MsRUFBRSxVQUE2QjtRQUMxRyxJQUFJLFFBQVEsSUFBSSxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUVqQyxxREFBcUQ7WUFDckQsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUM3RCxNQUFNLFVBQVUsR0FBRyxZQUFZLENBQUMsVUFBMkIsQ0FBQztZQUM1RCxJQUFJLFVBQW1CLENBQUM7WUFDeEIsSUFBSSxVQUFVLElBQUksVUFBVSxDQUFDLFFBQVEsS0FBSyxLQUFLLEVBQUU7Z0JBQzdDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQ3BCLE1BQU0sS0FBSyxHQUE0QixVQUFVLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQzlFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO3dCQUNuQyxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsc0NBQXNDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBQy9FLFVBQVUsR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQztxQkFDL0Q7Z0JBQ0wsQ0FBQyxDQUFDLENBQUM7YUFDTjtZQUNELFNBQVMsQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLFlBQVksQ0FBQyxxQkFBcUIsRUFBRSxFQUFFLFVBQVUsRUFBRSxhQUFhLENBQUMsQ0FBQztTQUN0RztJQUNMLENBQUM7SUFFRCxNQUFNLENBQUMsV0FBVyxDQUFDLElBQWEsRUFBRSxXQUF1QixFQUFFLFVBQXlCLEVBQUUsYUFBa0I7UUFDcEcsSUFBSSxJQUFJLEVBQUU7WUFDTixzREFBc0Q7WUFDdEQsTUFBTSxNQUFNLEdBQUksVUFBVSxDQUFDLHNCQUFzQixDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxDQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO1lBRTdHLDhEQUE4RDtZQUM5RCxNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDN0MsUUFBUSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztZQUN2QyxRQUFRLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3hDLE1BQU0sbUJBQW1CLEdBQUcsUUFBUSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUU3RCwrRkFBK0Y7WUFDL0YsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUNwQixJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDckIsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUUvRCxpRkFBaUY7WUFDakYsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pGLGFBQWEsQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUNoQyxFQUFFLENBQUMsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDLEdBQUcsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsbUJBQW1CLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQ2pHLDJEQUEyRDtZQUMzRCxhQUFhLENBQUMsS0FBSyxDQUFDO2dCQUNoQixDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLG1CQUFtQixDQUFDLENBQUM7Z0JBQ2xELENBQUMsRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsbUJBQW1CLENBQUMsQ0FBQzthQUMxRSxDQUFDLENBQUM7U0FDTjtJQUNMLENBQUM7SUFFTyxNQUFNLENBQUMsc0NBQXNDLENBQUMsSUFBYTtRQUMvRCxNQUFNLE9BQU8sR0FBeUIsSUFBSyxDQUFDO1FBQzVDLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUUvQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxLQUFLLEtBQUssRUFBRTtZQUMxQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztTQUM3QjtRQUNELElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQzFCLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDdkQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3QyxJQUFJLE9BQU8sRUFBRTtZQUNULE1BQU0sa0JBQWtCLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM5QyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3RELElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FDekQ7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBTdmdQYW5ab29tIGZyb20gJ3N2Zy1wYW4tem9vbSc7XG5pbXBvcnQgeyBQdWljSGVscGVyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3B1aWMtaGVscGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3ZnUmVjdFV0aWwgfSBmcm9tICcuL3N2Zy1yZWN0LXV0aWwnO1xuXG5leHBvcnQgY2xhc3MgRm9jdXNVdGlsIHtcblxuICAgIHB1YmxpYyBzdGF0aWMgZm9jdXNPbklkcyhmb2N1c0lkczogc3RyaW5nW10sIHN2Z1Bhblpvb21SZWY6IFN2Z1Bhblpvb20uSW5zdGFuY2UsIHB1aWNIZWxwZXI6IFB1aWNIZWxwZXJTZXJ2aWNlKSB7XG4gICAgICAgIGlmIChmb2N1c0lkcyAmJiBmb2N1c0lkcy5sZW5ndGggPiAwKSB7XG5cbiAgICAgICAgICAgIC8vIGNhbGN1bGF0ZSB0aGUgdW5pb24gcmVjdGFuZ2xlIG9mIGVsZW1lbnRzIHdpdGggaWRzXG4gICAgICAgICAgICBjb25zdCBzdmdDb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3ZnQ29udGFpbmVyJyk7XG4gICAgICAgICAgICBjb25zdCByb290U3ZnRG9jID0gc3ZnQ29udGFpbmVyLmZpcnN0Q2hpbGQgYXMgU1ZHU1ZHRWxlbWVudDtcbiAgICAgICAgICAgIGxldCByZXN1bHRSZWN0OiBTVkdSZWN0O1xuICAgICAgICAgICAgaWYgKHJvb3RTdmdEb2MgJiYgcm9vdFN2Z0RvYy5ub2RlTmFtZSA9PT0gJ3N2ZycpIHtcbiAgICAgICAgICAgICAgICBmb2N1c0lkcy5mb3JFYWNoKHB1aWMgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBlbGVtczogTm9kZUxpc3RPZjxIVE1MRWxlbWVudD4gPSBwdWljSGVscGVyLmdldEFsbEVsZW1lbnRzRm9yUHVpYyhwdWljKTtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlbGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWxlbWVudFJlY3QgPSBGb2N1c1V0aWwuZ2V0RWxlbWVudFJlY3RhbmdsZVdpdGhOZXN0ZWRTdmdPZmZzZXQoZWxlbXNbaV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0UmVjdCA9IFN2Z1JlY3RVdGlsLnJlY3RVbmlvbihyZXN1bHRSZWN0LCBlbGVtZW50UmVjdCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEZvY3VzVXRpbC5mb2N1c09uUmVjdChyZXN1bHRSZWN0LCBzdmdDb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksIHJvb3RTdmdEb2MsIHN2Z1Bhblpvb21SZWYpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc3RhdGljIGZvY3VzT25SZWN0KHJlY3Q6IFNWR1JlY3QsIGVsZW1lbnRSZWN0OiBDbGllbnRSZWN0LCByb290U3ZnRG9jOiBTVkdTVkdFbGVtZW50LCBzdmdQYW5ab29tUmVmOiBhbnkpIHtcbiAgICAgICAgaWYgKHJlY3QpIHtcbiAgICAgICAgICAgIC8vIG1ha2Ugc3VyZSB3ZSBhcmUgaW4gdGhlIHN2Z3Bhbnpvb20gdHJhbnNmb3JtZWQgYXJlYVxuICAgICAgICAgICAgY29uc3QgbWF0cml4ID0gKHJvb3RTdmdEb2MuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnc3ZnLXBhbi16b29tX3ZpZXdwb3J0JylbMF0gYXMgU1ZHR0VsZW1lbnQpLmdldFNjcmVlbkNUTSgpO1xuXG4gICAgICAgICAgICAvLyBnZXQgZnJvbSBzdmcgY29vcmRpbmF0ZSBzeXN0ZW0gdG8gd2VicGFnZSBjb29yZGluYXRlIHN5c3RlbVxuICAgICAgICAgICAgY29uc3QgbG9jYXRpb24gPSByb290U3ZnRG9jLmNyZWF0ZVNWR1BvaW50KCk7XG4gICAgICAgICAgICBsb2NhdGlvbi54ID0gcmVjdC54ICsgKHJlY3Qud2lkdGggLyAyKTtcbiAgICAgICAgICAgIGxvY2F0aW9uLnkgPSByZWN0LnkgKyAocmVjdC5oZWlnaHQgLyAyKTtcbiAgICAgICAgICAgIGNvbnN0IHRyYW5zZm9ybWVkTG9jYXRpb24gPSBsb2NhdGlvbi5tYXRyaXhUcmFuc2Zvcm0obWF0cml4KTtcblxuICAgICAgICAgICAgLy8gdHJhbnNmb3JtIHRoZSByZWN0YW5nbGUgZGltZW5zaW9uICh3ZSBoYXZlIHRvIHVzZSBhIFNWR1BvaW50IHNpbmNlIHRoZXJlIGlzIG5vIFNWR0RpbWVuc2lvbilcbiAgICAgICAgICAgIGNvbnN0IHNpemUgPSByb290U3ZnRG9jLmNyZWF0ZVNWR1BvaW50KCk7XG4gICAgICAgICAgICBzaXplLnggPSByZWN0LndpZHRoO1xuICAgICAgICAgICAgc2l6ZS55ID0gcmVjdC5oZWlnaHQ7XG4gICAgICAgICAgICBjb25zdCB0cmFuc2Zvcm1lZFNpemUgPSBzaXplLm1hdHJpeFRyYW5zZm9ybShtYXRyaXguaW52ZXJzZSgpKTtcblxuICAgICAgICAgICAgLy8gdGVsIHRoZSBzdmdQYW5ab29tIHRvIHpvb20gb24gdGhlIHJlY3RhbmdsZSBpbiByZWxhdGlvbiB0byB0aGUgdG90YWwgdmlldyBzaXplXG4gICAgICAgICAgICBjb25zdCB6b29tRmFjdG9yID0gTWF0aC5taW4oNSwgZWxlbWVudFJlY3QuaGVpZ2h0IC8gTWF0aC5hYnModHJhbnNmb3JtZWRTaXplLnkpKTtcbiAgICAgICAgICAgIHN2Z1Bhblpvb21SZWYuem9vbUF0UG9pbnQoem9vbUZhY3RvcixcbiAgICAgICAgICAgICAgICB7IHg6IHRyYW5zZm9ybWVkTG9jYXRpb24ueCAtIGVsZW1lbnRSZWN0LmxlZnQsIHk6IHRyYW5zZm9ybWVkTG9jYXRpb24ueSAtIGVsZW1lbnRSZWN0LnRvcCB9KTtcbiAgICAgICAgICAgIC8vIHRlbCB0aGUgc3ZnUGFuWm9vbSB0byBwYW4gdG8gdGhlIG1pZGRlbCBvZiB0aGUgcmVjdGFuZ2xlXG4gICAgICAgICAgICBzdmdQYW5ab29tUmVmLnBhbkJ5KHtcbiAgICAgICAgICAgICAgICB4OiAoZWxlbWVudFJlY3Qud2lkdGggLyAyKSAtIHRyYW5zZm9ybWVkTG9jYXRpb24ueCxcbiAgICAgICAgICAgICAgICB5OiAoKGVsZW1lbnRSZWN0LmhlaWdodCArIGVsZW1lbnRSZWN0LnRvcCkgLyAyKSAtIHRyYW5zZm9ybWVkTG9jYXRpb24ueVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBnZXRFbGVtZW50UmVjdGFuZ2xlV2l0aE5lc3RlZFN2Z09mZnNldChlbGVtOiBFbGVtZW50KTogU1ZHUmVjdCB7XG4gICAgICAgIGNvbnN0IHN2Z0VsZW0gPSAoPFNWR0dyYXBoaWNzRWxlbWVudD4gZWxlbSk7XG4gICAgICAgIGNvbnN0IHJlY3QgPSBzdmdFbGVtLmdldEJCb3goKTtcblxuICAgICAgICB3aGlsZSAoZWxlbS5wYXJlbnRFbGVtZW50Lm5vZGVOYW1lICE9PSAnc3ZnJykge1xuICAgICAgICAgICAgZWxlbSA9IGVsZW0ucGFyZW50RWxlbWVudDtcbiAgICAgICAgfVxuICAgICAgICBlbGVtID0gZWxlbS5wYXJlbnRFbGVtZW50O1xuICAgICAgICByZWN0LnggPSByZWN0LnggKyBwYXJzZUludChlbGVtLmdldEF0dHJpYnV0ZSgneCcpLCAxMCk7XG4gICAgICAgIHJlY3QueSA9IHJlY3QueSArIHBhcnNlSW50KGVsZW0uZ2V0QXR0cmlidXRlKCd5JyksIDEwKTtcbiAgICAgICAgY29uc3Qgdmlld0JveCA9IGVsZW0uZ2V0QXR0cmlidXRlKCd2aWV3Qm94Jyk7XG4gICAgICAgIGlmICh2aWV3Qm94KSB7XG4gICAgICAgICAgICBjb25zdCB2aWV3Qm94Q29vcmRpbmF0ZXMgPSB2aWV3Qm94LnNwbGl0KCcgJyk7XG4gICAgICAgICAgICByZWN0LnggPSByZWN0LnggLSBwYXJzZUludCh2aWV3Qm94Q29vcmRpbmF0ZXNbMF0sIDEwKTtcbiAgICAgICAgICAgIHJlY3QueSA9IHJlY3QueSAtIHBhcnNlSW50KHZpZXdCb3hDb29yZGluYXRlc1sxXSwgMTApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZWN0O1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -421,7 +421,9 @@ class ImxViewerComponent {
|
|
|
421
421
|
if (listeners) {
|
|
422
422
|
listeners.forEach((fn, el) => {
|
|
423
423
|
el.removeEventListener(eventType, fn);
|
|
424
|
-
|
|
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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"}
|