@deck.gl/carto 9.0.14 → 9.0.15
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.
- package/dist/api/basemap.d.ts +17 -0
- package/dist/api/basemap.d.ts.map +1 -0
- package/dist/api/basemap.js +76 -0
- package/dist/api/fetch-map.d.ts +10 -12
- package/dist/api/fetch-map.d.ts.map +1 -1
- package/dist/api/fetch-map.js +7 -3
- package/dist/api/index.d.ts +2 -2
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/parse-map.d.ts +21 -1
- package/dist/api/parse-map.d.ts.map +1 -1
- package/dist/api/parse-map.js +1 -0
- package/dist/api/query.d.ts.map +1 -1
- package/dist/api/query.js +4 -3
- package/dist/api/request-with-parameters.js +1 -1
- package/dist/api/types.d.ts +82 -1
- package/dist/api/types.d.ts.map +1 -1
- package/dist/basemap.d.ts +17 -0
- package/dist/basemap.d.ts.map +1 -1
- package/dist/basemap.js +97 -7
- package/dist/cartoRasterTile-worker.js +1 -1
- package/dist/cartoSpatialTile-worker.js +1 -1
- package/dist/cartoVectorTile-worker.js +1 -1
- package/dist/dist.dev.js +1734 -2360
- package/dist/index.cjs +260 -82
- package/dist/index.cjs.map +4 -4
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/layers/heatmap.d.ts +3 -2
- package/dist/layers/heatmap.d.ts.map +1 -1
- package/dist/layers/heatmap.js +18 -6
- package/dist/layers/quadbin-heatmap-tile-layer.d.ts +5 -2
- package/dist/layers/quadbin-heatmap-tile-layer.d.ts.map +1 -1
- package/dist/layers/quadbin-heatmap-tile-layer.js +3 -2
- package/dist/layers/schema/carto-raster-tile-loader.js +1 -1
- package/dist/layers/schema/carto-spatial-tile-loader.js +1 -1
- package/dist/layers/schema/carto-vector-tile-loader.js +1 -1
- package/dist/utils.d.ts +2 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +2 -0
- package/dist.min.js +21 -15
- package/package.json +6 -6
- package/src/api/basemap.ts +100 -0
- package/src/api/fetch-map.ts +20 -6
- package/src/api/index.ts +11 -2
- package/src/api/parse-map.ts +24 -3
- package/src/api/query.ts +4 -2
- package/src/api/request-with-parameters.ts +1 -1
- package/src/api/types.ts +103 -1
- package/src/basemap.ts +134 -7
- package/src/index.ts +14 -2
- package/src/layers/heatmap.ts +23 -8
- package/src/layers/quadbin-heatmap-tile-layer.ts +8 -5
- package/src/utils.ts +5 -0
package/dist/index.cjs
CHANGED
|
@@ -36,12 +36,18 @@ __export(dist_exports, {
|
|
|
36
36
|
RasterTileLayer: () => RasterTileLayer,
|
|
37
37
|
SOURCE_DEFAULTS: () => SOURCE_DEFAULTS,
|
|
38
38
|
VectorTileLayer: () => VectorTileLayer,
|
|
39
|
+
_GOOGLE_BASEMAPS: () => GOOGLE_BASEMAPS,
|
|
39
40
|
_PointLabelLayer: () => PointLabelLayer,
|
|
41
|
+
_STYLE_LAYER_GROUPS: () => STYLE_LAYER_GROUPS,
|
|
42
|
+
_applyLayerGroupFilters: () => applyLayerGroupFilters,
|
|
43
|
+
_fetchStyle: () => fetchStyle,
|
|
44
|
+
_getStyleUrl: () => getStyleUrl,
|
|
40
45
|
boundaryQuerySource: () => boundaryQuerySource,
|
|
41
46
|
boundaryTableSource: () => boundaryTableSource,
|
|
42
47
|
colorBins: () => colorBins,
|
|
43
48
|
colorCategories: () => colorCategories,
|
|
44
49
|
colorContinuous: () => colorContinuous,
|
|
50
|
+
fetchBasemapProps: () => fetchBasemapProps,
|
|
45
51
|
fetchMap: () => fetchMap,
|
|
46
52
|
h3QuerySource: () => h3QuerySource,
|
|
47
53
|
h3TableSource: () => h3TableSource,
|
|
@@ -263,9 +269,11 @@ function scaleIdentity() {
|
|
|
263
269
|
};
|
|
264
270
|
return scale;
|
|
265
271
|
}
|
|
272
|
+
var isObject = (x) => x !== null && typeof x === "object";
|
|
273
|
+
var isPureObject = (x) => isObject(x) && x.constructor === {}.constructor;
|
|
266
274
|
|
|
267
275
|
// dist/layers/schema/carto-raster-tile-loader.js
|
|
268
|
-
var VERSION = true ? "9.0.
|
|
276
|
+
var VERSION = true ? "9.0.15" : "latest";
|
|
269
277
|
var id = "cartoRasterTile";
|
|
270
278
|
var DEFAULT_OPTIONS = {
|
|
271
279
|
cartoRasterTile: {
|
|
@@ -536,7 +544,7 @@ function binaryToSpatialjson(binary) {
|
|
|
536
544
|
}
|
|
537
545
|
|
|
538
546
|
// dist/layers/schema/carto-spatial-tile-loader.js
|
|
539
|
-
var VERSION2 = true ? "9.0.
|
|
547
|
+
var VERSION2 = true ? "9.0.15" : "latest";
|
|
540
548
|
var id2 = "cartoSpatialTile";
|
|
541
549
|
var DEFAULT_OPTIONS2 = {
|
|
542
550
|
cartoSpatialTile: {
|
|
@@ -1042,6 +1050,7 @@ var import_layers2 = require("@deck.gl/layers");
|
|
|
1042
1050
|
// dist/layers/heatmap.js
|
|
1043
1051
|
var import_shadertools = require("@luma.gl/shadertools");
|
|
1044
1052
|
var fs = `uniform heatmapUniforms {
|
|
1053
|
+
vec2 delta;
|
|
1045
1054
|
float radiusPixels;
|
|
1046
1055
|
vec2 colorDomain;
|
|
1047
1056
|
vec3 color1;
|
|
@@ -1081,24 +1090,29 @@ float f = (value - range.x) / (range.y - range.x);
|
|
|
1081
1090
|
return mix(c1, c2, f) / 255.0;
|
|
1082
1091
|
}
|
|
1083
1092
|
const vec3 SHIFT = vec3(1.0, 256.0, 256.0 * 256.0);
|
|
1093
|
+
vec4 pack(float value) {
|
|
1094
|
+
return vec4(mod(vec3(value, floor(value / SHIFT.yz)), 256.0), 255.0) / 255.0;
|
|
1095
|
+
}
|
|
1084
1096
|
float unpack(vec3 color) {
|
|
1085
1097
|
return 255.0 * dot(color, SHIFT);
|
|
1086
1098
|
}
|
|
1087
1099
|
vec4 heatmap_sampleColor(sampler2D source, vec2 texSize, vec2 texCoord) {
|
|
1100
|
+
bool firstPass = (heatmap.delta.y < 0.5);
|
|
1088
1101
|
float accumulator = 0.0;
|
|
1089
1102
|
float offset = 0.5 * random(vec3(12.9898, 78.233, 151.7182), 0.0);
|
|
1090
1103
|
const float sigma = SUPPORT / 3.0;
|
|
1091
1104
|
const float a = -0.5 / (sigma * sigma);
|
|
1092
|
-
const float w0 =
|
|
1105
|
+
const float w0 = 0.3989422804014327 / sigma;
|
|
1093
1106
|
for (float t = -SUPPORT; t <= SUPPORT; t++) {
|
|
1094
|
-
|
|
1095
|
-
vec2 percent = (vec2(s, t) + offset - 0.5) / SUPPORT;
|
|
1107
|
+
vec2 percent = (t * heatmap.delta + offset - 0.5) / SUPPORT;
|
|
1096
1108
|
vec2 delta = percent * heatmap.radiusPixels / texSize;
|
|
1097
1109
|
vec4 offsetColor = texture(source, texCoord + delta);
|
|
1098
1110
|
float value = unpack(offsetColor.rgb);
|
|
1099
|
-
float weight = w0 * exp(a *
|
|
1111
|
+
float weight = w0 * exp(a * t * t);
|
|
1100
1112
|
accumulator += value * weight;
|
|
1101
1113
|
}
|
|
1114
|
+
if (firstPass) {
|
|
1115
|
+
return pack(accumulator);
|
|
1102
1116
|
}
|
|
1103
1117
|
float f = (accumulator - heatmap.colorDomain[0]) / (heatmap.colorDomain[1] - heatmap.colorDomain[0]);
|
|
1104
1118
|
vec4 color = vec4(0.0);
|
|
@@ -1120,6 +1134,7 @@ var defaultColorRange = [
|
|
|
1120
1134
|
var heatmap = {
|
|
1121
1135
|
name: "heatmap",
|
|
1122
1136
|
uniformPropTypes: {
|
|
1137
|
+
delta: { value: [0, 1] },
|
|
1123
1138
|
radiusPixels: { value: 20, min: 0, softMax: 100 },
|
|
1124
1139
|
colorDomain: { value: [0, 1] },
|
|
1125
1140
|
color1: { value: [0, 0, 0] },
|
|
@@ -1131,6 +1146,7 @@ var heatmap = {
|
|
|
1131
1146
|
opacity: { value: 1, min: 0, max: 1 }
|
|
1132
1147
|
},
|
|
1133
1148
|
uniformTypes: {
|
|
1149
|
+
delta: "vec2<f32>",
|
|
1134
1150
|
radiusPixels: "f32",
|
|
1135
1151
|
colorDomain: "vec2<f32>",
|
|
1136
1152
|
color1: "vec3<f32>",
|
|
@@ -1142,9 +1158,10 @@ var heatmap = {
|
|
|
1142
1158
|
opacity: "f32"
|
|
1143
1159
|
},
|
|
1144
1160
|
getUniforms: (opts) => {
|
|
1145
|
-
const { colorRange = defaultColorRange, radiusPixels = 20, colorDomain = [0, 1], opacity = 1 } = opts;
|
|
1161
|
+
const { delta = [1, 0], colorRange = defaultColorRange, radiusPixels = 20, colorDomain = [0, 1], opacity = 1 } = opts;
|
|
1146
1162
|
const [color1, color2, color3, color4, color5, color6] = colorRange;
|
|
1147
1163
|
return {
|
|
1164
|
+
delta,
|
|
1148
1165
|
color1,
|
|
1149
1166
|
color2,
|
|
1150
1167
|
color3,
|
|
@@ -1158,7 +1175,10 @@ var heatmap = {
|
|
|
1158
1175
|
},
|
|
1159
1176
|
dependencies: [import_shadertools.random],
|
|
1160
1177
|
fs,
|
|
1161
|
-
passes: [
|
|
1178
|
+
passes: [
|
|
1179
|
+
{ sampler: true, uniforms: { delta: [1, 0] } },
|
|
1180
|
+
{ sampler: true, uniforms: { delta: [0, 1] } }
|
|
1181
|
+
]
|
|
1162
1182
|
};
|
|
1163
1183
|
|
|
1164
1184
|
// dist/layers/post-process-utils.js
|
|
@@ -1293,7 +1313,7 @@ var _RTTSolidPolygonLayer = class extends RTTModifier(import_layers2.SolidPolygo
|
|
|
1293
1313
|
float value = 255.0 * dot(SHIFT, color.rgb);
|
|
1294
1314
|
|
|
1295
1315
|
// Keep "power" delivered to screen constant when tiles update
|
|
1296
|
-
float relativeZoom = log2(
|
|
1316
|
+
float relativeZoom = log2(project.scale) - cellResolution + 3.5; // range 0-1
|
|
1297
1317
|
float relativeArea = pow(2.0, -2.0 * relativeZoom); // range 0.25-1
|
|
1298
1318
|
value *= relativeArea;
|
|
1299
1319
|
|
|
@@ -1321,7 +1341,7 @@ function encodeWeight(w) {
|
|
|
1321
1341
|
return [w % 256, Math.floor(w / 256), Math.floor(w / (256 * 256))];
|
|
1322
1342
|
}
|
|
1323
1343
|
var defaultProps6 = {
|
|
1324
|
-
|
|
1344
|
+
data: TilejsonPropType,
|
|
1325
1345
|
getWeight: { type: "accessor", value: 1 }
|
|
1326
1346
|
};
|
|
1327
1347
|
var _QuadbinHeatmapTileLayer = class extends import_core9.CompositeLayer {
|
|
@@ -1619,7 +1639,7 @@ var carto_properties_tile_loader_default = CartoPropertiesTileLoader;
|
|
|
1619
1639
|
|
|
1620
1640
|
// dist/layers/schema/carto-vector-tile-loader.js
|
|
1621
1641
|
var import_earcut = __toESM(require("earcut"), 1);
|
|
1622
|
-
var VERSION3 = true ? "9.0.
|
|
1642
|
+
var VERSION3 = true ? "9.0.15" : "latest";
|
|
1623
1643
|
var id3 = "cartoVectorTile";
|
|
1624
1644
|
var DEFAULT_OPTIONS3 = {
|
|
1625
1645
|
cartoVectorTile: {
|
|
@@ -1777,15 +1797,140 @@ var VectorTileLayer = _VectorTileLayer;
|
|
|
1777
1797
|
_VectorTileLayer.defaultProps = defaultProps9;
|
|
1778
1798
|
})();
|
|
1779
1799
|
|
|
1800
|
+
// dist/api/carto-api-error.js
|
|
1801
|
+
var CartoAPIError = class extends Error {
|
|
1802
|
+
constructor(error, errorContext, response) {
|
|
1803
|
+
let responseString = "Failed to connect";
|
|
1804
|
+
if (response) {
|
|
1805
|
+
responseString = "Server returned: ";
|
|
1806
|
+
if (response.status === 400) {
|
|
1807
|
+
responseString += "Bad request";
|
|
1808
|
+
} else if (response.status === 401 || response.status === 403) {
|
|
1809
|
+
responseString += "Unauthorized access";
|
|
1810
|
+
} else if (response.status === 404) {
|
|
1811
|
+
responseString += "Not found";
|
|
1812
|
+
} else {
|
|
1813
|
+
responseString += "Error";
|
|
1814
|
+
}
|
|
1815
|
+
responseString += ` (${response.status}):`;
|
|
1816
|
+
}
|
|
1817
|
+
responseString += ` ${error.message || error}`;
|
|
1818
|
+
let message = `${errorContext.requestType} API request failed`;
|
|
1819
|
+
message += `
|
|
1820
|
+
${responseString}`;
|
|
1821
|
+
for (const key of Object.keys(errorContext)) {
|
|
1822
|
+
if (key === "requestType")
|
|
1823
|
+
continue;
|
|
1824
|
+
message += `
|
|
1825
|
+
${formatErrorKey(key)}: ${errorContext[key]}`;
|
|
1826
|
+
}
|
|
1827
|
+
message += "\n";
|
|
1828
|
+
super(message);
|
|
1829
|
+
this.name = "CartoAPIError";
|
|
1830
|
+
this.response = response;
|
|
1831
|
+
this.error = error;
|
|
1832
|
+
this.errorContext = errorContext;
|
|
1833
|
+
}
|
|
1834
|
+
};
|
|
1835
|
+
function formatErrorKey(key) {
|
|
1836
|
+
return key.replace(/([A-Z])/g, " $1").replace(/^./, (s) => s.toUpperCase());
|
|
1837
|
+
}
|
|
1838
|
+
|
|
1780
1839
|
// dist/basemap.js
|
|
1781
|
-
var
|
|
1840
|
+
var cartoStyleUrlTemplate = "https://basemaps.cartocdn.com/gl/{basemap}-gl-style/style.json";
|
|
1841
|
+
var CARTO_MAP_STYLES = ["positron", "dark-matter", "voyager"];
|
|
1842
|
+
var GOOGLE_BASEMAPS = {
|
|
1843
|
+
roadmap: {
|
|
1844
|
+
mapTypeId: "roadmap",
|
|
1845
|
+
mapId: "3754c817b510f791"
|
|
1846
|
+
},
|
|
1847
|
+
"google-positron": {
|
|
1848
|
+
mapTypeId: "roadmap",
|
|
1849
|
+
mapId: "ea84ae4203ef21cd"
|
|
1850
|
+
},
|
|
1851
|
+
"google-dark-matter": {
|
|
1852
|
+
mapTypeId: "roadmap",
|
|
1853
|
+
mapId: "2fccc3b36c22a0e2"
|
|
1854
|
+
},
|
|
1855
|
+
"google-voyager": {
|
|
1856
|
+
mapTypeId: "roadmap",
|
|
1857
|
+
mapId: "885caf1e15bb9ef2"
|
|
1858
|
+
},
|
|
1859
|
+
satellite: {
|
|
1860
|
+
mapTypeId: "satellite"
|
|
1861
|
+
},
|
|
1862
|
+
hybrid: {
|
|
1863
|
+
mapTypeId: "hybrid"
|
|
1864
|
+
},
|
|
1865
|
+
terrain: {
|
|
1866
|
+
mapTypeId: "terrain"
|
|
1867
|
+
}
|
|
1868
|
+
};
|
|
1869
|
+
var STYLE_LAYER_GROUPS = [
|
|
1870
|
+
{
|
|
1871
|
+
slug: "label",
|
|
1872
|
+
filter: ({ id: id4 }) => Boolean(id4.match(/(?=(label|_label|place-|place_|poi-|poi_|watername_|roadname_|housenumber))/)),
|
|
1873
|
+
defaultVisibility: true
|
|
1874
|
+
},
|
|
1875
|
+
{
|
|
1876
|
+
slug: "road",
|
|
1877
|
+
filter: ({ id: id4 }) => Boolean(id4.match(/(?=(road|railway|tunnel|street|bridge))(?!.*label)/)),
|
|
1878
|
+
defaultVisibility: true
|
|
1879
|
+
},
|
|
1880
|
+
{
|
|
1881
|
+
slug: "border",
|
|
1882
|
+
filter: ({ id: id4 }) => Boolean(id4.match(/border|boundaries|boundary_/)),
|
|
1883
|
+
defaultVisibility: false
|
|
1884
|
+
},
|
|
1885
|
+
{
|
|
1886
|
+
slug: "building",
|
|
1887
|
+
filter: ({ id: id4 }) => Boolean(id4.match(/building/)),
|
|
1888
|
+
defaultVisibility: true
|
|
1889
|
+
},
|
|
1890
|
+
{
|
|
1891
|
+
slug: "water",
|
|
1892
|
+
filter: ({ id: id4 }) => Boolean(id4.match(/(?=(water|stream|ferry))/)),
|
|
1893
|
+
defaultVisibility: true
|
|
1894
|
+
},
|
|
1895
|
+
{
|
|
1896
|
+
slug: "land",
|
|
1897
|
+
filter: ({ id: id4 }) => Boolean(id4.match(/(?=(parks|landcover|industrial|sand|hillshade|park_))/)),
|
|
1898
|
+
defaultVisibility: true
|
|
1899
|
+
}
|
|
1900
|
+
];
|
|
1901
|
+
function applyLayerGroupFilters(style, visibleLayerGroups) {
|
|
1902
|
+
if (!Array.isArray(style == null ? void 0 : style.layers)) {
|
|
1903
|
+
return style;
|
|
1904
|
+
}
|
|
1905
|
+
const removedLayerFilters = STYLE_LAYER_GROUPS.filter((lg) => !visibleLayerGroups[lg.slug]).map((lg) => lg.filter);
|
|
1906
|
+
const visibleLayers = style.layers.filter((layer) => removedLayerFilters.every((match) => !match(layer)));
|
|
1907
|
+
return {
|
|
1908
|
+
...style,
|
|
1909
|
+
layers: visibleLayers
|
|
1910
|
+
};
|
|
1911
|
+
}
|
|
1912
|
+
function someLayerGroupsDisabled(visibleLayerGroups) {
|
|
1913
|
+
return visibleLayerGroups && Object.values(visibleLayerGroups).every(Boolean) === false;
|
|
1914
|
+
}
|
|
1915
|
+
function getStyleUrl(styleType) {
|
|
1916
|
+
return cartoStyleUrlTemplate.replace("{basemap}", styleType);
|
|
1917
|
+
}
|
|
1918
|
+
async function fetchStyle({ styleUrl, errorContext }) {
|
|
1919
|
+
let response;
|
|
1920
|
+
return await fetch(styleUrl, { mode: "cors" }).then((res) => {
|
|
1921
|
+
response = res;
|
|
1922
|
+
return res.json();
|
|
1923
|
+
}).catch((error) => {
|
|
1924
|
+
throw new CartoAPIError(error, { ...errorContext, requestType: "Basemap style" }, response);
|
|
1925
|
+
});
|
|
1926
|
+
}
|
|
1782
1927
|
var basemap_default = {
|
|
1783
|
-
VOYAGER:
|
|
1784
|
-
POSITRON:
|
|
1785
|
-
DARK_MATTER:
|
|
1786
|
-
VOYAGER_NOLABELS:
|
|
1787
|
-
POSITRON_NOLABELS:
|
|
1788
|
-
DARK_MATTER_NOLABELS:
|
|
1928
|
+
VOYAGER: getStyleUrl("voyager"),
|
|
1929
|
+
POSITRON: getStyleUrl("positron"),
|
|
1930
|
+
DARK_MATTER: getStyleUrl("dark-matter"),
|
|
1931
|
+
VOYAGER_NOLABELS: getStyleUrl("voyager-nolabels"),
|
|
1932
|
+
POSITRON_NOLABELS: getStyleUrl("positron-nolabels"),
|
|
1933
|
+
DARK_MATTER_NOLABELS: getStyleUrl("dark-matter-nolabels")
|
|
1789
1934
|
};
|
|
1790
1935
|
|
|
1791
1936
|
// dist/style/color-bins-style.js
|
|
@@ -1896,45 +2041,6 @@ function colorContinuous({ attr, domain, colors = DEFAULT_PALETTE, nullColor = N
|
|
|
1896
2041
|
};
|
|
1897
2042
|
}
|
|
1898
2043
|
|
|
1899
|
-
// dist/api/carto-api-error.js
|
|
1900
|
-
var CartoAPIError = class extends Error {
|
|
1901
|
-
constructor(error, errorContext, response) {
|
|
1902
|
-
let responseString = "Failed to connect";
|
|
1903
|
-
if (response) {
|
|
1904
|
-
responseString = "Server returned: ";
|
|
1905
|
-
if (response.status === 400) {
|
|
1906
|
-
responseString += "Bad request";
|
|
1907
|
-
} else if (response.status === 401 || response.status === 403) {
|
|
1908
|
-
responseString += "Unauthorized access";
|
|
1909
|
-
} else if (response.status === 404) {
|
|
1910
|
-
responseString += "Not found";
|
|
1911
|
-
} else {
|
|
1912
|
-
responseString += "Error";
|
|
1913
|
-
}
|
|
1914
|
-
responseString += ` (${response.status}):`;
|
|
1915
|
-
}
|
|
1916
|
-
responseString += ` ${error.message || error}`;
|
|
1917
|
-
let message = `${errorContext.requestType} API request failed`;
|
|
1918
|
-
message += `
|
|
1919
|
-
${responseString}`;
|
|
1920
|
-
for (const key of Object.keys(errorContext)) {
|
|
1921
|
-
if (key === "requestType")
|
|
1922
|
-
continue;
|
|
1923
|
-
message += `
|
|
1924
|
-
${formatErrorKey(key)}: ${errorContext[key]}`;
|
|
1925
|
-
}
|
|
1926
|
-
message += "\n";
|
|
1927
|
-
super(message);
|
|
1928
|
-
this.name = "CartoAPIError";
|
|
1929
|
-
this.response = response;
|
|
1930
|
-
this.error = error;
|
|
1931
|
-
this.errorContext = errorContext;
|
|
1932
|
-
}
|
|
1933
|
-
};
|
|
1934
|
-
function formatErrorKey(key) {
|
|
1935
|
-
return key.replace(/([A-Z])/g, " $1").replace(/^./, (s) => s.toUpperCase());
|
|
1936
|
-
}
|
|
1937
|
-
|
|
1938
2044
|
// dist/api/common.js
|
|
1939
2045
|
var import_core13 = require("@deck.gl/core");
|
|
1940
2046
|
var DEFAULT_API_BASE_URL = "https://gcp-us-east1.api.carto.com";
|
|
@@ -1974,23 +2080,22 @@ function buildQueryUrl({ apiBaseUrl, connectionName }) {
|
|
|
1974
2080
|
}
|
|
1975
2081
|
|
|
1976
2082
|
// dist/api/request-with-parameters.js
|
|
1977
|
-
var import_core14 = require("@loaders.gl/core");
|
|
1978
2083
|
function encodeParameter(name, value) {
|
|
1979
|
-
if (
|
|
2084
|
+
if (isPureObject(value) || Array.isArray(value)) {
|
|
1980
2085
|
return `${name}=${encodeURIComponent(JSON.stringify(value))}`;
|
|
1981
2086
|
}
|
|
1982
2087
|
return `${name}=${encodeURIComponent(value)}`;
|
|
1983
2088
|
}
|
|
1984
2089
|
var REQUEST_CACHE = /* @__PURE__ */ new Map();
|
|
1985
|
-
async function requestWithParameters({ baseUrl
|
|
2090
|
+
async function requestWithParameters({ baseUrl, parameters, headers: customHeaders, errorContext }) {
|
|
1986
2091
|
parameters = { ...DEFAULT_PARAMETERS, ...parameters };
|
|
1987
|
-
const key = createCacheKey(
|
|
2092
|
+
const key = createCacheKey(baseUrl, parameters || {}, customHeaders || {});
|
|
1988
2093
|
if (REQUEST_CACHE.has(key)) {
|
|
1989
2094
|
return REQUEST_CACHE.get(key);
|
|
1990
2095
|
}
|
|
1991
|
-
const url = parameters ? createURLWithParameters(
|
|
2096
|
+
const url = parameters ? createURLWithParameters(baseUrl, parameters) : baseUrl;
|
|
1992
2097
|
const headers = { ...DEFAULT_HEADERS, ...customHeaders };
|
|
1993
|
-
const fetchPromise = url.length > MAX_GET_LENGTH ? fetch(
|
|
2098
|
+
const fetchPromise = url.length > MAX_GET_LENGTH ? fetch(baseUrl, { method: "POST", body: JSON.stringify(parameters), headers }) : fetch(url, { headers });
|
|
1994
2099
|
let response;
|
|
1995
2100
|
const jsonPromise = fetchPromise.then((_response) => {
|
|
1996
2101
|
response = _response;
|
|
@@ -2007,14 +2112,14 @@ async function requestWithParameters({ baseUrl: baseUrl2, parameters, headers: c
|
|
|
2007
2112
|
REQUEST_CACHE.set(key, jsonPromise);
|
|
2008
2113
|
return jsonPromise;
|
|
2009
2114
|
}
|
|
2010
|
-
function createCacheKey(
|
|
2115
|
+
function createCacheKey(baseUrl, parameters, headers) {
|
|
2011
2116
|
const parameterEntries = Object.entries(parameters).sort(([a], [b]) => a > b ? 1 : -1);
|
|
2012
2117
|
const headerEntries = Object.entries(headers).sort(([a], [b]) => a > b ? 1 : -1);
|
|
2013
|
-
return JSON.stringify({ baseUrl
|
|
2118
|
+
return JSON.stringify({ baseUrl, parameters: parameterEntries, headers: headerEntries });
|
|
2014
2119
|
}
|
|
2015
|
-
function createURLWithParameters(
|
|
2120
|
+
function createURLWithParameters(baseUrl, parameters) {
|
|
2016
2121
|
const encodedParameters = Object.entries(parameters).map(([key, value]) => encodeParameter(key, value));
|
|
2017
|
-
return `${
|
|
2122
|
+
return `${baseUrl}?${encodedParameters.join("&")}`;
|
|
2018
2123
|
}
|
|
2019
2124
|
|
|
2020
2125
|
// dist/sources/base-source.js
|
|
@@ -2032,7 +2137,7 @@ async function baseSource(endpoint, options, urlParameters) {
|
|
|
2032
2137
|
mergedOptions[key] = optionalOptions[key];
|
|
2033
2138
|
}
|
|
2034
2139
|
}
|
|
2035
|
-
const
|
|
2140
|
+
const baseUrl = buildSourceUrl(mergedOptions);
|
|
2036
2141
|
const { clientId, format } = mergedOptions;
|
|
2037
2142
|
const headers = { Authorization: `Bearer ${options.accessToken}`, ...options.headers };
|
|
2038
2143
|
const parameters = { client: clientId, ...urlParameters };
|
|
@@ -2043,7 +2148,7 @@ async function baseSource(endpoint, options, urlParameters) {
|
|
|
2043
2148
|
source: JSON.stringify(parameters, void 0, 2)
|
|
2044
2149
|
};
|
|
2045
2150
|
const mapInstantiation = await requestWithParameters({
|
|
2046
|
-
baseUrl
|
|
2151
|
+
baseUrl,
|
|
2047
2152
|
parameters,
|
|
2048
2153
|
headers,
|
|
2049
2154
|
errorContext
|
|
@@ -2243,7 +2348,7 @@ var vectorTilesetSource = async function(options) {
|
|
|
2243
2348
|
|
|
2244
2349
|
// dist/api/parse-map.js
|
|
2245
2350
|
var import_constants12 = require("@luma.gl/constants");
|
|
2246
|
-
var
|
|
2351
|
+
var import_core14 = require("@deck.gl/core");
|
|
2247
2352
|
|
|
2248
2353
|
// dist/api/layer-map.js
|
|
2249
2354
|
var import_d3_array = require("d3-array");
|
|
@@ -2634,7 +2739,7 @@ function parseMap(json) {
|
|
|
2634
2739
|
...createLoadOptions(token)
|
|
2635
2740
|
});
|
|
2636
2741
|
} catch (e) {
|
|
2637
|
-
|
|
2742
|
+
import_core14.log.error(e.message)();
|
|
2638
2743
|
return void 0;
|
|
2639
2744
|
}
|
|
2640
2745
|
})
|
|
@@ -2842,6 +2947,75 @@ function createLoadOptions(accessToken) {
|
|
|
2842
2947
|
};
|
|
2843
2948
|
}
|
|
2844
2949
|
|
|
2950
|
+
// dist/api/basemap.js
|
|
2951
|
+
var CUSTOM_STYLE_ID_PREFIX = "custom:";
|
|
2952
|
+
var DEFAULT_CARTO_STYLE = "positron";
|
|
2953
|
+
function mapLibreViewpros(config) {
|
|
2954
|
+
const { longitude, latitude, ...rest } = config.mapState;
|
|
2955
|
+
return {
|
|
2956
|
+
center: [longitude, latitude],
|
|
2957
|
+
...rest
|
|
2958
|
+
};
|
|
2959
|
+
}
|
|
2960
|
+
async function fetchBasemapProps({ config, errorContext, applyLayerFilters = true }) {
|
|
2961
|
+
var _a;
|
|
2962
|
+
const { mapStyle } = config;
|
|
2963
|
+
const styleType = mapStyle.styleType || DEFAULT_CARTO_STYLE;
|
|
2964
|
+
if (styleType.startsWith(CUSTOM_STYLE_ID_PREFIX)) {
|
|
2965
|
+
const currentCustomStyle = (_a = config.customBaseMaps) == null ? void 0 : _a.customStyle;
|
|
2966
|
+
if (currentCustomStyle) {
|
|
2967
|
+
return {
|
|
2968
|
+
type: "maplibre",
|
|
2969
|
+
props: {
|
|
2970
|
+
style: currentCustomStyle.style || currentCustomStyle.url,
|
|
2971
|
+
...mapLibreViewpros(config)
|
|
2972
|
+
},
|
|
2973
|
+
attribution: currentCustomStyle.customAttribution
|
|
2974
|
+
};
|
|
2975
|
+
}
|
|
2976
|
+
}
|
|
2977
|
+
if (CARTO_MAP_STYLES.includes(styleType)) {
|
|
2978
|
+
const { visibleLayerGroups } = mapStyle;
|
|
2979
|
+
const styleUrl = getStyleUrl(styleType);
|
|
2980
|
+
let style = styleUrl;
|
|
2981
|
+
let rawStyle = styleUrl;
|
|
2982
|
+
if (applyLayerFilters && visibleLayerGroups && someLayerGroupsDisabled(visibleLayerGroups)) {
|
|
2983
|
+
rawStyle = await fetchStyle({ styleUrl, errorContext });
|
|
2984
|
+
style = applyLayerGroupFilters(rawStyle, visibleLayerGroups);
|
|
2985
|
+
}
|
|
2986
|
+
return {
|
|
2987
|
+
type: "maplibre",
|
|
2988
|
+
props: {
|
|
2989
|
+
style,
|
|
2990
|
+
...mapLibreViewpros(config)
|
|
2991
|
+
},
|
|
2992
|
+
visibleLayerGroups,
|
|
2993
|
+
rawStyle
|
|
2994
|
+
};
|
|
2995
|
+
}
|
|
2996
|
+
const googleBasemapDef = GOOGLE_BASEMAPS[styleType];
|
|
2997
|
+
if (googleBasemapDef) {
|
|
2998
|
+
const { mapState } = config;
|
|
2999
|
+
return {
|
|
3000
|
+
type: "google-maps",
|
|
3001
|
+
props: {
|
|
3002
|
+
...googleBasemapDef,
|
|
3003
|
+
center: { lat: mapState.latitude, lng: mapState.longitude },
|
|
3004
|
+
zoom: mapState.zoom + 1,
|
|
3005
|
+
tilt: mapState.pitch,
|
|
3006
|
+
heading: mapState.bearing
|
|
3007
|
+
}
|
|
3008
|
+
};
|
|
3009
|
+
}
|
|
3010
|
+
return {
|
|
3011
|
+
type: "maplibre",
|
|
3012
|
+
props: {
|
|
3013
|
+
style: getStyleUrl(DEFAULT_CARTO_STYLE),
|
|
3014
|
+
...mapLibreViewpros(config)
|
|
3015
|
+
}
|
|
3016
|
+
};
|
|
3017
|
+
}
|
|
3018
|
+
|
|
2845
3019
|
// dist/api/fetch-map.js
|
|
2846
3020
|
async function _fetchMapDataset(dataset, accessToken, apiBaseUrl, clientId, headers) {
|
|
2847
3021
|
const { aggregationExp, aggregationResLevel, connectionName, columns, format, geoColumn, source, type, queryParameters } = dataset;
|
|
@@ -2905,7 +3079,7 @@ async function _fetchTilestats(attribute, dataset, accessToken, apiBaseUrl) {
|
|
|
2905
3079
|
if (!("tilestats" in data)) {
|
|
2906
3080
|
throw new CartoAPIError(new Error(`Invalid dataset for tilestats: ${id4}`), errorContext);
|
|
2907
3081
|
}
|
|
2908
|
-
const
|
|
3082
|
+
const baseUrl = buildStatsUrl({ attribute, apiBaseUrl, ...dataset });
|
|
2909
3083
|
const client = new URLSearchParams(data.tiles[0]).get("client");
|
|
2910
3084
|
const headers = { Authorization: `Bearer ${accessToken}` };
|
|
2911
3085
|
const parameters = {};
|
|
@@ -2919,7 +3093,7 @@ async function _fetchTilestats(attribute, dataset, accessToken, apiBaseUrl) {
|
|
|
2919
3093
|
}
|
|
2920
3094
|
}
|
|
2921
3095
|
const stats = await requestWithParameters({
|
|
2922
|
-
baseUrl
|
|
3096
|
+
baseUrl,
|
|
2923
3097
|
headers,
|
|
2924
3098
|
parameters,
|
|
2925
3099
|
errorContext
|
|
@@ -2965,9 +3139,9 @@ async function fetchMap({ apiBaseUrl = DEFAULT_API_BASE_URL, cartoMapId, clientI
|
|
|
2965
3139
|
assert(typeof onNewData === "function", "`onNewData` must be a function");
|
|
2966
3140
|
assert(typeof autoRefresh === "number" && autoRefresh > 0, "`autoRefresh` must be a positive number");
|
|
2967
3141
|
}
|
|
2968
|
-
const
|
|
3142
|
+
const baseUrl = buildPublicMapUrl({ apiBaseUrl, cartoMapId });
|
|
2969
3143
|
const errorContext = { requestType: "Public map", mapId: cartoMapId };
|
|
2970
|
-
const map = await requestWithParameters({ baseUrl
|
|
3144
|
+
const map = await requestWithParameters({ baseUrl, headers, errorContext });
|
|
2971
3145
|
let stopAutoRefresh;
|
|
2972
3146
|
if (autoRefresh) {
|
|
2973
3147
|
const intervalId = setInterval(async () => {
|
|
@@ -2994,9 +3168,12 @@ async function fetchMap({ apiBaseUrl = DEFAULT_API_BASE_URL, cartoMapId, clientI
|
|
|
2994
3168
|
}
|
|
2995
3169
|
}
|
|
2996
3170
|
});
|
|
2997
|
-
|
|
3171
|
+
const [basemap] = await Promise.all([
|
|
3172
|
+
fetchBasemapProps({ config: map.keplerMapConfig.config, errorContext }),
|
|
3173
|
+
fillInMapDatasets(map, clientId, apiBaseUrl, headers)
|
|
3174
|
+
]);
|
|
2998
3175
|
await fillInTileStats(map, apiBaseUrl);
|
|
2999
|
-
const out = { ...parseMap(map), ...{ stopAutoRefresh } };
|
|
3176
|
+
const out = { ...parseMap(map), basemap, ...{ stopAutoRefresh } };
|
|
3000
3177
|
const textLayers = out.layers.filter((layer) => {
|
|
3001
3178
|
const pointType = layer.props.pointType || "";
|
|
3002
3179
|
return pointType.includes("text");
|
|
@@ -3010,22 +3187,23 @@ async function fetchMap({ apiBaseUrl = DEFAULT_API_BASE_URL, cartoMapId, clientI
|
|
|
3010
3187
|
|
|
3011
3188
|
// dist/api/query.js
|
|
3012
3189
|
var query = async function(options) {
|
|
3013
|
-
const { apiBaseUrl = SOURCE_DEFAULTS.apiBaseUrl, connectionName, sqlQuery, queryParameters } = options;
|
|
3190
|
+
const { apiBaseUrl = SOURCE_DEFAULTS.apiBaseUrl, clientId = SOURCE_DEFAULTS.clientId, connectionName, sqlQuery, queryParameters } = options;
|
|
3014
3191
|
const urlParameters = { q: sqlQuery };
|
|
3015
3192
|
if (queryParameters) {
|
|
3016
3193
|
urlParameters.queryParameters = JSON.stringify(queryParameters);
|
|
3017
3194
|
}
|
|
3018
|
-
const
|
|
3195
|
+
const baseUrl = buildQueryUrl({ apiBaseUrl, connectionName });
|
|
3019
3196
|
const headers = { Authorization: `Bearer ${options.accessToken}`, ...options.headers };
|
|
3197
|
+
const parameters = { client: clientId, ...urlParameters };
|
|
3020
3198
|
const errorContext = {
|
|
3021
3199
|
requestType: "SQL",
|
|
3022
3200
|
connection: options.connectionName,
|
|
3023
3201
|
type: "query",
|
|
3024
|
-
source: JSON.stringify(
|
|
3202
|
+
source: JSON.stringify(parameters, void 0, 2)
|
|
3025
3203
|
};
|
|
3026
3204
|
return await requestWithParameters({
|
|
3027
|
-
baseUrl
|
|
3028
|
-
parameters
|
|
3205
|
+
baseUrl,
|
|
3206
|
+
parameters,
|
|
3029
3207
|
headers,
|
|
3030
3208
|
errorContext
|
|
3031
3209
|
});
|