leaflet-city-mapper 0.0.6 → 0.0.7

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 (241) hide show
  1. package/README.md +10 -5
  2. package/dist/leaflet-city-mapper-src.js +7059 -6566
  3. package/dist/leaflet-city-mapper-src.js.map +4 -4
  4. package/dist/leaflet-city-mapper-worker-src.js +2766 -0
  5. package/dist/leaflet-city-mapper-worker-src.js.map +4 -4
  6. package/dist/leaflet-city-mapper-worker.js +1 -1
  7. package/dist/leaflet-city-mapper-worker.js.map +4 -4
  8. package/dist/leaflet-city-mapper.js +5 -3
  9. package/dist/leaflet-city-mapper.js.map +4 -4
  10. package/libs/leaflet.js +1 -1
  11. package/package.json +1 -1
  12. package/src/camera/setBearing.js +5 -0
  13. package/src/camera/setPitch.js +5 -0
  14. package/src/cog/initCog.js +2 -2
  15. package/src/core/gridlayerGetTiledPixelBounds.js +37 -4
  16. package/src/core/markerSetPos.js +1 -1
  17. package/src/core/popupGetEvents.js +1 -1
  18. package/src/core/popupUpdatePosition.js +8 -8
  19. package/src/core/tooltipGetEvents.js +1 -1
  20. package/src/core/tooltipSetPosition.js +2 -2
  21. package/src/geometry/appendNativeTriangle.js +2 -2
  22. package/src/geometry/createModelGeometry.js +2 -9
  23. package/src/geometry/dashedSegment.js +10 -5
  24. package/src/geometry/disk.js +1 -1
  25. package/src/geometry/fillNativePolygon.js +20 -0
  26. package/src/geometry/lineJoin.js +2 -2
  27. package/src/geometry/markerQuadCorners.js +6 -0
  28. package/src/geometry/nativeGeometry.js +1 -1
  29. package/src/geometry/polygon.js +4 -10
  30. package/src/geometry/segment.js +4 -3
  31. package/src/globals/colorTexture.js +6 -0
  32. package/src/globals/depthTexture.js +1 -0
  33. package/src/globals/drawMeshEntry.js +1 -1
  34. package/src/globals/meshPipeline.js +1 -0
  35. package/src/globals/mvtTextDecoder.js +1 -0
  36. package/src/globals/nativeScalableStyleKeys.js +1 -0
  37. package/src/globals/scenePass.js +1 -0
  38. package/src/globals/vectorStyleNamedColors.js +8 -0
  39. package/src/globals/vectorTileEvents.js +1 -0
  40. package/src/globals/workerCogSource.js +1 -0
  41. package/src/gpu/mountRenderer.js +4 -11
  42. package/src/gpu/releaseRenderer.js +1 -0
  43. package/src/index.js +6 -12
  44. package/src/materials/createProgramUniforms.js +1 -0
  45. package/src/models/loadModel.js +6 -10
  46. package/src/models/loadModelResources.js +2 -8
  47. package/src/models/modelNode.js +3 -7
  48. package/src/models/prepareModel.js +19 -0
  49. package/src/models/prepareModelGeometry.js +25 -0
  50. package/src/models/prepareModelPrimitive.js +17 -0
  51. package/src/mvt/addMvtCrossings.js +17 -0
  52. package/src/mvt/appendMvtBandTriangles.js +31 -0
  53. package/src/mvt/appendMvtCoordinates.js +11 -0
  54. package/src/mvt/appendMvtPolygonTriangles.js +19 -0
  55. package/src/mvt/beginMvtPath.js +9 -0
  56. package/src/mvt/closeMvtPath.js +7 -0
  57. package/src/mvt/collectMvtEdges.js +19 -0
  58. package/src/mvt/createMvtReader.js +7 -0
  59. package/src/mvt/decodeVectorTile.js +32 -0
  60. package/src/mvt/expectMvtWire.js +3 -0
  61. package/src/mvt/finishMvtPath.js +5 -0
  62. package/src/mvt/finiteMvtCoordinate.js +7 -0
  63. package/src/mvt/groupMvtPolygons.js +25 -0
  64. package/src/mvt/isMvtFallbackError.js +6 -0
  65. package/src/mvt/mergeMvtActiveEdges.js +9 -0
  66. package/src/mvt/mvtEdgeX.js +4 -0
  67. package/src/mvt/mvtPathsVertices.js +8 -0
  68. package/src/mvt/mvtPolygonPaths.js +12 -0
  69. package/src/mvt/numericMvtValue.js +4 -0
  70. package/src/mvt/readMvtFeature.js +34 -0
  71. package/src/mvt/readMvtField.js +8 -0
  72. package/src/mvt/readMvtGeometry.js +29 -0
  73. package/src/mvt/readMvtInteger.js +12 -0
  74. package/src/mvt/readMvtKnownValue.js +21 -0
  75. package/src/mvt/readMvtLayer.js +31 -0
  76. package/src/mvt/readMvtMessage.js +10 -0
  77. package/src/mvt/readMvtNumber.js +9 -0
  78. package/src/mvt/readMvtNumbers.js +11 -0
  79. package/src/mvt/readMvtString.js +6 -0
  80. package/src/mvt/readMvtValue.js +19 -0
  81. package/src/mvt/skipMvtField.js +14 -0
  82. package/src/mvt/sortMvtActiveEdges.js +15 -0
  83. package/src/mvt/sortedMvtLevels.js +22 -0
  84. package/src/mvt/takeMvtBytes.js +8 -0
  85. package/src/mvt/tessellateVectorRings.js +19 -0
  86. package/src/mvt/triangulateVectorRings.js +19 -0
  87. package/src/native/beforeNativeRender.js +6 -0
  88. package/src/native/canScaleNativeStyle.js +17 -0
  89. package/src/native/createNativeMesh.js +31 -0
  90. package/src/native/disposeNativeLayer.js +1 -1
  91. package/src/native/getGridTerrainTile.js +34 -0
  92. package/src/native/gridTerrainElevation.js +30 -0
  93. package/src/native/loadGridTerrain.js +26 -0
  94. package/src/native/nativeLayer.js +2 -2
  95. package/src/native/nativeLayerMethod.js +5 -14
  96. package/src/native/nativeProgram.js +20 -0
  97. package/src/native/nativeVectorGeometry.js +23 -0
  98. package/src/native/orderNativeGridLayer.js +14 -0
  99. package/src/native/putNativeMesh.js +15 -21
  100. package/src/native/refreshNativeEvent.js +13 -2
  101. package/src/native/refreshNativeLayer.js +1 -0
  102. package/src/native/syncGridLayer.js +48 -3
  103. package/src/native/syncNativeStrokeAnchors.js +12 -0
  104. package/src/native/syncNativeStrokeZoom.js +29 -0
  105. package/src/native/syncVectorLayer.js +15 -13
  106. package/src/native/terrainGridMesh.js +34 -0
  107. package/src/native/updateNativeStrokeRadius.js +9 -0
  108. package/src/projections/displayContainerPoint.js +23 -3
  109. package/src/projections/groundBounds.js +2 -2
  110. package/src/projections/localPixel.js +7 -2
  111. package/src/projections/localPixelForGeometry.js +4 -2
  112. package/src/projections/projectCameraPoint.js +6 -5
  113. package/src/rendering/collectVisibleMesh.js +5 -2
  114. package/src/rendering/drawSceneMeshes.js +3 -1
  115. package/src/rendering/nativeStrokeExpansion.js +4 -0
  116. package/src/rendering/prepareMeshUniforms.js +2 -0
  117. package/src/rendering/resizeRenderer.js +9 -0
  118. package/src/scene/initializerFor.js +3 -5
  119. package/src/scene/layerInitialize.js +14 -12
  120. package/src/scene/resolveNextInitialization.js +1 -1
  121. package/src/shaders/materialShaders.js +1 -0
  122. package/src/shaders/materialVertexShader.js +7 -2
  123. package/src/shaders/nativeStrokeShader.js +6 -0
  124. package/src/sources/attachAreaMesh.js +5 -6
  125. package/src/sources/buildArea.js +4 -5
  126. package/src/sources/buildAreaFeature.js +3 -19
  127. package/src/sources/initVectorTiles.js +15 -0
  128. package/src/sources/isVectorTileSource.js +4 -0
  129. package/src/sources/readyVectorTiles.js +10 -0
  130. package/src/sources/sourceAreaContext.js +1 -6
  131. package/src/sunlight/createSun.js +0 -1
  132. package/src/terrain/initTerrain.js +7 -1
  133. package/src/terrain/loadTerrain.js +4 -1
  134. package/src/terrain/mapElevationOf.js +5 -1
  135. package/src/terrain/onTerrainAdd.js +11 -1
  136. package/src/terrain/onTerrainRemove.js +10 -1
  137. package/src/utils/yieldTask.js +5 -0
  138. package/src/vector-style/appendQuotedStyleCharacter.js +22 -0
  139. package/src/vector-style/arrayContainsRange.js +8 -0
  140. package/src/vector-style/evaluateBoolean.js +18 -0
  141. package/src/vector-style/evaluateCoalesceOrCase.js +21 -0
  142. package/src/vector-style/evaluateComparison.js +16 -0
  143. package/src/vector-style/evaluateIExpression.js +8 -0
  144. package/src/vector-style/evaluateInput.js +6 -0
  145. package/src/vector-style/evaluateInterpolate.js +27 -0
  146. package/src/vector-style/evaluateMatch.js +12 -0
  147. package/src/vector-style/evaluateMath.js +14 -0
  148. package/src/vector-style/evaluateMembership.js +18 -0
  149. package/src/vector-style/evaluateNegation.js +13 -0
  150. package/src/vector-style/evaluatePrimitive.js +9 -0
  151. package/src/vector-style/evaluateStep.js +11 -0
  152. package/src/vector-style/evaluateStyle.js +33 -0
  153. package/src/vector-style/evaluateToExpression.js +14 -0
  154. package/src/vector-style/fillVectorPaint.js +17 -0
  155. package/src/vector-style/lineVectorPaint.js +21 -0
  156. package/src/vector-style/parseFunctionalColor.js +14 -0
  157. package/src/vector-style/parseHexColor.js +13 -0
  158. package/src/vector-style/parseVectorStyle.js +13 -0
  159. package/src/vector-style/readPaintValue.js +6 -0
  160. package/src/vector-style/removeTrailingCommas.js +12 -0
  161. package/src/vector-style/scaleDashArray.js +13 -0
  162. package/src/vector-style/skipStyleComment.js +9 -0
  163. package/src/vector-style/stripStyleComments.js +21 -0
  164. package/src/vector-style/styleColor.js +11 -0
  165. package/src/vector-style/validateVectorLayers.js +10 -0
  166. package/src/vector-style/vectorPaint.js +8 -0
  167. package/src/vector-style/visibleStyle.js +7 -0
  168. package/src/vector-tiles/appendVectorBatch.js +22 -0
  169. package/src/vector-tiles/attachVectorTileBatch.js +17 -0
  170. package/src/vector-tiles/attachVectorTileBatches.js +15 -0
  171. package/src/vector-tiles/compareVectorLabelPriority.js +3 -0
  172. package/src/vector-tiles/compareVectorTileDistance.js +3 -0
  173. package/src/vector-tiles/configureVectorTileLayer.js +28 -0
  174. package/src/vector-tiles/forwardVectorTileError.js +5 -0
  175. package/src/vector-tiles/loadVectorSprite.js +5 -0
  176. package/src/vector-tiles/loadVectorTile.js +36 -0
  177. package/src/vector-tiles/onVectorTileAdd.js +39 -0
  178. package/src/vector-tiles/onVectorTileMessage.js +10 -0
  179. package/src/vector-tiles/onVectorTileRemove.js +20 -0
  180. package/src/vector-tiles/onVectorTileWorkerError.js +11 -0
  181. package/src/vector-tiles/paintVectorTileBatch.js +12 -0
  182. package/src/vector-tiles/prepareVectorLabel.js +43 -0
  183. package/src/vector-tiles/prepareVectorStyleLayer.js +30 -0
  184. package/src/vector-tiles/prepareVectorTile.js +16 -0
  185. package/src/vector-tiles/projectVectorPaths.js +15 -0
  186. package/src/vector-tiles/projectVectorPoint.js +6 -0
  187. package/src/vector-tiles/projectVectorTriangles.js +18 -0
  188. package/src/vector-tiles/pruneVectorTiles.js +11 -0
  189. package/src/vector-tiles/pumpVectorTiles.js +18 -0
  190. package/src/vector-tiles/readTileJSON.js +17 -0
  191. package/src/vector-tiles/readVectorStyle.js +17 -0
  192. package/src/vector-tiles/refreshVectorTiles.js +5 -0
  193. package/src/vector-tiles/reserveVectorLabelCells.js +6 -0
  194. package/src/vector-tiles/retireVectorTileGroup.js +13 -0
  195. package/src/vector-tiles/revokeVectorWorkerUrl.js +9 -0
  196. package/src/vector-tiles/rotateVectorLabel.js +12 -0
  197. package/src/vector-tiles/rotateVectorLabels.js +6 -0
  198. package/src/vector-tiles/simplifyVectorPath.js +21 -0
  199. package/src/vector-tiles/updateVectorLabelMarker.js +27 -0
  200. package/src/vector-tiles/updateVectorTileLabels.js +28 -0
  201. package/src/vector-tiles/updateVectorTilePaint.js +20 -0
  202. package/src/vector-tiles/updateVectorTiles.js +29 -0
  203. package/src/vector-tiles/validateVectorTileZooms.js +6 -0
  204. package/src/vector-tiles/vectorFeaturePaint.js +15 -0
  205. package/src/vector-tiles/vectorFeaturePaths.js +16 -0
  206. package/src/vector-tiles/vectorFeatureZoom.js +8 -0
  207. package/src/vector-tiles/vectorLabelAnchors.js +24 -0
  208. package/src/vector-tiles/vectorLabelCandidates.js +11 -0
  209. package/src/vector-tiles/vectorLabelCells.js +26 -0
  210. package/src/vector-tiles/vectorLabelIcon.js +30 -0
  211. package/src/vector-tiles/vectorLabelProperty.js +3 -0
  212. package/src/vector-tiles/vectorSpriteIcon.js +11 -0
  213. package/src/vector-tiles/vectorStraightRun.js +14 -0
  214. package/src/vector-tiles/vectorStyleDependencies.js +15 -0
  215. package/src/vector-tiles/vectorStyleValue.js +5 -0
  216. package/src/vector-tiles/vectorStyleZoom.js +6 -0
  217. package/src/vector-tiles/vectorTileAwaited.js +9 -0
  218. package/src/vector-tiles/vectorTileOverlaps.js +4 -0
  219. package/src/vector-tiles/vectorTilePaint.js +10 -0
  220. package/src/vector-tiles/vectorTileSettings.js +17 -0
  221. package/src/vector-tiles/vectorTilesIdle.js +3 -0
  222. package/src/vector-tiles/vectorTolerance.js +4 -0
  223. package/src/vector-tiles/wrapVectorLabel.js +11 -0
  224. package/src/weakmaps/nativeProgramsByRenderer.js +1 -0
  225. package/src/weakmaps/streamTerrainByLayer.js +1 -0
  226. package/src/weakmaps/streamTerrainByMap.js +1 -0
  227. package/src/weakmaps/vectorTileOptionsByLayer.js +1 -0
  228. package/src/weakmaps/vectorWorkerByLayer.js +1 -0
  229. package/src/weakmaps/workerMapByLayer.js +1 -0
  230. package/src/workers/buildAreaInWorker.js +3 -27
  231. package/src/workers/cogWorker.js +21 -0
  232. package/src/workers/createGeometryWorker.js +1 -0
  233. package/src/workers/geometryWorker.js +15 -0
  234. package/src/workers/getCogInWorker.js +7 -0
  235. package/src/workers/modelWorker.js +10 -0
  236. package/src/workers/openCogInWorker.js +14 -0
  237. package/src/workers/runSourceWorker.js +32 -0
  238. package/src/workers/settleGeometryWorker.js +1 -1
  239. package/src/workers/vectorTileWorker.js +10 -0
  240. package/src/geometry/buildExtrudedPolygon.js +0 -10
  241. package/src/sources/buildAreaPoint.js +0 -7
