@elastic/ems-client 8.7.0 → 8.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,30 +1,3 @@
1
- function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
- function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
3
- function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
4
- function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
5
- function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
6
- function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
7
- function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
8
- function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
9
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
10
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
11
- function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
12
- function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
13
- function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
14
- function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
15
- function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
16
- function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
17
- function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
18
- function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
19
- function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); }
20
- function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; }
21
- function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
22
- function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }
23
- function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); }
24
- function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }
25
- function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
26
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
27
- function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
28
1
  /*
29
2
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
30
3
  * or more contributor license agreements. Licensed under the Elastic License
@@ -33,899 +6,503 @@ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e
33
6
  */
34
7
 
35
8
  import _ from 'lodash';
9
+ import { DataDrivenPropertyValueSpecification, FormattedSpecification, LayerSpecification, StyleSpecification, VectorSourceSpecification } from 'maplibre-gl';
10
+ import { EMSClient, EmsTmsFormat, TMSServiceConfig } from './ems_client';
36
11
  import { AbstractEmsService } from './ems_service';
37
- import { colorizeColor } from './utils';
38
- export var TMSService = /*#__PURE__*/function (_AbstractEmsService) {
39
- function TMSService(config, emsClient, proxyPath) {
40
- var _this;
41
- _classCallCheck(this, TMSService);
42
- _this = _callSuper(this, TMSService, [config, emsClient, proxyPath]);
43
- _defineProperty(_this, "_config", void 0);
44
- _defineProperty(_this, "_getRasterStyleJson", _.once(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
45
- var rasterUrl, url;
46
- return _regenerator().w(function (_context) {
47
- while (1) switch (_context.n) {
48
- case 0:
49
- rasterUrl = _this._getStyleUrlForLocale('raster');
50
- if (!rasterUrl) {
51
- _context.n = 1;
52
- break;
53
- }
54
- url = _this._proxyPath + _this._getAbsoluteUrl(rasterUrl);
55
- return _context.a(2, _this._emsClient.getManifest(_this._emsClient.extendUrlWithParams(url)));
56
- case 1:
57
- return _context.a(2);
58
- case 2:
59
- return _context.a(2);
60
- }
61
- }, _callee);
62
- }))));
63
- _defineProperty(_this, "_getVectorStyleJsonRaw", _.once(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2() {
64
- var vectorUrl, url, vectorJson;
65
- return _regenerator().w(function (_context2) {
66
- while (1) switch (_context2.n) {
67
- case 0:
68
- vectorUrl = _this._getStyleUrlForLocale('vector');
69
- if (!vectorUrl) {
70
- _context2.n = 2;
71
- break;
72
- }
73
- url = _this._proxyPath + _this._getAbsoluteUrl(vectorUrl);
74
- _context2.n = 1;
75
- return _this._emsClient.getManifest(_this._emsClient.extendUrlWithParams(url));
76
- case 1:
77
- vectorJson = _context2.v;
78
- return _context2.a(2, _objectSpread({}, vectorJson));
79
- case 2:
80
- return _context2.a(2);
81
- case 3:
82
- return _context2.a(2);
83
- }
84
- }, _callee2);
85
- }))));
86
- _defineProperty(_this, "_getVectorStyleJsonInlined", _.once(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3() {
87
- var vectorJson, inlinedSources, sources, _iterator, _step, _sourceName, url, _sourceJson$tiles, sourceUrl, extendedUrl, sourceJson, tiles, _t, _t2, _t3, _t4, _t5, _t6, _t7;
88
- return _regenerator().w(function (_context3) {
89
- while (1) switch (_context3.p = _context3.n) {
90
- case 0:
91
- _context3.n = 1;
92
- return _this._getVectorStyleJsonRaw();
93
- case 1:
94
- vectorJson = _context3.v;
95
- if (!vectorJson) {
96
- _context3.n = 12;
97
- break;
98
- }
99
- inlinedSources = {};
100
- sources = vectorJson.sources;
101
- _iterator = _createForOfIteratorHelper(Object.getOwnPropertyNames(sources));
102
- _context3.p = 2;
103
- _iterator.s();
104
- case 3:
105
- if ((_step = _iterator.n()).done) {
106
- _context3.n = 6;
107
- break;
108
- }
109
- _sourceName = _step.value;
110
- url = sources[_sourceName].url;
111
- if (!url) {
112
- _context3.n = 5;
113
- break;
114
- }
115
- sourceUrl = _this._proxyPath + _this._getAbsoluteUrl(url);
116
- extendedUrl = _this._emsClient.extendUrlWithParams(sourceUrl);
117
- _context3.n = 4;
118
- return _this._emsClient.getManifest(extendedUrl);
119
- case 4:
120
- sourceJson = _context3.v;
121
- tiles = sourceJson === null || sourceJson === void 0 || (_sourceJson$tiles = sourceJson.tiles) === null || _sourceJson$tiles === void 0 ? void 0 : _sourceJson$tiles.map(function (tileUrl) {
122
- var directUrl = _this._proxyPath + _this._getAbsoluteUrl(tileUrl);
123
- return _this._emsClient.extendUrlWithParams(directUrl);
124
- });
125
- inlinedSources[_sourceName] = _objectSpread(_objectSpread({}, sourceJson), {}, {
126
- type: 'vector',
127
- tiles: tiles
128
- });
129
- case 5:
130
- _context3.n = 3;
131
- break;
132
- case 6:
133
- _context3.n = 8;
134
- break;
135
- case 7:
136
- _context3.p = 7;
137
- _t = _context3.v;
138
- _iterator.e(_t);
139
- case 8:
140
- _context3.p = 8;
141
- _iterator.f();
142
- return _context3.f(8);
143
- case 9:
144
- _t2 = _objectSpread;
145
- _t3 = _objectSpread({}, vectorJson);
146
- _t4 = {};
147
- _t5 = inlinedSources;
148
- _context3.n = 10;
149
- return _this._getSpriteSheetRootPath();
150
- case 10:
151
- _t6 = _context3.v;
152
- _context3.n = 11;
153
- return _this._getUrlTemplateForGlyphs();
154
- case 11:
155
- _t7 = _context3.v;
156
- return _context3.a(2, _t2(_t3, _t4, {
157
- sources: _t5,
158
- sprite: _t6,
159
- glyphs: _t7
160
- }));
161
- case 12:
162
- return _context3.a(2);
163
- case 13:
164
- return _context3.a(2);
165
- }
166
- }, _callee3, null, [[2, 7, 8, 9]]);
167
- }))));
168
- _this._config = config;
169
- return _this;
170
- }
12
+ import { layerPaintProperty, colorizeColor, blendMode, mbColorDefinition } from './utils';
13
+ export class TMSService extends AbstractEmsService {
14
+ /*
15
+ List of supported languages with labels and OMT codes extracted
16
+ from https://openmaptiles.org/languages
17
+ Keys are values for i18.locale from Kibana settings
18
+ and OMT codes for the rest.
19
+ */
20
+ static SupportedLanguages = [{
21
+ key: 'ar',
22
+ omt: 'ar'
23
+ }, {
24
+ key: 'az',
25
+ omt: 'az'
26
+ }, {
27
+ key: 'be',
28
+ omt: 'be'
29
+ }, {
30
+ key: 'bg',
31
+ omt: 'bg'
32
+ }, {
33
+ key: 'br',
34
+ omt: 'br'
35
+ }, {
36
+ key: 'bs',
37
+ omt: 'bs'
38
+ }, {
39
+ key: 'ca',
40
+ omt: 'ca'
41
+ }, {
42
+ key: 'cs',
43
+ omt: 'cs'
44
+ }, {
45
+ key: 'cy',
46
+ omt: 'cy'
47
+ }, {
48
+ key: 'da',
49
+ omt: 'da'
50
+ }, {
51
+ key: 'de',
52
+ omt: 'de'
53
+ }, {
54
+ key: 'el',
55
+ omt: 'el'
56
+ }, {
57
+ key: 'en',
58
+ omt: 'en'
59
+ }, {
60
+ key: 'eo',
61
+ omt: 'eo'
62
+ }, {
63
+ key: 'es',
64
+ omt: 'es'
65
+ }, {
66
+ key: 'et',
67
+ omt: 'et'
68
+ }, {
69
+ key: 'fi',
70
+ omt: 'fi'
71
+ }, {
72
+ key: 'fr-fr',
73
+ omt: 'fr'
74
+ }, {
75
+ key: 'fy',
76
+ omt: 'fy'
77
+ }, {
78
+ key: 'ga',
79
+ omt: 'ga'
80
+ }, {
81
+ key: 'gd',
82
+ omt: 'gd'
83
+ }, {
84
+ key: 'he',
85
+ omt: 'he'
86
+ }, {
87
+ key: 'hi-in',
88
+ omt: 'hi'
89
+ }, {
90
+ key: 'hr',
91
+ omt: 'hr'
92
+ }, {
93
+ key: 'hu',
94
+ omt: 'hu'
95
+ }, {
96
+ key: 'hy',
97
+ omt: 'hy'
98
+ }, {
99
+ key: 'is',
100
+ omt: 'is'
101
+ }, {
102
+ key: 'it',
103
+ omt: 'it'
104
+ }, {
105
+ key: 'ja_kana',
106
+ omt: 'ja_kana'
107
+ }, {
108
+ key: 'ja_rm',
109
+ omt: 'ja_rm'
110
+ }, {
111
+ key: 'ja-jp',
112
+ omt: 'ja'
113
+ }, {
114
+ key: 'ka',
115
+ omt: 'ka'
116
+ }, {
117
+ key: 'kk',
118
+ omt: 'kk'
119
+ }, {
120
+ key: 'kn',
121
+ omt: 'kn'
122
+ }, {
123
+ key: 'ko_rm',
124
+ omt: 'ko_rm'
125
+ }, {
126
+ key: 'ko',
127
+ omt: 'ko'
128
+ }, {
129
+ key: 'la',
130
+ omt: 'la'
131
+ }, {
132
+ key: 'lb',
133
+ omt: 'lb'
134
+ }, {
135
+ key: 'lt',
136
+ omt: 'lt'
137
+ }, {
138
+ key: 'lv',
139
+ omt: 'lv'
140
+ }, {
141
+ key: 'mk',
142
+ omt: 'mk'
143
+ }, {
144
+ key: 'mt',
145
+ omt: 'mt'
146
+ }, {
147
+ key: 'nl',
148
+ omt: 'nl'
149
+ }, {
150
+ key: 'no',
151
+ omt: 'no'
152
+ }, {
153
+ key: 'pl',
154
+ omt: 'pl'
155
+ }, {
156
+ key: 'pt-pt',
157
+ omt: 'pt'
158
+ }, {
159
+ key: 'rm',
160
+ omt: 'rm'
161
+ }, {
162
+ key: 'ro',
163
+ omt: 'ro'
164
+ }, {
165
+ key: 'ru-ru',
166
+ omt: 'ru'
167
+ }, {
168
+ key: 'sk',
169
+ omt: 'sk'
170
+ }, {
171
+ key: 'sl',
172
+ omt: 'sl'
173
+ }, {
174
+ key: 'sq',
175
+ omt: 'sq'
176
+ }, {
177
+ key: 'sr-Ltn',
178
+ omt: 'sr-Ltn'
179
+ }, {
180
+ key: 'sr',
181
+ omt: 'sr'
182
+ }, {
183
+ key: 'sv',
184
+ omt: 'sv'
185
+ }, {
186
+ key: 'th',
187
+ omt: 'th'
188
+ }, {
189
+ key: 'tr',
190
+ omt: 'tr'
191
+ }, {
192
+ key: 'uk',
193
+ omt: 'uk'
194
+ }, {
195
+ key: 'zh-cn',
196
+ omt: 'zh'
197
+ }];
171
198
 
172
199
  /*
173
- This method returns an array of objects with the layers and the new
174
- layout['text-field'] to apply using map.setLayoutProperty
200
+ Suggested default operations for the different EMS styles
175
201
  */
176
- _inherits(TMSService, _AbstractEmsService);
177
- return _createClass(TMSService, [{
178
- key: "getDefaultRasterStyle",
179
- value: function () {
180
- var _getDefaultRasterStyle = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4() {
181
- var _this2 = this;
182
- var tileJson, tiles;
183
- return _regenerator().w(function (_context4) {
184
- while (1) switch (_context4.n) {
185
- case 0:
186
- _context4.n = 1;
187
- return this._getRasterStyleJson();
188
- case 1:
189
- tileJson = _context4.v;
190
- if (!tileJson) {
191
- _context4.n = 2;
192
- break;
193
- }
194
- tiles = tileJson.tiles.map(function (tile) {
195
- return _this2._proxyPath + _this2._getAbsoluteUrl(tile);
196
- });
197
- return _context4.a(2, _objectSpread(_objectSpread({}, tileJson), {
198
- tiles: tiles
199
- }));
200
- case 2:
201
- return _context4.a(2);
202
- case 3:
203
- return _context4.a(2);
204
- }
205
- }, _callee4, this);
206
- }));
207
- function getDefaultRasterStyle() {
208
- return _getDefaultRasterStyle.apply(this, arguments);
209
- }
210
- return getDefaultRasterStyle;
211
- }()
212
- }, {
213
- key: "getUrlTemplate",
214
- value: function () {
215
- var _getUrlTemplate = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee5() {
216
- var tileJson, directUrl;
217
- return _regenerator().w(function (_context5) {
218
- while (1) switch (_context5.n) {
219
- case 0:
220
- _context5.n = 1;
221
- return this._getRasterStyleJson();
222
- case 1:
223
- tileJson = _context5.v;
224
- if (!tileJson) {
225
- _context5.n = 2;
226
- break;
227
- }
228
- directUrl = this._proxyPath + this._getAbsoluteUrl(tileJson.tiles[0]);
229
- return _context5.a(2, this._emsClient.extendUrlWithParams(directUrl));
230
- case 2:
231
- return _context5.a(2, '');
232
- case 3:
233
- return _context5.a(2);
234
- }
235
- }, _callee5, this);
236
- }));
237
- function getUrlTemplate() {
238
- return _getUrlTemplate.apply(this, arguments);
239
- }
240
- return getUrlTemplate;
241
- }()
242
- }, {
243
- key: "getUrlTemplateForVector",
244
- value: function () {
245
- var _getUrlTemplateForVector = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee6(sourceId) {
246
- var _tileJson$sources$sou;
247
- var tileJson, url, directUrl;
248
- return _regenerator().w(function (_context6) {
249
- while (1) switch (_context6.n) {
250
- case 0:
251
- _context6.n = 1;
252
- return this._getVectorStyleJsonInlined();
253
- case 1:
254
- tileJson = _context6.v;
255
- url = tileJson === null || tileJson === void 0 || (_tileJson$sources$sou = tileJson.sources[sourceId]) === null || _tileJson$sources$sou === void 0 || (_tileJson$sources$sou = _tileJson$sources$sou.tiles) === null || _tileJson$sources$sou === void 0 ? void 0 : _tileJson$sources$sou.pop();
256
- if (!url) {
257
- _context6.n = 2;
258
- break;
259
- }
260
- directUrl = this._proxyPath + this._getAbsoluteUrl(url);
261
- return _context6.a(2, this._emsClient.extendUrlWithParams(directUrl));
262
- case 2:
263
- return _context6.a(2, '');
264
- case 3:
265
- return _context6.a(2);
266
- }
267
- }, _callee6, this);
268
- }));
269
- function getUrlTemplateForVector(_x) {
270
- return _getUrlTemplateForVector.apply(this, arguments);
271
- }
272
- return getUrlTemplateForVector;
273
- }()
274
- }, {
275
- key: "getVectorStyleSheet",
276
- value: function () {
277
- var _getVectorStyleSheet = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee7() {
278
- return _regenerator().w(function (_context7) {
279
- while (1) switch (_context7.n) {
280
- case 0:
281
- _context7.n = 1;
282
- return this._getVectorStyleJsonInlined();
283
- case 1:
284
- return _context7.a(2, _context7.v);
285
- }
286
- }, _callee7, this);
287
- }));
288
- function getVectorStyleSheet() {
289
- return _getVectorStyleSheet.apply(this, arguments);
290
- }
291
- return getVectorStyleSheet;
292
- }()
293
- }, {
294
- key: "getVectorStyleSheetRaw",
295
- value: function () {
296
- var _getVectorStyleSheetRaw = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee8() {
297
- return _regenerator().w(function (_context8) {
298
- while (1) switch (_context8.n) {
299
- case 0:
300
- _context8.n = 1;
301
- return this._getVectorStyleJsonRaw();
302
- case 1:
303
- return _context8.a(2, _context8.v);
304
- }
305
- }, _callee8, this);
306
- }));
307
- function getVectorStyleSheetRaw() {
308
- return _getVectorStyleSheetRaw.apply(this, arguments);
309
- }
310
- return getVectorStyleSheetRaw;
311
- }()
312
- }, {
313
- key: "getSpriteSheetMeta",
314
- value: function () {
315
- var _getSpriteSheetMeta = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee9() {
316
- var isRetina,
317
- metaUrl,
318
- spritePngs,
319
- metaUrlExtended,
320
- jsonMeta,
321
- _args9 = arguments;
322
- return _regenerator().w(function (_context9) {
323
- while (1) switch (_context9.n) {
324
- case 0:
325
- isRetina = _args9.length > 0 && _args9[0] !== undefined ? _args9[0] : false;
326
- _context9.n = 1;
327
- return this.getSpriteSheetJsonPath(isRetina);
328
- case 1:
329
- metaUrl = _context9.v;
330
- _context9.n = 2;
331
- return this.getSpriteSheetPngPath(isRetina);
332
- case 2:
333
- spritePngs = _context9.v;
334
- if (!(metaUrl && spritePngs)) {
335
- _context9.n = 4;
336
- break;
337
- }
338
- metaUrlExtended = this._emsClient.extendUrlWithParams(metaUrl);
339
- _context9.n = 3;
340
- return this._emsClient.getManifest(metaUrlExtended);
341
- case 3:
342
- jsonMeta = _context9.v;
343
- return _context9.a(2, {
344
- png: spritePngs,
345
- json: jsonMeta
346
- });
347
- case 4:
348
- return _context9.a(2);
349
- case 5:
350
- return _context9.a(2);
351
- }
352
- }, _callee9, this);
353
- }));
354
- function getSpriteSheetMeta() {
355
- return _getSpriteSheetMeta.apply(this, arguments);
356
- }
357
- return getSpriteSheetMeta;
358
- }()
359
- }, {
360
- key: "getSpriteSheetJsonPath",
361
- value: function () {
362
- var _getSpriteSheetJsonPath = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee0() {
363
- var isRetina,
364
- spriteSheetRootPath,
365
- suffix,
366
- _args0 = arguments;
367
- return _regenerator().w(function (_context0) {
368
- while (1) switch (_context0.n) {
369
- case 0:
370
- isRetina = _args0.length > 0 && _args0[0] !== undefined ? _args0[0] : false;
371
- _context0.n = 1;
372
- return this._getSpriteSheetRootPath();
373
- case 1:
374
- spriteSheetRootPath = _context0.v;
375
- if (!spriteSheetRootPath) {
376
- _context0.n = 2;
377
- break;
378
- }
379
- suffix = isRetina ? '@2x' : '';
380
- return _context0.a(2, spriteSheetRootPath + suffix + '.json');
381
- case 2:
382
- return _context0.a(2, '');
383
- case 3:
384
- return _context0.a(2);
385
- }
386
- }, _callee0, this);
387
- }));
388
- function getSpriteSheetJsonPath() {
389
- return _getSpriteSheetJsonPath.apply(this, arguments);
390
- }
391
- return getSpriteSheetJsonPath;
392
- }()
393
- }, {
394
- key: "getSpriteSheetPngPath",
395
- value: function () {
396
- var _getSpriteSheetPngPath = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee1() {
397
- var isRetina,
398
- spriteSheetRootPath,
399
- suffix,
400
- _args1 = arguments;
401
- return _regenerator().w(function (_context1) {
402
- while (1) switch (_context1.n) {
403
- case 0:
404
- isRetina = _args1.length > 0 && _args1[0] !== undefined ? _args1[0] : false;
405
- _context1.n = 1;
406
- return this._getSpriteSheetRootPath();
407
- case 1:
408
- spriteSheetRootPath = _context1.v;
409
- if (!spriteSheetRootPath) {
410
- _context1.n = 2;
411
- break;
412
- }
413
- suffix = isRetina ? '@2x' : '';
414
- return _context1.a(2, spriteSheetRootPath + suffix + '.png');
415
- case 2:
416
- return _context1.a(2, '');
417
- case 3:
418
- return _context1.a(2);
419
- }
420
- }, _callee1, this);
421
- }));
422
- function getSpriteSheetPngPath() {
423
- return _getSpriteSheetPngPath.apply(this, arguments);
424
- }
425
- return getSpriteSheetPngPath;
426
- }()
202
+ static colorOperationDefaults = [{
203
+ style: 'road_map',
204
+ operation: 'mix',
205
+ percentage: 0.25
427
206
  }, {
428
- key: "getDisplayName",
429
- value: function getDisplayName() {
430
- return this._emsClient.getValueInLanguage(this._config.name);
431
- }
207
+ style: 'road_map_desaturated',
208
+ operation: 'screen',
209
+ percentage: 0.25
432
210
  }, {
433
- key: "getMinZoom",
434
- value: function () {
435
- var _getMinZoom = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee10() {
436
- var format,
437
- _ref4,
438
- sources,
439
- _ref5,
440
- minzoom,
441
- _args10 = arguments,
442
- _t8,
443
- _t9,
444
- _t0;
445
- return _regenerator().w(function (_context10) {
446
- while (1) switch (_context10.n) {
447
- case 0:
448
- format = _args10.length > 0 && _args10[0] !== undefined ? _args10[0] : 'vector';
449
- _t8 = format;
450
- _context10.n = _t8 === 'vector' ? 1 : _t8 === 'raster' ? 4 : 7;
451
- break;
452
- case 1:
453
- _context10.n = 2;
454
- return this._getVectorStyleJsonInlined();
455
- case 2:
456
- _t9 = _context10.v;
457
- if (_t9) {
458
- _context10.n = 3;
459
- break;
460
- }
461
- _t9 = {
462
- sources: {}
463
- };
464
- case 3:
465
- _ref4 = _t9;
466
- sources = _ref4.sources;
467
- return _context10.a(2, Math.min.apply(Math, _toConsumableArray(Object.values(sources).map(function (s) {
468
- return s && s instanceof Object && 'minzoom' in s ? s['minzoom'] : null;
469
- }).filter(function (minzoom) {
470
- return Number.isFinite(minzoom);
471
- }))));
472
- case 4:
473
- _context10.n = 5;
474
- return this._getRasterStyleJson();
475
- case 5:
476
- _t0 = _context10.v;
477
- if (_t0) {
478
- _context10.n = 6;
479
- break;
480
- }
481
- _t0 = {};
482
- case 6:
483
- _ref5 = _t0;
484
- minzoom = _ref5.minzoom;
485
- return _context10.a(2, minzoom);
486
- case 7:
487
- return _context10.a(2);
488
- case 8:
489
- return _context10.a(2);
490
- }
491
- }, _callee10, this);
492
- }));
493
- function getMinZoom() {
494
- return _getMinZoom.apply(this, arguments);
495
- }
496
- return getMinZoom;
497
- }()
498
- }, {
499
- key: "getMaxZoom",
500
- value: function () {
501
- var _getMaxZoom = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee11() {
502
- var format,
503
- _ref6,
504
- sources,
505
- _ref7,
506
- maxzoom,
507
- _args11 = arguments,
508
- _t1,
509
- _t10,
510
- _t11;
511
- return _regenerator().w(function (_context11) {
512
- while (1) switch (_context11.n) {
513
- case 0:
514
- format = _args11.length > 0 && _args11[0] !== undefined ? _args11[0] : 'vector';
515
- _t1 = format;
516
- _context11.n = _t1 === 'vector' ? 1 : _t1 === 'raster' ? 4 : 7;
517
- break;
518
- case 1:
519
- _context11.n = 2;
520
- return this._getVectorStyleJsonInlined();
521
- case 2:
522
- _t10 = _context11.v;
523
- if (_t10) {
524
- _context11.n = 3;
525
- break;
526
- }
527
- _t10 = {
528
- sources: {}
529
- };
530
- case 3:
531
- _ref6 = _t10;
532
- sources = _ref6.sources;
533
- return _context11.a(2, Math.max.apply(Math, _toConsumableArray(Object.values(sources).map(function (s) {
534
- return s && s instanceof Object && 'maxzoom' in s ? s['maxzoom'] : null;
535
- }).filter(function (maxzoom) {
536
- return Number.isFinite(maxzoom);
537
- }))));
538
- case 4:
539
- _context11.n = 5;
540
- return this._getRasterStyleJson();
541
- case 5:
542
- _t11 = _context11.v;
543
- if (_t11) {
544
- _context11.n = 6;
545
- break;
546
- }
547
- _t11 = {};
548
- case 6:
549
- _ref7 = _t11;
550
- maxzoom = _ref7.maxzoom;
551
- return _context11.a(2, maxzoom);
552
- case 7:
553
- return _context11.a(2);
554
- case 8:
555
- return _context11.a(2);
556
- }
557
- }, _callee11, this);
558
- }));
559
- function getMaxZoom() {
560
- return _getMaxZoom.apply(this, arguments);
561
- }
562
- return getMaxZoom;
563
- }()
211
+ style: 'dark_map',
212
+ operation: 'dodge',
213
+ percentage: 0.25
564
214
  }, {
565
- key: "getId",
566
- value: function getId() {
567
- return this._config.id;
568
- }
215
+ style: 'high_contrast',
216
+ operation: 'screen',
217
+ percentage: 0.25
569
218
  }, {
570
- key: "hasId",
571
- value: function hasId(id) {
572
- return this._config.id === id;
573
- }
219
+ style: 'road_map_desaturated_v9',
220
+ operation: 'screen',
221
+ percentage: 0.25
574
222
  }, {
575
- key: "getApiUrl",
576
- value: function getApiUrl() {
577
- return this._emsClient.getTileApiUrl();
223
+ style: 'dark_map_v9',
224
+ operation: 'dodge',
225
+ percentage: 0.25
226
+ }];
227
+ _config;
228
+ _getRasterStyleJson = _.once(async () => {
229
+ const rasterUrl = this._getStyleUrlForLocale('raster');
230
+ if (rasterUrl) {
231
+ const url = this._proxyPath + this._getAbsoluteUrl(rasterUrl);
232
+ return this._emsClient.getManifest(this._emsClient.extendUrlWithParams(url));
233
+ } else {
234
+ return;
578
235
  }
579
- }, {
580
- key: "_getStyleUrlForLocale",
581
- value: function _getStyleUrlForLocale(formatType) {
582
- var vectorFormats = this._getFormats(formatType, this._emsClient.getLocale());
583
- if (!vectorFormats.length) {
584
- //fallback to default locale
585
- vectorFormats = this._getFormats(formatType, this._emsClient.getDefaultLocale());
586
- }
587
- if (!vectorFormats.length) {
588
- throw new Error("Cannot find ".concat(formatType, " tile layer for locale ").concat(this._emsClient.getLocale(), " or ").concat(this._emsClient.getDefaultLocale()));
589
- }
590
- var defaultStyle = vectorFormats[0];
591
- if (defaultStyle && Object.prototype.hasOwnProperty.call(defaultStyle, 'url')) {
592
- return defaultStyle.url;
593
- }
236
+ });
237
+ _getVectorStyleJsonRaw = _.once(async () => {
238
+ const vectorUrl = this._getStyleUrlForLocale('vector');
239
+ if (vectorUrl) {
240
+ const url = this._proxyPath + this._getAbsoluteUrl(vectorUrl);
241
+ const vectorJson = await this._emsClient.getManifest(this._emsClient.extendUrlWithParams(url));
242
+ return {
243
+ ...vectorJson
244
+ };
245
+ } else {
246
+ return;
594
247
  }
595
- }, {
596
- key: "_getFormats",
597
- value: function _getFormats(formatType, locale) {
598
- return this._config.formats.filter(function (format) {
599
- return format.locale === locale && format.format === formatType;
600
- });
248
+ });
249
+ _getVectorStyleJsonInlined = _.once(async () => {
250
+ const vectorJson = await this._getVectorStyleJsonRaw();
251
+ if (vectorJson) {
252
+ const inlinedSources = {};
253
+ const {
254
+ sources
255
+ } = vectorJson;
256
+ for (const sourceName of Object.getOwnPropertyNames(sources)) {
257
+ const {
258
+ url
259
+ } = sources[sourceName];
260
+ if (url) {
261
+ const sourceUrl = this._proxyPath + this._getAbsoluteUrl(url);
262
+ const extendedUrl = this._emsClient.extendUrlWithParams(sourceUrl);
263
+ const sourceJson = await this._emsClient.getManifest(extendedUrl);
264
+ const tiles = sourceJson?.tiles?.map(tileUrl => {
265
+ const directUrl = this._proxyPath + this._getAbsoluteUrl(tileUrl);
266
+ return this._emsClient.extendUrlWithParams(directUrl);
267
+ });
268
+ inlinedSources[sourceName] = {
269
+ ...sourceJson,
270
+ type: 'vector',
271
+ tiles
272
+ };
273
+ }
274
+ }
275
+ return {
276
+ ...vectorJson,
277
+ sources: inlinedSources,
278
+ sprite: await this._getSpriteSheetRootPath(),
279
+ glyphs: await this._getUrlTemplateForGlyphs()
280
+ };
281
+ } else {
282
+ return;
601
283
  }
602
- }, {
603
- key: "_getSpriteSheetRootPath",
604
- value: function () {
605
- var _getSpriteSheetRootPath2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee12() {
606
- var vectorStyleJson;
607
- return _regenerator().w(function (_context12) {
608
- while (1) switch (_context12.n) {
609
- case 0:
610
- _context12.n = 1;
611
- return this._getVectorStyleJsonRaw();
612
- case 1:
613
- vectorStyleJson = _context12.v;
614
- if (!(vectorStyleJson !== null && vectorStyleJson !== void 0 && vectorStyleJson.sprite)) {
615
- _context12.n = 2;
616
- break;
617
- }
618
- return _context12.a(2, this._proxyPath + this._getAbsoluteUrl(vectorStyleJson.sprite.toString()));
619
- case 2:
620
- return _context12.a(2, '');
621
- case 3:
622
- return _context12.a(2);
623
- }
624
- }, _callee12, this);
625
- }));
626
- function _getSpriteSheetRootPath() {
627
- return _getSpriteSheetRootPath2.apply(this, arguments);
284
+ });
285
+ constructor(config, emsClient, proxyPath) {
286
+ super(config, emsClient, proxyPath);
287
+ this._config = config;
288
+ }
289
+
290
+ /*
291
+ This method returns an array of objects with the layers and the new
292
+ layout['text-field'] to apply using map.setLayoutProperty
293
+ */
294
+ static transformLanguageProperty(layer, lang) {
295
+ const supportedLang = this.SupportedLanguages.find(l => l.key === lang);
296
+ if (layer.type === 'symbol' && layer.layout !== undefined && supportedLang !== undefined) {
297
+ const omtLang = supportedLang.omt;
298
+ const textField = layer.layout['text-field'];
299
+ if (textField && typeof textField === 'string') {
300
+ return TMSService._getTextField(textField, omtLang);
628
301
  }
629
- return _getSpriteSheetRootPath;
630
- }()
631
- }, {
632
- key: "_getUrlTemplateForGlyphs",
633
- value: function () {
634
- var _getUrlTemplateForGlyphs2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee13() {
635
- var vectorStyleJson;
636
- return _regenerator().w(function (_context13) {
637
- while (1) switch (_context13.n) {
638
- case 0:
639
- _context13.n = 1;
640
- return this._getVectorStyleJsonRaw();
641
- case 1:
642
- vectorStyleJson = _context13.v;
643
- if (!(vectorStyleJson !== null && vectorStyleJson !== void 0 && vectorStyleJson.glyphs)) {
644
- _context13.n = 2;
645
- break;
646
- }
647
- return _context13.a(2, this._proxyPath + this._getAbsoluteUrl(vectorStyleJson.glyphs));
648
- case 2:
649
- return _context13.a(2, '');
650
- case 3:
651
- return _context13.a(2);
652
- }
653
- }, _callee13, this);
654
- }));
655
- function _getUrlTemplateForGlyphs() {
656
- return _getUrlTemplateForGlyphs2.apply(this, arguments);
302
+ }
303
+ return;
304
+ }
305
+
306
+ /*
307
+ This method returns an array of objects per layer, containing a list of
308
+ properties with new colors to apply using map.setPaintProperty
309
+ */
310
+ static transformColorProperties(layer, color, operation, percentage) {
311
+ if (['background', 'fill', 'line', 'symbol'].indexOf(layer.type) !== -1 && layer.paint) {
312
+ const paint = layer.paint;
313
+ if (layer.type === 'symbol' && Object.keys(paint).length === 0) {
314
+ paint['text-color'] = 'rgb(0,0,0)';
657
315
  }
658
- return _getUrlTemplateForGlyphs;
659
- }()
660
- }], [{
661
- key: "transformLanguageProperty",
662
- value: function transformLanguageProperty(layer, lang) {
663
- var supportedLang = this.SupportedLanguages.find(function (l) {
664
- return l.key === lang;
316
+ const types = Object.keys(paint).filter(key => {
317
+ return ['background-color', 'circle-color', 'circle-stroke-color', 'fill-color', 'fill-extrusion-color', 'fill-outline-color', 'icon-color', 'icon-halo-color', 'line-color', 'text-color', 'text-halo-color'].indexOf(key) !== -1;
318
+ });
319
+ return types.map(type => {
320
+ const paintColor = paint[type];
321
+ return {
322
+ property: type,
323
+ color: paintColor && color ? colorizeColor(paintColor, color, operation, percentage) : paintColor
324
+ };
665
325
  });
666
- if (layer.type === 'symbol' && layer.layout !== undefined && supportedLang !== undefined) {
667
- var omtLang = supportedLang.omt;
668
- var textField = layer.layout['text-field'];
669
- if (textField && typeof textField === 'string') {
670
- return TMSService._getTextField(textField, omtLang);
326
+ } else {
327
+ return [];
328
+ }
329
+ }
330
+ static _getTextField(label, lang) {
331
+ // Capture {name:xx} labels
332
+ const labelMatch = label.match(/\{name([:_])(.{2})\}/);
333
+ if (labelMatch && labelMatch[1] != lang) {
334
+ // Only apply if the languages are different
335
+ return ['coalesce', ['get', `name:${lang}`], ['get', `name${labelMatch[1]}${labelMatch[2]}`]];
336
+ } else if (label.includes('latin') && label.includes('nonlatin')) {
337
+ // Capture the common pattern {name:latin}\n{name:nonlatin}
338
+ return ['coalesce', ['get', `name:${lang}`], ['concat', ['get', 'name:latin'], '\n', ['get', 'name:nonlatin']]];
339
+ }
340
+
341
+ // If no case is found, return the input label
342
+ return label;
343
+ }
344
+ async getDefaultRasterStyle() {
345
+ const tileJson = await this._getRasterStyleJson();
346
+ if (tileJson) {
347
+ const tiles = tileJson.tiles.map(tile => this._proxyPath + this._getAbsoluteUrl(tile));
348
+ return {
349
+ ...tileJson,
350
+ ...{
351
+ tiles
671
352
  }
672
- }
353
+ };
354
+ } else {
673
355
  return;
674
356
  }
675
-
676
- /*
677
- This method returns an array of objects per layer, containing a list of
678
- properties with new colors to apply using map.setPaintProperty
679
- */
680
- }, {
681
- key: "transformColorProperties",
682
- value: function transformColorProperties(layer, color, operation, percentage) {
683
- if (['background', 'fill', 'line', 'symbol'].indexOf(layer.type) !== -1 && layer.paint) {
684
- var paint = layer.paint;
685
- if (layer.type === 'symbol' && Object.keys(paint).length === 0) {
686
- paint['text-color'] = 'rgb(0,0,0)';
357
+ }
358
+ async getUrlTemplate() {
359
+ const tileJson = await this._getRasterStyleJson();
360
+ if (tileJson) {
361
+ const directUrl = this._proxyPath + this._getAbsoluteUrl(tileJson.tiles[0]);
362
+ return this._emsClient.extendUrlWithParams(directUrl);
363
+ } else {
364
+ return '';
365
+ }
366
+ }
367
+ async getUrlTemplateForVector(sourceId) {
368
+ const tileJson = await this._getVectorStyleJsonInlined();
369
+ const url = tileJson?.sources[sourceId]?.tiles?.pop();
370
+ if (url) {
371
+ const directUrl = this._proxyPath + this._getAbsoluteUrl(url);
372
+ return this._emsClient.extendUrlWithParams(directUrl);
373
+ } else {
374
+ return '';
375
+ }
376
+ }
377
+ async getVectorStyleSheet() {
378
+ return await this._getVectorStyleJsonInlined();
379
+ }
380
+ async getVectorStyleSheetRaw() {
381
+ return await this._getVectorStyleJsonRaw();
382
+ }
383
+ async getSpriteSheetMeta(isRetina = false) {
384
+ const metaUrl = await this.getSpriteSheetJsonPath(isRetina);
385
+ const spritePngs = await this.getSpriteSheetPngPath(isRetina);
386
+ if (metaUrl && spritePngs) {
387
+ const metaUrlExtended = this._emsClient.extendUrlWithParams(metaUrl);
388
+ const jsonMeta = await this._emsClient.getManifest(metaUrlExtended);
389
+ return {
390
+ png: spritePngs,
391
+ json: jsonMeta
392
+ };
393
+ } else {
394
+ return;
395
+ }
396
+ }
397
+ async getSpriteSheetJsonPath(isRetina = false) {
398
+ const spriteSheetRootPath = await this._getSpriteSheetRootPath();
399
+ if (spriteSheetRootPath) {
400
+ const suffix = isRetina ? '@2x' : '';
401
+ return spriteSheetRootPath + suffix + '.json';
402
+ } else {
403
+ return '';
404
+ }
405
+ }
406
+ async getSpriteSheetPngPath(isRetina = false) {
407
+ const spriteSheetRootPath = await this._getSpriteSheetRootPath();
408
+ if (spriteSheetRootPath) {
409
+ const suffix = isRetina ? '@2x' : '';
410
+ return spriteSheetRootPath + suffix + '.png';
411
+ } else {
412
+ return '';
413
+ }
414
+ }
415
+ getDisplayName() {
416
+ return this._emsClient.getValueInLanguage(this._config.name);
417
+ }
418
+ async getMinZoom(format = 'vector') {
419
+ switch (format) {
420
+ case 'vector':
421
+ {
422
+ const {
423
+ sources
424
+ } = (await this._getVectorStyleJsonInlined()) || {
425
+ sources: {}
426
+ };
427
+ return Math.min(...Object.values(sources).map(s => {
428
+ return s && s instanceof Object && 'minzoom' in s ? s['minzoom'] : null;
429
+ }).filter(minzoom => Number.isFinite(minzoom)));
430
+ }
431
+ case 'raster':
432
+ {
433
+ const {
434
+ minzoom
435
+ } = (await this._getRasterStyleJson()) || {};
436
+ return minzoom;
687
437
  }
688
- var types = Object.keys(paint).filter(function (key) {
689
- return ['background-color', 'circle-color', 'circle-stroke-color', 'fill-color', 'fill-extrusion-color', 'fill-outline-color', 'icon-color', 'icon-halo-color', 'line-color', 'text-color', 'text-halo-color'].indexOf(key) !== -1;
690
- });
691
- return types.map(function (type) {
692
- var paintColor = paint[type];
693
- return {
694
- property: type,
695
- color: paintColor && color ? colorizeColor(paintColor, color, operation, percentage) : paintColor
438
+ default:
439
+ return;
440
+ }
441
+ }
442
+ async getMaxZoom(format = 'vector') {
443
+ switch (format) {
444
+ case 'vector':
445
+ {
446
+ const {
447
+ sources
448
+ } = (await this._getVectorStyleJsonInlined()) || {
449
+ sources: {}
696
450
  };
697
- });
698
- } else {
699
- return [];
700
- }
451
+ return Math.max(...Object.values(sources).map(s => {
452
+ return s && s instanceof Object && 'maxzoom' in s ? s['maxzoom'] : null;
453
+ }).filter(maxzoom => Number.isFinite(maxzoom)));
454
+ }
455
+ case 'raster':
456
+ {
457
+ const {
458
+ maxzoom
459
+ } = (await this._getRasterStyleJson()) || {};
460
+ return maxzoom;
461
+ }
462
+ default:
463
+ return;
701
464
  }
702
- }, {
703
- key: "_getTextField",
704
- value: function _getTextField(label, lang) {
705
- // Capture {name:xx} labels
706
- var labelMatch = label.match(/\{name([:_])(.{2})\}/);
707
- if (labelMatch && labelMatch[1] != lang) {
708
- // Only apply if the languages are different
709
- return ['coalesce', ['get', "name:".concat(lang)], ['get', "name".concat(labelMatch[1]).concat(labelMatch[2])]];
710
- } else if (label.includes('latin') && label.includes('nonlatin')) {
711
- // Capture the common pattern {name:latin}\n{name:nonlatin}
712
- return ['coalesce', ['get', "name:".concat(lang)], ['concat', ['get', 'name:latin'], '\n', ['get', 'name:nonlatin']]];
713
- }
714
-
715
- // If no case is found, return the input label
716
- return label;
465
+ }
466
+ getId() {
467
+ return this._config.id;
468
+ }
469
+ hasId(id) {
470
+ return this._config.id === id;
471
+ }
472
+ getApiUrl() {
473
+ return this._emsClient.getTileApiUrl();
474
+ }
475
+ _getStyleUrlForLocale(formatType) {
476
+ let vectorFormats = this._getFormats(formatType, this._emsClient.getLocale());
477
+ if (!vectorFormats.length) {
478
+ //fallback to default locale
479
+ vectorFormats = this._getFormats(formatType, this._emsClient.getDefaultLocale());
717
480
  }
718
- }]);
719
- }(AbstractEmsService);
720
- /*
721
- List of supported languages with labels and OMT codes extracted
722
- from https://openmaptiles.org/languages
723
- Keys are values for i18.locale from Kibana settings
724
- and OMT codes for the rest.
725
- */
726
- _defineProperty(TMSService, "SupportedLanguages", [{
727
- key: 'ar',
728
- omt: 'ar'
729
- }, {
730
- key: 'az',
731
- omt: 'az'
732
- }, {
733
- key: 'be',
734
- omt: 'be'
735
- }, {
736
- key: 'bg',
737
- omt: 'bg'
738
- }, {
739
- key: 'br',
740
- omt: 'br'
741
- }, {
742
- key: 'bs',
743
- omt: 'bs'
744
- }, {
745
- key: 'ca',
746
- omt: 'ca'
747
- }, {
748
- key: 'cs',
749
- omt: 'cs'
750
- }, {
751
- key: 'cy',
752
- omt: 'cy'
753
- }, {
754
- key: 'da',
755
- omt: 'da'
756
- }, {
757
- key: 'de',
758
- omt: 'de'
759
- }, {
760
- key: 'el',
761
- omt: 'el'
762
- }, {
763
- key: 'en',
764
- omt: 'en'
765
- }, {
766
- key: 'eo',
767
- omt: 'eo'
768
- }, {
769
- key: 'es',
770
- omt: 'es'
771
- }, {
772
- key: 'et',
773
- omt: 'et'
774
- }, {
775
- key: 'fi',
776
- omt: 'fi'
777
- }, {
778
- key: 'fr-fr',
779
- omt: 'fr'
780
- }, {
781
- key: 'fy',
782
- omt: 'fy'
783
- }, {
784
- key: 'ga',
785
- omt: 'ga'
786
- }, {
787
- key: 'gd',
788
- omt: 'gd'
789
- }, {
790
- key: 'he',
791
- omt: 'he'
792
- }, {
793
- key: 'hi-in',
794
- omt: 'hi'
795
- }, {
796
- key: 'hr',
797
- omt: 'hr'
798
- }, {
799
- key: 'hu',
800
- omt: 'hu'
801
- }, {
802
- key: 'hy',
803
- omt: 'hy'
804
- }, {
805
- key: 'is',
806
- omt: 'is'
807
- }, {
808
- key: 'it',
809
- omt: 'it'
810
- }, {
811
- key: 'ja_kana',
812
- omt: 'ja_kana'
813
- }, {
814
- key: 'ja_rm',
815
- omt: 'ja_rm'
816
- }, {
817
- key: 'ja-jp',
818
- omt: 'ja'
819
- }, {
820
- key: 'ka',
821
- omt: 'ka'
822
- }, {
823
- key: 'kk',
824
- omt: 'kk'
825
- }, {
826
- key: 'kn',
827
- omt: 'kn'
828
- }, {
829
- key: 'ko_rm',
830
- omt: 'ko_rm'
831
- }, {
832
- key: 'ko',
833
- omt: 'ko'
834
- }, {
835
- key: 'la',
836
- omt: 'la'
837
- }, {
838
- key: 'lb',
839
- omt: 'lb'
840
- }, {
841
- key: 'lt',
842
- omt: 'lt'
843
- }, {
844
- key: 'lv',
845
- omt: 'lv'
846
- }, {
847
- key: 'mk',
848
- omt: 'mk'
849
- }, {
850
- key: 'mt',
851
- omt: 'mt'
852
- }, {
853
- key: 'nl',
854
- omt: 'nl'
855
- }, {
856
- key: 'no',
857
- omt: 'no'
858
- }, {
859
- key: 'pl',
860
- omt: 'pl'
861
- }, {
862
- key: 'pt-pt',
863
- omt: 'pt'
864
- }, {
865
- key: 'rm',
866
- omt: 'rm'
867
- }, {
868
- key: 'ro',
869
- omt: 'ro'
870
- }, {
871
- key: 'ru-ru',
872
- omt: 'ru'
873
- }, {
874
- key: 'sk',
875
- omt: 'sk'
876
- }, {
877
- key: 'sl',
878
- omt: 'sl'
879
- }, {
880
- key: 'sq',
881
- omt: 'sq'
882
- }, {
883
- key: 'sr-Ltn',
884
- omt: 'sr-Ltn'
885
- }, {
886
- key: 'sr',
887
- omt: 'sr'
888
- }, {
889
- key: 'sv',
890
- omt: 'sv'
891
- }, {
892
- key: 'th',
893
- omt: 'th'
894
- }, {
895
- key: 'tr',
896
- omt: 'tr'
897
- }, {
898
- key: 'uk',
899
- omt: 'uk'
900
- }, {
901
- key: 'zh-cn',
902
- omt: 'zh'
903
- }]);
904
- /*
905
- Suggested default operations for the different EMS styles
906
- */
907
- _defineProperty(TMSService, "colorOperationDefaults", [{
908
- style: 'road_map',
909
- operation: 'mix',
910
- percentage: 0.25
911
- }, {
912
- style: 'road_map_desaturated',
913
- operation: 'screen',
914
- percentage: 0.25
915
- }, {
916
- style: 'dark_map',
917
- operation: 'dodge',
918
- percentage: 0.25
919
- }, {
920
- style: 'high_contrast',
921
- operation: 'screen',
922
- percentage: 0.25
923
- }, {
924
- style: 'road_map_desaturated_v9',
925
- operation: 'screen',
926
- percentage: 0.25
927
- }, {
928
- style: 'dark_map_v9',
929
- operation: 'dodge',
930
- percentage: 0.25
931
- }]);
481
+ if (!vectorFormats.length) {
482
+ throw new Error(`Cannot find ${formatType} tile layer for locale ${this._emsClient.getLocale()} or ${this._emsClient.getDefaultLocale()}`);
483
+ }
484
+ const defaultStyle = vectorFormats[0];
485
+ if (defaultStyle && Object.prototype.hasOwnProperty.call(defaultStyle, 'url')) {
486
+ return defaultStyle.url;
487
+ }
488
+ }
489
+ _getFormats(formatType, locale) {
490
+ return this._config.formats.filter(format => format.locale === locale && format.format === formatType);
491
+ }
492
+ async _getSpriteSheetRootPath() {
493
+ const vectorStyleJson = await this._getVectorStyleJsonRaw();
494
+ if (vectorStyleJson?.sprite) {
495
+ return this._proxyPath + this._getAbsoluteUrl(vectorStyleJson.sprite.toString());
496
+ } else {
497
+ return '';
498
+ }
499
+ }
500
+ async _getUrlTemplateForGlyphs() {
501
+ const vectorStyleJson = await this._getVectorStyleJsonRaw();
502
+ if (vectorStyleJson?.glyphs) {
503
+ return this._proxyPath + this._getAbsoluteUrl(vectorStyleJson.glyphs);
504
+ } else {
505
+ return '';
506
+ }
507
+ }
508
+ }