@npm9912/v-map 0.2.4 → 0.4.0

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 (64) hide show
  1. package/dist/cjs/{cesium-provider-CTtu9eTD.js → cesium-provider-eoUKuWMQ.js} +19 -1
  2. package/dist/cjs/{deck-provider-fNa818HH.js → deck-provider-VE8jCvBE.js} +28 -14
  3. package/dist/cjs/{index-ChrKyU6i.js → index-CCxwwaJl.js} +2 -2
  4. package/dist/cjs/{index-C1ubapwF.js → index-CE8CbKgP.js} +2 -2
  5. package/dist/cjs/{index-9APmzoa2.js → index-CF2WBqZp.js} +4 -4
  6. package/dist/cjs/{index-BJg0ncfC.js → index-CQEgnWQf.js} +2 -2
  7. package/dist/cjs/{layer-extension-D3a-1DFI.js → layer-extension-IlBQy451.js} +1 -1
  8. package/dist/cjs/{leaflet-provider-7Nw-AdV_.js → leaflet-provider-D_wmyi0D.js} +12 -1
  9. package/dist/cjs/loader.cjs.js +1 -1
  10. package/dist/cjs/{openlayers-provider-DMxYtFkS.js → openlayers-provider-BkvQVXZX.js} +14 -1
  11. package/dist/cjs/{polygon-layer-Dx1ZWZP0.js → polygon-layer-D7S9jutU.js} +1 -1
  12. package/dist/cjs/{scenegraph-layer-ctLehP0q.js → scenegraph-layer-h1u7G3QW.js} +1 -1
  13. package/dist/cjs/v-map.cjs.js +1 -1
  14. package/dist/cjs/{v-map.v-map-layer-osm.v-map-layergroup-BJ3_NqAj.js → v-map.v-map-layer-osm.v-map-layergroup-B-JDj4h8.js} +51 -5
  15. package/dist/cjs/v-map_3.cjs.entry.js +1 -1
  16. package/dist/collection/components/v-map/v-map.js +47 -1
  17. package/dist/collection/map-provider/cesium/cesium-provider.js +18 -0
  18. package/dist/collection/map-provider/deck/deck-provider.js +21 -7
  19. package/dist/collection/map-provider/leaflet/leaflet-provider.js +11 -0
  20. package/dist/collection/map-provider/ol/openlayers-provider.js +14 -1
  21. package/dist/components/cesium-provider.js +1 -1
  22. package/dist/components/deck-provider.js +1 -1
  23. package/dist/components/leaflet-provider.js +1 -1
  24. package/dist/components/openlayers-provider.js +1 -1
  25. package/dist/components/v-map2.js +1 -1
  26. package/dist/esm/{cesium-provider-Bh__cBGf.js → cesium-provider-BkuYkY7L.js} +19 -1
  27. package/dist/esm/{deck-provider-DxIpS4lY.js → deck-provider-Bi-KjKaQ.js} +28 -14
  28. package/dist/esm/{index-DxbztwCv.js → index-B1rgsDF8.js} +5 -5
  29. package/dist/esm/{index-C3mnOs0I.js → index-DnYCNw5P.js} +2 -2
  30. package/dist/esm/{index-Bh2gBu9u.js → index-KNhUl5HI.js} +3 -3
  31. package/dist/esm/{index-C63kfbil.js → index-W2-A_yhi.js} +4 -4
  32. package/dist/esm/{layer-extension-C5Y2UES3.js → layer-extension-IuMBMh1z.js} +1 -1
  33. package/dist/esm/{leaflet-provider-k6JSYiYX.js → leaflet-provider-LXeX9dPk.js} +12 -1
  34. package/dist/esm/loader.js +1 -1
  35. package/dist/esm/{openlayers-provider-DIquf3Tx.js → openlayers-provider-BZvqx4li.js} +15 -2
  36. package/dist/esm/{polygon-layer-ZIT5mJy5.js → polygon-layer-BPJjHK3y.js} +1 -1
  37. package/dist/esm/{scenegraph-layer-CNIRd2uu.js → scenegraph-layer-_1RQcOYZ.js} +1 -1
  38. package/dist/esm/v-map.js +1 -1
  39. package/dist/esm/{v-map.v-map-layer-osm.v-map-layergroup-Zwdvm9PG.js → v-map.v-map-layer-osm.v-map-layergroup-DIfNm6nG.js} +51 -5
  40. package/dist/esm/v-map_3.entry.js +1 -1
  41. package/dist/types/components/v-map/v-map.d.ts +15 -0
  42. package/dist/types/map-provider/cesium/cesium-provider.d.ts +4 -0
  43. package/dist/types/map-provider/deck/deck-provider.d.ts +5 -0
  44. package/dist/types/map-provider/leaflet/leaflet-provider.d.ts +4 -0
  45. package/dist/types/map-provider/ol/openlayers-provider.d.ts +4 -0
  46. package/dist/types/types/mapprovider.d.ts +11 -0
  47. package/dist/v-map/p-BFyBu5_1.js +1 -0
  48. package/dist/v-map/p-BOfJXm8U.js +1 -0
  49. package/dist/v-map/{p-DuJ_mTaq.js → p-Bl6vQpyl.js} +1 -1
  50. package/dist/v-map/{p-G6iftXUC.js → p-Bmo2hj1_.js} +1 -1
  51. package/dist/v-map/{p-Ci70E1EM.js → p-COhBo2OS.js} +1 -1
  52. package/dist/v-map/{p-9Rt23jlQ.js → p-Cp_e5ebg.js} +1 -1
  53. package/dist/v-map/{p-C0M0-Kvt.js → p-D5O720HV.js} +1 -1
  54. package/dist/v-map/{p-DAf4itFZ.js → p-D94rp5ir.js} +1 -1
  55. package/dist/v-map/{p-BpE6L1g0.js → p-DgXaR8AP.js} +1 -1
  56. package/dist/v-map/p-fca86e74.entry.js +1 -0
  57. package/dist/v-map/{p-rCyRSFJb.js → p-ns7UwFY9.js} +2 -2
  58. package/dist/v-map/{p-BSsFEMZP.js → p-qVwE-Ron.js} +1 -1
  59. package/dist/v-map/{p-vhbi5XXi.js → p-yoshb-P-.js} +1 -1
  60. package/dist/v-map/v-map.esm.js +1 -1
  61. package/package.json +3 -2
  62. package/dist/v-map/p-05ee633f.entry.js +0 -1
  63. package/dist/v-map/p-2-mR3oVa.js +0 -1
  64. package/dist/v-map/p-CbiLpFhO.js +0 -1
