@carto/api-client 0.5.32-alpha.77957dd.124 → 0.5.32-alpha.b3291bf.129
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/CHANGELOG.md +1 -1
- package/build/api-client.cjs +86 -52
- package/build/api-client.cjs.map +1 -1
- package/build/api-client.js +86 -48
- package/build/api-client.js.map +1 -1
- package/package.json +1 -1
- package/src/fetch-map/parse-map.ts +15 -3
- package/src/fetch-map/pattern-atlas.ts +245 -20
- package/src/fetch-map/pattern-atlas-baked.ts +0 -56
- package/src/fetch-map/pattern-atlas-runtime.ts +0 -134
package/CHANGELOG.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
5
|
- feat(fetchMap): Support line & polygon stroke dash styles (#297)
|
|
6
|
-
- feat(fetchMap): Support polygon fill patterns (
|
|
6
|
+
- feat(fetchMap): Support polygon fill patterns (runtime-assembled sprite atlas, `getFillPattern`/`scales.fillPattern`, `fillPatternEnabled`)
|
|
7
7
|
|
|
8
8
|
### 0.5.31
|
|
9
9
|
|
package/build/api-client.cjs
CHANGED
|
@@ -10675,41 +10675,6 @@ init_cjs_shims();
|
|
|
10675
10675
|
// src/fetch-map/pattern-atlas.ts
|
|
10676
10676
|
init_cjs_shims();
|
|
10677
10677
|
|
|
10678
|
-
// src/fetch-map/pattern-atlas-baked.ts
|
|
10679
|
-
init_cjs_shims();
|
|
10680
|
-
var BAKED_ATLAS_URL = "data:image/png;base64,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";
|
|
10681
|
-
var PATTERN_ATLAS_MAPPING = {
|
|
10682
|
-
"hlines-large": { x: 0, y: 0, width: 64, height: 64, mask: true },
|
|
10683
|
-
"hlines-medium": { x: 64, y: 0, width: 64, height: 64, mask: true },
|
|
10684
|
-
"hlines-small": { x: 128, y: 0, width: 64, height: 64, mask: true },
|
|
10685
|
-
"vlines-large": { x: 0, y: 64, width: 64, height: 64, mask: true },
|
|
10686
|
-
"vlines-medium": { x: 64, y: 64, width: 64, height: 64, mask: true },
|
|
10687
|
-
"vlines-small": { x: 128, y: 64, width: 64, height: 64, mask: true },
|
|
10688
|
-
"diag-left-large": { x: 0, y: 128, width: 64, height: 64, mask: true },
|
|
10689
|
-
"diag-left-medium": { x: 64, y: 128, width: 64, height: 64, mask: true },
|
|
10690
|
-
"diag-left-small": { x: 128, y: 128, width: 64, height: 64, mask: true },
|
|
10691
|
-
"diag-right-large": { x: 0, y: 192, width: 64, height: 64, mask: true },
|
|
10692
|
-
"diag-right-medium": { x: 64, y: 192, width: 64, height: 64, mask: true },
|
|
10693
|
-
"diag-right-small": { x: 128, y: 192, width: 64, height: 64, mask: true },
|
|
10694
|
-
"cross-hatch-large": { x: 0, y: 256, width: 64, height: 64, mask: true },
|
|
10695
|
-
"cross-hatch-medium": { x: 64, y: 256, width: 64, height: 64, mask: true },
|
|
10696
|
-
"cross-hatch-small": { x: 128, y: 256, width: 64, height: 64, mask: true },
|
|
10697
|
-
"dots-large": { x: 0, y: 320, width: 64, height: 64, mask: true },
|
|
10698
|
-
"dots-medium": { x: 64, y: 320, width: 64, height: 64, mask: true },
|
|
10699
|
-
"dots-small": { x: 128, y: 320, width: 64, height: 64, mask: true },
|
|
10700
|
-
"checker-large": { x: 0, y: 384, width: 64, height: 64, mask: true },
|
|
10701
|
-
"checker-medium": { x: 64, y: 384, width: 64, height: 64, mask: true },
|
|
10702
|
-
"checker-small": { x: 128, y: 384, width: 64, height: 64, mask: true },
|
|
10703
|
-
solid: { x: 64, y: 448, width: 64, height: 64, mask: true },
|
|
10704
|
-
none: { x: 0, y: 448, width: 64, height: 64, mask: true }
|
|
10705
|
-
};
|
|
10706
|
-
var CELL = 64;
|
|
10707
|
-
var ATLAS_W = CELL * 3;
|
|
10708
|
-
var ATLAS_H = CELL * 8;
|
|
10709
|
-
|
|
10710
|
-
// src/fetch-map/pattern-atlas-runtime.ts
|
|
10711
|
-
init_cjs_shims();
|
|
10712
|
-
|
|
10713
10678
|
// src/fetch-map/patterns/hlines-large.png
|
|
10714
10679
|
var hlines_large_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABHNCSVQICAgIfAhkiAAAAAFzUkdCAK7OHOkAAABBSURBVHic7dixAQAgDMOwwP8/wxfNUOkCz04AYK2T5LUjmm47AAAAAOb5Ae0AAAAAmOcHtAMAAABgnh/QDgAAaj69GwQJx6ek3QAAAABJRU5ErkJggg==";
|
|
10715
10680
|
|
|
@@ -10776,7 +10741,19 @@ var checker_small_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAA
|
|
|
10776
10741
|
// src/fetch-map/patterns/solid.png
|
|
10777
10742
|
var solid_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABHNCSVQICAgIfAhkiAAAAAFzUkdCAK7OHOkAAACWSURBVHic7dBBEcAwAMOwrPw5dzD0qIXA52/b3cOODtAaoAO0BugArQE6QGuADtAaoAO0BugArQE6QGuADtAaoAO0BugArQE6QGuADtAaoAO0BugArQE6QGuADtAaoAO0BugArQE6QGuADtAaoAO0BugArQE6QGuADtAaoAO0BugArQE6QGuADtAaoAO0BugArQE6QPsBULQBfwAqZPkAAAAASUVORK5CYII=";
|
|
10778
10743
|
|
|
10779
|
-
// src/fetch-map/pattern-atlas
|
|
10744
|
+
// src/fetch-map/pattern-atlas.ts
|
|
10745
|
+
var DEFAULT_CELL_SIZE = 128;
|
|
10746
|
+
var SOURCE_TILE_SIZE = 64;
|
|
10747
|
+
var PATTERN_ROWS = [
|
|
10748
|
+
"hlines",
|
|
10749
|
+
"vlines",
|
|
10750
|
+
"diag-left",
|
|
10751
|
+
"diag-right",
|
|
10752
|
+
"cross-hatch",
|
|
10753
|
+
"dots",
|
|
10754
|
+
"checker"
|
|
10755
|
+
];
|
|
10756
|
+
var DENSITY_COLUMNS = ["large", "medium", "small"];
|
|
10780
10757
|
var CELL_URLS = {
|
|
10781
10758
|
"hlines-large": hlines_large_default,
|
|
10782
10759
|
"hlines-medium": hlines_medium_default,
|
|
@@ -10801,6 +10778,43 @@ var CELL_URLS = {
|
|
|
10801
10778
|
"checker-small": checker_small_default,
|
|
10802
10779
|
solid: solid_default
|
|
10803
10780
|
};
|
|
10781
|
+
function debugGlobals() {
|
|
10782
|
+
return globalThis;
|
|
10783
|
+
}
|
|
10784
|
+
function getPatternCellSize() {
|
|
10785
|
+
const cell = debugGlobals().__CARTO_PATTERN_CELL_SIZE__;
|
|
10786
|
+
return typeof cell === "number" && cell > 0 ? cell : DEFAULT_CELL_SIZE;
|
|
10787
|
+
}
|
|
10788
|
+
function getPatternTextureParameters() {
|
|
10789
|
+
const params = debugGlobals().__CARTO_PATTERN_TEXTURE_PARAMS__;
|
|
10790
|
+
return params && typeof params === "object" ? params : void 0;
|
|
10791
|
+
}
|
|
10792
|
+
function getPatternScaleAdjustment(cell = getPatternCellSize()) {
|
|
10793
|
+
return SOURCE_TILE_SIZE / cell;
|
|
10794
|
+
}
|
|
10795
|
+
function getPatternCellPadding(cell) {
|
|
10796
|
+
return Math.max(2, Math.round(cell / 16));
|
|
10797
|
+
}
|
|
10798
|
+
function getPatternAtlasMapping(cell = getPatternCellSize()) {
|
|
10799
|
+
const pad = getPatternCellPadding(cell);
|
|
10800
|
+
const pitch = cell + 2 * pad;
|
|
10801
|
+
const mapping = {};
|
|
10802
|
+
const frame = (col, row) => ({
|
|
10803
|
+
x: pad + col * pitch,
|
|
10804
|
+
y: pad + row * pitch,
|
|
10805
|
+
width: cell,
|
|
10806
|
+
height: cell,
|
|
10807
|
+
mask: true
|
|
10808
|
+
});
|
|
10809
|
+
PATTERN_ROWS.forEach((pattern, row) => {
|
|
10810
|
+
DENSITY_COLUMNS.forEach((density, col) => {
|
|
10811
|
+
mapping[`${pattern}-${density}`] = frame(col, row);
|
|
10812
|
+
});
|
|
10813
|
+
});
|
|
10814
|
+
mapping.none = frame(0, PATTERN_ROWS.length);
|
|
10815
|
+
mapping.solid = frame(1, PATTERN_ROWS.length);
|
|
10816
|
+
return mapping;
|
|
10817
|
+
}
|
|
10804
10818
|
function createCanvas(w, h) {
|
|
10805
10819
|
if (typeof OffscreenCanvas !== "undefined") return new OffscreenCanvas(w, h);
|
|
10806
10820
|
if (typeof document !== "undefined") {
|
|
@@ -10825,13 +10839,22 @@ async function loadImage(dataUrl) {
|
|
|
10825
10839
|
img.src = dataUrl;
|
|
10826
10840
|
});
|
|
10827
10841
|
}
|
|
10828
|
-
var
|
|
10829
|
-
function
|
|
10830
|
-
|
|
10831
|
-
|
|
10842
|
+
var atlasPromises = /* @__PURE__ */ new Map();
|
|
10843
|
+
function getPatternAtlas(cell = getPatternCellSize()) {
|
|
10844
|
+
let promise = atlasPromises.get(cell);
|
|
10845
|
+
if (!promise) {
|
|
10846
|
+
promise = build(cell);
|
|
10847
|
+
promise.catch(() => {
|
|
10848
|
+
});
|
|
10849
|
+
atlasPromises.set(cell, promise);
|
|
10850
|
+
}
|
|
10851
|
+
return promise;
|
|
10832
10852
|
}
|
|
10833
|
-
async function build() {
|
|
10834
|
-
const
|
|
10853
|
+
async function build(cell) {
|
|
10854
|
+
const mapping = getPatternAtlasMapping(cell);
|
|
10855
|
+
const pad = getPatternCellPadding(cell);
|
|
10856
|
+
const pitch = cell + 2 * pad;
|
|
10857
|
+
const canvas = createCanvas(pitch * 3, pitch * (PATTERN_ROWS.length + 1));
|
|
10835
10858
|
const ctx = canvas.getContext("2d");
|
|
10836
10859
|
if (!ctx)
|
|
10837
10860
|
throw new Error(
|
|
@@ -10843,21 +10866,28 @@ async function build() {
|
|
|
10843
10866
|
images[key] = await loadImage(url);
|
|
10844
10867
|
})
|
|
10845
10868
|
);
|
|
10846
|
-
for (const [key, frame] of Object.entries(
|
|
10869
|
+
for (const [key, frame] of Object.entries(mapping)) {
|
|
10847
10870
|
const img = images[key];
|
|
10848
|
-
if (img)
|
|
10871
|
+
if (!img) continue;
|
|
10872
|
+
const srcWidth = img.width;
|
|
10873
|
+
ctx.imageSmoothingEnabled = srcWidth > cell;
|
|
10874
|
+
if ("imageSmoothingQuality" in ctx) ctx.imageSmoothingQuality = "high";
|
|
10875
|
+
ctx.save();
|
|
10876
|
+
ctx.beginPath();
|
|
10877
|
+
ctx.rect(frame.x - pad, frame.y - pad, cell + 2 * pad, cell + 2 * pad);
|
|
10878
|
+
ctx.clip();
|
|
10879
|
+
for (const dx of [-cell, 0, cell]) {
|
|
10880
|
+
for (const dy of [-cell, 0, cell]) {
|
|
10881
|
+
ctx.drawImage(img, frame.x + dx, frame.y + dy, cell, cell);
|
|
10882
|
+
}
|
|
10883
|
+
}
|
|
10884
|
+
ctx.restore();
|
|
10849
10885
|
}
|
|
10850
10886
|
if (typeof createImageBitmap !== "undefined")
|
|
10851
10887
|
return createImageBitmap(canvas);
|
|
10852
10888
|
return canvas;
|
|
10853
10889
|
}
|
|
10854
10890
|
|
|
10855
|
-
// src/fetch-map/pattern-atlas.ts
|
|
10856
|
-
function getPatternAtlas() {
|
|
10857
|
-
const runtime = globalThis.__CARTO_RUNTIME_ATLAS__ === true;
|
|
10858
|
-
return runtime ? assemblePatternAtlas() : BAKED_ATLAS_URL;
|
|
10859
|
-
}
|
|
10860
|
-
|
|
10861
10891
|
// src/fetch-map/parse-map.ts
|
|
10862
10892
|
function getLayerDescriptor({
|
|
10863
10893
|
mapConfig,
|
|
@@ -11286,9 +11316,13 @@ function createChannelProps(id, layerType, config2, visualChannels, data, datase
|
|
|
11286
11316
|
result.fillPatternEnabled = Boolean(visConfig.fillPatternEnabled);
|
|
11287
11317
|
if (visConfig.filled && visConfig.fillPatternEnabled) {
|
|
11288
11318
|
result.fillPatternAtlas = getPatternAtlas();
|
|
11289
|
-
result.fillPatternMapping =
|
|
11319
|
+
result.fillPatternMapping = getPatternAtlasMapping();
|
|
11290
11320
|
result.fillPatternMask = true;
|
|
11291
|
-
|
|
11321
|
+
const textureParameters = getPatternTextureParameters();
|
|
11322
|
+
if (textureParameters) {
|
|
11323
|
+
result.textureParameters = textureParameters;
|
|
11324
|
+
}
|
|
11325
|
+
result.getFillPatternScale = (visConfig.fillPatternSize ?? 1) * getPatternScaleAdjustment();
|
|
11292
11326
|
result.fillPattern = visConfig.fillPattern;
|
|
11293
11327
|
const { fillPatternField, fillPatternScale } = visualChannels;
|
|
11294
11328
|
const { fillPatternRange, fillPatternDensity } = visConfig;
|