@@ -0,0 +1,10 @@
1
+ import { vectorPaint } from '../vector-style/vectorPaint.js';
2
+ import { visibleStyle } from '../vector-style/visibleStyle.js';
3
+
4
+ export function vectorTilePaint(batch, zoom) {
5
+ const paint = vectorPaint(batch.entry, batch.properties, zoom);
6
+ if (!visibleStyle(batch.entry, batch.properties, zoom)) {
7
+ paint.opacity = 0; paint.fillOpacity = 0;
8
+ }
9
+ return paint;
10
+ }
@@ -0,0 +1,17 @@
1
+ import { readTileJSON } from './readTileJSON.js';
2
+ import { readVectorStyle } from './readVectorStyle.js';
3
+ import { validateVectorTileZooms } from './validateVectorTileZooms.js';
4
+
5
+ export async function vectorTileSettings(options) {
6
+ if (!options || typeof options !== 'object') throw /* alloc */ new TypeError('Vector tiles require source options');
7
+ if (options.tileJSON) options = await readTileJSON(options);
8
+ let { url, style, minNativeZoom = 0, maxNativeZoom = 14, maxZoom = 19 } = options;
9
+ let key;
10
+ if (typeof url === 'string') url = url.replaceAll(/%7B([zxy])%7D/gi, '{$1}');
11
+ for (key of /* alloc */ ['{z}', '{x}', '{y}']) {
12
+ if (typeof url !== 'string' || !url.includes(key)) throw /* alloc */ new Error('Vector tiles require an XYZ URL template');
13
+ }
14
+ validateVectorTileZooms(minNativeZoom, maxNativeZoom, maxZoom);
15
+ style = await readVectorStyle(style);
16
+ return /* alloc */ { ...options, url, style, minNativeZoom, maxNativeZoom, maxZoom };
17
+ }
@@ -0,0 +1,3 @@
1
+ export function vectorTilesIdle(layer, session) {
2
+ return layer.session === session && performance.now() - (layer.changedAt || 0) >= 180;
3
+ }
@@ -0,0 +1,4 @@
1
+ /** Simplification tolerance in tile units: about 0.7 screen pixels at the displayed scale. */
2
+ export function vectorTolerance(job, layer) {
3
+ return layer.extent / 256 / 2 ** Math.max(-1, job.mapZoom - job.coords.z) * 0.7;
4
+ }
@@ -0,0 +1,11 @@
1
+ /** Greedy word wrap at 10 ems (MapLibre's default text-max-width), estimating glyph width at 0.52 em. */
2
+ export function wrapVectorLabel(text) {
3
+ const limit = Math.floor(10 / 0.52), lines = /* alloc */ [];
4
+ let line = '', word;
5
+ for (word of text.split(' ')) {
6
+ if (line && Array.from(`${line} ${word}`).length > limit) { lines.push(line); line = word; }
7
+ else line = line ? `${line} ${word}` : word;
8
+ }
9
+ lines.push(line);
10
+ return lines;
11
+ }
@@ -0,0 +1 @@
1
+ export const nativeProgramsByRenderer = new WeakMap();
@@ -0,0 +1 @@
1
+ export const streamTerrainByLayer = new WeakMap();
@@ -0,0 +1 @@
1
+ export const streamTerrainByMap = new WeakMap();
@@ -0,0 +1 @@
1
+ export const vectorTileOptionsByLayer = new WeakMap();
@@ -0,0 +1 @@
1
+ export const vectorWorkerByLayer = new WeakMap();
@@ -0,0 +1 @@
1
+ export const workerMapByLayer = new WeakMap();
@@ -1,40 +1,16 @@
1
- import { geometryWorkerUrl } from '../globals/geometryWorkerUrl.js';
2
- import { startGeometryWorker } from './startGeometryWorker.js';
3
- import { acquireGeometryWorker } from './acquireGeometryWorker.js';
1
+ import { runSourceWorker } from './runSourceWorker.js';
4
2
 
