UNPKG

@doegis/core

Version:

DOE GIS API

3 lines (1 loc) 2.06 kB
import e from"../../core/Error.js";import{clone as t}from"../../core/lang.js";import{isSome as i}from"../../core/maybe.js";import{getDeepValue as n}from"../../core/object.js";import{numberToJSON as r}from"../../core/accessorSupport/extensions/serializableProperty/writer.js";import{isFeatureCollectionLayer as o}from"../../layers/support/layerUtils.js";const l=new Set(["bing-maps","imagery","imagery-tile","map-image","open-street-map","tile","unknown","unsupported","vector-tile","web-tile","wms","wmts"]),a=new Set(["csv","feature","geo-rss","geojson","group","imagery","imagery-tile","kml","map-image","map-notes","media","ogc-feature","route","subtype-group","tile","unknown","unsupported","vector-tile","web-tile","wfs","wms","wmts"]);function s(e){l.delete(e),a.delete(e)}function m(e){l.add(e),a.add(e)}function p(e){return"basemap"===e.layerContainerType?l:"operational-layers"===e.layerContainerType?a:null}function c(e,t){if(t.restrictedWebMapWriting){const n=p(t);return!i(n)||n.has(e.type)&&!o(e)}return!0}function d(e,t){if(t)if(o(e)){const i=n("featureCollection.layers",t),r=i&&i[0]&&i[0].layerDefinition;r&&u(e,r)}else if("stream"===e.type){u(e,t.layerDefinition=t.layerDefinition||{})}else"group"!==e.type&&u(e,t)}function u(e,t){"maxScale"in e&&(t.maxScale=r(e.maxScale)??void 0),"minScale"in e&&(t.minScale=r(e.minScale)??void 0)}function f(e,t){if(d(e,t),t&&("blendMode"in e&&(t.blendMode=e.blendMode,"normal"===t.blendMode&&delete t.blendMode),t.opacity=r(e.opacity)??void 0,t.title=e.title||"Layer",t.visibility=e.visible,"legendEnabled"in e&&"wmts"!==e.type))if(o(e)){const i=t.featureCollection;i&&(i.showLegend=e.legendEnabled)}else t.showLegend=e.legendEnabled}function y(n,r,o){if(!("write"in n)||!n.write)return o&&o.messages&&o.messages.push(new e("layer:unsupported",`Layers (${n.title}, ${n.id}) of type '${n.declaredClass}' cannot be persisted`,{layer:n})),null;if(c(n,o)){const e={};return n.write(e,o)?e:null}return i(r)&&f(n,r=t(r)),r}export{m as disableRestrictedWriting,s as enableRestrictedWriting,y as getLayerJSON};