@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
6 lines (5 loc) • 7.46 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 e from"../../Color.js";import{isSome as r}from"../../core/arrayUtils.js";import{clone as o}from"../../core/lang.js";import a from"./support/colors.js";import{createThemes as n,getThemesforBasemap as l,getRawSchemes as s,filterSchemesByName as t,filterSchemesByTag as i}from"./support/symbologyUtils.js";import{toWorldScale as p,hasIdenticalColors as u}from"./support/utils.js";const c={light:{color:[153,153,153,.25],width:"1px"},dark:{color:[153,153,153,.25],width:"1px"},darker:{color:[26,26,26,.25],width:"1px"}},m={lightBasemaps:{primary:"relationship-blue-orange-brown",secondary:["relationship-brewer-yellow-blue-black","relationship-brewer-pink-blue-purple","relationship-purple-green-blue","relationship-blue-green-purple","relationship-blue-orange-green","relationship-mustard-blue-wine","relationship-pink-blue-purple","relationship-olive-blue-green","relationship-yellow-cyan-blue","relationship-blue-pink-purple","relationship-purple-green-wine","relationship-blue-peach-purple","relationship-mint-mustard-green","relationship-purple-mustard-darkpurple","relationship-blue-orange-purple","relationship-pink-periwinkle-violet","relationship-blue-tan-green","relationship-blue-red-pink","relationship-blue-green-brightgreen","relationship-blue-orange-lavender","relationship-pink-purple-peach","relationship-purple-mustard-eggshell","relationship-blue-brick-green","relationship-orange-purple-lavender","relationship-brown-purple-lilac","relationship-teal-yellow-lightteal"]},darkBasemaps:{primary:"relationship-blue-green-brightgreen",secondary:["relationship-blue-red-pink","relationship-blue-orange-lavender","relationship-pink-purple-peach","relationship-purple-mustard-eggshell","relationship-blue-brick-green","relationship-orange-purple-lavender","relationship-brown-purple-lilac","relationship-teal-yellow-lightteal","relationship-blue-orange-brown","relationship-brewer-yellow-blue-black","relationship-brewer-pink-blue-purple","relationship-purple-green-blue","relationship-blue-green-purple","relationship-blue-orange-green","relationship-mustard-blue-wine","relationship-pink-blue-purple","relationship-olive-blue-green","relationship-yellow-cyan-blue","relationship-blue-pink-purple","relationship-purple-green-wine","relationship-blue-peach-purple","relationship-mint-mustard-green","relationship-purple-mustard-darkpurple","relationship-blue-orange-purple","relationship-pink-periwinkle-violet","relationship-blue-tan-green"]}},h="#aaaaaa",d="8px",g="2px",y=n({themeDictionary:{default:{name:"default",label:"Default",description:"Default theme for visualizing features based on relationship between two attributes.",schemes:{point:{light:{common:{noDataColor:h,outline:c.light,size:d},primary:m.lightBasemaps.primary,secondary:m.lightBasemaps.secondary},dark:{common:{noDataColor:h,outline:c.darker,size:d},primary:m.darkBasemaps.primary,secondary:m.darkBasemaps.secondary}},polyline:{light:{common:{noDataColor:h,width:g},primary:m.lightBasemaps.primary,secondary:m.lightBasemaps.secondary},dark:{common:{noDataColor:h,width:g},primary:m.darkBasemaps.primary,secondary:m.darkBasemaps.secondary}},polygon:{light:{common:{noDataColor:h,outline:c.light,fillOpacity:.8},primary:m.lightBasemaps.primary,secondary:m.lightBasemaps.secondary},dark:{common:{noDataColor:h,outline:c.dark,fillOpacity:.8},primary:m.darkBasemaps.primary,secondary:m.darkBasemaps.secondary}}}}}});function b(e){return l(y,e)}function f(e){const o="default",a=s({basemap:e.basemap,geometryType:e.geometryType,basemapTheme:e.basemapTheme,theme:y.get(o)});if(!a)return;const{schemesInfo:n,basemapId:l,basemapTheme:t}=a,i={...e,basemap:l};return{primaryScheme:H(i,n.primary,n.common),secondarySchemes:n.secondary.map((e=>H(i,e,n.common))).filter(r),basemapId:l,basemapTheme:t}}function w(e){return t(e.name,f(e))}function k(e){return i(e.includedTags,e.excludedTags,f(e))}function C(r){if(!r)return;const o={...r};return o.colorsForClassBreaks=o.colorsForClassBreaks.map((r=>({numClasses:r.numClasses,colors:r.colors.map((r=>r.map((r=>new e(r)))))}))),o.tags=[...o.tags],o.noDataColor&&(o.noDataColor=new e(o.noDataColor)),"outline"in o&&o.outline&&(o.outline={color:o.outline.color&&new e(o.outline.color),width:o.outline.width}),o}function B(e,r){e=o(e);let a=[];const n=(r||"HH").split(""),l=n[0],s=n[1];"L"===l&&e.reverse();const t="H"===s;return e.forEach((e=>{t&&e.reverse(),a=a.concat(e)})),a}function D(r,o,a){let n;return r.colorsForClassBreaks.some((e=>(e.numClasses===o&&(n=e.colors),!!n))),n=n?.map((r=>r.map((r=>new e(r))))),n?B(n,a):null}function F(e,r){const o=r?e:C(e);return o.colorsForClassBreaks.forEach((e=>{const r=e.colors.reverse(),o=[];for(let a=0;a<e.numClasses;a++){const e=[];r.forEach((r=>{e.push(r[a])})),o.push(e)}e.colors=o})),o}function v(e){const r=e.theme||"default",o=e.geometryType,a=e.colors,n=e.numClasses,l=y.get(r);if(!l)return[];const s=l.supportedBasemaps,t=[];return s.forEach((e=>{const l=f({theme:r,basemap:e,geometryType:o});if(l){let e=x(l.primaryScheme,a,n);e&&t.push(e),l.secondarySchemes.forEach((r=>{e=x(r,a,n),e&&t.push(e)}))}})),t}function T(e,r,o,a){let n;const l=D(e,o,a);if(l){1===u(r,l)&&(n=e)}return n}function z(e,r,o,a){let n,l=1;do{n=T(e,r,o,a),n||(e=F(e),l++)}while(!n&&l<=4);return n}function x(e,r,o){return z(e,r,o,"HH")||z(e,r,o,"HL")||z(e,r,o,"LH")||z(e,r,o,"LL")}function H(e,r,o){const n="mesh"!==e.geometryType&&e.worldScale?e.view:null,l=a[r],s=e.theme||"default";if(!l)return;const t=s+"/"+e.basemap+"/"+r,i=[];for(const a in l)if("stops"!==a&&"name"!==a&&"tags"!==a){const e=+a,r=l[a];i.push({numClasses:e,colors:r})}switch(e.geometryType){case"point":case"multipoint":{const e=o;return j({id:t,name:l.name,tags:l.tags,colorsForClassBreaks:i,noDataColor:e.noDataColor,opacity:1,outline:e.outline,size:e.size},n)}case"polyline":{const e=o;return E({id:t,name:l.name,tags:l.tags,colorsForClassBreaks:i,noDataColor:e.noDataColor,opacity:1,width:e.width},n)}case"polygon":{const e=o;return L({id:t,name:l.name,tags:l.tags,colorsForClassBreaks:i,noDataColor:e.noDataColor,opacity:e.fillOpacity,outline:e.outline})}case"mesh":{const e=o;return S({id:t,name:l.name,tags:l.tags,colorsForClassBreaks:i,noDataColor:e.noDataColor,opacity:e.fillOpacity})}}}function j(r,o){return{id:r.id,name:r.name,tags:[...r.tags],colorsForClassBreaks:O(r.colorsForClassBreaks),noDataColor:new e(r.noDataColor),outline:{color:new e(r.outline.color),width:r.outline.width},size:o?p(r.size,o):r.size,opacity:r.opacity}}function E(r,o){return{id:r.id,name:r.name,tags:[...r.tags],colorsForClassBreaks:O(r.colorsForClassBreaks),noDataColor:new e(r.noDataColor),opacity:r.opacity,width:o?p(r.width,o):r.width}}function L(r){return{id:r.id,name:r.name,tags:[...r.tags],colorsForClassBreaks:O(r.colorsForClassBreaks),noDataColor:new e(r.noDataColor),outline:{color:new e(r.outline.color),width:r.outline.width},opacity:r.opacity}}function S(r){return{id:r.id,name:r.name,tags:[...r.tags],colorsForClassBreaks:O(r.colorsForClassBreaks),noDataColor:new e(r.noDataColor),opacity:r.opacity}}function O(r){return r.map((r=>({numClasses:r.numClasses,colors:r.colors.map((r=>r.map((r=>new e(r)))))})))}export{C as cloneScheme,B as flatten2DArray,F as flipColors,D as getColors,v as getMatchingSchemes,w as getSchemeByName,f as getSchemes,k as getSchemesByTag,b as getThemes};