@mapcreator/sdk 0.0.9 → 0.0.10

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 (120) hide show
  1. package/dist/{esm/HighlightManager.d.ts → HighlightManager.d.ts} +2 -2
  2. package/dist/{esm/MCMap.d.ts → MCMap.d.ts} +1 -1
  3. package/dist/{esm/PopupManager.d.ts → PopupManager.d.ts} +4 -4
  4. package/dist/{esm/Registry.d.ts → Registry.d.ts} +3 -3
  5. package/dist/{esm/adornments → adornments}/categoricalLegend.d.ts +1 -1
  6. package/dist/{esm/adornments → adornments}/connectedLegend.d.ts +2 -2
  7. package/dist/{esm/adornments → adornments}/customAdornment.d.ts +1 -1
  8. package/dist/{esm/adornments → adornments}/heading.d.ts +1 -1
  9. package/dist/adornments/insetMap.d.ts +3 -0
  10. package/dist/{esm/adornments → adornments}/manualLegend.d.ts +1 -1
  11. package/dist/adornments/northArrow.d.ts +3 -0
  12. package/dist/adornments/scalebar.d.ts +3 -0
  13. package/dist/{esm/constants → constants}/index.d.ts +2 -2
  14. package/dist/{esm/controls → controls}/fullscreenControls.d.ts +1 -1
  15. package/dist/{esm/controls → controls}/geocoderControl.d.ts +1 -1
  16. package/dist/{esm/controls → controls}/geolocationControls.d.ts +1 -1
  17. package/dist/controls/refreshMapControls.d.ts +3 -0
  18. package/dist/controls/webControls.d.ts +4 -0
  19. package/dist/{esm/controls → controls}/zoomControls.d.ts +1 -1
  20. package/dist/index.d.ts +3 -0
  21. package/dist/locales/da_DK/strings.json.d.ts +10 -0
  22. package/dist/locales/de_DE/strings.json.d.ts +10 -0
  23. package/dist/locales/en_GB/strings.json.d.ts +10 -0
  24. package/dist/locales/es_ES/strings.json.d.ts +10 -0
  25. package/dist/locales/fr_FR/strings.json.d.ts +10 -0
  26. package/dist/locales/it_IT/strings.json.d.ts +10 -0
  27. package/dist/locales/nl_NL/strings.json.d.ts +10 -0
  28. package/dist/mapcreator-sdk.js +39590 -0
  29. package/dist/models/area.d.ts +5 -0
  30. package/dist/models/circle.d.ts +5 -0
  31. package/dist/models/dot.d.ts +3 -0
  32. package/dist/models/line.d.ts +4 -0
  33. package/dist/models/marker.d.ts +5 -0
  34. package/dist/models/polygon.d.ts +5 -0
  35. package/dist/{esm/renderAdornments.d.ts → renderAdornments.d.ts} +3 -3
  36. package/dist/{esm/types → types}/index.d.ts +1 -1
  37. package/dist/{esm/types → types}/mapstyle.d.ts +2 -6
  38. package/dist/{esm/utils → utils}/choropleth.d.ts +3 -3
  39. package/dist/{esm/utils → utils}/geolocation.d.ts +1 -1
  40. package/dist/{esm/utils → utils}/graphhopper.d.ts +1 -1
  41. package/dist/{esm/utils → utils}/helpers.d.ts +2 -2
  42. package/dist/{esm/utils → utils}/language.d.ts +1 -1
  43. package/dist/{esm/utils → utils}/models.d.ts +4 -4
  44. package/dist/{esm/utils → utils}/overlays.d.ts +1 -1
  45. package/dist/{esm/utils → utils}/svgHelpers.d.ts +3 -4
  46. package/dist/{esm/utils → utils}/template.d.ts +2 -2
  47. package/dist/{esm/utils → utils}/youtube.d.ts +1 -1
  48. package/package.json +7 -6
  49. package/dist/esm/HighlightManager.js +0 -203
  50. package/dist/esm/MCMap.js +0 -254
  51. package/dist/esm/PopupManager.js +0 -297
  52. package/dist/esm/Registry.js +0 -74
  53. package/dist/esm/adornments/categoricalLegend.js +0 -141
  54. package/dist/esm/adornments/connectedLegend.js +0 -393
  55. package/dist/esm/adornments/customAdornment.js +0 -29
  56. package/dist/esm/adornments/heading.js +0 -71
  57. package/dist/esm/adornments/insetMap.d.ts +0 -3
  58. package/dist/esm/adornments/insetMap.js +0 -351
  59. package/dist/esm/adornments/manualLegend.js +0 -15
  60. package/dist/esm/adornments/northArrow.d.ts +0 -3
  61. package/dist/esm/adornments/northArrow.js +0 -24
  62. package/dist/esm/adornments/scalebar.d.ts +0 -3
  63. package/dist/esm/adornments/scalebar.js +0 -176
  64. package/dist/esm/constants/index.js +0 -53
  65. package/dist/esm/controls/controls.js +0 -7
  66. package/dist/esm/controls/fullscreenControls.js +0 -29
  67. package/dist/esm/controls/geocoderControl.js +0 -202
  68. package/dist/esm/controls/geolocationControls.js +0 -65
  69. package/dist/esm/controls/refreshMapControls.d.ts +0 -3
  70. package/dist/esm/controls/refreshMapControls.js +0 -26
  71. package/dist/esm/controls/webControls.d.ts +0 -4
  72. package/dist/esm/controls/webControls.js +0 -40
  73. package/dist/esm/controls/zoomControls.js +0 -23
  74. package/dist/esm/i18n.js +0 -21
  75. package/dist/esm/index.d.ts +0 -5
  76. package/dist/esm/index.js +0 -5
  77. package/dist/esm/locales/da_DK/strings.json +0 -7
  78. package/dist/esm/locales/de_DE/strings.json +0 -7
  79. package/dist/esm/locales/en_GB/strings.json +0 -7
  80. package/dist/esm/locales/es_ES/strings.json +0 -7
  81. package/dist/esm/locales/fr_FR/strings.json +0 -7
  82. package/dist/esm/locales/it_IT/strings.json +0 -7
  83. package/dist/esm/locales/nl_NL/strings.json +0 -7
  84. package/dist/esm/models/area.d.ts +0 -5
  85. package/dist/esm/models/area.js +0 -165
  86. package/dist/esm/models/circle.d.ts +0 -5
  87. package/dist/esm/models/circle.js +0 -110
  88. package/dist/esm/models/dot.d.ts +0 -3
  89. package/dist/esm/models/dot.js +0 -42
  90. package/dist/esm/models/line.d.ts +0 -4
  91. package/dist/esm/models/line.js +0 -117
  92. package/dist/esm/models/marker.d.ts +0 -5
  93. package/dist/esm/models/marker.js +0 -179
  94. package/dist/esm/models/polygon.d.ts +0 -5
  95. package/dist/esm/models/polygon.js +0 -80
  96. package/dist/esm/renderAdornments.js +0 -129
  97. package/dist/esm/types/geometry.js +0 -1
  98. package/dist/esm/types/index.js +0 -1
  99. package/dist/esm/types/jobObject.js +0 -1
  100. package/dist/esm/types/mapstyle.js +0 -1
  101. package/dist/esm/utils/browser.js +0 -6
  102. package/dist/esm/utils/choropleth.js +0 -110
  103. package/dist/esm/utils/fullscreen.js +0 -40
  104. package/dist/esm/utils/geolocation.js +0 -93
  105. package/dist/esm/utils/graphhopper.js +0 -41
  106. package/dist/esm/utils/helpers.js +0 -116
  107. package/dist/esm/utils/language.js +0 -170
  108. package/dist/esm/utils/models.js +0 -103
  109. package/dist/esm/utils/overlays.js +0 -87
  110. package/dist/esm/utils/scalebar.js +0 -52
  111. package/dist/esm/utils/svgHelpers.js +0 -1512
  112. package/dist/esm/utils/template.js +0 -120
  113. package/dist/esm/utils/youtube.js +0 -64
  114. /package/dist/{esm/controls → controls}/controls.d.ts +0 -0
  115. /package/dist/{esm/i18n.d.ts → i18n.d.ts} +0 -0
  116. /package/dist/{esm/types → types}/geometry.d.ts +0 -0
  117. /package/dist/{esm/types → types}/jobObject.d.ts +0 -0
  118. /package/dist/{esm/utils → utils}/browser.d.ts +0 -0
  119. /package/dist/{esm/utils → utils}/fullscreen.d.ts +0 -0
  120. /package/dist/{esm/utils → utils}/scalebar.d.ts +0 -0
