@basemaps/landing 6.33.0 → 6.35.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.
Files changed (46) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/build/__tests__/map.config.test.js +20 -0
  3. package/build/__tests__/map.config.test.js.map +1 -1
  4. package/build/attribution.d.ts +3 -0
  5. package/build/attribution.d.ts.map +1 -1
  6. package/build/attribution.js +1 -1
  7. package/build/attribution.js.map +1 -1
  8. package/build/components/debug.d.ts +15 -19
  9. package/build/components/debug.d.ts.map +1 -1
  10. package/build/components/debug.js +65 -181
  11. package/build/components/debug.js.map +1 -1
  12. package/build/components/layout.header.js +1 -1
  13. package/build/components/layout.header.js.map +1 -1
  14. package/build/config.layer.d.ts +12 -0
  15. package/build/config.layer.d.ts.map +1 -0
  16. package/build/config.layer.js +40 -0
  17. package/build/config.layer.js.map +1 -0
  18. package/build/config.map.d.ts +2 -1
  19. package/build/config.map.d.ts.map +1 -1
  20. package/build/config.map.js +11 -7
  21. package/build/config.map.js.map +1 -1
  22. package/build/debug.map.d.ts +21 -0
  23. package/build/debug.map.d.ts.map +1 -0
  24. package/build/debug.map.js +179 -0
  25. package/build/debug.map.js.map +1 -0
  26. package/build/index.js +2 -0
  27. package/build/index.js.map +1 -1
  28. package/build/tile.matrix.d.ts +1 -1
  29. package/build/tile.matrix.d.ts.map +1 -1
  30. package/build/tile.matrix.js +3 -15
  31. package/build/tile.matrix.js.map +1 -1
  32. package/build/url.d.ts +7 -2
  33. package/build/url.d.ts.map +1 -1
  34. package/build/url.js +42 -11
  35. package/build/url.js.map +1 -1
  36. package/dist/examples/index.openlayers.attribution.wmts.3857.html +1 -1
  37. package/dist/{index-6.33.0-467e63869a31f2e1.css → index-6.35.0-467e63869a31f2e1.css} +0 -0
  38. package/dist/{index-6.33.0-32d4f61662fbd212.js → index-6.35.0-5eab7867ea4ef021.js} +7444 -6861
  39. package/dist/index-6.35.0-96a7f42b0fdac497.js +567 -0
  40. package/dist/index.html +2 -2
  41. package/dist/index.js +35 -35
  42. package/dist/lib/{attribution-6.33.0-a5dcb359f35150b9.js → attribution-6.35.0-b4a0b401b1a4cc45.js} +1 -1
  43. package/dist/lib/{attribution-6.33.0-431936fcac8e2647.js → attribution-6.35.0-fc88f809368e4547.js} +5 -1
  44. package/dist/lib/attribution.js +1 -1
  45. package/package.json +5 -5
  46. package/dist/index-6.33.0-58a76ef19edcbfcf.js +0 -567
package/build/url.js CHANGED
@@ -1,4 +1,16 @@
1
+ import { GoogleTms, ImageFormat } from '@basemaps/geo';
1
2
  import { Config } from './config.js';
3
+ import { toQueryString } from '@basemaps/shared/build/url.js';
4
+ import { isBase58, base58 } from '@basemaps/config/build/base58.js';
5
+ export function ensureBase58(s) {
6
+ if (s == null)
7
+ return null;
8
+ if (isBase58(s))
9
+ return s;
10
+ const text = new TextEncoder();
11
+ const buffer = text.encode(s);
12
+ return base58.encode(buffer);
13
+ }
2
14
  export const WindowUrl = {
3
15
  ImageFormat: 'png',
4
16
  /**
@@ -48,29 +60,48 @@ export const WindowUrl = {
48
60
  return baseUrl;
49
61
  },
50
62
  toBaseWmts() {
51
- const api = Config.ApiKey == null || Config.ApiKey === '' ? '' : `?api=${Config.ApiKey}`;
52
- return `${this.baseUrl()}/v1/tiles/aerial/WMTSCapabilities.xml${api}`;
63
+ const query = toQueryString({ api: Config.ApiKey, config: ensureBase58(Config.map.config) });
64
+ return `${this.baseUrl()}/v1/tiles/aerial/WMTSCapabilities.xml${query}`;
53
65
  },
54
66
  toImageryUrl(layerId, imageryType) {
55
67
  return `${this.baseUrl()}/v1/imagery/${layerId}/${imageryType}`;
56
68
  },
57
- toTileUrl(urlType, tileMatrix, layerId, style) {
58
- const api = Config.ApiKey == null || Config.ApiKey === '' ? '' : `?api=${Config.ApiKey}`;
69
+ toTileUrl(urlType, tileMatrix, layerId, style, config) {
70
+ const queryParams = new URLSearchParams();
71
+ if (Config.ApiKey != null && Config.ApiKey !== '')
72
+ queryParams.set('api', Config.ApiKey);
73
+ if (config != null)
74
+ queryParams.set('config', ensureBase58(config));
75
+ if (urlType === "style" /* Style */) {
76
+ if (tileMatrix.identifier !== GoogleTms.identifier)
77
+ queryParams.set('tileMatrix', tileMatrix.identifier);
78
+ if (WindowUrl.ImageFormat !== ImageFormat.Webp)
79
+ queryParams.set('format', WindowUrl.ImageFormat);
80
+ }
81
+ const q = '?' + queryParams.toString();
59
82
  const baseTileUrl = `${this.baseUrl()}/v1/tiles/${layerId}/${tileMatrix.identifier}`;
