@carto/api-client 0.5.31 → 0.5.32-alpha.02a4470.133

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 (57) hide show
  1. package/CHANGELOG.md +3 -0
  2. package/build/api-client.cjs +527 -3
  3. package/build/api-client.cjs.map +1 -1
  4. package/build/api-client.d.cts +42 -5
  5. package/build/api-client.d.ts +42 -5
  6. package/build/api-client.js +520 -3
  7. package/build/api-client.js.map +1 -1
  8. package/package.json +2 -2
  9. package/src/fetch-map/layer-map.ts +48 -0
  10. package/src/fetch-map/parse-map.ts +133 -10
  11. package/src/fetch-map/pattern-atlas.ts +461 -0
  12. package/src/fetch-map/patterns/checker-large.png +0 -0
  13. package/src/fetch-map/patterns/checker-large.svg +1 -0
  14. package/src/fetch-map/patterns/checker-medium.png +0 -0
  15. package/src/fetch-map/patterns/checker-medium.svg +1 -0
  16. package/src/fetch-map/patterns/checker-small.png +0 -0
  17. package/src/fetch-map/patterns/checker-small.svg +1 -0
  18. package/src/fetch-map/patterns/cross-hatch-large.png +0 -0
  19. package/src/fetch-map/patterns/cross-hatch-large.svg +1 -0
  20. package/src/fetch-map/patterns/cross-hatch-medium.png +0 -0
  21. package/src/fetch-map/patterns/cross-hatch-medium.svg +1 -0
  22. package/src/fetch-map/patterns/cross-hatch-small.png +0 -0
  23. package/src/fetch-map/patterns/cross-hatch-small.svg +1 -0
  24. package/src/fetch-map/patterns/diag-left-large.png +0 -0
  25. package/src/fetch-map/patterns/diag-left-large.svg +1 -0
  26. package/src/fetch-map/patterns/diag-left-medium.png +0 -0
  27. package/src/fetch-map/patterns/diag-left-medium.svg +1 -0
  28. package/src/fetch-map/patterns/diag-left-small.png +0 -0
  29. package/src/fetch-map/patterns/diag-left-small.svg +1 -0
  30. package/src/fetch-map/patterns/diag-right-large.png +0 -0
  31. package/src/fetch-map/patterns/diag-right-large.svg +1 -0
  32. package/src/fetch-map/patterns/diag-right-medium.png +0 -0
  33. package/src/fetch-map/patterns/diag-right-medium.svg +1 -0
  34. package/src/fetch-map/patterns/diag-right-small.png +0 -0
  35. package/src/fetch-map/patterns/diag-right-small.svg +1 -0
  36. package/src/fetch-map/patterns/dots-large.png +0 -0
  37. package/src/fetch-map/patterns/dots-large.svg +1 -0
  38. package/src/fetch-map/patterns/dots-medium.png +0 -0
  39. package/src/fetch-map/patterns/dots-medium.svg +1 -0
  40. package/src/fetch-map/patterns/dots-small.png +0 -0
  41. package/src/fetch-map/patterns/dots-small.svg +1 -0
  42. package/src/fetch-map/patterns/hlines-large.png +0 -0
  43. package/src/fetch-map/patterns/hlines-large.svg +1 -0
  44. package/src/fetch-map/patterns/hlines-medium.png +0 -0
  45. package/src/fetch-map/patterns/hlines-medium.svg +1 -0
  46. package/src/fetch-map/patterns/hlines-small.png +0 -0
  47. package/src/fetch-map/patterns/hlines-small.svg +1 -0
  48. package/src/fetch-map/patterns/solid.png +0 -0
  49. package/src/fetch-map/patterns/solid.svg +1 -0
  50. package/src/fetch-map/patterns/vlines-large.png +0 -0
  51. package/src/fetch-map/patterns/vlines-large.svg +1 -0
  52. package/src/fetch-map/patterns/vlines-medium.png +0 -0
  53. package/src/fetch-map/patterns/vlines-medium.svg +1 -0
  54. package/src/fetch-map/patterns/vlines-small.png +0 -0
  55. package/src/fetch-map/patterns/vlines-small.svg +1 -0
  56. package/src/fetch-map/types.ts +44 -0
  57. package/src/global.d.ts +10 -0
@@ -9796,6 +9796,34 @@ function getIconUrlAccessor(field, range, {
9796
9796
  };
9797
9797
  return normalizeAccessor(accessor, data);
9798
9798
  }
