@nextgis/ngw-map 1.18.9 → 1.18.11

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-map; version: 1.18.9; author: NextGIS */
1
+ /** Bundle of @nextgis/ngw-map; version: 1.18.11; author: NextGIS */
2
2
  import { EventEmitter } from 'events';
3
3
  import CancelablePromise from '@nextgis/cancelable-promise';
4
4
  import { deepmerge, deprecatedWarn, defined, isObject, getIdentifyRadius } from '@nextgis/utils';
@@ -1,4 +1,4 @@
1
- /** Bundle of @nextgis/ngw-map; version: 1.18.9; author: NextGIS */
1
+ /** Bundle of @nextgis/ngw-map; version: 1.18.11; author: NextGIS */
2
2
  var NgwMap = (function (exports) {
3
3
  'use strict';
4
4
 
@@ -1384,6 +1384,13 @@ var NgwMap = (function (exports) {
1384
1384
  };
1385
1385
  }
1386
1386
 
1387
+ function evaluateArgs(cb) {
1388
+ return function (args, data) {
1389
+ var unwrap = args.map(function (a) { return a(); });
1390
+ return cb(unwrap, data);
1391
+ };
1392
+ }
1393
+
1387
1394
  var array = function (args) {
1388
1395
  var firstArg = args[0], secondArg = args[1], thirdArg = args[2];
1389
1396
  var requiredType = undefined;
@@ -1414,55 +1421,86 @@ var NgwMap = (function (exports) {
1414
1421
  }
1415
1422
  return value;
1416
1423
  };
1424
+ function typeOfValue(value) {
1425
+ if (value === null)
1426
+ return 'null';
1427
+ switch (typeof value) {
1428
+ case 'string':
1429
+ return 'string';
1430
+ case 'number':
1431
+ return 'number';
1432
+ case 'boolean':
1433
+ return 'boolean';
1434
+ case 'object':
1435
+ if (Array.isArray(value)) {
1436
+ var arrayType = 'value';
1437
+ if (value.every(function (item) { return typeof item === 'number'; })) {
1438
+ arrayType = 'number';
1439
+ }
1440
+ else if (value.every(function (item) { return typeof item === 'string'; })) {
1441
+ arrayType = 'string';
1442
+ }
1443
+ else if (value.every(function (item) { return typeof item === 'boolean'; })) {
1444
+ arrayType = 'boolean';
1445
+ }
1446
+ return "array<".concat(arrayType, ", ").concat(value.length, ">");
1447
+ }
1448
+ else {
1449
+ return 'object';
1450
+ }
1451
+ default:
1452
+ return 'undefined';
1453
+ }
1454
+ }
1417
1455
  var typeExpressions = {
1418
- array: array,
1419
- boolean: fallback(function (arg) { return (typeof arg === 'boolean' ? arg : undefined); }),
1420
- literal: function (_a) {
1456
+ array: evaluateArgs(array),
1457
+ boolean: evaluateArgs(fallback(function (arg) { return (typeof arg === 'boolean' ? arg : undefined); })),
1458
+ literal: evaluateArgs(function (_a) {
1421
1459
  var arg = _a[0];
1422
1460
  return arg;
1423
- },
1424
- number: fallback(function (arg) { return (typeof arg === 'number' ? arg : undefined); }),
1425
- object: fallback(function (arg) {
1461
+ }),
1462
+ number: evaluateArgs(fallback(function (arg) { return (typeof arg === 'number' ? arg : undefined); })),
1463
+ object: evaluateArgs(fallback(function (arg) {
1426
1464
  return arg !== null && typeof arg === 'object' && !Array.isArray(arg)
1427
1465
  ? arg
1428
1466
  : undefined;
1429
- }),
1430
- string: fallback(function (arg) { return (typeof arg === 'string' ? arg : undefined); }),
1431
- 'to-boolean': fallback(Boolean),
1432
- 'to-number': fallback(Number),
1433
- 'to-string': fallback(String),
1434
- typeof: function (_a) {
1467
+ })),
1468
+ string: evaluateArgs(fallback(function (arg) { return (typeof arg === 'string' ? arg : undefined); })),
1469
+ 'to-boolean': evaluateArgs(fallback(Boolean)),
1470
+ 'to-number': evaluateArgs(fallback(Number)),
1471
+ 'to-string': evaluateArgs(fallback(String)),
1472
+ typeof: evaluateArgs(function (_a) {
1435
1473
  var arg = _a[0];
1436
- return typeof arg;
1437
- },
1474
+ return typeOfValue(arg);
1475
+ }),
1438
1476
  };
1439
1477
 
1440
1478
  var mathExpressions = {
1441
- '+': function (args) { return args.reduce(function (a, b) { return a + b; }, 0); },
1442
- '-': function (args) { return args.reduce(function (a, b) { return a - b; }); },
1443
- '*': function (args) { return args.reduce(function (a, b) { return a * b; }, 1); },
1444
- '/': function (args) { return args.reduce(function (a, b) { return a / b; }); },
1445
- '%': function (args) { return args[0] % args[1]; },
1446
- '^': function (args) { return Math.pow(args[0], args[1]); },
1447
- abs: function (args) { return Math.abs(args[0]); },
1448
- acos: function (args) { return Math.acos(args[0]); },
1449
- asin: function (args) { return Math.asin(args[0]); },
1450
- atan: function (args) { return Math.atan(args[0]); },
1451
- ceil: function (args) { return Math.ceil(args[0]); },
1452
- cos: function (args) { return Math.cos(args[0]); },
1479
+ '+': evaluateArgs(function (args) { return args.reduce(function (a, b) { return a + b; }, 0); }),
1480
+ '-': evaluateArgs(function (args) { return args.reduce(function (a, b) { return a - b; }); }),
1481
+ '*': evaluateArgs(function (args) { return args.reduce(function (a, b) { return a * b; }, 1); }),
1482
+ '/': evaluateArgs(function (args) { return args.reduce(function (a, b) { return a / b; }); }),
1483
+ '%': evaluateArgs(function (args) { return args[0] % args[1]; }),
1484
+ '^': evaluateArgs(function (args) { return Math.pow(args[0], args[1]); }),
1485
+ abs: evaluateArgs(function (args) { return Math.abs(args[0]); }),
1486
+ acos: evaluateArgs(function (args) { return Math.acos(args[0]); }),
1487
+ asin: evaluateArgs(function (args) { return Math.asin(args[0]); }),
1488
+ atan: evaluateArgs(function (args) { return Math.atan(args[0]); }),
1489
+ ceil: evaluateArgs(function (args) { return Math.ceil(args[0]); }),
1490
+ cos: evaluateArgs(function (args) { return Math.cos(args[0]); }),
1453
1491
  e: function () { return Math.E; },
1454
- floor: function (args) { return Math.floor(args[0]); },
1455
- ln: function (args) { return Math.log(args[0]); },
1492
+ floor: evaluateArgs(function (args) { return Math.floor(args[0]); }),
1493
+ ln: evaluateArgs(function (args) { return Math.log(args[0]); }),
1456
1494
  ln2: function () { return Math.LN2; },
1457
- log10: function (args) { return Math.log10(args[0]); },
1458
- log2: function (args) { return Math.log2(args[0]); },
1459
- max: function (args) { return Math.max.apply(Math, args); },
1460
- min: function (args) { return Math.min.apply(Math, args); },
1495
+ log10: evaluateArgs(function (args) { return Math.log10(args[0]); }),
1496
+ log2: evaluateArgs(function (args) { return Math.log2(args[0]); }),
1497
+ max: evaluateArgs(function (args) { return Math.max.apply(Math, args); }),
1498
+ min: evaluateArgs(function (args) { return Math.min.apply(Math, args); }),
1461
1499
  pi: function () { return Math.PI; },
1462
- round: function (args) { return Math.round(args[0]); },
1463
- sin: function (args) { return Math.sin(args[0]); },
1464
- sqrt: function (args) { return Math.sqrt(args[0]); },
1465
- tan: function (args) { return Math.tan(args[0]); },
1500
+ round: evaluateArgs(function (args) { return Math.round(args[0]); }),
1501
+ sin: evaluateArgs(function (args) { return Math.sin(args[0]); }),
1502
+ sqrt: evaluateArgs(function (args) { return Math.sqrt(args[0]); }),
1503
+ tan: evaluateArgs(function (args) { return Math.tan(args[0]); }),
1466
1504
  };
1467
1505
 
1468
1506
  function get(_a, data) {
@@ -1520,140 +1558,140 @@ var NgwMap = (function (exports) {
1520
1558
  throw new Error("Invalid input type for 'slice'. Expected string or array, got ".concat(typeof input, "."));
1521
1559
  }
1522
1560
  var lookupExpressions = {
1523
- get: get,
1524
- length: length,
1525
- at: at,
1526
- has: has,
1527
- in: inFunc,
1528
- 'index-of': indexOf,
1529
- slice: slice,
1561
+ get: evaluateArgs(get),
1562
+ length: evaluateArgs(length),
1563
+ at: evaluateArgs(at),
1564
+ has: evaluateArgs(has),
1565
+ in: evaluateArgs(inFunc),
1566
+ 'index-of': evaluateArgs(indexOf),
1567
+ slice: evaluateArgs(slice),
1530
1568
  };
1531
1569
 
1532
1570
  var stringExpressions = {
1533
- concat: function (args) { return args.reduce(function (a, b) { return String(a) + String(b); }, ''); },
1534
- downcase: function (args) { return String(args[0]).toLowerCase(); },
1535
- upcase: function (args) { return String(args[0]).toUpperCase(); },
1571
+ concat: evaluateArgs(function (args) { return args.reduce(function (a, b) { return String(a) + String(b); }, ''); }),
1572
+ downcase: evaluateArgs(function (args) { return String(args[0]).toLowerCase(); }),
1573
+ upcase: evaluateArgs(function (args) { return String(args[0]).toUpperCase(); }),
1536
1574
  };
1537
1575
 
1538
1576
  function not(_a) {
1539
1577
  var expr = _a[0];
1540
1578
  return !expr;
1541
1579
  }
1542
- var checkCompareValues = function (_a) {
1543
- var a = _a[0], b = _a[1];
1544
- if (typeof a !== typeof b) {
1545
- throw new Error('Values have different types.');
1546
- }
1547
- };
1548
1580
  function notEqual(_a) {
1549
1581
  var a = _a[0], b = _a[1];
1550
- checkCompareValues([a, b]);
1551
1582
  return a !== b;
1552
1583
  }
1553
1584
  function lessThan(_a) {
1554
1585
  var left = _a[0], right = _a[1];
1555
- checkCompareValues([left, right]);
1556
1586
  return left < right;
1557
1587
  }
1558
1588
  function lessThanOrEqual(_a) {
1559
1589
  var left = _a[0], right = _a[1];
1560
- checkCompareValues([left, right]);
1561
1590
  return left <= right;
1562
1591
  }
1563
1592
  function equal(_a) {
1564
1593
  var left = _a[0], right = _a[1];
1565
- checkCompareValues([left, right]);
1566
1594
  return left === right;
1567
1595
  }
1568
1596
  function greaterThan(_a) {
1569
1597
  var left = _a[0], right = _a[1];
1570
- checkCompareValues([left, right]);
1571
1598
  return left > right;
1572
1599
  }
1573
1600
  function greaterThanOrEqual(_a) {
1574
1601
  var left = _a[0], right = _a[1];
1575
- checkCompareValues([left, right]);
1576
1602
  return left >= right;
1577
1603
  }
1578
- function all(args) {
1604
+ var coalesce = function (args) {
1579
1605
  for (var i = 0; i < args.length; i++) {
1580
- var arg = args[i];
1606
+ var arg = args[i]();
1607
+ if (arg !== null && arg !== undefined) {
1608
+ return arg;
1609
+ }
1610
+ }
1611
+ return null;
1612
+ };
1613
+ var all = function (args) {
1614
+ for (var i = 0; i < args.length; i++) {
1615
+ var arg = args[i]();
1581
1616
  if (!arg) {
1582
1617
  return false;
1583
1618
  }
1584
1619
  }
1585
1620
  return true;
1586
- }
1587
- function any(args) {
1621
+ };
1622
+ var any = function (args) {
1588
1623
  for (var i = 0; i < args.length; i++) {
1589
- var arg = args[i];
1624
+ var arg = args[i]();
1590
1625
  if (arg) {
1591
1626
  return true;
1592
1627
  }
1593
1628
  }
1594
1629
  return false;
1595
- }
1596
- function match(args) {
1597
- var lookup = args[0], cases = args.slice(1);
1630
+ };
1631
+ var match = function (args) {
1632
+ var lookupFn = args[0], cases = args.slice(1);
1633
+ var lookup = lookupFn();
1598
1634
  // remove last odd item from cases array
1599
1635
  var defValue = cases.splice(-1, cases.length % 2)[0];
1600
1636
  for (var fry = 0; fry < cases.length - 1; fry += 2) {
1601
- var key = cases[fry];
1637
+ var key = cases[fry]();
1602
1638
  if (key === lookup) {
1603
- return cases[fry + 1];
1639
+ return cases[fry + 1]();
1604
1640
  }
1605
1641
  }
1606
- return defValue;
1607
- }
1608
- function caseFunc(args) {
1642
+ return defValue();
1643
+ };
1644
+ var caseFunc = function (args) {
1609
1645
  if (args.length < 2) {
1610
1646
  throw new Error('The "case" function requires at least a condition and a corresponding output.');
1611
1647
  }
1612
- var fallback = args[args.length - 1];
1613
1648
  if (args.length % 2 === 0) {
1614
1649
  throw new Error('Missing a fallback value or unmatched condition-output pair.');
1615
1650
  }
1616
1651
  for (var i = 0; i < args.length - 1; i += 2) {
1617
- var condition = args[i];
1618
- var value = args[i + 1];
1652
+ var condition = args[i]();
1653
+ var value = args[i + 1]();
1619
1654
  if (condition) {
1620
1655
  return value;
1621
1656
  }
1622
1657
  }
1623
- return fallback;
1624
- }
1658
+ var fallback = args[args.length - 1];
1659
+ return fallback();
1660
+ };
1625
1661
  var decisionExpressions = {
1626
- '!': not,
1627
- '!=': notEqual,
1628
- '<': lessThan,
1629
- '<=': lessThanOrEqual,
1630
- '==': equal,
1631
- '>': greaterThan,
1632
- '>=': greaterThanOrEqual,
1662
+ '!': evaluateArgs(not),
1663
+ '!=': evaluateArgs(notEqual),
1664
+ '<': evaluateArgs(lessThan),
1665
+ '<=': evaluateArgs(lessThanOrEqual),
1666
+ '==': evaluateArgs(equal),
1667
+ '>': evaluateArgs(greaterThan),
1668
+ '>=': evaluateArgs(greaterThanOrEqual),
1669
+ coalesce: coalesce,
1633
1670
  all: all,
1634
1671
  any: any,
1635
1672
  case: caseFunc,
1636
1673
  match: match,
1637
1674
  };
1638
1675
 
1639
- function step(args) {
1640
- var input = args[0], defaultValue = args[1], stops = args.slice(2);
1676
+ var step = function (args) {
1677
+ var inputFn = args[0], defaultValue = args[1], stops = args.slice(2);
1678
+ var input = inputFn();
1641
1679
  if (typeof input !== 'number') {
1642
- return defaultValue;
1680
+ return defaultValue();
1643
1681
  }
1644
1682
  for (var i = 0; i < stops.length - 2; i += 2) {
1645
- var stopInput = stops[i];
1646
- var stopOutput = stops[i + 1];
1647
- var nextStopInput = stops[i + 2];
1683
+ var stopInput = stops[i]();
1684
+ var stopOutput = stops[i + 1]();
1685
+ var nextStopInput = stops[i + 2]();
1648
1686
  if (input >= stopInput && input < nextStopInput) {
1649
1687
  return stopOutput;
1650
1688
  }
1651
1689
  }
1652
- if (input >= stops[stops.length - 2]) {
1653
- return stops[stops.length - 1];
1690
+ if (input >= stops[stops.length - 2]()) {
1691
+ return stops[stops.length - 1]();
1654
1692
  }
1655
- return defaultValue;
1656
- }
1693
+ return defaultValue();
1694
+ };
1657
1695
 
1658
1696
  var COLORS = {
1659
1697
  aliceblue: '#f0f8ff',
@@ -1923,22 +1961,24 @@ var NgwMap = (function (exports) {
1923
1961
  }
1924
1962
  throw new Error('Unsupported output type for linear interpolation.');
1925
1963
  }
1926
- function interpolate(_a) {
1927
- var interpolation = _a[0], input = _a[1], stops = _a.slice(2);
1964
+ var interpolate = function (_a) {
1965
+ var interpolationFn = _a[0], inputFn = _a[1], stops = _a.slice(2);
1928
1966
  if (stops.length < 2) {
1929
1967
  throw new Error('At least two stops are required');
1930
1968
  }
1931
- if (typeof input !== 'number') {
1932
- throw new Error('Input must be a number.');
1933
- }
1934
1969
  if (stops.length < 2 || stops.length % 2 !== 0) {
1935
1970
  throw new Error('Invalid stops provided.');
1936
1971
  }
1972
+ var input = inputFn();
1973
+ if (typeof input !== 'number') {
1974
+ throw new Error('Input must be a number.');
1975
+ }
1976
+ var interpolation = interpolationFn();
1937
1977
  for (var i = 0; i < stops.length - 2; i += 2) {
1938
- var stopInput1 = stops[i];
1939
- var stopOutput1 = stops[i + 1];
1940
- var stopInput2 = stops[i + 2];
1941
- var stopOutput2 = stops[i + 3];
1978
+ var stopInput1 = stops[i]();
1979
+ var stopOutput1 = stops[i + 1]();
1980
+ var stopInput2 = stops[i + 2]();
1981
+ var stopOutput2 = stops[i + 3]();
1942
1982
  if (input >= stopInput1 && input <= stopInput2) {
1943
1983
  if (interpolation[0] === 'linear') {
1944
1984
  return linearInterpolation(input, stopInput1, stopOutput1, stopInput2, stopOutput2);
@@ -1957,7 +1997,7 @@ var NgwMap = (function (exports) {
1957
1997
  }
1958
1998
  }
1959
1999
  throw new Error('Invalid interpolation type.');
1960
- }
2000
+ };
1961
2001
 
1962
2002
  var interpolationExpressions = {
1963
2003
  step: step,
@@ -1981,7 +2021,7 @@ var NgwMap = (function (exports) {
1981
2021
  var name = expression[0], args = expression.slice(1);
1982
2022
  var expressionFun = expressions[name];
1983
2023
  if (expressionFun) {
1984
- return expressionFun(args.map(function (arg) { return (isExpression(arg) ? evaluate(arg, data) : arg); }), data);
2024
+ return expressionFun(args.map(function (arg) { return function () { return isExpression(arg) ? evaluate(arg, data) : arg; }; }), data);
1985
2025
  }
1986
2026
  throw new Error("Expression \"".concat(name, "\" is not supported."));
1987
2027
  }