UNPKG

@arcgis/core

Version:

ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API

6 lines (5 loc) 2.39 kB
/* All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://js.arcgis.com/4.32/esri/copyright.txt for details. */ import{isDevEnvironment as t,adjustStaticAGOUrl as e}from"../../core/devEnvironmentUtils.js";import r from"../../core/Error.js";import{urlToObject as o,removeFile as l}from"../../core/urlUtils.js";import n from"../../portal/Portal.js";import{f as s}from"../../chunks/persistableUrlUtils.js";import{fromJSON as m}from"./jsonUtils.js";import a from"./StyleOrigin.js";import{fetchStyle as i,requestJSON as p,makeCIMSymbolRef as u,Style2DUrlTemplate as c,symbolUrlFromStyleItem as f}from"./styleUtils.js";import{Thumbnail as y}from"./Thumbnail.js";import{isSymbol3D as b}from"./typeUtils.js";import{defaultAcceptedFormats as d}from"./webStyleAcceptedFormats.js";function h(t,e,o){const l=t.name;return null==l?Promise.reject(new r("symbolstyleutils:style-symbol-reference-name-missing","Missing name in style symbol reference")):"Esri2DPointSymbolsStyle"===t.styleName?U(l,e,o):i(t,e,o).then((t=>j(t,l,e,f,o)))}function g(t,e){return e.items.find((e=>e.name===t))}async function j(i,c,f,h,j){const U=null!=f?.portal?f.portal:n.getDefault(),w={portal:U,url:o(i.baseUrl),origin:"portal-item"},N=g(c,i.data);if(!N)throw new r("symbolstyleutils:symbol-name-not-found",`The symbol name '${c}' could not be found`,{symbolName:c});const S=j?.acceptedFormats??d,D=h(N,S);if(!D)throw new r("symbolstyleutils:symbol-reference-no-accepted-format",`The symbol name '${c}' does not have an accepted format (one of ${S})`,{symbolName:c});const{url:O,format:$}=D;let v=s(O,w),E=N.thumbnail?.href??null;const P=N.thumbnail?.imageData;t()&&(v=e(v)??"",E=e(E));const T={portal:U,url:o(l(v)),origin:"portal-item"};return p(v,j).then((t=>{const e="cim"===$?u(t.data):t.data,r=m(e,T);if(r&&b(r)){if(E){const t=s(E,w);r.thumbnail=new y({url:t})}else P&&(r.thumbnail=new y({url:`data:image/png;base64,${P}`}));i.styleUrl?r.styleOrigin=new a({portal:f.portal,styleUrl:i.styleUrl,name:c}):i.styleName&&(r.styleOrigin=new a({portal:f.portal,styleName:i.styleName,name:c}))}return r}))}function U(t,e,r){const s=c.replaceAll(/\{SymbolName\}/gi,t),a=null!=e.portal?e.portal:n.getDefault();return p(s,r).then((t=>{const e=u(t.data);return m(e,{portal:a,url:o(l(s)),origin:"portal-item"})}))}export{j as fetchSymbolFromStyle,g as getStyleItemFromStyle,h as resolveWebStyleSymbol};