@arcgis/core 5.2.0-next.23 → 5.2.0-next.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/assets/esri/core/workers/RemoteClient.js +1 -1
  2. package/assets/esri/core/workers/chunks/04070767356c12026369.js +1 -0
  3. package/assets/esri/core/workers/chunks/10112bf4b385f1955a3d.js +1 -0
  4. package/assets/esri/core/workers/chunks/{3b74749db78bcba2bc16.js → 126a8c26618425790804.js} +1 -1
  5. package/assets/esri/core/workers/chunks/{d4e0346209fabc58f929.js → 15fd30908d5db7f7136e.js} +3 -3
  6. package/assets/esri/core/workers/chunks/{73b0edabddbb72fe1104.js → 1b5001bdfeecf78c33ce.js} +1 -1
  7. package/assets/esri/core/workers/chunks/{57e04b7ec238f7b24274.js → 1f03e34520746e432719.js} +1 -1
  8. package/assets/esri/core/workers/chunks/218e2d8d6cd147c769ce.js +1 -0
  9. package/assets/esri/core/workers/chunks/{2c4f10eaf02ef090ee8f.js → 23f81f4a3d7a983eef23.js} +1 -1
  10. package/assets/esri/core/workers/chunks/{a856ae928273f9d6792f.js → 268ee59800e64baa9682.js} +1 -1
  11. package/assets/esri/core/workers/chunks/26a2d4b95cda0a41d980.js +1 -0
  12. package/assets/esri/core/workers/chunks/2e7b83c8ba78cb06d611.js +1 -0
  13. package/assets/esri/core/workers/chunks/316a3d5c7842b445e29e.js +1 -0
  14. package/assets/esri/core/workers/chunks/{84a0bb53fcbd99b5aa0c.js → 33e86dd1a54e447fa0e3.js} +1 -1
  15. package/assets/esri/core/workers/chunks/{5fab14c5f1febebb75f1.js → 34eb22ee13df24271532.js} +1 -1
  16. package/assets/esri/core/workers/chunks/{3d83ac791212b81c9d11.js → 36b904912cea1744d1c6.js} +1 -1
  17. package/assets/esri/core/workers/chunks/{f8cfd0045d06aa24beec.js → 3b7060d264888bf298b1.js} +1 -1
  18. package/assets/esri/core/workers/chunks/{f9b44ff9bb4f7a88ab56.js → 3d1021f7ea9617a76ccf.js} +1 -1
  19. package/assets/esri/core/workers/chunks/{60d4a3f770bb1e01cd10.js → 3e4b379a6a197b9c4e6b.js} +1 -1
  20. package/assets/esri/core/workers/chunks/{4f51963815b0d53ffbd9.js → 3e94ed4d57ee7d870cba.js} +1 -1
  21. package/assets/esri/core/workers/chunks/{7d220f574ebf2740c208.js → 41aca863324387576cf8.js} +1 -1
  22. package/assets/esri/core/workers/chunks/{cbe8adc100582e746a8c.js → 4adfe7f8a8efe2cd8e80.js} +1 -1
  23. package/assets/esri/core/workers/chunks/{e9acc05b0cf9e05f31a8.js → 50b34e246f8eef2f6e07.js} +1 -1
  24. package/assets/esri/core/workers/chunks/52993a9dc0c56e9bda19.js +1 -0
  25. package/assets/esri/core/workers/chunks/5b654e0dc901a7f06a9f.js +1 -0
  26. package/assets/esri/core/workers/chunks/{dd795c95cdc3812b5b49.js → 6adc17e6e287a365ad8d.js} +1 -1
  27. package/assets/esri/core/workers/chunks/{40df6ffeb61fea80aae3.js → 7849cf0352c0a604e164.js} +1 -1
  28. package/assets/esri/core/workers/chunks/{6c0c77de1934f35dc45f.js → 7c34eb94e2c74602aeab.js} +1 -1
  29. package/assets/esri/core/workers/chunks/856cf872d29eeaf11a71.js +1 -0
  30. package/assets/esri/core/workers/chunks/88b08b386926ec889573.js +1 -0
  31. package/assets/esri/core/workers/chunks/{1b0765403b06294b3e1d.js → 89dd1b1acb0d69264c93.js} +1 -1
  32. package/assets/esri/core/workers/chunks/{5d710b3e50f2211a765d.js → 8b526ca2dd6fc6a7e921.js} +1 -1
  33. package/assets/esri/core/workers/chunks/{c86d388d216adbb15a05.js → 8bd4c43c34aacf3b07da.js} +1 -1
  34. package/assets/esri/core/workers/chunks/{69e98de578f467a35054.js → a0b78cbeb0e53107d819.js} +1 -1
  35. package/assets/esri/core/workers/chunks/{fee50ab6c92ef0327255.js → a454df829a72ab02c860.js} +1 -1
  36. package/assets/esri/core/workers/chunks/{5481af25fd46914498df.js → a6dc01847f39413f78b8.js} +1 -1
  37. package/assets/esri/core/workers/chunks/{5dd441db1e74dc9b56e9.js → acc733b4881c3e4e503e.js} +1 -1
  38. package/assets/esri/core/workers/chunks/{0b45d34938fa7862f746.js → affc972757798b6db002.js} +1 -1
  39. package/assets/esri/core/workers/chunks/{9f93c29af2a18f7cb160.js → b45e91249a8ea1559a2b.js} +1 -1
  40. package/assets/esri/core/workers/chunks/{f955b35337a08f9f747d.js → c610ccbfdb1c5b06c217.js} +1 -1
  41. package/assets/esri/core/workers/chunks/cd88e6f02bc2e5b67abf.js +1 -0
  42. package/assets/esri/core/workers/chunks/d374cb2d17a2d11c500f.js +1 -0
  43. package/assets/esri/core/workers/chunks/{8eda85fc01a71aedd9e4.js → dadf85890961bcc205eb.js} +1 -1
  44. package/assets/esri/core/workers/chunks/e3623e557ab463580fd2.js +1 -0
  45. package/assets/esri/core/workers/chunks/{d523af1db620b5381c99.js → e8e7cd26c43f231cdea2.js} +1 -1
  46. package/chunks/OITBlendEmission.glsl.js +5 -2
  47. package/config.js +1 -1
  48. package/kernel.js +1 -1
  49. package/layers/save/featureLayerUtils.js +1 -1
  50. package/layers/save/utils.js +1 -1
  51. package/layers/support/fetchService.js +1 -1
  52. package/package.json +1 -1
  53. package/portal/support/portalItemUtils.js +1 -1
  54. package/support/revision.js +1 -1
  55. package/symbols/CIMSymbol.d.ts +2 -3
  56. package/symbols/cim/types.d.ts +58 -2
  57. package/views/2d/engine/webgl/shaders/sources/shaderRepository.js +1 -1
  58. package/views/3d/analysis/Viewshed/ViewshedEditTool.js +1 -1
  59. package/views/3d/layers/GaussianSplatLayerView3D.js +1 -1
  60. package/views/3d/support/gaussianSplatting/GaussianSplatTextureAtlas.js +1 -1
  61. package/views/3d/support/pointsOfInterest/Focus.js +1 -1
  62. package/views/3d/webgl/RenderCamera.js +1 -1
  63. package/views/3d/webgl-engine/core/shaderLibrary/util/EmissionDimming.glsl.js +1 -1
  64. package/views/3d/webgl-engine/materials/renderers/MergedBuffer.js +1 -1
  65. package/views/3d/webgl-engine/shaders/OutputColorHighlightOLID.glsl.js +4 -4
  66. package/widgets/Sketch/SketchViewModel.d.ts +8 -1
  67. package/widgets/Sketch/types.d.ts +12 -0
  68. package/assets/esri/core/workers/chunks/0fb685f385e91d0f0601.js +0 -1
  69. package/assets/esri/core/workers/chunks/277718031c903da2b3b9.js +0 -1
  70. package/assets/esri/core/workers/chunks/47d630561f3fce5c63c4.js +0 -1
  71. package/assets/esri/core/workers/chunks/58c79e15ca95238a4b43.js +0 -1
  72. package/assets/esri/core/workers/chunks/5b238f9c345f10c5c2fa.js +0 -1
  73. package/assets/esri/core/workers/chunks/9ad36947bb42ed7f97d3.js +0 -1
  74. package/assets/esri/core/workers/chunks/9e0ea6c34940b1acf3c6.js +0 -1
  75. package/assets/esri/core/workers/chunks/aec46ec486912dca549d.js +0 -1
  76. package/assets/esri/core/workers/chunks/d6bb8db22ba85ad05fd7.js +0 -1
  77. package/assets/esri/core/workers/chunks/d8329c2000c0cc597adc.js +0 -1
  78. package/assets/esri/core/workers/chunks/dee339774131d7274137.js +0 -1
  79. package/assets/esri/core/workers/chunks/f3fe865506fd7428eb6d.js +0 -1
  80. package/assets/esri/core/workers/chunks/fccc34b86454c56f27ab.js +0 -1
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{isSome as e,equals as r,difference as a}from"../../core/arrayUtils.js";import t from"../../core/Error.js";import{updateOrigins as n}from"../../core/accessorSupport/originUtils.js";import{saveAs as s,save as o,getLayerJSON as l,getPortalItem as i,addItem as c,ensureLayerConfig as u,ensureItemConfig as y,setCommonItemProperties as p,createErrorMessage as f}from"./utils.js";import{parse as m}from"../support/arcgisLayerUrl.js";import{fetchFeatureService as d,getLayerModuleType as h}from"../support/fetchService.js";import{isLayerWithFeatureLayerSource as b}from"../support/layerUtils.js";import{createForItemWrite as w}from"../../portal/support/jsonContext.js";import{getWGS84ExtentForItem as T,toggleTypeKeyword as v,typeKeyword as L,removeTypeKeyword as S,hasTypeKeyword as I}from"../../portal/support/portalItemUtils.js";const g="Feature Service",E="feature-layer-utils",P=`${E}-save`,O=`${E}-save-as`,A=`${E}-saveall`,x=`${E}-saveall-as`;function j(e){return{isValid:b(e)&&(!("dynamicDataSource"in e)||!e.dynamicDataSource),errorMessage:"Feature layer should be a layer or table in a map or feature service"}}function N(e,r){const a=w(e,"portal-item");return r?.isTable&&(a.layerContainerType="tables"),a}function $(e){const r=N(e),a=N(e);return a.layerContainerType="tables",{forLayers:r,forTables:a}}function U(e){const r=[],a=[];for(const{layer:t,layerJSON:n}of e)R(t)?a.push(n):r.push(n);return{layers:r,tables:a}}function R(e,r){return e.isTable}function F(e){return U([e])}async function C(e,r){return/\/\d+\/?$/.test(e.url)?F(r[0]):D(r,e)}async function D(e,r){if(e.reverse(),!r)return U(e);const a=await J(r,e);for(const t of e)V(t.layer,t.layerJSON,a);return M(a,e),a}async function J(e,r){let a=await e.fetchData("json");if(G(a)&&!I(e,L.HOSTED_SERVICE))return a;a||={},_(a);const{layer:{url:t,customParameters:n,apiKey:s}}=r[0];return await B(a,{url:t??"",customParameters:n,apiKey:s},r.map(e=>e.layer.layerId)),a}function G(e){return!!(e&&Array.isArray(e.layers)&&Array.isArray(e.tables))}function _(e){e.layers||=[],e.tables||=[]}function M(e,r){const a=[],t=[];for(const{layer:n}of r){const{isTable:e,layerId:r}=n;e?t.push(r):a.push(r)}Y(e.layers,a),Y(e.tables,t)}function Y(e,a){if(e.length<2)return;const t=[];for(const{id:r}of e)t.push(r);r(t.sort(k),a.slice().sort(k))&&e.sort((e,r)=>{const t=a.indexOf(e.id),n=a.indexOf(r.id);return t<n?-1:t>n?1:0})}function k(e,r){return e<r?-1:e>r?1:0}async function B(e,r,a){const{url:t,customParameters:n,apiKey:s}=r,{serviceJSON:o,layersJSON:l}=await d(t,{customParameters:n,apiKey:s}),i=K(e.layers,o.layers,a),c=K(e.tables,o.tables,a);e.layers=i.itemResources,e.tables=c.itemResources;const u=[...i.added,...c.added],y=l?[...l.layers,...l.tables]:[];await z(e,u,t,y)}function K(e,r,t){const n=a(e,r,(e,r)=>e.id===r.id);e=e.filter(e=>!n.removed.some(r=>r.id===e.id));const s=n.added;return s.forEach(({id:r})=>{e.push({id:r})}),{itemResources:e,added:s.filter(({id:e})=>!t.includes(e))}}async function z(e,r,a,t){const n=await H(r),s=r.map(({id:e,type:r})=>new(n.get(r))({url:a,layerId:e,sourceJSON:t.find(({id:r})=>r===e)}));await Promise.allSettled(s.map(e=>e.load())),s.forEach(r=>{const{layerId:a,loaded:t,defaultPopupTemplate:n}=r;if(!t||null==n)return;const s={id:a,popupInfo:n.toJSON()};V(r,"ArcGISFeatureLayer"===r.operationalLayerType?s:{...s,layerType:r.operationalLayerType},e)})}async function H(e){const r=[];e.forEach(({type:e})=>{switch(h(e)){case"AnnotationFeatureLayer":r.push(import("../AnnotationFeatureLayer.js").then(e=>e.default));break;case"CatalogLayer":r.push(import("../CatalogLayer.js").then(e=>e.default));break;case"DimensionFeatureLayer":r.push(import("../DimensionFeatureLayer.js").then(e=>e.default));break;case"FeatureLayer":r.push(import("../FeatureLayer.js").then(e=>e.default));break;case"OrientedImageryLayer":r.push(import("../OrientedImageryLayer.js").then(e=>e.default))}});const a=await Promise.all(r),t=new Map;return e.forEach(({type:e},r)=>{t.set(e,a[r])}),t}function V(e,r,a){e.isTable?q(a.tables,r):q(a.layers,r)}function q(e,r){const a=e.findIndex(({id:e})=>e===r.id);-1===a?e.push(r):e[a]=r}function Q(e,r){if(!e.length)throw new t(`${r}:missing-parameters`,"'layers' array should contain at least one feature layer")}function W(e,r){const a=e.map(e=>e.portalItem.id);if(new Set(a).size>1)throw new t(`${r}:invalid-parameters`,"All layers in the 'layers' array should be loaded from the same portal item")}function X(e,r){const a=e.map(e=>e.layerId);if(new Set(a).size!==a.length)throw new t(`${r}:invalid-parameters`,"'layers' array should contain only one instance each of layer or table in a feature service")}async function Z(e){Q(e,A),await Promise.all(e.map(e=>e.load()));for(const r of e)u(r,A,j),y({layer:r,itemType:g,errorNamePrefix:A});W(e,A),X(e,A)}function ee(e){if(!("layerType"in e))return!!e.charts?.length;switch(e.layerType){case"OrientedImageryLayer":return!!e.charts?.length;case"SubtypeGroupLayer":return!!e.layers.some(e=>!!e.charts?.length);case"SubtypeGroupTable":return!!e.tables.some(e=>!!e.charts?.length);case"CatalogLayer":return!!e.footprintLayer?.charts?.length}}function re(e,r){let a=0,t=0,n=0,s=0;for(const o of[...r.layers,...r.tables])if(ee(o)&&s++,"layerType"in o)switch(o.layerType){case"OrientedImageryLayer":a++;break;case"SubtypeGroupLayer":t++;break;case"SubtypeGroupTable":n++}v(e,L.ORIENTED_IMAGERY_LAYER,a>0),v(e,L.SUBTYPE_GROUP_LAYER,t>0),v(e,L.SUBTYPE_GROUP_TABLE,n>0),v(e,L.CHARTS,s>0)}function ae(e,r,a){S(r,L.METADATA),v(r,L.MULTI_LAYER,e.length>1),v(r,L.SINGLE_LAYER,1===e.length),v(r,L.TABLE,a.tables.length>0&&0===a.layers.length),re(r,a)}function te(e,r,a){re(r,a)}async function ne(e,r,a){const{url:t,layerId:n,title:s,fullExtent:o,isTable:l}=e,i=m(t);r.url=("FeatureServer"===i?.serverType?t:`${t}/${n}`)??null,r.title||=s,r.extent=null,l||null==o||(r.extent=await T(o)),ae([e],r,a)}function se(e,r){for(const o of e){const a=o.parsedUrl.path,n=m(a),s=n?.url.path;if(!s)throw new t(`${r}:invalid-parameters`,f(o,`has unsupported url pattern: ${a}`),{layer:o});const l=n?.serverType;if("FeatureServer"!==l&&"MapServer"!==l)throw new t(`${r}:invalid-parameters`,f(o,`has unsupported server type: ${l}`),{layer:o});if("MapServer"===l&&e.length>1)throw new t(`${r}:invalid-parameters`,"Only one layer or table in a map service can be saved")}const a=m(e[0].parsedUrl.path),n=a?.url.path,s=e.every(e=>{const r=m(e.parsedUrl.path);return r?.url.path===n});if(!s)throw new t(`${r}:invalid-parameters`,"'layers' array should only contain layers or tables that belong to the same feature service")}async function oe(e){Q(e,x),await Promise.all(e.map(e=>e.load()));for(const r of e)u(r,x,j);se(e,x),X(e,x)}function le(e,r){re(e,r),p(e)}async function ie(r,a,t){let n=0;for(const{isTable:e}of r)e||n++;const s=r[0].parsedUrl.path,o=m(s);if(a.url="FeatureServer"===o?.serverType?o.url.path:s,a.title||=o.title,a.extent=null,n>0){const t=r.map(e=>e.fullExtent).filter(e).reduce((e,r)=>e.clone().union(r));t&&(a.extent=await T(t))}ae(r,a,t),p(a)}async function ce(e,r){return o({layer:e,itemType:g,validateLayer:j,createJSONContext:r=>N(r,e),createItemData:(e,r)=>C(r,[e]),errorNamePrefix:P,setItemProperties:te},r)}async function ue(e,r){await Z(e);const a=e[0].portalItem,t=$(a),s=await Promise.all(e.map(e=>l(e,e.isTable?t.forTables:t.forLayers,r))),o=await C(a,e.map((e,r)=>({layer:e,layerJSON:s[r]})));return le(a,o),await a.update({data:o}),await Promise.all(e.slice(1).map(e=>e.portalItem.reload())),n(t.forLayers),n(t.forTables),a.clone()}async function ye(e,r,a){return s({layer:e,itemType:g,validateLayer:j,createJSONContext:r=>N(r,e),createItemData:(e,r)=>Promise.resolve(F(e)),errorNamePrefix:O,newItem:r,setItemProperties:ne},a)}async function pe(e,r,a){await oe(e);const t=i({itemType:g,errorNamePrefix:x,newItem:r}),s=$(t),o=await Promise.all(e.map(e=>l(e,e.isTable?s.forTables:s.forLayers,a))),u=await D(e.map((e,r)=>({layer:e,layerJSON:o[r]})));await ie(e,t,u),await c(t,u,a);for(const n of e)n.portalItem=t.clone();return n(s.forLayers),n(s.forTables),t}export{ce as save,ue as saveAll,pe as saveAllAs,ye as saveAs};
2
+ import{isSome as e,equals as r,difference as a}from"../../core/arrayUtils.js";import t from"../../core/Error.js";import{updateOrigins as n}from"../../core/accessorSupport/originUtils.js";import{saveAs as o,save as s,getLayerJSON as l,getPortalItem as i,addItem as u,ensureLayerConfig as c,ensureItemConfig as y,setCommonItemProperties as p,validateItemType as f,createErrorMessage as m}from"./utils.js";import{parse as d}from"../support/arcgisLayerUrl.js";import{fetchFeatureServiceWithAllResources as h,getFeatureServiceItemLayerType as b,getLayerModuleTypeStrict as T}from"../support/fetchService.js";import w from"../../portal/Portal.js";import L from"../../portal/PortalItem.js";import{createForItemWrite as v}from"../../portal/support/jsonContext.js";import{getWGS84ExtentForItem as I,toggleTypeKeyword as S,typeKeyword as P,removeTypeKeyword as g,hasTypeKeyword as A}from"../../portal/support/portalItemUtils.js";const E="Feature Service",O="feature-layer-utils",N=`${O}-save`,x=`${O}-save-as`,j=`${O}-saveall`,R=`${O}-saveall-as`;function $(e){const r=e?.type;return("feature"===r||"subtype-group"===r||"oriented-imagery"===r)&&"feature-layer"===e?.source?.type}function F(e){return{isValid:$(e)&&(!("dynamicDataSource"in e)||!e.dynamicDataSource),errorMessage:"Feature layer should be a layer or table in a map or feature service"}}function U(e,r){const a=v(e,"portal-item");return r?.isTable&&(a.layerContainerType="tables"),a}function C(e){const r=U(e),a=U(e);return a.layerContainerType="tables",{forLayers:r,forTables:a}}function G(e){const r=[],a=[];for(const{layer:t,layerJSON:n}of e)_(t)?a.push(n):r.push(n);return{layers:r,tables:a}}function _(e,r){return e.isTable}function D(e){return G([e])}async function k(e,r){return/\/\d+\/?$/.test(e.url)?D(r[0]):J(r,e)}async function J(e,r){if(e.reverse(),!r)return G(e);const a=await Y(r,e);for(const t of e)X(t.layer,t.layerJSON,a);return K(a,e),a}async function Y(e,r){let a,t=await e.fetchData("json");if(!M(t)||A(e,P.HOSTED_SERVICE))a=!0;else{if(ee(t))return t;a=!1}t??={},B(t);const{layer:{url:n,customParameters:o,apiKey:s}}=r[0];return await V(t,{url:n??"",customParameters:o,apiKey:s},r.map(e=>e.layer.layerId),a),t}function M(e){return!!(e&&Array.isArray(e.layers)&&Array.isArray(e.tables))}function B(e){e.layers??=[],e.tables??=[]}function K(e,r){const a=[],t=[];for(const{layer:n}of r){const{isTable:e,layerId:r}=n;e?t.push(r):a.push(r)}z(e.layers,a),z(e.tables,t)}function z(e,a){if(e.length<2)return;const t=[];for(const{id:r}of e)t.push(r);r(t.sort(H),a.slice().sort(H))&&e.sort((e,r)=>{const t=a.indexOf(e.id),n=a.indexOf(r.id);return t<n?-1:t>n?1:0})}function H(e,r){return e<r?-1:e>r?1:0}async function V(e,r,a,t){const{url:n,customParameters:o,apiKey:s}=r,{serviceJSON:l,layersJSON:i}=await h(n,{customParameters:o,apiKey:s});if(!t)return void re(e,l);const u=W(e.layers,l.layers,a),c=W(e.tables,l.tables,a);e.layers=u.itemResources,e.tables=c.itemResources,re(e,l);const y=[...u.added,...c.added],p=i?[...i.layers,...i.tables]:[];await q(e,y,n,p)}function W(e,r,t){const n=a(e,r,(e,r)=>e.id===r.id);e=e.filter(e=>!n.removed.some(r=>r.id===e.id));const o=n.added;for(const{id:a}of o)e.push({id:a});return{itemResources:e,added:o.filter(({id:e})=>!t.includes(e))}}async function q(e,r,a,t){const n=await Q(r),o=[];for(const{id:s,type:l}of r){const e=n.get(l);e&&o.push(new e({url:a,layerId:s,sourceJSON:t.find(({id:e})=>e===s)}))}await Promise.allSettled(o.map(e=>e.load()));for(const s of o){const{layerId:r,loaded:a}=s;if(!a||!("defaultPopupTemplate"in s)||!s.defaultPopupTemplate)continue;const t={id:r,popupInfo:s.defaultPopupTemplate.toJSON()};X(s,"ArcGISFeatureLayer"===s.operationalLayerType?t:{...t,layerType:s.operationalLayerType},e)}}async function Q(e){const r=new Set,a=[];for(const{type:o}of e){const e=T(o);if(e&&!r.has(o))switch(r.add(o),e){case"AnnotationFeatureLayer":a.push(import("../AnnotationFeatureLayer.js").then(e=>e.default));break;case"CatalogLayer":a.push(import("../CatalogLayer.js").then(e=>e.default));break;case"DimensionFeatureLayer":a.push(import("../DimensionFeatureLayer.js").then(e=>e.default));break;case"FeatureLayer":a.push(import("../FeatureLayer.js").then(e=>e.default));break;case"OrientedImageryLayer":a.push(import("../OrientedImageryLayer.js").then(e=>e.default))}}const t=await Promise.all(a),n=new Map;return Array.from(r).forEach((e,r)=>{n.set(e,t[r])}),n}function X(e,r,a){e.isTable?Z(a.tables,r):Z(a.layers,r)}function Z(e,r){const a=e.findIndex(({id:e})=>e===r.id);-1===a?e.push(r):e[a]=r}function ee(e){return[...e.layers,...e.tables].every(e=>"layerType"in e&&!!e.layerType)}function re(e,r){const a=e.layers??[],t=e.tables??[],n=[...r.layers??[],...r.tables??[]];for(const o of[...a,...t]){const{id:e}=o;if("layerType"in o&&o.layerType)continue;const r=n.find(({id:r})=>r===e);if(!r)continue;const a=b(r.type,t.includes(o));a&&ae(o,a)&&te(a)&&(o.layerType=a)}}function ae(e,r){return"ArcGISFeatureLayer"!==r&&"Table"!==r}function te(e){return"ArcGISFeatureLayer"!==e&&"Table"!==e}function ne(e,r){if(!e.length)throw new t(`${r}:missing-parameters`,"'layers' array should contain at least one feature layer")}function oe(e,r){const a=e.map(e=>e.portalItem.id);if(new Set(a).size>1)throw new t(`${r}:invalid-parameters`,"All layers in the 'layers' array should be loaded from the same portal item")}function se(e,r){const a=e.map(e=>e.layerId);if(new Set(a).size!==a.length)throw new t(`${r}:invalid-parameters`,"'layers' array should contain only one instance each of layer or table in a feature service")}async function le(e){ne(e,j),await Promise.all(e.map(e=>e.load()));for(const r of e)c(r,j,F),y({layer:r,itemType:E,errorNamePrefix:j});oe(e,j),se(e,j)}function ie(e){if(!("layerType"in e))return!!e.charts?.length;switch(e.layerType){case"CatalogLayer":return!!e.footprintLayer?.charts?.length;case"OrientedImageryLayer":return!!e.charts?.length;case"SubtypeGroupLayer":return!!e.layers.some(e=>!!e.charts?.length);case"SubtypeGroupTable":return!!e.tables.some(e=>!!e.charts?.length)}return!1}function ue(e,r){let a=0,t=0,n=0,o=0,s=0,l=0,i=0;for(const u of[...r.layers,...r.tables])if(ie(u)&&i++,"layerType"in u)switch(u.layerType){case"CatalogLayer":a++;break;case"OrientedImageryLayer":t++;break;case"ParcelLayer":s++;break;case"SubtypeGroupLayer":n++;break;case"SubtypeGroupTable":o++;break;case"UtilityNetworkLayer":l++}S(e,P.CATALOG_LAYER,a>0),S(e,P.ORIENTED_IMAGERY_LAYER,t>0),S(e,P.PARCEL_FABRIC,s>0),S(e,P.SUBTYPE_GROUP_LAYER,n>0),S(e,P.SUBTYPE_GROUP_TABLE,o>0),S(e,P.UTILITY_NETWORK,l>0),S(e,P.CHARTS,i>0)}function ce(e,r,a){g(r,P.METADATA),S(r,P.MULTI_LAYER,e.length>1),S(r,P.SINGLE_LAYER,1===e.length),S(r,P.TABLE,a.tables.length>0&&0===a.layers.length),ue(r,a)}function ye(e,r,a){ue(r,a)}async function pe(e,r,a){const{url:t,layerId:n,title:o,fullExtent:s,isTable:l}=e,i=d(t);r.url=("FeatureServer"===i?.serverType?t:`${t}/${n}`)??null,r.title||=o,r.extent=null,l||null==s||(r.extent=await I(s)),ce([e],r,a)}function fe(e,r,a){for(const l of e){const r=l.parsedUrl.path,n=d(r),o=n?.url.path;if(!o)throw new t(`${a}:invalid-parameters`,m(l,`has unsupported url pattern: ${r}`),{layer:l});const s=n?.serverType;if("FeatureServer"!==s&&"MapServer"!==s)throw new t(`${a}:invalid-parameters`,m(l,`has unsupported server type: ${s}`),{layer:l});if("MapServer"===s&&e.length>1)throw new t(`${a}:invalid-parameters`,"Only one layer or table in a map service can be saved")}const n=d(e[0].parsedUrl.path),o=n?.url.path,s=e.every(e=>{const r=d(e.parsedUrl.path);return r?.url.path===o});if(!s)throw new t(`${a}:invalid-parameters`,"'layers' array should only contain layers or tables that belong to the same feature service");if(r){const e=d(r.url),n=e?.url.path;if(n!==o)throw new t(`${a}:invalid-parameters`,"'sourcePortalItem.url' and 'layers' should belong to the same service")}}async function me(e,r){const a=r?L.from(r):null;a&&(a.portal??=w.getDefault()),ne(e,R),await Promise.all([...e.map(e=>e.load()),a?.load()]),a&&f({item:a,itemType:E,errorNamePrefix:R});for(const t of e)c(t,R,F);return fe(e,a,R),se(e,R),a}function de(e,r){ue(e,r),p(e)}async function he(r,a,t){let n=0;for(const{isTable:e}of r)e||n++;const o=r[0].parsedUrl.path,s=d(o);if(a.url="FeatureServer"===s?.serverType?s.url.path:o,a.title||=s.title,a.extent=null,n>0){const t=r.map(e=>e.fullExtent).filter(e).reduce((e,r)=>e.clone().union(r));t&&(a.extent=await I(t))}ce(r,a,t),p(a)}async function be(e,r){return s({layer:e,itemType:E,validateLayer:F,createJSONContext:r=>U(r,e),createItemData:(e,r)=>k(r,[e]),errorNamePrefix:N,setItemProperties:ye},r)}async function Te(e,r){await le(e);const a=e[0].portalItem,t=C(a),o=await Promise.all(e.map(e=>l(e,e.isTable?t.forTables:t.forLayers,r))),s=await k(a,e.map((e,r)=>({layer:e,layerJSON:o[r]})));return de(a,s),await a.update({data:s}),await Promise.all(e.slice(1).map(e=>e.portalItem.reload())),n(t.forLayers),n(t.forTables),a.clone()}async function we(e,r,a){return o({layer:e,itemType:E,validateLayer:F,createJSONContext:r=>U(r,e),createItemData:(e,r)=>Promise.resolve(D(e)),errorNamePrefix:x,newItem:r,setItemProperties:pe},a)}async function Le(e,r,a){const t=await me(e,a?.sourcePortalItem),o=i({itemType:E,errorNamePrefix:R,newItem:r}),s=C(o),c=await Promise.all(e.map(e=>l(e,e.isTable?s.forTables:s.forLayers,a))),y=await J(e.map((e,r)=>({layer:e,layerJSON:c[r]})),t);await he(e,o,y),await u(o,y,a);for(const n of e)n.portalItem=o.clone();return n(s.forLayers),n(s.forTables),o}export{be as save,Te as saveAll,Le as saveAllAs,we as saveAs};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import e from"../../core/Error.js";import{updateOrigins as t}from"../../core/accessorSupport/originUtils.js";import r from"../../portal/Portal.js";import a from"../../portal/PortalItem.js";import{createForItemWrite as o}from"../../portal/support/jsonContext.js";import{addTypeKeyword as i,typeKeyword as n}from"../../portal/support/portalItemUtils.js";import{evaluateWriteErrors as s}from"../../webdoc/support/saveUtils.js";function p(t,r,a){const o=a(t);if(!o.isValid)throw new e(`${r}:invalid-parameters`,o.errorMessage,{layer:t})}async function l(e){const{layer:t,errorNamePrefix:r,validateLayer:a}=e;await t.load(),p(t,r,a)}function m(e,t){return`Layer (title: ${e.title}, id: ${e.id}) of type '${e.declaredClass}' ${t}`}function c(t){const{item:r,errorNamePrefix:a,layer:o,validateItem:i}=t;if(u(t),i){const t=i(r);if(!t.isValid)throw new e(`${a}:invalid-parameters`,t.errorMessage,{layer:o})}}function u(t){const{item:r,itemType:a,additionalItemType:o,errorNamePrefix:i,layer:n}=t,s=[a];if(o&&s.push(o),!s.includes(r.type)){const t=s.map(e=>`'${e}'`).join(", ");throw new e(`${i}:portal-item-wrong-type`,`Portal item type should be one of: "${t}"`,{item:r,layer:n})}}function f(t){const{layer:r,errorNamePrefix:a}=t,{portalItem:o}=r;if(!o)throw new e(`${a}:portal-item-not-set`,m(r,"requires the portalItem property to be set"));if(!o.loaded)throw new e(`${a}:portal-item-not-loaded`,m(r,"cannot be saved to a portal item that does not exist or is inaccessible"));c({...t,item:o})}function d(e){const{newItem:t,itemType:o}=e;let i=a.from(t);return i.id&&(i=i.clone(),i.id=null),i.type??=o,i.portal??=r.getDefault(),c({...e,item:i}),i}function y(e){return o(e,"portal-item")}async function w(e,t,r){"beforeSave"in e&&"function"==typeof e.beforeSave&&await e.beforeSave();const a=e.write({},t);return await Promise.all(t.resources?.pendingOperations??[]),s(t,{errorName:"layer-write:unsupported"},r),a}function I(e){i(e,n.JSAPI),e.typeKeywords&&(e.typeKeywords=e.typeKeywords.filter((e,t,r)=>r.indexOf(e)===t))}async function v(e,t,r){const a=e.portal;await a.signIn(),await a.user.addItem({item:e,data:t,folder:r?.folder})}async function P(e,r){const{layer:a,createItemData:o,createJSONContext:i,setItemProperties:n,saveResources:s,supplementalUnsupportedErrors:p}=e;await l(e),f(e);const m=a.portalItem,c=i?i(m):y(m),u=await w(a,c,{...r,supplementalUnsupportedErrors:p}),d=await o({layer:a,layerJSON:u},m);return await(n?.(a,m,d)),I(m),await m.update({data:d}),t(c),await(s?.(m,c)),m}async function $(e,r){const{layer:a,createItemData:o,createJSONContext:i,setItemProperties:n,saveResources:s,supplementalUnsupportedErrors:p}=e;await l(e);const m=d(e),c=i?i(m):y(m),u=await w(a,c,{...r,supplementalUnsupportedErrors:p}),f=await o({layer:a,layerJSON:u},m);return await n(a,m,f),I(m),await v(m,f,r),a.portalItem=m,t(c),await(s?.(m,c)),m}export{v as addItem,m as createErrorMessage,f as ensureItemConfig,p as ensureLayerConfig,w as getLayerJSON,d as getPortalItem,P as save,$ as saveAs,I as setCommonItemProperties};
2
+ import e from"../../core/Error.js";import{updateOrigins as t}from"../../core/accessorSupport/originUtils.js";import r from"../../portal/Portal.js";import a from"../../portal/PortalItem.js";import{createForItemWrite as o}from"../../portal/support/jsonContext.js";import{addTypeKeyword as i,typeKeyword as n}from"../../portal/support/portalItemUtils.js";import{evaluateWriteErrors as s}from"../../webdoc/support/saveUtils.js";function p(t,r,a){const o=a(t);if(!o.isValid)throw new e(`${r}:invalid-parameters`,o.errorMessage,{layer:t})}async function l(e){const{layer:t,errorNamePrefix:r,validateLayer:a}=e;await t.load(),p(t,r,a)}function m(e,t){return`Layer (title: ${e.title}, id: ${e.id}) of type '${e.declaredClass}' ${t}`}function c(t){const{item:r,errorNamePrefix:a,layer:o,validateItem:i}=t;if(u(t),i){const t=i(r);if(!t.isValid)throw new e(`${a}:invalid-parameters`,t.errorMessage,{layer:o})}}function u(t){const{item:r,itemType:a,additionalItemType:o,errorNamePrefix:i,layer:n}=t,s=[a];if(o&&s.push(o),!s.includes(r.type)){const t=s.map(e=>`'${e}'`).join(", ");throw new e(`${i}:portal-item-wrong-type`,`Portal item type should be one of: "${t}"`,{item:r,layer:n})}}function f(t){const{layer:r,errorNamePrefix:a}=t,{portalItem:o}=r;if(!o)throw new e(`${a}:portal-item-not-set`,m(r,"requires the portalItem property to be set"));if(!o.loaded)throw new e(`${a}:portal-item-not-loaded`,m(r,"cannot be saved to a portal item that does not exist or is inaccessible"));c({...t,item:o})}function d(e){const{newItem:t,itemType:o}=e;let i=a.from(t);return i.id&&(i=i.clone(),i.id=null),i.type??=o,i.portal??=r.getDefault(),c({...e,item:i}),i}function y(e){return o(e,"portal-item")}async function w(e,t,r){"beforeSave"in e&&"function"==typeof e.beforeSave&&await e.beforeSave();const a=e.write({},t);return await Promise.all(t.resources?.pendingOperations??[]),s(t,{errorName:"layer-write:unsupported"},r),a}function I(e){i(e,n.JSAPI),e.typeKeywords&&(e.typeKeywords=e.typeKeywords.filter((e,t,r)=>r.indexOf(e)===t))}async function v(e,t,r){const a=e.portal;await a.signIn(),await a.user.addItem({item:e,data:t,folder:r?.folder})}async function P(e,r){const{layer:a,createItemData:o,createJSONContext:i,setItemProperties:n,saveResources:s,supplementalUnsupportedErrors:p}=e;await l(e),f(e);const m=a.portalItem,c=i?i(m):y(m),u=await w(a,c,{...r,supplementalUnsupportedErrors:p}),d=await o({layer:a,layerJSON:u},m);return await(n?.(a,m,d)),I(m),await m.update({data:d}),t(c),await(s?.(m,c)),m}async function $(e,r){const{layer:a,createItemData:o,createJSONContext:i,setItemProperties:n,saveResources:s,supplementalUnsupportedErrors:p}=e;await l(e);const m=d(e),c=i?i(m):y(m),u=await w(a,c,{...r,supplementalUnsupportedErrors:p}),f=await o({layer:a,layerJSON:u},m);return await n(a,m,f),I(m),await v(m,f,r),a.portalItem=m,t(c),await(s?.(m,c)),m}export{v as addItem,m as createErrorMessage,f as ensureItemConfig,p as ensureLayerConfig,w as getLayerJSON,d as getPortalItem,P as save,$ as saveAs,I as setCommonItemProperties,u as validateItemType};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{getPreferredHost as e,getPreferredUrl as r}from"./layerUtils.js";import{requestServiceJSON as a}from"../../request/serviceJSON.js";const t=new Set(["Annotation Layer","Catalog Layer","Dimension Layer","Feature Layer","Oriented Imagery Layer"]);async function n(t,n){const{loadContext:y,...o}=n||{},u=y?await y.fetchServiceMetadata(t,o):await a(t,o),s=e();c(u),i(u);const L={serviceJSON:u,preferredHost:s};if((u.currentVersion??0)<10.5)return L;const l=`${r()??t}/layers`,f=y?await y.fetchServiceMetadata(l,o):await a(l,o);return c(f),i(f),L.layersJSON={layers:f.layers,tables:f.tables},L}function y(e){return t.has(e.type)}function o(e){return"Table"===e.type}function i(e){e.layers=e.layers?.filter(y),e.tables=e.tables?.filter(o)}function u(e){e.type||="Feature Layer"}function s(e){e.type||="Table"}function c(e){e.layers?.forEach(u),e.tables?.forEach(s)}function L(e){switch(e){case"Feature Layer":case"Table":return"FeatureLayer";case"Oriented Imagery Layer":return"OrientedImageryLayer";case"Catalog Layer":return"CatalogLayer";case"Dimension Layer":return"DimensionFeatureLayer";case"Annotation Layer":return"AnnotationFeatureLayer"}return"FeatureLayer"}function l(e){if(!e)return"FeatureLayer";switch(e){case"Feature Layer":case"Table":return"FeatureLayer";case"Oriented Imagery Layer":return"OrientedImageryLayer";case"Catalog Layer":return"CatalogLayer";case"Dimension Layer":return"DimensionFeatureLayer";case"Annotation Layer":return"AnnotationFeatureLayer"}return null}function f(e,r){if(!e)return r?"Table":"ArcGISFeatureLayer";switch(e){case"Annotation Layer":return"ArcGISAnnotationLayer";case"Catalog Layer":return"CatalogLayer";case"Dimension Layer":return"ArcGISDimensionLayer";case"Feature Layer":return"ArcGISFeatureLayer";case"Oriented Imagery Layer":return"OrientedImageryLayer";case"Parcel Layer":return"ParcelLayer";case"Table":return"Table";case"Topology Layer":return"TopologyLayer";case"Trace Network Layer":return"TraceNetworkLayer";case"Utility Network Layer":return"UtilityNetworkLayer";default:return null}}export{n as fetchFeatureService,f as getFeatureServiceItemLayerType,L as getLayerModuleType,l as getLayerModuleTypeStrict};
2
+ import{getPreferredHost as e,getPreferredUrl as r}from"./layerUtils.js";import{requestServiceJSON as a}from"../../request/serviceJSON.js";const t=new Set(["Annotation Layer","Catalog Layer","Dimension Layer","Feature Layer","Oriented Imagery Layer"]);async function n(e,r){const{serviceJSON:a,layersJSON:t,...n}=await y(e,r);s(a);const o={serviceJSON:a,...n};return t&&(s(t),o.layersJSON=t),o}async function y(t,n){const{loadContext:y,...o}=n||{},i=y?await y.fetchServiceMetadata(t,o):await a(t,o),s=e();l(i);const c={serviceJSON:i,preferredHost:s};if((i.currentVersion??0)<10.5)return c;const u=`${r()??t}/layers`,L=y?await y.fetchServiceMetadata(u,o):await a(u,o);return l(L),c.layersJSON={layers:L.layers,tables:L.tables},c}function o(e){return t.has(e.type)}function i(e){return"Table"===e.type}function s(e){e.layers=e.layers?.filter(o),e.tables=e.tables?.filter(i)}function c(e){e.type||="Feature Layer"}function u(e){e.type||="Table"}function l(e){e.layers?.forEach(c),e.tables?.forEach(u)}function L(e){if(!e)return"FeatureLayer";switch(e){case"Feature Layer":case"Table":return"FeatureLayer";case"Oriented Imagery Layer":return"OrientedImageryLayer";case"Catalog Layer":return"CatalogLayer";case"Dimension Layer":return"DimensionFeatureLayer";case"Annotation Layer":return"AnnotationFeatureLayer"}return null}function f(e,r){if(!e)return r?"Table":"ArcGISFeatureLayer";switch(e){case"Annotation Layer":return"ArcGISAnnotationLayer";case"Catalog Layer":return"CatalogLayer";case"Dimension Layer":return"ArcGISDimensionLayer";case"Feature Layer":return"ArcGISFeatureLayer";case"Oriented Imagery Layer":return"OrientedImageryLayer";case"Parcel Layer":return"ParcelLayer";case"Table":return"Table";case"Topology Layer":return"TopologyLayer";case"Trace Network Layer":return"TraceNetworkLayer";case"Utility Network Layer":return"UtilityNetworkLayer";default:return null}}export{n as fetchFeatureService,y as fetchFeatureServiceWithAllResources,f as getFeatureServiceItemLayerType,L as getLayerModuleTypeStrict};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arcgis/core",
3
- "version": "5.2.0-next.23",
3
+ "version": "5.2.0-next.24",
4
4
  "homepage": "https://js.arcgis.com",