@@ -1,103 +0,0 @@
1
- import { degToRad, radToDeg, calcDistance, numberRe, fnv32b } from '@/utils/helpers';
2
- import { lineString, polygon as makePolygon } from '@turf/helpers';
3
- import { polygonSmooth } from '@turf/polygon-smooth';
4
- import bboxClip from '@turf/bbox-clip';
5
- export function calculateCircle(center, radius) {
6
- const circle = [];
7
- const steps = 100;
8
- const interval = (Math.PI * 2) / steps;
9
- for (let i = 0; i < steps; i++) {
10
- circle.push(calculateCirclePoint(center, radius, i * interval));
11
- }
12
- if (containsNorthPole(center, radius)) {
13
- const first = circle[0];
14
- const last = circle[circle.length - 1];
15
- const lng = (last[0] + first[0] - 360) / 2;
16
- const lat = (first[1] + last[1]) / 2;
17
- circle.push([lng, lat]);
18
- circle.push([lng, 90]);
19
- circle.push([lng + 360, 90]);
20
- circle.push([lng + 360, lat]);
21
- }
22
- if (containsSouthPole(center, radius)) {
23
- const first = circle[49];
24
- const last = circle[50];
25
- const lng = (last[0] + first[0] - 360) / 2;
26
- const lat = (first[1] + last[1]) / 2;
27
- circle.splice(50, 0, [lng + 360, lat], [lng + 360, -90], [lng, -90], [lng, lat]);
28
- }
29
- circle.push(circle[0]);
30
- return circle;
31
- }
32
- export function calculateRadiusLine(center, radius, bearing) {
33
- const points = [];
34
- const steps = 100;
35
- const interval = radius / steps;
36
- for (let i = 0; i <= steps; i++) {
37
- points.push(calculateCirclePoint(center, i * interval, degToRad(bearing)));
38
- }
39
- const bbox = [-Infinity, -85.051129, Infinity, 85.051129];
40
- return bboxClip(lineString(points), bbox).geometry.coordinates;
41
- }
42
- function calculateCirclePoint(center, radius, bearing) {
43
- const earthRadius = 6378.1;
44
- const radiusRatio = radius / earthRadius;
45
- const lngCenter = degToRad(center.lng);
46
- const latCenter = degToRad(center.lat);
47
- const lat = Math.asin(Math.sin(latCenter) * Math.cos(radiusRatio) +
48
- Math.cos(latCenter) * Math.sin(radiusRatio) * Math.cos(bearing));
49
- const lng = lngCenter +
50
- Math.atan2(Math.sin(bearing) * Math.sin(radiusRatio) * Math.cos(latCenter), Math.cos(radiusRatio) - Math.sin(latCenter) * Math.sin(lat));
51
- return [radToDeg(lng), radToDeg(lat)];
52
- }
53
- function containsNorthPole(center, radius) {
54
- return calcDistance(center, { lng: 0, lat: 90 }) / 1000 < radius;
55
- }
56
- function containsSouthPole(center, radius) {
57
- return calcDistance(center, { lng: 0, lat: -90 }) / 1000 < radius;
58
- }
59
- export function calculatePolygonGeometry(polygon) {
60
- const { polygonType } = polygon;
61
- const anchorPoints = typeof polygon.anchorPoints?.[0]?.[0] === 'number'
62
- ? [polygon.anchorPoints]
63
- : polygon.anchorPoints;
64
- if (polygonType === 'smooth') {
65
- return (polygonSmooth(makePolygon(anchorPoints), { iterations: 4 }).features?.[0]?.geometry
66
- ?.coordinates ?? anchorPoints.slice());
67
- }
68
- return anchorPoints.slice();
69
- }
70
- export function getAreaLayerId(groupId, area) {
71
- const key = fnv32b(`${area.vectorUrl}/${area.sourceLayerId}`);
72
- return `${groupId}-${key}`;
73
- }
74
- export function getAreaSourceId(area) {
75
- return `custom-area-${fnv32b(area.vectorUrl)}`;
76
- }
77
- export function getBoundValues(modelBindings, dataColumn) {
78
- return modelBindings.reduce((result, bindings) => {
79
- const value = bindings.dataBindings?.[dataColumn];
80
- if (typeof value === 'object' && value !== null && value.t === 'n') {
81
- result.push(value.v);
82
- }
83
- else if (typeof value === 'number') {
84
- result.push(value);
85
- }
86
- else if (typeof value === 'string' && value) {
87
- result.push(numberRe.test(value) ? Number(value) : value);
88
- }
89
- return result;
90
- }, []);
91
- }
92
- export function getLineAngle(line, map) {
93
- const n = line.length;
94
- if (n < 2) {
95
- return 0;
96
- }
97
- const endPoint = map.projectWithScaleCorrection(line[n - 1]);
98
- const penultimatePoint = map.projectWithScaleCorrection(line[n - 2]);
99
- const dx = endPoint.x - penultimatePoint.x;
100
- const dy = penultimatePoint.y - endPoint.y;
101
- const thetaDeg = Math.atan2(dy, dx) * (180 / Math.PI);
102
- return (90 - thetaDeg + 360) % 360;
103
- }
@@ -1,87 +0,0 @@
1
- export async function loadOverlays(overlays, map, vapiUrl, accessToken, styleOverrides) {
2
- const urls = overlays.map(overlay => `${vapiUrl}/styles/${overlay}.json?access_token=${accessToken}`);
3
- const promises = urls.map(url => fetch(url).then(result => result.json()));
4
- const data = await Promise.all(promises);
5
- await Promise.all(data.map(item => addOverlay(item, map, accessToken, styleOverrides)));
6
- }
7
- async function addOverlay(data, map, accessToken, styleOverrides) {
8
- for (const sourceId in data.sources) {
9
- if (map.getSource(sourceId) === undefined) {
10
- map.addSource(sourceId, data.sources[sourceId]);
11
- }
12
- }
13
- if (data.sprite !== undefined) {
14
- await loadSprite(map, data.sprite, accessToken);
15
- }
16
- for (const layer of data.layers) {
17
- if (map.getLayer(layer.id) !== undefined) {
18
- map.removeLayer(layer.id);
19
- }
20
- const addBefore = layer.metadata?.['mc-add-before'] ?? 'mc-before-none';
21
- map.addLayer(applyOverrides(layer, styleOverrides), addBefore);
22
- }
23
- }
24
- function applyOverrides(layer, styleOverrides) {
25
- const overrides = styleOverrides ?? {};
26
- const override = overrides[layer.id] ?? {};
27
- const result = {
28
- ...layer,
29
- layout: { ...layer.layout, ...override.layout },
30
- paint: { ...layer.paint, ...override.paint },
31
- metadata: {
32
- ...layer.metadata,
33
- ...override.metadata,
34
- },
35
- };
36
- if (override.minzoom !== undefined) {
37
- result.minzoom = override.minzoom;
38
- }
39
- if (override.maxzoom !== undefined) {
40
- result.maxzoom = override.maxzoom;
41
- }
42
- if ('filter' in override && result.type !== 'background') {
43
- result.filter = override.filter;
44
- }
45
- return result;
46
- }
47
- async function loadSprite(map, spriteUrl, accessToken) {
48
- try {
49
- const spriteJsonUrl = `${spriteUrl}.json?access_token=${accessToken}`;
50
- const spriteImageUrl = `${spriteUrl}.png?access_token=${accessToken}`;
51
- const [spriteJsonResponse, spriteImageResponse] = await Promise.all([
52
- fetch(spriteJsonUrl),
53
- fetch(spriteImageUrl),
54
- ]);
55
- if (!spriteJsonResponse.ok || !spriteImageResponse.ok) {
56
- throw new Error(`Failed to load sprite from ${spriteUrl}`);
57
- }
58
- const spriteJson = await spriteJsonResponse.json();
59
- const spriteImageBlob = await spriteImageResponse.blob();
60
- const spriteImage = await new Promise((resolve, reject) => {
61
- const img = new Image();
62
- img.onload = () => resolve(img);
63
- img.onerror = err => reject(err);
64
- img.src = URL.createObjectURL(spriteImageBlob);
65
- });
66
- const canvas = document.createElement('canvas');
67
- const context = canvas.getContext('2d', { willReadFrequently: true });
68
- if (!context) {
69
- throw new Error('Failed to get canvas context');
70
- }
71
- for (const [name, sprite] of Object.entries(spriteJson)) {
72
- if (map.hasImage(name)) {
73
- continue;
74
- }
75
- const { x, y, width, height, pixelRatio } = sprite;
76
- canvas.width = width * pixelRatio;
77
- canvas.height = height * pixelRatio;
78
- context.clearRect(0, 0, canvas.width, canvas.height);
79
- context.drawImage(spriteImage, x, y, width, height, 0, 0, canvas.width, canvas.height);
80
- const imageData = context.getImageData(0, 0, canvas.width, canvas.height);
81
- map.addImage(name, imageData, { pixelRatio });
82
- }
83
- }
84
- catch (error) {
85
- console.error(error);
86
- }
87
- }
@@ -1,52 +0,0 @@
1
- const significantNumbers = [10, 5, 3, 2, 1];
2
- export function floatToFraction(x, error = 0.000001) {
3
- const n = Math.floor(x);
4
- x -= n;
5
- if (x < error) {
6
- return [n, 1];
7
- }
8
- else if (1 - error < x) {
9
- return [n + 1, 1];
10
- }
11
- // The lower fraction is 0/1
12
- let lowerN = 0;
13
- let lowerD = 1;
14
- // The upper fraction is 1/1
15
- let upperN = 1;
16
- let upperD = 1;
17
- // eslint-disable-next-line no-constant-condition
18
- while (true) {
19
- // The middle fraction is (lowerN upperN) / (lower_d + upperD)
20
- const middleN = lowerN + upperN;
21
- const middleD = lowerD + upperD;
22
- // If x + error < middle
23
- if (middleD * (x + error) < middleN) {
24
- // Middle is the new upper
25
- upperN = middleN;
26
- upperD = middleD;
27
- }
28
- else if (middleN < (x - error) * middleD) {
29
- // Middle is the new lower
30
- lowerN = middleN;
31
- lowerD = middleD;
32
- }
33
- else {
34
- // Middle is best fraction
35
- return [n * middleD + middleN, middleD];
36
- }
37
- }
38
- }
39
- export function getRoundNum(num) {
40
- const pow10 = 10 ** Math.floor(Math.log10(num));
41
- const d = num / pow10;
42
- for (const n of significantNumbers) {
43
- if (d >= n) {
44
- return n * pow10;
45
- }
46
- }
47
- return getDecimalRoundNum(d) * pow10;
48
- }
49
- function getDecimalRoundNum(d) {
50
- const multiplier = 10 ** Math.ceil(-Math.log(d) / Math.LN10);
51
- return Math.round(d * multiplier) / multiplier;
52
- }