@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
6 lines (5 loc) • 1.93 kB
JavaScript
/*
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
See https://js.arcgis.com/4.32/esri/copyright.txt for details.
*/
import{handlesGroup as r}from"../handleUtils.js";import{clone as n}from"../lang.js";function t(r){return r.__accessor__??null}function e(r,n){return null!=r?.metadata?.[n]}function i(r,n){const e=t(r);return e?e.getDependsInfo(r,n,""):""}function u(r,n,t){if(t){return o(r,n,{policy:t,path:""})}return o(r,n,null)}function o(r,t,e){return t?Object.keys(t).reduce(((r,i)=>{const u=i;let l=null,s="merge";if(e&&(l=e.path?`${e.path}.${i}`:i,s=e.policy(l)),"replace"===s)return r[u]=t[u],r;if("replace-arrays"===s&&Array.isArray(r[u]))return r[u]=t[u],r;if(void 0===r[u])return r[u]=n(t[u]),r;let a=r[u],c=t[u];if(a===c)return r;if(Array.isArray(c)||Array.isArray(r))a=a?Array.isArray(a)?r[u]=a.slice():r[u]=[a]:r[u]=[],c&&(Array.isArray(c)||(c=[c]),c.forEach((r=>{a.includes(r)||a.push(r)})));else if(c&&"object"==typeof c)if(e){const n=e.path;e.path=l,r[u]=o(a,c,e),e.path=n}else r[u]=o(a,c,null);else r.hasOwnProperty(i)&&!t.hasOwnProperty(i)||(r[u]=c);return r}),r||{}):r}function l(r){return r&&("string"!=typeof r||r.includes("."))?s(r):r}function s(r){return Array.isArray(r)?r:r.split(".")}function a(r){return r.includes(",")?r.split(",").map((r=>r.trim())):[r.trim()]}function c(r){if(Array.isArray(r)){const n=[];for(const t of r)n.push(...a(t));return n}return a(r)}function f(r){if(!r.includes("?"))return null;const n=s(r),t=new Array(n.length);for(let e=0;e<n.length;e++){const r=n[e];t[e]="?"===r[r.length-1],t[e]&&(n[e]=r.slice(0,-1))}return{fullPath:n.join("."),conditional:t}}function p(n,t,e,i){const u=c(t);if(1!==u.length){const t=u.map((r=>i(n,r,e)));return r(t)}return i(n,u[0],e)}export{i as getDependsInfo,t as getProperties,e as isPropertyDeclared,u as merge,p as parse,f as parseConditionalPath,s as pathToArray,l as pathToStringOrArray,c as splitPath};