@bendyline/squisq-react 1.3.1 → 1.3.2
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/index.d.ts +710 -35
- package/dist/index.js +4288 -33
- package/dist/index.js.map +1 -1
- package/dist/squisq-player.global.js +1 -1
- package/dist/standalone-source.js +1 -1
- package/package.json +2 -2
- package/dist/BlockRenderer.d.ts +0 -37
- package/dist/BlockRenderer.d.ts.map +0 -1
- package/dist/BlockRenderer.js +0 -54
- package/dist/BlockRenderer.js.map +0 -1
- package/dist/CaptionOverlay.d.ts +0 -33
- package/dist/CaptionOverlay.d.ts.map +0 -1
- package/dist/CaptionOverlay.js +0 -44
- package/dist/CaptionOverlay.js.map +0 -1
- package/dist/DocControlsBottom.d.ts +0 -28
- package/dist/DocControlsBottom.d.ts.map +0 -1
- package/dist/DocControlsBottom.js +0 -27
- package/dist/DocControlsBottom.js.map +0 -1
- package/dist/DocControlsOverlay.d.ts +0 -28
- package/dist/DocControlsOverlay.d.ts.map +0 -1
- package/dist/DocControlsOverlay.js +0 -80
- package/dist/DocControlsOverlay.js.map +0 -1
- package/dist/DocControlsSidebar.d.ts +0 -27
- package/dist/DocControlsSidebar.d.ts.map +0 -1
- package/dist/DocControlsSidebar.js +0 -10
- package/dist/DocControlsSidebar.js.map +0 -1
- package/dist/DocControlsSlideshow.d.ts +0 -20
- package/dist/DocControlsSlideshow.d.ts.map +0 -1
- package/dist/DocControlsSlideshow.js +0 -69
- package/dist/DocControlsSlideshow.js.map +0 -1
- package/dist/DocPlayer.d.ts +0 -97
- package/dist/DocPlayer.d.ts.map +0 -1
- package/dist/DocPlayer.js +0 -657
- package/dist/DocPlayer.js.map +0 -1
- package/dist/DocPlayerWithSidebar.d.ts +0 -41
- package/dist/DocPlayerWithSidebar.d.ts.map +0 -1
- package/dist/DocPlayerWithSidebar.js +0 -69
- package/dist/DocPlayerWithSidebar.js.map +0 -1
- package/dist/DocProgressBar.d.ts +0 -31
- package/dist/DocProgressBar.d.ts.map +0 -1
- package/dist/DocProgressBar.js +0 -122
- package/dist/DocProgressBar.js.map +0 -1
- package/dist/InlineAudioPlayer.d.ts +0 -15
- package/dist/InlineAudioPlayer.d.ts.map +0 -1
- package/dist/InlineAudioPlayer.js +0 -22
- package/dist/InlineAudioPlayer.js.map +0 -1
- package/dist/InlineVideoPlayer.d.ts +0 -21
- package/dist/InlineVideoPlayer.d.ts.map +0 -1
- package/dist/InlineVideoPlayer.js +0 -29
- package/dist/InlineVideoPlayer.js.map +0 -1
- package/dist/LinearDocView.d.ts +0 -73
- package/dist/LinearDocView.d.ts.map +0 -1
- package/dist/LinearDocView.js +0 -451
- package/dist/LinearDocView.js.map +0 -1
- package/dist/MarkdownRenderer.d.ts +0 -32
- package/dist/MarkdownRenderer.d.ts.map +0 -1
- package/dist/MarkdownRenderer.js +0 -259
- package/dist/MarkdownRenderer.js.map +0 -1
- package/dist/SocialCaptionOverlay.d.ts +0 -27
- package/dist/SocialCaptionOverlay.d.ts.map +0 -1
- package/dist/SocialCaptionOverlay.js +0 -185
- package/dist/SocialCaptionOverlay.js.map +0 -1
- package/dist/__tests__/BlockRenderer.test.d.ts +0 -2
- package/dist/__tests__/BlockRenderer.test.d.ts.map +0 -1
- package/dist/__tests__/BlockRenderer.test.js +0 -82
- package/dist/__tests__/BlockRenderer.test.js.map +0 -1
- package/dist/__tests__/DocControlsSlideshow.test.d.ts +0 -2
- package/dist/__tests__/DocControlsSlideshow.test.d.ts.map +0 -1
- package/dist/__tests__/DocControlsSlideshow.test.js +0 -89
- package/dist/__tests__/DocControlsSlideshow.test.js.map +0 -1
- package/dist/__tests__/JsonView.test.d.ts +0 -2
- package/dist/__tests__/JsonView.test.d.ts.map +0 -1
- package/dist/__tests__/JsonView.test.js +0 -93
- package/dist/__tests__/JsonView.test.js.map +0 -1
- package/dist/__tests__/LinearDocView.test.d.ts +0 -2
- package/dist/__tests__/LinearDocView.test.d.ts.map +0 -1
- package/dist/__tests__/LinearDocView.test.js +0 -250
- package/dist/__tests__/LinearDocView.test.js.map +0 -1
- package/dist/__tests__/MarkdownRenderer.test.d.ts +0 -2
- package/dist/__tests__/MarkdownRenderer.test.d.ts.map +0 -1
- package/dist/__tests__/MarkdownRenderer.test.js +0 -208
- package/dist/__tests__/MarkdownRenderer.test.js.map +0 -1
- package/dist/__tests__/TableLayer.test.d.ts +0 -2
- package/dist/__tests__/TableLayer.test.d.ts.map +0 -1
- package/dist/__tests__/TableLayer.test.js +0 -121
- package/dist/__tests__/TableLayer.test.js.map +0 -1
- package/dist/__tests__/exports.test.d.ts +0 -2
- package/dist/__tests__/exports.test.d.ts.map +0 -1
- package/dist/__tests__/exports.test.js +0 -48
- package/dist/__tests__/exports.test.js.map +0 -1
- package/dist/hooks/AudioProvider.d.ts +0 -71
- package/dist/hooks/AudioProvider.d.ts.map +0 -1
- package/dist/hooks/AudioProvider.js +0 -52
- package/dist/hooks/AudioProvider.js.map +0 -1
- package/dist/hooks/MediaContext.d.ts +0 -35
- package/dist/hooks/MediaContext.d.ts.map +0 -1
- package/dist/hooks/MediaContext.js +0 -72
- package/dist/hooks/MediaContext.js.map +0 -1
- package/dist/hooks/index.d.ts +0 -6
- package/dist/hooks/index.d.ts.map +0 -1
- package/dist/hooks/index.js +0 -5
- package/dist/hooks/index.js.map +0 -1
- package/dist/hooks/useAudioSync.d.ts +0 -18
- package/dist/hooks/useAudioSync.d.ts.map +0 -1
- package/dist/hooks/useAudioSync.js +0 -340
- package/dist/hooks/useAudioSync.js.map +0 -1
- package/dist/hooks/useAutoSurface.d.ts +0 -11
- package/dist/hooks/useAutoSurface.d.ts.map +0 -1
- package/dist/hooks/useAutoSurface.js +0 -24
- package/dist/hooks/useAutoSurface.js.map +0 -1
- package/dist/hooks/useDocPlayback.d.ts +0 -47
- package/dist/hooks/useDocPlayback.d.ts.map +0 -1
- package/dist/hooks/useDocPlayback.js +0 -179
- package/dist/hooks/useDocPlayback.js.map +0 -1
- package/dist/hooks/useViewportOrientation.d.ts +0 -31
- package/dist/hooks/useViewportOrientation.d.ts.map +0 -1
- package/dist/hooks/useViewportOrientation.js +0 -92
- package/dist/hooks/useViewportOrientation.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/jsonView/JsonView.d.ts +0 -26
- package/dist/jsonView/JsonView.d.ts.map +0 -1
- package/dist/jsonView/JsonView.js +0 -12
- package/dist/jsonView/JsonView.js.map +0 -1
- package/dist/jsonView/RenderNode.d.ts +0 -22
- package/dist/jsonView/RenderNode.d.ts.map +0 -1
- package/dist/jsonView/RenderNode.js +0 -30
- package/dist/jsonView/RenderNode.js.map +0 -1
- package/dist/jsonView/index.d.ts +0 -3
- package/dist/jsonView/index.d.ts.map +0 -1
- package/dist/jsonView/index.js +0 -2
- package/dist/jsonView/index.js.map +0 -1
- package/dist/jsonView/useJsonViewTokens.d.ts +0 -14
- package/dist/jsonView/useJsonViewTokens.d.ts.map +0 -1
- package/dist/jsonView/useJsonViewTokens.js +0 -34
- package/dist/jsonView/useJsonViewTokens.js.map +0 -1
- package/dist/jsonView/viewers.d.ts +0 -30
- package/dist/jsonView/viewers.d.ts.map +0 -1
- package/dist/jsonView/viewers.js +0 -226
- package/dist/jsonView/viewers.js.map +0 -1
- package/dist/layers/ImageLayer.d.ts +0 -23
- package/dist/layers/ImageLayer.d.ts.map +0 -1
- package/dist/layers/ImageLayer.js +0 -104
- package/dist/layers/ImageLayer.js.map +0 -1
- package/dist/layers/MapLayer.d.ts +0 -29
- package/dist/layers/MapLayer.d.ts.map +0 -1
- package/dist/layers/MapLayer.js +0 -97
- package/dist/layers/MapLayer.js.map +0 -1
- package/dist/layers/ShapeLayer.d.ts +0 -20
- package/dist/layers/ShapeLayer.d.ts.map +0 -1
- package/dist/layers/ShapeLayer.js +0 -39
- package/dist/layers/ShapeLayer.js.map +0 -1
- package/dist/layers/TableLayer.d.ts +0 -23
- package/dist/layers/TableLayer.d.ts.map +0 -1
- package/dist/layers/TableLayer.js +0 -58
- package/dist/layers/TableLayer.js.map +0 -1
- package/dist/layers/TextLayer.d.ts +0 -23
- package/dist/layers/TextLayer.d.ts.map +0 -1
- package/dist/layers/TextLayer.js +0 -126
- package/dist/layers/TextLayer.js.map +0 -1
- package/dist/layers/VideoLayer.d.ts +0 -40
- package/dist/layers/VideoLayer.d.ts.map +0 -1
- package/dist/layers/VideoLayer.js +0 -105
- package/dist/layers/VideoLayer.js.map +0 -1
- package/dist/layers/index.d.ts +0 -6
- package/dist/layers/index.d.ts.map +0 -1
- package/dist/layers/index.js +0 -6
- package/dist/layers/index.js.map +0 -1
- package/dist/standalone-entry.d.ts +0 -69
- package/dist/standalone-entry.d.ts.map +0 -1
- package/dist/standalone-entry.js +0 -185
- package/dist/standalone-entry.js.map +0 -1
- package/dist/types.d.ts +0 -154
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -21
- package/dist/types.js.map +0 -1
- package/dist/utils/animationUtils.d.ts +0 -8
- package/dist/utils/animationUtils.d.ts.map +0 -1
- package/dist/utils/animationUtils.js +0 -8
- package/dist/utils/animationUtils.js.map +0 -1
- package/dist/utils/layerUtils.d.ts +0 -17
- package/dist/utils/layerUtils.d.ts.map +0 -1
- package/dist/utils/layerUtils.js +0 -37
- package/dist/utils/layerUtils.js.map +0 -1
- package/dist/utils/mapTileUtils.d.ts +0 -105
- package/dist/utils/mapTileUtils.d.ts.map +0 -1
- package/dist/utils/mapTileUtils.js +0 -268
- package/dist/utils/mapTileUtils.js.map +0 -1
|
@@ -1,268 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Map Tile Utilities
|
|
3
|
-
*
|
|
4
|
-
* Functions for fetching and composing map tiles from free/open-source providers.
|
|
5
|
-
* Converts lat/lng to tile coordinates and composites multiple tiles into a
|
|
6
|
-
* single image for SVG embedding.
|
|
7
|
-
*
|
|
8
|
-
* Supported Providers (all free with attribution):
|
|
9
|
-
* - terrain: OpenTopoMap (CC-BY-SA)
|
|
10
|
-
* - road: OpenStreetMap (ODbL)
|
|
11
|
-
* - satellite: ESRI World Imagery (free with attribution)
|
|
12
|
-
* - toner: Stadia/Stamen Toner (free tier)
|
|
13
|
-
* - watercolor: Stadia/Stamen Watercolor (free tier)
|
|
14
|
-
*
|
|
15
|
-
* See docs/MAP_TILES.md for full provider details and terms.
|
|
16
|
-
*/
|
|
17
|
-
/**
|
|
18
|
-
* Free tile providers for each map style.
|
|
19
|
-
* All require attribution to be displayed.
|
|
20
|
-
*/
|
|
21
|
-
export const TILE_PROVIDERS = {
|
|
22
|
-
terrain: {
|
|
23
|
-
url: 'https://tile.opentopomap.org/{z}/{x}/{y}.png',
|
|
24
|
-
attribution: 'Map: OpenTopoMap (CC-BY-SA)',
|
|
25
|
-
maxZoom: 17,
|
|
26
|
-
},
|
|
27
|
-
road: {
|
|
28
|
-
url: 'https://tile.openstreetmap.org/{z}/{x}/{y}.png',
|
|
29
|
-
attribution: '© OpenStreetMap contributors',
|
|
30
|
-
maxZoom: 19,
|
|
31
|
-
},
|
|
32
|
-
satellite: {
|
|
33
|
-
url: 'https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}',
|
|
34
|
-
attribution: 'Imagery: Esri, Maxar, Earthstar',
|
|
35
|
-
maxZoom: 18,
|
|
36
|
-
},
|
|
37
|
-
toner: {
|
|
38
|
-
url: 'https://tiles.stadiamaps.com/tiles/stamen_toner/{z}/{x}/{y}.png',
|
|
39
|
-
attribution: 'Map: Stadia Maps, Stamen Design',
|
|
40
|
-
maxZoom: 20,
|
|
41
|
-
},
|
|
42
|
-
watercolor: {
|
|
43
|
-
url: 'https://tiles.stadiamaps.com/tiles/stamen_watercolor/{z}/{x}/{y}.jpg',
|
|
44
|
-
attribution: 'Map: Stadia Maps, Stamen Design',
|
|
45
|
-
maxZoom: 16,
|
|
46
|
-
},
|
|
47
|
-
};
|
|
48
|
-
/**
|
|
49
|
-
* Convert latitude/longitude to tile coordinates at a given zoom level.
|
|
50
|
-
* Uses Web Mercator projection (EPSG:3857).
|
|
51
|
-
*/
|
|
52
|
-
export function latLngToTile(lat, lng, zoom) {
|
|
53
|
-
const n = Math.pow(2, zoom);
|
|
54
|
-
const x = Math.floor(((lng + 180) / 360) * n);
|
|
55
|
-
const latRad = (lat * Math.PI) / 180;
|
|
56
|
-
const y = Math.floor(((1 - Math.log(Math.tan(latRad) + 1 / Math.cos(latRad)) / Math.PI) / 2) * n);
|
|
57
|
-
return { x, y };
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Convert tile coordinates back to lat/lng (top-left corner of tile).
|
|
61
|
-
*/
|
|
62
|
-
export function tileToLatLng(x, y, zoom) {
|
|
63
|
-
const n = Math.pow(2, zoom);
|
|
64
|
-
const lng = (x / n) * 360 - 180;
|
|
65
|
-
const latRad = Math.atan(Math.sinh(Math.PI * (1 - (2 * y) / n)));
|
|
66
|
-
const lat = (latRad * 180) / Math.PI;
|
|
67
|
-
return { lat, lng };
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Get the pixel offset within a tile for a given lat/lng.
|
|
71
|
-
*/
|
|
72
|
-
export function getPixelOffset(lat, lng, zoom, tileSize = 256) {
|
|
73
|
-
const n = Math.pow(2, zoom);
|
|
74
|
-
const xTile = ((lng + 180) / 360) * n;
|
|
75
|
-
const latRad = (lat * Math.PI) / 180;
|
|
76
|
-
const yTile = ((1 - Math.log(Math.tan(latRad) + 1 / Math.cos(latRad)) / Math.PI) / 2) * n;
|
|
77
|
-
return {
|
|
78
|
-
x: (xTile - Math.floor(xTile)) * tileSize,
|
|
79
|
-
y: (yTile - Math.floor(yTile)) * tileSize,
|
|
80
|
-
};
|
|
81
|
-
}
|
|
82
|
-
/**
|
|
83
|
-
* Calculate which tiles are needed to cover a viewport centered on lat/lng.
|
|
84
|
-
*/
|
|
85
|
-
export function getTilesForViewport(centerLat, centerLng, zoom, viewportWidth, viewportHeight, tileSize = 256) {
|
|
86
|
-
const centerTile = latLngToTile(centerLat, centerLng, zoom);
|
|
87
|
-
const pixelOffset = getPixelOffset(centerLat, centerLng, zoom, tileSize);
|
|
88
|
-
// How many tiles we need in each direction
|
|
89
|
-
const tilesX = Math.ceil(viewportWidth / tileSize) + 1;
|
|
90
|
-
const tilesY = Math.ceil(viewportHeight / tileSize) + 1;
|
|
91
|
-
// Start tile offset
|
|
92
|
-
const startX = centerTile.x - Math.floor(tilesX / 2);
|
|
93
|
-
const startY = centerTile.y - Math.floor(tilesY / 2);
|
|
94
|
-
// Screen position of the center tile
|
|
95
|
-
const centerScreenX = viewportWidth / 2 - pixelOffset.x;
|
|
96
|
-
const centerScreenY = viewportHeight / 2 - pixelOffset.y;
|
|
97
|
-
const tiles = [];
|
|
98
|
-
for (let dy = 0; dy < tilesY; dy++) {
|
|
99
|
-
for (let dx = 0; dx < tilesX; dx++) {
|
|
100
|
-
const tileX = startX + dx;
|
|
101
|
-
const tileY = startY + dy;
|
|
102
|
-
const screenX = centerScreenX + (tileX - centerTile.x) * tileSize;
|
|
103
|
-
const screenY = centerScreenY + (tileY - centerTile.y) * tileSize;
|
|
104
|
-
tiles.push({ x: tileX, y: tileY, screenX, screenY });
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
return tiles;
|
|
108
|
-
}
|
|
109
|
-
/**
|
|
110
|
-
* Build a tile URL from the provider template.
|
|
111
|
-
*/
|
|
112
|
-
export function buildTileUrl(provider, x, y, z) {
|
|
113
|
-
return provider.url.replace('{z}', String(z)).replace('{x}', String(x)).replace('{y}', String(y));
|
|
114
|
-
}
|
|
115
|
-
/**
|
|
116
|
-
* Fetch a single tile image as an HTMLImageElement.
|
|
117
|
-
*/
|
|
118
|
-
async function fetchTileImage(url) {
|
|
119
|
-
return new Promise((resolve, reject) => {
|
|
120
|
-
const img = new Image();
|
|
121
|
-
img.crossOrigin = 'anonymous';
|
|
122
|
-
img.onload = () => resolve(img);
|
|
123
|
-
img.onerror = () => reject(new Error(`Failed to load tile: ${url}`));
|
|
124
|
-
img.src = url;
|
|
125
|
-
});
|
|
126
|
-
}
|
|
127
|
-
/**
|
|
128
|
-
* Compose map tiles into a single data URL image.
|
|
129
|
-
*
|
|
130
|
-
* This is the main function for generating map images for blocks.
|
|
131
|
-
* It fetches all needed tiles, composites them on a canvas, and
|
|
132
|
-
* returns a data URL that can be used in an SVG <image> element.
|
|
133
|
-
*/
|
|
134
|
-
export async function composeMapImage(options) {
|
|
135
|
-
const { center, zoom, style, width, height, markers = [], showAttribution = true } = options;
|
|
136
|
-
const provider = TILE_PROVIDERS[style];
|
|
137
|
-
const tileSize = provider.tileSize || 256;
|
|
138
|
-
const clampedZoom = Math.min(zoom, provider.maxZoom);
|
|
139
|
-
// Create canvas
|
|
140
|
-
const canvas = document.createElement('canvas');
|
|
141
|
-
canvas.width = width;
|
|
142
|
-
canvas.height = height;
|
|
143
|
-
const ctx = canvas.getContext('2d');
|
|
144
|
-
if (!ctx)
|
|
145
|
-
throw new Error('Failed to get canvas context');
|
|
146
|
-
// Fill with a neutral background in case tiles fail to load
|
|
147
|
-
ctx.fillStyle = style === 'toner' ? '#ffffff' : '#e5e7eb';
|
|
148
|
-
ctx.fillRect(0, 0, width, height);
|
|
149
|
-
// Get tiles needed
|
|
150
|
-
const tiles = getTilesForViewport(center.lat, center.lng, clampedZoom, width, height, tileSize);
|
|
151
|
-
// Fetch and draw tiles
|
|
152
|
-
const tilePromises = tiles.map(async (tile) => {
|
|
153
|
-
const url = buildTileUrl(provider, tile.x, tile.y, clampedZoom);
|
|
154
|
-
try {
|
|
155
|
-
const img = await fetchTileImage(url);
|
|
156
|
-
ctx.drawImage(img, tile.screenX, tile.screenY, tileSize, tileSize);
|
|
157
|
-
}
|
|
158
|
-
catch (err) {
|
|
159
|
-
// Tile failed to load - leave background color
|
|
160
|
-
console.warn(`Tile load failed: ${url}`, err);
|
|
161
|
-
}
|
|
162
|
-
});
|
|
163
|
-
await Promise.all(tilePromises);
|
|
164
|
-
// Draw markers
|
|
165
|
-
for (const marker of markers) {
|
|
166
|
-
drawMarker(ctx, marker, center, clampedZoom, width, height, tileSize);
|
|
167
|
-
}
|
|
168
|
-
// Draw attribution
|
|
169
|
-
if (showAttribution) {
|
|
170
|
-
drawAttribution(ctx, provider.attribution, width, height);
|
|
171
|
-
}
|
|
172
|
-
return canvas.toDataURL('image/png');
|
|
173
|
-
}
|
|
174
|
-
/**
|
|
175
|
-
* Draw a marker on the canvas.
|
|
176
|
-
*/
|
|
177
|
-
function drawMarker(ctx, marker, center, zoom, width, height, tileSize) {
|
|
178
|
-
// Calculate screen position of marker relative to center
|
|
179
|
-
const centerTile = latLngToTile(center.lat, center.lng, zoom);
|
|
180
|
-
const markerTile = latLngToTile(marker.lat, marker.lng, zoom);
|
|
181
|
-
const centerOffset = getPixelOffset(center.lat, center.lng, zoom, tileSize);
|
|
182
|
-
const markerOffset = getPixelOffset(marker.lat, marker.lng, zoom, tileSize);
|
|
183
|
-
const dx = (markerTile.x - centerTile.x) * tileSize + (markerOffset.x - centerOffset.x);
|
|
184
|
-
const dy = (markerTile.y - centerTile.y) * tileSize + (markerOffset.y - centerOffset.y);
|
|
185
|
-
const screenX = width / 2 + dx;
|
|
186
|
-
const screenY = height / 2 + dy;
|
|
187
|
-
// Draw marker
|
|
188
|
-
const color = marker.color || '#ef4444';
|
|
189
|
-
const icon = marker.icon || 'pin';
|
|
190
|
-
ctx.save();
|
|
191
|
-
if (icon === 'pin') {
|
|
192
|
-
// Draw pin shape
|
|
193
|
-
ctx.fillStyle = color;
|
|
194
|
-
ctx.beginPath();
|
|
195
|
-
ctx.arc(screenX, screenY - 12, 8, Math.PI, 0, false);
|
|
196
|
-
ctx.lineTo(screenX, screenY);
|
|
197
|
-
ctx.closePath();
|
|
198
|
-
ctx.fill();
|
|
199
|
-
// White dot in center
|
|
200
|
-
ctx.fillStyle = '#ffffff';
|
|
201
|
-
ctx.beginPath();
|
|
202
|
-
ctx.arc(screenX, screenY - 12, 3, 0, Math.PI * 2);
|
|
203
|
-
ctx.fill();
|
|
204
|
-
}
|
|
205
|
-
else if (icon === 'circle') {
|
|
206
|
-
ctx.fillStyle = color;
|
|
207
|
-
ctx.beginPath();
|
|
208
|
-
ctx.arc(screenX, screenY, 8, 0, Math.PI * 2);
|
|
209
|
-
ctx.fill();
|
|
210
|
-
ctx.strokeStyle = '#ffffff';
|
|
211
|
-
ctx.lineWidth = 2;
|
|
212
|
-
ctx.stroke();
|
|
213
|
-
}
|
|
214
|
-
else if (icon === 'star') {
|
|
215
|
-
ctx.fillStyle = color;
|
|
216
|
-
drawStar(ctx, screenX, screenY, 5, 10, 5);
|
|
217
|
-
ctx.fill();
|
|
218
|
-
}
|
|
219
|
-
// Draw label if present
|
|
220
|
-
if (marker.label) {
|
|
221
|
-
ctx.fillStyle = '#1f2937';
|
|
222
|
-
ctx.font = 'bold 12px system-ui, sans-serif';
|
|
223
|
-
ctx.textAlign = 'center';
|
|
224
|
-
ctx.fillText(marker.label, screenX, screenY + 20);
|
|
225
|
-
}
|
|
226
|
-
ctx.restore();
|
|
227
|
-
}
|
|
228
|
-
/**
|
|
229
|
-
* Draw a star shape.
|
|
230
|
-
*/
|
|
231
|
-
function drawStar(ctx, cx, cy, spikes, outerRadius, innerRadius) {
|
|
232
|
-
let rot = (Math.PI / 2) * 3;
|
|
233
|
-
const step = Math.PI / spikes;
|
|
234
|
-
ctx.beginPath();
|
|
235
|
-
ctx.moveTo(cx, cy - outerRadius);
|
|
236
|
-
for (let i = 0; i < spikes; i++) {
|
|
237
|
-
ctx.lineTo(cx + Math.cos(rot) * outerRadius, cy + Math.sin(rot) * outerRadius);
|
|
238
|
-
rot += step;
|
|
239
|
-
ctx.lineTo(cx + Math.cos(rot) * innerRadius, cy + Math.sin(rot) * innerRadius);
|
|
240
|
-
rot += step;
|
|
241
|
-
}
|
|
242
|
-
ctx.lineTo(cx, cy - outerRadius);
|
|
243
|
-
ctx.closePath();
|
|
244
|
-
}
|
|
245
|
-
/**
|
|
246
|
-
* Draw attribution text on the canvas.
|
|
247
|
-
*/
|
|
248
|
-
function drawAttribution(ctx, text, width, height) {
|
|
249
|
-
ctx.save();
|
|
250
|
-
// Semi-transparent background
|
|
251
|
-
ctx.fillStyle = 'rgba(255, 255, 255, 0.8)';
|
|
252
|
-
const padding = 4;
|
|
253
|
-
ctx.font = '10px system-ui, sans-serif';
|
|
254
|
-
const textWidth = ctx.measureText(text).width;
|
|
255
|
-
ctx.fillRect(width - textWidth - padding * 2 - 4, height - 16, textWidth + padding * 2, 14);
|
|
256
|
-
// Text
|
|
257
|
-
ctx.fillStyle = '#374151';
|
|
258
|
-
ctx.textAlign = 'right';
|
|
259
|
-
ctx.fillText(text, width - padding - 4, height - 5);
|
|
260
|
-
ctx.restore();
|
|
261
|
-
}
|
|
262
|
-
/**
|
|
263
|
-
* Get attribution text for a map style.
|
|
264
|
-
*/
|
|
265
|
-
export function getAttribution(style) {
|
|
266
|
-
return TILE_PROVIDERS[style].attribution;
|
|
267
|
-
}
|
|
268
|
-
//# sourceMappingURL=mapTileUtils.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mapTileUtils.js","sourceRoot":"","sources":["../../src/utils/mapTileUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAkBH;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAuC;IAChE,OAAO,EAAE;QACP,GAAG,EAAE,8CAA8C;QACnD,WAAW,EAAE,6BAA6B;QAC1C,OAAO,EAAE,EAAE;KACZ;IACD,IAAI,EAAE;QACJ,GAAG,EAAE,gDAAgD;QACrD,WAAW,EAAE,8BAA8B;QAC3C,OAAO,EAAE,EAAE;KACZ;IACD,SAAS,EAAE;QACT,GAAG,EAAE,+FAA+F;QACpG,WAAW,EAAE,iCAAiC;QAC9C,OAAO,EAAE,EAAE;KACZ;IACD,KAAK,EAAE;QACL,GAAG,EAAE,iEAAiE;QACtE,WAAW,EAAE,iCAAiC;QAC9C,OAAO,EAAE,EAAE;KACZ;IACD,UAAU,EAAE;QACV,GAAG,EAAE,sEAAsE;QAC3E,WAAW,EAAE,iCAAiC;QAC9C,OAAO,EAAE,EAAE;KACZ;CACF,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,GAAW,EAAE,GAAW,EAAE,IAAY;IACjE,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAC5B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;IACrC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAClG,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,CAAS,EAAE,CAAS,EAAE,IAAY;IAC7D,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAC5B,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;IAChC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACjE,MAAM,GAAG,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;IACrC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAC5B,GAAW,EACX,GAAW,EACX,IAAY,EACZ,WAAmB,GAAG;IAEtB,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAC5B,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;IACrC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAE1F,OAAO;QACL,CAAC,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,QAAQ;QACzC,CAAC,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,QAAQ;KAC1C,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,SAAiB,EACjB,SAAiB,EACjB,IAAY,EACZ,aAAqB,EACrB,cAAsB,EACtB,WAAmB,GAAG;IAEtB,MAAM,UAAU,GAAG,YAAY,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IAC5D,MAAM,WAAW,GAAG,cAAc,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IAEzE,2CAA2C;IAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IACvD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAExD,oBAAoB;IACpB,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAErD,qCAAqC;IACrC,MAAM,aAAa,GAAG,aAAa,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;IACxD,MAAM,aAAa,GAAG,cAAc,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;IAEzD,MAAM,KAAK,GAAsE,EAAE,CAAC;IAEpF,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;QACnC,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;YACnC,MAAM,KAAK,GAAG,MAAM,GAAG,EAAE,CAAC;YAC1B,MAAM,KAAK,GAAG,MAAM,GAAG,EAAE,CAAC;YAC1B,MAAM,OAAO,GAAG,aAAa,GAAG,CAAC,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;YAClE,MAAM,OAAO,GAAG,aAAa,GAAG,CAAC,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;YAElE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,QAAsB,EAAE,CAAS,EAAE,CAAS,EAAE,CAAS;IAClF,OAAO,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACpG,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,cAAc,CAAC,GAAW;IACvC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,GAAG,CAAC,WAAW,GAAG,WAAW,CAAC;QAC9B,GAAG,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAChC,GAAG,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,wBAAwB,GAAG,EAAE,CAAC,CAAC,CAAC;QACrE,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC;IAChB,CAAC,CAAC,CAAC;AACL,CAAC;AAsBD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAA0B;IAC9D,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,GAAG,EAAE,EAAE,eAAe,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IAE7F,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,IAAI,GAAG,CAAC;IAC1C,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IAErD,gBAAgB;IAChB,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAChD,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAE1D,4DAA4D;IAC5D,GAAG,CAAC,SAAS,GAAG,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1D,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAElC,mBAAmB;IACnB,MAAM,KAAK,GAAG,mBAAmB,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAEhG,uBAAuB;IACvB,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QAC5C,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;QAChE,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC;YACtC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACrE,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,+CAA+C;YAC/C,OAAO,CAAC,IAAI,CAAC,qBAAqB,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC;QAChD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAEhC,eAAe;IACf,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IACxE,CAAC;IAED,mBAAmB;IACnB,IAAI,eAAe,EAAE,CAAC;QACpB,eAAe,CAAC,GAAG,EAAE,QAAQ,CAAC,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAC5D,CAAC;IAED,OAAO,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,SAAS,UAAU,CACjB,GAA6B,EAC7B,MAAiB,EACjB,MAAoC,EACpC,IAAY,EACZ,KAAa,EACb,MAAc,EACd,QAAgB;IAEhB,yDAAyD;IACzD,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC9D,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAE9D,MAAM,YAAY,GAAG,cAAc,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC5E,MAAM,YAAY,GAAG,cAAc,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IAE5E,MAAM,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,CAAC,YAAY,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;IACxF,MAAM,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,CAAC,YAAY,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;IAExF,MAAM,OAAO,GAAG,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC;IAC/B,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC;IAEhC,cAAc;IACd,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,SAAS,CAAC;IACxC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,KAAK,CAAC;IAElC,GAAG,CAAC,IAAI,EAAE,CAAC;IAEX,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;QACnB,iBAAiB;QACjB,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC;QACtB,GAAG,CAAC,SAAS,EAAE,CAAC;QAChB,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;QACrD,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC7B,GAAG,CAAC,SAAS,EAAE,CAAC;QAChB,GAAG,CAAC,IAAI,EAAE,CAAC;QAEX,sBAAsB;QACtB,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;QAC1B,GAAG,CAAC,SAAS,EAAE,CAAC;QAChB,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAClD,GAAG,CAAC,IAAI,EAAE,CAAC;IACb,CAAC;SAAM,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC;QACtB,GAAG,CAAC,SAAS,EAAE,CAAC;QAChB,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC7C,GAAG,CAAC,IAAI,EAAE,CAAC;QACX,GAAG,CAAC,WAAW,GAAG,SAAS,CAAC;QAC5B,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC;QAClB,GAAG,CAAC,MAAM,EAAE,CAAC;IACf,CAAC;SAAM,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QAC3B,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC;QACtB,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAC1C,GAAG,CAAC,IAAI,EAAE,CAAC;IACb,CAAC;IAED,wBAAwB;IACxB,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;QAC1B,GAAG,CAAC,IAAI,GAAG,iCAAiC,CAAC;QAC7C,GAAG,CAAC,SAAS,GAAG,QAAQ,CAAC;QACzB,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,GAAG,CAAC,OAAO,EAAE,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,QAAQ,CACf,GAA6B,EAC7B,EAAU,EACV,EAAU,EACV,MAAc,EACd,WAAmB,EACnB,WAAmB;IAEnB,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC;IAE9B,GAAG,CAAC,SAAS,EAAE,CAAC;IAChB,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,GAAG,WAAW,CAAC,CAAC;IAEjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAChC,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,WAAW,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC;QAC/E,GAAG,IAAI,IAAI,CAAC;QACZ,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,WAAW,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC;QAC/E,GAAG,IAAI,IAAI,CAAC;IACd,CAAC;IAED,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,GAAG,WAAW,CAAC,CAAC;IACjC,GAAG,CAAC,SAAS,EAAE,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CACtB,GAA6B,EAC7B,IAAY,EACZ,KAAa,EACb,MAAc;IAEd,GAAG,CAAC,IAAI,EAAE,CAAC;IAEX,8BAA8B;IAC9B,GAAG,CAAC,SAAS,GAAG,0BAA0B,CAAC;IAC3C,MAAM,OAAO,GAAG,CAAC,CAAC;IAClB,GAAG,CAAC,IAAI,GAAG,4BAA4B,CAAC;IACxC,MAAM,SAAS,GAAG,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;IAC9C,GAAG,CAAC,QAAQ,CAAC,KAAK,GAAG,SAAS,GAAG,OAAO,GAAG,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,EAAE,EAAE,SAAS,GAAG,OAAO,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;IAE5F,OAAO;IACP,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;IAC1B,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC;IACxB,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,GAAG,OAAO,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC;IAEpD,GAAG,CAAC,OAAO,EAAE,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,KAAmB;IAChD,OAAO,cAAc,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC;AAC3C,CAAC"}
|