5
5
  "description": "ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API",
6
6
  "keywords": [
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{initializeProjection as e,project as t}from"../../geometry/projectionUtils.js";import r from"../../geometry/SpatialReference.js";import{webMercatorToGeographic as n}from"../../geometry/support/webMercatorUtils.js";async function o(o){const i=o.spatialReference;if(i.isWGS84)return o.clone();if(i.isWebMercator)return n(o);const s=r.WGS84;return await e(i,s),t(o,s)}function i(e,t){if(!s(e,t)){const r=e.typeKeywords;r?r.push(t):e.typeKeywords=[t]}}function s(e,t){return!!e.typeKeywords?.includes(t)}function a(e){return s(e,E.HOSTED_SERVICE)}function c(e,t){const r=e.typeKeywords;if(r){const e=r.indexOf(t);e>-1&&r.splice(e,1)}}function u(e,t,r){r?i(e,t):c(e,t)}async function l(e){const t=e.clone().normalize();let r;if(t.length>1)for(const n of t)r?n.width>r.width&&(r=n):r=n;else r=t[0];return o(r)}const E={CHARTS:"Charts",DYNAMIC:"Dynamic",DEVELOPER_BASEMAP:"DeveloperBasemap",GROUP_LAYER_MAP:"Map",HOSTED_SERVICE:"Hosted Service",JSAPI:"ArcGIS API for JavaScript",LOCAL_SCENE:"ViewingMode-Local",METADATA:"Metadata",MULTI_LAYER:"Multilayer",ORIENTED_IMAGERY_LAYER:"OrientedImageryLayer",SINGLE_LAYER:"Singlelayer",SUBTYPE_GROUP_LAYER:"SubtypeGroupLayer",SUBTYPE_GROUP_TABLE:"SubtypeGroupTable",TABLE:"Table",TILED_IMAGERY:"Tiled Imagery"};function f(e){const{portal:t,isOrgItem:r,itemControl:n}=e,o=t.user?.privileges;let i=!o||o.includes("features:user:edit"),s=!!r&&!!o?.includes("features:user:fullEdit");const a="update"===n||"admin"===n;return a?s=i=!0:s&&(i=!0),{features:{edit:i,fullEdit:s},content:{updateItem:a}}}export{i as addTypeKeyword,f as getUserPrivileges,l as getWGS84ExtentForItem,s as hasTypeKeyword,a as isHostedLayer,c as removeTypeKeyword,u as toggleTypeKeyword,E as typeKeyword};
2
+ import{initializeProjection as e,project as t}from"../../geometry/projectionUtils.js";import r from"../../geometry/SpatialReference.js";import{webMercatorToGeographic as o}from"../../geometry/support/webMercatorUtils.js";async function n(n){const i=n.spatialReference;if(i.isWGS84)return n.clone();if(i.isWebMercator)return o(n);const a=r.WGS84;return await e(i,a),t(n,a)}function i(e,t){if(!a(e,t)){const r=e.typeKeywords;r?r.push(t):e.typeKeywords=[t]}}function a(e,t){return!!e.typeKeywords?.includes(t)}function s(e){return a(e,E.HOSTED_SERVICE)}function c(e,t){const r=e.typeKeywords;if(r){const e=r.indexOf(t);e>-1&&r.splice(e,1)}}function u(e,t,r){r?i(e,t):c(e,t)}async function l(e){const t=e.clone().normalize();let r;if(t.length>1)for(const o of t)r?o.width>r.width&&(r=o):r=o;else r=t[0];return n(r)}const E={CHARTS:"Charts",CATALOG_LAYER:"CatalogLayer",DYNAMIC:"Dynamic",DEVELOPER_BASEMAP:"DeveloperBasemap",GROUP_LAYER_MAP:"Map",HOSTED_SERVICE:"Hosted Service",JSAPI:"ArcGIS API for JavaScript",LOCAL_SCENE:"ViewingMode-Local",METADATA:"Metadata",MULTI_LAYER:"Multilayer",ORIENTED_IMAGERY_LAYER:"OrientedImageryLayer",PARCEL_FABRIC:"ParcelFabric",SINGLE_LAYER:"Singlelayer",SUBTYPE_GROUP_LAYER:"SubtypeGroupLayer",SUBTYPE_GROUP_TABLE:"SubtypeGroupTable",TABLE:"Table",TILED_IMAGERY:"Tiled Imagery",UTILITY_NETWORK:"UtilityNetwork"};function f(e){const{portal:t,isOrgItem:r,itemControl:o}=e,n=t.user?.privileges;let i=!n||n.includes("features:user:edit"),a=!!r&&!!n?.includes("features:user:fullEdit");const s="update"===o||"admin"===o;return s?a=i=!0:a&&(i=!0),{features:{edit:i,fullEdit:a},content:{updateItem:s}}}export{i as addTypeKeyword,f as getUserPrivileges,l as getWGS84ExtentForItem,a as hasTypeKeyword,s as isHostedLayer,c as removeTypeKeyword,u as toggleTypeKeyword,E as typeKeyword};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- const c="20260619",d="3e18d30dfa27171040977185a594d02520b5c7c5";export{c as buildDate,d as commitHash};
2
+ const e="20260620",b="e91be02f0ecb6d00396bb7469df05e73c336002f";export{e as buildDate,b as commitHash};
@@ -159,9 +159,10 @@ export interface CIMSymbolProperties extends SymbolProperties, Partial<Pick<CIMS
159
159
  * - [Scale](https://developers.arcgis.com/javascript/latest/references/core/symbols/cim/types/#CIMSymbolAnimationScale)
160
160
  * - [Size](https://developers.arcgis.com/javascript/latest/references/core/symbols/cim/types/#CIMSymbolAnimationSize)
161
161
  * - [Transparency](https://developers.arcgis.com/javascript/latest/references/core/symbols/cim/types/#CIMSymbolAnimationTransparency)
162
+ * - [MoveAlongLine](https://developers.arcgis.com/javascript/latest/references/core/symbols/cim/types/#CIMSymbolAnimationMoveAlongLine) (beta) - _since 5.1_
162
163
  *
163
164
  * #### Global animations
164
- * Global animations are currently only supported on [CIMPointSymbol](https://developers.arcgis.com/javascript/latest/references/core/symbols/cim/types/#CIMPointSymbol)s. They are defined on the `animations` property of the `CIMPointSymbol` and are applied to the entire symbol.
165
+ * Global animations are defined on the `animations` property of `CIMPointSymbol`, `CIMLineSymbol`, and `CIMPolygonSymbol` and are applied to the entire symbol.
165
166
  *
166
167
  * ```js
167
168
  * const symbol = new CIMSymbol({
@@ -201,8 +202,6 @@ export interface CIMSymbolProperties extends SymbolProperties, Partial<Pick<CIMS
201
202
  * > **Known Limitations for CIMSymbol animations**
202
203
  * > - Animations are not currently supported in 3D [SceneView](https://developers.arcgis.com/javascript/latest/references/core/views/SceneView/).
203
204
  * > - Animated symbols are not currently supported in the [Legend](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-legend/).
204
- * > - Global animations are currently only supported on [CIMPointSymbol](https://developers.arcgis.com/javascript/latest/references/core/symbols/cim/types/#CIMPointSymbol)s.
205
- * > - Symbol layer animations are not fully supported within a [CIMLineSymbol](https://developers.arcgis.com/javascript/latest/references/core/symbols/cim/types/#CIMLineSymbol) or [CIMPolygonSymbol](https://developers.arcgis.com/javascript/latest/references/core/symbols/cim/types/#CIMPolygonSymbol). If you use an animated marker within a line or polygon symbol, the marker placement will not be properly honored at this time. We will improve this behavior at a future release.
206
205
  *
207
206
  * ### Utility functions for working with CIMSymbol
208
207
  *
@@ -2386,6 +2386,63 @@ export interface CIMSymbolAnimationOffset extends CIMBaseAnimation {
2386
2386
  offsetY: number;
2387
2387
  }
2388
2388
 
2389
+ /**
2390
+ * Defines the movement type for a symbol animation that moves a symbol along a line geometry.
2391
+ *
2392
+ * @since 5.1
2393
+ * @see [CIMSymbolAnimationMoveAlongLine](https://developers.arcgis.com/javascript/latest/references/core/symbols/cim/types/#CIMSymbolAnimationMoveAlongLine)
2394
+ * @beta
2395
+ */
2396
+ export type MovementAlongLineType = "Distance" | "Speed";
2397
+
2398
+ /**
2399
+ * Represents a symbol animation that moves a symbol along a line geometry. This type of animation is only supported on [CIMVectorMarker](https://developers.arcgis.com/javascript/latest/references/core/symbols/cim/types/#CIMVectorMarker) symbol layers within a [CIMLineSymbol](https://developers.arcgis.com/javascript/latest/references/core/symbols/cim/types/#CIMLineSymbol), or globally on [CIMLineSymbol](https://developers.arcgis.com/javascript/latest/references/core/symbols/cim/types/#CIMLineSymbol).
2400
+ *
2401
+ * The starting position of the marker(s) on the line geometry is determined by the [CIMMarkerPlacement](https://developers.arcgis.com/javascript/latest/references/core/symbols/cim/types/#CIMMarkerPlacement) properties of the symbol layer.
2402
+ *
2403
+ * @since 5.1
2404
+ * @beta
2405
+ */
2406
+ export interface CIMSymbolAnimationMoveAlongLine extends CIMBaseAnimation {
2407
+ /**
2408
+ * Defines the movement type for the symbol animation. The following movement types are supported:
2409
+ *
2410
+ * Type | Description
2411
+ * -----|------------
2412
+ * `Distance` | The marker(s) will move along the line geometry for a specified distance (`distanceAlong`) over the given duration, and then return to their starting position to repeat the animation cycle. The distance is specified as a percentage from 0 to 100.
2413
+ * `Speed` | The marker(s) will move along the line geometry at a specified speed (`speed`) over the given duration, and then return to their starting position to repeat the animation cycle. Speed is specified in points/second.
2414
+ *
2415
+ * @since 5.1
2416
+ */
2417
+ movementType?: MovementAlongLineType;
2418
+ /**
2419
+ * A percentage from 0 to 100 for the distance the marker(s) will move along
2420
+ * the line geometry over the given duration.
2421
+ *
2422
+ * This property is used when `movementType` is set to `Distance`. For example, a `distanceAlong` value of `50` means the marker(s) will move along the line geometry until they reach the halfway point of the line, and then return to their starting position to repeat the animation cycle.
2423
+ *
2424
+ * @since 5.1
2425
+ */
2426
+ distanceAlong?: number;
2427
+ /**
2428
+ * The speed of movement in points/second.
2429
+ *
2430
+ * This property is used when `movementType` is set to `Speed`. For example, a `speed` value of `100` means the marker(s) will move along the line geometry at a speed of 100 points/second, and then return to their starting position to repeat the animation cycle.
2431
+ *
2432
+ * This property can also be used when `movementType` is set to `Distance` to automatically calculate the duration needed to move the marker(s) along the line geometry for the specified distance. When used in this way, the animation will play at the specified speed regardless of the length of the line geometry.
2433
+ *
2434
+ * @since 5.1
2435
+ */
2436
+ speed?: number;
2437
+ /**
2438
+ * Automatically calculates duration needed to create a continuous looping animation.
2439
+ * Use this property in conjunction with the `speed` property to have the marker(s) move at a consistent speed regardless of the length of the line geometry. When `continuous` is set to `true`, the animation will loop continuously without any delay between cycles.
2440
+ *
2441
+ * @since 5.1
2442
+ */
2443
+ continuous?: boolean;
2444
+ }
2445
+
2389
2446
  /**
2390
2447
  * Represents a symbol animation used to animate the appearance of a symbol. The following types of animations are supported:
2391
2448
  *
@@ -2397,14 +2454,13 @@ export interface CIMSymbolAnimationOffset extends CIMBaseAnimation {
2397
2454
  * [CIMSymbolAnimationTransparency](https://developers.arcgis.com/javascript/latest/references/core/symbols/cim/types/#CIMSymbolAnimationTransparency) | Represents a symbol animation that changes the transparency of a symbol.
2398
2455
  * [CIMSymbolAnimationRotation](https://developers.arcgis.com/javascript/latest/references/core/symbols/cim/types/#CIMSymbolAnimationRotation) | Represents a symbol animation that rotates a symbol to a given value.
2399
2456
  * [CIMSymbolAnimationOffset](https://developers.arcgis.com/javascript/latest/references/core/symbols/cim/types/#CIMSymbolAnimationOffset) | Represents a symbol animation that offsets a symbol to a given X or Y value.
2457
+ * [CIMSymbolAnimationMoveAlongLine](https://developers.arcgis.com/javascript/latest/references/core/symbols/cim/types/#CIMSymbolAnimationMoveAlongLine) (beta) | Represents a symbol animation that moves a symbol along a line geometry.
2400
2458
  *
2401
2459
  * > [!WARNING]
2402
2460
  * >
2403
2461
  * > **Known Limitations for CIMSymbol animations**
2404
2462
  * > - Animations are not currently supported in 3D [SceneView](https://developers.arcgis.com/javascript/latest/references/core/views/SceneView/).
2405
2463
  * > - Animated symbols are not currently supported in the [Legend](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-legend/).
2406
- * > - Global animations are currently only supported on [CIMPointSymbol](https://developers.arcgis.com/javascript/latest/references/core/symbols/cim/types/#CIMPointSymbol)s.
2407
- * > - Symbol layer animations are not fully supported within a [CIMLineSymbol](https://developers.arcgis.com/javascript/latest/references/core/symbols/cim/types/#CIMLineSymbol) or [CIMPolygonSymbol](https://developers.arcgis.com/javascript/latest/references/core/symbols/cim/types/#CIMPolygonSymbol). If you use an animated marker within a line or polygon symbol, the marker placement will not be properly honored at this time. We will improve this behavior at a future release.
2408
2464
  *
2409
2465
  * @since 5.0
2410
2466
  * @see [Sample - Symbol animations](https://developers.arcgis.com/javascript/latest/sample-code/cim-animations/)