qwc2 2025.5.16 → 2025.5.21

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 (55) hide show
  1. package/actions/layers.js +2 -2
  2. package/components/AttributeForm.js +1 -1
  3. package/components/AttributeTableWidget.js +2 -2
  4. package/components/EditComboField.js +4 -3
  5. package/components/IdentifyViewer.js +5 -7
  6. package/components/PickFeature.js +1 -1
  7. package/components/QtDesignerForm.js +2 -2
  8. package/components/SearchBox.js +1 -1
  9. package/components/map3d/Map3D.js +3 -3
  10. package/components/style/EditComboField.css +7 -0
  11. package/components/style/PluginsContainer.css +3 -2
  12. package/components/widgets/style/NumberInput.css +1 -1
  13. package/icons/clone.svg +63 -0
  14. package/package.json +1 -1
  15. package/plugins/BackgroundSwitcher.js +1 -1
  16. package/plugins/Cyclomedia.js +1 -1
  17. package/plugins/Editing.js +2 -2
  18. package/plugins/FeatureForm.js +1 -1
  19. package/plugins/Identify.js +2 -2
  20. package/plugins/LayerTree.js +3 -3
  21. package/plugins/Map.js +3 -3
  22. package/plugins/MapTip.js +1 -1
  23. package/plugins/Print.js +1 -1
  24. package/plugins/Reports.js +2 -2
  25. package/plugins/TimeManager.js +5 -5
  26. package/plugins/map/SnappingSupport.js +1 -1
  27. package/reducers/layers.js +6 -5
  28. package/static/translations/bg-BG.json +1 -1
  29. package/static/translations/ca-ES.json +1 -1
  30. package/static/translations/cs-CZ.json +1 -1
  31. package/static/translations/de-CH.json +1 -1
  32. package/static/translations/de-DE.json +1 -1
  33. package/static/translations/en-US.json +1 -1
  34. package/static/translations/es-ES.json +1 -1
  35. package/static/translations/fi-FI.json +1 -1
  36. package/static/translations/fr-FR.json +1 -1
  37. package/static/translations/hu-HU.json +1 -1
  38. package/static/translations/it-IT.json +1 -1
  39. package/static/translations/ja-JP.json +1 -1
  40. package/static/translations/nl-NL.json +1 -1
  41. package/static/translations/no-NO.json +1 -1
  42. package/static/translations/pl-PL.json +1 -1
  43. package/static/translations/pt-BR.json +1 -1
  44. package/static/translations/pt-PT.json +1 -1
  45. package/static/translations/ro-RO.json +1 -1
  46. package/static/translations/ru-RU.json +1 -1
  47. package/static/translations/sv-SE.json +1 -1
  48. package/static/translations/tr-TR.json +1 -1
  49. package/static/translations/tsconfig.json +1 -1
  50. package/utils/EditingUtils.js +4 -4
  51. package/utils/IdentifyUtils.js +3 -3
  52. package/utils/LayerUtils.js +10 -10
  53. package/utils/expr_grammar/grammar.js +1 -1
  54. package/utils/expr_grammar/grammar.ne +12 -1
  55. package/utils/expr_grammar/test.js +3 -2
@@ -8,17 +8,17 @@ function _typeof(o){"@babel/helpers - typeof";return _typeof="function"==typeof
8
8
  var _iterator=_createForOfIteratorHelper(exploded),_step;try{var _loop=function _loop(){var entry=_step.value;var layerConfig=layerConfigs.find(function(layer){return layer.type==="theme"&&layer.name===entry.sublayer.name});if(layerConfig){entry.sublayer.opacity=layerConfig.opacity;entry.sublayer.visibility=layerConfig.visibility||layerConfig.tristate;entry.sublayer.tristate=layerConfig.tristate;entry.sublayer.style=layerConfig.style;if(!entry.sublayer.style){entry.sublayer.style=!isEmpty(entry.sublayer.styles)?Object.keys(entry.sublayer.styles)[0]:""}}else{entry.sublayer.visibility=false}};for(_iterator.s();!(_step=_iterator.n()).done;){_loop()}// Create placeholders for external layers to be added in front
9
9
  }catch(err){_iterator.e(err)}finally{_iterator.f()}var external=[];var _iterator2=_createForOfIteratorHelper(layerConfigs),_step2;try{for(_iterator2.s();!(_step2=_iterator2.n()).done;){var layerConfig=_step2.value;if(layerConfig.type==="separator"){// No point restoring separators
10
10
  }else if(layerConfig.type!=="theme"){external=external.concat(LayerUtils.createExternalLayerPlaceholder(layerConfig,externalLayers,layerConfig.id))}}}catch(err){_iterator2.e(err)}finally{_iterator2.f()}exploded=[].concat(_toConsumableArray(external),_toConsumableArray(exploded));LayerUtils.insertPermalinkLayers(exploded,permalinkLayers);var layers=LayerUtils.implodeLayers(exploded);LayerUtils.setGroupVisiblities(layers);return layers},restoreOrderedLayerParams:function restoreOrderedLayerParams(themeLayer,layerConfigs,permalinkLayers,externalLayers){var exploded=LayerUtils.explodeLayers([themeLayer]);var reordered=[];// Iterate over layer configs and reorder items accordingly, create external layer placeholders as neccessary
11
- var _iterator3=_createForOfIteratorHelper(layerConfigs),_step3;try{var _loop2=function _loop2(){var layerConfig=_step3.value;if(layerConfig.type==="theme"){var entry=exploded.find(function(e){return e.sublayer.name===layerConfig.name});if(entry){entry.sublayer.opacity=layerConfig.opacity;entry.sublayer.visibility=layerConfig.visibility||layerConfig.tristate;entry.sublayer.tristate=layerConfig.tristate;entry.sublayer.style=layerConfig.style;if(!entry.sublayer.style){entry.sublayer.style=!isEmpty(entry.sublayer.styles)?Object.keys(entry.sublayer.styles)[0]:""}reordered.push(entry)}}else if(layerConfig.type==="separator"){reordered=reordered.concat(LayerUtils.createSeparatorLayer(layerConfig.name))}else{reordered=reordered.concat(LayerUtils.createExternalLayerPlaceholder(layerConfig,externalLayers,layerConfig.id))}};for(_iterator3.s();!(_step3=_iterator3.n()).done;){_loop2()}}catch(err){_iterator3.e(err)}finally{_iterator3.f()}LayerUtils.insertPermalinkLayers(reordered,permalinkLayers);var layers=LayerUtils.implodeLayers(reordered);LayerUtils.setGroupVisiblities(layers);return layers},setGroupVisiblities:function setGroupVisiblities(layers){var parentVisible=false;var parentInvisible=false;var _iterator4=_createForOfIteratorHelper(layers),_step4;try{for(_iterator4.s();!(_step4=_iterator4.n()).done;){var layer=_step4.value;if(!isEmpty(layer.sublayers)){layer.visibility=LayerUtils.setGroupVisiblities(layer.sublayers)}parentInvisible=parentInvisible||layer.tristate;delete layer.tristate;parentVisible=parentVisible||layer.visibility}}catch(err){_iterator4.e(err)}finally{_iterator4.f()}return parentVisible&&!parentInvisible},createSeparatorLayer:function createSeparatorLayer(title){return LayerUtils.explodeLayers([{type:"separator",title:title,role:LayerRole.USERLAYER,uuid:uuidv4(),id:uuidv4()}])},createExternalLayerPlaceholder:function createExternalLayerPlaceholder(layerConfig,externalLayers,id){var key=layerConfig.type+":"+layerConfig.url;(externalLayers[key]=externalLayers[key]||[]).push({id:id,name:layerConfig.name,opacity:layerConfig.opacity,visibility:layerConfig.visibility,style:layerConfig.style,params:layerConfig.params});return LayerUtils.explodeLayers([{id:id,type:"placeholder",name:layerConfig.name,title:layerConfig.name,role:LayerRole.USERLAYER,loading:true,uuid:uuidv4()}])},insertPermalinkLayers:function insertPermalinkLayers(exploded,layers){var _iterator5=_createForOfIteratorHelper(layers||[]),_step5;try{for(_iterator5.s();!(_step5=_iterator5.n()).done;){var layer=_step5.value;var insLayer=LayerUtils.explodeLayers([layer])[0];if(insLayer.layer.role!==LayerRole.USERLAYER||insLayer.layer.type!=="vector"){continue}delete insLayer.layer.pos;exploded.splice(layer.pos,0,insLayer)}}catch(err){_iterator5.e(err)}finally{_iterator5.f()}},collectWMSSublayerParams:function collectWMSSublayerParams(sublayer,layerNames,opacities,styles,queryable,visibilities,parentVisibility){var layerVisibility=sublayer.visibility===undefined?true:sublayer.visibility;var visibility=layerVisibility&&parentVisibility;if(visibility||visibilities){if(!isEmpty(sublayer.sublayers)){// Is group
11
+ var _iterator3=_createForOfIteratorHelper(layerConfigs),_step3;try{var _loop2=function _loop2(){var layerConfig=_step3.value;if(layerConfig.type==="theme"){var entry=exploded.find(function(e){return e.sublayer.name===layerConfig.name});if(entry){entry.sublayer.opacity=layerConfig.opacity;entry.sublayer.visibility=layerConfig.visibility||layerConfig.tristate;entry.sublayer.tristate=layerConfig.tristate;entry.sublayer.style=layerConfig.style;if(!entry.sublayer.style){entry.sublayer.style=!isEmpty(entry.sublayer.styles)?Object.keys(entry.sublayer.styles)[0]:""}reordered.push(entry)}}else if(layerConfig.type==="separator"){reordered=reordered.concat(LayerUtils.createSeparatorLayer(layerConfig.name))}else{reordered=reordered.concat(LayerUtils.createExternalLayerPlaceholder(layerConfig,externalLayers,layerConfig.id))}};for(_iterator3.s();!(_step3=_iterator3.n()).done;){_loop2()}}catch(err){_iterator3.e(err)}finally{_iterator3.f()}LayerUtils.insertPermalinkLayers(reordered,permalinkLayers);var layers=LayerUtils.implodeLayers(reordered);LayerUtils.setGroupVisiblities(layers);return layers},setGroupVisiblities:function setGroupVisiblities(layers){var parentVisible=false;var parentInvisible=false;var _iterator4=_createForOfIteratorHelper(layers),_step4;try{for(_iterator4.s();!(_step4=_iterator4.n()).done;){var layer=_step4.value;if(!isEmpty(layer.sublayers)){layer.visibility=LayerUtils.setGroupVisiblities(layer.sublayers)}parentInvisible=parentInvisible||layer.tristate;delete layer.tristate;parentVisible=parentVisible||layer.visibility}}catch(err){_iterator4.e(err)}finally{_iterator4.f()}return parentVisible&&!parentInvisible},createSeparatorLayer:function createSeparatorLayer(title){return LayerUtils.explodeLayers([{type:"separator",title:title,role:LayerRole.USERLAYER,id:uuidv4()}])},createExternalLayerPlaceholder:function createExternalLayerPlaceholder(layerConfig,externalLayers,id){var key=layerConfig.type+":"+layerConfig.url;(externalLayers[key]=externalLayers[key]||[]).push({id:id,name:layerConfig.name,opacity:layerConfig.opacity,visibility:layerConfig.visibility,style:layerConfig.style,params:layerConfig.params});return LayerUtils.explodeLayers([{id:id,type:"placeholder",name:layerConfig.name,title:layerConfig.name,role:LayerRole.USERLAYER,loading:true}])},insertPermalinkLayers:function insertPermalinkLayers(exploded,layers){var _iterator5=_createForOfIteratorHelper(layers||[]),_step5;try{for(_iterator5.s();!(_step5=_iterator5.n()).done;){var layer=_step5.value;var insLayer=LayerUtils.explodeLayers([layer])[0];if(insLayer.layer.role!==LayerRole.USERLAYER||insLayer.layer.type!=="vector"){continue}delete insLayer.layer.pos;exploded.splice(layer.pos,0,insLayer)}}catch(err){_iterator5.e(err)}finally{_iterator5.f()}},collectWMSSublayerParams:function collectWMSSublayerParams(sublayer,layerNames,opacities,styles,queryable,visibilities,parentVisibility){var layerVisibility=sublayer.visibility===undefined?true:sublayer.visibility;var visibility=layerVisibility&&parentVisibility;if(visibility||visibilities){if(!isEmpty(sublayer.sublayers)){// Is group
12
12
  sublayer.sublayers.map(function(sublyr){LayerUtils.collectWMSSublayerParams(sublyr,layerNames,opacities,styles,queryable,visibilities,visibility)})}else{layerNames.push(sublayer.name);opacities.push(Number.isInteger(sublayer.opacity)?sublayer.opacity:255);// Only specify style if more than one style choice exists
13
13
  styles.push(Object.keys(sublayer.styles||{}).length>1?sublayer.style||"":"");if(sublayer.queryable&&!sublayer.omitFromQueryLayers){queryable.push(sublayer.name)}if(visibilities){// eslint-disable-next-line
14
14
  visibilities.push(layerVisibility?parentVisibility?1:0.5:0)}}}},buildWMSLayerParams:function buildWMSLayerParams(layer){var filter=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var params=layer.params||{};var newParams={};var queryLayers=[];var initialOpacities=undefined;if(!Array.isArray(layer.sublayers)){var _ref,_layer$initialOpaciti,_layer$opacity,_ref2,_layer$style;// Background layers may just contain layer.params.OPACITIES
15
15
  // User layers will be controlled with layer.opacity, and value will be replicated in layer.params.OPACITIES
16
16
  // => Store the initial layer.params.OPACITIES as initialOpacities, compute actual opacities
17
17
  // by multipliying layer.opacity with initialOpacities
18
- initialOpacities=(_ref=(_layer$initialOpaciti=layer.initialOpacities)!==null&&_layer$initialOpaciti!==void 0?_layer$initialOpaciti:params.OPACITIES)!==null&&_ref!==void 0?_ref:"";var layers=(params.LAYERS||layer.name).split(",").filter(Boolean);var opacities=initialOpacities.split(",").filter(Boolean);var opacityMult=((_layer$opacity=layer.opacity)!==null&&_layer$opacity!==void 0?_layer$opacity:255)/255;newParams=_objectSpread({LAYERS:layers.join(","),OPACITIES:layers.map(function(x,i){var _opacities$i;return Math.round(((_opacities$i=opacities[i])!==null&&_opacities$i!==void 0?_opacities$i:"255")*opacityMult)}).map(Math.round).join(","),STYLES:(_ref2=(_layer$style=layer.style)!==null&&_layer$style!==void 0?_layer$style:params.STYLES)!==null&&_ref2!==void 0?_ref2:layers.map(function(){return""}).join(",")},layer.dimensionValues);queryLayers=layer.queryable&&!layer.omitFromQueryLayers?[layer.name]:[]}else{var layerNames=[];var _opacities=[];var styles=[];layer.sublayers.map(function(sublayer){LayerUtils.collectWMSSublayerParams(sublayer,layerNames,_opacities,styles,queryLayers,null,layer.visibility)});layerNames.reverse();_opacities.reverse();styles.reverse();if(layer.drawingOrder&&layer.drawingOrder.length>0){var indices=layer.drawingOrder.map(function(lyr){return layerNames.indexOf(lyr)}).filter(function(idx){return idx>=0});layerNames=indices.map(function(idx){return layerNames[idx]});_opacities=indices.map(function(idx){return _opacities[idx]});styles=indices.map(function(idx){return styles[idx]})}newParams=_objectSpread({LAYERS:layerNames.join(","),OPACITIES:_opacities.map(Math.round).join(","),STYLES:styles.join(",")},layer.dimensionValues);if(filter.filterParams){newParams.FILTER=Object.entries(filter.filterParams).reduce(function(res,_ref3){var _ref4=_slicedToArray(_ref3,2),layername=_ref4[0],filters=_ref4[1];if(!layerNames.includes(layername)){return res}return[].concat(_toConsumableArray(res),[layername+":"+filters.map(function(expr){return Array.isArray(expr)?LayerUtils.formatFilterExpr(expr):"AND"}).join(" ")])},[]).join(";")}if(filter.filterGeom){newParams.FILTER_GEOM=VectorLayerUtils.geoJSONGeomToWkt(filter.filterGeom)}}return{params:newParams,queryLayers:queryLayers,initialOpacities:initialOpacities}},formatFilterExpr:function formatFilterExpr(expr){var _this=this;if(expr.length===3&&typeof expr[0]==="string"){var op=expr[1].toUpperCase();if(typeof expr[2]==="number"){return"\"".concat(expr[0],"\" ").concat(op," ").concat(expr[2])}else if(expr[2]===null){return"\"".concat(expr[0],"\" ").concat(op," NULL")}else if(Array.isArray(expr[2])){return"\"".concat(expr[0],"\" ").concat(op," ( ").concat(expr[2].join(" , ")," )")}else{return"\"".concat(expr[0],"\" ").concat(op," '").concat(expr[2],"'")}}else{return"( "+expr.map(function(entry){return Array.isArray(entry)?_this.formatFilterExpr(entry):entry.toUpperCase()}).join(" ")+" )"}},addUUIDs:function addUUIDs(group){var usedUUIDs=arguments.length>1&&arguments[1]!==undefined?arguments[1]:new Set;group.uuid=!group.uuid||usedUUIDs.has(group.uuid)?uuidv4():group.uuid;usedUUIDs.add(group.uuid);if(!isEmpty(group.sublayers)){Object.assign(group,{sublayers:group.sublayers.slice(0)});for(var i=0;i<group.sublayers.length;++i){group.sublayers[i]=_objectSpread({},group.sublayers[i]);LayerUtils.addUUIDs(group.sublayers[i],usedUUIDs)}}},buildWMSLayerUrlParam:function buildWMSLayerUrlParam(layers){var layernames=[];var opacities=[];var styles=[];var visibilities=[];var queryable=[];var _iterator6=_createForOfIteratorHelper(layers),_step6;try{var _loop3=function _loop3(){var layer=_step6.value;if(layer.role===LayerRole.THEME&&!isEmpty(layer.sublayers)){LayerUtils.collectWMSSublayerParams(layer,layernames,opacities,styles,queryable,visibilities,layer.visibility)}else if(layer.role===LayerRole.USERLAYER&&layer.type==="wms"){var sublayernames=[];LayerUtils.collectWMSSublayerParams(layer,sublayernames,opacities,styles,queryable,visibilities,layer.visibility);var layerurl=layer.url;if(layer.extwmsparams){layerurl+=(layerurl.includes("?")?"&":"?")+Object.entries(layer.extwmsparams||{}).map(function(_ref5){var _ref6=_slicedToArray(_ref5,2),key=_ref6[0],value=_ref6[1];return"extwms."+key+"="+value}).join("&")}layernames.push.apply(layernames,_toConsumableArray(sublayernames.map(function(name){return"wms:"+layerurl+"#"+name})))}else if(layer.role===LayerRole.USERLAYER&&(layer.type==="wfs"||layer.type==="wmts")){layernames.push(layer.type+":"+(layer.capabilitiesUrl||layer.url)+"#"+layer.name);opacities.push(layer.opacity);styles.push(layer.style);visibilities.push(layer.visibility)}else if(layer.role===LayerRole.USERLAYER&&layer.type==="separator"){layernames.push("sep:"+layer.title);opacities.push(255);styles.push("");visibilities.push(true)}};for(_iterator6.s();!(_step6=_iterator6.n()).done;){_loop3()}}catch(err){_iterator6.e(err)}finally{_iterator6.f()}var result=layernames.map(function(layername,idx){var param=layername;if(opacities[idx]<255){param+="["+(100-Math.round(opacities[idx]/255*100))+"]"}if(styles[idx]){param+="{"+styles[idx]+"}"}if(visibilities[idx]===0||visibilities[idx]===false){param+="!"}else if(visibilities[idx]===0.5){param+="~"}return param});if(ConfigUtils.getConfigProp("urlReverseLayerOrder")){result.reverse()}return result.join(",")},splitLayerUrlParam:function splitLayerUrlParam(entry){var opacityPattern=/\[(\d+)\]/;var stylePattern=/{([^}]+)}/;var extPattern=/^(\w+):(.*)#([^#]+)$/;var id=uuidv4();var type="theme";var layerUrl=null;var opacity=255;var style="";var visibility=true;var tristate=false;if(entry.endsWith("!")){visibility=false;entry=entry.slice(0,-1)}else if(entry.endsWith("~")){visibility=false;tristate=true;entry=entry.slice(0,-1)}var m=null;if(m=entry.match(opacityPattern)){opacity=Math.round(255-parseFloat(m[1])/100*255);entry=entry.slice(0,m.index)+entry.slice(m.index+m[0].length)}if(m=entry.match(stylePattern)){style=m[1];entry=entry.slice(0,m.index)+entry.slice(m.index+m[0].length)}var name=entry;if(m=entry.match(extPattern)){type=m[1];layerUrl=m[2];name=m[3]}else if(name.startsWith("sep:")){type="separator";name=name.slice(4)}return{id:id,type:type,url:layerUrl,name:name,opacity:opacity,style:style,visibility:visibility,tristate:tristate}},pathEqualOrBelow:function pathEqualOrBelow(parent,child){return isEqual(child.slice(0,parent.length),parent)},removeLayer:function removeLayer(layers,layer,sublayerpath){// Extract foreground layers
18
+ initialOpacities=(_ref=(_layer$initialOpaciti=layer.initialOpacities)!==null&&_layer$initialOpaciti!==void 0?_layer$initialOpaciti:params.OPACITIES)!==null&&_ref!==void 0?_ref:"";var layers=(params.LAYERS||layer.name).split(",").filter(Boolean);var opacities=initialOpacities.split(",").filter(Boolean);var opacityMult=((_layer$opacity=layer.opacity)!==null&&_layer$opacity!==void 0?_layer$opacity:255)/255;newParams=_objectSpread({LAYERS:layers.join(","),OPACITIES:layers.map(function(x,i){var _opacities$i;return Math.round(((_opacities$i=opacities[i])!==null&&_opacities$i!==void 0?_opacities$i:"255")*opacityMult)}).map(Math.round).join(","),STYLES:(_ref2=(_layer$style=layer.style)!==null&&_layer$style!==void 0?_layer$style:params.STYLES)!==null&&_ref2!==void 0?_ref2:layers.map(function(){return""}).join(",")},layer.dimensionValues);queryLayers=layer.queryable&&!layer.omitFromQueryLayers?[layer.name]:[]}else{var layerNames=[];var _opacities=[];var styles=[];layer.sublayers.map(function(sublayer){LayerUtils.collectWMSSublayerParams(sublayer,layerNames,_opacities,styles,queryLayers,null,layer.visibility)});layerNames.reverse();_opacities.reverse();styles.reverse();if(layer.drawingOrder&&layer.drawingOrder.length>0){var indices=layer.drawingOrder.map(function(lyr){return layerNames.indexOf(lyr)}).filter(function(idx){return idx>=0});layerNames=indices.map(function(idx){return layerNames[idx]});_opacities=indices.map(function(idx){return _opacities[idx]});styles=indices.map(function(idx){return styles[idx]})}newParams=_objectSpread({LAYERS:layerNames.join(","),OPACITIES:_opacities.map(Math.round).join(","),STYLES:styles.join(",")},layer.dimensionValues)}if(filter.filterParams){newParams.FILTER=Object.entries(filter.filterParams).reduce(function(res,_ref3){var _ref4=_slicedToArray(_ref3,2),layername=_ref4[0],filters=_ref4[1];if(!newParams.LAYERS.split(",").includes(layername)){return res}return[].concat(_toConsumableArray(res),[layername+":"+filters.map(function(expr){return Array.isArray(expr)?LayerUtils.formatFilterExpr(expr):"AND"}).join(" ")])},[]).join(";")}if(filter.filterGeom){newParams.FILTER_GEOM=VectorLayerUtils.geoJSONGeomToWkt(filter.filterGeom)}return{params:newParams,queryLayers:queryLayers,initialOpacities:initialOpacities}},formatFilterExpr:function formatFilterExpr(expr){var _this=this;if(expr.length===3&&typeof expr[0]==="string"){var op=expr[1].toUpperCase();if(typeof expr[2]==="number"){return"\"".concat(expr[0],"\" ").concat(op," ").concat(expr[2])}else if(expr[2]===null){return"\"".concat(expr[0],"\" ").concat(op," NULL")}else if(Array.isArray(expr[2])){return"\"".concat(expr[0],"\" ").concat(op," ( ").concat(expr[2].join(" , ")," )")}else{return"\"".concat(expr[0],"\" ").concat(op," '").concat(expr[2],"'")}}else{return"( "+expr.map(function(entry){return Array.isArray(entry)?_this.formatFilterExpr(entry):entry.toUpperCase()}).join(" ")+" )"}},buildWMSLayerUrlParam:function buildWMSLayerUrlParam(layers){var layernames=[];var opacities=[];var styles=[];var visibilities=[];var queryable=[];var _iterator6=_createForOfIteratorHelper(layers),_step6;try{var _loop3=function _loop3(){var layer=_step6.value;if(layer.role===LayerRole.THEME&&!isEmpty(layer.sublayers)){LayerUtils.collectWMSSublayerParams(layer,layernames,opacities,styles,queryable,visibilities,layer.visibility)}else if(layer.role===LayerRole.USERLAYER&&layer.type==="wms"){var sublayernames=[];LayerUtils.collectWMSSublayerParams(layer,sublayernames,opacities,styles,queryable,visibilities,layer.visibility);var layerurl=layer.url;if(layer.extwmsparams){layerurl+=(layerurl.includes("?")?"&":"?")+Object.entries(layer.extwmsparams||{}).map(function(_ref5){var _ref6=_slicedToArray(_ref5,2),key=_ref6[0],value=_ref6[1];return"extwms."+key+"="+value}).join("&")}layernames.push.apply(layernames,_toConsumableArray(sublayernames.map(function(name){return"wms:"+layerurl+"#"+name})))}else if(layer.role===LayerRole.USERLAYER&&(layer.type==="wfs"||layer.type==="wmts")){layernames.push(layer.type+":"+(layer.capabilitiesUrl||layer.url)+"#"+layer.name);opacities.push(layer.opacity);styles.push(layer.style);visibilities.push(layer.visibility)}else if(layer.role===LayerRole.USERLAYER&&layer.type==="separator"){layernames.push("sep:"+layer.title);opacities.push(255);styles.push("");visibilities.push(true)}};for(_iterator6.s();!(_step6=_iterator6.n()).done;){_loop3()}}catch(err){_iterator6.e(err)}finally{_iterator6.f()}var result=layernames.map(function(layername,idx){var param=layername;if(opacities[idx]<255){param+="["+(100-Math.round(opacities[idx]/255*100))+"]"}if(styles[idx]){param+="{"+styles[idx]+"}"}if(visibilities[idx]===0||visibilities[idx]===false){param+="!"}else if(visibilities[idx]===0.5){param+="~"}return param});if(ConfigUtils.getConfigProp("urlReverseLayerOrder")){result.reverse()}return result.join(",")},splitLayerUrlParam:function splitLayerUrlParam(entry){var opacityPattern=/\[(\d+)\]/;var stylePattern=/{([^}]+)}/;var extPattern=/^(\w+):(.*)#([^#]+)$/;var id=uuidv4();var type="theme";var layerUrl=null;var opacity=255;var style="";var visibility=true;var tristate=false;if(entry.endsWith("!")){visibility=false;entry=entry.slice(0,-1)}else if(entry.endsWith("~")){visibility=false;tristate=true;entry=entry.slice(0,-1)}var m=null;if(m=entry.match(opacityPattern)){opacity=Math.round(255-parseFloat(m[1])/100*255);entry=entry.slice(0,m.index)+entry.slice(m.index+m[0].length)}if(m=entry.match(stylePattern)){style=m[1];entry=entry.slice(0,m.index)+entry.slice(m.index+m[0].length)}var name=entry;if(m=entry.match(extPattern)){type=m[1];layerUrl=m[2];name=m[3]}else if(name.startsWith("sep:")){type="separator";name=name.slice(4)}return{id:id,type:type,url:layerUrl,name:name,opacity:opacity,style:style,visibility:visibility,tristate:tristate}},pathEqualOrBelow:function pathEqualOrBelow(parent,child){return isEqual(child.slice(0,parent.length),parent)},removeLayer:function removeLayer(layers,layer,sublayerpath){// Extract foreground layers
19
19
  var fglayers=layers.filter(function(lyr){return lyr.role!==LayerRole.BACKGROUND});// Explode layers (one entry for every single sublayer)
