diff --git a/README.md b/README.md index 5066686..c4df83f 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ ![screenshot](https://raw.githubusercontent.com/jagomf/countries-map/master/screenshot.png) -## We do not depend on Google anymore! 🎉🎊 +## This package does not depend on 3rd parties Starting with v4, this package **does NOT depend on Google GeoCharts**. diff --git a/dist/countries-map/README.md b/dist/countries-map/README.md index 5066686..c4df83f 100644 --- a/dist/countries-map/README.md +++ b/dist/countries-map/README.md @@ -7,7 +7,7 @@ ![screenshot](https://raw.githubusercontent.com/jagomf/countries-map/master/screenshot.png) -## We do not depend on Google anymore! 🎉🎊 +## This package does not depend on 3rd parties Starting with v4, this package **does NOT depend on Google GeoCharts**. diff --git a/dist/countries-map/bundles/countries-map.umd.js b/dist/countries-map/bundles/countries-map.umd.js index ba416e9..28c3e12 100644 --- a/dist/countries-map/bundles/countries-map.umd.js +++ b/dist/countries-map/bundles/countries-map.umd.js @@ -15,7 +15,7 @@ CountriesMapBaseComponent.decorators = [ { type: core.Component, args: [{ selector: 'countries-map-base', - template: "", + template: "", styles: [''] },] } ]; @@ -494,7 +494,7 @@ { type: core.Component, args: [{ selector: 'countries-map', changeDetection: core.ChangeDetectionStrategy.OnPush, - template: "
Loading map...
\r\n\r\n\r\n\r\n\r\n
\r\n
\r\n
\r\n {{countryLabel}}\r\n {{selection?.countryName}}\r\n
\r\n
\r\n {{valueLabel}}: \r\n {{selectionValue}}\r\n
\r\n
\r\n
0\">\r\n
\r\n {{item.key}}:\r\n {{item.val}}\r\n
\r\n
\r\n
\r\n", + template: "
Loading map...
\n\n\n\n\n
\n
\n
\n {{countryLabel}}\n {{selection?.countryName}}\n
\n
\n {{valueLabel}}: \n {{selectionValue}}\n
\n
\n
0\">\n
\n {{item.key}}:\n {{item.val}}\n
\n
\n
\n", styles: [":host{display:flex;flex-flow:column nowrap;justify-content:space-between;align-items:stretch;align-content:stretch}.major-block.loading{flex:0 1 auto;align-self:center}.major-block.loading .text{font-style:italic;font-family:sans-serif;color:grey}.major-block.cm-map-content{flex:0 1 auto}.major-block.goes-first{order:0}.major-block:not(.goes-first){order:1}.major-block.cm-caption-container{flex:0 1 auto;display:flex;flex-flow:column nowrap;justify-content:space-between}.cm-simple-caption{display:flex;flex-flow:row nowrap;justify-content:space-between}.cm-country-label{flex:0 1 auto;align-self:flex-start}.cm-value-label{flex:0 1 auto;align-self:flex-end}.cm-country-label,.cm-value-label{flex:0 1 auto}.cm-country-label .cm-country-name{font-weight:700}.cm-country-label .cm-country-name,.cm-value-label .cm-value-text{color:#333}.cm-country-label .cm-default-label,.cm-value-label .cm-value-text:not(.has-value){font-style:italic;color:#777}.cm-extended-caption{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));grid-gap:5px}.cm-extended-item{margin:5px auto}.cm-extended-item .cm-extended-label{font-weight:700}"] },] } ]; diff --git a/dist/countries-map/bundles/countries-map.umd.js.map b/dist/countries-map/bundles/countries-map.umd.js.map index 48de855..83a7682 100644 --- a/dist/countries-map/bundles/countries-map.umd.js.map +++ b/dist/countries-map/bundles/countries-map.umd.js.map @@ -1 +1 @@ -{"version":3,"file":"countries-map.umd.js","sources":["../../../projects/lib/src/lib/base-map.component.ts","../../../node_modules/tslib/tslib.es6.js","../../../projects/lib/src/lib/chart-events.interface.ts","../../../projects/lib/src/lib/countries-map.component.ts","../../../projects/lib/src/lib/countries-map.module.ts","../../../projects/lib/src/countries-map.ts"],"sourcesContent":["import { Component } from \"@angular/core\";\r\n\r\n/**\r\n * @private Do not use this component in your app. Use `CountriesMapComponent` instead.\r\n */\r\n@Component({\r\n selector: 'countries-map-base',\r\n templateUrl: './base-map.component.svg',\r\n styles: ['']\r\n})\r\nexport class CountriesMapBaseComponent {\r\n}\r\n","/*! *****************************************************************************\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 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\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\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 __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, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","export interface ChartSelectEvent {\r\n selected: boolean;\r\n value?: number;\r\n country: string;\r\n}\r\n\r\nexport enum CharErrorCode {loading = 'loading'}\r\n\r\nexport interface ChartErrorEvent {\r\n id: string | CharErrorCode;\r\n message: string;\r\n detailedMessage?: string;\r\n}\r\n","import {\r\n Component,\r\n ElementRef,\r\n Input,\r\n Output,\r\n ViewChild,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n EventEmitter,\r\n AfterViewInit,\r\n OnChanges,\r\n SimpleChanges\r\n} from '@angular/core';\r\nimport { CharErrorCode } from './chart-events.interface';\r\nimport type { ChartSelectEvent, ChartErrorEvent } from './chart-events.interface';\r\nimport type { CountriesData, SelectionExtra, DrawableCountries, Selection,\r\n ValidExtraData, DrawableCountry, CountryData } from './data-types.interface';\r\nimport { en as countriesEN } from '@jagomf/countrieslist';\r\nimport { scale } from 'chroma-js';\r\n\r\nconst exists = item => typeof item !== 'undefined' && item !== null;\r\nconst countryNum = (item: CountryData) => parseInt(item.value?.toString());\r\n\r\nconst countryClass = 'countryxx';\r\nconst oceanId = 'ocean';\r\nconst getStrokeWidth = (isHovered: boolean) => isHovered ? '0.2%' : '0.1%';\r\nconst getStrokeColor = (isHovered: boolean) => isHovered ? '#888' : '#afafaf';\r\n\r\nconst countryName = (countryCode: string): string => {\r\n return countriesEN[countryCode];\r\n};\r\n\r\n@Component({\r\n selector: 'countries-map',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n templateUrl: './countries-map.component.html',\r\n styleUrls: ['./countries-map.component.scss']\r\n})\r\nexport class CountriesMapComponent implements AfterViewInit, OnChanges {\r\n\r\n @Input() data: CountriesData;\r\n @Input() countryLabel = 'Country';\r\n @Input() valueLabel = 'Value';\r\n @Input() showCaption = true;\r\n @Input() captionBelow = true;\r\n @Input() minValue: number;\r\n @Input() maxValue: number;\r\n @Input() minColor = 'white';\r\n @Input() maxColor = 'red';\r\n @Input() backgroundColor = 'white';\r\n @Input() noDataColor = '#CFCFCF';\r\n @Input() exceptionColor = '#FFEE58';\r\n\r\n @Output() private readonly chartReady = new EventEmitter();\r\n @Output() private readonly chartError = new EventEmitter();\r\n @Output() private readonly chartSelect = new EventEmitter();\r\n\r\n @ViewChild('mapContent', { static: false, read: ElementRef }) private readonly mapContent: ElementRef;\r\n\r\n mapData: DrawableCountries;\r\n selection: Selection | null = null;\r\n\r\n private innerLoading = true;\r\n get loading(): boolean {\r\n return this.innerLoading;\r\n }\r\n\r\n get selectionValue(): ValidExtraData {\r\n return this.data[this.selection.countryId].value;\r\n }\r\n\r\n constructor(\r\n private readonly cdRef: ChangeDetectorRef,\r\n ) { }\r\n\r\n private getExtraSelected(country: string): SelectionExtra[] | null {\r\n const { extra } = this.data[country];\r\n return extra && Object.keys(extra).map(key => ({ key, val: extra[key] }));\r\n }\r\n\r\n private selectCountry(country?: string): void {\r\n this.selection = country ? {\r\n countryId: country,\r\n countryName: countryName(country),\r\n extra: this.getExtraSelected(country)\r\n } : null;\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.initializeMap();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const changedMapValueButNotOnStart = ['data', 'minColor', 'maxColor', 'backgroundColor', 'noDataColor', 'exceptionColor']\r\n .some(attr => changes[attr] && !changes[attr].firstChange);\r\n\r\n if (changedMapValueButNotOnStart) {\r\n this.initializeMap();\r\n }\r\n }\r\n\r\n private initializeMap(): void {\r\n try {\r\n // data is provided: might be able to paint countries in colors\r\n if (this.data) {\r\n // get highest value in range\r\n const maxVal = exists(this.maxValue) ? this.maxValue : Object.values(this.data).reduce(\r\n (acc, curr) => countryNum(curr) > acc || acc === null? countryNum(curr) : acc, null as number\r\n );\r\n // get lowest value in range\r\n const minVal = exists(this.minValue) ? this.minValue : Object.values(this.data).reduce(\r\n (acc, curr) => countryNum(curr) < acc || acc === null? countryNum(curr) : acc, null as number\r\n );\r\n\r\n // map values in range to colors\r\n const valToCol = scale([this.minColor, this.maxColor]).colors((maxVal ?? 1) - (minVal ?? 0) + 1).reduce((acc, curr, i) =>\r\n ({ ...acc, [i + minVal]: curr }), {} as { [key: number]: string }\r\n );\r\n\r\n // create local Map using provided data + calculated colors\r\n this.mapData = Object.entries(this.data).reduce((acc, [ countryId, countryVal ]) =>\r\n ({ ...acc,\r\n [countryId.toLowerCase()]: {\r\n ...countryVal,\r\n color: valToCol[countryNum(countryVal)] // value in between minVal and maxVal\r\n || (\r\n // value below minVal\r\n countryNum(countryVal) <= minVal ? valToCol[minVal] :\r\n // value above maxVal\r\n countryNum(countryVal) >= maxVal ? valToCol[maxVal]\r\n // weird; should never get to here\r\n : this.exceptionColor\r\n )\r\n } as DrawableCountry }),\r\n {} as DrawableCountries\r\n );\r\n\r\n // no data provided: will paint plain map\r\n } else {\r\n this.mapData = {};\r\n }\r\n\r\n const svgMap = this.mapContent.nativeElement.children[0] as SVGSVGElement;\r\n svgMap.style.backgroundColor = this.backgroundColor;\r\n svgMap.querySelectorAll(`.${countryClass}`).forEach(item => {\r\n const mapItem = this.mapData[item.id.toLowerCase()];\r\n const isException = mapItem ? !exists(mapItem.value) : false;\r\n item.style.fill = mapItem ? isException ? this.exceptionColor : mapItem.color : this.noDataColor;\r\n item.onmouseenter = this.countryHover.bind(this, item, true);\r\n item.onmouseleave = this.countryHover.bind(this, item, false);\r\n });\r\n\r\n this.innerLoading = false;\r\n this.cdRef.detectChanges();\r\n this.onChartReady();\r\n\r\n } catch (e) {\r\n this.onCharterror({ id: CharErrorCode.loading, message: 'Could not load' });\r\n }\r\n }\r\n\r\n private countryHover(item: SVGElement, hovered: boolean): void {\r\n item.style.strokeWidth = getStrokeWidth(hovered);\r\n item.style.stroke = getStrokeColor(hovered);\r\n item.querySelectorAll('.landxx').forEach(i => {\r\n i.style.strokeWidth = getStrokeWidth(hovered);\r\n i.style.stroke = getStrokeColor(hovered);\r\n });\r\n }\r\n\r\n private onChartReady(): void {\r\n if (this.innerLoading) {\r\n this.innerLoading = false;\r\n this.chartReady.emit();\r\n }\r\n }\r\n\r\n private onCharterror(error: ChartErrorEvent): void {\r\n this.chartError.emit(error);\r\n }\r\n\r\n onMapSelect({ target }: { target?: SVGElement }): void {\r\n const event: ChartSelectEvent = {\r\n selected: false,\r\n value: null,\r\n country: null\r\n };\r\n\r\n let newItem: SVGElement;\r\n if (target.id === oceanId) {\r\n this.selectCountry(null);\r\n\r\n } else {\r\n newItem = target;\r\n while (!newItem.classList.contains(countryClass)) {\r\n newItem = newItem.parentNode as SVGElement;\r\n }\r\n }\r\n\r\n const country = this.mapData[newItem?.id];\r\n if (country) {\r\n event.selected = true;\r\n event.value = countryNum(country);\r\n event.country = newItem.id.toUpperCase();\r\n this.selectCountry(event.country);\r\n } else {\r\n this.selectCountry(null);\r\n }\r\n this.chartSelect.emit(event);\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CountriesMapBaseComponent } from './base-map.component';\r\nimport { CountriesMapComponent } from './countries-map.component';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n ],\r\n declarations: [CountriesMapBaseComponent, CountriesMapComponent],\r\n exports: [\r\n CountriesMapComponent\r\n ]\r\n})\r\nexport class CountriesMapModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {CountriesMapBaseComponent as ɵa} from './lib/base-map.component';"],"names":["Component","CharErrorCode","countriesEN","EventEmitter","scale","ChangeDetectionStrategy","ChangeDetectorRef","Input","Output","ViewChild","ElementRef","NgModule","CommonModule"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"countries-map.umd.js","sources":["../../../projects/lib/src/lib/base-map.component.ts","../../../node_modules/tslib/tslib.es6.js","../../../projects/lib/src/lib/chart-events.interface.ts","../../../projects/lib/src/lib/countries-map.component.ts","../../../projects/lib/src/lib/countries-map.module.ts","../../../projects/lib/src/countries-map.ts"],"sourcesContent":["import { Component } from \"@angular/core\";\n\n/**\n * @private Do not use this component in your app. Use `CountriesMapComponent` instead.\n */\n@Component({\n selector: 'countries-map-base',\n templateUrl: './base-map.component.svg',\n styles: ['']\n})\nexport class CountriesMapBaseComponent {\n}\n","/*! *****************************************************************************\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 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\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\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 __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, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","export interface ChartSelectEvent {\n selected: boolean;\n value?: number;\n country: string;\n}\n\nexport enum CharErrorCode {loading = 'loading'}\n\nexport interface ChartErrorEvent {\n id: string | CharErrorCode;\n message: string;\n detailedMessage?: string;\n}\n","import {\n Component,\n ElementRef,\n Input,\n Output,\n ViewChild,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n EventEmitter,\n AfterViewInit,\n OnChanges,\n SimpleChanges\n} from '@angular/core';\nimport { CharErrorCode } from './chart-events.interface';\nimport type { ChartSelectEvent, ChartErrorEvent } from './chart-events.interface';\nimport type { CountriesData, SelectionExtra, DrawableCountries, Selection,\n ValidExtraData, DrawableCountry, CountryData } from './data-types.interface';\nimport { en as countriesEN } from '@jagomf/countrieslist';\nimport { scale } from 'chroma-js';\n\nconst exists = item => typeof item !== 'undefined' && item !== null;\nconst countryNum = (item: CountryData) => parseInt(item.value?.toString());\n\nconst countryClass = 'countryxx';\nconst oceanId = 'ocean';\nconst getStrokeWidth = (isHovered: boolean) => isHovered ? '0.2%' : '0.1%';\nconst getStrokeColor = (isHovered: boolean) => isHovered ? '#888' : '#afafaf';\n\nconst countryName = (countryCode: string): string => {\n return countriesEN[countryCode];\n};\n\n@Component({\n selector: 'countries-map',\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './countries-map.component.html',\n styleUrls: ['./countries-map.component.scss']\n})\nexport class CountriesMapComponent implements AfterViewInit, OnChanges {\n\n @Input() data: CountriesData;\n @Input() countryLabel = 'Country';\n @Input() valueLabel = 'Value';\n @Input() showCaption = true;\n @Input() captionBelow = true;\n @Input() minValue: number;\n @Input() maxValue: number;\n @Input() minColor = 'white';\n @Input() maxColor = 'red';\n @Input() backgroundColor = 'white';\n @Input() noDataColor = '#CFCFCF';\n @Input() exceptionColor = '#FFEE58';\n\n @Output() private readonly chartReady = new EventEmitter();\n @Output() private readonly chartError = new EventEmitter();\n @Output() private readonly chartSelect = new EventEmitter();\n\n @ViewChild('mapContent', { static: false, read: ElementRef }) private readonly mapContent: ElementRef;\n\n mapData: DrawableCountries;\n selection: Selection | null = null;\n\n private innerLoading = true;\n get loading(): boolean {\n return this.innerLoading;\n }\n\n get selectionValue(): ValidExtraData {\n return this.data[this.selection.countryId].value;\n }\n\n constructor(\n private readonly cdRef: ChangeDetectorRef,\n ) { }\n\n private getExtraSelected(country: string): SelectionExtra[] | null {\n const { extra } = this.data[country];\n return extra && Object.keys(extra).map(key => ({ key, val: extra[key] }));\n }\n\n private selectCountry(country?: string): void {\n this.selection = country ? {\n countryId: country,\n countryName: countryName(country),\n extra: this.getExtraSelected(country)\n } : null;\n this.cdRef.detectChanges();\n }\n\n ngAfterViewInit(): void {\n this.initializeMap();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const changedMapValueButNotOnStart = ['data', 'minColor', 'maxColor', 'backgroundColor', 'noDataColor', 'exceptionColor']\n .some(attr => changes[attr] && !changes[attr].firstChange);\n\n if (changedMapValueButNotOnStart) {\n this.initializeMap();\n }\n }\n\n private initializeMap(): void {\n try {\n // data is provided: might be able to paint countries in colors\n if (this.data) {\n // get highest value in range\n const maxVal = exists(this.maxValue) ? this.maxValue : Object.values(this.data).reduce(\n (acc, curr) => countryNum(curr) > acc || acc === null? countryNum(curr) : acc, null as number\n );\n // get lowest value in range\n const minVal = exists(this.minValue) ? this.minValue : Object.values(this.data).reduce(\n (acc, curr) => countryNum(curr) < acc || acc === null? countryNum(curr) : acc, null as number\n );\n\n // map values in range to colors\n const valToCol = scale([this.minColor, this.maxColor]).colors((maxVal ?? 1) - (minVal ?? 0) + 1).reduce((acc, curr, i) =>\n ({ ...acc, [i + minVal]: curr }), {} as { [key: number]: string }\n );\n\n // create local Map using provided data + calculated colors\n this.mapData = Object.entries(this.data).reduce((acc, [ countryId, countryVal ]) =>\n ({ ...acc,\n [countryId.toLowerCase()]: {\n ...countryVal,\n color: valToCol[countryNum(countryVal)] // value in between minVal and maxVal\n || (\n // value below minVal\n countryNum(countryVal) <= minVal ? valToCol[minVal] :\n // value above maxVal\n countryNum(countryVal) >= maxVal ? valToCol[maxVal]\n // weird; should never get to here\n : this.exceptionColor\n )\n } as DrawableCountry }),\n {} as DrawableCountries\n );\n\n // no data provided: will paint plain map\n } else {\n this.mapData = {};\n }\n\n const svgMap = this.mapContent.nativeElement.children[0] as SVGSVGElement;\n svgMap.style.backgroundColor = this.backgroundColor;\n svgMap.querySelectorAll(`.${countryClass}`).forEach(item => {\n const mapItem = this.mapData[item.id.toLowerCase()];\n const isException = mapItem ? !exists(mapItem.value) : false;\n item.style.fill = mapItem ? isException ? this.exceptionColor : mapItem.color : this.noDataColor;\n item.onmouseenter = this.countryHover.bind(this, item, true);\n item.onmouseleave = this.countryHover.bind(this, item, false);\n });\n\n this.innerLoading = false;\n this.cdRef.detectChanges();\n this.onChartReady();\n\n } catch (e) {\n this.onCharterror({ id: CharErrorCode.loading, message: 'Could not load' });\n }\n }\n\n private countryHover(item: SVGElement, hovered: boolean): void {\n item.style.strokeWidth = getStrokeWidth(hovered);\n item.style.stroke = getStrokeColor(hovered);\n item.querySelectorAll('.landxx').forEach(i => {\n i.style.strokeWidth = getStrokeWidth(hovered);\n i.style.stroke = getStrokeColor(hovered);\n });\n }\n\n private onChartReady(): void {\n if (this.innerLoading) {\n this.innerLoading = false;\n this.chartReady.emit();\n }\n }\n\n private onCharterror(error: ChartErrorEvent): void {\n this.chartError.emit(error);\n }\n\n onMapSelect({ target }: { target?: SVGElement }): void {\n const event: ChartSelectEvent = {\n selected: false,\n value: null,\n country: null\n };\n\n let newItem: SVGElement;\n if (target.id === oceanId) {\n this.selectCountry(null);\n\n } else {\n newItem = target;\n while (!newItem.classList.contains(countryClass)) {\n newItem = newItem.parentNode as SVGElement;\n }\n }\n\n const country = this.mapData[newItem?.id];\n if (country) {\n event.selected = true;\n event.value = countryNum(country);\n event.country = newItem.id.toUpperCase();\n this.selectCountry(event.country);\n } else {\n this.selectCountry(null);\n }\n this.chartSelect.emit(event);\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CountriesMapBaseComponent } from './base-map.component';\nimport { CountriesMapComponent } from './countries-map.component';\n\n@NgModule({\n imports: [\n CommonModule\n ],\n declarations: [CountriesMapBaseComponent, CountriesMapComponent],\n exports: [\n CountriesMapComponent\n ]\n})\nexport class CountriesMapModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {CountriesMapBaseComponent as ɵa} from './lib/base-map.component';"],"names":["Component","CharErrorCode","countriesEN","EventEmitter","scale","ChangeDetectionStrategy","ChangeDetectorRef","Input","Output","ViewChild","ElementRef","NgModule","CommonModule"],"mappings":"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"} \ No newline at end of file diff --git a/dist/countries-map/bundles/countries-map.umd.min.js b/dist/countries-map/bundles/countries-map.umd.min.js index 8a94144..2cb5ee4 100644 --- a/dist/countries-map/bundles/countries-map.umd.min.js +++ b/dist/countries-map/bundles/countries-map.umd.min.js @@ -1,2 +1,2 @@ -!function(a,d){"object"==typeof exports&&"undefined"!=typeof module?d(exports,require("@angular/core"),require("@angular/common"),require("@jagomf/countrieslist"),require("chroma-js")):"function"==typeof define&&define.amd?define("countries-map",["exports","@angular/core","@angular/common","@jagomf/countrieslist","chroma-js"],d):d((a="undefined"!=typeof globalThis?globalThis:a||self)["countries-map"]={},a.ng.core,a.ng.common,a.countrieslist,a.chromaJs)}(this,(function(a,d,t,h,p){"use strict";var c=function(){};c.decorators=[{type:d.Component,args:[{selector:"countries-map-base",template:'',styles:[""]}]}];Object.create;function i(a,d){var t="function"==typeof Symbol&&a[Symbol.iterator];if(!t)return a;var h,p,c=t.call(a),i=[];try{for(;(void 0===d||d-- >0)&&!(h=c.next()).done;)i.push(h.value)}catch(a){p={error:a}}finally{try{h&&!h.done&&(t=c.return)&&t.call(c)}finally{if(p)throw p.error}}return i}Object.create;(a.CharErrorCode||(a.CharErrorCode={})).loading="loading";var M=function(a){return null!=a},l=function(a){var d;return parseInt(null===(d=a.value)||void 0===d?void 0:d.toString())},x="countryxx",n=function(a){return a?"0.2%":"0.1%"},s=function(a){return a?"#888":"#afafaf"},e=function(a){return h.en[a]},o=function(){function t(a){this.cdRef=a,this.countryLabel="Country",this.valueLabel="Value",this.showCaption=!0,this.captionBelow=!0,this.minColor="white",this.maxColor="red",this.backgroundColor="white",this.noDataColor="#CFCFCF",this.exceptionColor="#FFEE58",this.chartReady=new d.EventEmitter,this.chartError=new d.EventEmitter,this.chartSelect=new d.EventEmitter,this.selection=null,this.innerLoading=!0}return Object.defineProperty(t.prototype,"loading",{get:function(){return this.innerLoading},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"selectionValue",{get:function(){return this.data[this.selection.countryId].value},enumerable:!1,configurable:!0}),t.prototype.getExtraSelected=function(a){var d=this.data[a].extra;return d&&Object.keys(d).map((function(a){return{key:a,val:d[a]}}))},t.prototype.selectCountry=function(a){this.selection=a?{countryId:a,countryName:e(a),extra:this.getExtraSelected(a)}:null,this.cdRef.detectChanges()},t.prototype.ngAfterViewInit=function(){this.initializeMap()},t.prototype.ngOnChanges=function(a){["data","minColor","maxColor","backgroundColor","noDataColor","exceptionColor"].some((function(d){return a[d]&&!a[d].firstChange}))&&this.initializeMap()},t.prototype.initializeMap=function(){var d=this;try{if(this.data){var t=M(this.maxValue)?this.maxValue:Object.values(this.data).reduce((function(a,d){return l(d)>a||null===a?l(d):a}),null),h=M(this.minValue)?this.minValue:Object.values(this.data).reduce((function(a,d){return l(d)=t?c[t]:d.exceptionColor)}),M))}),{})}else this.mapData={};var x=this.mapContent.nativeElement.children[0];x.style.backgroundColor=this.backgroundColor,x.querySelectorAll(".countryxx").forEach((function(a){var t=d.mapData[a.id.toLowerCase()],h=!!t&&!M(t.value);a.style.fill=t?h?d.exceptionColor:t.color:d.noDataColor,a.onmouseenter=d.countryHover.bind(d,a,!0),a.onmouseleave=d.countryHover.bind(d,a,!1)})),this.innerLoading=!1,this.cdRef.detectChanges(),this.onChartReady()}catch(d){this.onCharterror({id:a.CharErrorCode.loading,message:"Could not load"})}},t.prototype.countryHover=function(a,d){a.style.strokeWidth=n(d),a.style.stroke=s(d),a.querySelectorAll(".landxx").forEach((function(a){a.style.strokeWidth=n(d),a.style.stroke=s(d)}))},t.prototype.onChartReady=function(){this.innerLoading&&(this.innerLoading=!1,this.chartReady.emit())},t.prototype.onCharterror=function(a){this.chartError.emit(a)},t.prototype.onMapSelect=function(a){var d,t=a.target,h={selected:!1,value:null,country:null};if("ocean"===t.id)this.selectCountry(null);else for(d=t;!d.classList.contains(x);)d=d.parentNode;var p=this.mapData[null==d?void 0:d.id];p?(h.selected=!0,h.value=l(p),h.country=d.id.toUpperCase(),this.selectCountry(h.country)):this.selectCountry(null),this.chartSelect.emit(h)},t}();o.decorators=[{type:d.Component,args:[{selector:"countries-map",changeDetection:d.ChangeDetectionStrategy.OnPush,template:'
Loading map...
\r\n\r\n\r\n\r\n\r\n
\r\n
\r\n
\r\n {{countryLabel}}\r\n {{selection?.countryName}}\r\n
\r\n
\r\n {{valueLabel}}: \r\n {{selectionValue}}\r\n
\r\n
\r\n
\r\n
\r\n {{item.key}}:\r\n {{item.val}}\r\n
\r\n
\r\n
\r\n',styles:[":host{display:flex;flex-flow:column nowrap;justify-content:space-between;align-items:stretch;align-content:stretch}.major-block.loading{flex:0 1 auto;align-self:center}.major-block.loading .text{font-style:italic;font-family:sans-serif;color:grey}.major-block.cm-map-content{flex:0 1 auto}.major-block.goes-first{order:0}.major-block:not(.goes-first){order:1}.major-block.cm-caption-container{flex:0 1 auto;display:flex;flex-flow:column nowrap;justify-content:space-between}.cm-simple-caption{display:flex;flex-flow:row nowrap;justify-content:space-between}.cm-country-label{flex:0 1 auto;align-self:flex-start}.cm-value-label{flex:0 1 auto;align-self:flex-end}.cm-country-label,.cm-value-label{flex:0 1 auto}.cm-country-label .cm-country-name{font-weight:700}.cm-country-label .cm-country-name,.cm-value-label .cm-value-text{color:#333}.cm-country-label .cm-default-label,.cm-value-label .cm-value-text:not(.has-value){font-style:italic;color:#777}.cm-extended-caption{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));grid-gap:5px}.cm-extended-item{margin:5px auto}.cm-extended-item .cm-extended-label{font-weight:700}"]}]}],o.ctorParameters=function(){return[{type:d.ChangeDetectorRef}]},o.propDecorators={data:[{type:d.Input}],countryLabel:[{type:d.Input}],valueLabel:[{type:d.Input}],showCaption:[{type:d.Input}],captionBelow:[{type:d.Input}],minValue:[{type:d.Input}],maxValue:[{type:d.Input}],minColor:[{type:d.Input}],maxColor:[{type:d.Input}],backgroundColor:[{type:d.Input}],noDataColor:[{type:d.Input}],exceptionColor:[{type:d.Input}],chartReady:[{type:d.Output}],chartError:[{type:d.Output}],chartSelect:[{type:d.Output}],mapContent:[{type:d.ViewChild,args:["mapContent",{static:!1,read:d.ElementRef}]}]};var r=function(){};r.decorators=[{type:d.NgModule,args:[{imports:[t.CommonModule],declarations:[c,o],exports:[o]}]}],a.CountriesMapComponent=o,a.CountriesMapModule=r,a.ɵa=c,Object.defineProperty(a,"__esModule",{value:!0})})); +!function(a,d){"object"==typeof exports&&"undefined"!=typeof module?d(exports,require("@angular/core"),require("@angular/common"),require("@jagomf/countrieslist"),require("chroma-js")):"function"==typeof define&&define.amd?define("countries-map",["exports","@angular/core","@angular/common","@jagomf/countrieslist","chroma-js"],d):d((a="undefined"!=typeof globalThis?globalThis:a||self)["countries-map"]={},a.ng.core,a.ng.common,a.countrieslist,a.chromaJs)}(this,(function(a,d,t,h,p){"use strict";var c=function(){};c.decorators=[{type:d.Component,args:[{selector:"countries-map-base",template:'',styles:[""]}]}];Object.create;function i(a,d){var t="function"==typeof Symbol&&a[Symbol.iterator];if(!t)return a;var h,p,c=t.call(a),i=[];try{for(;(void 0===d||d-- >0)&&!(h=c.next()).done;)i.push(h.value)}catch(a){p={error:a}}finally{try{h&&!h.done&&(t=c.return)&&t.call(c)}finally{if(p)throw p.error}}return i}Object.create;(a.CharErrorCode||(a.CharErrorCode={})).loading="loading";var M=function(a){return null!=a},l=function(a){var d;return parseInt(null===(d=a.value)||void 0===d?void 0:d.toString())},x="countryxx",s=function(a){return a?"0.2%":"0.1%"},n=function(a){return a?"#888":"#afafaf"},e=function(a){return h.en[a]},o=function(){function t(a){this.cdRef=a,this.countryLabel="Country",this.valueLabel="Value",this.showCaption=!0,this.captionBelow=!0,this.minColor="white",this.maxColor="red",this.backgroundColor="white",this.noDataColor="#CFCFCF",this.exceptionColor="#FFEE58",this.chartReady=new d.EventEmitter,this.chartError=new d.EventEmitter,this.chartSelect=new d.EventEmitter,this.selection=null,this.innerLoading=!0}return Object.defineProperty(t.prototype,"loading",{get:function(){return this.innerLoading},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"selectionValue",{get:function(){return this.data[this.selection.countryId].value},enumerable:!1,configurable:!0}),t.prototype.getExtraSelected=function(a){var d=this.data[a].extra;return d&&Object.keys(d).map((function(a){return{key:a,val:d[a]}}))},t.prototype.selectCountry=function(a){this.selection=a?{countryId:a,countryName:e(a),extra:this.getExtraSelected(a)}:null,this.cdRef.detectChanges()},t.prototype.ngAfterViewInit=function(){this.initializeMap()},t.prototype.ngOnChanges=function(a){["data","minColor","maxColor","backgroundColor","noDataColor","exceptionColor"].some((function(d){return a[d]&&!a[d].firstChange}))&&this.initializeMap()},t.prototype.initializeMap=function(){var d=this;try{if(this.data){var t=M(this.maxValue)?this.maxValue:Object.values(this.data).reduce((function(a,d){return l(d)>a||null===a?l(d):a}),null),h=M(this.minValue)?this.minValue:Object.values(this.data).reduce((function(a,d){return l(d)=t?c[t]:d.exceptionColor)}),M))}),{})}else this.mapData={};var x=this.mapContent.nativeElement.children[0];x.style.backgroundColor=this.backgroundColor,x.querySelectorAll(".countryxx").forEach((function(a){var t=d.mapData[a.id.toLowerCase()],h=!!t&&!M(t.value);a.style.fill=t?h?d.exceptionColor:t.color:d.noDataColor,a.onmouseenter=d.countryHover.bind(d,a,!0),a.onmouseleave=d.countryHover.bind(d,a,!1)})),this.innerLoading=!1,this.cdRef.detectChanges(),this.onChartReady()}catch(d){this.onCharterror({id:a.CharErrorCode.loading,message:"Could not load"})}},t.prototype.countryHover=function(a,d){a.style.strokeWidth=s(d),a.style.stroke=n(d),a.querySelectorAll(".landxx").forEach((function(a){a.style.strokeWidth=s(d),a.style.stroke=n(d)}))},t.prototype.onChartReady=function(){this.innerLoading&&(this.innerLoading=!1,this.chartReady.emit())},t.prototype.onCharterror=function(a){this.chartError.emit(a)},t.prototype.onMapSelect=function(a){var d,t=a.target,h={selected:!1,value:null,country:null};if("ocean"===t.id)this.selectCountry(null);else for(d=t;!d.classList.contains(x);)d=d.parentNode;var p=this.mapData[null==d?void 0:d.id];p?(h.selected=!0,h.value=l(p),h.country=d.id.toUpperCase(),this.selectCountry(h.country)):this.selectCountry(null),this.chartSelect.emit(h)},t}();o.decorators=[{type:d.Component,args:[{selector:"countries-map",changeDetection:d.ChangeDetectionStrategy.OnPush,template:'
Loading map...
\n\n\n\n\n
\n
\n
\n {{countryLabel}}\n {{selection?.countryName}}\n
\n
\n {{valueLabel}}: \n {{selectionValue}}\n
\n
\n
\n
\n {{item.key}}:\n {{item.val}}\n
\n
\n
\n',styles:[":host{display:flex;flex-flow:column nowrap;justify-content:space-between;align-items:stretch;align-content:stretch}.major-block.loading{flex:0 1 auto;align-self:center}.major-block.loading .text{font-style:italic;font-family:sans-serif;color:grey}.major-block.cm-map-content{flex:0 1 auto}.major-block.goes-first{order:0}.major-block:not(.goes-first){order:1}.major-block.cm-caption-container{flex:0 1 auto;display:flex;flex-flow:column nowrap;justify-content:space-between}.cm-simple-caption{display:flex;flex-flow:row nowrap;justify-content:space-between}.cm-country-label{flex:0 1 auto;align-self:flex-start}.cm-value-label{flex:0 1 auto;align-self:flex-end}.cm-country-label,.cm-value-label{flex:0 1 auto}.cm-country-label .cm-country-name{font-weight:700}.cm-country-label .cm-country-name,.cm-value-label .cm-value-text{color:#333}.cm-country-label .cm-default-label,.cm-value-label .cm-value-text:not(.has-value){font-style:italic;color:#777}.cm-extended-caption{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));grid-gap:5px}.cm-extended-item{margin:5px auto}.cm-extended-item .cm-extended-label{font-weight:700}"]}]}],o.ctorParameters=function(){return[{type:d.ChangeDetectorRef}]},o.propDecorators={data:[{type:d.Input}],countryLabel:[{type:d.Input}],valueLabel:[{type:d.Input}],showCaption:[{type:d.Input}],captionBelow:[{type:d.Input}],minValue:[{type:d.Input}],maxValue:[{type:d.Input}],minColor:[{type:d.Input}],maxColor:[{type:d.Input}],backgroundColor:[{type:d.Input}],noDataColor:[{type:d.Input}],exceptionColor:[{type:d.Input}],chartReady:[{type:d.Output}],chartError:[{type:d.Output}],chartSelect:[{type:d.Output}],mapContent:[{type:d.ViewChild,args:["mapContent",{static:!1,read:d.ElementRef}]}]};var r=function(){};r.decorators=[{type:d.NgModule,args:[{imports:[t.CommonModule],declarations:[c,o],exports:[o]}]}],a.CountriesMapComponent=o,a.CountriesMapModule=r,a.ɵa=c,Object.defineProperty(a,"__esModule",{value:!0})})); //# sourceMappingURL=countries-map.umd.min.js.map \ No newline at end of file diff --git a/dist/countries-map/bundles/countries-map.umd.min.js.map b/dist/countries-map/bundles/countries-map.umd.min.js.map index da4567c..3d84eda 100644 --- a/dist/countries-map/bundles/countries-map.umd.min.js.map +++ b/dist/countries-map/bundles/countries-map.umd.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../../projects/lib/src/lib/base-map.component.ts","../../../node_modules/tslib/tslib.es6.js","../../../projects/lib/src/lib/chart-events.interface.ts","../../../projects/lib/src/lib/countries-map.component.ts","../../../projects/lib/src/lib/countries-map.module.ts"],"names":["Component","args","selector","template","Object","create","__read","o","n","m","Symbol","iterator","r","e","i","call","ar","next","done","push","value","error","CharErrorCode","exists","item","countryNum","_a","parseInt","toString","countryClass","getStrokeWidth","isHovered","getStrokeColor","countryName","countryCode","countriesEN","CountriesMapComponent","cdRef","this","countryLabel","valueLabel","showCaption","captionBelow","minColor","maxColor","backgroundColor","noDataColor","exceptionColor","chartReady","EventEmitter","chartError","chartSelect","selection","innerLoading","defineProperty","prototype","data","countryId","getExtraSelected","country","extra","keys","map","key","val","selectCountry","detectChanges","ngAfterViewInit","initializeMap","ngOnChanges","changes","some","attr","firstChange","_this","maxVal_1","maxValue","values","reduce","acc","curr","minVal_1","minValue","valToCol_1","scale","colors","assign","_b","mapData","entries","_d","countryVal","_c","toLowerCase","color","svgMap","mapContent","nativeElement","children","style","querySelectorAll","forEach","mapItem","id","isException","fill","onmouseenter","countryHover","bind","onmouseleave","onChartReady","onCharterror","loading","message","hovered","strokeWidth","stroke","emit","onMapSelect","newItem","target","event","selected","classList","contains","parentNode","toUpperCase","changeDetection","ChangeDetectionStrategy","OnPush","ChangeDetectorRef","Input","Output","ViewChild","static","read","ElementRef","NgModule","imports","CommonModule","declarations","CountriesMapBaseComponent","exports"],"mappings":"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","sourcesContent":["import { Component } from \"@angular/core\";\r\n\r\n/**\r\n * @private Do not use this component in your app. Use `CountriesMapComponent` instead.\r\n */\r\n@Component({\r\n selector: 'countries-map-base',\r\n templateUrl: './base-map.component.svg',\r\n styles: ['']\r\n})\r\nexport class CountriesMapBaseComponent {\r\n}\r\n","/*! *****************************************************************************\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 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\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\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 __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, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","export interface ChartSelectEvent {\r\n selected: boolean;\r\n value?: number;\r\n country: string;\r\n}\r\n\r\nexport enum CharErrorCode {loading = 'loading'}\r\n\r\nexport interface ChartErrorEvent {\r\n id: string | CharErrorCode;\r\n message: string;\r\n detailedMessage?: string;\r\n}\r\n","import {\r\n Component,\r\n ElementRef,\r\n Input,\r\n Output,\r\n ViewChild,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n EventEmitter,\r\n AfterViewInit,\r\n OnChanges,\r\n SimpleChanges\r\n} from '@angular/core';\r\nimport { CharErrorCode } from './chart-events.interface';\r\nimport type { ChartSelectEvent, ChartErrorEvent } from './chart-events.interface';\r\nimport type { CountriesData, SelectionExtra, DrawableCountries, Selection,\r\n ValidExtraData, DrawableCountry, CountryData } from './data-types.interface';\r\nimport { en as countriesEN } from '@jagomf/countrieslist';\r\nimport { scale } from 'chroma-js';\r\n\r\nconst exists = item => typeof item !== 'undefined' && item !== null;\r\nconst countryNum = (item: CountryData) => parseInt(item.value?.toString());\r\n\r\nconst countryClass = 'countryxx';\r\nconst oceanId = 'ocean';\r\nconst getStrokeWidth = (isHovered: boolean) => isHovered ? '0.2%' : '0.1%';\r\nconst getStrokeColor = (isHovered: boolean) => isHovered ? '#888' : '#afafaf';\r\n\r\nconst countryName = (countryCode: string): string => {\r\n return countriesEN[countryCode];\r\n};\r\n\r\n@Component({\r\n selector: 'countries-map',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n templateUrl: './countries-map.component.html',\r\n styleUrls: ['./countries-map.component.scss']\r\n})\r\nexport class CountriesMapComponent implements AfterViewInit, OnChanges {\r\n\r\n @Input() data: CountriesData;\r\n @Input() countryLabel = 'Country';\r\n @Input() valueLabel = 'Value';\r\n @Input() showCaption = true;\r\n @Input() captionBelow = true;\r\n @Input() minValue: number;\r\n @Input() maxValue: number;\r\n @Input() minColor = 'white';\r\n @Input() maxColor = 'red';\r\n @Input() backgroundColor = 'white';\r\n @Input() noDataColor = '#CFCFCF';\r\n @Input() exceptionColor = '#FFEE58';\r\n\r\n @Output() private readonly chartReady = new EventEmitter();\r\n @Output() private readonly chartError = new EventEmitter();\r\n @Output() private readonly chartSelect = new EventEmitter();\r\n\r\n @ViewChild('mapContent', { static: false, read: ElementRef }) private readonly mapContent: ElementRef;\r\n\r\n mapData: DrawableCountries;\r\n selection: Selection | null = null;\r\n\r\n private innerLoading = true;\r\n get loading(): boolean {\r\n return this.innerLoading;\r\n }\r\n\r\n get selectionValue(): ValidExtraData {\r\n return this.data[this.selection.countryId].value;\r\n }\r\n\r\n constructor(\r\n private readonly cdRef: ChangeDetectorRef,\r\n ) { }\r\n\r\n private getExtraSelected(country: string): SelectionExtra[] | null {\r\n const { extra } = this.data[country];\r\n return extra && Object.keys(extra).map(key => ({ key, val: extra[key] }));\r\n }\r\n\r\n private selectCountry(country?: string): void {\r\n this.selection = country ? {\r\n countryId: country,\r\n countryName: countryName(country),\r\n extra: this.getExtraSelected(country)\r\n } : null;\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.initializeMap();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const changedMapValueButNotOnStart = ['data', 'minColor', 'maxColor', 'backgroundColor', 'noDataColor', 'exceptionColor']\r\n .some(attr => changes[attr] && !changes[attr].firstChange);\r\n\r\n if (changedMapValueButNotOnStart) {\r\n this.initializeMap();\r\n }\r\n }\r\n\r\n private initializeMap(): void {\r\n try {\r\n // data is provided: might be able to paint countries in colors\r\n if (this.data) {\r\n // get highest value in range\r\n const maxVal = exists(this.maxValue) ? this.maxValue : Object.values(this.data).reduce(\r\n (acc, curr) => countryNum(curr) > acc || acc === null? countryNum(curr) : acc, null as number\r\n );\r\n // get lowest value in range\r\n const minVal = exists(this.minValue) ? this.minValue : Object.values(this.data).reduce(\r\n (acc, curr) => countryNum(curr) < acc || acc === null? countryNum(curr) : acc, null as number\r\n );\r\n\r\n // map values in range to colors\r\n const valToCol = scale([this.minColor, this.maxColor]).colors((maxVal ?? 1) - (minVal ?? 0) + 1).reduce((acc, curr, i) =>\r\n ({ ...acc, [i + minVal]: curr }), {} as { [key: number]: string }\r\n );\r\n\r\n // create local Map using provided data + calculated colors\r\n this.mapData = Object.entries(this.data).reduce((acc, [ countryId, countryVal ]) =>\r\n ({ ...acc,\r\n [countryId.toLowerCase()]: {\r\n ...countryVal,\r\n color: valToCol[countryNum(countryVal)] // value in between minVal and maxVal\r\n || (\r\n // value below minVal\r\n countryNum(countryVal) <= minVal ? valToCol[minVal] :\r\n // value above maxVal\r\n countryNum(countryVal) >= maxVal ? valToCol[maxVal]\r\n // weird; should never get to here\r\n : this.exceptionColor\r\n )\r\n } as DrawableCountry }),\r\n {} as DrawableCountries\r\n );\r\n\r\n // no data provided: will paint plain map\r\n } else {\r\n this.mapData = {};\r\n }\r\n\r\n const svgMap = this.mapContent.nativeElement.children[0] as SVGSVGElement;\r\n svgMap.style.backgroundColor = this.backgroundColor;\r\n svgMap.querySelectorAll(`.${countryClass}`).forEach(item => {\r\n const mapItem = this.mapData[item.id.toLowerCase()];\r\n const isException = mapItem ? !exists(mapItem.value) : false;\r\n item.style.fill = mapItem ? isException ? this.exceptionColor : mapItem.color : this.noDataColor;\r\n item.onmouseenter = this.countryHover.bind(this, item, true);\r\n item.onmouseleave = this.countryHover.bind(this, item, false);\r\n });\r\n\r\n this.innerLoading = false;\r\n this.cdRef.detectChanges();\r\n this.onChartReady();\r\n\r\n } catch (e) {\r\n this.onCharterror({ id: CharErrorCode.loading, message: 'Could not load' });\r\n }\r\n }\r\n\r\n private countryHover(item: SVGElement, hovered: boolean): void {\r\n item.style.strokeWidth = getStrokeWidth(hovered);\r\n item.style.stroke = getStrokeColor(hovered);\r\n item.querySelectorAll('.landxx').forEach(i => {\r\n i.style.strokeWidth = getStrokeWidth(hovered);\r\n i.style.stroke = getStrokeColor(hovered);\r\n });\r\n }\r\n\r\n private onChartReady(): void {\r\n if (this.innerLoading) {\r\n this.innerLoading = false;\r\n this.chartReady.emit();\r\n }\r\n }\r\n\r\n private onCharterror(error: ChartErrorEvent): void {\r\n this.chartError.emit(error);\r\n }\r\n\r\n onMapSelect({ target }: { target?: SVGElement }): void {\r\n const event: ChartSelectEvent = {\r\n selected: false,\r\n value: null,\r\n country: null\r\n };\r\n\r\n let newItem: SVGElement;\r\n if (target.id === oceanId) {\r\n this.selectCountry(null);\r\n\r\n } else {\r\n newItem = target;\r\n while (!newItem.classList.contains(countryClass)) {\r\n newItem = newItem.parentNode as SVGElement;\r\n }\r\n }\r\n\r\n const country = this.mapData[newItem?.id];\r\n if (country) {\r\n event.selected = true;\r\n event.value = countryNum(country);\r\n event.country = newItem.id.toUpperCase();\r\n this.selectCountry(event.country);\r\n } else {\r\n this.selectCountry(null);\r\n }\r\n this.chartSelect.emit(event);\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CountriesMapBaseComponent } from './base-map.component';\r\nimport { CountriesMapComponent } from './countries-map.component';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n ],\r\n declarations: [CountriesMapBaseComponent, CountriesMapComponent],\r\n exports: [\r\n CountriesMapComponent\r\n ]\r\n})\r\nexport class CountriesMapModule { }\r\n"]} \ No newline at end of file +{"version":3,"sources":["../../../projects/lib/src/lib/base-map.component.ts","../../../node_modules/tslib/tslib.es6.js","../../../projects/lib/src/lib/chart-events.interface.ts","../../../projects/lib/src/lib/countries-map.component.ts","../../../projects/lib/src/lib/countries-map.module.ts"],"names":["Component","args","selector","template","Object","create","__read","o","n","m","Symbol","iterator","r","e","i","call","ar","next","done","push","value","error","CharErrorCode","exists","item","countryNum","_a","parseInt","toString","countryClass","getStrokeWidth","isHovered","getStrokeColor","countryName","countryCode","countriesEN","CountriesMapComponent","cdRef","this","countryLabel","valueLabel","showCaption","captionBelow","minColor","maxColor","backgroundColor","noDataColor","exceptionColor","chartReady","EventEmitter","chartError","chartSelect","selection","innerLoading","defineProperty","prototype","data","countryId","getExtraSelected","country","extra","keys","map","key","val","selectCountry","detectChanges","ngAfterViewInit","initializeMap","ngOnChanges","changes","some","attr","firstChange","_this","maxVal_1","maxValue","values","reduce","acc","curr","minVal_1","minValue","valToCol_1","scale","colors","assign","_b","mapData","entries","_d","countryVal","_c","toLowerCase","color","svgMap","mapContent","nativeElement","children","style","querySelectorAll","forEach","mapItem","id","isException","fill","onmouseenter","countryHover","bind","onmouseleave","onChartReady","onCharterror","loading","message","hovered","strokeWidth","stroke","emit","onMapSelect","newItem","target","event","selected","classList","contains","parentNode","toUpperCase","changeDetection","ChangeDetectionStrategy","OnPush","ChangeDetectorRef","Input","Output","ViewChild","static","read","ElementRef","NgModule","imports","CommonModule","declarations","CountriesMapBaseComponent","exports"],"mappings":"ufAUA,iCALCA,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,qBACVC,SAAA,ggw0BACS,QCiGkBC,OAAOC,gBAwBpBC,EAAOC,EAAGC,GACtB,IAAIC,EAAsB,mBAAXC,QAAyBH,EAAEG,OAAOC,UACjD,IAAKF,EAAG,OAAOF,EACf,IAAmBK,EAAYC,EAA3BC,EAAIL,EAAEM,KAAKR,GAAOS,EAAK,GAC3B,IACI,WAAc,IAANR,GAAgBA,KAAM,MAAQI,EAAIE,EAAEG,QAAQC,MAAMF,EAAGG,KAAKP,EAAEQ,OAExE,MAAOC,GAASR,EAAI,CAAEQ,MAAOA,WAEzB,IACQT,IAAMA,EAAEM,OAAST,EAAIK,EAAU,SAAIL,EAAEM,KAAKD,WAExC,GAAID,EAAG,MAAMA,EAAEQ,OAE7B,OAAOL,EAoDcZ,OAAOC,QC7LpBiB,EAAAA,gBAAAA,EAAAA,cAAa,KAAE,QAAA,UCc3B,IAAMC,EAAS,SAAAC,GAAQ,OAAA,MAAOA,GACxBC,EAAa,SAACD,GAAiB,IAAAE,EAAK,OAAAC,SAAmB,QAAXD,EAACF,EAAKJ,aAAK,IAAAM,OAAA,EAAAA,EAAEE,aAEzDC,EAAe,YAEfC,EAAiB,SAACC,GAAuB,OAAAA,EAAY,OAAS,QAC9DC,EAAiB,SAACD,GAAuB,OAAAA,EAAY,OAAS,WAE9DE,EAAc,SAACC,GACnB,OAAOC,EAAAA,GAAYD,iBA0CnB,SAAAE,EACmBC,GAAAC,KAAAD,MAAAA,EA/BVC,KAAAC,aAAe,UACfD,KAAAE,WAAa,QACbF,KAAAG,aAAc,EACdH,KAAAI,cAAe,EAGfJ,KAAAK,SAAW,QACXL,KAAAM,SAAW,MACXN,KAAAO,gBAAkB,QAClBP,KAAAQ,YAAc,UACdR,KAAAS,eAAiB,UAECT,KAAAU,WAAa,IAAIC,EAAAA,aACjBX,KAAAY,WAAa,IAAID,EAAAA,aACjBX,KAAAa,YAAc,IAAIF,EAAAA,aAK7CX,KAAAc,UAA8B,KAEtBd,KAAAe,cAAe,SACvBjD,OAAAkD,eAAIlB,EAAAmB,UAAA,UAAO,KAAX,WACE,OAAOjB,KAAKe,8CAGdjD,OAAAkD,eAAIlB,EAAAmB,UAAA,iBAAc,KAAlB,WACE,OAAOjB,KAAKkB,KAAKlB,KAAKc,UAAUK,WAAWrC,uCAOrCgB,EAAAmB,UAAAG,iBAAA,SAAiBC,GACf,IAAAC,EAAUtB,KAAKkB,KAAKG,GAAQC,MACpC,OAAOA,GAASxD,OAAOyD,KAAKD,GAAOE,KAAI,SAAAC,GAAO,MAAA,CAAGA,IAAGA,EAAEC,IAAKJ,EAAMG,QAG3D3B,EAAAmB,UAAAU,cAAA,SAAcN,GACpBrB,KAAKc,UAAYO,EAAU,CACzBF,UAAWE,EACX1B,YAAaA,EAAY0B,GACzBC,MAAOtB,KAAKoB,iBAAiBC,IAC3B,KACJrB,KAAKD,MAAM6B,iBAGb9B,EAAAmB,UAAAY,gBAAA,WACE7B,KAAK8B,iBAGPhC,EAAAmB,UAAAc,YAAA,SAAYC,GAC2B,CAAC,OAAQ,WAAY,WAAY,kBAAmB,cAAe,kBACrGC,MAAK,SAAAC,GAAQ,OAAAF,EAAQE,KAAUF,EAAQE,GAAMC,gBAG9CnC,KAAK8B,iBAIDhC,EAAAmB,UAAAa,cAAA,WAAA,IAAAM,EAAApC,KACN,IAEE,GAAIA,KAAKkB,KAAM,CAEb,IAAMmB,EAASpD,EAAOe,KAAKsC,UAAYtC,KAAKsC,SAAWxE,OAAOyE,OAAOvC,KAAKkB,MAAMsB,QAC9E,SAACC,EAAKC,GAAS,OAAAvD,EAAWuD,GAAQD,GAAe,OAARA,EAActD,EAAWuD,GAAQD,IAAK,MAG3EE,EAAS1D,EAAOe,KAAK4C,UAAY5C,KAAK4C,SAAW9E,OAAOyE,OAAOvC,KAAKkB,MAAMsB,QAC9E,SAACC,EAAKC,GAAS,OAAAvD,EAAWuD,GAAQD,GAAe,OAARA,EAActD,EAAWuD,GAAQD,IAAK,MAI3EI,EAAWC,EAAAA,MAAM,CAAC9C,KAAKK,SAAUL,KAAKM,WAAWyC,QAAQV,MAAAA,EAAAA,EAAU,IAAMM,MAAAA,EAAAA,EAAU,GAAK,GAAGH,QAAO,SAACC,EAAKC,EAAMlE,SAClH,OAAAV,OAAAkF,OAAAlF,OAAAkF,OAAA,GAAMP,KAAGQ,EAAA,IAAGzE,EAAImE,GAASD,EAAIO,MAAK,IAIpCjD,KAAKkD,QAAUpF,OAAOqF,QAAQnD,KAAKkB,MAAMsB,QAAO,SAACC,EAAKQ,SAAAG,EAAApF,EAAAiF,EAAA,GAAE9B,EAASiC,EAAA,GAAEC,EAAUD,EAAA,GAC3E,OAAAtF,OAAAkF,OAAAlF,OAAAkF,OAAA,GAAMP,KAAGa,EAAA,IACNnC,EAAUoC,eAAgBzF,OAAAkF,OAAAlF,OAAAkF,OAAA,GACtBK,GAAU,CACbG,MAAOX,EAAS1D,EAAWkE,MAGvBlE,EAAWkE,IAAeV,EAASE,EAASF,GAE5CxD,EAAWkE,IAAehB,EAASQ,EAASR,GAExCD,EAAK3B,kBAEK6C,MACtB,SAKFtD,KAAKkD,QAAU,GAGjB,IAAMO,EAASzD,KAAK0D,WAAWC,cAAcC,SAAS,GACtDH,EAAOI,MAAMtD,gBAAkBP,KAAKO,gBACpCkD,EAAOK,iBAAgC,cAAoBC,SAAQ,SAAA7E,GACjE,IAAM8E,EAAU5B,EAAKc,QAAQhE,EAAK+E,GAAGV,eAC/BW,IAAcF,IAAW/E,EAAO+E,EAAQlF,OAC9CI,EAAK2E,MAAMM,KAAOH,EAAUE,EAAc9B,EAAK3B,eAAiBuD,EAAQR,MAAQpB,EAAK5B,YACrFtB,EAAKkF,aAAehC,EAAKiC,aAAaC,KAAKlC,EAAMlD,GAAM,GACvDA,EAAKqF,aAAenC,EAAKiC,aAAaC,KAAKlC,EAAMlD,GAAM,MAGzDc,KAAKe,cAAe,EACpBf,KAAKD,MAAM6B,gBACX5B,KAAKwE,eAEL,MAAOjG,GACPyB,KAAKyE,aAAa,CAAER,GAAIjF,EAAAA,cAAc0F,QAASC,QAAS,qBAIpD7E,EAAAmB,UAAAoD,aAAA,SAAanF,EAAkB0F,GACrC1F,EAAK2E,MAAMgB,YAAcrF,EAAeoF,GACxC1F,EAAK2E,MAAMiB,OAASpF,EAAekF,GACnC1F,EAAK4E,iBAA6B,WAAWC,SAAQ,SAAAvF,GACnDA,EAAEqF,MAAMgB,YAAcrF,EAAeoF,GACrCpG,EAAEqF,MAAMiB,OAASpF,EAAekF,OAI5B9E,EAAAmB,UAAAuD,aAAA,WACFxE,KAAKe,eACPf,KAAKe,cAAe,EACpBf,KAAKU,WAAWqE,SAIZjF,EAAAmB,UAAAwD,aAAA,SAAa1F,GACnBiB,KAAKY,WAAWmE,KAAKhG,IAGvBe,EAAAmB,UAAA+D,YAAA,SAAY/B,OAONgC,EAPQC,EAAMjC,EAAAiC,OACZC,EAA0B,CAC9BC,UAAU,EACVtG,MAAO,KACPuC,QAAS,MAIX,GAtKY,UAsKR6D,EAAOjB,GACTjE,KAAK2B,cAAc,WAInB,IADAsD,EAAUC,GACFD,EAAQI,UAAUC,SAAS/F,IACjC0F,EAAUA,EAAQM,WAItB,IAAMlE,EAAUrB,KAAKkD,QAAQ+B,MAAAA,OAAO,EAAPA,EAAShB,IAClC5C,GACF8D,EAAMC,UAAW,EACjBD,EAAMrG,MAAQK,EAAWkC,GACzB8D,EAAM9D,QAAU4D,EAAQhB,GAAGuB,cAC3BxF,KAAK2B,cAAcwD,EAAM9D,UAEzBrB,KAAK2B,cAAc,MAErB3B,KAAKa,YAAYkE,KAAKI,6BAjLzBzH,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,gBACV6H,gBAAiBC,EAAAA,wBAAwBC,OACzC9H,SAAA,u4EA5BA+H,EAAAA,mDAiCCC,EAAAA,4BACAA,EAAAA,0BACAA,EAAAA,2BACAA,EAAAA,4BACAA,EAAAA,wBACAA,EAAAA,wBACAA,EAAAA,wBACAA,EAAAA,wBACAA,EAAAA,+BACAA,EAAAA,2BACAA,EAAAA,8BACAA,EAAAA,0BAEAC,EAAAA,2BACAA,EAAAA,4BACAA,EAAAA,2BAEAC,EAAAA,UAASpI,KAAA,CAAC,aAAc,CAAEqI,QAAQ,EAAOC,KAAMC,EAAAA,sBC3ClD,iCATCC,EAAAA,SAAQxI,KAAA,CAAC,CACRyI,QAAS,CACPC,EAAAA,cAEFC,aAAc,CAACC,EAA2BzG,GAC1C0G,QAAS,CACP1G","sourcesContent":["import { Component } from \"@angular/core\";\n\n/**\n * @private Do not use this component in your app. Use `CountriesMapComponent` instead.\n */\n@Component({\n selector: 'countries-map-base',\n templateUrl: './base-map.component.svg',\n styles: ['']\n})\nexport class CountriesMapBaseComponent {\n}\n","/*! *****************************************************************************\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 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\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\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 __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, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","export interface ChartSelectEvent {\n selected: boolean;\n value?: number;\n country: string;\n}\n\nexport enum CharErrorCode {loading = 'loading'}\n\nexport interface ChartErrorEvent {\n id: string | CharErrorCode;\n message: string;\n detailedMessage?: string;\n}\n","import {\n Component,\n ElementRef,\n Input,\n Output,\n ViewChild,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n EventEmitter,\n AfterViewInit,\n OnChanges,\n SimpleChanges\n} from '@angular/core';\nimport { CharErrorCode } from './chart-events.interface';\nimport type { ChartSelectEvent, ChartErrorEvent } from './chart-events.interface';\nimport type { CountriesData, SelectionExtra, DrawableCountries, Selection,\n ValidExtraData, DrawableCountry, CountryData } from './data-types.interface';\nimport { en as countriesEN } from '@jagomf/countrieslist';\nimport { scale } from 'chroma-js';\n\nconst exists = item => typeof item !== 'undefined' && item !== null;\nconst countryNum = (item: CountryData) => parseInt(item.value?.toString());\n\nconst countryClass = 'countryxx';\nconst oceanId = 'ocean';\nconst getStrokeWidth = (isHovered: boolean) => isHovered ? '0.2%' : '0.1%';\nconst getStrokeColor = (isHovered: boolean) => isHovered ? '#888' : '#afafaf';\n\nconst countryName = (countryCode: string): string => {\n return countriesEN[countryCode];\n};\n\n@Component({\n selector: 'countries-map',\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './countries-map.component.html',\n styleUrls: ['./countries-map.component.scss']\n})\nexport class CountriesMapComponent implements AfterViewInit, OnChanges {\n\n @Input() data: CountriesData;\n @Input() countryLabel = 'Country';\n @Input() valueLabel = 'Value';\n @Input() showCaption = true;\n @Input() captionBelow = true;\n @Input() minValue: number;\n @Input() maxValue: number;\n @Input() minColor = 'white';\n @Input() maxColor = 'red';\n @Input() backgroundColor = 'white';\n @Input() noDataColor = '#CFCFCF';\n @Input() exceptionColor = '#FFEE58';\n\n @Output() private readonly chartReady = new EventEmitter();\n @Output() private readonly chartError = new EventEmitter();\n @Output() private readonly chartSelect = new EventEmitter();\n\n @ViewChild('mapContent', { static: false, read: ElementRef }) private readonly mapContent: ElementRef;\n\n mapData: DrawableCountries;\n selection: Selection | null = null;\n\n private innerLoading = true;\n get loading(): boolean {\n return this.innerLoading;\n }\n\n get selectionValue(): ValidExtraData {\n return this.data[this.selection.countryId].value;\n }\n\n constructor(\n private readonly cdRef: ChangeDetectorRef,\n ) { }\n\n private getExtraSelected(country: string): SelectionExtra[] | null {\n const { extra } = this.data[country];\n return extra && Object.keys(extra).map(key => ({ key, val: extra[key] }));\n }\n\n private selectCountry(country?: string): void {\n this.selection = country ? {\n countryId: country,\n countryName: countryName(country),\n extra: this.getExtraSelected(country)\n } : null;\n this.cdRef.detectChanges();\n }\n\n ngAfterViewInit(): void {\n this.initializeMap();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const changedMapValueButNotOnStart = ['data', 'minColor', 'maxColor', 'backgroundColor', 'noDataColor', 'exceptionColor']\n .some(attr => changes[attr] && !changes[attr].firstChange);\n\n if (changedMapValueButNotOnStart) {\n this.initializeMap();\n }\n }\n\n private initializeMap(): void {\n try {\n // data is provided: might be able to paint countries in colors\n if (this.data) {\n // get highest value in range\n const maxVal = exists(this.maxValue) ? this.maxValue : Object.values(this.data).reduce(\n (acc, curr) => countryNum(curr) > acc || acc === null? countryNum(curr) : acc, null as number\n );\n // get lowest value in range\n const minVal = exists(this.minValue) ? this.minValue : Object.values(this.data).reduce(\n (acc, curr) => countryNum(curr) < acc || acc === null? countryNum(curr) : acc, null as number\n );\n\n // map values in range to colors\n const valToCol = scale([this.minColor, this.maxColor]).colors((maxVal ?? 1) - (minVal ?? 0) + 1).reduce((acc, curr, i) =>\n ({ ...acc, [i + minVal]: curr }), {} as { [key: number]: string }\n );\n\n // create local Map using provided data + calculated colors\n this.mapData = Object.entries(this.data).reduce((acc, [ countryId, countryVal ]) =>\n ({ ...acc,\n [countryId.toLowerCase()]: {\n ...countryVal,\n color: valToCol[countryNum(countryVal)] // value in between minVal and maxVal\n || (\n // value below minVal\n countryNum(countryVal) <= minVal ? valToCol[minVal] :\n // value above maxVal\n countryNum(countryVal) >= maxVal ? valToCol[maxVal]\n // weird; should never get to here\n : this.exceptionColor\n )\n } as DrawableCountry }),\n {} as DrawableCountries\n );\n\n // no data provided: will paint plain map\n } else {\n this.mapData = {};\n }\n\n const svgMap = this.mapContent.nativeElement.children[0] as SVGSVGElement;\n svgMap.style.backgroundColor = this.backgroundColor;\n svgMap.querySelectorAll(`.${countryClass}`).forEach(item => {\n const mapItem = this.mapData[item.id.toLowerCase()];\n const isException = mapItem ? !exists(mapItem.value) : false;\n item.style.fill = mapItem ? isException ? this.exceptionColor : mapItem.color : this.noDataColor;\n item.onmouseenter = this.countryHover.bind(this, item, true);\n item.onmouseleave = this.countryHover.bind(this, item, false);\n });\n\n this.innerLoading = false;\n this.cdRef.detectChanges();\n this.onChartReady();\n\n } catch (e) {\n this.onCharterror({ id: CharErrorCode.loading, message: 'Could not load' });\n }\n }\n\n private countryHover(item: SVGElement, hovered: boolean): void {\n item.style.strokeWidth = getStrokeWidth(hovered);\n item.style.stroke = getStrokeColor(hovered);\n item.querySelectorAll('.landxx').forEach(i => {\n i.style.strokeWidth = getStrokeWidth(hovered);\n i.style.stroke = getStrokeColor(hovered);\n });\n }\n\n private onChartReady(): void {\n if (this.innerLoading) {\n this.innerLoading = false;\n this.chartReady.emit();\n }\n }\n\n private onCharterror(error: ChartErrorEvent): void {\n this.chartError.emit(error);\n }\n\n onMapSelect({ target }: { target?: SVGElement }): void {\n const event: ChartSelectEvent = {\n selected: false,\n value: null,\n country: null\n };\n\n let newItem: SVGElement;\n if (target.id === oceanId) {\n this.selectCountry(null);\n\n } else {\n newItem = target;\n while (!newItem.classList.contains(countryClass)) {\n newItem = newItem.parentNode as SVGElement;\n }\n }\n\n const country = this.mapData[newItem?.id];\n if (country) {\n event.selected = true;\n event.value = countryNum(country);\n event.country = newItem.id.toUpperCase();\n this.selectCountry(event.country);\n } else {\n this.selectCountry(null);\n }\n this.chartSelect.emit(event);\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CountriesMapBaseComponent } from './base-map.component';\nimport { CountriesMapComponent } from './countries-map.component';\n\n@NgModule({\n imports: [\n CommonModule\n ],\n declarations: [CountriesMapBaseComponent, CountriesMapComponent],\n exports: [\n CountriesMapComponent\n ]\n})\nexport class CountriesMapModule { }\n"]} \ No newline at end of file diff --git a/dist/countries-map/countries-map.metadata.json b/dist/countries-map/countries-map.metadata.json index 2618e21..a1497fe 100644 --- a/dist/countries-map/countries-map.metadata.json +++ b/dist/countries-map/countries-map.metadata.json @@ -1 +1 @@ -{"__symbolic":"module","version":4,"metadata":{"CountriesMapModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":5,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":7,"character":4}],"declarations":[{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"CountriesMapComponent"}],"exports":[{"__symbolic":"reference","name":"CountriesMapComponent"}]}]}],"members":{}},"CountriesMapComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":32,"character":1},"arguments":[{"selector":"countries-map","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":34,"character":19},"member":"OnPush"},"template":"
Loading map...
\r\n\r\n\r\n\r\n\r\n
\r\n
\r\n
\r\n {{countryLabel}}\r\n {{selection?.countryName}}\r\n
\r\n
\r\n {{valueLabel}}: \r\n {{selectionValue}}\r\n
\r\n
\r\n
0\">\r\n
\r\n {{item.key}}:\r\n {{item.val}}\r\n
\r\n
\r\n
\r\n","styles":[":host{display:flex;flex-flow:column nowrap;justify-content:space-between;align-items:stretch;align-content:stretch}.major-block.loading{flex:0 1 auto;align-self:center}.major-block.loading .text{font-style:italic;font-family:sans-serif;color:grey}.major-block.cm-map-content{flex:0 1 auto}.major-block.goes-first{order:0}.major-block:not(.goes-first){order:1}.major-block.cm-caption-container{flex:0 1 auto;display:flex;flex-flow:column nowrap;justify-content:space-between}.cm-simple-caption{display:flex;flex-flow:row nowrap;justify-content:space-between}.cm-country-label{flex:0 1 auto;align-self:flex-start}.cm-value-label{flex:0 1 auto;align-self:flex-end}.cm-country-label,.cm-value-label{flex:0 1 auto}.cm-country-label .cm-country-name{font-weight:700}.cm-country-label .cm-country-name,.cm-value-label .cm-value-text{color:#333}.cm-country-label .cm-default-label,.cm-value-label .cm-value-text:not(.has-value){font-style:italic;color:#777}.cm-extended-caption{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));grid-gap:5px}.cm-extended-item{margin:5px auto}.cm-extended-item .cm-extended-label{font-weight:700}"]}]}],"members":{"data":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":40,"character":3}}]}],"countryLabel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":41,"character":3}}]}],"valueLabel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":42,"character":3}}]}],"showCaption":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":43,"character":3}}]}],"captionBelow":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":44,"character":3}}]}],"minValue":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":45,"character":3}}]}],"maxValue":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":46,"character":3}}]}],"minColor":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":47,"character":3}}]}],"maxColor":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":48,"character":3}}]}],"backgroundColor":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":49,"character":3}}]}],"noDataColor":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":50,"character":3}}]}],"exceptionColor":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":51,"character":3}}]}],"chartReady":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":53,"character":3}}]}],"chartError":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":54,"character":3}}]}],"chartSelect":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":55,"character":3}}]}],"mapContent":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":57,"character":3},"arguments":["mapContent",{"static":false,"read":{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":57,"character":50}}]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":72,"character":28}]}],"getExtraSelected":[{"__symbolic":"method"}],"selectCountry":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"initializeMap":[{"__symbolic":"method"}],"countryHover":[{"__symbolic":"method"}],"onChartReady":[{"__symbolic":"method"}],"onCharterror":[{"__symbolic":"method"}],"onMapSelect":[{"__symbolic":"method"}]}},"CountriesData":{"__symbolic":"interface"},"CountryData":{"__symbolic":"interface"},"CountryExtraData":{"__symbolic":"interface"},"ChartErrorEvent":{"__symbolic":"interface"},"ChartSelectEvent":{"__symbolic":"interface"},"CharErrorCode":{"loading":"loading"},"ɵa":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":5,"character":1},"arguments":[{"selector":"countries-map-base","styles":[""],"template":""}]}],"members":{}}},"origins":{"CountriesMapModule":"./lib/countries-map.module","CountriesMapComponent":"./lib/countries-map.component","CountriesData":"./lib/data-types.interface","CountryData":"./lib/data-types.interface","CountryExtraData":"./lib/data-types.interface","ChartErrorEvent":"./lib/chart-events.interface","ChartSelectEvent":"./lib/chart-events.interface","CharErrorCode":"./lib/chart-events.interface","ɵa":"./lib/base-map.component"},"importAs":"countries-map"} \ No newline at end of file +{"__symbolic":"module","version":4,"metadata":{"CountriesMapModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":5,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":7,"character":4}],"declarations":[{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"CountriesMapComponent"}],"exports":[{"__symbolic":"reference","name":"CountriesMapComponent"}]}]}],"members":{}},"CountriesMapComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":32,"character":1},"arguments":[{"selector":"countries-map","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":34,"character":19},"member":"OnPush"},"template":"
Loading map...
\n\n\n\n\n
\n
\n
\n {{countryLabel}}\n {{selection?.countryName}}\n
\n
\n {{valueLabel}}: \n {{selectionValue}}\n
\n
\n
0\">\n
\n {{item.key}}:\n {{item.val}}\n
\n
\n
\n","styles":[":host{display:flex;flex-flow:column nowrap;justify-content:space-between;align-items:stretch;align-content:stretch}.major-block.loading{flex:0 1 auto;align-self:center}.major-block.loading .text{font-style:italic;font-family:sans-serif;color:grey}.major-block.cm-map-content{flex:0 1 auto}.major-block.goes-first{order:0}.major-block:not(.goes-first){order:1}.major-block.cm-caption-container{flex:0 1 auto;display:flex;flex-flow:column nowrap;justify-content:space-between}.cm-simple-caption{display:flex;flex-flow:row nowrap;justify-content:space-between}.cm-country-label{flex:0 1 auto;align-self:flex-start}.cm-value-label{flex:0 1 auto;align-self:flex-end}.cm-country-label,.cm-value-label{flex:0 1 auto}.cm-country-label .cm-country-name{font-weight:700}.cm-country-label .cm-country-name,.cm-value-label .cm-value-text{color:#333}.cm-country-label .cm-default-label,.cm-value-label .cm-value-text:not(.has-value){font-style:italic;color:#777}.cm-extended-caption{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));grid-gap:5px}.cm-extended-item{margin:5px auto}.cm-extended-item .cm-extended-label{font-weight:700}"]}]}],"members":{"data":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":40,"character":3}}]}],"countryLabel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":41,"character":3}}]}],"valueLabel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":42,"character":3}}]}],"showCaption":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":43,"character":3}}]}],"captionBelow":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":44,"character":3}}]}],"minValue":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":45,"character":3}}]}],"maxValue":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":46,"character":3}}]}],"minColor":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":47,"character":3}}]}],"maxColor":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":48,"character":3}}]}],"backgroundColor":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":49,"character":3}}]}],"noDataColor":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":50,"character":3}}]}],"exceptionColor":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":51,"character":3}}]}],"chartReady":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":53,"character":3}}]}],"chartError":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":54,"character":3}}]}],"chartSelect":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":55,"character":3}}]}],"mapContent":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":57,"character":3},"arguments":["mapContent",{"static":false,"read":{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":57,"character":50}}]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":72,"character":28}]}],"getExtraSelected":[{"__symbolic":"method"}],"selectCountry":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"initializeMap":[{"__symbolic":"method"}],"countryHover":[{"__symbolic":"method"}],"onChartReady":[{"__symbolic":"method"}],"onCharterror":[{"__symbolic":"method"}],"onMapSelect":[{"__symbolic":"method"}]}},"CountriesData":{"__symbolic":"interface"},"CountryData":{"__symbolic":"interface"},"CountryExtraData":{"__symbolic":"interface"},"ChartErrorEvent":{"__symbolic":"interface"},"ChartSelectEvent":{"__symbolic":"interface"},"CharErrorCode":{"loading":"loading"},"ɵa":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":5,"character":1},"arguments":[{"selector":"countries-map-base","styles":[""],"template":""}]}],"members":{}}},"origins":{"CountriesMapModule":"./lib/countries-map.module","CountriesMapComponent":"./lib/countries-map.component","CountriesData":"./lib/data-types.interface","CountryData":"./lib/data-types.interface","CountryExtraData":"./lib/data-types.interface","ChartErrorEvent":"./lib/chart-events.interface","ChartSelectEvent":"./lib/chart-events.interface","CharErrorCode":"./lib/chart-events.interface","ɵa":"./lib/base-map.component"},"importAs":"countries-map"} \ No newline at end of file diff --git a/dist/countries-map/esm2015/lib/base-map.component.js b/dist/countries-map/esm2015/lib/base-map.component.js index 0c4d46b..1d5790f 100644 --- a/dist/countries-map/esm2015/lib/base-map.component.js +++ b/dist/countries-map/esm2015/lib/base-map.component.js @@ -7,8 +7,8 @@ export class CountriesMapBaseComponent { CountriesMapBaseComponent.decorators = [ { type: Component, args: [{ selector: 'countries-map-base', - template: "", + template: "", styles: [''] },] } ]; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1tYXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbGliL3NyYy9saWIvYmFzZS1tYXAuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUM7O0dBRUc7QUFNSCxNQUFNLE9BQU8seUJBQXlCOzs7WUFMckMsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxvQkFBb0I7Z0JBQzlCLHltZzFCQUF1Qzt5QkFDOUIsRUFBRTthQUNaIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbi8qKlxyXG4gKiBAcHJpdmF0ZSBEbyBub3QgdXNlIHRoaXMgY29tcG9uZW50IGluIHlvdXIgYXBwLiBVc2UgYENvdW50cmllc01hcENvbXBvbmVudGAgaW5zdGVhZC5cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY291bnRyaWVzLW1hcC1iYXNlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYmFzZS1tYXAuY29tcG9uZW50LnN2ZycsXHJcbiAgc3R5bGVzOiBbJyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb3VudHJpZXNNYXBCYXNlQ29tcG9uZW50IHtcclxufVxyXG4iXX0= \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1tYXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbGliL3NyYy9saWIvYmFzZS1tYXAuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUM7O0dBRUc7QUFNSCxNQUFNLE9BQU8seUJBQXlCOzs7WUFMckMsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxvQkFBb0I7Z0JBQzlCLDZrazFCQUF1Qzt5QkFDOUIsRUFBRTthQUNaIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuLyoqXG4gKiBAcHJpdmF0ZSBEbyBub3QgdXNlIHRoaXMgY29tcG9uZW50IGluIHlvdXIgYXBwLiBVc2UgYENvdW50cmllc01hcENvbXBvbmVudGAgaW5zdGVhZC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY291bnRyaWVzLW1hcC1iYXNlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Jhc2UtbWFwLmNvbXBvbmVudC5zdmcnLFxuICBzdHlsZXM6IFsnJ11cbn0pXG5leHBvcnQgY2xhc3MgQ291bnRyaWVzTWFwQmFzZUNvbXBvbmVudCB7XG59XG4iXX0= \ No newline at end of file diff --git a/dist/countries-map/esm2015/lib/chart-events.interface.js b/dist/countries-map/esm2015/lib/chart-events.interface.js index 394d89c..ed31819 100644 --- a/dist/countries-map/esm2015/lib/chart-events.interface.js +++ b/dist/countries-map/esm2015/lib/chart-events.interface.js @@ -2,4 +2,4 @@ export var CharErrorCode; (function (CharErrorCode) { CharErrorCode["loading"] = "loading"; })(CharErrorCode || (CharErrorCode = {})); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQtZXZlbnRzLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2xpYi9zcmMvbGliL2NoYXJ0LWV2ZW50cy5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsTUFBTSxDQUFOLElBQVksYUFBbUM7QUFBL0MsV0FBWSxhQUFhO0lBQUUsb0NBQW1CLENBQUE7QUFBQSxDQUFDLEVBQW5DLGFBQWEsS0FBYixhQUFhLFFBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBDaGFydFNlbGVjdEV2ZW50IHtcclxuICBzZWxlY3RlZDogYm9vbGVhbjtcclxuICB2YWx1ZT86IG51bWJlcjtcclxuICBjb3VudHJ5OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIENoYXJFcnJvckNvZGUge2xvYWRpbmcgPSAnbG9hZGluZyd9XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENoYXJ0RXJyb3JFdmVudCB7XHJcbiAgaWQ6IHN0cmluZyB8IENoYXJFcnJvckNvZGU7XHJcbiAgbWVzc2FnZTogc3RyaW5nO1xyXG4gIGRldGFpbGVkTWVzc2FnZT86IHN0cmluZztcclxufVxyXG4iXX0= \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQtZXZlbnRzLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2xpYi9zcmMvbGliL2NoYXJ0LWV2ZW50cy5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsTUFBTSxDQUFOLElBQVksYUFBbUM7QUFBL0MsV0FBWSxhQUFhO0lBQUUsb0NBQW1CLENBQUE7QUFBQSxDQUFDLEVBQW5DLGFBQWEsS0FBYixhQUFhLFFBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBDaGFydFNlbGVjdEV2ZW50IHtcbiAgc2VsZWN0ZWQ6IGJvb2xlYW47XG4gIHZhbHVlPzogbnVtYmVyO1xuICBjb3VudHJ5OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBlbnVtIENoYXJFcnJvckNvZGUge2xvYWRpbmcgPSAnbG9hZGluZyd9XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hhcnRFcnJvckV2ZW50IHtcbiAgaWQ6IHN0cmluZyB8IENoYXJFcnJvckNvZGU7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgZGV0YWlsZWRNZXNzYWdlPzogc3RyaW5nO1xufVxuIl19 \ No newline at end of file diff --git a/dist/countries-map/esm2015/lib/countries-map.component.js b/dist/countries-map/esm2015/lib/countries-map.component.js index 6fc9130..52cf43c 100644 --- a/dist/countries-map/esm2015/lib/countries-map.component.js +++ b/dist/countries-map/esm2015/lib/countries-map.component.js @@ -153,7 +153,7 @@ CountriesMapComponent.decorators = [ { type: Component, args: [{ selector: 'countries-map', changeDetection: ChangeDetectionStrategy.OnPush, - template: "
Loading map...
\r\n\r\n\r\n\r\n\r\n
\r\n
\r\n
\r\n {{countryLabel}}\r\n {{selection?.countryName}}\r\n
\r\n
\r\n {{valueLabel}}: \r\n {{selectionValue}}\r\n
\r\n
\r\n
0\">\r\n
\r\n {{item.key}}:\r\n {{item.val}}\r\n
\r\n
\r\n
\r\n", + template: "
Loading map...
\n\n\n\n\n
\n
\n
\n {{countryLabel}}\n {{selection?.countryName}}\n
\n
\n {{valueLabel}}: \n {{selectionValue}}\n
\n
\n
0\">\n
\n {{item.key}}:\n {{item.val}}\n
\n
\n
\n", styles: [":host{display:flex;flex-flow:column nowrap;justify-content:space-between;align-items:stretch;align-content:stretch}.major-block.loading{flex:0 1 auto;align-self:center}.major-block.loading .text{font-style:italic;font-family:sans-serif;color:grey}.major-block.cm-map-content{flex:0 1 auto}.major-block.goes-first{order:0}.major-block:not(.goes-first){order:1}.major-block.cm-caption-container{flex:0 1 auto;display:flex;flex-flow:column nowrap;justify-content:space-between}.cm-simple-caption{display:flex;flex-flow:row nowrap;justify-content:space-between}.cm-country-label{flex:0 1 auto;align-self:flex-start}.cm-value-label{flex:0 1 auto;align-self:flex-end}.cm-country-label,.cm-value-label{flex:0 1 auto}.cm-country-label .cm-country-name{font-weight:700}.cm-country-label .cm-country-name,.cm-value-label .cm-value-text{color:#333}.cm-country-label .cm-default-label,.cm-value-label .cm-value-text:not(.has-value){font-style:italic;color:#777}.cm-extended-caption{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));grid-gap:5px}.cm-extended-item{margin:5px auto}.cm-extended-item .cm-extended-label{font-weight:700}"] },] } ]; @@ -179,4 +179,4 @@ CountriesMapComponent.propDecorators = { mapContent: [{ type: ViewChild, args: ['mapContent', { static: false, read: ElementRef },] }] }; export { ɵ0, ɵ1, ɵ2, ɵ3, ɵ4 }; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRyaWVzLW1hcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9saWIvc3JjL2xpYi9jb3VudHJpZXMtbWFwLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFlBQVksRUFJYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFJekQsT0FBTyxFQUFFLEVBQUUsSUFBSSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRWxDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxJQUFJLEtBQUssV0FBVyxJQUFJLElBQUksS0FBSyxJQUFJLENBQUM7O0FBQ3BFLE1BQU0sVUFBVSxHQUFHLENBQUMsSUFBaUIsRUFBRSxFQUFFLFdBQUMsT0FBQSxRQUFRLE9BQUMsSUFBSSxDQUFDLEtBQUssMENBQUUsUUFBUSxHQUFHLENBQUEsRUFBQSxDQUFDOztBQUUzRSxNQUFNLFlBQVksR0FBRyxXQUFXLENBQUM7QUFDakMsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDO0FBQ3hCLE1BQU0sY0FBYyxHQUFHLENBQUMsU0FBa0IsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQzs7QUFDM0UsTUFBTSxjQUFjLEdBQUcsQ0FBQyxTQUFrQixFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDOztBQUU5RSxNQUFNLFdBQVcsR0FBRyxDQUFDLFdBQW1C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QUFDO1lBQ2xDLEtBQUssQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN6QyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUNuQzthQUFNO1lBQ0wsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMxQjtRQUNELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9CLENBQUM7OztZQWxMRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGVBQWU7Z0JBQ3pCLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2dCQUMvQyxvMENBQTZDOzthQUU5Qzs7O1lBOUJDLGlCQUFpQjs7O21CQWlDaEIsS0FBSzsyQkFDTCxLQUFLO3lCQUNMLEtBQUs7MEJBQ0wsS0FBSzsyQkFDTCxLQUFLO3VCQUNMLEtBQUs7dUJBQ0wsS0FBSzt1QkFDTCxLQUFLO3VCQUNMLEtBQUs7OEJBQ0wsS0FBSzswQkFDTCxLQUFLOzZCQUNMLEtBQUs7eUJBRUwsTUFBTTt5QkFDTixNQUFNOzBCQUNOLE1BQU07eUJBRU4sU0FBUyxTQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgSW5wdXQsXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBPbkNoYW5nZXMsXHJcbiAgU2ltcGxlQ2hhbmdlc1xyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDaGFyRXJyb3JDb2RlIH0gZnJvbSAnLi9jaGFydC1ldmVudHMuaW50ZXJmYWNlJztcclxuaW1wb3J0IHR5cGUgeyBDaGFydFNlbGVjdEV2ZW50LCBDaGFydEVycm9yRXZlbnQgfSBmcm9tICcuL2NoYXJ0LWV2ZW50cy5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgdHlwZSB7IENvdW50cmllc0RhdGEsIFNlbGVjdGlvbkV4dHJhLCBEcmF3YWJsZUNvdW50cmllcywgU2VsZWN0aW9uLFxyXG4gIFZhbGlkRXh0cmFEYXRhLCBEcmF3YWJsZUNvdW50cnksIENvdW50cnlEYXRhIH0gZnJvbSAnLi9kYXRhLXR5cGVzLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IGVuIGFzIGNvdW50cmllc0VOIH0gZnJvbSAnQGphZ29tZi9jb3VudHJpZXNsaXN0JztcclxuaW1wb3J0IHsgc2NhbGUgfSBmcm9tICdjaHJvbWEtanMnO1xyXG5cclxuY29uc3QgZXhpc3RzID0gaXRlbSA9PiB0eXBlb2YgaXRlbSAhPT0gJ3VuZGVmaW5lZCcgJiYgaXRlbSAhPT0gbnVsbDtcclxuY29uc3QgY291bnRyeU51bSA9IChpdGVtOiBDb3VudHJ5RGF0YSkgPT4gcGFyc2VJbnQoaXRlbS52YWx1ZT8udG9TdHJpbmcoKSk7XHJcblxyXG5jb25zdCBjb3VudHJ5Q2xhc3MgPSAnY291bnRyeXh4JztcclxuY29uc3Qgb2NlYW5JZCA9ICdvY2Vhbic7XHJcbmNvbnN0IGdldFN0cm9rZVdpZHRoID0gKGlzSG92ZXJlZDogYm9vbGVhbikgPT4gaXNIb3ZlcmVkID8gJzAuMiUnIDogJzAuMSUnO1xyXG5jb25zdCBnZXRTdHJva2VDb2xvciA9IChpc0hvdmVyZWQ6IGJvb2xlYW4pID0+IGlzSG92ZXJlZCA/ICcjODg4JyA6ICcjYWZhZmFmJztcclxuXHJcbmNvbnN0IGNvdW50cnlOYW1lID0gKGNvdW50cnlDb2RlOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xyXG4gIHJldHVybiBjb3VudHJpZXNFTltjb3VudHJ5Q29kZV07XHJcbn07XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2NvdW50cmllcy1tYXAnLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb3VudHJpZXMtbWFwLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jb3VudHJpZXMtbWFwLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIENvdW50cmllc01hcENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcyB7XHJcblxyXG4gIEBJbnB1dCgpIGRhdGE6IENvdW50cmllc0RhdGE7XHJcbiAgQElucHV0KCkgY291bnRyeUxhYmVsID0gJ0NvdW50cnknO1xyXG4gIEBJbnB1dCgpIHZhbHVlTGFiZWwgPSAnVmFsdWUnO1xyXG4gIEBJbnB1dCgpIHNob3dDYXB0aW9uID0gdHJ1ZTtcclxuICBASW5wdXQoKSBjYXB0aW9uQmVsb3cgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIG1pblZhbHVlOiBudW1iZXI7XHJcbiAgQElucHV0KCkgbWF4VmFsdWU6IG51bWJlcjtcclxuICBASW5wdXQoKSBtaW5Db2xvciA9ICd3aGl0ZSc7XHJcbiAgQElucHV0KCkgbWF4Q29sb3IgPSAncmVkJztcclxuICBASW5wdXQoKSBiYWNrZ3JvdW5kQ29sb3IgPSAnd2hpdGUnO1xyXG4gIEBJbnB1dCgpIG5vRGF0YUNvbG9yID0gJyNDRkNGQ0YnO1xyXG4gIEBJbnB1dCgpIGV4Y2VwdGlvbkNvbG9yID0gJyNGRkVFNTgnO1xyXG5cclxuICBAT3V0cHV0KCkgcHJpdmF0ZSByZWFkb25seSBjaGFydFJlYWR5ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gIEBPdXRwdXQoKSBwcml2YXRlIHJlYWRvbmx5IGNoYXJ0RXJyb3IgPSBuZXcgRXZlbnRFbWl0dGVyPENoYXJ0RXJyb3JFdmVudD4oKTtcclxuICBAT3V0cHV0KCkgcHJpdmF0ZSByZWFkb25seSBjaGFydFNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8Q2hhcnRTZWxlY3RFdmVudD4oKTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnbWFwQ29udGVudCcsIHsgc3RhdGljOiBmYWxzZSwgcmVhZDogRWxlbWVudFJlZiB9KSBwcml2YXRlIHJlYWRvbmx5IG1hcENvbnRlbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xyXG5cclxuICBtYXBEYXRhOiBEcmF3YWJsZUNvdW50cmllcztcclxuICBzZWxlY3Rpb246IFNlbGVjdGlvbiB8IG51bGwgPSBudWxsO1xyXG5cclxuICBwcml2YXRlIGlubmVyTG9hZGluZyA9IHRydWU7XHJcbiAgZ2V0IGxvYWRpbmcoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5pbm5lckxvYWRpbmc7XHJcbiAgfVxyXG5cclxuICBnZXQgc2VsZWN0aW9uVmFsdWUoKTogVmFsaWRFeHRyYURhdGEge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YVt0aGlzLnNlbGVjdGlvbi5jb3VudHJ5SWRdLnZhbHVlO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICApIHsgfVxyXG5cclxuICBwcml2YXRlIGdldEV4dHJhU2VsZWN0ZWQoY291bnRyeTogc3RyaW5nKTogU2VsZWN0aW9uRXh0cmFbXSB8IG51bGwge1xyXG4gICAgY29uc3QgeyBleHRyYSB9ID0gdGhpcy5kYXRhW2NvdW50cnldO1xyXG4gICAgcmV0dXJuIGV4dHJhICYmIE9iamVjdC5rZXlzKGV4dHJhKS5tYXAoa2V5ID0+ICh7IGtleSwgdmFsOiBleHRyYVtrZXldIH0pKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2VsZWN0Q291bnRyeShjb3VudHJ5Pzogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGlvbiA9IGNvdW50cnkgPyB7XHJcbiAgICAgIGNvdW50cnlJZDogY291bnRyeSxcclxuICAgICAgY291bnRyeU5hbWU6IGNvdW50cnlOYW1lKGNvdW50cnkpLFxyXG4gICAgICBleHRyYTogdGhpcy5nZXRFeHRyYVNlbGVjdGVkKGNvdW50cnkpXHJcbiAgICB9IDogbnVsbDtcclxuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5pbml0aWFsaXplTWFwKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBjb25zdCBjaGFuZ2VkTWFwVmFsdWVCdXROb3RPblN0YXJ0ID0gWydkYXRhJywgJ21pbkNvbG9yJywgJ21heENvbG9yJywgJ2JhY2tncm91bmRDb2xvcicsICdub0RhdGFDb2xvcicsICdleGNlcHRpb25Db2xvciddXHJcbiAgICAgIC5zb21lKGF0dHIgPT4gY2hhbmdlc1thdHRyXSAmJiAhY2hhbmdlc1thdHRyXS5maXJzdENoYW5nZSk7XHJcblxyXG4gICAgaWYgKGNoYW5nZWRNYXBWYWx1ZUJ1dE5vdE9uU3RhcnQpIHtcclxuICAgICAgdGhpcy5pbml0aWFsaXplTWFwKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRpYWxpemVNYXAoKTogdm9pZCB7XHJcbiAgICB0cnkge1xyXG4gICAgICAvLyBkYXRhIGlzIHByb3ZpZGVkOiBtaWdodCBiZSBhYmxlIHRvIHBhaW50IGNvdW50cmllcyBpbiBjb2xvcnNcclxuICAgICAgaWYgKHRoaXMuZGF0YSkge1xyXG4gICAgICAgIC8vIGdldCBoaWdoZXN0IHZhbHVlIGluIHJhbmdlXHJcbiAgICAgICAgY29uc3QgbWF4VmFsID0gZXhpc3RzKHRoaXMubWF4VmFsdWUpID8gdGhpcy5tYXhWYWx1ZSA6IE9iamVjdC52YWx1ZXModGhpcy5kYXRhKS5yZWR1Y2UoXHJcbiAgICAgICAgICAoYWNjLCBjdXJyKSA9PiBjb3VudHJ5TnVtKGN1cnIpID4gYWNjIHx8IGFjYyA9PT0gbnVsbD8gY291bnRyeU51bShjdXJyKSA6IGFjYywgbnVsbCBhcyBudW1iZXJcclxuICAgICAgICApO1xyXG4gICAgICAgIC8vIGdldCBsb3dlc3QgdmFsdWUgaW4gcmFuZ2VcclxuICAgICAgICBjb25zdCBtaW5WYWwgPSBleGlzdHModGhpcy5taW5WYWx1ZSkgPyB0aGlzLm1pblZhbHVlIDogT2JqZWN0LnZhbHVlcyh0aGlzLmRhdGEpLnJlZHVjZShcclxuICAgICAgICAgIChhY2MsIGN1cnIpID0+IGNvdW50cnlOdW0oY3VycikgPCBhY2MgfHwgYWNjID09PSBudWxsPyBjb3VudHJ5TnVtKGN1cnIpIDogYWNjLCBudWxsIGFzIG51bWJlclxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIC8vIG1hcCB2YWx1ZXMgaW4gcmFuZ2UgdG8gY29sb3JzXHJcbiAgICAgICAgY29uc3QgdmFsVG9Db2wgPSBzY2FsZShbdGhpcy5taW5Db2xvciwgdGhpcy5tYXhDb2xvcl0pLmNvbG9ycygobWF4VmFsID8/IDEpIC0gKG1pblZhbCA/PyAwKSArIDEpLnJlZHVjZSgoYWNjLCBjdXJyLCBpKSA9PlxyXG4gICAgICAgICAgKHsgLi4uYWNjLCBbaSArIG1pblZhbF06IGN1cnIgfSksIHt9IGFzIHsgW2tleTogbnVtYmVyXTogc3RyaW5nIH1cclxuICAgICAgICApO1xyXG5cclxuICAgICAgICAvLyBjcmVhdGUgbG9jYWwgTWFwIHVzaW5nIHByb3ZpZGVkIGRhdGEgKyBjYWxjdWxhdGVkIGNvbG9yc1xyXG4gICAgICAgIHRoaXMubWFwRGF0YSA9IE9iamVjdC5lbnRyaWVzKHRoaXMuZGF0YSkucmVkdWNlKChhY2MsIFsgY291bnRyeUlkLCBjb3VudHJ5VmFsIF0pID0+XHJcbiAgICAgICAgICAoeyAuLi5hY2MsXHJcbiAgICAgICAgICAgIFtjb3VudHJ5SWQudG9Mb3dlckNhc2UoKV06IHtcclxuICAgICAgICAgICAgICAuLi5jb3VudHJ5VmFsLFxyXG4gICAgICAgICAgICAgIGNvbG9yOiB2YWxUb0NvbFtjb3VudHJ5TnVtKGNvdW50cnlWYWwpXSAvLyB2YWx1ZSBpbiBiZXR3ZWVuIG1pblZhbCBhbmQgbWF4VmFsXHJcbiAgICAgICAgICAgICAgICB8fCAoXHJcbiAgICAgICAgICAgICAgICAgIC8vIHZhbHVlIGJlbG93IG1pblZhbFxyXG4gICAgICAgICAgICAgICAgICBjb3VudHJ5TnVtKGNvdW50cnlWYWwpIDw9IG1pblZhbCA/IHZhbFRvQ29sW21pblZhbF0gOlxyXG4gICAgICAgICAgICAgICAgICAvLyB2YWx1ZSBhYm92ZSBtYXhWYWxcclxuICAgICAgICAgICAgICAgICAgY291bnRyeU51bShjb3VudHJ5VmFsKSA+PSBtYXhWYWwgPyB2YWxUb0NvbFttYXhWYWxdXHJcbiAgICAgICAgICAgICAgICAgIC8vIHdlaXJkOyBzaG91bGQgbmV2ZXIgZ2V0IHRvIGhlcmVcclxuICAgICAgICAgICAgICAgICAgICA6IHRoaXMuZXhjZXB0aW9uQ29sb3JcclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgfSBhcyBEcmF3YWJsZUNvdW50cnkgfSksXHJcbiAgICAgICAgICB7fSBhcyBEcmF3YWJsZUNvdW50cmllc1xyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAvLyBubyBkYXRhIHByb3ZpZGVkOiB3aWxsIHBhaW50IHBsYWluIG1hcFxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMubWFwRGF0YSA9IHt9O1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBzdmdNYXAgPSB0aGlzLm1hcENvbnRlbnQubmF0aXZlRWxlbWVudC5jaGlsZHJlblswXSBhcyBTVkdTVkdFbGVtZW50O1xyXG4gICAgICBzdmdNYXAuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gdGhpcy5iYWNrZ3JvdW5kQ29sb3I7XHJcbiAgICAgIHN2Z01hcC5xdWVyeVNlbGVjdG9yQWxsPFNWR1NWR0VsZW1lbnQ+KGAuJHtjb3VudHJ5Q2xhc3N9YCkuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBjb25zdCBtYXBJdGVtID0gdGhpcy5tYXBEYXRhW2l0ZW0uaWQudG9Mb3dlckNhc2UoKV07XHJcbiAgICAgICAgY29uc3QgaXNFeGNlcHRpb24gPSBtYXBJdGVtID8gIWV4aXN0cyhtYXBJdGVtLnZhbHVlKSA6IGZhbHNlO1xyXG4gICAgICAgIGl0ZW0uc3R5bGUuZmlsbCA9IG1hcEl0ZW0gPyBpc0V4Y2VwdGlvbiA/IHRoaXMuZXhjZXB0aW9uQ29sb3IgOiBtYXBJdGVtLmNvbG9yIDogdGhpcy5ub0RhdGFDb2xvcjtcclxuICAgICAgICBpdGVtLm9ubW91c2VlbnRlciA9IHRoaXMuY291bnRyeUhvdmVyLmJpbmQodGhpcywgaXRlbSwgdHJ1ZSk7XHJcbiAgICAgICAgaXRlbS5vbm1vdXNlbGVhdmUgPSB0aGlzLmNvdW50cnlIb3Zlci5iaW5kKHRoaXMsIGl0ZW0sIGZhbHNlKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICB0aGlzLmlubmVyTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5vbkNoYXJ0UmVhZHkoKTtcclxuXHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIHRoaXMub25DaGFydGVycm9yKHsgaWQ6IENoYXJFcnJvckNvZGUubG9hZGluZywgbWVzc2FnZTogJ0NvdWxkIG5vdCBsb2FkJyB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY291bnRyeUhvdmVyKGl0ZW06IFNWR0VsZW1lbnQsIGhvdmVyZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGl0ZW0uc3R5bGUuc3Ryb2tlV2lkdGggPSBnZXRTdHJva2VXaWR0aChob3ZlcmVkKTtcclxuICAgIGl0ZW0uc3R5bGUuc3Ryb2tlID0gZ2V0U3Ryb2tlQ29sb3IoaG92ZXJlZCk7XHJcbiAgICBpdGVtLnF1ZXJ5U2VsZWN0b3JBbGw8U1ZHRWxlbWVudD4oJy5sYW5keHgnKS5mb3JFYWNoKGkgPT4ge1xyXG4gICAgICBpLnN0eWxlLnN0cm9rZVdpZHRoID0gZ2V0U3Ryb2tlV2lkdGgoaG92ZXJlZCk7XHJcbiAgICAgIGkuc3R5bGUuc3Ryb2tlID0gZ2V0U3Ryb2tlQ29sb3IoaG92ZXJlZCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25DaGFydFJlYWR5KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaW5uZXJMb2FkaW5nKSB7XHJcbiAgICAgIHRoaXMuaW5uZXJMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY2hhcnRSZWFkeS5lbWl0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uQ2hhcnRlcnJvcihlcnJvcjogQ2hhcnRFcnJvckV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLmNoYXJ0RXJyb3IuZW1pdChlcnJvcik7XHJcbiAgfVxyXG5cclxuICBvbk1hcFNlbGVjdCh7IHRhcmdldCB9OiB7IHRhcmdldD86IFNWR0VsZW1lbnQgfSk6IHZvaWQge1xyXG4gICAgY29uc3QgZXZlbnQ6IENoYXJ0U2VsZWN0RXZlbnQgPSB7XHJcbiAgICAgIHNlbGVjdGVkOiBmYWxzZSxcclxuICAgICAgdmFsdWU6IG51bGwsXHJcbiAgICAgIGNvdW50cnk6IG51bGxcclxuICAgIH07XHJcblxyXG4gICAgbGV0IG5ld0l0ZW06IFNWR0VsZW1lbnQ7XHJcbiAgICBpZiAodGFyZ2V0LmlkID09PSBvY2VhbklkKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0Q291bnRyeShudWxsKTtcclxuXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBuZXdJdGVtID0gdGFyZ2V0O1xyXG4gICAgICB3aGlsZSAoIW5ld0l0ZW0uY2xhc3NMaXN0LmNvbnRhaW5zKGNvdW50cnlDbGFzcykpIHtcclxuICAgICAgICBuZXdJdGVtID0gbmV3SXRlbS5wYXJlbnROb2RlIGFzIFNWR0VsZW1lbnQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjb3VudHJ5ID0gdGhpcy5tYXBEYXRhW25ld0l0ZW0/LmlkXTtcclxuICAgIGlmIChjb3VudHJ5KSB7XHJcbiAgICAgIGV2ZW50LnNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgZXZlbnQudmFsdWUgPSBjb3VudHJ5TnVtKGNvdW50cnkpO1xyXG4gICAgICBldmVudC5jb3VudHJ5ID0gbmV3SXRlbS5pZC50b1VwcGVyQ2FzZSgpO1xyXG4gICAgICB0aGlzLnNlbGVjdENvdW50cnkoZXZlbnQuY291bnRyeSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlbGVjdENvdW50cnkobnVsbCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNoYXJ0U2VsZWN0LmVtaXQoZXZlbnQpO1xyXG4gIH1cclxuXHJcbn1cclxuIl19 \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRyaWVzLW1hcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9saWIvc3JjL2xpYi9jb3VudHJpZXMtbWFwLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFlBQVksRUFJYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFJekQsT0FBTyxFQUFFLEVBQUUsSUFBSSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRWxDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxJQUFJLEtBQUssV0FBVyxJQUFJLElBQUksS0FBSyxJQUFJLENBQUM7O0FBQ3BFLE1BQU0sVUFBVSxHQUFHLENBQUMsSUFBaUIsRUFBRSxFQUFFLFdBQUMsT0FBQSxRQUFRLE9BQUMsSUFBSSxDQUFDLEtBQUssMENBQUUsUUFBUSxHQUFHLENBQUEsRUFBQSxDQUFDOztBQUUzRSxNQUFNLFlBQVksR0FBRyxXQUFXLENBQUM7QUFDakMsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDO0FBQ3hCLE1BQU0sY0FBYyxHQUFHLENBQUMsU0FBa0IsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQzs7QUFDM0UsTUFBTSxjQUFjLEdBQUcsQ0FBQyxTQUFrQixFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDOztBQUU5RSxNQUFNLFdBQVcsR0FBRyxDQUFDLFdBQW1C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QUFDO1lBQ2xDLEtBQUssQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN6QyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUNuQzthQUFNO1lBQ0wsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMxQjtRQUNELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9CLENBQUM7OztZQWxMRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGVBQWU7Z0JBQ3pCLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2dCQUMvQyxreENBQTZDOzthQUU5Qzs7O1lBOUJDLGlCQUFpQjs7O21CQWlDaEIsS0FBSzsyQkFDTCxLQUFLO3lCQUNMLEtBQUs7MEJBQ0wsS0FBSzsyQkFDTCxLQUFLO3VCQUNMLEtBQUs7dUJBQ0wsS0FBSzt1QkFDTCxLQUFLO3VCQUNMLEtBQUs7OEJBQ0wsS0FBSzswQkFDTCxLQUFLOzZCQUNMLEtBQUs7eUJBRUwsTUFBTTt5QkFDTixNQUFNOzBCQUNOLE1BQU07eUJBRU4sU0FBUyxTQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2hhckVycm9yQ29kZSB9IGZyb20gJy4vY2hhcnQtZXZlbnRzLmludGVyZmFjZSc7XG5pbXBvcnQgdHlwZSB7IENoYXJ0U2VsZWN0RXZlbnQsIENoYXJ0RXJyb3JFdmVudCB9IGZyb20gJy4vY2hhcnQtZXZlbnRzLmludGVyZmFjZSc7XG5pbXBvcnQgdHlwZSB7IENvdW50cmllc0RhdGEsIFNlbGVjdGlvbkV4dHJhLCBEcmF3YWJsZUNvdW50cmllcywgU2VsZWN0aW9uLFxuICBWYWxpZEV4dHJhRGF0YSwgRHJhd2FibGVDb3VudHJ5LCBDb3VudHJ5RGF0YSB9IGZyb20gJy4vZGF0YS10eXBlcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgZW4gYXMgY291bnRyaWVzRU4gfSBmcm9tICdAamFnb21mL2NvdW50cmllc2xpc3QnO1xuaW1wb3J0IHsgc2NhbGUgfSBmcm9tICdjaHJvbWEtanMnO1xuXG5jb25zdCBleGlzdHMgPSBpdGVtID0+IHR5cGVvZiBpdGVtICE9PSAndW5kZWZpbmVkJyAmJiBpdGVtICE9PSBudWxsO1xuY29uc3QgY291bnRyeU51bSA9IChpdGVtOiBDb3VudHJ5RGF0YSkgPT4gcGFyc2VJbnQoaXRlbS52YWx1ZT8udG9TdHJpbmcoKSk7XG5cbmNvbnN0IGNvdW50cnlDbGFzcyA9ICdjb3VudHJ5eHgnO1xuY29uc3Qgb2NlYW5JZCA9ICdvY2Vhbic7XG5jb25zdCBnZXRTdHJva2VXaWR0aCA9IChpc0hvdmVyZWQ6IGJvb2xlYW4pID0+IGlzSG92ZXJlZCA/ICcwLjIlJyA6ICcwLjElJztcbmNvbnN0IGdldFN0cm9rZUNvbG9yID0gKGlzSG92ZXJlZDogYm9vbGVhbikgPT4gaXNIb3ZlcmVkID8gJyM4ODgnIDogJyNhZmFmYWYnO1xuXG5jb25zdCBjb3VudHJ5TmFtZSA9IChjb3VudHJ5Q29kZTogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIGNvdW50cmllc0VOW2NvdW50cnlDb2RlXTtcbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NvdW50cmllcy1tYXAnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvdW50cmllcy1tYXAuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jb3VudHJpZXMtbWFwLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQ291bnRyaWVzTWFwQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzIHtcblxuICBASW5wdXQoKSBkYXRhOiBDb3VudHJpZXNEYXRhO1xuICBASW5wdXQoKSBjb3VudHJ5TGFiZWwgPSAnQ291bnRyeSc7XG4gIEBJbnB1dCgpIHZhbHVlTGFiZWwgPSAnVmFsdWUnO1xuICBASW5wdXQoKSBzaG93Q2FwdGlvbiA9IHRydWU7XG4gIEBJbnB1dCgpIGNhcHRpb25CZWxvdyA9IHRydWU7XG4gIEBJbnB1dCgpIG1pblZhbHVlOiBudW1iZXI7XG4gIEBJbnB1dCgpIG1heFZhbHVlOiBudW1iZXI7XG4gIEBJbnB1dCgpIG1pbkNvbG9yID0gJ3doaXRlJztcbiAgQElucHV0KCkgbWF4Q29sb3IgPSAncmVkJztcbiAgQElucHV0KCkgYmFja2dyb3VuZENvbG9yID0gJ3doaXRlJztcbiAgQElucHV0KCkgbm9EYXRhQ29sb3IgPSAnI0NGQ0ZDRic7XG4gIEBJbnB1dCgpIGV4Y2VwdGlvbkNvbG9yID0gJyNGRkVFNTgnO1xuXG4gIEBPdXRwdXQoKSBwcml2YXRlIHJlYWRvbmx5IGNoYXJ0UmVhZHkgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBwcml2YXRlIHJlYWRvbmx5IGNoYXJ0RXJyb3IgPSBuZXcgRXZlbnRFbWl0dGVyPENoYXJ0RXJyb3JFdmVudD4oKTtcbiAgQE91dHB1dCgpIHByaXZhdGUgcmVhZG9ubHkgY2hhcnRTZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPENoYXJ0U2VsZWN0RXZlbnQ+KCk7XG5cbiAgQFZpZXdDaGlsZCgnbWFwQ29udGVudCcsIHsgc3RhdGljOiBmYWxzZSwgcmVhZDogRWxlbWVudFJlZiB9KSBwcml2YXRlIHJlYWRvbmx5IG1hcENvbnRlbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIG1hcERhdGE6IERyYXdhYmxlQ291bnRyaWVzO1xuICBzZWxlY3Rpb246IFNlbGVjdGlvbiB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgaW5uZXJMb2FkaW5nID0gdHJ1ZTtcbiAgZ2V0IGxvYWRpbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaW5uZXJMb2FkaW5nO1xuICB9XG5cbiAgZ2V0IHNlbGVjdGlvblZhbHVlKCk6IFZhbGlkRXh0cmFEYXRhIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhW3RoaXMuc2VsZWN0aW9uLmNvdW50cnlJZF0udmFsdWU7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgKSB7IH1cblxuICBwcml2YXRlIGdldEV4dHJhU2VsZWN0ZWQoY291bnRyeTogc3RyaW5nKTogU2VsZWN0aW9uRXh0cmFbXSB8IG51bGwge1xuICAgIGNvbnN0IHsgZXh0cmEgfSA9IHRoaXMuZGF0YVtjb3VudHJ5XTtcbiAgICByZXR1cm4gZXh0cmEgJiYgT2JqZWN0LmtleXMoZXh0cmEpLm1hcChrZXkgPT4gKHsga2V5LCB2YWw6IGV4dHJhW2tleV0gfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZWxlY3RDb3VudHJ5KGNvdW50cnk/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGlvbiA9IGNvdW50cnkgPyB7XG4gICAgICBjb3VudHJ5SWQ6IGNvdW50cnksXG4gICAgICBjb3VudHJ5TmFtZTogY291bnRyeU5hbWUoY291bnRyeSksXG4gICAgICBleHRyYTogdGhpcy5nZXRFeHRyYVNlbGVjdGVkKGNvdW50cnkpXG4gICAgfSA6IG51bGw7XG4gICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0aWFsaXplTWFwKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgY29uc3QgY2hhbmdlZE1hcFZhbHVlQnV0Tm90T25TdGFydCA9IFsnZGF0YScsICdtaW5Db2xvcicsICdtYXhDb2xvcicsICdiYWNrZ3JvdW5kQ29sb3InLCAnbm9EYXRhQ29sb3InLCAnZXhjZXB0aW9uQ29sb3InXVxuICAgICAgLnNvbWUoYXR0ciA9PiBjaGFuZ2VzW2F0dHJdICYmICFjaGFuZ2VzW2F0dHJdLmZpcnN0Q2hhbmdlKTtcblxuICAgIGlmIChjaGFuZ2VkTWFwVmFsdWVCdXROb3RPblN0YXJ0KSB7XG4gICAgICB0aGlzLmluaXRpYWxpemVNYXAoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVNYXAoKTogdm9pZCB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIGRhdGEgaXMgcHJvdmlkZWQ6IG1pZ2h0IGJlIGFibGUgdG8gcGFpbnQgY291bnRyaWVzIGluIGNvbG9yc1xuICAgICAgaWYgKHRoaXMuZGF0YSkge1xuICAgICAgICAvLyBnZXQgaGlnaGVzdCB2YWx1ZSBpbiByYW5nZVxuICAgICAgICBjb25zdCBtYXhWYWwgPSBleGlzdHModGhpcy5tYXhWYWx1ZSkgPyB0aGlzLm1heFZhbHVlIDogT2JqZWN0LnZhbHVlcyh0aGlzLmRhdGEpLnJlZHVjZShcbiAgICAgICAgICAoYWNjLCBjdXJyKSA9PiBjb3VudHJ5TnVtKGN1cnIpID4gYWNjIHx8IGFjYyA9PT0gbnVsbD8gY291bnRyeU51bShjdXJyKSA6IGFjYywgbnVsbCBhcyBudW1iZXJcbiAgICAgICAgKTtcbiAgICAgICAgLy8gZ2V0IGxvd2VzdCB2YWx1ZSBpbiByYW5nZVxuICAgICAgICBjb25zdCBtaW5WYWwgPSBleGlzdHModGhpcy5taW5WYWx1ZSkgPyB0aGlzLm1pblZhbHVlIDogT2JqZWN0LnZhbHVlcyh0aGlzLmRhdGEpLnJlZHVjZShcbiAgICAgICAgICAoYWNjLCBjdXJyKSA9PiBjb3VudHJ5TnVtKGN1cnIpIDwgYWNjIHx8IGFjYyA9PT0gbnVsbD8gY291bnRyeU51bShjdXJyKSA6IGFjYywgbnVsbCBhcyBudW1iZXJcbiAgICAgICAgKTtcblxuICAgICAgICAvLyBtYXAgdmFsdWVzIGluIHJhbmdlIHRvIGNvbG9yc1xuICAgICAgICBjb25zdCB2YWxUb0NvbCA9IHNjYWxlKFt0aGlzLm1pbkNvbG9yLCB0aGlzLm1heENvbG9yXSkuY29sb3JzKChtYXhWYWwgPz8gMSkgLSAobWluVmFsID8/IDApICsgMSkucmVkdWNlKChhY2MsIGN1cnIsIGkpID0+XG4gICAgICAgICAgKHsgLi4uYWNjLCBbaSArIG1pblZhbF06IGN1cnIgfSksIHt9IGFzIHsgW2tleTogbnVtYmVyXTogc3RyaW5nIH1cbiAgICAgICAgKTtcblxuICAgICAgICAvLyBjcmVhdGUgbG9jYWwgTWFwIHVzaW5nIHByb3ZpZGVkIGRhdGEgKyBjYWxjdWxhdGVkIGNvbG9yc1xuICAgICAgICB0aGlzLm1hcERhdGEgPSBPYmplY3QuZW50cmllcyh0aGlzLmRhdGEpLnJlZHVjZSgoYWNjLCBbIGNvdW50cnlJZCwgY291bnRyeVZhbCBdKSA9PlxuICAgICAgICAgICh7IC4uLmFjYyxcbiAgICAgICAgICAgIFtjb3VudHJ5SWQudG9Mb3dlckNhc2UoKV06IHtcbiAgICAgICAgICAgICAgLi4uY291bnRyeVZhbCxcbiAgICAgICAgICAgICAgY29sb3I6IHZhbFRvQ29sW2NvdW50cnlOdW0oY291bnRyeVZhbCldIC8vIHZhbHVlIGluIGJldHdlZW4gbWluVmFsIGFuZCBtYXhWYWxcbiAgICAgICAgICAgICAgICB8fCAoXG4gICAgICAgICAgICAgICAgICAvLyB2YWx1ZSBiZWxvdyBtaW5WYWxcbiAgICAgICAgICAgICAgICAgIGNvdW50cnlOdW0oY291bnRyeVZhbCkgPD0gbWluVmFsID8gdmFsVG9Db2xbbWluVmFsXSA6XG4gICAgICAgICAgICAgICAgICAvLyB2YWx1ZSBhYm92ZSBtYXhWYWxcbiAgICAgICAgICAgICAgICAgIGNvdW50cnlOdW0oY291bnRyeVZhbCkgPj0gbWF4VmFsID8gdmFsVG9Db2xbbWF4VmFsXVxuICAgICAgICAgICAgICAgICAgLy8gd2VpcmQ7IHNob3VsZCBuZXZlciBnZXQgdG8gaGVyZVxuICAgICAgICAgICAgICAgICAgICA6IHRoaXMuZXhjZXB0aW9uQ29sb3JcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9IGFzIERyYXdhYmxlQ291bnRyeSB9KSxcbiAgICAgICAgICB7fSBhcyBEcmF3YWJsZUNvdW50cmllc1xuICAgICAgICApO1xuXG4gICAgICAvLyBubyBkYXRhIHByb3ZpZGVkOiB3aWxsIHBhaW50IHBsYWluIG1hcFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5tYXBEYXRhID0ge307XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHN2Z01hcCA9IHRoaXMubWFwQ29udGVudC5uYXRpdmVFbGVtZW50LmNoaWxkcmVuWzBdIGFzIFNWR1NWR0VsZW1lbnQ7XG4gICAgICBzdmdNYXAuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gdGhpcy5iYWNrZ3JvdW5kQ29sb3I7XG4gICAgICBzdmdNYXAucXVlcnlTZWxlY3RvckFsbDxTVkdTVkdFbGVtZW50PihgLiR7Y291bnRyeUNsYXNzfWApLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgIGNvbnN0IG1hcEl0ZW0gPSB0aGlzLm1hcERhdGFbaXRlbS5pZC50b0xvd2VyQ2FzZSgpXTtcbiAgICAgICAgY29uc3QgaXNFeGNlcHRpb24gPSBtYXBJdGVtID8gIWV4aXN0cyhtYXBJdGVtLnZhbHVlKSA6IGZhbHNlO1xuICAgICAgICBpdGVtLnN0eWxlLmZpbGwgPSBtYXBJdGVtID8gaXNFeGNlcHRpb24gPyB0aGlzLmV4Y2VwdGlvbkNvbG9yIDogbWFwSXRlbS5jb2xvciA6IHRoaXMubm9EYXRhQ29sb3I7XG4gICAgICAgIGl0ZW0ub25tb3VzZWVudGVyID0gdGhpcy5jb3VudHJ5SG92ZXIuYmluZCh0aGlzLCBpdGVtLCB0cnVlKTtcbiAgICAgICAgaXRlbS5vbm1vdXNlbGVhdmUgPSB0aGlzLmNvdW50cnlIb3Zlci5iaW5kKHRoaXMsIGl0ZW0sIGZhbHNlKTtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmlubmVyTG9hZGluZyA9IGZhbHNlO1xuICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB0aGlzLm9uQ2hhcnRSZWFkeSgpO1xuXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5vbkNoYXJ0ZXJyb3IoeyBpZDogQ2hhckVycm9yQ29kZS5sb2FkaW5nLCBtZXNzYWdlOiAnQ291bGQgbm90IGxvYWQnIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY291bnRyeUhvdmVyKGl0ZW06IFNWR0VsZW1lbnQsIGhvdmVyZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpdGVtLnN0eWxlLnN0cm9rZVdpZHRoID0gZ2V0U3Ryb2tlV2lkdGgoaG92ZXJlZCk7XG4gICAgaXRlbS5zdHlsZS5zdHJva2UgPSBnZXRTdHJva2VDb2xvcihob3ZlcmVkKTtcbiAgICBpdGVtLnF1ZXJ5U2VsZWN0b3JBbGw8U1ZHRWxlbWVudD4oJy5sYW5keHgnKS5mb3JFYWNoKGkgPT4ge1xuICAgICAgaS5zdHlsZS5zdHJva2VXaWR0aCA9IGdldFN0cm9rZVdpZHRoKGhvdmVyZWQpO1xuICAgICAgaS5zdHlsZS5zdHJva2UgPSBnZXRTdHJva2VDb2xvcihob3ZlcmVkKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgb25DaGFydFJlYWR5KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlubmVyTG9hZGluZykge1xuICAgICAgdGhpcy5pbm5lckxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMuY2hhcnRSZWFkeS5lbWl0KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBvbkNoYXJ0ZXJyb3IoZXJyb3I6IENoYXJ0RXJyb3JFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuY2hhcnRFcnJvci5lbWl0KGVycm9yKTtcbiAgfVxuXG4gIG9uTWFwU2VsZWN0KHsgdGFyZ2V0IH06IHsgdGFyZ2V0PzogU1ZHRWxlbWVudCB9KTogdm9pZCB7XG4gICAgY29uc3QgZXZlbnQ6IENoYXJ0U2VsZWN0RXZlbnQgPSB7XG4gICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgICB2YWx1ZTogbnVsbCxcbiAgICAgIGNvdW50cnk6IG51bGxcbiAgICB9O1xuXG4gICAgbGV0IG5ld0l0ZW06IFNWR0VsZW1lbnQ7XG4gICAgaWYgKHRhcmdldC5pZCA9PT0gb2NlYW5JZCkge1xuICAgICAgdGhpcy5zZWxlY3RDb3VudHJ5KG51bGwpO1xuXG4gICAgfSBlbHNlIHtcbiAgICAgIG5ld0l0ZW0gPSB0YXJnZXQ7XG4gICAgICB3aGlsZSAoIW5ld0l0ZW0uY2xhc3NMaXN0LmNvbnRhaW5zKGNvdW50cnlDbGFzcykpIHtcbiAgICAgICAgbmV3SXRlbSA9IG5ld0l0ZW0ucGFyZW50Tm9kZSBhcyBTVkdFbGVtZW50O1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGNvdW50cnkgPSB0aGlzLm1hcERhdGFbbmV3SXRlbT8uaWRdO1xuICAgIGlmIChjb3VudHJ5KSB7XG4gICAgICBldmVudC5zZWxlY3RlZCA9IHRydWU7XG4gICAgICBldmVudC52YWx1ZSA9IGNvdW50cnlOdW0oY291bnRyeSk7XG4gICAgICBldmVudC5jb3VudHJ5ID0gbmV3SXRlbS5pZC50b1VwcGVyQ2FzZSgpO1xuICAgICAgdGhpcy5zZWxlY3RDb3VudHJ5KGV2ZW50LmNvdW50cnkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdENvdW50cnkobnVsbCk7XG4gICAgfVxuICAgIHRoaXMuY2hhcnRTZWxlY3QuZW1pdChldmVudCk7XG4gIH1cblxufVxuIl19 \ No newline at end of file diff --git a/dist/countries-map/esm2015/lib/countries-map.module.js b/dist/countries-map/esm2015/lib/countries-map.module.js index 80b172f..ef31d70 100644 --- a/dist/countries-map/esm2015/lib/countries-map.module.js +++ b/dist/countries-map/esm2015/lib/countries-map.module.js @@ -15,4 +15,4 @@ CountriesMapModule.decorators = [ ] },] } ]; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRyaWVzLW1hcC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9saWIvc3JjL2xpYi9jb3VudHJpZXMtbWFwLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQVdsRSxNQUFNLE9BQU8sa0JBQWtCOzs7WUFUOUIsUUFBUSxTQUFDO2dCQUNSLE9BQU8sRUFBRTtvQkFDUCxZQUFZO2lCQUNiO2dCQUNELFlBQVksRUFBRSxDQUFDLHlCQUF5QixFQUFFLHFCQUFxQixDQUFDO2dCQUNoRSxPQUFPLEVBQUU7b0JBQ1AscUJBQXFCO2lCQUN0QjthQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ291bnRyaWVzTWFwQmFzZUNvbXBvbmVudCB9IGZyb20gJy4vYmFzZS1tYXAuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ291bnRyaWVzTWFwQ29tcG9uZW50IH0gZnJvbSAnLi9jb3VudHJpZXMtbWFwLmNvbXBvbmVudCc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZVxyXG4gIF0sXHJcbiAgZGVjbGFyYXRpb25zOiBbQ291bnRyaWVzTWFwQmFzZUNvbXBvbmVudCwgQ291bnRyaWVzTWFwQ29tcG9uZW50XSxcclxuICBleHBvcnRzOiBbXHJcbiAgICBDb3VudHJpZXNNYXBDb21wb25lbnRcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb3VudHJpZXNNYXBNb2R1bGUgeyB9XHJcbiJdfQ== \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRyaWVzLW1hcC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9saWIvc3JjL2xpYi9jb3VudHJpZXMtbWFwLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQVdsRSxNQUFNLE9BQU8sa0JBQWtCOzs7WUFUOUIsUUFBUSxTQUFDO2dCQUNSLE9BQU8sRUFBRTtvQkFDUCxZQUFZO2lCQUNiO2dCQUNELFlBQVksRUFBRSxDQUFDLHlCQUF5QixFQUFFLHFCQUFxQixDQUFDO2dCQUNoRSxPQUFPLEVBQUU7b0JBQ1AscUJBQXFCO2lCQUN0QjthQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb3VudHJpZXNNYXBCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi9iYXNlLW1hcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ291bnRyaWVzTWFwQ29tcG9uZW50IH0gZnJvbSAnLi9jb3VudHJpZXMtbWFwLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGVcbiAgXSxcbiAgZGVjbGFyYXRpb25zOiBbQ291bnRyaWVzTWFwQmFzZUNvbXBvbmVudCwgQ291bnRyaWVzTWFwQ29tcG9uZW50XSxcbiAgZXhwb3J0czogW1xuICAgIENvdW50cmllc01hcENvbXBvbmVudFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIENvdW50cmllc01hcE1vZHVsZSB7IH1cbiJdfQ== \ No newline at end of file diff --git a/dist/countries-map/esm2015/lib/data-types.interface.js b/dist/countries-map/esm2015/lib/data-types.interface.js index b5728b7..20db280 100644 --- a/dist/countries-map/esm2015/lib/data-types.interface.js +++ b/dist/countries-map/esm2015/lib/data-types.interface.js @@ -1,2 +1,2 @@ export {}; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10eXBlcy5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9saWIvc3JjL2xpYi9kYXRhLXR5cGVzLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgVmFsaWRFeHRyYURhdGEgPSBzdHJpbmcgfCBudW1iZXI7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNlbGVjdGlvbkV4dHJhIHtcclxuICBrZXk6IHN0cmluZztcclxuICB2YWw6IFZhbGlkRXh0cmFEYXRhO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNlbGVjdGlvbiB7XHJcbiAgY291bnRyeUlkOiBzdHJpbmc7XHJcbiAgY291bnRyeU5hbWU6IHN0cmluZztcclxuICBleHRyYT86IFNlbGVjdGlvbkV4dHJhW107XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ291bnRyeUV4dHJhRGF0YSB7XHJcbiAgW2tleTogc3RyaW5nXTogVmFsaWRFeHRyYURhdGE7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ291bnRyeURhdGEge1xyXG4gIHZhbHVlOiBudW1iZXI7XHJcbiAgZXh0cmE/OiBDb3VudHJ5RXh0cmFEYXRhO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIERyYXdhYmxlQ291bnRyeSBleHRlbmRzIENvdW50cnlEYXRhIHtcclxuICBjb2xvcjogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENvdW50cmllc0RhdGEge1xyXG4gIFtjb3VudHJ5Q29kZTogc3RyaW5nXTogQ291bnRyeURhdGE7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRHJhd2FibGVDb3VudHJpZXMge1xyXG4gIFtjb3VudHJ5Q29kZTogc3RyaW5nXTogRHJhd2FibGVDb3VudHJ5O1xyXG59XHJcbiJdfQ== \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10eXBlcy5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9saWIvc3JjL2xpYi9kYXRhLXR5cGVzLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgVmFsaWRFeHRyYURhdGEgPSBzdHJpbmcgfCBudW1iZXI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VsZWN0aW9uRXh0cmEge1xuICBrZXk6IHN0cmluZztcbiAgdmFsOiBWYWxpZEV4dHJhRGF0YTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZWxlY3Rpb24ge1xuICBjb3VudHJ5SWQ6IHN0cmluZztcbiAgY291bnRyeU5hbWU6IHN0cmluZztcbiAgZXh0cmE/OiBTZWxlY3Rpb25FeHRyYVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvdW50cnlFeHRyYURhdGEge1xuICBba2V5OiBzdHJpbmddOiBWYWxpZEV4dHJhRGF0YTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb3VudHJ5RGF0YSB7XG4gIHZhbHVlOiBudW1iZXI7XG4gIGV4dHJhPzogQ291bnRyeUV4dHJhRGF0YTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEcmF3YWJsZUNvdW50cnkgZXh0ZW5kcyBDb3VudHJ5RGF0YSB7XG4gIGNvbG9yOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ291bnRyaWVzRGF0YSB7XG4gIFtjb3VudHJ5Q29kZTogc3RyaW5nXTogQ291bnRyeURhdGE7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHJhd2FibGVDb3VudHJpZXMge1xuICBbY291bnRyeUNvZGU6IHN0cmluZ106IERyYXdhYmxlQ291bnRyeTtcbn1cbiJdfQ== \ No newline at end of file diff --git a/dist/countries-map/esm2015/public-api.js b/dist/countries-map/esm2015/public-api.js index e0afc69..3a969c0 100644 --- a/dist/countries-map/esm2015/public-api.js +++ b/dist/countries-map/esm2015/public-api.js @@ -1,4 +1,4 @@ export { CountriesMapModule } from './lib/countries-map.module'; export { CountriesMapComponent } from './lib/countries-map.component'; export { CharErrorCode } from './lib/chart-events.interface'; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2xpYi9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUV0RSxPQUFPLEVBQXFDLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgQ291bnRyaWVzTWFwTW9kdWxlIH0gZnJvbSAnLi9saWIvY291bnRyaWVzLW1hcC5tb2R1bGUnO1xyXG5leHBvcnQgeyBDb3VudHJpZXNNYXBDb21wb25lbnQgfSBmcm9tICcuL2xpYi9jb3VudHJpZXMtbWFwLmNvbXBvbmVudCc7XHJcbmV4cG9ydCB7IENvdW50cmllc0RhdGEsIENvdW50cnlEYXRhLCBDb3VudHJ5RXh0cmFEYXRhIH0gZnJvbSAnLi9saWIvZGF0YS10eXBlcy5pbnRlcmZhY2UnO1xyXG5leHBvcnQgeyBDaGFydEVycm9yRXZlbnQsIENoYXJ0U2VsZWN0RXZlbnQsIENoYXJFcnJvckNvZGUgfSBmcm9tICcuL2xpYi9jaGFydC1ldmVudHMuaW50ZXJmYWNlJztcclxuIl19 \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2xpYi9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUV0RSxPQUFPLEVBQXFDLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgQ291bnRyaWVzTWFwTW9kdWxlIH0gZnJvbSAnLi9saWIvY291bnRyaWVzLW1hcC5tb2R1bGUnO1xuZXhwb3J0IHsgQ291bnRyaWVzTWFwQ29tcG9uZW50IH0gZnJvbSAnLi9saWIvY291bnRyaWVzLW1hcC5jb21wb25lbnQnO1xuZXhwb3J0IHsgQ291bnRyaWVzRGF0YSwgQ291bnRyeURhdGEsIENvdW50cnlFeHRyYURhdGEgfSBmcm9tICcuL2xpYi9kYXRhLXR5cGVzLmludGVyZmFjZSc7XG5leHBvcnQgeyBDaGFydEVycm9yRXZlbnQsIENoYXJ0U2VsZWN0RXZlbnQsIENoYXJFcnJvckNvZGUgfSBmcm9tICcuL2xpYi9jaGFydC1ldmVudHMuaW50ZXJmYWNlJztcbiJdfQ== \ No newline at end of file diff --git a/dist/countries-map/fesm2015/countries-map.js b/dist/countries-map/fesm2015/countries-map.js index 5277699..c60426d 100644 --- a/dist/countries-map/fesm2015/countries-map.js +++ b/dist/countries-map/fesm2015/countries-map.js @@ -11,7 +11,7 @@ class CountriesMapBaseComponent { CountriesMapBaseComponent.decorators = [ { type: Component, args: [{ selector: 'countries-map-base', - template: "", + template: "", styles: [''] },] } ]; @@ -172,7 +172,7 @@ CountriesMapComponent.decorators = [ { type: Component, args: [{ selector: 'countries-map', changeDetection: ChangeDetectionStrategy.OnPush, - template: "
Loading map...
\r\n\r\n\r\n\r\n\r\n
\r\n
\r\n
\r\n {{countryLabel}}\r\n {{selection?.countryName}}\r\n
\r\n
\r\n {{valueLabel}}: \r\n {{selectionValue}}\r\n
\r\n
\r\n
0\">\r\n
\r\n {{item.key}}:\r\n {{item.val}}\r\n
\r\n
\r\n
\r\n", + template: "
Loading map...
\n\n\n\n\n
\n
\n
\n {{countryLabel}}\n {{selection?.countryName}}\n
\n
\n {{valueLabel}}: \n {{selectionValue}}\n
\n
\n
0\">\n
\n {{item.key}}:\n {{item.val}}\n
\n
\n
\n", styles: [":host{display:flex;flex-flow:column nowrap;justify-content:space-between;align-items:stretch;align-content:stretch}.major-block.loading{flex:0 1 auto;align-self:center}.major-block.loading .text{font-style:italic;font-family:sans-serif;color:grey}.major-block.cm-map-content{flex:0 1 auto}.major-block.goes-first{order:0}.major-block:not(.goes-first){order:1}.major-block.cm-caption-container{flex:0 1 auto;display:flex;flex-flow:column nowrap;justify-content:space-between}.cm-simple-caption{display:flex;flex-flow:row nowrap;justify-content:space-between}.cm-country-label{flex:0 1 auto;align-self:flex-start}.cm-value-label{flex:0 1 auto;align-self:flex-end}.cm-country-label,.cm-value-label{flex:0 1 auto}.cm-country-label .cm-country-name{font-weight:700}.cm-country-label .cm-country-name,.cm-value-label .cm-value-text{color:#333}.cm-country-label .cm-default-label,.cm-value-label .cm-value-text:not(.has-value){font-style:italic;color:#777}.cm-extended-caption{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));grid-gap:5px}.cm-extended-item{margin:5px auto}.cm-extended-item .cm-extended-label{font-weight:700}"] },] } ]; diff --git a/dist/countries-map/fesm2015/countries-map.js.map b/dist/countries-map/fesm2015/countries-map.js.map index 13f75e8..4767089 100644 --- a/dist/countries-map/fesm2015/countries-map.js.map +++ b/dist/countries-map/fesm2015/countries-map.js.map @@ -1 +1 @@ -{"version":3,"file":"countries-map.js","sources":["../../../projects/lib/src/lib/base-map.component.ts","../../../projects/lib/src/lib/chart-events.interface.ts","../../../projects/lib/src/lib/countries-map.component.ts","../../../projects/lib/src/lib/countries-map.module.ts","../../../projects/lib/src/countries-map.ts"],"sourcesContent":["import { Component } from \"@angular/core\";\r\n\r\n/**\r\n * @private Do not use this component in your app. Use `CountriesMapComponent` instead.\r\n */\r\n@Component({\r\n selector: 'countries-map-base',\r\n templateUrl: './base-map.component.svg',\r\n styles: ['']\r\n})\r\nexport class CountriesMapBaseComponent {\r\n}\r\n","export interface ChartSelectEvent {\r\n selected: boolean;\r\n value?: number;\r\n country: string;\r\n}\r\n\r\nexport enum CharErrorCode {loading = 'loading'}\r\n\r\nexport interface ChartErrorEvent {\r\n id: string | CharErrorCode;\r\n message: string;\r\n detailedMessage?: string;\r\n}\r\n","import {\r\n Component,\r\n ElementRef,\r\n Input,\r\n Output,\r\n ViewChild,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n EventEmitter,\r\n AfterViewInit,\r\n OnChanges,\r\n SimpleChanges\r\n} from '@angular/core';\r\nimport { CharErrorCode } from './chart-events.interface';\r\nimport type { ChartSelectEvent, ChartErrorEvent } from './chart-events.interface';\r\nimport type { CountriesData, SelectionExtra, DrawableCountries, Selection,\r\n ValidExtraData, DrawableCountry, CountryData } from './data-types.interface';\r\nimport { en as countriesEN } from '@jagomf/countrieslist';\r\nimport { scale } from 'chroma-js';\r\n\r\nconst exists = item => typeof item !== 'undefined' && item !== null;\r\nconst countryNum = (item: CountryData) => parseInt(item.value?.toString());\r\n\r\nconst countryClass = 'countryxx';\r\nconst oceanId = 'ocean';\r\nconst getStrokeWidth = (isHovered: boolean) => isHovered ? '0.2%' : '0.1%';\r\nconst getStrokeColor = (isHovered: boolean) => isHovered ? '#888' : '#afafaf';\r\n\r\nconst countryName = (countryCode: string): string => {\r\n return countriesEN[countryCode];\r\n};\r\n\r\n@Component({\r\n selector: 'countries-map',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n templateUrl: './countries-map.component.html',\r\n styleUrls: ['./countries-map.component.scss']\r\n})\r\nexport class CountriesMapComponent implements AfterViewInit, OnChanges {\r\n\r\n @Input() data: CountriesData;\r\n @Input() countryLabel = 'Country';\r\n @Input() valueLabel = 'Value';\r\n @Input() showCaption = true;\r\n @Input() captionBelow = true;\r\n @Input() minValue: number;\r\n @Input() maxValue: number;\r\n @Input() minColor = 'white';\r\n @Input() maxColor = 'red';\r\n @Input() backgroundColor = 'white';\r\n @Input() noDataColor = '#CFCFCF';\r\n @Input() exceptionColor = '#FFEE58';\r\n\r\n @Output() private readonly chartReady = new EventEmitter();\r\n @Output() private readonly chartError = new EventEmitter();\r\n @Output() private readonly chartSelect = new EventEmitter();\r\n\r\n @ViewChild('mapContent', { static: false, read: ElementRef }) private readonly mapContent: ElementRef;\r\n\r\n mapData: DrawableCountries;\r\n selection: Selection | null = null;\r\n\r\n private innerLoading = true;\r\n get loading(): boolean {\r\n return this.innerLoading;\r\n }\r\n\r\n get selectionValue(): ValidExtraData {\r\n return this.data[this.selection.countryId].value;\r\n }\r\n\r\n constructor(\r\n private readonly cdRef: ChangeDetectorRef,\r\n ) { }\r\n\r\n private getExtraSelected(country: string): SelectionExtra[] | null {\r\n const { extra } = this.data[country];\r\n return extra && Object.keys(extra).map(key => ({ key, val: extra[key] }));\r\n }\r\n\r\n private selectCountry(country?: string): void {\r\n this.selection = country ? {\r\n countryId: country,\r\n countryName: countryName(country),\r\n extra: this.getExtraSelected(country)\r\n } : null;\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.initializeMap();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const changedMapValueButNotOnStart = ['data', 'minColor', 'maxColor', 'backgroundColor', 'noDataColor', 'exceptionColor']\r\n .some(attr => changes[attr] && !changes[attr].firstChange);\r\n\r\n if (changedMapValueButNotOnStart) {\r\n this.initializeMap();\r\n }\r\n }\r\n\r\n private initializeMap(): void {\r\n try {\r\n // data is provided: might be able to paint countries in colors\r\n if (this.data) {\r\n // get highest value in range\r\n const maxVal = exists(this.maxValue) ? this.maxValue : Object.values(this.data).reduce(\r\n (acc, curr) => countryNum(curr) > acc || acc === null? countryNum(curr) : acc, null as number\r\n );\r\n // get lowest value in range\r\n const minVal = exists(this.minValue) ? this.minValue : Object.values(this.data).reduce(\r\n (acc, curr) => countryNum(curr) < acc || acc === null? countryNum(curr) : acc, null as number\r\n );\r\n\r\n // map values in range to colors\r\n const valToCol = scale([this.minColor, this.maxColor]).colors((maxVal ?? 1) - (minVal ?? 0) + 1).reduce((acc, curr, i) =>\r\n ({ ...acc, [i + minVal]: curr }), {} as { [key: number]: string }\r\n );\r\n\r\n // create local Map using provided data + calculated colors\r\n this.mapData = Object.entries(this.data).reduce((acc, [ countryId, countryVal ]) =>\r\n ({ ...acc,\r\n [countryId.toLowerCase()]: {\r\n ...countryVal,\r\n color: valToCol[countryNum(countryVal)] // value in between minVal and maxVal\r\n || (\r\n // value below minVal\r\n countryNum(countryVal) <= minVal ? valToCol[minVal] :\r\n // value above maxVal\r\n countryNum(countryVal) >= maxVal ? valToCol[maxVal]\r\n // weird; should never get to here\r\n : this.exceptionColor\r\n )\r\n } as DrawableCountry }),\r\n {} as DrawableCountries\r\n );\r\n\r\n // no data provided: will paint plain map\r\n } else {\r\n this.mapData = {};\r\n }\r\n\r\n const svgMap = this.mapContent.nativeElement.children[0] as SVGSVGElement;\r\n svgMap.style.backgroundColor = this.backgroundColor;\r\n svgMap.querySelectorAll(`.${countryClass}`).forEach(item => {\r\n const mapItem = this.mapData[item.id.toLowerCase()];\r\n const isException = mapItem ? !exists(mapItem.value) : false;\r\n item.style.fill = mapItem ? isException ? this.exceptionColor : mapItem.color : this.noDataColor;\r\n item.onmouseenter = this.countryHover.bind(this, item, true);\r\n item.onmouseleave = this.countryHover.bind(this, item, false);\r\n });\r\n\r\n this.innerLoading = false;\r\n this.cdRef.detectChanges();\r\n this.onChartReady();\r\n\r\n } catch (e) {\r\n this.onCharterror({ id: CharErrorCode.loading, message: 'Could not load' });\r\n }\r\n }\r\n\r\n private countryHover(item: SVGElement, hovered: boolean): void {\r\n item.style.strokeWidth = getStrokeWidth(hovered);\r\n item.style.stroke = getStrokeColor(hovered);\r\n item.querySelectorAll('.landxx').forEach(i => {\r\n i.style.strokeWidth = getStrokeWidth(hovered);\r\n i.style.stroke = getStrokeColor(hovered);\r\n });\r\n }\r\n\r\n private onChartReady(): void {\r\n if (this.innerLoading) {\r\n this.innerLoading = false;\r\n this.chartReady.emit();\r\n }\r\n }\r\n\r\n private onCharterror(error: ChartErrorEvent): void {\r\n this.chartError.emit(error);\r\n }\r\n\r\n onMapSelect({ target }: { target?: SVGElement }): void {\r\n const event: ChartSelectEvent = {\r\n selected: false,\r\n value: null,\r\n country: null\r\n };\r\n\r\n let newItem: SVGElement;\r\n if (target.id === oceanId) {\r\n this.selectCountry(null);\r\n\r\n } else {\r\n newItem = target;\r\n while (!newItem.classList.contains(countryClass)) {\r\n newItem = newItem.parentNode as SVGElement;\r\n }\r\n }\r\n\r\n const country = this.mapData[newItem?.id];\r\n if (country) {\r\n event.selected = true;\r\n event.value = countryNum(country);\r\n event.country = newItem.id.toUpperCase();\r\n this.selectCountry(event.country);\r\n } else {\r\n this.selectCountry(null);\r\n }\r\n this.chartSelect.emit(event);\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CountriesMapBaseComponent } from './base-map.component';\r\nimport { CountriesMapComponent } from './countries-map.component';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n ],\r\n declarations: [CountriesMapBaseComponent, CountriesMapComponent],\r\n exports: [\r\n CountriesMapComponent\r\n ]\r\n})\r\nexport class CountriesMapModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {CountriesMapBaseComponent as ɵa} from './lib/base-map.component';"],"names":["countriesEN"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"countries-map.js","sources":["../../../projects/lib/src/lib/base-map.component.ts","../../../projects/lib/src/lib/chart-events.interface.ts","../../../projects/lib/src/lib/countries-map.component.ts","../../../projects/lib/src/lib/countries-map.module.ts","../../../projects/lib/src/countries-map.ts"],"sourcesContent":["import { Component } from \"@angular/core\";\n\n/**\n * @private Do not use this component in your app. Use `CountriesMapComponent` instead.\n */\n@Component({\n selector: 'countries-map-base',\n templateUrl: './base-map.component.svg',\n styles: ['']\n})\nexport class CountriesMapBaseComponent {\n}\n","export interface ChartSelectEvent {\n selected: boolean;\n value?: number;\n country: string;\n}\n\nexport enum CharErrorCode {loading = 'loading'}\n\nexport interface ChartErrorEvent {\n id: string | CharErrorCode;\n message: string;\n detailedMessage?: string;\n}\n","import {\n Component,\n ElementRef,\n Input,\n Output,\n ViewChild,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n EventEmitter,\n AfterViewInit,\n OnChanges,\n SimpleChanges\n} from '@angular/core';\nimport { CharErrorCode } from './chart-events.interface';\nimport type { ChartSelectEvent, ChartErrorEvent } from './chart-events.interface';\nimport type { CountriesData, SelectionExtra, DrawableCountries, Selection,\n ValidExtraData, DrawableCountry, CountryData } from './data-types.interface';\nimport { en as countriesEN } from '@jagomf/countrieslist';\nimport { scale } from 'chroma-js';\n\nconst exists = item => typeof item !== 'undefined' && item !== null;\nconst countryNum = (item: CountryData) => parseInt(item.value?.toString());\n\nconst countryClass = 'countryxx';\nconst oceanId = 'ocean';\nconst getStrokeWidth = (isHovered: boolean) => isHovered ? '0.2%' : '0.1%';\nconst getStrokeColor = (isHovered: boolean) => isHovered ? '#888' : '#afafaf';\n\nconst countryName = (countryCode: string): string => {\n return countriesEN[countryCode];\n};\n\n@Component({\n selector: 'countries-map',\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './countries-map.component.html',\n styleUrls: ['./countries-map.component.scss']\n})\nexport class CountriesMapComponent implements AfterViewInit, OnChanges {\n\n @Input() data: CountriesData;\n @Input() countryLabel = 'Country';\n @Input() valueLabel = 'Value';\n @Input() showCaption = true;\n @Input() captionBelow = true;\n @Input() minValue: number;\n @Input() maxValue: number;\n @Input() minColor = 'white';\n @Input() maxColor = 'red';\n @Input() backgroundColor = 'white';\n @Input() noDataColor = '#CFCFCF';\n @Input() exceptionColor = '#FFEE58';\n\n @Output() private readonly chartReady = new EventEmitter();\n @Output() private readonly chartError = new EventEmitter();\n @Output() private readonly chartSelect = new EventEmitter();\n\n @ViewChild('mapContent', { static: false, read: ElementRef }) private readonly mapContent: ElementRef;\n\n mapData: DrawableCountries;\n selection: Selection | null = null;\n\n private innerLoading = true;\n get loading(): boolean {\n return this.innerLoading;\n }\n\n get selectionValue(): ValidExtraData {\n return this.data[this.selection.countryId].value;\n }\n\n constructor(\n private readonly cdRef: ChangeDetectorRef,\n ) { }\n\n private getExtraSelected(country: string): SelectionExtra[] | null {\n const { extra } = this.data[country];\n return extra && Object.keys(extra).map(key => ({ key, val: extra[key] }));\n }\n\n private selectCountry(country?: string): void {\n this.selection = country ? {\n countryId: country,\n countryName: countryName(country),\n extra: this.getExtraSelected(country)\n } : null;\n this.cdRef.detectChanges();\n }\n\n ngAfterViewInit(): void {\n this.initializeMap();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const changedMapValueButNotOnStart = ['data', 'minColor', 'maxColor', 'backgroundColor', 'noDataColor', 'exceptionColor']\n .some(attr => changes[attr] && !changes[attr].firstChange);\n\n if (changedMapValueButNotOnStart) {\n this.initializeMap();\n }\n }\n\n private initializeMap(): void {\n try {\n // data is provided: might be able to paint countries in colors\n if (this.data) {\n // get highest value in range\n const maxVal = exists(this.maxValue) ? this.maxValue : Object.values(this.data).reduce(\n (acc, curr) => countryNum(curr) > acc || acc === null? countryNum(curr) : acc, null as number\n );\n // get lowest value in range\n const minVal = exists(this.minValue) ? this.minValue : Object.values(this.data).reduce(\n (acc, curr) => countryNum(curr) < acc || acc === null? countryNum(curr) : acc, null as number\n );\n\n // map values in range to colors\n const valToCol = scale([this.minColor, this.maxColor]).colors((maxVal ?? 1) - (minVal ?? 0) + 1).reduce((acc, curr, i) =>\n ({ ...acc, [i + minVal]: curr }), {} as { [key: number]: string }\n );\n\n // create local Map using provided data + calculated colors\n this.mapData = Object.entries(this.data).reduce((acc, [ countryId, countryVal ]) =>\n ({ ...acc,\n [countryId.toLowerCase()]: {\n ...countryVal,\n color: valToCol[countryNum(countryVal)] // value in between minVal and maxVal\n || (\n // value below minVal\n countryNum(countryVal) <= minVal ? valToCol[minVal] :\n // value above maxVal\n countryNum(countryVal) >= maxVal ? valToCol[maxVal]\n // weird; should never get to here\n : this.exceptionColor\n )\n } as DrawableCountry }),\n {} as DrawableCountries\n );\n\n // no data provided: will paint plain map\n } else {\n this.mapData = {};\n }\n\n const svgMap = this.mapContent.nativeElement.children[0] as SVGSVGElement;\n svgMap.style.backgroundColor = this.backgroundColor;\n svgMap.querySelectorAll(`.${countryClass}`).forEach(item => {\n const mapItem = this.mapData[item.id.toLowerCase()];\n const isException = mapItem ? !exists(mapItem.value) : false;\n item.style.fill = mapItem ? isException ? this.exceptionColor : mapItem.color : this.noDataColor;\n item.onmouseenter = this.countryHover.bind(this, item, true);\n item.onmouseleave = this.countryHover.bind(this, item, false);\n });\n\n this.innerLoading = false;\n this.cdRef.detectChanges();\n this.onChartReady();\n\n } catch (e) {\n this.onCharterror({ id: CharErrorCode.loading, message: 'Could not load' });\n }\n }\n\n private countryHover(item: SVGElement, hovered: boolean): void {\n item.style.strokeWidth = getStrokeWidth(hovered);\n item.style.stroke = getStrokeColor(hovered);\n item.querySelectorAll('.landxx').forEach(i => {\n i.style.strokeWidth = getStrokeWidth(hovered);\n i.style.stroke = getStrokeColor(hovered);\n });\n }\n\n private onChartReady(): void {\n if (this.innerLoading) {\n this.innerLoading = false;\n this.chartReady.emit();\n }\n }\n\n private onCharterror(error: ChartErrorEvent): void {\n this.chartError.emit(error);\n }\n\n onMapSelect({ target }: { target?: SVGElement }): void {\n const event: ChartSelectEvent = {\n selected: false,\n value: null,\n country: null\n };\n\n let newItem: SVGElement;\n if (target.id === oceanId) {\n this.selectCountry(null);\n\n } else {\n newItem = target;\n while (!newItem.classList.contains(countryClass)) {\n newItem = newItem.parentNode as SVGElement;\n }\n }\n\n const country = this.mapData[newItem?.id];\n if (country) {\n event.selected = true;\n event.value = countryNum(country);\n event.country = newItem.id.toUpperCase();\n this.selectCountry(event.country);\n } else {\n this.selectCountry(null);\n }\n this.chartSelect.emit(event);\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CountriesMapBaseComponent } from './base-map.component';\nimport { CountriesMapComponent } from './countries-map.component';\n\n@NgModule({\n imports: [\n CommonModule\n ],\n declarations: [CountriesMapBaseComponent, CountriesMapComponent],\n exports: [\n CountriesMapComponent\n ]\n})\nexport class CountriesMapModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {CountriesMapBaseComponent as ɵa} from './lib/base-map.component';"],"names":["countriesEN"],"mappings":"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"} \ No newline at end of file diff --git a/dist/countries-map/package.json b/dist/countries-map/package.json index a35d755..6018596 100644 --- a/dist/countries-map/package.json +++ b/dist/countries-map/package.json @@ -1,6 +1,6 @@ { "name": "countries-map", - "version": "4.2.0", + "version": "4.2.1", "description": "World countries datamaps component for Angular", "license": "MIT", "author": "Jago MF ", diff --git a/package-lock.json b/package-lock.json index 7fad672..9150e81 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "countries-map-dev", - "version": "4.2.0", + "version": "4.2.1", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 7f74a3d..a46f289 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "countries-map-dev", - "version": "4.2.0", + "version": "4.2.1", "description": "Builder and demo runner for countries-map", "license": "MIT", "author": "Jago MF ", diff --git a/projects/lib/assets/world-map.svg b/projects/lib/assets/world-map.svg index 34c4fd4..24ae40a 100644 --- a/projects/lib/assets/world-map.svg +++ b/projects/lib/assets/world-map.svg @@ -1,5 +1,6 @@ +