@@ -1 +1 @@
1
- export{S as SimpleMeshLayer}from"./p-9Rt23jlQ.js";export{S as ScenegraphLayer}from"./p-DAf4itFZ.js";import"./p-B-bAcABs.js";import"./p-DhQAXuA7.js";import"./p-DR9McdNX.js";import"./p-E-ZsRS8r.js";import"./p-QJHuuz0g.js";import"./p-yXLNXXx-.js";import"@loaders.gl/core";import"@loaders.gl/images";import"@loaders.gl/loader-utils";import"@loaders.gl/terrain";import"@loaders.gl/schema";import"@loaders.gl/gltf";
1
+ export{S as SimpleMeshLayer}from"./p-Cp_e5ebg.js";export{S as ScenegraphLayer}from"./p-D94rp5ir.js";import"./p-B-bAcABs.js";import"./p-DhQAXuA7.js";import"./p-DR9McdNX.js";import"./p-E-ZsRS8r.js";import"./p-QJHuuz0g.js";import"./p-yXLNXXx-.js";import"@loaders.gl/core";import"@loaders.gl/images";import"@loaders.gl/loader-utils";import"@loaders.gl/terrain";import"@loaders.gl/schema";import"@loaders.gl/gltf";
@@ -1 +1 @@
1
- import{C as t}from"./p-C0M0-Kvt.js";export{A as ArcLayer,P as PointCloudLayer,a as PolygonLayer}from"./p-C0M0-Kvt.js";import{G as n,u as o,L as i,p as r,c as s,a as l,U as c,M as u}from"./p-9Rt23jlQ.js";export{B as BitmapLayer,e as GeoJsonLayer,I as IconLayer,P as PathLayer,b as ScatterplotLayer,f as SolidPolygonLayer,T as TextLayer,g as _MultiIconLayer,h as _TextBackgroundLayer}from"./p-9Rt23jlQ.js";import"./p-B-bAcABs.js";import"./p-DhQAXuA7.js";import"./p-DR9McdNX.js";import"./p-E-ZsRS8r.js";import"./p-QJHuuz0g.js";import"./p-yXLNXXx-.js";import"@loaders.gl/core";import"@loaders.gl/images";import"@loaders.gl/loader-utils";import"@loaders.gl/terrain";import"@loaders.gl/schema";class d extends n{constructor(e={}){const{id:t=o("cube-geometry"),indices:n=!0}=e;super(n?{...e,id:t,topology:"triangle-list",indices:{size:1,value:p},attributes:{...S,...e.attributes}}:{...e,id:t,topology:"triangle-list",indices:void 0,attributes:{...C,...e.attributes}})}}const p=new Uint16Array([0,1,2,0,2,3,4,5,6,4,6,7,8,9,10,8,10,11,12,13,14,12,14,15,16,17,18,16,18,19,20,21,22,20,22,23]),v=new Float32Array([-1,-1,1,1,-1,1,1,1,1,-1,1,1,-1,-1,-1,-1,1,-1,1,1,-1,1,-1,-1,-1,1,-1,-1,1,1,1,1,1,1,1,-1,-1,-1,-1,1,-1,-1,1,-1,1,-1,-1,1,1,-1,-1,1,1,-1,1,1,1,1,-1,1,-1,-1,-1,-1,-1,1,-1,1,1,-1,1,-1]),_=new Float32Array([0,0,1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0]),m=new Float32Array([0,0,1,0,1,1,0,1,1,0,1,1,0,1,0,0,0,1,0,0,1,0,1,1,1,1,0,1,0,0,1,0,1,0,1,1,0,1,0,0,0,0,1,0,1,1,0,1]),w=new Float32Array([1,-1,1,-1,-1,1,-1,-1,-1,1,-1,-1,1,-1,1,-1,-1,-1,1,1,1,1,-1,1,1,-1,-1,1,1,-1,1,1,1,1,-1,-1,-1,1,1,1,1,1,1,1,-1,-1,1,-1,-1,1,1,1,1,-1,-1,-1,1,-1,1,1,-1,1,-1,-1,-1,-1,-1,-1,1,-1,1,-1,1,1,1,-1,1,1,-1,-1,1,-1,-1,1,1,-1,1,1,1,1,1,-1,-1,-1,-1,-1,-1,1,-1,1,1,-1,1,-1,-1,-1,1,-1]),x=new Float32Array([1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,0,0,1,0,1,1,1,1,0,1,0,0,1,0,1,1,0,0]),y=new Float32Array([1,0,1,1,0,0,1,1,0,0,0,1,1,0,0,1,1,0,1,1,0,0,0,1,1,1,1,1,1,0,1,1,1,0,0,1,1,1,0,1,1,1,1,1,1,0,0,1,0,1,1,1,1,1,1,1,1,1,0,1,0,1,0,1,0,1,1,1,1,1,0,1,0,0,1,1,0,1,1,1,0,1,0,1,0,0,0,1,0,0,1,1,0,1,0,1,1,1,1,1,0,1,1,1,0,0,1,1,0,0,1,1,1,0,1,1,1,1,1,1,1,0,0,1,0,0,0,1,0,1,0,1,1,1,0,1,1,0,0,1,0,1,0,1]),S={POSITION:{size:3,value:v},NORMAL:{size:3,value:_},TEXCOORD_0:{size:2,value:m}},C={POSITION:{size:3,value:w},TEXCOORD_0:{size:2,value:x},COLOR_0:{size:3,value:y}},L="uniform lineUniforms {\n float widthScale;\n float widthMinPixels;\n float widthMaxPixels;\n float useShortestPath;\n highp int widthUnits;\n} line;\n",z={name:"line",source:"struct LineUniforms {\n widthScale: f32,\n widthMinPixels: f32,\n widthMaxPixels: f32,\n useShortestPath: f32,\n widthUnits: i32,\n};\n\n@group(0) @binding(1)\nvar<uniform> line: LineUniforms;\n",vs:L,fs:L,uniformTypes:{widthScale:"f32",widthMinPixels:"f32",widthMaxPixels:"f32",useShortestPath:"f32",widthUnits:"i32"}},O={getSourcePosition:{type:"accessor",value:e=>e.sourcePosition},getTargetPosition:{type:"accessor",value:e=>e.targetPosition},getColor:{type:"accessor",value:[0,0,0,255]},getWidth:{type:"accessor",value:1},widthUnits:"pixels",widthScale:{type:"number",value:1,min:0},widthMinPixels:{type:"number",value:0,min:0},widthMaxPixels:{type:"number",value:Number.MAX_SAFE_INTEGER,min:0}};class j extends i{getBounds(){return this.getAttributeManager()?.getBounds(["instanceSourcePositions","instanceTargetPositions"])}getShaders(){return super.getShaders({vs:"#version 300 es\n#define SHADER_NAME line-layer-vertex-shader\nin vec3 positions;\nin vec3 instanceSourcePositions;\nin vec3 instanceTargetPositions;\nin vec3 instanceSourcePositions64Low;\nin vec3 instanceTargetPositions64Low;\nin vec4 instanceColors;\nin vec3 instancePickingColors;\nin float instanceWidths;\nout vec4 vColor;\nout vec2 uv;\nvec2 getExtrusionOffset(vec2 line_clipspace, float offset_direction, float width) {\nvec2 dir_screenspace = normalize(line_clipspace * project.viewportSize);\ndir_screenspace = vec2(-dir_screenspace.y, dir_screenspace.x);\nreturn dir_screenspace * offset_direction * width / 2.0;\n}\nvec3 splitLine(vec3 a, vec3 b, float x) {\nfloat t = (x - a.x) / (b.x - a.x);\nreturn vec3(x, mix(a.yz, b.yz, t));\n}\nvoid main(void) {\ngeometry.worldPosition = instanceSourcePositions;\ngeometry.worldPositionAlt = instanceTargetPositions;\nvec3 source_world = instanceSourcePositions;\nvec3 target_world = instanceTargetPositions;\nvec3 source_world_64low = instanceSourcePositions64Low;\nvec3 target_world_64low = instanceTargetPositions64Low;\nif (line.useShortestPath > 0.5 || line.useShortestPath < -0.5) {\nsource_world.x = mod(source_world.x + 180., 360.0) - 180.;\ntarget_world.x = mod(target_world.x + 180., 360.0) - 180.;\nfloat deltaLng = target_world.x - source_world.x;\nif (deltaLng * line.useShortestPath > 180.) {\nsource_world.x += 360. * line.useShortestPath;\nsource_world = splitLine(source_world, target_world, 180. * line.useShortestPath);\nsource_world_64low = vec3(0.0);\n} else if (deltaLng * line.useShortestPath < -180.) {\ntarget_world.x += 360. * line.useShortestPath;\ntarget_world = splitLine(source_world, target_world, 180. * line.useShortestPath);\ntarget_world_64low = vec3(0.0);\n} else if (line.useShortestPath < 0.) {\ngl_Position = vec4(0.);\nreturn;\n}\n}\nvec4 source_commonspace;\nvec4 target_commonspace;\nvec4 source = project_position_to_clipspace(source_world, source_world_64low, vec3(0.), source_commonspace);\nvec4 target = project_position_to_clipspace(target_world, target_world_64low, vec3(0.), target_commonspace);\nfloat segmentIndex = positions.x;\nvec4 p = mix(source, target, segmentIndex);\ngeometry.position = mix(source_commonspace, target_commonspace, segmentIndex);\nuv = positions.xy;\ngeometry.uv = uv;\ngeometry.pickingColor = instancePickingColors;\nfloat widthPixels = clamp(\nproject_size_to_pixel(instanceWidths * line.widthScale, line.widthUnits),\nline.widthMinPixels, line.widthMaxPixels\n);\nvec3 offset = vec3(\ngetExtrusionOffset(target.xy - source.xy, positions.y, widthPixels),\n0.0);\nDECKGL_FILTER_SIZE(offset, geometry);\nDECKGL_FILTER_GL_POSITION(p, geometry);\ngl_Position = p + vec4(project_pixel_size_to_clipspace(offset.xy), 0.0, 0.0);\nvColor = vec4(instanceColors.rgb, instanceColors.a * layer.opacity);\nDECKGL_FILTER_COLOR(vColor, geometry);\n}\n",fs:"#version 300 es\n#define SHADER_NAME line-layer-fragment-shader\nprecision highp float;\nin vec4 vColor;\nin vec2 uv;\nout vec4 fragColor;\nvoid main(void) {\ngeometry.uv = uv;\nfragColor = vColor;\nDECKGL_FILTER_COLOR(fragColor, geometry);\n}\n",source:'// ---------- Helper Structures & Functions ----------\n\n// Placeholder filter functions.\nfn deckgl_filter_size(offset: vec3<f32>, geometry: Geometry) -> vec3<f32> {\n return offset;\n}\nfn deckgl_filter_gl_position(p: vec4<f32>, geometry: Geometry) -> vec4<f32> {\n return p;\n}\nfn deckgl_filter_color(color: vec4<f32>, geometry: Geometry) -> vec4<f32> {\n return color;\n}\n\n// Compute an extrusion offset given a line direction (in clipspace),\n// an offset direction (-1 or 1), and a width in pixels.\n// Assumes a uniform "project" with a viewportSize field is available.\nfn getExtrusionOffset(line_clipspace: vec2<f32>, offset_direction: f32, width: f32) -> vec2<f32> {\n // project.viewportSize should be provided as a uniform (not shown here)\n let dir_screenspace = normalize(line_clipspace * project.viewportSize);\n // Rotate by 90°: (x,y) becomes (-y,x)\n let rotated = vec2<f32>(-dir_screenspace.y, dir_screenspace.x);\n return rotated * offset_direction * width / 2.0;\n}\n\n// Splits the line between two points at a given x coordinate.\n// Interpolates the y and z components.\nfn splitLine(a: vec3<f32>, b: vec3<f32>, x: f32) -> vec3<f32> {\n let t: f32 = (x - a.x) / (b.x - a.x);\n return vec3<f32>(x, a.yz + t * (b.yz - a.yz));\n}\n\n// ---------- Uniforms & Global Structures ----------\n\n// Uniforms for line, color, and project are assumed to be defined elsewhere.\n// For example:\n//\n// @group(0) @binding(0)\n// var<uniform> line: LineUniform;\n//\n// struct ColorUniform {\n// opacity: f32,\n// };\n// @group(0) @binding(1)\n// var<uniform> color: ColorUniform;\n//\n// struct ProjectUniform {\n// viewportSize: vec2<f32>,\n// };\n// @group(0) @binding(2)\n// var<uniform> project: ProjectUniform;\n\n\n\n// ---------- Vertex Output Structure ----------\n\nstruct Varyings {\n @builtin(position) gl_Position: vec4<f32>,\n @location(0) vColor: vec4<f32>,\n @location(1) uv: vec2<f32>,\n};\n\n// ---------- Vertex Shader Entry Point ----------\n\n@vertex\nfn vertexMain(\n @location(0) positions: vec3<f32>,\n @location(1) instanceSourcePositions: vec3<f32>,\n @location(2) instanceTargetPositions: vec3<f32>,\n @location(3) instanceSourcePositions64Low: vec3<f32>,\n @location(4) instanceTargetPositions64Low: vec3<f32>,\n @location(5) instanceColors: vec4<f32>,\n @location(6) instancePickingColors: vec3<f32>,\n @location(7) instanceWidths: f32\n) -> Varyings {\n var geometry: Geometry;\n geometry.worldPosition = instanceSourcePositions;\n geometry.worldPositionAlt = instanceTargetPositions;\n\n var source_world: vec3<f32> = instanceSourcePositions;\n var target_world: vec3<f32> = instanceTargetPositions;\n var source_world_64low: vec3<f32> = instanceSourcePositions64Low;\n var target_world_64low: vec3<f32> = instanceTargetPositions64Low;\n\n // Apply shortest-path adjustments if needed.\n if (line.useShortestPath > 0.5 || line.useShortestPath < -0.5) {\n source_world.x = (source_world.x + 180.0 % 360.0) - 180.0;\n target_world.x = (target_world.x + 180.0 % 360.0) - 180.0;\n let deltaLng: f32 = target_world.x - source_world.x;\n\n if (deltaLng * line.useShortestPath > 180.0) {\n source_world.x = source_world.x + 360.0 * line.useShortestPath;\n source_world = splitLine(source_world, target_world, 180.0 * line.useShortestPath);\n source_world_64low = vec3<f32>(0.0, 0.0, 0.0);\n } else if (deltaLng * line.useShortestPath < -180.0) {\n target_world.x = target_world.x + 360.0 * line.useShortestPath;\n target_world = splitLine(source_world, target_world, 180.0 * line.useShortestPath);\n target_world_64low = vec3<f32>(0.0, 0.0, 0.0);\n } else if (line.useShortestPath < 0.0) {\n var abortOut: Varyings;\n abortOut.gl_Position = vec4<f32>(0.0);\n abortOut.vColor = vec4<f32>(0.0);\n abortOut.uv = vec2<f32>(0.0);\n return abortOut;\n }\n }\n\n // Project Pos and target positions to clip space.\n let sourceResult = project_position_to_clipspace_and_commonspace(source_world, source_world_64low, vec3<f32>(0.0));\n let targetResult = project_position_to_clipspace_and_commonspace(target_world, target_world_64low, vec3<f32>(0.0));\n let sourcePos: vec4<f32> = sourceResult.clipPosition;\n let targetPos: vec4<f32> = targetResult.clipPosition;\n let source_commonspace: vec4<f32> = sourceResult.commonPosition;\n let target_commonspace: vec4<f32> = targetResult.commonPosition;\n\n // Interpolate along the line segment.\n let segmentIndex: f32 = positions.x;\n let p: vec4<f32> = sourcePos + segmentIndex * (targetPos - sourcePos);\n geometry.position = source_commonspace + segmentIndex * (target_commonspace - source_commonspace);\n let uv: vec2<f32> = positions.xy;\n geometry.uv = uv;\n geometry.pickingColor = instancePickingColors;\n\n // Determine width in pixels.\n let widthPixels: f32 = clamp(\n project_unit_size_to_pixel(instanceWidths * line.widthScale, line.widthUnits),\n line.widthMinPixels, line.widthMaxPixels\n );\n\n // Compute extrusion offset.\n let extrusion: vec2<f32> = getExtrusionOffset(targetPos.xy - sourcePos.xy, positions.y, widthPixels);\n let offset: vec3<f32> = vec3<f32>(extrusion, 0.0);\n\n // Apply deck.gl filter functions.\n let filteredOffset = deckgl_filter_size(offset, geometry);\n let filteredP = deckgl_filter_gl_position(p, geometry);\n\n let clipOffset: vec2<f32> = project_pixel_size_to_clipspace(filteredOffset.xy);\n let finalPosition: vec4<f32> = filteredP + vec4<f32>(clipOffset, 0.0, 0.0);\n\n // Compute color.\n var vColor: vec4<f32> = vec4<f32>(instanceColors.rgb, instanceColors.a * color.opacity);\n // vColor = deckgl_filter_color(vColor, geometry);\n\n var output: Varyings;\n output.gl_Position = finalPosition;\n output.vColor = vColor;\n output.uv = uv;\n return output;\n}\n\n@fragment\nfn fragmentMain(\n @location(0) vColor: vec4<f32>,\n @location(1) uv: vec2<f32>\n) -> @location(0) vec4<f32> {\n // Create and initialize geometry with the provided uv.\n var geometry: Geometry;\n geometry.uv = uv;\n\n // Start with the input color.\n var fragColor: vec4<f32> = vColor;\n\n // Apply the deck.gl filter to the color.\n fragColor = deckgl_filter_color(fragColor, geometry);\n\n // Apply premultiplied alpha as required by transparent canvas\n fragColor = deckgl_premultiplied_alpha(fragColor);\n\n return fragColor;\n}\n',modules:[r,s,l,z]})}get wrapLongitude(){return!1}initializeState(){this.getAttributeManager().addInstanced({instanceSourcePositions:{size:3,type:"float64",fp64:this.use64bitPositions(),transition:!0,accessor:"getSourcePosition"},instanceTargetPositions:{size:3,type:"float64",fp64:this.use64bitPositions(),transition:!0,accessor:"getTargetPosition"},instanceColors:{size:this.props.colorFormat.length,type:"unorm8",transition:!0,accessor:"getColor",defaultValue:[0,0,0,255]},instanceWidths:{size:1,transition:!0,accessor:"getWidth",defaultValue:1}})}updateState(e){super.updateState(e),e.changeFlags.extensionsChanged&&(this.state.model?.destroy(),this.state.model=this._getModel(),this.getAttributeManager().invalidateAll())}draw({}){const{widthUnits:e,widthScale:t,widthMinPixels:n,widthMaxPixels:o,wrapLongitude:i}=this.props,r=this.state.model,s={widthUnits:c[e],widthScale:t,widthMinPixels:n,widthMaxPixels:o,useShortestPath:i?1:0};r.shaderInputs.setProps({line:s}),r.draw(this.context.renderPass),i&&(r.shaderInputs.setProps({line:{...s,useShortestPath:-1}}),r.draw(this.context.renderPass))}_getModel(){const e="webgpu"===this.context.device.type?{depthWriteEnabled:!0,depthCompare:"less-equal"}:void 0;return new u(this.context.device,{...this.getShaders(),id:this.props.id,bufferLayout:this.getAttributeManager().getBufferLayouts(),geometry:new n({topology:"triangle-strip",attributes:{positions:{size:3,value:new Float32Array([0,-1,0,0,1,0,1,-1,0,1,1,0])}}}),parameters:e,isInstanced:!0})}}j.layerName="LineLayer",j.defaultProps=O;class M extends t{_updateGeometry(){const e=new d;this.state.fillModel.setGeometry(e)}draw({}){const{elevationScale:e,extruded:t,offset:n,coverage:o,cellSize:i,angle:r,radiusUnits:s}=this.props,a=this.state.fillModel;a.shaderInputs.setProps({column:{radius:i/2,radiusUnits:c[s],angle:r,offset:n,extruded:t,stroked:!1,coverage:o,elevationScale:e,edgeDistance:1,isStroke:!1,widthUnits:0,widthScale:0,widthMinPixels:0,widthMaxPixels:0}}),a.draw(this.context.renderPass)}}M.layerName="GridCellLayer",M.defaultProps={cellSize:{type:"number",min:0,value:1e3},offset:{type:"array",value:[1,1]}};export{t as ColumnLayer,M as GridCellLayer,j as LineLayer}
1
+ import{C as t}from"./p-D5O720HV.js";export{A as ArcLayer,P as PointCloudLayer,a as PolygonLayer}from"./p-D5O720HV.js";import{G as n,u as o,L as i,p as r,c as s,a as l,U as c,M as u}from"./p-Cp_e5ebg.js";export{B as BitmapLayer,e as GeoJsonLayer,I as IconLayer,P as PathLayer,b as ScatterplotLayer,f as SolidPolygonLayer,T as TextLayer,g as _MultiIconLayer,h as _TextBackgroundLayer}from"./p-Cp_e5ebg.js";import"./p-B-bAcABs.js";import"./p-DhQAXuA7.js";import"./p-DR9McdNX.js";import"./p-E-ZsRS8r.js";import"./p-QJHuuz0g.js";import"./p-yXLNXXx-.js";import"@loaders.gl/core";import"@loaders.gl/images";import"@loaders.gl/loader-utils";import"@loaders.gl/terrain";import"@loaders.gl/schema";class d extends n{constructor(e={}){const{id:t=o("cube-geometry"),indices:n=!0}=e;super(n?{...e,id:t,topology:"triangle-list",indices:{size:1,value:p},attributes:{...S,...e.attributes}}:{...e,id:t,topology:"triangle-list",indices:void 0,attributes:{...C,...e.attributes}})}}const p=new Uint16Array([0,1,2,0,2,3,4,5,6,4,6,7,8,9,10,8,10,11,12,13,14,12,14,15,16,17,18,16,18,19,20,21,22,20,22,23]),v=new Float32Array([-1,-1,1,1,-1,1,1,1,1,-1,1,1,-1,-1,-1,-1,1,-1,1,1,-1,1,-1,-1,-1,1,-1,-1,1,1,1,1,1,1,1,-1,-1,-1,-1,1,-1,-1,1,-1,1,-1,-1,1,1,-1,-1,1,1,-1,1,1,1,1,-1,1,-1,-1,-1,-1,-1,1,-1,1,1,-1,1,-1]),_=new Float32Array([0,0,1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0]),m=new Float32Array([0,0,1,0,1,1,0,1,1,0,1,1,0,1,0,0,0,1,0,0,1,0,1,1,1,1,0,1,0,0,1,0,1,0,1,1,0,1,0,0,0,0,1,0,1,1,0,1]),w=new Float32Array([1,-1,1,-1,-1,1,-1,-1,-1,1,-1,-1,1,-1,1,-1,-1,-1,1,1,1,1,-1,1,1,-1,-1,1,1,-1,1,1,1,1,-1,-1,-1,1,1,1,1,1,1,1,-1,-1,1,-1,-1,1,1,1,1,-1,-1,-1,1,-1,1,1,-1,1,-1,-1,-1,-1,-1,-1,1,-1,1,-1,1,1,1,-1,1,1,-1,-1,1,-1,-1,1,1,-1,1,1,1,1,1,-1,-1,-1,-1,-1,-1,1,-1,1,1,-1,1,-1,-1,-1,1,-1]),x=new Float32Array([1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,0,0,1,0,1,1,1,1,0,1,0,0,1,0,1,1,0,0]),y=new Float32Array([1,0,1,1,0,0,1,1,0,0,0,1,1,0,0,1,1,0,1,1,0,0,0,1,1,1,1,1,1,0,1,1,1,0,0,1,1,1,0,1,1,1,1,1,1,0,0,1,0,1,1,1,1,1,1,1,1,1,0,1,0,1,0,1,0,1,1,1,1,1,0,1,0,0,1,1,0,1,1,1,0,1,0,1,0,0,0,1,0,0,1,1,0,1,0,1,1,1,1,1,0,1,1,1,0,0,1,1,0,0,1,1,1,0,1,1,1,1,1,1,1,0,0,1,0,0,0,1,0,1,0,1,1,1,0,1,1,0,0,1,0,1,0,1]),S={POSITION:{size:3,value:v},NORMAL:{size:3,value:_},TEXCOORD_0:{size:2,value:m}},C={POSITION:{size:3,value:w},TEXCOORD_0:{size:2,value:x},COLOR_0:{size:3,value:y}},L="uniform lineUniforms {\n float widthScale;\n float widthMinPixels;\n float widthMaxPixels;\n float useShortestPath;\n highp int widthUnits;\n} line;\n",z={name:"line",source:"struct LineUniforms {\n widthScale: f32,\n widthMinPixels: f32,\n widthMaxPixels: f32,\n useShortestPath: f32,\n widthUnits: i32,\n};\n\n@group(0) @binding(1)\nvar<uniform> line: LineUniforms;\n",vs:L,fs:L,uniformTypes:{widthScale:"f32",widthMinPixels:"f32",widthMaxPixels:"f32",useShortestPath:"f32",widthUnits:"i32"}},O={getSourcePosition:{type:"accessor",value:e=>e.sourcePosition},getTargetPosition:{type:"accessor",value:e=>e.targetPosition},getColor:{type:"accessor",value:[0,0,0,255]},getWidth:{type:"accessor",value:1},widthUnits:"pixels",widthScale:{type:"number",value:1,min:0},widthMinPixels:{type:"number",value:0,min:0},widthMaxPixels:{type:"number",value:Number.MAX_SAFE_INTEGER,min:0}};class j extends i{getBounds(){return this.getAttributeManager()?.getBounds(["instanceSourcePositions","instanceTargetPositions"])}getShaders(){return super.getShaders({vs:"#version 300 es\n#define SHADER_NAME line-layer-vertex-shader\nin vec3 positions;\nin vec3 instanceSourcePositions;\nin vec3 instanceTargetPositions;\nin vec3 instanceSourcePositions64Low;\nin vec3 instanceTargetPositions64Low;\nin vec4 instanceColors;\nin vec3 instancePickingColors;\nin float instanceWidths;\nout vec4 vColor;\nout vec2 uv;\nvec2 getExtrusionOffset(vec2 line_clipspace, float offset_direction, float width) {\nvec2 dir_screenspace = normalize(line_clipspace * project.viewportSize);\ndir_screenspace = vec2(-dir_screenspace.y, dir_screenspace.x);\nreturn dir_screenspace * offset_direction * width / 2.0;\n}\nvec3 splitLine(vec3 a, vec3 b, float x) {\nfloat t = (x - a.x) / (b.x - a.x);\nreturn vec3(x, mix(a.yz, b.yz, t));\n}\nvoid main(void) {\ngeometry.worldPosition = instanceSourcePositions;\ngeometry.worldPositionAlt = instanceTargetPositions;\nvec3 source_world = instanceSourcePositions;\nvec3 target_world = instanceTargetPositions;\nvec3 source_world_64low = instanceSourcePositions64Low;\nvec3 target_world_64low = instanceTargetPositions64Low;\nif (line.useShortestPath > 0.5 || line.useShortestPath < -0.5) {\nsource_world.x = mod(source_world.x + 180., 360.0) - 180.;\ntarget_world.x = mod(target_world.x + 180., 360.0) - 180.;\nfloat deltaLng = target_world.x - source_world.x;\nif (deltaLng * line.useShortestPath > 180.) {\nsource_world.x += 360. * line.useShortestPath;\nsource_world = splitLine(source_world, target_world, 180. * line.useShortestPath);\nsource_world_64low = vec3(0.0);\n} else if (deltaLng * line.useShortestPath < -180.) {\ntarget_world.x += 360. * line.useShortestPath;\ntarget_world = splitLine(source_world, target_world, 180. * line.useShortestPath);\ntarget_world_64low = vec3(0.0);\n} else if (line.useShortestPath < 0.) {\ngl_Position = vec4(0.);\nreturn;\n}\n}\nvec4 source_commonspace;\nvec4 target_commonspace;\nvec4 source = project_position_to_clipspace(source_world, source_world_64low, vec3(0.), source_commonspace);\nvec4 target = project_position_to_clipspace(target_world, target_world_64low, vec3(0.), target_commonspace);\nfloat segmentIndex = positions.x;\nvec4 p = mix(source, target, segmentIndex);\ngeometry.position = mix(source_commonspace, target_commonspace, segmentIndex);\nuv = positions.xy;\ngeometry.uv = uv;\ngeometry.pickingColor = instancePickingColors;\nfloat widthPixels = clamp(\nproject_size_to_pixel(instanceWidths * line.widthScale, line.widthUnits),\nline.widthMinPixels, line.widthMaxPixels\n);\nvec3 offset = vec3(\ngetExtrusionOffset(target.xy - source.xy, positions.y, widthPixels),\n0.0);\nDECKGL_FILTER_SIZE(offset, geometry);\nDECKGL_FILTER_GL_POSITION(p, geometry);\ngl_Position = p + vec4(project_pixel_size_to_clipspace(offset.xy), 0.0, 0.0);\nvColor = vec4(instanceColors.rgb, instanceColors.a * layer.opacity);\nDECKGL_FILTER_COLOR(vColor, geometry);\n}\n",fs:"#version 300 es\n#define SHADER_NAME line-layer-fragment-shader\nprecision highp float;\nin vec4 vColor;\nin vec2 uv;\nout vec4 fragColor;\nvoid main(void) {\ngeometry.uv = uv;\nfragColor = vColor;\nDECKGL_FILTER_COLOR(fragColor, geometry);\n}\n",source:'// ---------- Helper Structures & Functions ----------\n\n// Placeholder filter functions.\nfn deckgl_filter_size(offset: vec3<f32>, geometry: Geometry) -> vec3<f32> {\n return offset;\n}\nfn deckgl_filter_gl_position(p: vec4<f32>, geometry: Geometry) -> vec4<f32> {\n return p;\n}\nfn deckgl_filter_color(color: vec4<f32>, geometry: Geometry) -> vec4<f32> {\n return color;\n}\n\n// Compute an extrusion offset given a line direction (in clipspace),\n// an offset direction (-1 or 1), and a width in pixels.\n// Assumes a uniform "project" with a viewportSize field is available.\nfn getExtrusionOffset(line_clipspace: vec2<f32>, offset_direction: f32, width: f32) -> vec2<f32> {\n // project.viewportSize should be provided as a uniform (not shown here)\n let dir_screenspace = normalize(line_clipspace * project.viewportSize);\n // Rotate by 90°: (x,y) becomes (-y,x)\n let rotated = vec2<f32>(-dir_screenspace.y, dir_screenspace.x);\n return rotated * offset_direction * width / 2.0;\n}\n\n// Splits the line between two points at a given x coordinate.\n// Interpolates the y and z components.\nfn splitLine(a: vec3<f32>, b: vec3<f32>, x: f32) -> vec3<f32> {\n let t: f32 = (x - a.x) / (b.x - a.x);\n return vec3<f32>(x, a.yz + t * (b.yz - a.yz));\n}\n\n// ---------- Uniforms & Global Structures ----------\n\n// Uniforms for line, color, and project are assumed to be defined elsewhere.\n// For example:\n//\n// @group(0) @binding(0)\n// var<uniform> line: LineUniform;\n//\n// struct ColorUniform {\n// opacity: f32,\n// };\n// @group(0) @binding(1)\n// var<uniform> color: ColorUniform;\n//\n// struct ProjectUniform {\n// viewportSize: vec2<f32>,\n// };\n// @group(0) @binding(2)\n// var<uniform> project: ProjectUniform;\n\n\n\n// ---------- Vertex Output Structure ----------\n\nstruct Varyings {\n @builtin(position) gl_Position: vec4<f32>,\n @location(0) vColor: vec4<f32>,\n @location(1) uv: vec2<f32>,\n};\n\n// ---------- Vertex Shader Entry Point ----------\n\n@vertex\nfn vertexMain(\n @location(0) positions: vec3<f32>,\n @location(1) instanceSourcePositions: vec3<f32>,\n @location(2) instanceTargetPositions: vec3<f32>,\n @location(3) instanceSourcePositions64Low: vec3<f32>,\n @location(4) instanceTargetPositions64Low: vec3<f32>,\n @location(5) instanceColors: vec4<f32>,\n @location(6) instancePickingColors: vec3<f32>,\n @location(7) instanceWidths: f32\n) -> Varyings {\n var geometry: Geometry;\n geometry.worldPosition = instanceSourcePositions;\n geometry.worldPositionAlt = instanceTargetPositions;\n\n var source_world: vec3<f32> = instanceSourcePositions;\n var target_world: vec3<f32> = instanceTargetPositions;\n var source_world_64low: vec3<f32> = instanceSourcePositions64Low;\n var target_world_64low: vec3<f32> = instanceTargetPositions64Low;\n\n // Apply shortest-path adjustments if needed.\n if (line.useShortestPath > 0.5 || line.useShortestPath < -0.5) {\n source_world.x = (source_world.x + 180.0 % 360.0) - 180.0;\n target_world.x = (target_world.x + 180.0 % 360.0) - 180.0;\n let deltaLng: f32 = target_world.x - source_world.x;\n\n if (deltaLng * line.useShortestPath > 180.0) {\n source_world.x = source_world.x + 360.0 * line.useShortestPath;\n source_world = splitLine(source_world, target_world, 180.0 * line.useShortestPath);\n source_world_64low = vec3<f32>(0.0, 0.0, 0.0);\n } else if (deltaLng * line.useShortestPath < -180.0) {\n target_world.x = target_world.x + 360.0 * line.useShortestPath;\n target_world = splitLine(source_world, target_world, 180.0 * line.useShortestPath);\n target_world_64low = vec3<f32>(0.0, 0.0, 0.0);\n } else if (line.useShortestPath < 0.0) {\n var abortOut: Varyings;\n abortOut.gl_Position = vec4<f32>(0.0);\n abortOut.vColor = vec4<f32>(0.0);\n abortOut.uv = vec2<f32>(0.0);\n return abortOut;\n }\n }\n\n // Project Pos and target positions to clip space.\n let sourceResult = project_position_to_clipspace_and_commonspace(source_world, source_world_64low, vec3<f32>(0.0));\n let targetResult = project_position_to_clipspace_and_commonspace(target_world, target_world_64low, vec3<f32>(0.0));\n let sourcePos: vec4<f32> = sourceResult.clipPosition;\n let targetPos: vec4<f32> = targetResult.clipPosition;\n let source_commonspace: vec4<f32> = sourceResult.commonPosition;\n let target_commonspace: vec4<f32> = targetResult.commonPosition;\n\n // Interpolate along the line segment.\n let segmentIndex: f32 = positions.x;\n let p: vec4<f32> = sourcePos + segmentIndex * (targetPos - sourcePos);\n geometry.position = source_commonspace + segmentIndex * (target_commonspace - source_commonspace);\n let uv: vec2<f32> = positions.xy;\n geometry.uv = uv;\n geometry.pickingColor = instancePickingColors;\n\n // Determine width in pixels.\n let widthPixels: f32 = clamp(\n project_unit_size_to_pixel(instanceWidths * line.widthScale, line.widthUnits),\n line.widthMinPixels, line.widthMaxPixels\n );\n\n // Compute extrusion offset.\n let extrusion: vec2<f32> = getExtrusionOffset(targetPos.xy - sourcePos.xy, positions.y, widthPixels);\n let offset: vec3<f32> = vec3<f32>(extrusion, 0.0);\n\n // Apply deck.gl filter functions.\n let filteredOffset = deckgl_filter_size(offset, geometry);\n let filteredP = deckgl_filter_gl_position(p, geometry);\n\n let clipOffset: vec2<f32> = project_pixel_size_to_clipspace(filteredOffset.xy);\n let finalPosition: vec4<f32> = filteredP + vec4<f32>(clipOffset, 0.0, 0.0);\n\n // Compute color.\n var vColor: vec4<f32> = vec4<f32>(instanceColors.rgb, instanceColors.a * color.opacity);\n // vColor = deckgl_filter_color(vColor, geometry);\n\n var output: Varyings;\n output.gl_Position = finalPosition;\n output.vColor = vColor;\n output.uv = uv;\n return output;\n}\n\n@fragment\nfn fragmentMain(\n @location(0) vColor: vec4<f32>,\n @location(1) uv: vec2<f32>\n) -> @location(0) vec4<f32> {\n // Create and initialize geometry with the provided uv.\n var geometry: Geometry;\n geometry.uv = uv;\n\n // Start with the input color.\n var fragColor: vec4<f32> = vColor;\n\n // Apply the deck.gl filter to the color.\n fragColor = deckgl_filter_color(fragColor, geometry);\n\n // Apply premultiplied alpha as required by transparent canvas\n fragColor = deckgl_premultiplied_alpha(fragColor);\n\n return fragColor;\n}\n',modules:[r,s,l,z]})}get wrapLongitude(){return!1}initializeState(){this.getAttributeManager().addInstanced({instanceSourcePositions:{size:3,type:"float64",fp64:this.use64bitPositions(),transition:!0,accessor:"getSourcePosition"},instanceTargetPositions:{size:3,type:"float64",fp64:this.use64bitPositions(),transition:!0,accessor:"getTargetPosition"},instanceColors:{size:this.props.colorFormat.length,type:"unorm8",transition:!0,accessor:"getColor",defaultValue:[0,0,0,255]},instanceWidths:{size:1,transition:!0,accessor:"getWidth",defaultValue:1}})}updateState(e){super.updateState(e),e.changeFlags.extensionsChanged&&(this.state.model?.destroy(),this.state.model=this._getModel(),this.getAttributeManager().invalidateAll())}draw({}){const{widthUnits:e,widthScale:t,widthMinPixels:n,widthMaxPixels:o,wrapLongitude:i}=this.props,r=this.state.model,s={widthUnits:c[e],widthScale:t,widthMinPixels:n,widthMaxPixels:o,useShortestPath:i?1:0};r.shaderInputs.setProps({line:s}),r.draw(this.context.renderPass),i&&(r.shaderInputs.setProps({line:{...s,useShortestPath:-1}}),r.draw(this.context.renderPass))}_getModel(){const e="webgpu"===this.context.device.type?{depthWriteEnabled:!0,depthCompare:"less-equal"}:void 0;return new u(this.context.device,{...this.getShaders(),id:this.props.id,bufferLayout:this.getAttributeManager().getBufferLayouts(),geometry:new n({topology:"triangle-strip",attributes:{positions:{size:3,value:new Float32Array([0,-1,0,0,1,0,1,-1,0,1,1,0])}}}),parameters:e,isInstanced:!0})}}j.layerName="LineLayer",j.defaultProps=O;class M extends t{_updateGeometry(){const e=new d;this.state.fillModel.setGeometry(e)}draw({}){const{elevationScale:e,extruded:t,offset:n,coverage:o,cellSize:i,angle:r,radiusUnits:s}=this.props,a=this.state.fillModel;a.shaderInputs.setProps({column:{radius:i/2,radiusUnits:c[s],angle:r,offset:n,extruded:t,stroked:!1,coverage:o,elevationScale:e,edgeDistance:1,isStroke:!1,widthUnits:0,widthScale:0,widthMinPixels:0,widthMaxPixels:0}}),a.draw(this.context.renderPass)}}M.layerName="GridCellLayer",M.defaultProps={cellSize:{type:"number",min:0,value:1e3},offset:{type:"array",value:[1,1]}};export{t as ColumnLayer,M as GridCellLayer,j as LineLayer}
@@ -1 +1 @@
1
- import{p as e,b as o}from"./p-BoNyIrdq.js";export{s as setNonce}from"./p-BoNyIrdq.js";import{g as a}from"./p-DQuL1Twl.js";(()=>{const o=import.meta.url,a={};return""!==o&&(a.resourcesUrl=new URL(".",o).href),e(a)})().then((async e=>(await a(),o([["p-e21ea0ce",[[769,"v-map-builder",{mapconfig:[1040]},null,{mapconfig:[{onMapConfigChanged:0}]}]]],["p-58dda864",[[513,"v-map-error",{for:[1],position:[513],autoDismiss:[2,"auto-dismiss"],max:[2],log:[1],toasts:[32]}]]],["p-08ad1392",[[769,"v-map-layer-terrain-geotiff",{loadState:[1537,"load-state"],url:[1],projection:[1],forceProjection:[4,"force-projection"],visible:[4],opacity:[2],zIndex:[2,"z-index"],nodata:[2],meshMaxError:[2,"mesh-max-error"],wireframe:[4],texture:[1],color:[16],colorMap:[1,"color-map"],valueRange:[16],elevationScale:[2,"elevation-scale"],renderMode:[1,"render-mode"],minZoom:[2,"min-zoom"],maxZoom:[2,"max-zoom"],tileSize:[2,"tile-size"],getError:[64],getLayerId:[64]},null,{url:[{onUrlChanged:0}],visible:[{onVisibleChanged:0}],opacity:[{onOpacityChanged:0}],zIndex:[{onZIndexChanged:0}],projection:[{onPropertyChanged:0}],forceProjection:[{onPropertyChanged:0}],nodata:[{onPropertyChanged:0}],meshMaxError:[{onPropertyChanged:0}],wireframe:[{onPropertyChanged:0}],texture:[{onPropertyChanged:0}],color:[{onPropertyChanged:0}],colorMap:[{onPropertyChanged:0}],valueRange:[{onPropertyChanged:0}],elevationScale:[{onPropertyChanged:0}],renderMode:[{onPropertyChanged:0}],minZoom:[{onPropertyChanged:0}],maxZoom:[{onPropertyChanged:0}],tileSize:[{onPropertyChanged:0}]}]]],["p-3a57b64a",[[513,"v-map-layercontrol",{for:[1],layerGroups:[32]}]]],["p-05ee633f",[[769,"v-map",{flavour:[513],center:[1],zoom:[2],useDefaultImportMap:[4,"use-default-import-map"],cssMode:[1,"css-mode"],isMapProviderReady:[64],setView:[64]},null,{flavour:[{onFlavourChanged:0}]}],[513,"v-map-layer-osm",{loadState:[1537,"load-state"],visible:[516],opacity:[514],zIndex:[514,"z-index"],url:[513],getError:[64],getLayerId:[64]},null,{visible:[{onVisibleChanged:0}],opacity:[{onOpacityChanged:0}],zIndex:[{onZIndexChanged:0}],url:[{onUrlChanged:0}]}],[769,"v-map-layergroup",{visible:[516],opacity:[514],basemapid:[513],getGroupId:[64]},null,{visible:[{onVisibleChanged:0}],basemapid:[{onBaseMapIdChanged:0}]}]]],["p-915314c0",[[769,"v-map-layer-geojson",{loadState:[1537,"load-state"],geojson:[1025],url:[513],visible:[516],zIndex:[514,"z-index"],opacity:[514],fillColor:[513,"fill-color"],fillOpacity:[514,"fill-opacity"],strokeColor:[513,"stroke-color"],strokeWidth:[514,"stroke-width"],strokeOpacity:[514,"stroke-opacity"],pointRadius:[514,"point-radius"],pointColor:[513,"point-color"],iconUrl:[513,"icon-url"],iconSize:[513,"icon-size"],textProperty:[513,"text-property"],textColor:[513,"text-color"],textSize:[514,"text-size"],getLayerId:[64],getError:[64]},[[4,"styleReady","onStyleReady"]],{geojson:[{onGeoJsonChanged:0}],url:[{onUrlChanged:0}],visible:[{onVisibleChanged:0}],opacity:[{onOpacityChanged:0}],zIndex:[{onZIndexChanged:0}],fillColor:[{onStyleChanged:0}],fillOpacity:[{onStyleChanged:0}],strokeColor:[{onStyleChanged:0}],strokeWidth:[{onStyleChanged:0}],strokeOpacity:[{onStyleChanged:0}],pointRadius:[{onStyleChanged:0}],pointColor:[{onStyleChanged:0}],iconUrl:[{onStyleChanged:0}],iconSize:[{onStyleChanged:0}],textProperty:[{onStyleChanged:0}],textColor:[{onStyleChanged:0}],textSize:[{onStyleChanged:0}]}],[513,"v-map-layer-geotiff",{loadState:[1537,"load-state"],url:[1],visible:[4],opacity:[2],zIndex:[2,"z-index"],nodata:[2],colorMap:[1,"color-map"],valueRange:[16],getError:[64],getLayerId:[64]},null,{url:[{onUrlChanged:0}],visible:[{onVisibleChanged:0}],opacity:[{onOpacityChanged:0}],zIndex:[{onZIndexChanged:0}],nodata:[{onNodataChanged:0}],colorMap:[{onColorMapChanged:0}],valueRange:[{onValueRangeChanged:0}]}],[513,"v-map-layer-google",{loadState:[1537,"load-state"],mapType:[513,"map-type"],apiKey:[513,"api-key"],language:[513],region:[513],visible:[516],opacity:[514],scale:[513],maxZoom:[514,"max-zoom"],styles:[1025],libraries:[513],getError:[64]},null,{styles:[{parseStyles:0}]}],[513,"v-map-layer-scatterplot",{loadState:[1537,"load-state"],data:[513],url:[513],getFillColor:[513,"get-fill-color"],getRadius:[514,"get-radius"],opacity:[514],visible:[516],getError:[64]}],[769,"v-map-layer-terrain",{loadState:[1537,"load-state"],elevationData:[513,"elevation-data"],texture:[513],elevationDecoder:[513,"elevation-decoder"],wireframe:[516],color:[513],minZoom:[514,"min-zoom"],maxZoom:[514,"max-zoom"],meshMaxError:[514,"mesh-max-error"],visible:[516],opacity:[514],zIndex:[514,"z-index"],didLoad:[32],getError:[64],isReady:[64]},null,{visible:[{onVisibleChanged:0}],opacity:[{onOpacityChanged:0}],zIndex:[{onZIndexChanged:0}],elevationData:[{onTerrainConfigChanged:0}],texture:[{onTerrainConfigChanged:0}],elevationDecoder:[{onTerrainConfigChanged:0}],wireframe:[{onTerrainConfigChanged:0}],color:[{onTerrainConfigChanged:0}],minZoom:[{onTerrainConfigChanged:0}],maxZoom:[{onTerrainConfigChanged:0}],meshMaxError:[{onTerrainConfigChanged:0}]}],[769,"v-map-layer-tile3d",{loadState:[1537,"load-state"],url:[513],tilesetOptions:[1,"tileset-options"],visible:[516],opacity:[514],zIndex:[514,"z-index"],didLoad:[32],isReady:[64],getError:[64]},[[4,"styleReady","onStyleReady"]],{url:[{onUrlChanged:0}],tilesetOptions:[{onTilesetOptionsChanged:0}],visible:[{onVisibleChanged:0}],opacity:[{onOpacityChanged:0}],zIndex:[{onZIndexChanged:0}]}],[769,"v-map-layer-wcs",{loadState:[1537,"load-state"],url:[513],coverageName:[513,"coverage-name"],format:[513],version:[513],projection:[513],resolutions:[513],params:[513],visible:[516],opacity:[514],zIndex:[514,"z-index"],didLoad:[32],getError:[64],isReady:[64]},null,{visible:[{onVisibleChanged:0}],opacity:[{onOpacityChanged:0}],zIndex:[{onZIndexChanged:0}],url:[{onSourceChanged:0}],coverageName:[{onSourceChanged:0}],format:[{onSourceChanged:0}],version:[{onSourceChanged:0}],projection:[{onSourceChanged:0}],resolutions:[{onSourceChanged:0}],params:[{onSourceChanged:0}]}],[769,"v-map-layer-wfs",{loadState:[1537,"load-state"],url:[513],typeName:[513,"type-name"],version:[513],outputFormat:[513,"output-format"],srsName:[513,"srs-name"],params:[513],visible:[516],opacity:[514],zIndex:[514,"z-index"],didLoad:[32],getError:[64],isReady:[64]},[[4,"styleReady","onStyleReady"]],{visible:[{onVisibleChanged:0}],opacity:[{onOpacityChanged:0}],zIndex:[{onZIndexChanged:0}],url:[{onSourceChanged:0}],typeName:[{onSourceChanged:0}],version:[{onSourceChanged:0}],outputFormat:[{onSourceChanged:0}],srsName:[{onSourceChanged:0}],params:[{onSourceChanged:0}]}],[513,"v-map-layer-wkt",{loadState:[1537,"load-state"],wkt:[513],url:[513],visible:[516],opacity:[514],zIndex:[514,"z-index"],fillColor:[513,"fill-color"],fillOpacity:[514,"fill-opacity"],strokeColor:[513,"stroke-color"],strokeWidth:[514,"stroke-width"],strokeOpacity:[514,"stroke-opacity"],pointRadius:[514,"point-radius"],pointColor:[513,"point-color"],iconUrl:[513,"icon-url"],iconSize:[513,"icon-size"],textProperty:[513,"text-property"],textColor:[513,"text-color"],textSize:[514,"text-size"],getError:[64],getLayerId:[64]},[[4,"styleReady","onStyleReady"]],{wkt:[{onWktChanged:0}],url:[{onUrlChanged:0}],visible:[{onVisibleChanged:0}],opacity:[{onOpacityChanged:0}],zIndex:[{onZIndexChanged:0}],fillColor:[{onStyleChanged:0}],fillOpacity:[{onStyleChanged:0}],strokeColor:[{onStyleChanged:0}],strokeWidth:[{onStyleChanged:0}],strokeOpacity:[{onStyleChanged:0}],pointRadius:[{onStyleChanged:0}],pointColor:[{onStyleChanged:0}],iconUrl:[{onStyleChanged:0}],iconSize:[{onStyleChanged:0}],textProperty:[{onStyleChanged:0}],textColor:[{onStyleChanged:0}],textSize:[{onStyleChanged:0}]}],[513,"v-map-layer-wms",{loadState:[1537,"load-state"],url:[513],layers:[513],styles:[513],format:[513],transparent:[516],tiled:[516],visible:[516],opacity:[514],zIndex:[514,"z-index"],getError:[64]},null,{visible:[{onVisibleChanged:0}],opacity:[{onOpacityChanged:0}],zIndex:[{onZIndexChanged:0}],url:[{onUrlChanged:0}],layers:[{onLayersChanged:0}],styles:[{onStylesChanged:0}]}],[513,"v-map-layer-xyz",{loadState:[1537,"load-state"],url:[513],attributions:[513],maxZoom:[514,"max-zoom"],tileSize:[514,"tile-size"],subdomains:[513],visible:[516],opacity:[514],getError:[64]}],[769,"v-map-style",{format:[513],src:[513],content:[513],layerTargets:[513,"layer-targets"],autoApply:[516,"auto-apply"],parsedStyle:[32],isLoading:[32],error:[32],getStyle:[64],getLayerTargetIds:[64]},null,{src:[{onStyleSourceChanged:0}],content:[{onStyleSourceChanged:0}],format:[{onStyleSourceChanged:0}]}]]]],e))));
1
+ import{p as e,b as o}from"./p-BoNyIrdq.js";export{s as setNonce}from"./p-BoNyIrdq.js";import{g as a}from"./p-DQuL1Twl.js";(()=>{const o=import.meta.url,a={};return""!==o&&(a.resourcesUrl=new URL(".",o).href),e(a)})().then((async e=>(await a(),o([["p-e21ea0ce",[[769,"v-map-builder",{mapconfig:[1040]},null,{mapconfig:[{onMapConfigChanged:0}]}]]],["p-58dda864",[[513,"v-map-error",{for:[1],position:[513],autoDismiss:[2,"auto-dismiss"],max:[2],log:[1],toasts:[32]}]]],["p-08ad1392",[[769,"v-map-layer-terrain-geotiff",{loadState:[1537,"load-state"],url:[1],projection:[1],forceProjection:[4,"force-projection"],visible:[4],opacity:[2],zIndex:[2,"z-index"],nodata:[2],meshMaxError:[2,"mesh-max-error"],wireframe:[4],texture:[1],color:[16],colorMap:[1,"color-map"],valueRange:[16],elevationScale:[2,"elevation-scale"],renderMode:[1,"render-mode"],minZoom:[2,"min-zoom"],maxZoom:[2,"max-zoom"],tileSize:[2,"tile-size"],getError:[64],getLayerId:[64]},null,{url:[{onUrlChanged:0}],visible:[{onVisibleChanged:0}],opacity:[{onOpacityChanged:0}],zIndex:[{onZIndexChanged:0}],projection:[{onPropertyChanged:0}],forceProjection:[{onPropertyChanged:0}],nodata:[{onPropertyChanged:0}],meshMaxError:[{onPropertyChanged:0}],wireframe:[{onPropertyChanged:0}],texture:[{onPropertyChanged:0}],color:[{onPropertyChanged:0}],colorMap:[{onPropertyChanged:0}],valueRange:[{onPropertyChanged:0}],elevationScale:[{onPropertyChanged:0}],renderMode:[{onPropertyChanged:0}],minZoom:[{onPropertyChanged:0}],maxZoom:[{onPropertyChanged:0}],tileSize:[{onPropertyChanged:0}]}]]],["p-3a57b64a",[[513,"v-map-layercontrol",{for:[1],layerGroups:[32]}]]],["p-fca86e74",[[769,"v-map",{flavour:[513],center:[1],zoom:[2],useDefaultImportMap:[4,"use-default-import-map"],cssMode:[1,"css-mode"],isMapProviderReady:[64],setView:[64]},null,{flavour:[{onFlavourChanged:0}],zoom:[{onZoomChanged:0}],center:[{onCenterChanged:0}]}],[513,"v-map-layer-osm",{loadState:[1537,"load-state"],visible:[516],opacity:[514],zIndex:[514,"z-index"],url:[513],getError:[64],getLayerId:[64]},null,{visible:[{onVisibleChanged:0}],opacity:[{onOpacityChanged:0}],zIndex:[{onZIndexChanged:0}],url:[{onUrlChanged:0}]}],[769,"v-map-layergroup",{visible:[516],opacity:[514],basemapid:[513],getGroupId:[64]},null,{visible:[{onVisibleChanged:0}],basemapid:[{onBaseMapIdChanged:0}]}]]],["p-915314c0",[[769,"v-map-layer-geojson",{loadState:[1537,"load-state"],geojson:[1025],url:[513],visible:[516],zIndex:[514,"z-index"],opacity:[514],fillColor:[513,"fill-color"],fillOpacity:[514,"fill-opacity"],strokeColor:[513,"stroke-color"],strokeWidth:[514,"stroke-width"],strokeOpacity:[514,"stroke-opacity"],pointRadius:[514,"point-radius"],pointColor:[513,"point-color"],iconUrl:[513,"icon-url"],iconSize:[513,"icon-size"],textProperty:[513,"text-property"],textColor:[513,"text-color"],textSize:[514,"text-size"],getLayerId:[64],getError:[64]},[[4,"styleReady","onStyleReady"]],{geojson:[{onGeoJsonChanged:0}],url:[{onUrlChanged:0}],visible:[{onVisibleChanged:0}],opacity:[{onOpacityChanged:0}],zIndex:[{onZIndexChanged:0}],fillColor:[{onStyleChanged:0}],fillOpacity:[{onStyleChanged:0}],strokeColor:[{onStyleChanged:0}],strokeWidth:[{onStyleChanged:0}],strokeOpacity:[{onStyleChanged:0}],pointRadius:[{onStyleChanged:0}],pointColor:[{onStyleChanged:0}],iconUrl:[{onStyleChanged:0}],iconSize:[{onStyleChanged:0}],textProperty:[{onStyleChanged:0}],textColor:[{onStyleChanged:0}],textSize:[{onStyleChanged:0}]}],[513,"v-map-layer-geotiff",{loadState:[1537,"load-state"],url:[1],visible:[4],opacity:[2],zIndex:[2,"z-index"],nodata:[2],colorMap:[1,"color-map"],valueRange:[16],getError:[64],getLayerId:[64]},null,{url:[{onUrlChanged:0}],visible:[{onVisibleChanged:0}],opacity:[{onOpacityChanged:0}],zIndex:[{onZIndexChanged:0}],nodata:[{onNodataChanged:0}],colorMap:[{onColorMapChanged:0}],valueRange:[{onValueRangeChanged:0}]}],[513,"v-map-layer-google",{loadState:[1537,"load-state"],mapType:[513,"map-type"],apiKey:[513,"api-key"],language:[513],region:[513],visible:[516],opacity:[514],scale:[513],maxZoom:[514,"max-zoom"],styles:[1025],libraries:[513],getError:[64]},null,{styles:[{parseStyles:0}]}],[513,"v-map-layer-scatterplot",{loadState:[1537,"load-state"],data:[513],url:[513],getFillColor:[513,"get-fill-color"],getRadius:[514,"get-radius"],opacity:[514],visible:[516],getError:[64]}],[769,"v-map-layer-terrain",{loadState:[1537,"load-state"],elevationData:[513,"elevation-data"],texture:[513],elevationDecoder:[513,"elevation-decoder"],wireframe:[516],color:[513],minZoom:[514,"min-zoom"],maxZoom:[514,"max-zoom"],meshMaxError:[514,"mesh-max-error"],visible:[516],opacity:[514],zIndex:[514,"z-index"],didLoad:[32],getError:[64],isReady:[64]},null,{visible:[{onVisibleChanged:0}],opacity:[{onOpacityChanged:0}],zIndex:[{onZIndexChanged:0}],elevationData:[{onTerrainConfigChanged:0}],texture:[{onTerrainConfigChanged:0}],elevationDecoder:[{onTerrainConfigChanged:0}],wireframe:[{onTerrainConfigChanged:0}],color:[{onTerrainConfigChanged:0}],minZoom:[{onTerrainConfigChanged:0}],maxZoom:[{onTerrainConfigChanged:0}],meshMaxError:[{onTerrainConfigChanged:0}]}],[769,"v-map-layer-tile3d",{loadState:[1537,"load-state"],url:[513],tilesetOptions:[1,"tileset-options"],visible:[516],opacity:[514],zIndex:[514,"z-index"],didLoad:[32],isReady:[64],getError:[64]},[[4,"styleReady","onStyleReady"]],{url:[{onUrlChanged:0}],tilesetOptions:[{onTilesetOptionsChanged:0}],visible:[{onVisibleChanged:0}],opacity:[{onOpacityChanged:0}],zIndex:[{onZIndexChanged:0}]}],[769,"v-map-layer-wcs",{loadState:[1537,"load-state"],url:[513],coverageName:[513,"coverage-name"],format:[513],version:[513],projection:[513],resolutions:[513],params:[513],visible:[516],opacity:[514],zIndex:[514,"z-index"],didLoad:[32],getError:[64],isReady:[64]},null,{visible:[{onVisibleChanged:0}],opacity:[{onOpacityChanged:0}],zIndex:[{onZIndexChanged:0}],url:[{onSourceChanged:0}],coverageName:[{onSourceChanged:0}],format:[{onSourceChanged:0}],version:[{onSourceChanged:0}],projection:[{onSourceChanged:0}],resolutions:[{onSourceChanged:0}],params:[{onSourceChanged:0}]}],[769,"v-map-layer-wfs",{loadState:[1537,"load-state"],url:[513],typeName:[513,"type-name"],version:[513],outputFormat:[513,"output-format"],srsName:[513,"srs-name"],params:[513],visible:[516],opacity:[514],zIndex:[514,"z-index"],didLoad:[32],getError:[64],isReady:[64]},[[4,"styleReady","onStyleReady"]],{visible:[{onVisibleChanged:0}],opacity:[{onOpacityChanged:0}],zIndex:[{onZIndexChanged:0}],url:[{onSourceChanged:0}],typeName:[{onSourceChanged:0}],version:[{onSourceChanged:0}],outputFormat:[{onSourceChanged:0}],srsName:[{onSourceChanged:0}],params:[{onSourceChanged:0}]}],[513,"v-map-layer-wkt",{loadState:[1537,"load-state"],wkt:[513],url:[513],visible:[516],opacity:[514],zIndex:[514,"z-index"],fillColor:[513,"fill-color"],fillOpacity:[514,"fill-opacity"],strokeColor:[513,"stroke-color"],strokeWidth:[514,"stroke-width"],strokeOpacity:[514,"stroke-opacity"],pointRadius:[514,"point-radius"],pointColor:[513,"point-color"],iconUrl:[513,"icon-url"],iconSize:[513,"icon-size"],textProperty:[513,"text-property"],textColor:[513,"text-color"],textSize:[514,"text-size"],getError:[64],getLayerId:[64]},[[4,"styleReady","onStyleReady"]],{wkt:[{onWktChanged:0}],url:[{onUrlChanged:0}],visible:[{onVisibleChanged:0}],opacity:[{onOpacityChanged:0}],zIndex:[{onZIndexChanged:0}],fillColor:[{onStyleChanged:0}],fillOpacity:[{onStyleChanged:0}],strokeColor:[{onStyleChanged:0}],strokeWidth:[{onStyleChanged:0}],strokeOpacity:[{onStyleChanged:0}],pointRadius:[{onStyleChanged:0}],pointColor:[{onStyleChanged:0}],iconUrl:[{onStyleChanged:0}],iconSize:[{onStyleChanged:0}],textProperty:[{onStyleChanged:0}],textColor:[{onStyleChanged:0}],textSize:[{onStyleChanged:0}]}],[513,"v-map-layer-wms",{loadState:[1537,"load-state"],url:[513],layers:[513],styles:[513],format:[513],transparent:[516],tiled:[516],visible:[516],opacity:[514],zIndex:[514,"z-index"],getError:[64]},null,{visible:[{onVisibleChanged:0}],opacity:[{onOpacityChanged:0}],zIndex:[{onZIndexChanged:0}],url:[{onUrlChanged:0}],layers:[{onLayersChanged:0}],styles:[{onStylesChanged:0}]}],[513,"v-map-layer-xyz",{loadState:[1537,"load-state"],url:[513],attributions:[513],maxZoom:[514,"max-zoom"],tileSize:[514,"tile-size"],subdomains:[513],visible:[516],opacity:[514],getError:[64]}],[769,"v-map-style",{format:[513],src:[513],content:[513],layerTargets:[513,"layer-targets"],autoApply:[516,"auto-apply"],parsedStyle:[32],isLoading:[32],error:[32],getStyle:[64],getLayerTargetIds:[64]},null,{src:[{onStyleSourceChanged:0}],content:[{onStyleSourceChanged:0}],format:[{onStyleSourceChanged:0}]}]]]],e))));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@npm9912/v-map",
3
- "version": "0.2.4",
3
+ "version": "0.4.0",
4
4
  "description": "Provider-agnostische Web-Mapping-Komponentenbibliothek auf Basis von Stencil.js — unterstützt OpenLayers, Cesium, Leaflet und Deck.gl über ein einheitliches deklaratives Web-Component-API.",