5
3
  export async function buildAreaInWorker(context, signal) {
6
- const entry = acquireGeometryWorker(context.map || context.backend._map, context.backend.options.workerUrl || geometryWorkerUrl);
7
- const { worker, pool } = entry;
8
- const task = /* alloc */ {
9
- worker, signal,
10
- input: /* alloc */ { jobs: context.jobs, nightLight: Boolean(context.backend.options.nightLight) },
11
- };
12
- entry.task = task;
13
- let completed = false;
14
4
  try {
15
- const data = await /* alloc */ new Promise(startGeometryWorker.bind(null, task));
5
+ const data = await runSourceWorker(context.map || context.backend._map, context.backend.options.workerUrl,
6
+ /* alloc */ { jobs: context.jobs, nightLight: Boolean(context.backend.options.nightLight) }, signal);
16
7
  let i;
17
8
  for (i = 0; i < data.ranges.length; i++) Object.assign(context.featureFaces[i], data.ranges[i]);
18
9
  context.positions = data.positions;
19
10
  context.uvs = data.uvs;
20
11
  context.lights = data.lights;
21
12
  context.preparedGeometry = data;
22
- completed = true;
23
13
  } finally {
24
- worker.removeEventListener('message', task.onEvent);
25
- worker.removeEventListener('error', task.onEvent);
26
- worker.removeEventListener('messageerror', task.onEvent);
27
- signal.removeEventListener('abort', task.onEvent);
28
- entry.task = null;
29
- if (completed && pool && !pool.closed && !signal.aborted) pool.idle.push(entry);
30
- else {
31
- if (!entry.closed) worker.terminate();
32
- if (pool) pool.entries.delete(entry);
33
- }
34
- if (entry.blobUrl) {
35
- URL.revokeObjectURL(entry.blobUrl);
36
- entry.blobUrl = null;
37
- }
38
14
  context.jobs = null;
39
15
  }
40
16
  }