20
20
  var exploded=LayerUtils.explodeLayers(fglayers);// Remove matching entries
21
- exploded=exploded.filter(function(entry){return entry.layer.uuid!==layer.uuid||!LayerUtils.pathEqualOrBelow(sublayerpath,entry.path)});// Re-assemble layers
21
+ exploded=exploded.filter(function(entry){return entry.layer.id!==layer.id||!LayerUtils.pathEqualOrBelow(sublayerpath,entry.path)});// Re-assemble layers
22
22
  var newlayers=LayerUtils.implodeLayers(exploded);// Ensure theme layer is never removed
23
23
  if(!newlayers.find(function(lyr){return lyr.role===LayerRole.THEME})){var oldThemeLayer=layers.find(function(lyr){return lyr.role===LayerRole.THEME});if(oldThemeLayer){newlayers.push(_objectSpread(_objectSpread({},oldThemeLayer),{},{sublayers:[]}))}}// Re-add background layers
24
24
  return[].concat(_toConsumableArray(newlayers),_toConsumableArray(layers.filter(function(lyr){return lyr.role===LayerRole.BACKGROUND})))},insertSeparator:function insertSeparator(layers,title,beforelayerId,beforesublayerpath){// Extract foreground layers
@@ -29,7 +29,7 @@ exploded.splice(pos,0,LayerUtils.createSeparatorLayer(title)[0])}// Re-assemble
29
29
  return[].concat(_toConsumableArray(LayerUtils.implodeLayers(exploded)),_toConsumableArray(layers.filter(function(layer){return layer.role===LayerRole.BACKGROUND})))},reorderLayer:function reorderLayer(layers,movelayer,sublayerpath,delta,preventSplittingGroups){// Extract foreground layers
30
30
  var fglayers=layers.filter(function(layer){return layer.role!==LayerRole.BACKGROUND});// Explode layers (one entry for every single sublayer)
31
31
  var exploded=LayerUtils.explodeLayers(fglayers);// Find entry to move
32
- if(movelayer){var indices=exploded.reduce(function(result,entry,index){if(entry.layer.uuid===movelayer.uuid&&LayerUtils.pathEqualOrBelow(sublayerpath,entry.path)){return[].concat(_toConsumableArray(result),[index])}return result},[]);if(isEmpty(indices)){return layers}indices.sort(function(a,b){return a-b});if(delta<0&&indices[0]<=0||delta>0&&indices[indices.length-1]>=exploded.length-1){return layers}if(preventSplittingGroups){// Prevent moving an entry out of a containing group
32
+ if(movelayer){var indices=exploded.reduce(function(result,entry,index){if(entry.layer.id===movelayer.id&&LayerUtils.pathEqualOrBelow(sublayerpath,entry.path)){return[].concat(_toConsumableArray(result),[index])}return result},[]);if(isEmpty(indices)){return layers}indices.sort(function(a,b){return a-b});if(delta<0&&indices[0]<=0||delta>0&&indices[indices.length-1]>=exploded.length-1){return layers}if(preventSplittingGroups){// Prevent moving an entry out of a containing group
33
33
  var idx=delta<0?indices[0]:indices[indices.length-1];var level=sublayerpath.length;if(level>exploded[idx+delta].path.length||level>0&&!isEqual(exploded[idx+delta].path.slice(0,level-1),sublayerpath.slice(0,-1))){return layers}// Avoid splitting sibling groups when reordering
34
34
  if(exploded[idx+delta].path.length>level||!isEqual(exploded[idx+delta].path.slice(0,-1),sublayerpath.slice(0,-1))){// Find next slot
35
35
  var siblinggrouppath=exploded[idx+delta].path.slice(0,level);siblinggrouppath[siblinggrouppath.length-1]+=delta;while(idx+delta>=0&&idx+delta<exploded.length&&(exploded[idx+delta].path.length>level||!isEqual(exploded[idx+delta].path.slice(0,level),siblinggrouppath))){delta+=delta>0?1:-1}// The above logic adds the number of items to skip to the delta which is already -1 or +1, so we need to decrease delta by one accordingly
@@ -38,20 +38,20 @@ if(delta<0){var _iterator7=_createForOfIteratorHelper(indices),_step7;try{for(_i
38
38
  var newlayers=LayerUtils.implodeLayers(exploded);// Re-add background layers
39
39
  return[].concat(_toConsumableArray(newlayers),_toConsumableArray(layers.filter(function(layer){return layer.role===LayerRole.BACKGROUND})))},explodeLayers:function explodeLayers(layers){// Return array with one entry for every single sublayer)
40
40
  var exploded=[];var _iterator9=_createForOfIteratorHelper(layers),_step9;try{for(_iterator9.s();!(_step9=_iterator9.n()).done;){var layer=_step9.value;if(!isEmpty(layer.sublayers)){this.explodeSublayers(layer,layer,exploded)}else{var newLayer=_objectSpread({},layer);exploded.push({layer:newLayer,path:[],sublayer:newLayer})}}}catch(err){_iterator9.e(err)}finally{_iterator9.f()}return exploded},explodeSublayers:function explodeSublayers(layer,parent,exploded){var parentpath=arguments.length>3&&arguments[3]!==undefined?arguments[3]:[];for(var idx=0;idx<parent.sublayers.length;++idx){var path=[].concat(_toConsumableArray(parentpath),[idx]);if(parent.sublayers[idx].sublayers){LayerUtils.explodeSublayers(layer,parent.sublayers[idx],exploded,path)}else{// Reduced layer with one single sublayer per level, up to leaf
41
- var redLayer=_objectSpread({},layer);var group=redLayer;var _iterator10=_createForOfIteratorHelper(path),_step10;try{for(_iterator10.s();!(_step10=_iterator10.n()).done;){var jdx=_step10.value;group.sublayers=[_objectSpread({},group.sublayers[jdx])];group=group.sublayers[0]}}catch(err){_iterator10.e(err)}finally{_iterator10.f()}exploded.push({layer:redLayer,path:path,sublayer:group})}}},implodeLayers:function implodeLayers(exploded){var newlayers=[];var usedLayerUUids=new Set;// Merge all possible items of an exploded layer array
41
+ var redLayer=_objectSpread(_objectSpread({},layer),{},{id:uuidv4()});var group=redLayer;var _iterator10=_createForOfIteratorHelper(path),_step10;try{for(_iterator10.s();!(_step10=_iterator10.n()).done;){var jdx=_step10.value;group.sublayers=[_objectSpread({},group.sublayers[jdx])];group=group.sublayers[0]}}catch(err){_iterator10.e(err)}finally{_iterator10.f()}exploded.push({layer:redLayer,path:path,sublayer:group})}}},implodeLayers:function implodeLayers(exploded){var newlayers=[];// Merge all possible items of an exploded layer array
42
42
  var _iterator11=_createForOfIteratorHelper(exploded),_step11;try{for(_iterator11.s();!(_step11=_iterator11.n()).done;){var entry=_step11.value;var _layer2=entry.layer;// Attempt to merge with previous if possible
43
- var target=newlayers.length>0?newlayers[newlayers.length-1]:null;var source=_layer2;if(target&&target.sublayers&&target.id===_layer2.id){var innertarget=target.sublayers[target.sublayers.length-1];var innersource=source.sublayers[0];// Exploded entries have only one entry per sublayer level
43
+ var target=newlayers.length>0?newlayers[newlayers.length-1]:null;var source=_layer2;if(target&&target.sublayers&&target.url===_layer2.url){var innertarget=target.sublayers[target.sublayers.length-1];var innersource=source.sublayers[0];// Exploded entries have only one entry per sublayer level
44
44
  while(innertarget&&innertarget.sublayers&&innertarget.name===innersource.name){target=innertarget;source=innersource;innertarget=target.sublayers[target.sublayers.length-1];innersource=source.sublayers[0];// Exploded entries have only one entry per sublayer level
45
- }target.sublayers.push(source.sublayers[0]);LayerUtils.addUUIDs(source.sublayers[0],usedLayerUUids)}else{newlayers.push(_layer2);LayerUtils.addUUIDs(_layer2,usedLayerUUids)}}// Ensure mutually exclusive groups have exactly one visible layer
46
- }catch(err){_iterator11.e(err)}finally{_iterator11.f()}for(var _i=0,_newlayers=newlayers;_i<_newlayers.length;_i++){var layer=_newlayers[_i];LayerUtils.ensureMutuallyExclusive(layer)}for(var _i2=0,_newlayers2=newlayers;_i2<_newlayers2.length;_i2++){var _layer=_newlayers2[_i2];if(_layer.type==="wms"){Object.assign(_layer,LayerUtils.recomputeLayerBBox(_layer))}}return newlayers},insertLayer:function insertLayer(layers,newlayer,beforeattr,beforeval){var exploded=LayerUtils.explodeLayers(layers);var explodedAdd=LayerUtils.explodeLayers([newlayer]);var index=exploded.findIndex(function(entry){return entry.sublayer[beforeattr]===beforeval});if(index!==-1){exploded.splice.apply(exploded,[index,0].concat(_toConsumableArray(explodedAdd)))}return LayerUtils.implodeLayers(exploded)},ensureMutuallyExclusive:function ensureMutuallyExclusive(group){if(!isEmpty(group.sublayers)){if(group.mutuallyExclusive){var tristateSublayer=group.sublayers.find(function(sublayer){return sublayer.tristate===true});var visibleSublayer=tristateSublayer||group.sublayers.find(function(sublayer){return sublayer.visibility===true})||group.sublayers[0];var _iterator12=_createForOfIteratorHelper(group.sublayers),_step12;try{for(_iterator12.s();!(_step12=_iterator12.n()).done;){var sublayer=_step12.value;sublayer.visibility=sublayer===visibleSublayer}}catch(err){_iterator12.e(err)}finally{_iterator12.f()}}var _iterator13=_createForOfIteratorHelper(group.sublayers),_step13;try{for(_iterator13.s();!(_step13=_iterator13.n()).done;){var _sublayer=_step13.value;LayerUtils.ensureMutuallyExclusive(_sublayer)}}catch(err){_iterator13.e(err)}finally{_iterator13.f()}}},getSublayerNames:function getSublayerNames(layer){var _this2=this;var toplevel=arguments.length>1&&arguments[1]!==undefined?arguments[1]:true;var filter=arguments.length>2&&arguments[2]!==undefined?arguments[2]:null;return[toplevel&&layer.sublayers||filter&&!filter(layer)?null:layer.name].concat((layer.sublayers||[]).reduce(function(list,sublayer){return list.concat(_toConsumableArray(_this2.getSublayerNames(sublayer,false,filter)))},[])).filter(function(x){return x})},mergeSubLayers:function mergeSubLayers(baselayer,addlayer){addlayer=_objectSpread(_objectSpread({},baselayer),{},{sublayers:addlayer.sublayers});addlayer.externalLayerMap=_objectSpread({},addlayer.externalLayerMap);LayerUtils.extractExternalLayersFromSublayers(addlayer,addlayer);LayerUtils.addUUIDs(addlayer);if(isEmpty(addlayer.sublayers)){return _objectSpread({},baselayer)}if(isEmpty(baselayer.sublayers)){return addlayer}var explodedBase=LayerUtils.explodeLayers([baselayer]);var existing=explodedBase.map(function(entry){return entry.sublayer.name});var explodedAdd=LayerUtils.explodeLayers([addlayer]);explodedAdd=explodedAdd.filter(function(entry){return!existing.includes(entry.sublayer.name)});return LayerUtils.implodeLayers(explodedAdd.concat(explodedBase))[0]},searchSubLayer:function searchSubLayer(layer,attr,value){var path=arguments.length>3&&arguments[3]!==undefined?arguments[3]:[];if(layer.sublayers){var idx=0;var _iterator14=_createForOfIteratorHelper(layer.sublayers),_step14;try{for(_iterator14.s();!(_step14=_iterator14.n()).done;){var sublayer=_step14.value;var match=sublayer[attr]===value?sublayer:LayerUtils.searchSubLayer(sublayer,attr,value,path);if(match){path.unshift(idx);return match}idx+=1}}catch(err){_iterator14.e(err)}finally{_iterator14.f()}}else{if(layer[attr]===value){return layer}}return null},matchSubLayer:function matchSubLayer(layer,func){var path=arguments.length>2&&arguments[2]!==undefined?arguments[2]:[];if(layer.sublayers){var idx=0;var _iterator15=_createForOfIteratorHelper(layer.sublayers),_step15;try{for(_iterator15.s();!(_step15=_iterator15.n()).done;){var sublayer=_step15.value;var match=func(sublayer)?sublayer:LayerUtils.matchSubLayer(sublayer,func,path);if(match){path.unshift(idx);return match}idx+=1}}catch(err){_iterator15.e(err)}finally{_iterator15.f()}}else{if(func(layer)){return layer}}return null},searchLayer:function searchLayer(layers,key,value){var roles=arguments.length>3&&arguments[3]!==undefined?arguments[3]:[LayerRole.THEME,LayerRole.USERLAYER];var _iterator16=_createForOfIteratorHelper(layers),_step16;try{for(_iterator16.s();!(_step16=_iterator16.n()).done;){var layer=_step16.value;if(roles.includes(layer.role)){var matchsublayer=LayerUtils.searchSubLayer(layer,key,value);if(matchsublayer){return{layer:layer,sublayer:matchsublayer}}}}}catch(err){_iterator16.e(err)}finally{_iterator16.f()}return null},sublayerVisible:function sublayerVisible(layer,sublayerpath){var visible=layer.visibility!==false;var sublayer=layer;var _iterator17=_createForOfIteratorHelper(sublayerpath),_step17;try{for(_iterator17.s();!(_step17=_iterator17.n()).done;){var index=_step17.value;sublayer=sublayer.sublayers[index];visible&=sublayer.visibility!==false;if(!visible){return false}}}catch(err){_iterator17.e(err)}finally{_iterator17.f()}return true},computeLayerVisibility:function computeLayerVisibility(layer){if(isEmpty(layer.sublayers)||layer.visibility===false){return layer.visibility?1:0}var visible=0;layer.sublayers.map(function(sublayer){var _sublayer$visibility;var sublayervisibility=(_sublayer$visibility=sublayer.visibility)!==null&&_sublayer$visibility!==void 0?_sublayer$visibility:true;if(sublayer.sublayers&&sublayervisibility){visible+=LayerUtils.computeLayerVisibility(sublayer)}else{visible+=sublayervisibility?1:0}});return visible/layer.sublayers.length},computeLayerOpacity:function computeLayerOpacity(layer){if(isEmpty(layer.sublayers)){var _layer$opacity2;return(_layer$opacity2=layer.opacity)!==null&&_layer$opacity2!==void 0?_layer$opacity2:255}var opacity=0;layer.sublayers.map(function(sublayer){opacity+=LayerUtils.computeLayerOpacity(sublayer)});return opacity/layer.sublayers.length},computeLayerQueryable:function computeLayerQueryable(layer){var queryable=0;layer.sublayers.map(function(sublayer){var _sublayer$omitFromQue;var sublayerqueryable=(_sublayer$omitFromQue=!sublayer.omitFromQueryLayers)!==null&&_sublayer$omitFromQue!==void 0?_sublayer$omitFromQue:true;if(sublayer.sublayers&&sublayerqueryable){queryable+=LayerUtils.computeLayerQueryable(sublayer)}else{queryable+=sublayerqueryable?1:0}});return queryable/layer.sublayers.length},hasQueryableSublayers:function hasQueryableSublayers(layer){return layer.sublayers.find(function(sublayer){return sublayer.sulayers?LayerUtils.hasQueryableSublayers(sublayer):sublayer.queryable})},cloneLayer:function cloneLayer(layer,sublayerpath){var newlayer=_objectSpread({},layer);var cur=newlayer;for(var i=0;i<sublayerpath.length;++i){var idx=sublayerpath[i];cur.sublayers=[].concat(_toConsumableArray(cur.sublayers.slice(0,idx)),[_objectSpread({},cur.sublayers[idx])],_toConsumableArray(cur.sublayers.slice(idx+1)));cur=cur.sublayers[idx]}return{newlayer:newlayer,newsublayer:cur}},collectGroupLayers:function collectGroupLayers(layer,parentGroups,groupLayers){if(!isEmpty(layer.sublayers)){var _iterator18=_createForOfIteratorHelper(layer.sublayers),_step18;try{for(_iterator18.s();!(_step18=_iterator18.n()).done;){var sublayer=_step18.value;LayerUtils.collectGroupLayers(sublayer,parentGroups.concat(layer.name),groupLayers)}}catch(err){_iterator18.e(err)}finally{_iterator18.f()}}else{var _iterator19=_createForOfIteratorHelper(parentGroups),_step19;try{for(_iterator19.s();!(_step19=_iterator19.n()).done;){var group=_step19.value;groupLayers[group]=(groupLayers[group]||[]).concat(layer.name)}}catch(err){_iterator19.e(err)}finally{_iterator19.f()}}},replaceLayerGroups:function replaceLayerGroups(layerConfigs,layer){var groupLayers={};LayerUtils.collectGroupLayers(layer,[],groupLayers);var newLayerConfigs=[];var _iterator20=_createForOfIteratorHelper(layerConfigs),_step20;try{var _loop4=function _loop4(){var layerConfig=_step20.value;if(layerConfig.name in groupLayers){newLayerConfigs.push.apply(newLayerConfigs,_toConsumableArray(groupLayers[layerConfig.name].map(function(name){return _objectSpread(_objectSpread({},layerConfig),{},{name:name})})))}else{newLayerConfigs.push(layerConfig)}};for(_iterator20.s();!(_step20=_iterator20.n()).done;){_loop4()}}catch(err){_iterator20.e(err)}finally{_iterator20.f()}return newLayerConfigs},extractExternalLayersFromSublayers:function extractExternalLayersFromSublayers(toplayer,layer){if(layer.sublayers){layer.sublayers=layer.sublayers.map(function(sublayer){if(sublayer.externalLayer){var externalLayer=_objectSpread({},sublayer.externalLayer);LayerUtils.completeExternalLayer(externalLayer,sublayer,toplayer.mapCrs);toplayer.externalLayerMap[sublayer.name]=externalLayer;sublayer=_objectSpread({},sublayer);delete sublayer.externalLayer}if(sublayer.sublayers){LayerUtils.extractExternalLayersFromSublayers(toplayer,sublayer)}return sublayer})}},completeExternalLayer:function completeExternalLayer(externalLayer,sublayer,mapCrs){externalLayer.title=externalLayer.title||(sublayer||{}).title||externalLayer.name;externalLayer.uuid=uuidv4();if(externalLayer.type==="wms"||externalLayer.params){externalLayer.version=externalLayer.version||"1.3.0";externalLayer.featureInfoUrl=externalLayer.featureInfoUrl||externalLayer.url;externalLayer.legendUrl=externalLayer.legendUrl||externalLayer.url;externalLayer.queryLayers=externalLayer.queryLayers||externalLayer.params.LAYERS.split(",");var externalLayerFeatureInfoFormats=ConfigUtils.getConfigProp("externalLayerFeatureInfoFormats")||{};for(var _i3=0,_Object$keys=Object.keys(externalLayerFeatureInfoFormats);_i3<_Object$keys.length;_i3++){var entry=_Object$keys[_i3];if(externalLayer.featureInfoUrl.toLowerCase().includes(entry.toLowerCase())){externalLayer.infoFormats=[externalLayerFeatureInfoFormats[entry]];break}}}else if(externalLayer.type==="mvt"){externalLayer.projection=mapCrs;if(externalLayer.tileGridName){externalLayer.tileGridConfig=(ConfigUtils.getConfigProp("mvtTileGrids")||{})[externalLayer.tileGridName];if(!externalLayer.tileGridConfig){/* eslint-disable-next-line */console.warn("Tile grid config not found: "+externalLayer.tileGridName)}}}},getLegendUrl:function getLegendUrl(layer,sublayer,scale,map,bboxDependentLegend,scaleDependentLegend,extraLegendParameters){if(layer.type!=="wms"){return layer.legendUrl||""}var requestParams={SERVICE:"WMS",REQUEST:"GetLegendGraphic",FORMAT:"image/png",CRS:map.projection,SRS:map.projection,SLD_VERSION:"1.1.0",WIDTH:200};if(extraLegendParameters){Object.assign(requestParams,Object.fromEntries(extraLegendParameters.split("&").map(function(entry){return entry.split("=")})))}if(scaleDependentLegend===true||scaleDependentLegend==="theme"&&layer.role===LayerRole.THEME){requestParams.SCALE=Math.round(scale)}if(bboxDependentLegend===true||bboxDependentLegend==="theme"&&layer.role===LayerRole.THEME){var bounds=map.bbox.bounds;if(CoordinatesUtils.getAxisOrder(map.projection).substr(0,2)==="ne"&&layer.version==="1.3.0"){requestParams.BBOX=[bounds[1],bounds[0],bounds[3],bounds[2]].join(",")}else{requestParams.BBOX=bounds.join(",")}}if(layer.externalLayerMap&&layer.externalLayerMap[sublayer.name]){var externalLayer=layer.externalLayerMap[sublayer.name];if(externalLayer.type!=="wms"){return externalLayer.legendUrl||""}var urlParts=url.parse(externalLayer.legendUrl,true);urlParts.query=Object.keys(urlParts.query).filter(function(key){// Filter service, request, version
45
+ }target.sublayers.push(source.sublayers[0])}else{newlayers.push(_layer2)}}// Ensure mutually exclusive groups have exactly one visible layer
46
+ }catch(err){_iterator11.e(err)}finally{_iterator11.f()}for(var _i=0,_newlayers=newlayers;_i<_newlayers.length;_i++){var layer=_newlayers[_i];LayerUtils.ensureMutuallyExclusive(layer)}for(var _i2=0,_newlayers2=newlayers;_i2<_newlayers2.length;_i2++){var _layer=_newlayers2[_i2];if(_layer.type==="wms"){Object.assign(_layer,LayerUtils.recomputeLayerBBox(_layer))}}return newlayers},insertLayer:function insertLayer(layers,newlayer,beforeattr,beforeval){var exploded=LayerUtils.explodeLayers(layers);var explodedAdd=LayerUtils.explodeLayers([newlayer]);var index=exploded.findIndex(function(entry){return entry.sublayer[beforeattr]===beforeval});if(index!==-1){exploded.splice.apply(exploded,[index,0].concat(_toConsumableArray(explodedAdd)))}return LayerUtils.implodeLayers(exploded)},ensureMutuallyExclusive:function ensureMutuallyExclusive(group){if(!isEmpty(group.sublayers)){if(group.mutuallyExclusive){var tristateSublayer=group.sublayers.find(function(sublayer){return sublayer.tristate===true});var visibleSublayer=tristateSublayer||group.sublayers.find(function(sublayer){return sublayer.visibility===true})||group.sublayers[0];var _iterator12=_createForOfIteratorHelper(group.sublayers),_step12;try{for(_iterator12.s();!(_step12=_iterator12.n()).done;){var sublayer=_step12.value;sublayer.visibility=sublayer===visibleSublayer}}catch(err){_iterator12.e(err)}finally{_iterator12.f()}}var _iterator13=_createForOfIteratorHelper(group.sublayers),_step13;try{for(_iterator13.s();!(_step13=_iterator13.n()).done;){var _sublayer=_step13.value;LayerUtils.ensureMutuallyExclusive(_sublayer)}}catch(err){_iterator13.e(err)}finally{_iterator13.f()}}},getSublayerNames:function getSublayerNames(layer){var _this2=this;var toplevel=arguments.length>1&&arguments[1]!==undefined?arguments[1]:true;var filter=arguments.length>2&&arguments[2]!==undefined?arguments[2]:null;return[toplevel&&layer.sublayers||filter&&!filter(layer)?null:layer.name].concat((layer.sublayers||[]).reduce(function(list,sublayer){return list.concat(_toConsumableArray(_this2.getSublayerNames(sublayer,false,filter)))},[])).filter(function(x){return x})},mergeSubLayers:function mergeSubLayers(baselayer,addlayer){addlayer=_objectSpread(_objectSpread({},baselayer),{},{sublayers:addlayer.sublayers});addlayer.externalLayerMap=_objectSpread({},addlayer.externalLayerMap);LayerUtils.extractExternalLayersFromSublayers(addlayer,addlayer);if(isEmpty(addlayer.sublayers)){return _objectSpread({},baselayer)}if(isEmpty(baselayer.sublayers)){return addlayer}var explodedBase=LayerUtils.explodeLayers([baselayer]);var existing=explodedBase.map(function(entry){return entry.sublayer.name});var explodedAdd=LayerUtils.explodeLayers([addlayer]);explodedAdd=explodedAdd.filter(function(entry){return!existing.includes(entry.sublayer.name)});return LayerUtils.implodeLayers(explodedAdd.concat(explodedBase))[0]},searchSubLayer:function searchSubLayer(layer,attr,value){var path=arguments.length>3&&arguments[3]!==undefined?arguments[3]:[];if(layer.sublayers){var idx=0;var _iterator14=_createForOfIteratorHelper(layer.sublayers),_step14;try{for(_iterator14.s();!(_step14=_iterator14.n()).done;){var sublayer=_step14.value;var match=sublayer[attr]===value?sublayer:LayerUtils.searchSubLayer(sublayer,attr,value,path);if(match){path.unshift(idx);return match}idx+=1}}catch(err){_iterator14.e(err)}finally{_iterator14.f()}}else{if(layer[attr]===value){return layer}}return null},matchSubLayer:function matchSubLayer(layer,func){var path=arguments.length>2&&arguments[2]!==undefined?arguments[2]:[];if(layer.sublayers){var idx=0;var _iterator15=_createForOfIteratorHelper(layer.sublayers),_step15;try{for(_iterator15.s();!(_step15=_iterator15.n()).done;){var sublayer=_step15.value;var match=func(sublayer)?sublayer:LayerUtils.matchSubLayer(sublayer,func,path);if(match){path.unshift(idx);return match}idx+=1}}catch(err){_iterator15.e(err)}finally{_iterator15.f()}}else{if(func(layer)){return layer}}return null},searchLayer:function searchLayer(layers,layerUrl,layerName){var match=null;layers.find(function(layer){var sublayer=null;if(layer.url===layerUrl&&(sublayer=LayerUtils.searchSubLayer(layer,"name",layerName))){match={layer:layer,sublayer:sublayer};return true}return false});return match},sublayerVisible:function sublayerVisible(layer,sublayerpath){var visible=layer.visibility!==false;var sublayer=layer;var _iterator16=_createForOfIteratorHelper(sublayerpath),_step16;try{for(_iterator16.s();!(_step16=_iterator16.n()).done;){var index=_step16.value;sublayer=sublayer.sublayers[index];visible&=sublayer.visibility!==false;if(!visible){return false}}}catch(err){_iterator16.e(err)}finally{_iterator16.f()}return true},computeLayerVisibility:function computeLayerVisibility(layer){if(isEmpty(layer.sublayers)||layer.visibility===false){return layer.visibility?1:0}var visible=0;layer.sublayers.map(function(sublayer){var _sublayer$visibility;var sublayervisibility=(_sublayer$visibility=sublayer.visibility)!==null&&_sublayer$visibility!==void 0?_sublayer$visibility:true;if(sublayer.sublayers&&sublayervisibility){visible+=LayerUtils.computeLayerVisibility(sublayer)}else{visible+=sublayervisibility?1:0}});return visible/layer.sublayers.length},computeLayerOpacity:function computeLayerOpacity(layer){if(isEmpty(layer.sublayers)){var _layer$opacity2;return(_layer$opacity2=layer.opacity)!==null&&_layer$opacity2!==void 0?_layer$opacity2:255}var opacity=0;layer.sublayers.map(function(sublayer){opacity+=LayerUtils.computeLayerOpacity(sublayer)});return opacity/layer.sublayers.length},computeLayerQueryable:function computeLayerQueryable(layer){var queryable=0;layer.sublayers.map(function(sublayer){var _sublayer$omitFromQue;var sublayerqueryable=(_sublayer$omitFromQue=!sublayer.omitFromQueryLayers)!==null&&_sublayer$omitFromQue!==void 0?_sublayer$omitFromQue:true;if(sublayer.sublayers&&sublayerqueryable){queryable+=LayerUtils.computeLayerQueryable(sublayer)}else{queryable+=sublayerqueryable?1:0}});return queryable/layer.sublayers.length},hasQueryableSublayers:function hasQueryableSublayers(layer){return layer.sublayers.find(function(sublayer){return sublayer.sulayers?LayerUtils.hasQueryableSublayers(sublayer):sublayer.queryable})},cloneLayer:function cloneLayer(layer,sublayerpath){var newlayer=_objectSpread({},layer);var cur=newlayer;for(var i=0;i<sublayerpath.length;++i){var idx=sublayerpath[i];cur.sublayers=[].concat(_toConsumableArray(cur.sublayers.slice(0,idx)),[_objectSpread({},cur.sublayers[idx])],_toConsumableArray(cur.sublayers.slice(idx+1)));cur=cur.sublayers[idx]}return{newlayer:newlayer,newsublayer:cur}},collectGroupLayers:function collectGroupLayers(layer,parentGroups,groupLayers){if(!isEmpty(layer.sublayers)){var _iterator17=_createForOfIteratorHelper(layer.sublayers),_step17;try{for(_iterator17.s();!(_step17=_iterator17.n()).done;){var sublayer=_step17.value;LayerUtils.collectGroupLayers(sublayer,parentGroups.concat(layer.name),groupLayers)}}catch(err){_iterator17.e(err)}finally{_iterator17.f()}}else{var _iterator18=_createForOfIteratorHelper(parentGroups),_step18;try{for(_iterator18.s();!(_step18=_iterator18.n()).done;){var group=_step18.value;groupLayers[group]=(groupLayers[group]||[]).concat(layer.name)}}catch(err){_iterator18.e(err)}finally{_iterator18.f()}}},replaceLayerGroups:function replaceLayerGroups(layerConfigs,layer){var groupLayers={};LayerUtils.collectGroupLayers(layer,[],groupLayers);var newLayerConfigs=[];var _iterator19=_createForOfIteratorHelper(layerConfigs),_step19;try{var _loop4=function _loop4(){var layerConfig=_step19.value;if(layerConfig.name in groupLayers){newLayerConfigs.push.apply(newLayerConfigs,_toConsumableArray(groupLayers[layerConfig.name].map(function(name){return _objectSpread(_objectSpread({},layerConfig),{},{name:name})})))}else{newLayerConfigs.push(layerConfig)}};for(_iterator19.s();!(_step19=_iterator19.n()).done;){_loop4()}}catch(err){_iterator19.e(err)}finally{_iterator19.f()}return newLayerConfigs},extractExternalLayersFromSublayers:function extractExternalLayersFromSublayers(toplayer,layer){if(layer.sublayers){layer.sublayers=layer.sublayers.map(function(sublayer){if(sublayer.externalLayer){var externalLayer=_objectSpread({},sublayer.externalLayer);LayerUtils.completeExternalLayer(externalLayer,sublayer,toplayer.mapCrs);toplayer.externalLayerMap[sublayer.name]=externalLayer;sublayer=_objectSpread({},sublayer);delete sublayer.externalLayer}if(sublayer.sublayers){LayerUtils.extractExternalLayersFromSublayers(toplayer,sublayer)}return sublayer})}},completeExternalLayer:function completeExternalLayer(externalLayer,sublayer,mapCrs){externalLayer.title=externalLayer.title||(sublayer||{}).title||externalLayer.name;externalLayer.id=uuidv4();if(externalLayer.type==="wms"||externalLayer.params){externalLayer.version=externalLayer.version||"1.3.0";externalLayer.featureInfoUrl=externalLayer.featureInfoUrl||externalLayer.url;externalLayer.legendUrl=externalLayer.legendUrl||externalLayer.url;externalLayer.queryLayers=externalLayer.queryLayers||externalLayer.params.LAYERS.split(",");var externalLayerFeatureInfoFormats=ConfigUtils.getConfigProp("externalLayerFeatureInfoFormats")||{};for(var _i3=0,_Object$keys=Object.keys(externalLayerFeatureInfoFormats);_i3<_Object$keys.length;_i3++){var entry=_Object$keys[_i3];if(externalLayer.featureInfoUrl.toLowerCase().includes(entry.toLowerCase())){externalLayer.infoFormats=[externalLayerFeatureInfoFormats[entry]];break}}}else if(externalLayer.type==="mvt"){externalLayer.projection=mapCrs;if(externalLayer.tileGridName){externalLayer.tileGridConfig=(ConfigUtils.getConfigProp("mvtTileGrids")||{})[externalLayer.tileGridName];if(!externalLayer.tileGridConfig){/* eslint-disable-next-line */console.warn("Tile grid config not found: "+externalLayer.tileGridName)}}}},getLegendUrl:function getLegendUrl(layer,sublayer,scale,map,bboxDependentLegend,scaleDependentLegend,extraLegendParameters){if(layer.type!=="wms"){return layer.legendUrl||""}var requestParams={SERVICE:"WMS",REQUEST:"GetLegendGraphic",FORMAT:"image/png",CRS:map.projection,SRS:map.projection,SLD_VERSION:"1.1.0",WIDTH:200,HEIGHT:200};if(extraLegendParameters){Object.assign(requestParams,Object.fromEntries(extraLegendParameters.split("&").map(function(entry){return entry.split("=")})))}if(scaleDependentLegend===true||scaleDependentLegend==="theme"&&layer.role===LayerRole.THEME){requestParams.SCALE=Math.round(scale)}if(bboxDependentLegend===true||bboxDependentLegend==="theme"&&layer.role===LayerRole.THEME){var bounds=map.bbox.bounds;if(CoordinatesUtils.getAxisOrder(map.projection).substr(0,2)==="ne"&&layer.version==="1.3.0"){requestParams.BBOX=[bounds[1],bounds[0],bounds[3],bounds[2]].join(",")}else{requestParams.BBOX=bounds.join(",")}}if(layer.externalLayerMap&&layer.externalLayerMap[sublayer.name]){var externalLayer=layer.externalLayerMap[sublayer.name];if(externalLayer.type!=="wms"){return externalLayer.legendUrl||""}var urlParts=url.parse(externalLayer.legendUrl,true);urlParts.query=Object.keys(urlParts.query).filter(function(key){// Filter service, request, version
47
47
  return!["service","request","version"].includes(key.toLowerCase())}).reduce(function(res,key){return _objectSpread(_objectSpread({},res),{},_defineProperty({},key,urlParts.query[key]))},{});urlParts.query=_objectSpread(_objectSpread(_objectSpread({VERSION:layer.version},urlParts.query),requestParams),{},{LAYER:externalLayer.params.LAYERS});delete urlParts.search;return url.format(urlParts)}else{var _layer$params$FILTER;var layername=layer===sublayer?layer.params.LAYERS.split(",").reverse().join(","):sublayer.name;var style=layer===sublayer?layer.params.STYLES.split(",").reverse().join(","):sublayer.style;var _urlParts=url.parse(layer.legendUrl,true);_urlParts.query=Object.keys(_urlParts.query).filter(function(key){// Filter service, request, version
48
48
  return!["service","request","version"].includes(key.toLowerCase())}).reduce(function(res,key){return _objectSpread(_objectSpread({},res),{},_defineProperty({},key,_urlParts.query[key]))},{});_urlParts.query=_objectSpread(_objectSpread(_objectSpread({VERSION:layer.version},_urlParts.query),requestParams),{},{LAYER:layername,STYLES:style,FILTER:(_layer$params$FILTER=layer.params.FILTER)!==null&&_layer$params$FILTER!==void 0?_layer$params$FILTER:""});delete _urlParts.search;return url.format(_urlParts)}},layerScaleInRange:function layerScaleInRange(layer,mapScale){return(layer.minScale===undefined||mapScale>=layer.minScale)&&(layer.maxScale===undefined||mapScale<layer.maxScale)},addExternalLayerPrintParams:function addExternalLayerPrintParams(layer,params,printCrs,counterRef){var qgisServerVersion=ConfigUtils.getConfigProp("qgisServerVersion",null,3);if(qgisServerVersion>=3){if(layer.type==="wms"){var layerUrl=layer.url;var urlParts=url.parse(layerUrl,true);// Resolve relative urls
49
49
  if(!urlParts.host){var locationParts=url.parse(window.location.href);urlParts.protocol=locationParts.protocol;urlParts.host=locationParts.host;delete urlParts.search;layerUrl=url.format(urlParts)}var identifier=String.fromCharCode(65+counterRef[0]++);params.LAYERS.push("EXTERNAL_WMS:"+identifier);params.STYLES.push("");params.COLORS.push("");params[identifier+":url"]=layerUrl;params[identifier+":layers"]=layer.params.LAYERS;params[identifier+":styles"]=layer.params.STYLES;params[identifier+":format"]="image/png";if(layer.serverType==="qgis"&&layer.params.FILTER){params[identifier+":filter"]=layer.params.FILTER}params[identifier+":crs"]=printCrs;params[identifier+":dpiMode"]="7";params[identifier+":contextualWMSLegend"]="0";// If only one layer is request, request external layer with full opacity
50
50
  // and control opacity at QGIS server level (helps preserving opacity if external server does not support OPACITIES)
51
51
  var opacities=layer.params.OPACITIES.split(",");if(opacities.length===1){params.OPACITIES.push(opacities[0]);params[identifier+":opacities"]="255"}else{params.OPACITIES.push("255");params[identifier+":opacities"]=layer.params.OPACITIES}if(layer.url.includes("?")){params[identifier+":IgnoreGetMapUrl"]="1"}Object.entries(layer.extwmsparams||{}).forEach(function(_ref7){var _ref8=_slicedToArray(_ref7,2),key=_ref8[0],value=_ref8[1];params[identifier+":"+key]=value})}}else if(qgisServerVersion===2){if(layer.type==="wms"){var names=layer.params.LAYERS.split(",");var _opacities2=layer.params.OPACITIES.split(",");for(var idx=0;idx<names.length;++idx){// Handled by qwc-print-service
52
52
  params.LAYERS.push("wms:".concat(layer.url,"#").concat(names[idx]));params.OPACITIES.push(_opacities2[idx]);params.COLORS.push("");params.STYLES.push("")}}else if(layer.type==="wfs"){// Handled by qwc-print-service
53
- params.LAYERS.push("wfs:".concat(layer.url,"#").concat(layer.name));params.OPACITIES.push(layer.opacity);params.COLORS.push(layer.color);params.STYLES.push("")}}},collectPrintParams:function collectPrintParams(layers,theme,printScale,printCrs,printExternalLayers,omitBackgroundLayer){var params={LAYERS:[],OPACITIES:[],STYLES:[],COLORS:[],FILTER:"",FILTER_GEOM:""};var counterRef=[0];var _iterator21=_createForOfIteratorHelper(layers),_step21;try{for(_iterator21.s();!(_step21=_iterator21.n()).done;){var _layer3=_step21.value;if(_layer3.role===LayerRole.THEME&&_layer3.params.LAYERS){var _layer3$params$FILTER,_layer3$params$FILTER2;params.LAYERS.push(_layer3.params.LAYERS);params.OPACITIES.push(_layer3.params.OPACITIES);params.STYLES.push(_layer3.params.STYLES);params.COLORS.push(_layer3.params.LAYERS.split(",").map(function(){return""}).join(","));params.FILTER=(_layer3$params$FILTER=_layer3.params.FILTER)!==null&&_layer3$params$FILTER!==void 0?_layer3$params$FILTER:"";params.FILTER_GEOM=(_layer3$params$FILTER2=_layer3.params.FILTER_GEOM)!==null&&_layer3$params$FILTER2!==void 0?_layer3$params$FILTER2:""}else if(printExternalLayers&&_layer3.role===LayerRole.USERLAYER&&_layer3.visibility!==false&&LayerUtils.layerScaleInRange(_layer3,printScale)){LayerUtils.addExternalLayerPrintParams(_layer3,params,printCrs,counterRef)}}}catch(err){_iterator21.e(err)}finally{_iterator21.f()}var backgroundLayer=layers.find(function(layer){return layer.role===LayerRole.BACKGROUND&&layer.visibility===true});if(backgroundLayer&&!omitBackgroundLayer){var backgroundLayerName=backgroundLayer.name;var themeBackgroundLayer=theme.backgroundLayers.find(function(entry){return entry.name===backgroundLayerName});var printBackgroundLayer=themeBackgroundLayer?themeBackgroundLayer.printLayer:null;if(printBackgroundLayer){// Use printLayer defined in qgis project
53
+ params.LAYERS.push("wfs:".concat(layer.url,"#").concat(layer.name));params.OPACITIES.push(layer.opacity);params.COLORS.push(layer.color);params.STYLES.push("")}}},collectPrintParams:function collectPrintParams(layers,theme,printScale,printCrs,printExternalLayers,omitBackgroundLayer){var params={LAYERS:[],OPACITIES:[],STYLES:[],COLORS:[],FILTER:"",FILTER_GEOM:""};var counterRef=[0];var _iterator20=_createForOfIteratorHelper(layers),_step20;try{for(_iterator20.s();!(_step20=_iterator20.n()).done;){var _layer3=_step20.value;if(_layer3.role===LayerRole.THEME&&_layer3.params.LAYERS){var _layer3$params$FILTER,_layer3$params$FILTER2;params.LAYERS.push(_layer3.params.LAYERS);params.OPACITIES.push(_layer3.params.OPACITIES);params.STYLES.push(_layer3.params.STYLES);params.COLORS.push(_layer3.params.LAYERS.split(",").map(function(){return""}).join(","));params.FILTER=(_layer3$params$FILTER=_layer3.params.FILTER)!==null&&_layer3$params$FILTER!==void 0?_layer3$params$FILTER:"";params.FILTER_GEOM=(_layer3$params$FILTER2=_layer3.params.FILTER_GEOM)!==null&&_layer3$params$FILTER2!==void 0?_layer3$params$FILTER2:""}else if(printExternalLayers&&_layer3.role===LayerRole.USERLAYER&&_layer3.visibility!==false&&LayerUtils.layerScaleInRange(_layer3,printScale)){LayerUtils.addExternalLayerPrintParams(_layer3,params,printCrs,counterRef)}}}catch(err){_iterator20.e(err)}finally{_iterator20.f()}var backgroundLayer=layers.find(function(layer){return layer.role===LayerRole.BACKGROUND&&layer.visibility===true});if(backgroundLayer&&!omitBackgroundLayer){var backgroundLayerName=backgroundLayer.name;var themeBackgroundLayer=theme.backgroundLayers.find(function(entry){return entry.name===backgroundLayerName});var printBackgroundLayer=themeBackgroundLayer?themeBackgroundLayer.printLayer:null;if(printBackgroundLayer){// Use printLayer defined in qgis project
54
54
  var printBgLayerName=printBackgroundLayer;if(Array.isArray(printBackgroundLayer)){printBgLayerName=null;for(var i=0;i<printBackgroundLayer.length;++i){printBgLayerName=printBackgroundLayer[i].name;if(printScale<=printBackgroundLayer[i].maxScale){break}}}if(printBgLayerName){var match=null;if((match=printBgLayerName.match(/^(\w+):(.*)#([^#]+)$/))&&match[1]==="wms"){if(printExternalLayers){var _backgroundLayer$opac;var layer={type:"wms",params:{LAYERS:match[3],OPACITIES:String((_backgroundLayer$opac=backgroundLayer.opacity)!==null&&_backgroundLayer$opac!==void 0?_backgroundLayer$opac:255),STYLES:""},url:match[2]};LayerUtils.addExternalLayerPrintParams(layer,params,printCrs,counterRef)}}else{var _backgroundLayer$opac2;params.LAYERS.push(printBgLayerName);params.OPACITIES.push(String((_backgroundLayer$opac2=backgroundLayer.opacity)!==null&&_backgroundLayer$opac2!==void 0?_backgroundLayer$opac2:255));params.COLORS.push("");params.STYLES.push("")}}}else if(printExternalLayers){// Inject client-side wms as external layer for print
55
55
  var items=backgroundLayer.type==="group"?backgroundLayer.items:[backgroundLayer];items.slice(0).reverse().forEach(function(layer){if(LayerUtils.layerScaleInRange(layer,printScale)){LayerUtils.addExternalLayerPrintParams(layer,params,printCrs,counterRef)}})}}params.LAYERS=params.LAYERS.reverse().join(",");params.OPACITIES=params.OPACITIES.reverse().join(",");params.COLORS=params.COLORS.reverse().join(",");params.STYLES=params.STYLES.reverse().join(",");return params},getTimeDimensionValues:function getTimeDimensionValues(layer){var result={names:new Set,values:new Set,attributes:{}};if(layer.visibility){(layer.dimensions||[]).forEach(function(dimension){if(dimension.units==="ISO8601"&&dimension.value){result.names.add(dimension.name);dimension.value.split(/,\s+/).filter(function(x){return x}).forEach(function(x){return result.values.add(x)});result.attributes[layer.name]=[dimension.fieldName,dimension.endFieldName]}})}(layer.sublayers||[]).forEach(function(sublayer){var sublayerResult=LayerUtils.getTimeDimensionValues(sublayer);sublayerResult.names.forEach(function(x){return result.names.add(x)});sublayerResult.values.forEach(function(x){return result.values.add(x)});result.attributes=_objectSpread(_objectSpread({},result.attributes),sublayerResult.attributes)});return result},getAttribution:function getAttribution(layer,map){var showThemeAttributionOnly=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;var transformedMapBBoxes=arguments.length>3&&arguments[3]!==undefined?arguments[3]:{};if(layer.visibility===false||showThemeAttributionOnly&&layer.role!==LayerRole.THEME){return{}}var mapScale=MapUtils.computeForZoom(map.scales,map.zoom);if(!LayerUtils.layerScaleInRange(layer,mapScale)){return{}}if(layer.bbox&&layer.bbox.bounds){var layerCrs=layer.bbox.crs||map.projection;if(!transformedMapBBoxes[layerCrs]){transformedMapBBoxes[layerCrs]=CoordinatesUtils.reprojectBbox(map.bbox.bounds,map.projection,layerCrs)}var mapbbox=transformedMapBBoxes[layerCrs];var laybbox=layer.bbox.bounds;if(mapbbox[0]>laybbox[2]||mapbbox[2]<laybbox[0]||mapbbox[1]>laybbox[3]||mapbbox[3]<laybbox[1]){// Extents don't overlap
56
56
  return{}}}var copyrights={};if(layer.sublayers){Object.assign(copyrights,layer.sublayers.reduce(function(res,sublayer){return _objectSpread(_objectSpread({},res),LayerUtils.getAttribution(sublayer,map,false,transformedMapBBoxes))},{}))}else if(layer.type==="group"&&layer.items){Object.assign(copyrights,layer.items.reduce(function(res,sublayer){return _objectSpread(_objectSpread({},res),LayerUtils.getAttribution(sublayer,map,false,transformedMapBBoxes))},{}))}if(layer.attribution&&layer.attribution.Title){var key=layer.attribution.OnlineResource||layer.attribution.Title;copyrights[key]={title:layer.attribution.OnlineResource?layer.attribution.Title:null,layers:[].concat(_toConsumableArray((copyrights[key]||{}).layers||[]),[layer])}}return copyrights},recomputeLayerBBox:function recomputeLayerBBox(layer){if(isEmpty(layer.sublayers)){return layer}var bounds=null;var newlayer=_objectSpread({},layer);newlayer.sublayers=newlayer.sublayers.map(function(sublayer){sublayer=LayerUtils.recomputeLayerBBox(sublayer);if(!bounds&&sublayer.bbox&&sublayer.bbox.bounds){bounds=CoordinatesUtils.reprojectBbox(sublayer.bbox.bounds,sublayer.bbox.crs,"EPSG:4326")}else if(bounds&&sublayer.bbox&&sublayer.bbox.bounds){var sublayerbounds=CoordinatesUtils.reprojectBbox(sublayer.bbox.bounds,sublayer.bbox.crs,"EPSG:4326");bounds=[Math.min(bounds[0],sublayerbounds[0]),Math.min(bounds[1],sublayerbounds[1]),Math.max(bounds[2],sublayerbounds[2]),Math.max(bounds[3],sublayerbounds[3])]}return sublayer});if(bounds){newlayer.bbox={bounds:bounds,crs:"EPSG:4326"}}return newlayer},propagateLayerProperty:function propagateLayerProperty(newlayer,property,value){var path=arguments.length>3&&arguments[3]!==undefined?arguments[3]:null;Object.assign(newlayer,_defineProperty({},property,value));// Don't propagate visibility for mutually exclusive groups
57
- if(newlayer.sublayers&&!(property==="visibility"&&newlayer.mutuallyExclusive)){newlayer.sublayers=newlayer.sublayers.map(function(sublayer,idx){if(path===null||!isEmpty(path)&&path[0]===idx){var newsublayer=_objectSpread({},sublayer);LayerUtils.propagateLayerProperty(newsublayer,property,value,path?path.slice(1):null);return newsublayer}else{return sublayer}})}},getLayerRefreshInterval:function getLayerRefreshInterval(layer){var _layer$refreshInterva;var refreshInterval=(_layer$refreshInterva=layer.refreshInterval)!==null&&_layer$refreshInterva!==void 0?_layer$refreshInterva:0;(layer.sublayers||[]).forEach(function(sublayer){var sublayerRefreshInterval=LayerUtils.getLayerRefreshInterval(sublayer);if(sublayerRefreshInterval>0){refreshInterval=refreshInterval>0?Math.min(refreshInterval,sublayerRefreshInterval):sublayerRefreshInterval}});return refreshInterval}};export default LayerUtils;
57
+ if(newlayer.sublayers&&!(property==="visibility"&&newlayer.mutuallyExclusive)){newlayer.sublayers=newlayer.sublayers.map(function(sublayer,idx){if(path===null||!isEmpty(path)&&path[0]===idx){var newsublayer=_objectSpread({},sublayer);LayerUtils.propagateLayerProperty(newsublayer,property,value,path?path.slice(1):null);return newsublayer}else{return sublayer}})}},getLayerRefreshInterval:function getLayerRefreshInterval(layer){var _layer$refreshInterva;var refreshInterval=(_layer$refreshInterva=layer.refreshInterval)!==null&&_layer$refreshInterva!==void 0?_layer$refreshInterva:0;(layer.sublayers||[]).forEach(function(sublayer){var sublayerRefreshInterval=LayerUtils.getLayerRefreshInterval(sublayer);if(sublayerRefreshInterval>0){refreshInterval=refreshInterval>0?Math.min(refreshInterval,sublayerRefreshInterval):sublayerRefreshInterval}});return refreshInterval},collectFeatureReports:function collectFeatureReports(layers){if(!ConfigUtils.getConfigProp("documentServiceUrl")){return{}}var reports={};var _collectLayerReports=function collectLayerReports(toplayer,layer){if(layer.sublayers){var _iterator21=_createForOfIteratorHelper(layer.sublayers),_step21;try{for(_iterator21.s();!(_step21=_iterator21.n()).done;){var sublayer=_step21.value;reports=_objectSpread(_objectSpread({},reports),_collectLayerReports(toplayer,sublayer))}}catch(err){_iterator21.e(err)}finally{_iterator21.f()}}else if(layer.featureReport){var key=toplayer.url+"#"+layer.name;if(Array.isArray(layer.featureReport)){reports[key]=layer.featureReport.map(function(report){return{title:report.title,template:report.template}})}else{reports[key]=[{title:layer.title,template:layer.featureReport}]}}return reports};layers.forEach(function(layer){if(layer.role===LayerRole.THEME||layer.role===LayerRole.USERLAYER){_collectLayerReports(layer,layer)}});return reports}};export default LayerUtils;
@@ -1,3 +1,3 @@
1
1
  function _toConsumableArray(r){return _arrayWithoutHoles(r)||_iterableToArray(r)||_unsupportedIterableToArray(r)||_nonIterableSpread()}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(r,a){if(r){if("string"==typeof r)return _arrayLikeToArray(r,a);var t={}.toString.call(r).slice(8,-1);return"Object"===t&&r.constructor&&(t=r.constructor.name),"Map"===t||"Set"===t?Array.from(r):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_arrayLikeToArray(r,a):void 0}}function _iterableToArray(r){if("undefined"!=typeof Symbol&&null!=r[Symbol.iterator]||null!=r["@@iterator"])return Array.from(r)}function _arrayWithoutHoles(r){if(Array.isArray(r))return _arrayLikeToArray(r)}function _arrayLikeToArray(r,a){(null==a||a>r.length)&&(a=r.length);for(var e=0,n=Array(a);e<a;e++)n[e]=r[e];return n}function _typeof(o){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},_typeof(o)}// Generated automatically by nearley, version 2.20.1
2
2
  // http://github.com/Hardmath123/nearley
3
- (function(){function id(x){return x[0]}if(typeof window==="undefined"){window=global}function asFilter(d){return window.qwc2ExpressionParserContext.asFilter&&["string","object"].includes(_typeof(d[0]))}function generateUUID(){var d=new Date().getTime();var d2=typeof performance!=="undefined"&&performance.now&&performance.now()*1000||0;var result="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(c){var r=Math.random()*16;if(d>0){r=(d+r)%16|0;d=Math.floor(d/16)}else{r=(d2+r)%16|0;d2=Math.floor(d2/16)}return(c==="x"?r:r&3|8).toString(16)});return"{"+result+"}"}var grammar={Lexer:undefined,ParserRules:[{"name":"dqstring$ebnf$1","symbols":[]},{"name":"dqstring$ebnf$1","symbols":["dqstring$ebnf$1","dstrchar"],"postprocess":function arrpush(d){return d[0].concat([d[1]])}},{"name":"dqstring","symbols":[{"literal":"\""},"dqstring$ebnf$1",{"literal":"\""}],"postprocess":function postprocess(d){return d[1].join("")}},{"name":"sqstring$ebnf$1","symbols":[]},{"name":"sqstring$ebnf$1","symbols":["sqstring$ebnf$1","sstrchar"],"postprocess":function arrpush(d){return d[0].concat([d[1]])}},{"name":"sqstring","symbols":[{"literal":"'"},"sqstring$ebnf$1",{"literal":"'"}],"postprocess":function postprocess(d){return d[1].join("")}},{"name":"btstring$ebnf$1","symbols":[]},{"name":"btstring$ebnf$1","symbols":["btstring$ebnf$1",/[^`]/],"postprocess":function arrpush(d){return d[0].concat([d[1]])}},{"name":"btstring","symbols":[{"literal":"`"},"btstring$ebnf$1",{"literal":"`"}],"postprocess":function postprocess(d){return d[1].join("")}},{"name":"dstrchar","symbols":[/[^\\"\n]/],"postprocess":id},{"name":"dstrchar","symbols":[{"literal":"\\"},"strescape"],"postprocess":function postprocess(d){return JSON.parse("\""+d.join("")+"\"")}},{"name":"sstrchar","symbols":[/[^\\'\n]/],"postprocess":id},{"name":"sstrchar","symbols":[{"literal":"\\"},"strescape"],"postprocess":function postprocess(d){return JSON.parse("\""+d.join("")+"\"")}},{"name":"sstrchar$string$1","symbols":[{"literal":"\\"},{"literal":"'"}],"postprocess":function joiner(d){return d.join("")}},{"name":"sstrchar","symbols":["sstrchar$string$1"],"postprocess":function postprocess(d){return"'"}},{"name":"strescape","symbols":[/["\\/bfnrt]/],"postprocess":id},{"name":"strescape","symbols":[{"literal":"u"},/[a-fA-F0-9]/,/[a-fA-F0-9]/,/[a-fA-F0-9]/,/[a-fA-F0-9]/],"postprocess":function postprocess(d){return d.join("")}},{"name":"main","symbols":["_","P0","_"],"postprocess":function postprocess(d){return d[1]}},{"name":"P0$subexpression$1","symbols":[/[oO]/,/[rR]/],"postprocess":function postprocess(d){return d.join("")}},{"name":"P0","symbols":["P0","_","P0$subexpression$1","_","P1"],"postprocess":function postprocess(d){return asFilter(d)?[d[0],d[2],d[4]]:d[0]||d[4]}},{"name":"P0","symbols":["P1"],"postprocess":id},{"name":"P1$subexpression$1","symbols":[/[aA]/,/[nN]/,/[dD]/],"postprocess":function postprocess(d){return d.join("")}},{"name":"P1","symbols":["P1","_","P1$subexpression$1","_","P2"],"postprocess":function postprocess(d){return asFilter(d)?[d[0],d[2],d[4]]:d[0]&&d[4]}},{"name":"P1","symbols":["P2"],"postprocess":id},{"name":"P2","symbols":["P2","_",{"literal":"<"},"_","P3"],"postprocess":function postprocess(d){return asFilter(d)?[d[0],d[2],d[4]]:d[0]<d[4]}},{"name":"P2","symbols":["P2","_",{"literal":">"},"_","P3"],"postprocess":function postprocess(d){return asFilter(d)?[d[0],d[2],d[4]]:d[0]>d[4]}},{"name":"P2$string$1","symbols":[{"literal":">"},{"literal":"="}],"postprocess":function joiner(d){return d.join("")}},{"name":"P2","symbols":["P2","_","P2$string$1","_","P3"],"postprocess":function postprocess(d){return asFilter(d)?[d[0],d[2],d[4]]:d[0]>=d[4]}},{"name":"P2$string$2","symbols":[{"literal":"<"},{"literal":"="}],"postprocess":function joiner(d){return d.join("")}},{"name":"P2","symbols":["P2","_","P2$string$2","_","P3"],"postprocess":function postprocess(d){return asFilter(d)?[d[0],d[2],d[4]]:d[0]<=d[4]}},{"name":"P2","symbols":["P2","_",{"literal":"="},"_","P3"],"postprocess":function postprocess(d){return asFilter(d)?[d[0],d[2],d[4]]:d[0]==d[4]}},{"name":"P2$string$3","symbols":[{"literal":"<"},{"literal":">"}],"postprocess":function joiner(d){return d.join("")}},{"name":"P2","symbols":["P2","_","P2$string$3","_","P3"],"postprocess":function postprocess(d){return asFilter(d)?[d[0],"!=",d[4]]:d[0]!=d[4]}},{"name":"P2","symbols":["P3"],"postprocess":id},{"name":"P3","symbols":["P3","_",{"literal":"+"},"_","P4"],"postprocess":function postprocess(d){return d[0]+d[4]}},{"name":"P3","symbols":["P3","_",{"literal":"-"},"_","P4"],"postprocess":function postprocess(d){return d[0]-d[4]}},{"name":"P3","symbols":["P4"],"postprocess":id},{"name":"P4","symbols":["P4","_",{"literal":"*"},"_","P5"],"postprocess":function postprocess(d){return d[0]*d[4]}},{"name":"P4","symbols":["P4","_",{"literal":"/"},"_","P5"],"postprocess":function postprocess(d){return d[0]/d[4]}},{"name":"P4","symbols":["P5"],"postprocess":id},{"name":"P5","symbols":["P6","_",{"literal":"^"},"_","P5"],"postprocess":function postprocess(d){return Math.pow(d[0],d[4])}},{"name":"P5$subexpression$1","symbols":[/[iI]/,/[sS]/],"postprocess":function postprocess(d){return d.join("")}},{"name":"P5","symbols":["P5","__","P5$subexpression$1","__","P6"],"postprocess":function postprocess(d){return asFilter(d)?[d[0],"=",d[4]]:d[0]===d[4]}},{"name":"P5$subexpression$2","symbols":[/[iI]/,/[sS]/],"postprocess":function postprocess(d){return d.join("")}},{"name":"P5$subexpression$3","symbols":[/[nN]/,/[oO]/,/[tT]/],"postprocess":function postprocess(d){return d.join("")}},{"name":"P5","symbols":["P5","__","P5$subexpression$2","__","P5$subexpression$3","__","P6"],"postprocess":function postprocess(d){return asFilter(d)?[d[0],"!=",d[6]]:d[0]!==d[6]}},{"name":"P5","symbols":["P6"],"postprocess":id},{"name":"P6","symbols":[{"literal":"-"},"_","P6"],"postprocess":function postprocess(d){return-d[2]}},{"name":"P6","symbols":[{"literal":"+"},"_","P6"],"postprocess":function postprocess(d){return d[2]}},{"name":"P6","symbols":[{"literal":"("},"_","P0","_",{"literal":")"}],"postprocess":function postprocess(d){return d[2]}},{"name":"P6","symbols":["N"],"postprocess":id},{"name":"N","symbols":["float"],"postprocess":id},{"name":"N","symbols":["sqstring"],"postprocess":id},{"name":"N","symbols":["dqstring"],"postprocess":function postprocess(d){var _window$qwc2Expressio,_window$qwc2Expressio2;return asFilter(d)?d[0]:(_window$qwc2Expressio=(_window$qwc2Expressio2=window.qwc2ExpressionParserContext.feature.properties)===null||_window$qwc2Expressio2===void 0?void 0:_window$qwc2Expressio2[d[0]])!==null&&_window$qwc2Expressio!==void 0?_window$qwc2Expressio:null}},{"name":"N$string$1","symbols":[{"literal":"u"},{"literal":"u"},{"literal":"i"},{"literal":"d"}],"postprocess":function joiner(d){return d.join("")}},{"name":"N","symbols":["N$string$1","_",{"literal":"("},"_",{"literal":")"}],"postprocess":function postprocess(d){return generateUUID()}},{"name":"N$string$2","symbols":[{"literal":"n"},{"literal":"o"},{"literal":"w"}],"postprocess":function joiner(d){return d.join("")}},{"name":"N","symbols":["N$string$2","_",{"literal":"("},"_",{"literal":")"}],"postprocess":function postprocess(d){return new Date().toISOString()}},{"name":"N$string$3","symbols":[{"literal":"s"},{"literal":"i"},{"literal":"n"}],"postprocess":function joiner(d){return d.join("")}},{"name":"N","symbols":["N$string$3","_",{"literal":"("},"_","P0","_",{"literal":")"}],"postprocess":function postprocess(d){return Math.sin(d[4])}},{"name":"N$string$4","symbols":[{"literal":"c"},{"literal":"o"},{"literal":"s"}],"postprocess":function joiner(d){return d.join("")}},{"name":"N","symbols":["N$string$4","_",{"literal":"("},"_","P0","_",{"literal":")"}],"postprocess":function postprocess(d){return Math.cos(d[4])}},{"name":"N$string$5","symbols":[{"literal":"t"},{"literal":"a"},{"literal":"n"}],"postprocess":function joiner(d){return d.join("")}},{"name":"N","symbols":["N$string$5","_",{"literal":"("},"_","P0","_",{"literal":")"}],"postprocess":function postprocess(d){return Math.tan(d[4])}},{"name":"N$string$6","symbols":[{"literal":"a"},{"literal":"s"},{"literal":"i"},{"literal":"n"}],"postprocess":function joiner(d){return d.join("")}},{"name":"N","symbols":["N$string$6","_",{"literal":"("},"_","P0","_",{"literal":")"}],"postprocess":function postprocess(d){return Math.asin(d[4])}},{"name":"N$string$7","symbols":[{"literal":"a"},{"literal":"c"},{"literal":"o"},{"literal":"s"}],"postprocess":function joiner(d){return d.join("")}},{"name":"N","symbols":["N$string$7","_",{"literal":"("},"_","P0","_",{"literal":")"}],"postprocess":function postprocess(d){return Math.acos(d[4])}},{"name":"N$string$8","symbols":[{"literal":"a"},{"literal":"t"},{"literal":"a"},{"literal":"n"}],"postprocess":function joiner(d){return d.join("")}},{"name":"N","symbols":["N$string$8","_",{"literal":"("},"_","P0","_",{"literal":")"}],"postprocess":function postprocess(d){return Math.atan(d[4])}},{"name":"N$string$9","symbols":[{"literal":"s"},{"literal":"q"},{"literal":"r"},{"literal":"t"}],"postprocess":function joiner(d){return d.join("")}},{"name":"N","symbols":["N$string$9","_",{"literal":"("},"_","P0","_",{"literal":")"}],"postprocess":function postprocess(d){return Math.sqrt(d[4])}},{"name":"N$string$10","symbols":[{"literal":"l"},{"literal":"n"}],"postprocess":function joiner(d){return d.join("")}},{"name":"N","symbols":["N$string$10","_",{"literal":"("},"_","P0","_",{"literal":")"}],"postprocess":function postprocess(d){return Math.log(d[4])}},{"name":"N$string$11","symbols":[{"literal":"a"},{"literal":"t"},{"literal":"a"},{"literal":"n"},{"literal":"2"}],"postprocess":function joiner(d){return d.join("")}},{"name":"N","symbols":["N$string$11","_",{"literal":"("},"_","P0","_",{"literal":","},"_","P0","_",{"literal":")"}],"postprocess":function postprocess(d){return Math.atan2(d[4],d[8])}},{"name":"N$string$12","symbols":[{"literal":"p"},{"literal":"o"},{"literal":"w"}],"postprocess":function joiner(d){return d.join("")}},{"name":"N","symbols":["N$string$12","_",{"literal":"("},"_","P0","_",{"literal":","},"_","P0","_",{"literal":")"}],"postprocess":function postprocess(d){return Math.pow(d[4],d[8])}},{"name":"N$string$13","symbols":[{"literal":"C"},{"literal":"A"},{"literal":"S"},{"literal":"E"}],"postprocess":function joiner(d){return d.join("")}},{"name":"N$string$14","symbols":[{"literal":"E"},{"literal":"L"},{"literal":"S"},{"literal":"E"}],"postprocess":function joiner(d){return d.join("")}},{"name":"N$string$15","symbols":[{"literal":"E"},{"literal":"N"},{"literal":"D"}],"postprocess":function joiner(d){return d.join("")}},{"name":"N","symbols":["N$string$13","_","when_args","_","N$string$14","_","P0","_","N$string$15"],"postprocess":function postprocess(d){return d[2]!==undefined?d[2]:d[6]}},{"name":"N$string$16","symbols":[{"literal":"c"},{"literal":"o"},{"literal":"a"},{"literal":"l"},{"literal":"e"},{"literal":"s"},{"literal":"c"},{"literal":"e"}],"postprocess":function joiner(d){return d.join("")}},{"name":"N","symbols":["N$string$16","_",{"literal":"("},"_","var_args","_",{"literal":")"}],"postprocess":function postprocess(d){var _d$4$find;return(_d$4$find=d[4].find(function(x){return x!==null}))!==null&&_d$4$find!==void 0?_d$4$find:null}},{"name":"N$string$17","symbols":[{"literal":"i"},{"literal":"f"}],"postprocess":function joiner(d){return d.join("")}},{"name":"N","symbols":["N$string$17","_",{"literal":"("},"_","P0","_",{"literal":","},"_","P0","_",{"literal":","},"_","P0","_",{"literal":")"}],"postprocess":function postprocess(d){return d[4]?d[8]:d[12]}},{"name":"N$string$18","symbols":[{"literal":"n"},{"literal":"u"},{"literal":"l"},{"literal":"l"},{"literal":"i"},{"literal":"f"}],"postprocess":function joiner(d){return d.join("")}},{"name":"N","symbols":["N$string$18","_",{"literal":"("},"_","P0","_",{"literal":","},"_","P0","_",{"literal":")"}],"postprocess":function postprocess(d){return d[4]===d[8]?null:d[4]}},{"name":"N$string$19","symbols":[{"literal":"r"},{"literal":"e"},{"literal":"g"},{"literal":"e"},{"literal":"x"},{"literal":"p"},{"literal":"_"},{"literal":"m"},{"literal":"a"},{"literal":"t"},{"literal":"c"},{"literal":"h"}],"postprocess":function joiner(d){return d.join("")}},{"name":"N","symbols":["N$string$19","_",{"literal":"("},"_","P0","_",{"literal":","},"_","P0","_",{"literal":")"}],"postprocess":function postprocess(d){return d[4].search(new RegExp(d[8]))+1}},{"name":"N$string$20","symbols":[{"literal":"a"},{"literal":"t"},{"literal":"t"},{"literal":"r"},{"literal":"i"},{"literal":"b"},{"literal":"u"},{"literal":"t"},{"literal":"e"}],"postprocess":function joiner(d){return d.join("")}},{"name":"N","symbols":["N$string$20","_",{"literal":"("},"_","P0","_",{"literal":")"}],"postprocess":function postprocess(d){var _window$qwc2Expressio3,_window$qwc2Expressio4;return(_window$qwc2Expressio3=(_window$qwc2Expressio4=window.qwc2ExpressionParserContext.feature.properties)===null||_window$qwc2Expressio4===void 0?void 0:_window$qwc2Expressio4[d[4]])!==null&&_window$qwc2Expressio3!==void 0?_window$qwc2Expressio3:null}},{"name":"N$string$21","symbols":[{"literal":"c"},{"literal":"u"},{"literal":"r"},{"literal":"r"},{"literal":"e"},{"literal":"n"},{"literal":"t"},{"literal":"_"},{"literal":"v"},{"literal":"a"},{"literal":"l"},{"literal":"u"},{"literal":"e"}],"postprocess":function joiner(d){return d.join("")}},{"name":"N","symbols":["N$string$21","_",{"literal":"("},"_","P0","_",{"literal":")"}],"postprocess":function postprocess(d){var _window$qwc2Expressio5,_window$qwc2Expressio6;return(_window$qwc2Expressio5=(_window$qwc2Expressio6=window.qwc2ExpressionParserContext.feature.properties)===null||_window$qwc2Expressio6===void 0?void 0:_window$qwc2Expressio6[d[4]])!==null&&_window$qwc2Expressio5!==void 0?_window$qwc2Expressio5:null}},{"name":"N$string$22","symbols":[{"literal":"a"},{"literal":"t"},{"literal":"t"},{"literal":"r"},{"literal":"i"},{"literal":"b"},{"literal":"u"},{"literal":"t"},{"literal":"e"}],"postprocess":function joiner(d){return d.join("")}},{"name":"N","symbols":["N$string$22","_",{"literal":"("},"_","P0","_",{"literal":","},"_","P0","_",{"literal":")"}],"postprocess":function postprocess(d){var _d$4$properties$d$,_d$;return(_d$4$properties$d$=(_d$=d[4])===null||_d$===void 0||(_d$=_d$.properties)===null||_d$===void 0?void 0:_d$[d[8]])!==null&&_d$4$properties$d$!==void 0?_d$4$properties$d$:null}},{"name":"N$string$23","symbols":[{"literal":"g"},{"literal":"e"},{"literal":"t"},{"literal":"_"},{"literal":"f"},{"literal":"e"},{"literal":"a"},{"literal":"t"},{"literal":"u"},{"literal":"r"},{"literal":"e"}],"postprocess":function joiner(d){return d.join("")}},{"name":"N","symbols":["N$string$23","_",{"literal":"("},"_","P0","_",{"literal":","},"_","P0","_",{"literal":","},"_","P0","_",{"literal":")"}],"postprocess":function postprocess(d){return window.qwc2ExpressionParserContext.getFeature(d[4],d[8],d[12])}},{"name":"N$string$24","symbols":[{"literal":"g"},{"literal":"e"},{"literal":"t"},{"literal":"_"},{"literal":"f"},{"literal":"e"},{"literal":"a"},{"literal":"t"},{"literal":"u"},{"literal":"r"},{"literal":"e"},{"literal":"_"},{"literal":"b"},{"literal":"y"},{"literal":"_"},{"literal":"i"},{"literal":"d"}],"postprocess":function joiner(d){return d.join("")}},{"name":"N","symbols":["N$string$24","_",{"literal":"("},"_","P0","_",{"literal":","},"_","P0","_",{"literal":")"}],"postprocess":function postprocess(d){return window.qwc2ExpressionParserContext.getFeature(d[4],"id",d[8])}},{"name":"N$subexpression$1","symbols":[/[pP]/,/[iI]/],"postprocess":function postprocess(d){return d.join("")}},{"name":"N","symbols":["N$subexpression$1"],"postprocess":function postprocess(d){return Math.PI}},{"name":"N$subexpression$2","symbols":[/[eE]/],"postprocess":function postprocess(d){return d.join("")}},{"name":"N","symbols":["N$subexpression$2"],"postprocess":function postprocess(d){return Math.E}},{"name":"N$subexpression$3","symbols":[/[nN]/,/[uU]/,/[lL]/,/[lL]/],"postprocess":function postprocess(d){return d.join("")}},{"name":"N","symbols":["N$subexpression$3"],"postprocess":function postprocess(d){return null}},{"name":"N$subexpression$4","symbols":[/[fF]/,/[aA]/,/[lL]/,/[sS]/,/[eE]/],"postprocess":function postprocess(d){return d.join("")}},{"name":"N","symbols":["N$subexpression$4"],"postprocess":function postprocess(d){return false}},{"name":"N$subexpression$5","symbols":[/[tT]/,/[rR]/,/[uU]/,/[eE]/],"postprocess":function postprocess(d){return d.join("")}},{"name":"N","symbols":["N$subexpression$5"],"postprocess":function postprocess(d){return true}},{"name":"var_args","symbols":["P0"],"postprocess":function postprocess(d){return[d[0]]}},{"name":"var_args","symbols":["var_args","_",{"literal":","},"_","P0"],"postprocess":function postprocess(d){return[].concat(_toConsumableArray(d[0]),[d[4]])}},{"name":"when_args$string$1","symbols":[{"literal":"W"},{"literal":"H"},{"literal":"E"},{"literal":"N"}],"postprocess":function joiner(d){return d.join("")}},{"name":"when_args$string$2","symbols":[{"literal":"T"},{"literal":"H"},{"literal":"E"},{"literal":"N"}],"postprocess":function joiner(d){return d.join("")}},{"name":"when_args","symbols":["when_args$string$1","_","P0","_","when_args$string$2","_","P0"],"postprocess":function postprocess(d){return d[2]?d[6]:undefined}},{"name":"when_args$string$3","symbols":[{"literal":"W"},{"literal":"H"},{"literal":"E"},{"literal":"N"}],"postprocess":function joiner(d){return d.join("")}},{"name":"when_args$string$4","symbols":[{"literal":"T"},{"literal":"H"},{"literal":"E"},{"literal":"N"}],"postprocess":function joiner(d){return d.join("")}},{"name":"when_args","symbols":["when_args","_","when_args$string$3","_","P0","_","when_args$string$4","_","P0"],"postprocess":function postprocess(d){return d[0]!==undefined?d[0]:d[4]?d[8]:undefined}},{"name":"float","symbols":["int",{"literal":"."},"int"],"postprocess":function postprocess(d){return parseFloat(d[0]+d[1]+d[2])}},{"name":"float","symbols":["int"],"postprocess":function postprocess(d){return parseInt(d[0])}},{"name":"int$ebnf$1","symbols":[/[0-9]/]},{"name":"int$ebnf$1","symbols":["int$ebnf$1",/[0-9]/],"postprocess":function arrpush(d){return d[0].concat([d[1]])}},{"name":"int","symbols":["int$ebnf$1"],"postprocess":function postprocess(d){return d[0].join("")}},{"name":"_$ebnf$1","symbols":[]},{"name":"_$ebnf$1","symbols":["_$ebnf$1",/[\s]/],"postprocess":function arrpush(d){return d[0].concat([d[1]])}},{"name":"_","symbols":["_$ebnf$1"],"postprocess":function postprocess(d){return null}},{"name":"__$ebnf$1","symbols":[/[\s]/]},{"name":"__$ebnf$1","symbols":["__$ebnf$1",/[\s]/],"postprocess":function arrpush(d){return d[0].concat([d[1]])}},{"name":"__","symbols":["__$ebnf$1"],"postprocess":function postprocess(d){return null}}],ParserStart:"main"};if(typeof module!=="undefined"&&typeof module.exports!=="undefined"){module.exports=grammar}else{window.grammar=grammar}})();
3
+ (function(){function id(x){return x[0]}if(typeof window==="undefined"){window=global}function asFilter(d){return window.qwc2ExpressionParserContext.asFilter&&["string","object"].includes(_typeof(d[0]))}function generateUUID(){var d=new Date().getTime();var d2=typeof performance!=="undefined"&&performance.now&&performance.now()*1000||0;var result="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(c){var r=Math.random()*16;if(d>0){r=(d+r)%16|0;d=Math.floor(d/16)}else{r=(d2+r)%16|0;d2=Math.floor(d2/16)}return(c==="x"?r:r&3|8).toString(16)});return"{"+result+"}"}var grammar={Lexer:undefined,ParserRules:[{"name":"dqstring$ebnf$1","symbols":[]},{"name":"dqstring$ebnf$1","symbols":["dqstring$ebnf$1","dstrchar"],"postprocess":function arrpush(d){return d[0].concat([d[1]])}},{"name":"dqstring","symbols":[{"literal":"\""},"dqstring$ebnf$1",{"literal":"\""}],"postprocess":function postprocess(d){return d[1].join("")}},{"name":"sqstring$ebnf$1","symbols":[]},{"name":"sqstring$ebnf$1","symbols":["sqstring$ebnf$1","sstrchar"],"postprocess":function arrpush(d){return d[0].concat([d[1]])}},{"name":"sqstring","symbols":[{"literal":"'"},"sqstring$ebnf$1",{"literal":"'"}],"postprocess":function postprocess(d){return d[1].join("")}},{"name":"btstring$ebnf$1","symbols":[]},{"name":"btstring$ebnf$1","symbols":["btstring$ebnf$1",/[^`]/],"postprocess":function arrpush(d){return d[0].concat([d[1]])}},{"name":"btstring","symbols":[{"literal":"`"},"btstring$ebnf$1",{"literal":"`"}],"postprocess":function postprocess(d){return d[1].join("")}},{"name":"dstrchar","symbols":[/[^\\"\n]/],"postprocess":id},{"name":"dstrchar","symbols":[{"literal":"\\"},"strescape"],"postprocess":function postprocess(d){return JSON.parse("\""+d.join("")+"\"")}},{"name":"sstrchar","symbols":[/[^\\'\n]/],"postprocess":id},{"name":"sstrchar","symbols":[{"literal":"\\"},"strescape"],"postprocess":function postprocess(d){return JSON.parse("\""+d.join("")+"\"")}},{"name":"sstrchar$string$1","symbols":[{"literal":"\\"},{"literal":"'"}],"postprocess":function joiner(d){return d.join("")}},{"name":"sstrchar","symbols":["sstrchar$string$1"],"postprocess":function postprocess(d){return"'"}},{"name":"strescape","symbols":[/["\\/bfnrt]/],"postprocess":id},{"name":"strescape","symbols":[{"literal":"u"},/[a-fA-F0-9]/,/[a-fA-F0-9]/,/[a-fA-F0-9]/,/[a-fA-F0-9]/],"postprocess":function postprocess(d){return d.join("")}},{"name":"main","symbols":["_","P0","_"],"postprocess":function postprocess(d){return d[1]}},{"name":"P0$subexpression$1","symbols":[/[oO]/,/[rR]/],"postprocess":function postprocess(d){return d.join("")}},{"name":"P0","symbols":["P0","_","P0$subexpression$1","_","P1"],"postprocess":function postprocess(d){return asFilter(d)?[d[0],d[2],d[4]]:d[0]||d[4]}},{"name":"P0","symbols":["P1"],"postprocess":id},{"name":"P1$subexpression$1","symbols":[/[aA]/,/[nN]/,/[dD]/],"postprocess":function postprocess(d){return d.join("")}},{"name":"P1","symbols":["P1","_","P1$subexpression$1","_","P2"],"postprocess":function postprocess(d){return asFilter(d)?[d[0],d[2],d[4]]:d[0]&&d[4]}},{"name":"P1","symbols":["P2"],"postprocess":id},{"name":"P2","symbols":["P2","_",{"literal":"<"},"_","P3"],"postprocess":function postprocess(d){return asFilter(d)?[d[0],d[2],d[4]]:d[0]<d[4]}},{"name":"P2","symbols":["P2","_",{"literal":">"},"_","P3"],"postprocess":function postprocess(d){return asFilter(d)?[d[0],d[2],d[4]]:d[0]>d[4]}},{"name":"P2$string$1","symbols":[{"literal":">"},{"literal":"="}],"postprocess":function joiner(d){return d.join("")}},{"name":"P2","symbols":["P2","_","P2$string$1","_","P3"],"postprocess":function postprocess(d){return asFilter(d)?[d[0],d[2],d[4]]:d[0]>=d[4]}},{"name":"P2$string$2","symbols":[{"literal":"<"},{"literal":"="}],"postprocess":function joiner(d){return d.join("")}},{"name":"P2","symbols":["P2","_","P2$string$2","_","P3"],"postprocess":function postprocess(d){return asFilter(d)?[d[0],d[2],d[4]]:d[0]<=d[4]}},{"name":"P2","symbols":["P2","_",{"literal":"="},"_","P3"],"postprocess":function postprocess(d){return asFilter(d)?[d[0],d[2],d[4]]:d[0]==d[4]}},{"name":"P2$string$3","symbols":[{"literal":"<"},{"literal":">"}],"postprocess":function joiner(d){return d.join("")}},{"name":"P2","symbols":["P2","_","P2$string$3","_","P3"],"postprocess":function postprocess(d){return asFilter(d)?[d[0],"!=",d[4]]:d[0]!=d[4]}},{"name":"P2","symbols":["P3"],"postprocess":id},{"name":"P3","symbols":["P3","_",{"literal":"+"},"_","P4"],"postprocess":function postprocess(d){return d[0]+d[4]}},{"name":"P3","symbols":["P3","_",{"literal":"-"},"_","P4"],"postprocess":function postprocess(d){return d[0]-d[4]}},{"name":"P3","symbols":["P4"],"postprocess":id},{"name":"P4","symbols":["P4","_",{"literal":"*"},"_","P5"],"postprocess":function postprocess(d){return d[0]*d[4]}},{"name":"P4","symbols":["P4","_",{"literal":"/"},"_","P5"],"postprocess":function postprocess(d){return d[0]/d[4]}},{"name":"P4","symbols":["P5"],"postprocess":id},{"name":"P5","symbols":["P6","_",{"literal":"^"},"_","P5"],"postprocess":function postprocess(d){return Math.pow(d[0],d[4])}},{"name":"P5$subexpression$1","symbols":[/[iI]/,/[sS]/],"postprocess":function postprocess(d){return d.join("")}},{"name":"P5","symbols":["P5","__","P5$subexpression$1","__","P6"],"postprocess":function postprocess(d){return asFilter(d)?[d[0],"=",d[4]]:d[0]===d[4]}},{"name":"P5$subexpression$2","symbols":[/[iI]/,/[sS]/],"postprocess":function postprocess(d){return d.join("")}},{"name":"P5$subexpression$3","symbols":[/[nN]/,/[oO]/,/[tT]/],"postprocess":function postprocess(d){return d.join("")}},{"name":"P5","symbols":["P5","__","P5$subexpression$2","__","P5$subexpression$3","__","P6"],"postprocess":function postprocess(d){return asFilter(d)?[d[0],"!=",d[6]]:d[0]!==d[6]}},{"name":"P5","symbols":["P6"],"postprocess":id},{"name":"P6","symbols":[{"literal":"-"},"_","P6"],"postprocess":function postprocess(d){return-d[2]}},{"name":"P6","symbols":[{"literal":"+"},"_","P6"],"postprocess":function postprocess(d){return d[2]}},{"name":"P6","symbols":[{"literal":"("},"_","P0","_",{"literal":")"}],"postprocess":function postprocess(d){return d[2]}},{"name":"P6","symbols":["N"],"postprocess":id},{"name":"N","symbols":["float"],"postprocess":id},{"name":"N","symbols":["sqstring"],"postprocess":id},{"name":"N","symbols":["dqstring"],"postprocess":function postprocess(d){var _window$qwc2Expressio,_window$qwc2Expressio2;return asFilter(d)?d[0]:(_window$qwc2Expressio=(_window$qwc2Expressio2=window.qwc2ExpressionParserContext.feature.properties)===null||_window$qwc2Expressio2===void 0?void 0:_window$qwc2Expressio2[d[0]])!==null&&_window$qwc2Expressio!==void 0?_window$qwc2Expressio:null}},{"name":"N$string$1","symbols":[{"literal":"u"},{"literal":"u"},{"literal":"i"},{"literal":"d"}],"postprocess":function joiner(d){return d.join("")}},{"name":"N","symbols":["N$string$1","_",{"literal":"("},"_",{"literal":")"}],"postprocess":function postprocess(d){return generateUUID()}},{"name":"N$string$2","symbols":[{"literal":"n"},{"literal":"o"},{"literal":"w"}],"postprocess":function joiner(d){return d.join("")}},{"name":"N","symbols":["N$string$2","_",{"literal":"("},"_",{"literal":")"}],"postprocess":function postprocess(d){return new Date().toISOString()}},{"name":"N$string$3","symbols":[{"literal":"s"},{"literal":"i"},{"literal":"n"}],"postprocess":function joiner(d){return d.join("")}},{"name":"N","symbols":["N$string$3","_",{"literal":"("},"_","P0","_",{"literal":")"}],"postprocess":function postprocess(d){return Math.sin(d[4])}},{"name":"N$string$4","symbols":[{"literal":"c"},{"literal":"o"},{"literal":"s"}],"postprocess":function joiner(d){return d.join("")}},{"name":"N","symbols":["N$string$4","_",{"literal":"("},"_","P0","_",{"literal":")"}],"postprocess":function postprocess(d){return Math.cos(d[4])}},{"name":"N$string$5","symbols":[{"literal":"t"},{"literal":"a"},{"literal":"n"}],"postprocess":function joiner(d){return d.join("")}},{"name":"N","symbols":["N$string$5","_",{"literal":"("},"_","P0","_",{"literal":")"}],"postprocess":function postprocess(d){return Math.tan(d[4])}},{"name":"N$string$6","symbols":[{"literal":"a"},{"literal":"s"},{"literal":"i"},{"literal":"n"}],"postprocess":function joiner(d){return d.join("")}},{"name":"N","symbols":["N$string$6","_",{"literal":"("},"_","P0","_",{"literal":")"}],"postprocess":function postprocess(d){return Math.asin(d[4])}},{"name":"N$string$7","symbols":[{"literal":"a"},{"literal":"c"},{"literal":"o"},{"literal":"s"}],"postprocess":function joiner(d){return d.join("")}},{"name":"N","symbols":["N$string$7","_",{"literal":"("},"_","P0","_",{"literal":")"}],"postprocess":function postprocess(d){return Math.acos(d[4])}},{"name":"N$string$8","symbols":[{"literal":"a"},{"literal":"t"},{"literal":"a"},{"literal":"n"}],"postprocess":function joiner(d){return d.join("")}},{"name":"N","symbols":["N$string$8","_",{"literal":"("},"_","P0","_",{"literal":")"}],"postprocess":function postprocess(d){return Math.atan(d[4])}},{"name":"N$string$9","symbols":[{"literal":"s"},{"literal":"q"},{"literal":"r"},{"literal":"t"}],"postprocess":function joiner(d){return d.join("")}},{"name":"N","symbols":["N$string$9","_",{"literal":"("},"_","P0","_",{"literal":")"}],"postprocess":function postprocess(d){return Math.sqrt(d[4])}},{"name":"N$string$10","symbols":[{"literal":"l"},{"literal":"n"}],"postprocess":function joiner(d){return d.join("")}},{"name":"N","symbols":["N$string$10","_",{"literal":"("},"_","P0","_",{"literal":")"}],"postprocess":function postprocess(d){return Math.log(d[4])}},{"name":"N$string$11","symbols":[{"literal":"a"},{"literal":"t"},{"literal":"a"},{"literal":"n"},{"literal":"2"}],"postprocess":function joiner(d){return d.join("")}},{"name":"N","symbols":["N$string$11","_",{"literal":"("},"_","P0","_",{"literal":","},"_","P0","_",{"literal":")"}],"postprocess":function postprocess(d){return Math.atan2(d[4],d[8])}},{"name":"N$string$12","symbols":[{"literal":"p"},{"literal":"o"},{"literal":"w"}],"postprocess":function joiner(d){return d.join("")}},{"name":"N","symbols":["N$string$12","_",{"literal":"("},"_","P0","_",{"literal":","},"_","P0","_",{"literal":")"}],"postprocess":function postprocess(d){return Math.pow(d[4],d[8])}},{"name":"N$string$13","symbols":[{"literal":"C"},{"literal":"A"},{"literal":"S"},{"literal":"E"}],"postprocess":function joiner(d){return d.join("")}},{"name":"N$string$14","symbols":[{"literal":"E"},{"literal":"L"},{"literal":"S"},{"literal":"E"}],"postprocess":function joiner(d){return d.join("")}},{"name":"N$string$15","symbols":[{"literal":"E"},{"literal":"N"},{"literal":"D"}],"postprocess":function joiner(d){return d.join("")}},{"name":"N","symbols":["N$string$13","_","when_args","_","N$string$14","_","P0","_","N$string$15"],"postprocess":function postprocess(d){return d[2]!==undefined?d[2]:d[6]}},{"name":"N$string$16","symbols":[{"literal":"c"},{"literal":"o"},{"literal":"a"},{"literal":"l"},{"literal":"e"},{"literal":"s"},{"literal":"c"},{"literal":"e"}],"postprocess":function joiner(d){return d.join("")}},{"name":"N","symbols":["N$string$16","_",{"literal":"("},"_","var_args","_",{"literal":")"}],"postprocess":function postprocess(d){var _d$4$find;return(_d$4$find=d[4].find(function(x){return x!==null}))!==null&&_d$4$find!==void 0?_d$4$find:null}},{"name":"N$string$17","symbols":[{"literal":"i"},{"literal":"f"}],"postprocess":function joiner(d){return d.join("")}},{"name":"N","symbols":["N$string$17","_",{"literal":"("},"_","P0","_",{"literal":","},"_","P0","_",{"literal":","},"_","P0","_",{"literal":")"}],"postprocess":function postprocess(d){return d[4]?d[8]:d[12]}},{"name":"N$string$18","symbols":[{"literal":"n"},{"literal":"u"},{"literal":"l"},{"literal":"l"},{"literal":"i"},{"literal":"f"}],"postprocess":function joiner(d){return d.join("")}},{"name":"N","symbols":["N$string$18","_",{"literal":"("},"_","P0","_",{"literal":","},"_","P0","_",{"literal":")"}],"postprocess":function postprocess(d){return d[4]===d[8]?null:d[4]}},{"name":"N$string$19","symbols":[{"literal":"r"},{"literal":"e"},{"literal":"g"},{"literal":"e"},{"literal":"x"},{"literal":"p"},{"literal":"_"},{"literal":"m"},{"literal":"a"},{"literal":"t"},{"literal":"c"},{"literal":"h"}],"postprocess":function joiner(d){return d.join("")}},{"name":"N","symbols":["N$string$19","_",{"literal":"("},"_","P0","_",{"literal":","},"_","P0","_",{"literal":")"}],"postprocess":function postprocess(d){return d[4].search(new RegExp(d[8]))+1}},{"name":"N$string$20","symbols":[{"literal":"a"},{"literal":"t"},{"literal":"t"},{"literal":"r"},{"literal":"i"},{"literal":"b"},{"literal":"u"},{"literal":"t"},{"literal":"e"}],"postprocess":function joiner(d){return d.join("")}},{"name":"N","symbols":["N$string$20","_",{"literal":"("},"_","P0","_",{"literal":")"}],"postprocess":function postprocess(d){var _window$qwc2Expressio3,_window$qwc2Expressio4;return(_window$qwc2Expressio3=(_window$qwc2Expressio4=window.qwc2ExpressionParserContext.feature.properties)===null||_window$qwc2Expressio4===void 0?void 0:_window$qwc2Expressio4[d[4]])!==null&&_window$qwc2Expressio3!==void 0?_window$qwc2Expressio3:null}},{"name":"N$string$21","symbols":[{"literal":"c"},{"literal":"u"},{"literal":"r"},{"literal":"r"},{"literal":"e"},{"literal":"n"},{"literal":"t"},{"literal":"_"},{"literal":"v"},{"literal":"a"},{"literal":"l"},{"literal":"u"},{"literal":"e"}],"postprocess":function joiner(d){return d.join("")}},{"name":"N","symbols":["N$string$21","_",{"literal":"("},"_","P0","_",{"literal":")"}],"postprocess":function postprocess(d){var _window$qwc2Expressio5,_window$qwc2Expressio6;return(_window$qwc2Expressio5=(_window$qwc2Expressio6=window.qwc2ExpressionParserContext.feature.properties)===null||_window$qwc2Expressio6===void 0?void 0:_window$qwc2Expressio6[d[4]])!==null&&_window$qwc2Expressio5!==void 0?_window$qwc2Expressio5:null}},{"name":"N$string$22","symbols":[{"literal":"a"},{"literal":"t"},{"literal":"t"},{"literal":"r"},{"literal":"i"},{"literal":"b"},{"literal":"u"},{"literal":"t"},{"literal":"e"}],"postprocess":function joiner(d){return d.join("")}},{"name":"N","symbols":["N$string$22","_",{"literal":"("},"_","P0","_",{"literal":","},"_","P0","_",{"literal":")"}],"postprocess":function postprocess(d){var _d$4$properties$d$,_d$;return(_d$4$properties$d$=(_d$=d[4])===null||_d$===void 0||(_d$=_d$.properties)===null||_d$===void 0?void 0:_d$[d[8]])!==null&&_d$4$properties$d$!==void 0?_d$4$properties$d$:null}},{"name":"N$string$23","symbols":[{"literal":"g"},{"literal":"e"},{"literal":"t"},{"literal":"_"},{"literal":"f"},{"literal":"e"},{"literal":"a"},{"literal":"t"},{"literal":"u"},{"literal":"r"},{"literal":"e"}],"postprocess":function joiner(d){return d.join("")}},{"name":"N","symbols":["N$string$23","_",{"literal":"("},"_","P0","_",{"literal":","},"_","P0","_",{"literal":","},"_","P0","_",{"literal":")"}],"postprocess":function postprocess(d){return window.qwc2ExpressionParserContext.getFeature(d[4],d[8],d[12])}},{"name":"N$string$24","symbols":[{"literal":"g"},{"literal":"e"},{"literal":"t"},{"literal":"_"},{"literal":"f"},{"literal":"e"},{"literal":"a"},{"literal":"t"},{"literal":"u"},{"literal":"r"},{"literal":"e"},{"literal":"_"},{"literal":"b"},{"literal":"y"},{"literal":"_"},{"literal":"i"},{"literal":"d"}],"postprocess":function joiner(d){return d.join("")}},{"name":"N","symbols":["N$string$24","_",{"literal":"("},"_","P0","_",{"literal":","},"_","P0","_",{"literal":")"}],"postprocess":function postprocess(d){return window.qwc2ExpressionParserContext.getFeature(d[4],"id",d[8])}},{"name":"N$subexpression$1","symbols":[/[pP]/,/[iI]/],"postprocess":function postprocess(d){return d.join("")}},{"name":"N","symbols":["N$subexpression$1"],"postprocess":function postprocess(d){return Math.PI}},{"name":"N$subexpression$2","symbols":[/[eE]/],"postprocess":function postprocess(d){return d.join("")}},{"name":"N","symbols":["N$subexpression$2"],"postprocess":function postprocess(d){return Math.E}},{"name":"N$subexpression$3","symbols":[/[nN]/,/[uU]/,/[lL]/,/[lL]/],"postprocess":function postprocess(d){return d.join("")}},{"name":"N","symbols":["N$subexpression$3"],"postprocess":function postprocess(d){return null}},{"name":"N$subexpression$4","symbols":[/[fF]/,/[aA]/,/[lL]/,/[sS]/,/[eE]/],"postprocess":function postprocess(d){return d.join("")}},{"name":"N","symbols":["N$subexpression$4"],"postprocess":function postprocess(d){return false}},{"name":"N$subexpression$5","symbols":[/[tT]/,/[rR]/,/[uU]/,/[eE]/],"postprocess":function postprocess(d){return d.join("")}},{"name":"N","symbols":["N$subexpression$5"],"postprocess":function postprocess(d){return true}},{"name":"N$string$25","symbols":[{"literal":"@"},{"literal":"f"},{"literal":"e"},{"literal":"a"},{"literal":"t"},{"literal":"u"},{"literal":"r"},{"literal":"e"}],"postprocess":function joiner(d){return d.join("")}},{"name":"N","symbols":["N$string$25"],"postprocess":function postprocess(d){return window.qwc2ExpressionParserContext.feature}},{"name":"N$string$26","symbols":[{"literal":"@"},{"literal":"g"},{"literal":"e"},{"literal":"o"},{"literal":"m"},{"literal":"e"},{"literal":"t"},{"literal":"r"},{"literal":"y"}],"postprocess":function joiner(d){return d.join("")}},{"name":"N","symbols":["N$string$26"],"postprocess":function postprocess(d){var _window$qwc2Expressio7;return(_window$qwc2Expressio7=window.qwc2ExpressionParserContext.feature)===null||_window$qwc2Expressio7===void 0?void 0:_window$qwc2Expressio7.geometry}},{"name":"N$string$27","symbols":[{"literal":"@"},{"literal":"i"},{"literal":"d"}],"postprocess":function joiner(d){return d.join("")}},{"name":"N","symbols":["N$string$27"],"postprocess":function postprocess(d){var _window$qwc2Expressio8;return(_window$qwc2Expressio8=window.qwc2ExpressionParserContext.feature)===null||_window$qwc2Expressio8===void 0?void 0:_window$qwc2Expressio8.id}},{"name":"N$string$28","symbols":[{"literal":"@"},{"literal":"l"},{"literal":"a"},{"literal":"y"},{"literal":"e"},{"literal":"r"}],"postprocess":function joiner(d){return d.join("")}},{"name":"N","symbols":["N$string$28"],"postprocess":function postprocess(d){return window.qwc2ExpressionParserContext.layer}},{"name":"N$string$29","symbols":[{"literal":"@"},{"literal":"l"},{"literal":"a"},{"literal":"y"},{"literal":"e"},{"literal":"r"},{"literal":"_"},{"literal":"n"},{"literal":"a"},{"literal":"m"},{"literal":"e"}],"postprocess":function joiner(d){return d.join("")}},{"name":"N","symbols":["N$string$29"],"postprocess":function postprocess(d){return window.qwc2ExpressionParserContext.layer}},{"name":"N$string$30","symbols":[{"literal":"@"},{"literal":"l"},{"literal":"a"},{"literal":"y"},{"literal":"e"},{"literal":"r"},{"literal":"_"},{"literal":"c"},{"literal":"r"},{"literal":"s"}],"postprocess":function joiner(d){return d.join("")}},{"name":"N","symbols":["N$string$30"],"postprocess":function postprocess(d){return window.qwc2ExpressionParserContext.projection}},{"name":"N$string$31","symbols":[{"literal":"@"},{"literal":"p"},{"literal":"r"},{"literal":"o"},{"literal":"j"},{"literal":"e"},{"literal":"c"},{"literal":"t"},{"literal":"_"},{"literal":"b"},{"literal":"a"},{"literal":"s"},{"literal":"e"},{"literal":"n"},{"literal":"a"},{"literal":"m"},{"literal":"e"}],"postprocess":function joiner(d){return d.join("")}},{"name":"N","symbols":["N$string$31"],"postprocess":function postprocess(d){return window.qwc2ExpressionParserContext.mapPrefix}},{"name":"N$string$32","symbols":[{"literal":"@"},{"literal":"p"},{"literal":"r"},{"literal":"o"},{"literal":"j"},{"literal":"e"},{"literal":"c"},{"literal":"t"},{"literal":"_"},{"literal":"c"},{"literal":"r"},{"literal":"s"}],"postprocess":function joiner(d){return d.join("")}},{"name":"N","symbols":["N$string$32"],"postprocess":function postprocess(d){return window.qwc2ExpressionParserContext.projection}},{"name":"N$string$33","symbols":[{"literal":"@"},{"literal":"q"},{"literal":"g"},{"literal":"i"},{"literal":"s"},{"literal":"_"},{"literal":"l"},{"literal":"o"},{"literal":"c"},{"literal":"a"},{"literal":"l"},{"literal":"e"}],"postprocess":function joiner(d){return d.join("")}},{"name":"N","symbols":["N$string$33"],"postprocess":function postprocess(d){return window.qwc2ExpressionParserContext.lang}},{"name":"N$string$34","symbols":[{"literal":"@"},{"literal":"u"},{"literal":"s"},{"literal":"e"},{"literal":"r"},{"literal":"_"},{"literal":"a"},{"literal":"c"},{"literal":"c"},{"literal":"o"},{"literal":"u"},{"literal":"n"},{"literal":"t"},{"literal":"_"},{"literal":"n"},{"literal":"a"},{"literal":"m"},{"literal":"e"}],"postprocess":function joiner(d){return d.join("")}},{"name":"N","symbols":["N$string$34"],"postprocess":function postprocess(d){return window.qwc2ExpressionParserContext.username}},{"name":"N$string$35","symbols":[{"literal":"@"},{"literal":"c"},{"literal":"l"},{"literal":"o"},{"literal":"u"},{"literal":"d"},{"literal":"_"},{"literal":"u"},{"literal":"s"},{"literal":"e"},{"literal":"r"},{"literal":"n"},{"literal":"a"},{"literal":"m"},{"literal":"e"}],"postprocess":function joiner(d){return d.join("")}},{"name":"N","symbols":["N$string$35"],"postprocess":function postprocess(d){return window.qwc2ExpressionParserContext.username}},{"name":"var_args","symbols":["P0"],"postprocess":function postprocess(d){return[d[0]]}},{"name":"var_args","symbols":["var_args","_",{"literal":","},"_","P0"],"postprocess":function postprocess(d){return[].concat(_toConsumableArray(d[0]),[d[4]])}},{"name":"when_args$string$1","symbols":[{"literal":"W"},{"literal":"H"},{"literal":"E"},{"literal":"N"}],"postprocess":function joiner(d){return d.join("")}},{"name":"when_args$string$2","symbols":[{"literal":"T"},{"literal":"H"},{"literal":"E"},{"literal":"N"}],"postprocess":function joiner(d){return d.join("")}},{"name":"when_args","symbols":["when_args$string$1","_","P0","_","when_args$string$2","_","P0"],"postprocess":function postprocess(d){return d[2]?d[6]:undefined}},{"name":"when_args$string$3","symbols":[{"literal":"W"},{"literal":"H"},{"literal":"E"},{"literal":"N"}],"postprocess":function joiner(d){return d.join("")}},{"name":"when_args$string$4","symbols":[{"literal":"T"},{"literal":"H"},{"literal":"E"},{"literal":"N"}],"postprocess":function joiner(d){return d.join("")}},{"name":"when_args","symbols":["when_args","_","when_args$string$3","_","P0","_","when_args$string$4","_","P0"],"postprocess":function postprocess(d){return d[0]!==undefined?d[0]:d[4]?d[8]:undefined}},{"name":"float","symbols":["int",{"literal":"."},"int"],"postprocess":function postprocess(d){return parseFloat(d[0]+d[1]+d[2])}},{"name":"float","symbols":["int"],"postprocess":function postprocess(d){return parseInt(d[0])}},{"name":"int$ebnf$1","symbols":[/[0-9]/]},{"name":"int$ebnf$1","symbols":["int$ebnf$1",/[0-9]/],"postprocess":function arrpush(d){return d[0].concat([d[1]])}},{"name":"int","symbols":["int$ebnf$1"],"postprocess":function postprocess(d){return d[0].join("")}},{"name":"_$ebnf$1","symbols":[]},{"name":"_$ebnf$1","symbols":["_$ebnf$1",/[\s]/],"postprocess":function arrpush(d){return d[0].concat([d[1]])}},{"name":"_","symbols":["_$ebnf$1"],"postprocess":function postprocess(d){return null}},{"name":"__$ebnf$1","symbols":[/[\s]/]},{"name":"__$ebnf$1","symbols":["__$ebnf$1",/[\s]/],"postprocess":function arrpush(d){return d[0].concat([d[1]])}},{"name":"__","symbols":["__$ebnf$1"],"postprocess":function postprocess(d){return null}}],ParserStart:"main"};if(typeof module!=="undefined"&&typeof module.exports!=="undefined"){module.exports=grammar}else{window.grammar=grammar}})();
@@ -67,7 +67,7 @@ P6 -> "-" _ P6 {% function(d) { return -d[2]; } %}
67
67
  | "(" _ P0 _ ")" {% function(d) { return d[2]; } %}
68
68
  | N {% id %}
69
69
 
70
- # A number or a function of a number
70
+ # A number or a function of a number, a variable or a constant
71
71
  N -> float {% id %}
72
72
  | sqstring {% id %}
73
73
  | dqstring {% function(d) { return asFilter(d) ? d[0] : window.qwc2ExpressionParserContext.feature.properties?.[d[0]] ?? null; } %}
@@ -98,6 +98,17 @@ N -> float {% id %}
98
98
  | "NULL"i {% function(d) { return null; } %}
99
99
  | "FALSE"i {% function(d) { return false; } %}
100
100
  | "TRUE"i {% function(d) { return true; } %}
101
+ | "@feature" {% function(d) { return window.qwc2ExpressionParserContext.feature; } %}
102
+ | "@geometry" {% function(d) { return window.qwc2ExpressionParserContext.feature?.geometry; } %}
103
+ | "@id" {% function(d) { return window.qwc2ExpressionParserContext.feature?.id; } %}
104
+ | "@layer" {% function(d) { return window.qwc2ExpressionParserContext.layer; } %}
105
+ | "@layer_name" {% function(d) { return window.qwc2ExpressionParserContext.layer; } %}
106
+ | "@layer_crs" {% function(d) { return window.qwc2ExpressionParserContext.projection; } %}
107
+ | "@project_basename" {% function(d) { return window.qwc2ExpressionParserContext.mapPrefix; } %}
108
+ | "@project_crs" {% function(d) { return window.qwc2ExpressionParserContext.projection; } %}
109
+ | "@qgis_locale" {% function(d) { return window.qwc2ExpressionParserContext.lang; } %}
110
+ | "@user_account_name" {% function(d) { return window.qwc2ExpressionParserContext.username; } %}
111
+ | "@cloud_username" {% function(d) { return window.qwc2ExpressionParserContext.username; } %}
101
112
 
102
113
  var_args -> P0 {% function(d) { return [d[0]]; } %}
103
114
  var_args -> var_args _ "," _ P0 {% function(d) { return [...d[0], d[4]]; } %}
@@ -1,4 +1,4 @@
1
- /* This is just a scratch file for testing the expression grammar */var nearley=require("nearley");var grammar=require("./grammar.js");global.qwc2ExpressionParserContext={feature:{"type":"Feature","properties":{"listnr":1,"grpcode":2,"numcode":3}},getFeature:function getFeature(layerName,attr,value){return{"type":"Feature","id":210000,"geometry":null,"properties":{"id":2,"label":"ABLAGERUNGEN","code":"DBC","listnr":21,"grpcode":0,"numcode":0,"q1":null,"q1suff":null,"q2":null,"q2suff":null,"qsr":null,"z1":null,"z2":null,"l1":2,"l2":null,"lastlevel":null,"level":1,"tooltip":"Ablagerungen an der Schachtsohle oder an Auftritten.","id2":210000},"__version__":1711648978811}},asFilter:false};// Create a Parser object from our grammar.
1
+ /* This is just a scratch file for testing the expression grammar */var nearley=require("nearley");var grammar=require("./grammar.js");global.qwc2ExpressionParserContext={feature:{"type":"Feature","properties":{"listnr":1,"grpcode":2,"numcode":3}},getFeature:function getFeature(layerName,attr,value){return{"type":"Feature","id":210000,"geometry":null,"properties":{"id":2,"label":"ABLAGERUNGEN","code":"DBC","listnr":21,"grpcode":0,"numcode":0,"q1":null,"q1suff":null,"q2":null,"q2suff":null,"qsr":null,"z1":null,"z2":null,"l1":2,"l2":null,"lastlevel":null,"level":1,"tooltip":"Ablagerungen an der Schachtsohle oder an Auftritten.","id2":210000},"__version__":1711648978811}},asFilter:false,username:"testuser",layer:"layername"};// Create a Parser object from our grammar.
2
2
  var parser=new nearley.Parser(nearley.Grammar.fromCompiled(grammar));// Parse something!
3
3
  // parser.feed("attribute('txt') is not null and attribute('txt') <> ''")
4
4
  // parser.feed("attribute(get_feature('foo', 'asd', 3), 'asd')");
@@ -10,4 +10,5 @@ var parser=new nearley.Parser(nearley.Grammar.fromCompiled(grammar));// Parse so
10
10
  // parser.feed('"listnr" =current_value(\'listnr\') and "grpcode" >0 and "numcode" = 0')
11
11
  // parser.feed(' "listnr" =current_value(\'listnr\') and "grpcode" = current_value(\'grpcode\') and "numcode" >0 and "foo" = ((1<2) = true)')
12
12
  // parser.feed("if(3>2, 3, 4)")
13
- parser.feed("nullif('a', 'b')");console.log(JSON.stringify(parser.results));
13
+ // parser.feed("nullif('a', 'b')")
14
+ parser.feed("@user_account_name");console.log(JSON.stringify(parser.results));