qwc2 2025.10.7 → 2025.10.9

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 (43) hide show
  1. package/components/PrintSelection.js +3 -3
  2. package/components/SearchBox.js +7 -5
  3. package/components/StandardApp.js +1 -1
  4. package/components/style/SearchBox.css +2 -2
  5. package/components/widgets/LayerCatalogWidget.js +2 -2
  6. package/package.json +1 -1
  7. package/plugins/FeatureSearch.js +2 -2
  8. package/plugins/LayerCatalog.js +3 -3
  9. package/plugins/Map.js +1 -1
  10. package/plugins/Print.js +4 -4
  11. package/plugins/Redlining.js +3 -3
  12. package/plugins/TopBar.js +3 -3
  13. package/plugins/map/RedliningSupport.js +1 -1
  14. package/plugins/style/FeatureSearch.css +6 -1
  15. package/plugins/style/Redlining.css +5 -0
  16. package/reducers/redlining.js +1 -1
  17. package/resources/rotate.svg +70 -0
  18. package/static/translations/bg-BG.json +2 -3
  19. package/static/translations/ca-ES.json +2 -3
  20. package/static/translations/cs-CZ.json +2 -3
  21. package/static/translations/de-CH.json +2 -3
  22. package/static/translations/de-DE.json +2 -3
  23. package/static/translations/en-US.json +2 -3
  24. package/static/translations/es-ES.json +2 -3
  25. package/static/translations/fi-FI.json +2 -3
  26. package/static/translations/fr-FR.json +2 -3
  27. package/static/translations/hu-HU.json +2 -3
  28. package/static/translations/it-IT.json +3 -4
  29. package/static/translations/ja-JP.json +2 -3
  30. package/static/translations/nl-NL.json +2 -3
  31. package/static/translations/no-NO.json +2 -3
  32. package/static/translations/pl-PL.json +2 -3
  33. package/static/translations/pt-BR.json +2 -3
  34. package/static/translations/pt-PT.json +2 -3
  35. package/static/translations/ro-RO.json +2 -3
  36. package/static/translations/ru-RU.json +2 -3
  37. package/static/translations/sv-SE.json +2 -3
  38. package/static/translations/tr-TR.json +2 -3
  39. package/static/translations/tsconfig.json +1 -2
  40. package/static/translations/uk-UA.json +2 -3
  41. package/utils/EditingUtils.js +3 -2
  42. package/utils/SearchProviders.js +3 -3
  43. package/utils/VectorLayerUtils.js +1 -1