60
83
  if (urlType === "raster" /* TileRaster */)
61
- return `${baseTileUrl}/{z}/{x}/{y}.${WindowUrl.ImageFormat}${api}`;
84
+ return `${baseTileUrl}/{z}/{x}/{y}.${WindowUrl.ImageFormat}${q}`;
62
85
  if (urlType === "vector-xyz" /* TileVectorXyz */)
63
- return `${baseTileUrl}/{z}/{x}/{y}.pbf${api}`;
64
- if (urlType === "style" /* TileVectorStyle */)
65
- return `${baseTileUrl}/style/${style}.json${api}`;
86
+ return `${baseTileUrl}/{z}/{x}/{y}.pbf${q}`;
87
+ if (urlType === "style" /* Style */)
88
+ return `${this.baseUrl()}/v1/styles/${style !== null && style !== void 0 ? style : layerId}.json${q}`;
66
89
  if (urlType === "wmts" /* Wmts */)
67
- return `${baseTileUrl}/WMTSCapabilities.xml${api}`;
90
+ return `${baseTileUrl}/WMTSCapabilities.xml${q}`;
68
91
  if (urlType === "attribution" /* Attribution */)
69
- return `${baseTileUrl}/attribution.json${api}`;
92
+ return `${baseTileUrl}/attribution.json${q}`;
70
93
  if (urlType === "tile-wmts" /* TileWmts */) {
71
- return `${baseTileUrl}/{TileMatrix}/{TileCol}/{TileRow}.${WindowUrl.ImageFormat}${api}`;
94
+ return `${baseTileUrl}/{TileMatrix}/{TileCol}/{TileRow}.${WindowUrl.ImageFormat}${q}`;
72
95
  }
73
96
  throw new Error('Unknown url type: ' + urlType);
74
97
  },
98
+ toConfigUrl(layerId, config = Config.map.config) {
99
+ const query = toQueryString({ api: Config.ApiKey, config });
100
+ return `${this.baseUrl()}/v1/config/${layerId}.json${query}`;
101
+ },
102
+ toConfigImageryUrl(layerId, imageryId, config = Config.map.config) {
103
+ const query = toQueryString({ api: Config.ApiKey, config });
104
+ return `${this.baseUrl()}/v1/config/${layerId}/${imageryId}.json${query}`;
105
+ },
75
106
  };
76
107
  //# sourceMappingURL=url.js.map
package/build/url.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"url.js","sourceRoot":"","sources":["../src/url.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"url.js","sourceRoot":"","sources":["../src/url.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@
7
7
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/openlayers/openlayers.github.io@master/en/v6.3.1/css/ol.css"
8
8
  type="text/css" />
9
9
  <script src="https://cdn.jsdelivr.net/gh/openlayers/openlayers.github.io@master/en/v6.3.1/build/ol.js"></script>
10
- <script src="../lib/attribution-6.33.0-a5dcb359f35150b9.js" integrity="sha512-pdyzWfNRULnTqKS/7l7Cpz01oahUjsKk1QO0F1C+ZACqxwM3yvvXQOF88SP78pWAf2EGystuQ0OdOTR42bkmEQ=="></script>
10
+ <script src="../lib/attribution-6.35.0-b4a0b401b1a4cc45.js" integrity="sha512-tKC0AbGkzEXQ42XNQaATba8ZU1/ed8I1pI3e0XYfq8AWBxvjnAMA1x8rt+h2O+R68L14byRdoia4s0FBv7q7tA=="></script>
11
11
  </head>
12
12
 
13
13
  <body>