5
5
  "keywords": [
6
6
  "map",
@@ -72,7 +72,8 @@
72
72
  "docs:stencil": "stencil build --docs",
73
73
  "docs:ts": "typedoc",
74
74
  "docs:api": "node scripts/generate-api-docs.mjs",
75
- "docs:build": "pnpm docs:stencil && pnpm docs:ts && pnpm docs:api && vitepress build docs",
75
+ "docs:examples": "node scripts/build-examples.mjs",
76
+ "docs:build": "pnpm docs:stencil && pnpm docs:ts && pnpm docs:api && pnpm docs:examples && vitepress build docs",
76
77
  "docs:dev": "vitepress dev docs",
77
78
  "docs:preview": "vitepress preview docs",
78
79
  "docs:pdf": "press-export-pdf export docs",
@@ -1 +0,0 @@
1
- export{V as v_map,a as v_map_layer_osm,b as v_map_layergroup}from"./p-2-mR3oVa.js";import"./p-BoNyIrdq.js";import"./p-QJHuuz0g.js";import"./p-CrV_misM.js";import"./p-DVBtCUtQ.js";
@@ -1 +0,0 @@
1
- import{r as t,c as e,g as s,h as a}from"./p-BoNyIrdq.js";import{l as i,M as n}from"./p-QJHuuz0g.js";import{V as o}from"./p-CrV_misM.js";import{V as r}from"./p-DVBtCUtQ.js";const l="1.139.1",h="10.8.0",d="1.9.4",c=()=>"undefined"!=typeof window&&"undefined"!=typeof document,p=()=>c()&&"adoptedStyleSheets"in document&&"function"==typeof CSSStyleSheet.prototype.replaceSync;function u(t){"undefined"!=typeof requestAnimationFrame?requestAnimationFrame(t):setTimeout(t,0)}function m(t,e,s){if(void 0!==globalThis.ResizeObserver){const s=new globalThis.ResizeObserver((()=>e()));return s.observe(t),()=>s.disconnect()}const a=()=>u(e);let i;"undefined"!=typeof window&&window.addEventListener("resize",a),"undefined"!=typeof MutationObserver&&(i=new MutationObserver((()=>u(e))),s?i.observe(t,s):i.observe(t));const n="undefined"==typeof window?void 0:setInterval((()=>e()),250);return()=>{"undefined"!=typeof window&&window.removeEventListener("resize",a),i?.disconnect(),n&&clearInterval(n)}}const y={async init(){},async destroy(){},async setOpacity(){},async setVisible(){},async setZIndex(){},addLayerToGroup:async()=>null,async updateLayer(){},async removeLayer(){},async setView(){},addBaseLayer:async()=>null,async setBaseLayer(){},async ensureGroup(){},async setGroupVisible(){}},g="v-map - ",w=class{constructor(s){t(this,s),this.mapProviderReady=e(this,"mapProviderReady",5)}get el(){return s(this)}flavour="ol";center="0,0";zoom=2;useDefaultImportMap=!0;cssMode="cdn";mapProviderReady;mapProvider;mapState="unavailable";mapContainer;unsubscribeResize;unsubscribePointerMove=null;async onFlavourChanged(t,e){i(g+"onFlavourChanged"),t!==e&&this.reset()}reset(){this.unsubscribeResize?.(),this.unsubscribePointerMove?.(),this.unsubscribePointerMove=null;const t=this.mapProvider;this.mapProvider=null,this.el.__vMapProvider=null,this.el.dispatchEvent(new CustomEvent(o.MapProviderWillShutdown,{detail:{mapProvider:y},bubbles:!1,composed:!1,cancelable:!0})),t?.destroy(),this.mapState="unavailable"}async createMap(){if(this.mapContainer=this.ensureContainer(),"creating"===this.mapState)return void i("Map already in creating state.");this.mapState="creating",this.mapProvider=await async function(t){try{switch(t){case"ol":{const{OpenLayersProvider:t}=await import("./p-CbiLpFhO.js");return new t}case"cesium":{const{CesiumProvider:t}=await import("./p-G6iftXUC.js");return new t}case"deck":{const{DeckProvider:t}=await import("./p-9Rt23jlQ.js").then((function(t){return t.aX}));return new t}case"leaflet":{const{LeafletProvider:t}=await import("./p-Ci70E1EM.js");return new t}default:return function(t,e){throw new Error(e??`Unbekannte Engine: ${String(t)}`)}(t,`Unbekannte Engine: ${t}`)}}catch(t){throw i(t),t}}(this.flavour);const t={zoom:this.zoom};if(this.center){const e=this.center.split(",").map(parseFloat),[s,a]=e;if(!Number.isFinite(s)||!Number.isFinite(a))throw new Error(`<v-map>: Ungültiges center-Prop: "${this.center}" (erwartet "lon,lat")`);t.center=e}const e={target:this.mapContainer,shadowRoot:this.el.shadowRoot,mapInitOptions:t,cssMode:this.cssMode};await this.mapProvider.init(e),this.mapState="available",this.el.__vMapProvider=this.mapProvider,this.unsubscribeResize=m(this.el,(async()=>{await(this.mapProvider?.setView(t.center,t.zoom))})),this.el.dispatchEvent(new CustomEvent(o.MapProviderReady,{detail:{mapProvider:this.mapProvider},bubbles:!1,composed:!1,cancelable:!0})),this.mapProvider?.onPointerMove&&(this.unsubscribePointerMove=this.mapProvider.onPointerMove(((t,e)=>{this.el.dispatchEvent(new CustomEvent(o.MapMouseMove,{detail:{coordinate:t,pixel:e},bubbles:!0,composed:!0}))})))}async componentWillLoad(){i(g+n.COMPONENT_WILL_LOAD),this.useDefaultImportMap&&(i(g+n.COMPONENT_WILL_LOAD+" - useDefaultImportMap"),function({allowOverride:t=!0}={}){if(!(t&&document.querySelector('script[type="importmap"]')||document.querySelector('script[type="importmap"][data-v-map]'))){const t=document.createElement("script");t.type="importmap",t.dataset.vMap="true",t.textContent='{\n "imports": {\n "ol/": "https://esm.sh/ol@10.8.0/",\n "ol": "https://esm.sh/ol@10.8.0",\n "leaflet": "https://esm.sh/leaflet@1.9.4",\n "deck": "https://esm.sh/deck@9.2.11",\n "@loaders.gl/core": "https://esm.sh/@loaders.gl/core@4.3.4",\n "@loaders.gl/3d-tiles": "https://esm.sh/@loaders.gl/3d-tiles@4.3.4",\n "@loaders.gl/gis": "https://esm.sh/@loaders.gl/gis@4.3.4",\n "@loaders.gl/gltf": "https://esm.sh/@loaders.gl/gltf@4.3.4",\n "@loaders.gl/images": "https://esm.sh/@loaders.gl/images@4.3.4",\n "@loaders.gl/loader-utils": "https://esm.sh/@loaders.gl/loader-utils@4.3.4",\n "@loaders.gl/mvt": "https://esm.sh/@loaders.gl/mvt@4.3.4",\n "@loaders.gl/schema": "https://esm.sh/@loaders.gl/schema@4.3.4",\n "@loaders.gl/terrain": "https://esm.sh/@loaders.gl/terrain@4.3.4",\n "@loaders.gl/textures": "https://esm.sh/@loaders.gl/textures@4.3.4",\n "@loaders.gl/tiles": "https://esm.sh/@loaders.gl/tiles@4.3.4",\n "@loaders.gl/wms": "https://esm.sh/@loaders.gl/wms@4.3.4"\n }\n}',document.head.appendChild(t)}}())}async componentWillRender(){i(g+n.COMPONENT_WILL_RENDER)}async componentDidRender(){i(g+n.COMPONENT_DID_RENDER),await this.createMap(),this.el.addEventListener(o.MapProviderReady,(t=>{i(g+"test - event: ",t)}))}disconnectedCallback(){i(g+n.COMPONENT_DISCONNECTED_CALLBACK),this.reset()}async isMapProviderReady(){const t=null!=this.mapProvider&&this.mapProvider!==y;return t||i(g+"Map provider not yet ready."),t}async setView(t,e){if(!this.mapProvider||this.mapProvider==y)throw new Error(g+"Map-Provider noch nicht initialisiert.");await Promise.resolve(this.mapProvider?.setView(t,e))}ensureContainer(){let t=this.el.shadowRoot.querySelector("#map");return t||(t=document.createElement("div"),t.id="map",t.style.cssText="position:relative;width:100%;height:100%;display:block;",this.el.shadowRoot.appendChild(t)),t}render(){return i(g+n.COMPONENT_RENDER),a("div",{key:"41aca26c5cab5a3d7fef6169e9c4b8d27c7e65db"},a("slot",{key:"4b04986c721a478cdfb900491e44106778c07df7"}))}static get watchers(){return{flavour:[{onFlavourChanged:0}]}}};w.style=":host{display:block;position:relative}";const f="v-map-layer-osm - ",b=class{constructor(s){t(this,s),this.ready=e(this,"ready",7)}get el(){return s(this)}loadState="idle";visible=!0;opacity=1;zIndex=10;url="https://tile.openstreetmap.org";ready;didLoad=!1;hasLoadedOnce=!1;helper;setLoadState(t){this.loadState=t}async getError(){return this.helper?.getError()}async onVisibleChanged(){i(f+"onVisibleChanged"),await(this.helper?.setVisible(this.visible))}async onOpacityChanged(){i(f+"onOpacityChanged"),await(this.helper?.setOpacity(this.opacity))}async onZIndexChanged(){i(f+"onZIndexChanged"),await(this.helper?.setZIndex(this.zIndex))}async onUrlChanged(t,e){i(f+"onUrlChanged"),t!==e&&await(this.helper?.updateLayer({type:"osm",data:{url:this.url}}))}isReady(){return this.didLoad}async getLayerId(){return this.helper?.getLayerId()}createLayerConfig(){return{type:"osm",url:this.url,visible:this.visible,zIndex:this.zIndex,opacity:this.opacity}}async connectedCallback(){i(f+n.COMPONENT_CONNECTED_CALLBACK),this.hasLoadedOnce&&(this.helper.startLoading(),await this.helper.initLayer((()=>this.createLayerConfig()),this.el.id))}async componentWillLoad(){i(f+n.COMPONENT_WILL_LOAD),this.helper=new r(this.el,this)}async componentDidLoad(){i(f+n.COMPONENT_DID_LOAD),this.helper.startLoading(),await this.helper.initLayer((()=>this.createLayerConfig()),this.el.id),this.hasLoadedOnce=!0,this.didLoad=!0,this.ready.emit()}async componentWillRender(){i(f+n.COMPONENT_WILL_RENDER)}async disconnectedCallback(){i(f+n.COMPONENT_DISCONNECTED_CALLBACK),await(this.helper?.dispose())}render(){}static get watchers(){return{visible:[{onVisibleChanged:0}],opacity:[{onOpacityChanged:0}],zIndex:[{onZIndexChanged:0}],url:[{onUrlChanged:0}]}}};b.style=":host{display:none;}";const v="v-map-layergroup - ",C=class{constructor(e){t(this,e)}get el(){return s(this)}visible=!0;opacity=1;basemapid=null;mapProvider=null;groupId=crypto.randomUUID();async onVisibleChanged(){i(v+"onVisibleChanged"),this.mapProvider?.setGroupVisible&&await this.mapProvider.setGroupVisible(this.groupId,this.visible)}async onBaseMapIdChanged(){i(v+"onBaseMapIdChanged"),this.mapProvider?.setBaseLayer&&await this.mapProvider.setBaseLayer(this.groupId,this.basemapid)}async init(t){null==this.mapProvider&&(this.mapProvider=t,null!==this.mapProvider&&(this.mapProvider?.ensureGroup&&await this.mapProvider.ensureGroup(this.groupId,this.visible,{basemapid:this.basemapid}),await(this.mapProvider?.setGroupVisible(this.groupId,this.visible)),await(this.mapProvider?.setBaseLayer(this.groupId,this.basemapid))))}async connectedCallback(){i(v+n.COMPONENT_CONNECTED_CALLBACK);const t=this.el.closest("v-map");await customElements.whenDefined("v-map");const e=t;if(!0===await(t?.isMapProviderReady?.())){const e=t?.__vMapProvider??null;await this.init(e)}e?.addEventListener(o.MapProviderReady,(async t=>{i(`${v}map provider ready`);const e=t.detail;await this.init(e.mapProvider)})),e?.addEventListener(o.MapProviderWillShutdown,(async()=>{i(`${v}map provider shutting down`),this.mapProvider=null}))}async componentWillLoad(){i(v+n.COMPONENT_WILL_LOAD)}async componentDidLoad(){i(v+n.COMPONENT_DID_LOAD)}async componentWillRender(){i(v+n.COMPONENT_WILL_RENDER)}async getGroupId(){return this.groupId}render(){return a("slot",{key:"cffd8e9ece1377275f6d23503004eeffafa4cfcd"})}static get watchers(){return{visible:[{onVisibleChanged:0}],basemapid:[{onBaseMapIdChanged:0}]}}};C.style=":host{display:none;}";export{l as C,d as L,h as O,w as V,b as a,C as b,c as i,p as s,m as w}
@@ -1 +0,0 @@
1
- import e from"ol/Map";import t from"ol/View";import r from"ol/layer/Vector";import o from"ol/layer/Group";import s from"ol/layer/Tile";import n from"ol/layer/Image";import a from"ol/source/Vector";import i from"ol/source/TileWMS";import c from"ol/source/OSM";import l from"ol/source/XYZ";import u from"ol/source/Google";import f from"ol/source/TileArcGISRest";import w from"ol/Image";import y from"ol/source/Image";import h from"ol/format/GeoJSON";import p from"ol/format/GML2";import m from"ol/format/GML3";import d from"ol/format/GML32";import g from"ol/format/WKT";import b from"ol/control/Control";import S from"ol/style/Style";import L from"ol/style/Fill";import j from"ol/style/Stroke";import G from"ol/style/Circle";import I from"ol/style/Icon";import v from"ol/style/Text";import{bbox as E}from"ol/loadingstrategy";import{get as k,fromLonLat as F}from"ol/proj";import{D as $}from"./p-B-bAcABs.js";import{w as P,e as T,l as x}from"./p-QJHuuz0g.js";import{O as C}from"./p-2-mR3oVa.js";import W from"./p-RpJarvr_.js";import M from"ol/source/GeoTIFF";import{g as O}from"./p-CXfA_q8m.js";import{register as R}from"ol/proj/proj4";import A from"ol/layer/WebGLTile";import"./p-BoNyIrdq.js";import"./p-CrV_misM.js";import"./p-DVBtCUtQ.js";import"./p-E-ZsRS8r.js";async function N(e){return class extends M{geoKeys_=null;constructor(){super(e)}async getGeoKeys(){if(null!==this.geoKeys_)return this.geoKeys_;await this.getView();const e=this.sourceImagery_;return e&&e.length>0&&this.determineGeoKeys(e),this.geoKeys_}determineGeoKeys(e){if(!e||0===e.length)return;const t=e[0];for(let e=t.length-1;e>=0;--e){const o="function"==typeof(r=t[e]).getGeoKeys?r.getGeoKeys()||null:r.geoKeys||null;if(o){this.geoKeys_=o;break}}var r}async getProjectionParameters(){const e=await this.getGeoKeys();return e?O.toProj4(e):null}async getProj4String(){const e=await this.getProjectionParameters();return e&&e.proj4||null}async registerProjectionIfNeeded(){try{const e=await this.getProj4String(),t=this.getProjection()?.getCode();return k(t)||(null===e?(P(`Can not get proj string for code: ${t}`),null):(W.defs(t,e),R(W),k(t)))}catch(e){return T("Fehler bei der Registrierung der Projektion:",e),null}}}}class z{map;layers=[];baseLayers=[];googleLogoAdded=!1;projection="EPSG:3857";layerErrorCallbacks=new globalThis.Map;layerErrorCleanups=new globalThis.Map;async init(r){await async function(e){if(!e)return;const t="ol-css-sheet";if(e.querySelector(`style[data-id="${t}"]`))return;const r=`https://cdn.jsdelivr.net/npm/ol@${C}/ol.css`,o=await(await fetch(r)).text();if("adoptedStyleSheets"in Document.prototype){const t=new CSSStyleSheet;await t.replace(o),e.adoptedStyleSheets=[...e.adoptedStyleSheets??[],t]}else{const r=document.createElement("style");r.setAttribute("data-id",t),r.textContent=o,e.appendChild(r)}}(r.shadowRoot),Object.assign(r.target.style,{width:"100%",height:"100%",position:"relative",background:"#fff"}),this.map=new e({target:r.target,layers:[],view:new t({projection:this.projection,center:F(r?.mapInitOptions?.center??[0,0]),zoom:r?.mapInitOptions?.zoom??2})}),new ResizeObserver((()=>this.map?.updateSize())).observe(r.target)}async destroy(){this.map?.setTarget(void 0),this.map=void 0}async updateLayer(e,t){const r=await this._getLayerById(e);switch(t.type){case"geojson":await this.updateGeoJSONLayer(r,t.data);break;case"osm":await this.updateOSMLayer(r,t.data);break;case"wms":await this.updateWMSLayer(r,t.data);break;case"wfs":await this.updateWFSLayer(r,t.data);break;case"wcs":await this.updateWCSLayer(r,t.data);break;case"arcgis":await this.updateArcGISLayer(r,t.data);break;case"wkt":await this.updateWKTLayer(r,t.data);break;case"geotiff":await this.updateGeoTIFFLayer(r,t.data)}}async ensureGroup(e,t,r){await this._ensureGroup(e,t)}async _ensureGroup(e,t){if(!this.map)return null;let r=this.layers.find((t=>t.get?.("groupId")===e));return r||(r=new o({layers:[],properties:{groupId:e,visible:void 0===typeof t||t}}),this.map.addLayer(r),this.layers.push(r)),r}async setBaseLayer(e,t){if(null===t)return void x("ol - setBaseLayer - layerElementId is null.");const r=this.layers.find((t=>t.get?.("groupId")===e)),o=this.baseLayers.find((e=>e.get("layerElementId")===t));void 0!==o?(r.getLayers().clear(),r.getLayers().push(o)):x("ol - setBaseLayer - layer not found. layerElementId: "+t)}async addBaseLayer(e,t,r){if(null==r)return x("ol - addBaseLayer - layerElementId not set."),null;null==t&&x("ol - addBaseLayer - basemapid not set.");const o=await this._ensureGroup(e.groupId,e.groupVisible);if(null==o)return null;o.set("basemap",!0,!1);const s=await this.createLayer(e);if(null==s)return null;s.set("group",o),this.baseLayers.push(s);let n=null;if(s){n=crypto.randomUUID(),s.set("id",n,!1),s.set("layerElementId",r,!1);const a=e;void 0!==a.opacity&&s.setOpacity(a.opacity),void 0!==a.zIndex&&s.setZIndex(a.zIndex),a.visible?s.setVisible(!0):!1===a.visible&&s.setVisible(!1),t===r&&(o.getLayers().clear(),o.getLayers().push(s))}return n}async addLayerToGroup(e){const t=await this._ensureGroup(e.groupId,e.groupVisible);if(null==t)return null;const r=await this.createLayer(e);if(null===r)return null;r.set("group",t),t.getLayers().push(r);const o=crypto.randomUUID();r.set("id",o,!1);const s=e;return void 0!==s.opacity&&r.setOpacity(s.opacity),void 0!==s.zIndex&&r.setZIndex(s.zIndex),s.visible?r.setVisible(!0):!1===s.visible&&r.setVisible(!1),o}async createLayer(e){switch(e.type){case"geojson":return this.createGeoJSONLayer(e);case"xyz":return this.createXYZLayer(e);case"google":return this.createGoogleLayer(e);case"osm":return this.createOSMLayer(e);case"wms":return this.createWMSLayer(e);case"wfs":return this.createWFSLayer(e);case"wcs":return this.createWCSLayer(e);case"arcgis":return this.createArcGISLayer(e);case"wkt":return this.createWKTLayer(e);case"geotiff":return this.createGeoTIFFLayer(e);default:throw new Error(`Unsupported layer type: ${e.type}`)}}async updateWMSLayer(e,t){e.setSource(new i({url:t.url,params:{LAYERS:t.layers,TILED:!0,...t.extraParams??{}}}))}async updateOSMLayer(e,t){let r="https://tile.openstreetmap.org/{z}/{x}/{y}.png";t.url&&(r=t.url+"/{z}/{x}/{y}.png"),e.setSource(new c({url:r}))}async updateGeoJSONLayer(e,t){let r=null;const o={featureProjection:this.projection};if(t.geojson){const e=JSON.parse(t.geojson);r=new a({features:new h(o).readFeatures(e)})}else r=new a({url:t.url,format:new h(o)});let s;e.setSource(r),t.geostylerStyle?s=await this.createGeostylerStyleFunction(t.geostylerStyle):t.style&&(s=await this.createEnhancedStyleFunction(t.style)),s&&e.setStyle(s)}async updateWFSLayer(e,t){const r=this.mergeLayerConfig(e,"wfsConfig",t),o=await this.createWFSSpource(r);let s;e.setSource(o),r.geostylerStyle?s=await this.createGeostylerStyleFunction(r.geostylerStyle):r.style&&(s=await this.createEnhancedStyleFunction(r.style)),s&&e.setStyle(s)}async updateWCSLayer(e,t){const r=this.mergeLayerConfig(e,"wcsConfig",t),o=await this.createWcsSource(r);e.setSource(o)}async updateArcGISLayer(e,t){const r=e,o=r.getSource(),s={...o?.getParams?.()??{},...t?.params??{}};t?.token&&(s.token=t.token);const n={url:t?.url??o?.getUrls?.()?.[0],params:s,...t?.options??{}},a=new f(n);r.setSource(a)}async createEnhancedStyleFunction(e){function t(e,t){if(e.startsWith("rgba")){const r=e.match(/rgba?\((\d+),\s*(\d+),\s*(\d+)/);if(r){const[,e,o,s]=r;return`rgba(${e}, ${o}, ${s}, ${t})`}}else if(e.startsWith("rgb")){const r=e.match(/rgb\((\d+),\s*(\d+),\s*(\d+)\)/);if(r){const[,e,o,s]=r;return`rgba(${e}, ${o}, ${s}, ${t})`}}else if(e.startsWith("#")){const r=e.slice(1);return`rgba(${parseInt(r.slice(0,2),16)}, ${parseInt(r.slice(2,4),16)}, ${parseInt(r.slice(4,6),16)}, ${t})`}return e}return r=>{const o=[],s=r.getGeometry().getType(),n=new L({color:t(e.fillColor??"rgba(0,100,255,0.3)",e.fillOpacity??.3)}),a=e.strokeWidth??2,i=new j({color:t(e.strokeColor??"rgba(0,100,255,1)",e.strokeOpacity??1),width:a,lineDash:e.strokeDashArray});if(o.push(new S("Point"===s?e.iconUrl?{image:new I({src:e.iconUrl,size:e.iconSize||[32,32],anchor:e.iconAnchor||[.5,1]})}:{image:new G({radius:e.pointRadius??6,fill:new L({color:t(e.pointColor??"rgba(0,100,255,1)",e.pointOpacity??1)}),stroke:i})}:{fill:s.includes("Polygon")?n:void 0,stroke:i})),e.textProperty&&r.get(e.textProperty)){const t=e.textColor??"#000000",s=e.textSize??12,n=e.textHaloColor,a=e.textHaloWidth??2,i=e.textOffset||[0,0];o.push(new S({text:new v({text:String(r.get(e.textProperty)),font:`${s}px Arial`,fill:new L({color:t}),stroke:n?new j({color:n,width:a}):void 0,offsetX:i[0],offsetY:i[1]})}))}return o}}async createGeoJSONLayer(e){let t=null;const o={featureProjection:this.projection};if(e.geojson){const r=JSON.parse(e.geojson);t=new a({features:new h(o).readFeatures(r)})}else t=new a({url:e.url,format:new h(o)});let s;if(e.geostylerStyle)s=await this.createGeostylerStyleFunction(e.geostylerStyle);else{const t=e.style?{...$,...e.style}:$;s=await this.createEnhancedStyleFunction(t)}return new r({source:t,style:s})}async createWFSSpource(e){const t=(e.outputFormat??"application/json").toLowerCase();let r=new h;switch(t){case"gml2":r=new p;break;case"gml3":r=new m;break;case"gml32":r=new d}const o=this.getWFSGetFeatureUrl(e);return new a({format:r,url:o,strategy:E})}async createWFSLayer(e){const t=await this.createWFSSpource(e);let o;if(e.geostylerStyle)o=await this.createGeostylerStyleFunction(e.geostylerStyle);else{const t=e.style?{...$,...e.style}:$;o=await this.createEnhancedStyleFunction(t)}const s=new r({source:t,style:o});return s.set("wfsConfig",e,!1),s}async createGeostylerStyleFunction(e){const t=(e,t)=>null==e||"object"==typeof e&&e.name?t:e;return r=>{const o=[],s=r.getGeometry().getType();if(e.rules)for(const n of e.rules)if(n.symbolizers)for(const e of n.symbolizers)switch(e.kind){case"Fill":if(s.includes("Polygon")){const r=t(e.color,"rgba(0,100,255,0.3)"),s=t(e.outlineColor),n=t(e.outlineWidth,1);o.push(new S({fill:new L({color:r}),stroke:s?new j({color:s,width:n}):void 0}))}break;case"Line":{const r=t(e.color,"rgba(0,100,255,1)"),s=t(e.width,1),n=e.dasharray&&Array.isArray(e.dasharray)?e.dasharray.map((e=>t(e,0))):void 0;o.push(new S({stroke:new j({color:r,width:s,lineDash:n})}))}break;case"Mark":if("Point"===s){const r=t(e.color,"rgba(0,100,255,1)"),s=t(e.radius,6),n=t(e.strokeColor),a=t(e.strokeWidth,1);o.push(new S({image:new G({radius:s,fill:new L({color:r}),stroke:n?new j({color:n,width:a}):void 0})}))}break;case"Icon":if("Point"===s){const r=t(e.image),s=t(e.size,32),n=t(e.opacity,1);r&&"string"==typeof r&&o.push(new S({image:new I({src:r,size:[s,s],opacity:n})}))}break;case"Text":{const s=e,n=t(s.label);if(n&&r.get(n)){const e=t(s.color,"#000000"),a=t(s.size,12),i=t(s.font?.[0],"Arial"),c=t(s.haloColor),l=t(s.haloWidth,1),u=s.offset,f=u&&Array.isArray(u)?t(u[0],0):0,w=u&&Array.isArray(u)?t(u[1],0):0;o.push(new S({text:new v({text:String(r.get(n)),font:`${a}px ${i}`,fill:new L({color:e}),stroke:c?new j({color:c,width:l}):void 0,offsetX:f,offsetY:w})}))}}}return o.length>0?o:void 0}}async createXYZLayer(e){return new s({source:new l({url:e.url,attributions:e.attributions,maxZoom:e.maxZoom??19,...e.options??{}})})}async createGoogleLayer(e){if(!e.apiKey)throw new Error("Google-Layer benötigt 'apiKey' (Google Maps Platform).");const t=new u({key:e.apiKey,mapType:e.mapType??"roadmap",scale:e.scale??"scaleFactor2x",highDpi:e.highDpi??!0,language:e.language,region:e.region,imageFormat:e.imageFormat,styles:e.styles,layerTypes:e.layerTypes});t.on("change",(()=>{if("error"===t.getState()){const e=t.getError();T("Google source error",e),this.map.getTargetElement()?.dispatchEvent(new CustomEvent("google-source-error",{detail:{message:e??"Google source error"},bubbles:!0,composed:!0}))}}));const r=new s({source:t});if(!this.googleLogoAdded){class e extends b{constructor(){const e=document.createElement("img");e.style.pointerEvents="none",e.style.position="absolute",e.style.bottom="5px",e.style.left="5px",e.style.height="18px",e.alt="Google",e.src="https://developers.google.com/static/maps/documentation/images/google_on_white.png",super({element:e})}}this.map.addControl(new e),this.googleLogoAdded=!0}return r}async createOSMLayer(e){let t="https://tile.openstreetmap.org/{z}/{x}/{y}.png";return e.url&&(t=e.url+"/{z}/{x}/{y}.png"),new s({source:new c({url:t})})}async createWMSLayer(e){return new s({source:new i({url:e.url,params:{LAYERS:e.layers,TILED:!0,...e.extraParams??{}}})})}onLayerError(e,t){this.layerErrorCallbacks.set(e,t),this._getLayerById(e).then((t=>{t&&this.attachSourceErrorListeners(e,t)}))}offLayerError(e){this.layerErrorCleanups.get(e)?.(),this.layerErrorCleanups.delete(e),this.layerErrorCallbacks.delete(e)}attachSourceErrorListeners(e,t){this.layerErrorCleanups.get(e)?.();const r=this.layerErrorCallbacks.get(e);if(!r)return;const o=t.getSource?.();if(!o)return;const s=[];if("getTile"in o||o instanceof i||o instanceof c||o instanceof l||o instanceof u||o instanceof f){const e=()=>{r({type:"network",message:"Tile load error"})};o.on("tileloaderror",e),s.push((()=>o.un("tileloaderror",e)))}if(o instanceof a){const e=()=>{r({type:"network",message:"Feature load error"})};o.on("featuresloaderror",e),s.push((()=>o.un("featuresloaderror",e)))}if(o instanceof y){const e=()=>{r({type:"network",message:"Image load error"})};o.on("imageloaderror",e),s.push((()=>o.un("imageloaderror",e)))}const n=()=>{this.attachSourceErrorListeners(e,t)};t.on("change:source",n),s.push((()=>t.un("change:source",n))),this.layerErrorCleanups.set(e,(()=>s.forEach((e=>e()))))}async setView(e,t){this.map&&this.map.getView().animate({center:F(e),zoom:t,duration:0})}async _forEachLayer(e,t){if(e instanceof o){const r=e.getLayers().getArray();for(const e of r)if(await this._forEachLayer(e,t))return!0}else if(t(e))return!0;return!1}async _getLayerById(e){if(!this.map)return null;let t=null;return await this._forEachLayer(this.map.getLayerGroup(),(r=>{if(r.get("id")===e)return t=r,!0})),t||(t=this.baseLayers.find((t=>t.get("id")===e)),void 0===t?null:t)}async _getLayerGroupById(e){if(!this.map)return null;const t=this.layers.find((t=>t.get?.("groupId")===e));return void 0!==t?t:null}async removeLayer(e){if(!e)return;this.offLayerError(e);const t=await this._getLayerById(e);if(t){const e=t.get("group");e&&e.getLayers().remove(t)}}async setOpacity(e,t){if(!e)return;const r=await this._getLayerById(e);r&&r.setOpacity(t)}async setZIndex(e,t){if(!e)return;const r=await this._getLayerById(e);r&&r.setZIndex(t)}async setVisible(e,t){const r=await this._getLayerById(e);r&&r.setVisible(t)}async setGroupVisible(e,t){const r=await this._getLayerGroupById(e);r&&r.setVisible(t)}async updateWKTLayer(e,t){const r=new g;let o=null;const s=this.map?.getView()?.getProjection();if(t.wkt){const e=r.readFeature(t.wkt,{dataProjection:"EPSG:4326",featureProjection:s});o=new a({features:[e]})}else if(t.url){const e=await fetch(t.url);if(!e.ok)throw new Error(`Failed to fetch WKT: ${e.status}`);const n=await e.text(),i=r.readFeature(n,{dataProjection:"EPSG:4326",featureProjection:s});o=new a({features:[i]})}let n;o&&e.setSource(o),t.geostylerStyle?n=await this.createGeostylerStyleFunction(t.geostylerStyle):t.style&&(n=await this.createEnhancedStyleFunction(t.style)),n&&e.setStyle(n)}async createWKTLayer(e){const t=new g;let o=null;const s=this.map?.getView()?.getProjection();if(e.wkt)try{const r=t.readFeature(e.wkt,{dataProjection:"EPSG:4326",featureProjection:s});o=new a({features:[r]})}catch(e){T("Failed to parse WKT:",e),o=new a({features:[]})}else if(e.url)try{const r=await fetch(e.url);if(!r.ok)throw new Error(`Failed to fetch WKT: ${r.status}`);const n=await r.text(),i=t.readFeature(n,{dataProjection:"EPSG:4326",featureProjection:s});o=new a({features:[i]})}catch(e){T("Failed to load WKT from URL:",e),o=new a({features:[]})}else o=new a({features:[]});let n;if(e.geostylerStyle)n=await this.createGeostylerStyleFunction(e.geostylerStyle);else{const t=e.style?{...$,...e.style}:$;n=await this.createEnhancedStyleFunction(t)}return new r({source:o,style:n,opacity:e.opacity??1,visible:e.visible??!0,zIndex:e.zIndex??1e3})}async createGeoTIFFLayer(e){if(!e.url)throw new Error("GeoTIFF layer requires a URL");const t={url:e.url};null===e.nodata||isNaN(e.nodata)||(t.nodata=e.nodata);const r=new(await N({sources:[t],wrapX:!1}));return await r.registerProjectionIfNeeded(),new A({source:r,opacity:e.opacity??1,visible:e.visible??!0,zIndex:e.zIndex??100})}async createWCSLayer(e){const t=await this.createWcsSource(e),r=new n({source:t,visible:e.visible??!0,opacity:e.opacity??1});return r.set("wcsConfig",e,!1),r}getWFSGetFeatureUrl(e){return t=>{const r={service:"WFS",request:"GetFeature",version:e.version??"1.1.0",typeName:e.typeName,outputFormat:e.outputFormat??"application/json",bbox:t.join(","),srsName:e.srsName??this.projection,...e.params??{}};return this.appendParams(e.url,r)}}getWCSGetCoverageUrl(e,t){return r=>{const o=e.version??"2.0.1",s=e.format??"image/tiff",n=e.projection??this.projection,a={SERVICE:"WCS",REQUEST:"GetCoverage",VERSION:o,FORMAT:s};if(o.startsWith("2.0")){a.coverageId=e.coverageName;const[t,o,n,i]=r;a.subset=`X(${t},${n})`,a.subset2=`Y(${o},${i})`,(s.includes("tiff")||s.includes("geotiff"))&&(a["geotiff:compression"]="LZW")}else{a.COVERAGE=e.coverageName,a.BBOX=r.join(","),a.CRS=n;const o=Math.round((r[2]-r[0])/t),s=Math.round((r[3]-r[1])/t);a.WIDTH=o,a.HEIGHT=s}if(e.params&&Object.entries(e.params).forEach((([e,t])=>{"string"!=typeof t&&"number"!=typeof t||(a[e]=t)})),o.startsWith("2.0")){const t=a.subset2;delete a.subset2;const r=new URLSearchParams;Object.entries(a).forEach((([e,t])=>{null!=t&&r.append(e,String(t))})),t&&r.append("subset",String(t));const o=e.url;return`${o}${o.includes("?")?"&":"?"}${r.toString()}`}return this.appendParams(e.url,a)}}mergeLayerConfig(e,t,r){const o={...e.get(t)??{},...r};return e.set(t,o,!1),o}appendParams(e,t){const r=new URLSearchParams;return Object.entries(t).forEach((([e,t])=>{null!=t&&r.set(e,String(t))})),r.toString()?`${e}${e.includes("?")?"&":"?"}${r.toString()}`:e}async createWcsSource(e){const t=e.projection??this.projection,r=this.map?.getView()?.getResolution()??1,o=this.getWCSGetCoverageUrl(e,r);return new class extends y{urlFunction_;constructor(r){super({projection:t,resolutions:e.resolutions}),this.urlFunction_=r}getImageInternal(e,t,r,o){const s=this.urlFunction_(e),n=new w(e,t,r,s);return n.load=()=>{const e=n.getImage();e.src!==s&&(e.crossOrigin="anonymous",e.src=s)},n}}(o)}async createArcGISLayer(e){const t={...e.params??{}};e.token&&(t.token=e.token);const r={url:e.url,params:t,...e.options??{}};return new s({source:new f(r),visible:e.visible??!0})}async updateGeoTIFFLayer(e,t){if(!t.url)throw new Error("GeoTIFF update requires a URL");const r={url:t.url};null==t.nodata||isNaN(t.nodata)||(r.nodata=t.nodata);const o=new(await N({sources:[r],wrapX:!1}));await o.registerProjectionIfNeeded(),e.setSource(o)}getMap(){return this.map}}export{z as OpenLayersProvider}