@@ -10,7 +10,7 @@ var coords=geometry.coordinates;for(var i=0;i<coords.length-1;++i){var segment={
10
10
  var x=geometry.coordinates[0];var y=geometry.coordinates[1];geometry={type:"Polygon",coordinates:[[[x-0.01,y-0.01],[x+0.01,y-0.01],[x+0.01,y+0.01],[x-0.01,y+0.01],[x-0.01,y-0.01]]]};params.geoms.push(VectorLayerUtils.geoJSONGeomToWkt(geometry));params.labelFillColors.push(ensureHex(styleOptions.fillColor));params.labelOutlineColors.push(ensureHex(styleOptions.strokeColor));params.labelOutlineSizes.push(scaleFactor*styleOptions.strokeWidth*0.5);params.labelSizes.push(Math.round(10*styleOptions.strokeWidth*scaleFactor));params.labelDist.push("5");params.labelRotations.push(((properties.rotation||0)/Math.PI*180).toFixed(0))}else{params.geoms.push(VectorLayerUtils.geoJSONGeomToWkt(geometry));params.labelFillColors.push(ensureHex(styleOptions.textFill));params.labelOutlineColors.push(ensureHex(styleOptions.textStroke));params.labelOutlineSizes.push(scaleFactor);params.labelSizes.push(Math.round(10*scaleFactor));params.labelDist.push("-5");params.labelRotations.push("0")}}}}catch(err){_iterator2.e(err)}finally{_iterator2.f()}}}catch(err){_iterator.e(err)}finally{_iterator.f()}return params},removeDuplicateNodes:function removeDuplicateNodes(coordinates){if(Array.isArray(coordinates[0][0])){return coordinates.map(VectorLayerUtils.removeDuplicateNodes)}else if(Array.isArray(coordinates[0])){return coordinates.filter(function(item,pos,arr){return pos===0||item[0]!==arr[pos-1][0]||item[1]!==arr[pos-1][1]})}else{return coordinates}},simplifyFeature:function simplifyFeature(feature){if(!feature.geometry){return feature}else if(feature.geometry.type==="MultiPolygon"){return feature.geometry.coordinates.map(function(part){return VectorLayerUtils.simplifyFeature(_objectSpread(_objectSpread({},feature),{},{geometry:{type:"Polygon",coordinates:part}}))}).flat()}else if(feature.geometry.type==="Polygon"){return simplepolygon(feature).features.map(function(feat,idx,features){if(feat.properties.parent>=0){features[feat.properties.parent].geometry.coordinates.push(feat.geometry.coordinates[0]);return null}return feat}).filter(function(x){return x}).map(function(feat){return _objectSpread(_objectSpread({},feature),{},{geometry:feat.geometry})})}else{return feature}},validateGeometry:function validateGeometry(geometry){if(!geometry){return false}if(geometry.type==="GeometryCollection"){return geometry.geometries.every(VectorLayerUtils.validateGeometry)}if(geometry.type==="Point"){return!isEmpty(geometry.coordinates)}var minLength=geometry.type.endsWith("LineString")?2:3;var _isDegenerate=function isDegenerate(coordinates){if(Array.isArray(coordinates[0][0])){return coordinates.map(_isDegenerate).find(function(entry){return entry===false})}else{return coordinates.length<minLength}};return!_isDegenerate(geometry.coordinates)},createSld:function createSld(geometrytype,styleName,styleOptions,layerOpacity){var dpi=arguments.length>4&&arguments[4]!==undefined?arguments[4]:96;var scaleFactor=arguments.length>5&&arguments[5]!==undefined?arguments[5]:1;var opts={};var dpiScale=dpi/96*scaleFactor;// Special cases
11
11
  if(styleName==="text"){// Make geometry transparent
12
12
  opts={strokeColor:[0,0,0,0],fillColor:[0,0,0,0]}}else if(styleName==="marker"){opts={strokeColor:[0,0,255,1],strokeWidth:1*dpiScale,fillColor:[255,255,255,1],circleRadius:2*dpiScale}}else{// Default style
13
- opts=styleOptions}var ensureHex=function ensureHex(rgb){return!Array.isArray(rgb)?rgb:"#"+(16777216+(rgb[2]|rgb[1]<<8|rgb[0]<<16)).toString(16).slice(1)};var opacity=function opacity(rgb){if(Array.isArray(rgb)&&rgb.length>3){return rgb[3]*layerOpacity/255}return 1*layerOpacity/255};var stroke="<se:Stroke>"+"<se:SvgParameter name=\"stroke\">"+ensureHex(opts.strokeColor)+"</se:SvgParameter>"+"<se:SvgParameter name=\"stroke-opacity\">"+opacity(opts.strokeColor)+"</se:SvgParameter>"+"<se:SvgParameter name=\"stroke-width\">"+opts.strokeWidth*dpiScale+"</se:SvgParameter>"+"<se:SvgParameter name=\"stroke-linejoin\">round</se:SvgParameter>"+(!isEmpty(opts.strokeDash)?"<CssParameter name=\"stroke-dasharray\">"+opts.strokeDash.join(" ")+"</CssParameter>":"")+"</se:Stroke>";var fill="<se:Fill>"+"<se:SvgParameter name=\"fill\">"+ensureHex(opts.fillColor)+"</se:SvgParameter>"+"<se:SvgParameter name=\"fill-opacity\">"+opacity(opts.fillColor)+"</se:SvgParameter>"+"</se:Fill>";var rule=null;if(geometrytype.endsWith("Point")){rule="<se:PointSymbolizer>"+"<se:Graphic>"+"<se:Mark>"+"<se:WellKnownName>circle</se:WellKnownName>"+"<se:Stroke>"+"<se:SvgParameter name=\"stroke\">"+ensureHex(opts.strokeColor)+"</se:SvgParameter>"+"<se:SvgParameter name=\"stroke-opacity\">"+opacity(opts.strokeColor)+"</se:SvgParameter>"+"<se:SvgParameter name=\"stroke-width\">"+opts.strokeWidth*dpiScale+"</se:SvgParameter>"+"</se:Stroke>"+fill+"</se:Mark>"+"<se:Size>"+2*opts.circleRadius*dpiScale+"</se:Size>"+"</se:Graphic>"+"</se:PointSymbolizer>"}else if(geometrytype.endsWith("LineString")){rule="<se:LineSymbolizer>"+stroke+"</se:LineSymbolizer>"}else if(geometrytype.endsWith("Polygon")){rule="<se:PolygonSymbolizer>"+stroke+fill+"</se:PolygonSymbolizer>"}if(rule){return"<?xml version=\"1.0\" encoding=\"UTF-8\"?>"+"<StyledLayerDescriptor xmlns=\"http://www.opengis.net/sld\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"1.1.0\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xsi:schemaLocation=\"http://www.opengis.net/sld http://schemas.opengis.net/sld/1.1.0/StyledLayerDescriptor.xsd\" xmlns:se=\"http://www.opengis.net/se\">"+"<UserStyle>"+"<se:FeatureTypeStyle>"+"<se:Rule>"+rule+"</se:Rule>"+"</se:FeatureTypeStyle>"+"</UserStyle>"+"</StyledLayerDescriptor>"}return null},generateMarkerGeometry:function generateMarkerGeometry(params,markername,tail,feature,layer,dpi,mapScale,printCrs,scaleFactor){if(!END_MARKERS[markername]){return}var marker=END_MARKERS[markername];// Read the SVG and generate a matching WKT geometry for the marker
13
+ opts=styleOptions}var ensureHex=function ensureHex(rgb){return!Array.isArray(rgb)?rgb:"#"+(16777216+(rgb[2]|rgb[1]<<8|rgb[0]<<16)).toString(16).slice(1)};var opacity=function opacity(rgb){if(Array.isArray(rgb)&&rgb.length>3){return rgb[3]*layerOpacity/255}return 1*layerOpacity/255};var stroke="<se:Stroke>"+"<se:SvgParameter name=\"stroke\">"+ensureHex(opts.strokeColor)+"</se:SvgParameter>"+"<se:SvgParameter name=\"stroke-opacity\">"+opacity(opts.strokeColor)+"</se:SvgParameter>"+"<se:SvgParameter name=\"stroke-width\">"+opts.strokeWidth*dpiScale+"</se:SvgParameter>"+"<se:SvgParameter name=\"stroke-linejoin\">round</se:SvgParameter>"+(!isEmpty(opts.strokeDash)?"<se:SvgParameter name=\"stroke-dasharray\">"+opts.strokeDash.map(function(x){return x*dpiScale}).join(" ")+"</se:SvgParameter>":"")+"</se:Stroke>";var fill="<se:Fill>"+"<se:SvgParameter name=\"fill\">"+ensureHex(opts.fillColor)+"</se:SvgParameter>"+"<se:SvgParameter name=\"fill-opacity\">"+opacity(opts.fillColor)+"</se:SvgParameter>"+"</se:Fill>";var rule=null;if(geometrytype.endsWith("Point")){rule="<se:PointSymbolizer>"+"<se:Graphic>"+"<se:Mark>"+"<se:WellKnownName>circle</se:WellKnownName>"+"<se:Stroke>"+"<se:SvgParameter name=\"stroke\">"+ensureHex(opts.strokeColor)+"</se:SvgParameter>"+"<se:SvgParameter name=\"stroke-opacity\">"+opacity(opts.strokeColor)+"</se:SvgParameter>"+"<se:SvgParameter name=\"stroke-width\">"+opts.strokeWidth*dpiScale+"</se:SvgParameter>"+"</se:Stroke>"+fill+"</se:Mark>"+"<se:Size>"+2*opts.circleRadius*dpiScale+"</se:Size>"+"</se:Graphic>"+"</se:PointSymbolizer>"}else if(geometrytype.endsWith("LineString")){rule="<se:LineSymbolizer>"+stroke+"</se:LineSymbolizer>"}else if(geometrytype.endsWith("Polygon")){rule="<se:PolygonSymbolizer>"+stroke+fill+"</se:PolygonSymbolizer>"}if(rule){return"<?xml version=\"1.0\" encoding=\"UTF-8\"?>"+"<StyledLayerDescriptor xmlns=\"http://www.opengis.net/sld\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"1.1.0\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xsi:schemaLocation=\"http://www.opengis.net/sld http://schemas.opengis.net/sld/1.1.0/StyledLayerDescriptor.xsd\" xmlns:se=\"http://www.opengis.net/se\">"+"<UserStyle>"+"<se:FeatureTypeStyle>"+"<se:Rule>"+rule+"</se:Rule>"+"</se:FeatureTypeStyle>"+"</UserStyle>"+"</StyledLayerDescriptor>"}return null},generateMarkerGeometry:function generateMarkerGeometry(params,markername,tail,feature,layer,dpi,mapScale,printCrs,scaleFactor){if(!END_MARKERS[markername]){return}var marker=END_MARKERS[markername];// Read the SVG and generate a matching WKT geometry for the marker
14
14
  var path="";var width=0;var height=0;try{var parser=new DOMParser;var svgSrc=atob(marker.src.slice(26));var svgDoc=parser.parseFromString(svgSrc,"text/xml");width=parseInt(svgDoc.getElementsByTagName("svg")[0].getAttribute("width"),10);height=parseInt(svgDoc.getElementsByTagName("svg")[0].getAttribute("height"),10);path=svgDoc.getElementsByTagName("path")[0].getAttribute("d")}catch(e){/* eslint-disable-next-line */console.warn("Could not parse path for marker "+markername);return}// [ Same as in FeatureStyles.js ] [ pixel to map units ]
15
15
  var markerScaleFactor=0.125*(1+feature.styleOptions.strokeWidth)/dpi*0.0254*mapScale*scaleFactor;var origin=feature.geometry.coordinates[tail?feature.geometry.coordinates.length-1:0];var p2=feature.geometry.coordinates[tail?feature.geometry.coordinates.length-2:1];var coordinates=[];var angle=0.5*Math.PI+Math.atan2(origin[0]-p2[0],origin[1]-p2[1]);var alpha=marker.baserotation/180*Math.PI+angle;var cosa=Math.cos(alpha);var sina=Math.sin(alpha);svgpath(path).iterate(function(segment,index,x,y){// Skip move instructions
16
16
  if(["m","M"].includes(segment[0])){return}var dx=(x-marker.anchor[0]*width)*markerScaleFactor;var dy=(y-marker.anchor[1]*height)*markerScaleFactor;var rx=cosa*dx+sina*dy;var ry=-sina*dx+cosa*dy;coordinates.push([origin[0]+rx,origin[1]+ry])});// Closing coordinate