@@ -0,0 +1,21 @@
1
+ import { openCog } from '../cog/openCog.js';
2
+ import { workerCogSource } from '../globals/workerCogSource.js';
3
+
4
+ export async function onCogMessage({ data }) {
5
+ try {
6
+ const key = JSON.stringify(/* alloc */ [data.url, data.asset]);
7
+ // ponytail: one cached COG per worker; use a bounded per-source cache if interleaved archives cause churn.
8
+ if (workerCogSource.key !== key) {
9
+ workerCogSource.key = key;
10
+ workerCogSource.archive = openCog(data.url, data.asset);
11
+ }
12
+ const archive = await workerCogSource.archive;
13
+ const result = data.z === undefined ? await archive.getHeader() : await archive.getZxy(data.z, data.x, data.y);
14
+ const transfers = /* alloc */ [];
15
+ if (result?.data) transfers.push(result.data);
16
+ if (result?.image) transfers.push(result.image);
17
+ self.postMessage(result, transfers);
18
+ } catch (error) {
19
+ self.postMessage(/* alloc */ { error: /* alloc */ { name: error.name, message: error.message } });
20
+ }
21
+ }
@@ -1,4 +1,5 @@
1
1
  export function createGeometryWorker(url, pool) {
2
+ if (typeof Worker === 'undefined') throw /* alloc */ new Error('Web Workers are required to prepare source geometry');
2
3
  let workerUrl = url, blobUrl, worker;
3
4
  if (globalThis.location) {
4
5
  const resolved = /* alloc */ new URL(url, location.href);
@@ -1,6 +1,21 @@
1
1
  import { assembleAreaGeometry } from '../geometry/assembleAreaGeometry.js';
2
+ import { onVectorTileMessage } from './vectorTileWorker.js';
3
+ import { onCogMessage } from './cogWorker.js';
4
+ import { onModelMessage } from './modelWorker.js';
2
5
 
3
6
  export function onGeometryMessage(event) {
7
+ if (event.data.type === 'model') {
8
+ onModelMessage(event);
9
+ return;
10
+ }
11
+ if (event.data.type === 'cog') {
12
+ onCogMessage(event);
13
+ return;
14
+ }
15
+ if (event.data.type === 'vector') {
16
+ onVectorTileMessage(event);
17
+ return;
18
+ }
4
19
  try {
5
20
  const data = assembleAreaGeometry(event.data);
6
21
  const transfers = /* alloc */ [data.positions.buffer, data.normals.buffer, data.colors.buffer, data.uvs.buffer];
@@ -0,0 +1,7 @@
1
+ import { workerMapByLayer } from '../weakmaps/workerMapByLayer.js';
2
+ import { runSourceWorker } from './runSourceWorker.js';
3
+
4
+ export function getCogInWorker(context, z, x, y, signal) {
5
+ return runSourceWorker(context.layer._map || workerMapByLayer.get(context.layer), context.workerUrl,
6
+ /* alloc */ { type: 'cog', url: context.url, asset: context.asset, z, x, y }, signal);
7
+ }
@@ -0,0 +1,10 @@
1
+ import { prepareModel } from '../models/prepareModel.js';
2
+
3
+ export async function onModelMessage({ data }) {
4
+ try {
5
+ const result = await prepareModel(data.url);
6
+ self.postMessage(/* alloc */ { description: result.description, images: result.images }, result.transfers);
7
+ } catch (error) {
8
+ self.postMessage(/* alloc */ { error: /* alloc */ { name: error.name, message: error.message } });
9
+ }
10
+ }
@@ -0,0 +1,14 @@
1
+ import { getCogHeader } from '../cog/getCogHeader.js';
2
+ import { getCogInWorker } from './getCogInWorker.js';
3
+
4
+ export async function openCogInWorker(layer, options) {
5
+ const context = /* alloc */ {
6
+ layer, url: /* alloc */ new URL(options.url, document.baseURI).href,
7
+ asset: options.asset, workerUrl: options.workerUrl,
8
+ };
9
+ const header = await getCogInWorker(context);
10
+ return /* alloc */ {
11
+ getHeader: getCogHeader.bind(null, /* alloc */ { header }),
12
+ getZxy: getCogInWorker.bind(null, context),
13
+ };
14
+ }
@@ -0,0 +1,32 @@
1
+ import { geometryWorkerUrl } from '../globals/geometryWorkerUrl.js';
2
+ import { startGeometryWorker } from './startGeometryWorker.js';
3
+ import { acquireGeometryWorker } from './acquireGeometryWorker.js';
4
+
5
+ export async function runSourceWorker(map, url, input, signal = /* alloc */ new AbortController().signal) {
6
+ signal.throwIfAborted();
7
+ const entry = acquireGeometryWorker(map, url || geometryWorkerUrl);
8
+ const { worker, pool } = entry;
9
+ const task = /* alloc */ { worker, signal, input };
10
+ entry.task = task;
11
+ let completed = false;
12
+ try {
13
+ const data = await /* alloc */ new Promise(startGeometryWorker.bind(null, task));
14
+ completed = true;
15
+ return data;
16
+ } finally {
17
+ worker.removeEventListener('message', task.onEvent);
18
+ worker.removeEventListener('error', task.onEvent);
19
+ worker.removeEventListener('messageerror', task.onEvent);
20
+ signal.removeEventListener('abort', task.onEvent);
21
+ entry.task = null;
22
+ if (completed && pool && !pool.closed && !signal.aborted) pool.idle.push(entry);
23
+ else {
24
+ if (!entry.closed) worker.terminate();
25
+ if (pool) pool.entries.delete(entry);
26
+ }
27
+ if (entry.blobUrl) {
28
+ URL.revokeObjectURL(entry.blobUrl);
29
+ entry.blobUrl = null;
30
+ }
31
+ }
32
+ }
@@ -2,7 +2,7 @@ export function settleGeometryWorker(task, event) {
2
2
  if (event.type === 'abort') task.reject(task.signal.reason);
3
3
  else if (event.type === 'error') task.reject(/* alloc */ new Error(`Geometry worker failed: ${event.message}`));
4
4
  else if (event.type === 'messageerror') task.reject(/* alloc */ new Error('Unable to receive geometry worker buffers'));
5
- else if (event.data.error) {
5
+ else if (event.data?.error) {
6
6
  const error = /* alloc */ new Error(event.data.error.message);
7
7
  error.name = event.data.error.name;
8
8
  task.reject(error);
@@ -0,0 +1,10 @@
1
+ import { prepareVectorTile } from '../vector-tiles/prepareVectorTile.js';
2
+
3
+ export function onVectorTileMessage({ data }) {
4
+ try {
5
+ const result = prepareVectorTile(data.buffer, data.coords, data.style, data.zoom, data.source, data.maxZoom, data.mapZoom);
6
+ self.postMessage(/* alloc */ { id: data.id, ...result });
7
+ } catch (error) {
8
+ self.postMessage(/* alloc */ { id: data.id, error: error.message });
9
+ }
10
+ }
@@ -1,10 +0,0 @@
1
- import { projectRing } from '../projections/projectRing.js';
2
- import { buildProjectedPolygon } from './buildProjectedPolygon.js';
3
-
4
- export function buildAreaPolygon(context, rings, top, bottom, baseColor) {
5
- if (!rings.length) throw /* alloc */ new Error('Empty GeoJSON polygon');
6
- const paths = /* alloc */ [];
7
- let ring;
8
- for (ring of rings) paths.push(projectRing(context, ring));
9
- buildProjectedPolygon(context, paths, top, bottom, baseColor);
10
- }
@@ -1,7 +0,0 @@
1
- import { projectedTree } from '../projections/projectTreePoint.js';
2
- import { buildProjectedPoint } from '../geometry/buildProjectedPoint.js';
3
-
4
- export function buildAreaPoint(context, feature, lon, lat, style, baseColor) {
5
- const projected = projectedTree(context, lon, lat);
6
- buildProjectedPoint(context, projected, style, baseColor, feature.properties?.cod_ouvrag || `${lon},${lat}`);
7
- }