@nextgis/ngw-leaflet 3.0.0 → 3.1.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,4 +1,4 @@
1
- /** Bundle of @nextgis/ngw-leaflet; version: 3.0.0; author: NextGIS */
1
+ /** Bundle of @nextgis/ngw-leaflet; version: 3.1.0; author: NextGIS */
2
2
  var domain;
3
3
 
4
4
  // This constructor is used to store event handlers. Instantiating this is
@@ -15943,7 +15943,7 @@ const operationsAliases = {
15943
15943
  return like(a, b, true);
15944
15944
  }
15945
15945
  };
15946
- function isPropertyFilter(filter) {
15946
+ function isPropertyFilter$1(filter) {
15947
15947
  const pf = filter;
15948
15948
  if (pf.length === 3 && typeof pf[0] === "string" && typeof pf[1] === "string") {
15949
15949
  return true;
@@ -15961,7 +15961,7 @@ function featureFilter(feature, filters) {
15961
15961
  function propertiesFilter(properties, filters) {
15962
15962
  const logic = typeof filters[0] === "string" ? filters[0] : "all";
15963
15963
  const filterFunction = (p) => {
15964
- if (isPropertyFilter(p)) {
15964
+ if (isPropertyFilter$1(p)) {
15965
15965
  const [field, operation, value] = p;
15966
15966
  const operationExec = operationsAliases[operation];
15967
15967
  if (operationExec) {
@@ -16160,7 +16160,7 @@ var __spreadValues$C = (a, b) => {
16160
16160
  return a;
16161
16161
  };
16162
16162
  var __spreadProps$q = (a, b) => __defProps$q(a, __getOwnPropDescs$q(b));
16163
- var __objRest$8 = (source, exclude) => {
16163
+ var __objRest$9 = (source, exclude) => {
16164
16164
  var target = {};
16165
16165
  for (var prop in source)
16166
16166
  if (__hasOwnProp$D.call(source, prop) && exclude.indexOf(prop) < 0)
@@ -16243,7 +16243,7 @@ class GeoJsonPaint {
16243
16243
  return PAINT;
16244
16244
  }
16245
16245
  _createDivIcon(icon) {
16246
- const _a = icon, { html, rotate, className } = _a, toLIconOpt = __objRest$8(_a, ["html", "rotate", "className"]);
16246
+ const _a = icon, { html, rotate, className } = _a, toLIconOpt = __objRest$9(_a, ["html", "rotate", "className"]);
16247
16247
  const element = document.createElement("div");
16248
16248
  if (className) {
16249
16249
  element.className = className;
@@ -17368,7 +17368,7 @@ var __spreadValues$z = (a, b) => {
17368
17368
  return a;
17369
17369
  };
17370
17370
  var __spreadProps$n = (a, b) => __defProps$n(a, __getOwnPropDescs$n(b));
17371
- var __objRest$7 = (source, exclude) => {
17371
+ var __objRest$8 = (source, exclude) => {
17372
17372
  var target = {};
17373
17373
  for (var prop in source)
17374
17374
  if (__hasOwnProp$A.call(source, prop) && exclude.indexOf(prop) < 0)
@@ -17384,7 +17384,7 @@ class TileAdapter extends BaseAdapter {
17384
17384
  addLayer(options) {
17385
17385
  this.options = Object.assign(this.options, options);
17386
17386
  if (options) {
17387
- const _a = options, { url } = _a, opt = __objRest$7(_a, ["url"]);
17387
+ const _a = options, { url } = _a, opt = __objRest$8(_a, ["url"]);
17388
17388
  if (url) {
17389
17389
  const tileLayerOptions = __spreadValues$z({
17390
17390
  pane: this.pane,
@@ -17477,7 +17477,7 @@ var __spreadValues$x = (a, b) => {
17477
17477
  return a;
17478
17478
  };
17479
17479
  var __spreadProps$l = (a, b) => __defProps$l(a, __getOwnPropDescs$l(b));
17480
- var __objRest$6 = (source, exclude) => {
17480
+ var __objRest$7 = (source, exclude) => {
17481
17481
  var target = {};
17482
17482
  for (var prop in source)
17483
17483
  if (__hasOwnProp$y.call(source, prop) && exclude.indexOf(prop) < 0)
@@ -17492,7 +17492,7 @@ var __objRest$6 = (source, exclude) => {
17492
17492
  class WmsAdapter extends BaseAdapter {
17493
17493
  addLayer(options) {
17494
17494
  Object.assign(this.options, options);
17495
- const _a = options, { url } = _a, opt = __objRest$6(_a, ["url"]);
17495
+ const _a = options, { url } = _a, opt = __objRest$7(_a, ["url"]);
17496
17496
  if (url) {
17497
17497
  const layerOptions = __spreadValues$x({
17498
17498
  pane: this.pane,
@@ -18187,7 +18187,7 @@ let Cache = _Cache;
18187
18187
 
18188
18188
  var pkg = {
18189
18189
  name: "@nextgis/ngw-connector",
18190
- version: "3.0.0",
18190
+ version: "3.0.1",
18191
18191
  _priority: 12,
18192
18192
  description: "A lightweight HTTP client optimized for use with NextGIS Web API",
18193
18193
  main: "index.js",
@@ -18444,7 +18444,7 @@ var __spreadValues$u = (a, b) => {
18444
18444
  }
18445
18445
  return a;
18446
18446
  };
18447
- var __objRest$5 = (source, exclude) => {
18447
+ var __objRest$6 = (source, exclude) => {
18448
18448
  var target = {};
18449
18449
  for (var prop in source)
18450
18450
  if (__hasOwnProp$v.call(source, prop) && exclude.indexOf(prop) < 0)
@@ -18598,7 +18598,7 @@ function request(path, options, cacheEngine) {
18598
18598
  cache,
18599
18599
  query,
18600
18600
  json
18601
- } = _a, opt = __objRest$5(_a, [
18601
+ } = _a, opt = __objRest$6(_a, [
18602
18602
  "withCredentials",
18603
18603
  "responseType",
18604
18604
  "cacheProps",
@@ -18708,7 +18708,7 @@ var __spreadValues$t = (a, b) => {
18708
18708
  return a;
18709
18709
  };
18710
18710
  var __spreadProps$k = (a, b) => __defProps$k(a, __getOwnPropDescs$k(b));
18711
- var __objRest$4 = (source, exclude) => {
18711
+ var __objRest$5 = (source, exclude) => {
18712
18712
  var target = {};
18713
18713
  for (var prop in source)
18714
18714
  if (__hasOwnProp$u.call(source, prop) && exclude.indexOf(prop) < 0)
@@ -18787,7 +18787,7 @@ function route(name, connector, ...rest) {
18787
18787
  for (const method of methods) {
18788
18788
  const methodResp = (requestOptions) => {
18789
18789
  var _b;
18790
- const _a = requestOptions || {}, { headers: optHeaders } = _a, restOpt = __objRest$4(_a, ["headers"]);
18790
+ const _a = requestOptions || {}, { headers: optHeaders } = _a, restOpt = __objRest$5(_a, ["headers"]);
18791
18791
  if ((_b = requestOptions == null ? void 0 : requestOptions.signal) == null ? void 0 : _b.aborted) {
18792
18792
  throw new AbortError();
18793
18793
  }
@@ -18945,7 +18945,7 @@ var __spreadValues$s = (a, b) => {
18945
18945
  return a;
18946
18946
  };
18947
18947
  var __spreadProps$j = (a, b) => __defProps$j(a, __getOwnPropDescs$j(b));
18948
- var __objRest$3 = (source, exclude) => {
18948
+ var __objRest$4 = (source, exclude) => {
18949
18949
  var target = {};
18950
18950
  for (var prop in source)
18951
18951
  if (__hasOwnProp$t.call(source, prop) && exclude.indexOf(prop) < 0)
@@ -19120,7 +19120,7 @@ class NgwConnector {
19120
19120
  credentials = credentials || this.options.auth;
19121
19121
  if (credentials) {
19122
19122
  const { login, password } = credentials;
19123
- const encodedStr = [login, password].map(encodeURIComponent).join(":");
19123
+ const encodedStr = `${login}:${password}`;
19124
19124
  {
19125
19125
  return window.btoa(encodedStr);
19126
19126
  }
@@ -19153,7 +19153,7 @@ class NgwConnector {
19153
19153
  throw new Error("Empty `url` not allowed");
19154
19154
  }
19155
19155
  if (params) {
19156
- const _a = params, restParams = __objRest$3(_a, ["paramList"]);
19156
+ const _a = params, restParams = __objRest$4(_a, ["paramList"]);
19157
19157
  url = template(url, restParams);
19158
19158
  }
19159
19159
  url = encodeURI(fixUrlStr(url));
@@ -20300,7 +20300,7 @@ function getQueries(opt, _queries = [], _parentAllParams = []) {
20300
20300
  const filters_ = filters.filter((x) => Array.isArray(x));
20301
20301
  if (logic === "any") {
20302
20302
  for (const f of filters_) {
20303
- if (isPropertyFilter(f)) {
20303
+ if (isPropertyFilter$1(f)) {
20304
20304
  _queries.push(
20305
20305
  fetchNgwLayerItemsRequest(__spreadProps$g(__spreadValues$o({}, opt), {
20306
20306
  paramList: [..._parentAllParams, ...paramList, createParam(f)]
@@ -20314,7 +20314,7 @@ function getQueries(opt, _queries = [], _parentAllParams = []) {
20314
20314
  const filters2 = [];
20315
20315
  const propertiesFilterList = [];
20316
20316
  for (const f of filters_) {
20317
- if (isPropertyFilter(f)) {
20317
+ if (isPropertyFilter$1(f)) {
20318
20318
  filters2.push(createParam(f));
20319
20319
  } else {
20320
20320
  propertiesFilterList.push(f);
@@ -22131,7 +22131,7 @@ var __spreadValues$e = (a, b) => {
22131
22131
  return a;
22132
22132
  };
22133
22133
  var __spreadProps$a = (a, b) => __defProps$a(a, __getOwnPropDescs$a(b));
22134
- var __objRest$2 = (source, exclude) => {
22134
+ var __objRest$3 = (source, exclude) => {
22135
22135
  var target = {};
22136
22136
  for (var prop in source)
22137
22137
  if (__hasOwnProp$f.call(source, prop) && exclude.indexOf(prop) < 0)
@@ -22144,7 +22144,7 @@ var __objRest$2 = (source, exclude) => {
22144
22144
  return target;
22145
22145
  };
22146
22146
  function updateImageParams(params, resourceId) {
22147
- const _a = params, { bbox, width, height, nd } = _a, rest = __objRest$2(_a, ["bbox", "width", "height", "nd"]);
22147
+ const _a = params, { bbox, width, height, nd } = _a, rest = __objRest$3(_a, ["bbox", "width", "height", "nd"]);
22148
22148
  return __spreadProps$a(__spreadValues$e({}, rest), {
22149
22149
  resource: Array.isArray(resourceId) ? resourceId.join(",") : resourceId,
22150
22150
  extent: bbox,
@@ -22275,7 +22275,7 @@ var __spreadValues$d = (a, b) => {
22275
22275
  }
22276
22276
  return a;
22277
22277
  };
22278
- var __objRest$1 = (source, exclude) => {
22278
+ var __objRest$2 = (source, exclude) => {
22279
22279
  var target = {};
22280
22280
  for (var prop in source)
22281
22281
  if (__hasOwnProp$e.call(source, prop) && exclude.indexOf(prop) < 0)
@@ -22312,7 +22312,7 @@ const URL$1 = "https://qms.nextgis.com";
22312
22312
  function createQmsAdapter(webMapOrOptions, url = URL$1, createOpt = {}) {
22313
22313
  let webMap;
22314
22314
  if ("webMap" in webMapOrOptions) {
22315
- const _a = webMapOrOptions, { webMap: webMap_, url: url_ } = _a, adapterOptions = __objRest$1(_a, ["webMap", "url"]);
22315
+ const _a = webMapOrOptions, { webMap: webMap_, url: url_ } = _a, adapterOptions = __objRest$2(_a, ["webMap", "url"]);
22316
22316
  webMap = webMap_;
22317
22317
  if (url_) {
22318
22318
  url = url_;
@@ -22953,6 +22953,134 @@ function createWebMapAdapter(_0) {
22953
22953
  });
22954
22954
  }
22955
22955
 
22956
+ function isPropertyFilter(value) {
22957
+ return Array.isArray(value) && value.length === 3 && typeof value[0] === "string" && typeof value[1] === "string";
22958
+ }
22959
+ function isPropertiesFilterGroup(value) {
22960
+ return Array.isArray(value) && !isPropertyFilter(value);
22961
+ }
22962
+ function toGetExpr(field) {
22963
+ return ["get", field];
22964
+ }
22965
+ function toConditionExpr(filter) {
22966
+ const [fieldRaw, op, value] = filter;
22967
+ const field = String(fieldRaw);
22968
+ const getExpr = toGetExpr(field);
22969
+ switch (op) {
22970
+ case "eq":
22971
+ if (value === null) {
22972
+ return ["is_null", getExpr];
22973
+ }
22974
+ return ["==", getExpr, value];
22975
+ case "ne":
22976
+ if (value === null) {
22977
+ return ["!is_null", getExpr];
22978
+ }
22979
+ return ["!=", getExpr, value];
22980
+ case "gt":
22981
+ if (typeof value !== "number" && typeof value !== "string") {
22982
+ throw new Error(
22983
+ `Operator "gt" requires number or string for "${field}"`
22984
+ );
22985
+ }
22986
+ return [">", getExpr, value];
22987
+ case "lt":
22988
+ if (typeof value !== "number" && typeof value !== "string") {
22989
+ throw new Error(
22990
+ `Operator "lt" requires number or string for "${field}"`
22991
+ );
22992
+ }
22993
+ return ["<", getExpr, value];
22994
+ case "ge":
22995
+ if (typeof value !== "number" && typeof value !== "string") {
22996
+ throw new Error(
22997
+ `Operator "ge" requires number or string for "${field}"`
22998
+ );
22999
+ }
23000
+ return [">=", getExpr, value];
23001
+ case "le":
23002
+ if (typeof value !== "number" && typeof value !== "string") {
23003
+ throw new Error(
23004
+ `Operator "le" requires number or string for "${field}"`
23005
+ );
23006
+ }
23007
+ return ["<=", getExpr, value];
23008
+ case "in":
23009
+ if (!Array.isArray(value) || !value.every((x) => typeof x === "string" || typeof x === "number")) {
23010
+ throw new Error(
23011
+ `Operator "in" requires (string | number)[] for "${field}"`
23012
+ );
23013
+ }
23014
+ if (!value.length) {
23015
+ throw new Error(
23016
+ `Operator "in" requires non-empty array for "${field}"`
23017
+ );
23018
+ }
23019
+ return ["in", getExpr, ...value];
23020
+ case "notin":
23021
+ if (!Array.isArray(value) || !value.every((x) => typeof x === "string" || typeof x === "number")) {
23022
+ throw new Error(
23023
+ `Operator "notin" requires (string | number)[] for "${field}"`
23024
+ );
23025
+ }
23026
+ if (!value.length) {
23027
+ throw new Error(
23028
+ `Operator "notin" requires non-empty array for "${field}"`
23029
+ );
23030
+ }
23031
+ return ["!in", getExpr, ...value];
23032
+ case "like":
23033
+ case "ilike":
23034
+ throw new Error(
23035
+ `Operator "${op}" is not supported by server FilterExpression`
23036
+ );
23037
+ default: {
23038
+ const exhaustive = op;
23039
+ throw new Error(`Unsupported operator: ${exhaustive}`);
23040
+ }
23041
+ }
23042
+ }
23043
+ function toGroupExpr(filters) {
23044
+ let logicalOp = "all";
23045
+ const children = [];
23046
+ for (const item of filters) {
23047
+ if (item === "all" || item === "any") {
23048
+ logicalOp = item;
23049
+ continue;
23050
+ }
23051
+ if (isPropertyFilter(item)) {
23052
+ children.push(toConditionExpr(item));
23053
+ continue;
23054
+ }
23055
+ if (isPropertiesFilterGroup(item)) {
23056
+ children.push(toGroupExpr(item));
23057
+ continue;
23058
+ }
23059
+ throw new Error("Invalid PropertiesFilter node");
23060
+ }
23061
+ return [logicalOp, ...children];
23062
+ }
23063
+ function propertiesFilterToExpression(filters) {
23064
+ if (!(filters == null ? void 0 : filters.length)) {
23065
+ return [];
23066
+ }
23067
+ return toGroupExpr(filters);
23068
+ }
23069
+ function propertiesFilterToExpressionString(filters) {
23070
+ if (!(filters == null ? void 0 : filters.length)) {
23071
+ return void 0;
23072
+ }
23073
+ return JSON.stringify(
23074
+ propertiesFilterToExpression(filters)
23075
+ );
23076
+ }
23077
+
23078
+ function createLayerFilterParam(resourceId, filter) {
23079
+ return {
23080
+ [`filter[${resourceId}]`]: propertiesFilterToExpressionString(filter)
23081
+ };
23082
+ }
23083
+
22956
23084
  var __defProp$h = Object.defineProperty;
22957
23085
  var __defProps$7 = Object.defineProperties;
22958
23086
  var __getOwnPropDescs$7 = Object.getOwnPropertyDescriptors;
@@ -22972,6 +23100,18 @@ var __spreadValues$9 = (a, b) => {
22972
23100
  return a;
22973
23101
  };
22974
23102
  var __spreadProps$7 = (a, b) => __defProps$7(a, __getOwnPropDescs$7(b));
23103
+ var __objRest$1 = (source, exclude) => {
23104
+ var target = {};
23105
+ for (var prop in source)
23106
+ if (__hasOwnProp$a.call(source, prop) && exclude.indexOf(prop) < 0)
23107
+ target[prop] = source[prop];
23108
+ if (source != null && __getOwnPropSymbols$a)
23109
+ for (var prop of __getOwnPropSymbols$a(source)) {
23110
+ if (exclude.indexOf(prop) < 0 && __propIsEnum$a.call(source, prop))
23111
+ target[prop] = source[prop];
23112
+ }
23113
+ return target;
23114
+ };
22975
23115
  var __publicField$c = (obj, key, value) => __defNormalProp$h(obj, typeof key !== "symbol" ? key + "" : key, value);
22976
23116
  var __async$b = (__this, __arguments, generator) => {
22977
23117
  return new Promise((resolve, reject) => {
@@ -23036,8 +23176,18 @@ function createRasterAdapter(_0) {
23036
23176
  baseUrl: connector.options.baseUrl || ""
23037
23177
  });
23038
23178
  if (opt) {
23039
- const layerAdapterOptions = __spreadProps$7(__spreadValues$9(__spreadValues$9({}, opt), layerOptions.adapterOptions), {
23040
- params: { resource: resourceId },
23179
+ const _a = layerOptions.adapterOptions || {}, { propertiesFilter } = _a, restAdapterOptions = __objRest$1(_a, ["propertiesFilter"]);
23180
+ const filterParams = createLayerFilterParam(
23181
+ resourceId,
23182
+ propertiesFilter
23183
+ );
23184
+ const layerAdapterOptions = __spreadProps$7(__spreadValues$9(__spreadValues$9({}, opt), restAdapterOptions), {
23185
+ params: __spreadValues$9({
23186
+ resource: resourceId
23187
+ }, filterParams),
23188
+ url: adapter === "TILE" && opt.url ? updateUrlParams(opt.url, __spreadValues$9({
23189
+ resource: String(resourceId)
23190
+ }, filterParams)) : opt.url,
23041
23191
  layers: opt.layers || String(resourceId),
23042
23192
  resourceId
23043
23193
  });
@@ -23050,6 +23200,15 @@ function createRasterAdapter(_0) {
23050
23200
  addLayer(addOptions) {
23051
23201
  return super.addLayer(__spreadValues$9(__spreadValues$9({}, this.options), addOptions));
23052
23202
  }
23203
+ propertiesFilter(filters) {
23204
+ return __async$b(this, null, function* () {
23205
+ var _a;
23206
+ const opt = this.options;
23207
+ const params = __spreadValues$9(__spreadValues$9({}, opt.params || {}), createLayerFilterParam(this.resourceId, filters));
23208
+ opt.params = params;
23209
+ (_a = this.updateLayer) == null ? void 0 : _a.call(this, { params });
23210
+ });
23211
+ }
23053
23212
  getIdentificationIds() {
23054
23213
  return __async$b(this, null, function* () {
23055
23214
  if (this.item) {
@@ -23545,7 +23704,8 @@ function getCompanyLogo(connector, options) {
23545
23704
  component: "pyramid"
23546
23705
  }
23547
23706
  });
23548
- if (settings && settings.company_logo && settings.company_logo.enabled) {
23707
+ const company_logo = settings && "company_logo" in settings ? settings.company_logo : void 0;
23708
+ if (company_logo && company_logo.enabled) {
23549
23709
  const anchor = document.createElement("a");
23550
23710
  anchor.style.position = "absolute";
23551
23711
  anchor.style.bottom = "0";
@@ -23580,10 +23740,10 @@ function getCompanyLogo(connector, options) {
23580
23740
  } else {
23581
23741
  return;
23582
23742
  }
23583
- if (settings.company_logo.link !== null && settings.company_logo.link.trim() !== "") {
23584
- anchor.href = settings.company_logo.link;
23743
+ if (company_logo.link !== null && company_logo.link.trim() !== "") {
23744
+ anchor.href = company_logo.link;
23585
23745
  anchor.target = "_blank";
23586
- if (settings.company_logo.link.search(/:\/\/nextgis/) !== -1) {
23746
+ if (company_logo.link.search(/:\/\/nextgis/) !== -1) {
23587
23747
  img.alt = "Get your own Web GIS at nextgis.com";
23588
23748
  }
23589
23749
  }
@@ -26120,7 +26280,7 @@ const _NgwMap = class _NgwMap extends WebMap {
26120
26280
  addNgwLayer(options) {
26121
26281
  return __async$1(this, null, function* () {
26122
26282
  yield this.onMapLoad();
26123
- const { keyname, resourceId } = options;
26283
+ const { keyname, resourceId, filters } = options;
26124
26284
  if (keyname || resourceId !== void 0) {
26125
26285
  deprecatedWarn(
26126
26286
  "set `resource` options instead of `keyname` or `resourceId`"
@@ -26134,12 +26294,15 @@ const _NgwMap = class _NgwMap extends WebMap {
26134
26294
  }
26135
26295
  if (defined(this.options.baseUrl)) {
26136
26296
  try {
26297
+ options.adapterOptions = options.adapterOptions || {};
26137
26298
  if (defined(this.options.setViewDelay)) {
26138
- options.adapterOptions = options.adapterOptions || {};
26139
26299
  if (!defined(options.adapterOptions.setViewDelay)) {
26140
26300
  options.adapterOptions.setViewDelay = this.options.setViewDelay;
26141
26301
  }
26142
26302
  }
26303
+ if (defined(filters)) {
26304
+ options.adapterOptions.propertiesFilter = filters;
26305
+ }
26143
26306
  const adapter = createNgwLayerAdapter(options, this, this.connector);
26144
26307
  const adapterOpts = __spreadValues$1(__spreadValues$1({
26145
26308
  visibility: true