9799
+ function getLineStyleAccessor(field, range, data) {
9800
+ const fallback = range.othersDashArray ?? [0, 0];
9801
+ const mapping = {};
9802
+ for (const { value, dashArray } of range.dashArrayMap) {
9803
+ mapping[value] = dashArray;
9804
+ }
9805
+ const accessor = (properties) => mapping[properties[field.name]] ?? fallback;
9806
+ return {
9807
+ accessor: normalizeAccessor(accessor, data),
9808
+ domain: range.dashArrayMap.map(({ value }) => value),
9809
+ range: range.dashArrayMap.map(({ dashArray }) => dashArray)
9810
+ };
9811
+ }
9812
+ function getFillPatternAccessor(field, range, density, data) {
9813
+ const d = density ?? "medium";
9814
+ const toKey = (pattern) => pattern === "solid" || pattern === "none" ? pattern : `${pattern}-${d}`;
9815
+ const fallback = toKey(range.othersPattern ?? "none");
9816
+ const mapping = {};
9817
+ for (const { value, pattern } of range.patternMap) {
9818
+ mapping[value] = toKey(pattern);
9819
+ }
9820
+ const accessor = (properties) => mapping[properties[field.name]] ?? fallback;
9821
+ return {
9822
+ accessor: normalizeAccessor(accessor, data),
9823
+ domain: range.patternMap.map(({ value }) => value),
9824
+ range: range.patternMap.map(({ pattern }) => pattern)
9825
+ };
9826
+ }
9799
9827
  function getMaxMarkerSize(visConfig, visualChannels) {
9800
9828
  const { radiusRange, radius, sizeMaxPixels } = visConfig;
9801
9829
  const { radiusField, sizeField } = visualChannels;
@@ -10282,6 +10310,413 @@ function hexToRGB2(hexColor) {
10282
10310
  return [r, g, b];
10283
10311
  }
10284
10312
 
10313
+ // src/fetch-map/patterns/hlines-large.png
10314
+ var hlines_large_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABHNCSVQICAgIfAhkiAAAAAFzUkdCAK7OHOkAAABBSURBVHic7dixAQAgDMOwwP8/wxfNUOkCz04AYK2T5LUjmm47AAAAAOb5Ae0AAAAAmOcHtAMAAABgnh/QDgAAaj69GwQJx6ek3QAAAABJRU5ErkJggg==";
10315
+
10316
+ // src/fetch-map/patterns/hlines-medium.png
10317
+ var hlines_medium_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABHNCSVQICAgIfAhkiAAAAAFzUkdCAK7OHOkAAABOSURBVHic7daxAQAgDMOwwv8/wxkeKl3gLTkz8wYAVjrbZ/DWAQDQ8QPqAADo+AF1AAB0/IA6AAA6fkAdAAAdP6AOAICOH1AHAEBn/Q/4F6kJD4qx2asAAAAASUVORK5CYII=";
10318
+
10319
+ // src/fetch-map/patterns/hlines-small.png
10320
+ var hlines_small_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABHNCSVQICAgIfAhkiAAAAAFzUkdCAK7OHOkAAABrSURBVHic7dSxAQAgDMOwwv8/wxkeKl3gJTkz8wbWOtsncOsAaPmAOgBaPqAOgJYPqAOg5QPqAGj5gDoAWj6gDoCWD6gDoOUD6gBo+YA6AFo+oA6Alg+oA6DlA+oAaPmAOgBaPqAOgNb6D/gRbhEfmYiEGgAAAABJRU5ErkJggg==";
10321
+
10322
+ // src/fetch-map/patterns/vlines-large.png
10323
+ var vlines_large_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABHNCSVQICAgIfAhkiAAAAAFzUkdCAK7OHOkAAACkSURBVHic7dAxCsAwEMRAk///2W5Sp7CLMUGCK28RGuOb+d4u1/8/B+O/oABaQFMALaApgBbQFEALaAqgBTQF0AKaAmgBTQG0gKYAWkBTAC2gKYAW0BRAC2gKoAU0BdACmgJoAU0BtICmAFpAUwAtoCmAFtAUQAtoCqAFNAXQApoCaAFNAbSApgBaQFMALaApgBbQFEALaAqgBTQF0AKaAmgBzQIgxAh3o/Zl8AAAAABJRU5ErkJggg==";
10324
+
10325
+ // src/fetch-map/patterns/vlines-medium.png
10326
+ var vlines_medium_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABHNCSVQICAgIfAhkiAAAAAFzUkdCAK7OHOkAAACfSURBVHic7dCxDYBQAITQi/vv/J1A25cotDSEbTt75nzdXy/yFzRAB2gaoAM0DdABmgboAE0DdICmATpA0wAdoGmADtA0QAdoGqADNA3QAZoG6ABNA3SApgE6QNMAHaBpgA7QNEAHaBqgAzQN0AGaBugATQN0gKYBOkDTAB2gaYAO0DRAB2gaoAM0DdABmgboAE0DdICmATpA0wAdoLkBMJgQb6A8qDAAAAAASUVORK5CYII=";
10327
+
10328
+ // src/fetch-map/patterns/vlines-small.png
10329
+ var vlines_small_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABHNCSVQICAgIfAhkiAAAAAFzUkdCAK7OHOkAAACcSURBVHic7dCxDcAwAMMwo///nIw9gUPEzZuhbTv7ndf2t8cVQB/QCqAPaAXQB7QC6ANaAfQBrQD6gFYAfUArgD6gFUAf0AqgD2gF0Ae0AugDWgH0Aa0A+oBWAH1AK4A+oBVAH9AKoA9oBdAHtALoA1oB9AGtAPqAVgB9QCuAPqAVQB/QCqAPaAXQB7QC6ANaAfQBrQD6gFYAfUC7UEAgXxU1dpkAAAAASUVORK5CYII=";
10330
+
10331
+ // src/fetch-map/patterns/diag-left-large.png
10332
+ var diag_left_large_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABHNCSVQICAgIfAhkiAAAAAFzUkdCAK7OHOkAAACtSURBVHic7dkxCsMwEETRuf/lfKSkmBCiflUseR/cDuYhN3KSvD7PVM+FzfxsPsOb3+F/RTiGIUCAACEQzmEIECBACIRzGAIECBAC4RyGAGEpwvQd2zaE8eOwDeHKN7EJIYHQIEBoECA0CBAaBAgNAoQGAUKDAKFBgNAgbEWYltiGcOU4bEJY9QfmBkICoUGA0CBAaBAgNAgQGgQIDQKEBgFCgwChrUWYfOF1CG/KcyXf7pwUyQAAAABJRU5ErkJggg==";
10333
+
10334
+ // src/fetch-map/patterns/diag-left-medium.png
10335
+ var diag_left_medium_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABHNCSVQICAgIfAhkiAAAAAFzUkdCAK7OHOkAAAD+SURBVHic7dqxDYAwDADB7L9cRoIGaiQk81cQKZ3l+wG81lrH9Z/ePbcf5vaLnaVPRJQ+EVH7RETtExG1T0TUPhFR+0RE7RMRtU9EjPtEROgTEaVPRJQ+EVH7RETtExG1T0TUPhFR+0RE7RMRn/hEROgTEaVPRJQ+EVH7RETtExG1T0TUPhFR+0RE7RMRtU9EjPtEROgTEaVPRJQ+EVH7RETtExG1T0TUPhFR+0RE7RMRtU9EjPtEROgTEaVPRJQ+EVH7RETtExG1T0TUPhFR+0RE7RMR/33Afx8w7xMRpU9E1D4RUftERO0TEbVPRNQ+EVH7RETtExHjPhFR+SdUtUu99aAoTAAAAABJRU5ErkJggg==";
10336
+
10337
+ // src/fetch-map/patterns/diag-left-small.png
10338
+ var diag_left_small_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABHNCSVQICAgIfAhkiAAAAAFzUkdCAK7OHOkAAADqSURBVHic7dgxCsMwAARB/f9zflLS2JDC/U7gDG4EA4s63TnnfO7/+a6Xs/Nzdr2c/bMnIkpPRNSeiMg8ERF6IqL0RETpiYjaExG1JyIST0SEnogoPRFReiKi9kRE5omI0BMRpSciSk9E1J6IyDwREXoiYnvAXoG7hNwTEYknIkJPRJSeiCg9EVF7ImJ7wPaAxhMRpSciak9EZJ6ICD0RsT1gr8BdQu6JiMQTEaEnIkpPRJSeiKg9EbE9YHtA44mI0hMRtSciMk9EhJ6I2B6wV+AuIfdEROKJiNATEaUnIkpPRNSeiNgeUPgvaSqXeT0fItoAAAAASUVORK5CYII=";
10339
+
10340
+ // src/fetch-map/patterns/diag-right-large.png
10341
+ var diag_right_large_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABHNCSVQICAgIfAhkiAAAAAFzUkdCAK7OHOkAAAClSURBVHic7djBCQMgFAXB339zlmQuOaSAFSLOFvBwEC/OzOzpWt+9cnN+NteBzawb8dlZ4eHb4OH7TfgiePg2ePh+E74IHr4NHr7fhK9HT2z+O37N4/jafh3+yFOCjzfho+Dhw+Dh+034KHj4MHj4fhM+Ch4+DP5V/DyO3/M4/shTugmfXT48fBc8fBs8fDwIHwUP3wYPHw/CR8HDt8HH33hP4/cHynMl31YK/QUAAAAASUVORK5CYII=";
10342
+
10343
+ // src/fetch-map/patterns/diag-right-medium.png
10344
+ var diag_right_medium_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABHNCSVQICAgIfAhkiAAAAAFzUkdCAK7OHOkAAADKSURBVHic7doxCsMwEAXRf//L6UhKkyJVVmkyRn8M6pYdHhg3VpLszM9+nzXMrY/Z0510H43T+HFWvHggTvfFiwfidF98Kz7l+J1y/Dh3O/5rX7x4IE73xYsH4nS/Gp9y/Eo5/mTf1fhxp3jxQJzuixcPxOm++FZ8yvE75fif3pAb8cffB/H/jtN98eKBON0XLx6IP6Bfjd8px49zt+P9Y/TION0XLx6I033xrfiU470fcLDvavy4U7x4IE73xYsH4nRffCs+5fj9AlS1S72cv9TCAAAAAElFTkSuQmCC";
10345
+
10346
+ // src/fetch-map/patterns/diag-right-small.png
10347
+ var diag_right_small_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABHNCSVQICAgIfAhkiAAAAAFzUkdCAK7OHOkAAADbSURBVHic7dgxCsNAEMXQuf/lfCSnCdiFqx01AqXLwgP90jMzc8/zu/7/32/zers+3uxeHY95dXzjd14dT3h1POHV8ahXxze+8cdeHU94dTzh1fGYV8c3fufV8YRXxxNeHY95dXzjd14d3z0A8Op41KvjG9/47gGnXh1PeHV8n8SN33t1POHV8YRXx2NeHd/4nVfHdw8AvDoe9er4xje+e8CpV8cTXh3fJ3Hj914dT3h1POHV8ZhXxzd+59Xx3QMAr45HvTq+8Y3vHnDq1fGEV8f3Sdz4vVfHr/0PaSqXeV716iAAAAAASUVORK5CYII=";
10348
+
10349
+ // src/fetch-map/patterns/cross-hatch-large.png
10350
+ var cross_hatch_large_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABHNCSVQICAgIfAhkiAAAAAFzUkdCAK7OHOkAAALoSURBVHic1ZpdUiwxCIUpV3D3/zJL0qXcHeiLsVokCT8fPRmq5kErnOGcTgMKIiKf3x/CHhc8ClMU5juMiQX8UEFSIliYVRH+cK6KcCX/7/t3hAgW4aoIU65ZESzywyoirIhmRdhyjIqwIj8sI4KHYFQENzfvQQ/5YRERIsS8Z8O3e+cQIT/MI0Lmau980vlt5pghP2wlQiW5zXzLFU4DVMgPs0QgypvGwPqRT+OTJT/s3cAkGhwrVsRI8sPIxuZqOHnd3lLAd2CWhdXvPBXwNUCqbdaxlUWYJbyqCFZgVRFmMaVF2GX7rAirgLIi7GIJi+AtdVERPIFERfDG4BYhWufxAAIi4A8g2+TgV9AhAv4KVjs8PAktRMCTMNHeWoERtViL0FGGEfIaGGtEJm0zYT9YVKAamAq0C/NxFYASQT8pIuAOzIfGIkTQGETAGoNom6c5ryLCzLciwsy3IsI24WdE2PlkRNj5ZERwV7uICN6zERG8ZyMihEu9h1j0tniIRW+LR4R0n7MimM0XK4LZfLESodzkWUSrFcMiWq0YlghUh/uLMNUzWLW9Wt+v8WHkrYDp8TTV3IjRNm/Jv0FffIp9qJ//E6Cv8gq07Ce8ShJs2U94lTLYsp/wKo1Qy35ChJj3bISY92zLfkLmau98Mld759Oyn1BJbjPfSnKb+bbsJxDlTWMQ5U1jtOwnkB0eXdtnmOR+AkZ+GEnewqT3E9Bg9ZMihO3eTzh3Pn/TfoLIifP5m/cTRE6azz9pP0HkhPn8k/cTRJ45nz9kP0HkGfP5w/YTRO6czx+6nyBy03z+5P0EkRvm8wT5GSbW4dLkxfgfHmV4rFpVAthqb4/8Y0wDdc3nCRE0RlmEGUDXfL4iwsw3LcLOsWs+nxFh5xMWwevQNZ+PiOA96xYhqlbXfN5DLHpbttyy70vXfH5FMJsvphyrGbNrPm8RrVaMP1ypmtk1n78SpnqGX5zJrik8n3ca3TD9YH4B52HxPNYfWfcAAAAASUVORK5CYII=";
10351
+
10352
+ // src/fetch-map/patterns/cross-hatch-medium.png
10353
+ var cross_hatch_medium_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABHNCSVQICAgIfAhkiAAAAAFzUkdCAK7OHOkAAAKASURBVHic7ZpNbgMxCIWtnqD33+RI7VF6g2STSg4/D2zTAaIiZVEb8zEeG/WhGWOM+/OH7D79voDfjfh6Y2byzQUzGCVxU3ytB8rmywMCHI3N8M/nmJaExIrk/9oKX5xAuz3PSQ+vJYHedgSf2gqfOVj3jfrSh5eSsO7mCV+zFT4LjIzeuYiY6XxvYaLVFiXhjZnOp4G0BdKd15KgMVB1TuV7A6CC530AKYlU/s4R0gqe97hJhSmLv1xENLjki8z6x+YqvuksFRwP3Howb8y/5sPCRO8cSoLOoSTmuWz+0DZBKzhSElpiUhLSWDafJYGqLQVaR3MGoreSzWdJWAXHey+pL7qXl/M/iOM3+fvHCBxtqfyuej6EX0nPX86vpOcz+GbBuUrPZ/FNRxrYMq9vlX6CmYS32Kz4VuonvCxsq+cP+UsByun5ID5bgI5QJT0fyWcLkFXR86F8765Kvpq16SdQB5TEPJet50P42oSUhDSWreeP+NbRmIHorWTr+V2+q+B472W7fgLtB5xay35C1BHs2k+Am+AtQt37CeIE2u15LlvPR/GZg1VwqO879BNYYGRV9Hwo31uYKun5MD4NpC2oqOeP+d4AlfX8Nn/nCFXV8zv85SJSWs9v8E3nNnp+k/8eev6AP7RNaKPnA/gsiU56PorPkrAKjvdeUt9S/YT/7wMm66rnQ/in39ufFqEy3wdQ66Tnd/lmEemk53f4piMNbJnXt0o/wUzCW2xWfCv1E14WttXzh/ylAOX0fBCfLUBHqJKej+SzBciq6PlQvndXJV/N2vQTqANKYp7L1vMhfG1CSkIay9bzR3zraMxA9Fay9fwu31VwvPeyXT/hAZMuKfjIf3HUAAAAAElFTkSuQmCC";
10354
+
10355
+ // src/fetch-map/patterns/cross-hatch-small.png
10356
+ var cross_hatch_small_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABHNCSVQICAgIfAhkiAAAAAFzUkdCAK7OHOkAAAHqSURBVHic7ZhRagMxDERFT5D7/+RI26PkBu5PFipZirqmE41aB/wRR89LhoG3WERkPJeIyP3b93NPzN7h7HXmp4POoZ/sRasTPyV0e+4dBvZmGXm5ytvaDGcw2jv+AK+S9wa86niHVfPRH8z45YrdzYO68uoQm1S0vNp15aeEXmnGPuTWnJcPufb5NN8fzXmRxQp18nzGq9qIGfT2qj3/2+8J6gcvqWpPo/k2nke9J4QVYfE0nLepDDJPo3mVBpun4bx9D2Dz9Ft4rxZMnkbzUwjVnn47z+5pNK+S8wa6eH6Vv1wxrzmdeXWITSpanTyf8VNCVJ5G8//9PuAhixXq5PmMV7URM+jttfN8wqthL6lqT+/7ADAf1obF03DepjLIPI3mVRp0nkbz+z4gqAWTp9H8FAKbp+E8u6fRvErOG6j29L4PAPPqEJtUtDp5PuOnhKg8jeb3fcBihTp5PuNVbcQMenvtPJ/wathLqtrT+z4AzIe1YfE0nLepDDJPo3mVBp2n0fy+DwhqweRpND+FcH5YPA3n2T2N5tOBak/v+wAwrw6xSUWrk+czfkqIytNoft8HLFaok+czXtVGzOCrvTaeT3g17CVV7Wma+4DoAeyez/iwNiyehvM2lUHmaTSv0rBDXkitPJ/xX9QhcjSKhBtGAAAAAElFTkSuQmCC";
10357
+
10358
+ // src/fetch-map/patterns/dots-large.png
10359
+ var dots_large_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABHNCSVQICAgIfAhkiAAAAAFzUkdCAK7OHOkAAABJSURBVHic7dixEQAgDAMxH/vvDDskBReQ+h/ATpKduv1ADwAAwJduz9Gr/WrEAAAAMNjoPe8PAAAAgJLRe94fAAAAACWj93y3PwvzJ98DYTY6AAAAAElFTkSuQmCC";
10360
+
10361
+ // src/fetch-map/patterns/dots-medium.png
10362
+ var dots_medium_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABHNCSVQICAgIfAhkiAAAAAFzUkdCAK7OHOkAAABdSURBVHic7daxDcBADAMxI/vv/Jkg6YQXYLLVAKeZmTPfzoIdgNVuZ+jq/vyMALBAdaf9AACIqu60HwAAUdWd9gMAIKq6034AAERVd9oPAICo6k77AQAQVd3p9P4CKgaPf9S3g48AAAAASUVORK5CYII=";
10363
+
10364
+ // src/fetch-map/patterns/dots-small.png
10365
+ var dots_small_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABHNCSVQICAgIfAhkiAAAAAFzUkdCAK7OHOkAAAB8SURBVHic7dSxDQAxDAMx4/ffOSl/A0WAyc69TzMzZ35n4c16r1/w6f0NrFfVpA2AuKombQDEVTVpAyCuqkkbAHFVTdoAiKtq0gZAXFWTNgDiqpq0ARBX1aQNgLiqJm0AxFU1aQMgrqpJGwBxVU3aAIiratIGQFxVk+n7ApyMHh3vKZDHAAAAAElFTkSuQmCC";
10366
+
10367
+ // src/fetch-map/patterns/checker-large.png
10368
+ var checker_large_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABHNCSVQICAgIfAhkiAAAAAFzUkdCAK7OHOkAAAC7SURBVHic7dhRCsJQEMXQV/e/57oD56scHZPfciGEFnGuc859PnMNz396/xrG6ymAFtBM39fR3+jT+79/AwqgBTQF0AKaAmgBzfXtv9P9F3iYAmgBTQG0gKYAWkDTPWAYr6cAWkBTAC2gKYAW0HQPGMbrKYAW0BRAC2gKoAU03QOG8XoKoAU0BdACmgJoAU33gGG8ngJoAU0BtICmAFpA0z1gGK+nAFpAUwAtoCmAFtB0DxjG6ymAFtC8AfltJHRjA+VQAAAAAElFTkSuQmCC";
10369
+
10370
+ // src/fetch-map/patterns/checker-medium.png
10371
+ var checker_medium_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABHNCSVQICAgIfAhkiAAAAAFzUkdCAK7OHOkAAACpSURBVHic7dYxDoNAAAPBvfz/z6EOD2AjvNOhayzDCR/gy69ze371+Ydx97aw38jT5/NfQAXYAWzn3+5kf4GHVYAdwNYOYFwF2AFs7QDGVYAdwNYOYFwF2AFs7QDGVYAdwNYOYFwF2AFs7QDGVYAdwNYOYFwF2AFs7QDGVYAdwNYOYFwF2AFs7QDGVYAdwNYOYFwF2AFs7QDGVYAdwNYOYFwF2AFs7QDGXajSiGiQ1/fcAAAAAElFTkSuQmCC";
10372
+
10373
+ // src/fetch-map/patterns/checker-small.png
10374
+ var checker_small_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABHNCSVQICAgIfAhkiAAAAAFzUkdCAK7OHOkAAACgSURBVHic7dRBCoNQFEPR1P3vuZ1UEBcQAv8ccPB0am6SfP/P7aj78/rwfHfEfYWtX7J9H/8HaEDY2qQGlGlA2NqkBpRpQNjapAaUaUDY2qQGlGlA2NqkBpRpQNjapAaUaUDY2qQGlGlA2NqkBpRpQNjapAaUaUDY2qQGlGlA2NqkBpRpQNjapAaUaUDY2qQGlGlA2NqkBpRpQNjaZPv+AQpgHkxA3R9BAAAAAElFTkSuQmCC";
10375
+
10376
+ // src/fetch-map/patterns/solid.png
10377
+ var solid_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABHNCSVQICAgIfAhkiAAAAAFzUkdCAK7OHOkAAACWSURBVHic7dBBEcAwAMOwrPw5dzD0qIXA52/b3cOODtAaoAO0BugArQE6QGuADtAaoAO0BugArQE6QGuADtAaoAO0BugArQE6QGuADtAaoAO0BugArQE6QGuADtAaoAO0BugArQE6QGuADtAaoAO0BugArQE6QGuADtAaoAO0BugArQE6QGuADtAaoAO0BugArQE6QPsBULQBfwAqZPkAAAAASUVORK5CYII=";
10378
+
10379
+ // src/fetch-map/patterns/hlines-large.svg
10380
+ var hlines_large_default2 = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64"><defs><pattern id="p" width="64" height="16" patternUnits="userSpaceOnUse"><rect width="64" height="2"/></pattern></defs><rect width="64" height="64" fill="url(%23p)"/></svg>%0A';
10381
+
10382
+ // src/fetch-map/patterns/hlines-medium.svg
10383
+ var hlines_medium_default2 = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64"><defs><pattern id="p" width="64" height="8" patternUnits="userSpaceOnUse"><rect width="64" height="2"/></pattern></defs><rect width="64" height="64" fill="url(%23p)"/></svg>%0A';
10384
+
10385
+ // src/fetch-map/patterns/hlines-small.svg
10386
+ var hlines_small_default2 = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64"><defs><pattern id="p" width="64" height="4" patternUnits="userSpaceOnUse"><rect width="64" height="2"/></pattern></defs><rect width="64" height="64" fill="url(%23p)"/></svg>%0A';
10387
+
10388
+ // src/fetch-map/patterns/vlines-large.svg
10389
+ var vlines_large_default2 = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64"><defs><pattern id="p" width="16" height="64" patternUnits="userSpaceOnUse"><rect width="2" height="64"/></pattern></defs><rect width="64" height="64" fill="url(%23p)"/></svg>%0A';
10390
+
10391
+ // src/fetch-map/patterns/vlines-medium.svg
10392
+ var vlines_medium_default2 = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64"><defs><pattern id="p" width="8" height="64" patternUnits="userSpaceOnUse"><rect width="2" height="64"/></pattern></defs><rect width="64" height="64" fill="url(%23p)"/></svg>%0A';
10393
+
10394
+ // src/fetch-map/patterns/vlines-small.svg
10395
+ var vlines_small_default2 = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64"><defs><pattern id="p" width="4" height="64" patternUnits="userSpaceOnUse"><rect width="2" height="64"/></pattern></defs><rect width="64" height="64" fill="url(%23p)"/></svg>%0A';
10396
+
10397
+ // src/fetch-map/patterns/diag-left-large.svg
10398
+ var diag_left_large_default2 = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64"><defs><pattern id="p" width="45.2548" height="64" patternUnits="userSpaceOnUse" patternTransform="rotate(-45)"><rect width="1.4142" height="64"/></pattern></defs><rect width="64" height="64" fill="url(%23p)"/></svg>%0A';
10399
+
10400
+ // src/fetch-map/patterns/diag-left-medium.svg
10401
+ var diag_left_medium_default2 = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64"><defs><pattern id="p" width="22.6274" height="64" patternUnits="userSpaceOnUse" patternTransform="rotate(-45)"><rect width="1.4142" height="64"/></pattern></defs><rect width="64" height="64" fill="url(%23p)"/></svg>%0A';
10402
+
10403
+ // src/fetch-map/patterns/diag-left-small.svg
10404
+ var diag_left_small_default2 = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64"><defs><pattern id="p" width="11.3137" height="64" patternUnits="userSpaceOnUse" patternTransform="rotate(-45)"><rect width="1.4142" height="64"/></pattern></defs><rect width="64" height="64" fill="url(%23p)"/></svg>%0A';
10405
+
10406
+ // src/fetch-map/patterns/diag-right-large.svg
10407
+ var diag_right_large_default2 = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64"><defs><pattern id="p" width="45.2548" height="64" patternUnits="userSpaceOnUse" patternTransform="rotate(45)"><rect width="1.4142" height="64"/></pattern></defs><rect width="64" height="64" fill="url(%23p)"/></svg>%0A';
10408
+
10409
+ // src/fetch-map/patterns/diag-right-medium.svg
10410
+ var diag_right_medium_default2 = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64"><defs><pattern id="p" width="22.6274" height="64" patternUnits="userSpaceOnUse" patternTransform="rotate(45)"><rect width="1.4142" height="64"/></pattern></defs><rect width="64" height="64" fill="url(%23p)"/></svg>%0A';
10411
+
10412
+ // src/fetch-map/patterns/diag-right-small.svg
10413
+ var diag_right_small_default2 = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64"><defs><pattern id="p" width="11.3137" height="64" patternUnits="userSpaceOnUse" patternTransform="rotate(45)"><rect width="1.4142" height="64"/></pattern></defs><rect width="64" height="64" fill="url(%23p)"/></svg>%0A';
10414
+
10415
+ // src/fetch-map/patterns/cross-hatch-large.svg
10416
+ var cross_hatch_large_default2 = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64"><defs><pattern id="a" width="45.2548" height="64" patternUnits="userSpaceOnUse" patternTransform="rotate(-45)"><rect width="1.4142" height="64"/></pattern><pattern id="b" width="45.2548" height="64" patternUnits="userSpaceOnUse" patternTransform="rotate(45)"><rect width="1.4142" height="64"/></pattern></defs><rect width="64" height="64" fill="url(%23a)"/><rect width="64" height="64" fill="url(%23b)"/></svg>%0A';
10417
+
10418
+ // src/fetch-map/patterns/cross-hatch-medium.svg
10419
+ var cross_hatch_medium_default2 = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64"><defs><pattern id="a" width="22.6274" height="64" patternUnits="userSpaceOnUse" patternTransform="rotate(-45)"><rect width="1.4142" height="64"/></pattern><pattern id="b" width="22.6274" height="64" patternUnits="userSpaceOnUse" patternTransform="rotate(45)"><rect width="1.4142" height="64"/></pattern></defs><rect width="64" height="64" fill="url(%23a)"/><rect width="64" height="64" fill="url(%23b)"/></svg>%0A';
10420
+
10421
+ // src/fetch-map/patterns/cross-hatch-small.svg
10422
+ var cross_hatch_small_default2 = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64"><defs><pattern id="a" width="11.3137" height="64" patternUnits="userSpaceOnUse" patternTransform="rotate(-45)"><rect width="1.4142" height="64"/></pattern><pattern id="b" width="11.3137" height="64" patternUnits="userSpaceOnUse" patternTransform="rotate(45)"><rect width="1.4142" height="64"/></pattern></defs><rect width="64" height="64" fill="url(%23a)"/><rect width="64" height="64" fill="url(%23b)"/></svg>%0A';
10423
+
10424
+ // src/fetch-map/patterns/dots-large.svg
10425
+ var dots_large_default2 = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64"><defs><pattern id="p" width="16" height="16" patternUnits="userSpaceOnUse"><rect width="2" height="2"/></pattern></defs><rect width="64" height="64" fill="url(%23p)"/></svg>%0A';
10426
+
10427
+ // src/fetch-map/patterns/dots-medium.svg
10428
+ var dots_medium_default2 = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64"><defs><pattern id="p" width="8" height="8" patternUnits="userSpaceOnUse"><rect width="2" height="2"/></pattern></defs><rect width="64" height="64" fill="url(%23p)"/></svg>%0A';
10429
+
10430
+ // src/fetch-map/patterns/dots-small.svg
10431
+ var dots_small_default2 = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64"><defs><pattern id="p" width="4" height="4" patternUnits="userSpaceOnUse"><rect width="2" height="2"/></pattern></defs><rect width="64" height="64" fill="url(%23p)"/></svg>%0A';
10432
+
10433
+ // src/fetch-map/patterns/checker-large.svg
10434
+ var checker_large_default2 = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64"><defs><pattern id="p" width="16" height="16" patternUnits="userSpaceOnUse"><rect width="8" height="8"/><rect x="8" y="8" width="8" height="8"/></pattern></defs><rect width="64" height="64" fill="url(%23p)"/></svg>%0A';
10435
+
10436
+ // src/fetch-map/patterns/checker-medium.svg
10437
+ var checker_medium_default2 = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64"><defs><pattern id="p" width="8" height="8" patternUnits="userSpaceOnUse"><rect width="4" height="4"/><rect x="4" y="4" width="4" height="4"/></pattern></defs><rect width="64" height="64" fill="url(%23p)"/></svg>%0A';
10438
+
10439
+ // src/fetch-map/patterns/checker-small.svg
10440
+ var checker_small_default2 = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64"><defs><pattern id="p" width="4" height="4" patternUnits="userSpaceOnUse"><rect width="2" height="2"/><rect x="2" y="2" width="2" height="2"/></pattern></defs><rect width="64" height="64" fill="url(%23p)"/></svg>%0A';
10441
+
10442
+ // src/fetch-map/patterns/solid.svg
10443
+ var solid_default2 = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64"><defs></defs><rect width="64" height="64"/></svg>%0A';
10444
+
10445
+ // src/fetch-map/pattern-atlas.ts
10446
+ var DEFAULT_CELL_SIZE = 128;
10447
+ var SOURCE_TILE_SIZE = 64;
10448
+ var VECTOR_RENDER_SIZE = 128;
10449
+ var PATTERN_ROWS = [
10450
+ "hlines",
10451
+ "vlines",
10452
+ "diag-left",
10453
+ "diag-right",
10454
+ "cross-hatch",
10455
+ "dots",
10456
+ "checker"
10457
+ ];
10458
+ var DENSITY_COLUMNS = ["large", "medium", "small"];
10459
+ var CELL_URLS = {
10460
+ "hlines-large": hlines_large_default,
10461
+ "hlines-medium": hlines_medium_default,
10462
+ "hlines-small": hlines_small_default,
10463
+ "vlines-large": vlines_large_default,
10464
+ "vlines-medium": vlines_medium_default,
10465
+ "vlines-small": vlines_small_default,
10466
+ "diag-left-large": diag_left_large_default,
10467
+ "diag-left-medium": diag_left_medium_default,
10468
+ "diag-left-small": diag_left_small_default,
10469
+ "diag-right-large": diag_right_large_default,
10470
+ "diag-right-medium": diag_right_medium_default,
10471
+ "diag-right-small": diag_right_small_default,
10472
+ "cross-hatch-large": cross_hatch_large_default,
10473
+ "cross-hatch-medium": cross_hatch_medium_default,
10474
+ "cross-hatch-small": cross_hatch_small_default,
10475
+ "dots-large": dots_large_default,
10476
+ "dots-medium": dots_medium_default,
10477
+ "dots-small": dots_small_default,
10478
+ "checker-large": checker_large_default,
10479
+ "checker-medium": checker_medium_default,
10480
+ "checker-small": checker_small_default,
10481
+ solid: solid_default
10482
+ };
10483
+ var CELL_SVG_URLS = {
10484
+ "hlines-large": hlines_large_default2,
10485
+ "hlines-medium": hlines_medium_default2,
10486
+ "hlines-small": hlines_small_default2,
10487
+ "vlines-large": vlines_large_default2,
10488
+ "vlines-medium": vlines_medium_default2,
10489
+ "vlines-small": vlines_small_default2,
10490
+ "diag-left-large": diag_left_large_default2,
10491
+ "diag-left-medium": diag_left_medium_default2,
10492
+ "diag-left-small": diag_left_small_default2,
10493
+ "diag-right-large": diag_right_large_default2,
10494
+ "diag-right-medium": diag_right_medium_default2,
10495
+ "diag-right-small": diag_right_small_default2,
10496
+ "cross-hatch-large": cross_hatch_large_default2,
10497
+ "cross-hatch-medium": cross_hatch_medium_default2,
10498
+ "cross-hatch-small": cross_hatch_small_default2,
10499
+ "dots-large": dots_large_default2,
10500
+ "dots-medium": dots_medium_default2,
10501
+ "dots-small": dots_small_default2,
10502
+ "checker-large": checker_large_default2,
10503
+ "checker-medium": checker_medium_default2,
10504
+ "checker-small": checker_small_default2,
10505
+ solid: solid_default2
10506
+ };
10507
+ function debugGlobals() {
10508
+ return globalThis;
10509
+ }
10510
+ function getPatternCellSize() {
10511
+ const cell = debugGlobals().__CARTO_PATTERN_CELL_SIZE__;
10512
+ return typeof cell === "number" && cell > 0 ? cell : DEFAULT_CELL_SIZE;
10513
+ }
10514
+ function getPatternAssetSource() {
10515
+ const source = debugGlobals().__CARTO_PATTERN_ASSET_SOURCE__;
10516
+ return source === "svg" || source === "procedural" ? source : "png";
10517
+ }
10518
+ function getPatternTextureParameters() {
10519
+ const params = debugGlobals().__CARTO_PATTERN_TEXTURE_PARAMS__;
10520
+ return params && typeof params === "object" ? params : void 0;
10521
+ }
10522
+ function getPatternRepeats(cell, source = getPatternAssetSource()) {
10523
+ const repeatSize = source === "png" ? SOURCE_TILE_SIZE : VECTOR_RENDER_SIZE;
10524
+ return Math.max(1, Math.floor(cell / repeatSize));
10525
+ }
10526
+ function getPatternScaleAdjustment(cell = getPatternCellSize()) {
10527
+ return SOURCE_TILE_SIZE * getPatternRepeats(cell) / cell;
10528
+ }
10529
+ function getPatternCellPadding(cell) {
10530
+ return Math.max(2, Math.round(cell / 16));
10531
+ }
10532
+ function getPatternAtlasMapping(cell = getPatternCellSize()) {
10533
+ const pad = getPatternCellPadding(cell);
10534
+ const pitch = cell + 2 * pad;
10535
+ const mapping = {};
10536
+ const frame = (col, row) => ({
10537
+ x: pad + col * pitch,
10538
+ y: pad + row * pitch,
10539
+ width: cell,
10540
+ height: cell,
10541
+ mask: true
10542
+ });
10543
+ PATTERN_ROWS.forEach((pattern, row) => {
10544
+ DENSITY_COLUMNS.forEach((density, col) => {
10545
+ mapping[`${pattern}-${density}`] = frame(col, row);
10546
+ });
10547
+ });
10548
+ mapping.none = frame(0, PATTERN_ROWS.length);
10549
+ mapping.solid = frame(1, PATTERN_ROWS.length);
10550
+ return mapping;
10551
+ }
10552
+ function createCanvas(w, h) {
10553
+ if (typeof OffscreenCanvas !== "undefined") return new OffscreenCanvas(w, h);
10554
+ if (typeof document !== "undefined") {
10555
+ const c = document.createElement("canvas");
10556
+ c.width = w;
10557
+ c.height = h;
10558
+ return c;
10559
+ }
10560
+ throw new Error(
10561
+ "carto-api-client: no Canvas available to assemble the pattern atlas"
10562
+ );
10563
+ }
10564
+ async function loadImage(dataUrl) {
10565
+ if (typeof createImageBitmap !== "undefined" && typeof fetch !== "undefined") {
10566
+ const blob = await (await fetch(dataUrl)).blob();
10567
+ return createImageBitmap(blob);
10568
+ }
10569
+ return new Promise((resolve, reject) => {
10570
+ const img = new Image();
10571
+ img.onload = () => resolve(img);
10572
+ img.onerror = reject;
10573
+ img.src = dataUrl;
10574
+ });
10575
+ }
10576
+ function loadSvgImage(dataUrl) {
10577
+ return new Promise((resolve, reject) => {
10578
+ const img = new Image();
10579
+ img.onload = () => resolve(img);
10580
+ img.onerror = reject;
10581
+ img.src = dataUrl;
10582
+ });
10583
+ }
10584
+ var DENSITY_STEP = { small: 1, medium: 2, large: 4 };
10585
+ function paintDesignTile(ctx, key) {
10586
+ const [, name, density] = key.match(/^(.*?)(?:-(small|medium|large))?$/) ?? [];
10587
+ const step = DENSITY_STEP[density ?? ""] ?? 1;
10588
+ const linePeriod = 4 * step;
10589
+ const diagPeriod = 16 * step;
10590
+ const square = 2 * step;
10591
+ ctx.fillStyle = "#000";
10592
+ ctx.strokeStyle = "#000";
10593
+ const diag = (dir) => {
10594
+ ctx.lineWidth = Math.SQRT2;
10595
+ ctx.beginPath();
10596
+ for (let k = -Math.ceil(64 / diagPeriod); k <= 2 * Math.ceil(64 / diagPeriod); k++) {
10597
+ ctx.moveTo(k * diagPeriod - 8 * dir, -8);
10598
+ ctx.lineTo(k * diagPeriod + 72 * dir, 72);
10599
+ }
10600
+ ctx.stroke();
10601
+ };
10602
+ switch (name) {
10603
+ case "solid":
10604
+ ctx.fillRect(0, 0, 64, 64);
10605
+ break;
10606
+ case "hlines":
10607
+ for (let y = 0; y < 64; y += linePeriod) ctx.fillRect(0, y, 64, 2);
10608
+ break;
10609
+ case "vlines":
10610
+ for (let x = 0; x < 64; x += linePeriod) ctx.fillRect(x, 0, 2, 64);
10611
+ break;
10612
+ case "dots":
10613
+ for (let y = 0; y < 64; y += linePeriod)
10614
+ for (let x = 0; x < 64; x += linePeriod) ctx.fillRect(x, y, 2, 2);
10615
+ break;
10616
+ case "checker":
10617
+ for (let j = 0; j * square < 64; j++)
10618
+ for (let i = 0; i * square < 64; i++)
10619
+ if ((i + j) % 2 === 0)
10620
+ ctx.fillRect(i * square, j * square, square, square);
10621
+ break;
10622
+ case "diag-left":
10623
+ diag(1);
10624
+ break;
10625
+ case "diag-right":
10626
+ diag(-1);
10627
+ break;
10628
+ case "cross-hatch":
10629
+ diag(1);
10630
+ diag(-1);
10631
+ break;
10632
+ }
10633
+ }
10634
+ function paintTileCanvas(key, size) {
10635
+ const canvas = createCanvas(size, size);
10636
+ const ctx = canvas.getContext("2d");
10637
+ if (!ctx)
10638
+ throw new Error(
10639
+ "carto-api-client: 2D context unavailable for pattern tile"
10640
+ );
10641
+ ctx.scale(size / 64, size / 64);
10642
+ paintDesignTile(ctx, key);
10643
+ return canvas;
10644
+ }
10645
+ async function composeAtlas(cell, reps, images) {
10646
+ const mapping = getPatternAtlasMapping(cell);
10647
+ const pad = getPatternCellPadding(cell);
10648
+ const pitch = cell + 2 * pad;
10649
+ const step = cell / reps;
10650
+ const canvas = createCanvas(pitch * 3, pitch * (PATTERN_ROWS.length + 1));
10651
+ const ctx = canvas.getContext("2d");
10652
+ if (!ctx)
10653
+ throw new Error(
10654
+ "carto-api-client: 2D context unavailable for pattern atlas"
10655
+ );
10656
+ for (const [key, frame] of Object.entries(mapping)) {
10657
+ const img = images[key];
10658
+ if (!img) continue;
10659
+ ctx.save();
10660
+ ctx.beginPath();
10661
+ ctx.rect(frame.x - pad, frame.y - pad, cell + 2 * pad, cell + 2 * pad);
10662
+ ctx.clip();
10663
+ for (let i = -1; i <= reps; i++) {
10664
+ for (let j = -1; j <= reps; j++) {
10665
+ ctx.drawImage(img, frame.x + i * step, frame.y + j * step, step, step);
10666
+ }
10667
+ }
10668
+ ctx.restore();
10669
+ }
10670
+ if (typeof createImageBitmap !== "undefined")
10671
+ return createImageBitmap(canvas);
10672
+ return canvas;
10673
+ }
10674
+ async function buildPngAtlas(cell) {
10675
+ const images = {};
10676
+ await Promise.all(
10677
+ Object.entries(CELL_URLS).map(async ([key, url]) => {
10678
+ images[key] = await loadImage(url);
10679
+ })
10680
+ );
10681
+ return composeAtlas(cell, getPatternRepeats(cell, "png"), images);
10682
+ }
10683
+ async function buildSvgAtlas(cell) {
10684
+ const images = {};
10685
+ await Promise.all(
10686
+ Object.entries(CELL_SVG_URLS).map(async ([key, url]) => {
10687
+ images[key] = await loadSvgImage(url);
10688
+ })
10689
+ );
10690
+ return composeAtlas(cell, getPatternRepeats(cell, "svg"), images);
10691
+ }
10692
+ async function buildProceduralAtlas(cell) {
10693
+ const reps = getPatternRepeats(cell, "procedural");
10694
+ const step = cell / reps;
10695
+ const images = {};
10696
+ for (const key of Object.keys(CELL_URLS)) {
10697
+ images[key] = paintTileCanvas(key, step);
10698
+ }
10699
+ return composeAtlas(cell, reps, images);
10700
+ }
10701
+ var ATLAS_BUILDERS = {
10702
+ png: buildPngAtlas,
10703
+ svg: buildSvgAtlas,
10704
+ procedural: buildProceduralAtlas
10705
+ };
10706
+ var atlasPromises = /* @__PURE__ */ new Map();
10707
+ function getPatternAtlas(cell = getPatternCellSize()) {
10708
+ const source = getPatternAssetSource();
10709
+ const memoKey = `${source}:${cell}`;
10710
+ let promise = atlasPromises.get(memoKey);
10711
+ if (!promise) {
10712
+ promise = ATLAS_BUILDERS[source](cell);
10713
+ promise.catch(() => {
10714
+ });
10715
+ atlasPromises.set(memoKey, promise);
10716
+ }
10717
+ return promise;
10718
+ }
10719
+
10285
10720
  // src/fetch-map/parse-map.ts
10286
10721
  function getLayerDescriptor({
10287
10722
  mapConfig,
@@ -10505,6 +10940,10 @@ function createChannelProps(id, layerType, config2, visualChannels, data, datase
10505
10940
  const result = {};
10506
10941
  const updateTriggers = {};
10507
10942
  const scales = {};
10943
+ const isVectorTile = layerType === "mvt" || layerType === "tileset";
10944
+ const geometry = data.tilestats?.layers?.[0]?.geometry;
10945
+ const isLine = geometry === "Line" || geometry === "LineString" || geometry === "MultiLineString";
10946
+ const isPolygon = geometry === "Polygon" || geometry === "MultiPolygon";
10508
10947
  {
10509
10948
  const { colorField, colorScale } = visualChannels;
10510
10949
  const { colorRange } = visConfig;
@@ -10665,6 +11104,84 @@ function createChannelProps(id, layerType, config2, visualChannels, data, datase
10665
11104
  };
10666
11105
  }
10667
11106
  }
11107
+ {
11108
+ const strokeVisible = isLine || isPolygon && Boolean(visConfig.stroked);
11109
+ if (isVectorTile && strokeVisible) {
11110
+ const { lineStyleField, lineStyleScale } = visualChannels;
11111
+ const { lineStyleRange } = visConfig;
11112
+ if (visConfig.lineStyle && visConfig.lineStyle !== "solid") {
11113
+ if (visConfig.lineStyle === "dotted") {
11114
+ result.lineCapRounded = true;
11115
+ }
11116
+ result.lineStyle = visConfig.lineStyle;
11117
+ if (visConfig.dashArray) {
11118
+ result.dashArray = visConfig.dashArray;
11119
+ result.getDashArray = visConfig.dashArray;
11120
+ }
11121
+ }
11122
+ if (lineStyleField && lineStyleScale && lineStyleRange) {
11123
+ const { accessor, ...scaleProps } = getLineStyleAccessor(
11124
+ lineStyleField,
11125
+ lineStyleRange,
11126
+ data
11127
+ );
11128
+ result.getDashArray = accessor;
11129
+ scales.lineStyle = updateTriggers.getDashArray = {
11130
+ field: lineStyleField,
11131
+ type: lineStyleScale,
11132
+ ...scaleProps
11133
+ };
11134
+ const dashArrays = [
11135
+ ...lineStyleRange.dashArrayMap.map(({ dashArray }) => dashArray),
11136
+ ...lineStyleRange.othersDashArray ? [lineStyleRange.othersDashArray] : []
11137
+ ];
11138
+ if (dashArrays.some(([dash]) => dash === 0)) {
11139
+ result.lineCapRounded = true;
11140
+ }
11141
+ }
11142
+ }
11143
+ }
11144
+ {
11145
+ const fillPatternEnabled = Boolean(
11146
+ visConfig.filled && visConfig.fillPatternEnabled
11147
+ );
11148
+ result.fillPatternEnabled = fillPatternEnabled;
11149
+ if (visConfig.filled) {
11150
+ result.fillPatternAtlas = getPatternAtlas();
11151
+ result.fillPatternMapping = getPatternAtlasMapping();
11152
+ result.fillPatternMask = true;
11153
+ const textureParameters = getPatternTextureParameters();
11154
+ if (textureParameters) {
11155
+ result.textureParameters = textureParameters;
11156
+ }
11157
+ result.getFillPatternScale = (visConfig.fillPatternSize ?? 1) * getPatternScaleAdjustment();
11158
+ const { fillPatternField, fillPatternScale } = visualChannels;
11159
+ const { fillPatternRange, fillPatternDensity } = visConfig;
11160
+ if (!fillPatternEnabled) {
11161
+ result.getFillPattern = () => "solid";
11162
+ updateTriggers.getFillPattern = "solid";
11163
+ } else if (fillPatternField && fillPatternScale && fillPatternRange) {
11164
+ result.fillPattern = visConfig.fillPattern;
11165
+ const { accessor, ...scaleProps } = getFillPatternAccessor(
11166
+ fillPatternField,
11167
+ fillPatternRange,
11168
+ fillPatternDensity,
11169
+ data
11170
+ );
11171
+ result.getFillPattern = accessor;
11172
+ scales.fillPattern = updateTriggers.getFillPattern = {
11173
+ field: fillPatternField,
11174
+ type: fillPatternScale,
11175
+ ...scaleProps
11176
+ };
11177
+ } else {
11178
+ result.fillPattern = visConfig.fillPattern;
11179
+ const key = `${visConfig.fillPattern}-${fillPatternDensity ?? "medium"}`;
11180
+ result.getFillPattern = () => key;
11181
+ updateTriggers.getFillPattern = key;
11182
+ }
11183
+ }
11184
+ }
10668
11185
  {
10669
11186
  const { heightField, heightScale } = visualChannels;
10670
11187
  const { enable3d, heightRange } = visConfig;
@@ -10793,9 +11310,7 @@ function createChannelProps(id, layerType, config2, visualChannels, data, datase
10793
11310
  } = secondaryLabel || {};
10794
11311
  result.getText = mainLabel.field && getTextAccessor(mainLabel.field, data);
10795
11312
  const getSecondaryText = secondaryField && getTextAccessor(secondaryField, data);
10796
- const geometry = data.tilestats?.layers?.[0]?.geometry;
10797
- const isLineOrPolygon = geometry === "Polygon" || geometry === "MultiPolygon" || geometry === "Line" || geometry === "LineString" || geometry === "MultiLineString";
10798
- if (isLineOrPolygon && (layerType === "tileset" || layerType === "mvt")) {
11313
+ if ((isLine || isPolygon) && isVectorTile) {
10799
11314
  const uniqueIdProperty = visConfig.textLabelUniqueIdField;
10800
11315
  result.autoLabels = uniqueIdProperty ? { uniqueIdProperty } : true;
10801
11316
  result.pointType = "text";
@@ -11568,10 +12083,12 @@ export {
11568
12083
  getColumnNameFromGeoColumn,
11569
12084
  getDataFilterExtensionProps,
11570
12085
  getDefaultAggregationExpColumnAliasForLayerType,
12086
+ getFillPatternAccessor,
11571
12087
  getFilter,
11572
12088
  getIconUrlAccessor,
11573
12089
  getLayerDescriptor,
11574
12090
  getLayerProps,
12091
+ getLineStyleAccessor,
11575
12092
  getMaxMarkerSize,
11576
12093
  getSizeAccessor,
11577
12094
  getSorter,