@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
6 lines (5 loc) • 8.65 kB
JavaScript
/*
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
See https://js.arcgis.com/4.33/esri/copyright.txt for details.
*/
import{b as e,c as t}from"../../chunks/tslib.es6.js";import r from"../../Basemap.js";import n from"../../Ground.js";import a from"../../WebScene.js";import"../../core/has.js";import{isLongFormType as s,Null as y,Integer as o}from"../../core/accessorSupport/ensureType.js";import{isCollection as i}from"../../core/accessorSupport/extensions/serializableProperty/type.js";import p from"../../layers/GroupLayer.js";import u from"../../layers/KMLLayer.js";import{typeModuleMap as l}from"../../layers/mixins/operationalLayerModuleMap.js";import{supportedTypes as c}from"../../layers/mixins/operationalLayers.js";import m from"../../layers/support/Sublayer.js";import{JoinTableDataSource as f,DataLayerSource as d}from"../../layers/support/source/DataLayerSource.js";import{MapLayerSource as b}from"../../layers/support/source/MapLayerSource.js";import w from"../InitialViewProperties.js";import{ScanContext as j}from"./utils.js";import{webSceneAnalysisRegistry as N}from"../support/analysisUtils.js";import v from"../support/SlideElements.js";async function g(r){const n={stack:[],error:void 0,hasError:!1};try{const t=e(n,new j,!1);return await L(null,{typeName:"json",type:r},t)}catch(a){n.error=a,n.hasError=!0}finally{t(n)}}async function T(e,t,r){switch(t.typeName){case"array":await R(e,t,r);break;case"union":await M(e,t,r);break;case"json":await L(e,t,r);break;case"native":await h(e,t,r);break;case"enum":await q(e,t,r)}}async function h(e,t,r){r.addProperty({name:e,type:O(r,t),default:t.default,required:t.isRequired})}function k(e){const t=e.slice();return t.sort(),t}async function q(e,t,r){const n=t.values.slice();t.nullable&&n.push(null),r.currentClass?.typeValue&&"type"===e?r.addProperty({name:e,type:"string",enum:`"${r.currentClass.typeValue}"`,required:t.isRequired}):r.addProperty({name:e,type:O(r,t),enum:k(n).map((e=>"string"==typeof e?`"${e}"`:`${e}`)).join("|"),default:t.default,required:t.isRequired})}async function R(e,t,r){t.elementType.isRequired=t.isRequired,await T(`${e}[]`,t.elementType,r)}function S(e,t){if("json"===e.typeName){const t=e.type.__accessorMetadata__,r=t?.type,n=r&&F(r),a=n?.type,s=a||r?.type;if(s&&Array.isArray(s)&&1===s.length&&"string"==typeof s[0])return a?s[0]:G(r,s[0])}return t}async function M(e,t,r){const n=[];for(const a of t.types)if("native"!==a.type.typeName&&t.key){const t=`${e}<${S(a.type,a.value)}>`;await T(t,a.type,r)}else n.push(a.type);if(n.length){const a=n.map((e=>O(r,e)));t.nullable&&a.push("null"),a.sort(),r.addProperty({type:a.join("|"),name:e,default:t.default,required:t.isRequired})}}async function C(e,t){return e.type===a&&"layers"===t?_("web-scene/operational-layers","operational-layers"):e.type===a&&"tables"===t?_("web-scene/tables","tables"):e.type!==r||"baseLayers"!==t&&"baseMapLayers"!==t?e.type===r&&"elevationLayers"===t||e.type===n&&"layers"===t?_("web-scene/ground","ground"):e.type===p&&"layers"===t?_("web-scene/operational-layers","operational-layers",(e=>e!==p)):e.type!==v&&e.type!==w||"analyses"!==t?e.type!==f||"leftTableSource"!==t&&"rightTableSource"!==t?null:B({key:"type",base:null,typeMap:{"data-layer":d,"map-layer":b}}):{typeName:"array",elementType:{typeName:"union",key:"type",types:await Promise.all(Object.entries(N).map((async([e,t])=>({type:{typeName:"json",type:await t()},value:e}))))}}:_("web-scene/basemap","basemap")}async function P(e,t,r){const n=I(r),a=await C(e,t);return a?(a.isRequired=n.isRequired,a):n}async function L(e,t,r){const n=t.type.__accessorMetadata__,a=r.getDeclaredClass(t.type);if(!n)return e&&r.addProperty({name:e,type:"unknown"}),null;let s=a,y=null;t.layerContainerType&&(s+=`--${t.layerContainerType}`);const o=e?.match(/<([^>]+)>$/);o&&(s+=`--${o[1]}`,y=o[1]),t.type===m&&(s+=`--${r.currentClass?.name}`,y=r.currentClass?.name);const i=r.seen.get(s);if(i&&e)return r.addProperty({name:e,type:i,required:t.isRequired}),i;const p={type:t.type,name:a,id:s,properties:[]};e&&(r.addProperty({name:e,type:p,required:t.isRequired}),p.typeValue=y),r.push(e,p);for(const u in n){const e=n[u],a=H(e);if(!a?.enabled)continue;if(a.layerContainerTypes&&t.layerContainerType&&!a.layerContainerTypes.includes(t.layerContainerType))continue;if(t.type===m){const e="esri/layers/TileLayer"===r.stack[r.stack.length-2].klass.name;if(e&&m.test.isMapImageLayerOverridePolicy(a.overridePolicy)||!e&&m.test.isTileImageLayerOverridePolicy(a.overridePolicy))continue}const s=a.target;if("string"==typeof s||null==s){const n=await P(t,u,e);if(!n)continue;await T("string"==typeof s?s:u,n,r)}else await $(t,s,r)}return r.pop()}async function $(e,t,r){for(const n in t){let a=await C(e,n);if(!a){const e=t[n];a=e.types?B(e.types):W(e.type),a.default=e.default,a.isRequired=e.isRequired,a=E(a)}await T(n,a,r)}}async function _(e,t,r){const n={typeName:"union",key:"layerType",types:[]};for(const a in c[e]){if("web-scene/operational-layers"===e&&"ArcGISTiledElevationServiceLayer"===a)continue;const s=await l[a]();s&&(r&&!r(s)||s!==u&&n.types.push({type:{typeName:"json",layerContainerType:t,type:s},value:a}))}if(0===n.types.length)return null;return{typeName:"array",elementType:1===n.types.length?n.types[0].type:n}}function O(e,t){switch(t.typeName){case"array":return`${O(e,t.elementType)}[]`;case"union":{const r=t.types.map((t=>O(e,t.type)));return t.nullable&&r.push("null"),r.sort(),`${r.join(" | ")}`}case"native":switch(t.type){case Number:return"number";case o:return"integer";case String:return"string";case Boolean:return"boolean";case Object:return"object";case y:return"null";default:return"unknown"}case"json":return e.getDeclaredClass(t.type);case"enum":return"string"}}function A(e){const t=e.prototype.itemType?.Type;if(!t)return{typeName:"array",elementType:{typeName:"native",type:null}};if("function"==typeof t)return{typeName:"array",elementType:W(t)};if(t.typeMap){const e=[];for(const r in t.typeMap){const n=t.typeMap[r];e.push({type:W(n),value:U(n)?null:r})}return{typeName:"array",elementType:{typeName:"union",key:"string"==typeof t.key?t.key:"type",types:e}}}}function x(e){if("json"!==e.typeName)return null;const t=e.type.__accessorMetadata__,r=t?.type,n=r&&F(r),a=n?.type,s=a||r?.type;return s&&Array.isArray(s)&&"string"==typeof s[0]?a||r.type.map((e=>G(r,e))):null}function E(e){if("array"===e.typeName)return e.elementType=E(e.elementType),e;const t=x(e);return t?{typeName:"union",key:"type",nullable:e.nullable,isRequired:e.isRequired,types:t.map((t=>({value:t,type:e})))}:e}function I(e){const t=F(e);return t?.types?B(t.types):!t?.type&&e.types?B(e.types):V(E(J(e)))}function V(e){return e.nullable&&"native"===e.typeName?{typeName:"union",key:null,isRequired:e.isRequired,types:[{value:null,type:e}],nullable:!0}:e}function B(e){if(Array.isArray(e))return{typeName:"array",elementType:B(e[0])};const t=[];for(const r in e.typeMap){const n=e.typeMap[r];t.push({type:W(n),value:U(n)?null:r})}return{typeName:"union",key:"string"==typeof e.key?e.key:"type",types:t}}function D(e){return null!=e&&e.isJSONMapWriter}function G(e,t){const r=H(e);if(r&&D(r.writer)){const e={value:""};return r.writer?.(t,e,"value"),e.value}return t}function J(e){const t=F(e),r=H(e),n=t?.type,a=W(n||e.type);return t&&void 0!==t.default&&"function"!=typeof t.default&&(a.default=G(e,t.default)),r?.allowNull&&(a.nullable=!0),r?.isRequired&&(a.isRequired=!0),a}function W(e){return e?s(e)?z(e):Array.isArray(e)?"string"==typeof e[0]||"number"==typeof e[0]?{typeName:"enum",values:e}:e.length>1?{typeName:"union",key:null,types:e.map((e=>({type:W(e),value:null})))}:{typeName:"array",elementType:W(e[0])}:i(e)?A(e):U(e)?{typeName:"native",type:e}:K(e)?{typeName:"json",type:e}:{typeName:"native",type:null}:{typeName:"native",type:null}}function z(e){switch(e.type){case"native":return{typeName:"native",type:e.value};case"array":return{typeName:"array",elementType:W(e.value)};case"one-of":return{typeName:"union",key:null,types:e.values.map((e=>({type:z(e),value:null})))}}}function K(e){let t=e;for(;t;){if(t.prototype&&("esri.core.JSONSupport"===t.prototype.declaredClass||"esri.core.MultiOriginJSONSupport"===t.prototype.declaredClass))return!0;t=Object.getPrototypeOf(t)}return!1}function U(e){return e===String||e===Boolean||e===Number||e===o||e===Object||e===y}function F(e){if(!e.json)return null;const t=e.json.origins,r=e.json,n=t?.["web-scene"],a=t?.["web-document"];return n||a||r||null}function H(e){if(!e.json)return null;const t=e.json.origins,r=e.json.write,n=t?.["web-scene"]?.write,a=t?.["web-document"]?.write;return n||a||r||null}export{g as scan};